From bfe09fed47981f1bdf9256f4b27e6a613b4dbc5b Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Thu, 31 Aug 2023 19:11:02 -0400 Subject: [PATCH 001/207] Fixing the weird UV --- .../assets/hbm/models/weapons/UAC pistol.obj | 15141 ++++++++-------- 1 file changed, 7335 insertions(+), 7806 deletions(-) diff --git a/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj b/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj index 6e34a53d1..0a7aa02dd 100644 --- a/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj +++ b/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj @@ -1,5 +1,6 @@ -# Blender v2.79 (sub 0) OBJ File: '' +# Blender 3.6.1 # www.blender.org +mtllib UAC pistol.mtl o bool_obj_bool_obj_data.002 v -0.395192 7.596701 -3.479156 v 0.584592 7.596701 -3.479156 @@ -9,26 +10,26 @@ v -0.395192 8.736673 -5.713195 v 0.584592 8.736673 -5.713195 v -0.395192 9.164925 -5.571519 v 0.584592 9.164925 -5.571519 -v -0.395192 9.566045 -5.817649 -v 0.584592 9.566045 -5.817649 +v -0.395192 9.566045 -5.817651 +v 0.584592 9.566045 -5.817651 v -0.395192 9.328085 -6.240386 v 0.584592 9.328085 -6.240386 -v -0.395192 8.650140 -6.472072 -v 0.584592 8.650140 -6.472072 -v -0.395192 8.023211 -6.974553 -v 0.584592 8.023211 -6.974553 +v -0.395192 8.650138 -6.472074 +v 0.584592 8.650138 -6.472074 +v -0.395192 8.023209 -6.974555 +v 0.584592 8.023209 -6.974555 v -0.395192 7.262578 -7.039774 v 0.584592 7.262578 -7.039774 -v -0.395192 7.029797 -6.702052 -v 0.584592 7.029797 -6.702052 -v -0.395192 7.269282 -6.422195 -v 0.584592 7.269282 -6.422195 -v -0.395192 7.572930 -6.422195 -v 0.584592 7.572930 -6.422195 -v -0.395192 8.226030 -6.011783 -v 0.584592 8.226030 -6.011783 -v -0.395192 6.903951 -4.234123 -v 0.584592 6.903951 -4.234123 +v -0.395192 7.029797 -6.702054 +v 0.584592 7.029797 -6.702054 +v -0.395192 7.269280 -6.422195 +v 0.584592 7.269280 -6.422195 +v -0.395192 7.572928 -6.422195 +v 0.584592 7.572928 -6.422195 +v -0.395192 8.226030 -6.011785 +v 0.584592 8.226030 -6.011785 +v -0.395192 6.903951 -4.234125 +v 0.584592 6.903951 -4.234125 v -0.395192 6.148036 -4.191928 v 0.584592 6.148036 -4.191928 v -0.395192 7.596701 -3.479156 @@ -39,4669 +40,112 @@ v -0.395192 8.736673 -5.713195 v 0.584592 8.736673 -5.713195 v -0.395192 9.164925 -5.571519 v 0.584592 9.164925 -5.571519 -v -0.395192 9.566045 -5.817649 -v 0.584592 9.566045 -5.817649 +v -0.395192 9.566045 -5.817651 +v 0.584592 9.566045 -5.817651 v -0.395192 9.328085 -6.240386 v 0.584592 9.328085 -6.240386 -v -0.395192 8.650140 -6.472072 -v 0.584592 8.650140 -6.472072 -v -0.395192 8.023211 -6.974553 -v 0.584592 8.023211 -6.974553 +v -0.395192 8.650138 -6.472074 +v 0.584592 8.650138 -6.472074 +v -0.395192 8.023209 -6.974555 +v 0.584592 8.023209 -6.974555 v -0.395192 7.262578 -7.039774 v 0.584592 7.262578 -7.039774 -v -0.395192 7.029797 -6.702052 -v 0.584592 7.029797 -6.702052 -v -0.395192 7.269282 -6.422195 -v 0.584592 7.269282 -6.422195 -v -0.395192 7.572930 -6.422195 -v 0.584592 7.572930 -6.422195 -v -0.395192 8.226030 -6.011783 -v 0.584592 8.226030 -6.011783 -v -0.395192 6.903951 -4.234123 -v 0.584592 6.903951 -4.234123 +v -0.395192 7.029797 -6.702054 +v 0.584592 7.029797 -6.702054 +v -0.395192 7.269280 -6.422195 +v 0.584592 7.269280 -6.422195 +v -0.395192 7.572928 -6.422195 +v 0.584592 7.572928 -6.422195 +v -0.395192 8.226030 -6.011785 +v 0.584592 8.226030 -6.011785 +v -0.395192 6.903951 -4.234125 +v 0.584592 6.903951 -4.234125 v -0.395192 6.148036 -4.191928 v 0.584592 6.148036 -4.191928 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 0.5222 0.8528 +vn -0.0000 -0.6977 0.7164 +vn -0.0000 0.3799 0.9250 +vn -0.0000 0.1152 0.9933 +vn -0.0000 0.9679 0.2511 +vn -0.0000 0.6394 -0.7689 +vn -0.0000 0.4816 -0.8764 +vn -0.0000 0.3715 -0.9284 +vn -0.0000 -0.4267 -0.9044 +vn -0.0000 -0.9986 0.0521 +vn -0.0000 -0.4182 0.9083 +vn -0.0000 -0.2769 0.9609 +vn -0.0000 -0.9829 0.1841 +vn -0.0000 -0.4738 -0.8807 +vn -0.0000 -0.7356 -0.6775 vt 0.382588 0.627146 vt 0.395485 0.647711 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.395485 0.647711 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.395485 0.647711 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.382588 0.627146 -vt 0.395485 0.647711 -vt 0.382588 0.627146 -vn 1.0000 0.0000 0.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.5222 0.8528 -vn 0.0000 -0.6977 0.7164 -vn 0.0000 0.3799 0.9250 -vn 0.0000 0.1152 0.9933 -vn 0.0000 0.9679 0.2512 -vn 0.0000 0.6394 -0.7689 -vn 0.0000 0.4816 -0.8764 -vn 0.0000 0.3715 -0.9284 -vn 0.0000 -0.4267 -0.9044 -vn 0.0000 -0.9986 0.0521 -vn 0.0000 -0.4182 0.9083 -vn 0.0000 -0.2769 0.9609 -vn 0.0000 -0.9829 0.1841 -vn 0.0000 -0.4738 -0.8807 -vn 0.0000 -0.4737 -0.8807 -vn 0.0000 -0.7356 -0.6775 -s off -f 22/1/1 20/2/1 18/3/1 -f 17/4/2 21/5/2 23/6/2 -f 25/7/2 15/8/2 23/6/2 -f 16/9/1 26/10/1 24/11/1 -f 14/12/1 6/13/1 26/10/1 -f 13/14/2 25/7/2 5/15/2 -f 5/15/2 11/16/2 13/14/2 -f 12/17/1 6/13/1 14/12/1 -f 7/18/2 9/19/2 11/16/2 -f 12/17/1 10/20/1 8/21/1 -f 6/13/1 28/22/1 26/10/1 -f 28/22/1 3/23/1 30/24/1 -f 27/25/2 5/15/2 25/7/2 -f 27/25/2 4/26/2 1/27/2 -f 16/9/1 24/11/1 18/3/1 -f 24/11/1 22/1/1 18/3/1 -f 23/6/2 15/8/2 17/4/2 -f 17/4/2 19/28/2 21/5/2 -f 25/7/2 13/14/2 15/8/2 -f 16/9/1 14/12/1 26/10/1 -f 5/15/2 7/18/2 11/16/2 -f 12/17/1 8/21/1 6/13/1 -f 6/13/1 2/29/1 28/22/1 -f 28/22/1 2/29/1 3/23/1 -f 27/25/2 1/27/2 5/15/2 -f 27/25/2 29/30/2 4/26/2 +s 0 +f 22/1/1 20/1/1 18/1/1 +f 17/1/2 21/1/2 23/1/2 +f 25/1/2 15/1/2 23/1/2 +f 16/1/1 26/1/1 24/1/1 +f 14/1/1 6/1/1 26/1/1 +f 13/1/2 25/1/2 5/1/2 +f 5/1/2 11/1/2 13/1/2 +f 12/1/1 6/1/1 14/1/1 +f 7/1/2 9/1/2 11/1/2 +f 12/1/1 10/1/1 8/1/1 +f 6/1/1 28/1/1 26/1/1 +f 28/1/1 3/2/1 30/1/1 +f 27/1/2 5/1/2 25/1/2 +f 27/1/2 4/2/2 1/1/2 +f 16/1/1 24/1/1 18/1/1 +f 24/1/1 22/1/1 18/1/1 +f 23/1/2 15/1/2 17/1/2 +f 17/1/2 19/1/2 21/1/2 +f 25/1/2 13/1/2 15/1/2 +f 16/1/1 14/1/1 26/1/1 +f 5/1/2 7/1/2 11/1/2 +f 12/1/1 8/1/1 6/1/1 +f 6/1/1 2/1/1 28/1/1 +f 28/1/1 2/1/1 3/2/1 +f 27/1/2 1/1/2 5/1/2 +f 27/1/2 29/1/2 4/2/2 s 1 -f 31/31/3 33/32/4 32/33/3 -f 32/33/3 35/34/5 31/31/3 -f 36/35/5 37/36/6 35/34/5 -f 38/37/6 39/38/7 37/36/6 -f 40/39/7 41/40/8 39/38/7 -f 42/41/8 43/42/9 41/40/8 -f 44/43/9 45/44/10 43/42/9 -f 46/45/10 47/46/11 45/44/10 -f 48/47/11 49/48/12 47/46/11 -f 50/49/12 51/50/13 49/48/12 -f 52/51/13 53/52/14 51/50/13 -f 54/53/14 55/54/15 53/52/14 -f 56/55/15 57/56/16 55/54/15 -f 58/57/17 59/58/18 57/56/16 -f 34/59/4 60/60/18 33/32/4 -f 31/31/3 34/59/4 33/32/4 -f 32/33/3 36/35/5 35/34/5 -f 36/35/5 38/37/6 37/36/6 -f 38/37/6 40/39/7 39/38/7 -f 40/39/7 42/41/8 41/40/8 -f 42/41/8 44/43/9 43/42/9 -f 44/43/9 46/45/10 45/44/10 -f 46/45/10 48/47/11 47/46/11 -f 48/47/11 50/49/12 49/48/12 -f 50/49/12 52/51/13 51/50/13 -f 52/51/13 54/53/14 53/52/14 -f 54/53/14 56/55/15 55/54/15 -f 56/55/15 58/57/17 57/56/16 -f 58/57/17 60/60/18 59/58/18 -f 34/59/4 59/58/18 60/60/18 -o slide_pistol_0 -v 1.014517 11.207904 -2.625849 -v 1.014517 11.207904 -2.300615 -v 1.014517 10.723700 -1.978914 -v -1.014517 10.157009 -2.625849 -v -1.014517 11.207904 -2.625849 -v -0.335502 10.613042 -2.625849 -v -1.526129 9.326169 3.920666 -v -1.526129 9.326169 3.413728 -v -1.526129 8.752565 3.413728 -v -1.705540 8.752565 3.920666 -v -1.705540 7.184847 3.920666 -v -1.705540 8.402288 6.532843 -v -1.526129 8.752565 3.920666 -v -1.705540 8.752565 3.920666 -v -1.705540 8.752759 6.288157 -v -1.526129 8.752565 3.920666 -v -1.524936 8.752759 6.288157 -v 1.705540 7.247200 -1.820036 -v 1.526129 7.247200 -1.820036 -v 1.526043 7.614016 -2.276281 -v 1.321148 7.184845 12.021435 -v -1.171832 7.184845 11.897297 -v 1.156401 7.184845 11.897297 -v 1.526043 7.614016 -2.276281 -v 1.526129 7.247200 -1.820036 -v 1.526043 7.184847 -2.765843 -v 1.321148 7.184845 11.214216 -v -1.705540 7.184847 2.105287 -v -1.705540 8.757562 2.105289 -v -1.705540 8.927025 1.935824 -v 1.526129 7.247200 -1.820036 -v 1.526129 7.184847 -1.313097 -v 1.526043 7.184847 -2.765843 -v -1.524936 9.326169 6.288157 -v -1.326382 10.025589 6.288157 -v -1.705540 9.660696 6.288157 -v -1.705540 9.326169 6.288157 -v 0.813732 7.184845 16.849926 -v 1.705540 7.184845 12.021435 -v 1.705540 7.184845 18.319260 -v 1.326382 7.184845 19.492821 -v -1.705540 7.967402 7.346316 -v -1.705540 8.055081 6.892088 -v 1.705540 7.637856 11.214216 -v 1.705540 7.184845 11.214216 -v 1.705540 7.967402 7.346316 -v -1.705540 7.184847 3.920666 -v -1.526129 7.184847 3.920666 -v -1.171832 7.184845 5.830760 -v 1.705540 7.184847 3.920666 -v 1.705540 7.184845 11.214216 -v 1.156401 7.184845 5.830760 -v 1.705540 7.184847 -2.765843 -v 1.705540 7.184847 -4.842922 -v 1.705540 8.782389 -4.842922 -v 1.705540 7.614016 -2.276281 -v 1.231429 7.184847 -4.842922 -v 1.526129 7.184847 -1.313097 -v 1.231024 7.184847 1.879624 -v -1.526129 7.184847 2.105287 -v -1.526129 7.184847 2.612226 -v -1.526129 8.752565 2.612226 -v 1.705540 7.184847 3.920666 -v 1.321148 7.184845 11.214216 -v 1.705540 7.184845 11.214216 -v 1.705540 7.637856 11.214216 -v -0.813732 7.184845 16.849926 -v 1.526129 7.184847 3.920666 -v 0.000000 9.832471 21.944122 -v 0.947015 10.390595 21.944122 -v -0.947015 10.390595 21.944122 -v 1.705540 8.055081 6.892088 -v -1.171832 7.184845 11.897297 -v -1.171832 8.402286 11.660704 -v -1.171832 8.578351 11.777046 -v 0.167762 11.355708 20.190464 -v -0.167762 11.355708 20.190464 -v -0.167762 10.787156 20.190464 -v 0.814306 10.492231 20.190464 -v 0.814306 10.492231 19.285318 -v 0.359371 10.492231 19.285318 -v 0.893030 10.492231 20.116810 -v 0.893030 10.492231 19.372772 -v -1.526129 7.184847 3.413727 -v 1.526129 7.184847 3.413727 -v -0.393269 7.184847 1.879624 -v 0.393269 7.184847 1.879624 -v -1.333642 8.402288 6.532843 -v -1.333642 8.055081 6.892088 -v -1.333642 7.967402 7.346316 -v -1.016029 10.321226 11.777046 -v -0.947015 10.390595 11.777046 -v -0.654714 10.019365 11.777046 -v -0.813732 7.184845 16.849926 -v 0.813732 7.184845 16.849926 -v 0.813732 5.420440 16.849926 -v 0.471660 5.087638 16.849926 -v -0.471660 5.087638 16.849926 -v -0.813732 5.420440 16.849926 -v -1.333642 7.184845 21.944122 -v -1.333642 7.184845 19.492821 -v -0.813732 7.184845 21.944122 -v -1.526129 7.184847 0.796846 -v -1.705540 7.184847 0.796846 -v -1.705540 7.184847 -0.004656 -v -0.728164 8.051682 1.879624 -v -0.393269 9.417000 1.879624 -v -0.393269 7.184847 1.879624 -v -0.728164 7.586768 1.879624 -v -1.238688 7.184847 1.879624 -v 1.231024 9.417000 1.879624 -v 1.231024 8.051682 1.879624 -v 0.728164 8.051682 1.879624 -v 1.526129 7.184847 2.105287 -v 1.526129 7.184847 2.612226 -v 1.705540 7.184847 -1.313097 -v 1.705540 7.184847 -0.511595 -v 1.526129 7.184847 -0.511595 -v 1.705540 7.184847 2.612226 -v 1.705540 7.184847 3.413727 -v 1.526129 7.184847 3.920666 -v 1.526129 9.833411 3.920666 -v 1.705540 9.660696 3.920666 -v 0.408756 10.107763 -3.259710 -v -0.409408 10.107763 -3.259710 -v -0.409408 10.390597 -3.172265 -v 1.705540 9.660696 3.413728 -v 1.526129 9.833411 3.413728 -v 1.526129 7.184847 3.413727 -v -0.392768 7.184847 -4.842922 -v 0.393269 9.417000 1.879624 -v 0.393269 7.184847 1.879624 -v 0.392768 7.184847 -4.842922 -v 1.705540 7.184847 2.612226 -v 1.526129 7.184847 2.612226 -v 1.526129 9.833411 2.612226 -v 1.526129 7.184847 2.105287 -v 1.705540 7.184847 2.105287 -v 1.705540 9.660696 2.105289 -v 0.392768 8.782389 -4.842922 -v 0.392768 9.417337 -4.333549 -v 1.231024 7.184847 1.879624 -v 1.231024 7.586768 1.879624 -v 1.231429 7.587345 -4.842922 -v 0.408756 10.390597 -3.531358 -v 0.408756 10.107763 -3.763226 -v 0.408756 10.107763 -3.259710 -v 1.526129 9.833411 1.303785 -v 1.705540 9.660696 1.303785 -v 1.705540 7.184847 1.303785 -v 0.728571 7.587345 -4.842922 -v 0.728571 8.051105 -4.842922 -v 1.231429 8.051105 -4.842922 -v 1.705540 9.660696 0.796846 -v 1.526129 9.833411 0.796846 -v 1.526129 7.184847 0.796846 -v 0.813732 7.184845 21.944122 -v 1.231024 9.417000 1.879624 -v 0.393269 9.417000 1.879624 -v 0.392768 9.417337 -4.333549 -v 1.231024 7.586768 1.879624 -v 0.728164 7.586768 1.879624 -v 0.728571 7.587345 -4.842922 -v 1.526129 9.833411 -0.004656 -v 1.705540 9.660696 -0.004656 -v 1.705540 7.184847 -0.004656 -v 1.705540 7.184847 -4.842922 -v 1.231429 7.184847 -4.842922 -v 1.231429 7.587345 -4.842922 -v 1.526129 7.184847 -0.511595 -v 1.705540 7.184847 -0.511595 -v 1.705540 9.660696 -0.511595 -v 1.231429 9.417337 -4.333549 -v 1.231429 8.782389 -4.842922 -v 1.231024 9.417000 1.879624 -v 0.728164 7.586768 1.879624 -v 0.728164 8.051682 1.879624 -v 0.728571 8.051105 -4.842922 -v 1.526129 9.833411 -1.313097 -v 1.705540 9.660696 -1.313097 -v 1.705540 7.184847 -1.313097 -v 1.231024 8.051682 1.879624 -v 0.728164 8.051682 1.879624 -v 1.231024 8.051682 1.879624 -v 1.231429 8.051105 -4.842922 -v 0.947015 10.390597 -2.821980 -v -0.947015 10.390597 -2.821980 -v -1.132077 10.212755 -2.753814 -v 1.526129 7.247200 -1.820036 -v 1.705540 7.247200 -1.820036 -v 1.705540 9.660696 -1.820036 -v 1.705540 8.752767 6.288157 -v 1.705540 8.402288 6.532843 -v -1.132077 10.212755 0.576711 -v -0.947015 10.390597 0.637665 -v 0.947015 10.390597 0.637665 -v 1.326382 7.184845 21.944122 -v 1.526129 7.184847 -0.004656 -v -1.526129 7.184847 2.612226 -v -1.238688 7.184847 1.879624 -v 1.705540 7.184847 2.105287 -v 1.526129 7.184847 1.303785 -v 1.705540 7.184847 1.303785 -v 1.526129 7.184847 0.796846 -v 1.705540 7.184847 -0.004656 -v 0.728164 7.586768 1.879624 -v 1.231024 7.586768 1.879624 -v 1.231024 7.184847 1.879624 -v 0.393269 7.184847 1.879624 -v -1.238688 9.417000 1.879624 -v -1.526129 7.184847 2.105287 -v -1.705540 7.184847 -1.313097 -v -1.526129 7.184847 -1.313097 -v -1.526129 7.184847 -0.511595 -v -1.705540 7.184847 2.612226 -v -1.526129 9.326169 3.920666 -v -1.705540 9.326169 3.920666 -v -1.705540 9.660696 3.920666 -v -1.526129 7.184847 3.920666 -v -1.705540 7.184847 3.920666 -v -1.705540 8.752565 3.920666 -v -1.705540 7.184847 3.413727 -v -1.526129 7.184847 3.413727 -v -1.526129 8.752565 3.413728 -v -1.705540 9.326169 3.413728 -v -1.526129 9.326169 3.413728 -v -1.526129 9.833411 3.413728 -v -1.705540 7.184847 2.612226 -v -1.705540 7.184847 3.413727 -v -1.705540 8.752565 3.413728 -v -0.393269 9.417000 1.879624 -v -0.392768 8.782389 -4.842922 -v -0.392768 7.184847 -4.842922 -v -1.526129 9.326169 2.612226 -v -1.705540 9.326169 2.612226 -v -1.705540 9.660696 2.612226 -v -1.526129 7.184847 2.612226 -v -1.705540 7.184847 2.612226 -v -1.705540 8.752565 2.612226 -v -0.392768 9.417337 -4.333549 -v -1.238688 7.184847 1.879624 -v -1.238688 7.184847 -4.842922 -v -1.238688 7.587345 -4.842922 -v -0.409408 10.390597 -3.531358 -v -0.409408 10.390597 -3.172265 -v -0.409408 10.107763 -3.259710 -v -1.526129 9.833411 1.303785 -v -1.526129 7.184847 1.303785 -v -1.705540 7.184847 1.303785 -v -0.728571 7.587345 -4.842922 -v -1.238688 7.587345 -4.842922 -v -1.238688 8.051105 -4.842922 -v -1.705540 9.660696 0.796846 -v -1.705540 7.184847 0.796846 -v -1.526129 7.184847 0.796846 -v -1.238688 9.417000 1.879624 -v -1.238688 9.417337 -4.333549 -v -0.392768 9.417337 -4.333549 -v -1.238688 7.586768 1.879624 -v -1.238688 7.587345 -4.842922 -v -0.728571 7.587345 -4.842922 -v -1.526129 9.833411 -0.004656 -v -1.526129 7.184847 -0.004656 -v -1.705540 7.184847 -0.004656 -v -1.238688 7.184847 -4.842922 -v -1.705540 7.184847 -4.842922 -v -1.526129 7.184847 -0.511595 -v -1.526129 9.833411 -0.511595 -v -1.705540 9.660696 -0.511595 -v -1.238688 8.782389 -4.842922 -v -1.238688 9.417337 -4.333549 -v -1.238688 9.417000 1.879624 -v -0.728164 7.586768 1.879624 -v -0.728571 7.587345 -4.842922 -v -0.728571 8.051105 -4.842922 -v -1.526129 7.184847 -0.004656 -v -1.238688 7.184847 -4.842922 -v -1.526129 9.833411 -1.313097 -v -1.526129 7.184847 -1.313097 -v -1.705540 7.184847 -1.313097 -v -1.238688 8.051682 1.879624 -v -1.238688 8.051105 -4.842922 -v -0.728164 8.051682 1.879624 -v -0.728571 8.051105 -4.842922 -v -1.238688 8.051105 -4.842922 -v -1.705540 7.184847 -4.842922 -v -1.526129 7.184847 -1.820036 -v -1.705540 7.184847 2.105287 -v -1.705540 7.184847 1.303785 -v -1.526129 7.184847 -1.820036 -v -1.526129 9.833411 -1.820036 -v -1.705540 9.660696 -1.820036 -v -1.526129 7.184847 1.303785 -v -1.526129 7.184847 3.413727 -v -1.526129 7.184847 3.920666 -v -1.526129 8.752565 3.920666 -v -0.947015 10.390597 6.288157 -v -0.654714 10.019367 6.288157 -v -0.409408 10.390597 6.288157 -v -1.171832 9.475291 6.288157 -v -0.409408 10.019367 5.830760 -v -0.409408 10.390597 5.830760 -v -0.409408 10.390597 6.288157 -v 0.408756 10.019367 5.830760 -v 0.408756 10.019367 6.288157 -v 0.408756 10.390597 6.288157 -v 0.408756 10.019367 5.830760 -v 0.408756 10.390597 5.830760 -v -0.409408 10.390597 5.830760 -v 0.408756 10.019367 6.288157 -v 0.632517 10.019367 6.288157 -v 0.408756 10.390597 6.288157 -v 0.958007 9.683089 6.288157 -v 1.018419 10.321527 6.288157 -v -1.171832 9.475289 11.777046 -v -1.171832 7.184845 5.830760 -v -1.171832 8.752774 6.288157 -v -1.171832 8.402288 6.532843 -v -0.409408 10.019367 6.288157 -v -1.333642 8.402286 11.660704 -v -1.171832 8.402286 11.660704 -v -1.171832 8.402288 6.532843 -v -0.409408 10.019367 5.830760 -v -0.654714 10.019367 5.830760 -v -1.171832 9.475291 5.830760 -v -1.171832 7.184845 5.830760 -v 1.156401 7.184845 5.830760 -v 1.156401 9.475291 5.830760 -v 1.014517 11.207904 -2.625849 -v 0.335502 10.613042 -2.625849 -v 0.335502 11.207904 -2.625849 -v -0.167762 11.355708 20.190464 -v 0.167762 11.355708 20.190464 -v 0.167762 11.355708 19.816681 -v 0.143185 11.207904 -2.300615 -v 0.143185 11.269897 -2.300615 -v 0.143185 11.269897 -2.690542 -v 1.014517 11.207904 -2.625849 -v 0.335502 11.207904 -2.625849 -v 0.335502 11.207904 -2.300615 -v 1.014517 11.207904 -2.300615 -v 0.335502 11.207904 -2.625849 -v 0.335502 11.269897 -2.690542 -v 0.335502 11.269897 -2.300615 -v 0.335502 10.613042 -2.625849 -v 0.335502 10.613042 -2.690542 -v 0.335502 11.269897 -2.690542 -v 0.143185 11.269897 -2.300615 -v 0.335502 11.269897 -2.300615 -v 0.335502 11.269897 -2.690542 -v -0.720340 8.093417 11.897297 -v -0.389845 7.872590 11.897297 -v -1.171832 7.184845 11.897297 -v -0.941169 8.423912 11.897297 -v -1.018714 8.813757 11.897297 -v 0.000000 7.795043 11.897297 -v 0.471660 5.087638 21.944122 -v 0.813732 5.420440 21.944122 -v -0.813732 5.420440 21.944122 -v 0.813732 7.184845 21.944122 -v -1.333642 7.184845 21.944122 -v -0.813732 7.184845 21.944122 -v -0.720340 8.093417 21.944122 -v -1.018714 8.813757 21.944122 -v -1.326382 10.025587 21.944122 -v -0.720340 9.534097 21.944122 -v 0.720340 9.534097 21.944122 -v 1.326382 10.025587 21.944122 -v 1.018714 8.813757 21.944122 -v 1.326382 7.184845 21.944122 -v 0.720340 8.093417 21.944122 -v 0.941169 9.203602 21.944122 -v 0.389845 9.754926 21.944122 -v -0.941169 9.203602 21.944122 -v -0.941169 8.423912 21.944122 -v -0.389845 7.872588 21.944122 -v 0.000000 7.795043 21.944122 -v 0.389845 7.872588 21.944122 -v 0.941169 8.423912 21.944122 -v -0.471660 5.087638 21.944122 -v -0.389845 9.754926 21.944122 -v 1.321148 7.637856 11.214216 -v 1.321148 7.444345 12.021435 -v 1.321148 7.184845 12.021435 -v 1.705540 7.184845 12.021435 -v 1.321148 7.184845 12.021435 -v 1.321148 7.444345 12.021435 -v 1.705540 7.637856 11.214216 -v 1.705540 7.444345 12.021435 -v 1.321148 7.444345 12.021435 -v -1.526129 9.326169 3.413728 -v -1.705540 9.326169 3.413728 -v -1.705540 9.326169 2.612226 -v -1.524936 9.326169 6.288157 -v -1.705540 9.326169 6.288157 -v -1.705540 9.326169 3.920666 -v -1.526129 8.752565 2.612226 -v -1.705540 8.752565 2.612226 -v -1.705540 8.752565 3.413728 -v -1.526129 8.752565 2.612226 -v 0.632517 10.019367 5.830760 -v 0.335502 10.613042 -2.690542 -v 0.143185 10.723700 -2.690542 -v 0.143185 11.269897 -2.690542 -v -0.335502 10.613042 -2.690542 -v -0.143185 10.723700 -2.690542 -v -0.335502 10.613042 -2.625849 -v -0.335502 10.613042 -2.690542 -v 0.335502 10.613042 -2.690542 -v 0.143185 10.723700 -2.690542 -v 0.143185 10.723700 -1.978914 -v -0.814306 10.492231 20.190464 -v -0.359371 10.492231 20.190464 -v -0.359371 10.492231 19.285318 -v -0.893030 10.492231 20.116810 -v -0.814306 10.492231 19.285318 -v -0.335502 11.207904 -2.625849 -v -0.335502 10.613042 -2.625849 -v -0.335502 11.207904 -2.625849 -v -0.335502 11.269897 -2.690542 -v -0.335502 11.269897 -2.690542 -v -0.143185 11.269897 -2.690542 -v -0.143185 10.723700 -2.690542 -v -0.143185 11.269897 -2.690542 -v -0.143185 11.207904 -2.300615 -v -0.335502 11.207904 -2.625849 -v -0.335502 11.207904 -2.300615 -v -0.335502 11.269897 -2.300615 -v -0.143185 11.269897 -2.300615 -v -0.143185 11.269897 -2.690542 -v -0.335502 11.269897 -2.690542 -v -0.143185 11.269897 -2.300615 -v -0.335502 11.207904 -2.625849 -v -1.014517 11.207904 -2.625849 -v -0.335502 11.207904 -2.300615 -v -1.014517 11.207904 -2.300615 -v 1.014517 10.157009 -2.625849 -v 1.014517 10.606321 -1.825947 -v 1.014517 10.491154 -1.431074 -v 1.014517 10.157009 -2.625849 -v 0.167762 10.787156 20.190464 -v -0.359371 10.492231 20.190464 -v -1.014517 11.207904 -2.625849 -v -1.014517 10.157009 -2.625849 -v -1.014517 10.723700 -1.978914 -v -1.014517 10.606321 -1.825947 -v -1.014517 10.491154 -1.431074 -v 0.359371 10.492231 20.190464 -v -1.014517 11.207904 -2.300615 -v -0.451145 8.974197 5.975873 -v 0.000000 8.787328 5.975873 -v -0.345291 9.132619 5.975873 -v 0.186870 8.336183 5.975873 -v 0.000000 8.299012 5.975873 -v -0.186870 9.238472 5.975873 -v 0.000000 9.275643 5.975873 -v 0.345291 8.442036 5.975873 -v 0.186870 9.238472 5.975873 -v 0.345291 9.132619 5.975873 -v 0.451145 8.600457 5.975873 -v 0.451145 8.974197 5.975873 -v 0.488316 8.787328 5.975873 -v -0.488316 8.787328 5.975873 -v -0.186870 8.336183 5.975873 -v -0.451145 8.600457 5.975873 -v -0.345291 8.442036 5.975873 -v -1.659889 9.270180 6.250484 -v -1.659889 9.270180 2.190356 -v -1.659889 8.796173 2.190356 -v -1.659889 9.139336 2.059511 -v -1.659889 8.927017 2.059511 -v -1.360494 9.270180 6.250484 -v -1.659889 9.270180 6.250484 -v -1.659889 8.796173 6.250484 -v -1.705540 8.752759 6.288157 -v -1.524936 8.752759 6.288157 -v -1.524936 9.326169 6.288157 -v 1.705540 7.614016 -2.276281 -v -1.705540 7.184847 1.303785 -v -1.705540 9.151711 1.935824 -v 1.321148 7.637856 11.214216 -v 0.359371 10.492231 20.190464 -v -1.238688 7.586768 1.879624 -v 0.393269 9.417000 1.879624 -v 1.705540 7.184847 3.920666 -v 0.408756 10.390597 -3.172265 -v 1.705540 7.184847 3.413727 -v 0.392768 7.184847 -4.842922 -v 1.705540 9.660696 2.612226 -v 1.526129 9.833411 2.105289 -v 1.231429 7.184847 -4.842922 -v 0.408756 10.390597 -3.172265 -v 1.526129 7.184847 1.303785 -v 1.705540 7.184847 0.796846 -v 1.231429 9.417337 -4.333549 -v 1.231429 7.587345 -4.842922 -v 1.526129 7.184847 -0.004656 -v 1.526129 9.833411 -0.511595 -v 0.728571 7.587345 -4.842922 -v 1.526129 7.184847 -1.313097 -v 1.231429 8.051105 -4.842922 -v 0.728571 8.051105 -4.842922 -v 1.132077 10.212755 -2.753814 -v 1.526129 9.833411 -1.820036 -v 1.132077 10.212755 0.576711 -v 1.705540 7.184847 0.796846 -v -1.238688 8.051682 1.879624 -v -1.705540 7.184847 -0.511595 -v -1.705540 7.184847 3.413727 -v -1.526129 9.833411 3.920666 -v -1.526129 8.752565 3.920666 -v -1.705540 8.752565 3.413728 -v -1.705540 9.660696 3.413728 -v -1.705540 8.752565 2.612226 -v -0.393269 7.184847 1.879624 -v -1.526129 9.833411 2.612226 -v -1.526129 8.752565 2.612226 -v -1.705540 7.184845 18.319260 -v -1.238688 7.586768 1.879624 -v -0.409408 10.107763 -3.763226 -v -1.705540 9.660696 1.303785 -v -0.728571 8.051105 -4.842922 -v -1.526129 9.833411 0.796846 -v -0.393269 9.417000 1.879624 -v -0.728164 7.586768 1.879624 -v -1.705540 9.660696 -0.004656 -v -1.705540 7.184847 -0.511595 -v -0.728164 8.051682 1.879624 -v -1.705540 9.660696 -1.313097 -v -1.238688 8.051682 1.879624 -v -1.705540 7.184847 -1.820036 -v -1.705540 7.184847 -1.820036 -v -1.705540 7.184847 -4.842922 -v -1.705540 7.184847 -1.820036 -v -1.705540 8.782389 -4.842922 -v -1.526129 8.752565 3.413728 -v -0.409408 10.019367 6.288157 -v 0.408756 10.390597 5.830760 -v -1.326382 10.025587 11.777046 -v -1.333642 8.402288 6.532843 -v -0.167762 11.355708 19.816681 -v 0.335502 11.207904 -2.300615 -v 0.335502 11.207904 -2.625849 -v 0.143185 11.269897 -2.690542 -v 1.321148 7.184845 11.214216 -v 1.705540 7.444345 12.021435 -v 1.321148 7.637856 11.214216 -v -1.526129 9.326169 2.612226 -v -1.526129 9.326169 3.920666 -v -1.526129 8.752565 3.413728 -v -1.526129 9.326169 2.612226 -v 0.335502 11.269897 -2.690542 -v 0.335502 10.613042 -2.625849 -v -0.893030 10.492231 19.372772 -v -0.335502 10.613042 -2.690542 -v -0.143185 10.723700 -1.978914 -v -0.335502 11.269897 -2.690542 -v -0.335502 11.269897 -2.300615 -v -1.659889 8.796173 6.250484 -v -1.360494 8.796173 6.250484 -v -1.705540 8.402288 6.532843 -v -1.333642 8.402288 6.532843 -v -1.524936 8.752759 6.288157 -v -1.171832 8.752774 6.288157 -v -0.654714 10.019365 11.897297 -v -0.654714 10.019365 11.777046 -v 0.632517 10.019365 11.777046 -v 0.632517 10.019365 11.777046 -v -1.705540 9.660696 6.288157 -v -1.705540 9.660696 3.920666 -v -1.705540 9.326169 3.920666 -v -1.526129 8.752565 2.110282 -v -1.526129 9.321173 2.105289 -v -1.524936 9.151711 1.935824 -v -1.526129 7.184847 1.303785 -v -1.526129 9.833411 1.303785 -v -1.526129 9.833411 0.796846 -v -1.705540 9.660696 1.303785 -v 1.526129 9.833411 -1.820036 -v 1.526129 9.833411 -1.313097 -v -1.171832 9.475289 11.777046 -v 1.705540 7.184845 18.319260 -v 1.705540 7.184845 12.021435 -v 1.705540 7.444345 12.021435 -v 1.705540 9.660696 -1.820036 -v 1.705540 7.247200 -1.820036 -v 1.705540 7.967400 18.319260 -v 1.526043 7.184847 -2.765843 -v 1.705540 7.184847 -4.842922 -v 1.705540 7.184847 -2.765843 -v -1.526129 9.321173 2.105289 -v -1.705540 9.321173 2.105289 -v -1.705540 9.151711 1.935824 -v -1.705540 8.927025 1.935824 -v -1.705540 8.757562 2.105289 -v -1.526129 8.752565 2.110282 -v 1.018714 8.813757 11.876558 -v 1.156401 9.475289 11.866871 -v 1.156401 7.184845 11.897297 -v -1.014517 10.157009 0.196241 -v -1.014517 10.369081 0.196241 -v 0.167762 10.787156 19.556133 -v 0.167762 11.355708 19.816681 -v 0.167762 11.355708 20.190464 -v 0.359371 10.492231 20.190464 -v 0.359371 10.492231 19.285318 -v 0.872165 9.770428 11.711023 -v 1.156401 9.475289 11.866871 -v 0.632517 10.019365 11.897297 -v 1.018419 10.321525 11.521421 -v 1.019789 10.321226 19.320282 -v 1.326382 10.025587 21.944122 -v 0.872165 9.770428 11.711023 -v 0.947015 10.390595 11.752501 -v 1.018419 10.321525 11.521421 -v 1.018419 10.321527 6.288157 -v 0.958007 9.683089 6.288157 -v 0.958007 9.683128 11.555180 -v 0.632517 10.019367 5.830760 -v 1.156401 9.475291 5.830760 -v 0.958007 9.683089 6.288157 -v 1.326382 7.967400 19.492821 -v 1.326382 7.967402 7.346316 -v 1.326382 8.055081 6.892088 -v 1.326382 8.402288 6.532843 -v 1.326382 10.025589 6.288157 -v -1.333642 7.967400 19.492821 -v -1.333642 8.578351 11.777046 -v -1.333642 8.402286 11.660704 -v -1.326382 10.025587 21.944122 -v -1.326382 10.025587 11.777046 -v 0.947015 10.390595 19.208494 -v 0.947015 10.390595 11.752501 -v 0.869641 10.390595 11.777046 -v -0.409408 10.390597 -3.531358 -v -0.409408 10.107763 -3.763226 -v -0.947015 10.390597 -3.531358 -v 0.869641 10.390595 11.777046 -v -1.238688 8.782389 -4.842922 -v -1.333642 8.578351 11.777046 -v -1.526129 7.184847 -0.004656 -v -1.526129 9.833411 -0.004656 -v -1.526129 9.833411 -0.511595 -v -0.947015 10.390597 0.637665 -v -0.947015 10.390597 6.288157 -v -0.409408 10.390597 5.830760 -v 0.408756 10.390597 5.830760 -v 0.947015 10.390597 0.637665 -v 0.408756 10.390597 6.288157 -v 1.018419 10.321527 6.288157 -v -1.171832 9.475291 5.830760 -v -1.171832 9.475291 6.288157 -v 1.018419 10.321527 6.288157 -v 1.326382 10.025589 6.288157 -v 1.132077 10.212755 0.576711 -v -0.409408 10.390597 6.288157 -v -1.526129 9.833411 2.105289 -v -1.526129 9.833411 2.612226 -v -1.132077 10.212755 0.576711 -v -1.526129 9.833411 3.920666 -v -1.326382 10.025589 6.288157 -v -1.526129 9.833411 3.413728 -v 0.947015 10.390597 -3.531358 -v 0.947015 10.390597 -2.821980 -v 1.132077 10.212755 -2.753814 -v 0.947015 10.390595 19.208494 -v -0.947015 10.390595 19.208494 -v -1.016029 10.321226 19.320282 -v 0.947015 10.390595 20.281315 -v -0.947015 10.390595 20.281315 -v -0.947015 10.390595 21.944122 -v 1.705540 7.184847 2.612226 -v 1.705540 9.660696 2.612226 -v 1.705540 9.660696 3.413728 -v 1.019789 10.321226 20.144449 -v -1.016029 10.321226 20.144449 -v 1.326382 7.967400 19.492821 -v 1.326382 7.184845 19.492821 -v 0.471660 5.087638 16.849926 -v 0.813732 5.420440 16.849926 -v 0.813732 5.420440 21.944122 -v 0.408756 10.390597 -3.531358 -v 0.408756 10.390597 -3.172265 -v 1.019789 10.321226 20.144449 -v -0.409408 10.107763 -3.763226 -v -0.409408 10.107763 -3.259710 -v 0.408756 10.107763 -3.259710 -v 1.705540 7.967402 7.346316 -v 1.326382 7.967402 7.346316 -v 1.326382 7.967400 19.492821 -v 1.326382 7.184845 21.944122 -v 1.326382 7.184845 19.492821 -v 1.526129 7.184847 1.303785 -v 1.526129 7.184847 0.796846 -v 1.526129 9.833411 0.796846 -v 1.705540 8.402288 6.532843 -v 1.326382 8.402288 6.532843 -v 1.326382 8.055081 6.892088 -v 1.705540 8.055081 6.892088 -v 1.705540 9.660696 6.288157 -v 1.326382 10.025589 6.288157 -v 1.326382 8.752767 6.288157 -v 1.705540 9.660696 -4.131680 -v 1.231429 9.417337 -4.333549 -v 0.408756 10.107763 -3.763226 -v -0.392768 9.417337 -4.333549 -v -0.409408 10.390597 -3.172265 -v -0.947015 10.390597 -2.821980 -v 0.392768 9.417337 -4.333549 -v 0.392768 8.782389 -4.842922 -v 1.231429 8.782389 -4.842922 -v 1.705540 8.782389 -4.842922 -v 1.705540 9.660696 -4.131680 -v 0.947015 10.390597 -3.531358 -v 1.526129 9.833411 2.612226 -v 1.705540 9.660696 6.288157 -v 1.705540 9.660696 3.920666 -v 1.526129 9.833411 3.920666 -v -1.132077 10.212755 0.576711 -v 1.132077 10.212755 0.576711 -v 1.132077 10.212755 -2.753814 -v 1.705540 9.660696 -1.313097 -v 1.705540 9.660696 -0.511595 -v 1.705540 7.184847 -0.511595 -v 1.705540 9.660696 -0.004656 -v 1.705540 9.660696 0.796846 -v 1.705540 7.184847 0.796846 -v 1.526129 7.184847 2.612226 -v 1.526129 7.184847 2.105287 -v 1.526129 9.833411 2.105289 -v 1.705540 9.660696 3.920666 -v 1.705540 9.660696 6.288157 -v 1.019789 10.321226 19.320282 -v -0.471660 5.087638 16.849926 -v 0.471660 5.087638 21.944122 -v 0.813732 7.184845 16.849926 -v 0.813732 7.184845 21.944122 -v 0.947015 10.390595 20.281315 -v 0.947015 10.390595 21.944122 -v 1.705540 8.752767 6.288157 -v 1.526129 7.184847 3.920666 -v 1.526129 7.184847 3.413727 -v 1.526129 9.833411 3.413728 -v 0.392768 7.184847 -4.842922 -v -0.392768 7.184847 -4.842922 -v -0.392768 8.782389 -4.842922 -v 0.408756 10.390597 -3.531358 -v 1.526129 7.184847 -0.004656 -v 1.526129 7.184847 -0.511595 -v 1.526129 9.833411 -0.511595 -v 1.705540 7.184847 1.303785 -v 1.705540 9.660696 1.303785 -v 1.705540 9.660696 2.105289 -v 1.526129 9.833411 3.413728 -v 1.526129 9.833411 -0.511595 -v 1.526129 9.833411 -1.313097 -v 1.526129 9.833411 -1.820036 -v 1.526129 9.833411 -0.004656 -v 1.526129 9.833411 2.105289 -v 1.526129 9.833411 1.303785 -v 1.705540 7.184847 -2.765843 -v 1.705540 7.614016 -2.276281 -v 1.526043 7.614016 -2.276281 -v -0.947015 10.390597 -3.531358 -v -1.705540 9.660696 -4.131680 -v -1.132077 10.212755 -2.753814 -v -1.705540 7.184845 18.319260 -v -1.705540 7.967400 18.319260 -v -1.526129 9.833411 -1.313097 -v -1.526129 9.833411 -0.511595 -v -1.705540 9.660696 -1.820036 -v -1.526129 9.833411 -1.820036 -v -1.705540 9.660696 3.413728 -v -1.705540 9.660696 2.612226 -v -1.705540 9.326169 2.612226 -v -1.333642 7.184845 19.492821 -v -0.471660 5.087638 21.944122 -v -0.813732 5.420440 21.944122 -v -0.409408 10.390597 -3.531358 -v -1.705540 7.184847 2.105287 -v -1.526129 7.184847 2.105287 -v -1.526129 9.833411 2.105289 -v -1.705540 7.967402 7.346316 -v -1.705540 7.967400 18.319260 -v -1.333642 7.967400 19.492821 -v -1.333642 7.184845 19.492821 -v -1.705540 9.321173 2.105289 -v -1.705540 9.660696 2.105289 -v -1.705540 8.055081 6.892088 -v -1.333642 8.055081 6.892088 -v -1.333642 7.967402 7.346316 -v -1.705540 9.660696 -0.511595 -v -1.238688 9.417337 -4.333549 -v -1.705540 9.660696 -4.131680 -v -1.526129 9.833411 1.303785 -v -1.705540 8.782389 -4.842922 -v -1.705540 9.660696 -1.313097 -v -1.705540 7.184847 -1.313097 -v -1.705540 7.184847 -0.511595 -v -1.705540 9.660696 -0.004656 -v -1.705540 7.184847 -0.004656 -v -1.705540 7.184847 0.796846 -v -1.526129 9.833411 -0.004656 -v -1.705540 9.660696 0.796846 -v -1.526129 9.833411 0.796846 -v -0.813732 5.420440 16.849926 -v -0.813732 7.184845 21.944122 -v -1.526129 7.184847 -1.313097 -v -1.526129 9.833411 -1.313097 -v -1.526129 9.833411 -1.820036 -v -0.947015 10.390595 11.777046 -v -1.016029 10.321226 11.777046 -v -1.705540 8.752759 6.288157 -v -1.526129 9.833411 3.920666 -v -1.526129 9.833411 3.413728 -v -1.526129 9.326169 3.413728 -v 1.326382 8.752767 6.288157 -v -1.171832 8.402288 6.532843 -v -1.171832 8.578351 11.777046 -v -1.171832 8.402286 11.660704 -v 0.632517 10.019367 5.830760 -v 0.632517 10.019367 6.288157 -v 0.408756 10.019367 6.288157 -v -0.654714 10.019367 5.830760 -v -0.409408 10.019367 5.830760 -v -0.409408 10.019367 6.288157 -v 0.632517 10.019367 6.288157 -v 0.958007 9.683128 11.555180 -v 1.156401 7.184845 5.830760 -v 1.156401 7.184845 11.897297 -v 0.941169 9.203602 11.872112 -v 1.018714 8.813757 11.876558 -v 1.018714 8.813757 21.944122 -v 0.720340 9.534097 11.876596 -v 0.941169 9.203602 21.944122 -v 0.389845 9.754926 11.891426 -v 0.720340 9.534097 21.944122 -v 0.000000 9.832471 11.897297 -v 0.389845 9.754926 21.944122 -v 0.814306 10.296812 20.190464 -v 0.814306 10.492231 20.190464 -v 0.000000 9.832471 21.944122 -v -0.389845 9.754926 21.944122 -v -0.389845 9.754926 11.897297 -v -0.720340 9.534097 21.944122 -v -0.720340 9.534097 11.896717 -v 0.893030 10.296812 20.116810 -v 0.893030 10.492231 20.116810 -v 0.893030 10.296812 19.372772 -v 0.893030 10.492231 19.372772 -v -0.941169 9.203602 11.897297 -v -0.941169 9.203602 21.944122 -v -1.018714 8.813757 21.944122 -v -1.018714 8.813757 11.897297 -v -0.941169 8.423912 21.944122 -v -0.941169 8.423912 11.897297 -v -0.720340 8.093417 21.944122 -v -0.720340 8.093417 11.897297 -v -0.389845 7.872588 21.944122 -v -0.389845 7.872590 11.897297 -v 0.000000 7.795043 21.944122 -v 0.000000 7.795043 11.897297 -v 0.000000 7.795043 21.944122 -v 0.389845 7.872588 21.944122 -v 0.389845 7.872590 11.897297 -v 0.720340 8.093417 21.944122 -v 0.720340 8.093417 11.890942 -v 0.814306 10.296812 19.285318 -v 0.814306 10.492231 19.285318 -v 0.893030 10.492231 19.372772 -v 0.941169 8.423912 11.883170 -v 0.941169 8.423912 21.944122 -v 0.359371 10.492231 19.285318 -v -0.814306 10.296812 19.285318 -v -0.359371 10.492231 19.285318 -v -0.167762 10.787156 19.556133 -v 0.167762 10.787156 19.556133 -v -0.167762 11.355708 19.816681 -v 0.167762 11.355708 19.816681 -v -0.814306 10.157009 0.372431 -v 0.814306 10.157009 0.372431 -v 0.814306 10.357646 0.372431 -v 1.014517 10.157009 0.196241 -v 1.014517 10.369081 0.196241 -v -0.143185 10.723700 -1.978914 -v 0.143185 10.723700 -1.978914 -v 0.143185 10.723700 -2.690542 -v 0.143185 11.207904 -2.300615 -v 0.143185 10.723700 -1.978914 -v 0.335502 11.207904 -2.300615 -v 1.014517 10.723700 -1.978914 -v 1.014517 11.207904 -2.300615 -v 1.014517 10.606321 -1.825947 -v -1.014517 10.606321 -1.825947 -v -1.014517 10.491154 -1.431074 -v 1.014517 10.491154 -1.431074 -v -0.814306 10.357646 0.372431 -v 0.814306 10.357646 0.372431 -v 1.014517 10.369081 0.196241 -v -1.014517 10.369081 0.196241 -v -1.171832 9.475289 11.897297 -v 0.632517 10.019365 11.897297 -v 0.720340 9.534097 11.876596 -v 0.000000 9.832471 11.897297 -v -0.654714 10.019365 11.897297 -v -0.720340 9.534097 11.896717 -v -1.171832 9.475289 11.897297 -v 0.941169 8.423912 11.883170 -v 0.720340 8.093417 11.890942 -v 0.389845 7.872590 11.897297 -v -0.941169 9.203602 11.897297 -v -0.389845 9.754926 11.897297 -v 0.389845 9.754926 11.891426 -v 0.941169 9.203602 11.872112 -v -1.524936 8.927025 1.935824 -v -1.526129 9.833411 2.105289 -v -1.526129 9.321173 2.105289 -v -1.526129 9.326169 2.612226 -v 0.335502 11.269897 -2.300615 -v 0.143185 11.269897 -2.300615 -v -0.167762 10.787156 19.556133 -v -0.167762 10.787156 20.190464 -v -0.167762 11.355708 20.190464 -v -0.359371 10.492231 20.190464 -v -0.814306 10.492231 20.190464 -v -0.814306 10.296812 20.190464 -v -0.893030 10.296812 20.116810 -v -0.893030 10.296812 19.372772 -v -0.893030 10.492231 20.116810 -v -0.893030 10.296812 19.372772 -v -0.893030 10.492231 19.372772 -v -0.814306 10.492231 19.285318 -v -0.143185 10.723700 -1.978914 -v -1.014517 10.723700 -1.978914 -v -0.814306 10.357646 0.372431 -v -0.335502 11.269897 -2.300615 -v -0.335502 11.207904 -2.300615 -v -0.143185 11.207904 -2.300615 -v 1.526129 9.833411 0.796846 -v -0.451145 8.974197 5.975873 -v -0.345291 9.132619 5.975873 -v -0.345291 9.132619 5.773401 -v -0.186870 9.238472 5.975873 -v -0.186870 9.238472 5.773401 -v 0.345291 8.442036 5.975873 -v 0.186870 8.336183 5.975873 -v 0.186870 8.336183 5.773401 -v 0.000000 9.275643 5.975873 -v 0.000000 9.275643 5.773401 -v 0.186870 9.238472 5.975873 -v 0.186870 9.238472 5.773401 -v 0.451145 8.600457 5.975873 -v 0.345291 8.442036 5.773401 -v 0.345291 9.132619 5.975873 -v 0.345291 9.132619 5.773401 -v 0.451145 8.974197 5.975873 -v 0.451145 8.974197 5.773401 -v 0.488316 8.787328 5.975873 -v 0.451145 8.600457 5.773401 -v 0.488316 8.787328 5.773401 -v -0.186870 8.336183 5.975873 -v -0.345291 8.442036 5.975873 -v -0.345291 8.442036 5.773401 -v -0.451145 8.600457 5.975873 -v -0.488316 8.787328 5.975873 -v -0.488316 8.787328 5.773401 -v 0.000000 8.299012 5.975873 -v -0.186870 8.336183 5.773401 -v 0.000000 8.299012 5.773401 -v -0.451145 8.974197 5.773401 -v -0.451145 8.600457 5.773401 -v -1.360494 8.796173 2.190356 -v -1.659889 8.796173 2.190356 -v -1.659889 8.927017 2.059511 -v -1.659889 9.139336 2.059511 -v -1.360494 9.139336 2.059511 -v -1.360494 8.927017 2.059511 -v -1.360494 9.270180 2.190356 -v -1.659889 9.270180 2.190356 -v -1.659889 9.270180 6.250484 -v -1.360494 8.796173 6.250484 -v -1.659889 8.796173 6.250484 -v -1.705540 9.326169 6.288157 -v -1.524936 8.927025 1.935824 -v -1.526129 7.184847 0.796846 -v -1.526129 8.752565 2.110282 -v -1.524936 9.151711 1.935824 -v 0.167762 10.787156 20.190464 -v -1.526129 7.184847 -0.511595 -v 0.947015 10.390595 21.944122 -v 1.705540 7.184847 3.413727 -v 0.408756 10.107763 -3.763226 -v 1.705540 7.967400 18.319260 -v 1.526129 9.833411 1.303785 -v -1.132077 10.212755 -2.753814 -v 1.705540 7.184847 -1.313097 -v 1.705540 7.184847 -0.004656 -v 1.526129 9.833411 2.612226 -v 1.526129 9.833411 3.920666 -v 1.526129 9.833411 -0.004656 -v 1.705540 7.184847 2.105287 -v 1.526043 7.184847 -2.765843 -v -1.705540 9.326169 3.413728 -v -1.333642 7.967400 19.492821 -v -1.705540 9.660696 2.105289 -v -1.333642 7.184845 21.944122 -v -0.813732 7.184845 16.849926 -v -1.526129 7.184847 -1.820036 -v -1.526129 9.326169 3.920666 -v -1.333642 8.402286 11.660704 -v 0.408756 10.019367 5.830760 -v -0.654714 10.019367 6.288157 -v 0.869641 10.390595 11.777046 -v 0.000000 7.795043 11.897297 -v 0.893030 10.296812 19.372772 -v -0.143185 10.723700 -2.690542 -v -1.526129 9.833411 2.612226 -v -0.167762 11.355708 19.816681 -v -0.359371 10.492231 19.285318 -v -0.893030 10.492231 19.372772 -v -0.143185 11.269897 -2.300615 -v -1.014517 11.207904 -2.300615 -v -1.360494 9.270180 6.250484 -vt 0.665882 0.347767 -vt 0.666023 0.347766 -vt 0.666162 0.347974 -vt 0.668422 0.348903 -vt 0.668420 0.348450 -vt 0.668128 0.348707 -vt 0.670331 0.347891 -vt 0.670113 0.347891 -vt 0.670112 0.348138 -vt 0.648961 0.347035 -vt 0.648963 0.347711 -vt 0.650088 0.347182 -vt 0.670330 0.348139 -vt 0.670330 0.348216 -vt 0.671351 0.348220 -vt 0.670330 0.348139 -vt 0.671351 0.348142 -vt 0.655673 0.344315 -vt 0.655725 0.344372 -vt 0.655911 0.344201 -vt 0.649593 0.340884 -vt 0.649645 0.341960 -vt 0.649646 0.340955 -vt 0.655911 0.344201 -vt 0.655725 0.344372 -vt 0.656134 0.344371 -vt 0.649941 0.340885 -vt 0.655073 0.340475 -vt 0.655070 0.339797 -vt 0.654996 0.339724 -vt 0.671575 0.327451 -vt 0.671356 0.327477 -vt 0.671982 0.327480 -vt 0.644693 0.340192 -vt 0.644385 0.340134 -vt 0.644557 0.340283 -vt 0.644700 0.340269 -vt 0.647509 0.341099 -vt 0.649593 0.340718 -vt 0.646875 0.340713 -vt 0.646368 0.340876 -vt 0.650439 0.347369 -vt 0.650243 0.347332 -vt 0.648903 0.346602 -vt 0.648902 0.346797 -vt 0.650571 0.346464 -vt 0.653087 0.342196 -vt 0.653087 0.342119 -vt 0.652263 0.341965 -vt 0.653089 0.340724 -vt 0.649942 0.340719 -vt 0.652265 0.340960 -vt 0.652957 0.336625 -vt 0.652061 0.336628 -vt 0.652064 0.337317 -vt 0.653168 0.336809 -vt 0.656866 0.340895 -vt 0.655346 0.340806 -vt 0.653970 0.340890 -vt 0.671253 0.338233 -vt 0.671472 0.338233 -vt 0.671470 0.337557 -vt 0.652046 0.346806 -vt 0.665497 0.338599 -vt 0.665663 0.338599 -vt 0.665663 0.338404 -vt 0.647507 0.341802 -vt 0.653089 0.340802 -vt 0.669772 0.341914 -vt 0.669364 0.341701 -vt 0.670181 0.341704 -vt 0.650766 0.346427 -vt 0.652276 0.346675 -vt 0.652808 0.346599 -vt 0.652882 0.346653 -vt 0.666531 0.348446 -vt 0.666675 0.348446 -vt 0.666674 0.348692 -vt 0.671544 0.335436 -vt 0.671154 0.335438 -vt 0.671154 0.335634 -vt 0.671512 0.335403 -vt 0.671191 0.335404 -vt 0.653306 0.342119 -vt 0.653308 0.340802 -vt 0.653969 0.341610 -vt 0.653969 0.341314 -vt 0.657096 0.340687 -vt 0.657251 0.340835 -vt 0.657446 0.340872 -vt 0.666338 0.341178 -vt 0.666344 0.341136 -vt 0.666141 0.341132 -vt 0.671982 0.327709 -vt 0.671281 0.327706 -vt 0.671277 0.328466 -vt 0.671424 0.328610 -vt 0.671831 0.328612 -vt 0.671979 0.328470 -vt 0.645308 0.342022 -vt 0.646366 0.342024 -vt 0.645309 0.341798 -vt 0.654435 0.342121 -vt 0.654435 0.342199 -vt 0.654781 0.342199 -vt 0.671983 0.325746 -vt 0.671796 0.325132 -vt 0.671793 0.326094 -vt 0.671982 0.325897 -vt 0.672220 0.326096 -vt 0.671777 0.334214 -vt 0.671776 0.334827 -vt 0.672010 0.334827 -vt 0.653873 0.340803 -vt 0.653654 0.340803 -vt 0.655346 0.340729 -vt 0.655001 0.340728 -vt 0.655001 0.340805 -vt 0.653654 0.340725 -vt 0.653308 0.340725 -vt 0.671788 0.332239 -vt 0.671789 0.331098 -vt 0.671711 0.331172 -vt 0.652553 0.348753 -vt 0.652553 0.349106 -vt 0.652681 0.349106 -vt 0.672085 0.331172 -vt 0.672007 0.331098 -vt 0.672006 0.332240 -vt 0.656870 0.341615 -vt 0.668193 0.332067 -vt 0.669156 0.332072 -vt 0.669169 0.329174 -vt 0.671795 0.322170 -vt 0.671872 0.322170 -vt 0.671867 0.321028 -vt 0.672090 0.322169 -vt 0.672168 0.322168 -vt 0.672163 0.321101 -vt 0.668481 0.329171 -vt 0.668206 0.329389 -vt 0.666338 0.332059 -vt 0.666535 0.332060 -vt 0.666549 0.329162 -vt 0.652436 0.348631 -vt 0.652336 0.348753 -vt 0.652553 0.348753 -vt 0.671870 0.322396 -vt 0.671793 0.322471 -vt 0.671795 0.323538 -vt 0.670269 0.345604 -vt 0.670270 0.345453 -vt 0.670505 0.345454 -vt 0.672166 0.322470 -vt 0.672088 0.322396 -vt 0.672090 0.323538 -vt 0.645310 0.341095 -vt 0.667770 0.332065 -vt 0.668193 0.332067 -vt 0.668206 0.329389 -vt 0.666535 0.332060 -vt 0.666770 0.332061 -vt 0.666784 0.329163 -vt 0.671056 0.346443 -vt 0.670979 0.346517 -vt 0.670974 0.347585 -vt 0.670666 0.345804 -vt 0.670503 0.345803 -vt 0.670504 0.345605 -vt 0.671270 0.347586 -vt 0.671347 0.347586 -vt 0.671352 0.346519 -vt 0.667782 0.329387 -vt 0.667509 0.329166 -vt 0.667770 0.332065 -vt 0.666770 0.332061 -vt 0.666922 0.332062 -vt 0.666935 0.329164 -vt 0.671361 0.326336 -vt 0.671283 0.326410 -vt 0.671279 0.327477 -vt 0.667157 0.332063 -vt 0.666922 0.332062 -vt 0.667157 0.332063 -vt 0.667170 0.329165 -vt 0.657272 0.345497 -vt 0.657273 0.344680 -vt 0.657191 0.344600 -vt 0.671575 0.327451 -vt 0.671652 0.327452 -vt 0.671656 0.326411 -vt 0.651028 0.346127 -vt 0.650922 0.346278 -vt 0.655755 0.344598 -vt 0.655674 0.344677 -vt 0.655673 0.345494 -vt 0.645310 0.340874 -vt 0.654782 0.340805 -vt 0.653652 0.342120 -vt 0.653968 0.342037 -vt 0.653873 0.340726 -vt 0.654218 0.340804 -vt 0.654219 0.340726 -vt 0.654437 0.340804 -vt 0.654782 0.340727 -vt 0.672010 0.334979 -vt 0.671775 0.334978 -vt 0.671775 0.335176 -vt 0.672199 0.335177 -vt 0.672223 0.325134 -vt 0.653871 0.342120 -vt 0.655345 0.342200 -vt 0.655345 0.342122 -vt 0.655000 0.342122 -vt 0.653652 0.342197 -vt 0.656756 0.344189 -vt 0.656833 0.344189 -vt 0.656833 0.344045 -vt 0.671877 0.347120 -vt 0.671954 0.347119 -vt 0.671951 0.346443 -vt 0.671581 0.347121 -vt 0.671659 0.347121 -vt 0.671655 0.346445 -vt 0.656460 0.344190 -vt 0.656538 0.344190 -vt 0.656537 0.343971 -vt 0.671606 0.348023 -vt 0.671952 0.348024 -vt 0.671954 0.347348 -vt 0.667304 0.332303 -vt 0.667016 0.335199 -vt 0.666328 0.335196 -vt 0.671469 0.337246 -vt 0.671546 0.337245 -vt 0.671544 0.337101 -vt 0.671472 0.338233 -vt 0.671549 0.338232 -vt 0.671547 0.337557 -vt 0.667291 0.334981 -vt 0.669169 0.332311 -vt 0.669156 0.335209 -vt 0.668958 0.335208 -vt 0.652436 0.349228 -vt 0.652591 0.349228 -vt 0.652553 0.349106 -vt 0.672007 0.329730 -vt 0.672007 0.330872 -vt 0.672084 0.330872 -vt 0.669596 0.345601 -vt 0.669357 0.345600 -vt 0.669358 0.345449 -vt 0.671711 0.329804 -vt 0.671711 0.330872 -vt 0.671788 0.330872 -vt 0.667731 0.332305 -vt 0.667718 0.334983 -vt 0.667291 0.334981 -vt 0.668972 0.332310 -vt 0.668958 0.335208 -vt 0.668720 0.335207 -vt 0.672007 0.332466 -vt 0.672006 0.333607 -vt 0.672083 0.333608 -vt 0.669356 0.345798 -vt 0.669196 0.345797 -vt 0.671787 0.333607 -vt 0.671789 0.332465 -vt 0.671711 0.332540 -vt 0.667991 0.335204 -vt 0.667718 0.334983 -vt 0.667731 0.332305 -vt 0.668734 0.332309 -vt 0.668720 0.335207 -vt 0.668569 0.335206 -vt 0.654781 0.342122 -vt 0.656868 0.342041 -vt 0.672089 0.323764 -vt 0.672090 0.324906 -vt 0.672168 0.324906 -vt 0.668344 0.332307 -vt 0.668331 0.335205 -vt 0.668582 0.332308 -vt 0.668569 0.335206 -vt 0.668331 0.335205 -vt 0.656869 0.342187 -vt 0.655687 0.342123 -vt 0.653870 0.342198 -vt 0.654216 0.342198 -vt 0.671872 0.324906 -vt 0.671870 0.323765 -vt 0.671793 0.323839 -vt 0.654216 0.342121 -vt 0.671659 0.347121 -vt 0.671877 0.347120 -vt 0.671874 0.346444 -vt 0.644214 0.339986 -vt 0.644362 0.339846 -vt 0.644193 0.339756 -vt 0.644615 0.340046 -vt 0.644334 0.339545 -vt 0.644175 0.339559 -vt 0.644193 0.339756 -vt 0.661765 0.343274 -vt 0.661774 0.343476 -vt 0.661938 0.343468 -vt 0.644761 0.345897 -vt 0.644761 0.345737 -vt 0.644408 0.345736 -vt 0.661774 0.343476 -vt 0.661779 0.343575 -vt 0.661938 0.343468 -vt 0.661664 0.343724 -vt 0.661914 0.343724 -vt 0.666088 0.341451 -vt 0.652408 0.344048 -vt 0.653077 0.344280 -vt 0.652920 0.344378 -vt 0.644352 0.339741 -vt 0.665748 0.341793 -vt 0.665706 0.341738 -vt 0.663936 0.343063 -vt 0.644408 0.345896 -vt 0.644302 0.345896 -vt 0.644079 0.346130 -vt 0.644077 0.347117 -vt 0.645080 0.347119 -vt 0.645082 0.346132 -vt 0.667545 0.348453 -vt 0.667839 0.348708 -vt 0.667838 0.348452 -vt 0.671547 0.336174 -vt 0.671546 0.336029 -vt 0.671385 0.336030 -vt 0.645949 0.348760 -vt 0.645922 0.348760 -vt 0.645922 0.348928 -vt 0.645519 0.348898 -vt 0.645812 0.348899 -vt 0.645813 0.348759 -vt 0.645520 0.348758 -vt 0.645812 0.348899 -vt 0.645839 0.348927 -vt 0.645839 0.348759 -vt 0.665999 0.338618 -vt 0.666027 0.338619 -vt 0.666027 0.338335 -vt 0.645922 0.348760 -vt 0.645839 0.348759 -vt 0.645839 0.348927 -vt 0.671398 0.339640 -vt 0.671245 0.339741 -vt 0.671571 0.340011 -vt 0.671500 0.339488 -vt 0.671536 0.339308 -vt 0.671066 0.339776 -vt 0.669561 0.343988 -vt 0.669414 0.343844 -vt 0.670116 0.343846 -vt 0.669417 0.343083 -vt 0.670343 0.343087 -vt 0.670119 0.343086 -vt 0.670101 0.342715 -vt 0.670239 0.342384 -vt 0.670344 0.341862 -vt 0.670103 0.342052 -vt 0.669440 0.342050 -vt 0.669200 0.341858 -vt 0.669301 0.342381 -vt 0.669196 0.343083 -vt 0.669438 0.342713 -vt 0.669338 0.342202 -vt 0.669592 0.341949 -vt 0.670204 0.342205 -vt 0.670203 0.342563 -vt 0.669948 0.342816 -vt 0.669769 0.342851 -vt 0.669589 0.342815 -vt 0.669336 0.342560 -vt 0.669968 0.343989 -vt 0.669951 0.341950 -vt 0.665497 0.338404 -vt 0.665149 0.338488 -vt 0.665150 0.338600 -vt 0.664984 0.338600 -vt 0.665150 0.338600 -vt 0.665149 0.338488 -vt 0.665458 0.338243 -vt 0.665110 0.338327 -vt 0.665149 0.338488 -vt 0.670113 0.347891 -vt 0.670113 0.347813 -vt 0.669767 0.347812 -vt 0.671352 0.347895 -vt 0.671352 0.347817 -vt 0.670331 0.347814 -vt 0.669766 0.348137 -vt 0.669766 0.348214 -vt 0.670112 0.348215 -vt 0.669766 0.348137 -vt 0.644857 0.345897 -vt 0.666027 0.338619 -vt 0.666110 0.338571 -vt 0.666110 0.338335 -vt 0.666316 0.338619 -vt 0.666233 0.338571 -vt 0.666316 0.338647 -vt 0.666316 0.338619 -vt 0.666027 0.338619 -vt 0.646157 0.348929 -vt 0.646158 0.348622 -vt 0.671549 0.336766 -vt 0.671548 0.336570 -vt 0.671158 0.336572 -vt 0.671517 0.336801 -vt 0.671159 0.336768 -vt 0.668127 0.348451 -vt 0.666344 0.338619 -vt 0.666344 0.338363 -vt 0.666317 0.338336 -vt 0.666317 0.338336 -vt 0.666234 0.338336 -vt 0.646280 0.348929 -vt 0.646516 0.348930 -vt 0.646490 0.348762 -vt 0.646626 0.348903 -vt 0.646626 0.348763 -vt 0.646599 0.348763 -vt 0.646517 0.348762 -vt 0.646516 0.348930 -vt 0.646599 0.348931 -vt 0.646517 0.348762 -vt 0.646626 0.348903 -vt 0.646918 0.348904 -vt 0.646626 0.348763 -vt 0.646919 0.348764 -vt 0.665884 0.348220 -vt 0.666228 0.348025 -vt 0.666399 0.348073 -vt 0.667547 0.348906 -vt 0.666529 0.348691 -vt 0.666756 0.348819 -vt 0.669247 0.347752 -vt 0.669249 0.348205 -vt 0.668969 0.347962 -vt 0.668904 0.348013 -vt 0.668734 0.348063 -vt 0.666446 0.348817 -vt 0.669107 0.347753 -vt 0.651009 0.348764 -vt 0.651047 0.348947 -vt 0.651082 0.348764 -vt 0.650945 0.349104 -vt 0.650893 0.349053 -vt 0.651150 0.348791 -vt 0.651202 0.348842 -vt 0.651013 0.349131 -vt 0.651231 0.348909 -vt 0.651231 0.348982 -vt 0.651086 0.349131 -vt 0.651204 0.349050 -vt 0.651153 0.349102 -vt 0.650942 0.348793 -vt 0.650864 0.348986 -vt 0.650891 0.348845 -vt 0.650864 0.348913 -vt 0.672001 0.336533 -vt 0.671992 0.338283 -vt 0.672197 0.338284 -vt 0.672049 0.338339 -vt 0.672140 0.338340 -vt 0.665496 0.328592 -vt 0.665496 0.328721 -vt 0.665700 0.328722 -vt 0.649982 0.347032 -vt 0.671351 0.348142 -vt 0.671352 0.347895 -vt 0.655858 0.344144 -vt 0.654727 0.340476 -vt 0.654996 0.339627 -vt 0.665497 0.338404 -vt 0.671545 0.335632 -vt 0.672221 0.325898 -vt 0.672200 0.334214 -vt 0.671711 0.332239 -vt 0.652681 0.348753 -vt 0.672084 0.332240 -vt 0.656871 0.341319 -vt 0.671790 0.321103 -vt 0.672085 0.321027 -vt 0.666351 0.329161 -vt 0.652591 0.348631 -vt 0.671872 0.323538 -vt 0.672168 0.323538 -vt 0.667782 0.329387 -vt 0.666549 0.329162 -vt 0.671051 0.347585 -vt 0.671275 0.346444 -vt 0.666784 0.329163 -vt 0.671356 0.327477 -vt 0.667170 0.329165 -vt 0.666935 0.329164 -vt 0.657189 0.345576 -vt 0.671579 0.326337 -vt 0.655754 0.345574 -vt 0.654437 0.340727 -vt 0.672221 0.325747 -vt 0.654999 0.342199 -vt 0.653306 0.342197 -vt 0.656755 0.343970 -vt 0.671874 0.346444 -vt 0.671578 0.346445 -vt 0.656460 0.344046 -vt 0.671609 0.347347 -vt 0.666342 0.332298 -vt 0.671466 0.337028 -vt 0.671470 0.337557 -vt 0.646872 0.342185 -vt 0.668972 0.332310 -vt 0.652336 0.349106 -vt 0.672085 0.329805 -vt 0.669596 0.345450 -vt 0.671789 0.329730 -vt 0.667304 0.332303 -vt 0.668734 0.332309 -vt 0.672085 0.332540 -vt 0.671710 0.333607 -vt 0.668582 0.332308 -vt 0.672166 0.323838 -vt 0.668344 0.332307 -vt 0.655687 0.342193 -vt 0.671795 0.324906 -vt 0.652075 0.340487 -vt 0.653379 0.340482 -vt 0.652073 0.339798 -vt 0.671655 0.346445 -vt 0.644352 0.339741 -vt 0.661929 0.343266 -vt 0.666317 0.341361 -vt 0.663978 0.343119 -vt 0.671386 0.336174 -vt 0.645813 0.348759 -vt 0.665999 0.338362 -vt 0.645922 0.348928 -vt 0.665497 0.338599 -vt 0.664984 0.338489 -vt 0.665497 0.338404 -vt 0.669767 0.347890 -vt 0.670331 0.347891 -vt 0.670112 0.348138 -vt 0.669767 0.347890 -vt 0.666027 0.338335 -vt 0.666027 0.338646 -vt 0.671197 0.336802 -vt 0.666316 0.338619 -vt 0.646282 0.348623 -vt 0.646599 0.348931 -vt 0.646599 0.348763 -vt 0.672205 0.336534 -vt 0.665701 0.328592 -vt 0.645130 0.340230 -vt 0.645115 0.340070 -vt 0.644939 0.340169 -vt 0.644925 0.340018 -vt 0.653589 0.346722 -vt 0.653589 0.346671 -vt 0.654138 0.346662 -vt 0.665807 0.340688 -vt 0.656870 0.339398 -vt 0.655850 0.339403 -vt 0.655851 0.339547 -vt 0.669550 0.348136 -vt 0.669549 0.347891 -vt 0.669475 0.347964 -vt 0.672007 0.330872 -vt 0.672007 0.329730 -vt 0.671789 0.329730 -vt 0.654722 0.339409 -vt 0.671579 0.326337 -vt 0.671361 0.326336 -vt 0.653268 0.346667 -vt 0.645840 0.346789 -vt 0.648555 0.346796 -vt 0.648555 0.346685 -vt 0.653368 0.337690 -vt 0.653364 0.336650 -vt 0.645841 0.346452 -vt 0.655971 0.340807 -vt 0.656866 0.340731 -vt 0.655971 0.340730 -vt 0.671250 0.337251 -vt 0.671173 0.337252 -vt 0.671174 0.337355 -vt 0.671175 0.337452 -vt 0.671176 0.337555 -vt 0.671254 0.337557 -vt 0.670598 0.339307 -vt 0.670569 0.339021 -vt 0.670567 0.340009 -vt 0.668033 0.348210 -vt 0.668032 0.348119 -vt 0.671272 0.335785 -vt 0.671385 0.336030 -vt 0.671546 0.336029 -vt 0.671545 0.335632 -vt 0.671154 0.335634 -vt 0.654284 0.346628 -vt 0.654463 0.346686 -vt 0.654139 0.346714 -vt 0.343293 0.494352 -vt 0.403663 0.495033 -vt 0.424011 0.491967 -vt 0.665656 0.340670 -vt 0.665851 0.340483 -vt 0.665756 0.340431 -vt 0.664125 0.338873 -vt 0.663934 0.339073 -vt 0.665576 0.340641 -vt 0.654003 0.344111 -vt 0.654328 0.344094 -vt 0.654215 0.344297 -vt 0.405218 0.475819 -vt 0.311194 0.474745 -vt 0.651779 0.345198 -vt 0.651935 0.345050 -vt 0.652048 0.344354 -vt 0.651583 0.345233 -vt 0.662656 0.340850 -vt 0.659345 0.340602 -vt 0.659296 0.340678 -vt 0.424375 0.496265 -vt 0.345807 0.496601 -vt 0.345855 0.507785 -vt 0.646508 0.344057 -vt 0.649684 0.344093 -vt 0.649669 0.344043 -vt 0.669763 0.344216 -vt 0.669762 0.344374 -vt 0.669531 0.344215 -vt 0.665873 0.340511 -vt 0.669360 0.345109 -vt 0.665821 0.341739 -vt 0.672006 0.333607 -vt 0.672007 0.332466 -vt 0.671789 0.332465 -vt 0.654433 0.338957 -vt 0.656867 0.338944 -vt 0.656669 0.338713 -vt 0.656667 0.338361 -vt 0.654429 0.338141 -vt 0.656864 0.338360 -vt 0.656863 0.338096 -vt 0.653400 0.344098 -vt 0.653390 0.344296 -vt 0.652050 0.344171 -vt 0.649802 0.344145 -vt 0.656863 0.337912 -vt 0.654402 0.338030 -vt 0.656866 0.338712 -vt 0.655067 0.339300 -vt 0.655286 0.339299 -vt 0.654407 0.339067 -vt 0.655849 0.339296 -vt 0.656869 0.339171 -vt 0.655631 0.339297 -vt 0.652632 0.338147 -vt 0.652938 0.338146 -vt 0.652967 0.338035 -vt 0.662503 0.338903 -vt 0.662477 0.339733 -vt 0.662538 0.339781 -vt 0.411117 0.477267 -vt 0.411370 0.492239 -vt 0.424354 0.492076 -vt 0.655278 0.336619 -vt 0.655279 0.337686 -vt 0.655624 0.337686 -vt 0.662902 0.338878 -vt 0.662914 0.339780 -vt 0.662981 0.339739 -vt 0.645309 0.346450 -vt 0.645308 0.346788 -vt 0.666773 0.346076 -vt 0.666773 0.346282 -vt 0.668969 0.346283 -vt 0.652633 0.338379 -vt 0.652788 0.338378 -vt 0.302821 0.490584 -vt 0.410043 0.495106 -vt 0.652336 0.349106 -vt 0.652553 0.349106 -vt 0.652553 0.348753 -vt 0.661163 0.348102 -vt 0.661163 0.347939 -vt 0.655926 0.347949 -vt 0.424262 0.469977 -vt 0.405287 0.469761 -vt 0.671872 0.323538 -vt 0.672090 0.323538 -vt 0.672088 0.322396 -vt 0.661578 0.348101 -vt 0.661577 0.347938 -vt 0.661362 0.347939 -vt 0.661362 0.348102 -vt 0.662153 0.348100 -vt 0.662310 0.347937 -vt 0.661761 0.347938 -vt 0.670672 0.344629 -vt 0.670508 0.344764 -vt 0.670115 0.344376 -vt 0.669789 0.344760 -vt 0.652789 0.338731 -vt 0.652941 0.338962 -vt 0.670084 0.344762 -vt 0.670082 0.345113 -vt 0.670506 0.345115 -vt 0.670670 0.345116 -vt 0.652372 0.337694 -vt 0.670348 0.344219 -vt 0.655279 0.337793 -vt 0.656863 0.337685 -vt 0.655843 0.337686 -vt 0.655843 0.337793 -vt 0.655755 0.344598 -vt 0.655754 0.345574 -vt 0.657189 0.345576 -vt 0.653587 0.337690 -vt 0.653932 0.337689 -vt 0.653928 0.336621 -vt 0.654151 0.337688 -vt 0.654496 0.337687 -vt 0.654493 0.336620 -vt 0.671872 0.322170 -vt 0.672090 0.322169 -vt 0.672085 0.321027 -vt 0.652049 0.345739 -vt 0.651029 0.345736 -vt 0.662560 0.338873 -vt 0.666774 0.345670 -vt 0.668969 0.346078 -vt 0.666773 0.347043 -vt 0.668969 0.347044 -vt 0.411093 0.495895 -vt 0.423965 0.496042 -vt 0.646451 0.344107 -vt 0.661762 0.348101 -vt 0.671788 0.332239 -vt 0.672006 0.332240 -vt 0.672007 0.331098 -vt 0.670079 0.345801 -vt 0.669784 0.345800 -vt 0.669787 0.345111 -vt 0.670116 0.344218 -vt 0.671051 0.347585 -vt 0.671270 0.347586 -vt 0.671275 0.346444 -vt 0.654713 0.336619 -vt 0.654715 0.337686 -vt 0.655060 0.337686 -vt 0.655624 0.337793 -vt 0.653933 0.337796 -vt 0.653587 0.337797 -vt 0.653369 0.337798 -vt 0.654151 0.337795 -vt 0.655060 0.337793 -vt 0.654715 0.337794 -vt 0.656181 0.344310 -vt 0.655958 0.344139 -vt 0.655911 0.344201 -vt 0.652635 0.338964 -vt 0.652378 0.339418 -vt 0.652971 0.339073 -vt 0.655170 0.347691 -vt 0.655169 0.347353 -vt 0.653593 0.339306 -vt 0.653939 0.339305 -vt 0.653375 0.339415 -vt 0.653374 0.339307 -vt 0.655631 0.339404 -vt 0.655286 0.339406 -vt 0.655287 0.339550 -vt 0.655701 0.347689 -vt 0.668970 0.345671 -vt 0.668970 0.345465 -vt 0.652634 0.338732 -vt 0.403381 0.492993 -vt 0.410153 0.492980 -vt 0.671176 0.338233 -vt 0.671253 0.338233 -vt 0.671248 0.337030 -vt 0.645543 0.340191 -vt 0.650254 0.339752 -vt 0.650742 0.339545 -vt 0.405500 0.512252 -vt 0.405526 0.518299 -vt 0.655068 0.339554 -vt 0.655068 0.339408 -vt 0.645344 0.340210 -vt 0.645329 0.340050 -vt 0.645528 0.340032 -vt 0.653939 0.339413 -vt 0.669362 0.344758 -vt 0.669202 0.344621 -vt 0.654722 0.339302 -vt 0.669200 0.345108 -vt 0.653593 0.339414 -vt 0.653597 0.340482 -vt 0.653943 0.340480 -vt 0.654158 0.339412 -vt 0.654162 0.340479 -vt 0.654508 0.340478 -vt 0.654157 0.339304 -vt 0.654504 0.339410 -vt 0.654503 0.339303 -vt 0.666774 0.345464 -vt 0.668970 0.344705 -vt 0.672090 0.324906 -vt 0.672089 0.323764 -vt 0.671870 0.323765 -vt 0.659341 0.339758 -vt 0.659342 0.339807 -vt 0.644946 0.340247 -vt 0.656755 0.343970 -vt 0.656537 0.343971 -vt 0.656538 0.344190 -vt 0.652042 0.344901 -vt 0.645109 0.340001 -vt 0.665779 0.341683 -vt 0.665706 0.341738 -vt 0.661666 0.343279 -vt 0.661676 0.343481 -vt 0.661774 0.343476 -vt 0.653725 0.344114 -vt 0.653832 0.344119 -vt 0.653822 0.344318 -vt 0.654014 0.344308 -vt 0.654333 0.346558 -vt 0.655311 0.344043 -vt 0.655447 0.346648 -vt 0.661438 0.342326 -vt 0.661436 0.342143 -vt 0.657096 0.342143 -vt 0.661436 0.342509 -vt 0.657096 0.342326 -vt 0.661430 0.342692 -vt 0.657096 0.342509 -vt 0.661427 0.342875 -vt 0.657096 0.342692 -vt 0.666250 0.348901 -vt 0.666250 0.348816 -vt 0.657096 0.342875 -vt 0.657096 0.343058 -vt 0.661427 0.343058 -vt 0.657096 0.343240 -vt 0.661427 0.343240 -vt 0.666203 0.348900 -vt 0.666204 0.348816 -vt 0.665882 0.348899 -vt 0.665883 0.348814 -vt 0.661427 0.343423 -vt 0.657096 0.343423 -vt 0.657096 0.343606 -vt 0.661427 0.343606 -vt 0.657096 0.343789 -vt 0.661427 0.343789 -vt 0.657096 0.343972 -vt 0.661427 0.343972 -vt 0.657096 0.344155 -vt 0.661427 0.344155 -vt 0.657096 0.344338 -vt 0.661427 0.344338 -vt 0.657096 0.341411 -vt 0.657096 0.341594 -vt 0.661427 0.341594 -vt 0.657096 0.341777 -vt 0.661430 0.341777 -vt 0.649012 0.349171 -vt 0.649012 0.349086 -vt 0.648961 0.349086 -vt 0.661433 0.341960 -vt 0.657096 0.341960 -vt 0.649208 0.349086 -vt 0.649714 0.349170 -vt 0.649518 0.349086 -vt 0.649435 0.348914 -vt 0.649290 0.348914 -vt 0.649435 0.348644 -vt 0.649290 0.348644 -vt 0.667918 0.348211 -vt 0.667216 0.348214 -vt 0.667216 0.348127 -vt 0.667101 0.348214 -vt 0.667100 0.348123 -vt 0.646282 0.348623 -vt 0.646158 0.348622 -vt 0.646157 0.348929 -vt 0.656458 0.342453 -vt 0.656457 0.342704 -vt 0.656541 0.342453 -vt 0.656833 0.342705 -vt 0.656833 0.342454 -vt 0.656832 0.342788 -vt 0.655958 0.342785 -vt 0.655957 0.342962 -vt 0.656832 0.342965 -vt 0.656041 0.343742 -vt 0.656743 0.343745 -vt 0.656829 0.343669 -vt 0.655955 0.343666 -vt 0.653267 0.346719 -vt 0.670795 0.338787 -vt 0.670736 0.338975 -vt 0.671068 0.338839 -vt 0.671350 0.338788 -vt 0.671399 0.338977 -vt 0.671573 0.339023 -vt 0.670633 0.339486 -vt 0.670735 0.339638 -vt 0.670887 0.339740 -vt 0.671500 0.339129 -vt 0.671247 0.338875 -vt 0.670888 0.338874 -vt 0.670634 0.339127 -vt 0.671253 0.337451 -vt 0.671248 0.337030 -vt 0.671250 0.337251 -vt 0.671469 0.337246 -vt 0.656541 0.342427 -vt 0.656458 0.342426 -vt 0.671274 0.336420 -vt 0.671548 0.336419 -vt 0.671547 0.336174 -vt 0.671548 0.336570 -vt 0.666952 0.348820 -vt 0.666952 0.348904 -vt 0.666998 0.348905 -vt 0.667319 0.348906 -vt 0.666998 0.348820 -vt 0.649765 0.349170 -vt 0.649765 0.349086 -vt 0.649714 0.349086 -vt 0.656334 0.342703 -vt 0.655958 0.342702 -vt 0.667918 0.348124 -vt 0.656252 0.342426 -vt 0.656251 0.342452 -vt 0.656334 0.342453 -vt 0.654496 0.337794 -vt 0.651009 0.348764 -vt 0.651082 0.348764 -vt 0.651103 0.348667 -vt 0.651150 0.348791 -vt 0.651206 0.348710 -vt 0.651013 0.349131 -vt 0.650945 0.349104 -vt 0.650889 0.349185 -vt 0.651202 0.348842 -vt 0.651285 0.348789 -vt 0.651231 0.348909 -vt 0.651328 0.348892 -vt 0.651086 0.349131 -vt 0.650992 0.349228 -vt 0.651231 0.348982 -vt 0.651328 0.349003 -vt 0.651204 0.349050 -vt 0.651285 0.349106 -vt 0.651153 0.349102 -vt 0.651103 0.349228 -vt 0.651206 0.349185 -vt 0.650864 0.348986 -vt 0.650864 0.348913 -vt 0.650767 0.348892 -vt 0.650891 0.348845 -vt 0.650942 0.348793 -vt 0.650889 0.348710 -vt 0.650893 0.349053 -vt 0.650767 0.349003 -vt 0.650810 0.349106 -vt 0.650992 0.348667 -vt 0.650810 0.348789 -vt 0.663495 0.328582 -vt 0.663495 0.328711 -vt 0.663575 0.328712 -vt 0.663666 0.328712 -vt 0.663667 0.328583 -vt 0.663575 0.328583 -vt 0.663746 0.328583 -vt 0.663746 0.328713 -vt 0.665496 0.328721 -vt 0.661745 0.328574 -vt 0.661745 0.328703 -vt 0.656871 0.339542 -vt 0.669475 0.348061 -vt 0.671788 0.330872 -vt 0.671254 0.337557 -vt 0.671252 0.337354 -vt 0.671545 0.335784 -vt 0.671787 0.333607 -vt 0.424233 0.477149 -vt 0.655624 0.336619 -vt 0.662967 0.338908 -vt 0.652336 0.348753 -vt 0.656433 0.348111 -vt 0.671870 0.322396 -vt 0.657191 0.344600 -vt 0.653583 0.336623 -vt 0.654148 0.336621 -vt 0.671867 0.321028 -vt 0.671789 0.331098 -vt 0.671056 0.346443 -vt 0.655059 0.336619 -vt 0.656134 0.344371 -vt 0.655632 0.339548 -vt 0.655699 0.347352 -vt 0.659343 0.339981 -vt 0.671171 0.337105 -vt 0.424469 0.518218 -vt 0.666774 0.344703 -vt 0.671872 0.324906 -vt 0.656756 0.344189 -vt 0.665748 0.341793 -vt 0.661765 0.343274 -vt 0.653715 0.344312 -vt 0.659330 0.338958 -vt 0.661427 0.341411 -vt 0.648961 0.349171 -vt 0.646280 0.348929 -vt 0.671466 0.337028 -vt 0.671386 0.336174 -vt 0.671158 0.336572 -vt 0.667319 0.348822 -vt 0.656334 0.342426 -vt 0.655959 0.342451 -vt 0.665496 0.328592 -vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 1.0000 -0.0001 -vn -1.0000 0.0000 0.0005 -vn -1.0000 0.0000 0.0002 -vn 0.0000 -0.7793 -0.6266 -vn 0.0000 -1.0000 0.0000 -vn 1.0000 0.0001 -0.0001 -vn 1.0000 -0.0005 -0.0001 -vn 0.0000 0.0000 1.0000 -vn 0.0000 1.0000 0.0000 -vn 0.0000 0.2954 -0.9554 -vn 1.0000 0.0000 -0.0001 -vn -1.0000 0.0000 -0.0001 -vn 0.0000 -1.0000 -0.0001 -vn -1.0000 0.0001 -0.0001 -vn 0.0000 0.3579 0.9338 -vn 0.0000 0.3242 -0.9460 -vn 0.0000 -0.9724 -0.2331 -vn 0.0000 0.6488 0.7610 -vn -0.0000 0.6112 0.7915 -vn -0.0000 0.3594 0.9332 -vn -0.0000 0.3979 0.9174 -vn 0.3944 -0.9189 0.0000 -vn -0.2584 -0.9660 0.0000 -vn -0.0544 0.0347 -0.9979 -vn -0.9202 0.3915 0.0000 -vn -0.9202 0.3914 0.0000 -vn -1.0000 -0.0000 -0.0023 -vn -1.0000 -0.0001 -0.0070 -vn -0.7948 0.6069 -0.0000 -vn -0.8837 0.4681 0.0000 -vn -0.9815 0.1914 -0.0000 -vn 0.9202 0.3914 0.0000 -vn 0.7785 0.6277 -0.0000 -vn 0.8716 -0.4902 0.0001 -vn 0.9946 0.0000 0.1036 -vn 0.9501 0.3120 -0.0000 -vn 0.9922 0.0000 0.1244 -vn 0.0000 -0.9849 0.1730 -vn -0.0000 -0.8848 0.4659 -vn -0.0000 -0.5054 0.8629 -vn 0.0001 -0.2527 0.9675 -vn 0.0000 -0.3827 0.9239 -vn -0.0001 0.5055 0.8628 -vn -0.0151 0.3827 0.9237 -vn -0.0075 0.3820 0.9241 -vn -0.0098 -0.0134 -0.9999 -vn -0.0135 0.0030 -0.9999 -vn -0.0078 -0.0088 -0.9999 -vn -0.9112 -0.0000 0.4119 -vn 0.9588 0.2841 -0.0000 -vn 0.8386 0.5448 0.0000 -vn -0.8061 -0.3082 -0.5053 -vn -0.8143 -0.5805 -0.0013 -vn -0.5167 -0.8561 0.0000 -vn 0.6939 0.7201 -0.0000 -vn 0.4341 0.8971 0.0825 -vn 0.9006 0.4347 0.0001 -vn -0.6892 0.1308 -0.7126 -vn -0.9536 0.0970 -0.2850 -vn -0.9956 0.0942 -0.0000 -vn -0.8233 -0.5676 0.0006 -vn -0.9600 -0.2555 -0.1143 -vn -0.3908 -0.9205 0.0012 -vn -0.9277 -0.3732 0.0009 -vn -0.8233 -0.5676 0.0008 -vn 0.8835 0.4684 0.0000 -vn -0.9987 0.0005 0.0512 -vn -1.0000 0.0021 0.0000 -vn -0.9198 0.3923 -0.0002 -vn -0.8535 0.5212 0.0001 -vn 0.1239 0.9740 0.1894 -vn 0.4932 0.8699 -0.0000 -vn -0.0000 0.9039 -0.4278 -vn 0.0000 0.8020 -0.5974 -vn -0.2691 0.9151 -0.3004 -vn -0.1559 0.0685 -0.9854 -vn 0.0000 0.2196 -0.9756 -vn 0.0000 0.2883 -0.9575 -vn -0.8561 0.5167 0.0000 -vn -0.2979 0.9546 0.0000 -vn -0.2469 0.9690 0.0000 -vn 0.0544 0.9985 0.0027 -vn 0.3979 0.9174 0.0029 -vn 0.1126 0.9936 0.0000 -vn 0.4235 0.9059 0.0029 -vn 0.9695 -0.2451 0.0000 -vn 0.8716 -0.4902 0.0000 -vn 0.4233 0.9060 0.0029 -vn 0.6497 0.7602 -0.0000 -vn -0.8837 0.4680 0.0000 -vn -0.6017 0.7987 -0.0000 -vn -0.8561 0.5168 0.0000 -vn -0.6934 0.7206 0.0000 -vn -0.8186 0.5743 0.0000 -vn 0.2692 0.9150 -0.3004 -vn 0.1831 0.9831 -0.0000 -vn 0.5496 0.8354 0.0000 -vn -0.2622 0.9451 0.1950 -vn -0.4802 0.8651 0.1452 -vn 0.3027 0.9480 -0.0986 -vn -0.3083 0.9299 -0.2006 -vn -0.2470 0.9690 0.0000 -vn 0.3052 0.9313 -0.1990 -vn -0.3051 0.9470 -0.1000 -vn 0.9878 0.0000 0.1556 -vn 0.4972 -0.8676 0.0000 -vn 0.9665 -0.2568 0.0000 -vn 0.8580 -0.5136 0.0000 -vn 0.0000 0.9980 0.0635 -vn 0.0000 0.9919 0.1269 -vn 0.8837 0.4681 0.0000 -vn 0.0000 0.6730 0.7397 -vn 0.0000 0.6239 0.7815 -vn 0.0000 0.8374 0.5466 -vn 0.0000 0.9284 0.3717 -vn 0.0000 0.1989 0.9800 -vn 0.0033 0.6337 -0.7736 -vn 0.0022 0.6323 -0.7747 -vn -0.0001 0.7210 -0.6930 -vn -0.0000 0.6324 -0.7747 -vn -0.2468 0.9691 0.0000 -vn 0.0000 0.6332 -0.7740 -vn -0.0001 0.4392 -0.8984 -vn 0.0028 0.4406 -0.8977 -vn 0.8561 0.5169 -0.0001 -vn 0.2691 0.9151 -0.3004 -vn 0.7948 0.6069 -0.0000 -vn 0.8561 0.5168 0.0000 -vn 0.9660 0.2584 0.0000 -vn 0.8561 0.5168 -0.0002 -vn 0.8561 0.5168 -0.0001 -vn -0.3763 -0.9265 0.0000 -vn 0.2486 -0.9686 0.0000 -vn 0.3737 0.9275 -0.0000 -vn -0.0001 0.2196 -0.9756 -vn 0.8837 0.4680 0.0000 -vn 0.7785 0.6276 -0.0000 -vn 0.9202 0.3915 0.0000 -vn 0.0000 -0.7520 0.6592 -vn -0.8561 0.5169 -0.0001 -vn -0.6262 0.7797 -0.0000 -vn -0.9883 0.0000 0.1528 -vn -0.9881 0.0006 0.1536 -vn -0.8580 -0.5136 -0.0000 -vn -0.0139 -0.0016 0.9999 -vn 0.0000 -0.0032 1.0000 -vn -0.9881 0.0014 0.1536 -vn 0.0000 0.9284 0.3716 -vn -0.0000 0.8374 0.5465 -vn -0.0022 0.6324 -0.7746 -vn -0.0027 0.6339 -0.7734 -vn -0.0015 0.4406 -0.8977 -vn -0.9660 0.2584 -0.0000 -vn -0.9665 -0.2568 -0.0000 -vn -0.3839 0.9234 0.0000 -vn -0.6994 0.7147 0.0000 -vn 0.0000 0.5725 0.8199 -vn 0.0000 0.5724 0.8200 -vn 0.0000 0.2878 -0.9577 -vn 0.0000 0.5513 -0.8343 -vn -0.3908 -0.9205 0.0007 -vn -0.3902 -0.9207 0.0000 -vn -0.9601 -0.2554 -0.1143 -vn -0.9472 -0.3207 0.0000 -vn -0.9978 0.0661 -0.0000 -vn -0.9978 -0.0662 0.0000 -vn -0.7523 -0.6588 -0.0000 -vn -0.8965 -0.4430 -0.0000 -vn -0.4430 -0.8965 0.0000 -vn -0.6588 -0.7523 0.0000 -vn -0.0661 -0.9978 0.0000 -vn -0.3207 -0.9472 0.0000 -vn 0.1802 -0.0001 0.9836 -vn 0.4855 -0.0001 0.8742 -vn 0.0662 -0.9978 0.0000 -vn 0.3827 -0.9239 0.0000 -vn 0.3828 -0.9238 0.0000 -vn 0.7071 -0.7071 0.0000 -vn 0.8510 -0.0001 0.5252 -vn 0.9649 0.0000 0.2626 -vn 0.9715 0.0000 -0.2369 -vn 0.8806 -0.0000 -0.4739 -vn 0.8965 -0.4430 -0.0000 -vn 0.9472 -0.3207 0.0000 -vn 0.9978 0.0662 -0.0000 -vn 0.9978 -0.0662 0.0000 -vn 0.8965 0.4430 -0.0000 -vn 0.9472 0.3207 0.0000 -vn 0.6588 0.7523 0.0000 -vn 0.7523 0.6588 0.0001 -vn 0.3207 0.9472 0.0000 -vn 0.4430 0.8965 0.0000 -vn -0.0662 0.9978 0.0000 -vn 0.0661 0.9978 0.0000 -vn -0.0661 0.9978 0.0000 -vn -0.3827 0.9239 0.0000 -vn -0.3829 0.9238 0.0000 -vn -0.7071 0.7071 0.0000 -vn 0.4068 0.0000 -0.9135 -vn -0.8965 0.4430 0.0000 -vn -0.9472 0.3207 0.0000 -vn 0.0000 0.2895 -0.9572 -vn -0.3241 -0.0000 -0.9460 -vn -0.0000 0.2399 -0.9708 -vn 0.0000 0.5962 -0.8028 -vn -0.0000 0.5087 -0.8609 -vn 0.0000 0.4166 -0.9091 -vn -0.2336 0.0000 0.9723 -vn 0.3531 0.0000 0.9356 -vn 0.9112 -0.0000 0.4119 -vn 0.0000 0.8520 0.5235 -vn -0.0003 0.7892 0.6142 -vn 0.0000 0.1917 0.9814 -vn -0.0000 0.7892 0.6142 -vn 0.0000 0.4287 0.9035 -vn 0.0000 0.6411 0.7674 -vn 0.0000 0.5534 0.8329 -vn 0.0000 0.8920 0.4521 -vn 0.0000 0.8459 0.5334 -vn 0.0000 0.9771 0.2126 -vn 0.0000 0.9896 0.1439 -vn 0.0000 0.9979 0.0648 -vn 0.0000 0.9977 0.0682 -vn 0.0000 0.9974 0.0716 -vn 0.9695 -0.2451 -0.0001 -vn -0.0111 0.0273 -0.9996 -vn -0.0194 0.0258 -0.9995 -vn -0.0030 0.0101 -0.9999 -vn 0.0000 0.0008 -1.0000 -vn -0.0005 0.0005 -1.0000 -vn -0.0009 -0.0000 -1.0000 -vn -0.0148 -0.0140 -0.9998 -vn -0.0127 -0.0131 -0.9998 -vn -0.0055 -0.0061 -1.0000 -vn -0.0004 -0.0004 -1.0000 -vn 0.0004 0.0004 -1.0000 -vn -0.0138 0.0348 -0.9993 -vn -0.0152 -0.0072 -0.9999 -vn 0.0000 0.2527 0.9675 -vn -0.9588 0.2841 -0.0000 -vn -0.8386 0.5448 0.0000 -vn -0.4855 0.0000 0.8742 -vn -0.2428 0.0000 0.9701 -vn -0.8510 0.0000 0.5252 -vn -0.9715 0.0001 -0.2369 -vn -0.9649 0.0000 0.2626 -vn -0.9715 0.0000 -0.2370 -vn -0.8806 -0.0000 -0.4739 -vn -0.4068 0.0000 -0.9135 -vn 0.0000 0.8521 0.5234 -vn -0.4670 -0.0000 0.8842 -vn -0.6588 0.7523 0.0000 -vn -0.7523 0.6588 0.0000 -vn -0.3207 0.9472 0.0000 -vn -0.4430 0.8965 0.0000 -vn 0.6588 -0.7523 0.0000 -vn 0.3207 -0.9472 0.0000 -vn 0.4430 -0.8965 0.0000 -vn 0.7523 -0.6588 0.0000 -vn 0.7523 0.6588 0.0000 -vn 0.9978 -0.0661 0.0000 -vn 0.9978 0.0661 0.0000 -vn -0.9978 -0.0661 0.0000 -vn 0.0661 -0.9978 0.0000 -vn -0.0001 -0.8629 -0.5054 -vn -0.0000 -0.9675 -0.2527 -vn -0.0001 -0.5054 -0.8629 -vn -0.0000 0.2527 -0.9675 -vn 0.0000 0.5054 -0.8629 -vn 0.0000 -0.2527 -0.9675 -vn 0.0000 0.9675 -0.2527 -vn 0.0001 0.8629 -0.5054 -vn -1.0000 0.0000 -0.0068 -vn -1.0000 0.0000 -0.0028 -vn 0.0000 -0.3821 0.9241 -vn 0.3738 0.9275 -0.0000 -vn 0.0001 0.7210 -0.6930 -vn 0.7948 0.6069 -0.0002 -vn -0.6262 0.7797 -0.0001 -vn 0.0000 -0.9849 0.1731 -vn -0.9987 0.0000 0.0512 -vn -1.0000 0.0026 0.0000 -vn 0.0662 0.9978 -0.0000 -vn 0.9715 0.0000 -0.2370 -s off -f 61/61/19 62/62/19 63/63/19 -f 64/64/20 65/65/20 66/66/20 -f 67/67/21 68/68/21 69/69/21 -f 70/70/21 71/71/21 72/72/21 -f 73/73/22 74/74/22 75/75/22 -f 67/67/23 76/76/24 77/77/23 -f 78/78/25 79/79/25 80/80/25 -f 81/81/26 82/82/26 83/83/26 -f 84/84/27 85/85/27 86/86/27 -f 81/81/26 83/83/26 87/87/26 -f 88/88/21 89/89/21 90/90/21 -f 91/91/28 92/92/28 93/93/28 -f 94/94/29 95/95/29 96/96/29 -f 96/96/29 97/97/29 94/94/29 -f 98/98/26 81/81/26 99/99/26 -f 100/100/26 101/101/26 98/98/26 -f 71/71/21 102/102/21 103/103/21 -f 104/104/19 105/105/19 106/106/19 -f 107/107/26 108/108/26 109/109/26 -f 110/110/26 111/111/26 112/112/26 -f 100/100/26 98/98/26 99/99/26 -f 113/113/19 114/114/19 115/115/19 -f 115/115/19 116/116/19 113/113/19 -f 117/117/26 118/118/26 119/119/26 -f 120/120/21 121/121/21 122/122/21 -f 105/105/19 123/123/19 106/106/19 -f 124/124/29 125/125/29 126/126/29 -f 111/111/26 87/87/26 112/112/26 -f 83/83/26 112/112/26 87/87/26 -f 98/98/26 127/127/26 81/81/26 -f 112/112/26 128/128/26 110/110/26 -f 129/129/29 130/130/29 131/131/29 -f 132/132/19 106/106/19 123/123/19 -f 133/133/19 134/134/19 135/135/19 -f 136/136/29 137/137/29 138/138/29 -f 139/139/30 140/140/30 141/141/30 -f 142/142/30 143/143/30 140/140/30 -f 112/112/26 109/109/26 108/108/26 -f 144/144/26 145/145/26 128/128/26 -f 146/146/26 147/147/26 145/145/26 -f 148/148/21 149/149/21 150/150/21 -f 151/151/20 152/152/20 153/153/20 -f 154/154/20 155/155/20 156/156/20 -f 157/157/20 158/158/20 159/159/20 -f 160/160/26 161/161/26 162/162/26 -f 163/163/26 164/164/26 165/165/26 -f 166/166/20 167/167/20 168/168/20 -f 169/169/20 168/168/20 170/170/20 -f 171/171/20 172/172/20 173/173/20 -f 174/174/26 175/175/26 119/119/26 -f 176/176/26 177/177/26 178/178/26 -f 179/179/26 180/180/26 145/145/26 -f 181/181/20 182/182/20 183/183/20 -f 184/184/31 185/185/31 186/186/31 -f 187/187/29 188/188/29 189/189/29 -f 147/147/26 146/146/26 190/190/26 -f 191/191/32 192/192/32 193/193/32 -f 194/194/20 195/195/20 196/196/20 -f 197/197/29 198/198/29 199/199/29 -f 200/200/27 201/201/27 191/191/27 -f 202/202/33 203/203/33 204/204/33 -f 205/205/21 206/206/21 207/207/21 -f 208/208/20 209/209/20 210/210/20 -f 211/211/20 212/212/20 213/213/20 -f 214/214/29 215/215/29 216/216/29 -f 101/101/26 217/217/26 98/98/26 -f 218/218/34 219/219/34 220/220/34 -f 221/221/34 222/222/34 223/223/34 -f 224/224/20 225/225/20 226/226/20 -f 227/227/20 228/228/20 229/229/20 -f 230/230/29 231/231/29 232/232/29 -f 229/229/20 213/213/20 227/227/20 -f 233/233/35 234/234/35 235/235/35 -f 236/236/33 237/237/33 238/238/33 -f 239/239/20 240/240/20 241/241/20 -f 242/242/33 235/235/33 234/234/33 -f 243/243/22 244/244/22 245/245/22 -f 246/246/36 247/247/36 248/248/36 -f 249/249/29 250/250/29 251/251/29 -f 252/252/19 253/253/19 123/123/19 -f 254/254/37 255/255/37 256/256/37 -f 101/101/26 257/257/26 217/217/26 -f 178/178/26 258/258/26 119/119/26 -f 145/145/26 147/147/26 119/119/26 -f 144/144/26 259/259/26 260/260/26 -f 261/261/26 174/174/26 119/119/26 -f 119/119/26 262/262/26 263/263/26 -f 264/264/26 262/262/26 119/119/26 -f 264/264/26 258/258/26 265/265/26 -f 266/266/20 267/267/20 268/268/20 -f 173/173/20 266/266/20 269/269/20 -f 270/270/20 167/167/20 166/166/20 -f 259/259/26 271/271/26 260/260/26 -f 272/272/26 273/273/26 274/274/26 -f 275/275/26 259/259/26 144/144/26 -f 276/276/20 277/277/20 278/278/20 -f 279/279/20 280/280/20 281/281/20 -f 282/282/29 283/283/29 284/284/29 -f 285/285/29 286/286/29 287/287/29 -f 288/288/21 289/289/21 290/290/21 -f 291/291/33 292/292/33 293/293/33 -f 294/294/20 295/295/20 296/296/20 -f 297/297/20 298/298/20 299/299/20 -f 107/107/26 82/82/26 161/161/26 -f 300/300/35 292/292/35 291/291/35 -f 301/301/19 302/302/19 303/303/19 -f 304/304/19 305/305/19 306/306/19 -f 307/307/20 308/308/20 309/309/20 -f 127/127/26 161/161/26 82/82/26 -f 310/310/20 311/311/20 312/312/20 -f 313/313/29 314/314/29 315/315/29 -f 162/162/26 161/161/26 127/127/26 -f 316/316/34 317/317/34 318/318/34 -f 319/319/34 320/320/34 321/321/34 -f 322/322/20 323/323/20 324/324/20 -f 325/325/20 326/326/20 311/311/20 -f 327/327/29 328/328/29 329/329/29 -f 312/312/20 311/311/20 326/326/20 -f 330/330/19 331/331/19 332/332/19 -f 333/333/32 334/334/32 335/335/32 -f 260/260/26 336/336/26 274/274/26 -f 337/337/26 260/260/26 273/273/26 -f 338/338/20 339/339/20 340/340/20 -f 341/341/19 342/342/19 330/330/19 -f 343/343/22 344/344/22 345/345/22 -f 346/346/26 337/337/26 347/347/26 -f 348/348/26 349/349/26 260/260/26 -f 350/350/29 351/351/29 352/352/29 -f 353/353/26 260/260/26 349/349/26 -f 354/354/21 355/355/21 356/356/21 -f 163/163/26 336/336/26 260/260/26 -f 357/357/29 358/358/29 359/359/29 -f 95/95/29 360/360/29 358/358/29 -f 95/95/29 94/94/29 360/360/29 -f 361/361/19 362/362/19 363/363/19 -f 364/364/21 365/365/21 366/366/21 -f 367/367/29 368/368/29 369/369/29 -f 370/370/29 371/371/29 372/372/29 -f 373/373/29 374/374/29 372/372/29 -f 151/151/20 153/153/20 375/375/20 -f 376/376/19 377/377/19 378/378/19 -f 358/358/29 379/379/29 359/359/29 -f 380/380/30 381/381/30 382/382/30 -f 383/383/29 384/384/29 385/385/29 -f 386/386/29 387/387/29 388/388/29 -f 389/389/20 390/390/20 391/391/20 -f 392/392/30 393/393/30 394/394/30 -f 395/395/21 396/396/21 397/397/21 -f 398/398/30 399/399/30 400/400/30 -f 400/400/30 401/401/30 398/398/30 -f 402/402/19 403/403/19 404/404/19 -f 405/405/19 406/406/19 407/407/19 -f 408/408/30 409/409/30 410/410/30 -f 378/378/19 134/134/19 133/133/19 -f 109/109/26 82/82/26 107/107/26 -f 411/411/20 412/412/20 413/413/20 -f 414/414/20 411/411/20 413/413/20 -f 415/415/20 414/414/20 413/413/20 -f 376/376/19 378/378/19 133/133/19 -f 412/412/20 416/416/20 413/413/20 -f 417/417/29 418/418/29 419/419/29 -f 419/419/29 418/418/29 420/420/29 -f 421/421/29 422/422/29 423/423/29 -f 424/424/29 425/425/29 421/421/29 -f 131/131/29 425/425/29 426/426/29 -f 427/427/29 428/428/29 130/130/29 -f 429/429/29 430/430/29 428/428/29 -f 431/431/29 420/420/29 430/430/29 -f 432/432/29 429/429/29 428/428/29 -f 427/427/29 432/432/29 428/428/29 -f 129/129/29 433/433/29 130/130/29 -f 434/434/29 426/426/29 425/425/29 -f 424/424/29 434/434/29 425/425/29 -f 435/435/29 424/424/29 421/421/29 -f 436/436/29 423/423/29 422/422/29 -f 437/437/29 436/436/29 422/422/29 -f 437/437/29 422/422/29 420/420/29 -f 431/431/29 438/438/29 420/420/29 -f 429/429/29 439/439/29 430/430/29 -f 440/440/29 417/417/29 419/419/29 -f 422/422/29 419/419/29 420/420/29 -f 435/435/29 421/421/29 423/423/29 -f 441/441/29 131/131/29 426/426/29 -f 433/433/29 427/427/29 130/130/29 -f 439/439/29 431/431/29 430/430/29 -f 438/438/29 437/437/29 420/420/29 -f 441/441/29 129/129/29 131/131/29 -f 442/442/19 443/443/19 444/444/19 -f 127/127/26 82/82/26 81/81/26 -f 445/445/20 446/446/20 447/447/20 -f 448/448/38 449/449/38 450/450/38 -f 451/451/26 452/452/26 453/453/26 -f 454/454/26 455/455/26 456/456/26 -f 457/457/30 458/458/30 459/459/30 -f 460/460/21 69/69/21 68/68/21 -f 388/388/29 461/461/29 367/367/29 -f 383/383/29 385/385/29 388/388/29 -f 462/462/20 463/463/20 464/464/20 -f 462/462/20 465/465/20 466/466/20 -f 467/467/26 468/468/26 469/469/26 -f 470/470/21 471/471/21 395/395/21 -f 472/472/30 473/473/30 474/474/30 -f 475/475/30 472/472/30 476/476/30 -f 66/66/20 65/65/20 477/477/20 -f 478/478/21 479/479/21 480/480/21 -f 465/465/20 481/481/20 482/482/20 -f 483/483/19 484/484/19 485/485/19 -f 486/486/21 487/487/21 488/488/21 -f 489/489/30 490/490/30 491/491/30 -f 492/492/19 485/485/19 484/484/19 -f 493/493/30 494/494/30 495/495/30 -f 496/496/30 495/495/30 494/494/30 -f 497/497/19 498/498/19 499/499/19 -f 497/497/19 63/63/19 498/498/19 -f 66/66/20 390/390/20 500/500/20 -f 390/390/20 389/389/20 500/500/20 -f 501/501/29 138/138/29 502/502/29 -f 503/503/21 504/504/21 505/505/21 -f 506/506/21 505/505/21 504/504/21 -f 507/507/21 506/506/21 504/504/21 -f 64/64/20 66/66/20 500/500/20 -f 508/508/29 501/501/29 502/502/29 -f 509/509/21 503/503/21 505/505/21 -f 497/497/19 61/61/19 63/63/19 -f 501/501/29 136/136/29 138/138/29 -f 510/510/29 511/511/29 512/512/29 -f 513/513/29 511/511/29 514/514/29 -f 512/512/29 511/511/29 515/515/29 -f 515/515/29 511/511/29 516/516/29 -f 517/517/29 511/511/29 513/513/29 -f 516/516/29 511/511/29 518/518/29 -f 518/518/29 511/511/29 519/519/29 -f 520/520/29 511/511/29 517/517/29 -f 519/519/29 511/511/29 521/521/29 -f 521/521/29 511/511/29 522/522/29 -f 522/522/29 511/511/29 520/520/29 -f 523/523/29 511/511/29 510/510/29 -f 514/514/29 511/511/29 524/524/29 -f 525/525/29 511/511/29 523/523/29 -f 524/524/29 511/511/29 526/526/29 -f 526/526/29 511/511/29 525/525/29 -f 527/527/21 528/528/21 529/529/21 -f 530/530/21 531/531/21 529/529/21 -f 532/532/29 533/533/29 534/534/29 -f 76/76/21 67/67/21 69/69/21 -f 535/535/21 70/70/21 72/72/21 -f 536/536/22 73/73/22 75/75/22 -f 537/537/23 67/67/23 77/77/23 -f 538/538/25 78/78/25 80/80/25 -f 539/539/21 88/88/21 90/90/21 -f 90/90/21 540/540/21 539/539/21 -f 72/72/21 71/71/21 103/103/21 -f 541/541/29 124/124/29 126/126/29 -f 253/253/19 132/132/19 123/123/19 -f 542/542/30 139/139/30 141/141/30 -f 139/139/30 142/142/30 140/140/30 -f 128/128/26 112/112/26 108/108/26 -f 108/108/26 144/144/26 128/128/26 -f 144/144/26 146/146/26 145/145/26 -f 159/159/20 154/154/20 156/156/20 -f 156/156/20 157/157/20 159/159/20 -f 336/336/26 163/163/26 165/165/26 -f 169/169/20 166/166/20 168/168/20 -f 543/543/20 169/169/20 170/170/20 -f 544/544/20 171/171/20 173/173/20 -f 118/118/26 176/176/26 178/178/26 -f 175/175/26 179/179/26 145/145/26 -f 545/545/20 181/181/20 183/183/20 -f 546/546/31 184/184/31 186/186/31 -f 547/547/29 187/187/29 189/189/29 -f 548/548/26 147/147/26 190/190/26 -f 200/200/32 191/191/32 193/193/32 -f 549/549/20 194/194/20 196/196/20 -f 550/550/29 197/197/29 199/199/29 -f 551/551/33 202/202/33 204/204/33 -f 552/552/21 205/205/21 207/207/21 -f 553/553/20 208/208/20 210/210/20 -f 229/229/20 211/211/20 213/213/20 -f 554/554/29 214/214/29 216/216/29 -f 555/555/34 218/218/34 220/220/34 -f 556/556/34 221/221/34 223/223/34 -f 557/557/20 224/224/20 226/226/20 -f 558/558/29 230/230/29 232/232/29 -f 559/559/33 236/236/33 238/238/33 -f 560/560/20 239/239/20 241/241/20 -f 561/561/33 242/242/33 234/234/33 -f 562/562/22 243/243/22 245/245/22 -f 563/563/36 246/246/36 248/248/36 -f 564/564/29 249/249/29 251/251/29 -f 565/565/37 254/254/37 256/256/37 -f 118/118/26 178/178/26 119/119/26 -f 175/175/26 145/145/26 119/119/26 -f 146/146/26 144/144/26 260/260/26 -f 263/263/26 261/261/26 119/119/26 -f 258/258/26 264/264/26 119/119/26 -f 566/566/26 264/264/26 265/265/26 -f 269/269/20 266/266/20 268/268/20 -f 544/544/20 173/173/20 269/269/20 -f 567/567/20 270/270/20 166/166/20 -f 568/568/26 272/272/26 274/274/26 -f 569/569/26 275/275/26 144/144/26 -f 570/570/20 276/276/20 278/278/20 -f 571/571/20 279/279/20 281/281/20 -f 572/572/29 282/282/29 284/284/29 -f 573/573/29 285/285/29 287/287/29 -f 574/574/21 288/288/21 290/290/21 -f 575/575/33 291/291/33 293/293/33 -f 576/576/20 294/294/20 296/296/20 -f 577/577/20 297/297/20 299/299/20 -f 578/578/26 107/107/26 161/161/26 -f 579/579/19 301/301/19 303/303/19 -f 580/580/19 304/304/19 306/306/19 -f 581/581/20 307/307/20 309/309/20 -f 582/582/20 310/310/20 312/312/20 -f 583/583/29 313/313/29 315/315/29 -f 584/584/34 316/316/34 318/318/34 -f 585/585/34 319/319/34 321/321/34 -f 586/586/20 322/322/20 324/324/20 -f 587/587/29 327/327/29 329/329/29 -f 588/588/32 333/333/32 335/335/32 -f 273/273/26 260/260/26 274/274/26 -f 347/347/26 337/337/26 273/273/26 -f 589/589/20 338/338/20 340/340/20 -f 332/332/19 341/341/19 330/330/19 -f 590/590/22 343/343/22 345/345/22 -f 591/591/26 346/346/26 347/347/26 -f 271/271/26 348/348/26 260/260/26 -f 592/592/29 350/350/29 352/352/29 -f 593/593/21 594/594/21 595/595/21 -f 596/596/21 354/354/21 356/356/21 -f 353/353/26 163/163/26 260/260/26 -f 357/357/29 95/95/29 358/358/29 -f 597/597/19 361/361/19 363/363/19 -f 598/598/21 364/364/21 366/366/21 -f 383/383/29 367/367/29 369/369/29 -f 371/371/29 373/373/29 372/372/29 -f 599/599/20 151/151/20 375/375/20 -f 600/600/30 380/380/30 382/382/30 -f 385/385/29 386/386/29 388/388/29 -f 601/601/30 392/392/30 394/394/30 -f 602/602/19 402/402/19 404/404/19 -f 603/603/19 405/405/19 407/407/19 -f 604/604/30 408/408/30 410/410/30 -f 605/605/19 442/442/19 444/444/19 -f 606/606/20 445/445/20 447/447/20 -f 607/607/38 448/448/38 450/450/38 -f 608/608/26 451/451/26 453/453/26 -f 609/609/26 454/454/26 456/456/26 -f 610/610/30 457/457/30 459/459/30 -f 611/611/21 460/460/21 68/68/21 -f 367/367/29 383/383/29 388/388/29 -f 612/612/20 462/462/20 464/464/20 -f 463/463/20 462/462/20 466/466/20 -f 613/613/26 467/467/26 469/469/26 -f 397/397/21 470/470/21 395/395/21 -f 476/476/30 472/472/30 474/474/30 -f 614/614/30 475/475/30 476/476/30 -f 615/615/21 478/478/21 480/480/21 -f 466/466/20 465/465/20 482/482/20 -f 616/616/19 483/483/19 485/485/19 -f 617/617/21 486/486/21 488/488/21 -f 618/618/30 489/489/30 491/491/30 -f 619/619/21 527/527/21 529/529/21 -f 528/528/21 530/530/21 529/529/21 -f 620/620/29 532/532/29 534/534/29 -s 1 -f 621/621/39 622/622/40 623/623/41 -f 623/623/41 624/624/42 360/360/29 -f 625/625/43 626/626/43 627/627/44 -f 628/628/45 153/153/20 152/152/20 -f 629/629/46 630/630/47 631/631/21 -f 632/632/48 633/633/48 634/634/49 -f 635/635/21 636/636/50 637/637/51 -f 540/540/21 638/638/52 539/539/21 -f 639/639/53 640/640/54 92/92/19 -f 641/641/55 626/626/43 625/625/43 -f 642/642/56 643/643/19 644/644/19 -f 116/116/19 115/115/19 645/645/57 -f 645/645/57 646/646/19 116/116/19 -f 644/644/19 104/104/19 647/647/58 -f 104/104/19 106/106/19 647/647/58 -f 118/118/26 117/117/26 648/648/59 -f 649/649/26 650/650/60 648/648/59 -f 642/642/56 644/644/19 647/647/58 -f 651/651/61 652/652/62 653/653/63 -f 654/654/64 655/655/65 656/656/66 -f 657/657/67 658/658/68 659/659/69 -f 660/660/70 661/661/70 507/507/21 -f 662/662/71 663/663/19 664/664/19 -f 665/665/72 666/666/72 662/662/71 -f 667/667/73 668/668/74 669/669/75 -f 670/670/76 671/671/77 672/672/78 -f 673/673/73 674/674/79 675/675/80 -f 676/676/81 677/677/82 678/678/83 -f 679/679/84 680/680/85 681/681/86 -f 672/672/78 682/682/56 683/683/19 -f 684/684/19 685/685/19 686/686/87 -f 683/687/19 684/684/19 686/686/87 -f 687/688/88 688/689/89 689/690/21 -f 690/691/90 691/692/91 688/693/89 -f 687/688/88 689/690/21 148/148/21 -f 692/694/92 693/695/93 694/696/30 -f 695/697/94 696/698/95 697/699/96 -f 628/628/45 698/700/97 673/673/73 -f 699/701/98 312/312/20 326/326/20 -f 375/375/20 700/702/99 599/599/20 -f 701/703/21 702/704/50 703/705/100 -f 704/706/101 705/707/102 706/708/30 -f 707/709/103 708/710/104 704/706/101 -f 707/709/103 709/711/105 710/712/106 -f 711/713/107 712/714/108 377/377/19 -f 686/686/87 713/715/109 670/716/76 -f 714/717/87 715/718/110 708/710/104 -f 716/719/30 706/708/30 705/707/102 -f 717/720/111 718/721/50 719/722/112 -f 720/723/113 721/724/114 719/722/112 -f 704/706/101 719/722/112 721/724/114 -f 722/725/115 720/723/113 719/722/112 -f 723/726/116 724/727/117 725/728/118 -f 726/729/92 727/730/119 728/731/120 -f 729/732/121 730/733/122 731/734/123 -f 732/735/19 733/736/53 734/737/53 -f 735/738/124 736/739/125 730/740/122 -f 647/647/58 737/741/56 738/742/126 -f 739/743/127 740/744/128 741/745/129 -f 723/726/116 742/746/94 743/747/30 -f 672/672/78 686/748/87 670/670/76 -f 672/672/78 671/671/77 744/749/124 -f 745/750/95 746/751/30 747/752/30 -f 748/753/130 749/754/131 750/755/30 -f 672/672/78 751/756/19 752/757/126 -f 753/758/19 754/759/19 755/760/132 -f 756/761/133 757/762/134 758/763/135 -f 759/764/136 758/763/135 749/754/131 -f 760/765/29 761/766/29 762/767/137 -f 763/768/138 764/769/139 765/770/140 -f 766/771/141 696/698/95 765/770/140 -f 767/772/30 768/773/142 724/727/117 -f 766/771/141 769/774/143 770/775/144 -f 771/776/98 764/769/139 772/777/145 -f 764/769/139 769/774/143 765/770/140 -f 773/778/146 645/645/57 115/115/19 -f 765/770/140 774/779/147 763/768/138 -f 743/747/30 724/727/117 723/726/116 -f 734/737/53 733/736/53 775/780/148 -f 776/781/149 777/782/150 778/783/148 -f 779/784/112 780/785/110 781/786/118 -f 782/787/150 783/788/151 784/789/19 -f 764/769/139 763/768/138 772/777/145 -f 785/790/150 786/791/152 787/792/19 -f 788/793/19 789/794/19 790/795/132 -f 791/796/150 792/797/149 252/252/19 -f 793/798/77 728/731/120 736/739/125 -f 794/799/153 739/743/127 795/800/154 -f 740/744/128 796/801/19 797/802/19 -f 798/803/121 799/804/155 672/672/78 -f 670/716/76 693/695/93 671/805/77 -f 757/762/134 756/761/133 800/806/42 -f 801/807/19 802/808/19 803/809/132 -f 804/810/20 805/811/20 806/812/156 -f 765/770/140 807/813/94 774/779/147 -f 771/776/98 772/777/145 227/227/20 -f 808/814/19 809/815/19 810/816/132 -f 811/817/19 812/818/53 813/819/53 -f 252/252/19 123/123/19 791/796/150 -f 814/820/157 775/780/148 715/718/110 -f 815/821/157 816/822/158 715/718/110 -f 645/645/57 773/778/146 725/728/118 -f 816/822/158 817/823/159 725/728/118 -f 783/788/151 782/787/150 816/822/158 -f 818/824/148 815/821/157 715/718/110 -f 786/791/152 785/790/150 818/824/148 -f 819/825/157 820/826/148 715/718/110 -f 813/819/53 812/818/53 820/826/148 -f 775/780/148 819/825/157 715/718/110 -f 714/717/87 778/783/148 715/718/110 -f 821/827/60 822/828/160 823/829/160 -f 824/830/96 825/831/161 826/832/162 -f 71/71/21 827/833/163 828/834/163 -f 826/832/162 829/835/50 830/836/113 -f 831/837/47 832/838/46 826/832/162 -f 833/839/47 834/840/47 835/841/21 -f 832/838/46 829/835/50 826/832/162 -f 828/834/163 827/833/163 836/842/164 -f 794/799/153 837/843/153 838/844/165 -f 839/845/94 824/830/96 767/772/30 -f 691/692/91 690/691/90 728/846/120 -f 728/846/120 690/691/90 736/847/125 -f 840/848/166 841/849/167 656/656/66 -f 652/652/62 651/651/61 842/850/29 -f 710/712/106 708/710/104 707/709/103 -f 843/851/130 844/852/30 845/853/30 -f 690/691/90 687/854/88 846/855/168 -f 847/856/21 848/857/113 638/638/52 -f 621/621/39 849/858/169 850/859/170 -f 849/858/169 843/851/130 851/860/131 -f 852/861/113 830/836/113 829/835/50 -f 853/862/171 854/863/172 696/698/95 -f 848/857/113 717/720/111 855/864/50 -f 853/862/171 699/701/98 856/865/173 -f 766/771/141 853/862/171 696/698/95 -f 831/837/47 825/831/161 595/595/21 -f 697/699/96 696/698/95 854/863/172 -f 768/773/142 767/772/30 824/830/96 -f 833/839/47 722/725/115 718/721/50 -f 629/629/46 721/724/114 720/723/113 -f 857/866/174 858/867/21 859/868/21 -f 854/863/172 853/862/171 856/865/173 -f 860/869/174 861/870/21 862/871/21 -f 594/594/21 831/837/47 595/595/21 -f 830/836/113 863/872/50 719/722/112 -f 864/873/113 865/874/111 863/872/50 -f 866/875/175 838/844/165 867/876/21 -f 730/733/122 736/847/125 690/691/90 -f 868/877/21 869/878/50 870/879/47 -f 871/880/176 872/881/177 728/731/120 -f 621/621/39 623/623/41 873/882/178 -f 874/883/113 875/884/115 876/885/21 -f 855/864/50 717/720/111 719/722/112 -f 685/685/19 877/886/19 686/686/87 -f 698/700/97 674/674/79 673/673/73 -f 377/377/19 376/376/19 711/713/107 -f 622/622/40 878/887/179 624/624/42 -f 700/702/99 879/888/180 880/889/181 -f 700/702/99 375/375/20 879/888/180 -f 881/890/182 882/891/183 883/892/26 -f 884/893/43 885/894/26 886/895/26 -f 712/714/108 711/713/107 884/893/43 -f 679/679/84 681/681/86 887/896/183 -f 871/880/176 727/730/119 726/729/92 -f 688/693/89 687/854/88 690/691/90 -f 693/695/93 692/694/92 671/805/77 -f 668/668/74 888/897/184 681/681/86 -f 680/680/85 889/898/21 890/899/21 -f 668/668/74 667/667/73 888/897/184 -f 669/669/75 627/627/44 667/667/73 -f 891/900/185 892/901/186 893/902/187 -f 894/903/188 891/900/185 895/904/189 -f 896/905/190 894/903/188 897/906/191 -f 898/907/192 896/905/190 899/908/193 -f 900/909/194 901/910/195 508/508/29 -f 902/911/196 903/912/197 904/913/198 -f 905/914/199 906/915/199 904/913/198 -f 907/916/200 908/917/201 901/910/195 -f 909/918/202 910/919/203 908/917/201 -f 911/920/204 906/915/199 905/914/199 -f 912/921/205 913/922/206 914/923/207 -f 913/922/206 915/924/208 916/925/209 -f 915/924/208 917/926/210 918/927/211 -f 917/926/210 919/928/212 920/929/213 -f 919/928/212 921/930/214 922/931/215 -f 923/932/216 924/933/217 925/934/218 -f 926/935/219 927/936/219 925/934/218 -f 928/937/220 929/938/220 930/939/203 -f 931/940/221 927/936/219 926/935/219 -f 892/901/186 931/940/221 932/941/222 -f 928/937/220 933/942/223 929/938/220 -f 934/943/224 935/944/225 933/942/223 -f 936/945/226 937/946/227 933/942/223 -f 938/947/228 939/948/228 937/946/227 -f 940/949/229 941/950/230 942/951/230 -f 943/952/231 944/953/231 942/951/230 -f 945/954/232 946/955/233 947/956/30 -f 948/957/234 949/958/235 950/959/236 -f 951/960/237 952/961/238 950/959/236 -f 949/958/235 953/962/239 951/960/237 -f 954/963/240 953/962/239 949/958/235 -f 955/964/241 956/965/242 953/962/239 -f 957/966/243 958/967/243 959/968/244 -f 960/969/245 959/968/244 956/965/242 -f 135/135/19 641/641/55 961/970/246 -f 962/971/247 658/658/68 963/972/248 -f 964/973/249 965/974/250 962/971/247 -f 966/975/251 967/976/252 965/974/250 -f 415/415/20 413/413/20 967/976/252 -f 416/416/20 659/659/69 413/413/20 -f 968/977/253 657/657/67 659/659/69 -f 969/978/254 968/977/253 659/659/69 -f 970/979/255 969/978/254 659/659/69 -f 416/416/20 970/979/255 659/659/69 -f 971/980/256 415/415/20 967/976/252 -f 966/975/251 971/980/256 967/976/252 -f 964/973/249 972/981/257 965/974/250 -f 973/982/258 964/973/249 962/971/247 -f 974/983/259 963/972/248 658/658/68 -f 657/657/67 974/983/259 658/658/68 -f 133/133/19 135/135/19 961/970/246 -f 973/982/258 962/971/247 963/972/248 -f 972/981/257 966/975/251 965/974/250 -f 653/653/63 654/654/64 975/984/260 -f 632/632/48 460/460/21 611/611/21 -f 976/985/51 977/986/48 978/987/21 -f 979/988/29 980/989/29 948/957/234 -f 981/990/261 982/991/261 983/992/21 -f 984/993/262 982/991/261 981/990/261 -f 985/994/263 986/995/264 502/502/29 -f 987/996/265 986/995/264 985/994/263 -f 988/997/266 987/996/265 989/998/267 -f 934/943/224 990/999/268 991/1000/269 -f 935/944/225 934/943/224 992/1001/270 -f 954/963/240 993/1002/271 994/1003/237 -f 660/660/70 940/949/229 995/1004/272 -f 996/1005/29 997/1006/236 998/1007/234 -f 993/1002/271 998/1007/234 997/1006/236 -f 994/1003/237 993/1002/271 997/1006/236 -f 499/499/19 944/953/231 943/952/231 -f 502/502/29 986/995/264 900/909/194 -f 497/497/19 499/499/19 943/952/231 -f 508/508/29 502/502/29 900/909/194 -f 504/504/21 660/660/70 507/507/21 -f 820/826/148 999/1008/157 715/718/110 -f 816/822/158 725/728/118 715/718/110 -f 863/872/50 865/874/111 719/722/112 -f 830/836/113 719/722/112 826/832/162 -f 1000/1009/221 1001/1010/273 1002/1011/274 -f 1001/1010/273 1003/1012/275 1004/1013/276 -f 1005/1014/277 1006/1015/278 1007/1016/279 -f 1003/1012/275 1008/1017/215 1009/1018/216 -f 1008/1017/215 1010/1019/213 1011/1020/212 -f 1012/1021/204 1005/1014/277 1013/1022/280 -f 1010/1019/213 1014/1023/281 1015/1024/210 -f 1014/1023/281 1016/1025/209 1017/1026/208 -f 1018/1027/282 1012/1021/204 1019/1028/205 -f 1016/1025/209 1018/1027/282 1020/1029/283 -f 1021/1030/190 1022/1031/188 1023/1032/191 -f 1024/1033/185 1025/1034/186 1026/1035/284 -f 1027/1036/192 1021/1030/190 1028/1037/193 -f 1006/1015/278 1027/1036/192 1029/1038/285 -f 1025/1034/186 1000/1009/221 1030/1039/222 -f 1022/1031/188 1024/1033/185 1031/1040/189 -f 1032/1041/286 1033/1042/287 1034/1043/288 -f 1035/1044/289 1036/1045/290 1037/1046/291 -f 1038/1047/292 1039/1048/293 1040/1049/30 -f 1041/1050/26 1042/1051/26 1033/1042/287 -f 1036/1045/290 1035/1044/289 1039/1048/293 -f 94/94/29 623/623/41 360/360/29 -f 669/669/75 625/625/43 627/627/44 -f 698/700/97 628/628/45 152/152/20 -f 1043/1052/21 629/629/46 631/631/21 -f 1044/1053/294 632/632/48 634/634/49 -f 1045/1054/21 635/635/21 637/637/51 -f 91/91/19 639/639/53 92/92/19 -f 961/970/246 641/641/55 625/625/43 -f 117/117/26 649/649/26 648/648/59 -f 1046/1055/295 120/120/21 122/122/21 -f 1047/1056/296 651/651/61 653/653/63 -f 975/984/260 654/654/64 656/656/66 -f 1048/1057/71 662/662/71 664/664/19 -f 1048/1057/71 665/665/72 662/662/71 -f 678/678/83 673/673/73 675/675/80 -f 675/675/80 676/676/81 678/678/83 -f 686/748/87 672/672/78 683/683/19 -f 150/150/21 687/688/88 148/148/21 -f 856/865/173 699/701/98 326/326/20 -f 1049/1058/21 701/703/21 703/705/100 -f 706/708/30 707/709/103 704/706/101 -f 710/712/106 714/717/87 708/710/104 -f 705/707/102 704/706/101 721/724/114 -f 718/721/50 722/725/115 719/722/112 -f 773/778/146 723/726/116 725/728/118 -f 793/798/77 726/729/92 728/731/120 -f 1050/1059/297 729/732/121 731/734/123 -f 1051/1060/19 732/735/19 734/737/53 -f 729/1061/121 735/738/124 730/740/122 -f 642/642/56 647/647/58 738/742/126 -f 795/800/154 739/743/127 741/745/129 -f 1052/1062/298 745/750/95 747/752/30 -f 1053/1063/30 748/753/130 750/755/30 -f 682/682/56 672/672/78 752/757/126 -f 1054/1064/299 753/758/19 755/760/132 -f 759/764/136 756/761/133 758/763/135 -f 748/753/130 759/764/136 749/754/131 -f 800/806/42 760/765/29 762/767/137 -f 769/774/143 766/771/141 765/770/140 -f 743/747/30 767/772/30 724/727/117 -f 806/812/156 766/771/141 770/775/144 -f 814/820/157 734/737/53 775/780/148 -f 714/717/87 776/781/149 778/783/148 -f 1055/1065/300 779/784/112 781/786/118 -f 1056/1066/19 782/787/150 784/789/19 -f 1057/1067/19 785/790/150 787/792/19 -f 1058/1068/299 788/793/19 790/795/132 -f 735/738/124 793/798/77 736/739/125 -f 837/843/153 794/799/153 795/800/154 -f 741/745/129 740/744/128 797/802/19 -f 744/749/124 798/803/121 672/672/78 -f 762/767/137 757/762/134 800/806/42 -f 1059/1069/148 801/807/19 803/809/132 -f 770/775/144 804/810/20 806/812/156 -f 213/213/20 771/776/98 227/227/20 -f 1060/1070/299 808/814/19 810/816/132 -f 1061/1071/19 811/817/19 813/819/53 -f 778/783/148 814/820/157 715/718/110 -f 817/823/159 645/645/57 725/728/118 -f 815/821/157 783/788/151 816/822/158 -f 999/1008/157 818/824/148 715/718/110 -f 999/1008/157 786/791/152 818/824/148 -f 819/825/157 813/819/53 820/826/148 -f 1062/1072/301 821/827/60 823/829/160 -f 768/773/142 824/830/96 826/832/162 -f 102/102/21 71/71/21 828/834/163 -f 825/831/161 831/837/47 826/832/162 -f 1063/1073/21 833/839/47 835/841/21 -f 1064/1074/302 828/834/163 836/842/164 -f 866/875/175 794/799/153 838/844/165 -f 872/881/177 691/1075/91 728/731/120 -f 655/655/65 840/848/166 656/656/66 -f 1065/1076/29 652/652/62 842/850/29 -f 851/860/131 843/851/130 845/853/30 -f 1066/1077/303 690/691/90 846/855/168 -f 540/540/21 847/856/21 638/638/52 -f 622/622/40 621/621/39 850/859/170 -f 850/859/170 849/858/169 851/860/131 -f 857/866/174 852/861/113 829/835/50 -f 638/638/52 848/857/113 855/864/50 -f 834/840/47 833/839/47 718/721/50 -f 630/630/47 629/629/46 720/723/113 -f 852/861/113 857/866/174 859/868/21 -f 864/873/113 860/869/174 862/871/21 -f 860/869/174 864/873/113 863/872/50 -f 1067/1078/21 866/875/175 867/876/21 -f 731/734/123 730/733/122 690/691/90 -f 1068/1079/21 868/877/21 870/879/47 -f 727/730/119 871/880/176 728/731/120 -f 1069/1080/21 874/883/113 876/885/21 -f 865/874/111 855/864/50 719/722/112 -f 623/623/41 622/622/40 624/624/42 -f 1070/1081/181 700/702/99 880/889/181 -f 1071/1082/26 881/890/182 883/892/26 -f 1072/1083/43 884/893/43 886/895/26 -f 1072/1083/43 712/714/108 884/893/43 -f 1073/1084/30 871/880/176 726/729/92 -f 680/680/85 668/668/74 681/681/86 -f 668/668/74 680/680/85 890/899/21 -f 895/904/189 891/900/185 893/902/187 -f 897/906/191 894/903/188 895/904/189 -f 899/908/193 896/905/190 897/906/191 -f 902/911/196 898/907/192 899/908/193 -f 898/907/192 902/911/196 904/913/198 -f 903/912/197 905/914/199 904/913/198 -f 900/909/194 907/916/200 901/910/195 -f 907/916/200 909/918/202 908/917/201 -f 912/921/205 911/920/204 905/914/199 -f 911/920/204 912/921/205 914/923/207 -f 914/923/207 913/922/206 916/925/209 -f 916/925/209 915/924/208 918/927/211 -f 918/927/211 917/926/210 920/929/213 -f 920/929/213 919/928/212 922/931/215 -f 1074/1085/304 923/932/216 925/934/218 -f 924/933/217 926/935/219 925/934/218 -f 1075/1086/305 928/937/220 930/939/203 -f 932/941/222 931/940/221 926/935/219 -f 893/902/187 892/901/186 932/941/222 -f 928/937/220 934/943/224 933/942/223 -f 935/944/225 936/945/226 933/942/223 -f 936/945/226 938/947/228 937/946/227 -f 995/1004/272 940/949/229 942/951/230 -f 941/950/230 943/952/231 942/951/230 -f 1076/1087/30 945/954/232 947/956/30 -f 949/958/235 951/960/237 950/959/236 -f 993/1002/271 954/963/240 949/958/235 -f 954/963/240 955/964/241 953/962/239 -f 960/969/245 957/966/243 959/968/244 -f 955/964/241 960/969/245 956/965/242 -f 1047/1056/296 653/653/63 975/984/260 -f 633/633/48 632/632/48 611/611/21 -f 1077/1088/50 976/985/51 978/987/21 -f 950/959/236 979/988/29 948/957/234 -f 1078/1089/21 981/990/261 983/992/21 -f 1079/1090/262 984/993/262 981/990/261 -f 989/998/267 987/996/265 985/994/263 -f 1080/1091/269 988/997/266 989/998/267 -f 992/1001/270 934/943/224 991/1000/269 -f 661/661/70 660/660/70 995/1004/272 -f 1081/1092/29 996/1005/29 998/1007/234 -f 1082/1093/238 994/1003/237 997/1006/236 -f 1030/1039/222 1000/1009/221 1002/1011/274 -f 1002/1011/274 1001/1010/273 1004/1013/276 -f 1013/1022/280 1005/1014/277 1007/1016/279 -f 1004/1013/276 1003/1012/275 1009/1018/216 -f 1009/1018/216 1008/1017/215 1011/1020/212 -f 1019/1028/205 1012/1021/204 1013/1022/280 -f 1011/1020/212 1010/1019/213 1015/1024/210 -f 1015/1024/210 1014/1023/281 1017/1026/208 -f 1020/1029/283 1018/1027/282 1019/1028/205 -f 1017/1026/208 1016/1025/209 1020/1029/283 -f 1028/1037/193 1021/1030/190 1023/1032/191 -f 1031/1040/189 1024/1033/185 1026/1035/284 -f 1029/1038/285 1027/1036/192 1028/1037/193 -f 1007/1016/279 1006/1015/278 1029/1038/285 -f 1026/1035/284 1025/1034/186 1030/1039/222 -f 1023/1032/191 1022/1031/188 1031/1040/189 -f 1037/1046/291 1032/1041/286 1034/1043/288 -f 1034/1043/288 1035/1044/289 1037/1046/291 -f 1083/1094/30 1038/1047/292 1040/1049/30 -f 1032/1041/286 1041/1050/26 1033/1042/287 -f 1038/1047/292 1036/1045/290 1039/1048/293 -o trigger_pistol_0 -v 0.255916 1.582615 6.859656 -v 0.255916 1.449703 6.660409 -v 0.255916 1.810704 6.457509 -v 0.255916 2.466018 6.344805 -v 0.255916 1.892926 6.633237 -v 0.577175 1.435798 6.186546 -v 0.577175 1.810704 6.457509 -v 0.577175 1.449703 6.660409 -v 0.577175 3.484048 5.722968 -v 0.577175 3.243770 6.479860 -v 0.577175 2.895699 6.381779 -v 0.577175 1.924939 5.885275 -v 0.577175 2.439333 5.691723 -v 0.577175 2.466018 6.344805 -v 0.577175 3.484048 5.722968 -v 0.401255 3.484048 5.722968 -v 0.401255 3.243770 6.479860 -v 0.401255 3.588838 6.684444 -v 0.401255 3.243770 6.479860 -v 0.401255 3.484048 5.722968 -v 0.401255 4.331120 5.796535 -v 0.401255 4.331120 7.553139 -v 0.401255 3.911054 6.978125 -v 0.401255 4.776393 4.607953 -v 0.401255 5.500355 4.607955 -v 0.401255 5.500353 7.553141 -v -0.401255 4.331120 5.796535 -v -0.401255 4.776393 4.607953 -v 0.401255 4.776393 4.607953 -v -0.401255 5.500355 4.607955 -v 0.401255 5.500355 4.607955 -v 0.401255 4.776393 4.607953 -v 0.577175 2.851677 5.639833 -v -0.577175 3.484048 5.722968 -v -0.577175 3.243770 6.479860 -v -0.401255 3.243770 6.479860 -v -0.255916 1.582615 6.859656 -v -0.255916 1.892926 6.633237 -v -0.255916 1.810704 6.457509 -v -0.401255 3.243770 6.479860 -v -0.401255 3.588838 6.684444 -v -0.401255 3.484048 5.722968 -v -0.401255 4.331120 7.553139 -v -0.401255 4.331120 5.796535 -v -0.401255 3.911054 6.978125 -v -0.401255 4.776393 4.607953 -v -0.401255 5.500355 4.607955 -v -0.401255 5.500353 7.553141 -v -0.255916 2.466018 6.344805 -v -0.577175 2.466018 6.344805 -v -0.577175 2.895699 6.381779 -v -0.577175 2.851677 5.639833 -v -0.577175 1.810704 6.457509 -v -0.577175 1.435798 6.186546 -v -0.577175 1.449703 6.660409 -v -0.577175 3.484048 5.722968 -v -0.577175 1.924939 5.885275 -v -0.577175 2.439333 5.691723 -v 0.577175 3.243770 6.479860 -v 0.401255 4.331120 5.796535 -v -0.401255 4.776393 4.607953 -v -0.401255 3.484048 5.722968 -v -0.255916 1.449703 6.660409 -v -0.577175 3.243770 6.479860 -v -0.255916 1.892926 6.633237 -v 0.255916 1.892926 6.633237 -v 0.255916 2.466018 6.344805 -v 0.577175 2.895699 6.381779 -v 0.577175 3.243770 6.479860 -v 0.401255 3.243770 6.479860 -v -0.401255 3.243770 6.479860 -v -0.577175 2.895699 6.381779 -v -0.136434 1.170197 7.267153 -v 0.136434 1.170197 7.267153 -v 0.255916 1.274900 7.159120 -v -0.255916 1.274900 7.159120 -v 0.255916 1.582615 6.859656 -v -0.255916 1.582615 6.859656 -v -0.136434 1.170197 7.267153 -v -0.140214 0.908798 7.158844 -v 0.140214 0.908798 7.158844 -v 0.255916 1.049089 7.041913 -v 0.255916 1.274900 7.159120 -v 0.136434 1.170197 7.267153 -v 0.255916 2.466018 6.344805 -v 0.577175 2.466018 6.344805 -v 0.577175 1.049089 7.041913 -v 0.255916 1.049089 7.041913 -v 0.140214 0.908798 7.158844 -v -0.140214 0.908798 7.158844 -v -0.238265 0.780515 7.270253 -v 0.238265 0.780515 7.270253 -v 0.577175 1.810704 6.457509 -v 0.255916 1.810704 6.457509 -v 0.255916 1.449703 6.660409 -v 0.577175 1.449703 6.660409 -v -0.242153 0.574698 7.190140 -v 0.242153 0.574698 7.190140 -v 0.238265 0.780515 7.270253 -v 0.557295 0.748788 6.906375 -v 0.577175 1.049089 7.041913 -v 0.577175 1.022907 6.562050 -v -0.255916 2.466018 6.344805 -v -0.401255 4.331120 5.796535 -v 0.401255 4.331120 5.796535 -v 0.401255 3.484048 5.722968 -v 0.401255 3.588838 6.684444 -v -0.401255 3.588838 6.684444 -v 0.401255 3.911054 6.978125 -v 0.401255 4.331120 7.553139 -v -0.401255 4.331120 7.553139 -v -0.401255 3.911054 6.978125 -v 0.401255 5.500353 7.553141 -v -0.401255 5.500353 7.553141 -v 0.577175 2.851677 5.639833 -v 0.577175 3.484048 5.722968 -v -0.577175 2.851677 5.639833 -v -0.401255 3.484048 5.722968 -v 0.577175 1.022907 6.562050 -v -0.577175 1.022907 6.562050 -v -0.577175 1.435798 6.186546 -v 0.577175 1.435798 6.186546 -v -0.577175 1.924939 5.885275 -v -0.577175 2.439333 5.691723 -v 0.577175 2.439333 5.691723 -v 0.577175 1.924939 5.885275 -v 0.242153 0.574698 7.190140 -v -0.242153 0.574698 7.190140 -v -0.557295 0.748788 6.906375 -v 0.557295 0.748788 6.906375 -v -0.577175 3.243770 6.479860 -v -0.255916 1.049089 7.041913 -v -0.577175 2.466018 6.344805 -v -0.255916 1.274900 7.159120 -v -0.577175 1.049089 7.041913 -v -0.577175 3.484048 5.722968 -v -0.577175 1.810704 6.457509 -v -0.577175 1.449703 6.660409 -v -0.255916 1.449703 6.660409 -v -0.255916 1.810704 6.457509 -v -0.255916 1.049089 7.041913 -v -0.557295 0.748788 6.906375 -v -0.238265 0.780515 7.270253 -v -0.577175 1.022907 6.562050 -v -0.577175 1.049089 7.041913 -v -0.255916 2.466018 6.344805 -vt 0.482997 0.972676 -vt 0.483169 0.972693 -vt 0.483177 0.972380 -vt 0.483034 0.971858 -vt 0.483023 0.972386 -vt 0.471310 0.981774 -vt 0.471246 0.981454 -vt 0.471009 0.981626 -vt 0.472210 0.980596 -vt 0.471654 0.980527 -vt 0.471614 0.980779 -vt 0.471647 0.981549 -vt 0.471923 0.981275 -vt 0.471511 0.981066 -vt 0.472210 0.980596 -vt 0.472225 0.980472 -vt 0.471669 0.980404 -vt 0.471639 0.980122 -vt 0.471669 0.980404 -vt 0.472225 0.980472 -vt 0.472428 0.979907 -vt 0.471300 0.979390 -vt 0.471545 0.979829 -vt 0.473322 0.979971 -vt 0.473535 0.979507 -vt 0.471644 0.978639 -vt 0.480249 0.946278 -vt 0.480249 0.945382 -vt 0.480816 0.945382 -vt 0.480249 0.944870 -vt 0.480816 0.944870 -vt 0.480816 0.945382 -vt 0.472077 0.981026 -vt 0.468113 0.980573 -vt 0.468670 0.980511 -vt 0.468657 0.980387 -vt 0.482644 0.972678 -vt 0.482622 0.972386 -vt 0.482468 0.972377 -vt 0.468657 0.980387 -vt 0.468690 0.980106 -vt 0.468100 0.980449 -vt 0.469037 0.979378 -vt 0.467904 0.979882 -vt 0.468786 0.979814 -vt 0.467009 0.979936 -vt 0.466802 0.979469 -vt 0.468701 0.978624 -vt 0.482618 0.971864 -vt 0.468807 0.981051 -vt 0.468707 0.980763 -vt 0.468241 0.981005 -vt 0.469067 0.981441 -vt 0.469000 0.981761 -vt 0.469302 0.981616 -vt 0.468113 0.980573 -vt 0.468666 0.981532 -vt 0.468393 0.981256 -vt 0.471654 0.980527 -vt 0.480816 0.946278 -vt 0.480249 0.945382 -vt 0.468100 0.980449 -vt 0.482469 0.972694 -vt 0.468670 0.980511 -vt 0.482622 0.972386 -vt 0.483023 0.972386 -vt 0.483034 0.971858 -vt 0.480078 0.973332 -vt 0.480077 0.973077 -vt 0.479953 0.973077 -vt 0.479387 0.973079 -vt 0.479263 0.973334 -vt 0.482753 0.972998 -vt 0.482894 0.972996 -vt 0.482958 0.972932 -vt 0.482686 0.972938 -vt 0.482997 0.972676 -vt 0.482644 0.972678 -vt 0.482753 0.972998 -vt 0.482726 0.973162 -vt 0.482929 0.973155 -vt 0.483051 0.973046 -vt 0.482958 0.972932 -vt 0.482894 0.972996 -vt 0.479852 0.973637 -vt 0.480079 0.973637 -vt 0.480081 0.974789 -vt 0.479855 0.974790 -vt 0.479773 0.974919 -vt 0.479575 0.974919 -vt 0.479506 0.975040 -vt 0.479843 0.975039 -vt 0.480080 0.974106 -vt 0.479853 0.974107 -vt 0.479854 0.974399 -vt 0.480081 0.974399 -vt 0.469982 0.982043 -vt 0.470324 0.982045 -vt 0.470322 0.981889 -vt 0.470645 0.982004 -vt 0.470647 0.981771 -vt 0.470947 0.981928 -vt 0.479491 0.973638 -vt 0.480249 0.946278 -vt 0.480816 0.946278 -vt 0.480816 0.946878 -vt 0.479953 0.972794 -vt 0.479386 0.972795 -vt 0.479952 0.972486 -vt 0.479951 0.971983 -vt 0.479384 0.971985 -vt 0.479385 0.972488 -vt 0.479949 0.971158 -vt 0.479382 0.971159 -vt 0.480940 0.947328 -vt 0.480940 0.946878 -vt 0.480125 0.947328 -vt 0.480249 0.946878 -vt 0.480940 0.948810 -vt 0.480125 0.948810 -vt 0.480125 0.948416 -vt 0.480940 0.948415 -vt 0.480125 0.948010 -vt 0.480125 0.947622 -vt 0.480940 0.947622 -vt 0.480940 0.948010 -vt 0.480704 0.949355 -vt 0.480362 0.949355 -vt 0.480139 0.949120 -vt 0.480926 0.949120 -vt 0.479262 0.973079 -vt 0.482592 0.973062 -vt 0.479264 0.973639 -vt 0.482686 0.972938 -vt 0.479266 0.974791 -vt 0.480125 0.946878 -vt 0.479265 0.974108 -vt 0.479265 0.974401 -vt 0.479492 0.974400 -vt 0.479492 0.974108 -vt 0.479493 0.974791 -vt 0.469662 0.981998 -vt 0.469986 0.981887 -vt 0.469361 0.981919 -vt 0.469663 0.981765 -vt 0.482618 0.971864 -vn 1.0000 0.0000 0.0000 -vn 0.0000 0.9531 0.3026 -vn 0.0000 -0.9364 -0.3508 -vn 0.0000 0.0000 -1.0000 -vn -1.0000 -0.0000 0.0000 -vn 0.0000 0.4977 0.8674 -vn 0.0000 0.5444 0.8388 -vn 0.0000 0.1395 0.9902 -vn 0.0000 -0.1979 0.9802 -vn 0.0000 -0.2712 0.9625 -vn 0.0000 -0.3535 0.9354 -vn -0.0000 -0.3697 0.9291 -vn 0.0000 -0.1606 0.9870 -vn 0.0000 0.7181 0.6960 -vn 0.0000 0.7113 0.7029 -vn -0.0000 0.7044 0.7098 -vn 0.0000 0.6629 0.7487 -vn 0.0000 0.6268 0.7792 -vn -0.4404 -0.3550 0.8247 -vn -0.4552 -0.3352 0.8249 -vn 0.2991 -0.3616 0.8831 -vn 0.9038 -0.1780 0.3893 -vn 0.9745 -0.1034 0.1993 -vn 0.5796 -0.3268 0.7465 -vn 0.0001 0.1395 0.9902 -vn 0.0000 0.0850 0.9964 -vn -0.0023 0.6611 0.7503 -vn -0.0000 0.6735 0.7392 -vn -0.0023 0.6496 0.7603 -vn 0.0017 0.6512 0.7589 -vn 0.0038 0.6541 0.7564 -vn -0.0023 0.6547 0.7559 -vn 0.0000 0.3882 0.9216 -vn 0.0000 0.2799 0.9600 -vn 0.0000 0.5604 0.8282 -vn 0.0000 0.6274 0.7787 -vn -0.2580 -0.3462 0.9020 -vn 0.3908 -0.3275 0.8603 -vn 0.3829 -0.3520 0.8541 -vn 0.8580 -0.2283 0.4601 -vn 0.9627 -0.1436 0.2294 -vn 0.9997 -0.0226 0.0012 -vn 0.0000 0.1148 0.9934 -vn 0.0000 0.0865 -0.9962 -vn 0.0000 0.1129 -0.9936 -vn 0.0000 -0.5671 0.8236 -vn 0.0000 -0.6219 0.7831 -vn 0.0000 -0.7215 0.6924 -vn -0.0001 -0.5953 0.8035 -vn 0.0001 -0.2977 0.9547 -vn 0.0000 -0.7663 0.6425 -vn 0.0000 -0.0000 1.0000 -vn 0.0000 0.0456 -0.9990 -vn 0.0000 0.1303 -0.9915 -vn 0.0000 0.0285 -0.9996 -vn 0.0000 0.1158 -0.9933 -vn -0.0000 -0.7114 -0.7028 -vn -0.0000 -0.7480 -0.6637 -vn 0.0000 -0.6258 -0.7800 -vn 0.0000 -0.5761 -0.8174 -vn -0.0000 -0.4689 -0.8832 -vn 0.0000 -0.2781 -0.9606 -vn 0.0000 -0.2019 -0.9794 -vn -0.0000 -0.4113 -0.9115 -vn 0.0000 -0.8524 -0.5229 -vn 0.0000 -0.8304 -0.5572 -vn 0.0000 -0.8071 -0.5904 -vn -0.9038 -0.1780 0.3893 -vn -0.9745 -0.1034 0.1993 -vn 0.0023 0.6611 0.7503 -vn -0.8580 -0.2283 0.4601 -vn -0.5059 -0.3351 0.7948 -vn -0.9997 -0.0226 0.0012 -vn -0.9627 -0.1436 0.2294 -vn 0.0000 0.1149 0.9934 -s off -f 1084/1095/306 1085/1096/306 1086/1097/306 -f 1086/1097/306 1087/1098/306 1088/1099/306 -f 1089/1100/306 1090/1101/306 1091/1102/306 -f 1092/1103/306 1093/1104/306 1094/1105/306 -f 1089/1100/306 1095/1106/306 1090/1101/306 -f 1096/1107/306 1097/1108/306 1090/1101/306 -f 1098/1109/307 1099/1110/307 1100/1111/307 -f 1101/1112/306 1102/1113/306 1103/1114/306 -f 1104/1115/306 1105/1116/306 1106/1117/306 -f 1101/1112/306 1103/1114/306 1104/1115/306 -f 1104/1115/306 1107/1118/306 1108/1119/306 -f 1109/1120/306 1105/1116/306 1104/1115/306 -f 1110/1121/308 1111/1122/308 1112/1123/308 -f 1113/1124/309 1114/1125/309 1115/1126/309 -f 1097/1108/306 1096/1107/306 1116/1127/306 -f 1117/1128/307 1118/1129/307 1119/1130/307 -f 1120/1131/310 1121/1132/310 1122/1133/310 -f 1123/1134/310 1124/1135/310 1125/1136/310 -f 1126/1137/310 1127/1138/310 1128/1139/310 -f 1124/1135/310 1128/1139/310 1127/1138/310 -f 1129/1140/310 1127/1138/310 1130/1141/310 -f 1131/1142/310 1130/1141/310 1127/1138/310 -f 1132/1143/310 1122/1133/310 1121/1132/310 -f 1133/1144/310 1134/1145/310 1135/1146/310 -f 1136/1147/310 1137/1148/310 1138/1149/310 -f 1139/1150/310 1135/1146/310 1134/1145/310 -f 1140/1151/310 1137/1148/310 1136/1147/310 -f 1141/1152/310 1140/1151/310 1136/1147/310 -f 1088/1099/306 1084/1095/306 1086/1097/306 -f 1116/1127/306 1092/1103/306 1094/1105/306 -f 1095/1106/306 1096/1107/306 1090/1101/306 -f 1142/1153/307 1098/1109/307 1100/1111/307 -f 1106/1117/306 1101/1112/306 1104/1115/306 -f 1108/1119/306 1109/1120/306 1104/1115/306 -f 1143/1154/308 1110/1121/308 1112/1123/308 -f 1144/1155/309 1113/1124/309 1115/1126/309 -f 1094/1105/306 1097/1108/306 1116/1127/306 -f 1145/1156/307 1117/1128/307 1119/1130/307 -f 1146/1157/310 1120/1131/310 1122/1133/310 -f 1125/1136/310 1124/1135/310 1127/1138/310 -f 1126/1137/310 1131/1142/310 1127/1138/310 -f 1141/1152/310 1133/1144/310 1135/1146/310 -f 1147/1158/310 1139/1150/310 1134/1145/310 -f 1133/1144/310 1141/1152/310 1136/1147/310 -s 1 -f 1148/1159/311 1149/1160/312 1150/1161/313 -f 1151/1162/314 1152/1163/315 1153/1164/316 -f 1154/1165/317 1155/1166/318 1151/1162/314 -f 1156/1167/319 1157/1168/319 1158/1169/320 -f 1159/1170/321 1158/1169/320 1160/1171/322 -f 1149/1160/312 1148/1159/311 1161/1172/323 -f 1162/1173/324 1163/1174/325 1164/1175/326 -f 1165/1176/327 1166/1177/328 1167/1178/329 -f 1168/1179/330 1169/1180/331 1151/1162/314 -f 1085/1096/306 1084/1095/306 1166/1177/328 -f 1170/1181/332 1171/1182/333 1172/1183/334 -f 1173/1184/335 1174/1185/336 1175/1186/337 -f 1176/1187/338 1177/1188/339 1178/1189/340 -f 1169/1180/331 1168/1179/330 1177/1188/339 -f 1171/1182/333 1170/1181/332 1179/1190/341 -f 1180/1191/342 1181/1192/343 1182/1193/344 -f 1183/1194/345 1184/1195/346 1182/1193/344 -f 1185/1196/347 1091/1102/306 1184/1195/346 -f 1185/1196/347 1089/1100/306 1091/1102/306 -f 1155/1166/318 1186/1197/348 1168/1179/330 -f 1187/1198/349 1188/1199/349 1189/1200/350 -f 1190/1201/351 1191/1202/352 1154/1165/317 -f 1191/1202/352 1190/1201/351 1192/1203/353 -f 1193/1204/354 1194/1205/355 1195/1206/356 -f 1196/1207/357 1197/1208/357 1194/1205/355 -f 1198/1209/358 1189/1200/350 1199/1210/359 -f 1200/1211/360 1201/1212/361 1189/1200/350 -f 1202/1213/362 1203/1214/363 1204/1215/364 -f 1205/1216/365 1204/1215/364 1206/1217/366 -f 1207/1218/367 1208/1219/368 1209/1220/369 -f 1200/1211/360 1198/1209/358 1208/1219/368 -f 1210/1221/370 1211/1222/370 1212/1223/371 -f 1203/1214/363 1202/1213/362 1213/1224/372 -f 1214/1225/315 1155/1166/318 1154/1165/317 -f 1215/1226/373 1163/1174/325 1162/1173/324 -f 1216/1227/331 1186/1197/348 1155/1166/318 -f 1146/1157/310 1215/1226/373 1217/1228/374 -f 1218/1229/375 1174/1185/336 1173/1184/335 -f 1201/1212/361 1200/1211/360 1219/1230/359 -f 1220/1231/338 1221/1232/341 1222/1233/340 -f 1216/1227/331 1220/1231/338 1223/1234/339 -f 1224/1235/333 1222/1233/340 1221/1232/341 -f 1225/1236/376 1180/1191/342 1226/1237/377 -f 1227/1238/378 1225/1236/376 1228/1239/379 -f 1137/1148/310 1227/1238/378 1138/1149/310 -f 1229/1240/380 1148/1159/311 1150/1161/313 -f 1153/1164/316 1154/1165/317 1151/1162/314 -f 1159/1170/321 1156/1167/319 1158/1169/320 -f 1161/1172/323 1159/1170/321 1160/1171/322 -f 1160/1171/322 1149/1160/312 1161/1172/323 -f 1167/1178/329 1162/1173/324 1164/1175/326 -f 1164/1175/326 1165/1176/327 1167/1178/329 -f 1165/1176/327 1085/1096/306 1166/1177/328 -f 1175/1186/337 1170/1181/332 1172/1183/334 -f 1172/1183/334 1173/1184/335 1175/1186/337 -f 1179/1190/341 1176/1187/338 1178/1189/340 -f 1176/1187/338 1169/1180/331 1177/1188/339 -f 1178/1189/340 1171/1182/333 1179/1190/341 -f 1226/1237/377 1180/1191/342 1182/1193/344 -f 1181/1192/343 1183/1194/345 1182/1193/344 -f 1183/1194/345 1185/1196/347 1184/1195/346 -f 1151/1162/314 1155/1166/318 1168/1179/330 -f 1201/1212/361 1187/1198/349 1189/1200/350 -f 1153/1164/316 1190/1201/351 1154/1165/317 -f 1195/1206/356 1191/1202/352 1192/1203/353 -f 1192/1203/353 1193/1204/354 1195/1206/356 -f 1193/1204/354 1196/1207/357 1194/1205/355 -f 1198/1209/358 1200/1211/360 1189/1200/350 -f 1205/1216/365 1202/1213/362 1204/1215/364 -f 1209/1220/369 1205/1216/365 1206/1217/366 -f 1206/1217/366 1207/1218/367 1209/1220/369 -f 1207/1218/367 1200/1211/360 1208/1219/368 -f 1213/1224/372 1210/1221/370 1212/1223/371 -f 1212/1223/371 1203/1214/363 1213/1224/372 -f 1217/1228/374 1215/1226/373 1162/1173/324 -f 1120/1131/310 1146/1157/310 1217/1228/374 -f 1224/1235/333 1218/1229/375 1173/1184/335 -f 1223/1234/339 1220/1231/338 1222/1233/340 -f 1186/1197/348 1216/1227/331 1223/1234/339 -f 1218/1229/375 1224/1235/333 1221/1232/341 -f 1228/1239/379 1225/1236/376 1226/1237/377 -f 1138/1149/310 1227/1238/378 1228/1239/379 -o mag_pistol_0 -v -1.109136 1.854146 1.546994 -v -1.109136 6.483851 2.313161 -v -1.109136 1.746315 1.309461 -v 1.109136 6.483851 2.313161 -v 1.109136 6.193875 2.563060 -v 1.109136 1.854146 1.546994 -v 1.109136 1.746315 1.309461 -v -1.109136 6.193875 2.563060 -v -1.109136 7.455005 0.432841 -v -0.855096 7.454038 0.681172 -v -0.637953 7.455005 0.432841 -v -1.109136 7.447666 2.316916 -v -0.851242 7.447666 2.316916 -v -0.645065 7.456246 0.114420 -v -0.808240 7.456246 0.114420 -v -0.882817 -7.449294 -6.242331 -v -1.332151 -7.578506 -5.806304 -v -1.109136 -7.583717 -5.788713 -v -1.260158 -8.694220 -2.041337 -v -1.109136 -8.686133 -2.068621 -v -0.818644 -8.777006 -1.761974 -v -0.549908 -9.201518 -0.329464 -v 0.549908 -9.201518 -0.329464 -v 0.855096 7.454038 0.681172 -v 1.109136 7.455005 0.432841 -v 0.637953 7.455005 0.432841 -v 0.645065 7.456246 0.114420 -v 0.808240 7.456246 0.114420 -v -0.413784 6.208827 -0.016872 -v 0.413784 6.208827 -0.016872 -v 0.440888 6.323021 -0.358271 -v 0.851242 7.447666 2.316916 -v -0.791829 -7.487273 -6.114170 -v 0.791829 -7.487273 -6.114170 -v 0.882817 -7.449294 -6.242331 -v 1.109136 -7.583717 -5.788713 -v 1.332151 -7.578506 -5.806304 -v 1.109136 -8.686133 -2.068621 -v -0.527911 -9.865828 -0.558223 -v 0.527911 -9.865828 -0.558223 -v 0.549908 -9.201518 -0.329464 -v 0.527911 -9.865828 -0.558223 -v -0.527911 -9.865828 -0.558223 -v -1.263812 -9.320386 -2.284041 -v -0.889556 -7.991921 -6.487401 -v 0.889556 -7.991921 -6.487401 -v 1.326758 -8.130615 -6.048566 -v 1.263812 -9.320386 -2.284041 -v -1.326758 -8.130615 -6.048566 -v 1.260158 -8.694220 -2.041337 -v 0.818644 -8.777006 -1.761974 -v -0.440888 6.323021 -0.358271 -v 1.109136 7.447666 2.316916 -v -0.549908 -9.201518 -0.329464 -v -0.330292 5.643600 3.823889 -v 0.330292 5.643600 3.823889 -v -0.639183 4.693711 3.350439 -v -0.784649 4.758710 3.184810 -v -0.823423 6.188930 3.832172 -v -0.613250 5.916148 3.869261 -v 0.639183 4.693711 3.350439 -v 0.613250 5.916148 3.869261 -v -0.791829 -7.487273 -6.114170 -v -0.440888 6.323021 -0.358271 -v 0.791829 -7.487273 -6.114170 -v 1.109136 6.187971 4.078715 -v 1.109136 1.608211 2.157616 -v 1.109136 7.455005 0.432841 -v 1.109136 -7.583717 -5.788713 -v 1.109136 1.421237 1.150594 -v 1.109136 1.152737 1.225781 -v 0.613250 6.186937 4.344060 -v 0.613250 5.905007 4.230343 -v 0.807799 6.186929 4.345726 -v -0.367306 5.610397 4.110494 -v -0.804550 1.432484 2.382775 -v 0.367306 5.610397 4.110494 -v -0.613250 6.186937 4.344060 -v -0.807799 6.186929 4.345726 -v -0.613250 5.905007 4.230343 -v -0.818644 -8.777006 -1.761974 -v 0.818644 -8.777006 -1.761974 -v -0.775337 0.764493 2.107609 -v -1.109136 1.608211 2.157616 -v -1.109136 7.455005 0.432841 -v -1.109136 1.421237 1.150594 -v -1.109136 -7.583717 -5.788713 -v -1.109136 1.152737 1.225781 -v -0.629678 6.747400 -0.181054 -v 0.440888 6.323021 -0.358271 -v 0.629678 6.747400 -0.181054 -v -0.784480 5.973367 0.123958 -v -0.784649 4.758710 3.184810 -v 0.784480 5.973367 0.123958 -v 1.109136 7.447666 2.316916 -v 1.109136 -8.686133 -2.068621 -v 0.804550 1.432484 2.382775 -v 0.775337 0.764493 2.107609 -v -1.109136 0.828570 1.868721 -v -1.109136 -8.686133 -2.068621 -v -1.109136 6.187971 4.078715 -v -0.613250 6.189570 3.985306 -v -1.109136 6.193875 2.563060 -v -1.109136 6.187971 4.078715 -v -0.823423 6.188930 3.832172 -v -0.808240 7.456246 0.114420 -v -1.109136 7.447666 2.316916 -v -1.109136 6.483851 2.313161 -v -0.839998 6.483851 2.313161 -v -0.855295 6.193875 2.563060 -v -0.855096 7.454038 0.681172 -v -0.851242 7.447666 2.316916 -v -0.839998 6.483851 2.313161 -v -0.613250 5.916148 3.869261 -v -0.613250 5.905007 4.230343 -v -0.367306 5.610397 4.110494 -v -0.613250 6.189570 3.985306 -v -0.613250 6.186937 4.344060 -v -0.804550 1.432484 2.382775 -v -0.804550 1.432484 2.382775 -v -0.836434 1.761413 1.534160 -v -0.864811 1.209287 1.297543 -v -0.866598 1.383340 1.228519 -v -1.109136 1.608211 2.157616 -v -1.109136 1.854146 1.546994 -v -0.836434 1.761413 1.534160 -v -1.109136 1.746315 1.309461 -v -0.853872 1.693580 1.365606 -v -1.109136 1.421237 1.150594 -v -0.866598 1.383340 1.228519 -v -1.109136 1.152737 1.225781 -v -0.864811 1.209287 1.297543 -v -1.109136 0.828570 1.868721 -v -0.775337 0.764493 2.107609 -v -0.818644 -8.777006 -1.761974 -v -1.326758 -8.130615 -6.048566 -v -1.332151 -7.578506 -5.806304 -v -0.882817 -7.449294 -6.242331 -v -1.263812 -9.320386 -2.284041 -v -1.260158 -8.694220 -2.041337 -v -0.527911 -9.865828 -0.558223 -v -0.549908 -9.201518 -0.329464 -v -0.855295 6.193875 2.563060 -v -0.637953 7.455005 0.432841 -v -0.610240 6.670014 0.107513 -v -0.586664 6.044359 -0.058251 -v -0.413784 6.208827 -0.016872 -v -0.629678 6.747400 -0.181054 -v -0.645065 7.456246 0.114420 -v -0.610240 6.670014 0.107513 -v -0.784480 5.973367 0.123958 -v -0.637953 7.455005 0.432841 -v -0.413784 6.208827 -0.016872 -v -0.440888 6.323021 -0.358271 -v -0.807799 6.186929 4.345726 -v -0.613250 6.189570 3.985306 -v 0.586664 6.044359 -0.058251 -v 0.889556 -7.991921 -6.487401 -v -0.889556 -7.991921 -6.487401 -v 0.784480 5.973367 0.123958 -v 0.855096 7.454038 0.681172 -v 0.610240 6.670014 0.107513 -v 0.637953 7.455005 0.432841 -v 0.645065 7.456246 0.114420 -v 0.610240 6.670014 0.107513 -v 1.109136 6.187971 4.078715 -v 1.109136 6.193875 2.563060 -v 0.823423 6.188930 3.832172 -v 0.851242 7.447666 2.316916 -v 0.839998 6.483851 2.313161 -v 0.855295 6.193875 2.563060 -v 0.413784 6.208827 -0.016872 -v 0.440888 6.323021 -0.358271 -v 0.413784 6.208827 -0.016872 -v 0.629678 6.747400 -0.181054 -v 0.807799 6.186929 4.345726 -v 0.613250 6.189570 3.985306 -v 0.784649 4.758710 3.184810 -v 0.586664 6.044359 -0.058251 -v 0.613250 6.186937 4.344060 -v 0.613250 6.189570 3.985306 -v 0.823423 6.188930 3.832172 -v 0.808240 7.456246 0.114420 -v 1.109136 7.447666 2.316916 -v 0.851242 7.447666 2.316916 -v 0.839998 6.483851 2.313161 -v 1.109136 6.483851 2.313161 -v 0.855295 6.193875 2.563060 -v -0.330292 5.643600 3.823889 -v 0.367306 5.610397 4.110494 -v 0.613250 5.916148 3.869261 -v 0.330292 5.643600 3.823889 -v 0.613250 5.905007 4.230343 -v 0.613250 6.186937 4.344060 -v 0.807799 6.186929 4.345726 -v 0.804550 1.432484 2.382775 -v 0.804550 1.432484 2.382775 -v 0.775337 0.764493 2.107609 -v 0.864811 1.209287 1.297543 -v 0.866598 1.383340 1.228519 -v 0.853872 1.693580 1.365606 -v 0.836434 1.761413 1.534160 -v 1.109136 1.608211 2.157616 -v 0.804550 1.432484 2.382775 -v 0.836434 1.761413 1.534160 -v 1.109136 1.854146 1.546994 -v 0.853872 1.693580 1.365606 -v 1.109136 1.746315 1.309461 -v 0.866598 1.383340 1.228519 -v 1.109136 1.421237 1.150594 -v 0.864811 1.209287 1.297543 -v 1.109136 1.152737 1.225781 -v 0.775337 0.764493 2.107609 -v 1.109136 0.828570 1.868721 -v 0.775337 0.764493 2.107609 -v 0.818644 -8.777006 -1.761974 -v -0.613250 6.186937 4.344060 -v 1.326758 -8.130615 -6.048566 -v 0.882817 -7.449294 -6.242331 -v 1.332151 -7.578506 -5.806304 -v 1.260158 -8.694220 -2.041337 -v 1.263812 -9.320386 -2.284041 -v 0.549908 -9.201518 -0.329464 -v 0.637953 7.455005 0.432841 -v 0.610240 6.670014 0.107513 -v 0.586664 6.044359 -0.058251 -v -0.586664 6.044359 -0.058251 -v -0.639183 4.693711 3.350439 -v 0.639183 4.693711 3.350439 -v 0.784649 4.758710 3.184810 -v -1.109136 7.447666 2.316916 -v -0.851242 7.447666 2.316916 -v -0.807799 6.186929 4.345726 -v -0.775337 0.764493 2.107609 -v -0.853872 1.693580 1.365606 -v -0.804550 1.432484 2.382775 -v -0.775337 0.764493 2.107609 -v 0.613250 6.189570 3.985306 -v 1.109136 0.828570 1.868721 -v 0.527911 -9.865828 -0.558223 -v 0.645065 7.456246 0.114420 -v -0.645065 7.456246 0.114420 -vt 0.318637 0.836460 -vt 0.322686 0.835525 -vt 0.318469 0.836302 -vt 0.322662 0.829447 -vt 0.322506 0.829146 -vt 0.318606 0.828545 -vt 0.318439 0.828704 -vt 0.322533 0.835828 -vt 0.335540 0.815841 -vt 0.335689 0.816068 -vt 0.335880 0.815923 -vt 0.335363 0.817407 -vt 0.335570 0.817415 -vt 0.335928 0.815727 -vt 0.335827 0.815658 -vt 0.338110 0.834998 -vt 0.338521 0.834581 -vt 0.338361 0.834565 -vt 0.338450 0.830987 -vt 0.338327 0.831013 -vt 0.338045 0.830721 -vt 0.337797 0.829353 -vt 0.336791 0.829355 -vt 0.338509 0.816056 -vt 0.338639 0.815806 -vt 0.338293 0.815922 -vt 0.338229 0.815719 -vt 0.338328 0.815642 -vt 0.336756 0.815704 -vt 0.337372 0.815710 -vt 0.337407 0.815436 -vt 0.338796 0.817419 -vt 0.338027 0.834876 -vt 0.336577 0.834878 -vt 0.336494 0.835000 -vt 0.336242 0.834568 -vt 0.336082 0.834585 -vt 0.336266 0.831016 -vt 0.351326 0.453820 -vt 0.352262 0.453765 -vt 0.352318 0.454386 -vt 0.365837 0.453882 -vt 0.365836 0.454819 -vt 0.367442 0.455473 -vt 0.371353 0.455145 -vt 0.371355 0.453566 -vt 0.370947 0.453178 -vt 0.367444 0.453230 -vt 0.370945 0.455532 -vt 0.336143 0.830990 -vt 0.336546 0.830723 -vt 0.336722 0.815432 -vt 0.339004 0.817387 -vt 0.351343 0.454443 -vt 0.336608 0.810165 -vt 0.336600 0.809579 -vt 0.335671 0.810452 -vt 0.335670 0.810656 -vt 0.337063 0.810641 -vt 0.336849 0.810420 -vt 0.335654 0.809318 -vt 0.336833 0.809316 -vt 0.308406 0.833228 -vt 0.321347 0.832873 -vt 0.308400 0.831858 -vt 0.323003 0.827899 -vt 0.318606 0.827962 -vt 0.322837 0.831313 -vt 0.308428 0.831448 -vt 0.318119 0.828727 -vt 0.317924 0.828577 -vt 0.334726 0.805815 -vt 0.334724 0.806084 -vt 0.334898 0.805815 -vt 0.333853 0.806363 -vt 0.333448 0.810373 -vt 0.334505 0.806366 -vt 0.333637 0.805810 -vt 0.333465 0.805809 -vt 0.333636 0.806080 -vt 0.333393 0.820149 -vt 0.334845 0.820155 -vt 0.333471 0.811014 -vt 0.318642 0.837043 -vt 0.322847 0.833658 -vt 0.318149 0.836281 -vt 0.308437 0.833638 -vt 0.317955 0.836433 -vt 0.321830 0.833071 -vt 0.321344 0.832110 -vt 0.321826 0.831909 -vt 0.338990 0.829527 -vt 0.338986 0.832448 -vt 0.340382 0.829528 -vt 0.323455 0.829763 -vt 0.308753 0.828027 -vt 0.334875 0.810379 -vt 0.334847 0.811020 -vt 0.317906 0.837069 -vt 0.308789 0.837056 -vt 0.323039 0.837070 -vt 0.337112 0.810416 -vt 0.335399 0.818676 -vt 0.335644 0.820232 -vt 0.335864 0.819933 -vt 0.322740 0.833285 -vt 0.335363 0.817407 -vt 0.335368 0.818297 -vt 0.335604 0.818285 -vt 0.335628 0.818648 -vt 0.336965 0.813654 -vt 0.337545 0.812323 -vt 0.336761 0.811981 -vt 0.336450 0.819974 -vt 0.336387 0.820399 -vt 0.336865 0.820333 -vt 0.336109 0.820051 -vt 0.336132 0.820332 -vt 0.318573 0.837406 -vt 0.297273 0.862936 -vt 0.296468 0.862987 -vt 0.296450 0.863484 -vt 0.296375 0.863361 -vt 0.296982 0.862655 -vt 0.296349 0.862774 -vt 0.296468 0.862987 -vt 0.296171 0.863007 -vt 0.296386 0.863086 -vt 0.296139 0.863393 -vt 0.296375 0.863361 -vt 0.296301 0.863656 -vt 0.296450 0.863484 -vt 0.296981 0.863857 -vt 0.297271 0.863612 -vt 0.308818 0.837437 -vt 0.360171 0.453244 -vt 0.360165 0.453779 -vt 0.359601 0.453718 -vt 0.363650 0.453662 -vt 0.363616 0.454257 -vt 0.365371 0.453864 -vt 0.365306 0.454484 -vt 0.336615 0.811674 -vt 0.336865 0.813929 -vt 0.336111 0.813900 -vt 0.335542 0.813822 -vt 0.335664 0.813999 -vt 0.336339 0.815514 -vt 0.335928 0.815727 -vt 0.336384 0.815738 -vt 0.335562 0.813576 -vt 0.335880 0.815923 -vt 0.336756 0.815704 -vt 0.336722 0.815432 -vt 0.335975 0.820462 -vt 0.336109 0.820051 -vt 0.335363 0.814848 -vt 0.358032 0.453178 -vt 0.359611 0.453190 -vt 0.335454 0.806199 -vt 0.336854 0.806081 -vt 0.335993 0.805859 -vt 0.338293 0.815922 -vt 0.338229 0.815719 -vt 0.337754 0.815749 -vt 0.338970 0.820225 -vt 0.339108 0.818663 -vt 0.338736 0.819939 -vt 0.337473 0.807394 -vt 0.336699 0.807758 -vt 0.336562 0.808069 -vt 0.335538 0.814723 -vt 0.337407 0.815436 -vt 0.337372 0.815710 -vt 0.337796 0.815517 -vt 0.338647 0.820469 -vt 0.338501 0.820063 -vt 0.335647 0.809115 -vt 0.335427 0.805954 -vt 0.338482 0.820342 -vt 0.337096 0.809313 -vt 0.337040 0.809089 -vt 0.322734 0.831687 -vt 0.339004 0.817387 -vt 0.338796 0.817419 -vt 0.338866 0.818294 -vt 0.339103 0.818281 -vt 0.338879 0.818655 -vt 0.336917 0.819991 -vt 0.337747 0.820341 -vt 0.338164 0.819987 -vt 0.337700 0.819998 -vt 0.338225 0.820410 -vt 0.338482 0.820342 -vt 0.323089 0.827553 -vt 0.318534 0.827599 -vt 0.299359 0.862966 -vt 0.299357 0.863640 -vt 0.300188 0.863503 -vt 0.300265 0.863381 -vt 0.300257 0.863103 -vt 0.300174 0.863004 -vt 0.299646 0.862698 -vt 0.299359 0.862966 -vt 0.300174 0.863004 -vt 0.300297 0.862779 -vt 0.300257 0.863103 -vt 0.300477 0.863024 -vt 0.300265 0.863381 -vt 0.300502 0.863417 -vt 0.300188 0.863503 -vt 0.300332 0.863678 -vt 0.299357 0.863640 -vt 0.317870 0.827942 -vt 0.317895 0.827574 -vt 0.308779 0.827646 -vt 0.336132 0.820332 -vt 0.357471 0.453223 -vt 0.358034 0.453706 -vt 0.357469 0.453758 -vt 0.354011 0.454184 -vt 0.353986 0.453589 -vt 0.352318 0.454386 -vt 0.336746 0.805809 -vt 0.335925 0.814967 -vt 0.340207 0.829355 -vt 0.339165 0.829353 -vt 0.339115 0.832606 -vt 0.340249 0.832608 -vt 0.340379 0.832450 -vt 0.323476 0.835203 -vt 0.335570 0.817415 -vt 0.323128 0.837416 -vt 0.297271 0.863612 -vt 0.296386 0.863086 -vt 0.297273 0.862936 -vt 0.317935 0.837436 -vt 0.338501 0.820063 -vt 0.299652 0.863857 -vt 0.352262 0.453765 -vt 0.322736 0.831880 -vt 0.322741 0.833092 -vn -1.0000 0.0000 0.0000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 1.0000 0.0039 -vn -0.0000 0.9588 0.2841 -vn 0.0000 0.9484 0.3172 -vn 0.0000 -0.3256 0.9455 -vn 0.0000 -0.9535 -0.3014 -vn 0.1103 0.4144 -0.9034 -vn -0.0735 0.4256 -0.9019 -vn 0.3275 0.3966 -0.8576 -vn 0.9708 0.1320 -0.2001 -vn 0.7758 0.2586 -0.5755 -vn 0.4477 0.3447 -0.8251 -vn -0.3560 0.3788 -0.8543 -vn -0.5482 0.3301 -0.7685 -vn -0.1944 0.3772 -0.9055 -vn -0.0010 0.3847 -0.9230 -vn 0.1540 0.3797 -0.9122 -vn 0.8357 -0.2111 0.5070 -vn 0.9636 -0.1035 0.2467 -vn 0.9886 0.0575 -0.1389 -vn 0.9535 0.1154 -0.2784 -vn -0.0080 -0.3741 0.9274 -vn 0.0012 -0.3791 0.9254 -vn 0.2219 -0.3696 0.9023 -vn -0.0034 -0.3819 0.9242 -vn -0.1726 -0.3764 0.9102 -vn 0.0022 -0.3819 0.9242 -vn 0.0080 -0.3741 0.9274 -vn -0.2219 -0.3696 0.9023 -vn -0.0011 -0.3791 0.9254 -vn -0.4729 -0.3319 0.8162 -vn 0.3572 -0.3516 0.8653 -vn -0.1539 -0.3721 0.9154 -vn -0.9636 -0.1035 0.2467 -vn -0.9886 0.0575 -0.1389 -vn -0.9535 0.1154 -0.2784 -vn -0.0009 0.3847 -0.9230 -vn 0.0010 0.3847 -0.9230 -vn 0.0009 0.3847 -0.9230 -vn 0.0000 0.9310 0.3650 -vn 0.0000 0.9300 0.3676 -vn 0.0000 0.9302 0.3669 -vn 0.9710 -0.0914 0.2209 -vn 0.2322 -0.3719 0.8988 -vn 0.1539 -0.3734 0.9148 -vn -0.8442 -0.2022 0.4964 -vn -0.9710 -0.0914 0.2209 -vn -0.8357 -0.2111 0.5070 -vn 0.5563 0.3246 -0.7649 -vn 0.0001 0.9608 0.2772 -vn -0.0015 1.0000 0.0040 -vn -0.0014 1.0000 0.0023 -vn -0.5115 0.3297 -0.7935 -vn 0.0000 -0.0039 1.0000 -vn 0.0001 0.4597 0.8881 -vn 0.0000 0.2278 0.9737 -vn -0.0000 0.8351 0.5501 -vn 0.9387 -0.0984 0.3305 -vn 0.9999 0.0117 -0.0023 -vn 0.9998 0.0092 0.0149 -vn 0.9323 0.3580 0.0512 -vn 0.9411 0.3379 0.0104 -vn 0.5309 0.8401 0.1116 -vn -0.9980 -0.0211 0.0598 -vn -0.9970 0.0146 0.0763 -vn -0.9979 -0.0076 0.0647 -vn -0.9959 0.0068 0.0899 -vn -0.2927 -0.8910 -0.3470 -vn -0.3083 -0.9391 0.1520 -vn -0.3077 -0.9451 -0.1103 -vn -0.3087 -0.5872 0.7483 -vn -0.2906 -0.7546 0.5883 -vn -0.3189 0.0702 0.9452 -vn -0.3014 -0.1559 0.9407 -vn -0.2877 0.6969 0.6569 -vn -0.3131 0.5002 0.8073 -vn -0.1491 0.8829 0.4452 -vn -0.2405 0.8515 0.4659 -vn -0.9295 0.1497 -0.3372 -vn -0.9281 0.1420 -0.3443 -vn -0.3883 0.3779 -0.8405 -vn -0.9660 -0.0947 0.2406 -vn -0.9906 -0.0493 0.1279 -vn -0.9257 -0.1502 0.3472 -vn -0.9273 -0.1397 0.3472 -vn 0.9997 0.0240 0.0100 -vn 0.9368 -0.1053 0.3338 -vn 0.8731 -0.0619 0.4836 -vn 0.2534 -0.2345 0.9385 -vn 0.0038 -0.2478 0.9688 -vn 0.9613 0.2751 0.0139 -vn 0.9983 0.0446 -0.0387 -vn 0.8731 -0.0618 0.4836 -vn 0.9557 -0.0568 0.2888 -vn 0.9367 -0.1053 0.3338 -vn 0.9220 0.3843 0.0482 -vn 0.9207 0.3862 0.0561 -vn -0.0011 1.0000 0.0067 -vn -0.0020 1.0000 0.0042 -vn -0.1880 -0.2385 0.9528 -vn 0.2591 0.4017 -0.8784 -vn -0.3925 0.3826 -0.8364 -vn -0.9557 -0.0568 0.2888 -vn -0.9387 -0.0984 0.3305 -vn -0.8731 -0.0618 0.4836 -vn -0.9367 -0.1053 0.3338 -vn -0.9983 0.0446 -0.0387 -vn 0.0015 1.0000 0.0040 -vn -0.0000 0.9608 0.2772 -vn 0.0012 1.0000 0.0025 -vn -0.9999 0.0117 -0.0023 -vn -0.9998 0.0092 0.0149 -vn -0.9997 0.0240 0.0100 -vn -0.0058 -0.2497 0.9683 -vn -0.9207 0.3862 0.0561 -vn -0.9220 0.3843 0.0482 -vn -0.9613 0.2751 0.0139 -vn 0.0011 1.0000 0.0067 -vn 0.0020 1.0000 0.0042 -vn -0.9140 0.1852 -0.3611 -vn -0.0000 1.0000 0.0073 -vn -0.5563 0.3246 -0.7649 -vn -0.7857 0.2615 -0.5606 -vn 0.5115 0.3297 -0.7935 -vn 0.0000 0.4597 0.8881 -vn 0.2491 0.9578 0.1431 -vn -0.4021 0.9083 0.1151 -vn -0.9323 0.3580 0.0512 -vn -0.3771 0.9132 0.1545 -vn -0.9411 0.3379 0.0104 -vn 0.9980 -0.0211 0.0598 -vn 0.9949 -0.0724 0.0701 -vn 0.9979 -0.0076 0.0647 -vn 0.9959 0.0068 0.0899 -vn 0.9944 -0.0057 0.1052 -vn 0.9970 0.0146 0.0763 -vn 0.2927 -0.8910 -0.3470 -vn 0.2692 -0.9013 -0.3393 -vn 0.3091 -0.9446 -0.1104 -vn 0.3083 -0.9391 0.1520 -vn 0.2906 -0.7546 0.5883 -vn 0.3087 -0.5872 0.7483 -vn 0.3014 -0.1559 0.9407 -vn 0.3189 0.0702 0.9452 -vn 0.3131 0.5002 0.8073 -vn 0.2877 0.6969 0.6569 -vn 0.2405 0.8515 0.4659 -vn 0.8442 -0.2022 0.4964 -vn 0.1539 -0.3733 0.9148 -vn 0.9294 0.1498 -0.3372 -vn 0.5126 0.3515 -0.7834 -vn 0.9281 0.1420 -0.3443 -vn 0.9906 -0.0493 0.1279 -vn 0.9660 -0.0947 0.2406 -vn 0.9273 -0.1397 0.3472 -vn -0.9368 -0.1053 0.3338 -vn -0.8731 -0.0619 0.4836 -vn 0.0000 0.9318 0.3630 -vn 0.0000 0.9309 0.3653 -vn -0.0000 0.9303 0.3668 -vn -0.9949 -0.0724 0.0701 -vn -0.9944 -0.0057 0.1052 -vn -0.2692 -0.9013 -0.3393 -vn -0.1539 -0.3720 0.9154 -vn 0.1491 0.8829 0.4452 -vn 0.9257 -0.1502 0.3472 -vn 0.0000 0.3847 -0.9230 -s off -f 1230/1241/381 1231/1242/381 1232/1243/381 -f 1233/1244/382 1234/1245/382 1235/1246/382 -f 1233/1244/382 1235/1246/382 1236/1247/382 -f 1230/1241/381 1237/1248/381 1231/1242/381 -f 1238/1249/383 1239/1250/383 1240/1251/383 -f 1238/1249/383 1241/1252/383 1242/1253/383 -f 1240/1251/383 1243/1254/383 1244/1255/383 -f 1245/1256/384 1246/1257/384 1247/1258/384 -f 1246/1257/384 1248/1259/384 1249/1260/384 -f 1244/1255/383 1238/1249/383 1240/1251/383 -f 1250/1261/384 1251/1262/384 1252/1263/384 -f 1253/1264/383 1254/1265/383 1255/1266/383 -f 1256/1267/383 1255/1266/383 1257/1268/383 -f 1258/1269/385 1259/1270/385 1260/1271/385 -f 1254/1265/383 1253/1264/383 1261/1272/383 -f 1245/1256/384 1262/1273/384 1263/1274/384 -f 1264/1275/384 1263/1274/384 1265/1276/384 -f 1266/1277/384 1265/1276/384 1267/1278/384 -f 1268/1279/386 1269/1280/386 1270/1281/386 -f 1254/1265/383 1257/1268/383 1255/1266/383 -f 1271/1282/387 1272/1283/387 1273/1284/387 -f 1274/1285/387 1275/1286/387 1276/1287/387 -f 1277/1288/387 1273/1284/387 1278/1289/387 -f 1279/1290/384 1267/1278/384 1280/1291/384 -f 1239/1250/383 1238/1249/383 1242/1253/383 -f 1262/1273/384 1245/1256/384 1247/1258/384 -f 1247/1258/384 1246/1257/384 1249/1260/384 -f 1280/1291/384 1250/1261/384 1252/1263/384 -f 1281/1292/385 1258/1269/385 1260/1271/385 -f 1282/1293/383 1254/1265/383 1261/1272/383 -f 1264/1275/384 1245/1256/384 1263/1274/384 -f 1266/1277/384 1264/1275/384 1265/1276/384 -f 1279/1290/384 1266/1277/384 1267/1278/384 -f 1283/1294/386 1268/1279/386 1270/1281/386 -f 1277/1288/387 1271/1282/387 1273/1284/387 -f 1278/1289/387 1274/1285/387 1276/1287/387 -f 1276/1287/387 1277/1288/387 1278/1289/387 -f 1252/1263/384 1279/1290/384 1280/1291/384 -f 1250/1261/384 1249/1260/384 1251/1262/384 -s 1 -f 1284/1295/388 1285/1296/389 1286/1297/390 -f 1286/1297/390 1287/1298/391 1288/1299/392 -f 1286/1297/390 1289/1300/393 1284/1295/388 -f 1285/1296/389 1290/1301/394 1286/1297/390 -f 1285/1296/389 1291/1302/395 1290/1301/394 -f 1292/1303/396 1293/1304/397 1294/1305/398 -f 1295/1306/399 1296/1307/400 1234/1245/382 -f 1297/1308/401 1233/1244/382 1236/1247/382 -f 1298/1309/402 1297/1308/401 1299/1310/382 -f 1299/1310/382 1300/1311/382 1298/1309/402 -f 1301/1312/403 1302/1313/404 1303/1314/405 -f 1304/1315/406 1305/1316/407 1306/1317/408 -f 1307/1318/409 1308/1319/410 1309/1320/411 -f 1310/1321/412 1311/1322/413 1312/1323/414 -f 1230/1241/381 1313/1324/415 1237/1248/381 -f 1232/1243/381 1314/1325/416 1315/1326/381 -f 1315/1326/381 1316/1327/417 1317/1328/381 -f 1292/1303/396 1318/1329/418 1293/1304/397 -f 1293/1304/397 1319/1330/419 1294/1305/398 -f 1294/1305/398 1319/1330/419 1320/1331/420 -f 1321/1332/421 1322/1333/422 1323/1334/423 -f 1297/1308/401 1324/1335/382 1233/1244/382 -f 1296/1307/400 1235/1246/382 1234/1245/382 -f 1297/1308/401 1236/1247/382 1299/1310/382 -f 1300/1311/382 1325/1336/424 1298/1309/402 -f 1302/1313/404 1326/1337/425 1303/1314/405 -f 1302/1313/404 1306/1317/408 1326/1337/425 -f 1305/1316/407 1326/1337/425 1306/1317/408 -f 1304/1315/406 1309/1320/411 1305/1316/407 -f 1308/1319/410 1305/1316/407 1309/1320/411 -f 1311/1322/413 1327/1338/426 1312/1323/414 -f 1328/1339/427 1317/1328/381 1329/1340/428 -f 1231/1242/381 1314/1325/416 1232/1243/381 -f 1313/1324/415 1330/1341/429 1237/1248/381 -f 1314/1325/416 1316/1327/417 1315/1326/381 -f 1316/1327/417 1329/1340/428 1317/1328/381 -f 1288/1299/392 1331/1342/430 1289/1300/393 -f 1332/1343/431 1333/1344/432 1334/1345/433 -f 1335/1346/434 1292/1303/396 1316/1327/417 -f 1336/1347/435 1337/1348/436 1338/1349/437 -f 1337/1348/436 1332/1343/431 1339/1350/438 -f 1340/1351/439 1341/1352/440 1342/1353/441 -f 1343/1354/442 1344/1355/443 1345/1356/444 -f 1343/1354/442 1346/1357/382 1347/1358/382 -f 1330/1341/429 1313/1324/415 1348/1359/407 -f 1349/1360/445 1350/1361/446 1351/1362/447 -f 1352/1363/448 1351/1362/447 1350/1361/446 -f 1353/1364/449 1354/1365/450 1355/1366/451 -f 1354/1365/450 1356/1367/452 1357/1368/453 -f 1356/1367/452 1358/1369/454 1359/1370/455 -f 1358/1369/454 1360/1371/456 1361/1372/457 -f 1360/1371/456 1362/1373/458 1363/1374/459 -f 1328/1339/427 1329/1340/428 1364/1375/412 -f 1365/1376/460 1366/1377/461 1367/1378/462 -f 1365/1376/460 1368/1379/463 1369/1380/464 -f 1368/1379/463 1370/1381/465 1371/1382/466 -f 1287/1298/391 1372/1383/467 1288/1299/392 -f 1373/1384/468 1340/1351/439 1374/1385/469 -f 1374/1385/469 1375/1386/470 1376/1387/471 -f 1377/1388/472 1378/1389/473 1379/1390/474 -f 1340/1351/439 1380/1391/475 1374/1385/469 -f 1378/1389/473 1381/1392/476 1379/1390/474 -f 1380/1391/475 1342/1353/441 1372/1383/467 -f 1382/1393/477 1383/1394/478 1377/1388/472 -f 1333/1344/432 1384/1395/479 1385/1396/480 -f 1380/1391/475 1340/1351/439 1342/1353/441 -f 1339/1350/438 1332/1343/431 1334/1345/433 -f 1287/1298/391 1380/1391/475 1372/1383/467 -f 1374/1385/469 1380/1391/475 1375/1386/470 -f 1375/1386/470 1386/1397/481 1376/1387/471 -f 1379/1390/474 1382/1393/477 1377/1388/472 -f 1387/1398/482 1388/1399/483 1367/1378/462 -f 1389/1400/484 1390/1401/485 1391/1402/486 -f 1392/1403/487 1393/1404/488 1394/1405/486 -f 1395/1406/489 1396/1407/490 1397/1408/491 -f 1398/1409/492 1390/1401/485 1399/1410/493 -f 1399/1410/493 1389/1400/484 1400/1411/494 -f 1376/1387/471 1386/1397/481 1401/1412/495 -f 1402/1413/496 1403/1414/497 1404/1415/498 -f 1405/1416/499 1395/1406/489 1406/1417/500 -f 1390/1401/485 1389/1400/484 1399/1410/493 -f 1389/1400/484 1407/1418/501 1400/1411/494 -f 1389/1400/484 1391/1402/486 1408/1419/481 -f 1403/1414/497 1394/1405/486 1404/1415/498 -f 1395/1406/489 1397/1408/491 1406/1417/500 -f 1405/1416/499 1406/1417/500 1409/1420/502 -f 1291/1302/395 1410/1421/503 1411/1422/504 -f 1334/1345/433 1333/1344/432 1385/1396/480 -f 1412/1423/505 1297/1308/401 1298/1309/402 -f 1413/1424/435 1414/1425/435 1415/1426/437 -f 1416/1427/506 1415/1426/437 1417/1428/438 -f 1418/1429/507 1345/1356/444 1419/1430/508 -f 1420/1431/509 1421/1432/510 1419/1430/508 -f 1420/1431/509 1422/1433/511 1423/1434/381 -f 1295/1306/399 1424/1435/405 1425/1436/425 -f 1426/1437/512 1427/1438/513 1428/1439/514 -f 1429/1440/515 1430/1441/516 1431/1442/517 -f 1432/1443/518 1433/1444/519 1434/1445/520 -f 1435/1446/521 1434/1445/520 1436/1447/522 -f 1437/1448/523 1436/1447/522 1438/1449/524 -f 1439/1450/525 1438/1449/524 1440/1451/526 -f 1441/1452/527 1440/1451/526 1442/1453/528 -f 1443/1454/529 1444/1455/530 1445/1456/413 -f 1385/1396/480 1384/1395/479 1446/1457/502 -f 1447/1458/531 1387/1398/482 1448/1459/532 -f 1447/1458/531 1449/1460/533 1450/1461/534 -f 1451/1462/535 1450/1461/534 1452/1463/536 -f 1400/1411/494 1407/1418/501 1411/1422/504 -f 1390/1401/485 1453/1464/537 1391/1402/486 -f 1386/1397/481 1454/1465/538 1401/1412/495 -f 1393/1404/488 1404/1415/498 1394/1405/486 -f 1396/1407/490 1417/1428/438 1397/1408/491 -f 1249/1260/384 1248/1259/384 1251/1262/384 -f 1312/1323/414 1327/1338/426 1305/1316/407 -f 1455/1466/539 1456/1467/539 1321/1332/421 -f 1457/1468/540 1458/1469/540 1459/1470/541 -f 1322/1333/422 1459/1470/541 1323/1334/423 -f 1411/1422/504 1407/1418/501 1291/1302/395 -f 1300/1311/382 1443/1454/529 1325/1336/424 -f 1327/1338/426 1326/1337/425 1305/1316/407 -f 1231/1242/381 1460/1471/381 1314/1325/416 -f 1407/1418/501 1290/1301/394 1291/1302/395 -f 1289/1300/393 1286/1297/390 1288/1299/392 -f 1314/1325/416 1335/1346/434 1316/1327/417 -f 1461/1472/435 1336/1347/435 1338/1349/437 -f 1338/1349/437 1337/1348/436 1339/1350/438 -f 1418/1429/507 1343/1354/442 1345/1356/444 -f 1344/1355/443 1343/1354/442 1347/1358/382 -f 1462/1473/410 1330/1341/429 1348/1359/407 -f 1463/1474/542 1349/1360/445 1351/1362/447 -f 1464/1475/543 1352/1363/448 1350/1361/446 -f 1465/1476/544 1353/1364/449 1355/1366/451 -f 1355/1366/451 1354/1365/450 1357/1368/453 -f 1357/1368/453 1356/1367/452 1359/1370/455 -f 1359/1370/455 1358/1369/454 1361/1372/457 -f 1361/1372/457 1360/1371/456 1363/1374/459 -f 1466/1477/545 1328/1339/427 1364/1375/412 -f 1388/1399/483 1365/1376/460 1367/1378/462 -f 1366/1377/461 1365/1376/460 1369/1380/464 -f 1369/1380/464 1368/1379/463 1371/1382/466 -f 1448/1459/532 1387/1398/482 1367/1378/462 -f 1294/1305/398 1412/1423/505 1298/1309/402 -f 1416/1427/506 1413/1424/435 1415/1426/437 -f 1396/1407/490 1416/1427/506 1417/1428/438 -f 1421/1432/510 1418/1429/507 1419/1430/508 -f 1422/1433/511 1420/1431/509 1419/1430/508 -f 1467/1478/381 1420/1431/509 1423/1434/381 -f 1296/1307/400 1295/1306/399 1425/1436/425 -f 1431/1442/517 1426/1437/512 1428/1439/514 -f 1428/1439/514 1429/1440/515 1431/1442/517 -f 1435/1446/521 1432/1443/518 1434/1445/520 -f 1437/1448/523 1435/1446/521 1436/1447/522 -f 1439/1450/525 1437/1448/523 1438/1449/524 -f 1441/1452/527 1439/1450/525 1440/1451/526 -f 1468/1479/546 1441/1452/527 1442/1453/528 -f 1325/1336/424 1443/1454/529 1445/1456/413 -f 1449/1460/533 1447/1458/531 1448/1459/532 -f 1451/1462/535 1447/1458/531 1450/1461/534 -f 1469/1480/547 1451/1462/535 1452/1463/536 -f 1323/1334/423 1455/1466/539 1321/1332/421 -f 1322/1333/422 1457/1468/540 1459/1470/541 -f 1294/1305/398 1320/1331/420 1470/1481/548 -f 1294/1305/398 1470/1481/548 1412/1423/505 -f 1292/1303/396 1335/1346/434 1471/1482/548 -f 1292/1303/396 1471/1482/548 1318/1329/418 +f 31/1/3 33/2/4 32/1/3 +f 32/1/3 35/1/5 31/1/3 +f 36/1/5 37/1/6 35/1/5 +f 38/1/6 39/1/7 37/1/6 +f 40/1/7 41/1/8 39/1/7 +f 42/1/8 43/1/9 41/1/8 +f 44/1/9 45/1/10 43/1/9 +f 46/1/10 47/1/11 45/1/10 +f 48/1/11 49/1/12 47/1/11 +f 50/1/12 51/1/13 49/1/12 +f 52/1/13 53/1/14 51/1/13 +f 54/1/14 55/1/15 53/1/14 +f 56/1/15 57/1/16 55/1/15 +f 58/1/16 59/1/17 57/1/16 +f 34/2/4 60/1/17 33/2/4 +f 31/1/3 34/2/4 33/2/4 +f 32/1/3 36/1/5 35/1/5 +f 36/1/5 38/1/6 37/1/6 +f 38/1/6 40/1/7 39/1/7 +f 40/1/7 42/1/8 41/1/8 +f 42/1/8 44/1/9 43/1/9 +f 44/1/9 46/1/10 45/1/10 +f 46/1/10 48/1/11 47/1/11 +f 48/1/11 50/1/12 49/1/12 +f 50/1/12 52/1/13 51/1/13 +f 52/1/13 54/1/14 53/1/14 +f 54/1/14 56/1/15 55/1/15 +f 56/1/15 58/1/16 57/1/16 +f 58/1/16 60/1/17 59/1/17 +f 34/2/4 59/1/17 60/1/17 o lower_pistol_0 -v 1.709833 6.807340 5.318413 -v 1.709833 6.807340 5.149458 -v 1.965886 6.807340 5.149458 -v 1.363295 6.807340 7.165412 -v 1.363295 6.807340 5.318413 -v 1.882584 6.807340 5.848535 +v 1.709833 6.807342 5.318411 +v 1.709833 6.807342 5.149457 +v 1.965886 6.807342 5.149457 +v 1.363295 6.807342 7.165411 +v 1.363295 6.807342 5.318411 +v 1.882584 6.807342 5.848535 v 2.253843 6.902664 -4.747439 v 2.253843 6.534985 -3.056432 v 1.924818 6.534985 -3.056432 @@ -4710,244 +154,244 @@ v 1.924818 6.534985 -3.056432 v 2.253843 6.534985 -3.056432 v 2.253843 6.534985 -3.056432 v 2.253843 6.902664 -4.747439 -v 2.253843 7.162437 -4.697546 +v 2.253843 7.162436 -4.697546 v 1.924818 6.930664 -2.831019 v 1.592578 6.930664 -2.831019 -v 1.592578 7.603653 -2.269642 +v 1.592578 7.603653 -2.269644 v 1.592578 6.534985 -3.056432 v 1.592578 6.902664 -4.747439 v 1.924818 6.125614 -1.931486 v 1.592578 6.902664 -4.747439 -v 1.592578 7.162437 -4.697546 -v 2.253843 7.162437 -4.697546 -v 2.253843 7.603653 -2.269642 -v 2.253843 7.371370 -2.466391 -v 1.924818 7.371370 -2.466391 -v 2.253843 7.371370 -2.466391 -v 2.253843 7.603653 -2.269642 -v 2.253843 6.966193 -1.398447 -v 2.253843 7.603653 -2.269642 -v 1.592578 7.603653 -2.269642 -v 1.592578 6.966193 -1.398447 -v 1.592578 7.162437 -4.697546 +v 1.592578 7.162436 -4.697546 +v 2.253843 7.162436 -4.697546 +v 2.253843 7.603653 -2.269644 +v 2.253843 7.371370 -2.466393 +v 1.924818 7.371370 -2.466393 +v 2.253843 7.371370 -2.466393 +v 2.253843 7.603653 -2.269644 +v 2.253843 6.966193 -1.398448 +v 2.253843 7.603653 -2.269644 +v 1.592578 7.603653 -2.269644 +v 1.592578 6.966193 -1.398448 +v 1.592578 7.162436 -4.697546 v 1.592578 6.902664 -4.747439 v 1.592578 6.534985 -3.056432 v 2.253843 6.930664 -2.831019 -v 2.253843 7.162437 -4.697546 -v 1.592578 7.162437 -4.697546 -v 1.924818 7.371370 -2.466391 +v 2.253843 7.162436 -4.697546 +v 1.592578 7.162436 -4.697546 +v 1.924818 7.371370 -2.466393 v 1.924818 6.726052 -1.549974 v 1.924818 6.125614 -1.931486 -v 2.253843 6.966193 -1.398447 -v 1.592578 6.966193 -1.398447 +v 2.253843 6.966193 -1.398448 +v 1.592578 6.966193 -1.398448 v 1.924818 6.726052 -1.549974 -v 1.709833 7.483092 5.149458 -v 1.709833 6.807340 5.149458 -v 1.709833 7.118922 5.318413 -v 1.363295 7.118922 5.318413 -v 1.363295 6.807340 7.165412 -v 1.363295 7.118922 10.804636 -v 1.363295 6.201983 10.638463 -v 1.363295 6.617640 11.001136 -v 1.363295 7.118922 10.804636 -v 1.882584 7.118922 7.165412 -v 1.363295 7.118922 5.318413 -v 2.249606 7.118922 10.804636 -v 2.249606 7.118922 7.165412 +v 1.709833 7.483092 5.149457 +v 1.709833 6.807342 5.149457 +v 1.709833 7.118924 5.318411 +v 1.363295 7.118924 5.318411 +v 1.363295 6.807342 7.165411 +v 1.363295 7.118924 10.804634 +v 1.363295 6.201985 10.638463 +v 1.363295 6.617642 11.001134 +v 1.363295 7.118924 10.804634 +v 1.882584 7.118924 7.165411 +v 1.363295 7.118924 5.318411 +v 2.249606 7.118924 10.804634 +v 2.249606 7.118924 7.165411 v 1.709833 7.483090 5.848535 v 1.709833 7.483090 5.848535 -v 1.882584 7.118922 5.848535 +v 1.882584 7.118924 5.848535 v 1.965886 7.483090 5.848535 -v 2.249606 7.118922 10.804636 -v 2.249606 6.617640 11.001136 -v 2.249606 6.201983 10.638463 -v 2.249606 7.118922 7.165412 -v 1.363295 6.915576 11.004508 -v 1.363295 6.411723 10.933466 -v 1.709833 7.118922 5.848535 -v 1.709833 7.118922 5.848535 -v 1.882584 6.807340 5.848535 -v 1.965886 6.807340 5.848535 -v 2.249606 6.411723 10.933466 -v 2.249606 6.807340 7.165412 -v 2.249606 6.807340 7.165412 -v 2.249606 6.201983 10.638463 -v 1.363295 6.201983 10.638463 -v 1.363295 6.915576 11.004508 -v 2.249606 6.915576 11.004508 -v 1.363295 6.617640 11.001136 -v 2.249606 6.617640 11.001136 -v 1.363295 6.411723 10.933466 -v 2.249606 6.411723 10.933466 -v 1.882584 6.807340 7.165412 -v 1.709833 7.118922 5.318413 -v 1.363295 6.807340 5.318413 -v 1.363295 7.118922 5.318413 -v 1.709833 7.118922 5.318413 -v 1.709833 6.807340 5.149458 -v 1.709833 7.483092 5.149458 -v 1.965886 7.483092 5.149458 -v 1.965886 7.483092 5.149458 -v 1.709833 7.483092 5.149458 +v 2.249606 7.118924 10.804634 +v 2.249606 6.617642 11.001134 +v 2.249606 6.201985 10.638463 +v 2.249606 7.118924 7.165411 +v 1.363295 6.915578 11.004506 +v 1.363295 6.411725 10.933464 +v 1.709833 7.118924 5.848535 +v 1.709833 7.118924 5.848535 +v 1.882584 6.807342 5.848535 +v 1.965886 6.807342 5.848535 +v 2.249606 6.411725 10.933464 +v 2.249606 6.807342 7.165411 +v 2.249606 6.807342 7.165411 +v 2.249606 6.201985 10.638463 +v 1.363295 6.201985 10.638463 +v 1.363295 6.915578 11.004506 +v 2.249606 6.915578 11.004506 +v 1.363295 6.617642 11.001134 +v 2.249606 6.617642 11.001134 +v 1.363295 6.411725 10.933464 +v 2.249606 6.411725 10.933464 +v 1.882584 6.807342 7.165411 +v 1.709833 7.118924 5.318411 +v 1.363295 6.807342 5.318411 +v 1.363295 7.118924 5.318411 +v 1.709833 7.118924 5.318411 +v 1.709833 6.807342 5.149457 +v 1.709833 7.483092 5.149457 +v 1.965886 7.483092 5.149457 +v 1.965886 7.483092 5.149457 +v 1.709833 7.483092 5.149457 v 1.709833 7.483090 5.848535 -v 1.965886 6.807340 5.149458 -v 1.965886 7.483092 5.149458 +v 1.965886 6.807342 5.149457 +v 1.965886 7.483092 5.149457 v 1.965886 7.483090 5.848535 -v 1.882584 6.807340 5.848535 -v 1.882584 7.118922 5.848535 -v 1.882584 7.118922 7.165412 -v 1.882584 6.807340 7.165412 -v 1.882584 7.118922 7.165412 -v 2.249606 7.118922 7.165412 -v 1.363295 6.807340 5.318413 -v 1.882584 7.118922 5.848535 -v 1.709833 6.807340 5.318413 -v 1.709833 7.118922 5.848535 -v 2.249606 6.915576 11.004508 +v 1.882584 6.807342 5.848535 +v 1.882584 7.118924 5.848535 +v 1.882584 7.118924 7.165411 +v 1.882584 6.807342 7.165411 +v 1.882584 7.118924 7.165411 +v 2.249606 7.118924 7.165411 +v 1.363295 6.807342 5.318411 +v 1.882584 7.118924 5.848535 +v 1.709833 6.807342 5.318411 +v 1.709833 7.118924 5.848535 +v 2.249606 6.915578 11.004506 v 0.741864 8.870750 5.649786 v 0.685393 8.586851 5.649786 -v 0.685393 8.586849 22.443676 +v 0.685393 8.586853 22.443676 v -1.051055 4.245723 5.289183 v -1.051055 4.815591 5.698347 -v -1.582758 4.978194 4.997455 -v -1.051055 0.126897 9.525374 +v -1.582758 4.978196 4.997455 +v -1.051055 0.126899 9.525374 v -1.051055 0.126897 6.278877 v -1.051055 -0.223472 3.408138 -v -1.051055 5.194825 19.361946 -v -1.051055 4.834128 12.349441 -v -1.051055 4.834128 19.361946 -v -1.582758 5.194827 5.282278 -v -1.373788 7.218982 19.361946 -v -1.373788 6.342137 19.361946 -v -0.857694 7.218982 19.361946 -v -1.051055 5.194825 19.361946 -v -0.857694 5.453605 19.361946 -v -1.373788 5.534109 19.361946 -v 0.741864 8.870749 22.443676 -v 0.685393 8.586849 22.443676 -v 0.912610 8.492733 22.443676 -v 0.987802 8.870749 22.443676 -v 0.912610 8.492733 22.443676 +v -1.051055 5.194829 19.361946 +v -1.051055 4.834130 12.349441 +v -1.051055 4.834130 19.361946 +v -1.582758 5.194829 5.282278 +v -1.373788 7.218986 19.361946 +v -1.373788 6.342139 19.361946 +v -0.857694 7.218986 19.361946 +v -1.051055 5.194829 19.361946 +v -0.857694 5.453609 19.361946 +v -1.373788 5.534112 19.361946 +v 0.741864 8.870753 22.443676 +v 0.685393 8.586853 22.443676 +v 0.912610 8.492737 22.443676 +v 0.987802 8.870753 22.443676 +v 0.912610 8.492737 22.443676 v 0.912610 8.492735 5.649786 v 0.987802 8.870750 5.649786 v 0.912610 8.492735 5.649786 v 0.685393 8.586851 5.649786 v 0.524577 8.346173 5.649786 -v 0.524577 8.346171 22.443676 -v 0.524577 8.346171 22.443676 -v 0.698482 8.172267 22.443676 -v 0.698482 8.172267 22.443676 +v 0.524577 8.346175 22.443676 +v 0.524577 8.346175 22.443676 +v 0.698482 8.172271 22.443676 +v 0.698482 8.172271 22.443676 v 0.698482 8.172269 5.649786 v 0.698482 8.172269 5.649786 v 0.524577 8.346173 5.649786 v 0.283899 8.185357 5.649786 -v 0.283899 8.185355 22.443676 -v 0.283899 8.185355 22.443676 -v 0.378015 7.958138 22.443676 -v 0.378015 7.958138 22.443676 +v 0.283899 8.185359 22.443676 +v 0.283899 8.185359 22.443676 +v 0.378015 7.958142 22.443676 +v 0.378015 7.958142 22.443676 v 0.378015 7.958138 5.649786 v 0.378015 7.958138 5.649786 v 0.283899 8.185357 5.649786 v 0.000000 8.128886 5.649786 -v 0.000000 8.128884 22.443676 -v 0.000000 8.128884 22.443676 -v 0.000000 7.882946 22.443676 -v 0.000000 7.882946 22.443676 +v 0.000000 8.128888 22.443676 +v 0.000000 8.128888 22.443676 +v 0.000000 7.882950 22.443676 +v 0.000000 7.882950 22.443676 v 0.000000 7.882946 5.649786 v 0.000000 7.882946 5.649786 v 0.000000 8.128886 5.649786 v 0.000000 8.128886 5.649786 v -0.283899 8.185357 5.649786 -v -0.283899 8.185355 22.443676 -v -0.283899 8.185355 22.443676 -v -0.378015 7.958138 22.443676 -v 0.000000 7.882946 22.443676 -v -0.378015 7.958138 22.443676 +v -0.283899 8.185359 22.443676 +v -0.283899 8.185359 22.443676 +v -0.378015 7.958142 22.443676 +v 0.000000 7.882950 22.443676 +v -0.378015 7.958142 22.443676 v -0.378015 7.958138 5.649786 v -0.378015 7.958138 5.649786 v -0.283899 8.185357 5.649786 v -0.524577 8.346173 5.649786 -v -0.524577 8.346171 22.443676 -v -0.524577 8.346171 22.443676 -v -0.698482 8.172267 22.443676 -v -0.698482 8.172267 22.443676 +v -0.524577 8.346175 22.443676 +v -0.524577 8.346175 22.443676 +v -0.698482 8.172271 22.443676 +v -0.698482 8.172271 22.443676 v -0.698482 8.172269 5.649786 v -0.698482 8.172269 5.649786 v -0.524577 8.346173 5.649786 v -0.685393 8.586851 5.649786 -v -0.685393 8.586849 22.443676 -v -0.685393 8.586849 22.443676 -v -0.912610 8.492733 22.443676 -v -0.912610 8.492733 22.443676 +v -0.685393 8.586853 22.443676 +v -0.685393 8.586853 22.443676 +v -0.912610 8.492737 22.443676 +v -0.912610 8.492737 22.443676 v -0.912610 8.492735 5.649786 v -0.912610 8.492735 5.649786 v -0.685393 8.586851 5.649786 v -0.741864 8.870750 5.649786 -v -0.741864 8.870749 22.443676 -v -0.741864 8.870749 22.443676 -v -0.987802 8.870749 22.443676 -v -0.987802 8.870749 22.443676 +v -0.741864 8.870753 22.443676 +v -0.741864 8.870753 22.443676 +v -0.987802 8.870753 22.443676 +v -0.987802 8.870753 22.443676 v -0.987802 8.870750 5.649786 v -0.987802 8.870750 5.649786 v -0.741864 8.870750 5.649786 v -0.685393 9.154650 5.649786 -v -0.685393 9.154648 22.443676 -v -0.685393 9.154648 22.443676 -v -0.912610 9.248764 22.443676 -v -0.912610 9.248764 22.443676 +v -0.685393 9.154652 22.443676 +v -0.685393 9.154652 22.443676 +v -0.912610 9.248768 22.443676 +v -0.912610 9.248768 22.443676 v -0.912610 9.248766 5.649786 v -0.912610 9.248766 5.649786 v -0.685393 9.154650 5.649786 v -0.524577 9.395328 5.649786 -v -0.524577 9.395326 22.443676 -v -0.524577 9.395326 22.443676 -v -0.698482 9.569230 22.443676 -v -0.698482 9.569230 22.443676 -v -0.698482 9.569232 5.649786 -v -0.698482 9.569232 5.649786 +v -0.524577 9.395329 22.443676 +v -0.524577 9.395329 22.443676 +v -0.698482 9.569234 22.443676 +v -0.698482 9.569234 22.443676 +v -0.698482 9.569232 5.649784 +v -0.698482 9.569232 5.649784 v -0.524577 9.395328 5.649786 -v -0.283899 9.556144 5.649786 -v -0.283899 9.556142 22.443676 -v -0.283899 9.556142 22.443676 -v -0.378015 9.783358 22.443676 -v -0.378015 9.783358 22.443676 -v -0.378015 9.783360 5.649786 -v -0.378015 9.783360 5.649786 -v -0.283899 9.556144 5.649786 -v 0.000000 9.612615 5.649786 -v 0.000000 9.612613 22.443676 -v 0.000000 9.612613 22.443676 -v 0.000000 9.858550 22.443676 -v 0.000000 9.858550 22.443676 -v 0.000000 9.858552 5.649786 -v 0.000000 9.858552 5.649786 -v 0.000000 9.612615 5.649786 -v 0.283899 9.556144 5.649786 -v 0.283899 9.556142 22.443676 -v 0.283899 9.556142 22.443676 -v 0.378015 9.783358 22.443676 -v 0.378015 9.783358 22.443676 -v 0.378015 9.783360 5.649786 -v 0.378015 9.783360 5.649786 -v 0.283899 9.556144 5.649786 +v -0.283899 9.556144 5.649784 +v -0.283899 9.556146 22.443676 +v -0.283899 9.556146 22.443676 +v -0.378015 9.783361 22.443676 +v -0.378015 9.783361 22.443676 +v -0.378015 9.783360 5.649784 +v -0.378015 9.783360 5.649784 +v -0.283899 9.556144 5.649784 +v 0.000000 9.612615 5.649784 +v 0.000000 9.612617 22.443676 +v 0.000000 9.612617 22.443676 +v 0.000000 9.858554 22.443676 +v 0.000000 9.858554 22.443676 +v 0.000000 9.858552 5.649784 +v 0.000000 9.858552 5.649784 +v 0.000000 9.612615 5.649784 +v 0.283899 9.556144 5.649784 +v 0.283899 9.556146 22.443676 +v 0.283899 9.556146 22.443676 +v 0.378015 9.783361 22.443676 +v 0.378015 9.783361 22.443676 +v 0.378015 9.783360 5.649784 +v 0.378015 9.783360 5.649784 +v 0.283899 9.556144 5.649784 v 0.524577 9.395328 5.649786 -v 0.524577 9.395326 22.443676 -v 0.524577 9.395326 22.443676 -v 0.698482 9.569230 22.443676 -v 0.698482 9.569230 22.443676 -v 0.698482 9.569232 5.649786 -v 0.698482 9.569232 5.649786 +v 0.524577 9.395329 22.443676 +v 0.524577 9.395329 22.443676 +v 0.698482 9.569234 22.443676 +v 0.698482 9.569234 22.443676 +v 0.698482 9.569232 5.649784 +v 0.698482 9.569232 5.649784 v 0.524577 9.395328 5.649786 v 0.685393 9.154650 5.649786 -v 0.685393 9.154648 22.443676 -v 0.685393 9.154648 22.443676 -v 0.912610 9.248764 22.443676 -v 0.912610 9.248764 22.443676 +v 0.685393 9.154652 22.443676 +v 0.685393 9.154652 22.443676 +v 0.912610 9.248768 22.443676 +v 0.912610 9.248768 22.443676 v 0.912610 9.248766 5.649786 v 0.912610 9.248766 5.649786 v 0.685393 9.154650 5.649786 -v 0.741864 8.870749 22.443676 -v 0.987802 8.870749 22.443676 +v 0.741864 8.870753 22.443676 +v 0.987802 8.870753 22.443676 v 0.987802 8.870750 5.649786 v 0.741864 8.870750 5.649786 v 1.133210 1.741260 4.213062 @@ -5040,33 +484,33 @@ v 1.133210 1.741260 4.213062 v -2.120367 6.032114 -1.127586 v -2.168285 6.052625 -0.925915 v -2.124553 6.332816 -1.081475 -v -1.803483 -8.183756 -0.940654 -v -1.550631 -8.207280 -0.940181 +v -1.803483 -8.183756 -0.940652 +v -1.550631 -8.207280 -0.940179 v -1.803497 2.273637 3.302741 v -2.107996 4.322828 -0.236828 v -2.163024 4.259209 -0.066218 v -2.116467 4.647215 -0.174769 v -2.168202 1.521683 2.220641 -v -2.172835 -7.439816 -1.372818 +v -2.172835 -7.439816 -1.372816 v -2.137654 1.534970 2.385706 v -1.849792 2.296251 3.228978 v -1.880736 2.578792 3.289423 v -1.879857 2.017154 3.056580 -v -1.803508 -5.875544 -4.913877 -v -1.803499 -6.096515 -4.976789 -v -2.130997 -6.177512 -4.485744 -v -1.550631 -5.813593 -4.933243 -v -1.550631 -6.027862 -4.968081 +v -1.803508 -5.875546 -4.913877 +v -1.803499 -6.096517 -4.976789 +v -2.130997 -6.177514 -4.485744 +v -1.550631 -5.813593 -4.933241 +v -1.550631 -6.027864 -4.968081 v -1.839455 4.411472 -0.653382 -v -2.137789 6.702975 -0.434405 -v -1.803504 7.006510 -0.872316 -v -1.803507 7.133335 -0.533682 -v -1.550631 7.026423 -0.881127 -v -1.803483 6.443164 -1.419198 -v -2.176839 -6.680809 -4.296602 -v -2.176541 -6.266698 -4.325728 -v -2.177566 -6.820210 -4.161257 -v -2.121354 -6.703000 -4.498363 +v -2.137789 6.702975 -0.434407 +v -1.803504 7.006510 -0.872318 +v -1.803507 7.133335 -0.533684 +v -1.550631 7.026423 -0.881129 +v -1.803483 6.443164 -1.419199 +v -2.176839 -6.680809 -4.296600 +v -2.176541 -6.266698 -4.325727 +v -2.177566 -6.820210 -4.161255 +v -2.121354 -6.703001 -4.498363 v -2.173862 1.655341 1.737604 v -1.978566 2.889965 3.247607 v -1.933436 2.830892 2.688685 @@ -5091,24 +535,24 @@ v -1.883795 2.419949 2.091068 v -2.169390 2.475281 1.132310 v -2.174314 6.129676 4.109241 v -2.176527 6.514084 3.866836 -v -2.108078 6.117068 4.317321 +v -2.108078 6.117068 4.317319 v -2.174668 5.841984 -0.795250 v -2.179727 5.017104 -0.002164 v -2.141465 5.765682 -0.955082 v -2.145445 -6.930309 -4.281384 -v -2.119612 -7.822574 -1.480976 -v -2.176766 -7.604493 -1.548246 +v -2.119612 -7.822574 -1.480974 +v -2.176766 -7.604493 -1.548244 v -2.174624 4.663060 0.053574 v -2.163947 6.294227 -0.887580 -v -2.176857 6.557230 -0.328893 +v -2.176857 6.557230 -0.328894 v -1.803505 6.986403 4.265716 -v -2.129669 6.678270 3.948849 +v -2.129669 6.678270 3.948848 v -1.550631 7.011675 4.277203 -v -1.803498 6.146345 4.785964 -v -1.550631 5.888644 4.797830 -v -1.550631 6.141139 4.807182 -v -1.803494 -8.338592 -1.148253 -v -2.121051 -7.647707 -1.285315 +v -1.803498 6.146347 4.785964 +v -1.550631 5.888646 4.797830 +v -1.550631 6.141140 4.807180 +v -1.803494 -8.338592 -1.148251 +v -2.121051 -7.647707 -1.285313 v -1.284940 0.829702 3.740532 v -1.284940 1.075818 2.934655 v -1.284940 0.583586 2.934655 @@ -5212,10 +656,10 @@ v 1.979996 6.727209 -1.926155 v 1.979996 6.787141 -2.070845 v 1.979996 6.727209 -1.926155 v 1.979996 6.582519 -2.070845 -v -1.702916 6.582519 -1.866222 -v -1.702916 6.582519 -1.866222 -v 1.979996 6.582519 -1.866222 -v 1.979996 6.582519 -1.866222 +v -1.702916 6.582519 -1.866223 +v -1.702916 6.582519 -1.866223 +v 1.979996 6.582519 -1.866223 +v 1.979996 6.582519 -1.866223 v -1.702916 6.437829 -1.926155 v -1.702916 6.437829 -1.926155 v 1.979996 6.437829 -1.926155 @@ -5229,103 +673,103 @@ v -1.702916 6.437829 -2.215535 v -1.702916 6.437829 -2.215535 v 1.979996 6.437829 -2.215535 v 1.979996 6.437829 -2.215535 -v -1.702916 6.582519 -2.275468 -v -1.702916 6.582519 -2.275468 -v 1.979996 6.582519 -2.275468 -v -1.425465 5.714319 12.324278 -v -1.425465 5.534111 12.470450 -v -1.425465 6.342137 12.470450 -v 1.979996 6.582519 -2.275468 +v -1.702916 6.582519 -2.275470 +v -1.702916 6.582519 -2.275470 +v 1.979996 6.582519 -2.275470 +v -1.425465 5.714321 12.324278 +v -1.425465 5.534113 12.470450 +v -1.425465 6.342139 12.470448 +v 1.979996 6.582519 -2.275470 v -1.702916 6.727209 -2.215535 -v -1.373788 5.534109 19.361946 +v -1.373788 5.534112 19.361946 v -1.702916 6.727209 -2.215535 v 1.979996 6.727209 -2.215535 v 1.979996 6.727209 -2.215535 -v -1.425465 5.714319 12.324278 -v -1.425465 6.129148 12.324278 -v -1.582758 6.173631 12.234967 -v -1.425465 5.534111 12.470450 -v -1.582758 5.657321 12.234967 +v -1.425465 5.714321 12.324278 +v -1.425465 6.129150 12.324278 +v -1.582758 6.173633 12.234967 +v -1.425465 5.534113 12.470450 +v -1.582758 5.657323 12.234967 v 1.979996 6.787141 -2.070845 -v 0.000000 6.215098 -5.421183 +v 0.000000 6.215096 -5.421185 v -1.582758 6.749187 -4.912819 v 1.582758 6.749187 -4.912819 v 1.488590 5.921740 -5.685918 -v 0.000000 6.031167 -5.736894 -v -1.582758 5.957942 -5.266877 +v 0.000000 6.031167 -5.736896 +v -1.582758 5.957942 -5.266879 v -1.582758 5.870734 -4.399592 v -1.582758 6.749187 -4.912819 -v 1.582758 5.957942 -5.266877 -v 1.582758 6.154639 -5.365934 +v 1.582758 5.957942 -5.266879 +v 1.582758 6.154637 -5.365934 v 1.582758 6.749187 -4.912819 -v 1.582758 5.848901 -5.238699 +v 1.582758 5.848899 -5.238699 v 1.582758 5.870734 -4.399592 v 0.983988 5.324528 -5.327059 -v -1.425465 6.342137 12.470450 -v -1.582758 6.342137 12.374792 -v -1.582758 5.848901 -5.238699 +v -1.425465 6.342139 12.470448 +v -1.582758 6.342139 12.374790 +v -1.582758 5.848899 -5.238699 v -1.484238 5.789523 -5.649559 v -0.983988 5.324528 -5.327059 v 1.488590 5.921740 -5.685918 -v -1.425465 6.342137 12.470450 -v -1.373788 6.342137 19.361946 -v -1.582758 6.342137 18.331852 -v -1.051055 0.805342 10.660654 -v -1.051055 0.446518 11.231197 -v -1.051055 3.374604 10.660654 -v -1.051055 -0.223474 11.574593 -v -1.051055 0.200441 10.158533 -v -0.836559 7.218984 0.486124 -v -1.148529 7.218984 0.843372 -v -1.148529 -7.632973 -5.164886 +v -1.425465 6.342139 12.470448 +v -1.373788 6.342139 19.361946 +v -1.582758 6.342139 18.331852 +v -1.051055 0.805344 10.660654 +v -1.051055 0.446520 11.231197 +v -1.051055 3.374606 10.660654 +v -1.051055 -0.223472 11.574593 +v -1.051055 0.200443 10.158533 +v -0.836559 7.218984 0.486122 +v -1.148529 7.218984 0.843370 +v -1.148529 -7.632975 -5.164886 v -1.092400 5.576506 -6.393807 -v -1.582758 6.342137 18.331852 -v -1.582758 7.218982 18.331852 -v -1.582758 6.342137 12.374792 -v -1.051055 5.194827 6.202400 -v -1.051055 5.194825 19.361946 -v -1.582758 5.194825 18.331852 -v -1.373788 5.194825 19.361946 +v -1.582758 6.342139 18.331852 +v -1.582758 7.218986 18.331852 +v -1.582758 6.342139 12.374790 +v -1.051055 5.194829 6.202400 +v -1.051055 5.194829 19.361946 +v -1.582758 5.194829 18.331852 +v -1.373788 5.194829 19.361946 v -0.580398 3.816195 5.489355 -v -0.580398 5.143752 5.307025 -v -0.580398 4.250057 5.891657 -v -1.148529 7.218984 4.965837 -v -1.148529 -8.749960 -1.489985 -v -0.580398 4.410827 6.286258 -v -0.580398 4.410827 8.504850 -v -1.051055 4.410827 9.595867 +v -0.580398 5.143754 5.307024 +v -0.580398 4.250059 5.891655 +v -1.148529 7.218986 4.965837 +v -1.148529 -8.749960 -1.489983 +v -0.580398 4.410829 6.286258 +v -0.580398 4.410829 8.504850 +v -1.051055 4.410829 9.595867 v -1.582758 7.218984 -4.804955 -v -0.843982 7.218984 5.409400 -v -1.148529 7.218984 4.965837 -v -0.957142 7.218984 5.409400 -v -1.582758 7.218984 5.409400 -v -1.582758 7.218984 5.409400 -v -1.582758 7.218982 18.331852 -v -0.857694 7.218984 12.938878 -v -1.213076 8.145895 -1.953275 -v -0.692288 8.145895 -1.953275 -v -0.427195 9.430100 -1.953275 -v -0.708688 7.624437 -1.953275 -v -0.397424 7.218984 -1.953275 -v -1.213076 7.624437 -1.953275 -v -1.213076 7.218984 -1.953275 -v -1.213076 7.218984 -1.953275 -v -0.836559 7.218984 0.486124 -v -0.397424 7.218984 -1.953275 -v -0.843982 7.218984 5.409400 -v -0.957142 7.218984 5.409400 +v -0.843982 7.218986 5.409400 +v -1.148529 7.218986 4.965837 +v -0.957142 7.218986 5.409400 +v -1.582758 7.218986 5.409400 +v -1.582758 7.218986 5.409400 +v -1.582758 7.218986 18.331852 +v -0.857694 7.218986 12.938876 +v -1.213076 8.145895 -1.953277 +v -0.692288 8.145895 -1.953277 +v -0.427195 9.430100 -1.953277 +v -0.708688 7.624437 -1.953277 +v -0.397424 7.218984 -1.953277 +v -1.213076 7.624437 -1.953277 +v -1.213076 7.218984 -1.953277 +v -1.213076 7.218984 -1.953277 +v -0.836559 7.218984 0.486122 +v -0.397424 7.218984 -1.953277 +v -0.843982 7.218986 5.409400 +v -0.957142 7.218986 5.409400 v -0.957142 7.863286 5.710876 v -1.488590 5.921740 -5.685918 -v -1.582758 6.154639 -5.365934 -v -1.582758 5.957942 -5.266877 +v -1.582758 6.154637 -5.365934 +v -1.582758 5.957942 -5.266879 v -1.488590 5.921740 -5.685918 -v 1.582758 5.957942 -5.266877 +v 1.582758 5.957942 -5.266879 v 1.484238 5.789523 -5.649559 v -1.051055 0.730363 5.438924 v -1.052369 1.419883 5.161799 v -1.051770 1.087353 3.958939 v -1.052369 2.312512 5.048415 -v -1.052369 3.020580 5.130578 +v -1.052369 3.020581 5.130578 v -1.051055 4.245723 5.289183 v -1.582758 0.545047 3.068055 v -1.582758 -0.142682 2.781362 @@ -5341,95 +785,95 @@ v -1.582758 2.997752 -1.677936 v -1.582758 0.676579 2.788985 v -1.582758 0.955821 2.788985 v -1.582758 1.087353 2.951361 -v -1.582758 7.218984 0.532610 -v -0.443586 5.533404 -6.767138 +v -1.582758 7.218984 0.532608 +v -0.443586 5.533402 -6.767138 v -0.528251 5.631948 -6.753191 -v 0.000000 5.631948 -6.801856 -v 1.239158 -6.459403 -6.210184 -v 1.239158 -6.716357 -6.316617 -v 1.239158 -5.908380 -6.182570 -v -1.239158 -6.459403 -6.210184 -v -1.239158 -6.352968 -5.953228 -v -1.239158 -5.908380 -6.182570 +v 0.000000 5.631948 -6.801857 +v 1.239158 -6.459404 -6.210184 +v 1.239158 -6.716359 -6.316617 +v 1.239158 -5.908381 -6.182570 +v -1.239158 -6.459404 -6.210184 +v -1.239158 -6.352970 -5.953228 +v -1.239158 -5.908381 -6.182570 v 1.239158 -7.503078 -5.592237 -v 1.239158 -6.973310 -5.696272 -v 1.239158 -6.751891 -5.355608 -v 1.239158 -7.188473 -6.627295 +v 1.239158 -6.973310 -5.696270 +v 1.239158 -6.751893 -5.355608 +v 1.239158 -7.188475 -6.627295 v 1.239158 -7.079744 -5.953228 -v 1.239158 -6.352968 -5.953228 -v 1.239158 -6.111135 -5.821549 -v 1.239158 -6.459403 -5.696272 -v 1.239158 -6.353005 -5.417203 -v 1.239158 -6.716357 -5.589839 +v 1.239158 -6.352970 -5.953228 +v 1.239158 -6.111135 -5.821548 +v 1.239158 -6.459404 -5.696270 +v 1.239158 -6.353005 -5.417202 +v 1.239158 -6.716359 -5.589839 v -1.239158 -7.503078 -5.592237 v -1.239158 -7.079744 -5.953228 -v -1.239158 -7.188473 -6.627295 -v -1.239158 -6.716357 -5.589839 -v -1.239158 -6.973310 -5.696272 -v -1.239158 -6.751891 -5.355608 -v -1.239158 -6.459403 -5.696272 -v -1.239158 -6.353005 -5.417203 -v -1.239158 -6.111135 -5.821549 -v -1.239158 -6.716357 -6.316617 +v -1.239158 -7.188475 -6.627295 +v -1.239158 -6.716359 -5.589839 +v -1.239158 -6.973310 -5.696270 +v -1.239158 -6.751893 -5.355608 +v -1.239158 -6.459404 -5.696270 +v -1.239158 -6.353005 -5.417202 +v -1.239158 -6.111135 -5.821548 +v -1.239158 -6.716359 -6.316617 v 1.239158 -6.973310 -6.210184 v -1.239158 -6.973310 -6.210184 -v -1.148529 7.218984 0.843372 -v -1.582758 -8.611731 0.338328 -v -1.582758 -7.606416 0.140500 -v -1.539709 -9.237019 0.112444 +v -1.148529 7.218984 0.843370 +v -1.582758 -8.611731 0.338330 +v -1.582758 -7.606416 0.140502 +v -1.539709 -9.237019 0.112446 v -1.582758 -6.783546 -5.235445 v -1.582758 -7.547009 -5.447709 -v -1.582758 -6.272798 -5.294007 -v -1.582758 -6.767919 0.122678 +v -1.582758 -6.272799 -5.294005 +v -1.582758 -6.767919 0.122680 v -1.582758 -5.973763 -5.781600 -v -1.582758 -3.887019 -5.026797 +v -1.582758 -3.887019 -5.026795 v 0.000000 5.385467 -6.635780 -v 0.000000 5.533404 -6.815803 -v -0.957142 7.218984 7.609767 +v 0.000000 5.533402 -6.815804 +v -0.957142 7.218986 7.609766 v -1.582758 7.218984 -4.804955 v -1.213076 7.218984 -4.804955 v -1.582758 4.316335 -1.880566 v -1.582758 5.060399 -2.393605 -v -1.213076 9.430100 -1.953275 +v -1.213076 9.430100 -1.953277 v -1.213076 9.430100 -4.335176 v -1.213076 8.145895 -4.804955 v -1.582758 5.060399 -2.393605 -v -1.582758 5.705916 -3.303000 +v -1.582758 5.705914 -3.303000 v -0.974568 4.768444 -3.230170 -v -1.113677 5.685023 -6.433600 +v -1.113677 5.685021 -6.433600 v -1.488590 5.921740 -5.685918 -v -1.582758 5.705916 -3.303000 +v -1.582758 5.705914 -3.303000 v -1.582758 7.218984 -4.804955 v -1.213076 7.218984 -4.804955 -v -0.703050 7.624437 -4.804955 +v -0.703050 7.624435 -4.804955 v -0.702042 8.145895 -4.804955 v -0.419459 8.845671 -4.804955 -v -1.239158 -7.188473 -6.627295 -v -1.239158 -5.908380 -6.182570 -v -0.974568 -7.096977 -6.928317 -v -1.239158 -5.908380 -6.182570 -v -1.239158 -6.111135 -5.821549 +v -1.239158 -7.188475 -6.627295 +v -1.239158 -5.908381 -6.182570 +v -0.974568 -7.096979 -6.928317 +v -1.239158 -5.908381 -6.182570 +v -1.239158 -6.111135 -5.821548 v -1.582758 -5.973763 -5.781600 v -1.582758 -7.547009 -5.447709 v -1.582758 -6.783546 -5.235445 -v -1.239158 -6.751891 -5.355608 -v -1.582758 -6.272798 -5.294007 +v -1.239158 -6.751893 -5.355608 +v -1.582758 -6.272799 -5.294005 v 2.119590 3.136953 3.088691 -v 2.108078 6.117068 4.317321 -v 1.803502 5.931036 4.779144 +v 2.108078 6.117068 4.317319 +v 1.803502 5.931036 4.779142 v 1.880736 2.578792 3.289423 v 1.978566 2.889965 3.247607 v 1.803497 2.273637 3.302741 v 1.962750 1.737307 2.831918 v 1.879857 2.017154 3.056580 -v 1.803483 -8.183756 -0.940654 +v 1.803483 -8.183756 -0.940652 v 2.068853 1.609260 2.541311 v 2.137654 1.534970 2.385706 -v 1.803499 -6.096515 -4.976789 -v 2.130997 -6.177512 -4.485744 -v 2.121354 -6.703000 -4.498363 -v 1.550631 -7.022314 -4.915743 -v 1.550631 -6.027862 -4.968081 +v 1.803499 -6.096517 -4.976789 +v 2.130997 -6.177514 -4.485744 +v 2.121354 -6.703001 -4.498363 +v 1.550631 -7.022316 -4.915741 +v 1.550631 -6.027864 -4.968081 v 2.116467 4.647215 -0.174769 v 2.107996 4.322828 -0.236828 v 1.839455 4.411472 -0.653382 @@ -5441,138 +885,138 @@ v 2.120367 6.032114 -1.127586 v 1.803477 5.747915 -1.279529 v 2.124553 6.332816 -1.081475 v 1.803468 6.136785 -1.467315 -v 1.803507 7.133335 -0.533682 -v 1.803500 7.103070 4.086896 -v 2.129669 6.678270 3.948849 +v 1.803507 7.133335 -0.533684 +v 1.803500 7.103070 4.086895 +v 2.129669 6.678270 3.948848 v 1.550631 4.920799 -0.676702 v 1.550631 5.750243 -1.260870 -v 1.550631 6.117420 -1.448276 -v 1.550631 6.431123 -1.427430 -v 1.803483 6.443164 -1.419198 +v 1.550631 6.117420 -1.448277 +v 1.550631 6.431123 -1.427431 +v 1.803483 6.443164 -1.419199 v 1.550631 4.711940 -0.618973 v 1.839455 4.411472 -0.653382 v 2.179727 5.017104 -0.002164 v 2.174624 4.663060 0.053574 -v 2.119612 -7.822574 -1.480976 -v 2.176766 -7.604493 -1.548246 -v 2.121051 -7.647707 -1.285315 +v 2.119612 -7.822574 -1.480974 +v 2.176766 -7.604493 -1.548244 +v 2.121051 -7.647707 -1.285313 v 1.803505 -7.014567 -4.882656 -v 2.137789 6.702975 -0.434405 +v 2.137789 6.702975 -0.434407 v 1.550631 4.418573 -0.651555 -v 1.550631 5.888644 4.797830 -v 1.550631 -8.207280 -0.940181 +v 1.550631 5.888646 4.797830 +v 1.550631 -8.207280 -0.940179 v 2.163024 4.259209 -0.066218 -v 2.172835 -7.439816 -1.372818 -v 1.803508 -5.875544 -4.913877 -v 1.803504 7.006510 -0.872316 -v 1.550631 7.026423 -0.881127 -v 2.176857 6.557230 -0.328893 +v 2.172835 -7.439816 -1.372816 +v 1.803508 -5.875546 -4.913877 +v 1.803504 7.006510 -0.872318 +v 1.550631 7.026423 -0.881129 +v 2.176857 6.557230 -0.328894 v 2.163947 6.294227 -0.887580 v 2.176527 6.514084 3.866836 v 2.168285 6.052625 -0.925915 -v -0.823032 5.400963 -6.289593 -v -1.373788 7.218982 19.361946 -v -0.857694 7.218982 19.361946 +v -0.823032 5.400961 -6.289595 +v -1.373788 7.218986 19.361946 +v -0.857694 7.218986 19.361946 v 1.092400 5.576506 -6.393807 -v 0.443586 5.533404 -6.767138 -v 0.823032 5.400963 -6.289593 +v 0.443586 5.533402 -6.767138 +v 0.823032 5.400961 -6.289595 v 0.403942 7.218984 -4.804955 v 1.213076 7.218984 -4.804955 -v 0.974568 5.132455 -4.066989 +v 0.974568 5.132453 -4.066989 v 1.213076 8.145895 -4.804955 v 1.213076 8.845671 -4.804955 v 1.213076 9.430100 -4.335176 -v 0.703050 7.624437 -4.804955 -v 0.708688 7.624437 -1.953275 -v 1.213076 7.624437 -1.953275 -v 1.213076 7.624437 -1.953275 -v 1.213076 7.218984 -1.953275 +v 0.703050 7.624435 -4.804955 +v 0.708688 7.624437 -1.953277 +v 1.213076 7.624437 -1.953277 +v 1.213076 7.624437 -1.953277 +v 1.213076 7.218984 -1.953277 v 1.213076 7.218984 -4.804955 -v 0.703050 7.624437 -4.804955 +v 0.703050 7.624435 -4.804955 v 0.702042 8.145895 -4.804955 -v 0.692288 8.145895 -1.953275 -v 0.692288 8.145895 -1.953275 +v 0.692288 8.145895 -1.953277 +v 0.692288 8.145895 -1.953277 v 0.702042 8.145895 -4.804955 v 1.213076 8.145895 -4.804955 v 1.213076 9.430100 -4.335176 v 0.450662 9.430100 -4.335176 -v 0.427195 9.430100 -1.953275 +v 0.427195 9.430100 -1.953277 v 1.582758 7.218984 -4.804955 v 0.528251 5.631948 -6.753191 -v 0.000000 5.631948 -6.801856 -v 1.113677 5.685023 -6.433600 -v 1.582758 6.154639 -5.365934 +v 0.000000 5.631948 -6.801857 +v 1.113677 5.685021 -6.433600 +v 1.582758 6.154637 -5.365934 v -0.403942 7.218984 -4.804955 -v 1.213076 7.218984 -1.953275 +v 1.213076 7.218984 -1.953277 v 1.582758 7.218984 -4.804955 v 1.213076 7.218984 -4.804955 -v 0.703050 7.624437 -4.804955 +v 0.703050 7.624435 -4.804955 v 0.419459 8.845671 -4.804955 -v 1.213076 7.624437 -4.804955 +v 1.213076 7.624435 -4.804955 v 1.213076 8.845671 -4.804955 v 1.213076 8.145895 -4.804955 v 0.702042 8.145895 -4.804955 v 0.450662 9.430100 -4.335176 v 1.213076 9.430100 -4.335176 -v 0.836559 7.218984 0.486124 -v 0.397424 7.218984 -1.953275 -v -1.582758 6.154639 -5.365934 +v 0.836559 7.218984 0.486122 +v 0.397424 7.218984 -1.953277 +v -1.582758 6.154637 -5.365934 v 1.582758 2.997752 -1.677936 v 1.582758 4.606297 4.761065 v 1.582758 5.060399 -2.393605 -v 1.582758 5.705916 -3.303000 -v 1.582758 7.218984 0.532610 -v 1.582758 4.978194 4.997455 -v 1.582758 7.218984 5.409400 -v 1.582758 6.173631 12.234967 -v 1.582758 5.194827 5.282278 -v 1.582758 5.194825 18.331852 -v 1.582758 5.534111 12.374792 +v 1.582758 5.705914 -3.303000 +v 1.582758 7.218984 0.532608 +v 1.582758 4.978196 4.997455 +v 1.582758 7.218986 5.409400 +v 1.582758 6.173633 12.234967 +v 1.582758 5.194829 5.282278 +v 1.582758 5.194829 18.331852 +v 1.582758 5.534113 12.374792 v 1.582758 4.316335 -1.880566 v 1.582758 7.218984 -4.804955 -v 1.582758 6.342137 12.374792 -v 1.582758 5.657321 12.234967 -v 1.582758 7.218982 18.331852 -v 1.582758 7.218984 5.409400 -v 0.857694 7.218984 12.938878 -v 1.148529 7.218984 4.965837 -v 0.957142 7.218984 5.409400 -v 0.857694 7.218982 19.361946 -v 1.373788 7.218982 19.361946 -v 0.957142 7.218984 7.609767 -v 1.148529 7.218984 0.843372 -v 0.957142 7.218984 6.277361 -v 0.857694 5.453763 12.938878 -v 0.580191 5.127946 12.938878 -v 0.580398 5.127510 19.361946 -v 0.857694 7.218984 12.938878 -v 0.857694 5.453605 19.361946 -v -1.803494 -8.338592 -1.148253 -v -1.803496 -7.249153 -4.729249 -v -1.550631 -7.254866 -4.756801 -v -1.550631 -8.362582 -1.129572 +v 1.582758 6.342139 12.374790 +v 1.582758 5.657323 12.234967 +v 1.582758 7.218986 18.331852 +v 1.582758 7.218986 5.409400 +v 0.857694 7.218986 12.938876 +v 1.148529 7.218986 4.965837 +v 0.957142 7.218986 5.409400 +v 0.857694 7.218986 19.361946 +v 1.373788 7.218986 19.361946 +v 0.957142 7.218986 7.609766 +v 1.148529 7.218984 0.843370 +v 0.957142 7.218986 6.277359 +v 0.857694 5.453765 12.938878 +v 0.580191 5.127948 12.938878 +v 0.580398 5.127513 19.361946 +v 0.857694 7.218986 12.938876 +v 0.857694 5.453609 19.361946 +v -1.803494 -8.338592 -1.148251 +v -1.803496 -7.249155 -4.729249 +v -1.550631 -7.254868 -4.756801 +v -1.550631 -8.362582 -1.129570 v -1.803505 -7.014567 -4.882656 -v -1.803500 7.103070 4.086896 -v -1.550631 7.159328 -0.581056 +v -1.803500 7.103070 4.086895 +v -1.550631 7.159328 -0.581058 v -1.839455 4.411472 -0.653382 v -1.550631 4.418573 -0.651555 -v -1.803502 5.931036 4.779144 +v -1.803502 5.931036 4.779142 v -2.138861 4.925927 -0.212349 -v -1.550631 -7.022314 -4.915743 +v -1.550631 -7.022316 -4.915741 v -1.832909 4.741830 -0.615315 v -1.803493 4.979961 -0.698811 v -1.803477 5.747915 -1.279529 v -1.803468 6.136785 -1.467315 v -1.550631 4.920799 -0.676702 v -1.550631 5.750243 -1.260870 -v -1.550631 6.117420 -1.448276 -v -1.550631 6.431123 -1.427430 +v -1.550631 6.117420 -1.448277 +v -1.550631 6.431123 -1.427431 v -1.550631 4.711940 -0.618973 v 2.168202 1.521683 2.220641 v 1.849792 2.296251 3.228978 -v 1.550631 -5.813593 -4.933243 -v 2.176839 -6.680809 -4.296602 -v 2.177566 -6.820210 -4.161257 +v 1.550631 -5.813593 -4.933241 +v 2.176839 -6.680809 -4.296600 +v 2.177566 -6.820210 -4.161255 v 2.145445 -6.930309 -4.281384 v 2.173862 1.655341 1.737604 v 1.933436 2.830892 2.688685 @@ -5594,191 +1038,191 @@ v 1.883795 2.419949 2.091068 v 2.169390 2.475281 1.132310 v 2.174314 6.129676 4.109241 v 2.174668 5.841984 -0.795250 -v 2.176541 -6.266698 -4.325728 +v 2.176541 -6.266698 -4.325727 v 1.803505 6.986403 4.265716 -v 1.803498 6.146345 4.785964 +v 1.803498 6.146347 4.785964 v 1.550631 7.011675 4.277203 -v 1.550631 6.141139 4.807182 -v 1.803494 -8.338592 -1.148253 -v 1.550631 -8.362582 -1.129572 -v 1.803494 -8.338592 -1.148253 -v 1.803496 -7.249153 -4.729249 -v 1.550631 -7.254866 -4.756801 -v 1.550631 7.159328 -0.581056 -v 1.550631 7.128137 4.054968 -v -1.239158 -6.353005 -5.417203 -v -1.113677 5.685023 -6.433600 -v -1.582758 6.173631 12.234967 -v -1.582758 5.657321 12.234967 +v 1.550631 6.141140 4.807180 +v 1.803494 -8.338592 -1.148251 +v 1.550631 -8.362582 -1.129570 +v 1.803494 -8.338592 -1.148251 +v 1.803496 -7.249155 -4.729249 +v 1.550631 -7.254868 -4.756801 +v 1.550631 7.159328 -0.581058 +v 1.550631 7.128139 4.054966 +v -1.239158 -6.353005 -5.417202 +v -1.113677 5.685021 -6.433600 +v -1.582758 6.173633 12.234967 +v -1.582758 5.657323 12.234967 v -0.974568 4.193733 -2.693952 v -1.582758 4.316335 -1.880566 v -1.582758 5.870734 -4.399592 -v -0.974568 5.132455 -4.066989 +v -0.974568 5.132453 -4.066989 v -0.974568 2.986196 -2.567274 v -1.582758 2.997752 -1.677936 v -0.974568 -2.299957 -4.683156 v -1.582758 -2.770208 -4.057409 -v -0.974568 -3.532901 -5.626941 -v -1.582758 -3.887019 -5.026797 +v -0.974568 -3.532902 -5.626941 +v -1.582758 -3.887019 -5.026795 v -1.582758 -5.973763 -5.781600 -v -0.427195 9.430100 -1.953275 -v -0.397424 7.218984 -1.953275 +v -0.427195 9.430100 -1.953277 +v -0.397424 7.218984 -1.953277 v -0.450662 9.430100 -4.335176 -v -0.580398 4.410827 6.286258 -v -0.580398 5.143752 8.504850 +v -0.580398 4.410829 6.286258 +v -0.580398 5.143754 8.504850 v 0.403942 7.218984 -4.804955 -v -0.580398 3.410160 5.307025 -v 0.397424 7.218984 -1.953275 +v -0.580398 3.410161 5.307024 +v 0.397424 7.218984 -1.953277 v 0.450662 9.430100 -4.335176 v 0.419459 8.845671 -4.804955 -v -0.857694 5.453763 12.938878 -v -0.857694 5.453605 19.361946 -v -0.580398 5.127510 19.361946 -v -0.857694 7.218984 12.938878 -v -0.857694 7.218982 19.361946 -v -0.957142 7.863286 7.609767 -v -0.957142 7.218984 5.409400 -v -0.957142 7.218984 6.277361 +v -0.857694 5.453765 12.938878 +v -0.857694 5.453609 19.361946 +v -0.580398 5.127513 19.361946 +v -0.857694 7.218986 12.938876 +v -0.857694 7.218986 19.361946 +v -0.957142 7.863286 7.609766 +v -0.957142 7.218986 5.409400 +v -0.957142 7.218986 6.277359 v -0.957142 7.863286 5.710876 v -1.213076 8.845671 -4.804955 -v -0.703050 7.624437 -4.804955 -v -1.213076 7.624437 -4.804955 -v -1.213076 7.624437 -1.953275 -v -1.213076 7.624437 -1.953275 -v -1.213076 7.624437 -4.804955 +v -0.703050 7.624435 -4.804955 +v -1.213076 7.624435 -4.804955 +v -1.213076 7.624437 -1.953277 +v -1.213076 7.624437 -1.953277 +v -1.213076 7.624435 -4.804955 v -1.213076 7.218984 -4.804955 -v -1.148529 -8.749960 -1.489985 -v -0.843982 -8.845317 -1.176260 -v -1.539709 -9.237019 0.112444 -v -0.703050 7.624437 -4.804955 -v -0.708688 7.624437 -1.953275 -v -0.692288 8.145895 -1.953275 -v -0.580398 3.410160 5.307025 +v -1.148529 -8.749960 -1.489983 +v -0.843982 -8.845317 -1.176258 +v -1.539709 -9.237019 0.112446 +v -0.703050 7.624435 -4.804955 +v -0.708688 7.624437 -1.953277 +v -0.692288 8.145895 -1.953277 +v -0.580398 3.410161 5.307024 v -0.580398 3.816195 5.489355 -v -1.051055 3.816076 5.489355 -v -1.051055 4.250057 5.891657 -v -0.580398 4.250057 5.891657 -v -1.051055 4.410827 6.286258 -v -0.692288 8.145895 -1.953275 -v -1.213076 8.145895 -1.953275 +v -1.051055 3.816077 5.489355 +v -1.051055 4.250059 5.891655 +v -0.580398 4.250059 5.891655 +v -1.051055 4.410829 6.286258 +v -0.692288 8.145895 -1.953277 +v -1.213076 8.145895 -1.953277 v -1.213076 8.145895 -4.804955 -v -1.052369 3.020580 5.130578 -v -1.582758 5.534109 18.331852 -v -1.582758 5.534111 12.374792 -v -1.582758 5.194825 18.331852 -v -1.051055 3.986079 11.231197 +v -1.052369 3.020581 5.130578 +v -1.582758 5.534112 18.331852 +v -1.582758 5.534113 12.374792 +v -1.582758 5.194829 18.331852 +v -1.051055 3.986081 11.231197 v -1.213076 9.430100 -4.335176 -v -1.213076 9.430100 -1.953275 -v -0.427195 9.430100 -1.953275 -v -1.051055 4.197896 10.160744 -v -1.051055 4.410827 9.595867 -v -1.051055 5.194827 6.202400 -v -1.051055 4.410827 6.286258 +v -1.213076 9.430100 -1.953277 +v -0.427195 9.430100 -1.953277 +v -1.051055 4.197898 10.160744 +v -1.051055 4.410829 9.595867 +v -1.051055 5.194829 6.202400 +v -1.051055 4.410829 6.286258 v -1.051055 4.815591 5.698347 -v -1.051055 4.250057 5.891657 +v -1.051055 4.250059 5.891655 v 1.051203 0.060934 3.592092 v 1.051055 -0.223472 3.408138 v 1.358388 0.595196 3.367662 -v -1.051055 0.491167 10.501270 -v -1.051055 3.846210 10.532600 -v -1.051055 3.816076 5.489355 +v -1.051055 0.491169 10.501270 +v -1.051055 3.846212 10.532600 +v -1.051055 3.816077 5.489355 v -1.051055 0.303245 5.858099 -v -1.051055 0.145061 11.660562 +v -1.051055 0.145063 11.660562 v -0.403942 7.218984 -4.804955 v -0.419459 8.845671 -4.804955 -v -0.580398 5.127510 19.361946 -v -1.213076 7.624437 -4.804955 +v -0.580398 5.127513 19.361946 +v -1.213076 7.624435 -4.804955 v -1.213076 8.845671 -4.804955 v -1.213076 9.430100 -4.335176 v -0.528251 5.631948 -6.753191 -v -1.051055 -7.663412 0.798394 -v -1.051055 -6.827383 0.859532 -v -1.051055 -9.408401 0.676293 -v -1.051055 -8.710466 0.929088 +v -1.051055 -7.663412 0.798396 +v -1.051055 -6.827383 0.859534 +v -1.051055 -9.408401 0.676295 +v -1.051055 -8.710466 0.929090 v -0.832096 -2.281892 2.617995 v -1.051055 -0.223472 3.408138 -v -1.051055 -6.827383 0.859532 +v -1.051055 -6.827383 0.859534 v -0.832096 -3.798709 2.025143 v -0.832096 -3.666983 2.980051 v -0.832096 -2.992427 3.243009 -v -1.051055 4.834128 19.361946 -v -1.582758 5.534111 12.374792 -v -1.582758 5.534109 18.331852 -v -1.373788 5.534109 19.361946 -v -1.373788 7.218982 19.361946 -v -1.373788 5.194825 19.361946 -v -0.372438 10.036927 5.890272 -v -0.372438 10.296735 5.890272 -v 0.372438 10.036927 5.890272 -v -0.570611 9.870735 5.890272 -v 0.570611 9.870735 5.890272 -v 0.667251 10.036927 5.890272 -v -0.667251 10.036927 5.890272 -v -0.372438 10.036927 5.890272 -v -0.667251 10.036927 5.890272 -v -0.666265 10.036925 11.908644 +v -1.051055 4.834130 19.361946 +v -1.582758 5.534113 12.374792 +v -1.582758 5.534112 18.331852 +v -1.373788 5.534112 19.361946 +v -1.373788 7.218986 19.361946 +v -1.373788 5.194829 19.361946 +v -0.372438 10.036927 5.890270 +v -0.372438 10.296735 5.890270 +v 0.372438 10.036927 5.890270 +v -0.570611 9.870735 5.890270 +v 0.570611 9.870735 5.890270 +v 0.667251 10.036927 5.890270 +v -0.667251 10.036927 5.890270 +v -0.372438 10.036927 5.890270 +v -0.667251 10.036927 5.890270 +v -0.666265 10.036927 11.908642 v -1.159394 7.167399 5.890272 -v -1.159394 7.167399 11.908644 -v -1.159394 9.473119 11.908644 -v -1.018901 7.167399 11.908644 -v -1.018901 9.373807 11.908644 -v -1.159394 9.473119 11.908644 +v -1.159394 7.167401 11.908642 +v -1.159394 9.473121 11.908642 +v -1.018901 7.167401 11.908642 +v -1.018901 9.373809 11.908642 +v -1.159394 9.473121 11.908642 v -1.018901 7.167399 5.890272 v -1.159394 7.167399 5.890272 v -1.159394 9.473121 5.890272 -v -0.570611 9.870733 11.908644 -v -0.666265 10.036925 11.908644 +v -0.570611 9.870735 11.908642 +v -0.666265 10.036927 11.908642 v 1.018901 9.373809 5.890272 v 1.018901 7.167399 5.890272 -v 1.018901 7.167399 11.908644 -v 1.018901 9.373807 11.908644 -v 0.570611 9.870733 11.908644 -v -0.372438 10.036927 8.085609 -v 0.372438 10.036927 8.085609 -v 0.372438 10.296735 5.890272 +v 1.018901 7.167401 11.908642 +v 1.018901 9.373809 11.908642 +v 0.570611 9.870735 11.908642 +v -0.372438 10.036929 8.085607 +v 0.372438 10.036929 8.085607 +v 0.372438 10.296735 5.890270 v 1.018901 7.167399 5.890272 v 1.018901 9.373809 5.890272 v 1.159394 9.473121 5.890272 -v 0.372438 10.036927 5.890272 -v 0.372438 10.296735 5.890272 -v 0.372438 10.036927 8.085609 -v 0.372438 10.036927 5.890272 -v 0.372438 10.036927 8.085609 -v 0.666265 10.036925 11.908644 +v 0.372438 10.036927 5.890270 +v 0.372438 10.296735 5.890270 +v 0.372438 10.036929 8.085607 +v 0.372438 10.036927 5.890270 +v 0.372438 10.036929 8.085607 +v 0.666265 10.036927 11.908642 v 1.159394 7.167399 5.890272 v 1.159394 9.473121 5.890272 -v 1.159394 9.473119 11.908644 -v 1.018901 7.167399 11.908644 -v 1.159394 7.167399 11.908644 -v 1.159394 9.473119 11.908644 -v 0.570611 9.870733 11.908644 -v 1.018901 9.373807 11.908644 -v 0.667251 10.036927 5.890272 +v 1.159394 9.473121 11.908642 +v 1.018901 7.167401 11.908642 +v 1.159394 7.167401 11.908642 +v 1.159394 9.473121 11.908642 +v 0.570611 9.870735 11.908642 +v 1.018901 9.373809 11.908642 +v 0.667251 10.036927 5.890270 v -1.018901 9.373809 5.890272 -v -1.018901 9.373807 11.908644 -v -1.018901 7.167399 11.908644 -v -0.372438 10.036927 8.085609 -v -0.372438 10.296735 5.890272 -v -0.372438 10.036927 5.890272 -v -0.372438 10.036927 8.085609 -v -0.570611 9.870735 5.890272 -v -0.570611 9.870733 11.908644 -v 0.570611 9.870735 5.890272 -v 0.372438 10.296735 5.890272 +v -1.018901 9.373809 11.908642 +v -1.018901 7.167401 11.908642 +v -0.372438 10.036929 8.085607 +v -0.372438 10.296735 5.890270 +v -0.372438 10.036927 5.890270 +v -0.372438 10.036929 8.085607 +v -0.570611 9.870735 5.890270 +v -0.570611 9.870735 11.908642 +v 0.570611 9.870735 5.890270 +v 0.372438 10.296735 5.890270 v 1.592578 6.930664 -2.831019 v 1.924818 6.930664 -2.831019 v 1.924818 6.930664 -2.831019 v 2.253843 6.726052 -1.549974 v 1.592578 6.125614 -1.931486 -v 1.592578 6.966193 -1.398447 +v 1.592578 6.966193 -1.398448 v 1.924818 6.125614 -1.931486 v 1.592578 6.125614 -1.931486 -v 1.592578 7.603653 -2.269642 +v 1.592578 7.603653 -2.269644 v 1.592578 6.930664 -2.831019 v 1.924818 6.534985 -3.056432 v 1.924818 6.726052 -1.549974 -v 1.924818 7.371370 -2.466391 -v 2.253843 7.371370 -2.466391 +v 1.924818 7.371370 -2.466393 +v 2.253843 7.371370 -2.466393 v -1.051770 0.545047 3.730687 v 1.360567 1.614293 3.789785 v 1.051232 1.834943 4.322482 @@ -5806,73 +1250,73 @@ v -1.582758 1.087353 2.951361 v 1.050937 0.062500 3.588312 v 1.051055 0.730363 5.438924 v 1.050937 1.329366 3.504859 -v 1.239158 -6.352968 -5.953228 -v -1.239158 -6.352968 -5.953228 -v -1.239158 -6.459403 -6.210184 +v 1.239158 -6.352970 -5.953228 +v -1.239158 -6.352970 -5.953228 +v -1.239158 -6.459404 -6.210184 v -1.239158 -6.973310 -6.210184 v 1.239158 -6.973310 -6.210184 -v 1.239158 -6.716357 -6.316617 +v 1.239158 -6.716359 -6.316617 v -1.239158 -7.079744 -5.953228 -v -1.239158 -6.716357 -5.589839 -v 1.239158 -6.716357 -5.589839 -v 1.239158 -6.973310 -5.696272 +v -1.239158 -6.716359 -5.589839 +v 1.239158 -6.716359 -5.589839 +v 1.239158 -6.973310 -5.696270 v -0.836559 -7.541790 -5.464879 -v -1.148529 -7.632973 -5.164886 +v -1.148529 -7.632975 -5.164886 v -1.239158 -7.503078 -5.592237 -v -0.843982 -8.845317 -1.176260 +v -0.843982 -8.845317 -1.176258 v -1.582758 -7.547009 -5.447709 -v -0.974568 -7.096977 -6.928317 -v -1.239158 -7.188473 -6.627295 -v -0.857694 5.453763 12.938878 -v 0.857694 5.453763 12.938878 -v 0.857694 7.218984 12.938878 -v -0.580191 5.127946 12.938878 -v 0.580191 5.127946 12.938878 -v 0.427195 9.430100 -1.953275 -v -1.051055 -9.408401 0.676293 -v -0.580191 5.127946 12.938878 +v -0.974568 -7.096979 -6.928317 +v -1.239158 -7.188475 -6.627295 +v -0.857694 5.453765 12.938878 +v 0.857694 5.453765 12.938878 +v 0.857694 7.218986 12.938876 +v -0.580191 5.127948 12.938878 +v 0.580191 5.127948 12.938878 +v 0.427195 9.430100 -1.953277 +v -1.051055 -9.408401 0.676295 +v -0.580191 5.127948 12.938878 v 0.403942 7.218984 -4.804955 -v 1.239158 -6.459403 -6.210184 -v -1.239158 -6.459403 -5.696272 -v 1.239158 -6.459403 -5.696272 +v 1.239158 -6.459404 -6.210184 +v -1.239158 -6.459404 -5.696270 +v 1.239158 -6.459404 -5.696270 v 1.239158 -7.079744 -5.953228 -v 1.239158 -6.352968 -5.953228 -v 0.957142 7.218984 5.409400 -v 0.843982 7.218984 5.409400 +v 1.239158 -6.352970 -5.953228 +v 0.957142 7.218986 5.409400 +v 0.843982 7.218986 5.409400 v 0.957142 7.863286 5.710876 -v 1.213076 7.624437 -1.953275 -v 0.708688 7.624437 -1.953275 -v 0.397424 7.218984 -1.953275 -v 0.692288 8.145895 -1.953275 -v 0.427195 9.430100 -1.953275 -v 1.213076 8.145895 -1.953275 -v 1.213076 9.430100 -1.953275 -v -0.957142 7.218984 6.277361 -v 1.582758 7.218982 18.331852 -v 0.843982 7.218984 5.409400 +v 1.213076 7.624437 -1.953277 +v 0.708688 7.624437 -1.953277 +v 0.397424 7.218984 -1.953277 +v 0.692288 8.145895 -1.953277 +v 0.427195 9.430100 -1.953277 +v 1.213076 8.145895 -1.953277 +v 1.213076 9.430100 -1.953277 +v -0.957142 7.218986 6.277359 +v 1.582758 7.218986 18.331852 +v 0.843982 7.218986 5.409400 v 1.582758 5.870734 -4.399592 -v 0.580398 4.410827 6.286258 -v 1.051055 4.410827 6.286258 -v 1.051055 4.410827 9.595867 -v -0.580398 4.410827 8.504850 -v -0.580398 5.143752 8.504850 -v 0.580398 5.143752 8.504850 -v 0.580398 5.143752 5.307025 +v 0.580398 4.410829 6.286258 +v 1.051055 4.410829 6.286258 +v 1.051055 4.410829 9.595867 +v -0.580398 4.410829 8.504850 +v -0.580398 5.143754 8.504850 +v 0.580398 5.143754 8.504850 +v 0.580398 5.143754 5.307024 v 0.580398 3.816195 5.489355 -v 0.580398 4.250057 5.891657 -v 1.582758 5.194825 18.331852 -v 1.373788 5.194825 19.361946 -v 1.051055 5.194825 19.361946 -v 1.051055 5.194827 6.202400 -v 1.582758 5.194827 5.282278 -v 1.582758 6.342137 18.331852 -v 1.051055 4.834128 12.349441 -v -1.051055 4.834128 12.349441 -v -1.051055 3.986079 11.231197 -v -1.051055 4.197896 10.160744 -v 1.051055 -0.223474 11.574593 -v 1.051055 0.126897 9.525374 -v 1.051055 0.200441 10.158533 +v 0.580398 4.250059 5.891655 +v 1.582758 5.194829 18.331852 +v 1.373788 5.194829 19.361946 +v 1.051055 5.194829 19.361946 +v 1.051055 5.194829 6.202400 +v 1.582758 5.194829 5.282278 +v 1.582758 6.342139 18.331852 +v 1.051055 4.834130 12.349441 +v -1.051055 4.834130 12.349441 +v -1.051055 3.986081 11.231197 +v -1.051055 4.197898 10.160744 +v 1.051055 -0.223472 11.574593 +v 1.051055 0.126899 9.525374 +v 1.051055 0.200443 10.158533 v -1.051770 0.545047 2.951361 v -1.051770 1.087353 2.951361 v -1.051770 0.955821 2.753111 @@ -5881,62 +1325,62 @@ v 1.051203 0.060934 3.592092 v 1.358388 0.595196 3.367662 v -1.582758 0.955821 2.788985 v -1.051770 0.955821 2.753111 -v 1.051055 0.446518 11.231197 -v 1.051055 0.805342 10.660654 -v 1.051055 3.374604 10.660654 -v 1.425465 6.342137 12.470450 -v 1.582758 6.342137 12.374792 -v 1.582758 6.342137 18.331852 -v 1.425465 6.129148 12.324278 -v 1.582758 6.173631 12.234967 -v 1.582758 6.342137 12.374792 -v 1.425465 5.534111 12.470450 -v 1.582758 5.534111 12.374792 -v 1.582758 5.657321 12.234967 -v 1.425465 5.714319 12.324278 -v 1.425465 6.342137 12.470450 -v 1.373788 6.342137 19.361946 -v 1.373788 5.534109 19.361946 -v 1.425465 5.714319 12.324278 -v 1.425465 6.129148 12.324278 -v 1.051055 5.194825 19.361946 -v 1.373788 5.194825 19.361946 -v 1.373788 5.534109 19.361946 -v 1.373788 6.342137 19.361946 -v 1.373788 7.218982 19.361946 -v 0.857694 7.218982 19.361946 +v 1.051055 0.446520 11.231197 +v 1.051055 0.805344 10.660654 +v 1.051055 3.374606 10.660654 +v 1.425465 6.342139 12.470448 +v 1.582758 6.342139 12.374790 +v 1.582758 6.342139 18.331852 +v 1.425465 6.129150 12.324278 +v 1.582758 6.173633 12.234967 +v 1.582758 6.342139 12.374790 +v 1.425465 5.534113 12.470450 +v 1.582758 5.534113 12.374792 +v 1.582758 5.657323 12.234967 +v 1.425465 5.714321 12.324278 +v 1.425465 6.342139 12.470448 +v 1.373788 6.342139 19.361946 +v 1.373788 5.534112 19.361946 +v 1.425465 5.714321 12.324278 +v 1.425465 6.129150 12.324278 +v 1.051055 5.194829 19.361946 +v 1.373788 5.194829 19.361946 +v 1.373788 5.534112 19.361946 +v 1.373788 6.342139 19.361946 +v 1.373788 7.218986 19.361946 +v 0.857694 7.218986 19.361946 v -1.582758 0.676579 2.788985 v -1.051770 0.676579 2.753111 -v 1.051055 5.194827 6.202400 +v 1.051055 5.194829 6.202400 v 1.051055 4.815591 5.698347 -v 1.051055 4.834128 12.349441 -v 1.051055 5.194825 19.361946 -v 1.051055 4.834128 19.361946 +v 1.051055 4.834130 12.349441 +v 1.051055 5.194829 19.361946 +v 1.051055 4.834130 19.361946 v 1.051203 0.060934 3.592092 v 1.050937 0.062500 3.588312 v 1.051055 -0.223472 3.408138 v 1.051055 4.245723 5.289183 -v 1.582758 5.534109 18.331852 -v 1.373788 5.534109 19.361946 -v 1.373788 5.194825 19.361946 -v 1.373788 7.218982 19.361946 -v 1.373788 6.342137 19.361946 -v 1.373788 5.534109 19.361946 -v 1.051055 4.834128 19.361946 -v 0.857694 5.453605 19.361946 -v 0.580398 5.127510 19.361946 -v -1.051055 0.145061 11.660562 -v -1.051055 -0.223474 11.574593 -v 1.051055 -0.223474 11.574593 +v 1.582758 5.534112 18.331852 +v 1.373788 5.534112 19.361946 +v 1.373788 5.194829 19.361946 +v 1.373788 7.218986 19.361946 +v 1.373788 6.342139 19.361946 +v 1.373788 5.534112 19.361946 +v 1.051055 4.834130 19.361946 +v 0.857694 5.453609 19.361946 +v 0.580398 5.127513 19.361946 +v -1.051055 0.145063 11.660562 +v -1.051055 -0.223472 11.574593 +v 1.051055 -0.223472 11.574593 v 1.494327 1.329366 3.504859 -v 1.051055 -0.223474 11.574593 -v -1.051055 -0.223474 11.574593 +v 1.051055 -0.223472 11.574593 +v -1.051055 -0.223472 11.574593 v -1.051055 -0.223472 3.408138 -v -1.051055 0.446518 11.231197 -v -1.051055 0.145061 11.660562 -v 1.051055 0.145061 11.660562 -v 1.051055 0.446518 11.231197 -v -1.051055 4.834128 19.361946 +v -1.051055 0.446520 11.231197 +v -1.051055 0.145063 11.660562 +v 1.051055 0.145063 11.660562 +v 1.051055 0.446520 11.231197 +v -1.051055 4.834130 19.361946 v -0.832096 -2.992427 3.243009 v 0.832096 -2.992427 3.243009 v 0.832096 -2.281892 2.617995 @@ -5950,162 +1394,162 @@ v -0.832096 -3.798709 2.025143 v 0.832096 -3.798709 2.025143 v 0.832096 -3.666983 2.980051 v 1.051055 -0.223472 3.408138 -v 1.051055 -6.827383 0.859532 -v 1.582758 -6.767919 0.122678 -v 1.582758 -7.606416 0.140500 -v 1.051055 -7.663412 0.798394 -v 1.051055 -8.710466 0.929088 +v 1.051055 -6.827383 0.859534 +v 1.582758 -6.767919 0.122680 +v 1.582758 -7.606416 0.140502 +v 1.051055 -7.663412 0.798396 +v 1.051055 -8.710466 0.929090 v 0.832096 -2.281892 2.617995 v 0.832096 -3.798709 2.025143 -v 1.051055 -6.827383 0.859532 -v 1.051055 -9.408401 0.676293 -v 1.539709 -9.237019 0.112444 -v 1.582758 -8.611731 0.338328 -v 1.051055 -7.663412 0.798394 -v -1.051055 -7.663412 0.798394 -v -1.051055 -8.710466 0.929088 +v 1.051055 -6.827383 0.859534 +v 1.051055 -9.408401 0.676295 +v 1.539709 -9.237019 0.112446 +v 1.582758 -8.611731 0.338330 +v 1.051055 -7.663412 0.798396 +v -1.051055 -7.663412 0.798396 +v -1.051055 -8.710466 0.929090 v -0.832096 -3.798709 2.025143 -v -1.051055 -9.408401 0.676293 -v 1.051055 -9.408401 0.676293 -v 1.051055 -8.710466 0.929088 +v -1.051055 -9.408401 0.676295 +v 1.051055 -9.408401 0.676295 +v 1.051055 -8.710466 0.929090 v -0.403942 7.218984 -4.804955 -v 1.051055 0.491167 10.501270 -v 1.051055 0.145061 11.660562 +v 1.051055 0.491169 10.501270 +v 1.051055 0.145063 11.660562 v 1.051055 4.245723 5.289183 -v 1.052369 3.020580 5.130578 +v 1.052369 3.020581 5.130578 v 1.052369 2.312512 5.048415 -v 1.051055 3.816076 5.489355 -v 1.051055 4.250057 5.891657 -v 1.051055 4.410827 6.286258 +v 1.051055 3.816077 5.489355 +v 1.051055 4.250059 5.891655 +v 1.051055 4.410829 6.286258 v 1.051055 4.815591 5.698347 -v 1.051055 5.194827 6.202400 -v 1.051055 4.410827 9.595867 -v 1.051055 4.197896 10.160744 -v 1.051055 3.986079 11.231197 -v 1.051055 3.846210 10.532600 +v 1.051055 5.194829 6.202400 +v 1.051055 4.410829 9.595867 +v 1.051055 4.197898 10.160744 +v 1.051055 3.986081 11.231197 +v 1.051055 3.846212 10.532600 v 1.050937 1.329366 3.504859 -v -1.052369 3.020580 5.130578 +v -1.052369 3.020581 5.130578 v -1.052369 2.312512 5.048415 v 1.052369 2.312512 5.048415 -v 1.052369 3.020580 5.130578 -v 1.051055 3.816076 5.489355 -v 0.580398 3.410160 5.307025 -v 0.580398 4.250057 5.891657 -v 1.051055 4.250057 5.891657 +v 1.052369 3.020581 5.130578 +v 1.051055 3.816077 5.489355 +v 0.580398 3.410161 5.307024 +v 0.580398 4.250059 5.891655 +v 1.051055 4.250059 5.891655 v 0.580398 3.816195 5.489355 -v -1.051055 0.126897 9.525374 -v -1.051055 0.200441 10.158533 -v 1.051055 0.200441 10.158533 -v -1.051055 0.491167 10.501270 -v 1.051055 0.491167 10.501270 +v -1.051055 0.126899 9.525374 +v -1.051055 0.200443 10.158533 +v 1.051055 0.200443 10.158533 +v -1.051055 0.491169 10.501270 +v 1.051055 0.491169 10.501270 v -1.051055 0.126897 6.278877 -v 1.051055 0.126897 9.525374 -v -1.051055 0.805342 10.660654 -v 1.051055 0.805342 10.660654 +v 1.051055 0.126899 9.525374 +v -1.051055 0.805344 10.660654 +v 1.051055 0.805344 10.660654 v -1.051055 0.303245 5.858099 v 1.051055 0.126897 6.278877 -v -1.051055 3.374604 10.660654 -v 1.051055 3.374604 10.660654 +v -1.051055 3.374606 10.660654 +v 1.051055 3.374606 10.660654 v -1.051055 0.730363 5.438924 v 1.051055 0.303245 5.858099 -v -1.051055 3.846210 10.532600 -v 1.051055 3.846210 10.532600 +v -1.051055 3.846212 10.532600 +v 1.051055 3.846212 10.532600 v -1.052369 1.419883 5.161799 v 1.051055 0.730363 5.438924 -v 1.051055 4.197896 10.160744 +v 1.051055 4.197898 10.160744 v 1.052369 1.419883 5.161799 -v 0.580398 5.143752 5.307025 -v -0.580398 5.143752 5.307025 -v -0.580398 3.410160 5.307025 -v 0.580398 3.410160 5.307025 -v 0.580398 4.410827 6.286258 -v 0.580398 5.143752 8.504850 -v -0.580398 5.143752 8.504850 -v -0.580398 5.143752 5.307025 -v 0.580398 4.410827 8.504850 -v 0.580398 5.143752 8.504850 -v 0.580398 4.410827 8.504850 -v 1.582758 -3.887019 -5.026797 +v 0.580398 5.143754 5.307024 +v -0.580398 5.143754 5.307024 +v -0.580398 3.410161 5.307024 +v 0.580398 3.410161 5.307024 +v 0.580398 4.410829 6.286258 +v 0.580398 5.143754 8.504850 +v -0.580398 5.143754 8.504850 +v -0.580398 5.143754 5.307024 +v 0.580398 4.410829 8.504850 +v 0.580398 5.143754 8.504850 +v 0.580398 4.410829 8.504850 +v 1.582758 -3.887019 -5.026795 v 1.582758 -5.973763 -5.781600 -v 1.239158 -5.908380 -6.182570 -v 0.974568 -7.096977 -6.928317 -v 0.974568 -3.532901 -5.626941 +v 1.239158 -5.908381 -6.182570 +v 0.974568 -7.096979 -6.928317 +v 0.974568 -3.532902 -5.626941 v 0.974568 -2.299957 -4.683156 v 1.582758 -2.770208 -4.057409 v 0.974568 2.986196 -2.567274 v 1.582758 2.997752 -1.677936 v 0.974568 4.768444 -3.230170 -v 1.582758 5.705916 -3.303000 +v 1.582758 5.705914 -3.303000 v 0.974568 4.193733 -2.693952 v 1.582758 4.316335 -1.880566 v 1.582758 5.060399 -2.393605 -v 1.113677 5.685023 -6.433600 +v 1.113677 5.685021 -6.433600 v 1.488590 5.921740 -5.685918 v 0.528251 5.631948 -6.753191 -v 1.239158 -6.353005 -5.417203 -v 1.582758 -6.272798 -5.294007 +v 1.239158 -6.353005 -5.417202 +v 1.582758 -6.272799 -5.294005 v 1.582758 -6.783546 -5.235445 -v 1.239158 -6.111135 -5.821549 +v 1.239158 -6.111135 -5.821548 v 1.582758 -7.547009 -5.447709 v 1.239158 -7.503078 -5.592237 -v 1.239158 -6.751891 -5.355608 -v 1.239158 -5.908380 -6.182570 +v 1.239158 -6.751893 -5.355608 +v 1.239158 -5.908381 -6.182570 v 1.582758 -5.973763 -5.781600 -v 1.239158 -7.188473 -6.627295 -v 1.213076 9.430100 -1.953275 -v 1.213076 8.145895 -1.953275 +v 1.239158 -7.188475 -6.627295 +v 1.213076 9.430100 -1.953277 +v 1.213076 8.145895 -1.953277 v 1.582758 -2.770208 -4.057409 -v 1.582758 -3.887019 -5.026797 -v 1.582758 -6.272798 -5.294007 +v 1.582758 -3.887019 -5.026795 +v 1.582758 -6.272799 -5.294005 v 1.582758 -5.973763 -5.781600 v 1.582758 -6.783546 -5.235445 v 1.582758 -7.547009 -5.447709 v 1.582758 -7.547009 -5.447709 -v 1.148529 -7.632973 -5.164886 +v 1.148529 -7.632975 -5.164886 v 1.239158 -7.503078 -5.592237 v 0.836559 -7.541790 -5.464879 -v 0.974568 -7.096977 -6.928317 -v 1.239158 -7.188473 -6.627295 -v 1.539709 -9.237019 0.112444 -v 1.051055 -9.408401 0.676293 -v 0.843982 -8.845317 -1.176260 -v 0.843982 -8.845317 -1.176260 -v 0.843982 7.218984 5.409400 -v 1.148529 7.218984 4.965837 -v 1.148529 7.218984 0.843372 -v 1.148529 -7.632973 -5.164886 -v 0.836559 7.218984 0.486124 +v 0.974568 -7.096979 -6.928317 +v 1.239158 -7.188475 -6.627295 +v 1.539709 -9.237019 0.112446 +v 1.051055 -9.408401 0.676295 +v 0.843982 -8.845317 -1.176258 +v 0.843982 -8.845317 -1.176258 +v 0.843982 7.218986 5.409400 +v 1.148529 7.218986 4.965837 +v 1.148529 7.218984 0.843370 +v 1.148529 -7.632975 -5.164886 +v 0.836559 7.218984 0.486122 v 0.836559 -7.541790 -5.464879 -v 1.148529 -7.632973 -5.164886 +v 1.148529 -7.632975 -5.164886 v -0.836559 -7.541790 -5.464879 -v -0.843982 7.218984 5.409400 -v 1.148529 -8.749960 -1.489985 -v 0.957142 7.863286 7.609767 -v -0.957142 7.863286 7.609767 -v -0.957142 7.218984 7.609767 -v 0.957142 7.218984 5.409400 +v -0.843982 7.218986 5.409400 +v 1.148529 -8.749960 -1.489983 +v 0.957142 7.863286 7.609766 +v -0.957142 7.863286 7.609766 +v -0.957142 7.218986 7.609766 +v 0.957142 7.218986 5.409400 v 0.957142 7.863286 5.710876 -v 0.957142 7.863286 7.609767 -v -0.957142 7.863286 7.609767 -v 0.957142 7.863286 7.609767 +v 0.957142 7.863286 7.609766 +v -0.957142 7.863286 7.609766 +v 0.957142 7.863286 7.609766 v 0.957142 7.863286 5.710876 -v 0.957142 7.218984 7.609767 -v 0.957142 7.218984 6.277361 +v 0.957142 7.218986 7.609766 +v 0.957142 7.218986 6.277359 v 2.253843 6.930664 -2.831019 v 2.253843 6.930664 -2.831019 v 1.592578 6.125614 -1.931486 v 2.253843 6.902664 -4.747439 v 2.253843 6.726052 -1.549974 -v 2.253843 6.966193 -1.398447 -v 1.709833 6.807340 5.318413 -v 1.965886 6.807340 5.149458 +v 2.253843 6.966193 -1.398448 +v 1.709833 6.807342 5.318411 +v 1.965886 6.807342 5.149457 v 1.965886 7.483090 5.848535 -v 1.965886 6.807340 5.848535 -v 1.882584 6.807340 7.165412 -v 2.249606 6.807340 7.165412 -v -1.051055 5.194827 6.202400 -v -1.373788 5.194825 19.361946 -v 0.000000 8.128884 22.443676 +v 1.965886 6.807342 5.848535 +v 1.882584 6.807342 7.165411 +v 2.249606 6.807342 7.165411 +v -1.051055 5.194829 6.202400 +v -1.373788 5.194829 19.361946 +v 0.000000 8.128888 22.443676 v 0.000000 7.882946 5.649786 v 1.469249 0.829702 3.368853 v 1.133210 0.829702 3.301505 @@ -6113,75 +1557,757 @@ v -0.991334 0.714416 2.803811 v -0.991334 0.583586 2.934655 v -1.284940 0.714416 2.803811 v 1.979996 6.437829 -1.926155 -v -1.425465 6.129148 12.324278 -v -1.373788 6.342137 19.361946 -v -1.582758 6.342137 12.374792 -v -1.582758 5.194827 5.282278 -v -1.213076 9.430100 -1.953275 +v -1.425465 6.129150 12.324278 +v -1.373788 6.342139 19.361946 +v -1.582758 6.342139 12.374790 +v -1.582758 5.194829 5.282278 +v -1.213076 9.430100 -1.953277 v -1.051770 0.545047 3.730687 -v -1.213076 8.145895 -1.953275 +v -1.213076 8.145895 -1.953277 v -1.239158 -7.503078 -5.592237 -v 1.213076 7.624437 -4.804955 -v 1.213076 7.624437 -4.804955 -v 0.708688 7.624437 -1.953275 -v 1.213076 8.145895 -1.953275 -v 1.213076 9.430100 -1.953275 -v 0.857694 7.218982 19.361946 -v -1.550631 -8.362582 -1.129572 -v -1.550631 7.128137 4.054968 -v 1.550631 -8.362582 -1.129572 -v -0.580398 4.410827 8.504850 -v -0.957142 7.218984 7.609767 -v -0.708688 7.624437 -1.953275 -v -1.213076 7.218984 -1.953275 +v 1.213076 7.624435 -4.804955 +v 1.213076 7.624435 -4.804955 +v 0.708688 7.624437 -1.953277 +v 1.213076 8.145895 -1.953277 +v 1.213076 9.430100 -1.953277 +v 0.857694 7.218986 19.361946 +v -1.550631 -8.362582 -1.129570 +v -1.550631 7.128139 4.054966 +v 1.550631 -8.362582 -1.129570 +v -0.580398 4.410829 8.504850 +v -0.957142 7.218986 7.609766 +v -0.708688 7.624437 -1.953277 +v -1.213076 7.218984 -1.953277 v -0.702042 8.145895 -4.804955 v -0.702042 8.145895 -4.804955 v -0.450662 9.430100 -4.335176 v -1.213076 8.145895 -4.804955 v -0.450662 9.430100 -4.335176 v -0.832096 -2.281892 2.617995 -v -1.373788 6.342137 19.361946 -v -1.373788 5.534109 19.361946 +v -1.373788 6.342139 19.361946 +v -1.373788 5.534112 19.361946 v -1.159394 9.473121 5.890272 -v -1.159394 7.167399 11.908644 +v -1.159394 7.167401 11.908642 v -1.018901 9.373809 5.890272 -v -0.372438 10.296735 5.890272 +v -0.372438 10.296735 5.890270 v 1.159394 7.167399 5.890272 -v 1.159394 7.167399 11.908644 -v 0.666265 10.036925 11.908644 +v 1.159394 7.167401 11.908642 +v 0.666265 10.036927 11.908642 v -1.018901 7.167399 5.890272 v 2.253843 6.726052 -1.549974 v -1.051770 0.676579 2.753111 v 1.050937 0.595196 3.367662 v -1.051770 1.087353 2.951361 -v -1.239158 -6.716357 -6.316617 -v -1.239158 -6.973310 -5.696272 -v -0.857694 7.218984 12.938878 -v -1.239158 -6.352968 -5.953228 -v 1.213076 7.218984 -1.953275 -v 0.580398 4.410827 8.504850 -v 1.051055 3.986079 11.231197 +v -1.239158 -6.716359 -6.316617 +v -1.239158 -6.973310 -5.696270 +v -0.857694 7.218986 12.938876 +v -1.239158 -6.352970 -5.953228 +v 1.213076 7.218984 -1.953277 +v 0.580398 4.410829 8.504850 +v 1.051055 3.986081 11.231197 v -1.051770 0.676579 2.753111 v 1.050937 0.062500 3.588312 -v 1.373788 6.342137 19.361946 -v 1.425465 6.342137 12.470450 -v 1.425465 5.534111 12.470450 -v 1.582758 5.534109 18.331852 -v 1.051055 0.145061 11.660562 +v 1.373788 6.342139 19.361946 +v 1.425465 6.342139 12.470448 +v 1.425465 5.534113 12.470450 +v 1.582758 5.534112 18.331852 +v 1.051055 0.145063 11.660562 v 1.051055 -0.223472 3.408138 -v 1.051055 4.834128 19.361946 +v 1.051055 4.834130 19.361946 v -0.832096 -2.281892 2.617995 v -0.832096 -2.992427 3.243009 v 0.832096 -3.666983 2.980051 v -0.832096 -3.666983 2.980051 -v 1.052369 3.020580 5.130578 -v 0.580398 3.410160 5.307025 -v 0.580398 5.143752 5.307025 -v 1.148529 -8.749960 -1.489985 -v 1.148529 7.218984 0.843372 -v 0.957142 7.218984 7.609767 +v 1.052369 3.020581 5.130578 +v 0.580398 3.410161 5.307024 +v 0.580398 5.143754 5.307024 +v 1.148529 -8.749960 -1.489983 +v 1.148529 7.218984 0.843370 +v 0.957142 7.218986 7.609766 v -0.957142 7.863286 5.710876 -v 1.965886 6.807340 5.848535 +v 1.965886 6.807342 5.848535 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 -0.9983 -0.0575 +vn -0.0000 -0.9772 -0.2125 +vn -0.0000 -0.9666 -0.2562 +vn -0.0000 -0.4950 0.8689 +vn 1.0000 -0.0000 -0.0000 +vn -0.0053 0.6390 -0.7692 +vn -0.0000 0.6406 -0.7679 +vn -0.0035 0.6415 -0.7671 +vn -0.0000 -0.9606 -0.2778 +vn -0.0000 -0.9397 -0.3420 +vn -0.0000 0.1886 -0.9821 +vn -0.0000 0.6463 -0.7631 +vn -0.0036 0.6433 -0.7656 +vn -0.0000 0.8070 0.5905 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 0.9924 0.1232 +vn -0.0000 -0.5336 0.8457 +vn -0.0011 -0.5347 0.8451 +vn -0.0008 -0.5346 0.8451 +vn 0.0002 0.9819 0.1892 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 0.8598 0.5106 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -0.9851 -0.1717 +vn -0.0000 -0.9356 0.3532 +vn -0.0000 -0.9999 0.0171 +vn -0.0000 0.3735 0.9276 +vn -0.0000 -0.2142 0.9768 +vn -0.0000 -0.1128 0.9936 +vn -0.0000 -0.6774 0.7356 +vn -0.0000 -0.5021 0.8648 +vn -0.0000 -0.9934 -0.1149 +vn -0.0000 -0.0000 -1.0000 +vn -0.9978 0.0662 -0.0000 +vn -0.8965 0.4430 -0.0000 +vn -0.9472 0.3207 -0.0000 +vn -0.9575 -0.1451 0.2492 +vn -0.9344 -0.2629 0.2404 +vn -0.9389 -0.2242 0.2612 +vn -0.8781 -0.1764 0.4448 +vn -0.9776 -0.1677 0.1269 +vn 0.9978 -0.0662 -0.0000 +vn 0.8965 -0.4430 -0.0000 +vn 0.9472 -0.3207 -0.0000 +vn -0.6588 0.7523 -0.0000 +vn -0.7523 0.6588 -0.0000 +vn 0.6588 -0.7523 -0.0000 +vn 0.7523 -0.6588 -0.0000 +vn -0.3207 0.9472 -0.0001 +vn -0.4430 0.8965 -0.0001 +vn 0.3207 -0.9472 -0.0000 +vn 0.4430 -0.8965 -0.0000 +vn 0.0662 0.9978 -0.0000 +vn -0.0661 0.9978 -0.0000 +vn -0.0662 -0.9978 -0.0000 +vn 0.0661 -0.9978 -0.0000 +vn 0.0661 0.9978 -0.0000 +vn 0.4430 0.8965 -0.0000 +vn 0.3207 0.9472 -0.0000 +vn -0.0661 -0.9978 -0.0000 +vn -0.4430 -0.8965 -0.0000 +vn -0.3207 -0.9472 -0.0000 +vn 0.7523 0.6588 -0.0000 +vn 0.6588 0.7523 -0.0000 +vn -0.7523 -0.6588 -0.0000 +vn -0.6588 -0.7523 -0.0000 +vn 0.9472 0.3207 -0.0000 +vn 0.8965 0.4430 -0.0001 +vn -0.9472 -0.3207 -0.0000 +vn -0.8965 -0.4430 -0.0000 +vn 0.9978 0.0662 -0.0000 +vn -0.9978 -0.0662 -0.0000 +vn 0.8965 -0.4430 0.0001 +vn -0.3207 0.9472 -0.0000 +vn -0.4430 0.8965 -0.0000 +vn 0.0662 -0.9978 -0.0000 +vn -0.0662 0.9978 -0.0000 +vn -0.4430 -0.8965 0.0001 +vn -0.3207 -0.9472 0.0001 +vn 0.8965 0.4430 -0.0000 +vn -0.0000 0.9071 -0.4210 +vn -0.0000 0.9960 0.0890 +vn -0.0000 0.9960 -0.0890 +vn -0.0000 0.9960 0.0889 +vn -0.0000 0.8181 0.5750 +vn -0.0000 0.9071 0.4210 +vn -0.0000 0.5751 -0.8181 +vn -0.0000 0.8181 -0.5751 +vn -0.0000 0.4210 0.9071 +vn -0.0000 0.5750 0.8181 +vn -0.0000 0.0890 -0.9960 +vn -0.0000 0.4210 -0.9071 +vn -0.0000 -0.0889 0.9960 +vn -0.0000 0.0889 0.9960 +vn -0.0000 -0.4210 -0.9071 +vn -0.0000 0.0889 -0.9960 +vn -0.0000 -0.0890 -0.9960 +vn -0.0000 -0.5750 0.8181 +vn -0.0000 -0.4210 0.9071 +vn -0.0000 -0.8181 -0.5751 +vn -0.0000 -0.5751 -0.8181 +vn -0.0000 -0.9071 0.4210 +vn -0.0000 -0.8181 0.5750 +vn -0.0000 -0.9960 -0.0890 +vn -0.0000 -0.9071 -0.4210 +vn -0.0000 -0.9960 -0.0889 +vn -0.0000 -0.9960 0.0889 +vn -0.0000 -0.9960 0.0890 +vn -0.0000 -0.8181 -0.5750 +vn -0.0000 -0.5751 0.8181 +vn -0.0000 -0.8181 0.5751 +vn -0.0000 -0.5750 -0.8181 +vn -0.0000 -0.0890 0.9960 +vn -0.0000 0.0890 0.9960 +vn -0.0000 0.5750 -0.8181 +vn -0.0000 0.8181 0.5751 +vn -0.0000 0.5751 0.8181 +vn -0.0000 0.8181 -0.5750 +vn -0.0000 0.9960 -0.0889 +vn -0.8737 -0.1315 -0.4684 +vn -0.9862 -0.0041 -0.1656 +vn -0.8872 0.2205 -0.4054 +vn -0.7168 -0.3702 0.5909 +vn -0.0822 -0.6000 0.7957 +vn -0.6767 -0.2422 0.6953 +vn -0.9125 0.1216 -0.3905 +vn -0.9940 0.0221 -0.1068 +vn -0.9139 -0.0027 -0.4059 +vn -0.9673 0.2232 0.1202 +vn -0.9954 -0.0433 0.0853 +vn -0.9560 0.1006 0.2757 +vn -0.9685 -0.0991 0.2284 +vn -0.9504 -0.2074 0.2318 +vn -0.9883 0.1182 0.0969 +vn -0.4530 0.2801 -0.8464 +vn -0.4864 0.0390 -0.8729 +vn -0.9142 0.0704 -0.3992 +vn -0.1396 0.2721 -0.9521 +vn -0.0360 0.1283 -0.9911 +vn -0.8460 0.1204 -0.5194 +vn -0.9076 0.3995 -0.1294 +vn -0.4854 0.7468 -0.4545 +vn -0.5755 0.8091 -0.1186 +vn -0.0534 0.7747 -0.6301 +vn -0.3445 0.4756 -0.8094 +vn -0.9779 -0.0642 -0.1992 +vn -0.9947 0.0245 -0.0996 +vn -0.9931 -0.0834 -0.0820 +vn -0.9058 -0.1444 -0.3984 +vn -0.9566 0.2613 0.1289 +vn -0.9201 -0.3126 0.2362 +vn -0.9313 -0.3635 0.0218 +vn -0.9227 -0.2852 0.2592 +vn -0.9128 -0.3909 0.1182 +vn -0.9312 -0.3570 0.0740 +vn -0.9684 -0.1692 0.1830 +vn -0.9038 -0.3696 0.2156 +vn -0.9809 -0.1776 0.0789 +vn -0.9786 -0.2002 0.0480 +vn -0.9987 -0.0475 -0.0201 +vn -0.9688 0.2308 0.0903 +vn -0.9376 0.0952 0.3344 +vn -0.9649 0.1135 0.2367 +vn -0.9495 0.2763 0.1486 +vn -0.9832 0.0556 0.1736 +vn -0.9844 0.1276 0.1212 +vn -0.9290 0.2500 0.2729 +vn -0.9956 -0.0665 0.0653 +vn -0.9625 -0.0724 0.2614 +vn -0.9851 -0.1084 0.1335 +vn -0.9833 -0.0502 0.1751 +vn -0.9846 -0.0087 0.1745 +vn -0.9900 0.1007 0.0988 +vn -0.8989 0.0907 0.4287 +vn -0.9942 -0.0403 -0.1002 +vn -0.9968 -0.0448 -0.0663 +vn -0.8695 -0.2858 -0.4029 +vn -0.9335 -0.3023 -0.1926 +vn -0.9089 -0.4170 0.0072 +vn -0.9846 -0.1696 0.0430 +vn -0.9932 -0.0221 -0.1146 +vn -0.9900 0.0999 -0.0998 +vn -0.9920 0.1239 -0.0234 +vn -0.5747 0.5494 0.6065 +vn -0.8998 0.4026 0.1680 +vn -0.0745 0.7122 0.6980 +vn -0.3706 0.2403 0.8972 +vn -0.0963 -0.2070 0.9736 +vn -0.0758 0.2517 0.9648 +vn -0.6409 -0.7662 -0.0458 +vn -0.9298 -0.2330 0.2848 +vn -0.0000 -0.5750 0.8182 +vn -0.0000 -0.5750 -0.8182 +vn -0.0000 -0.8182 -0.5750 +vn -0.0000 0.5750 0.8182 +vn -0.0000 -0.0889 -0.9960 +vn -0.0000 -0.9239 -0.3826 +vn -0.0000 0.9239 -0.3826 +vn -0.0001 0.9675 -0.2527 +vn -0.0000 -0.3827 -0.9239 +vn -0.0000 0.3827 -0.9239 +vn -0.0000 0.8629 -0.5054 +vn -0.0000 -0.9676 -0.2526 +vn -0.0000 -0.8629 -0.5054 +vn 0.0002 -0.9676 -0.2526 +vn -0.0000 0.9906 0.1368 +vn -0.0000 0.6038 0.7972 +vn -0.0000 0.7972 0.6038 +vn -0.0000 -0.1368 0.9906 +vn -0.0000 0.1368 0.9906 +vn -0.0000 -0.7972 0.6037 +vn -0.0000 -0.6038 0.7972 +vn -0.0000 -0.7972 0.6038 +vn -0.0000 -0.9906 -0.1368 +vn -0.0000 -0.9906 0.1368 +vn -0.0000 -0.6038 -0.7972 +vn -0.0000 -0.7972 -0.6038 +vn -0.0000 0.1368 -0.9906 +vn -0.0000 -0.1368 -0.9906 +vn -1.0000 -0.0000 0.0037 +vn -1.0000 -0.0000 0.0075 +vn -0.0000 0.7972 -0.6038 +vn -0.0000 0.6038 -0.7972 +vn -0.5344 0.1812 0.8256 +vn -0.5073 -0.3627 0.7818 +vn -0.5247 -0.1884 0.8302 +vn -0.3422 0.8174 0.4635 +vn -0.5018 0.4301 0.7505 +vn -0.0000 0.9906 -0.1368 +vn 0.0138 0.7488 -0.6626 +vn -0.0105 0.4047 -0.9144 +vn 0.0087 0.3748 -0.9271 +vn 0.0713 0.8730 -0.4825 +vn -0.0055 0.9136 -0.4067 +vn -0.9958 -0.0324 -0.0853 +vn -0.9474 -0.3190 -0.0268 +vn 0.9932 -0.0426 -0.1083 +vn 0.9930 -0.0531 -0.1054 +vn 0.9015 -0.4270 -0.0701 +vn 0.9474 -0.3190 -0.0268 +vn 0.4260 -0.8999 -0.0934 +vn -0.4482 -0.5058 0.7370 +vn -0.4877 -0.5255 0.6971 +vn -0.9280 -0.3587 -0.1012 +vn -0.8534 -0.4727 -0.2197 +vn -0.4260 -0.8989 -0.1030 +vn 0.9394 -0.1625 -0.3019 +vn 0.5145 -0.3209 0.7952 +vn 0.9295 -0.1383 0.3419 +vn 0.9268 -0.1407 0.3483 +vn -0.6818 -0.5955 -0.4249 +vn -0.9911 -0.0000 0.1331 +vn -0.9978 -0.0000 0.0666 +vn 0.9404 0.1281 -0.3149 +vn 0.9304 0.1374 -0.3398 +vn -0.0000 -0.9918 0.1279 +vn -0.0000 -0.9960 -0.0893 +vn 0.1721 0.4024 -0.8991 +vn -0.0000 0.4238 -0.9058 +vn -0.9476 -0.1416 -0.2864 +vn -0.9930 -0.0531 -0.1054 +vn -0.9476 -0.1416 -0.2865 +vn 0.8934 -0.3903 -0.2225 +vn -1.0000 -0.0006 0.0001 +vn -1.0000 -0.0010 -0.0002 +vn -0.9886 -0.0584 0.1389 +vn -1.0000 -0.0000 -0.0006 +vn -1.0000 0.0008 -0.0006 +vn -0.8859 -0.1792 0.4279 +vn -0.9569 -0.1081 0.2694 +vn -0.9391 -0.1502 0.3090 +vn -0.9371 -0.1343 0.3223 +vn 0.4203 -0.4751 0.7730 +vn 0.3339 -0.2816 0.8996 +vn 0.8896 -0.1729 0.4226 +vn -0.9473 0.1523 -0.2819 +vn -0.9802 0.0091 -0.1979 +vn -0.2835 -0.4795 -0.8305 +vn -0.2965 -0.1206 -0.9474 +vn -0.0364 0.1142 -0.9928 +vn 0.9363 0.1191 -0.3304 +vn -0.9363 0.1191 -0.3304 +vn 0.9910 0.0439 -0.1265 +vn -0.9910 0.0439 -0.1265 +vn -0.8724 -0.1036 0.4777 +vn -0.9603 0.0267 0.2778 +vn -0.9801 -0.1117 0.1641 +vn -0.9999 -0.0132 -0.0001 +vn -0.9719 -0.0333 0.2329 +vn -0.9376 0.1183 -0.3271 +vn -0.9212 0.1912 -0.3389 +vn -0.0000 -0.9072 -0.4206 +vn 0.0208 -0.2762 -0.9609 +vn -0.0000 0.2238 -0.9746 +vn -0.0000 0.1500 -0.9887 +vn -0.9257 -0.1856 -0.3295 +vn -0.9477 -0.2262 -0.2251 +vn -0.9436 -0.3063 -0.1256 +vn -0.5812 -0.6406 -0.5019 +vn -0.0856 0.9400 -0.3303 +vn -0.0807 0.8763 -0.4749 +vn 0.0006 0.2651 -0.9642 +vn -0.9910 0.0440 -0.1265 +vn -0.9363 0.1191 -0.3303 +vn -0.4139 0.3096 -0.8560 +vn -0.3758 -0.8080 -0.4538 +vn -0.3691 -0.8001 -0.4728 +vn -0.3743 -0.7996 -0.4696 +vn -0.3715 0.2637 -0.8902 +vn -0.3430 0.0002 -0.9393 +vn -0.3595 0.1300 -0.9240 +vn -0.3937 -0.6141 -0.6841 +vn 0.9227 -0.2852 0.2592 +vn 0.8989 0.0907 0.4287 +vn 0.6998 -0.1880 0.6892 +vn 0.9504 -0.2074 0.2318 +vn 0.9201 -0.3126 0.2362 +vn 0.6767 -0.2422 0.6953 +vn 0.9649 0.1135 0.2367 +vn 0.9883 0.1182 0.0969 +vn 0.7168 -0.3702 0.5909 +vn 0.9376 0.0952 0.3344 +vn 0.9560 0.1006 0.2757 +vn 0.4864 0.0390 -0.8729 +vn 0.9142 0.0704 -0.3992 +vn 0.9058 -0.1444 -0.3984 +vn 0.0717 -0.2461 -0.9666 +vn 0.0360 0.1283 -0.9911 +vn 0.9139 -0.0027 -0.4059 +vn 0.9125 0.1216 -0.3905 +vn 0.8460 0.1204 -0.5194 +vn 0.9083 -0.1711 -0.3818 +vn 0.4795 -0.1233 -0.8689 +vn 0.8695 -0.2858 -0.4029 +vn 0.3927 -0.4709 -0.7900 +vn 0.8737 -0.1315 -0.4684 +vn 0.3129 -0.4800 -0.8196 +vn 0.8872 0.2205 -0.4054 +vn 0.3805 -0.0664 -0.9224 +vn 0.5755 0.8091 -0.1186 +vn 0.3592 0.8985 0.2523 +vn 0.8999 0.4025 0.1679 +vn 0.0333 -0.3953 -0.9180 +vn -0.0238 -0.5460 -0.8375 +vn -0.0633 -0.2827 -0.9571 +vn -0.0221 0.3133 -0.9494 +vn 0.3445 0.4756 -0.8094 +vn 0.0128 -0.0140 -0.9998 +vn 0.0009 0.2043 -0.9789 +vn 0.9968 -0.0448 -0.0663 +vn 0.9932 -0.0221 -0.1146 +vn 0.9089 -0.4170 0.0072 +vn 0.9846 -0.1696 0.0430 +vn 0.9298 -0.2330 0.2848 +vn 0.4446 -0.3490 -0.8249 +vn 0.9076 0.3995 -0.1294 +vn 0.0550 0.2948 -0.9540 +vn 0.0963 -0.2070 0.9736 +vn 0.0822 -0.6000 0.7957 +vn 0.9940 0.0221 -0.1068 +vn 0.9954 -0.0433 0.0853 +vn 0.4530 0.2801 -0.8464 +vn 0.4854 0.7468 -0.4545 +vn 0.0534 0.7747 -0.6301 +vn 0.9920 0.1239 -0.0234 +vn 0.9900 0.0999 -0.0998 +vn 0.9900 0.1007 0.0988 +vn 0.9862 -0.0041 -0.1656 +vn -0.1765 -0.9638 -0.1996 +vn 0.6818 -0.5955 -0.4249 +vn 0.3051 -0.5726 -0.7609 +vn 0.2122 -0.9513 -0.2235 +vn -0.0000 0.0901 -0.9959 +vn 0.4259 -0.8802 -0.2092 +vn 0.9999 0.0167 0.0007 +vn 1.0000 0.0019 0.0034 +vn -0.0000 0.9018 -0.4322 +vn 0.0616 0.9395 -0.3370 +vn -0.0000 0.9364 -0.3510 +vn 0.0856 0.9400 -0.3303 +vn 0.0516 0.7096 -0.7027 +vn -0.0000 0.1126 -0.9936 +vn -0.0000 0.2651 -0.9642 +vn -0.0000 0.2199 -0.9755 +vn -0.0000 0.9018 -0.4321 +vn -0.0613 0.7646 -0.6415 +vn 0.9666 0.0118 -0.2559 +vn 0.9053 -0.1764 0.3864 +vn 0.9477 -0.2262 -0.2251 +vn 0.9436 -0.3063 -0.1256 +vn 0.9389 -0.2242 0.2612 +vn 0.9776 -0.1677 0.1269 +vn 0.9978 -0.0000 0.0666 +vn 0.9257 -0.1856 -0.3295 +vn -0.8895 0.4570 -0.0000 +vn -0.2763 0.9611 0.0002 +vn -0.5527 0.8333 0.0001 +vn -0.9736 0.2284 -0.0000 +vn -0.0976 -0.7839 0.6132 +vn -0.6439 -0.6219 -0.4457 +vn -0.0928 -0.7999 -0.5929 +vn -0.0690 -0.9541 -0.2914 +vn -0.4446 -0.3490 -0.8249 +vn -0.3592 0.8985 0.2523 +vn -0.1134 0.9756 -0.1878 +vn -0.0002 0.2043 -0.9789 +vn -0.0550 0.2948 -0.9540 +vn -0.6998 -0.1881 0.6892 +vn -0.9083 -0.1711 -0.3818 +vn -0.0717 -0.2461 -0.9666 +vn -0.4795 -0.1233 -0.8689 +vn -0.3927 -0.4709 -0.7900 +vn -0.3129 -0.4800 -0.8196 +vn -0.3805 -0.0664 -0.9224 +vn -0.0333 -0.3953 -0.9180 +vn 0.0238 -0.5460 -0.8375 +vn 0.0633 -0.2827 -0.9571 +vn 0.0221 0.3133 -0.9494 +vn -0.0128 -0.0140 -0.9998 +vn 0.9673 0.2232 0.1202 +vn 0.9685 -0.0991 0.2284 +vn 0.1396 0.2721 -0.9521 +vn 0.9779 -0.0642 -0.1992 +vn 0.9931 -0.0834 -0.0820 +vn 0.9335 -0.3023 -0.1926 +vn 0.9566 0.2613 0.1289 +vn 0.9313 -0.3635 0.0219 +vn 0.9128 -0.3909 0.1182 +vn 0.9786 -0.2002 0.0480 +vn 0.9312 -0.3570 0.0740 +vn 0.9038 -0.3696 0.2156 +vn 0.9684 -0.1692 0.1830 +vn 0.9809 -0.1776 0.0789 +vn 0.9987 -0.0475 -0.0201 +vn 0.9688 0.2308 0.0903 +vn 0.9495 0.2763 0.1486 +vn 0.9290 0.2500 0.2729 +vn 0.9844 0.1276 0.1212 +vn 0.9832 0.0556 0.1736 +vn 0.9956 -0.0665 0.0653 +vn 0.9625 -0.0724 0.2614 +vn 0.9851 -0.1084 0.1335 +vn 0.9833 -0.0502 0.1751 +vn 0.9846 -0.0087 0.1745 +vn 0.9942 -0.0403 -0.1002 +vn 0.9947 0.0245 -0.0996 +vn 0.5747 0.5494 0.6065 +vn 0.3706 0.2403 0.8972 +vn 0.0745 0.7122 0.6980 +vn 0.0758 0.2517 0.9648 +vn 0.6409 -0.7662 -0.0458 +vn 0.1193 -0.7677 0.6296 +vn 0.0973 -0.7840 0.6130 +vn 0.6439 -0.6219 -0.4457 +vn 0.0928 -0.7999 -0.5929 +vn 0.1134 0.9756 -0.1878 +vn 0.0654 0.9680 0.2423 +vn -0.3723 -0.3800 -0.8468 +vn -0.6432 -0.3414 -0.6854 +vn -0.4592 -0.4012 -0.7925 +vn -0.4263 -0.8678 -0.2554 +vn -0.3935 0.1531 -0.9065 +vn -0.5149 0.4477 -0.7311 +vn -0.4133 0.4461 -0.7938 +vn -0.9212 0.1912 -0.3390 +vn -0.9375 0.1183 -0.3271 +vn 0.9999 0.0135 -0.0099 +vn 0.9998 0.0213 0.0011 +vn 0.9996 0.0271 0.0029 +vn -0.9998 0.0213 0.0011 +vn -0.9996 0.0271 0.0029 +vn -0.9997 0.0252 0.0067 +vn 0.8895 0.4570 -0.0000 +vn 0.9736 0.2284 -0.0000 +vn 0.4196 0.9077 -0.0000 +vn -0.0000 -0.9568 -0.2908 +vn -0.9999 0.0167 0.0007 +vn -0.9995 0.0314 -0.0020 +vn -0.0004 -0.2799 0.9600 +vn 0.0001 -0.5968 0.8024 +vn -0.0004 -0.5061 0.8625 +vn 0.0001 -0.7783 0.6279 +vn -0.0000 -0.8622 0.5066 +vn -0.0000 -0.9667 0.2558 +vn -0.0004 -0.2668 0.9638 +vn -0.9911 -0.0000 0.1332 +vn -0.9894 -0.1160 0.0873 +vn 0.8417 -0.2936 0.4532 +vn 0.4395 -0.3448 0.8294 +vn 0.4540 -0.0806 0.8873 +vn -1.0000 0.0006 0.0012 +vn 1.0000 0.0095 -0.0023 +vn 0.9997 0.0252 0.0067 +vn 0.0001 0.2199 -0.9755 +vn -0.0616 0.9395 -0.3370 +vn -0.4392 0.0051 0.8984 +vn -0.3221 -0.2815 0.9039 +vn -0.4149 -0.3225 0.8508 +vn -0.4184 -0.0205 0.9080 +vn 0.0147 -0.3602 0.9328 +vn -0.3221 -0.2814 0.9039 +vn -0.1337 0.9663 0.2198 +vn -0.9800 -0.0000 0.1988 +vn -0.5451 0.8383 -0.0000 +vn -0.2015 0.9795 0.0001 +vn -0.9362 0.3516 0.0001 +vn -0.9334 -0.3588 -0.0000 +vn -0.5359 -0.8443 -0.0000 +vn -0.0000 0.9989 0.0471 +vn -0.0000 0.9992 0.0392 +vn -0.0000 0.9931 0.1175 +vn -0.0000 0.9992 0.0393 +vn 0.1595 0.9872 0.0003 +vn 0.9363 0.3512 -0.0000 +vn 0.9362 0.3516 0.0001 +vn 0.5451 0.8383 0.0001 +vn 0.9334 -0.3588 -0.0000 +vn 0.4063 -0.9137 -0.0000 +vn -0.2679 -0.9634 -0.0000 +vn -0.0000 -0.5363 0.8440 +vn -0.0005 -0.5361 0.8442 +vn -0.0000 -0.8176 -0.5758 +vn -0.9850 -0.0671 0.1589 +vn 0.4464 -0.6134 0.6515 +vn -0.0000 -0.9239 0.3827 +vn -0.0000 -0.7929 0.6094 +vn 0.4465 -0.6134 0.6515 +vn 0.0655 0.8693 0.4899 +vn 0.0479 0.9748 0.2177 +vn 0.0450 0.9407 0.3362 +vn 1.0000 -0.0001 -0.0003 +vn 1.0000 0.0004 -0.0008 +vn 1.0000 -0.0007 -0.0006 +vn 0.9756 -0.0842 0.2027 +vn 1.0000 0.0004 -0.0001 +vn 0.4540 -0.0805 0.8873 +vn -0.0000 -0.1298 0.9915 +vn 0.0112 -0.9503 0.3111 +vn 1.0000 0.0002 -0.0001 +vn 1.0000 -0.0007 -0.0000 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 0.6037 0.7972 +vn -0.0000 0.7972 0.6037 +vn -0.0000 0.7071 -0.7071 +vn 0.4240 0.3427 -0.8383 +vn -0.9999 0.0135 -0.0099 +vn 0.4193 0.9079 0.0001 +vn -1.0000 0.0095 -0.0023 +vn 0.0001 -0.7972 -0.6037 +vn -0.0001 -0.6037 -0.7972 +vn -0.1722 0.3928 -0.9033 +vn -0.0000 -0.9929 -0.1193 +vn 0.9911 -0.0000 0.1332 +vn -0.0000 -0.9478 0.3188 +vn -0.0000 -0.4448 0.8956 +vn -0.0000 -0.8814 -0.4724 +vn -0.9418 0.2820 0.1830 +vn -0.7726 0.5655 0.2886 +vn 0.0646 -0.2831 0.9569 +vn 0.0405 -0.5936 0.8037 +vn 0.5073 -0.3627 0.7818 +vn 0.5247 -0.1884 0.8302 +vn 0.4877 -0.5255 0.6971 +vn 0.3422 0.8174 0.4635 +vn 0.1337 0.9663 0.2198 +vn 0.5018 0.4301 0.7505 +vn 0.5344 0.1812 0.8256 +vn 1.0000 -0.0000 0.0037 +vn 1.0000 -0.0000 0.0075 +vn 0.0674 -0.0000 0.9977 +vn 0.9894 -0.1160 0.0873 +vn 0.9344 -0.2629 0.2404 +vn -0.9978 -0.0354 0.0555 +vn 0.9575 -0.1436 0.2500 +vn 0.9800 -0.0000 0.1988 +vn -0.0000 -0.2272 0.9739 +vn 0.0002 0.6059 0.7955 +vn -0.0000 0.8184 0.5746 +vn -0.0002 0.3029 0.9530 +vn -0.0000 0.6605 0.7508 +vn -0.0000 -0.3632 0.9317 +vn -0.0000 -0.9906 0.1367 +vn 0.4395 -0.3449 0.8294 +vn 0.3228 -0.2420 0.9150 +vn 0.9719 -0.0333 0.2329 +vn 0.9603 0.0267 0.2778 +vn 0.4392 0.0417 0.8974 +vn 0.4198 -0.1075 0.9012 +vn -0.0197 -0.3607 0.9325 +vn -0.0257 -0.3607 0.9323 +vn 0.5470 -0.3017 0.7809 +vn 0.9801 -0.1117 0.1641 +vn 0.8724 -0.1036 0.4777 +vn -0.4184 -0.0204 0.9080 +vn 0.0385 -0.3613 0.9316 +vn 0.5470 -0.3018 0.7808 +vn 0.4198 -0.1076 0.9012 +vn 1.0000 0.0009 -0.0015 +vn 1.0000 0.0001 -0.0016 +vn 1.0000 0.0006 0.0012 +vn -0.0000 -0.4993 0.8664 +vn -0.0000 -0.2667 0.9638 +vn -0.0000 0.0459 0.9989 +vn -0.0000 -0.0351 0.9994 +vn 0.0006 -0.3409 0.9401 +vn 0.0003 -0.5061 0.8625 +vn 0.0003 -0.3136 0.9496 +vn -0.0000 -0.7783 0.6279 +vn -0.0001 -0.5968 0.8024 +vn -0.0000 0.9970 -0.0770 +vn -0.0000 0.8727 -0.4883 +vn -0.0001 0.9526 -0.3041 +vn -0.0000 0.5657 -0.8246 +vn -0.0000 0.6710 -0.7415 +vn -0.0000 0.9914 0.1311 +vn -0.0000 0.9993 -0.0385 +vn -0.0000 0.1546 -0.9880 +vn -0.0000 0.3091 -0.9510 +vn -0.0000 0.8635 0.5044 +vn -0.0000 0.9650 0.2623 +vn -0.0000 -0.1761 -0.9844 +vn -0.0000 -0.0880 -0.9961 +vn -0.0000 0.6016 0.7988 +vn -0.0000 0.7882 0.6154 +vn -0.0000 -0.5913 -0.8065 +vn -0.0000 -0.4311 -0.9023 +vn -0.0000 0.2927 0.9562 +vn -0.0000 0.4905 0.8714 +vn -0.0000 -0.8104 -0.5859 +vn -0.0000 0.2098 0.9777 +vn -0.0002 -0.2799 0.9600 +vn 0.9212 0.1912 -0.3390 +vn 0.9375 0.1183 -0.3271 +vn 0.9363 0.1191 -0.3303 +vn 0.5457 0.2840 -0.7884 +vn 0.4129 0.3969 -0.8198 +vn 0.3689 0.4766 -0.7979 +vn 0.9473 0.1523 -0.2819 +vn 0.5471 0.1521 -0.8231 +vn 0.4428 -0.7141 -0.5422 +vn 0.4578 -0.2885 -0.8409 +vn 0.6432 -0.3414 -0.6854 +vn 0.2347 -0.0372 -0.9713 +vn 0.3723 -0.3800 -0.8468 +vn 0.3937 -0.6141 -0.6841 +vn 0.3430 0.0002 -0.9393 +vn 0.3691 -0.8001 -0.4728 +vn 0.3715 0.2637 -0.8902 +vn 0.4024 0.2750 -0.8731 +vn 0.3595 0.1300 -0.9240 +vn 0.3758 -0.8080 -0.4538 +vn 0.3743 -0.7997 -0.4695 +vn 0.9910 0.0440 -0.1265 +vn 0.9212 0.1912 -0.3389 +vn 0.9376 0.1183 -0.3271 +vn 0.9999 -0.0132 -0.0001 +vn -0.5587 0.3131 -0.7680 +vn -0.1722 0.3928 -0.9034 +vn -0.9404 0.1281 -0.3149 +vn -0.9295 -0.1383 0.3419 +vn -0.9268 -0.1407 0.3483 +vn -0.3897 -0.3446 0.8541 +vn -0.3829 -0.3454 0.8568 +vn -0.9268 -0.1406 0.3483 +vn 0.2529 -0.3618 0.8973 +vn 0.1722 0.4024 -0.8991 +vn -0.0000 -0.6037 0.7972 +vn -0.4024 0.2750 -0.8731 +vn 0.9995 0.0314 -0.0020 +vn -0.1193 -0.7677 0.6296 +vn -0.0654 0.9680 0.2423 +vn 0.0690 -0.9541 -0.2914 +vn -1.0000 0.0019 0.0034 +vn -0.9363 0.3512 -0.0000 +vn 0.0373 0.8327 0.5525 +vn -0.0000 0.1951 0.9808 +vn -0.0000 -0.9574 0.2887 +vn -0.0000 0.3827 0.9239 +vn 0.4482 -0.5058 0.7370 +vn 0.0004 -0.3409 0.9401 +vn -0.9304 0.1374 -0.3398 vt 0.359688 0.958662 vt 0.362249 0.958669 vt 0.362239 0.962551 @@ -6194,7 +2320,6 @@ vt 0.802908 0.855453 vt 0.510231 0.845136 vt 0.505784 0.850420 vt 0.501968 0.847202 -vt 0.501968 0.847202 vt 0.477758 0.837077 vt 0.479214 0.833341 vt 0.823042 0.855453 @@ -6203,7 +2328,6 @@ vt 0.827595 0.857179 vt 0.802908 0.857179 vt 0.811898 0.857179 vt 0.796689 0.855453 -vt 0.811898 0.857179 vt 0.813272 0.857179 vt 0.813272 0.853744 vt 0.827595 0.853744 @@ -6212,20 +2336,15 @@ vt 0.826014 0.855453 vt 0.520442 0.836072 vt 0.524015 0.833150 vt 0.535257 0.845043 -vt 0.827595 0.853744 -vt 0.827595 0.857179 vt 0.833203 0.857179 vt 0.897698 0.596442 vt 0.896258 0.600185 vt 0.920512 0.610205 vt 0.823042 0.853744 -vt 0.813272 0.853744 -vt 0.813272 0.857179 vt 0.516880 0.839562 vt 0.528775 0.851703 vt 0.521438 0.859613 vt 0.833202 0.853744 -vt 0.833203 0.857179 vt 0.834678 0.855453 vt 0.790690 0.954682 vt 0.780443 0.954656 @@ -6267,24 +2386,18 @@ vt 0.272751 0.953162 vt 0.272713 0.966602 vt 0.331675 0.961203 vt 0.177415 0.958145 -vt 0.359702 0.953407 vt 0.364426 0.953420 vt 0.364412 0.958675 vt 0.968179 0.972572 vt 0.957932 0.972563 vt 0.957935 0.968680 vt 0.794573 0.954693 -vt 0.790690 0.954682 -vt 0.790662 0.965283 vt 0.804820 0.954720 -vt 0.794573 0.954693 vt 0.794545 0.965293 vt 0.516662 0.969893 vt 0.516635 0.965166 vt 0.536604 0.965056 vt 0.536631 0.969780 -vt 0.536604 0.965056 -vt 0.542169 0.965022 vt 0.422489 0.970295 vt 0.185446 0.960788 vt 0.780437 0.957218 @@ -6630,28 +2743,16 @@ vt 0.167364 0.945664 vt 0.166181 0.948525 vt 0.178034 0.954320 vt 0.174785 0.956657 -vt 0.174541 0.955967 vt 0.179705 0.950732 -vt 0.177491 0.953870 vt 0.170851 0.956935 -vt 0.170974 0.956250 vt 0.179415 0.946774 -vt 0.179011 0.950603 vt 0.177257 0.943358 -vt 0.178740 0.946996 vt 0.167318 0.955307 -vt 0.167756 0.954771 vt 0.173333 0.941582 -vt 0.176717 0.943925 vt 0.169069 0.942125 -vt 0.173219 0.942341 vt 0.165031 0.952168 -vt 0.165672 0.951916 vt 0.166033 0.944684 -vt 0.169417 0.942815 vt 0.164562 0.948303 -vt 0.166596 0.945097 -vt 0.165246 0.948395 vt 0.507413 0.952649 vt 0.505313 0.947007 vt 0.509953 0.950848 @@ -6764,7 +2865,6 @@ vt 0.477729 0.848052 vt 0.472954 0.850913 vt 0.479582 0.858578 vt 0.157244 0.800156 -vt 0.467929 0.425487 vt 0.498939 0.421464 vt 0.494112 0.421021 vt 0.147537 0.667691 @@ -6907,69 +3007,25 @@ vt 0.926803 0.522223 vt 0.717079 0.850025 vt 0.697889 0.850599 vt 0.717428 0.855838 -vt 0.613102 0.701990 -vt 0.607249 0.704798 vt 0.604947 0.699432 vt 0.592611 0.724172 vt 0.593958 0.711478 -vt 0.599324 0.712678 vt 0.597415 0.704236 -vt 0.312958 0.141183 -vt 0.288488 0.144289 vt 0.288507 0.148770 -vt 0.317240 0.144505 -vt 0.314711 0.143246 -vt 0.319804 0.145507 -vt 0.325454 0.142462 -vt 0.322554 0.143866 -vt 0.409234 0.135866 -vt 0.327219 0.140192 -vt 0.328247 0.138878 -vt 0.405721 0.101225 -vt 0.404279 0.105677 -vt 0.407977 0.107246 vt 0.413761 0.103579 -vt 0.405876 0.098902 -vt 0.306707 0.110882 -vt 0.309657 0.110962 -vt 0.309891 0.106421 vt 0.304331 0.110232 vt 0.306789 0.105923 -vt 0.297301 0.104416 vt 0.304667 0.104836 -vt 0.295338 0.103287 vt 0.297557 0.100926 -vt 0.293302 0.103617 vt 0.294488 0.100201 -vt 0.286363 0.106300 vt 0.281002 0.141297 -vt 0.285169 0.140549 vt 0.305962 0.103033 vt 0.298304 0.099009 vt 0.294755 0.098165 vt 0.291840 0.098506 -vt 0.292374 0.100537 vt 0.307621 0.103550 -vt 0.309891 0.106421 -vt 0.303415 0.111921 -vt 0.306196 0.112876 -vt 0.407352 0.130669 -vt 0.405962 0.129635 -vt 0.405654 0.131658 vt 0.411997 0.105183 -vt 0.290334 0.107950 vt 0.310018 0.103888 -vt 0.288440 0.150917 -vt 0.410611 0.137862 -vt 0.309823 0.112593 -vt 0.404333 0.130464 -vt 0.403938 0.100755 -vt 0.287801 0.103905 -vt 0.286167 0.102470 -vt 0.291353 0.108873 -vt 0.293525 0.104978 -vt 0.286523 0.140196 -vt 0.295221 0.104723 vt 0.467771 0.862417 vt 0.497984 0.436373 vt 0.497981 0.437334 @@ -6985,14 +3041,11 @@ vt 0.530971 0.430508 vt 0.530207 0.434348 vt 0.534930 0.434344 vt 0.534933 0.435180 -vt 0.534933 0.435180 vt 0.534935 0.435851 vt 0.530211 0.435865 vt 0.741145 0.587771 vt 0.741138 0.579863 vt 0.784380 0.579822 -vt 0.784380 0.579822 -vt 0.741138 0.579863 vt 0.741104 0.572114 vt 0.536277 0.431807 vt 0.536268 0.430545 @@ -7051,66 +3104,11 @@ vt 0.508686 0.443623 vt 0.508723 0.431665 vt 0.504603 0.443610 vt 0.507926 0.431663 -vt 0.410802 0.134669 vt 0.413032 0.107126 vt 0.415337 0.106231 vt 0.412617 0.135954 -vt 0.411997 0.105183 -vt 0.281002 0.141297 -vt 0.284455 0.105100 -vt 0.309891 0.106421 -vt 0.310018 0.103888 -vt 0.288507 0.148770 -vt 0.304331 0.110232 -vt 0.413761 0.103579 -vt 0.306789 0.105923 -vt 0.304667 0.104836 -vt 0.297557 0.100926 -vt 0.294488 0.100201 -vt 0.305962 0.103033 -vt 0.298304 0.099009 -vt 0.294755 0.098165 -vt 0.291840 0.098506 -vt 0.307621 0.103550 -vt 0.328674 0.137629 -vt 0.319775 0.144719 -vt 0.403791 0.098527 -vt 0.407173 0.108601 -vt 0.407718 0.109926 -vt 0.408817 0.109428 -vt 0.328434 0.133594 -vt 0.316677 0.139029 -vt 0.317532 0.135389 -vt 0.314226 0.135381 -vt 0.312794 0.139989 -vt 0.319269 0.131437 -vt 0.319955 0.127728 -vt 0.317360 0.129659 -vt 0.319718 0.142303 -vt 0.322593 0.139719 -vt 0.324800 0.135588 -vt 0.325386 0.131443 -vt 0.327174 0.129527 -vt 0.325027 0.127340 -vt 0.319686 0.138706 -vt 0.322039 0.131554 -vt 0.321220 0.135209 -vt 0.322767 0.126903 -vt 0.288842 0.142654 -vt 0.296744 0.105669 -vt 0.404441 0.107178 -vt 0.281673 0.142822 -vt 0.286951 0.148225 -vt 0.279556 0.143871 -vt 0.286064 0.150224 -vt 0.410802 0.134669 -vt 0.412617 0.135954 -vt 0.410802 0.134669 -vt 0.413032 0.107126 -vt 0.415337 0.106231 vt 0.284455 0.105100 vt 0.278808 0.141349 -vt 0.601402 0.707792 vt 0.464288 0.857946 vt 0.430491 0.785523 vt 0.430922 0.789755 @@ -7143,20 +3141,15 @@ vt 0.507074 0.443643 vt 0.507113 0.431685 vt 0.503826 0.431675 vt 0.510646 0.441203 -vt 0.506151 0.441448 vt 0.507810 0.441837 -vt 0.507140 0.440872 vt 0.528708 0.431775 vt 0.528715 0.434644 vt 0.528717 0.435489 vt 0.533441 0.435479 -vt 0.533441 0.435479 -vt 0.528717 0.435489 vt 0.528719 0.436161 vt 0.067244 0.893667 vt 0.062278 0.889043 vt 0.041841 0.899568 -vt 0.528715 0.434644 vt 0.533439 0.434643 vt 0.533438 0.433779 vt 0.420110 0.482081 @@ -7171,7 +3164,6 @@ vt 0.783848 0.868579 vt 0.426594 0.489238 vt 0.479489 0.785493 vt 0.432181 0.790646 -vt 0.479552 0.788234 vt 0.138986 0.619442 vt 0.527793 0.430554 vt 0.523847 0.430532 @@ -7214,7 +3206,6 @@ vt 0.467778 0.429604 vt 0.494848 0.426750 vt 0.499402 0.425107 vt 0.489382 0.771430 -vt 0.488196 0.788828 vt 0.510766 0.435967 vt 0.510768 0.435484 vt 0.512152 0.435975 @@ -7248,8 +3239,6 @@ vt 0.513321 0.441323 vt 0.513348 0.437216 vt 0.513611 0.437033 vt 0.513479 0.428610 -vt 0.513960 0.428667 -vt 0.513966 0.424552 vt 0.503406 0.437409 vt 0.507493 0.437415 vt 0.514611 0.436879 @@ -7268,25 +3257,17 @@ vt 0.517467 0.430640 vt 0.507491 0.438802 vt 0.515346 0.428669 vt 0.515827 0.428613 -vt 0.515352 0.424554 vt 0.512081 0.419451 vt 0.512113 0.430656 vt 0.509957 0.419458 vt 0.512155 0.435491 vt 0.924937 0.604905 -vt 0.823042 0.855453 -vt 0.510231 0.845136 vt 0.834678 0.853744 vt 0.936206 0.619330 vt 0.946414 0.608213 vt 0.838373 0.855453 vt 0.838373 0.857178 vt 0.935119 0.596362 -vt 0.823042 0.857179 -vt 0.505784 0.850420 -vt 0.528775 0.851703 -vt 0.516880 0.839562 -vt 0.520442 0.836072 vt 0.252649 0.671850 vt 0.216060 0.837967 vt 0.688976 0.721051 @@ -7366,16 +3347,13 @@ vt 0.397927 0.464479 vt 0.397927 0.457342 vt 0.347741 0.457341 vt 0.842467 0.852745 -vt 0.834622 0.844873 vt 0.822154 0.857297 vt 0.787926 0.822949 vt 0.775618 0.839118 vt 0.784584 0.838795 -vt 0.119684 0.819896 vt 0.126237 0.820376 vt 0.126494 0.822480 vt 0.043968 0.831329 -vt 0.037050 0.828634 vt 0.121011 0.813305 vt 0.377326 0.801464 vt 0.377276 0.833340 @@ -7389,7 +3367,6 @@ vt 0.264488 0.663647 vt 0.268153 0.665649 vt 0.688940 0.756131 vt 0.689025 0.756305 -vt 0.693601 0.747407 vt 0.987901 0.699231 vt 0.995953 0.699177 vt 0.220114 0.689486 @@ -7400,7 +3377,6 @@ vt 0.467704 0.425373 vt 0.494826 0.421949 vt 0.467887 0.426702 vt 0.467013 0.426422 -vt 0.467704 0.425373 vt 0.468799 0.429341 vt 0.468185 0.429873 vt 0.467346 0.429192 @@ -7416,7 +3392,6 @@ vt 0.837620 0.485005 vt 0.825367 0.485004 vt 0.812070 0.485004 vt 0.812071 0.477177 -vt 0.987930 0.703465 vt 0.995981 0.703411 vt 0.236699 0.817843 vt 0.233036 0.819558 @@ -7429,7 +3404,6 @@ vt 0.167737 0.702484 vt 0.229706 0.822739 vt 0.119645 0.817818 vt 0.126369 0.818161 -vt 0.126237 0.820376 vt 0.127194 0.807182 vt 0.127669 0.812736 vt 0.500038 0.426193 @@ -7441,26 +3415,18 @@ vt 0.460186 0.833470 vt 0.465924 0.833478 vt 0.465974 0.801603 vt 0.695669 0.735883 -vt 0.465974 0.801603 -vt 0.465924 0.833478 vt 0.589758 0.833672 vt 0.452231 0.833457 -vt 0.460186 0.833470 vt 0.460236 0.801593 vt 0.452281 0.801581 vt 0.270941 0.833175 -vt 0.706497 0.462469 vt 0.731733 0.462463 vt 0.731730 0.448114 -vt 0.706500 0.473447 vt 0.731735 0.473442 -vt 0.731733 0.462463 vt 0.744502 0.480559 vt 0.744475 0.455864 -vt 0.731733 0.462463 vt 0.706503 0.488064 vt 0.731738 0.488059 -vt 0.731735 0.473442 vt 0.151521 0.818331 vt 0.187828 0.891142 vt 0.181881 0.889467 @@ -7527,16 +3493,10 @@ vt 0.186143 0.489237 vt 0.197411 0.457342 vt 0.338586 0.457341 vt 0.186142 0.457322 -vt 0.787926 0.822949 -vt 0.800394 0.810525 vt 0.781838 0.791904 vt 0.769305 0.841505 vt 0.790535 0.841313 -vt 0.822154 0.857297 -vt 0.834622 0.844873 -vt 0.800394 0.810525 vt 0.814282 0.865143 -vt 0.822154 0.857297 vt 0.364285 0.464478 vt 0.665099 0.895783 vt 0.696240 0.896784 @@ -7555,14 +3515,9 @@ vt 0.517264 0.902279 vt 0.465653 0.886011 vt 0.473472 0.893576 vt 0.461836 0.878509 -vt 0.531071 0.731273 vt 0.527098 0.727704 vt 0.523628 0.734935 -vt 0.536918 0.728310 vt 0.522247 0.747613 -vt 0.528420 0.748113 -vt 0.528989 0.736149 -vt 0.542761 0.725538 vt 0.534645 0.722946 vt 0.717036 0.890009 vt 0.534917 0.430491 @@ -7597,28 +3552,15 @@ vt 0.519860 0.437209 vt 0.519310 0.440420 vt 0.529931 0.440635 vt 0.530292 0.436681 -vt 0.506125 0.436830 -vt 0.507183 0.437514 vt 0.510722 0.437437 -vt 0.510646 0.441203 -vt 0.510722 0.437437 -vt 0.507183 0.437514 vt 0.930383 0.894023 vt 0.928759 0.883534 vt 0.907068 0.886893 vt 0.506415 0.841924 -vt 0.506415 0.841924 vt 0.796689 0.857179 -vt 0.811898 0.853744 vt 0.532339 0.848213 -vt 0.833202 0.853744 -vt 0.359688 0.958662 vt 0.968182 0.968689 -vt 0.794545 0.965293 vt 0.804792 0.965320 -vt 0.536631 0.969780 -vt 0.542195 0.969746 -vt 0.379766 0.803761 vt 0.842763 0.443343 vt 0.050841 0.952323 vt 0.054072 0.949210 @@ -7647,27 +3589,19 @@ vt 0.177713 0.925811 vt 0.169469 0.975019 vt 0.277487 0.834962 vt 0.368558 0.820578 -vt 0.467205 0.425127 -vt 0.370634 0.800249 vt 0.650931 0.968701 vt 0.351976 0.840046 vt 0.533435 0.432916 -vt 0.598796 0.724641 -vt 0.530209 0.435193 vt 0.530209 0.435193 vt 0.784387 0.587733 vt 0.784346 0.571925 vt 0.532332 0.431836 vt 0.504640 0.431653 -vt 0.412617 0.135954 -vt 0.278808 0.141349 -vt 0.412617 0.135954 vt 0.842494 0.837028 vt 0.514929 0.443643 vt 0.927409 0.934733 vt 0.929762 0.924701 vt 0.906663 0.929866 -vt 0.533439 0.434643 vt 0.533442 0.436150 vt 0.528715 0.433781 vt 0.786503 0.868569 @@ -7680,13 +3614,10 @@ vt 0.488357 0.785906 vt 0.503401 0.440738 vt 0.458378 0.058547 vt 0.509556 0.437196 -vt 0.515346 0.428669 vt 0.513582 0.441326 vt 0.514620 0.431192 vt 0.414941 0.030725 vt 0.517435 0.419436 -vt 0.532339 0.848213 -vt 0.995981 0.703411 vt 0.688948 0.747403 vt 0.995924 0.695002 vt 0.594498 0.858432 @@ -7700,2181 +3631,5779 @@ vt 0.695084 0.980879 vt 0.829999 0.865170 vt 0.398608 0.801497 vt 0.268144 0.669886 -vt 0.688940 0.756131 vt 0.499658 0.422525 -vt 0.468430 0.425751 vt 0.232286 0.840869 vt 0.495422 0.427721 -vt 0.460236 0.801593 vt 0.589808 0.801796 vt 0.270991 0.801299 vt 0.706494 0.448119 -vt 0.706497 0.462469 -vt 0.731735 0.473442 -vt 0.706500 0.473447 vt 0.161689 0.457323 vt 0.769370 0.804329 -vt 0.787926 0.822949 vt 0.489394 0.507784 vt 0.537143 0.425757 vt 0.519297 0.436720 -vt 0.507140 0.440872 vt 0.507859 0.436561 vt 0.351639 0.962522 +s 1 +f 61/3/18 62/4/18 63/5/18 +f 64/6/19 65/7/18 66/8/18 +f 67/9/20 68/10/20 69/11/21 +f 70/12/22 71/13/22 72/14/22 +f 73/14/23 74/15/23 75/16/23 +f 76/17/24 77/18/25 78/19/26 +f 79/20/27 80/21/20 67/9/20 +f 79/20/27 69/11/21 81/22/28 +f 82/21/29 83/23/29 84/24/29 +f 85/25/30 86/26/30 87/27/31 +f 88/28/23 89/29/23 90/30/23 +f 91/25/32 92/19/32 93/31/32 +f 79/20/27 67/9/20 69/11/21 +f 94/32/33 95/33/33 96/34/33 +f 97/35/34 98/24/34 99/23/34 +f 100/36/23 101/37/23 102/38/23 +f 103/39/35 104/31/36 105/40/37 +f 106/41/33 107/42/33 108/43/33 +f 109/44/33 110/45/33 111/46/33 +f 111/46/33 112/47/33 113/48/33 +f 114/49/38 115/50/39 116/51/39 +f 117/52/40 118/53/39 114/49/38 +f 106/41/33 108/43/33 119/54/33 +f 120/55/41 121/56/41 122/57/41 +f 123/58/23 124/59/23 125/60/23 +f 123/58/23 125/60/23 126/61/23 +f 127/62/33 111/46/33 113/48/33 +f 110/45/33 112/47/33 111/46/33 +f 112/47/33 128/63/33 113/48/33 +f 115/50/39 129/64/39 116/51/39 +f 118/53/39 115/50/39 114/49/38 +f 108/43/33 130/65/33 119/54/33 +f 131/66/41 132/67/41 121/56/41 +f 121/56/41 132/67/41 122/57/41 +f 124/59/23 133/68/23 125/60/23 +f 125/60/23 134/69/23 126/61/23 +f 135/70/42 136/71/43 137/72/44 +f 138/73/45 139/74/45 117/52/40 +f 138/73/45 140/75/46 141/76/47 +f 140/75/46 142/77/48 143/78/49 +f 142/77/48 137/72/44 136/71/43 +f 144/79/50 137/72/44 64/6/19 +f 145/80/39 116/51/39 129/64/39 +f 146/7/51 147/81/51 148/82/51 +f 149/83/51 150/84/51 151/85/51 +f 152/86/39 153/41/39 154/54/39 +f 155/87/23 156/86/23 157/88/23 +f 158/89/23 159/90/23 160/91/23 +f 161/92/51 162/91/51 163/61/51 +f 109/44/33 164/93/33 110/45/33 +f 129/64/39 115/50/39 165/94/39 +f 107/42/33 166/95/33 108/43/33 +f 120/55/41 167/96/41 121/56/41 +f 123/58/23 168/97/23 124/59/23 +f 169/98/52 170/99/53 171/100/54 +f 172/101/55 173/102/56 174/103/57 +f 175/104/33 176/105/33 177/106/58 +f 178/107/33 179/108/33 180/109/33 +f 181/110/59 174/103/57 173/102/56 +f 182/111/41 183/112/41 184/113/41 +f 185/114/41 186/115/41 187/116/41 +f 188/117/41 189/118/41 190/119/41 +f 191/120/60 192/121/61 193/122/62 +f 194/123/51 195/124/51 196/125/51 +f 170/99/53 197/126/63 198/127/64 +f 189/128/41 199/129/41 200/130/41 +f 192/121/61 201/131/65 202/132/66 +f 195/124/51 203/133/51 204/134/51 +f 197/126/63 205/135/67 206/136/68 +f 199/137/41 207/138/41 208/139/41 +f 201/131/65 209/140/69 210/141/70 +f 203/133/51 211/142/51 212/143/51 +f 205/135/67 213/144/71 214/145/72 +f 207/138/41 215/146/41 216/147/41 +f 209/148/69 217/149/73 218/150/74 +f 211/142/51 219/151/51 220/152/51 +f 221/153/75 222/154/76 223/155/77 +f 215/146/41 224/156/41 225/157/41 +f 226/158/78 227/159/79 228/160/80 +f 219/151/51 229/161/51 230/162/51 +f 222/163/76 231/164/81 232/165/82 +f 224/156/41 233/166/41 234/167/41 +f 227/159/79 235/168/83 236/169/84 +f 229/161/51 237/170/51 238/171/51 +f 231/164/81 239/172/85 240/173/86 +f 233/166/41 241/174/41 242/175/41 +f 235/168/83 243/176/87 244/177/88 +f 237/170/51 245/178/51 246/179/51 +f 239/180/85 247/181/60 248/182/89 +f 241/174/41 249/183/41 250/184/41 +f 243/176/87 251/185/52 252/186/90 +f 245/178/51 253/187/51 254/188/51 +f 247/181/60 255/189/91 256/190/62 +f 249/183/41 257/191/41 258/192/41 +f 251/185/52 259/193/53 260/194/54 +f 253/187/51 261/195/51 262/196/51 +f 255/189/91 263/197/65 264/198/66 +f 257/191/41 265/199/41 266/200/41 +f 259/193/53 267/201/63 268/202/64 +f 261/195/51 269/203/51 270/204/51 +f 263/197/65 271/205/69 272/206/70 +f 265/199/41 273/207/41 274/208/41 +f 267/201/63 275/209/92 276/210/93 +f 269/203/51 277/211/51 278/212/51 +f 271/205/69 279/213/73 280/214/94 +f 273/207/41 281/215/41 282/216/41 +f 275/209/92 283/217/71 284/218/95 +f 277/211/51 285/219/51 286/220/51 +f 279/213/73 287/221/96 288/222/97 +f 281/215/41 289/223/41 290/224/41 +f 283/225/71 291/226/76 292/227/77 +f 285/219/51 293/228/51 294/229/51 +f 287/221/96 295/230/83 296/231/84 +f 289/223/41 297/232/41 298/233/41 +f 291/226/76 299/234/81 300/235/82 +f 293/228/51 301/236/51 302/237/51 +f 295/230/83 303/238/87 304/239/88 +f 297/232/41 305/240/41 306/241/41 +f 299/234/81 307/242/85 308/243/98 +f 301/236/51 309/244/51 310/245/51 +f 303/238/87 169/98/52 311/246/90 +f 305/240/41 188/117/41 312/247/41 +f 307/242/85 191/120/60 313/248/89 +f 309/244/51 194/123/51 314/249/51 +f 315/250/23 316/251/23 317/252/23 +f 316/251/23 318/253/23 319/254/23 +f 318/253/23 320/255/23 321/256/23 +f 320/255/23 322/257/23 323/258/23 +f 322/257/23 324/259/23 325/260/23 +f 324/259/23 326/261/23 327/262/23 +f 326/261/23 328/263/23 329/264/23 +f 328/263/23 330/265/23 331/266/23 +f 330/265/23 332/267/23 333/268/23 +f 332/267/23 334/269/23 335/270/23 +f 334/269/23 336/271/23 337/272/23 +f 336/271/23 315/250/23 338/273/23 +f 339/274/99 340/275/100 341/276/101 +f 342/277/102 343/278/103 344/279/104 +f 345/280/23 346/281/23 347/282/23 +f 348/283/105 339/274/99 349/284/106 +f 343/278/103 350/285/107 351/286/108 +f 346/281/23 352/287/23 347/282/23 +f 353/288/109 348/283/105 354/289/110 +f 350/285/107 355/290/111 356/291/112 +f 352/287/23 357/292/23 347/282/23 +f 358/293/113 359/294/114 360/295/115 +f 355/290/111 361/296/116 362/297/117 +f 357/292/23 363/298/23 347/282/23 +f 364/299/118 358/293/113 365/300/119 +f 361/296/116 366/301/120 367/302/121 +f 363/298/23 368/303/23 347/282/23 +f 369/304/122 364/299/118 370/305/123 +f 366/301/120 371/306/124 372/307/125 +f 368/303/23 373/308/23 347/282/23 +f 374/309/120 369/304/122 375/310/126 +f 371/306/124 376/311/127 377/312/123 +f 373/308/23 378/313/23 347/282/23 +f 379/314/128 374/309/120 380/315/129 +f 376/311/127 381/316/113 382/317/130 +f 378/313/23 383/318/23 347/282/23 +f 384/319/131 379/314/128 385/320/117 +f 381/316/113 386/321/114 387/322/115 +f 383/318/23 388/323/23 347/282/23 +f 389/324/107 384/319/131 390/325/132 +f 391/326/109 392/327/133 393/328/110 +f 388/323/23 394/329/23 347/282/23 +f 395/330/134 389/324/107 396/331/135 +f 392/327/133 397/332/99 398/333/136 +f 394/329/23 399/334/23 347/282/23 +f 340/275/100 395/330/134 400/335/104 +f 397/332/99 342/277/102 401/336/137 +f 399/334/23 345/280/23 347/282/23 +f 402/337/138 403/338/139 404/339/140 +f 405/340/141 406/341/142 407/342/143 +f 408/343/144 409/344/145 410/345/146 +f 411/346/147 412/347/148 413/348/149 +f 414/349/150 407/342/143 415/350/151 +f 416/351/152 407/342/143 414/349/150 +f 417/352/153 418/353/154 419/354/155 +f 420/355/156 421/356/157 417/352/153 +f 408/343/144 422/357/158 417/352/153 +f 423/358/159 424/359/160 404/339/140 +f 424/359/160 423/358/159 425/360/161 +f 424/359/160 426/361/162 427/362/163 +f 428/363/164 429/364/165 419/354/155 +f 430/365/166 428/363/164 431/366/167 +f 411/346/147 432/367/168 412/347/148 +f 433/368/169 434/369/170 415/350/151 +f 435/370/171 434/369/170 433/368/169 +f 436/371/172 434/369/170 437/372/173 +f 438/373/174 439/374/175 440/375/176 +f 441/376/177 440/375/176 439/374/175 +f 414/349/150 415/350/151 442/377/178 +f 443/378/179 413/348/149 444/379/180 +f 445/380/181 416/351/152 443/378/179 +f 411/346/147 413/348/149 446/381/182 +f 432/367/168 411/346/147 446/381/182 +f 446/381/182 413/348/149 443/378/179 +f 447/382/183 448/383/184 449/384/185 +f 434/369/170 442/377/178 415/350/151 +f 443/378/179 442/377/178 450/385/186 +f 451/386/187 452/387/188 436/371/172 +f 452/387/188 450/385/186 434/369/170 +f 446/381/182 452/387/188 451/386/187 +f 450/385/186 452/387/188 446/381/182 +f 449/384/185 451/386/187 447/382/183 +f 438/373/174 453/388/189 451/386/187 +f 454/389/190 437/372/173 435/370/171 +f 455/390/191 454/389/190 456/391/192 +f 457/392/193 403/338/139 402/337/138 +f 458/393/194 457/392/193 459/394/195 +f 429/364/165 409/344/145 408/343/144 +f 460/395/196 461/396/197 462/397/198 +f 437/372/173 434/369/170 435/370/171 +f 450/385/186 442/377/178 434/369/170 +f 416/351/152 414/349/150 442/377/178 +f 442/377/178 443/378/179 416/351/152 +f 445/380/181 443/378/179 444/379/180 +f 432/367/168 449/384/185 448/383/184 +f 453/388/189 447/382/183 451/386/187 +f 439/374/175 438/373/174 451/386/187 +f 462/397/198 412/347/148 430/365/166 +f 432/367/168 448/383/184 412/347/148 +f 412/347/148 448/383/184 429/364/165 +f 453/388/189 409/344/145 447/382/183 +f 438/373/174 409/344/145 453/388/189 +f 438/373/174 440/375/176 409/344/145 +f 440/375/176 441/376/177 463/398/199 +f 437/372/173 454/389/190 441/376/177 +f 441/376/177 455/390/191 458/393/194 +f 464/399/200 457/392/193 465/400/201 +f 403/338/139 457/392/193 464/399/200 +f 429/364/165 428/363/164 430/365/166 +f 412/347/148 429/364/165 430/365/166 +f 448/383/184 447/382/183 429/364/165 +f 409/344/145 429/364/165 447/382/183 +f 440/375/176 463/398/199 409/344/145 +f 441/376/177 458/393/194 463/398/199 +f 454/389/190 455/390/191 441/376/177 +f 455/390/191 465/400/201 458/393/194 +f 457/392/193 458/393/194 465/400/201 +f 466/401/202 467/402/203 456/391/192 +f 468/403/204 466/401/202 469/404/205 +f 470/405/206 471/406/207 469/404/205 +f 472/407/208 405/340/141 473/408/209 +f 474/409/33 475/410/33 476/411/33 +f 477/412/121 478/413/117 479/414/210 +f 480/415/125 477/412/121 481/416/120 +f 478/413/117 482/417/112 483/418/111 +f 484/419/123 480/415/125 485/420/124 +f 486/421/211 484/419/123 487/422/212 +f 482/417/112 488/423/213 489/424/107 +f 490/425/214 486/421/211 491/426/113 +f 492/427/110 490/425/214 493/428/114 +f 488/423/213 494/429/104 495/430/103 +f 496/431/136 492/427/110 497/432/133 +f 498/433/137 496/431/136 499/434/99 +f 494/429/104 498/433/137 500/435/102 +f 501/436/33 502/437/33 503/413/33 +f 504/438/33 501/436/33 505/412/33 +f 502/437/33 506/439/33 507/417/33 +f 508/440/33 504/438/33 509/415/33 +f 510/441/33 508/440/33 511/419/33 +f 506/439/33 512/442/33 513/423/33 +f 474/443/33 510/441/33 514/421/33 +f 515/444/33 474/443/33 516/425/33 +f 512/442/33 517/445/33 518/429/33 +f 519/446/33 515/444/33 520/427/33 +f 521/447/33 519/446/33 522/431/33 +f 517/445/33 521/447/33 523/433/33 +f 524/448/33 525/449/33 526/450/33 +f 527/451/116 528/452/120 529/453/121 +f 530/454/111 527/451/116 531/455/117 +f 526/450/33 525/449/33 532/456/33 +f 528/452/120 533/457/124 534/458/125 +f 535/459/33 525/449/33 524/448/33 +f 532/456/33 525/449/33 536/460/33 +f 533/457/124 537/461/127 538/462/123 +f 539/463/107 530/454/111 540/464/112 +f 536/460/33 525/449/33 541/465/33 +f 537/461/127 542/466/215 543/467/215 +f 544/468/33 525/449/33 535/459/33 +f 541/465/33 525/449/33 545/469/33 +f 546/470/216 547/471/216 548/472/217 +f 549/473/103 539/463/107 550/474/108 +f 545/469/33 525/449/33 551/475/33 +f 552/476/218 553/477/219 554/478/219 +f 555/479/33 525/449/33 544/468/33 +f 551/475/33 525/449/33 556/480/33 +f 546/470/216 557/481/99 558/482/136 +f 559/483/102 549/473/103 560/484/104 +f 556/480/33 525/449/33 561/485/33 +f 557/481/99 559/483/102 562/486/137 +f 561/485/33 525/449/33 555/479/33 +f 563/487/220 548/472/217 554/478/219 +f 474/409/33 515/488/33 475/410/33 +f 543/467/215 542/466/215 564/489/221 +f 565/490/222 566/491/223 552/476/218 +f 476/492/33 475/493/33 567/494/33 +f 476/411/33 510/495/33 474/409/33 +f 568/496/33 569/497/33 570/498/33 +f 571/499/224 572/500/225 573/501/226 +f 574/502/23 575/503/23 576/504/23 +f 570/498/33 569/497/33 577/505/33 +f 572/500/225 578/506/227 579/507/228 +f 575/503/23 580/508/23 576/504/23 +f 577/505/33 569/497/33 581/509/33 +f 578/506/227 582/510/229 583/511/230 +f 580/508/23 584/512/23 576/504/23 +f 581/509/33 569/497/33 585/513/33 +f 586/514/231 587/515/232 588/516/233 +f 584/512/23 589/517/23 576/504/23 +f 585/513/33 569/497/33 590/518/33 +f 587/515/232 591/519/234 592/520/235 +f 589/517/23 593/521/23 576/504/23 +f 590/518/33 569/497/33 594/522/33 +f 591/519/234 595/523/236 596/524/237 +f 597/525/33 598/526/238 599/527/238 +f 593/521/23 600/528/23 576/504/23 +f 594/522/33 569/497/33 601/529/33 +f 599/527/238 598/526/238 602/530/239 +f 595/523/236 603/531/240 604/532/241 +f 600/528/23 605/533/23 576/504/23 +f 606/534/242 607/535/243 608/536/244 +f 609/537/245 606/534/242 610/538/246 +f 601/529/33 569/497/33 568/496/33 +f 603/531/240 571/499/224 611/539/247 +f 605/533/23 574/502/23 576/504/23 +f 612/540/248 613/541/249 614/542/250 +f 615/543/251 616/544/252 612/540/248 +f 617/545/253 618/546/254 619/547/33 +f 620/548/255 621/549/256 622/550/23 +f 623/551/257 624/552/258 625/553/259 +f 607/535/243 626/554/260 627/555/261 +f 628/556/262 629/557/263 630/558/264 +f 620/548/255 631/559/265 621/549/256 +f 632/554/18 633/560/18 634/561/18 +f 635/562/33 636/563/33 637/564/33 +f 175/104/33 638/565/33 639/566/33 +f 640/567/266 641/568/267 642/569/268 +f 630/558/264 629/557/263 643/570/269 +f 644/571/270 645/572/271 646/573/33 +f 647/574/18 648/575/18 649/576/18 +f 650/577/18 649/576/18 648/575/18 +f 651/578/23 652/579/23 653/580/23 +f 654/581/272 655/582/273 642/569/268 +f 656/583/274 657/584/18 658/585/275 +f 619/547/33 618/546/254 659/586/33 +f 660/587/39 661/588/39 662/589/39 +f 645/572/271 663/590/33 646/573/33 +f 664/591/39 665/592/39 666/593/39 +f 662/589/39 661/588/39 664/594/39 +f 667/595/41 668/596/41 669/597/41 +f 668/596/41 670/598/41 671/599/41 +f 672/600/41 673/601/41 671/599/41 +f 674/602/39 675/603/39 676/604/39 +f 677/605/276 678/606/277 679/607/277 +f 680/608/278 617/545/253 681/609/279 +f 628/556/262 682/610/253 683/611/280 +f 684/612/255 623/551/257 685/613/281 +f 686/614/282 687/615/283 688/616/284 +f 688/616/284 687/615/283 689/617/285 +f 688/616/284 689/617/285 690/618/286 +f 688/616/284 690/618/286 691/619/55 +f 692/620/287 693/621/288 694/622/58 +f 695/623/289 696/624/290 697/625/284 +f 698/626/291 699/627/292 700/628/293 +f 701/629/294 693/621/288 702/630/295 +f 703/631/33 704/632/33 702/630/295 +f 704/632/33 705/633/33 702/630/295 +f 706/634/33 702/630/295 705/633/33 +f 693/621/288 703/631/33 702/630/295 +f 703/631/33 693/621/288 692/620/287 +f 707/635/296 708/636/297 709/637/298 +f 710/638/23 711/639/23 712/640/299 +f 713/641/33 714/642/33 715/643/300 +f 716/644/23 717/645/23 718/646/23 +f 716/644/23 719/647/301 720/648/23 +f 710/638/23 712/640/299 721/649/23 +f 721/649/23 722/650/23 723/651/23 +f 723/651/23 724/652/23 725/653/23 +f 726/654/33 727/655/33 728/656/302 +f 729/657/33 730/658/33 731/659/33 +f 732/660/33 729/657/33 733/661/33 +f 714/642/33 732/660/33 734/662/33 +f 713/641/33 715/643/300 735/663/33 +f 711/639/23 736/664/23 719/647/301 +f 720/648/23 717/645/23 716/644/23 +f 717/645/23 725/653/23 718/646/23 +f 719/647/301 736/664/23 720/648/23 +f 712/640/299 722/650/23 721/649/23 +f 722/650/23 724/652/23 723/651/23 +f 724/652/23 718/646/23 725/653/23 +f 737/665/33 735/663/33 728/656/302 +f 730/658/33 727/655/33 726/654/33 +f 727/655/33 737/665/33 728/656/302 +f 730/658/33 726/654/33 731/659/33 +f 729/657/33 731/659/33 733/661/33 +f 732/660/33 733/661/33 734/662/33 +f 715/643/300 728/656/302 735/663/33 +f 738/666/39 675/603/39 674/602/39 +f 739/667/303 740/668/304 741/669/305 +f 742/670/33 743/671/306 740/668/304 +f 744/672/33 742/670/33 745/673/307 +f 746/674/308 744/672/33 747/675/309 +f 701/629/294 747/675/309 745/673/307 +f 748/676/310 707/635/296 749/677/311 +f 750/678/39 664/594/39 666/679/39 +f 751/680/312 752/681/313 613/541/249 +f 753/682/314 702/630/295 706/634/33 +f 754/683/315 753/682/314 706/634/33 +f 619/547/33 681/609/279 617/545/253 +f 755/684/33 756/685/33 757/686/33 +f 758/687/315 759/688/316 760/689/317 +f 616/544/252 761/690/318 762/691/319 +f 659/586/33 763/692/316 706/634/33 +f 663/590/33 706/634/33 174/103/57 +f 764/693/39 674/694/39 765/695/39 +f 766/696/51 767/697/51 768/698/320 +f 769/699/321 770/700/322 771/701/323 +f 772/643/324 773/662/325 774/702/326 +f 775/703/327 776/704/328 777/659/329 +f 778/705/330 774/702/326 773/662/325 +f 779/370/331 780/391/332 781/706/333 +f 781/706/333 782/350/334 783/368/335 +f 784/342/336 785/380/337 786/351/338 +f 787/340/339 788/379/340 785/380/337 +f 789/348/341 788/379/340 787/340/339 +f 784/342/336 787/340/339 785/380/337 +f 790/353/342 791/354/343 792/366/344 +f 793/707/345 794/356/346 790/353/342 +f 795/345/347 796/343/348 797/357/349 +f 798/708/350 795/345/347 799/709/351 +f 800/394/352 798/708/350 801/710/353 +f 802/337/354 800/394/352 803/711/355 +f 804/339/356 802/337/354 805/712/357 +f 806/360/358 807/713/359 808/402/360 +f 809/714/361 801/710/353 799/709/351 +f 810/715/362 803/711/355 801/710/353 +f 811/716/363 805/712/357 803/711/355 +f 812/717/364 813/362/365 805/712/357 +f 814/718/366 799/709/351 815/357/367 +f 816/393/368 817/398/369 798/708/350 +f 818/396/370 819/397/371 820/408/372 +f 783/368/335 779/370/331 781/706/333 +f 820/408/372 789/348/341 787/340/339 +f 821/719/373 790/353/342 792/366/344 +f 821/719/373 793/707/345 790/353/342 +f 801/710/353 798/708/350 799/709/351 +f 803/711/355 800/394/352 801/710/353 +f 805/712/357 802/337/354 803/711/355 +f 813/362/365 804/339/356 805/712/357 +f 822/358/374 806/360/358 808/402/360 +f 814/718/366 809/714/361 799/709/351 +f 809/714/361 810/715/362 801/710/353 +f 810/715/362 811/716/363 803/711/355 +f 811/716/363 812/717/364 805/712/357 +f 823/720/375 814/718/366 815/357/367 +f 824/405/376 825/341/377 784/342/336 +f 817/398/369 826/344/378 795/345/347 +f 820/408/372 827/347/379 789/348/341 +f 781/706/333 784/342/336 782/350/334 +f 790/353/342 794/356/346 828/352/380 +f 813/362/365 829/359/381 804/339/356 +f 812/717/364 830/361/382 813/362/365 +f 831/400/383 822/358/374 808/402/360 +f 832/399/384 804/339/356 822/358/374 +f 833/390/385 831/400/383 808/402/360 +f 831/400/383 832/399/384 822/358/374 +f 832/399/384 834/338/386 804/339/356 +f 643/570/269 707/635/296 835/721/387 +f 836/722/39 837/723/39 665/592/39 +f 625/553/259 838/724/388 685/613/281 +f 839/725/389 838/724/388 840/726/390 +f 841/727/391 842/728/313 614/542/250 +f 843/729/392 625/553/259 624/552/258 +f 844/730/23 845/731/23 846/732/23 +f 847/733/39 848/734/39 849/735/39 +f 850/735/23 851/736/23 852/737/23 +f 853/738/393 854/739/394 855/740/393 +f 856/740/18 857/739/18 858/741/18 +f 859/742/395 860/743/395 861/744/39 +f 738/666/39 664/594/39 661/588/39 +f 842/728/313 862/745/312 614/542/250 +f 863/746/396 864/747/397 616/544/252 +f 616/544/252 615/543/251 865/748/398 +f 612/540/248 614/542/250 866/749/399 +f 614/542/250 613/541/249 867/750/400 +f 868/751/39 869/752/39 870/753/39 +f 871/754/51 841/727/391 872/755/401 +f 873/756/51 842/728/313 841/727/391 +f 874/757/402 875/758/51 876/759/51 +f 872/755/401 877/760/403 878/761/403 +f 865/748/398 863/746/396 616/544/252 +f 879/762/39 868/751/39 880/763/39 +f 616/544/252 762/691/319 881/764/404 +f 700/628/293 882/765/405 883/766/406 +f 884/767/407 885/768/408 886/769/23 +f 883/766/406 886/769/23 887/770/409 +f 888/771/23 889/772/23 890/773/410 +f 891/774/411 890/773/410 892/775/23 +f 890/776/410 887/770/409 888/777/23 +f 882/765/405 886/769/23 883/766/406 +f 882/765/405 893/778/412 886/769/23 +f 893/778/412 884/767/407 886/769/23 +f 885/768/408 894/779/23 886/769/23 +f 886/769/23 888/777/23 887/770/409 +f 888/771/23 895/780/23 889/772/23 +f 889/772/23 896/781/23 890/773/410 +f 890/773/410 896/781/23 892/775/23 +f 897/782/39 898/783/39 899/784/39 +f 900/785/39 901/786/39 898/787/39 +f 902/788/39 903/789/39 897/782/39 +f 898/783/39 904/790/39 899/784/39 +f 898/787/39 905/791/39 900/785/39 +f 906/792/39 904/793/39 898/787/39 +f 905/791/39 898/787/39 869/752/39 +f 907/794/413 908/795/414 909/796/415 +f 910/797/33 907/794/413 911/798/416 +f 406/341/142 405/340/141 912/407/417 +f 913/799/418 472/407/208 461/396/197 +f 914/800/419 915/801/420 472/407/208 +f 914/800/419 913/799/418 916/719/421 +f 431/366/167 916/719/421 913/799/418 +f 917/713/422 467/402/203 466/401/202 +f 918/802/423 426/361/162 424/359/160 +f 918/802/423 425/360/161 917/713/422 +f 917/713/422 466/401/202 468/403/204 +f 417/352/153 919/357/424 920/720/425 +f 407/342/143 470/405/206 921/706/426 +f 410/345/146 463/398/199 922/708/427 +f 412/347/148 462/397/198 473/408/209 +f 456/391/192 921/706/426 469/404/205 +f 456/391/192 435/370/171 921/706/426 +f 415/350/151 921/706/426 433/368/169 +f 445/380/181 407/342/143 416/351/152 +f 444/379/180 405/340/141 445/380/181 +f 444/379/180 413/348/149 405/340/141 +f 405/340/141 407/342/143 445/380/181 +f 419/354/155 418/353/154 431/366/167 +f 421/356/157 923/707/428 418/353/154 +f 410/345/146 924/709/429 422/357/158 +f 410/345/146 922/708/427 924/709/429 +f 922/708/427 459/394/195 925/710/430 +f 459/394/195 402/337/138 926/711/431 +f 402/337/138 404/339/140 927/712/432 +f 917/713/422 425/360/161 467/402/203 +f 925/710/430 928/714/433 924/709/429 +f 926/711/431 929/715/434 925/710/430 +f 927/712/432 930/716/435 926/711/431 +f 427/362/163 931/717/436 927/712/432 +f 924/709/429 932/718/437 919/357/424 +f 463/398/199 458/393/194 922/708/427 +f 462/397/198 461/396/197 473/408/209 +f 435/370/171 433/368/169 921/706/426 +f 413/348/149 473/408/209 405/340/141 +f 418/353/154 916/719/421 431/366/167 +f 923/707/428 916/719/421 418/353/154 +f 922/708/427 925/710/430 924/709/429 +f 459/394/195 926/711/431 925/710/430 +f 402/337/138 927/712/432 926/711/431 +f 404/339/140 427/362/163 927/712/432 +f 425/360/161 423/358/159 467/402/203 +f 928/714/433 932/718/437 924/709/429 +f 929/715/434 928/714/433 925/710/430 +f 930/716/435 929/715/434 926/711/431 +f 931/717/436 930/716/435 927/712/432 +f 932/718/437 920/720/425 919/357/424 +f 406/341/142 470/405/206 407/342/143 +f 409/344/145 463/398/199 410/345/146 +f 412/347/148 473/408/209 413/348/149 +f 407/342/143 921/706/426 415/350/151 +f 421/356/157 418/353/154 417/352/153 +f 424/359/160 427/362/163 404/339/140 +f 426/361/162 931/717/436 427/362/163 +f 423/358/159 465/400/201 467/402/203 +f 404/339/140 464/399/200 423/358/159 +f 465/400/201 455/390/191 467/402/203 +f 464/399/200 465/400/201 423/358/159 +f 403/338/139 464/399/200 404/339/140 +f 834/338/386 802/337/354 804/339/356 +f 825/341/377 787/340/339 784/342/336 +f 826/344/378 796/343/348 795/345/347 +f 827/347/379 933/346/438 789/348/341 +f 784/342/336 934/349/439 782/350/334 +f 784/342/336 786/351/338 934/349/439 +f 790/353/342 828/352/380 791/354/343 +f 794/356/346 935/355/440 828/352/380 +f 796/343/348 791/354/343 828/352/380 +f 829/359/381 822/358/374 804/339/356 +f 822/358/374 829/359/381 806/360/358 +f 830/361/382 829/359/381 813/362/365 +f 936/363/441 792/366/344 791/354/343 +f 937/365/442 938/395/443 792/366/344 +f 939/367/444 933/346/438 827/347/379 +f 940/369/445 783/368/335 782/350/334 +f 940/369/445 779/370/331 783/368/335 +f 941/371/446 942/376/447 943/372/448 +f 944/374/449 945/373/450 946/375/451 +f 942/376/447 941/371/446 944/374/449 +f 782/350/334 934/349/439 947/377/452 +f 789/348/341 948/378/453 788/379/340 +f 786/351/338 785/380/337 948/378/453 +f 789/348/341 933/346/438 949/381/454 +f 939/367/444 950/384/455 949/381/454 +f 789/348/341 949/381/454 948/378/453 +f 951/383/456 952/382/457 950/384/455 +f 947/377/452 940/369/445 782/350/334 +f 947/377/452 948/378/453 953/385/458 +f 954/386/459 944/374/449 941/371/446 +f 955/387/460 941/371/446 940/369/445 +f 949/381/454 950/384/455 954/386/459 +f 953/385/458 948/378/453 949/381/454 +f 954/386/459 950/384/455 952/382/457 +f 956/388/461 945/373/450 954/386/459 +f 957/389/462 780/391/332 779/370/331 +f 833/390/385 808/402/360 780/391/332 +f 958/392/463 800/394/352 802/337/354 +f 816/393/368 798/708/350 800/394/352 +f 959/364/464 791/354/343 796/343/348 +f 938/395/443 937/365/442 819/397/371 +f 940/369/445 943/372/448 779/370/331 +f 947/377/452 953/385/458 940/369/445 +f 934/349/439 786/351/338 947/377/452 +f 948/378/453 947/377/452 786/351/338 +f 948/378/453 785/380/337 788/379/340 +f 950/384/455 939/367/444 951/383/456 +f 952/382/457 956/388/461 954/386/459 +f 945/373/450 944/374/449 954/386/459 +f 827/347/379 819/397/371 937/365/442 +f 951/383/456 939/367/444 827/347/379 +f 951/383/456 827/347/379 959/364/464 +f 826/344/378 956/388/461 952/382/457 +f 826/344/378 945/373/450 956/388/461 +f 946/375/451 945/373/450 826/344/378 +f 942/376/447 946/375/451 817/398/369 +f 957/389/462 943/372/448 942/376/447 +f 833/390/385 942/376/447 816/393/368 +f 958/392/463 832/399/384 831/400/383 +f 958/392/463 834/338/386 832/399/384 +f 936/363/441 959/364/464 937/365/442 +f 959/364/464 827/347/379 937/365/442 +f 952/382/457 951/383/456 959/364/464 +f 959/364/464 826/344/378 952/382/457 +f 817/398/369 946/375/451 826/344/378 +f 816/393/368 942/376/447 817/398/369 +f 833/390/385 957/389/462 942/376/447 +f 831/400/383 833/390/385 816/393/368 +f 816/393/368 958/392/463 831/400/383 +f 960/401/465 961/404/466 780/391/332 +f 962/403/467 963/406/468 961/404/466 +f 824/405/376 781/706/333 961/404/466 +f 964/407/469 818/396/370 820/408/372 +f 825/341/377 965/801/470 966/407/471 +f 967/799/472 938/395/443 818/396/370 +f 968/800/473 967/799/472 964/407/469 +f 968/800/473 793/707/345 821/719/373 +f 792/366/344 938/395/443 967/799/472 +f 808/402/360 807/713/359 960/401/465 +f 969/802/474 806/360/358 829/359/381 +f 969/802/474 970/803/475 807/713/359 +f 807/713/359 970/803/475 962/403/467 +f 828/352/380 935/355/440 823/720/375 +f 824/405/376 784/342/336 781/706/333 +f 817/398/369 795/345/347 798/708/350 +f 819/397/371 827/347/379 820/408/372 +f 781/706/333 780/391/332 961/404/466 +f 971/661/476 777/659/329 776/704/328 +f 972/804/477 708/636/297 707/635/296 +f 646/573/33 663/590/33 973/805/33 +f 643/570/269 629/557/263 683/611/280 +f 835/721/387 707/635/296 748/676/310 +f 974/806/33 973/805/33 181/110/59 +f 835/721/387 630/558/264 643/570/269 +f 760/689/317 975/807/478 976/808/314 +f 977/809/254 978/810/479 759/688/316 +f 975/807/478 979/811/480 980/812/295 +f 628/556/262 630/558/264 977/809/254 +f 978/810/479 760/689/317 759/688/316 +f 979/811/480 981/813/481 982/814/294 +f 981/813/481 983/815/482 984/816/483 +f 984/816/483 983/815/482 770/700/322 +f 771/701/323 770/700/322 983/815/482 +f 985/817/484 984/816/483 770/700/322 +f 682/610/253 628/556/262 977/809/254 +f 986/818/485 987/819/486 988/820/487 +f 989/821/23 652/579/23 990/822/23 +f 676/604/39 880/763/39 991/823/39 +f 989/821/23 653/580/23 652/579/23 +f 651/578/23 992/824/23 652/579/23 +f 993/825/488 994/826/489 995/827/490 +f 664/594/39 738/666/39 764/828/39 +f 996/829/491 997/830/492 998/831/493 +f 999/832/23 1000/833/23 997/834/492 +f 1001/835/33 1002/606/33 1003/836/33 +f 752/681/313 867/750/400 613/541/249 +f 1004/607/33 1002/606/33 1001/835/33 +f 1005/837/33 757/686/33 756/685/33 +f 1006/838/39 1007/839/39 1008/840/39 +f 1009/840/33 1010/839/33 1011/841/33 +f 1012/842/494 1013/843/494 1014/844/494 +f 1015/838/495 1016/845/496 1017/846/495 +f 1018/847/497 1019/848/498 1020/849/499 +f 1021/850/500 1020/849/499 1019/848/498 +f 1022/851/501 656/583/274 1023/852/502 +f 1024/853/18 1025/854/18 1026/855/18 +f 1020/849/499 1027/856/503 1018/847/497 +f 837/723/39 666/593/39 665/592/39 +f 1028/857/504 1029/858/33 1030/576/271 +f 636/563/33 1031/859/33 637/564/33 +f 1032/860/395 1033/861/39 1034/862/39 +f 1035/863/33 1031/859/33 179/108/33 +f 1036/864/33 179/108/33 1037/865/505 +f 1038/866/33 1037/865/505 1039/867/56 +f 1040/868/33 1039/867/56 691/619/55 +f 1041/869/506 1042/870/507 1043/871/508 +f 638/565/33 636/563/33 1044/872/33 +f 637/564/33 1031/859/33 1045/873/33 +f 1045/873/33 1031/859/33 1035/863/33 +f 1036/864/33 1035/863/33 179/108/33 +f 1038/866/33 1036/864/33 1037/865/505 +f 1037/865/505 179/108/33 178/107/33 +f 1040/868/33 1038/866/33 1039/867/56 +f 1046/874/509 1040/868/33 691/619/55 +f 1046/874/509 691/619/55 690/618/286 +f 177/106/58 176/105/33 1047/875/33 +f 686/614/282 177/106/58 1047/875/33 +f 1048/876/33 636/563/33 638/565/33 +f 639/566/33 638/565/33 1044/872/33 +f 1044/872/33 636/563/33 635/562/33 +f 1049/877/510 1050/878/511 987/819/486 +f 1051/879/41 186/115/41 185/114/41 +f 184/113/41 183/112/41 186/115/41 +f 1052/880/51 766/696/51 867/750/400 +f 1053/881/512 768/698/320 767/697/51 +f 768/698/320 1053/881/512 1054/882/403 +f 1055/883/513 761/690/318 616/544/252 +f 745/673/307 740/668/304 1056/884/514 +f 693/621/288 1057/885/515 694/622/58 +f 1058/886/516 1059/887/517 739/667/303 +f 1060/888/518 1061/889/58 1062/890/519 +f 740/668/304 739/667/303 1059/887/517 +f 745/673/307 1057/885/515 693/621/288 +f 974/806/33 181/110/59 1029/858/33 +f 612/540/248 881/764/404 613/541/249 +f 864/747/397 1055/883/513 616/544/252 +f 1063/891/33 1064/892/33 1065/893/33 +f 763/692/316 754/683/315 706/634/33 +f 706/634/33 695/623/289 174/103/57 +f 973/805/33 663/590/33 181/110/59 +f 181/110/59 1030/576/271 1029/858/33 +f 174/103/57 181/110/59 663/590/33 +f 630/558/264 978/810/479 977/809/254 +f 1066/894/41 1051/895/41 185/896/41 +f 187/116/41 186/115/41 183/112/41 +f 676/604/39 675/603/39 880/763/39 +f 1067/897/520 1068/898/39 1069/899/39 +f 1070/900/521 645/572/271 644/571/270 +f 1028/857/504 1030/576/271 1071/577/521 +f 1072/901/51 1073/902/51 1074/903/51 +f 1075/904/51 1072/901/51 1076/905/51 +f 1074/903/51 1077/906/51 1076/905/51 +f 1072/901/51 1074/903/51 1076/905/51 +f 1075/904/51 1078/907/51 1072/901/51 +f 1079/908/39 1080/909/522 1081/910/523 +f 1082/911/33 1083/912/33 1084/913/524 +f 1085/914/41 1086/915/41 1087/916/41 +f 1088/917/51 1089/918/51 1090/919/51 +f 1091/920/41 1092/921/41 1087/916/41 +f 1084/913/524 1081/910/523 1080/909/522 +f 1093/922/525 1094/923/33 1095/924/33 +f 1093/922/525 1096/925/525 1097/926/526 +f 1098/927/527 1099/928/528 1100/929/529 +f 1101/930/51 1102/931/51 1103/932/51 +f 1103/932/51 1102/931/51 1076/905/51 +f 1104/933/23 1105/929/23 1106/928/23 +f 1107/934/39 1108/935/530 1109/936/531 +f 1110/937/23 1111/938/532 1112/939/533 +f 1113/940/41 1114/941/41 1115/942/41 +f 1092/921/41 1091/920/41 1116/943/41 +f 1116/943/41 1117/944/41 1115/942/41 +f 1112/939/533 1111/938/532 1118/945/534 +f 1119/946/535 1120/947/535 1121/948/23 +f 1109/936/531 1108/935/530 1122/949/527 +f 1090/919/51 1078/907/51 1075/904/51 +f 1123/950/33 1124/951/33 1125/927/33 +f 1119/946/535 1126/952/536 1127/953/536 +f 1128/954/537 1097/926/526 1127/953/536 +f 1073/902/51 1129/955/51 1074/903/51 +f 1130/956/33 94/32/33 96/34/33 +f 1131/17/34 97/35/34 99/23/34 +f 1132/12/23 100/36/23 102/38/23 +f 1133/957/35 103/39/35 105/40/37 +f 1134/958/33 1135/959/33 1130/956/33 +f 1136/960/538 105/40/37 1137/961/539 +f 96/34/33 1134/958/33 1130/956/33 +f 1135/959/33 1138/962/33 1130/956/33 +f 1131/17/34 99/23/34 1139/18/34 +f 102/38/23 1140/13/23 1132/12/23 +f 105/40/37 104/31/36 1137/961/539 +f 1141/37/540 1142/36/540 1143/28/540 +f 1144/963/541 177/106/58 686/614/282 +f 883/766/406 1145/964/542 698/626/291 +f 883/766/406 698/626/291 700/628/293 +f 699/627/292 1043/871/508 700/628/293 +f 705/633/33 696/624/290 695/623/289 +f 1146/965/543 1147/966/544 1148/967/545 +f 1149/968/546 1150/969/547 1151/970/548 +f 1152/971/549 1153/972/550 1154/973/551 +f 1153/972/550 1155/974/552 1154/973/551 +f 1042/870/507 700/628/293 1043/871/508 +f 1151/970/548 1150/969/547 1156/975/39 +f 1157/976/23 1158/977/553 1159/978/23 +f 1160/979/552 1145/964/542 883/766/406 +f 1152/971/549 1161/980/23 1153/972/550 +f 1162/981/554 1163/982/292 1164/983/555 +f 1165/984/18 1166/985/18 1167/986/556 +f 1168/987/557 1152/971/549 1169/988/558 +f 1161/980/23 1170/989/23 1153/972/550 +f 714/642/33 734/662/33 715/643/300 +f 711/639/23 719/647/301 712/640/299 +f 1171/990/18 1172/991/18 1173/992/559 +f 1174/993/560 1175/994/561 1176/995/41 +f 1175/996/561 1174/997/560 1177/998/39 +f 1178/999/51 1179/1000/51 1180/1001/562 +f 1181/1002/494 1182/1003/494 1183/1004/494 +f 1184/1005/563 655/582/273 654/581/272 +f 1182/1003/494 1185/1006/494 1183/1004/494 +f 1186/1007/494 1181/1002/494 1187/1008/494 +f 618/546/254 763/692/316 659/586/33 +f 1188/1009/41 1189/1010/41 1190/1011/41 +f 1191/1012/41 1192/1013/41 1189/1010/41 +f 993/825/488 1193/1014/564 994/826/489 +f 701/629/294 745/673/307 693/621/288 +f 747/675/309 744/672/33 745/673/307 +f 1182/1003/494 1012/842/494 1014/844/494 +f 1194/1015/494 1014/844/494 1013/843/494 +f 742/670/33 740/668/304 745/673/307 +f 1187/1008/494 1181/1002/494 1183/1004/494 +f 743/671/306 741/669/305 740/668/304 +f 675/603/39 879/762/39 880/763/39 +f 1050/878/511 988/820/487 987/819/486 +f 908/795/414 1195/1016/565 998/831/493 +f 1196/1017/566 993/825/488 995/827/490 +f 1176/995/41 1197/1018/559 1173/992/559 +f 1178/999/51 1198/1019/567 1199/1020/568 +f 1180/1001/562 1200/1021/39 1177/1022/39 +f 1201/1023/18 1199/1020/568 1198/1019/567 +f 1202/1024/277 1203/1025/569 1204/1026/277 +f 677/605/276 679/607/277 1204/1026/277 +f 1205/1027/41 1206/1028/41 1207/1029/41 +f 1208/1030/41 1209/1031/41 1207/1029/41 +f 1210/1032/41 1211/1033/41 1209/1031/41 +f 1212/1034/39 662/589/39 664/594/39 +f 888/771/23 1213/1035/411 895/780/23 +f 900/785/39 1214/1036/39 901/786/39 +f 1215/1037/258 622/550/23 894/779/23 +f 1216/1038/274 1217/1039/502 1218/1040/570 +f 1219/1041/51 1220/822/51 1221/1042/51 +f 1222/1043/33 1223/1044/33 1224/1045/33 +f 1225/774/18 1226/1046/18 1227/1047/18 +f 1228/1048/18 1229/773/18 1225/774/18 +f 1213/1035/411 1230/1049/571 895/780/23 +f 1231/1050/572 1232/1051/572 1233/1052/573 +f 1234/1053/574 658/585/275 1218/1040/570 +f 1235/1054/23 1236/1055/23 1237/1056/23 +f 1238/1057/33 1239/1058/33 1240/1059/33 +f 1241/1060/575 1242/1061/575 1243/981/576 +f 1167/986/556 1244/1062/577 1245/1063/578 +f 1246/1064/23 1247/1065/23 1248/1066/23 +f 1249/1067/18 1250/1068/18 1251/1069/18 +f 1252/1070/579 1253/1071/580 1254/1068/581 +f 1255/1072/582 1256/1073/583 1257/1074/584 +f 1258/1075/585 1257/1074/584 1253/1071/580 +f 1259/1076/586 1260/1077/587 1261/1078/587 +f 1262/1079/23 1263/1080/23 1259/1076/586 +f 1264/1081/41 1265/1082/41 1266/1083/41 +f 1267/1084/41 1268/1085/41 1269/1086/41 +f 1244/1062/577 1270/968/588 1271/1087/588 +f 890/776/410 1272/1088/589 1273/1089/590 +f 1274/1090/23 1275/1091/23 1276/1092/23 +f 1277/1093/575 1278/1094/575 1279/1095/591 +f 1236/1055/23 1235/1054/23 1158/977/553 +f 1158/977/553 1168/987/557 1159/978/23 +f 1280/1096/592 883/766/406 887/770/409 +f 1281/1097/571 1282/1098/593 1283/1046/593 +f 1284/1099/593 1285/1100/593 1230/1049/571 +f 1256/1073/583 1255/1072/582 1286/1101/39 +f 1051/895/41 1066/894/41 1287/1102/41 +f 1288/1103/41 1266/1083/41 1267/1084/41 +f 1289/1104/41 1287/1102/41 1264/1105/41 +f 1290/1106/594 1291/1107/594 1292/1108/594 +f 1280/1096/592 1160/979/552 883/766/406 +f 695/623/289 706/634/33 705/633/33 +f 1293/1109/291 1148/967/545 1147/966/544 +f 1294/1108/18 1295/1107/18 1296/1110/18 +f 1152/971/549 1154/973/551 1169/988/558 +f 1297/1111/595 1298/1106/596 1299/1112/596 +f 1233/1052/573 1297/1111/595 1300/1113/597 +f 1301/1114/18 1232/1051/572 1231/1050/572 +f 1302/893/598 1303/1115/598 1304/1116/598 +f 1305/892/599 1306/1117/599 1307/1115/599 +f 1308/1118/23 1309/1119/23 1310/1115/23 +f 1311/1120/600 1312/1121/600 1313/1117/600 +f 1314/1122/601 1061/889/58 1060/888/518 +f 1315/1123/602 1316/1124/603 700/628/293 +f 1317/1125/604 1318/1126/605 1319/1127/606 +f 1320/1128/607 1321/1129/608 1322/1130/602 +f 1323/1131/609 1324/1132/610 1325/1133/611 +f 1315/1123/602 700/628/293 1042/870/507 +f 1316/1124/603 1315/1123/602 1318/1126/605 +f 1326/1134/605 1327/1135/514 1328/1136/612 +f 1327/1135/514 1326/1134/605 1322/1130/602 +f 1321/1129/608 1329/1137/613 1062/890/519 +f 1330/1138/516 1331/1139/614 1332/1140/615 +f 1267/1084/41 1269/1086/41 1288/1103/41 +f 1288/1103/41 1289/1141/41 1264/1081/41 +f 1333/1142/39 676/604/39 991/823/39 +f 1246/1064/23 1334/1143/23 1247/1065/23 +f 1235/1054/23 1237/1056/23 1334/1143/23 +f 1246/1064/23 1335/1144/23 1235/1054/23 +f 1144/963/541 686/614/282 688/616/284 +f 688/616/284 1239/1058/33 1238/1057/33 +f 1155/974/552 1336/1145/592 1337/1146/616 +f 1159/978/23 1168/987/557 1169/988/558 +f 1338/1147/617 1154/973/551 1155/974/552 +f 1336/1145/592 1339/1148/618 1337/1146/616 +f 1340/1149/23 1339/1148/618 1336/1145/592 +f 1341/1150/23 1340/1149/23 1342/1151/590 +f 1274/1090/23 1343/1152/589 1275/1091/23 +f 1344/1153/23 1341/1150/23 1343/1152/589 +f 1345/1154/23 1344/1153/23 1274/1090/23 +f 1346/1155/23 1347/1156/23 1345/1154/23 +f 1346/1155/23 1248/1066/23 1347/1156/23 +f 1246/1064/23 1235/1054/23 1334/1143/23 +f 1163/982/292 1293/1109/291 1348/1157/619 +f 1342/1151/590 1340/1149/23 1336/1145/592 +f 1343/1152/589 1341/1150/23 1342/1151/590 +f 1274/1090/23 1344/1153/23 1343/1152/589 +f 1346/1155/23 1345/1154/23 1274/1090/23 +f 1349/1158/620 1350/1159/621 1351/1160/622 +f 1346/1155/23 1246/1064/23 1248/1066/23 +f 892/775/23 1281/1097/571 891/774/411 +f 899/784/39 902/788/39 897/782/39 +f 1352/1161/623 1353/1162/624 1354/1163/625 +f 1018/847/497 1027/856/503 1352/1161/623 +f 1355/1164/501 1356/1165/626 1217/1039/502 +f 1356/1165/626 1355/1164/501 1357/1166/627 +f 1357/1166/627 1354/1163/625 1353/1162/624 +f 1358/1167/628 1359/1168/629 1360/1169/630 +f 1359/1168/629 1361/1170/631 1362/1171/632 +f 1363/1172/633 1358/1167/628 1364/1173/634 +f 1361/1170/631 1365/1174/635 1366/1175/636 +f 1367/1176/637 1363/1172/633 1368/1177/638 +f 1365/1174/635 1369/1178/639 1370/1179/640 +f 1371/1180/641 1367/1176/637 1372/1181/642 +f 1369/1178/639 1373/1182/643 1374/1183/644 +f 1375/1184/645 1371/1180/641 1376/1185/646 +f 1373/1182/643 1234/1053/574 1377/1186/647 +f 1350/1159/621 1375/1184/645 1378/1187/648 +f 1379/1043/41 1380/579/41 1381/1188/649 +f 1382/1189/33 1223/1044/33 1222/1043/33 +f 1224/1045/33 1383/1190/33 1222/1043/33 +f 1384/1042/18 1385/822/18 1386/579/18 +f 1383/1190/33 1387/1191/33 1388/1042/33 +f 657/584/18 1389/1192/18 1218/1040/570 +f 620/548/255 622/550/23 1215/1037/258 +f 1390/1193/650 1391/1194/651 1392/1195/652 +f 1392/1195/652 1393/1196/653 1394/1197/654 +f 1394/1197/654 1390/1193/650 1392/1195/652 +f 1395/1198/655 1396/1199/656 1390/1193/650 +f 1397/1200/657 1398/1201/405 1396/1199/656 +f 1399/1202/658 843/729/392 1400/1203/408 +f 625/553/259 685/613/281 623/551/257 +f 1401/1204/659 1402/1205/412 1398/1201/405 +f 843/729/392 624/552/258 1400/1203/408 +f 1399/1202/658 1403/1206/407 1402/1205/412 +f 625/553/259 840/726/390 838/724/388 +f 749/677/311 839/725/389 748/676/310 +f 839/725/389 840/726/390 748/676/310 +f 838/724/388 1404/1207/660 1405/1208/265 +f 749/677/311 709/637/298 1406/1209/661 +f 1404/1207/660 838/724/388 839/725/389 +f 1407/652/662 1408/1210/663 1409/1211/664 +f 1408/1210/663 1407/652/662 1410/650/665 +f 1411/1212/666 1412/644/667 1413/646/668 +f 1410/650/665 1414/640/669 1415/1213/670 +f 1392/1195/652 1416/1214/671 1393/1196/653 +f 771/701/323 983/815/482 1394/1197/654 +f 983/815/482 981/813/481 1395/1198/655 +f 979/811/480 975/807/478 1401/1204/659 +f 1395/1198/655 981/813/481 979/811/480 +f 975/807/478 760/689/317 1399/1202/658 +f 1400/1203/408 1403/1206/407 1399/1202/658 +f 1417/1215/23 1418/1216/23 844/730/23 +f 684/612/255 624/552/258 623/551/257 +f 835/721/387 748/676/310 840/726/390 +f 1399/1202/658 760/689/317 978/810/479 +f 835/721/387 840/726/390 625/553/259 +f 843/729/392 978/810/479 630/558/264 +f 1419/1217/656 882/765/405 700/628/293 +f 1420/1218/672 1419/1217/656 1316/1124/603 +f 1421/1219/23 1422/1220/673 1420/1218/672 +f 1423/1221/23 1421/1219/23 1316/1124/603 +f 1424/1222/674 1423/1221/23 1317/1125/604 +f 1317/1125/604 1325/1133/611 1324/1132/610 +f 905/791/39 869/752/39 868/751/39 +f 1316/1124/603 1419/1217/656 700/628/293 +f 1421/1219/23 1420/1218/672 1316/1124/603 +f 1317/1125/604 1423/1221/23 1316/1124/603 +f 1324/1132/610 1424/1222/674 1317/1125/604 +f 885/768/408 1215/1037/258 894/779/23 +f 1425/1223/494 1426/1224/494 1427/1225/494 +f 1428/1226/494 1429/1227/494 1430/1228/494 +f 1428/1226/494 1430/1228/494 1427/1225/494 +f 1426/1224/494 1428/1226/494 1427/1225/494 +f 1426/1224/494 1425/1223/494 1431/1229/494 +f 1431/1229/494 1432/1230/494 1433/1231/494 +f 1194/1015/494 1013/843/494 1433/1231/494 +f 1434/1232/675 1435/1233/676 1436/1234/677 +f 1436/1234/677 1437/1235/678 1438/1236/679 +f 1439/1237/680 1440/1238/681 1441/1239/682 +f 1442/1240/683 1440/1238/681 1439/1237/680 +f 1184/1005/563 1443/1241/684 1435/1233/676 +f 1181/1002/494 1186/1007/494 1429/1227/494 +f 1433/1231/494 1444/1242/494 1431/1229/494 +f 750/1243/39 666/593/39 899/784/39 +f 1445/1244/41 1446/1245/41 1447/1246/41 +f 1448/1024/23 1449/1026/23 1450/1247/23 +f 1451/835/39 1452/1247/39 1453/1026/39 +f 1450/1248/23 1454/1249/23 1455/1250/23 +f 1456/1251/22 70/12/22 72/14/22 +f 1457/1251/23 73/14/23 75/16/23 +f 87/27/31 76/17/24 78/19/26 +f 1458/1252/28 79/20/27 81/22/28 +f 1459/9/29 82/21/29 84/24/29 +f 78/19/26 85/25/30 87/27/31 +f 1460/1253/23 88/28/23 90/30/23 +f 1461/39/32 91/25/32 93/31/32 +f 144/79/50 135/70/42 137/72/44 +f 114/49/38 138/73/45 117/52/40 +f 139/74/45 138/73/45 141/76/47 +f 141/76/47 140/75/46 143/78/49 +f 143/78/49 142/77/48 136/71/43 +f 1462/3/51 146/7/51 148/82/51 +f 1463/1254/51 149/83/51 151/85/51 +f 1464/88/39 152/86/39 154/54/39 +f 1465/1255/23 155/87/23 157/88/23 +f 1466/92/23 158/89/23 160/91/23 +f 1467/69/51 161/92/51 163/61/51 +f 311/246/90 169/98/52 171/100/54 +f 695/623/289 172/101/55 174/103/57 +f 638/565/33 175/104/33 177/106/58 +f 1468/574/505 181/110/59 173/102/56 +f 1469/1256/41 185/114/41 187/116/41 +f 312/247/41 188/117/41 190/119/41 +f 313/248/89 191/120/60 193/122/62 +f 314/249/51 194/123/51 196/125/51 +f 171/100/54 170/99/53 198/127/64 +f 190/119/41 189/118/41 200/1257/41 +f 193/122/62 192/121/61 202/132/66 +f 196/125/51 195/124/51 204/134/51 +f 198/127/64 197/126/63 206/136/68 +f 200/1257/41 199/137/41 208/139/41 +f 202/132/66 201/131/65 210/141/70 +f 204/134/51 203/133/51 212/143/51 +f 206/1258/68 205/1259/67 214/1260/72 +f 208/139/41 207/138/41 216/147/41 +f 210/1261/70 209/1262/69 218/1263/74 +f 212/143/51 211/142/51 220/152/51 +f 1470/1264/95 221/1265/75 223/1266/77 +f 216/147/41 215/146/41 225/157/41 +f 1471/1267/94 226/158/78 228/160/80 +f 220/152/51 219/151/51 230/162/51 +f 223/1266/77 222/163/76 232/165/82 +f 225/157/41 224/156/41 234/167/41 +f 228/160/80 227/159/79 236/169/84 +f 230/162/51 229/161/51 238/171/51 +f 232/165/82 231/164/81 240/173/86 +f 234/167/41 233/166/41 242/175/41 +f 236/169/84 235/168/83 244/177/88 +f 238/171/51 237/170/51 246/179/51 +f 240/173/86 239/172/85 248/1268/89 +f 242/175/41 241/174/41 250/184/41 +f 244/177/88 243/176/87 252/186/90 +f 246/179/51 245/178/51 254/188/51 +f 248/1268/89 247/1269/60 256/1270/62 +f 250/184/41 249/183/41 258/192/41 +f 252/186/90 251/185/52 260/194/54 +f 254/188/51 253/187/51 262/196/51 +f 256/1270/62 255/1271/91 264/1272/66 +f 258/192/41 257/191/41 266/200/41 +f 260/194/54 259/193/53 268/202/64 +f 262/196/51 261/195/51 270/204/51 +f 264/1272/66 263/1273/65 272/1274/70 +f 266/200/41 265/199/41 274/208/41 +f 268/202/64 267/201/63 276/210/93 +f 270/204/51 269/203/51 278/212/51 +f 272/206/70 271/205/69 280/214/94 +f 274/208/41 273/207/41 282/216/41 +f 276/210/93 275/209/92 284/218/95 +f 278/212/51 277/211/51 286/220/51 +f 280/214/94 279/213/73 288/222/97 +f 282/216/41 281/215/41 290/224/41 +f 284/1275/95 283/225/71 292/227/77 +f 286/220/51 285/219/51 294/229/51 +f 288/222/97 287/221/96 296/231/84 +f 290/224/41 289/223/41 298/233/41 +f 292/227/77 291/226/76 300/235/82 +f 294/229/51 293/228/51 302/237/51 +f 296/231/84 295/230/83 304/239/88 +f 298/233/41 297/232/41 306/241/41 +f 300/235/82 299/234/81 308/243/98 +f 302/237/51 301/236/51 310/245/51 +f 304/239/88 303/238/87 311/246/90 +f 306/241/41 305/240/41 312/247/41 +f 308/243/98 307/242/85 313/248/89 +f 310/245/51 309/244/51 314/249/51 +f 338/273/23 315/250/23 317/252/23 +f 317/252/23 316/251/23 319/254/23 +f 319/254/23 318/253/23 321/256/23 +f 321/256/23 320/255/23 323/258/23 +f 323/258/23 322/257/23 325/260/23 +f 325/260/23 324/259/23 327/262/23 +f 327/262/23 326/261/23 329/264/23 +f 329/264/23 328/263/23 331/266/23 +f 331/266/23 330/265/23 333/268/23 +f 333/268/23 332/267/23 335/270/23 +f 335/270/23 334/269/23 337/272/23 +f 337/272/23 336/271/23 338/273/23 +f 349/284/106 339/274/99 341/276/101 +f 401/336/137 342/277/102 344/279/104 +f 354/289/110 348/283/105 349/284/106 +f 344/279/104 343/278/103 351/286/108 +f 1472/1276/214 353/288/109 354/289/110 +f 351/286/108 350/285/107 356/291/112 +f 365/300/119 358/293/113 360/295/115 +f 356/291/112 355/290/111 362/297/117 +f 370/305/123 364/299/118 365/300/119 +f 362/297/117 361/296/116 367/302/121 +f 375/310/126 369/304/122 370/305/123 +f 367/302/121 366/301/120 372/307/125 +f 380/315/129 374/309/120 375/310/126 +f 372/307/125 371/306/124 377/312/123 +f 385/320/117 379/314/128 380/315/129 +f 377/312/123 376/311/127 382/317/130 +f 390/325/132 384/319/131 385/320/117 +f 382/317/130 381/316/113 387/322/115 +f 396/331/135 389/324/107 390/325/132 +f 1473/1277/214 391/326/109 393/328/110 +f 400/335/104 395/330/134 396/331/135 +f 393/328/110 392/327/133 398/333/136 +f 341/276/101 340/275/100 400/335/104 +f 398/333/136 397/332/99 401/336/137 +f 419/354/155 408/343/144 417/352/153 +f 431/366/167 428/363/164 419/354/155 +f 460/395/196 430/365/166 431/366/167 +f 441/376/177 436/371/172 437/372/173 +f 436/371/172 441/376/177 439/374/175 +f 449/384/185 432/367/168 446/381/182 +f 439/374/175 451/386/187 436/371/172 +f 436/371/172 452/387/188 434/369/170 +f 449/384/185 446/381/182 451/386/187 +f 443/378/179 450/385/186 446/381/182 +f 456/391/192 454/389/190 435/370/171 +f 467/402/203 455/390/191 456/391/192 +f 459/394/195 457/392/193 402/337/138 +f 922/708/427 458/393/194 459/394/195 +f 419/354/155 429/364/165 408/343/144 +f 430/365/166 460/395/196 462/397/198 +f 469/404/205 466/401/202 456/391/192 +f 471/406/207 468/403/204 469/404/205 +f 921/706/426 470/405/206 469/404/205 +f 461/396/197 472/407/208 473/408/209 +f 481/416/120 477/412/121 479/414/210 +f 485/420/124 480/415/125 481/416/120 +f 479/414/210 478/413/117 483/418/111 +f 487/422/212 484/419/123 485/420/124 +f 491/426/113 486/421/211 487/422/212 +f 483/418/111 482/417/112 489/424/107 +f 493/428/114 490/425/214 491/426/113 +f 497/432/133 492/427/110 493/428/114 +f 489/424/107 488/423/213 495/430/103 +f 499/434/99 496/431/136 497/432/133 +f 500/435/102 498/433/137 499/434/99 +f 495/430/103 494/429/104 500/435/102 +f 505/412/33 501/436/33 503/413/33 +f 509/415/33 504/438/33 505/412/33 +f 503/413/33 502/437/33 507/417/33 +f 511/419/33 508/440/33 509/415/33 +f 514/421/33 510/441/33 511/419/33 +f 507/417/33 506/439/33 513/423/33 +f 516/425/33 474/443/33 514/421/33 +f 520/427/33 515/444/33 516/425/33 +f 513/423/33 512/442/33 518/429/33 +f 522/431/33 519/446/33 520/427/33 +f 523/433/33 521/447/33 522/431/33 +f 518/429/33 517/445/33 523/433/33 +f 531/455/117 527/451/116 529/453/121 +f 540/464/112 530/454/111 531/455/117 +f 529/453/121 528/452/120 534/458/125 +f 534/458/125 533/457/124 538/462/123 +f 550/474/108 539/463/107 540/464/112 +f 538/462/123 537/461/127 543/467/215 +f 563/487/220 546/470/216 548/472/217 +f 560/484/104 549/473/103 550/474/108 +f 1474/1278/218 552/476/218 554/478/219 +f 547/471/216 546/470/216 558/482/136 +f 562/486/137 559/483/102 560/484/104 +f 558/482/136 557/481/99 562/486/137 +f 553/477/219 563/487/220 554/478/219 +f 1475/1279/222 543/467/215 564/489/221 +f 1474/1278/218 565/490/222 552/476/218 +f 1476/1280/33 476/492/33 567/494/33 +f 611/539/247 571/499/224 573/501/226 +f 573/501/226 572/500/225 579/507/228 +f 579/507/228 578/506/227 583/511/230 +f 1477/1281/685 586/514/231 588/516/233 +f 588/516/233 587/515/232 592/520/235 +f 592/520/235 591/519/234 596/524/237 +f 1478/1282/33 597/525/33 599/527/238 +f 1479/1283/239 599/527/238 602/530/239 +f 596/524/237 595/523/236 604/532/241 +f 610/538/246 606/534/242 608/536/244 +f 1067/897/520 609/537/245 610/538/246 +f 604/532/241 603/531/240 611/539/247 +f 866/749/399 615/543/251 612/540/248 +f 608/536/244 607/535/243 627/555/261 +f 1480/555/18 632/554/18 634/561/18 +f 1442/1240/683 640/567/266 642/569/268 +f 1481/110/18 647/574/18 649/576/18 +f 641/568/267 654/581/272 642/569/268 +f 1023/852/502 656/583/274 658/585/275 +f 1482/1284/41 667/595/41 669/597/41 +f 669/597/41 668/596/41 671/599/41 +f 670/598/41 672/600/41 671/599/41 +f 629/557/263 628/556/262 683/611/280 +f 1405/1208/265 684/612/255 685/613/281 +f 1483/1285/541 692/620/287 694/622/58 +f 172/101/55 695/623/289 697/625/284 +f 749/677/311 707/635/296 709/637/298 +f 764/828/39 738/666/39 674/602/39 +f 1484/1286/33 755/684/33 757/686/33 +f 867/750/400 766/696/51 768/698/320 +f 1485/654/686 775/703/327 777/659/329 +f 971/661/476 778/705/330 773/662/325 +f 799/709/351 795/345/347 797/357/349 +f 1486/1287/39 847/733/39 849/735/39 +f 1487/1287/23 850/735/23 852/737/23 +f 1488/1288/687 853/738/393 855/740/393 +f 1489/1289/18 856/740/18 858/741/18 +f 1490/1290/39 859/742/395 861/744/39 +f 841/727/391 614/542/250 867/750/400 +f 876/759/51 871/754/51 872/755/401 +f 871/754/51 873/756/51 841/727/391 +f 872/755/401 874/757/402 876/759/51 +f 874/757/402 872/755/401 878/761/403 +f 612/540/248 616/544/252 881/764/404 +f 901/786/39 906/792/39 898/787/39 +f 911/798/416 907/794/413 909/796/415 +f 1491/1291/33 910/797/33 911/798/416 +f 1492/801/688 406/341/142 912/407/417 +f 460/395/196 913/799/418 461/396/197 +f 913/799/418 914/800/419 472/407/208 +f 923/707/428 914/800/419 916/719/421 +f 460/395/196 431/366/167 913/799/418 +f 425/360/161 918/802/423 424/359/160 +f 1493/803/689 918/802/423 917/713/422 +f 1493/803/689 917/713/422 468/403/204 +f 420/355/156 417/352/153 920/720/425 +f 408/343/144 410/345/146 422/357/158 +f 797/357/349 796/343/348 828/352/380 +f 959/364/464 936/363/441 791/354/343 +f 936/363/441 937/365/442 792/366/344 +f 940/369/445 941/371/446 943/372/448 +f 946/375/451 942/376/447 944/374/449 +f 933/346/438 939/367/444 949/381/454 +f 955/387/460 954/386/459 941/371/446 +f 953/385/458 955/387/460 940/369/445 +f 955/387/460 949/381/454 954/386/459 +f 955/387/460 953/385/458 949/381/454 +f 943/372/448 957/389/462 779/370/331 +f 957/389/462 833/390/385 780/391/332 +f 834/338/386 958/392/463 802/337/354 +f 958/392/463 816/393/368 800/394/352 +f 826/344/378 959/364/464 796/343/348 +f 818/396/370 938/395/443 819/397/371 +f 808/402/360 960/401/465 780/391/332 +f 960/401/465 962/403/467 961/404/466 +f 963/406/468 824/405/376 961/404/466 +f 787/340/339 964/407/469 820/408/372 +f 787/340/339 825/341/377 966/407/471 +f 964/407/469 967/799/472 818/396/370 +f 1494/801/690 968/800/473 964/407/469 +f 967/799/472 968/800/473 821/719/373 +f 821/719/373 792/366/344 967/799/472 +f 830/361/382 969/802/474 829/359/381 +f 806/360/358 969/802/474 807/713/359 +f 960/401/465 807/713/359 962/403/467 +f 815/357/367 828/352/380 823/720/375 +f 778/705/330 971/661/476 776/704/328 +f 643/570/269 972/804/477 707/635/296 +f 972/804/477 643/570/269 683/611/280 +f 758/687/315 760/689/317 976/808/314 +f 976/808/314 975/807/478 980/812/295 +f 980/812/295 979/811/480 982/814/294 +f 982/814/294 981/813/481 984/816/483 +f 1495/1292/23 989/821/23 990/822/23 +f 1195/1016/565 996/829/491 998/831/493 +f 996/829/491 999/1293/23 997/830/492 +f 1496/1294/33 1001/1295/33 1003/1296/33 +f 1497/845/39 1006/838/39 1008/840/39 +f 1498/1297/33 1009/840/33 1011/841/33 +f 1499/1298/691 1015/838/495 1017/846/495 +f 1022/851/501 1021/850/500 1019/848/498 +f 1021/850/500 1022/851/501 1023/852/502 +f 1500/1299/18 1024/853/18 1026/855/18 +f 1501/1300/395 1032/860/395 1034/862/39 +f 752/681/313 1052/880/51 867/750/400 +f 1502/1301/51 1053/881/512 767/697/51 +f 1503/1302/403 768/698/320 1054/882/403 +f 1057/885/515 745/673/307 1056/884/514 +f 741/669/305 1058/886/516 739/667/303 +f 1329/1137/613 1060/888/518 1062/890/519 +f 1056/884/514 740/668/304 1059/887/517 +f 1504/1303/33 1063/891/33 1065/893/33 +f 609/537/245 1067/897/520 1069/899/39 +f 1505/1304/521 1070/900/521 644/571/270 +f 1506/1305/521 1028/857/504 1071/577/521 +f 1122/949/527 1079/908/39 1081/910/523 +f 1507/1306/692 1082/911/33 1084/913/524 +f 1508/1307/41 1085/914/41 1087/916/41 +f 1509/1308/51 1088/917/51 1090/919/51 +f 1086/915/41 1091/920/41 1087/916/41 +f 1507/1306/692 1084/913/524 1080/909/522 +f 1096/925/525 1093/922/525 1095/924/33 +f 1128/954/537 1093/922/525 1097/926/526 +f 1510/950/529 1098/927/527 1100/929/529 +f 1511/1309/51 1101/930/51 1103/932/51 +f 1077/906/51 1103/932/51 1076/905/51 +f 1118/945/534 1107/934/39 1109/936/531 +f 1512/1310/23 1110/937/23 1112/939/533 +f 1117/944/41 1113/940/41 1115/942/41 +f 1513/1311/41 1092/921/41 1116/943/41 +f 1513/1311/41 1116/943/41 1115/942/41 +f 1109/936/531 1112/939/533 1118/945/534 +f 1514/1312/23 1119/946/535 1121/948/23 +f 1081/910/523 1109/936/531 1122/949/527 +f 1509/1308/51 1090/919/51 1075/904/51 +f 1120/947/535 1119/946/535 1127/953/536 +f 1126/952/536 1128/954/537 1127/953/536 +f 1515/1253/540 1141/37/540 1143/28/540 +f 1516/1087/693 1149/968/546 1151/970/548 +f 1517/1313/694 1162/981/554 1164/983/555 +f 1518/1314/695 1165/984/18 1167/986/556 +f 1197/1018/559 1171/990/18 1173/992/559 +f 1519/1315/41 1174/993/560 1176/995/41 +f 1200/1316/39 1175/996/561 1177/998/39 +f 1520/1317/562 1178/999/51 1180/1001/562 +f 1443/1241/684 1184/1005/563 654/581/272 +f 1521/1318/41 1188/1009/41 1190/1011/41 +f 1188/1009/41 1191/1012/41 1189/1010/41 +f 1185/1006/494 1182/1003/494 1014/844/494 +f 909/796/415 908/795/414 998/831/493 +f 1519/1315/41 1176/995/41 1173/992/559 +f 1179/1000/51 1178/999/51 1199/1020/568 +f 1520/1317/562 1180/1001/562 1177/1022/39 +f 1522/1319/18 1201/1320/18 1198/1321/567 +f 1203/1025/569 677/605/276 1204/1026/277 +f 1523/1322/41 1205/1027/41 1207/1029/41 +f 1206/1028/41 1208/1030/41 1207/1029/41 +f 1208/1030/41 1210/1032/41 1209/1031/41 +f 750/678/39 1212/1034/39 664/594/39 +f 1389/1192/18 1216/1038/274 1218/1040/570 +f 1524/1323/51 1219/1041/51 1221/1042/51 +f 1227/1047/18 1228/1048/18 1225/774/18 +f 1525/1324/573 1231/1050/572 1233/1052/573 +f 1377/1186/647 1234/1053/574 1218/1040/570 +f 1526/1325/33 1238/1057/33 1240/1059/33 +f 1517/1313/694 1527/1060/696 1162/981/554 +f 1518/1314/695 1167/986/556 1245/1063/578 +f 1528/1326/18 1249/1067/18 1251/1069/18 +f 1529/1067/697 1252/1070/579 1254/1068/581 +f 1258/1075/585 1255/1072/582 1257/1074/584 +f 1252/1070/579 1258/1075/585 1253/1071/580 +f 1530/1327/586 1259/1076/586 1261/1078/587 +f 1530/1327/586 1262/1079/23 1259/1076/586 +f 1288/1103/41 1264/1081/41 1266/1083/41 +f 1245/1063/578 1244/1062/577 1271/1087/588 +f 887/770/409 890/776/410 1273/1089/590 +f 1157/976/23 1236/1055/23 1158/977/553 +f 1273/1089/590 1280/1096/592 887/770/409 +f 891/774/411 1281/1097/571 1283/1046/593 +f 1213/1035/411 1284/1099/593 1230/1049/571 +f 1531/1328/39 1256/1073/583 1286/1101/39 +f 1289/1104/41 1051/895/41 1287/1102/41 +f 1532/1112/594 1290/1106/594 1292/1108/594 +f 1348/1157/619 1293/1109/291 1147/966/544 +f 1533/1329/18 1294/1108/18 1296/1110/18 +f 1300/1113/597 1297/1111/595 1299/1112/596 +f 1525/1324/573 1233/1052/573 1300/1113/597 +f 1534/1330/18 1301/1114/18 1231/1050/572 +f 1535/1331/598 1302/893/598 1304/1116/598 +f 1536/893/599 1305/892/599 1307/1115/599 +f 1537/1117/23 1308/1118/23 1310/1115/23 +f 1538/892/600 1311/1120/600 1313/1117/600 +f 1320/1128/607 1314/1122/601 1060/888/518 +f 1325/1133/611 1317/1125/604 1319/1127/606 +f 1314/1122/601 1320/1128/607 1322/1130/602 +f 1319/1127/606 1323/1131/609 1325/1133/611 +f 1317/1125/604 1316/1124/603 1318/1126/605 +f 1332/1140/615 1326/1134/605 1328/1136/612 +f 1062/890/519 1327/1135/514 1322/1130/602 +f 1322/1130/602 1321/1129/608 1062/890/519 +f 1328/1136/612 1330/1138/516 1332/1140/615 +f 1144/963/541 688/616/284 1238/1057/33 +f 1337/1146/616 1338/1147/617 1155/974/552 +f 1164/983/555 1163/982/292 1348/1157/619 +f 1539/1332/698 1349/1158/620 1351/1160/622 +f 1354/1163/625 1018/847/497 1352/1161/623 +f 1216/1038/274 1355/1164/501 1217/1039/502 +f 1353/1162/624 1356/1165/626 1357/1166/627 +f 1364/1173/634 1358/1167/628 1360/1169/630 +f 1360/1169/630 1359/1168/629 1362/1171/632 +f 1368/1177/638 1363/1172/633 1364/1173/634 +f 1362/1171/632 1361/1170/631 1366/1175/636 +f 1372/1181/642 1367/1176/637 1368/1177/638 +f 1366/1175/636 1365/1174/635 1370/1179/640 +f 1376/1185/646 1371/1180/641 1372/1181/642 +f 1370/1179/640 1369/1178/639 1374/1183/644 +f 1378/1187/648 1375/1184/645 1376/1185/646 +f 1374/1183/644 1373/1182/643 1377/1186/647 +f 1351/1160/622 1350/1159/621 1378/1187/648 +f 1540/1333/625 1379/1043/41 1381/1188/649 +f 1541/1043/18 1384/1042/18 1386/579/18 +f 1222/1043/33 1383/1190/33 1388/1042/33 +f 658/585/275 657/584/18 1218/1040/570 +f 1394/1197/654 1395/1198/655 1390/1193/650 +f 1395/1198/655 1397/1200/657 1396/1199/656 +f 1397/1200/657 1401/1204/659 1398/1201/405 +f 1401/1204/659 1399/1202/658 1402/1205/412 +f 685/613/281 838/724/388 1405/1208/265 +f 839/725/389 749/677/311 1406/1209/661 +f 1406/1209/661 1404/1207/660 839/725/389 +f 1413/646/668 1407/652/662 1409/1211/664 +f 1415/1213/670 1408/1210/663 1410/650/665 +f 1409/1211/664 1411/1212/666 1413/646/668 +f 1393/1196/653 771/701/323 1394/1197/654 +f 1394/1197/654 983/815/482 1395/1198/655 +f 1397/1200/657 979/811/480 1401/1204/659 +f 1397/1200/657 1395/1198/655 979/811/480 +f 1401/1204/659 975/807/478 1399/1202/658 +f 846/732/23 1417/1215/23 844/730/23 +f 843/729/392 1399/1202/658 978/810/479 +f 630/558/264 835/721/387 625/553/259 +f 625/553/259 843/729/392 630/558/264 +f 879/762/39 905/791/39 868/751/39 +f 1444/1242/494 1426/1224/494 1431/1229/494 +f 1432/1230/494 1194/1015/494 1433/1231/494 +f 1542/1334/699 1434/1232/675 1436/1234/677 +f 1542/1334/699 1436/1234/677 1438/1236/679 +f 1543/1335/678 1439/1237/680 1441/1239/682 +f 640/567/266 1442/1240/683 1439/1237/680 +f 1434/1232/675 1184/1005/563 1435/1233/676 +f 1428/1226/494 1181/1002/494 1429/1227/494 +f 904/790/39 750/1243/39 899/784/39 +f 1544/1336/41 1445/1244/41 1447/1246/41 +f 1545/607/39 1451/835/39 1453/1026/39 +f 1448/1024/23 1450/1247/23 1455/1337/23 +f 61/3/18 63/5/18 1546/1338/18 +f 61/3/18 66/8/18 65/7/18 +f 66/8/18 61/3/18 1546/1338/18 +f 144/79/50 64/6/19 66/8/18 +o mag_pistol_0 +v -1.109136 1.854146 1.546994 +v -1.109136 6.483851 2.313159 +v -1.109136 1.746315 1.309461 +v 1.109136 6.483851 2.313159 +v 1.109136 6.193875 2.563060 +v 1.109136 1.854146 1.546994 +v 1.109136 1.746315 1.309461 +v -1.109136 6.193875 2.563060 +v -1.109136 7.455005 0.432839 +v -0.855096 7.454038 0.681170 +v -0.637953 7.455005 0.432839 +v -1.109136 7.447666 2.316916 +v -0.851242 7.447666 2.316916 +v -0.645065 7.456246 0.114418 +v -0.808240 7.456246 0.114418 +v -0.882817 -7.449296 -6.242331 +v -1.332151 -7.578506 -5.806304 +v -1.109136 -7.583717 -5.788713 +v -1.260158 -8.694220 -2.041335 +v -1.109136 -8.686133 -2.068619 +v -0.818644 -8.777006 -1.761972 +v -0.549908 -9.201518 -0.329462 +v 0.549908 -9.201518 -0.329462 +v 0.855096 7.454038 0.681170 +v 1.109136 7.455005 0.432839 +v 0.637953 7.455005 0.432839 +v 0.645065 7.456246 0.114418 +v 0.808240 7.456246 0.114418 +v -0.413784 6.208827 -0.016872 +v 0.413784 6.208827 -0.016872 +v 0.440888 6.323021 -0.358271 +v 0.851242 7.447666 2.316916 +v -0.791829 -7.487275 -6.114170 +v 0.791829 -7.487275 -6.114170 +v 0.882817 -7.449296 -6.242331 +v 1.109136 -7.583717 -5.788713 +v 1.332151 -7.578506 -5.806304 +v 1.109136 -8.686133 -2.068619 +v -0.527911 -9.865828 -0.558221 +v 0.527911 -9.865828 -0.558221 +v 0.549908 -9.201518 -0.329462 +v 0.527911 -9.865828 -0.558221 +v -0.527911 -9.865828 -0.558221 +v -1.263812 -9.320386 -2.284039 +v -0.889556 -7.991921 -6.487401 +v 0.889556 -7.991921 -6.487401 +v 1.326758 -8.130615 -6.048564 +v 1.263812 -9.320386 -2.284039 +v -1.326758 -8.130615 -6.048564 +v 1.260158 -8.694220 -2.041335 +v 0.818644 -8.777006 -1.761972 +v -0.440888 6.323021 -0.358271 +v 1.109136 7.447666 2.316916 +v -0.549908 -9.201518 -0.329462 +v -0.330292 5.643600 3.823889 +v 0.330292 5.643600 3.823889 +v -0.639183 4.693711 3.350439 +v -0.784649 4.758710 3.184808 +v -0.823423 6.188931 3.832170 +v -0.613250 5.916150 3.869261 +v 0.639183 4.693711 3.350439 +v 0.613250 5.916150 3.869261 +v -0.791829 -7.487275 -6.114170 +v -0.440888 6.323021 -0.358271 +v 0.791829 -7.487275 -6.114170 +v 1.109136 6.187973 4.078713 +v 1.109136 1.608211 2.157616 +v 1.109136 7.455005 0.432839 +v 1.109136 -7.583717 -5.788713 +v 1.109136 1.421237 1.150594 +v 1.109136 1.152737 1.225781 +v 0.613250 6.186937 4.344059 +v 0.613250 5.905007 4.230341 +v 0.807799 6.186931 4.345726 +v -0.367306 5.610397 4.110494 +v -0.804550 1.432484 2.382775 +v 0.367306 5.610397 4.110494 +v -0.613250 6.186937 4.344059 +v -0.807799 6.186931 4.345726 +v -0.613250 5.905007 4.230341 +v -0.818644 -8.777006 -1.761972 +v 0.818644 -8.777006 -1.761972 +v -0.775337 0.764493 2.107609 +v -1.109136 1.608211 2.157616 +v -1.109136 7.455005 0.432839 +v -1.109136 1.421237 1.150594 +v -1.109136 -7.583717 -5.788713 +v -1.109136 1.152737 1.225781 +v -0.629678 6.747400 -0.181056 +v 0.440888 6.323021 -0.358271 +v 0.629678 6.747400 -0.181056 +v -0.784480 5.973367 0.123958 +v -0.784649 4.758710 3.184808 +v 0.784480 5.973367 0.123958 +v 1.109136 7.447666 2.316916 +v 1.109136 -8.686133 -2.068619 +v 0.804550 1.432484 2.382775 +v 0.775337 0.764493 2.107609 +v -1.109136 0.828570 1.868721 +v -1.109136 -8.686133 -2.068619 +v -1.109136 6.187973 4.078713 +v -0.613250 6.189570 3.985306 +v -1.109136 6.193875 2.563060 +v -1.109136 6.187973 4.078713 +v -0.823423 6.188931 3.832170 +v -0.808240 7.456246 0.114418 +v -1.109136 7.447666 2.316916 +v -1.109136 6.483851 2.313159 +v -0.839998 6.483851 2.313159 +v -0.855295 6.193875 2.563060 +v -0.855096 7.454038 0.681170 +v -0.851242 7.447666 2.316916 +v -0.839998 6.483851 2.313159 +v -0.613250 5.916150 3.869261 +v -0.613250 5.905007 4.230341 +v -0.367306 5.610397 4.110494 +v -0.613250 6.189570 3.985306 +v -0.613250 6.186937 4.344059 +v -0.804550 1.432484 2.382775 +v -0.804550 1.432484 2.382775 +v -0.836434 1.761413 1.534160 +v -0.864811 1.209287 1.297543 +v -0.866598 1.383340 1.228519 +v -1.109136 1.608211 2.157616 +v -1.109136 1.854146 1.546994 +v -0.836434 1.761413 1.534160 +v -1.109136 1.746315 1.309461 +v -0.853872 1.693580 1.365606 +v -1.109136 1.421237 1.150594 +v -0.866598 1.383340 1.228519 +v -1.109136 1.152737 1.225781 +v -0.864811 1.209287 1.297543 +v -1.109136 0.828570 1.868721 +v -0.775337 0.764493 2.107609 +v -0.818644 -8.777006 -1.761972 +v -1.326758 -8.130615 -6.048564 +v -1.332151 -7.578506 -5.806304 +v -0.882817 -7.449296 -6.242331 +v -1.263812 -9.320386 -2.284039 +v -1.260158 -8.694220 -2.041335 +v -0.527911 -9.865828 -0.558221 +v -0.549908 -9.201518 -0.329462 +v -0.855295 6.193875 2.563060 +v -0.637953 7.455005 0.432839 +v -0.610240 6.670014 0.107511 +v -0.586664 6.044359 -0.058251 +v -0.413784 6.208827 -0.016872 +v -0.629678 6.747400 -0.181056 +v -0.645065 7.456246 0.114418 +v -0.610240 6.670014 0.107511 +v -0.784480 5.973367 0.123958 +v -0.637953 7.455005 0.432839 +v -0.413784 6.208827 -0.016872 +v -0.440888 6.323021 -0.358271 +v -0.807799 6.186931 4.345726 +v -0.613250 6.189570 3.985306 +v 0.586664 6.044359 -0.058251 +v 0.889556 -7.991921 -6.487401 +v -0.889556 -7.991921 -6.487401 +v 0.784480 5.973367 0.123958 +v 0.855096 7.454038 0.681170 +v 0.610240 6.670014 0.107511 +v 0.637953 7.455005 0.432839 +v 0.645065 7.456246 0.114418 +v 0.610240 6.670014 0.107511 +v 1.109136 6.187973 4.078713 +v 1.109136 6.193875 2.563060 +v 0.823423 6.188931 3.832170 +v 0.851242 7.447666 2.316916 +v 0.839998 6.483851 2.313159 +v 0.855295 6.193875 2.563060 +v 0.413784 6.208827 -0.016872 +v 0.440888 6.323021 -0.358271 +v 0.413784 6.208827 -0.016872 +v 0.629678 6.747400 -0.181056 +v 0.807799 6.186931 4.345726 +v 0.613250 6.189570 3.985306 +v 0.784649 4.758710 3.184808 +v 0.586664 6.044359 -0.058251 +v 0.613250 6.186937 4.344059 +v 0.613250 6.189570 3.985306 +v 0.823423 6.188931 3.832170 +v 0.808240 7.456246 0.114418 +v 1.109136 7.447666 2.316916 +v 0.851242 7.447666 2.316916 +v 0.839998 6.483851 2.313159 +v 1.109136 6.483851 2.313159 +v 0.855295 6.193875 2.563060 +v -0.330292 5.643600 3.823889 +v 0.367306 5.610397 4.110494 +v 0.613250 5.916150 3.869261 +v 0.330292 5.643600 3.823889 +v 0.613250 5.905007 4.230341 +v 0.613250 6.186937 4.344059 +v 0.807799 6.186931 4.345726 +v 0.804550 1.432484 2.382775 +v 0.804550 1.432484 2.382775 +v 0.775337 0.764493 2.107609 +v 0.864811 1.209287 1.297543 +v 0.866598 1.383340 1.228519 +v 0.853872 1.693580 1.365606 +v 0.836434 1.761413 1.534160 +v 1.109136 1.608211 2.157616 +v 0.804550 1.432484 2.382775 +v 0.836434 1.761413 1.534160 +v 1.109136 1.854146 1.546994 +v 0.853872 1.693580 1.365606 +v 1.109136 1.746315 1.309461 +v 0.866598 1.383340 1.228519 +v 1.109136 1.421237 1.150594 +v 0.864811 1.209287 1.297543 +v 1.109136 1.152737 1.225781 +v 0.775337 0.764493 2.107609 +v 1.109136 0.828570 1.868721 +v 0.775337 0.764493 2.107609 +v 0.818644 -8.777006 -1.761972 +v -0.613250 6.186937 4.344059 +v 1.326758 -8.130615 -6.048564 +v 0.882817 -7.449296 -6.242331 +v 1.332151 -7.578506 -5.806304 +v 1.260158 -8.694220 -2.041335 +v 1.263812 -9.320386 -2.284039 +v 0.549908 -9.201518 -0.329462 +v 0.637953 7.455005 0.432839 +v 0.610240 6.670014 0.107511 +v 0.586664 6.044359 -0.058251 +v -0.586664 6.044359 -0.058251 +v -0.639183 4.693711 3.350439 +v 0.639183 4.693711 3.350439 +v 0.784649 4.758710 3.184808 +v -1.109136 7.447666 2.316916 +v -0.851242 7.447666 2.316916 +v -0.807799 6.186931 4.345726 +v -0.775337 0.764493 2.107609 +v -0.853872 1.693580 1.365606 +v -0.804550 1.432484 2.382775 +v -0.775337 0.764493 2.107609 +v 0.613250 6.189570 3.985306 +v 1.109136 0.828570 1.868721 +v 0.527911 -9.865828 -0.558221 +v 0.645065 7.456246 0.114418 +v -0.645065 7.456246 0.114418 +vn -1.0000 -0.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 1.0000 0.0039 +vn -0.0000 0.9588 0.2841 +vn -0.0000 0.9484 0.3172 +vn -0.0000 -0.3256 0.9455 +vn -0.0000 -0.9535 -0.3014 +vn 0.1103 0.4144 -0.9034 +vn -0.0735 0.4256 -0.9019 +vn 0.3275 0.3966 -0.8576 +vn 0.9708 0.1320 -0.2001 +vn 0.7758 0.2586 -0.5755 +vn 0.4477 0.3447 -0.8251 +vn -0.3560 0.3788 -0.8543 +vn -0.5482 0.3301 -0.7685 +vn -0.1944 0.3772 -0.9055 +vn -0.0010 0.3847 -0.9230 +vn 0.1540 0.3797 -0.9122 +vn 0.8357 -0.2111 0.5070 +vn 0.9636 -0.1035 0.2467 +vn 0.9886 0.0575 -0.1389 +vn 0.9535 0.1154 -0.2784 +vn -0.0080 -0.3741 0.9274 +vn 0.0012 -0.3791 0.9254 +vn 0.2219 -0.3696 0.9023 +vn -0.0036 -0.3819 0.9242 +vn -0.1726 -0.3764 0.9102 +vn 0.0022 -0.3819 0.9242 +vn 0.0080 -0.3741 0.9274 +vn -0.2219 -0.3696 0.9023 +vn -0.0011 -0.3791 0.9254 +vn -0.4729 -0.3319 0.8162 +vn 0.3572 -0.3516 0.8653 +vn -0.1539 -0.3721 0.9154 +vn -0.9636 -0.1035 0.2467 +vn -0.9886 0.0575 -0.1389 +vn -0.9535 0.1154 -0.2784 +vn 0.0010 0.3847 -0.9230 +vn -0.0000 0.9310 0.3651 +vn -0.0000 0.9300 0.3676 +vn -0.0000 0.9302 0.3669 +vn 0.9710 -0.0914 0.2209 +vn 0.2322 -0.3719 0.8988 +vn 0.1539 -0.3734 0.9148 +vn -0.8442 -0.2022 0.4964 +vn -0.9710 -0.0914 0.2209 +vn -0.8357 -0.2111 0.5070 +vn 0.5563 0.3246 -0.7649 +vn 0.0001 0.9608 0.2772 +vn -0.0015 1.0000 0.0040 +vn -0.0014 1.0000 0.0023 +vn -0.5115 0.3297 -0.7935 +vn -0.0000 -0.0039 1.0000 +vn 0.0001 0.4597 0.8881 +vn -0.0000 0.2278 0.9737 +vn -0.0000 0.8351 0.5501 +vn 0.9387 -0.0984 0.3305 +vn 0.9999 0.0117 -0.0023 +vn 0.9998 0.0092 0.0149 +vn 0.9323 0.3580 0.0512 +vn 0.9411 0.3379 0.0104 +vn 0.5309 0.8401 0.1116 +vn -0.9980 -0.0211 0.0598 +vn -0.9970 0.0146 0.0763 +vn -0.9979 -0.0076 0.0647 +vn -0.9959 0.0068 0.0899 +vn -0.2927 -0.8910 -0.3470 +vn -0.3083 -0.9391 0.1520 +vn -0.3077 -0.9451 -0.1103 +vn -0.3087 -0.5872 0.7483 +vn -0.2906 -0.7546 0.5883 +vn -0.3189 0.0702 0.9452 +vn -0.3014 -0.1559 0.9407 +vn -0.2877 0.6969 0.6569 +vn -0.3131 0.5002 0.8073 +vn -0.1491 0.8829 0.4452 +vn -0.2405 0.8515 0.4659 +vn -0.9295 0.1497 -0.3372 +vn -0.9281 0.1420 -0.3443 +vn -0.3883 0.3779 -0.8405 +vn -0.9660 -0.0947 0.2406 +vn -0.9906 -0.0493 0.1279 +vn -0.9257 -0.1502 0.3472 +vn -0.9273 -0.1397 0.3472 +vn 0.9997 0.0240 0.0100 +vn 0.9368 -0.1053 0.3338 +vn 0.8731 -0.0619 0.4836 +vn 0.2534 -0.2345 0.9385 +vn 0.0038 -0.2478 0.9688 +vn 0.9613 0.2751 0.0139 +vn 0.9983 0.0446 -0.0387 +vn 0.8731 -0.0618 0.4836 +vn 0.9557 -0.0568 0.2888 +vn 0.9367 -0.1053 0.3338 +vn 0.9220 0.3843 0.0481 +vn 0.9207 0.3862 0.0561 +vn -0.0011 1.0000 0.0067 +vn -0.0020 1.0000 0.0042 +vn -0.1880 -0.2385 0.9528 +vn 0.2591 0.4017 -0.8784 +vn -0.3925 0.3826 -0.8364 +vn -0.9557 -0.0568 0.2888 +vn -0.9387 -0.0984 0.3305 +vn -0.8731 -0.0618 0.4836 +vn -0.9367 -0.1053 0.3338 +vn -0.9983 0.0446 -0.0387 +vn 0.0015 1.0000 0.0040 +vn -0.0000 0.9608 0.2772 +vn 0.0014 1.0000 0.0023 +vn -0.9999 0.0117 -0.0023 +vn -0.9998 0.0092 0.0149 +vn -0.9997 0.0240 0.0100 +vn -0.0056 -0.2495 0.9684 +vn -0.9207 0.3862 0.0561 +vn -0.9220 0.3843 0.0482 +vn -0.9613 0.2751 0.0139 +vn 0.0011 1.0000 0.0067 +vn 0.0020 1.0000 0.0042 +vn -0.9140 0.1852 -0.3611 +vn -0.0000 1.0000 0.0073 +vn -0.5563 0.3246 -0.7649 +vn -0.7857 0.2615 -0.5606 +vn 0.5115 0.3297 -0.7935 +vn -0.0000 0.4597 0.8881 +vn 0.2491 0.9578 0.1431 +vn -0.4021 0.9083 0.1151 +vn -0.9323 0.3580 0.0512 +vn -0.3771 0.9132 0.1545 +vn -0.9411 0.3379 0.0104 +vn 0.9980 -0.0211 0.0598 +vn 0.9949 -0.0724 0.0701 +vn 0.9979 -0.0076 0.0647 +vn 0.9959 0.0068 0.0899 +vn 0.9944 -0.0057 0.1052 +vn 0.9970 0.0146 0.0763 +vn 0.2927 -0.8910 -0.3470 +vn 0.2692 -0.9013 -0.3393 +vn 0.3091 -0.9446 -0.1104 +vn 0.3083 -0.9391 0.1520 +vn 0.2906 -0.7546 0.5883 +vn 0.3087 -0.5872 0.7483 +vn 0.3014 -0.1559 0.9407 +vn 0.3189 0.0702 0.9452 +vn 0.3131 0.5002 0.8073 +vn 0.2877 0.6969 0.6569 +vn 0.2405 0.8515 0.4659 +vn 0.8442 -0.2022 0.4964 +vn 0.1539 -0.3733 0.9148 +vn 0.9294 0.1498 -0.3372 +vn 0.5126 0.3515 -0.7834 +vn 0.9281 0.1420 -0.3443 +vn 0.9906 -0.0493 0.1279 +vn 0.9660 -0.0947 0.2406 +vn 0.9273 -0.1397 0.3472 +vn -0.9368 -0.1053 0.3338 +vn -0.8731 -0.0619 0.4836 +vn -0.0000 0.9318 0.3630 +vn -0.0000 0.9309 0.3653 +vn -0.0000 0.9302 0.3671 +vn -0.9949 -0.0724 0.0701 +vn -0.9944 -0.0057 0.1052 +vn -0.2692 -0.9013 -0.3393 +vn -0.1539 -0.3720 0.9154 +vn 0.1491 0.8829 0.4452 +vn 0.9257 -0.1502 0.3472 +vn -0.0000 0.3847 -0.9230 +vt 0.318637 0.836460 +vt 0.322686 0.835525 +vt 0.318469 0.836302 +vt 0.322662 0.829447 +vt 0.322506 0.829146 +vt 0.318606 0.828545 +vt 0.318439 0.828704 +vt 0.322533 0.835828 +vt 0.335540 0.815841 +vt 0.335689 0.816068 +vt 0.335880 0.815923 +vt 0.335363 0.817407 +vt 0.335570 0.817415 +vt 0.335928 0.815727 +vt 0.335827 0.815658 +vt 0.338110 0.834998 +vt 0.338521 0.834581 +vt 0.338361 0.834565 +vt 0.338450 0.830987 +vt 0.338327 0.831013 +vt 0.338045 0.830721 +vt 0.337797 0.829353 +vt 0.336791 0.829355 +vt 0.338509 0.816056 +vt 0.338639 0.815806 +vt 0.338293 0.815922 +vt 0.338229 0.815719 +vt 0.338328 0.815642 +vt 0.336756 0.815704 +vt 0.337372 0.815710 +vt 0.337407 0.815436 +vt 0.338796 0.817419 +vt 0.338027 0.834876 +vt 0.336577 0.834878 +vt 0.336494 0.835000 +vt 0.336242 0.834568 +vt 0.336082 0.834585 +vt 0.336266 0.831016 +vt 0.351326 0.453820 +vt 0.352262 0.453765 +vt 0.352318 0.454386 +vt 0.365837 0.453882 +vt 0.365836 0.454819 +vt 0.367442 0.455473 +vt 0.371353 0.455145 +vt 0.371355 0.453566 +vt 0.370947 0.453178 +vt 0.367444 0.453230 +vt 0.370945 0.455532 +vt 0.336143 0.830990 +vt 0.336546 0.830723 +vt 0.336722 0.815432 +vt 0.339004 0.817387 +vt 0.351343 0.454443 +vt 0.336608 0.810165 +vt 0.336600 0.809579 +vt 0.335671 0.810452 +vt 0.335670 0.810656 +vt 0.337063 0.810641 +vt 0.336849 0.810420 +vt 0.335654 0.809318 +vt 0.336833 0.809316 +vt 0.308406 0.833228 +vt 0.321347 0.832873 +vt 0.308400 0.831858 +vt 0.323003 0.827899 +vt 0.318606 0.827962 +vt 0.322837 0.831313 +vt 0.308428 0.831448 +vt 0.318119 0.828727 +vt 0.317924 0.828577 +vt 0.334726 0.805815 +vt 0.334724 0.806084 +vt 0.334898 0.805815 +vt 0.333853 0.806363 +vt 0.333448 0.810373 +vt 0.334505 0.806366 +vt 0.333637 0.805810 +vt 0.333465 0.805809 +vt 0.333636 0.806080 +vt 0.333393 0.820149 +vt 0.334845 0.820155 +vt 0.333471 0.811014 +vt 0.318642 0.837043 +vt 0.322847 0.833658 +vt 0.318149 0.836281 +vt 0.308437 0.833638 +vt 0.317955 0.836433 +vt 0.321830 0.833071 +vt 0.321344 0.832110 +vt 0.321826 0.831909 +vt 0.338990 0.829527 +vt 0.338986 0.832448 +vt 0.340382 0.829528 +vt 0.323455 0.829763 +vt 0.308753 0.828027 +vt 0.334875 0.810379 +vt 0.334847 0.811020 +vt 0.317906 0.837069 +vt 0.308789 0.837056 +vt 0.323039 0.837070 +vt 0.337112 0.810416 +vt 0.335399 0.818676 +vt 0.335644 0.820232 +vt 0.335864 0.819933 +vt 0.322740 0.833285 +vt 0.335368 0.818297 +vt 0.335604 0.818285 +vt 0.335628 0.818648 +vt 0.336965 0.813654 +vt 0.337545 0.812323 +vt 0.336761 0.811981 +vt 0.336450 0.819974 +vt 0.336387 0.820399 +vt 0.336865 0.820333 +vt 0.336109 0.820051 +vt 0.336132 0.820332 +vt 0.318573 0.837406 +vt 0.297273 0.862936 +vt 0.296468 0.862987 +vt 0.296450 0.863484 +vt 0.296375 0.863361 +vt 0.296982 0.862655 +vt 0.296349 0.862774 +vt 0.296171 0.863007 +vt 0.296386 0.863086 +vt 0.296139 0.863393 +vt 0.296301 0.863656 +vt 0.296981 0.863857 +vt 0.297271 0.863612 +vt 0.308818 0.837437 +vt 0.360171 0.453244 +vt 0.360165 0.453779 +vt 0.359601 0.453718 +vt 0.363650 0.453662 +vt 0.363616 0.454257 +vt 0.365371 0.453864 +vt 0.365306 0.454484 +vt 0.336615 0.811674 +vt 0.336865 0.813929 +vt 0.336111 0.813900 +vt 0.335542 0.813822 +vt 0.335664 0.813999 +vt 0.336339 0.815514 +vt 0.336384 0.815738 +vt 0.335562 0.813576 +vt 0.335975 0.820462 +vt 0.335363 0.814848 +vt 0.358032 0.453178 +vt 0.359611 0.453190 +vt 0.335454 0.806199 +vt 0.336854 0.806081 +vt 0.335993 0.805859 +vt 0.337754 0.815749 +vt 0.338970 0.820225 +vt 0.339108 0.818663 +vt 0.338736 0.819939 +vt 0.337473 0.807394 +vt 0.336699 0.807758 +vt 0.336562 0.808069 +vt 0.335538 0.814723 +vt 0.337796 0.815517 +vt 0.338647 0.820469 +vt 0.338501 0.820063 +vt 0.335647 0.809115 +vt 0.335427 0.805954 +vt 0.338482 0.820342 +vt 0.337096 0.809313 +vt 0.337040 0.809089 +vt 0.322734 0.831687 +vt 0.338866 0.818294 +vt 0.339103 0.818281 +vt 0.338879 0.818655 +vt 0.336917 0.819991 +vt 0.337747 0.820341 +vt 0.338164 0.819987 +vt 0.337700 0.819998 +vt 0.338225 0.820410 +vt 0.323089 0.827553 +vt 0.318534 0.827599 +vt 0.299359 0.862966 +vt 0.299357 0.863640 +vt 0.300188 0.863503 +vt 0.300265 0.863381 +vt 0.300257 0.863103 +vt 0.300174 0.863004 +vt 0.299646 0.862698 +vt 0.300297 0.862779 +vt 0.300477 0.863024 +vt 0.300502 0.863417 +vt 0.300332 0.863678 +vt 0.317870 0.827942 +vt 0.317895 0.827574 +vt 0.308779 0.827646 +vt 0.357471 0.453223 +vt 0.358034 0.453706 +vt 0.357469 0.453758 +vt 0.354011 0.454184 +vt 0.353986 0.453589 +vt 0.336746 0.805809 +vt 0.335925 0.814967 +vt 0.340207 0.829355 +vt 0.339165 0.829353 +vt 0.339115 0.832606 +vt 0.340249 0.832608 +vt 0.340379 0.832450 +vt 0.323476 0.835203 +vt 0.323128 0.837416 +vt 0.317935 0.837436 +vt 0.299652 0.863857 +vt 0.322736 0.831880 +vt 0.322741 0.833092 +s 0 +f 1547/1339/700 1548/1340/700 1549/1341/700 +f 1550/1342/701 1551/1343/701 1552/1344/701 +f 1550/1342/701 1552/1344/701 1553/1345/701 +f 1547/1339/700 1554/1346/700 1548/1340/700 +f 1555/1347/702 1556/1348/702 1557/1349/702 +f 1555/1347/702 1558/1350/702 1559/1351/702 +f 1557/1349/702 1560/1352/702 1561/1353/702 +f 1562/1354/703 1563/1355/703 1564/1356/703 +f 1563/1355/703 1565/1357/703 1566/1358/703 +f 1561/1353/702 1555/1347/702 1557/1349/702 +f 1567/1359/703 1568/1360/703 1569/1361/703 +f 1570/1362/702 1571/1363/702 1572/1364/702 +f 1573/1365/702 1572/1364/702 1574/1366/702 +f 1575/1367/704 1576/1368/704 1577/1369/704 +f 1571/1363/702 1570/1362/702 1578/1370/702 +f 1562/1354/703 1579/1371/703 1580/1372/703 +f 1581/1373/703 1580/1372/703 1582/1374/703 +f 1583/1375/703 1582/1374/703 1584/1376/703 +f 1585/1377/705 1586/1378/705 1587/1379/705 +f 1571/1363/702 1574/1366/702 1572/1364/702 +f 1588/1380/706 1589/1381/706 1590/1382/706 +f 1591/1383/706 1592/1384/706 1593/1385/706 +f 1594/1386/706 1590/1382/706 1595/1387/706 +f 1596/1388/703 1584/1376/703 1597/1389/703 +f 1556/1348/702 1555/1347/702 1559/1351/702 +f 1579/1371/703 1562/1354/703 1564/1356/703 +f 1564/1356/703 1563/1355/703 1566/1358/703 +f 1597/1389/703 1567/1359/703 1569/1361/703 +f 1598/1390/704 1575/1367/704 1577/1369/704 +f 1599/1391/702 1571/1363/702 1578/1370/702 +f 1581/1373/703 1562/1354/703 1580/1372/703 +f 1583/1375/703 1581/1373/703 1582/1374/703 +f 1596/1388/703 1583/1375/703 1584/1376/703 +f 1600/1392/705 1585/1377/705 1587/1379/705 +f 1594/1386/706 1588/1380/706 1590/1382/706 +f 1595/1387/706 1591/1383/706 1593/1385/706 +f 1593/1385/706 1594/1386/706 1595/1387/706 +f 1569/1361/703 1596/1388/703 1597/1389/703 +f 1567/1359/703 1566/1358/703 1568/1360/703 +s 1 +f 1601/1393/707 1602/1394/708 1603/1395/709 +f 1603/1395/709 1604/1396/710 1605/1397/711 +f 1603/1395/709 1606/1398/712 1601/1393/707 +f 1602/1394/708 1607/1399/713 1603/1395/709 +f 1602/1394/708 1608/1400/714 1607/1399/713 +f 1609/1401/715 1610/1402/716 1611/1403/717 +f 1612/1404/718 1613/1405/719 1551/1343/701 +f 1614/1406/720 1550/1342/701 1553/1345/701 +f 1615/1407/721 1614/1406/720 1616/1408/701 +f 1616/1408/701 1617/1409/701 1615/1407/721 +f 1618/1410/722 1619/1411/723 1620/1412/724 +f 1621/1413/725 1622/1414/726 1623/1415/727 +f 1624/1416/728 1625/1417/729 1626/1418/730 +f 1627/1419/731 1628/1420/732 1629/1421/733 +f 1547/1339/700 1630/1422/734 1554/1346/700 +f 1549/1341/700 1631/1423/735 1632/1424/700 +f 1632/1424/700 1633/1425/736 1634/1426/700 +f 1609/1401/715 1635/1427/716 1610/1402/716 +f 1610/1402/716 1636/1428/737 1611/1403/717 +f 1611/1403/717 1636/1428/737 1637/1429/737 +f 1638/1430/738 1639/1431/739 1640/1432/740 +f 1614/1406/720 1641/1433/701 1550/1342/701 +f 1613/1405/719 1552/1344/701 1551/1343/701 +f 1614/1406/720 1553/1345/701 1616/1408/701 +f 1617/1409/701 1642/1434/741 1615/1407/721 +f 1619/1411/723 1643/1435/742 1620/1412/724 +f 1619/1411/723 1623/1415/727 1643/1435/742 +f 1622/1414/726 1643/1435/742 1623/1415/727 +f 1621/1413/725 1626/1418/730 1622/1414/726 +f 1625/1417/729 1622/1414/726 1626/1418/730 +f 1628/1420/732 1644/1436/743 1629/1421/733 +f 1645/1437/744 1634/1426/700 1646/1438/745 +f 1548/1340/700 1631/1423/735 1549/1341/700 +f 1630/1422/734 1647/1439/746 1554/1346/700 +f 1631/1423/735 1633/1425/736 1632/1424/700 +f 1633/1425/736 1646/1438/745 1634/1426/700 +f 1605/1397/711 1648/1440/747 1606/1398/712 +f 1649/1441/748 1650/1442/749 1651/1443/750 +f 1652/1444/751 1609/1401/715 1633/1425/736 +f 1653/1350/752 1654/1445/753 1655/1446/754 +f 1654/1445/753 1649/1441/748 1656/1447/755 +f 1657/1448/756 1658/1449/757 1659/1450/758 +f 1660/1451/759 1661/1452/760 1662/1453/761 +f 1660/1451/759 1663/1454/701 1664/1455/701 +f 1647/1439/746 1630/1422/734 1665/1456/726 +f 1666/1457/762 1667/1458/763 1668/1459/764 +f 1669/1460/765 1668/1459/764 1667/1458/763 +f 1670/1461/766 1671/1462/767 1672/1458/768 +f 1671/1462/767 1673/1463/769 1674/1464/770 +f 1673/1463/769 1675/1465/771 1676/1460/772 +f 1675/1465/771 1677/1466/773 1678/1459/774 +f 1677/1466/773 1679/1467/775 1680/1468/776 +f 1645/1437/744 1646/1438/745 1681/1469/731 +f 1682/1470/777 1683/1471/778 1684/1472/779 +f 1682/1470/777 1685/1473/780 1686/1474/781 +f 1685/1473/780 1687/1475/782 1688/1476/783 +f 1604/1396/710 1689/1477/784 1605/1397/711 +f 1690/1478/785 1657/1448/756 1691/1479/786 +f 1691/1479/786 1692/1480/787 1693/1481/788 +f 1694/1482/789 1695/1352/790 1696/1483/791 +f 1657/1448/756 1697/1484/792 1691/1479/786 +f 1695/1352/790 1698/1349/793 1696/1483/791 +f 1697/1484/792 1659/1450/758 1689/1477/784 +f 1699/1367/794 1700/1390/795 1694/1482/789 +f 1650/1442/749 1701/1485/796 1702/1454/797 +f 1697/1484/792 1657/1448/756 1659/1450/758 +f 1656/1447/755 1649/1441/748 1651/1443/750 +f 1604/1396/710 1697/1484/792 1689/1477/784 +f 1691/1479/786 1697/1484/792 1692/1480/787 +f 1692/1480/787 1703/1486/798 1693/1481/788 +f 1696/1483/791 1699/1367/794 1694/1482/789 +f 1704/1487/799 1705/1488/800 1684/1472/779 +f 1706/1489/801 1707/1490/802 1708/1491/803 +f 1709/1364/804 1710/1365/805 1711/1492/803 +f 1712/1493/806 1713/1494/807 1714/1495/808 +f 1715/1496/809 1707/1490/802 1716/1497/810 +f 1716/1497/810 1706/1489/801 1717/1498/811 +f 1693/1481/788 1703/1486/798 1718/1499/812 +f 1719/1369/813 1720/1368/814 1721/1500/815 +f 1722/1501/816 1712/1493/806 1723/1502/817 +f 1707/1490/802 1706/1489/801 1716/1497/810 +f 1706/1489/801 1724/1503/818 1717/1498/811 +f 1706/1489/801 1708/1491/803 1725/1504/798 +f 1720/1368/814 1711/1492/803 1721/1500/815 +f 1712/1493/806 1714/1495/808 1723/1502/817 +f 1722/1501/816 1723/1502/817 1726/1505/819 +f 1608/1400/714 1727/1506/820 1728/1507/821 +f 1651/1443/750 1650/1442/749 1702/1454/797 +f 1729/1508/822 1614/1406/720 1615/1407/721 +f 1730/1391/752 1731/1370/752 1732/1509/754 +f 1733/1510/823 1732/1509/754 1734/1511/755 +f 1735/1512/824 1662/1453/761 1736/1513/825 +f 1737/1514/826 1738/1515/827 1736/1513/825 +f 1737/1514/826 1739/1516/828 1740/1505/700 +f 1612/1404/718 1741/1517/724 1742/1518/742 +f 1743/1519/829 1744/1520/830 1745/1521/831 +f 1746/1522/832 1747/1523/833 1748/1524/834 +f 1749/1525/835 1750/1519/836 1751/1524/837 +f 1752/1526/838 1751/1524/837 1753/1523/839 +f 1754/1527/840 1753/1523/839 1755/1522/841 +f 1756/1528/842 1755/1522/841 1757/1521/843 +f 1758/1529/844 1757/1521/843 1759/1520/845 +f 1760/1530/846 1761/1531/847 1762/1532/732 +f 1702/1454/797 1701/1485/796 1763/1455/819 +f 1764/1533/848 1704/1487/799 1765/1534/849 +f 1764/1533/848 1766/1535/850 1767/1536/851 +f 1768/1537/852 1767/1536/851 1769/1379/853 +f 1717/1498/811 1724/1503/818 1728/1507/821 +f 1707/1490/802 1770/1538/854 1708/1491/803 +f 1703/1486/798 1771/1539/855 1718/1499/812 +f 1710/1365/805 1721/1500/815 1711/1492/803 +f 1713/1494/807 1734/1511/755 1714/1495/808 +f 1566/1358/703 1565/1357/703 1568/1360/703 +f 1629/1421/733 1644/1436/743 1622/1414/726 +f 1772/1540/856 1773/1541/856 1638/1430/738 +f 1774/1542/857 1775/1543/857 1776/1544/858 +f 1639/1431/739 1776/1544/858 1640/1432/740 +f 1728/1507/821 1724/1503/818 1608/1400/714 +f 1617/1409/701 1760/1530/846 1642/1434/741 +f 1644/1436/743 1643/1435/742 1622/1414/726 +f 1548/1340/700 1777/1545/700 1631/1423/735 +f 1724/1503/818 1607/1399/713 1608/1400/714 +f 1606/1398/712 1603/1395/709 1605/1397/711 +f 1631/1423/735 1652/1444/751 1633/1425/736 +f 1778/1351/752 1653/1350/752 1655/1446/754 +f 1655/1446/754 1654/1445/753 1656/1447/755 +f 1735/1512/824 1660/1451/759 1662/1453/761 +f 1661/1452/760 1660/1451/759 1664/1455/701 +f 1779/1546/729 1647/1439/746 1665/1456/726 +f 1780/1468/859 1666/1457/762 1668/1459/764 +f 1781/1464/860 1669/1460/765 1667/1458/763 +f 1782/1457/861 1670/1461/766 1672/1458/768 +f 1672/1458/768 1671/1462/767 1674/1464/770 +f 1674/1464/770 1673/1463/769 1676/1460/772 +f 1676/1460/772 1675/1465/771 1678/1459/774 +f 1678/1459/774 1677/1466/773 1680/1468/776 +f 1783/1547/862 1645/1437/744 1681/1469/731 +f 1705/1488/800 1682/1470/777 1684/1472/779 +f 1683/1471/778 1682/1470/777 1686/1474/781 +f 1686/1474/781 1685/1473/780 1688/1476/783 +f 1765/1534/849 1704/1487/799 1684/1472/779 +f 1611/1403/717 1729/1508/822 1615/1407/721 +f 1733/1510/823 1730/1391/752 1732/1509/754 +f 1713/1494/807 1733/1510/823 1734/1511/755 +f 1738/1515/827 1735/1512/824 1736/1513/825 +f 1739/1516/828 1737/1514/826 1736/1513/825 +f 1784/1502/700 1737/1514/826 1740/1505/700 +f 1613/1405/719 1612/1404/718 1742/1518/742 +f 1748/1524/834 1743/1519/829 1745/1521/831 +f 1745/1521/831 1746/1522/832 1748/1524/834 +f 1752/1526/838 1749/1525/835 1751/1524/837 +f 1754/1527/840 1752/1526/838 1753/1523/839 +f 1756/1528/842 1754/1527/840 1755/1522/841 +f 1758/1529/844 1756/1528/842 1757/1521/843 +f 1785/1548/863 1758/1529/844 1759/1520/845 +f 1642/1434/741 1760/1530/846 1762/1532/732 +f 1766/1535/850 1764/1533/848 1765/1534/849 +f 1768/1537/852 1764/1533/848 1767/1536/851 +f 1786/1378/864 1768/1537/852 1769/1379/853 +f 1640/1432/740 1772/1540/856 1638/1430/738 +f 1639/1431/739 1774/1542/857 1776/1544/858 +f 1611/1403/717 1637/1429/737 1787/1549/865 +f 1611/1403/717 1787/1549/865 1729/1508/822 +f 1609/1401/715 1652/1444/751 1788/1550/865 +f 1609/1401/715 1788/1550/865 1635/1427/716 +o slide_pistol_0 +v 1.014517 11.207904 -2.625851 +v 1.014517 11.207904 -2.300617 +v 1.014517 10.723700 -1.978916 +v -1.014517 10.157009 -2.625851 +v -1.014517 11.207904 -2.625851 +v -0.335502 10.613042 -2.625851 +v -1.526129 9.326169 3.920664 +v -1.526129 9.326169 3.413726 +v -1.526129 8.752565 3.413726 +v -1.705540 8.752565 3.920664 +v -1.705540 7.184847 3.920666 +v -1.705540 8.402290 6.532843 +v -1.526129 8.752565 3.920664 +v -1.705540 8.752565 3.920664 +v -1.705540 8.752759 6.288157 +v -1.526129 8.752565 3.920664 +v -1.524936 8.752759 6.288157 +v 1.705540 7.247200 -1.820038 +v 1.526129 7.247200 -1.820038 +v 1.526043 7.614016 -2.276283 +v 1.321148 7.184847 12.021433 +v -1.171832 7.184847 11.897295 +v 1.156401 7.184847 11.897295 +v 1.526043 7.614016 -2.276283 +v 1.526129 7.247200 -1.820038 +v 1.526043 7.184847 -2.765843 +v 1.321148 7.184847 11.214214 +v -1.705540 7.184847 2.105287 +v -1.705540 8.757562 2.105287 +v -1.705540 8.927025 1.935822 +v 1.526129 7.247200 -1.820038 +v 1.526129 7.184847 -1.313099 +v 1.526043 7.184847 -2.765843 +v -1.524936 9.326169 6.288157 +v -1.326382 10.025589 6.288155 +v -1.705540 9.660696 6.288155 +v -1.705540 9.326169 6.288157 +v 0.813732 7.184847 16.849926 +v 1.705540 7.184847 12.021433 +v 1.705540 7.184847 18.319260 +v 1.326382 7.184847 19.492821 +v -1.705540 7.967402 7.346314 +v -1.705540 8.055083 6.892087 +v 1.705540 7.637858 11.214214 +v 1.705540 7.184847 11.214214 +v 1.705540 7.967402 7.346314 +v -1.705540 7.184847 3.920666 +v -1.526129 7.184847 3.920666 +v -1.171832 7.184845 5.830760 +v 1.705540 7.184847 3.920666 +v 1.705540 7.184847 11.214214 +v 1.156401 7.184845 5.830760 +v 1.705540 7.184847 -2.765843 +v 1.705540 7.184845 -4.842924 +v 1.705540 8.782389 -4.842924 +v 1.705540 7.614016 -2.276283 +v 1.231429 7.184845 -4.842924 +v 1.526129 7.184847 -1.313099 +v 1.231024 7.184847 1.879622 +v -1.526129 7.184847 2.105287 +v -1.526129 7.184847 2.612226 +v -1.526129 8.752565 2.612224 +v 1.705540 7.184847 3.920666 +v 1.321148 7.184847 11.214214 +v 1.705540 7.184847 11.214214 +v 1.705540 7.637858 11.214214 +v -0.813732 7.184847 16.849926 +v 1.526129 7.184847 3.920666 +v 0.000000 9.832475 21.944122 +v 0.947015 10.390599 21.944122 +v -0.947015 10.390599 21.944122 +v 1.705540 8.055083 6.892087 +v -1.171832 7.184847 11.897295 +v -1.171832 8.402287 11.660702 +v -1.171832 8.578353 11.777044 +v 0.167762 11.355712 20.190464 +v -0.167762 11.355712 20.190464 +v -0.167762 10.787160 20.190464 +v 0.814306 10.492235 20.190464 +v 0.814306 10.492235 19.285318 +v 0.359371 10.492235 19.285318 +v 0.893030 10.492235 20.116810 +v 0.893030 10.492235 19.372772 +v -1.526129 7.184847 3.413727 +v 1.526129 7.184847 3.413727 +v -0.393269 7.184847 1.879622 +v 0.393269 7.184847 1.879622 +v -1.333642 8.402290 6.532843 +v -1.333642 8.055083 6.892087 +v -1.333642 7.967402 7.346314 +v -1.016029 10.321228 11.777044 +v -0.947015 10.390597 11.777044 +v -0.654714 10.019367 11.777044 +v -0.813732 7.184847 16.849926 +v 0.813732 7.184847 16.849926 +v 0.813732 5.420444 16.849926 +v 0.471660 5.087640 16.849926 +v -0.471660 5.087640 16.849926 +v -0.813732 5.420444 16.849926 +v -1.333642 7.184847 21.944122 +v -1.333642 7.184847 19.492821 +v -0.813732 7.184847 21.944122 +v -1.526129 7.184847 0.796844 +v -1.705540 7.184847 0.796844 +v -1.705540 7.184847 -0.004658 +v -0.728164 8.051682 1.879622 +v -0.393269 9.417000 1.879622 +v -0.393269 7.184847 1.879622 +v -0.728164 7.586768 1.879622 +v -1.238688 7.184847 1.879622 +v 1.231024 9.417000 1.879622 +v 1.231024 8.051682 1.879622 +v 0.728164 8.051682 1.879622 +v 1.526129 7.184847 2.105287 +v 1.526129 7.184847 2.612226 +v 1.705540 7.184847 -1.313099 +v 1.705540 7.184847 -0.511597 +v 1.526129 7.184847 -0.511597 +v 1.705540 7.184847 2.612226 +v 1.705540 7.184847 3.413727 +v 1.526129 7.184847 3.920666 +v 1.526129 9.833411 3.920664 +v 1.705540 9.660696 3.920664 +v 0.408756 10.107763 -3.259712 +v -0.409408 10.107763 -3.259712 +v -0.409408 10.390597 -3.172267 +v 1.705540 9.660696 3.413726 +v 1.526129 9.833411 3.413726 +v 1.526129 7.184847 3.413727 +v -0.392768 7.184845 -4.842924 +v 0.393269 9.417000 1.879622 +v 0.393269 7.184847 1.879622 +v 0.392768 7.184845 -4.842924 +v 1.705540 7.184847 2.612226 +v 1.526129 7.184847 2.612226 +v 1.526129 9.833411 2.612224 +v 1.526129 7.184847 2.105287 +v 1.705540 7.184847 2.105287 +v 1.705540 9.660696 2.105287 +v 0.392768 8.782389 -4.842924 +v 0.392768 9.417337 -4.333549 +v 1.231024 7.184847 1.879622 +v 1.231024 7.586768 1.879622 +v 1.231429 7.587345 -4.842924 +v 0.408756 10.390597 -3.531360 +v 0.408756 10.107763 -3.763228 +v 0.408756 10.107763 -3.259712 +v 1.526129 9.833411 1.303783 +v 1.705540 9.660696 1.303783 +v 1.705540 7.184847 1.303783 +v 0.728571 7.587345 -4.842924 +v 0.728571 8.051105 -4.842924 +v 1.231429 8.051105 -4.842924 +v 1.705540 9.660696 0.796844 +v 1.526129 9.833411 0.796844 +v 1.526129 7.184847 0.796844 +v 0.813732 7.184847 21.944122 +v 1.231024 9.417000 1.879622 +v 0.393269 9.417000 1.879622 +v 0.392768 9.417337 -4.333549 +v 1.231024 7.586768 1.879622 +v 0.728164 7.586768 1.879622 +v 0.728571 7.587345 -4.842924 +v 1.526129 9.833411 -0.004658 +v 1.705540 9.660696 -0.004658 +v 1.705540 7.184847 -0.004658 +v 1.705540 7.184845 -4.842924 +v 1.231429 7.184845 -4.842924 +v 1.231429 7.587345 -4.842924 +v 1.526129 7.184847 -0.511597 +v 1.705540 7.184847 -0.511597 +v 1.705540 9.660696 -0.511597 +v 1.231429 9.417337 -4.333549 +v 1.231429 8.782389 -4.842924 +v 1.231024 9.417000 1.879622 +v 0.728164 7.586768 1.879622 +v 0.728164 8.051682 1.879622 +v 0.728571 8.051105 -4.842924 +v 1.526129 9.833411 -1.313099 +v 1.705540 9.660696 -1.313099 +v 1.705540 7.184847 -1.313099 +v 1.231024 8.051682 1.879622 +v 0.728164 8.051682 1.879622 +v 1.231024 8.051682 1.879622 +v 1.231429 8.051105 -4.842924 +v 0.947015 10.390597 -2.821982 +v -0.947015 10.390597 -2.821982 +v -1.132077 10.212755 -2.753816 +v 1.526129 7.247200 -1.820038 +v 1.705540 7.247200 -1.820038 +v 1.705540 9.660696 -1.820038 +v 1.705540 8.752767 6.288157 +v 1.705540 8.402290 6.532843 +v -1.132077 10.212755 0.576709 +v -0.947015 10.390597 0.637663 +v 0.947015 10.390597 0.637663 +v 1.326382 7.184847 21.944122 +v 1.526129 7.184847 -0.004658 +v -1.526129 7.184847 2.612226 +v -1.238688 7.184847 1.879622 +v 1.705540 7.184847 2.105287 +v 1.526129 7.184847 1.303783 +v 1.705540 7.184847 1.303783 +v 1.526129 7.184847 0.796844 +v 1.705540 7.184847 -0.004658 +v 0.728164 7.586768 1.879622 +v 1.231024 7.586768 1.879622 +v 1.231024 7.184847 1.879622 +v 0.393269 7.184847 1.879622 +v -1.238688 9.417000 1.879622 +v -1.526129 7.184847 2.105287 +v -1.705540 7.184847 -1.313099 +v -1.526129 7.184847 -1.313099 +v -1.526129 7.184847 -0.511597 +v -1.705540 7.184847 2.612226 +v -1.526129 9.326169 3.920664 +v -1.705540 9.326169 3.920664 +v -1.705540 9.660696 3.920664 +v -1.526129 7.184847 3.920666 +v -1.705540 7.184847 3.920666 +v -1.705540 8.752565 3.920664 +v -1.705540 7.184847 3.413727 +v -1.526129 7.184847 3.413727 +v -1.526129 8.752565 3.413726 +v -1.705540 9.326169 3.413726 +v -1.526129 9.326169 3.413726 +v -1.526129 9.833411 3.413726 +v -1.705540 7.184847 2.612226 +v -1.705540 7.184847 3.413727 +v -1.705540 8.752565 3.413726 +v -0.393269 9.417000 1.879622 +v -0.392768 8.782389 -4.842924 +v -0.392768 7.184845 -4.842924 +v -1.526129 9.326169 2.612224 +v -1.705540 9.326169 2.612224 +v -1.705540 9.660696 2.612224 +v -1.526129 7.184847 2.612226 +v -1.705540 7.184847 2.612226 +v -1.705540 8.752565 2.612224 +v -0.392768 9.417337 -4.333549 +v -1.238688 7.184847 1.879622 +v -1.238688 7.184845 -4.842924 +v -1.238688 7.587345 -4.842924 +v -0.409408 10.390597 -3.531360 +v -0.409408 10.390597 -3.172267 +v -0.409408 10.107763 -3.259712 +v -1.526129 9.833411 1.303783 +v -1.526129 7.184847 1.303783 +v -1.705540 7.184847 1.303783 +v -0.728571 7.587345 -4.842924 +v -1.238688 7.587345 -4.842924 +v -1.238688 8.051105 -4.842924 +v -1.705540 9.660696 0.796844 +v -1.705540 7.184847 0.796844 +v -1.526129 7.184847 0.796844 +v -1.238688 9.417000 1.879622 +v -1.238688 9.417337 -4.333549 +v -0.392768 9.417337 -4.333549 +v -1.238688 7.586768 1.879622 +v -1.238688 7.587345 -4.842924 +v -0.728571 7.587345 -4.842924 +v -1.526129 9.833411 -0.004658 +v -1.526129 7.184847 -0.004658 +v -1.705540 7.184847 -0.004658 +v -1.238688 7.184845 -4.842924 +v -1.705540 7.184845 -4.842924 +v -1.526129 7.184847 -0.511597 +v -1.526129 9.833411 -0.511597 +v -1.705540 9.660696 -0.511597 +v -1.238688 8.782389 -4.842924 +v -1.238688 9.417337 -4.333549 +v -1.238688 9.417000 1.879622 +v -0.728164 7.586768 1.879622 +v -0.728571 7.587345 -4.842924 +v -0.728571 8.051105 -4.842924 +v -1.526129 7.184847 -0.004658 +v -1.238688 7.184845 -4.842924 +v -1.526129 9.833411 -1.313099 +v -1.526129 7.184847 -1.313099 +v -1.705540 7.184847 -1.313099 +v -1.238688 8.051682 1.879622 +v -1.238688 8.051105 -4.842924 +v -0.728164 8.051682 1.879622 +v -0.728571 8.051105 -4.842924 +v -1.238688 8.051105 -4.842924 +v -1.705540 7.184845 -4.842924 +v -1.526129 7.184847 -1.820038 +v -1.705540 7.184847 2.105287 +v -1.705540 7.184847 1.303783 +v -1.526129 7.184847 -1.820038 +v -1.526129 9.833411 -1.820038 +v -1.705540 9.660696 -1.820038 +v -1.526129 7.184847 1.303783 +v -1.526129 7.184847 3.413727 +v -1.526129 7.184847 3.920666 +v -1.526129 8.752565 3.920664 +v -0.947015 10.390597 6.288155 +v -0.654714 10.019367 6.288155 +v -0.409408 10.390597 6.288155 +v -1.171832 9.475291 6.288155 +v -0.409408 10.019367 5.830758 +v -0.409408 10.390597 5.830758 +v -0.409408 10.390597 6.288155 +v 0.408756 10.019367 5.830758 +v 0.408756 10.019367 6.288155 +v 0.408756 10.390597 6.288155 +v 0.408756 10.019367 5.830758 +v 0.408756 10.390597 5.830758 +v -0.409408 10.390597 5.830758 +v 0.408756 10.019367 6.288155 +v 0.632517 10.019367 6.288155 +v 0.408756 10.390597 6.288155 +v 0.958007 9.683089 6.288155 +v 1.018419 10.321527 6.288155 +v -1.171832 9.475291 11.777044 +v -1.171832 7.184845 5.830760 +v -1.171832 8.752774 6.288157 +v -1.171832 8.402290 6.532843 +v -0.409408 10.019367 6.288155 +v -1.333642 8.402287 11.660702 +v -1.171832 8.402287 11.660702 +v -1.171832 8.402290 6.532843 +v -0.409408 10.019367 5.830758 +v -0.654714 10.019367 5.830758 +v -1.171832 9.475291 5.830758 +v -1.171832 7.184845 5.830760 +v 1.156401 7.184845 5.830760 +v 1.156401 9.475291 5.830758 +v 1.014517 11.207904 -2.625851 +v 0.335502 10.613042 -2.625851 +v 0.335502 11.207904 -2.625851 +v -0.167762 11.355712 20.190464 +v 0.167762 11.355712 20.190464 +v 0.167762 11.355712 19.816681 +v 0.143185 11.207904 -2.300617 +v 0.143185 11.269897 -2.300617 +v 0.143185 11.269897 -2.690544 +v 1.014517 11.207904 -2.625851 +v 0.335502 11.207904 -2.625851 +v 0.335502 11.207904 -2.300617 +v 1.014517 11.207904 -2.300617 +v 0.335502 11.207904 -2.625851 +v 0.335502 11.269897 -2.690544 +v 0.335502 11.269897 -2.300617 +v 0.335502 10.613042 -2.625851 +v 0.335502 10.613042 -2.690544 +v 0.335502 11.269897 -2.690544 +v 0.143185 11.269897 -2.300617 +v 0.335502 11.269897 -2.300617 +v 0.335502 11.269897 -2.690544 +v -0.720340 8.093419 11.897295 +v -0.389845 7.872592 11.897295 +v -1.171832 7.184847 11.897295 +v -0.941169 8.423914 11.897295 +v -1.018714 8.813759 11.897295 +v 0.000000 7.795045 11.897295 +v 0.471660 5.087640 21.944122 +v 0.813732 5.420444 21.944122 +v -0.813732 5.420444 21.944122 +v 0.813732 7.184847 21.944122 +v -1.333642 7.184847 21.944122 +v -0.813732 7.184847 21.944122 +v -0.720340 8.093421 21.944122 +v -1.018714 8.813761 21.944122 +v -1.326382 10.025591 21.944122 +v -0.720340 9.534101 21.944122 +v 0.720340 9.534101 21.944122 +v 1.326382 10.025591 21.944122 +v 1.018714 8.813761 21.944122 +v 1.326382 7.184847 21.944122 +v 0.720340 8.093421 21.944122 +v 0.941169 9.203606 21.944122 +v 0.389845 9.754930 21.944122 +v -0.941169 9.203606 21.944122 +v -0.941169 8.423916 21.944122 +v -0.389845 7.872591 21.944122 +v 0.000000 7.795045 21.944122 +v 0.389845 7.872591 21.944122 +v 0.941169 8.423916 21.944122 +v -0.471660 5.087640 21.944122 +v -0.389845 9.754930 21.944122 +v 1.321148 7.637858 11.214214 +v 1.321148 7.444347 12.021433 +v 1.321148 7.184847 12.021433 +v 1.705540 7.184847 12.021433 +v 1.321148 7.184847 12.021433 +v 1.321148 7.444347 12.021433 +v 1.705540 7.637858 11.214214 +v 1.705540 7.444347 12.021433 +v 1.321148 7.444347 12.021433 +v -1.526129 9.326169 3.413726 +v -1.705540 9.326169 3.413726 +v -1.705540 9.326169 2.612224 +v -1.524936 9.326169 6.288157 +v -1.705540 9.326169 6.288157 +v -1.705540 9.326169 3.920664 +v -1.526129 8.752565 2.612224 +v -1.705540 8.752565 2.612224 +v -1.705540 8.752565 3.413726 +v -1.526129 8.752565 2.612224 +v 0.632517 10.019367 5.830758 +v 0.335502 10.613042 -2.690544 +v 0.143185 10.723700 -2.690544 +v 0.143185 11.269897 -2.690544 +v -0.335502 10.613042 -2.690544 +v -0.143185 10.723700 -2.690544 +v -0.335502 10.613042 -2.625851 +v -0.335502 10.613042 -2.690544 +v 0.335502 10.613042 -2.690544 +v 0.143185 10.723700 -2.690544 +v 0.143185 10.723700 -1.978916 +v -0.814306 10.492235 20.190464 +v -0.359371 10.492235 20.190464 +v -0.359371 10.492235 19.285318 +v -0.893030 10.492235 20.116810 +v -0.814306 10.492235 19.285318 +v -0.335502 11.207904 -2.625851 +v -0.335502 10.613042 -2.625851 +v -0.335502 11.207904 -2.625851 +v -0.335502 11.269897 -2.690544 +v -0.335502 11.269897 -2.690544 +v -0.143185 11.269897 -2.690544 +v -0.143185 10.723700 -2.690544 +v -0.143185 11.269897 -2.690544 +v -0.143185 11.207904 -2.300617 +v -0.335502 11.207904 -2.625851 +v -0.335502 11.207904 -2.300617 +v -0.335502 11.269897 -2.300617 +v -0.143185 11.269897 -2.300617 +v -0.143185 11.269897 -2.690544 +v -0.335502 11.269897 -2.690544 +v -0.143185 11.269897 -2.300617 +v -0.335502 11.207904 -2.625851 +v -1.014517 11.207904 -2.625851 +v -0.335502 11.207904 -2.300617 +v -1.014517 11.207904 -2.300617 +v 1.014517 10.157009 -2.625851 +v 1.014517 10.606321 -1.825949 +v 1.014517 10.491154 -1.431076 +v 1.014517 10.157009 -2.625851 +v 0.167762 10.787160 20.190464 +v -0.359371 10.492235 20.190464 +v -1.014517 11.207904 -2.625851 +v -1.014517 10.157009 -2.625851 +v -1.014517 10.723700 -1.978916 +v -1.014517 10.606321 -1.825949 +v -1.014517 10.491154 -1.431076 +v 0.359371 10.492235 20.190464 +v -1.014517 11.207904 -2.300617 +v -0.451145 8.974197 5.975873 +v 0.000000 8.787328 5.975873 +v -0.345291 9.132619 5.975873 +v 0.186870 8.336183 5.975873 +v 0.000000 8.299012 5.975873 +v -0.186870 9.238472 5.975873 +v 0.000000 9.275643 5.975873 +v 0.345291 8.442036 5.975873 +v 0.186870 9.238472 5.975873 +v 0.345291 9.132619 5.975873 +v 0.451145 8.600457 5.975873 +v 0.451145 8.974197 5.975873 +v 0.488316 8.787328 5.975873 +v -0.488316 8.787328 5.975873 +v -0.186870 8.336183 5.975873 +v -0.451145 8.600457 5.975873 +v -0.345291 8.442036 5.975873 +v -1.659889 9.270180 6.250484 +v -1.659889 9.270180 2.190354 +v -1.659889 8.796173 2.190354 +v -1.659889 9.139336 2.059509 +v -1.659889 8.927017 2.059509 +v -1.360494 9.270180 6.250484 +v -1.659889 9.270180 6.250484 +v -1.659889 8.796173 6.250484 +v -1.705540 8.752759 6.288157 +v -1.524936 8.752759 6.288157 +v -1.524936 9.326169 6.288157 +v 1.705540 7.614016 -2.276283 +v -1.705540 7.184847 1.303783 +v -1.705540 9.151711 1.935822 +v 1.321148 7.637858 11.214214 +v 0.359371 10.492235 20.190464 +v -1.238688 7.586768 1.879622 +v 0.393269 9.417000 1.879622 +v 1.705540 7.184847 3.920666 +v 0.408756 10.390597 -3.172267 +v 1.705540 7.184847 3.413727 +v 0.392768 7.184845 -4.842924 +v 1.705540 9.660696 2.612224 +v 1.526129 9.833411 2.105287 +v 1.231429 7.184845 -4.842924 +v 0.408756 10.390597 -3.172267 +v 1.526129 7.184847 1.303783 +v 1.705540 7.184847 0.796844 +v 1.231429 9.417337 -4.333549 +v 1.231429 7.587345 -4.842924 +v 1.526129 7.184847 -0.004658 +v 1.526129 9.833411 -0.511597 +v 0.728571 7.587345 -4.842924 +v 1.526129 7.184847 -1.313099 +v 1.231429 8.051105 -4.842924 +v 0.728571 8.051105 -4.842924 +v 1.132077 10.212755 -2.753816 +v 1.526129 9.833411 -1.820038 +v 1.132077 10.212755 0.576709 +v 1.705540 7.184847 0.796844 +v -1.238688 8.051682 1.879622 +v -1.705540 7.184847 -0.511597 +v -1.705540 7.184847 3.413727 +v -1.526129 9.833411 3.920664 +v -1.526129 8.752565 3.920664 +v -1.705540 8.752565 3.413726 +v -1.705540 9.660696 3.413726 +v -1.705540 8.752565 2.612224 +v -0.393269 7.184847 1.879622 +v -1.526129 9.833411 2.612224 +v -1.526129 8.752565 2.612224 +v -1.705540 7.184847 18.319260 +v -1.238688 7.586768 1.879622 +v -0.409408 10.107763 -3.763228 +v -1.705540 9.660696 1.303783 +v -0.728571 8.051105 -4.842924 +v -1.526129 9.833411 0.796844 +v -0.393269 9.417000 1.879622 +v -0.728164 7.586768 1.879622 +v -1.705540 9.660696 -0.004658 +v -1.705540 7.184847 -0.511597 +v -0.728164 8.051682 1.879622 +v -1.705540 9.660696 -1.313099 +v -1.238688 8.051682 1.879622 +v -1.705540 7.184847 -1.820038 +v -1.705540 7.184847 -1.820038 +v -1.705540 7.184845 -4.842924 +v -1.705540 7.184847 -1.820038 +v -1.705540 8.782389 -4.842924 +v -1.526129 8.752565 3.413726 +v -0.409408 10.019367 6.288155 +v 0.408756 10.390597 5.830758 +v -1.326382 10.025589 11.777044 +v -1.333642 8.402290 6.532843 +v -0.167762 11.355712 19.816681 +v 0.335502 11.207904 -2.300617 +v 0.335502 11.207904 -2.625851 +v 0.143185 11.269897 -2.690544 +v 1.321148 7.184847 11.214214 +v 1.705540 7.444347 12.021433 +v 1.321148 7.637858 11.214214 +v -1.526129 9.326169 2.612224 +v -1.526129 9.326169 3.920664 +v -1.526129 8.752565 3.413726 +v -1.526129 9.326169 2.612224 +v 0.335502 11.269897 -2.690544 +v 0.335502 10.613042 -2.625851 +v -0.893030 10.492235 19.372772 +v -0.335502 10.613042 -2.690544 +v -0.143185 10.723700 -1.978916 +v -0.335502 11.269897 -2.690544 +v -0.335502 11.269897 -2.300617 +v -1.659889 8.796173 6.250484 +v -1.360494 8.796173 6.250484 +v -1.705540 8.402290 6.532843 +v -1.333642 8.402290 6.532843 +v -1.524936 8.752759 6.288157 +v -1.171832 8.752774 6.288157 +v -0.654714 10.019367 11.897295 +v -0.654714 10.019367 11.777044 +v 0.632517 10.019367 11.777044 +v 0.632517 10.019367 11.777044 +v -1.705540 9.660696 6.288155 +v -1.705540 9.660696 3.920664 +v -1.705540 9.326169 3.920664 +v -1.526129 8.752565 2.110280 +v -1.526129 9.321173 2.105287 +v -1.524936 9.151711 1.935822 +v -1.526129 7.184847 1.303783 +v -1.526129 9.833411 1.303783 +v -1.526129 9.833411 0.796844 +v -1.705540 9.660696 1.303783 +v 1.526129 9.833411 -1.820038 +v 1.526129 9.833411 -1.313099 +v -1.171832 9.475291 11.777044 +v 1.705540 7.184847 18.319260 +v 1.705540 7.184847 12.021433 +v 1.705540 7.444347 12.021433 +v 1.705540 9.660696 -1.820038 +v 1.705540 7.247200 -1.820038 +v 1.705540 7.967403 18.319260 +v 1.526043 7.184847 -2.765843 +v 1.705540 7.184845 -4.842924 +v 1.705540 7.184847 -2.765843 +v -1.526129 9.321173 2.105287 +v -1.705540 9.321173 2.105287 +v -1.705540 9.151711 1.935822 +v -1.705540 8.927025 1.935822 +v -1.705540 8.757562 2.105287 +v -1.526129 8.752565 2.110280 +v 1.018714 8.813759 11.876556 +v 1.156401 9.475291 11.866869 +v 1.156401 7.184847 11.897295 +v -1.014517 10.157009 0.196239 +v -1.014517 10.369081 0.196239 +v 0.167762 10.787160 19.556133 +v 0.167762 11.355712 19.816681 +v 0.167762 11.355712 20.190464 +v 0.359371 10.492235 20.190464 +v 0.359371 10.492235 19.285318 +v 0.872165 9.770430 11.711021 +v 1.156401 9.475291 11.866869 +v 0.632517 10.019367 11.897295 +v 1.018419 10.321527 11.521419 +v 1.019789 10.321230 19.320282 +v 1.326382 10.025591 21.944122 +v 0.872165 9.770430 11.711021 +v 0.947015 10.390597 11.752499 +v 1.018419 10.321527 11.521419 +v 1.018419 10.321527 6.288155 +v 0.958007 9.683089 6.288155 +v 0.958007 9.683130 11.555178 +v 0.632517 10.019367 5.830758 +v 1.156401 9.475291 5.830758 +v 0.958007 9.683089 6.288155 +v 1.326382 7.967403 19.492821 +v 1.326382 7.967402 7.346314 +v 1.326382 8.055083 6.892087 +v 1.326382 8.402290 6.532843 +v 1.326382 10.025589 6.288155 +v -1.333642 7.967403 19.492821 +v -1.333642 8.578353 11.777044 +v -1.333642 8.402287 11.660702 +v -1.326382 10.025591 21.944122 +v -1.326382 10.025589 11.777044 +v 0.947015 10.390599 19.208494 +v 0.947015 10.390597 11.752499 +v 0.869641 10.390597 11.777044 +v -0.409408 10.390597 -3.531360 +v -0.409408 10.107763 -3.763228 +v -0.947015 10.390597 -3.531360 +v 0.869641 10.390597 11.777044 +v -1.238688 8.782389 -4.842924 +v -1.333642 8.578353 11.777044 +v -1.526129 7.184847 -0.004658 +v -1.526129 9.833411 -0.004658 +v -1.526129 9.833411 -0.511597 +v -0.947015 10.390597 0.637663 +v -0.947015 10.390597 6.288155 +v -0.409408 10.390597 5.830758 +v 0.408756 10.390597 5.830758 +v 0.947015 10.390597 0.637663 +v 0.408756 10.390597 6.288155 +v 1.018419 10.321527 6.288155 +v -1.171832 9.475291 5.830758 +v -1.171832 9.475291 6.288155 +v 1.018419 10.321527 6.288155 +v 1.326382 10.025589 6.288155 +v 1.132077 10.212755 0.576709 +v -0.409408 10.390597 6.288155 +v -1.526129 9.833411 2.105287 +v -1.526129 9.833411 2.612224 +v -1.132077 10.212755 0.576709 +v -1.526129 9.833411 3.920664 +v -1.326382 10.025589 6.288155 +v -1.526129 9.833411 3.413726 +v 0.947015 10.390597 -3.531360 +v 0.947015 10.390597 -2.821982 +v 1.132077 10.212755 -2.753816 +v 0.947015 10.390599 19.208494 +v -0.947015 10.390599 19.208494 +v -1.016029 10.321230 19.320282 +v 0.947015 10.390599 20.281315 +v -0.947015 10.390599 20.281315 +v -0.947015 10.390599 21.944122 +v 1.705540 7.184847 2.612226 +v 1.705540 9.660696 2.612224 +v 1.705540 9.660696 3.413726 +v 1.019789 10.321230 20.144449 +v -1.016029 10.321230 20.144449 +v 1.326382 7.967403 19.492821 +v 1.326382 7.184847 19.492821 +v 0.471660 5.087640 16.849926 +v 0.813732 5.420444 16.849926 +v 0.813732 5.420444 21.944122 +v 0.408756 10.390597 -3.531360 +v 0.408756 10.390597 -3.172267 +v 1.019789 10.321230 20.144449 +v -0.409408 10.107763 -3.763228 +v -0.409408 10.107763 -3.259712 +v 0.408756 10.107763 -3.259712 +v 1.705540 7.967402 7.346314 +v 1.326382 7.967402 7.346314 +v 1.326382 7.967403 19.492821 +v 1.326382 7.184847 21.944122 +v 1.326382 7.184847 19.492821 +v 1.526129 7.184847 1.303783 +v 1.526129 7.184847 0.796844 +v 1.526129 9.833411 0.796844 +v 1.705540 8.402290 6.532843 +v 1.326382 8.402290 6.532843 +v 1.326382 8.055083 6.892087 +v 1.705540 8.055083 6.892087 +v 1.705540 9.660696 6.288155 +v 1.326382 10.025589 6.288155 +v 1.326382 8.752767 6.288157 +v 1.705540 9.660696 -4.131682 +v 1.231429 9.417337 -4.333549 +v 0.408756 10.107763 -3.763228 +v -0.392768 9.417337 -4.333549 +v -0.409408 10.390597 -3.172267 +v -0.947015 10.390597 -2.821982 +v 0.392768 9.417337 -4.333549 +v 0.392768 8.782389 -4.842924 +v 1.231429 8.782389 -4.842924 +v 1.705540 8.782389 -4.842924 +v 1.705540 9.660696 -4.131682 +v 0.947015 10.390597 -3.531360 +v 1.526129 9.833411 2.612224 +v 1.705540 9.660696 6.288155 +v 1.705540 9.660696 3.920664 +v 1.526129 9.833411 3.920664 +v -1.132077 10.212755 0.576709 +v 1.132077 10.212755 0.576709 +v 1.132077 10.212755 -2.753816 +v 1.705540 9.660696 -1.313099 +v 1.705540 9.660696 -0.511597 +v 1.705540 7.184847 -0.511597 +v 1.705540 9.660696 -0.004658 +v 1.705540 9.660696 0.796844 +v 1.705540 7.184847 0.796844 +v 1.526129 7.184847 2.612226 +v 1.526129 7.184847 2.105287 +v 1.526129 9.833411 2.105287 +v 1.705540 9.660696 3.920664 +v 1.705540 9.660696 6.288155 +v 1.019789 10.321230 19.320282 +v -0.471660 5.087640 16.849926 +v 0.471660 5.087640 21.944122 +v 0.813732 7.184847 16.849926 +v 0.813732 7.184847 21.944122 +v 0.947015 10.390599 20.281315 +v 0.947015 10.390599 21.944122 +v 1.705540 8.752767 6.288157 +v 1.526129 7.184847 3.920666 +v 1.526129 7.184847 3.413727 +v 1.526129 9.833411 3.413726 +v 0.392768 7.184845 -4.842924 +v -0.392768 7.184845 -4.842924 +v -0.392768 8.782389 -4.842924 +v 0.408756 10.390597 -3.531360 +v 1.526129 7.184847 -0.004658 +v 1.526129 7.184847 -0.511597 +v 1.526129 9.833411 -0.511597 +v 1.705540 7.184847 1.303783 +v 1.705540 9.660696 1.303783 +v 1.705540 9.660696 2.105287 +v 1.526129 9.833411 3.413726 +v 1.526129 9.833411 -0.511597 +v 1.526129 9.833411 -1.313099 +v 1.526129 9.833411 -1.820038 +v 1.526129 9.833411 -0.004658 +v 1.526129 9.833411 2.105287 +v 1.526129 9.833411 1.303783 +v 1.705540 7.184847 -2.765843 +v 1.705540 7.614016 -2.276283 +v 1.526043 7.614016 -2.276283 +v -0.947015 10.390597 -3.531360 +v -1.705540 9.660696 -4.131682 +v -1.132077 10.212755 -2.753816 +v -1.705540 7.184847 18.319260 +v -1.705540 7.967403 18.319260 +v -1.526129 9.833411 -1.313099 +v -1.526129 9.833411 -0.511597 +v -1.705540 9.660696 -1.820038 +v -1.526129 9.833411 -1.820038 +v -1.705540 9.660696 3.413726 +v -1.705540 9.660696 2.612224 +v -1.705540 9.326169 2.612224 +v -1.333642 7.184847 19.492821 +v -0.471660 5.087640 21.944122 +v -0.813732 5.420444 21.944122 +v -0.409408 10.390597 -3.531360 +v -1.705540 7.184847 2.105287 +v -1.526129 7.184847 2.105287 +v -1.526129 9.833411 2.105287 +v -1.705540 7.967402 7.346314 +v -1.705540 7.967403 18.319260 +v -1.333642 7.967403 19.492821 +v -1.333642 7.184847 19.492821 +v -1.705540 9.321173 2.105287 +v -1.705540 9.660696 2.105287 +v -1.705540 8.055083 6.892087 +v -1.333642 8.055083 6.892087 +v -1.333642 7.967402 7.346314 +v -1.705540 9.660696 -0.511597 +v -1.238688 9.417337 -4.333549 +v -1.705540 9.660696 -4.131682 +v -1.526129 9.833411 1.303783 +v -1.705540 8.782389 -4.842924 +v -1.705540 9.660696 -1.313099 +v -1.705540 7.184847 -1.313099 +v -1.705540 7.184847 -0.511597 +v -1.705540 9.660696 -0.004658 +v -1.705540 7.184847 -0.004658 +v -1.705540 7.184847 0.796844 +v -1.526129 9.833411 -0.004658 +v -1.705540 9.660696 0.796844 +v -1.526129 9.833411 0.796844 +v -0.813732 5.420444 16.849926 +v -0.813732 7.184847 21.944122 +v -1.526129 7.184847 -1.313099 +v -1.526129 9.833411 -1.313099 +v -1.526129 9.833411 -1.820038 +v -0.947015 10.390597 11.777044 +v -1.016029 10.321228 11.777044 +v -1.705540 8.752759 6.288157 +v -1.526129 9.833411 3.920664 +v -1.526129 9.833411 3.413726 +v -1.526129 9.326169 3.413726 +v 1.326382 8.752767 6.288157 +v -1.171832 8.402290 6.532843 +v -1.171832 8.578353 11.777044 +v -1.171832 8.402287 11.660702 +v 0.632517 10.019367 5.830758 +v 0.632517 10.019367 6.288155 +v 0.408756 10.019367 6.288155 +v -0.654714 10.019367 5.830758 +v -0.409408 10.019367 5.830758 +v -0.409408 10.019367 6.288155 +v 0.632517 10.019367 6.288155 +v 0.958007 9.683130 11.555178 +v 1.156401 7.184845 5.830760 +v 1.156401 7.184847 11.897295 +v 0.941169 9.203604 11.872110 +v 1.018714 8.813759 11.876556 +v 1.018714 8.813761 21.944122 +v 0.720340 9.534099 11.876594 +v 0.941169 9.203606 21.944122 +v 0.389845 9.754928 11.891424 +v 0.720340 9.534101 21.944122 +v 0.000000 9.832473 11.897295 +v 0.389845 9.754930 21.944122 +v 0.814306 10.296816 20.190464 +v 0.814306 10.492235 20.190464 +v 0.000000 9.832475 21.944122 +v -0.389845 9.754930 21.944122 +v -0.389845 9.754928 11.897295 +v -0.720340 9.534101 21.944122 +v -0.720340 9.534099 11.896715 +v 0.893030 10.296816 20.116810 +v 0.893030 10.492235 20.116810 +v 0.893030 10.296816 19.372772 +v 0.893030 10.492235 19.372772 +v -0.941169 9.203604 11.897295 +v -0.941169 9.203606 21.944122 +v -1.018714 8.813761 21.944122 +v -1.018714 8.813759 11.897295 +v -0.941169 8.423916 21.944122 +v -0.941169 8.423914 11.897295 +v -0.720340 8.093421 21.944122 +v -0.720340 8.093419 11.897295 +v -0.389845 7.872591 21.944122 +v -0.389845 7.872592 11.897295 +v 0.000000 7.795045 21.944122 +v 0.000000 7.795045 11.897295 +v 0.000000 7.795045 21.944122 +v 0.389845 7.872591 21.944122 +v 0.389845 7.872592 11.897295 +v 0.720340 8.093421 21.944122 +v 0.720340 8.093419 11.890940 +v 0.814306 10.296816 19.285318 +v 0.814306 10.492235 19.285318 +v 0.893030 10.492235 19.372772 +v 0.941169 8.423914 11.883168 +v 0.941169 8.423916 21.944122 +v 0.359371 10.492235 19.285318 +v -0.814306 10.296816 19.285318 +v -0.359371 10.492235 19.285318 +v -0.167762 10.787160 19.556133 +v 0.167762 10.787160 19.556133 +v -0.167762 11.355712 19.816681 +v 0.167762 11.355712 19.816681 +v -0.814306 10.157009 0.372429 +v 0.814306 10.157009 0.372429 +v 0.814306 10.357646 0.372429 +v 1.014517 10.157009 0.196239 +v 1.014517 10.369081 0.196239 +v -0.143185 10.723700 -1.978916 +v 0.143185 10.723700 -1.978916 +v 0.143185 10.723700 -2.690544 +v 0.143185 11.207904 -2.300617 +v 0.143185 10.723700 -1.978916 +v 0.335502 11.207904 -2.300617 +v 1.014517 10.723700 -1.978916 +v 1.014517 11.207904 -2.300617 +v 1.014517 10.606321 -1.825949 +v -1.014517 10.606321 -1.825949 +v -1.014517 10.491154 -1.431076 +v 1.014517 10.491154 -1.431076 +v -0.814306 10.357646 0.372429 +v 0.814306 10.357646 0.372429 +v 1.014517 10.369081 0.196239 +v -1.014517 10.369081 0.196239 +v -1.171832 9.475291 11.897295 +v 0.632517 10.019367 11.897295 +v 0.720340 9.534099 11.876594 +v 0.000000 9.832473 11.897295 +v -0.654714 10.019367 11.897295 +v -0.720340 9.534099 11.896715 +v -1.171832 9.475291 11.897295 +v 0.941169 8.423914 11.883168 +v 0.720340 8.093419 11.890940 +v 0.389845 7.872592 11.897295 +v -0.941169 9.203604 11.897295 +v -0.389845 9.754928 11.897295 +v 0.389845 9.754928 11.891424 +v 0.941169 9.203604 11.872110 +v -1.524936 8.927025 1.935822 +v -1.526129 9.833411 2.105287 +v -1.526129 9.321173 2.105287 +v -1.526129 9.326169 2.612224 +v 0.335502 11.269897 -2.300617 +v 0.143185 11.269897 -2.300617 +v -0.167762 10.787160 19.556133 +v -0.167762 10.787160 20.190464 +v -0.167762 11.355712 20.190464 +v -0.359371 10.492235 20.190464 +v -0.814306 10.492235 20.190464 +v -0.814306 10.296816 20.190464 +v -0.893030 10.296816 20.116810 +v -0.893030 10.296816 19.372772 +v -0.893030 10.492235 20.116810 +v -0.893030 10.296816 19.372772 +v -0.893030 10.492235 19.372772 +v -0.814306 10.492235 19.285318 +v -0.143185 10.723700 -1.978916 +v -1.014517 10.723700 -1.978916 +v -0.814306 10.357646 0.372429 +v -0.335502 11.269897 -2.300617 +v -0.335502 11.207904 -2.300617 +v -0.143185 11.207904 -2.300617 +v 1.526129 9.833411 0.796844 +v -0.451145 8.974197 5.975873 +v -0.345291 9.132619 5.975873 +v -0.345291 9.132619 5.773399 +v -0.186870 9.238472 5.975873 +v -0.186870 9.238472 5.773399 +v 0.345291 8.442036 5.975873 +v 0.186870 8.336183 5.975873 +v 0.186870 8.336183 5.773399 +v 0.000000 9.275643 5.975873 +v 0.000000 9.275643 5.773399 +v 0.186870 9.238472 5.975873 +v 0.186870 9.238472 5.773399 +v 0.451145 8.600457 5.975873 +v 0.345291 8.442036 5.773399 +v 0.345291 9.132619 5.975873 +v 0.345291 9.132619 5.773399 +v 0.451145 8.974197 5.975873 +v 0.451145 8.974197 5.773399 +v 0.488316 8.787328 5.975873 +v 0.451145 8.600457 5.773399 +v 0.488316 8.787328 5.773399 +v -0.186870 8.336183 5.975873 +v -0.345291 8.442036 5.975873 +v -0.345291 8.442036 5.773399 +v -0.451145 8.600457 5.975873 +v -0.488316 8.787328 5.975873 +v -0.488316 8.787328 5.773399 +v 0.000000 8.299012 5.975873 +v -0.186870 8.336183 5.773399 +v 0.000000 8.299012 5.773399 +v -0.451145 8.974197 5.773399 +v -0.451145 8.600457 5.773399 +v -1.360494 8.796173 2.190354 +v -1.659889 8.796173 2.190354 +v -1.659889 8.927017 2.059509 +v -1.659889 9.139336 2.059509 +v -1.360494 9.139336 2.059509 +v -1.360494 8.927017 2.059509 +v -1.360494 9.270180 2.190354 +v -1.659889 9.270180 2.190354 +v -1.659889 9.270180 6.250484 +v -1.360494 8.796173 6.250484 +v -1.659889 8.796173 6.250484 +v -1.705540 9.326169 6.288157 +v -1.524936 8.927025 1.935822 +v -1.526129 7.184847 0.796844 +v -1.526129 8.752565 2.110280 +v -1.524936 9.151711 1.935822 +v 0.167762 10.787160 20.190464 +v -1.526129 7.184847 -0.511597 +v 0.947015 10.390599 21.944122 +v 1.705540 7.184847 3.413727 +v 0.408756 10.107763 -3.763228 +v 1.705540 7.967403 18.319260 +v 1.526129 9.833411 1.303783 +v -1.132077 10.212755 -2.753816 +v 1.705540 7.184847 -1.313099 +v 1.705540 7.184847 -0.004658 +v 1.526129 9.833411 2.612224 +v 1.526129 9.833411 3.920664 +v 1.526129 9.833411 -0.004658 +v 1.705540 7.184847 2.105287 +v 1.526043 7.184847 -2.765843 +v -1.705540 9.326169 3.413726 +v -1.333642 7.967403 19.492821 +v -1.705540 9.660696 2.105287 +v -1.333642 7.184847 21.944122 +v -0.813732 7.184847 16.849926 +v -1.526129 7.184847 -1.820038 +v -1.526129 9.326169 3.920664 +v -1.333642 8.402287 11.660702 +v 0.408756 10.019367 5.830758 +v -0.654714 10.019367 6.288155 +v 0.869641 10.390597 11.777044 +v 0.000000 7.795045 11.897295 +v 0.893030 10.296816 19.372772 +v -0.143185 10.723700 -2.690544 +v -1.526129 9.833411 2.612224 +v -0.167762 11.355712 19.816681 +v -0.359371 10.492235 19.285318 +v -0.893030 10.492235 19.372772 +v -0.143185 11.269897 -2.300617 +v -1.014517 11.207904 -2.300617 +v -1.360494 9.270180 6.250484 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 1.0000 -0.0001 +vn -1.0000 -0.0000 0.0005 +vn -0.0000 -0.7793 -0.6266 vn -0.0000 -1.0000 -0.0000 -vn -0.0000 -0.9983 -0.0575 -vn 0.0000 -0.9772 -0.2125 -vn 0.0000 -0.9666 -0.2562 -vn 0.0000 -0.4950 0.8689 -vn 1.0000 -0.0000 0.0000 -vn -0.0053 0.6390 -0.7692 -vn 0.0000 0.6406 -0.7679 -vn -0.0035 0.6415 -0.7671 -vn 0.0000 -0.9606 -0.2778 -vn 0.0000 -0.9397 -0.3420 -vn 0.0000 0.1886 -0.9821 -vn 0.0000 0.6463 -0.7631 -vn -0.0036 0.6433 -0.7656 -vn 0.0000 0.8070 0.5905 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.9924 0.1232 -vn 0.0000 -0.5336 0.8457 -vn -0.0011 -0.5347 0.8451 -vn -0.0007 -0.5346 0.8451 -vn 0.0002 0.9819 0.1892 -vn 0.0000 1.0000 -0.0000 -vn -0.0000 0.8598 0.5106 -vn 0.0000 0.0000 1.0000 -vn 0.0000 -0.9851 -0.1717 -vn 0.0000 -0.9356 0.3532 -vn 0.0000 -0.9999 0.0171 -vn 0.0000 0.3735 0.9276 -vn 0.0000 -0.2142 0.9768 -vn 0.0000 -0.1128 0.9936 -vn 0.0000 -0.6774 0.7356 -vn 0.0000 -0.5021 0.8648 -vn 0.0000 -0.9934 -0.1149 -vn 0.0000 0.0000 -1.0000 -vn -0.9978 0.0662 -0.0000 -vn -0.8965 0.4430 0.0000 -vn -0.9472 0.3207 -0.0000 -vn -0.9575 -0.1451 0.2492 -vn -0.9344 -0.2629 0.2404 -vn -0.9389 -0.2242 0.2612 -vn -0.8781 -0.1764 0.4448 -vn -0.9776 -0.1677 0.1269 -vn 0.9978 -0.0662 0.0000 +vn 1.0000 0.0001 -0.0001 +vn 1.0000 -0.0005 -0.0001 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 0.2954 -0.9554 +vn 1.0000 -0.0000 -0.0001 +vn -1.0000 -0.0000 -0.0001 +vn -0.0000 -1.0000 -0.0001 +vn -1.0000 0.0001 -0.0001 +vn -0.0000 0.3579 0.9338 +vn -0.0000 0.3242 -0.9460 +vn -0.0000 -0.9724 -0.2331 +vn -0.0000 0.6488 0.7610 +vn -0.0000 0.6112 0.7915 +vn -0.0000 0.3594 0.9332 +vn -0.0000 0.3979 0.9174 +vn 0.3944 -0.9189 -0.0000 +vn -0.2584 -0.9660 -0.0000 +vn -0.0544 0.0347 -0.9979 +vn -0.9202 0.3915 -0.0000 +vn -0.9202 0.3914 -0.0000 +vn -1.0000 -0.0000 -0.0023 +vn -1.0000 -0.0001 -0.0070 +vn -0.7948 0.6069 -0.0000 +vn -0.8837 0.4681 -0.0000 +vn -0.9815 0.1914 -0.0000 +vn 0.9202 0.3914 -0.0000 +vn 0.7785 0.6277 -0.0000 +vn 0.8716 -0.4902 0.0001 +vn 0.9946 -0.0000 0.1036 +vn 0.9501 0.3120 -0.0000 +vn 0.9922 -0.0000 0.1244 +vn -0.0000 -0.9849 0.1730 +vn -0.0000 -0.8848 0.4659 +vn -0.0000 -0.5054 0.8629 +vn 0.0001 -0.2527 0.9675 +vn -0.0000 -0.3827 0.9239 +vn -0.0001 0.5055 0.8628 +vn -0.0151 0.3827 0.9237 +vn -0.0075 0.3820 0.9241 +vn -0.0098 -0.0134 -0.9999 +vn -0.0135 0.0030 -0.9999 +vn -0.0078 -0.0088 -0.9999 +vn -0.9112 -0.0000 0.4119 +vn 0.9588 0.2841 -0.0000 +vn 0.8386 0.5448 -0.0000 +vn -0.8061 -0.3082 -0.5053 +vn -0.8143 -0.5805 -0.0013 +vn -0.5167 -0.8561 -0.0000 +vn 0.6940 0.7200 -0.0000 +vn 0.4341 0.8971 0.0825 +vn 0.9006 0.4347 0.0001 +vn -0.6892 0.1308 -0.7126 +vn -0.9536 0.0970 -0.2850 +vn -0.9956 0.0942 -0.0000 +vn -0.8233 -0.5676 0.0006 +vn -0.9600 -0.2555 -0.1143 +vn -0.3908 -0.9205 0.0012 +vn -0.9277 -0.3732 0.0009 +vn -0.8233 -0.5676 0.0008 +vn 0.8835 0.4684 -0.0000 +vn -0.9987 0.0005 0.0512 +vn -1.0000 0.0021 -0.0000 +vn -0.9198 0.3925 -0.0002 +vn -0.8535 0.5212 0.0001 +vn 0.1239 0.9740 0.1894 +vn 0.4932 0.8699 -0.0000 +vn -0.0000 0.9039 -0.4278 +vn -0.0000 0.8020 -0.5974 +vn -0.2691 0.9151 -0.3004 +vn -0.1559 0.0685 -0.9854 +vn -0.0000 0.2196 -0.9756 +vn -0.0000 0.2883 -0.9575 +vn -0.8561 0.5167 -0.0000 +vn -0.2979 0.9546 -0.0000 +vn -0.2469 0.9690 -0.0000 +vn 0.0544 0.9985 0.0027 +vn 0.3979 0.9174 0.0029 +vn 0.1126 0.9936 -0.0000 +vn 0.4235 0.9059 0.0029 +vn 0.9695 -0.2451 -0.0000 +vn 0.8716 -0.4902 -0.0000 +vn 0.4233 0.9060 0.0029 +vn 0.6497 0.7602 -0.0000 +vn -0.8837 0.4680 -0.0000 +vn -0.6017 0.7987 -0.0000 +vn -0.8561 0.5168 -0.0000 +vn -0.6934 0.7206 -0.0000 +vn -0.8186 0.5743 -0.0000 +vn 0.2692 0.9150 -0.3004 +vn 0.1831 0.9831 -0.0000 +vn 0.5496 0.8354 -0.0000 +vn -0.2622 0.9451 0.1950 +vn -0.4802 0.8651 0.1452 +vn 0.3027 0.9480 -0.0986 +vn -0.3083 0.9299 -0.2006 +vn -0.2470 0.9690 -0.0000 +vn 0.3052 0.9313 -0.1990 +vn -0.3051 0.9470 -0.1000 +vn 0.9878 -0.0000 0.1556 +vn 0.4972 -0.8676 -0.0000 +vn 0.9665 -0.2568 -0.0000 +vn 0.8580 -0.5136 -0.0000 +vn -0.0000 0.9980 0.0635 +vn -0.0000 0.9919 0.1269 +vn 0.8837 0.4681 -0.0000 +vn -0.0000 0.6730 0.7397 +vn -0.0000 0.6239 0.7815 +vn -0.0000 0.8374 0.5466 +vn -0.0000 0.9284 0.3717 +vn -0.0000 0.1989 0.9800 +vn 0.0033 0.6337 -0.7736 +vn 0.0022 0.6324 -0.7747 +vn -0.0001 0.7210 -0.6930 +vn -0.0000 0.6324 -0.7746 +vn -0.2468 0.9691 -0.0000 +vn -0.0000 0.6332 -0.7740 +vn -0.0001 0.4392 -0.8984 +vn 0.0028 0.4406 -0.8977 +vn 0.8561 0.5169 -0.0001 +vn 0.2691 0.9151 -0.3004 +vn 0.7948 0.6069 -0.0000 +vn 0.8561 0.5168 -0.0000 +vn 0.9660 0.2584 -0.0000 +vn 0.9660 0.2584 0.0001 +vn 0.8561 0.5168 -0.0002 +vn 0.8561 0.5168 -0.0001 +vn -0.3763 -0.9265 -0.0000 +vn 0.2486 -0.9686 -0.0000 +vn 0.3737 0.9275 -0.0000 +vn -0.0001 0.2196 -0.9756 +vn 0.8837 0.4680 -0.0000 +vn 0.7785 0.6276 -0.0000 +vn 0.9202 0.3915 -0.0000 +vn -0.0000 -0.7520 0.6592 +vn -0.8561 0.5169 -0.0001 +vn -0.6262 0.7797 -0.0000 +vn -0.9883 -0.0000 0.1528 +vn -0.9881 0.0006 0.1536 +vn -0.8580 -0.5136 -0.0000 +vn -0.0139 -0.0016 0.9999 +vn -0.0000 -0.0032 1.0000 +vn -0.9881 0.0014 0.1536 +vn -0.0000 0.9284 0.3716 +vn -0.0000 0.8374 0.5465 +vn -0.0022 0.6324 -0.7746 +vn -0.0027 0.6339 -0.7734 +vn -0.0015 0.4406 -0.8977 +vn -0.9660 0.2584 -0.0000 +vn -0.9665 -0.2568 -0.0000 +vn -0.3839 0.9234 -0.0000 +vn -0.6994 0.7147 -0.0000 +vn -0.0000 0.5725 0.8199 +vn -0.0000 0.5724 0.8199 +vn -0.0000 0.2878 -0.9577 +vn -0.0000 0.5513 -0.8343 +vn -0.3908 -0.9205 0.0007 +vn -0.3902 -0.9207 -0.0000 +vn -0.9601 -0.2554 -0.1143 +vn -0.9472 -0.3207 -0.0000 +vn -0.9978 0.0661 -0.0000 +vn -0.9978 -0.0662 -0.0000 +vn -0.7523 -0.6588 -0.0000 +vn -0.8965 -0.4430 -0.0000 +vn -0.4430 -0.8965 -0.0000 +vn -0.6588 -0.7523 -0.0000 +vn -0.0661 -0.9978 -0.0000 +vn -0.3207 -0.9472 -0.0000 +vn 0.1802 -0.0001 0.9836 +vn 0.4855 -0.0001 0.8742 +vn 0.0662 -0.9978 -0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.3828 -0.9238 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 0.8510 -0.0001 0.5252 +vn 0.9649 -0.0001 0.2626 +vn 0.9715 -0.0000 -0.2369 +vn 0.8806 -0.0000 -0.4739 vn 0.8965 -0.4430 -0.0000 vn 0.9472 -0.3207 -0.0000 -vn -0.6588 0.7523 0.0000 +vn 0.9978 0.0662 -0.0000 +vn 0.9978 -0.0662 -0.0000 +vn 0.8965 0.4430 -0.0000 +vn 0.9472 0.3207 -0.0000 +vn 0.6588 0.7523 -0.0000 +vn 0.7523 0.6588 0.0001 +vn 0.3207 0.9472 -0.0000 +vn 0.4430 0.8965 -0.0000 +vn -0.0662 0.9978 -0.0000 +vn 0.0661 0.9978 -0.0000 +vn -0.0661 0.9978 -0.0000 +vn -0.3827 0.9239 -0.0000 +vn -0.3831 0.9237 -0.0000 +vn -0.7071 0.7071 -0.0000 +vn 0.4068 -0.0000 -0.9135 +vn -0.8965 0.4430 -0.0000 +vn -0.9472 0.3207 -0.0000 +vn -0.0000 0.2895 -0.9572 +vn -0.3241 -0.0000 -0.9460 +vn -0.0000 0.2399 -0.9708 +vn -0.0000 0.5962 -0.8028 +vn -0.0000 0.5087 -0.8609 +vn -0.0000 0.4166 -0.9091 +vn -0.2336 -0.0000 0.9723 +vn 0.3531 -0.0000 0.9356 +vn 0.9112 -0.0000 0.4119 +vn -0.0000 0.8520 0.5235 +vn -0.0003 0.7892 0.6142 +vn -0.0000 0.1917 0.9814 +vn -0.0000 0.7892 0.6142 +vn -0.0000 0.4287 0.9035 +vn -0.0000 0.6411 0.7674 +vn -0.0000 0.5534 0.8329 +vn -0.0000 0.8920 0.4521 +vn -0.0000 0.8459 0.5334 +vn -0.0000 0.9771 0.2126 +vn -0.0000 0.9896 0.1439 +vn -0.0000 0.9979 0.0648 +vn -0.0000 0.9977 0.0682 +vn -0.0000 0.9974 0.0716 +vn 0.9695 -0.2451 -0.0001 +vn -0.0111 0.0273 -0.9996 +vn -0.0194 0.0258 -0.9995 +vn -0.0030 0.0101 -0.9999 +vn -0.0000 0.0008 -1.0000 +vn -0.0005 0.0005 -1.0000 +vn -0.0009 -0.0000 -1.0000 +vn -0.0148 -0.0140 -0.9998 +vn -0.0126 -0.0131 -0.9998 +vn -0.0055 -0.0061 -1.0000 +vn -0.0004 -0.0004 -1.0000 +vn 0.0004 0.0004 -1.0000 +vn -0.0138 0.0348 -0.9993 +vn -0.0152 -0.0072 -0.9999 +vn -0.0000 0.2527 0.9675 +vn -0.9588 0.2841 -0.0000 +vn -0.8386 0.5448 -0.0000 +vn -0.4855 -0.0000 0.8742 +vn -0.2428 -0.0000 0.9701 +vn -0.8510 -0.0000 0.5252 +vn -0.9715 0.0001 -0.2369 +vn -0.9649 -0.0000 0.2626 +vn -0.9715 -0.0000 -0.2370 +vn -0.8806 -0.0000 -0.4739 +vn -0.4068 -0.0000 -0.9135 +vn -0.0000 0.8521 0.5234 +vn -0.4670 -0.0000 0.8842 +vn -0.6588 0.7523 -0.0000 vn -0.7523 0.6588 -0.0000 +vn -0.3207 0.9472 -0.0000 +vn -0.4430 0.8965 -0.0000 vn 0.6588 -0.7523 -0.0000 -vn 0.7523 -0.6588 -0.0000 -vn -0.3207 0.9472 -0.0001 -vn -0.4430 0.8965 -0.0001 vn 0.3207 -0.9472 -0.0000 vn 0.4430 -0.8965 -0.0000 -vn 0.0662 0.9978 0.0000 -vn -0.0661 0.9978 0.0000 -vn -0.0662 -0.9978 -0.0000 -vn 0.0661 -0.9978 0.0000 -vn 0.0661 0.9978 0.0000 -vn 0.4430 0.8965 -0.0000 -vn 0.3207 0.9472 0.0000 -vn -0.0661 -0.9978 -0.0000 -vn -0.4430 -0.8965 -0.0000 -vn -0.3207 -0.9472 -0.0000 +vn 0.7523 -0.6588 -0.0000 vn 0.7523 0.6588 -0.0000 -vn 0.6588 0.7523 0.0000 -vn -0.7523 -0.6588 -0.0000 -vn -0.6588 -0.7523 -0.0000 -vn 0.9472 0.3207 -0.0000 -vn 0.8965 0.4430 -0.0001 -vn -0.9472 -0.3207 -0.0000 -vn -0.8965 -0.4430 -0.0000 -vn 0.9978 0.0662 -0.0000 -vn -0.9978 -0.0662 0.0000 -vn 0.8965 -0.4430 0.0001 -vn -0.3207 0.9472 0.0000 -vn -0.4430 0.8965 0.0000 -vn 0.0662 -0.9978 -0.0000 -vn -0.0662 0.9978 0.0000 -vn -0.4430 -0.8965 0.0001 -vn -0.3207 -0.9472 0.0001 -vn 0.8965 0.4430 0.0000 -vn 0.0000 0.9071 -0.4210 -vn 0.0000 0.9960 0.0890 -vn 0.0000 0.9960 -0.0890 -vn 0.0000 0.9960 0.0889 -vn 0.0000 0.8181 0.5750 -vn 0.0000 0.9071 0.4210 -vn 0.0000 0.5751 -0.8181 -vn 0.0000 0.8181 -0.5751 -vn 0.0000 0.4210 0.9071 -vn 0.0000 0.5750 0.8181 -vn 0.0000 0.0890 -0.9960 -vn 0.0000 0.4210 -0.9071 -vn 0.0000 -0.0889 0.9960 -vn 0.0000 0.0889 0.9960 -vn 0.0000 -0.4210 -0.9071 -vn 0.0000 0.0889 -0.9960 -vn -0.0000 -0.0890 -0.9960 -vn 0.0000 -0.5750 0.8181 -vn 0.0000 -0.4210 0.9071 -vn 0.0000 -0.8181 -0.5751 -vn 0.0000 -0.5751 -0.8181 -vn 0.0000 -0.9071 0.4210 -vn 0.0000 -0.8181 0.5750 -vn 0.0000 -0.9960 -0.0890 -vn 0.0000 -0.9071 -0.4210 -vn 0.0000 -0.9960 -0.0889 -vn 0.0000 -0.9960 0.0889 -vn 0.0000 -0.9960 0.0890 -vn 0.0000 -0.8181 -0.5750 -vn 0.0000 -0.5751 0.8181 -vn 0.0000 -0.8181 0.5751 -vn 0.0000 -0.5750 -0.8181 -vn 0.0000 -0.0890 0.9960 -vn -0.0001 -0.0890 -0.9960 -vn 0.0000 0.0890 0.9960 -vn 0.0000 0.5750 -0.8181 -vn 0.0000 0.8181 0.5751 -vn 0.0000 0.5751 0.8181 -vn 0.0000 0.8181 -0.5750 -vn 0.0000 0.9960 -0.0889 -vn -0.8737 -0.1315 -0.4684 -vn -0.9862 -0.0041 -0.1656 -vn -0.8872 0.2205 -0.4054 -vn -0.7168 -0.3702 0.5909 -vn -0.0822 -0.6000 0.7957 -vn -0.6767 -0.2422 0.6953 -vn -0.9125 0.1216 -0.3905 -vn -0.9940 0.0221 -0.1068 -vn -0.9139 -0.0027 -0.4059 -vn -0.9673 0.2232 0.1202 -vn -0.9954 -0.0433 0.0853 -vn -0.9560 0.1006 0.2757 -vn -0.9685 -0.0991 0.2284 -vn -0.9504 -0.2074 0.2318 -vn -0.9883 0.1182 0.0969 -vn -0.4530 0.2801 -0.8464 -vn -0.4864 0.0390 -0.8729 -vn -0.9142 0.0704 -0.3992 -vn -0.1396 0.2721 -0.9521 -vn -0.0360 0.1283 -0.9911 -vn -0.8460 0.1204 -0.5194 -vn -0.9076 0.3995 -0.1294 -vn -0.4854 0.7468 -0.4545 -vn -0.5755 0.8091 -0.1186 -vn -0.0534 0.7747 -0.6301 -vn -0.3445 0.4756 -0.8094 -vn -0.9779 -0.0642 -0.1992 -vn -0.9947 0.0245 -0.0996 -vn -0.9931 -0.0834 -0.0820 -vn -0.9058 -0.1444 -0.3984 -vn -0.9566 0.2613 0.1289 -vn -0.9201 -0.3126 0.2362 -vn -0.9313 -0.3635 0.0218 -vn -0.9227 -0.2852 0.2592 -vn -0.9128 -0.3909 0.1182 -vn -0.9312 -0.3570 0.0740 -vn -0.9684 -0.1692 0.1830 -vn -0.9038 -0.3696 0.2156 -vn -0.9809 -0.1776 0.0789 -vn -0.9786 -0.2002 0.0480 -vn -0.9987 -0.0475 -0.0201 -vn -0.9688 0.2308 0.0903 -vn -0.9376 0.0952 0.3344 -vn -0.9649 0.1135 0.2367 -vn -0.9495 0.2763 0.1486 -vn -0.9832 0.0556 0.1736 -vn -0.9844 0.1276 0.1212 -vn -0.9290 0.2500 0.2729 -vn -0.9956 -0.0665 0.0653 -vn -0.9625 -0.0724 0.2614 -vn -0.9851 -0.1084 0.1335 -vn -0.9833 -0.0502 0.1751 -vn -0.9846 -0.0087 0.1745 -vn -0.9900 0.1007 0.0988 -vn -0.8989 0.0907 0.4287 -vn -0.9942 -0.0403 -0.1002 -vn -0.9968 -0.0448 -0.0663 -vn -0.8695 -0.2858 -0.4029 -vn -0.9335 -0.3023 -0.1926 -vn -0.9089 -0.4170 0.0072 -vn -0.9846 -0.1696 0.0430 -vn -0.9932 -0.0221 -0.1146 -vn -0.9900 0.0999 -0.0998 -vn -0.9920 0.1239 -0.0234 -vn -0.5747 0.5494 0.6065 -vn -0.8998 0.4026 0.1680 -vn -0.0745 0.7122 0.6980 -vn -0.3706 0.2403 0.8972 -vn -0.0963 -0.2070 0.9736 -vn -0.0758 0.2517 0.9648 -vn -0.6409 -0.7662 -0.0458 -vn -0.9298 -0.2330 0.2848 -vn 0.0000 -0.5750 0.8182 -vn 0.0000 -0.5750 -0.8182 -vn 0.0000 -0.8182 -0.5750 -vn 0.0000 0.5750 0.8182 -vn 0.0000 -0.0889 -0.9960 -vn 0.0000 -0.9239 -0.3826 -vn 0.0000 0.9239 -0.3826 -vn 0.0000 0.9675 -0.2527 -vn 0.0000 -0.3827 -0.9239 -vn 0.0000 0.3827 -0.9239 -vn -0.0000 0.8629 -0.5054 -vn 0.0000 -0.9676 -0.2526 -vn -0.0000 -0.8629 -0.5054 -vn 0.0002 -0.9676 -0.2526 -vn 0.0000 0.9906 0.1368 -vn 0.0000 0.6038 0.7972 -vn 0.0000 0.7972 0.6038 -vn 0.0000 -0.1368 0.9906 -vn 0.0000 0.1368 0.9906 -vn 0.0000 -0.7972 0.6037 -vn -0.0000 -0.6038 0.7972 -vn 0.0000 -0.7972 0.6038 -vn 0.0000 -0.9906 -0.1368 -vn 0.0000 -0.9906 0.1368 -vn 0.0000 -0.6038 -0.7972 -vn 0.0000 -0.7972 -0.6038 -vn 0.0000 0.1368 -0.9906 -vn 0.0000 -0.1368 -0.9906 -vn -1.0000 0.0000 0.0037 -vn -1.0000 0.0000 0.0075 -vn 0.0000 0.7972 -0.6038 -vn 0.0000 0.6038 -0.7972 -vn -0.5344 0.1812 0.8256 -vn -0.5073 -0.3627 0.7818 -vn -0.5247 -0.1884 0.8302 -vn -0.3422 0.8174 0.4635 -vn -0.5018 0.4301 0.7505 -vn 0.0000 0.9906 -0.1368 -vn 0.0138 0.7488 -0.6626 -vn -0.0105 0.4047 -0.9144 -vn 0.0087 0.3748 -0.9271 -vn 0.0713 0.8730 -0.4825 -vn -0.0055 0.9136 -0.4067 -vn -0.9958 -0.0324 -0.0853 -vn -0.9474 -0.3190 -0.0268 -vn 0.9932 -0.0426 -0.1083 -vn 0.9930 -0.0531 -0.1054 -vn 0.9015 -0.4270 -0.0701 -vn 0.9474 -0.3190 -0.0268 -vn 0.4260 -0.8999 -0.0934 -vn -0.4482 -0.5058 0.7370 -vn -0.4877 -0.5255 0.6971 -vn -0.9280 -0.3587 -0.1012 -vn -0.8534 -0.4727 -0.2197 -vn -0.4260 -0.8989 -0.1030 -vn 0.9394 -0.1625 -0.3019 -vn 0.5145 -0.3209 0.7952 -vn 0.9295 -0.1383 0.3419 -vn 0.9268 -0.1407 0.3483 -vn -0.6818 -0.5955 -0.4249 -vn -0.9911 0.0000 0.1331 -vn -0.9978 -0.0000 0.0666 -vn 0.9404 0.1281 -0.3149 -vn 0.9304 0.1374 -0.3398 -vn -0.0000 -0.9918 0.1279 -vn -0.0000 -0.9960 -0.0893 -vn 0.1721 0.4024 -0.8991 -vn 0.0000 0.4238 -0.9058 -vn -0.9476 -0.1416 -0.2864 -vn -0.9930 -0.0531 -0.1054 -vn -0.9476 -0.1416 -0.2865 -vn 0.8934 -0.3903 -0.2225 -vn -1.0000 -0.0006 0.0001 -vn -1.0000 -0.0010 -0.0002 -vn -0.9886 -0.0584 0.1389 -vn -1.0000 0.0000 -0.0006 -vn -1.0000 0.0008 -0.0005 -vn -0.8859 -0.1792 0.4279 -vn -0.9569 -0.1081 0.2694 -vn -0.9391 -0.1502 0.3090 -vn -0.9371 -0.1343 0.3223 -vn 0.4203 -0.4751 0.7730 -vn 0.3339 -0.2816 0.8996 -vn 0.8896 -0.1729 0.4226 -vn -0.9473 0.1523 -0.2819 -vn -0.9802 0.0091 -0.1979 -vn -0.2835 -0.4795 -0.8305 -vn -0.2965 -0.1206 -0.9474 -vn -0.0364 0.1142 -0.9928 -vn 0.9363 0.1191 -0.3304 -vn -0.9363 0.1191 -0.3304 -vn 0.9910 0.0439 -0.1265 -vn -0.9910 0.0439 -0.1265 -vn -0.8724 -0.1036 0.4777 -vn -0.9603 0.0267 0.2778 -vn -0.9801 -0.1117 0.1641 -vn -0.9999 -0.0132 -0.0001 -vn -0.9719 -0.0333 0.2329 -vn -0.9376 0.1183 -0.3271 -vn -0.9212 0.1912 -0.3389 -vn 0.0000 -0.9072 -0.4206 -vn 0.0208 -0.2762 -0.9609 -vn 0.0000 0.2238 -0.9746 -vn 0.0000 0.1500 -0.9887 -vn -0.9257 -0.1856 -0.3295 -vn -0.9477 -0.2262 -0.2251 -vn -0.9436 -0.3063 -0.1256 -vn -0.5812 -0.6406 -0.5019 -vn -0.0857 0.9400 -0.3302 -vn -0.0807 0.8763 -0.4749 -vn 0.0006 0.2651 -0.9642 -vn -0.9910 0.0440 -0.1265 -vn -0.9363 0.1191 -0.3303 -vn -0.4139 0.3096 -0.8560 -vn -0.3758 -0.8080 -0.4538 -vn -0.3691 -0.8001 -0.4728 -vn -0.3743 -0.7996 -0.4696 -vn -0.3715 0.2637 -0.8902 -vn -0.3430 0.0002 -0.9393 -vn -0.3595 0.1300 -0.9240 -vn -0.3937 -0.6141 -0.6841 -vn 0.9227 -0.2852 0.2592 -vn 0.8989 0.0907 0.4287 -vn 0.6998 -0.1880 0.6892 -vn 0.9504 -0.2074 0.2318 -vn 0.9201 -0.3126 0.2362 -vn 0.6767 -0.2422 0.6953 -vn 0.9649 0.1135 0.2367 -vn 0.9883 0.1182 0.0969 -vn 0.7168 -0.3702 0.5909 -vn 0.9376 0.0952 0.3344 -vn 0.9560 0.1006 0.2757 -vn 0.4864 0.0390 -0.8729 -vn 0.9142 0.0704 -0.3992 -vn 0.9058 -0.1444 -0.3984 -vn 0.0717 -0.2461 -0.9666 -vn 0.0360 0.1283 -0.9911 -vn 0.9139 -0.0027 -0.4059 -vn 0.9125 0.1216 -0.3905 -vn 0.8460 0.1204 -0.5194 -vn 0.9083 -0.1711 -0.3818 -vn 0.4795 -0.1233 -0.8689 -vn 0.8695 -0.2858 -0.4029 -vn 0.3927 -0.4709 -0.7900 -vn 0.8737 -0.1315 -0.4684 -vn 0.3129 -0.4800 -0.8196 -vn 0.8872 0.2205 -0.4054 -vn 0.3805 -0.0664 -0.9224 -vn 0.5755 0.8091 -0.1186 -vn 0.3592 0.8985 0.2523 -vn 0.8999 0.4025 0.1679 -vn 0.0333 -0.3953 -0.9180 -vn -0.0238 -0.5460 -0.8375 -vn -0.0633 -0.2827 -0.9571 -vn -0.0221 0.3133 -0.9494 -vn 0.3445 0.4756 -0.8094 -vn 0.0128 -0.0140 -0.9998 -vn 0.0009 0.2043 -0.9789 -vn 0.9968 -0.0448 -0.0663 -vn 0.9932 -0.0221 -0.1146 -vn 0.9089 -0.4170 0.0072 -vn 0.9846 -0.1696 0.0430 -vn 0.9298 -0.2330 0.2848 -vn 0.4446 -0.3490 -0.8249 -vn 0.9076 0.3995 -0.1294 -vn 0.0550 0.2948 -0.9540 -vn 0.0963 -0.2070 0.9736 -vn 0.0822 -0.6000 0.7957 -vn 0.9940 0.0221 -0.1068 -vn 0.9954 -0.0433 0.0853 -vn 0.4530 0.2801 -0.8464 -vn 0.4854 0.7468 -0.4545 -vn 0.0534 0.7747 -0.6301 -vn 0.9920 0.1239 -0.0234 -vn 0.9900 0.0999 -0.0998 -vn 0.9900 0.1007 0.0988 -vn 0.9862 -0.0041 -0.1656 -vn -0.1765 -0.9638 -0.1996 -vn 0.6818 -0.5955 -0.4249 -vn 0.3051 -0.5726 -0.7609 -vn 0.2122 -0.9513 -0.2235 -vn 0.0000 0.0901 -0.9959 -vn 0.4259 -0.8802 -0.2092 -vn 0.9999 0.0167 0.0007 -vn 1.0000 0.0019 0.0034 -vn -0.0000 0.9018 -0.4322 -vn 0.0616 0.9395 -0.3370 -vn 0.0000 0.9364 -0.3510 -vn 0.0857 0.9400 -0.3302 -vn 0.0516 0.7096 -0.7027 -vn -0.0000 0.1126 -0.9936 -vn -0.0000 0.2651 -0.9642 -vn 0.0000 0.2199 -0.9755 -vn -0.0000 0.9018 -0.4321 -vn -0.0613 0.7646 -0.6415 -vn 0.9666 0.0118 -0.2559 -vn 0.9053 -0.1764 0.3864 -vn 0.9477 -0.2262 -0.2251 -vn 0.9436 -0.3063 -0.1256 -vn 0.9389 -0.2242 0.2612 -vn 0.9776 -0.1677 0.1269 -vn 0.9978 -0.0000 0.0666 -vn 0.9257 -0.1856 -0.3295 -vn -0.8895 0.4570 0.0000 -vn -0.2763 0.9611 0.0002 -vn -0.5527 0.8333 0.0001 -vn -0.9736 0.2284 -0.0000 -vn -0.0976 -0.7838 0.6132 -vn -0.6439 -0.6219 -0.4457 -vn -0.0928 -0.7999 -0.5929 -vn -0.0690 -0.9541 -0.2914 -vn -0.4446 -0.3490 -0.8249 -vn -0.3592 0.8985 0.2523 -vn -0.1134 0.9756 -0.1878 -vn -0.0002 0.2043 -0.9789 -vn -0.0550 0.2948 -0.9540 -vn -0.6998 -0.1881 0.6892 -vn -0.9083 -0.1711 -0.3818 -vn -0.0717 -0.2461 -0.9666 -vn -0.4795 -0.1233 -0.8689 -vn -0.3927 -0.4709 -0.7900 -vn -0.3129 -0.4800 -0.8196 -vn -0.3805 -0.0664 -0.9224 -vn -0.0333 -0.3953 -0.9180 -vn 0.0238 -0.5460 -0.8375 -vn 0.0633 -0.2827 -0.9571 -vn 0.0221 0.3133 -0.9494 -vn -0.0128 -0.0140 -0.9998 -vn 0.9673 0.2232 0.1202 -vn 0.9685 -0.0991 0.2284 -vn 0.1396 0.2721 -0.9521 -vn 0.9779 -0.0642 -0.1992 -vn 0.9931 -0.0834 -0.0820 -vn 0.9335 -0.3023 -0.1926 -vn 0.9566 0.2613 0.1289 -vn 0.9313 -0.3635 0.0219 -vn 0.9128 -0.3909 0.1182 -vn 0.9786 -0.2002 0.0480 -vn 0.9312 -0.3570 0.0740 -vn 0.9038 -0.3696 0.2156 -vn 0.9684 -0.1692 0.1830 -vn 0.9809 -0.1776 0.0789 -vn 0.9987 -0.0475 -0.0201 -vn 0.9688 0.2308 0.0903 -vn 0.9495 0.2763 0.1486 -vn 0.9290 0.2500 0.2729 -vn 0.9844 0.1276 0.1212 -vn 0.9832 0.0556 0.1736 -vn 0.9956 -0.0665 0.0653 -vn 0.9625 -0.0724 0.2614 -vn 0.9851 -0.1084 0.1335 -vn 0.9833 -0.0502 0.1751 -vn 0.9846 -0.0087 0.1745 -vn 0.9942 -0.0403 -0.1002 -vn 0.9947 0.0245 -0.0996 -vn 0.5747 0.5494 0.6065 -vn 0.3706 0.2403 0.8972 -vn 0.0745 0.7122 0.6980 -vn 0.0758 0.2517 0.9648 -vn 0.6409 -0.7662 -0.0458 -vn 0.1193 -0.7677 0.6296 -vn 0.0973 -0.7840 0.6130 -vn 0.6439 -0.6219 -0.4457 -vn 0.0928 -0.7999 -0.5929 -vn 0.1134 0.9756 -0.1878 -vn 0.0654 0.9680 0.2423 -vn -0.3723 -0.3800 -0.8468 -vn -0.6432 -0.3414 -0.6854 -vn -0.4592 -0.4012 -0.7925 -vn -0.4263 -0.8678 -0.2554 -vn -0.3935 0.1531 -0.9065 -vn -0.5149 0.4477 -0.7311 -vn -0.4133 0.4461 -0.7938 -vn -0.9212 0.1912 -0.3390 -vn -0.9375 0.1183 -0.3271 -vn 0.9999 0.0135 -0.0099 -vn 0.9998 0.0213 0.0011 -vn 0.9996 0.0271 0.0029 -vn -0.9998 0.0213 0.0011 -vn -0.9996 0.0271 0.0029 -vn -0.9997 0.0252 0.0067 -vn 0.8895 0.4570 0.0000 -vn 0.9736 0.2284 0.0000 -vn 0.4196 0.9077 0.0000 -vn -0.0000 -0.9568 -0.2908 -vn -0.9999 0.0167 0.0007 -vn -0.9995 0.0314 -0.0020 -vn -0.0004 -0.2799 0.9600 -vn 0.0001 -0.5968 0.8024 -vn -0.0004 -0.5061 0.8625 -vn 0.0001 -0.7783 0.6279 -vn 0.0000 -0.8622 0.5066 -vn 0.0000 -0.9667 0.2558 -vn -0.0004 -0.2668 0.9638 -vn -0.9911 -0.0000 0.1332 -vn -0.9894 -0.1160 0.0873 -vn 0.8417 -0.2936 0.4532 -vn 0.4395 -0.3448 0.8294 -vn 0.4540 -0.0806 0.8873 -vn -1.0000 0.0006 0.0012 -vn 1.0000 0.0095 -0.0023 -vn 0.9997 0.0252 0.0067 -vn 0.0001 0.2199 -0.9755 -vn -0.0616 0.9395 -0.3370 -vn -0.4392 0.0051 0.8984 -vn -0.3221 -0.2815 0.9039 -vn -0.4149 -0.3225 0.8508 -vn -0.4184 -0.0205 0.9080 -vn 0.0147 -0.3602 0.9328 -vn -0.3221 -0.2814 0.9039 -vn -0.1337 0.9663 0.2198 -vn -0.9800 0.0000 0.1988 -vn -0.5451 0.8383 0.0000 -vn -0.2015 0.9795 0.0001 -vn -0.9362 0.3516 0.0001 -vn -0.9334 -0.3588 -0.0000 -vn -0.5359 -0.8443 -0.0000 -vn -0.0000 0.9989 0.0471 -vn 0.0000 0.9992 0.0392 -vn 0.0000 0.9931 0.1175 -vn 0.0000 0.9992 0.0393 -vn 0.1595 0.9872 0.0003 -vn 0.9363 0.3512 0.0000 -vn 0.9362 0.3516 0.0001 -vn 0.5451 0.8383 0.0001 -vn 0.9334 -0.3588 -0.0000 -vn 0.4063 -0.9137 -0.0000 -vn -0.2679 -0.9634 -0.0000 -vn 0.0000 -0.5363 0.8440 -vn -0.0005 -0.5361 0.8442 -vn 0.0000 -0.8176 -0.5758 -vn -0.9850 -0.0671 0.1589 -vn 0.4464 -0.6134 0.6515 -vn 0.0000 -0.9239 0.3827 -vn 0.0000 -0.7929 0.6094 -vn 0.4465 -0.6134 0.6515 -vn 0.0655 0.8693 0.4899 -vn 0.0479 0.9748 0.2177 -vn 0.0450 0.9407 0.3362 -vn 1.0000 -0.0001 -0.0003 -vn 1.0000 0.0004 -0.0008 -vn 1.0000 -0.0007 -0.0006 -vn 0.9756 -0.0842 0.2027 -vn 1.0000 0.0004 -0.0001 -vn 0.4540 -0.0805 0.8873 -vn 0.0000 -0.1298 0.9915 -vn 0.0112 -0.9503 0.3111 -vn 1.0000 0.0002 -0.0001 -vn 1.0000 -0.0007 -0.0000 -vn 0.0000 -0.7071 0.7071 -vn 0.0000 0.6037 0.7972 -vn 0.0000 0.7972 0.6037 -vn 0.0000 0.7071 -0.7071 -vn 0.4240 0.3427 -0.8383 -vn -0.9999 0.0135 -0.0099 -vn 0.4193 0.9079 0.0001 -vn -1.0000 0.0095 -0.0023 -vn 0.0001 -0.7972 -0.6037 -vn 0.0000 -0.6037 -0.7972 -vn -0.1722 0.3928 -0.9033 -vn 0.0000 -0.9929 -0.1193 -vn 0.9911 0.0000 0.1332 -vn 0.0000 -0.9478 0.3188 -vn 0.0000 -0.4448 0.8956 -vn -0.0000 -0.8814 -0.4724 -vn -0.9418 0.2820 0.1830 -vn -0.7726 0.5655 0.2886 -vn 0.0646 -0.2831 0.9569 -vn 0.0405 -0.5936 0.8037 -vn 0.5073 -0.3627 0.7818 -vn 0.5247 -0.1884 0.8302 -vn 0.4877 -0.5255 0.6971 -vn 0.3422 0.8174 0.4635 -vn 0.1337 0.9663 0.2198 -vn 0.5018 0.4301 0.7505 -vn 0.5344 0.1812 0.8256 -vn 1.0000 -0.0000 0.0037 -vn 1.0000 0.0000 0.0075 -vn 0.0674 0.0000 0.9977 -vn 0.9894 -0.1160 0.0873 -vn 0.9344 -0.2629 0.2404 -vn -0.9978 -0.0354 0.0555 -vn 0.9575 -0.1436 0.2500 -vn 0.9800 0.0000 0.1988 -vn 0.0000 -0.2272 0.9739 -vn 0.0002 0.6059 0.7955 -vn 0.0000 0.8184 0.5746 -vn -0.0002 0.3029 0.9530 -vn 0.0000 0.6605 0.7508 -vn 0.0000 -0.3632 0.9317 -vn 0.0000 -0.9906 0.1367 -vn 0.4395 -0.3449 0.8294 -vn 0.3228 -0.2420 0.9150 -vn 0.9719 -0.0333 0.2329 -vn 0.9603 0.0267 0.2778 -vn 0.4392 0.0417 0.8974 -vn 0.4198 -0.1075 0.9012 -vn -0.0197 -0.3607 0.9325 -vn -0.0257 -0.3607 0.9323 -vn 0.5470 -0.3017 0.7809 -vn 0.9801 -0.1117 0.1641 -vn 0.8724 -0.1036 0.4777 -vn -0.4184 -0.0204 0.9080 -vn 0.0385 -0.3613 0.9316 -vn 0.5470 -0.3018 0.7808 -vn 0.4198 -0.1076 0.9012 -vn 1.0000 0.0009 -0.0015 -vn 1.0000 0.0001 -0.0016 -vn 1.0000 0.0006 0.0012 -vn 0.0000 -0.4993 0.8664 -vn 0.0000 -0.2667 0.9638 -vn -0.0000 0.0459 0.9989 -vn 0.0000 -0.0351 0.9994 -vn 0.0006 -0.3409 0.9401 -vn 0.0003 -0.5061 0.8625 -vn 0.0003 -0.3136 0.9496 -vn -0.0000 -0.7783 0.6279 -vn -0.0001 -0.5968 0.8024 -vn 0.0000 0.9970 -0.0770 -vn 0.0000 0.8727 -0.4883 -vn -0.0001 0.9526 -0.3041 -vn -0.0000 0.5657 -0.8246 -vn 0.0000 0.6710 -0.7415 -vn 0.0000 0.9914 0.1311 -vn -0.0000 0.9993 -0.0385 -vn 0.0000 0.1546 -0.9880 -vn 0.0000 0.3091 -0.9510 -vn -0.0000 0.8635 0.5044 -vn -0.0000 0.9650 0.2623 -vn 0.0000 -0.1761 -0.9844 -vn 0.0000 -0.0880 -0.9961 -vn -0.0000 0.6016 0.7988 -vn 0.0000 0.7882 0.6154 -vn -0.0000 -0.5913 -0.8065 -vn 0.0000 -0.4311 -0.9023 -vn 0.0000 0.2927 0.9562 -vn -0.0000 0.4905 0.8714 -vn 0.0000 -0.8104 -0.5859 -vn 0.0000 0.2098 0.9777 -vn -0.0002 -0.2799 0.9600 -vn 0.9212 0.1912 -0.3390 -vn 0.9375 0.1183 -0.3271 -vn 0.9363 0.1191 -0.3303 -vn 0.5457 0.2840 -0.7884 -vn 0.4129 0.3969 -0.8198 -vn 0.3689 0.4766 -0.7979 -vn 0.9473 0.1523 -0.2819 -vn 0.5471 0.1521 -0.8231 -vn 0.4428 -0.7141 -0.5422 -vn 0.4578 -0.2885 -0.8409 -vn 0.6432 -0.3414 -0.6854 -vn 0.2347 -0.0372 -0.9713 -vn 0.3723 -0.3800 -0.8468 -vn 0.3937 -0.6141 -0.6841 -vn 0.3430 0.0002 -0.9393 -vn 0.3691 -0.8001 -0.4728 -vn 0.3715 0.2637 -0.8902 -vn 0.4024 0.2750 -0.8731 -vn 0.3595 0.1300 -0.9240 -vn 0.3758 -0.8080 -0.4538 -vn 0.3743 -0.7997 -0.4695 -vn 0.9910 0.0440 -0.1265 -vn 0.9212 0.1912 -0.3389 -vn 0.9376 0.1183 -0.3271 -vn 0.9999 -0.0132 -0.0001 -vn -0.5587 0.3131 -0.7680 -vn -0.1722 0.3928 -0.9034 -vn -0.9404 0.1281 -0.3149 -vn -0.9295 -0.1383 0.3419 -vn -0.9268 -0.1407 0.3483 -vn -0.3897 -0.3446 0.8541 -vn -0.3829 -0.3454 0.8568 -vn -0.9268 -0.1406 0.3483 -vn 0.2529 -0.3618 0.8973 -vn 0.1722 0.4024 -0.8991 -vn -0.0000 -0.6037 0.7972 -vn -0.4024 0.2750 -0.8731 -vn 0.9995 0.0314 -0.0020 -vn -0.1193 -0.7677 0.6296 -vn -0.0654 0.9680 0.2423 -vn 0.0690 -0.9541 -0.2914 -vn -1.0000 0.0019 0.0034 -vn -0.9363 0.3512 0.0000 -vn 0.0373 0.8327 0.5525 -vn 0.0000 0.1951 0.9808 -vn 0.0000 -0.9574 0.2887 -vn 0.0000 0.3827 0.9239 -vn 0.4482 -0.5058 0.7370 -vn 0.0004 -0.3409 0.9401 -vn -0.9304 0.1374 -0.3398 +vn 0.9978 -0.0661 -0.0000 +vn 0.9978 0.0661 -0.0000 +vn -0.9978 -0.0661 -0.0000 +vn 0.0661 -0.9978 -0.0000 +vn -0.0001 -0.8629 -0.5054 +vn -0.0000 -0.9675 -0.2527 +vn -0.0001 -0.5054 -0.8629 +vn -0.0000 0.2527 -0.9675 +vn -0.0000 0.5054 -0.8629 +vn -0.0000 -0.2527 -0.9675 +vn -0.0000 0.9675 -0.2527 +vn 0.0001 0.8629 -0.5054 +vn -1.0000 -0.0000 -0.0068 +vn -1.0000 -0.0000 -0.0028 +vn -0.0000 -0.3821 0.9241 +vn 0.3738 0.9275 -0.0000 +vn 0.0001 0.7210 -0.6930 +vn 0.7948 0.6069 -0.0002 +vn -0.6262 0.7797 -0.0001 +vn 0.7948 0.6069 0.0002 +vn -0.0000 -0.9849 0.1731 +vn -0.9987 -0.0000 0.0512 +vn -1.0000 0.0026 -0.0000 +vn 0.0662 0.9978 -0.0000 +vn 0.9715 -0.0000 -0.2370 +vt 0.665882 0.347767 +vt 0.666023 0.347766 +vt 0.666162 0.347974 +vt 0.668422 0.348903 +vt 0.668420 0.348450 +vt 0.668128 0.348707 +vt 0.670331 0.347891 +vt 0.670113 0.347891 +vt 0.670112 0.348138 +vt 0.648961 0.347035 +vt 0.648963 0.347711 +vt 0.650088 0.347182 +vt 0.670330 0.348139 +vt 0.670330 0.348216 +vt 0.671351 0.348220 +vt 0.671351 0.348142 +vt 0.655673 0.344315 +vt 0.655725 0.344372 +vt 0.655911 0.344201 +vt 0.649593 0.340884 +vt 0.649645 0.341960 +vt 0.649646 0.340955 +vt 0.656134 0.344371 +vt 0.649941 0.340885 +vt 0.655073 0.340475 +vt 0.655070 0.339797 +vt 0.654996 0.339724 +vt 0.671575 0.327451 +vt 0.671356 0.327477 +vt 0.671982 0.327480 +vt 0.644693 0.340192 +vt 0.644385 0.340134 +vt 0.644557 0.340283 +vt 0.644700 0.340269 +vt 0.647509 0.341099 +vt 0.649593 0.340718 +vt 0.646875 0.340713 +vt 0.646368 0.340876 +vt 0.650439 0.347369 +vt 0.650243 0.347332 +vt 0.648903 0.346602 +vt 0.648902 0.346797 +vt 0.650571 0.346464 +vt 0.653087 0.342196 +vt 0.653087 0.342119 +vt 0.652263 0.341965 +vt 0.653089 0.340724 +vt 0.649942 0.340719 +vt 0.652265 0.340960 +vt 0.652957 0.336625 +vt 0.652061 0.336628 +vt 0.652064 0.337317 +vt 0.653168 0.336809 +vt 0.656866 0.340895 +vt 0.655346 0.340806 +vt 0.653970 0.340890 +vt 0.671253 0.338233 +vt 0.671472 0.338233 +vt 0.671470 0.337557 +vt 0.652046 0.346806 +vt 0.665497 0.338599 +vt 0.665663 0.338599 +vt 0.665663 0.338404 +vt 0.647507 0.341802 +vt 0.653089 0.340802 +vt 0.669772 0.341914 +vt 0.669364 0.341701 +vt 0.670181 0.341704 +vt 0.650766 0.346427 +vt 0.652276 0.346675 +vt 0.652808 0.346599 +vt 0.652882 0.346653 +vt 0.666531 0.348446 +vt 0.666675 0.348446 +vt 0.666674 0.348692 +vt 0.671544 0.335436 +vt 0.671154 0.335438 +vt 0.671154 0.335634 +vt 0.671512 0.335403 +vt 0.671191 0.335404 +vt 0.653306 0.342119 +vt 0.653308 0.340802 +vt 0.653969 0.341610 +vt 0.653969 0.341314 +vt 0.657096 0.340687 +vt 0.657251 0.340835 +vt 0.657446 0.340872 +vt 0.666338 0.341178 +vt 0.666344 0.341136 +vt 0.666141 0.341132 +vt 0.671982 0.327709 +vt 0.671281 0.327706 +vt 0.671277 0.328466 +vt 0.671424 0.328610 +vt 0.671831 0.328612 +vt 0.671979 0.328470 +vt 0.645308 0.342022 +vt 0.646366 0.342024 +vt 0.645309 0.341798 +vt 0.654435 0.342121 +vt 0.654435 0.342199 +vt 0.654781 0.342199 +vt 0.671983 0.325746 +vt 0.671796 0.325132 +vt 0.671793 0.326094 +vt 0.671982 0.325897 +vt 0.672220 0.326096 +vt 0.671777 0.334214 +vt 0.671776 0.334827 +vt 0.672010 0.334827 +vt 0.653873 0.340803 +vt 0.653654 0.340803 +vt 0.655346 0.340729 +vt 0.655001 0.340728 +vt 0.655001 0.340805 +vt 0.653654 0.340725 +vt 0.653308 0.340725 +vt 0.671788 0.332239 +vt 0.671789 0.331098 +vt 0.671711 0.331172 +vt 0.652553 0.348753 +vt 0.652553 0.349106 +vt 0.652681 0.349106 +vt 0.672085 0.331172 +vt 0.672007 0.331098 +vt 0.672006 0.332240 +vt 0.656870 0.341615 +vt 0.668193 0.332067 +vt 0.669156 0.332072 +vt 0.669169 0.329174 +vt 0.671795 0.322170 +vt 0.671872 0.322170 +vt 0.671867 0.321028 +vt 0.672090 0.322169 +vt 0.672168 0.322168 +vt 0.672163 0.321101 +vt 0.668481 0.329171 +vt 0.668206 0.329389 +vt 0.666338 0.332059 +vt 0.666535 0.332060 +vt 0.666549 0.329162 +vt 0.652436 0.348631 +vt 0.652336 0.348753 +vt 0.671870 0.322396 +vt 0.671793 0.322471 +vt 0.671795 0.323538 +vt 0.670269 0.345604 +vt 0.670270 0.345453 +vt 0.670505 0.345454 +vt 0.672166 0.322470 +vt 0.672088 0.322396 +vt 0.672090 0.323538 +vt 0.645310 0.341095 +vt 0.667770 0.332065 +vt 0.666770 0.332061 +vt 0.666784 0.329163 +vt 0.671056 0.346443 +vt 0.670979 0.346517 +vt 0.670974 0.347585 +vt 0.670666 0.345804 +vt 0.670503 0.345803 +vt 0.670504 0.345605 +vt 0.671270 0.347586 +vt 0.671347 0.347586 +vt 0.671352 0.346519 +vt 0.667782 0.329387 +vt 0.667509 0.329166 +vt 0.666922 0.332062 +vt 0.666935 0.329164 +vt 0.671361 0.326336 +vt 0.671283 0.326410 +vt 0.671279 0.327477 +vt 0.667157 0.332063 +vt 0.667170 0.329165 +vt 0.657272 0.345497 +vt 0.657273 0.344680 +vt 0.657191 0.344600 +vt 0.671652 0.327452 +vt 0.671656 0.326411 +vt 0.651028 0.346127 +vt 0.650922 0.346278 +vt 0.655755 0.344598 +vt 0.655674 0.344677 +vt 0.655673 0.345494 +vt 0.645310 0.340874 +vt 0.654782 0.340805 +vt 0.653652 0.342120 +vt 0.653968 0.342037 +vt 0.653873 0.340726 +vt 0.654218 0.340804 +vt 0.654219 0.340726 +vt 0.654437 0.340804 +vt 0.654782 0.340727 +vt 0.672010 0.334979 +vt 0.671775 0.334978 +vt 0.671775 0.335176 +vt 0.672199 0.335177 +vt 0.672223 0.325134 +vt 0.653871 0.342120 +vt 0.655345 0.342200 +vt 0.655345 0.342122 +vt 0.655000 0.342122 +vt 0.653652 0.342197 +vt 0.656756 0.344189 +vt 0.656833 0.344189 +vt 0.656833 0.344045 +vt 0.671877 0.347120 +vt 0.671954 0.347119 +vt 0.671951 0.346443 +vt 0.671581 0.347121 +vt 0.671659 0.347121 +vt 0.671655 0.346445 +vt 0.656460 0.344190 +vt 0.656538 0.344190 +vt 0.656537 0.343971 +vt 0.671606 0.348023 +vt 0.671952 0.348024 +vt 0.671954 0.347348 +vt 0.667304 0.332303 +vt 0.667016 0.335199 +vt 0.666328 0.335196 +vt 0.671469 0.337246 +vt 0.671546 0.337245 +vt 0.671544 0.337101 +vt 0.671549 0.338232 +vt 0.671547 0.337557 +vt 0.667291 0.334981 +vt 0.669169 0.332311 +vt 0.669156 0.335209 +vt 0.668958 0.335208 +vt 0.652436 0.349228 +vt 0.652591 0.349228 +vt 0.672007 0.329730 +vt 0.672007 0.330872 +vt 0.672084 0.330872 +vt 0.669596 0.345601 +vt 0.669357 0.345600 +vt 0.669358 0.345449 +vt 0.671711 0.329804 +vt 0.671711 0.330872 +vt 0.671788 0.330872 +vt 0.667731 0.332305 +vt 0.667718 0.334983 +vt 0.668972 0.332310 +vt 0.668720 0.335207 +vt 0.672007 0.332466 +vt 0.672006 0.333607 +vt 0.672083 0.333608 +vt 0.669356 0.345798 +vt 0.669196 0.345797 +vt 0.671787 0.333607 +vt 0.671789 0.332465 +vt 0.671711 0.332540 +vt 0.667991 0.335204 +vt 0.668734 0.332309 +vt 0.668569 0.335206 +vt 0.654781 0.342122 +vt 0.656868 0.342041 +vt 0.672089 0.323764 +vt 0.672090 0.324906 +vt 0.672168 0.324906 +vt 0.668344 0.332307 +vt 0.668331 0.335205 +vt 0.668582 0.332308 +vt 0.656869 0.342187 +vt 0.655687 0.342123 +vt 0.653870 0.342198 +vt 0.654216 0.342198 +vt 0.671872 0.324906 +vt 0.671870 0.323765 +vt 0.671793 0.323839 +vt 0.654216 0.342121 +vt 0.671874 0.346444 +vt 0.644214 0.339986 +vt 0.644362 0.339846 +vt 0.644193 0.339756 +vt 0.644615 0.340046 +vt 0.644334 0.339545 +vt 0.644175 0.339559 +vt 0.661765 0.343274 +vt 0.661774 0.343476 +vt 0.661938 0.343468 +vt 0.644761 0.345897 +vt 0.644761 0.345737 +vt 0.644408 0.345736 +vt 0.661779 0.343575 +vt 0.661664 0.343724 +vt 0.661914 0.343724 +vt 0.666088 0.341451 +vt 0.652408 0.344048 +vt 0.653077 0.344280 +vt 0.652920 0.344378 +vt 0.644352 0.339741 +vt 0.665748 0.341793 +vt 0.665706 0.341738 +vt 0.663936 0.343063 +vt 0.644408 0.345896 +vt 0.644302 0.345896 +vt 0.644079 0.346130 +vt 0.644077 0.347117 +vt 0.645080 0.347119 +vt 0.645082 0.346132 +vt 0.667545 0.348453 +vt 0.667839 0.348708 +vt 0.667838 0.348452 +vt 0.671547 0.336174 +vt 0.671546 0.336029 +vt 0.671385 0.336030 +vt 0.645949 0.348760 +vt 0.645922 0.348760 +vt 0.645922 0.348928 +vt 0.645519 0.348898 +vt 0.645812 0.348899 +vt 0.645813 0.348759 +vt 0.645520 0.348758 +vt 0.645839 0.348927 +vt 0.645839 0.348759 +vt 0.665999 0.338618 +vt 0.666027 0.338619 +vt 0.666027 0.338335 +vt 0.671398 0.339640 +vt 0.671245 0.339741 +vt 0.671571 0.340011 +vt 0.671500 0.339488 +vt 0.671536 0.339308 +vt 0.671066 0.339776 +vt 0.669561 0.343988 +vt 0.669414 0.343844 +vt 0.670116 0.343846 +vt 0.669417 0.343083 +vt 0.670343 0.343087 +vt 0.670119 0.343086 +vt 0.670101 0.342715 +vt 0.670239 0.342384 +vt 0.670344 0.341862 +vt 0.670103 0.342052 +vt 0.669440 0.342050 +vt 0.669200 0.341858 +vt 0.669301 0.342381 +vt 0.669196 0.343083 +vt 0.669438 0.342713 +vt 0.669338 0.342202 +vt 0.669592 0.341949 +vt 0.670204 0.342205 +vt 0.670203 0.342563 +vt 0.669948 0.342816 +vt 0.669769 0.342851 +vt 0.669589 0.342815 +vt 0.669336 0.342560 +vt 0.669968 0.343989 +vt 0.669951 0.341950 +vt 0.665497 0.338404 +vt 0.665149 0.338488 +vt 0.665150 0.338600 +vt 0.664984 0.338600 +vt 0.665458 0.338243 +vt 0.665110 0.338327 +vt 0.670113 0.347813 +vt 0.669767 0.347812 +vt 0.671352 0.347895 +vt 0.671352 0.347817 +vt 0.670331 0.347814 +vt 0.669766 0.348137 +vt 0.669766 0.348214 +vt 0.670112 0.348215 +vt 0.644857 0.345897 +vt 0.666110 0.338571 +vt 0.666110 0.338335 +vt 0.666316 0.338619 +vt 0.666233 0.338571 +vt 0.666316 0.338647 +vt 0.646157 0.348929 +vt 0.646158 0.348622 +vt 0.671549 0.336766 +vt 0.671548 0.336570 +vt 0.671158 0.336572 +vt 0.671517 0.336801 +vt 0.671159 0.336768 +vt 0.668127 0.348451 +vt 0.666344 0.338619 +vt 0.666344 0.338363 +vt 0.666317 0.338336 +vt 0.666234 0.338336 +vt 0.646280 0.348929 +vt 0.646516 0.348930 +vt 0.646490 0.348762 +vt 0.646626 0.348903 +vt 0.646626 0.348763 +vt 0.646599 0.348763 +vt 0.646517 0.348762 +vt 0.646599 0.348931 +vt 0.646918 0.348904 +vt 0.646919 0.348764 +vt 0.665884 0.348220 +vt 0.666228 0.348025 +vt 0.666399 0.348073 +vt 0.667547 0.348906 +vt 0.666529 0.348691 +vt 0.666756 0.348819 +vt 0.669247 0.347752 +vt 0.669249 0.348205 +vt 0.668969 0.347962 +vt 0.668904 0.348013 +vt 0.668734 0.348063 +vt 0.666446 0.348817 +vt 0.669107 0.347753 +vt 0.651009 0.348764 +vt 0.651047 0.348947 +vt 0.651082 0.348764 +vt 0.650945 0.349104 +vt 0.650893 0.349053 +vt 0.651150 0.348791 +vt 0.651202 0.348842 +vt 0.651013 0.349131 +vt 0.651231 0.348909 +vt 0.651231 0.348982 +vt 0.651086 0.349131 +vt 0.651204 0.349050 +vt 0.651153 0.349102 +vt 0.650942 0.348793 +vt 0.650864 0.348986 +vt 0.650891 0.348845 +vt 0.650864 0.348913 +vt 0.672001 0.336533 +vt 0.671992 0.338283 +vt 0.672197 0.338284 +vt 0.672049 0.338339 +vt 0.672140 0.338340 +vt 0.665496 0.328592 +vt 0.665496 0.328721 +vt 0.665700 0.328722 +vt 0.649982 0.347032 +vt 0.655858 0.344144 +vt 0.654727 0.340476 +vt 0.654996 0.339627 +vt 0.671545 0.335632 +vt 0.672221 0.325898 +vt 0.672200 0.334214 +vt 0.671711 0.332239 +vt 0.652681 0.348753 +vt 0.672084 0.332240 +vt 0.656871 0.341319 +vt 0.671790 0.321103 +vt 0.672085 0.321027 +vt 0.666351 0.329161 +vt 0.652591 0.348631 +vt 0.671872 0.323538 +vt 0.672168 0.323538 +vt 0.671051 0.347585 +vt 0.671275 0.346444 +vt 0.657189 0.345576 +vt 0.671579 0.326337 +vt 0.655754 0.345574 +vt 0.654437 0.340727 +vt 0.672221 0.325747 +vt 0.654999 0.342199 +vt 0.653306 0.342197 +vt 0.656755 0.343970 +vt 0.671578 0.346445 +vt 0.656460 0.344046 +vt 0.671609 0.347347 +vt 0.666342 0.332298 +vt 0.671466 0.337028 +vt 0.646872 0.342185 +vt 0.652336 0.349106 +vt 0.672085 0.329805 +vt 0.669596 0.345450 +vt 0.671789 0.329730 +vt 0.672085 0.332540 +vt 0.671710 0.333607 +vt 0.672166 0.323838 +vt 0.655687 0.342193 +vt 0.671795 0.324906 +vt 0.652075 0.340487 +vt 0.653379 0.340482 +vt 0.652073 0.339798 +vt 0.661929 0.343266 +vt 0.666317 0.341361 +vt 0.663978 0.343119 +vt 0.671386 0.336174 +vt 0.665999 0.338362 +vt 0.664984 0.338489 +vt 0.669767 0.347890 +vt 0.666027 0.338646 +vt 0.671197 0.336802 +vt 0.646282 0.348623 +vt 0.672205 0.336534 +vt 0.665701 0.328592 +vt 0.645130 0.340230 +vt 0.645115 0.340070 +vt 0.644939 0.340169 +vt 0.644925 0.340018 +vt 0.653589 0.346722 +vt 0.653589 0.346671 +vt 0.654138 0.346662 +vt 0.665807 0.340688 +vt 0.656870 0.339398 +vt 0.655850 0.339403 +vt 0.655851 0.339547 +vt 0.669550 0.348136 +vt 0.669549 0.347891 +vt 0.669475 0.347964 +vt 0.654722 0.339409 +vt 0.653268 0.346667 +vt 0.645840 0.346789 +vt 0.648555 0.346796 +vt 0.648555 0.346685 +vt 0.653368 0.337690 +vt 0.653364 0.336650 +vt 0.645841 0.346452 +vt 0.655971 0.340807 +vt 0.656866 0.340731 +vt 0.655971 0.340730 +vt 0.671250 0.337251 +vt 0.671173 0.337252 +vt 0.671174 0.337355 +vt 0.671175 0.337452 +vt 0.671176 0.337555 +vt 0.671254 0.337557 +vt 0.670598 0.339307 +vt 0.670569 0.339021 +vt 0.670567 0.340009 +vt 0.668033 0.348210 +vt 0.668032 0.348119 +vt 0.671272 0.335785 +vt 0.654284 0.346628 +vt 0.654463 0.346686 +vt 0.654139 0.346714 +vt 0.653167 0.344749 +vt 0.668714 0.344925 +vt 0.673954 0.344135 +vt 0.665656 0.340670 +vt 0.665851 0.340483 +vt 0.665756 0.340431 +vt 0.664125 0.338873 +vt 0.663934 0.339073 +vt 0.665576 0.340641 +vt 0.654003 0.344111 +vt 0.654328 0.344094 +vt 0.654215 0.344297 +vt 0.669114 0.339976 +vt 0.644900 0.339700 +vt 0.651779 0.345198 +vt 0.651935 0.345050 +vt 0.652048 0.344354 +vt 0.651583 0.345233 +vt 0.662656 0.340850 +vt 0.659345 0.340602 +vt 0.659296 0.340678 +vt 0.674047 0.345242 +vt 0.653814 0.345328 +vt 0.653827 0.348209 +vt 0.646508 0.344057 +vt 0.649684 0.344093 +vt 0.649669 0.344043 +vt 0.669763 0.344216 +vt 0.669762 0.344374 +vt 0.669531 0.344215 +vt 0.665873 0.340511 +vt 0.669360 0.345109 +vt 0.665821 0.341739 +vt 0.654433 0.338957 +vt 0.656867 0.338944 +vt 0.656669 0.338713 +vt 0.656667 0.338361 +vt 0.654429 0.338141 +vt 0.656864 0.338360 +vt 0.656863 0.338096 +vt 0.653400 0.344098 +vt 0.653390 0.344296 +vt 0.652050 0.344171 +vt 0.649802 0.344145 +vt 0.656863 0.337912 +vt 0.654402 0.338030 +vt 0.656866 0.338712 +vt 0.655067 0.339300 +vt 0.655286 0.339299 +vt 0.654407 0.339067 +vt 0.655849 0.339296 +vt 0.656869 0.339171 +vt 0.655631 0.339297 +vt 0.652632 0.338147 +vt 0.652938 0.338146 +vt 0.652967 0.338035 +vt 0.662503 0.338903 +vt 0.662477 0.339733 +vt 0.662538 0.339781 +vt 0.670633 0.340349 +vt 0.670698 0.344205 +vt 0.674042 0.344163 +vt 0.655278 0.336619 +vt 0.655279 0.337686 +vt 0.655624 0.337686 +vt 0.662902 0.338878 +vt 0.662914 0.339780 +vt 0.662981 0.339739 +vt 0.645309 0.346450 +vt 0.645308 0.346788 +vt 0.666773 0.346076 +vt 0.666773 0.346282 +vt 0.668969 0.346283 +vt 0.652633 0.338379 +vt 0.652788 0.338378 +vt 0.642744 0.343779 +vt 0.670357 0.344943 +vt 0.661163 0.348102 +vt 0.661163 0.347939 +vt 0.655926 0.347949 +vt 0.674018 0.338472 +vt 0.669132 0.338416 +vt 0.661578 0.348101 +vt 0.661577 0.347938 +vt 0.661362 0.347939 +vt 0.661362 0.348102 +vt 0.662153 0.348100 +vt 0.662310 0.347937 +vt 0.661761 0.347938 +vt 0.670672 0.344629 +vt 0.670508 0.344764 +vt 0.670115 0.344376 +vt 0.669789 0.344760 +vt 0.652789 0.338731 +vt 0.652941 0.338962 +vt 0.670084 0.344762 +vt 0.670082 0.345113 +vt 0.670506 0.345115 +vt 0.670670 0.345116 +vt 0.652372 0.337694 +vt 0.670348 0.344219 +vt 0.655279 0.337793 +vt 0.656863 0.337685 +vt 0.655843 0.337686 +vt 0.655843 0.337793 +vt 0.653587 0.337690 +vt 0.653932 0.337689 +vt 0.653928 0.336621 +vt 0.654151 0.337688 +vt 0.654496 0.337687 +vt 0.654493 0.336620 +vt 0.652049 0.345739 +vt 0.651029 0.345736 +vt 0.662560 0.338873 +vt 0.666774 0.345670 +vt 0.668969 0.346078 +vt 0.666773 0.347043 +vt 0.668969 0.347044 +vt 0.670627 0.345147 +vt 0.673942 0.345184 +vt 0.646451 0.344107 +vt 0.661762 0.348101 +vt 0.670079 0.345801 +vt 0.669784 0.345800 +vt 0.669787 0.345111 +vt 0.670116 0.344218 +vt 0.654713 0.336619 +vt 0.654715 0.337686 +vt 0.655060 0.337686 +vt 0.655624 0.337793 +vt 0.653933 0.337796 +vt 0.653587 0.337797 +vt 0.653369 0.337798 +vt 0.654151 0.337795 +vt 0.655060 0.337793 +vt 0.654715 0.337794 +vt 0.656181 0.344310 +vt 0.655958 0.344139 +vt 0.652635 0.338964 +vt 0.652378 0.339418 +vt 0.652971 0.339073 +vt 0.655170 0.347691 +vt 0.655169 0.347353 +vt 0.653593 0.339306 +vt 0.653939 0.339305 +vt 0.653375 0.339415 +vt 0.653374 0.339307 +vt 0.655631 0.339404 +vt 0.655286 0.339406 +vt 0.655287 0.339550 +vt 0.655701 0.347689 +vt 0.668970 0.345671 +vt 0.668970 0.345465 +vt 0.652634 0.338732 +vt 0.668641 0.344399 +vt 0.670385 0.344396 +vt 0.671176 0.338233 +vt 0.671248 0.337030 +vt 0.645543 0.340191 +vt 0.650254 0.339752 +vt 0.650742 0.339545 +vt 0.669187 0.349359 +vt 0.669193 0.350916 +vt 0.655068 0.339554 +vt 0.655068 0.339408 +vt 0.645344 0.340210 +vt 0.645329 0.340050 +vt 0.645528 0.340032 +vt 0.653939 0.339413 +vt 0.669362 0.344758 +vt 0.669202 0.344621 +vt 0.654722 0.339302 +vt 0.669200 0.345108 +vt 0.653593 0.339414 +vt 0.653597 0.340482 +vt 0.653943 0.340480 +vt 0.654158 0.339412 +vt 0.654162 0.340479 +vt 0.654508 0.340478 +vt 0.654157 0.339304 +vt 0.654504 0.339410 +vt 0.654503 0.339303 +vt 0.666774 0.345464 +vt 0.668970 0.344705 +vt 0.659341 0.339758 +vt 0.659342 0.339807 +vt 0.644946 0.340247 +vt 0.652042 0.344901 +vt 0.645109 0.340001 +vt 0.665779 0.341683 +vt 0.661666 0.343279 +vt 0.661676 0.343481 +vt 0.653725 0.344114 +vt 0.653832 0.344119 +vt 0.653822 0.344318 +vt 0.654014 0.344308 +vt 0.654333 0.346558 +vt 0.655311 0.344043 +vt 0.655447 0.346648 +vt 0.661438 0.342326 +vt 0.661436 0.342143 +vt 0.657096 0.342143 +vt 0.661436 0.342509 +vt 0.657096 0.342326 +vt 0.661430 0.342692 +vt 0.657096 0.342509 +vt 0.661427 0.342875 +vt 0.657096 0.342692 +vt 0.666250 0.348901 +vt 0.666250 0.348816 +vt 0.657096 0.342875 +vt 0.657096 0.343058 +vt 0.661427 0.343058 +vt 0.657096 0.343240 +vt 0.661427 0.343240 +vt 0.666203 0.348900 +vt 0.666204 0.348816 +vt 0.665882 0.348899 +vt 0.665883 0.348814 +vt 0.661427 0.343423 +vt 0.657096 0.343423 +vt 0.657096 0.343606 +vt 0.661427 0.343606 +vt 0.657096 0.343789 +vt 0.661427 0.343789 +vt 0.657096 0.343972 +vt 0.661427 0.343972 +vt 0.657096 0.344155 +vt 0.661427 0.344155 +vt 0.657096 0.344338 +vt 0.661427 0.344338 +vt 0.657096 0.341411 +vt 0.657096 0.341594 +vt 0.661427 0.341594 +vt 0.657096 0.341777 +vt 0.661430 0.341777 +vt 0.649012 0.349171 +vt 0.649012 0.349086 +vt 0.648961 0.349086 +vt 0.661433 0.341960 +vt 0.657096 0.341960 +vt 0.649208 0.349086 +vt 0.649714 0.349170 +vt 0.649518 0.349086 +vt 0.649435 0.348914 +vt 0.649290 0.348914 +vt 0.649435 0.348644 +vt 0.649290 0.348644 +vt 0.667918 0.348211 +vt 0.667216 0.348214 +vt 0.667216 0.348127 +vt 0.667101 0.348214 +vt 0.667100 0.348123 +vt 0.656458 0.342453 +vt 0.656457 0.342704 +vt 0.656541 0.342453 +vt 0.656833 0.342705 +vt 0.656833 0.342454 +vt 0.656832 0.342788 +vt 0.655958 0.342785 +vt 0.655957 0.342962 +vt 0.656832 0.342965 +vt 0.656041 0.343742 +vt 0.656743 0.343745 +vt 0.656829 0.343669 +vt 0.655955 0.343666 +vt 0.653267 0.346719 +vt 0.670795 0.338787 +vt 0.670736 0.338975 +vt 0.671068 0.338839 +vt 0.671350 0.338788 +vt 0.671399 0.338977 +vt 0.671573 0.339023 +vt 0.670633 0.339486 +vt 0.670735 0.339638 +vt 0.670887 0.339740 +vt 0.671500 0.339129 +vt 0.671247 0.338875 +vt 0.670888 0.338874 +vt 0.670634 0.339127 +vt 0.671253 0.337451 +vt 0.656541 0.342427 +vt 0.656458 0.342426 +vt 0.671274 0.336420 +vt 0.671548 0.336419 +vt 0.666952 0.348820 +vt 0.666952 0.348904 +vt 0.666998 0.348905 +vt 0.667319 0.348906 +vt 0.666998 0.348820 +vt 0.649765 0.349170 +vt 0.649765 0.349086 +vt 0.649714 0.349086 +vt 0.656334 0.342703 +vt 0.655958 0.342702 +vt 0.667918 0.348124 +vt 0.656252 0.342426 +vt 0.656251 0.342452 +vt 0.656334 0.342453 +vt 0.654496 0.337794 +vt 0.651103 0.348667 +vt 0.651206 0.348710 +vt 0.650889 0.349185 +vt 0.651285 0.348789 +vt 0.651328 0.348892 +vt 0.650992 0.349228 +vt 0.651328 0.349003 +vt 0.651285 0.349106 +vt 0.651103 0.349228 +vt 0.651206 0.349185 +vt 0.650767 0.348892 +vt 0.650889 0.348710 +vt 0.650767 0.349003 +vt 0.650810 0.349106 +vt 0.650992 0.348667 +vt 0.650810 0.348789 +vt 0.663495 0.328582 +vt 0.663495 0.328711 +vt 0.663575 0.328712 +vt 0.663666 0.328712 +vt 0.663667 0.328583 +vt 0.663575 0.328583 +vt 0.663746 0.328583 +vt 0.663746 0.328713 +vt 0.661745 0.328574 +vt 0.661745 0.328703 +vt 0.656871 0.339542 +vt 0.669475 0.348061 +vt 0.671252 0.337354 +vt 0.671545 0.335784 +vt 0.674011 0.340319 +vt 0.655624 0.336619 +vt 0.662967 0.338908 +vt 0.656433 0.348111 +vt 0.653583 0.336623 +vt 0.654148 0.336621 +vt 0.655059 0.336619 +vt 0.655632 0.339548 +vt 0.655699 0.347352 +vt 0.659343 0.339981 +vt 0.671171 0.337105 +vt 0.674072 0.350895 +vt 0.666774 0.344703 +vt 0.653715 0.344312 +vt 0.659330 0.338958 +vt 0.661427 0.341411 +vt 0.648961 0.349171 +vt 0.667319 0.348822 +vt 0.656334 0.342426 +vt 0.655959 0.342451 +s 0 +f 1789/1551/866 1790/1552/866 1791/1553/866 +f 1792/1554/867 1793/1555/867 1794/1556/867 +f 1795/1557/868 1796/1558/868 1797/1559/868 +f 1798/1560/868 1799/1561/868 1800/1562/868 +f 1801/1563/869 1802/1564/869 1803/1565/869 +f 1795/1557/870 1804/1563/870 1805/1566/870 +f 1806/1567/871 1807/1568/871 1808/1569/871 +f 1809/1570/872 1810/1571/872 1811/1572/872 +f 1812/1569/873 1813/1568/873 1814/1573/873 +f 1809/1570/872 1811/1572/872 1815/1574/872 +f 1816/1575/868 1817/1576/868 1818/1577/868 +f 1819/1578/874 1820/1579/874 1821/1580/874 +f 1822/1581/875 1823/1582/875 1824/1583/875 +f 1824/1583/875 1825/1584/875 1822/1581/875 +f 1826/1585/872 1809/1570/872 1827/1586/872 +f 1828/1587/872 1829/1588/872 1826/1585/872 +f 1799/1561/868 1830/1589/868 1831/1590/868 +f 1832/1591/866 1833/1592/866 1834/1593/866 +f 1835/1594/872 1836/1595/872 1837/1596/872 +f 1838/1597/872 1839/1598/872 1840/1599/872 +f 1828/1587/872 1826/1585/872 1827/1586/872 +f 1841/1600/866 1842/1601/866 1843/1602/866 +f 1843/1602/866 1844/1603/866 1841/1600/866 +f 1845/1604/872 1846/1605/872 1847/1606/872 +f 1848/1607/868 1849/1608/868 1850/1609/868 +f 1833/1592/866 1851/1610/866 1834/1593/866 +f 1852/1611/875 1853/1612/875 1854/1613/875 +f 1839/1598/872 1815/1574/872 1840/1599/872 +f 1811/1572/872 1840/1599/872 1815/1574/872 +f 1826/1585/872 1855/1614/872 1809/1570/872 +f 1840/1599/872 1856/1615/872 1838/1597/872 +f 1857/1616/875 1858/1617/875 1859/1618/875 +f 1860/1619/866 1834/1593/866 1851/1610/866 +f 1861/1620/866 1862/1621/866 1863/1622/866 +f 1864/1623/875 1865/1624/875 1866/1625/875 +f 1867/1626/876 1868/1627/876 1869/1628/876 +f 1870/1629/876 1871/1630/876 1868/1627/876 +f 1840/1599/872 1837/1596/872 1836/1595/872 +f 1872/1631/872 1873/1632/872 1856/1615/872 +f 1874/1633/872 1875/1634/872 1873/1632/872 +f 1876/1635/868 1877/1636/868 1878/1637/868 +f 1879/1638/867 1880/1639/867 1881/1640/867 +f 1882/1641/867 1883/1642/867 1884/1643/867 +f 1885/1644/867 1886/1645/867 1887/1646/867 +f 1888/1647/872 1889/1648/872 1890/1649/872 +f 1891/1650/872 1892/1651/872 1893/1652/872 +f 1894/1653/867 1895/1654/867 1896/1655/867 +f 1897/1656/867 1896/1655/867 1898/1657/867 +f 1899/1658/867 1900/1659/867 1901/1660/867 +f 1902/1661/872 1903/1662/872 1847/1606/872 +f 1904/1663/872 1905/1664/872 1906/1665/872 +f 1907/1666/872 1908/1667/872 1873/1632/872 +f 1909/1668/867 1910/1669/867 1911/1670/867 +f 1912/1671/877 1913/1672/877 1914/1673/877 +f 1915/1674/875 1916/1675/875 1917/1676/875 +f 1875/1634/872 1874/1633/872 1918/1677/872 +f 1919/1678/878 1920/1679/878 1921/1680/878 +f 1922/1681/867 1923/1682/867 1924/1683/867 +f 1925/1684/875 1926/1685/875 1927/1686/875 +f 1928/1687/873 1929/1688/873 1919/1678/873 +f 1930/1689/879 1931/1690/879 1932/1691/879 +f 1933/1692/868 1934/1693/868 1935/1671/868 +f 1936/1694/867 1937/1695/867 1938/1696/867 +f 1939/1697/867 1940/1698/867 1941/1699/867 +f 1942/1700/875 1943/1701/875 1944/1702/875 +f 1829/1588/872 1945/1703/872 1826/1585/872 +f 1946/1704/880 1947/1678/880 1948/1688/880 +f 1949/1690/880 1950/1705/880 1951/1706/880 +f 1952/1707/867 1953/1708/867 1954/1709/867 +f 1955/1710/867 1956/1711/867 1957/1712/867 +f 1958/1713/875 1959/1714/875 1960/1715/875 +f 1957/1712/867 1941/1699/867 1955/1710/867 +f 1961/1716/881 1962/1717/881 1963/1704/881 +f 1964/1705/879 1965/1718/879 1966/1719/879 +f 1967/1720/867 1968/1721/867 1969/1722/867 +f 1970/1723/879 1963/1704/879 1962/1717/879 +f 1971/1718/869 1972/1723/869 1973/1724/869 +f 1974/1725/882 1975/1726/882 1976/1727/882 +f 1977/1578/875 1978/1728/875 1979/1729/875 +f 1980/1730/866 1981/1731/866 1851/1610/866 +f 1982/1732/883 1983/1733/883 1984/1734/883 +f 1829/1588/872 1985/1735/872 1945/1703/872 +f 1906/1665/872 1986/1736/872 1847/1606/872 +f 1873/1632/872 1875/1634/872 1847/1606/872 +f 1872/1631/872 1987/1737/872 1988/1738/872 +f 1989/1739/872 1902/1661/872 1847/1606/872 +f 1847/1606/872 1990/1740/872 1991/1741/872 +f 1992/1742/872 1990/1740/872 1847/1606/872 +f 1992/1742/872 1986/1736/872 1993/1743/872 +f 1994/1744/867 1995/1745/867 1996/1746/867 +f 1901/1660/867 1994/1744/867 1997/1747/867 +f 1998/1748/867 1895/1654/867 1894/1653/867 +f 1987/1737/872 1999/1749/872 1988/1738/872 +f 2000/1750/872 2001/1751/872 2002/1752/872 +f 2003/1753/872 1987/1737/872 1872/1631/872 +f 2004/1754/867 2005/1755/867 2006/1756/867 +f 2007/1757/867 2008/1758/867 2009/1759/867 +f 2010/1760/875 2011/1761/875 2012/1762/875 +f 2013/1763/875 2014/1764/875 2015/1765/875 +f 2016/1766/868 2017/1767/868 2018/1768/868 +f 2019/1769/879 2020/1770/879 2021/1771/879 +f 2022/1772/867 2023/1773/867 2024/1774/867 +f 2025/1608/867 2026/1775/867 2027/1776/867 +f 1835/1594/872 1810/1571/872 1889/1648/872 +f 2028/1777/881 2020/1770/881 2019/1769/881 +f 2029/1778/866 2030/1779/866 2031/1780/866 +f 2032/1781/866 2033/1782/866 2034/1672/866 +f 2035/1783/867 2036/1784/867 2037/1785/867 +f 1855/1614/872 1889/1648/872 1810/1571/872 +f 2038/1786/867 2039/1787/867 2040/1788/867 +f 2041/1789/875 2042/1790/875 2043/1791/875 +f 1890/1649/872 1889/1648/872 1855/1614/872 +f 2044/1792/880 2045/1793/880 2046/1777/880 +f 2047/1794/880 2048/1780/880 2049/1795/880 +f 2050/1796/867 2051/1797/867 2052/1798/867 +f 2053/1799/867 2054/1800/867 2039/1787/867 +f 2055/1801/875 2056/1802/875 2057/1803/875 +f 2040/1788/867 2039/1787/867 2054/1800/867 +f 2058/1804/866 2059/1793/866 2060/1792/866 +f 2061/1805/878 2062/1795/878 2063/1806/878 +f 1988/1738/872 2064/1807/872 2002/1752/872 +f 2065/1808/872 1988/1738/872 2001/1751/872 +f 2066/1809/867 2067/1810/867 2068/1811/867 +f 2069/1812/866 2070/1813/866 2058/1804/866 +f 2071/1814/869 2072/1806/869 2073/1813/869 +f 2074/1815/872 2065/1808/872 2075/1816/872 +f 2076/1817/872 2077/1818/872 1988/1738/872 +f 2078/1819/875 2079/1820/875 2080/1821/875 +f 2081/1822/872 1988/1738/872 2077/1818/872 +f 2082/1761/868 2083/1757/868 2084/1823/868 +f 1891/1650/872 2064/1807/872 1988/1738/872 +f 2085/1824/875 2086/1825/875 2087/1826/875 +f 1823/1582/875 2088/1827/875 2086/1825/875 +f 1823/1582/875 1822/1581/875 2088/1827/875 +f 2089/1828/866 2090/1829/866 2091/1826/866 +f 2092/1830/868 2093/1831/868 2094/1832/868 +f 2095/1833/875 2096/1834/875 2097/1835/875 +f 2098/1831/875 2099/1836/875 2100/1832/875 +f 2101/1837/875 2102/1838/875 2100/1832/875 +f 1879/1638/867 1881/1640/867 2103/1839/867 +f 2104/1840/866 2105/1841/866 2106/1842/866 +f 2086/1825/875 2107/1843/875 2087/1826/875 +f 2108/1844/876 2109/1845/876 2110/1846/876 +f 2111/1847/875 2112/1848/875 2113/1849/875 +f 2114/1850/875 2115/1851/875 2116/1852/875 +f 2117/1853/867 2118/1854/867 2119/1855/867 +f 2120/1856/876 2121/1857/876 2122/1858/876 +f 2123/1859/868 2124/1860/868 2125/1861/868 +f 2126/1862/876 2127/1863/876 2128/1864/876 +f 2128/1864/876 2129/1865/876 2126/1862/876 +f 2130/1863/866 2131/1866/866 2132/1867/866 +f 2133/1868/866 2134/1869/866 2135/1870/866 +f 2136/1860/876 2137/1867/876 2138/1866/876 +f 2106/1842/866 1862/1621/866 1861/1620/866 +f 1837/1596/872 1810/1571/872 1835/1594/872 +f 2139/1871/867 2140/1872/867 2141/1873/867 +f 2142/1874/867 2139/1871/867 2141/1873/867 +f 2143/1875/867 2142/1874/867 2141/1873/867 +f 2104/1840/866 2106/1842/866 1861/1620/866 +f 2140/1872/867 2144/1876/867 2141/1873/867 +f 2145/1877/875 2146/1878/875 2147/1879/875 +f 2147/1879/875 2146/1878/875 2148/1880/875 +f 2149/1881/875 2150/1882/875 2151/1883/875 +f 2152/1884/875 2153/1885/875 2149/1881/875 +f 1859/1618/875 2153/1885/875 2154/1886/875 +f 2155/1887/875 2156/1888/875 1858/1617/875 +f 2157/1889/875 2158/1890/875 2156/1888/875 +f 2159/1891/875 2148/1880/875 2158/1890/875 +f 2160/1892/875 2157/1889/875 2156/1888/875 +f 2155/1887/875 2160/1892/875 2156/1888/875 +f 1857/1616/875 2161/1893/875 1858/1617/875 +f 2162/1894/875 2154/1886/875 2153/1885/875 +f 2152/1884/875 2162/1894/875 2153/1885/875 +f 2163/1895/875 2152/1884/875 2149/1881/875 +f 2164/1896/875 2151/1883/875 2150/1882/875 +f 2165/1897/875 2164/1896/875 2150/1882/875 +f 2165/1897/875 2150/1882/875 2148/1880/875 +f 2159/1891/875 2166/1898/875 2148/1880/875 +f 2157/1889/875 2167/1899/875 2158/1890/875 +f 2168/1900/875 2145/1877/875 2147/1879/875 +f 2150/1882/875 2147/1879/875 2148/1880/875 +f 2163/1895/875 2149/1881/875 2151/1883/875 +f 2169/1901/875 1859/1618/875 2154/1886/875 +f 2161/1893/875 2155/1887/875 1858/1617/875 +f 2167/1899/875 2159/1891/875 2158/1890/875 +f 2166/1898/875 2165/1897/875 2148/1880/875 +f 2169/1901/875 1857/1616/875 1859/1618/875 +f 2170/1902/866 2171/1903/866 2172/1904/866 +f 1855/1614/872 1810/1571/872 1809/1570/872 +f 2173/1905/867 2174/1904/867 2175/1903/867 +f 2176/1906/884 2177/1907/884 2178/1903/884 +f 2179/1558/872 2180/1908/872 2181/1909/872 +f 2182/1910/872 2183/1911/872 2184/1912/872 +f 2185/1913/876 2186/1914/876 2187/1915/876 +f 2188/1913/868 1797/1559/868 1796/1558/868 +f 2116/1852/875 2189/1916/875 2095/1833/875 +f 2111/1847/875 2113/1849/875 2116/1852/875 +f 2190/1869/867 2191/1917/867 2192/1918/867 +f 2190/1869/867 2193/1919/867 2194/1920/867 +f 2195/1921/872 2196/1919/872 2197/1869/872 +f 2198/1922/868 2199/1923/868 2123/1859/868 +f 2200/1924/876 2201/1925/876 2202/1926/876 +f 2203/1927/876 2200/1924/876 2204/1928/876 +f 1794/1556/867 1793/1555/867 2205/1929/867 +f 2206/1930/868 2207/1931/868 2208/1932/868 +f 2193/1919/867 2209/1932/867 2210/1933/867 +f 2211/1934/866 2212/1935/866 2213/1936/866 +f 2214/1937/868 2215/1938/868 2216/1939/868 +f 2217/1940/876 2218/1935/876 2219/1941/876 +f 2220/1940/866 2213/1936/866 2212/1935/866 +f 2221/1937/876 2222/1942/876 2223/1938/876 +f 2224/1943/876 2223/1938/876 2222/1942/876 +f 2225/1944/866 2226/1945/866 2227/1946/866 +f 2225/1944/866 1791/1553/866 2226/1945/866 +f 1794/1556/867 2118/1854/867 2228/1947/867 +f 2118/1854/867 2117/1853/867 2228/1947/867 +f 2229/1948/875 1866/1625/875 2230/1949/875 +f 2231/1950/868 2232/1951/868 2233/1952/868 +f 2234/1953/868 2233/1952/868 2232/1951/868 +f 2235/1954/868 2234/1953/868 2232/1951/868 +f 1792/1554/867 1794/1556/867 2228/1947/867 +f 2236/1955/875 2229/1948/875 2230/1949/875 +f 2237/1956/868 2231/1950/868 2233/1952/868 +f 2225/1944/866 1789/1551/866 1791/1553/866 +f 2229/1948/875 1864/1623/875 1866/1625/875 +f 2238/1957/875 2239/1958/875 2240/1959/875 +f 2241/1960/875 2239/1958/875 2242/1961/875 +f 2240/1959/875 2239/1958/875 2243/1962/875 +f 2243/1962/875 2239/1958/875 2244/1963/875 +f 2245/1964/875 2239/1958/875 2241/1960/875 +f 2244/1963/875 2239/1958/875 2246/1965/875 +f 2246/1965/875 2239/1958/875 2247/1966/875 +f 2248/1967/875 2239/1958/875 2245/1964/875 +f 2247/1966/875 2239/1958/875 2249/1968/875 +f 2249/1968/875 2239/1958/875 2250/1969/875 +f 2250/1969/875 2239/1958/875 2248/1967/875 +f 2251/1970/875 2239/1958/875 2238/1957/875 +f 2242/1961/875 2239/1958/875 2252/1971/875 +f 2253/1972/875 2239/1958/875 2251/1970/875 +f 2252/1971/875 2239/1958/875 2254/1973/875 +f 2254/1973/875 2239/1958/875 2253/1972/875 +f 2255/1974/868 2256/1975/868 2257/1976/868 +f 2258/1977/868 2259/1978/868 2257/1976/868 +f 2260/1979/875 2261/1980/875 2262/1981/875 +f 1804/1563/868 1795/1557/868 1797/1559/868 +f 2263/1982/868 1798/1560/868 1800/1562/868 +f 2264/1566/869 1801/1563/869 1803/1565/869 +f 2265/1910/870 1795/1557/870 1805/1566/870 +f 2266/1983/871 1806/1567/871 1808/1569/871 +f 2267/1984/868 1816/1575/868 1818/1577/868 +f 1818/1577/868 2268/1985/868 2267/1984/868 +f 1800/1562/868 1799/1561/868 1831/1590/868 +f 2269/1902/875 1852/1611/875 1854/1613/875 +f 1981/1731/866 1860/1619/866 1851/1610/866 +f 2270/1986/876 1867/1626/876 1869/1628/876 +f 1867/1626/876 1870/1629/876 1868/1627/876 +f 1856/1615/872 1840/1599/872 1836/1595/872 +f 1836/1595/872 1872/1631/872 1856/1615/872 +f 1872/1631/872 1874/1633/872 1873/1632/872 +f 1887/1646/867 1882/1641/867 1884/1643/867 +f 1884/1643/867 1885/1644/867 1887/1646/867 +f 2064/1807/872 1891/1650/872 1893/1652/872 +f 1897/1656/867 1894/1653/867 1896/1655/867 +f 2271/1987/867 1897/1656/867 1898/1657/867 +f 2272/1988/867 1899/1658/867 1901/1660/867 +f 1846/1605/872 1904/1663/872 1906/1665/872 +f 1903/1662/872 1907/1666/872 1873/1632/872 +f 2273/1989/867 1909/1668/867 1911/1670/867 +f 2274/1990/877 1912/1671/877 1914/1673/877 +f 2275/1991/875 1915/1674/875 1917/1676/875 +f 2276/1992/872 1875/1634/872 1918/1677/872 +f 1928/1687/878 1919/1678/878 1921/1680/878 +f 2277/1993/867 1922/1681/867 1924/1683/867 +f 2278/1994/875 1925/1684/875 1927/1686/875 +f 2279/1995/879 1930/1689/879 1932/1691/879 +f 2280/1996/868 1933/1692/868 1935/1671/868 +f 2281/1997/867 1936/1694/867 1938/1696/867 +f 1957/1712/867 1939/1697/867 1941/1699/867 +f 2282/1998/875 1942/1700/875 1944/1702/875 +f 2283/1716/880 1946/1704/880 1948/1688/880 +f 2284/1691/880 1949/1690/880 1951/1706/880 +f 2285/1999/867 1952/1707/867 1954/1709/867 +f 2286/2000/875 1958/1713/875 1960/1715/875 +f 2287/1706/879 1964/1705/879 1966/1719/879 +f 2288/1579/867 1967/1720/867 1969/1722/867 +f 2289/1724/879 1970/1723/879 1962/1717/879 +f 2290/1719/869 1971/1718/869 1973/1724/869 +f 2291/2001/882 1974/1725/882 1976/1727/882 +f 2292/2002/875 1977/1578/875 1979/1729/875 +f 2293/2003/883 1982/1732/883 1984/1734/883 +f 1846/1605/872 1906/1665/872 1847/1606/872 +f 1903/1662/872 1873/1632/872 1847/1606/872 +f 1874/1633/872 1872/1631/872 1988/1738/872 +f 1991/1741/872 1989/1739/872 1847/1606/872 +f 1986/1736/872 1992/1742/872 1847/1606/872 +f 2294/2004/872 1992/1742/872 1993/1743/872 +f 1997/1747/867 1994/1744/867 1996/1746/867 +f 2272/1988/867 1901/1660/867 1997/1747/867 +f 2295/2005/867 1998/1748/867 1894/1653/867 +f 2296/2006/872 2000/1750/872 2002/1752/872 +f 2297/2007/872 2003/1753/872 1872/1631/872 +f 2298/2008/867 2004/1754/867 2006/1756/867 +f 2299/1823/867 2007/1757/867 2009/1759/867 +f 2300/2009/875 2010/1760/875 2012/1762/875 +f 2301/2010/875 2013/1763/875 2015/1765/875 +f 2302/2011/868 2016/1766/868 2018/1768/868 +f 2303/2012/879 2019/1769/879 2021/1771/879 +f 2304/2013/867 2022/1772/867 2024/1774/867 +f 2305/1609/867 2025/1608/867 2027/1776/867 +f 2306/2014/872 1835/1594/872 1889/1648/872 +f 2307/1794/866 2029/1778/866 2031/1780/866 +f 2308/2015/866 2032/1781/866 2034/1672/866 +f 2309/2016/867 2035/1783/867 2037/1785/867 +f 2310/2017/867 2038/1786/867 2040/1788/867 +f 2311/2018/875 2041/1789/875 2043/1791/875 +f 2312/1769/880 2044/1792/880 2046/1777/880 +f 2313/1805/880 2047/1794/880 2049/1795/880 +f 2314/2019/867 2050/1796/867 2052/1798/867 +f 2315/2020/875 2055/1801/875 2057/1803/875 +f 2316/1814/878 2061/1805/878 2063/1806/878 +f 2001/1751/872 1988/1738/872 2002/1752/872 +f 2075/1816/872 2065/1808/872 2001/1751/872 +f 2317/2021/867 2066/1809/867 2068/1811/867 +f 2060/1792/866 2069/1812/866 2058/1804/866 +f 2318/1812/869 2071/1814/869 2073/1813/869 +f 2319/2022/872 2074/1815/872 2075/1816/872 +f 1999/1749/872 2076/1817/872 1988/1738/872 +f 2320/2023/875 2078/1819/875 2080/1821/875 +f 2321/2024/868 2322/2025/868 2323/2026/868 +f 2324/1762/868 2082/1761/868 2084/1823/868 +f 2081/1822/872 1891/1650/872 1988/1738/872 +f 2085/1824/875 1823/1582/875 2086/1825/875 +f 2325/1843/866 2089/1828/866 2091/1826/866 +f 2326/2027/868 2092/1830/868 2094/1832/868 +f 2111/1847/875 2095/1833/875 2097/1835/875 +f 2099/1836/875 2101/1837/875 2100/1832/875 +f 2327/2028/867 1879/1638/867 2103/1839/867 +f 2328/2029/876 2108/1844/876 2110/1846/876 +f 2113/1849/875 2114/1850/875 2116/1852/875 +f 2329/2030/876 2120/1856/876 2122/1858/876 +f 2330/1864/866 2130/1863/866 2132/1867/866 +f 2331/2031/866 2133/1868/866 2135/1870/866 +f 2332/1861/876 2136/1860/876 2138/1866/876 +f 2333/1611/866 2170/1902/866 2172/1904/866 +f 2334/2032/867 2173/1905/867 2175/1903/867 +f 2335/1902/884 2176/1906/884 2178/1903/884 +f 2336/2033/872 2179/1558/872 2181/1909/872 +f 2337/1557/872 2182/1910/872 2184/1912/872 +f 2338/1559/876 2185/1913/876 2187/1915/876 +f 2339/2033/868 2188/1913/868 1796/1558/868 +f 2095/1833/875 2111/1847/875 2116/1852/875 +f 2340/1870/867 2190/1869/867 2192/1918/867 +f 2191/1917/867 2190/1869/867 2194/1920/867 +f 2341/2034/872 2195/1921/872 2197/1869/872 +f 2125/1861/868 2198/1922/868 2123/1859/868 +f 2204/1928/876 2200/1924/876 2202/1926/876 +f 2342/2035/876 2203/1927/876 2204/1928/876 +f 2343/1919/868 2206/1930/868 2208/1932/868 +f 2194/1920/867 2193/1919/867 2210/1933/867 +f 2344/2036/866 2211/1934/866 2213/1936/866 +f 2345/1941/868 2214/1937/868 2216/1939/868 +f 2346/1939/876 2217/1940/876 2219/1941/876 +f 2347/2037/868 2255/1974/868 2257/1976/868 +f 2256/1975/868 2258/1977/868 2257/1976/868 +f 2348/2038/875 2260/1979/875 2262/1981/875 s 1 -f 1472/1483/549 1473/1484/549 1474/1485/549 -f 1475/1486/550 1476/1487/549 1477/1488/549 -f 1478/1489/551 1479/1490/551 1480/1491/552 -f 1481/1492/553 1482/1493/553 1483/1494/553 -f 1484/1495/554 1485/1496/554 1486/1497/554 -f 1487/1498/555 1488/1499/556 1489/1500/557 -f 1490/1501/558 1491/1502/551 1478/1489/551 -f 1490/1501/558 1480/1491/552 1492/1503/559 -f 1493/1504/560 1494/1505/560 1495/1506/560 -f 1496/1507/561 1497/1508/561 1498/1509/562 -f 1499/1510/554 1500/1511/554 1501/1512/554 -f 1502/1513/563 1503/1514/563 1504/1515/563 -f 1490/1501/558 1478/1489/551 1480/1491/552 -f 1505/1516/564 1506/1517/564 1507/1518/564 -f 1508/1519/565 1509/1520/565 1510/1521/565 -f 1511/1522/554 1512/1523/554 1513/1524/554 -f 1514/1525/566 1515/1526/567 1516/1527/568 -f 1517/1528/564 1518/1529/564 1519/1530/564 -f 1520/1531/564 1521/1532/564 1522/1533/564 -f 1522/1533/564 1523/1534/564 1524/1535/564 -f 1525/1536/569 1526/1537/570 1527/1538/570 -f 1528/1539/571 1529/1540/570 1525/1536/569 -f 1517/1528/564 1519/1530/564 1530/1541/564 -f 1531/1542/572 1532/1543/572 1533/1544/572 -f 1534/1545/554 1535/1546/554 1536/1547/554 -f 1534/1545/554 1536/1547/554 1537/1548/554 -f 1538/1549/564 1522/1533/564 1524/1535/564 -f 1521/1532/564 1523/1534/564 1522/1533/564 -f 1523/1534/564 1539/1550/564 1524/1535/564 -f 1526/1537/570 1540/1551/570 1527/1538/570 -f 1529/1540/570 1526/1537/570 1525/1536/569 -f 1519/1530/564 1541/1552/564 1530/1541/564 -f 1542/1553/572 1543/1554/572 1532/1543/572 -f 1532/1543/572 1543/1554/572 1533/1544/572 -f 1535/1546/554 1544/1555/554 1536/1547/554 -f 1536/1547/554 1545/1556/554 1537/1548/554 -f 1546/1557/573 1547/1558/574 1548/1559/575 -f 1549/1560/576 1550/1561/576 1528/1539/571 -f 1549/1560/576 1551/1562/577 1552/1563/578 -f 1551/1562/577 1553/1564/579 1554/1565/580 -f 1553/1564/579 1548/1559/575 1547/1558/574 -f 1555/1566/581 1548/1559/575 1475/1486/550 -f 1556/1567/570 1527/1538/570 1540/1551/570 -f 1557/1568/582 1558/1569/582 1559/1570/582 -f 1560/1571/582 1561/1572/582 1562/1573/582 -f 1563/1574/570 1564/1575/570 1565/1576/570 -f 1566/1577/554 1567/1578/554 1568/1579/554 -f 1569/1580/554 1570/1581/554 1571/1582/554 -f 1572/1583/582 1573/1584/582 1574/1585/582 -f 1520/1531/564 1575/1586/564 1521/1532/564 -f 1540/1551/570 1526/1537/570 1576/1587/570 -f 1518/1529/564 1577/1588/564 1519/1530/564 -f 1531/1542/572 1578/1589/572 1532/1543/572 -f 1534/1545/554 1579/1590/554 1535/1546/554 -f 1580/1591/583 1581/1592/584 1582/1593/585 -f 1583/1594/586 1584/1595/587 1585/1596/588 -f 1586/1597/564 1587/1598/564 1588/1599/589 -f 1589/1600/564 1590/1601/564 1591/1602/564 -f 1592/1603/590 1585/1596/588 1584/1595/587 -f 1593/1604/572 1594/1605/572 1595/1606/572 -f 1596/1607/572 1597/1608/572 1598/1609/572 -f 1599/1610/572 1600/1611/572 1601/1612/572 -f 1602/1613/591 1603/1614/592 1604/1615/593 -f 1605/1616/582 1606/1617/582 1607/1618/582 -f 1581/1592/584 1608/1619/594 1609/1620/595 -f 1600/1621/572 1610/1622/572 1611/1623/572 -f 1603/1614/592 1612/1624/596 1613/1625/597 -f 1606/1617/582 1614/1626/582 1615/1627/582 -f 1608/1619/594 1616/1628/598 1617/1629/599 -f 1610/1630/572 1618/1631/572 1619/1632/572 -f 1612/1624/596 1620/1633/600 1621/1634/601 -f 1614/1626/582 1622/1635/582 1623/1636/582 -f 1616/1628/598 1624/1637/602 1625/1638/603 -f 1618/1631/572 1626/1639/572 1627/1640/572 -f 1620/1641/600 1628/1642/604 1629/1643/605 -f 1622/1635/582 1630/1644/582 1631/1645/582 -f 1632/1646/606 1633/1647/607 1634/1648/608 -f 1626/1639/572 1635/1649/572 1636/1650/572 -f 1637/1651/609 1638/1652/610 1639/1653/611 -f 1630/1644/582 1640/1654/582 1641/1655/582 -f 1633/1656/607 1642/1657/612 1643/1658/613 -f 1635/1649/572 1644/1659/572 1645/1660/572 -f 1638/1652/610 1646/1661/614 1647/1662/615 -f 1640/1654/582 1648/1663/582 1649/1664/582 -f 1642/1657/612 1650/1665/616 1651/1666/617 -f 1644/1659/572 1652/1667/572 1653/1668/572 -f 1646/1661/614 1654/1669/618 1655/1670/619 -f 1648/1663/582 1656/1671/582 1657/1672/582 -f 1650/1673/616 1658/1674/591 1659/1675/620 -f 1652/1667/572 1660/1676/572 1661/1677/572 -f 1654/1669/618 1662/1678/583 1663/1679/621 -f 1656/1671/582 1664/1680/582 1665/1681/582 -f 1658/1674/591 1666/1682/622 1667/1683/593 -f 1660/1676/572 1668/1684/572 1669/1685/572 -f 1662/1678/583 1670/1686/584 1671/1687/585 -f 1664/1680/582 1672/1688/582 1673/1689/582 -f 1666/1682/622 1674/1690/596 1675/1691/597 -f 1668/1684/572 1676/1692/572 1677/1693/572 -f 1670/1686/584 1678/1694/594 1679/1695/595 -f 1672/1688/582 1680/1696/582 1681/1697/582 -f 1674/1690/596 1682/1698/600 1683/1699/601 -f 1676/1692/572 1684/1700/572 1685/1701/572 -f 1678/1694/594 1686/1702/623 1687/1703/624 -f 1680/1696/582 1688/1704/582 1689/1705/582 -f 1682/1698/600 1690/1706/604 1691/1707/625 -f 1684/1700/572 1692/1708/572 1693/1709/572 -f 1686/1702/623 1694/1710/602 1695/1711/626 -f 1688/1704/582 1696/1712/582 1697/1713/582 -f 1690/1706/604 1698/1714/627 1699/1715/628 -f 1692/1708/572 1700/1716/572 1701/1717/572 -f 1694/1718/602 1702/1719/607 1703/1720/608 -f 1696/1712/582 1704/1721/582 1705/1722/582 -f 1698/1714/627 1706/1723/614 1707/1724/615 -f 1700/1716/572 1708/1725/572 1709/1726/572 -f 1702/1719/607 1710/1727/612 1711/1728/613 -f 1704/1721/582 1712/1729/582 1713/1730/582 -f 1706/1723/614 1714/1731/618 1715/1732/619 -f 1708/1725/572 1716/1733/572 1717/1734/572 -f 1710/1727/612 1718/1735/616 1719/1736/629 -f 1712/1729/582 1720/1737/582 1721/1738/582 -f 1714/1731/618 1580/1591/583 1722/1739/621 -f 1716/1733/572 1599/1610/572 1723/1740/572 -f 1718/1735/616 1602/1613/591 1724/1741/620 -f 1720/1737/582 1605/1616/582 1725/1742/582 -f 1726/1743/554 1727/1744/554 1728/1745/554 -f 1727/1744/554 1729/1746/554 1730/1747/554 -f 1729/1746/554 1731/1748/554 1732/1749/554 -f 1731/1748/554 1733/1750/554 1734/1751/554 -f 1733/1750/554 1735/1752/554 1736/1753/554 -f 1735/1752/554 1737/1754/554 1738/1755/554 -f 1737/1754/554 1739/1756/554 1740/1757/554 -f 1739/1756/554 1741/1758/554 1742/1759/554 -f 1741/1758/554 1743/1760/554 1744/1761/554 -f 1743/1760/554 1745/1762/554 1746/1763/554 -f 1745/1762/554 1747/1764/554 1748/1765/554 -f 1747/1764/554 1726/1743/554 1749/1766/554 -f 1750/1767/630 1751/1768/631 1752/1769/632 -f 1753/1770/633 1754/1771/634 1755/1772/635 -f 1756/1773/554 1757/1774/554 1758/1775/554 -f 1759/1776/636 1750/1767/630 1760/1777/637 -f 1754/1771/634 1761/1778/638 1762/1779/639 -f 1757/1774/554 1763/1780/554 1758/1775/554 -f 1764/1781/640 1759/1776/636 1765/1782/641 -f 1761/1778/638 1766/1783/642 1767/1784/643 -f 1763/1780/554 1768/1785/554 1758/1775/554 -f 1769/1786/644 1770/1787/645 1771/1788/646 -f 1766/1783/642 1772/1789/647 1773/1790/648 -f 1768/1785/554 1774/1791/554 1758/1775/554 -f 1775/1792/649 1769/1786/644 1776/1793/650 -f 1772/1789/647 1777/1794/651 1778/1795/652 -f 1774/1791/554 1779/1796/554 1758/1775/554 -f 1780/1797/653 1775/1792/649 1781/1798/654 -f 1777/1794/651 1782/1799/655 1783/1800/656 -f 1779/1796/554 1784/1801/554 1758/1775/554 -f 1785/1802/651 1780/1797/653 1786/1803/657 -f 1782/1799/655 1787/1804/658 1788/1805/654 -f 1784/1801/554 1789/1806/554 1758/1775/554 -f 1790/1807/659 1785/1802/651 1791/1808/660 -f 1787/1804/658 1792/1809/644 1793/1810/661 -f 1789/1806/554 1794/1811/554 1758/1775/554 -f 1795/1812/662 1790/1807/659 1796/1813/648 -f 1792/1809/644 1797/1814/645 1798/1815/663 -f 1794/1811/554 1799/1816/554 1758/1775/554 -f 1800/1817/638 1795/1812/662 1801/1818/664 -f 1802/1819/640 1803/1820/665 1804/1821/641 -f 1799/1816/554 1805/1822/554 1758/1775/554 -f 1806/1823/666 1800/1817/638 1807/1824/667 -f 1803/1820/665 1808/1825/630 1809/1826/668 -f 1805/1822/554 1810/1827/554 1758/1775/554 -f 1751/1768/631 1806/1823/666 1811/1828/635 -f 1808/1825/630 1753/1770/633 1812/1829/669 -f 1810/1827/554 1756/1773/554 1758/1775/554 -f 1813/1830/670 1814/1831/671 1815/1832/672 -f 1816/1833/673 1817/1834/674 1818/1835/675 -f 1819/1836/676 1820/1837/677 1821/1838/678 -f 1822/1839/679 1823/1840/680 1824/1841/681 -f 1825/1842/682 1818/1835/675 1826/1843/683 -f 1827/1844/684 1818/1835/675 1825/1842/682 -f 1828/1845/685 1829/1846/686 1830/1847/687 -f 1831/1848/688 1832/1849/689 1828/1845/685 -f 1819/1836/676 1833/1850/690 1828/1845/685 -f 1834/1851/691 1835/1852/692 1815/1832/672 -f 1835/1852/692 1834/1851/691 1836/1853/693 -f 1835/1852/692 1837/1854/694 1838/1855/695 -f 1839/1856/696 1840/1857/697 1830/1847/687 -f 1841/1858/698 1839/1856/696 1842/1859/699 -f 1822/1839/679 1843/1860/700 1823/1840/680 -f 1844/1861/701 1845/1862/702 1826/1843/683 -f 1846/1863/703 1845/1862/702 1844/1861/701 -f 1847/1864/704 1845/1862/702 1848/1865/705 -f 1849/1866/706 1850/1867/707 1851/1868/708 -f 1852/1869/709 1851/1868/708 1850/1867/707 -f 1825/1842/682 1826/1843/683 1853/1870/710 -f 1854/1871/711 1824/1841/681 1855/1872/712 -f 1856/1873/713 1827/1844/684 1854/1871/711 -f 1822/1839/679 1824/1841/681 1857/1874/714 -f 1843/1860/700 1822/1839/679 1857/1874/714 -f 1857/1874/714 1824/1841/681 1854/1871/711 -f 1858/1875/715 1859/1876/716 1860/1877/717 -f 1845/1862/702 1853/1870/710 1826/1843/683 -f 1854/1871/711 1853/1870/710 1861/1878/718 -f 1862/1879/719 1863/1880/720 1847/1864/704 -f 1863/1880/720 1861/1878/718 1845/1862/702 -f 1857/1874/714 1863/1880/720 1862/1879/719 -f 1861/1878/718 1863/1880/720 1857/1874/714 -f 1860/1877/717 1862/1879/719 1858/1875/715 -f 1849/1866/706 1864/1881/721 1862/1879/719 -f 1865/1882/722 1848/1865/705 1846/1863/703 -f 1866/1883/723 1865/1882/722 1867/1884/724 -f 1868/1885/725 1814/1831/671 1813/1830/670 -f 1869/1886/726 1868/1885/725 1870/1887/727 -f 1840/1857/697 1820/1837/677 1819/1836/676 -f 1871/1888/728 1872/1889/729 1873/1890/730 -f 1848/1865/705 1845/1862/702 1846/1863/703 -f 1861/1878/718 1853/1870/710 1845/1862/702 -f 1827/1844/684 1825/1842/682 1853/1870/710 -f 1853/1870/710 1854/1871/711 1827/1844/684 -f 1856/1873/713 1854/1871/711 1855/1872/712 -f 1843/1860/700 1860/1877/717 1859/1876/716 -f 1864/1881/721 1858/1875/715 1862/1879/719 -f 1850/1867/707 1849/1866/706 1862/1879/719 -f 1873/1890/730 1823/1840/680 1841/1858/698 -f 1843/1860/700 1859/1876/716 1823/1840/680 -f 1823/1840/680 1859/1876/716 1840/1857/697 -f 1864/1881/721 1820/1837/677 1858/1875/715 -f 1849/1866/706 1820/1837/677 1864/1881/721 -f 1849/1866/706 1851/1868/708 1820/1837/677 -f 1851/1868/708 1852/1869/709 1874/1891/731 -f 1848/1865/705 1865/1882/722 1852/1869/709 -f 1852/1869/709 1866/1883/723 1869/1886/726 -f 1875/1892/732 1868/1885/725 1876/1893/733 -f 1814/1831/671 1868/1885/725 1875/1892/732 -f 1840/1857/697 1839/1856/696 1841/1858/698 -f 1823/1840/680 1840/1857/697 1841/1858/698 -f 1859/1876/716 1858/1875/715 1840/1857/697 -f 1820/1837/677 1840/1857/697 1858/1875/715 -f 1851/1868/708 1874/1891/731 1820/1837/677 -f 1852/1869/709 1869/1886/726 1874/1891/731 -f 1865/1882/722 1866/1883/723 1852/1869/709 -f 1866/1883/723 1876/1893/733 1869/1886/726 -f 1868/1885/725 1869/1886/726 1876/1893/733 -f 1877/1894/734 1878/1895/735 1867/1884/724 -f 1879/1896/736 1877/1894/734 1880/1897/737 -f 1881/1898/738 1882/1899/739 1880/1897/737 -f 1883/1900/740 1816/1833/673 1884/1901/741 -f 1885/1902/564 1886/1903/564 1887/1904/564 -f 1888/1905/652 1889/1906/648 1890/1907/742 -f 1891/1908/656 1888/1905/652 1892/1909/651 -f 1889/1906/648 1893/1910/643 1894/1911/642 -f 1895/1912/654 1891/1908/656 1896/1913/655 -f 1897/1914/743 1895/1912/654 1898/1915/744 -f 1893/1910/643 1899/1916/745 1900/1917/638 -f 1901/1918/746 1897/1914/743 1902/1919/644 -f 1903/1920/641 1901/1918/746 1904/1921/645 -f 1899/1916/745 1905/1922/635 1906/1923/634 -f 1907/1924/668 1903/1920/641 1908/1925/665 -f 1909/1926/669 1907/1924/668 1910/1927/630 -f 1905/1922/635 1909/1926/669 1911/1928/633 -f 1912/1929/564 1913/1930/564 1914/1931/564 -f 1915/1932/564 1912/1929/564 1916/1933/564 -f 1913/1930/564 1917/1934/564 1918/1935/564 -f 1919/1936/564 1915/1932/564 1920/1937/564 -f 1921/1938/564 1919/1936/564 1922/1939/564 -f 1917/1934/564 1923/1940/564 1924/1941/564 -f 1885/1942/564 1921/1938/564 1925/1943/564 -f 1926/1944/564 1885/1942/564 1927/1945/564 -f 1923/1940/564 1928/1946/564 1929/1947/564 -f 1930/1948/564 1926/1944/564 1931/1949/564 -f 1932/1950/564 1930/1948/564 1933/1951/564 -f 1928/1946/564 1932/1950/564 1934/1952/564 -f 1935/1953/564 1936/1954/564 1937/1955/564 -f 1938/1956/647 1939/1957/651 1940/1958/652 -f 1941/1959/642 1938/1956/647 1942/1960/648 -f 1937/1955/564 1936/1954/564 1943/1961/564 -f 1939/1957/651 1944/1962/655 1945/1963/656 -f 1946/1964/564 1936/1954/564 1935/1953/564 -f 1943/1961/564 1936/1954/564 1947/1965/564 -f 1944/1962/655 1948/1966/658 1949/1967/654 -f 1950/1968/638 1941/1959/642 1951/1969/643 -f 1947/1965/564 1936/1954/564 1952/1970/564 -f 1948/1966/658 1953/1971/747 1954/1972/747 -f 1955/1973/564 1936/1954/564 1946/1964/564 -f 1952/1970/564 1936/1954/564 1956/1974/564 -f 1957/1975/748 1958/1976/748 1959/1977/749 -f 1960/1978/634 1950/1968/638 1961/1979/639 -f 1956/1974/564 1936/1954/564 1962/1980/564 -f 1963/1981/750 1964/1982/751 1965/1983/751 -f 1966/1984/564 1936/1954/564 1955/1973/564 -f 1962/1980/564 1936/1954/564 1967/1985/564 -f 1957/1975/748 1968/1986/630 1969/1987/668 -f 1970/1988/633 1960/1978/634 1971/1989/635 -f 1967/1985/564 1936/1954/564 1972/1990/564 -f 1968/1986/630 1970/1988/633 1973/1991/669 -f 1972/1990/564 1936/1954/564 1966/1984/564 -f 1974/1992/752 1959/1977/749 1965/1983/751 -f 1885/1902/564 1926/1993/564 1886/1903/564 -f 1954/1972/747 1953/1971/747 1975/1994/753 -f 1976/1995/754 1977/1996/755 1963/1981/750 -f 1887/1997/564 1886/1998/564 1978/1999/564 -f 1887/1904/564 1921/2000/564 1885/1902/564 -f 1979/2001/564 1980/2002/564 1981/2003/564 -f 1982/2004/756 1983/2005/757 1984/2006/758 -f 1985/2007/554 1986/2008/554 1987/2009/554 -f 1981/2003/564 1980/2002/564 1988/2010/564 -f 1983/2005/757 1989/2011/759 1990/2012/760 -f 1986/2008/554 1991/2013/554 1987/2009/554 -f 1988/2010/564 1980/2002/564 1992/2014/564 -f 1989/2011/759 1993/2015/761 1994/2016/762 -f 1991/2013/554 1995/2017/554 1987/2009/554 -f 1992/2014/564 1980/2002/564 1996/2018/564 -f 1997/2019/763 1998/2020/764 1999/2021/765 -f 1995/2017/554 2000/2022/554 1987/2009/554 -f 1996/2018/564 1980/2002/564 2001/2023/564 -f 1998/2020/764 2002/2024/766 2003/2025/767 -f 2000/2022/554 2004/2026/554 1987/2009/554 -f 2001/2023/564 1980/2002/564 2005/2027/564 -f 2002/2024/766 2006/2028/768 2007/2029/769 -f 2008/2030/564 2009/2031/770 2010/2032/770 -f 2004/2026/554 2011/2033/554 1987/2009/554 -f 2005/2027/564 1980/2002/564 2012/2034/564 -f 2010/2032/770 2009/2031/770 2013/2035/771 -f 2006/2028/768 2014/2036/772 2015/2037/773 -f 2011/2033/554 2016/2038/554 1987/2009/554 -f 2017/2039/774 2018/2040/775 2019/2041/776 -f 2020/2042/777 2017/2039/774 2021/2043/778 -f 2012/2034/564 1980/2002/564 1979/2001/564 -f 2014/2036/772 1982/2004/756 2022/2044/779 -f 2016/2038/554 1985/2007/554 1987/2009/554 -f 2023/2045/780 2024/2046/781 2025/2047/782 -f 2026/2048/783 2027/2049/784 2023/2045/780 -f 2028/2050/785 2029/2051/786 2030/2052/564 -f 2031/2053/787 2032/2054/788 2033/2055/554 -f 2034/2056/789 2035/2057/790 2036/2058/791 -f 2018/2040/775 2037/2059/792 2038/2060/793 -f 2039/2061/794 2040/2062/795 2041/2063/796 -f 2031/2053/787 2042/2064/797 2032/2054/788 -f 2043/2065/549 2044/2066/549 2045/2067/549 -f 2046/2068/564 2047/2069/564 2048/2070/564 -f 1586/1597/564 2049/2071/564 2050/2072/564 -f 2051/2073/798 2052/2074/799 2053/2075/800 -f 2041/2063/796 2040/2062/795 2054/2076/801 -f 2055/2077/802 2056/2078/803 2057/2079/564 -f 2058/2080/549 2059/2081/549 2060/2082/549 -f 2061/2083/549 2060/2082/549 2059/2081/549 -f 2062/2084/554 2063/2085/554 2064/2086/554 -f 2065/2087/804 2066/2088/805 2053/2075/800 -f 2067/2089/806 2068/2090/549 2069/2091/807 -f 2030/2052/564 2029/2051/786 2070/2092/564 -f 2071/2093/570 2072/2094/570 2073/2095/570 -f 2056/2078/803 2074/2096/564 2057/2079/564 -f 2075/2097/570 2076/2098/570 2077/2099/570 -f 2073/2095/570 2072/2094/570 2075/2100/570 -f 2078/2101/572 2079/2102/572 2080/2103/572 -f 2079/2102/572 2081/2104/572 2082/2105/572 -f 2083/2106/572 2084/2107/572 2082/2105/572 -f 2085/2108/570 2086/2109/570 2087/2110/570 -f 2088/2111/808 2089/2112/809 2090/2113/809 -f 2091/2114/810 2028/2050/785 2092/2115/811 -f 2039/2061/794 2093/2116/785 2094/2117/812 -f 2095/2118/787 2034/2056/789 2096/2119/813 -f 2097/2120/814 2098/2121/815 2099/2122/816 -f 2099/2122/816 2098/2121/815 2100/2123/817 -f 2099/2122/816 2100/2123/817 2101/2124/818 -f 2099/2122/816 2101/2124/818 2102/2125/586 -f 2103/2126/819 2104/2127/820 2105/2128/589 -f 2106/2129/821 2107/2130/822 2108/2131/816 -f 2109/2132/823 2110/2133/824 2111/2134/825 -f 2112/2135/826 2104/2127/820 2113/2136/827 -f 2114/2137/564 2115/2138/564 2113/2136/827 -f 2115/2138/564 2116/2139/564 2113/2136/827 -f 2117/2140/564 2113/2136/827 2116/2139/564 -f 2104/2127/820 2114/2137/564 2113/2136/827 -f 2114/2137/564 2104/2127/820 2103/2126/819 -f 2118/2141/828 2119/2142/829 2120/2143/830 -f 2121/2144/554 2122/2145/554 2123/2146/831 -f 2124/2147/564 2125/2148/564 2126/2149/832 -f 2127/2150/554 2128/2151/554 2129/2152/554 -f 2127/2150/554 2130/2153/833 2131/2154/554 -f 2121/2144/554 2123/2146/831 2132/2155/554 -f 2132/2155/554 2133/2156/554 2134/2157/554 -f 2134/2157/554 2135/2158/554 2136/2159/554 -f 2137/2160/564 2138/2161/564 2139/2162/834 -f 2140/2163/564 2141/2164/564 2142/2165/564 -f 2143/2166/564 2140/2163/564 2144/2167/564 -f 2125/2148/564 2143/2166/564 2145/2168/564 -f 2124/2147/564 2126/2149/832 2146/2169/564 -f 2122/2145/554 2147/2170/554 2130/2153/833 -f 2131/2154/554 2128/2151/554 2127/2150/554 -f 2128/2151/554 2136/2159/554 2129/2152/554 -f 2130/2153/833 2147/2170/554 2131/2154/554 -f 2123/2146/831 2133/2156/554 2132/2155/554 -f 2133/2156/554 2135/2158/554 2134/2157/554 -f 2135/2158/554 2129/2152/554 2136/2159/554 -f 2148/2171/564 2146/2169/564 2139/2162/834 -f 2141/2164/564 2138/2161/564 2137/2160/564 -f 2138/2161/564 2148/2171/564 2139/2162/834 -f 2141/2164/564 2137/2160/564 2142/2165/564 -f 2140/2163/564 2142/2165/564 2144/2167/564 -f 2143/2166/564 2144/2167/564 2145/2168/564 -f 2126/2149/832 2139/2162/834 2146/2169/564 -f 2149/2172/570 2086/2109/570 2085/2108/570 -f 2150/2173/835 2151/2174/836 2152/2175/837 -f 2153/2176/564 2154/2177/838 2151/2174/836 -f 2155/2178/564 2153/2176/564 2156/2179/839 -f 2157/2180/840 2155/2178/564 2158/2181/841 -f 2112/2135/826 2158/2181/841 2156/2179/839 -f 2159/2182/842 2118/2141/828 2160/2183/843 -f 2161/2184/570 2075/2100/570 2077/2185/570 -f 2162/2186/844 2163/2187/845 2024/2046/781 -f 2164/2188/846 2113/2136/827 2117/2140/564 -f 2165/2189/847 2164/2188/846 2117/2140/564 -f 2030/2052/564 2092/2115/811 2028/2050/785 -f 2166/2190/564 2167/2191/564 2168/2192/564 -f 2169/2193/847 2170/2194/848 2171/2195/849 -f 2027/2049/784 2172/2196/850 2173/2197/851 -f 2070/2092/564 2174/2198/848 2117/2140/564 -f 2074/2096/564 2117/2140/564 1585/1596/588 -f 2175/2199/570 2085/2200/570 2176/2201/570 -f 2177/2202/582 2178/2203/582 2179/2204/852 -f 2180/2205/853 2181/2206/854 2182/2207/855 -f 2183/2208/856 2184/2209/857 2185/2210/858 -f 2186/2211/859 2187/2212/860 2188/2213/861 -f 2189/2214/862 2185/2210/858 2184/2209/857 -f 2190/2215/863 2191/2216/864 2192/2217/865 -f 2192/2217/865 2193/2218/866 2194/2219/867 -f 2195/2220/868 2196/2221/869 2197/2222/870 -f 2198/2223/871 2199/2224/872 2196/2221/869 -f 2200/2225/873 2199/2224/872 2198/2223/871 -f 2195/2220/868 2198/2223/871 2196/2221/869 -f 2201/2226/874 2202/2227/875 2203/2228/876 -f 2204/2229/877 2205/2230/878 2201/2226/874 -f 2206/2231/879 2207/2232/880 2208/2233/881 -f 2209/2234/882 2206/2231/879 2210/2235/883 -f 2211/2236/884 2209/2234/882 2212/2237/885 -f 2213/2238/886 2211/2236/884 2214/2239/887 -f 2215/2240/888 2213/2238/886 2216/2241/889 -f 2217/2242/890 2218/2243/891 2219/2244/892 -f 2220/2245/893 2212/2237/885 2210/2235/883 -f 2221/2246/894 2214/2239/887 2212/2237/885 -f 2222/2247/895 2216/2241/889 2214/2239/887 -f 2223/2248/896 2224/2249/897 2216/2241/889 -f 2225/2250/898 2210/2235/883 2226/2251/899 -f 2227/2252/900 2228/2253/901 2209/2234/882 -f 2229/2254/902 2230/2255/903 2231/2256/904 -f 2194/2219/867 2190/2215/863 2192/2217/865 -f 2231/2256/904 2200/2225/873 2198/2223/871 -f 2232/2257/905 2201/2226/874 2203/2228/876 -f 2232/2257/905 2204/2229/877 2201/2226/874 -f 2212/2237/885 2209/2234/882 2210/2235/883 -f 2214/2239/887 2211/2236/884 2212/2237/885 -f 2216/2241/889 2213/2238/886 2214/2239/887 -f 2224/2249/897 2215/2240/888 2216/2241/889 -f 2233/2258/906 2217/2242/890 2219/2244/892 -f 2225/2250/898 2220/2245/893 2210/2235/883 -f 2220/2245/893 2221/2246/894 2212/2237/885 -f 2221/2246/894 2222/2247/895 2214/2239/887 -f 2222/2247/895 2223/2248/896 2216/2241/889 -f 2234/2259/907 2225/2250/898 2226/2251/899 -f 2235/2260/908 2236/2261/909 2195/2220/868 -f 2228/2253/901 2237/2262/910 2206/2231/879 -f 2231/2256/904 2238/2263/911 2200/2225/873 -f 2192/2217/865 2195/2220/868 2193/2218/866 -f 2201/2226/874 2205/2230/878 2239/2264/912 -f 2224/2249/897 2240/2265/913 2215/2240/888 -f 2223/2248/896 2241/2266/914 2224/2249/897 -f 2242/2267/915 2233/2258/906 2219/2244/892 -f 2243/2268/916 2215/2240/888 2233/2258/906 -f 2244/2269/917 2242/2267/915 2219/2244/892 -f 2242/2267/915 2243/2268/916 2233/2258/906 -f 2243/2268/916 2245/2270/918 2215/2240/888 -f 2054/2076/801 2118/2141/828 2246/2271/919 -f 2247/2272/570 2248/2273/570 2076/2098/570 -f 2036/2058/791 2249/2274/920 2096/2119/813 -f 2250/2275/921 2249/2274/920 2251/2276/922 -f 2252/2277/923 2253/2278/845 2025/2047/782 -f 2254/2279/924 2036/2058/791 2035/2057/790 -f 2255/2280/554 2256/2281/554 2257/2282/554 -f 2258/2283/570 2259/2284/570 2260/2285/570 -f 2261/2286/554 2262/2287/554 2263/2288/554 -f 2264/2289/925 2265/2290/926 2266/2291/925 -f 2267/2292/549 2268/2293/549 2269/2294/549 -f 2270/2295/927 2271/2296/927 2272/2297/570 -f 2149/2172/570 2075/2100/570 2072/2094/570 -f 2253/2278/845 2273/2298/844 2025/2047/782 -f 2274/2299/928 2275/2300/929 2027/2049/784 -f 2027/2049/784 2026/2048/783 2276/2301/930 -f 2023/2045/780 2025/2047/782 2277/2302/931 -f 2025/2047/782 2024/2046/781 2278/2303/932 -f 2279/2304/570 2280/2305/570 2281/2306/570 -f 2282/2307/582 2252/2277/923 2283/2308/933 -f 2284/2309/582 2253/2278/845 2252/2277/923 -f 2285/2310/934 2286/2311/582 2287/2312/582 -f 2283/2308/933 2288/2313/935 2289/2314/935 -f 2276/2301/930 2274/2299/928 2027/2049/784 -f 2290/2315/570 2279/2304/570 2291/2316/570 -f 2027/2049/784 2173/2197/851 2292/2317/936 -f 2111/2134/825 2293/2318/937 2294/2319/938 -f 2295/2320/939 2296/2321/940 2297/2322/554 -f 2294/2319/938 2297/2322/554 2298/2323/941 -f 2299/2324/554 2300/2325/554 2301/2326/942 -f 2302/2327/943 2301/2326/942 2303/2328/554 -f 2301/2329/942 2298/2323/941 2299/2330/554 -f 2293/2318/937 2297/2322/554 2294/2319/938 -f 2293/2318/937 2304/2331/944 2297/2322/554 -f 2304/2331/944 2295/2320/939 2297/2322/554 -f 2296/2321/940 2305/2332/554 2297/2322/554 -f 2297/2322/554 2299/2330/554 2298/2323/941 -f 2299/2324/554 2306/2333/554 2300/2325/554 -f 2300/2325/554 2307/2334/554 2301/2326/942 -f 2301/2326/942 2307/2334/554 2303/2328/554 -f 2308/2335/570 2309/2336/570 2310/2337/570 -f 2311/2338/570 2312/2339/570 2309/2340/570 -f 2313/2341/570 2314/2342/570 2308/2335/570 -f 2309/2336/570 2315/2343/570 2310/2337/570 -f 2309/2340/570 2316/2344/570 2311/2338/570 -f 2317/2345/570 2315/2346/570 2309/2340/570 -f 2316/2344/570 2309/2340/570 2280/2305/570 -f 2318/2347/945 2319/2348/946 2320/2349/947 -f 2321/2350/564 2318/2347/945 2322/2351/948 -f 1817/1834/674 1816/1833/673 2323/2352/949 -f 2324/2353/950 1883/1900/740 1872/1889/729 -f 2325/2354/951 2326/2355/952 1883/1900/740 -f 2325/2354/951 2324/2353/950 2327/2356/953 -f 1842/1859/699 2327/2356/953 2324/2353/950 -f 2328/2357/954 1878/1895/735 1877/1894/734 -f 2329/2358/955 1837/1854/694 1835/1852/692 -f 2329/2358/955 1836/1853/693 2328/2357/954 -f 2328/2357/954 1877/1894/734 1879/1896/736 -f 1828/1845/685 2330/2359/956 2331/2360/957 -f 1818/1835/675 1881/1898/738 2332/2361/958 -f 1821/1838/678 1874/1891/731 2333/2362/959 -f 1823/1840/680 1873/1890/730 1884/1901/741 -f 1867/1884/724 2332/2361/958 1880/1897/737 -f 1867/1884/724 1846/1863/703 2332/2361/958 -f 1826/1843/683 2332/2361/958 1844/1861/701 -f 1856/1873/713 1818/1835/675 1827/1844/684 -f 1855/1872/712 1816/1833/673 1856/1873/713 -f 1855/1872/712 1824/1841/681 1816/1833/673 -f 1816/1833/673 1818/1835/675 1856/1873/713 -f 1830/1847/687 1829/1846/686 1842/1859/699 -f 1832/1849/689 2334/2363/960 1829/1846/686 -f 1821/1838/678 2335/2364/961 1833/1850/690 -f 1821/1838/678 2333/2362/959 2335/2364/961 -f 2333/2362/959 1870/1887/727 2336/2365/962 -f 1870/1887/727 1813/1830/670 2337/2366/963 -f 1813/1830/670 1815/1832/672 2338/2367/964 -f 2328/2357/954 1836/1853/693 1878/1895/735 -f 2336/2365/962 2339/2368/965 2335/2364/961 -f 2337/2366/963 2340/2369/966 2336/2365/962 -f 2338/2367/964 2341/2370/967 2337/2366/963 -f 1838/1855/695 2342/2371/968 2338/2367/964 -f 2335/2364/961 2343/2372/969 2330/2359/956 -f 1874/1891/731 1869/1886/726 2333/2362/959 -f 1873/1890/730 1872/1889/729 1884/1901/741 -f 1846/1863/703 1844/1861/701 2332/2361/958 -f 1824/1841/681 1884/1901/741 1816/1833/673 -f 1829/1846/686 2327/2356/953 1842/1859/699 -f 2334/2363/960 2327/2356/953 1829/1846/686 -f 2333/2362/959 2336/2365/962 2335/2364/961 -f 1870/1887/727 2337/2366/963 2336/2365/962 -f 1813/1830/670 2338/2367/964 2337/2366/963 -f 1815/1832/672 1838/1855/695 2338/2367/964 -f 1836/1853/693 1834/1851/691 1878/1895/735 -f 2339/2368/965 2343/2372/969 2335/2364/961 -f 2340/2369/966 2339/2368/965 2336/2365/962 -f 2341/2370/967 2340/2369/966 2337/2366/963 -f 2342/2371/968 2341/2370/967 2338/2367/964 -f 2343/2372/969 2331/2360/957 2330/2359/956 -f 1817/1834/674 1881/1898/738 1818/1835/675 -f 1820/1837/677 1874/1891/731 1821/1838/678 -f 1823/1840/680 1884/1901/741 1824/1841/681 -f 1818/1835/675 2332/2361/958 1826/1843/683 -f 1832/1849/689 1829/1846/686 1828/1845/685 -f 1835/1852/692 1838/1855/695 1815/1832/672 -f 1837/1854/694 2342/2371/968 1838/1855/695 -f 1834/1851/691 1876/1893/733 1878/1895/735 -f 1815/1832/672 1875/1892/732 1834/1851/691 -f 1876/1893/733 1866/1883/723 1878/1895/735 -f 1875/1892/732 1876/1893/733 1834/1851/691 -f 1814/1831/671 1875/1892/732 1815/1832/672 -f 2245/2270/918 2213/2238/886 2215/2240/888 -f 2236/2261/909 2198/2223/871 2195/2220/868 -f 2237/2262/910 2207/2232/880 2206/2231/879 -f 2238/2263/911 2344/2373/970 2200/2225/873 -f 2195/2220/868 2345/2374/971 2193/2218/866 -f 2195/2220/868 2197/2222/870 2345/2374/971 -f 2201/2226/874 2239/2264/912 2202/2227/875 -f 2205/2230/878 2346/2375/972 2239/2264/912 -f 2207/2232/880 2202/2227/875 2239/2264/912 -f 2240/2265/913 2233/2258/906 2215/2240/888 -f 2233/2258/906 2240/2265/913 2217/2242/890 -f 2241/2266/914 2240/2265/913 2224/2249/897 -f 2347/2376/973 2203/2228/876 2202/2227/875 -f 2348/2377/974 2349/2378/975 2203/2228/876 -f 2350/2379/976 2344/2373/970 2238/2263/911 -f 2351/2380/977 2194/2219/867 2193/2218/866 -f 2351/2380/977 2190/2215/863 2194/2219/867 -f 2352/2381/978 2353/2382/979 2354/2383/980 -f 2355/2384/981 2356/2385/982 2357/2386/983 -f 2353/2382/979 2352/2381/978 2355/2384/981 -f 2193/2218/866 2345/2374/971 2358/2387/984 -f 2200/2225/873 2359/2388/985 2199/2224/872 -f 2197/2222/870 2196/2221/869 2359/2388/985 -f 2200/2225/873 2344/2373/970 2360/2389/986 -f 2350/2379/976 2361/2390/987 2360/2389/986 -f 2200/2225/873 2360/2389/986 2359/2388/985 -f 2362/2391/988 2363/2392/989 2361/2390/987 -f 2358/2387/984 2351/2380/977 2193/2218/866 -f 2358/2387/984 2359/2388/985 2364/2393/990 -f 2365/2394/991 2355/2384/981 2352/2381/978 -f 2366/2395/992 2352/2381/978 2351/2380/977 -f 2360/2389/986 2361/2390/987 2365/2394/991 -f 2364/2393/990 2359/2388/985 2360/2389/986 -f 2365/2394/991 2361/2390/987 2363/2392/989 -f 2367/2396/993 2356/2385/982 2365/2394/991 -f 2368/2397/994 2191/2216/864 2190/2215/863 -f 2244/2269/917 2219/2244/892 2191/2216/864 -f 2369/2398/995 2211/2236/884 2213/2238/886 -f 2227/2252/900 2209/2234/882 2211/2236/884 -f 2370/2399/996 2202/2227/875 2207/2232/880 -f 2349/2378/975 2348/2377/974 2230/2255/903 -f 2351/2380/977 2354/2383/980 2190/2215/863 -f 2358/2387/984 2364/2393/990 2351/2380/977 -f 2345/2374/971 2197/2222/870 2358/2387/984 -f 2359/2388/985 2358/2387/984 2197/2222/870 -f 2359/2388/985 2196/2221/869 2199/2224/872 -f 2361/2390/987 2350/2379/976 2362/2391/988 -f 2363/2392/989 2367/2396/993 2365/2394/991 -f 2356/2385/982 2355/2384/981 2365/2394/991 -f 2238/2263/911 2230/2255/903 2348/2377/974 -f 2362/2391/988 2350/2379/976 2238/2263/911 -f 2362/2391/988 2238/2263/911 2370/2399/996 -f 2237/2262/910 2367/2396/993 2363/2392/989 -f 2237/2262/910 2356/2385/982 2367/2396/993 -f 2357/2386/983 2356/2385/982 2237/2262/910 -f 2353/2382/979 2357/2386/983 2228/2253/901 -f 2368/2397/994 2354/2383/980 2353/2382/979 -f 2244/2269/917 2353/2382/979 2227/2252/900 -f 2369/2398/995 2243/2268/916 2242/2267/915 -f 2369/2398/995 2245/2270/918 2243/2268/916 -f 2347/2376/973 2370/2399/996 2348/2377/974 -f 2370/2399/996 2238/2263/911 2348/2377/974 -f 2363/2392/989 2362/2391/988 2370/2399/996 -f 2370/2399/996 2237/2262/910 2363/2392/989 -f 2228/2253/901 2357/2386/983 2237/2262/910 -f 2227/2252/900 2353/2382/979 2228/2253/901 -f 2244/2269/917 2368/2397/994 2353/2382/979 -f 2242/2267/915 2244/2269/917 2227/2252/900 -f 2227/2252/900 2369/2398/995 2242/2267/915 -f 2371/2400/997 2372/2401/998 2191/2216/864 -f 2373/2402/999 2374/2403/1000 2372/2401/998 -f 2235/2260/908 2192/2217/865 2372/2401/998 -f 2375/2404/1001 2229/2254/902 2231/2256/904 -f 2236/2261/909 2376/2405/1002 2377/2406/1003 -f 2378/2407/1004 2349/2378/975 2229/2254/902 -f 2379/2408/1005 2378/2407/1004 2375/2404/1001 -f 2379/2408/1005 2204/2229/877 2232/2257/905 -f 2203/2228/876 2349/2378/975 2378/2407/1004 -f 2219/2244/892 2218/2243/891 2371/2400/997 -f 2380/2409/1006 2217/2242/890 2240/2265/913 -f 2380/2409/1006 2381/2410/1007 2218/2243/891 -f 2218/2243/891 2381/2410/1007 2373/2402/999 -f 2239/2264/912 2346/2375/972 2234/2259/907 -f 2235/2260/908 2195/2220/868 2192/2217/865 -f 2228/2253/901 2206/2231/879 2209/2234/882 -f 2230/2255/903 2238/2263/911 2231/2256/904 -f 2192/2217/865 2191/2216/864 2372/2401/998 -f 2382/2411/1008 2188/2213/861 2187/2212/860 -f 2383/2412/1009 2119/2142/829 2118/2141/828 -f 2057/2079/564 2074/2096/564 2384/2413/564 -f 2054/2076/801 2040/2062/795 2094/2117/812 -f 2246/2271/919 2118/2141/828 2159/2182/842 -f 2385/2414/564 2384/2413/564 1592/1603/590 -f 2246/2271/919 2041/2063/796 2054/2076/801 -f 2171/2195/849 2386/2415/1010 2387/2416/846 -f 2388/2417/786 2389/2418/1011 2170/2194/848 -f 2386/2415/1010 2390/2419/1012 2391/2420/827 -f 2039/2061/794 2041/2063/796 2388/2417/786 -f 2389/2418/1011 2171/2195/849 2170/2194/848 -f 2390/2419/1012 2392/2421/1013 2393/2422/826 -f 2392/2421/1013 2394/2423/1014 2395/2424/1015 -f 2395/2424/1015 2394/2423/1014 2181/2206/854 -f 2182/2207/855 2181/2206/854 2394/2423/1014 -f 2396/2425/1016 2395/2424/1015 2181/2206/854 -f 2093/2116/785 2039/2061/794 2388/2417/786 -f 2397/2426/1017 2398/2427/1018 2399/2428/1019 -f 2400/2429/554 2063/2085/554 2401/2430/554 -f 2087/2110/570 2291/2316/570 2402/2431/570 -f 2400/2429/554 2064/2086/554 2063/2085/554 -f 2062/2084/554 2403/2432/554 2063/2085/554 -f 2404/2433/1020 2405/2434/1021 2406/2435/1022 -f 2075/2100/570 2149/2172/570 2175/2436/570 -f 2407/2437/1023 2408/2438/1024 2409/2439/1025 -f 2410/2440/554 2411/2441/554 2408/2442/1024 -f 2412/2443/564 2413/2444/564 2414/2445/564 -f 2163/2187/845 2278/2303/932 2024/2046/781 -f 2415/2446/564 2413/2444/564 2412/2443/564 -f 2416/2447/564 2168/2192/564 2167/2191/564 -f 2417/2448/570 2418/2449/570 2419/2450/570 -f 2420/2451/564 2421/2452/564 2422/2453/564 -f 2423/2454/1026 2424/2455/1026 2425/2456/1026 -f 2426/2457/1027 2427/2458/1028 2428/2459/1027 -f 2429/2460/1029 2430/2461/1030 2431/2462/1031 -f 2432/2463/1032 2431/2462/1031 2430/2461/1030 -f 2433/2464/1033 2067/2089/806 2434/2465/1034 -f 2435/2466/549 2436/2467/549 2437/2468/549 -f 2431/2462/1031 2438/2469/1035 2429/2460/1029 -f 2248/2273/570 2077/2099/570 2076/2098/570 -f 2439/2470/1036 2440/2471/564 2441/2472/803 -f 2047/2069/564 2442/2473/564 2048/2070/564 -f 2443/2474/927 2444/2475/570 2445/2476/570 -f 2446/2477/564 2442/2473/564 1590/1601/564 -f 2447/2478/564 1590/1601/564 2448/2479/1037 -f 2449/2480/564 2448/2479/1037 2450/2481/587 -f 2451/2482/564 2450/2481/587 2102/2125/586 -f 2452/2483/1038 2453/2484/1039 2454/2485/1040 -f 2049/2071/564 2047/2069/564 2455/2486/564 -f 2048/2070/564 2442/2473/564 2456/2487/564 -f 2456/2487/564 2442/2473/564 2446/2477/564 -f 2447/2478/564 2446/2477/564 1590/1601/564 -f 2449/2480/564 2447/2478/564 2448/2479/1037 -f 2448/2479/1037 1590/1601/564 1589/1600/564 -f 2451/2482/564 2449/2480/564 2450/2481/587 -f 2457/2488/1041 2451/2482/564 2102/2125/586 -f 2457/2488/1041 2102/2125/586 2101/2124/818 -f 1588/1599/589 1587/1598/564 2458/2489/564 -f 2097/2120/814 1588/1599/589 2458/2489/564 -f 2459/2490/564 2047/2069/564 2049/2071/564 -f 2050/2072/564 2049/2071/564 2455/2486/564 -f 2455/2486/564 2047/2069/564 2046/2068/564 -f 2460/2491/1042 2461/2492/1043 2398/2427/1018 -f 2462/2493/572 1597/1608/572 1596/1607/572 -f 1595/1606/572 1594/1605/572 1597/1608/572 -f 2463/2494/582 2177/2202/582 2278/2303/932 -f 2464/2495/1044 2179/2204/852 2178/2203/582 -f 2179/2204/852 2464/2495/1044 2465/2496/935 -f 2466/2497/1045 2172/2196/850 2027/2049/784 -f 2156/2179/839 2151/2174/836 2467/2498/1046 -f 2104/2127/820 2468/2499/1047 2105/2128/589 -f 2469/2500/1048 2470/2501/1049 2150/2173/835 -f 2471/2502/1050 2472/2503/589 2473/2504/1051 -f 2151/2174/836 2150/2173/835 2470/2501/1049 -f 2156/2179/839 2468/2499/1047 2104/2127/820 -f 2385/2414/564 1592/1603/590 2440/2471/564 -f 2023/2045/780 2292/2317/936 2024/2046/781 -f 2275/2300/929 2466/2497/1045 2027/2049/784 -f 2474/2505/564 2475/2506/564 2476/2507/564 -f 2174/2198/848 2165/2189/847 2117/2140/564 -f 2117/2140/564 2106/2129/821 1585/1596/588 -f 2384/2413/564 2074/2096/564 1592/1603/590 -f 1592/1603/590 2441/2472/803 2440/2471/564 -f 1585/1596/588 1592/1603/590 2074/2096/564 -f 2041/2063/796 2389/2418/1011 2388/2417/786 -f 2477/2508/572 2462/2509/572 1596/2510/572 -f 1598/1609/572 1597/1608/572 1594/1605/572 -f 2087/2110/570 2086/2109/570 2291/2316/570 -f 2478/2511/1052 2479/2512/570 2480/2513/570 -f 2481/2514/1053 2056/2078/803 2055/2077/802 -f 2439/2470/1036 2441/2472/803 2482/2515/1053 -f 2483/2516/582 2484/2517/582 2485/2518/582 -f 2486/2519/582 2483/2516/582 2487/2520/582 -f 2485/2518/582 2488/2521/582 2487/2520/582 -f 2483/2516/582 2485/2518/582 2487/2520/582 -f 2486/2519/582 2489/2522/582 2483/2516/582 -f 2490/2523/570 2491/2524/1054 2492/2525/1055 -f 2493/2526/564 2494/2527/564 2495/2528/1056 -f 2496/2529/572 2497/2530/572 2498/2531/572 -f 2499/2532/582 2500/2533/582 2501/2534/582 -f 2502/2535/572 2503/2536/572 2498/2531/572 -f 2495/2528/1056 2492/2525/1055 2491/2524/1054 -f 2504/2537/1057 2505/2538/564 2506/2539/564 -f 2504/2537/1057 2507/2540/1057 2508/2541/1058 -f 2509/2542/1059 2510/2543/1060 2511/2544/1061 -f 2512/2545/582 2513/2546/582 2514/2547/582 -f 2514/2547/582 2513/2546/582 2487/2520/582 -f 2515/2548/554 2516/2549/554 2517/2550/554 -f 2518/2551/570 2519/2552/1062 2520/2553/1063 -f 2521/2554/554 2522/2555/1064 2523/2556/1065 -f 2524/2557/572 2525/2558/572 2526/2559/572 -f 2503/2536/572 2502/2535/572 2527/2560/572 -f 2527/2560/572 2528/2561/572 2526/2559/572 -f 2523/2556/1065 2522/2555/1064 2529/2562/1066 -f 2530/2563/1067 2531/2564/1067 2532/2565/554 -f 2520/2553/1063 2519/2552/1062 2533/2566/1059 -f 2501/2534/582 2489/2522/582 2486/2519/582 -f 2534/2567/564 2535/2568/564 2536/2569/564 -f 2530/2563/1067 2537/2570/1068 2538/2571/1068 -f 2539/2572/1069 2508/2541/1058 2538/2571/1068 -f 2484/2517/582 2540/2573/582 2485/2518/582 -f 2541/2574/564 1505/1516/564 1507/1518/564 -f 2542/2575/565 1508/1519/565 1510/1521/565 -f 2543/2576/554 1511/1522/554 1513/1524/554 -f 2544/2577/566 1514/1525/566 1516/1527/568 -f 2545/2578/564 2546/2579/564 2541/2574/564 -f 2547/2580/1070 1516/1527/568 2548/2581/1071 -f 1507/1518/564 2545/2578/564 2541/2574/564 -f 2546/2579/564 2549/2582/564 2541/2574/564 -f 2542/2575/565 1510/1521/565 2550/2583/565 -f 1513/1524/554 2551/2584/554 2543/2576/554 -f 1516/1527/568 1515/1526/567 2548/2581/1071 -f 2552/2585/1072 2553/2586/1072 2554/2587/1072 -f 2555/2588/1073 1588/1599/589 2097/2120/814 -f 2294/2319/938 2556/2589/1074 2109/2132/823 -f 2294/2319/938 2109/2132/823 2111/2134/825 -f 2110/2133/824 2454/2485/1040 2111/2134/825 -f 2116/2139/564 2107/2130/822 2106/2129/821 -f 2557/2590/1075 2558/2591/1076 2559/2592/1077 -f 2560/2593/1078 2561/2594/1079 2562/2595/1080 -f 2563/2596/1081 2564/2597/1082 2565/2598/1083 -f 2564/2597/1082 2566/2599/1084 2565/2598/1083 -f 2453/2484/1039 2111/2134/825 2454/2485/1040 -f 2562/2595/1080 2561/2594/1079 2567/2600/570 -f 2568/2601/554 2569/2602/1085 2570/2603/554 -f 2571/2604/1084 2556/2589/1074 2294/2319/938 -f 2563/2596/1081 2572/2605/554 2564/2597/1082 -f 2573/2606/1086 2574/2607/824 2575/2608/1087 -f 2576/2609/549 2577/2610/549 2578/2611/1088 -f 2579/2612/1089 2563/2596/1081 2580/2613/1090 -f 2572/2605/554 2581/2614/554 2564/2597/1082 -f 2125/2148/564 2145/2168/564 2126/2149/832 -f 2122/2145/554 2130/2153/833 2123/2146/831 -f 2582/2615/549 2583/2616/549 2584/2617/1091 -f 2585/2618/1092 2586/2619/1093 2587/2620/572 -f 2586/2621/1093 2585/2622/1092 2588/2623/570 -f 2589/2624/582 2590/2625/582 2591/2626/1094 -f 2592/2627/1026 2593/2628/1026 2594/2629/1026 -f 2595/2630/1095 2066/2088/805 2065/2087/804 -f 2593/2628/1026 2596/2631/1026 2594/2629/1026 -f 2597/2632/1026 2592/2627/1026 2598/2633/1026 -f 2029/2051/786 2174/2198/848 2070/2092/564 -f 2599/2634/572 2600/2635/572 2601/2636/572 -f 2602/2637/572 2603/2638/572 2600/2635/572 -f 2404/2433/1020 2604/2639/1096 2405/2434/1021 -f 2112/2135/826 2156/2179/839 2104/2127/820 -f 2158/2181/841 2155/2178/564 2156/2179/839 -f 2593/2628/1026 2423/2454/1026 2425/2456/1026 -f 2605/2640/1026 2425/2456/1026 2424/2455/1026 -f 2153/2176/564 2151/2174/836 2156/2179/839 -f 2598/2633/1026 2592/2627/1026 2594/2629/1026 -f 2154/2177/838 2152/2175/837 2151/2174/836 -f 2086/2109/570 2290/2315/570 2291/2316/570 -f 2461/2492/1043 2399/2428/1019 2398/2427/1018 -f 2319/2348/946 2606/2641/1097 2409/2439/1025 -f 2607/2642/1098 2404/2433/1020 2406/2435/1022 -f 2587/2620/572 2608/2643/1091 2584/2617/1091 -f 2589/2624/582 2609/2644/1099 2610/2645/1100 -f 2591/2626/1094 2611/2646/570 2588/2647/570 -f 2612/2648/549 2610/2645/1100 2609/2644/1099 -f 2613/2649/809 2614/2650/1101 2615/2651/809 -f 2088/2111/808 2090/2113/809 2615/2651/809 -f 2616/2652/572 2617/2653/572 2618/2654/572 -f 2619/2655/572 2620/2656/572 2618/2654/572 -f 2621/2657/572 2622/2658/572 2620/2656/572 -f 2623/2659/570 2073/2095/570 2075/2100/570 -f 2299/2324/554 2624/2660/943 2306/2333/554 -f 2311/2338/570 2625/2661/570 2312/2339/570 -f 2626/2662/790 2033/2055/554 2305/2332/554 -f 2627/2663/806 2628/2664/1034 2629/2665/1102 -f 2630/2666/582 2631/2667/582 2632/2668/582 -f 2633/2669/564 2634/2670/564 2635/2671/564 -f 2636/2672/549 2637/2673/549 2638/2674/549 -f 2639/2675/549 2640/2676/549 2636/2672/549 -f 2624/2660/943 2641/2677/1103 2306/2333/554 -f 2642/2678/1104 2643/2679/1104 2644/2680/1105 -f 2645/2681/1106 2069/2091/807 2629/2665/1102 -f 2646/2682/554 2647/2683/554 2648/2684/554 -f 2649/2685/564 2650/2686/564 2651/2687/564 -f 2652/2688/1107 2653/2689/1107 2654/2690/1108 -f 2578/2611/1088 2655/2691/1109 2656/2692/1110 -f 2657/2693/554 2658/2694/554 2659/2695/554 -f 2660/2696/549 2661/2697/549 2662/2698/549 -f 2663/2699/1111 2664/2700/1112 2665/2701/1113 -f 2666/2702/1114 2667/2703/1115 2668/2704/1116 -f 2669/2705/1117 2668/2704/1116 2664/2700/1112 -f 2670/2706/1118 2671/2707/1119 2672/2708/1119 -f 2673/2709/554 2674/2710/554 2670/2706/1118 -f 2675/2711/572 2676/2712/572 2677/2713/572 -f 2678/2714/572 2679/2715/572 2680/2716/572 -f 2655/2691/1109 2681/2717/1120 2682/2718/1120 -f 2301/2329/942 2683/2719/1121 2684/2720/1122 -f 2685/2721/554 2686/2722/554 2687/2723/554 -f 2688/2724/1107 2689/2725/1107 2690/2726/1123 -f 2647/2683/554 2646/2682/554 2569/2602/1085 -f 2569/2602/1085 2579/2612/1089 2570/2603/554 -f 2691/2727/1124 2294/2319/938 2298/2323/941 -f 2692/2728/1103 2693/2729/1125 2694/2730/1125 -f 2695/2731/1125 2696/2732/1125 2641/2677/1103 -f 2667/2703/1115 2666/2702/1114 2697/2733/570 -f 2462/2509/572 2477/2508/572 2698/2734/572 -f 2699/2735/572 2677/2713/572 2678/2714/572 -f 2700/2736/572 2698/2734/572 2675/2737/572 -f 2701/2738/1126 2702/2739/1126 2703/2740/1126 -f 2691/2727/1124 2571/2604/1084 2294/2319/938 -f 2106/2129/821 2117/2140/564 2116/2139/564 -f 2704/2741/823 2559/2592/1077 2558/2591/1076 -f 2705/2742/549 2706/2743/549 2707/2744/549 -f 2563/2596/1081 2565/2598/1083 2580/2613/1090 -f 2708/2745/1127 2709/2746/1128 2710/2747/1128 -f 2644/2680/1105 2708/2745/1127 2711/2748/1129 -f 2712/2749/549 2643/2679/1104 2642/2678/1104 -f 2713/2750/1130 2714/2751/1130 2715/2752/1130 -f 2716/2753/1131 2717/2754/1131 2718/2755/1131 -f 2719/2756/554 2720/2757/554 2721/2758/554 -f 2722/2759/1132 2723/2760/1132 2724/2761/1132 -f 2725/2762/1133 2472/2503/589 2471/2502/1050 -f 2726/2763/1134 2727/2764/1135 2111/2134/825 -f 2728/2765/1136 2729/2766/1137 2730/2767/1138 -f 2731/2768/1139 2732/2769/1140 2733/2770/1134 -f 2734/2771/1141 2735/2772/1142 2736/2773/1143 -f 2726/2763/1134 2111/2134/825 2453/2484/1039 -f 2727/2764/1135 2726/2763/1134 2729/2766/1137 -f 2737/2774/1137 2738/2775/1046 2739/2776/1144 -f 2738/2775/1046 2737/2774/1137 2733/2770/1134 -f 2732/2769/1140 2740/2777/1145 2473/2504/1051 -f 2741/2778/1048 2742/2779/1146 2743/2780/1147 -f 2678/2714/572 2680/2716/572 2699/2735/572 -f 2699/2735/572 2700/2781/572 2675/2711/572 -f 2744/2782/570 2087/2110/570 2402/2431/570 -f 2657/2693/554 2745/2783/554 2658/2694/554 -f 2646/2682/554 2648/2684/554 2745/2783/554 -f 2657/2693/554 2746/2784/554 2646/2682/554 -f 2555/2588/1073 2097/2120/814 2099/2122/816 -f 2099/2122/816 2650/2686/564 2649/2685/564 -f 2566/2599/1084 2747/2785/1124 2748/2786/1148 -f 2570/2603/554 2579/2612/1089 2580/2613/1090 -f 2749/2787/1149 2565/2598/1083 2566/2599/1084 -f 2747/2785/1124 2750/2788/1150 2748/2786/1148 -f 2751/2789/554 2750/2788/1150 2747/2785/1124 -f 2752/2790/554 2751/2789/554 2753/2791/1122 -f 2685/2721/554 2754/2792/1121 2686/2722/554 -f 2755/2793/554 2752/2790/554 2754/2792/1121 -f 2756/2794/554 2755/2793/554 2685/2721/554 -f 2757/2795/554 2758/2796/554 2756/2794/554 -f 2757/2795/554 2659/2695/554 2758/2796/554 -f 2657/2693/554 2646/2682/554 2745/2783/554 -f 2574/2607/824 2704/2741/823 2759/2797/1151 -f 2753/2791/1122 2751/2789/554 2747/2785/1124 -f 2754/2792/1121 2752/2790/554 2753/2791/1122 -f 2685/2721/554 2755/2793/554 2754/2792/1121 -f 2757/2795/554 2756/2794/554 2685/2721/554 -f 2760/2798/1152 2761/2799/1153 2762/2800/1154 -f 2757/2795/554 2657/2693/554 2659/2695/554 -f 2303/2328/554 2692/2728/1103 2302/2327/943 -f 2310/2337/570 2313/2341/570 2308/2335/570 -f 2763/2801/1155 2764/2802/1156 2765/2803/1157 -f 2429/2460/1029 2438/2469/1035 2763/2801/1155 -f 2766/2804/1033 2767/2805/1158 2628/2664/1034 -f 2767/2805/1158 2766/2804/1033 2768/2806/1159 -f 2768/2806/1159 2765/2803/1157 2764/2802/1156 -f 2769/2807/1160 2770/2808/1161 2771/2809/1162 -f 2770/2808/1161 2772/2810/1163 2773/2811/1164 -f 2774/2812/1165 2769/2807/1160 2775/2813/1166 -f 2772/2810/1163 2776/2814/1167 2777/2815/1168 -f 2778/2816/1169 2774/2812/1165 2779/2817/1170 -f 2776/2814/1167 2780/2818/1171 2781/2819/1172 -f 2782/2820/1173 2778/2816/1169 2783/2821/1174 -f 2780/2818/1171 2784/2822/1175 2785/2823/1176 -f 2786/2824/1177 2782/2820/1173 2787/2825/1178 -f 2784/2822/1175 2645/2681/1106 2788/2826/1179 -f 2761/2799/1153 2786/2824/1177 2789/2827/1180 -f 2790/2828/572 2791/2829/572 2792/2830/1181 -f 2793/2831/564 2634/2670/564 2633/2669/564 -f 2635/2671/564 2794/2832/564 2633/2669/564 -f 2795/2833/549 2796/2834/549 2797/2835/549 -f 2794/2832/564 2798/2836/564 2799/2837/564 -f 2068/2090/549 2800/2838/549 2629/2665/1102 -f 2031/2053/787 2033/2055/554 2626/2662/790 -f 2801/2839/1182 2802/2840/1183 2803/2841/1184 -f 2803/2841/1184 2804/2842/1185 2805/2843/1186 -f 2805/2843/1186 2801/2839/1182 2803/2841/1184 -f 2806/2844/1187 2807/2845/1188 2801/2839/1182 -f 2808/2846/1189 2809/2847/937 2807/2845/1188 -f 2810/2848/1190 2254/2279/924 2811/2849/940 -f 2036/2058/791 2096/2119/813 2034/2056/789 -f 2812/2850/1191 2813/2851/944 2809/2847/937 -f 2254/2279/924 2035/2057/790 2811/2849/940 -f 2810/2848/1190 2814/2852/939 2813/2851/944 -f 2036/2058/791 2251/2276/922 2249/2274/920 -f 2160/2183/843 2250/2275/921 2159/2182/842 -f 2250/2275/921 2251/2276/922 2159/2182/842 -f 2249/2274/920 2815/2853/1192 2816/2854/797 -f 2160/2183/843 2120/2143/830 2817/2855/1193 -f 2815/2853/1192 2249/2274/920 2250/2275/921 -f 2818/2856/1194 2819/2857/1195 2820/2858/1196 -f 2819/2857/1195 2818/2856/1194 2821/2859/1197 -f 2822/2860/1198 2823/2861/1199 2824/2862/1200 -f 2821/2859/1197 2825/2863/1201 2826/2864/1202 -f 2803/2841/1184 2827/2865/1203 2804/2842/1185 -f 2182/2207/855 2394/2423/1014 2805/2843/1186 -f 2394/2423/1014 2392/2421/1013 2806/2844/1187 -f 2390/2419/1012 2386/2415/1010 2812/2850/1191 -f 2806/2844/1187 2392/2421/1013 2390/2419/1012 -f 2386/2415/1010 2171/2195/849 2810/2848/1190 -f 2811/2849/940 2814/2852/939 2810/2848/1190 -f 2828/2866/554 2829/2867/554 2255/2280/554 -f 2095/2118/787 2035/2057/790 2034/2056/789 -f 2246/2271/919 2159/2182/842 2251/2276/922 -f 2810/2848/1190 2171/2195/849 2389/2418/1011 -f 2246/2271/919 2251/2276/922 2036/2058/791 -f 2254/2279/924 2389/2418/1011 2041/2063/796 -f 2830/2868/1188 2293/2318/937 2111/2134/825 -f 2831/2869/1204 2830/2868/1188 2727/2764/1135 -f 2832/2870/554 2833/2871/1205 2831/2869/1204 -f 2834/2872/554 2832/2870/554 2727/2764/1135 -f 2835/2873/1206 2834/2872/554 2728/2765/1136 -f 2728/2765/1136 2736/2773/1143 2735/2772/1142 -f 2316/2344/570 2280/2305/570 2279/2304/570 -f 2727/2764/1135 2830/2868/1188 2111/2134/825 -f 2832/2870/554 2831/2869/1204 2727/2764/1135 -f 2728/2765/1136 2834/2872/554 2727/2764/1135 -f 2735/2772/1142 2835/2873/1206 2728/2765/1136 -f 2296/2321/940 2626/2662/790 2305/2332/554 -f 2836/2874/1026 2837/2875/1026 2838/2876/1026 -f 2839/2877/1026 2840/2878/1026 2841/2879/1026 -f 2839/2877/1026 2841/2879/1026 2838/2876/1026 -f 2837/2875/1026 2839/2877/1026 2838/2876/1026 -f 2837/2875/1026 2836/2874/1026 2842/2880/1026 -f 2842/2880/1026 2843/2881/1026 2844/2882/1026 -f 2605/2640/1026 2424/2455/1026 2844/2882/1026 -f 2845/2883/1207 2846/2884/1208 2847/2885/1209 -f 2847/2885/1209 2848/2886/1210 2849/2887/1211 -f 2850/2888/1212 2851/2889/1213 2852/2890/1214 -f 2853/2891/1215 2851/2889/1213 2850/2888/1212 -f 2595/2630/1095 2854/2892/1216 2846/2884/1208 -f 2592/2627/1026 2597/2632/1026 2840/2878/1026 -f 2844/2882/1026 2855/2893/1026 2842/2880/1026 -f 2161/2894/570 2077/2099/570 2310/2337/570 -f 2856/2895/572 2857/2896/572 2858/2897/572 -f 2859/2898/554 2860/2899/554 2861/2900/554 -f 2862/2901/570 2863/2902/570 2864/2903/570 -f 2861/2904/554 2865/2905/554 2866/2906/554 -f 2867/2907/553 1481/1492/553 1483/1494/553 -f 2868/2908/554 1484/1495/554 1486/1497/554 -f 1498/1509/562 1487/1498/555 1489/1500/557 -f 2869/2909/559 1490/1501/558 1492/1503/559 -f 2870/2910/560 1493/1504/560 1495/1506/560 -f 1489/1500/557 1496/1507/561 1498/1509/562 -f 2871/2911/554 1499/1510/554 1501/1512/554 -f 2872/2912/563 1502/1513/563 1504/1515/563 -f 1555/1566/581 1546/1557/573 1548/1559/575 -f 1525/1536/569 1549/1560/576 1528/1539/571 -f 1550/1561/576 1549/1560/576 1552/1563/578 -f 1552/1563/578 1551/1562/577 1554/1565/580 -f 1554/1565/580 1553/1564/579 1547/1558/574 -f 2873/2913/582 1557/1568/582 1559/1570/582 -f 2874/2914/582 1560/1571/582 1562/1573/582 -f 2875/2915/570 1563/1574/570 1565/1576/570 -f 2876/2916/554 1566/1577/554 1568/1579/554 -f 2877/2917/554 1569/1580/554 1571/1582/554 -f 2878/2918/582 1572/1583/582 1574/1585/582 -f 1722/1739/621 1580/1591/583 1582/1593/585 -f 2106/2129/821 1583/1594/586 1585/1596/588 -f 2049/2071/564 1586/1597/564 1588/1599/589 -f 2879/2919/1037 1592/1603/590 1584/1595/587 -f 2880/2920/572 1596/1607/572 1598/1609/572 -f 1723/1740/572 1599/1610/572 1601/1612/572 -f 1724/1741/620 1602/1613/591 1604/1615/593 -f 1725/1742/582 1605/1616/582 1607/1618/582 -f 1582/1593/585 1581/1592/584 1609/1620/595 -f 1601/1612/572 1600/1611/572 1611/2921/572 -f 1604/1615/593 1603/1614/592 1613/1625/597 -f 1607/1618/582 1606/1617/582 1615/1627/582 -f 1609/1620/595 1608/1619/594 1617/1629/599 -f 1611/2921/572 1610/1630/572 1619/1632/572 -f 1613/1625/597 1612/1624/596 1621/1634/601 -f 1615/1627/582 1614/1626/582 1623/1636/582 -f 1617/2922/599 1616/2923/598 1625/2924/603 -f 1619/1632/572 1618/1631/572 1627/1640/572 -f 1621/2925/601 1620/2926/600 1629/2927/605 -f 1623/1636/582 1622/1635/582 1631/1645/582 -f 2881/2928/626 1632/2929/606 1634/2930/608 -f 1627/1640/572 1626/1639/572 1636/1650/572 -f 2882/2931/625 1637/1651/609 1639/1653/611 -f 1631/1645/582 1630/1644/582 1641/1655/582 -f 1634/2930/608 1633/1656/607 1643/1658/613 -f 1636/1650/572 1635/1649/572 1645/1660/572 -f 1639/1653/611 1638/1652/610 1647/1662/615 -f 1641/1655/582 1640/1654/582 1649/1664/582 -f 1643/1658/613 1642/1657/612 1651/1666/617 -f 1645/1660/572 1644/1659/572 1653/1668/572 -f 1647/1662/615 1646/1661/614 1655/1670/619 -f 1649/1664/582 1648/1663/582 1657/1672/582 -f 1651/1666/617 1650/1665/616 1659/2932/620 -f 1653/1668/572 1652/1667/572 1661/1677/572 -f 1655/1670/619 1654/1669/618 1663/1679/621 -f 1657/1672/582 1656/1671/582 1665/1681/582 -f 1659/2932/620 1658/2933/591 1667/2934/593 -f 1661/1677/572 1660/1676/572 1669/1685/572 -f 1663/1679/621 1662/1678/583 1671/1687/585 -f 1665/1681/582 1664/1680/582 1673/1689/582 -f 1667/2934/593 1666/2935/622 1675/2936/597 -f 1669/1685/572 1668/1684/572 1677/1693/572 -f 1671/1687/585 1670/1686/584 1679/1695/595 -f 1673/1689/582 1672/1688/582 1681/1697/582 -f 1675/2936/597 1674/2937/596 1683/2938/601 -f 1677/1693/572 1676/1692/572 1685/1701/572 -f 1679/1695/595 1678/1694/594 1687/1703/624 -f 1681/1697/582 1680/1696/582 1689/1705/582 -f 1683/1699/601 1682/1698/600 1691/1707/625 -f 1685/1701/572 1684/1700/572 1693/1709/572 -f 1687/1703/624 1686/1702/623 1695/1711/626 -f 1689/1705/582 1688/1704/582 1697/1713/582 -f 1691/1707/625 1690/1706/604 1699/1715/628 -f 1693/1709/572 1692/1708/572 1701/1717/572 -f 1695/2939/626 1694/1718/602 1703/1720/608 -f 1697/1713/582 1696/1712/582 1705/1722/582 -f 1699/1715/628 1698/1714/627 1707/1724/615 -f 1701/1717/572 1700/1716/572 1709/1726/572 -f 1703/1720/608 1702/1719/607 1711/1728/613 -f 1705/1722/582 1704/1721/582 1713/1730/582 -f 1707/1724/615 1706/1723/614 1715/1732/619 -f 1709/1726/572 1708/1725/572 1717/1734/572 -f 1711/1728/613 1710/1727/612 1719/1736/629 -f 1713/1730/582 1712/1729/582 1721/1738/582 -f 1715/1732/619 1714/1731/618 1722/1739/621 -f 1717/1734/572 1716/1733/572 1723/1740/572 -f 1719/1736/629 1718/1735/616 1724/1741/620 -f 1721/1738/582 1720/1737/582 1725/1742/582 -f 1749/1766/554 1726/1743/554 1728/1745/554 -f 1728/1745/554 1727/1744/554 1730/1747/554 -f 1730/1747/554 1729/1746/554 1732/1749/554 -f 1732/1749/554 1731/1748/554 1734/1751/554 -f 1734/1751/554 1733/1750/554 1736/1753/554 -f 1736/1753/554 1735/1752/554 1738/1755/554 -f 1738/1755/554 1737/1754/554 1740/1757/554 -f 1740/1757/554 1739/1756/554 1742/1759/554 -f 1742/1759/554 1741/1758/554 1744/1761/554 -f 1744/1761/554 1743/1760/554 1746/1763/554 -f 1746/1763/554 1745/1762/554 1748/1765/554 -f 1748/1765/554 1747/1764/554 1749/1766/554 -f 1760/1777/637 1750/1767/630 1752/1769/632 -f 1812/1829/669 1753/1770/633 1755/1772/635 -f 1765/1782/641 1759/1776/636 1760/1777/637 -f 1755/1772/635 1754/1771/634 1762/1779/639 -f 2883/2940/746 1764/1781/640 1765/1782/641 -f 1762/1779/639 1761/1778/638 1767/1784/643 -f 1776/1793/650 1769/1786/644 1771/1788/646 -f 1767/1784/643 1766/1783/642 1773/1790/648 -f 1781/1798/654 1775/1792/649 1776/1793/650 -f 1773/1790/648 1772/1789/647 1778/1795/652 -f 1786/1803/657 1780/1797/653 1781/1798/654 -f 1778/1795/652 1777/1794/651 1783/1800/656 -f 1791/1808/660 1785/1802/651 1786/1803/657 -f 1783/1800/656 1782/1799/655 1788/1805/654 -f 1796/1813/648 1790/1807/659 1791/1808/660 -f 1788/1805/654 1787/1804/658 1793/1810/661 -f 1801/1818/664 1795/1812/662 1796/1813/648 -f 1793/1810/661 1792/1809/644 1798/1815/663 -f 1807/1824/667 1800/1817/638 1801/1818/664 -f 2884/2941/746 1802/1819/640 1804/1821/641 -f 1811/1828/635 1806/1823/666 1807/1824/667 -f 1804/1821/641 1803/1820/665 1809/1826/668 -f 1752/1769/632 1751/1768/631 1811/1828/635 -f 1809/1826/668 1808/1825/630 1812/1829/669 -f 1830/1847/687 1819/1836/676 1828/1845/685 -f 1842/1859/699 1839/1856/696 1830/1847/687 -f 1871/1888/728 1841/1858/698 1842/1859/699 -f 1852/1869/709 1847/1864/704 1848/1865/705 -f 1847/1864/704 1852/1869/709 1850/1867/707 -f 1860/1877/717 1843/1860/700 1857/1874/714 -f 1850/1867/707 1862/1879/719 1847/1864/704 -f 1847/1864/704 1863/1880/720 1845/1862/702 -f 1860/1877/717 1857/1874/714 1862/1879/719 -f 1854/1871/711 1861/1878/718 1857/1874/714 -f 1867/1884/724 1865/1882/722 1846/1863/703 -f 1878/1895/735 1866/1883/723 1867/1884/724 -f 1870/1887/727 1868/1885/725 1813/1830/670 -f 2333/2362/959 1869/1886/726 1870/1887/727 -f 1830/1847/687 1840/1857/697 1819/1836/676 -f 1841/1858/698 1871/1888/728 1873/1890/730 -f 1880/1897/737 1877/1894/734 1867/1884/724 -f 1882/1899/739 1879/1896/736 1880/1897/737 -f 2332/2361/958 1881/1898/738 1880/1897/737 -f 1872/1889/729 1883/1900/740 1884/1901/741 -f 1892/1909/651 1888/1905/652 1890/1907/742 -f 1896/1913/655 1891/1908/656 1892/1909/651 -f 1890/1907/742 1889/1906/648 1894/1911/642 -f 1898/1915/744 1895/1912/654 1896/1913/655 -f 1902/1919/644 1897/1914/743 1898/1915/744 -f 1894/1911/642 1893/1910/643 1900/1917/638 -f 1904/1921/645 1901/1918/746 1902/1919/644 -f 1908/1925/665 1903/1920/641 1904/1921/645 -f 1900/1917/638 1899/1916/745 1906/1923/634 -f 1910/1927/630 1907/1924/668 1908/1925/665 -f 1911/1928/633 1909/1926/669 1910/1927/630 -f 1906/1923/634 1905/1922/635 1911/1928/633 -f 1916/1933/564 1912/1929/564 1914/1931/564 -f 1920/1937/564 1915/1932/564 1916/1933/564 -f 1914/1931/564 1913/1930/564 1918/1935/564 -f 1922/1939/564 1919/1936/564 1920/1937/564 -f 1925/1943/564 1921/1938/564 1922/1939/564 -f 1918/1935/564 1917/1934/564 1924/1941/564 -f 1927/1945/564 1885/1942/564 1925/1943/564 -f 1931/1949/564 1926/1944/564 1927/1945/564 -f 1924/1941/564 1923/1940/564 1929/1947/564 -f 1933/1951/564 1930/1948/564 1931/1949/564 -f 1934/1952/564 1932/1950/564 1933/1951/564 -f 1929/1947/564 1928/1946/564 1934/1952/564 -f 1942/1960/648 1938/1956/647 1940/1958/652 -f 1951/1969/643 1941/1959/642 1942/1960/648 -f 1940/1958/652 1939/1957/651 1945/1963/656 -f 1945/1963/656 1944/1962/655 1949/1967/654 -f 1961/1979/639 1950/1968/638 1951/1969/643 -f 1949/1967/654 1948/1966/658 1954/1972/747 -f 1974/1992/752 1957/1975/748 1959/1977/749 -f 1971/1989/635 1960/1978/634 1961/1979/639 -f 2885/2942/750 1963/1981/750 1965/1983/751 -f 1958/1976/748 1957/1975/748 1969/1987/668 -f 1973/1991/669 1970/1988/633 1971/1989/635 -f 1969/1987/668 1968/1986/630 1973/1991/669 -f 1964/1982/751 1974/1992/752 1965/1983/751 -f 2886/2943/754 1954/1972/747 1975/1994/753 -f 2885/2942/750 1976/1995/754 1963/1981/750 -f 2887/2944/564 1887/1997/564 1978/1999/564 -f 2022/2044/779 1982/2004/756 1984/2006/758 -f 1984/2006/758 1983/2005/757 1990/2012/760 -f 1990/2012/760 1989/2011/759 1994/2016/762 -f 2888/2945/1217 1997/2019/763 1999/2021/765 -f 1999/2021/765 1998/2020/764 2003/2025/767 -f 2003/2025/767 2002/2024/766 2007/2029/769 -f 2889/2946/564 2008/2030/564 2010/2032/770 -f 2890/2947/771 2010/2032/770 2013/2035/771 -f 2007/2029/769 2006/2028/768 2015/2037/773 -f 2021/2043/778 2017/2039/774 2019/2041/776 -f 2478/2511/1052 2020/2042/777 2021/2043/778 -f 2015/2037/773 2014/2036/772 2022/2044/779 -f 2277/2302/931 2026/2048/783 2023/2045/780 -f 2019/2041/776 2018/2040/775 2038/2060/793 -f 2891/2948/549 2043/2065/549 2045/2067/549 -f 2853/2891/1215 2051/2073/798 2053/2075/800 -f 2892/2949/549 2058/2080/549 2060/2082/549 -f 2052/2074/799 2065/2087/804 2053/2075/800 -f 2434/2465/1034 2067/2089/806 2069/2091/807 -f 2893/2950/572 2078/2101/572 2080/2103/572 -f 2080/2103/572 2079/2102/572 2082/2105/572 -f 2081/2104/572 2083/2106/572 2082/2105/572 -f 2040/2062/795 2039/2061/794 2094/2117/812 -f 2816/2854/797 2095/2118/787 2096/2119/813 -f 2894/2951/1073 2103/2126/819 2105/2128/589 -f 1583/1594/586 2106/2129/821 2108/2131/816 -f 2160/2183/843 2118/2141/828 2120/2143/830 -f 2175/2436/570 2149/2172/570 2085/2108/570 -f 2895/2952/564 2166/2190/564 2168/2192/564 -f 2278/2303/932 2177/2202/582 2179/2204/852 -f 2896/2953/1218 2186/2211/859 2188/2213/861 -f 2382/2411/1008 2189/2214/862 2184/2209/857 -f 2210/2235/883 2206/2231/879 2208/2233/881 -f 2897/2954/570 2258/2283/570 2260/2285/570 -f 2898/2955/554 2261/2286/554 2263/2288/554 -f 2899/2956/1219 2264/2289/925 2266/2291/925 -f 2900/2957/549 2267/2292/549 2269/2294/549 -f 2901/2958/570 2270/2295/927 2272/2297/570 -f 2252/2277/923 2025/2047/782 2278/2303/932 -f 2287/2312/582 2282/2307/582 2283/2308/933 -f 2282/2307/582 2284/2309/582 2252/2277/923 -f 2283/2308/933 2285/2310/934 2287/2312/582 -f 2285/2310/934 2283/2308/933 2289/2314/935 -f 2023/2045/780 2027/2049/784 2292/2317/936 -f 2312/2339/570 2317/2345/570 2309/2340/570 -f 2322/2351/948 2318/2347/945 2320/2349/947 -f 2902/2959/564 2321/2350/564 2322/2351/948 -f 2903/2960/1220 1817/1834/674 2323/2352/949 -f 1871/1888/728 2324/2353/950 1872/1889/729 -f 2324/2353/950 2325/2354/951 1883/1900/740 -f 2334/2363/960 2325/2354/951 2327/2356/953 -f 1871/1888/728 1842/1859/699 2324/2353/950 -f 1836/1853/693 2329/2358/955 1835/1852/692 -f 2904/2961/1221 2329/2358/955 2328/2357/954 -f 2904/2961/1221 2328/2357/954 1879/1896/736 -f 1831/1848/688 1828/1845/685 2331/2360/957 -f 1819/1836/676 1821/1838/678 1833/1850/690 -f 2208/2233/881 2207/2232/880 2239/2264/912 -f 2370/2399/996 2347/2376/973 2202/2227/875 -f 2347/2376/973 2348/2377/974 2203/2228/876 -f 2351/2380/977 2352/2381/978 2354/2383/980 -f 2357/2386/983 2353/2382/979 2355/2384/981 -f 2344/2373/970 2350/2379/976 2360/2389/986 -f 2366/2395/992 2365/2394/991 2352/2381/978 -f 2364/2393/990 2366/2395/992 2351/2380/977 -f 2366/2395/992 2360/2389/986 2365/2394/991 -f 2366/2395/992 2364/2393/990 2360/2389/986 -f 2354/2383/980 2368/2397/994 2190/2215/863 -f 2368/2397/994 2244/2269/917 2191/2216/864 -f 2245/2270/918 2369/2398/995 2213/2238/886 -f 2369/2398/995 2227/2252/900 2211/2236/884 -f 2237/2262/910 2370/2399/996 2207/2232/880 -f 2229/2254/902 2349/2378/975 2230/2255/903 -f 2219/2244/892 2371/2400/997 2191/2216/864 -f 2371/2400/997 2373/2402/999 2372/2401/998 -f 2374/2403/1000 2235/2260/908 2372/2401/998 -f 2198/2223/871 2375/2404/1001 2231/2256/904 -f 2198/2223/871 2236/2261/909 2377/2406/1003 -f 2375/2404/1001 2378/2407/1004 2229/2254/902 -f 2905/2962/1222 2379/2408/1005 2375/2404/1001 -f 2378/2407/1004 2379/2408/1005 2232/2257/905 -f 2232/2257/905 2203/2228/876 2378/2407/1004 -f 2241/2266/914 2380/2409/1006 2240/2265/913 -f 2217/2242/890 2380/2409/1006 2218/2243/891 -f 2371/2400/997 2218/2243/891 2373/2402/999 -f 2226/2251/899 2239/2264/912 2234/2259/907 -f 2189/2214/862 2382/2411/1008 2187/2212/860 -f 2054/2076/801 2383/2412/1009 2118/2141/828 -f 2383/2412/1009 2054/2076/801 2094/2117/812 -f 2169/2193/847 2171/2195/849 2387/2416/846 -f 2387/2416/846 2386/2415/1010 2391/2420/827 -f 2391/2420/827 2390/2419/1012 2393/2422/826 -f 2393/2422/826 2392/2421/1013 2395/2424/1015 -f 2906/2963/554 2400/2429/554 2401/2430/554 -f 2606/2641/1097 2407/2437/1023 2409/2439/1025 -f 2407/2437/1023 2410/2964/554 2408/2438/1024 -f 2907/2965/564 2412/2966/564 2414/2967/564 -f 2908/2968/570 2417/2448/570 2419/2450/570 -f 2909/2969/564 2420/2451/564 2422/2453/564 -f 2910/2970/1223 2426/2457/1027 2428/2459/1027 -f 2433/2464/1033 2432/2463/1032 2430/2461/1030 -f 2432/2463/1032 2433/2464/1033 2434/2465/1034 -f 2911/2971/549 2435/2466/549 2437/2468/549 -f 2912/2972/927 2443/2474/927 2445/2476/570 -f 2163/2187/845 2463/2494/582 2278/2303/932 -f 2913/2973/582 2464/2495/1044 2178/2203/582 -f 2914/2974/935 2179/2204/852 2465/2496/935 -f 2468/2499/1047 2156/2179/839 2467/2498/1046 -f 2152/2175/837 2469/2500/1048 2150/2173/835 -f 2740/2777/1145 2471/2502/1050 2473/2504/1051 -f 2467/2498/1046 2151/2174/836 2470/2501/1049 -f 2915/2975/564 2474/2505/564 2476/2507/564 -f 2020/2042/777 2478/2511/1052 2480/2513/570 -f 2916/2976/1053 2481/2514/1053 2055/2077/802 -f 2917/2977/1053 2439/2470/1036 2482/2515/1053 -f 2533/2566/1059 2490/2523/570 2492/2525/1055 -f 2918/2978/1224 2493/2526/564 2495/2528/1056 -f 2919/2979/572 2496/2529/572 2498/2531/572 -f 2920/2980/582 2499/2532/582 2501/2534/582 -f 2497/2530/572 2502/2535/572 2498/2531/572 -f 2918/2978/1224 2495/2528/1056 2491/2524/1054 -f 2507/2540/1057 2504/2537/1057 2506/2539/564 -f 2539/2572/1069 2504/2537/1057 2508/2541/1058 -f 2921/2981/1061 2509/2542/1059 2511/2544/1061 -f 2922/2982/582 2512/2545/582 2514/2547/582 -f 2488/2521/582 2514/2547/582 2487/2520/582 -f 2529/2562/1066 2518/2551/570 2520/2553/1063 -f 2923/2983/554 2521/2554/554 2523/2556/1065 -f 2528/2561/572 2524/2557/572 2526/2559/572 -f 2924/2984/572 2503/2536/572 2527/2560/572 -f 2924/2984/572 2527/2560/572 2526/2559/572 -f 2520/2553/1063 2523/2556/1065 2529/2562/1066 -f 2925/2985/554 2530/2563/1067 2532/2565/554 -f 2492/2525/1055 2520/2553/1063 2533/2566/1059 -f 2920/2980/582 2501/2534/582 2486/2519/582 -f 2531/2564/1067 2530/2563/1067 2538/2571/1068 -f 2537/2570/1068 2539/2572/1069 2538/2571/1068 -f 2926/2986/1072 2552/2585/1072 2554/2587/1072 -f 2927/2987/1225 2560/2593/1078 2562/2595/1080 -f 2928/2988/1226 2573/2606/1086 2575/2608/1087 -f 2929/2989/1227 2576/2609/549 2578/2611/1088 -f 2608/2643/1091 2582/2615/549 2584/2617/1091 -f 2930/2990/572 2585/2618/1092 2587/2620/572 -f 2611/2991/570 2586/2621/1093 2588/2623/570 -f 2931/2992/1094 2589/2624/582 2591/2626/1094 -f 2854/2892/1216 2595/2630/1095 2065/2087/804 -f 2932/2993/572 2599/2634/572 2601/2636/572 -f 2599/2634/572 2602/2637/572 2600/2635/572 -f 2596/2631/1026 2593/2628/1026 2425/2456/1026 -f 2320/2349/947 2319/2348/946 2409/2439/1025 -f 2930/2990/572 2587/2620/572 2584/2617/1091 -f 2590/2625/582 2589/2624/582 2610/2645/1100 -f 2931/2992/1094 2591/2626/1094 2588/2647/570 -f 2933/2994/549 2612/2995/549 2609/2996/1099 -f 2614/2650/1101 2088/2111/808 2615/2651/809 -f 2934/2997/572 2616/2652/572 2618/2654/572 -f 2617/2653/572 2619/2655/572 2618/2654/572 -f 2619/2655/572 2621/2657/572 2620/2656/572 -f 2161/2184/570 2623/2659/570 2075/2100/570 -f 2800/2838/549 2627/2663/806 2629/2665/1102 -f 2935/2998/582 2630/2666/582 2632/2668/582 -f 2638/2674/549 2639/2675/549 2636/2672/549 -f 2936/2999/1105 2642/2678/1104 2644/2680/1105 -f 2788/2826/1179 2645/2681/1106 2629/2665/1102 -f 2937/3000/564 2649/2685/564 2651/2687/564 -f 2928/2988/1226 2938/3001/1228 2573/2606/1086 -f 2929/2989/1227 2578/2611/1088 2656/2692/1110 -f 2939/3002/549 2660/2696/549 2662/2698/549 -f 2940/3003/1229 2663/2699/1111 2665/2701/1113 -f 2669/2705/1117 2666/2702/1114 2668/2704/1116 -f 2663/2699/1111 2669/2705/1117 2664/2700/1112 -f 2941/3004/1118 2670/2706/1118 2672/2708/1119 -f 2941/3004/1118 2673/2709/554 2670/2706/1118 -f 2699/2735/572 2675/2711/572 2677/2713/572 -f 2656/2692/1110 2655/2691/1109 2682/2718/1120 -f 2298/2323/941 2301/2329/942 2684/2720/1122 -f 2568/2601/554 2647/2683/554 2569/2602/1085 -f 2684/2720/1122 2691/2727/1124 2298/2323/941 -f 2302/2327/943 2692/2728/1103 2694/2730/1125 -f 2624/2660/943 2695/2731/1125 2641/2677/1103 -f 2942/3005/570 2667/2703/1115 2697/2733/570 -f 2700/2736/572 2462/2509/572 2698/2734/572 -f 2943/3006/1126 2701/2738/1126 2703/2740/1126 -f 2759/2797/1151 2704/2741/823 2558/2591/1076 -f 2944/3007/549 2705/2742/549 2707/2744/549 -f 2711/2748/1129 2708/2745/1127 2710/2747/1128 -f 2936/2999/1105 2644/2680/1105 2711/2748/1129 -f 2945/3008/549 2712/2749/549 2642/2678/1104 -f 2946/3009/1130 2713/2750/1130 2715/2752/1130 -f 2947/3010/1131 2716/2753/1131 2718/2755/1131 -f 2948/3011/554 2719/2756/554 2721/2758/554 -f 2949/3012/1132 2722/2759/1132 2724/2761/1132 -f 2731/2768/1139 2725/2762/1133 2471/2502/1050 -f 2736/2773/1143 2728/2765/1136 2730/2767/1138 -f 2725/2762/1133 2731/2768/1139 2733/2770/1134 -f 2730/2767/1138 2734/2771/1141 2736/2773/1143 -f 2728/2765/1136 2727/2764/1135 2729/2766/1137 -f 2743/2780/1147 2737/2774/1137 2739/2776/1144 -f 2473/2504/1051 2738/2775/1046 2733/2770/1134 -f 2733/2770/1134 2732/2769/1140 2473/2504/1051 -f 2739/2776/1144 2741/2778/1048 2743/2780/1147 -f 2555/2588/1073 2099/2122/816 2649/2685/564 -f 2748/2786/1148 2749/2787/1149 2566/2599/1084 -f 2575/2608/1087 2574/2607/824 2759/2797/1151 -f 2950/3013/1230 2760/2798/1152 2762/2800/1154 -f 2765/2803/1157 2429/2460/1029 2763/2801/1155 -f 2627/2663/806 2766/2804/1033 2628/2664/1034 -f 2764/2802/1156 2767/2805/1158 2768/2806/1159 -f 2775/2813/1166 2769/2807/1160 2771/2809/1162 -f 2771/2809/1162 2770/2808/1161 2773/2811/1164 -f 2779/2817/1170 2774/2812/1165 2775/2813/1166 -f 2773/2811/1164 2772/2810/1163 2777/2815/1168 -f 2783/2821/1174 2778/2816/1169 2779/2817/1170 -f 2777/2815/1168 2776/2814/1167 2781/2819/1172 -f 2787/2825/1178 2782/2820/1173 2783/2821/1174 -f 2781/2819/1172 2780/2818/1171 2785/2823/1176 -f 2789/2827/1180 2786/2824/1177 2787/2825/1178 -f 2785/2823/1176 2784/2822/1175 2788/2826/1179 -f 2762/2800/1154 2761/2799/1153 2789/2827/1180 -f 2951/3014/1157 2790/2828/572 2792/2830/1181 -f 2952/3015/549 2795/2833/549 2797/2835/549 -f 2633/2669/564 2794/2832/564 2799/2837/564 -f 2069/2091/807 2068/2090/549 2629/2665/1102 -f 2805/2843/1186 2806/2844/1187 2801/2839/1182 -f 2806/2844/1187 2808/2846/1189 2807/2845/1188 -f 2808/2846/1189 2812/2850/1191 2809/2847/937 -f 2812/2850/1191 2810/2848/1190 2813/2851/944 -f 2096/2119/813 2249/2274/920 2816/2854/797 -f 2250/2275/921 2160/2183/843 2817/2855/1193 -f 2817/2855/1193 2815/2853/1192 2250/2275/921 -f 2824/2862/1200 2818/2856/1194 2820/2858/1196 -f 2826/2864/1202 2819/2857/1195 2821/2859/1197 -f 2820/2858/1196 2822/2860/1198 2824/2862/1200 -f 2804/2842/1185 2182/2207/855 2805/2843/1186 -f 2805/2843/1186 2394/2423/1014 2806/2844/1187 -f 2808/2846/1189 2390/2419/1012 2812/2850/1191 -f 2808/2846/1189 2806/2844/1187 2390/2419/1012 -f 2812/2850/1191 2386/2415/1010 2810/2848/1190 -f 2257/2282/554 2828/2866/554 2255/2280/554 -f 2254/2279/924 2810/2848/1190 2389/2418/1011 -f 2041/2063/796 2246/2271/919 2036/2058/791 -f 2036/2058/791 2254/2279/924 2041/2063/796 -f 2290/2315/570 2316/2344/570 2279/2304/570 -f 2855/2893/1026 2837/2875/1026 2842/2880/1026 -f 2843/2881/1026 2605/2640/1026 2844/2882/1026 -f 2953/3016/1231 2845/2883/1207 2847/2885/1209 -f 2953/3016/1231 2847/2885/1209 2849/2887/1211 -f 2954/3017/1210 2850/2888/1212 2852/2890/1214 -f 2051/2073/798 2853/2891/1215 2850/2888/1212 -f 2845/2883/1207 2595/2630/1095 2846/2884/1208 -f 2839/2877/1026 2592/2627/1026 2840/2878/1026 -f 2315/2343/570 2161/2894/570 2310/2337/570 -f 2955/3018/572 2856/2895/572 2858/2897/572 -f 2956/3019/570 2862/2901/570 2864/2903/570 -f 2859/2898/554 2861/2900/554 2866/3020/554 -f 1472/1483/549 1474/1485/549 2957/3021/549 -f 1472/1483/549 1477/1488/549 1476/1487/549 -f 1477/1488/549 1472/1483/549 2957/3021/549 -f 1555/1566/581 1475/1486/550 1477/1488/549 +f 2349/2039/885 2350/2040/886 2351/2041/887 +f 2351/2041/887 2352/2042/888 2088/1827/875 +f 2353/2043/889 2354/2044/889 2355/2045/890 +f 2356/2046/891 1881/1640/867 1880/1639/867 +f 2357/2047/892 2358/2048/893 2359/2049/868 +f 2360/2050/894 2361/2051/894 2362/2052/895 +f 2363/1784/868 2364/1783/896 2365/2018/897 +f 2268/1985/868 2366/2053/898 2267/1984/868 +f 2367/2002/899 2368/1720/900 1820/1579/866 +f 2369/2054/901 2354/2044/889 2353/2043/889 +f 2370/2055/902 2371/2056/866 2372/2057/866 +f 1844/1603/866 1843/1602/866 2373/2058/903 +f 2373/2058/903 2374/2059/866 1844/1603/866 +f 2372/2057/866 1832/1591/866 2375/2060/904 +f 1832/1591/866 1834/1593/866 2375/2060/904 +f 1846/1605/872 1845/1604/872 2376/2061/905 +f 2377/2062/872 2378/2063/906 2376/2061/905 +f 2370/2055/902 2372/2057/866 2375/2060/904 +f 2379/2064/907 2380/2065/908 2381/2066/909 +f 2382/2067/910 2383/2068/911 2384/2069/912 +f 2385/2070/913 2386/2071/914 2387/2072/915 +f 2388/2073/916 2389/2074/916 2235/1954/868 +f 2390/2075/917 2391/1858/866 2392/1857/866 +f 2393/1986/918 2394/1628/918 2390/2075/917 +f 2395/2076/919 2396/2077/920 2397/2078/921 +f 2398/2079/922 2399/2080/923 2400/2081/924 +f 2401/2082/919 2402/2083/925 2403/2084/926 +f 2404/2085/927 2405/2086/928 2406/2087/929 +f 2407/2088/930 2408/2089/931 2409/2090/932 +f 2400/2081/924 2410/2091/902 2411/2092/866 +f 2412/2093/866 2413/2094/866 2414/2095/933 +f 2411/2096/866 2412/2093/866 2414/2095/933 +f 2415/2097/934 2416/2098/935 2417/2099/868 +f 2418/2100/936 2419/2101/937 2416/2102/935 +f 2415/2097/934 2417/2099/868 1876/1635/868 +f 2420/2103/938 2421/2104/939 2422/2105/876 +f 2423/2106/940 2424/2107/941 2425/2108/942 +f 2356/2046/891 2426/2109/943 2401/2082/919 +f 2427/2110/944 2040/1788/867 2054/1800/867 +f 2103/1839/867 2428/2111/945 2327/2028/867 +f 2429/1797/868 2430/1796/896 2431/1802/946 +f 2432/2112/947 2433/2113/948 2434/2114/876 +f 2435/2115/949 2436/2116/950 2432/2112/947 +f 2435/2115/949 2437/2117/951 2438/2118/952 +f 2439/2119/953 2440/2120/954 2105/1841/866 +f 2414/2095/933 2441/2121/955 2398/2122/922 +f 2442/2123/933 2443/2124/956 2436/2116/950 +f 2444/2125/876 2434/2114/876 2433/2113/948 +f 2445/2126/957 2446/2127/896 2447/2128/958 +f 2448/2129/959 2449/2130/960 2447/2128/958 +f 2432/2112/947 2447/2128/958 2449/2130/960 +f 2450/2131/961 2448/2129/959 2447/2128/958 +f 2451/2132/962 2452/2133/963 2453/2134/964 +f 2454/2135/938 2455/2136/965 2456/2137/966 +f 2457/2138/967 2458/2139/968 2459/2140/969 +f 2460/2141/866 2461/2142/899 2462/2143/899 +f 2463/2144/970 2464/2145/971 2458/2146/968 +f 2375/2060/904 2465/2147/902 2466/2148/972 +f 2467/2149/973 2468/2150/974 2469/2151/975 +f 2451/2132/962 2470/2152/940 2471/2153/876 +f 2400/2081/924 2414/2154/933 2398/2079/922 +f 2400/2081/924 2399/2080/923 2472/2155/970 +f 2473/2015/941 2474/1672/876 2475/1671/876 +f 2476/2156/976 2477/2157/977 2478/2158/876 +f 2400/2081/924 2479/2159/866 2480/2160/972 +f 2481/1997/866 2482/1702/866 2483/1701/978 +f 2484/2161/979 2485/2162/980 2486/2163/981 +f 2487/2164/982 2486/2163/981 2477/2157/977 +f 2488/2165/875 2489/2166/875 2490/2167/983 +f 2491/2168/984 2492/2169/985 2493/2170/986 +f 2494/2171/987 2424/2107/941 2493/2170/986 +f 2495/2172/876 2496/2173/988 2452/2133/963 +f 2494/2171/987 2497/2174/989 2498/2175/990 +f 2499/2176/944 2492/2169/985 2500/2177/991 +f 2492/2169/985 2497/2174/989 2493/2170/986 +f 2501/2178/992 2373/2058/903 1843/1602/866 +f 2493/2170/986 2502/2179/993 2491/2168/984 +f 2471/2153/876 2452/2133/963 2451/2132/962 +f 2462/2143/899 2461/2142/899 2503/2180/994 +f 2504/2181/995 2505/2182/996 2506/2183/994 +f 2507/1732/958 2508/2003/956 2509/2001/964 +f 2510/2184/997 2511/2185/998 2512/2186/866 +f 2492/2169/985 2491/2168/984 2500/2177/991 +f 2513/2187/996 2514/2188/999 2515/2189/866 +f 2516/1682/866 2517/1684/866 2518/1994/978 +f 2519/2190/996 2520/2191/995 1980/1730/866 +f 2521/2192/923 2456/2137/966 2464/2145/971 +f 2522/2193/1000 2467/2149/973 2523/2194/1001 +f 2468/2150/974 2524/2195/866 2525/2196/866 +f 2526/2197/967 2527/2198/1002 2400/2081/924 +f 2398/2122/922 2421/2104/939 2399/2199/923 +f 2485/2162/980 2484/2161/979 2528/2200/888 +f 2529/1668/866 2530/1676/866 2531/1675/978 +f 2532/2201/867 2533/2202/867 2534/2203/1003 +f 2493/2170/986 2535/2204/940 2502/2179/993 +f 2499/2176/944 2500/2177/991 1955/1710/867 +f 2536/1999/866 2537/1713/866 2538/2000/978 +f 2539/2205/866 2540/2206/899 2541/2207/899 +f 1980/1730/866 1851/1610/866 2519/2190/996 +f 2542/2208/1004 2503/2180/994 2443/2124/956 +f 2543/2209/1004 2544/2210/1005 2443/2124/956 +f 2373/2058/903 2501/2178/992 2453/2134/964 +f 2544/2210/1005 2545/2211/1006 2453/2134/964 +f 2511/2185/998 2510/2184/997 2544/2210/1005 +f 2546/2212/994 2543/2209/1004 2443/2124/956 +f 2514/2188/999 2513/2187/996 2546/2212/994 +f 2547/2213/1004 2548/2214/994 2443/2124/956 +f 2541/2207/899 2540/2206/899 2548/2214/994 +f 2503/2180/994 2547/2213/1004 2443/2124/956 +f 2442/2123/933 2506/2183/994 2443/2124/956 +f 2549/2215/906 2550/2216/1007 2551/1569/1007 +f 2552/2217/942 2553/2218/1008 2554/2219/1009 +f 1799/1561/868 2555/2220/1010 2556/2221/1010 +f 2554/2219/1009 2557/2222/896 2558/2223/959 +f 2559/2224/893 2560/2225/892 2554/2219/1009 +f 2561/2226/893 2562/2227/893 2563/2228/868 +f 2560/2225/892 2557/2222/896 2554/2219/1009 +f 2556/2221/1010 2555/2220/1010 2564/2229/1011 +f 2522/2193/1000 2565/2230/1000 2566/2231/1012 +f 2567/2232/940 2552/2217/942 2495/2172/876 +f 2419/2101/937 2418/2100/936 2456/2233/966 +f 2456/2233/966 2418/2100/936 2464/2234/971 +f 2568/2235/1013 2569/1607/1014 2384/2069/912 +f 2380/2065/908 2379/2064/907 2570/2236/875 +f 2438/2118/952 2436/2116/950 2435/2115/949 +f 2571/2237/976 2572/2238/876 2573/2239/876 +f 2418/2100/936 2415/2240/934 2574/2241/1015 +f 2575/2242/868 2576/2243/959 2366/2053/898 +f 2349/2039/885 2577/2244/1016 2578/2245/1017 +f 2577/2244/1016 2571/2237/976 2579/2246/977 +f 2580/2247/959 2558/2223/959 2557/2222/896 +f 2581/2248/1018 2582/2249/1019 2424/2107/941 +f 2576/2243/959 2445/2126/957 2583/2250/896 +f 2581/2248/1018 2427/2110/944 2584/2251/1020 +f 2494/2171/987 2581/2248/1018 2424/2107/941 +f 2559/2224/893 2553/2218/1008 2323/2026/868 +f 2425/2108/942 2424/2107/941 2582/2249/1019 +f 2496/2173/988 2495/2172/876 2552/2217/942 +f 2561/2226/893 2450/2131/961 2446/2127/896 +f 2357/2047/892 2449/2130/960 2448/2129/959 +f 2585/2252/1021 2586/2253/868 2587/2254/868 +f 2582/2249/1019 2581/2248/1018 2584/2251/1020 +f 2588/2255/1021 2589/2256/868 2590/2257/868 +f 2322/2025/868 2559/2224/893 2323/2026/868 +f 2558/2223/959 2591/2258/896 2447/2128/958 +f 2592/2259/959 2593/2260/957 2591/2258/896 +f 2594/2261/1022 2566/2231/1012 2595/2262/868 +f 2458/2139/968 2464/2234/971 2418/2100/936 +f 2596/1810/868 2597/1809/896 2598/1820/893 +f 2599/2263/1023 2600/2264/1024 2456/2137/966 +f 2349/2039/885 2351/2041/887 2601/2265/1025 +f 2602/2008/959 2603/1765/961 2604/1764/868 +f 2583/2250/896 2445/2126/957 2447/2128/958 +f 2413/2094/866 2605/2266/866 2414/2095/933 +f 2426/2109/943 2402/2083/925 2401/2082/919 +f 2105/1841/866 2104/1840/866 2439/2119/953 +f 2350/2040/886 2606/2267/1026 2352/2042/888 +f 2428/2111/945 2607/2268/1027 2608/1845/1028 +f 2428/2111/945 2103/1839/867 2607/2268/1027 +f 2609/2269/1029 2610/2270/1030 2611/1831/872 +f 2612/2271/889 2613/2272/872 2614/2273/872 +f 2440/2120/954 2439/2119/953 2612/2271/889 +f 2407/2088/930 2409/2090/932 2615/2274/1030 +f 2599/2263/1023 2455/2136/965 2454/2135/938 +f 2416/2102/935 2415/2240/934 2418/2100/936 +f 2421/2104/939 2420/2103/938 2399/2199/923 +f 2396/2077/920 2616/2275/1031 2409/2090/932 +f 2408/2089/931 2617/2276/868 2618/2277/868 +f 2396/2077/920 2395/2076/919 2616/2275/1031 +f 2397/2078/921 2355/2045/890 2395/2076/919 +f 2619/2278/1032 2620/2279/1033 2621/2280/1034 +f 2622/2281/1035 2619/2278/1032 2623/2282/1036 +f 2624/2283/1037 2622/2281/1035 2625/2284/1038 +f 2626/2285/1039 2624/2283/1037 2627/2286/1040 +f 2628/2287/1041 2629/2288/1042 2236/1955/875 +f 2630/2289/1043 2631/2290/1044 2632/2291/1045 +f 2633/2292/1046 2634/2293/1046 2632/2291/1045 +f 2635/2294/1047 2636/2295/1048 2629/2288/1042 +f 2637/2296/1049 2638/2297/1050 2636/2295/1048 +f 2639/2298/1051 2634/2293/1046 2633/2292/1046 +f 2640/2299/1052 2641/2300/1053 2642/2301/1054 +f 2641/2300/1053 2643/2302/1055 2644/2303/1056 +f 2643/2302/1055 2645/2304/1057 2646/2305/1058 +f 2645/2304/1057 2647/2306/1059 2648/2307/1060 +f 2647/2306/1059 2649/2308/1061 2650/2309/1062 +f 2651/2310/1063 2652/2311/1064 2653/2312/1065 +f 2654/2313/1066 2655/2314/1066 2653/2312/1065 +f 2656/2315/1067 2657/2316/1067 2658/2317/1050 +f 2659/2318/1068 2655/2314/1066 2654/2313/1066 +f 2620/2279/1033 2659/2318/1068 2660/2319/1069 +f 2656/2315/1067 2661/2320/1070 2657/2316/1067 +f 2662/2321/1071 2663/2322/1072 2661/2320/1070 +f 2664/2323/1073 2665/2324/1074 2661/2320/1070 +f 2666/2325/1075 2667/2326/1075 2665/2324/1074 +f 2668/2327/1076 2669/2328/1077 2670/2329/1077 +f 2671/2330/1078 2672/2331/1078 2670/2329/1077 +f 2673/2036/1079 2674/1923/1080 2675/1922/876 +f 2676/2332/1081 2677/2333/1082 2678/2334/1083 +f 2679/2335/1084 2680/2336/1085 2678/2334/1083 +f 2677/2333/1082 2681/2337/1086 2679/2335/1084 +f 2682/2338/1087 2681/2337/1086 2677/2333/1082 +f 2683/2339/1088 2684/2340/1089 2681/2337/1086 +f 2685/2341/1090 2686/2342/1090 2687/2343/1091 +f 2688/2344/1092 2687/2343/1091 2684/2340/1089 +f 1863/1622/866 2369/2054/901 2689/2345/1093 +f 2690/2346/1094 2386/2071/914 2691/2347/1095 +f 2692/2348/1096 2693/2349/1097 2690/2346/1094 +f 2694/2350/1098 2695/2351/1099 2693/2349/1097 +f 2143/1875/867 2141/1873/867 2695/2351/1099 +f 2144/1876/867 2387/2072/915 2141/1873/867 +f 2696/2352/1100 2385/2070/913 2387/2072/915 +f 2697/2353/1101 2696/2352/1100 2387/2072/915 +f 2698/2354/1102 2697/2353/1101 2387/2072/915 +f 2144/1876/867 2698/2354/1102 2387/2072/915 +f 2699/2355/1103 2143/1875/867 2695/2351/1099 +f 2694/2350/1098 2699/2355/1103 2695/2351/1099 +f 2692/2348/1096 2700/2356/1104 2693/2349/1097 +f 2701/2357/1105 2692/2348/1096 2690/2346/1094 +f 2702/2358/1106 2691/2347/1095 2386/2071/914 +f 2385/2070/913 2702/2358/1106 2386/2071/914 +f 1861/1620/866 1863/1622/866 2689/2345/1093 +f 2701/2357/1105 2690/2346/1094 2691/2347/1095 +f 2700/2356/1104 2694/2350/1098 2693/2349/1097 +f 2381/2066/909 2382/2067/910 2703/2359/1107 +f 2360/2050/894 2188/1913/868 2339/2033/868 +f 2704/2236/897 2705/2064/894 2706/1772/868 +f 2707/2360/875 2708/2361/875 2676/2332/1081 +f 2709/2362/1108 2710/2363/1108 2711/1856/868 +f 2712/1925/1109 2710/2363/1108 2709/2362/1108 +f 2713/2364/1110 2714/2365/1111 2230/1949/875 +f 2715/2366/1112 2714/2365/1111 2713/2364/1110 +f 2716/2367/1113 2715/2366/1112 2717/2368/1114 +f 2662/2321/1071 2718/2369/1115 2719/2370/1116 +f 2663/2322/1072 2662/2321/1071 2720/2371/1117 +f 2682/2338/1087 2721/2372/1118 2722/2373/1084 +f 2388/2073/916 2668/2327/1076 2723/2374/1119 +f 2724/2375/875 2725/2376/1083 2726/2377/1081 +f 2721/2372/1118 2726/2377/1081 2725/2376/1083 +f 2722/2373/1084 2721/2372/1118 2725/2376/1083 +f 2227/1946/866 2672/2331/1078 2671/2330/1078 +f 2230/1949/875 2714/2365/1111 2628/2287/1041 +f 2225/1944/866 2227/1946/866 2671/2330/1078 +f 2236/1955/875 2230/1949/875 2628/2287/1041 +f 2232/1951/868 2388/2073/916 2235/1954/868 +f 2548/2214/994 2727/2378/1004 2443/2124/956 +f 2544/2210/1005 2453/2134/964 2443/2124/956 +f 2591/2258/896 2593/2260/957 2447/2128/958 +f 2558/2223/959 2447/2128/958 2554/2219/1009 +f 2728/1957/1068 2729/1959/1120 2730/2379/1121 +f 2729/1959/1120 2731/1962/1122 2732/2380/1123 +f 2733/1964/1124 2734/1960/1125 2735/2381/1126 +f 2731/1962/1122 2736/1963/1062 2737/2382/1063 +f 2736/1963/1062 2738/1965/1060 2739/2383/1059 +f 2740/1967/1051 2733/1964/1124 2741/2384/1127 +f 2738/1965/1060 2742/1966/1128 2743/2385/1057 +f 2742/1966/1128 2744/1968/1056 2745/2386/1055 +f 2746/1969/1129 2740/1967/1051 2747/2387/1052 +f 2744/1968/1056 2746/1969/1129 2748/2388/1130 +f 2749/1971/1037 2750/1973/1035 2751/2389/1038 +f 2752/1972/1032 2753/1970/1033 2754/2390/1131 +f 2755/1961/1039 2749/1971/1037 2756/2391/1040 +f 2734/1960/1125 2755/1961/1039 2757/2392/1132 +f 2753/1970/1033 2728/1957/1068 2758/2393/1069 +f 2750/1973/1035 2752/1972/1032 2759/2394/1036 +f 2760/2395/1133 2761/2396/1134 2762/2397/1135 +f 2763/2398/1136 2764/2399/1137 2765/2400/1138 +f 2766/2401/1139 2767/2402/1140 2768/1980/876 +f 2769/2403/872 2770/2404/872 2761/2396/1134 +f 2764/2399/1137 2763/2398/1136 2767/2402/1140 +f 1822/1581/875 2351/2041/887 2088/1827/875 +f 2397/2078/921 2353/2043/889 2355/2045/890 +f 2426/2109/943 2356/2046/891 1880/1639/867 +f 2771/2405/868 2357/2047/892 2359/2049/868 +f 2772/2406/1141 2360/2050/894 2362/2052/895 +f 2773/1791/868 2363/1784/868 2365/2018/897 +f 1819/1578/866 2367/2002/899 1820/1579/866 +f 2689/2345/1093 2369/2054/901 2353/2043/889 +f 1845/1604/872 2377/2062/872 2376/2061/905 +f 2774/2069/1142 1848/1607/868 1850/1609/868 +f 2775/2407/1143 2379/2064/907 2381/2066/909 +f 2703/2359/1107 2382/2067/910 2384/2069/912 +f 2776/2408/917 2390/2075/917 2392/1857/866 +f 2776/2408/917 2393/1986/918 2390/2075/917 +f 2406/2087/929 2401/2082/919 2403/2084/926 +f 2403/2084/926 2404/2085/927 2406/2087/929 +f 2414/2154/933 2400/2081/924 2411/2092/866 +f 1878/1637/868 2415/2097/934 1876/1635/868 +f 2584/2251/1020 2427/2110/944 2054/1800/867 +f 2777/1801/868 2429/1797/868 2431/1802/946 +f 2434/2114/876 2435/2115/949 2432/2112/947 +f 2438/2118/952 2442/2123/933 2436/2116/950 +f 2433/2113/948 2432/2112/947 2449/2130/960 +f 2446/2127/896 2450/2131/961 2447/2128/958 +f 2501/2178/992 2451/2132/962 2453/2134/964 +f 2521/2192/923 2454/2135/938 2456/2137/966 +f 2778/2409/1144 2457/2138/967 2459/2140/969 +f 2779/2410/866 2460/2141/866 2462/2143/899 +f 2457/2411/967 2463/2144/970 2458/2146/968 +f 2370/2055/902 2375/2060/904 2466/2148/972 +f 2523/2194/1001 2467/2149/973 2469/2151/975 +f 2780/1693/1145 2473/2015/941 2475/1671/876 +f 2781/2412/876 2476/2156/976 2478/2158/876 +f 2410/2091/902 2400/2081/924 2480/2160/972 +f 2782/1694/1146 2481/1997/866 2483/1701/978 +f 2487/2164/982 2484/2161/979 2486/2163/981 +f 2476/2156/976 2487/2164/982 2477/2157/977 +f 2528/2200/888 2488/2165/875 2490/2167/983 +f 2497/2174/989 2494/2171/987 2493/2170/986 +f 2471/2153/876 2495/2172/876 2452/2133/963 +f 2534/2203/1003 2494/2171/987 2498/2175/990 +f 2542/2208/1004 2462/2143/899 2503/2180/994 +f 2442/2123/933 2504/2181/995 2506/2183/994 +f 2783/1727/1147 2507/1732/958 2509/2001/964 +f 2784/2413/866 2510/2184/997 2512/2186/866 +f 2785/2414/866 2513/2187/996 2515/2189/866 +f 2786/1683/1146 2516/1682/866 2518/1994/978 +f 2463/2144/970 2521/2192/923 2464/2145/971 +f 2565/2230/1000 2522/2193/1000 2523/2194/1001 +f 2469/2151/975 2468/2150/974 2525/2196/866 +f 2472/2155/970 2526/2197/967 2400/2081/924 +f 2490/2167/983 2485/2162/980 2528/2200/888 +f 2787/1669/1148 2529/1668/866 2531/1675/978 +f 2498/2175/990 2532/2201/867 2534/2203/1003 +f 1941/1699/867 2499/2176/944 1955/1710/867 +f 2788/1707/1146 2536/1999/866 2538/2000/978 +f 2789/2415/866 2539/2205/866 2541/2207/899 +f 2506/2183/994 2542/2208/1004 2443/2124/956 +f 2545/2211/1006 2373/2058/903 2453/2134/964 +f 2543/2209/1004 2511/2185/998 2544/2210/1005 +f 2727/2378/1004 2546/2212/994 2443/2124/956 +f 2727/2378/1004 2514/2188/999 2546/2212/994 +f 2547/2213/1004 2541/2207/899 2548/2214/994 +f 2790/1573/1149 2549/2215/906 2551/1569/1007 +f 2496/2173/988 2552/2217/942 2554/2219/1009 +f 1830/1589/868 1799/1561/868 2556/2221/1010 +f 2553/2218/1008 2559/2224/893 2554/2219/1009 +f 2791/2416/868 2561/2226/893 2563/2228/868 +f 2792/2417/1150 2556/2221/1010 2564/2229/1011 +f 2594/2261/1022 2522/2193/1000 2566/2231/1012 +f 2600/2264/1024 2419/2418/937 2456/2137/966 +f 2383/2068/911 2568/2235/1013 2384/2069/912 +f 2793/2419/875 2380/2065/908 2570/2236/875 +f 2579/2246/977 2571/2237/976 2573/2239/876 +f 2794/2420/1151 2418/2100/936 2574/2241/1015 +f 2268/1985/868 2575/2242/868 2366/2053/898 +f 2350/2040/886 2349/2039/885 2578/2245/1017 +f 2578/2245/1017 2577/2244/1016 2579/2246/977 +f 2585/2252/1021 2580/2247/959 2557/2222/896 +f 2366/2053/898 2576/2243/959 2583/2250/896 +f 2562/2227/893 2561/2226/893 2446/2127/896 +f 2358/2048/893 2357/2047/892 2448/2129/959 +f 2580/2247/959 2585/2252/1021 2587/2254/868 +f 2592/2259/959 2588/2255/1021 2590/2257/868 +f 2588/2255/1021 2592/2259/959 2591/2258/896 +f 2795/2421/868 2594/2261/1022 2595/2262/868 +f 2459/2140/969 2458/2139/968 2418/2100/936 +f 2796/1819/868 2596/1810/868 2598/1820/893 +f 2455/2136/965 2599/2263/1023 2456/2137/966 +f 2797/1754/868 2602/2008/959 2604/1764/868 +f 2593/2260/957 2583/2250/896 2447/2128/958 +f 2351/2041/887 2350/2040/886 2352/2042/888 +f 2798/1844/1028 2428/2111/945 2608/1845/1028 +f 2799/1830/872 2609/2269/1029 2611/1831/872 +f 2800/2422/889 2612/2271/889 2614/2273/872 +f 2800/2422/889 2440/2120/954 2612/2271/889 +f 2801/2423/876 2599/2263/1023 2454/2135/938 +f 2408/2089/931 2396/2077/920 2409/2090/932 +f 2396/2077/920 2408/2089/931 2618/2277/868 +f 2623/2282/1036 2619/2278/1032 2621/2280/1034 +f 2625/2284/1038 2622/2281/1035 2623/2282/1036 +f 2627/2286/1040 2624/2283/1037 2625/2284/1038 +f 2630/2289/1043 2626/2285/1039 2627/2286/1040 +f 2626/2285/1039 2630/2289/1043 2632/2291/1045 +f 2631/2290/1044 2633/2292/1046 2632/2291/1045 +f 2628/2287/1041 2635/2294/1047 2629/2288/1042 +f 2635/2294/1047 2637/2296/1049 2636/2295/1048 +f 2640/2299/1052 2639/2298/1051 2633/2292/1046 +f 2639/2298/1051 2640/2299/1052 2642/2301/1054 +f 2642/2301/1054 2641/2300/1053 2644/2303/1056 +f 2644/2303/1056 2643/2302/1055 2646/2305/1058 +f 2646/2305/1058 2645/2304/1057 2648/2307/1060 +f 2648/2307/1060 2647/2306/1059 2650/2309/1062 +f 2802/2424/1152 2651/2310/1063 2653/2312/1065 +f 2652/2311/1064 2654/2313/1066 2653/2312/1065 +f 2803/2425/1153 2656/2315/1067 2658/2317/1050 +f 2660/2319/1069 2659/2318/1068 2654/2313/1066 +f 2621/2280/1034 2620/2279/1033 2660/2319/1069 +f 2656/2315/1067 2662/2321/1071 2661/2320/1070 +f 2663/2322/1072 2664/2323/1073 2661/2320/1070 +f 2664/2323/1073 2666/2325/1075 2665/2324/1074 +f 2723/2374/1119 2668/2327/1076 2670/2329/1077 +f 2669/2328/1077 2671/2330/1078 2670/2329/1077 +f 2804/1934/876 2673/2036/1079 2675/1922/876 +f 2677/2333/1082 2679/2335/1084 2678/2334/1083 +f 2721/2372/1118 2682/2338/1087 2677/2333/1082 +f 2682/2338/1087 2683/2339/1088 2681/2337/1086 +f 2688/2344/1092 2685/2341/1090 2687/2343/1091 +f 2683/2339/1088 2688/2344/1092 2684/2340/1089 +f 2775/2407/1143 2381/2066/909 2703/2359/1107 +f 2361/2051/894 2360/2050/894 2339/2033/868 +f 2805/2013/896 2704/2236/897 2706/1772/868 +f 2678/2334/1083 2707/2360/875 2676/2332/1081 +f 2806/2030/868 2709/2362/1108 2711/1856/868 +f 2807/1926/1109 2712/1925/1109 2709/2362/1108 +f 2717/2368/1114 2715/2366/1112 2713/2364/1110 +f 2808/2426/1116 2716/2367/1113 2717/2368/1114 +f 2720/2371/1117 2662/2321/1071 2719/2370/1116 +f 2389/2074/916 2388/2073/916 2723/2374/1119 +f 2809/2427/875 2724/2375/875 2726/2377/1081 +f 2810/2428/1085 2722/2373/1084 2725/2376/1083 +f 2758/2393/1069 2728/1957/1068 2730/2379/1121 +f 2730/2379/1121 2729/1959/1120 2732/2380/1123 +f 2741/2384/1127 2733/1964/1124 2735/2381/1126 +f 2732/2380/1123 2731/1962/1122 2737/2382/1063 +f 2737/2382/1063 2736/1963/1062 2739/2383/1059 +f 2747/2387/1052 2740/1967/1051 2741/2384/1127 +f 2739/2383/1059 2738/1965/1060 2743/2385/1057 +f 2743/2385/1057 2742/1966/1128 2745/2386/1055 +f 2748/2388/1130 2746/1969/1129 2747/2387/1052 +f 2745/2386/1055 2744/1968/1056 2748/2388/1130 +f 2756/2391/1040 2749/1971/1037 2751/2389/1038 +f 2759/2394/1036 2752/1972/1032 2754/2390/1131 +f 2757/2392/1132 2755/1961/1039 2756/2391/1040 +f 2735/2381/1126 2734/1960/1125 2757/2392/1132 +f 2754/2390/1131 2753/1970/1033 2758/2393/1069 +f 2751/2389/1038 2750/1973/1035 2759/2394/1036 +f 2765/2400/1138 2760/2395/1133 2762/2397/1135 +f 2762/2397/1135 2763/2398/1136 2765/2400/1138 +f 2811/1979/876 2766/2401/1139 2768/1980/876 +f 2760/2395/1133 2769/2403/872 2761/2396/1134 +f 2766/2401/1139 2764/2399/1137 2767/2402/1140 +o trigger_pistol_0 +v 0.255916 1.582615 6.859656 +v 0.255916 1.449703 6.660409 +v 0.255916 1.810704 6.457509 +v 0.255916 2.466018 6.344805 +v 0.255916 1.892926 6.633237 +v 0.577175 1.435799 6.186546 +v 0.577175 1.810704 6.457509 +v 0.577175 1.449703 6.660409 +v 0.577175 3.484048 5.722968 +v 0.577175 3.243770 6.479858 +v 0.577175 2.895700 6.381779 +v 0.577175 1.924940 5.885275 +v 0.577175 2.439333 5.691723 +v 0.577175 2.466018 6.344805 +v 0.577175 3.484048 5.722968 +v 0.401255 3.484048 5.722968 +v 0.401255 3.243770 6.479858 +v 0.401255 3.588840 6.684443 +v 0.401255 3.243770 6.479858 +v 0.401255 3.484048 5.722968 +v 0.401255 4.331120 5.796535 +v 0.401255 4.331120 7.553139 +v 0.401255 3.911054 6.978125 +v 0.401255 4.776393 4.607953 +v 0.401255 5.500355 4.607955 +v 0.401255 5.500353 7.553141 +v -0.401255 4.331120 5.796535 +v -0.401255 4.776393 4.607953 +v 0.401255 4.776393 4.607953 +v -0.401255 5.500355 4.607955 +v 0.401255 5.500355 4.607955 +v 0.401255 4.776393 4.607953 +v 0.577175 2.851677 5.639833 +v -0.577175 3.484048 5.722968 +v -0.577175 3.243770 6.479858 +v -0.401255 3.243770 6.479858 +v -0.255916 1.582615 6.859656 +v -0.255916 1.892926 6.633237 +v -0.255916 1.810704 6.457509 +v -0.401255 3.243770 6.479858 +v -0.401255 3.588840 6.684443 +v -0.401255 3.484048 5.722968 +v -0.401255 4.331120 7.553139 +v -0.401255 4.331120 5.796535 +v -0.401255 3.911054 6.978125 +v -0.401255 4.776393 4.607953 +v -0.401255 5.500355 4.607955 +v -0.401255 5.500353 7.553141 +v -0.255916 2.466018 6.344805 +v -0.577175 2.466018 6.344805 +v -0.577175 2.895700 6.381779 +v -0.577175 2.851677 5.639833 +v -0.577175 1.810704 6.457509 +v -0.577175 1.435799 6.186546 +v -0.577175 1.449703 6.660409 +v -0.577175 3.484048 5.722968 +v -0.577175 1.924940 5.885275 +v -0.577175 2.439333 5.691723 +v 0.577175 3.243770 6.479858 +v 0.401255 4.331120 5.796535 +v -0.401255 4.776393 4.607953 +v -0.401255 3.484048 5.722968 +v -0.255916 1.449703 6.660409 +v -0.577175 3.243770 6.479858 +v -0.255916 1.892926 6.633237 +v 0.255916 1.892926 6.633237 +v 0.255916 2.466018 6.344805 +v 0.577175 2.895700 6.381779 +v 0.577175 3.243770 6.479858 +v 0.401255 3.243770 6.479858 +v -0.401255 3.243770 6.479858 +v -0.577175 2.895700 6.381779 +v -0.136434 1.170199 7.267153 +v 0.136434 1.170199 7.267153 +v 0.255916 1.274902 7.159120 +v -0.255916 1.274902 7.159120 +v 0.255916 1.582615 6.859656 +v -0.255916 1.582615 6.859656 +v -0.136434 1.170199 7.267153 +v -0.140214 0.908800 7.158844 +v 0.140214 0.908800 7.158844 +v 0.255916 1.049089 7.041913 +v 0.255916 1.274902 7.159120 +v 0.136434 1.170199 7.267153 +v 0.255916 2.466018 6.344805 +v 0.577175 2.466018 6.344805 +v 0.577175 1.049089 7.041913 +v 0.255916 1.049089 7.041913 +v 0.140214 0.908800 7.158844 +v -0.140214 0.908800 7.158844 +v -0.238265 0.780517 7.270253 +v 0.238265 0.780517 7.270253 +v 0.577175 1.810704 6.457509 +v 0.255916 1.810704 6.457509 +v 0.255916 1.449703 6.660409 +v 0.577175 1.449703 6.660409 +v -0.242153 0.574700 7.190140 +v 0.242153 0.574700 7.190140 +v 0.238265 0.780517 7.270253 +v 0.557295 0.748790 6.906375 +v 0.577175 1.049089 7.041913 +v 0.577175 1.022907 6.562050 +v -0.255916 2.466018 6.344805 +v -0.401255 4.331120 5.796535 +v 0.401255 4.331120 5.796535 +v 0.401255 3.484048 5.722968 +v 0.401255 3.588840 6.684443 +v -0.401255 3.588840 6.684443 +v 0.401255 3.911054 6.978125 +v 0.401255 4.331120 7.553139 +v -0.401255 4.331120 7.553139 +v -0.401255 3.911054 6.978125 +v 0.401255 5.500353 7.553141 +v -0.401255 5.500353 7.553141 +v 0.577175 2.851677 5.639833 +v 0.577175 3.484048 5.722968 +v -0.577175 2.851677 5.639833 +v -0.401255 3.484048 5.722968 +v 0.577175 1.022907 6.562050 +v -0.577175 1.022907 6.562050 +v -0.577175 1.435799 6.186546 +v 0.577175 1.435799 6.186546 +v -0.577175 1.924940 5.885275 +v -0.577175 2.439333 5.691723 +v 0.577175 2.439333 5.691723 +v 0.577175 1.924940 5.885275 +v 0.242153 0.574700 7.190140 +v -0.242153 0.574700 7.190140 +v -0.557295 0.748790 6.906375 +v 0.557295 0.748790 6.906375 +v -0.577175 3.243770 6.479858 +v -0.255916 1.049089 7.041913 +v -0.577175 2.466018 6.344805 +v -0.255916 1.274902 7.159120 +v -0.577175 1.049089 7.041913 +v -0.577175 3.484048 5.722968 +v -0.577175 1.810704 6.457509 +v -0.577175 1.449703 6.660409 +v -0.255916 1.449703 6.660409 +v -0.255916 1.810704 6.457509 +v -0.255916 1.049089 7.041913 +v -0.557295 0.748790 6.906375 +v -0.238265 0.780517 7.270253 +v -0.577175 1.022907 6.562050 +v -0.577175 1.049089 7.041913 +v -0.255916 2.466018 6.344805 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 0.9531 0.3026 +vn -0.0000 -0.9364 -0.3508 +vn -0.0000 -0.0000 -1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 0.4977 0.8674 +vn -0.0000 0.5444 0.8388 +vn -0.0000 0.1395 0.9902 +vn -0.0000 -0.1979 0.9802 +vn -0.0000 -0.2712 0.9625 +vn -0.0000 -0.3535 0.9354 +vn -0.0000 -0.3697 0.9291 +vn -0.0000 -0.1606 0.9870 +vn -0.0000 0.7181 0.6960 +vn -0.0000 0.7113 0.7029 +vn -0.0000 0.7044 0.7098 +vn -0.0000 0.6629 0.7487 +vn -0.0000 0.6268 0.7792 +vn -0.4404 -0.3550 0.8247 +vn -0.4552 -0.3352 0.8249 +vn 0.2991 -0.3616 0.8831 +vn 0.9038 -0.1780 0.3893 +vn 0.9745 -0.1034 0.1993 +vn 0.5796 -0.3268 0.7465 +vn 0.0001 0.1395 0.9902 +vn -0.0000 0.0850 0.9964 +vn -0.0023 0.6611 0.7503 +vn -0.0000 0.6735 0.7392 +vn -0.0023 0.6496 0.7603 +vn 0.0017 0.6512 0.7589 +vn 0.0038 0.6541 0.7564 +vn -0.0023 0.6547 0.7559 +vn -0.0000 0.3882 0.9216 +vn -0.0000 0.2799 0.9600 +vn -0.0000 0.5604 0.8282 +vn -0.0000 0.6274 0.7787 +vn -0.2580 -0.3462 0.9020 +vn 0.3908 -0.3275 0.8603 +vn 0.3829 -0.3520 0.8541 +vn 0.8580 -0.2283 0.4601 +vn 0.9627 -0.1436 0.2294 +vn 0.9997 -0.0226 0.0012 +vn -0.0000 0.1148 0.9934 +vn -0.0000 0.0865 -0.9963 +vn -0.0000 0.1129 -0.9936 +vn -0.0000 -0.5671 0.8236 +vn -0.0000 -0.6219 0.7831 +vn -0.0000 -0.7215 0.6924 +vn -0.0001 -0.5953 0.8035 +vn 0.0001 -0.2977 0.9547 +vn -0.0000 -0.7663 0.6425 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 0.0456 -0.9990 +vn -0.0000 0.1303 -0.9915 +vn -0.0000 0.0285 -0.9996 +vn -0.0000 0.1158 -0.9933 +vn -0.0000 -0.7114 -0.7028 +vn -0.0000 -0.7480 -0.6637 +vn -0.0000 -0.6258 -0.7800 +vn -0.0000 -0.5761 -0.8174 +vn -0.0000 -0.4689 -0.8832 +vn -0.0000 -0.2781 -0.9606 +vn -0.0000 -0.2019 -0.9794 +vn -0.0000 -0.4113 -0.9115 +vn -0.0000 -0.8524 -0.5229 +vn -0.0000 -0.8304 -0.5572 +vn -0.0000 -0.8071 -0.5904 +vn -0.9038 -0.1780 0.3893 +vn -0.9745 -0.1034 0.1993 +vn 0.0023 0.6611 0.7503 +vn -0.8580 -0.2283 0.4601 +vn -0.5059 -0.3351 0.7948 +vn -0.9997 -0.0226 0.0012 +vn -0.9627 -0.1436 0.2294 +vn -0.0000 0.1149 0.9934 +vt 0.482997 0.972676 +vt 0.483169 0.972693 +vt 0.483177 0.972380 +vt 0.483034 0.971858 +vt 0.483023 0.972386 +vt 0.471310 0.981774 +vt 0.471246 0.981454 +vt 0.471009 0.981626 +vt 0.472210 0.980596 +vt 0.471654 0.980527 +vt 0.471614 0.980779 +vt 0.471647 0.981549 +vt 0.471923 0.981275 +vt 0.471511 0.981066 +vt 0.472225 0.980472 +vt 0.471669 0.980404 +vt 0.471639 0.980122 +vt 0.472428 0.979907 +vt 0.471300 0.979390 +vt 0.471545 0.979829 +vt 0.473322 0.979971 +vt 0.473535 0.979507 +vt 0.471644 0.978639 +vt 0.480249 0.946278 +vt 0.480249 0.945382 +vt 0.480816 0.945382 +vt 0.480249 0.944870 +vt 0.480816 0.944870 +vt 0.472077 0.981026 +vt 0.468113 0.980573 +vt 0.468670 0.980511 +vt 0.468657 0.980387 +vt 0.482644 0.972678 +vt 0.482622 0.972386 +vt 0.482468 0.972377 +vt 0.468690 0.980106 +vt 0.468100 0.980449 +vt 0.469037 0.979378 +vt 0.467904 0.979882 +vt 0.468786 0.979814 +vt 0.467009 0.979936 +vt 0.466802 0.979469 +vt 0.468701 0.978624 +vt 0.482618 0.971864 +vt 0.468807 0.981051 +vt 0.468707 0.980763 +vt 0.468241 0.981005 +vt 0.469067 0.981441 +vt 0.469000 0.981761 +vt 0.469302 0.981616 +vt 0.468666 0.981532 +vt 0.468393 0.981256 +vt 0.480816 0.946278 +vt 0.482469 0.972694 +vt 0.480078 0.973332 +vt 0.480077 0.973077 +vt 0.479953 0.973077 +vt 0.479387 0.973079 +vt 0.479263 0.973334 +vt 0.482753 0.972998 +vt 0.482894 0.972996 +vt 0.482958 0.972932 +vt 0.482686 0.972938 +vt 0.482726 0.973162 +vt 0.482929 0.973155 +vt 0.483051 0.973046 +vt 0.479852 0.973637 +vt 0.480079 0.973637 +vt 0.480081 0.974789 +vt 0.479855 0.974790 +vt 0.479773 0.974919 +vt 0.479575 0.974919 +vt 0.479506 0.975040 +vt 0.479843 0.975039 +vt 0.480080 0.974106 +vt 0.479853 0.974107 +vt 0.479854 0.974399 +vt 0.480081 0.974399 +vt 0.469982 0.982043 +vt 0.470324 0.982045 +vt 0.470322 0.981889 +vt 0.470645 0.982004 +vt 0.470647 0.981771 +vt 0.470947 0.981928 +vt 0.479491 0.973638 +vt 0.480816 0.946878 +vt 0.479953 0.972794 +vt 0.479386 0.972795 +vt 0.479952 0.972486 +vt 0.479951 0.971983 +vt 0.479384 0.971985 +vt 0.479385 0.972488 +vt 0.479949 0.971158 +vt 0.479382 0.971159 +vt 0.480940 0.947328 +vt 0.480940 0.946878 +vt 0.480125 0.947328 +vt 0.480249 0.946878 +vt 0.480940 0.948810 +vt 0.480125 0.948810 +vt 0.480125 0.948416 +vt 0.480940 0.948415 +vt 0.480125 0.948010 +vt 0.480125 0.947622 +vt 0.480940 0.947622 +vt 0.480940 0.948010 +vt 0.480704 0.949355 +vt 0.480362 0.949355 +vt 0.480139 0.949120 +vt 0.480926 0.949120 +vt 0.479262 0.973079 +vt 0.482592 0.973062 +vt 0.479264 0.973639 +vt 0.479266 0.974791 +vt 0.480125 0.946878 +vt 0.479265 0.974108 +vt 0.479265 0.974401 +vt 0.479492 0.974400 +vt 0.479492 0.974108 +vt 0.479493 0.974791 +vt 0.469662 0.981998 +vt 0.469986 0.981887 +vt 0.469361 0.981919 +vt 0.469663 0.981765 +s 0 +f 2812/2429/1154 2813/2430/1154 2814/2431/1154 +f 2814/2431/1154 2815/2432/1154 2816/2433/1154 +f 2817/2434/1154 2818/2435/1154 2819/2436/1154 +f 2820/2437/1154 2821/2438/1154 2822/2439/1154 +f 2817/2434/1154 2823/2440/1154 2818/2435/1154 +f 2824/2441/1154 2825/2442/1154 2818/2435/1154 +f 2826/2437/1155 2827/2443/1155 2828/2444/1155 +f 2829/2445/1154 2830/2444/1154 2831/2443/1154 +f 2832/2446/1154 2833/2447/1154 2834/2448/1154 +f 2829/2445/1154 2831/2443/1154 2832/2446/1154 +f 2832/2446/1154 2835/2449/1154 2836/2450/1154 +f 2837/2451/1154 2833/2447/1154 2832/2446/1154 +f 2838/2452/1156 2839/2453/1156 2840/2454/1156 +f 2841/2455/1157 2842/2456/1157 2843/2454/1157 +f 2825/2442/1154 2824/2441/1154 2844/2457/1154 +f 2845/2458/1155 2846/2459/1155 2847/2460/1155 +f 2848/2461/1158 2849/2462/1158 2850/2463/1158 +f 2851/2460/1158 2852/2464/1158 2853/2465/1158 +f 2854/2466/1158 2855/2467/1158 2856/2468/1158 +f 2852/2464/1158 2856/2468/1158 2855/2467/1158 +f 2857/2469/1158 2855/2467/1158 2858/2470/1158 +f 2859/2471/1158 2858/2470/1158 2855/2467/1158 +f 2860/2472/1158 2850/2463/1158 2849/2462/1158 +f 2861/2473/1158 2862/2474/1158 2863/2475/1158 +f 2864/2476/1158 2865/2477/1158 2866/2478/1158 +f 2867/2458/1158 2863/2475/1158 2862/2474/1158 +f 2868/2479/1158 2865/2477/1158 2864/2476/1158 +f 2869/2480/1158 2868/2479/1158 2864/2476/1158 +f 2816/2433/1154 2812/2429/1154 2814/2431/1154 +f 2844/2457/1154 2820/2437/1154 2822/2439/1154 +f 2823/2440/1154 2824/2441/1154 2818/2435/1154 +f 2870/2438/1155 2826/2437/1155 2828/2444/1155 +f 2834/2448/1154 2829/2445/1154 2832/2446/1154 +f 2836/2450/1154 2837/2451/1154 2832/2446/1154 +f 2871/2481/1156 2838/2452/1156 2840/2454/1156 +f 2872/2453/1157 2841/2455/1157 2843/2454/1157 +f 2822/2439/1154 2825/2442/1154 2844/2457/1154 +f 2873/2465/1155 2845/2458/1155 2847/2460/1155 +f 2874/2482/1158 2848/2461/1158 2850/2463/1158 +f 2853/2465/1158 2852/2464/1158 2855/2467/1158 +f 2854/2466/1158 2859/2471/1158 2855/2467/1158 +f 2869/2480/1158 2861/2473/1158 2863/2475/1158 +f 2875/2459/1158 2867/2458/1158 2862/2474/1158 +f 2861/2473/1158 2869/2480/1158 2864/2476/1158 +s 1 +f 2876/2462/1159 2877/2433/1160 2878/2432/1161 +f 2879/2483/1162 2880/2484/1163 2881/2485/1164 +f 2882/2486/1165 2883/2487/1166 2879/2483/1162 +f 2884/2488/1167 2885/2489/1167 2886/2490/1168 +f 2887/2491/1169 2886/2490/1168 2888/2429/1170 +f 2877/2433/1160 2876/2462/1159 2889/2461/1171 +f 2890/2488/1172 2891/2492/1173 2892/2493/1174 +f 2893/2494/1175 2894/2490/1176 2895/2489/1177 +f 2896/2495/1178 2897/2496/1179 2879/2483/1162 +f 2813/2430/1154 2812/2429/1154 2894/2490/1176 +f 2898/2497/1180 2899/2498/1181 2900/2499/1182 +f 2901/2500/1183 2902/2501/1184 2903/2502/1185 +f 2904/2503/1186 2905/2504/1187 2906/2505/1188 +f 2897/2496/1179 2896/2495/1178 2905/2504/1187 +f 2899/2498/1181 2898/2497/1180 2907/2506/1189 +f 2908/2507/1190 2909/2508/1191 2910/2509/1192 +f 2911/2510/1193 2912/2511/1194 2910/2509/1192 +f 2913/2512/1195 2819/2436/1154 2912/2511/1194 +f 2913/2512/1195 2817/2434/1154 2819/2436/1154 +f 2883/2487/1166 2914/2513/1196 2896/2495/1178 +f 2915/2452/1197 2916/2481/1197 2917/2514/1198 +f 2918/2515/1199 2919/2516/1200 2882/2486/1165 +f 2919/2516/1200 2918/2515/1199 2920/2517/1201 +f 2921/2518/1202 2922/2519/1203 2923/2520/1204 +f 2924/2521/1205 2925/2522/1205 2922/2519/1203 +f 2926/2523/1206 2917/2514/1198 2927/2524/1207 +f 2928/2525/1208 2929/2526/1209 2917/2514/1198 +f 2930/2527/1210 2931/2528/1211 2932/2529/1212 +f 2933/2530/1213 2932/2529/1212 2934/2531/1214 +f 2935/2532/1215 2936/2533/1216 2937/2534/1217 +f 2928/2525/1208 2926/2523/1206 2936/2533/1216 +f 2938/2535/1218 2939/2536/1218 2940/2537/1219 +f 2931/2528/1211 2930/2527/1210 2941/2538/1220 +f 2942/2539/1163 2883/2487/1166 2882/2486/1165 +f 2943/2540/1221 2891/2492/1173 2890/2488/1172 +f 2944/2541/1179 2914/2513/1196 2883/2487/1166 +f 2874/2482/1158 2943/2540/1221 2945/2491/1222 +f 2946/2542/1223 2902/2501/1184 2901/2500/1183 +f 2929/2526/1209 2928/2525/1208 2947/2543/1207 +f 2948/2544/1186 2949/2545/1189 2950/2546/1188 +f 2944/2541/1179 2948/2544/1186 2951/2547/1187 +f 2952/2548/1181 2950/2546/1188 2949/2545/1189 +f 2953/2549/1224 2908/2507/1190 2954/2550/1225 +f 2955/2551/1226 2953/2549/1224 2956/2552/1227 +f 2865/2477/1158 2955/2551/1226 2866/2478/1158 +f 2957/2472/1228 2876/2462/1159 2878/2432/1161 +f 2881/2485/1164 2882/2486/1165 2879/2483/1162 +f 2887/2491/1169 2884/2488/1167 2886/2490/1168 +f 2889/2461/1171 2887/2491/1169 2888/2429/1170 +f 2888/2429/1170 2877/2433/1160 2889/2461/1171 +f 2895/2489/1177 2890/2488/1172 2892/2493/1174 +f 2892/2493/1174 2893/2494/1175 2895/2489/1177 +f 2893/2494/1175 2813/2430/1154 2894/2490/1176 +f 2903/2502/1185 2898/2497/1180 2900/2499/1182 +f 2900/2499/1182 2901/2500/1183 2903/2502/1185 +f 2907/2506/1189 2904/2503/1186 2906/2505/1188 +f 2904/2503/1186 2897/2496/1179 2905/2504/1187 +f 2906/2505/1188 2899/2498/1181 2907/2506/1189 +f 2954/2550/1225 2908/2507/1190 2910/2509/1192 +f 2909/2508/1191 2911/2510/1193 2910/2509/1192 +f 2911/2510/1193 2913/2512/1195 2912/2511/1194 +f 2879/2483/1162 2883/2487/1166 2896/2495/1178 +f 2929/2526/1209 2915/2452/1197 2917/2514/1198 +f 2881/2485/1164 2918/2515/1199 2882/2486/1165 +f 2923/2520/1204 2919/2516/1200 2920/2517/1201 +f 2920/2517/1201 2921/2518/1202 2923/2520/1204 +f 2921/2518/1202 2924/2521/1205 2922/2519/1203 +f 2926/2523/1206 2928/2525/1208 2917/2514/1198 +f 2933/2530/1213 2930/2527/1210 2932/2529/1212 +f 2937/2534/1217 2933/2530/1213 2934/2531/1214 +f 2934/2531/1214 2935/2532/1215 2937/2534/1217 +f 2935/2532/1215 2928/2525/1208 2936/2533/1216 +f 2941/2538/1220 2938/2535/1218 2940/2537/1219 +f 2940/2537/1219 2931/2528/1211 2941/2538/1220 +f 2945/2491/1222 2943/2540/1221 2890/2488/1172 +f 2848/2461/1158 2874/2482/1158 2945/2491/1222 +f 2952/2548/1181 2946/2542/1223 2901/2500/1183 +f 2951/2547/1187 2948/2544/1186 2950/2546/1188 +f 2914/2513/1196 2944/2541/1179 2951/2547/1187 +f 2946/2542/1223 2952/2548/1181 2949/2545/1189 +f 2956/2552/1227 2953/2549/1224 2954/2550/1225 +f 2866/2478/1158 2955/2551/1226 2956/2552/1227 From 56eafc2c67c04652dd700b9551e31f4541cce640 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Fri, 1 Sep 2023 15:17:24 -0400 Subject: [PATCH 002/207] A recipe for the UAC pistol --- src/main/java/com/hbm/crafting/WeaponRecipes.java | 1 + src/main/java/com/hbm/lib/HbmChestContents.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index bc652f236..1aeec8980 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -88,6 +88,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_silver, 1), new Object[] { "SSP", " TI", 'S', AL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', ModItems.wire_tungsten, 'I', KEY_PLANKS }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_red, 1), new Object[] { "R ", " B", 'R', ModItems.key_red, 'B', ModItems.gun_revolver_blackjack }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_deagle, 1), new Object[] { "PPM", " BI", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uac_pistol, 1), new Object[] { "IIM", " BI", 'B', ModItems.bolt_dura_steel, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_cursed, 1), new Object[] { "TTM", "SRI", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'R', ModItems.wire_red_copper, 'T', TI.plate(), 'M', ModItems.mechanism_revolver_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare, 1), new Object[] { "SEM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', ModItems.wire_aluminium, 'E', ModItems.powder_power, 'M', ModItems.mechanism_revolver_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare2, 1), new Object[] { "SSM", "RRW", 'S', OreDictManager.getReflector(), 'W', W.ingot(), 'R', ModItems.wire_gold, 'M', ModItems.mechanism_special }); diff --git a/src/main/java/com/hbm/lib/HbmChestContents.java b/src/main/java/com/hbm/lib/HbmChestContents.java index 852e84b61..433b089e1 100644 --- a/src/main/java/com/hbm/lib/HbmChestContents.java +++ b/src/main/java/com/hbm/lib/HbmChestContents.java @@ -266,11 +266,13 @@ public class HbmChestContents { public static WeightedRandomChestContent[] vault1 = new WeightedRandomChestContent[] { new WeightedRandomChestContent(Items.gold_ingot, 0, 3, 14, 1), + new WeightedRandomChestContent(ModItems.gun_uac_pistol, 0, 1, 1, 2), new WeightedRandomChestContent(ModItems.pin, 0, 8, 8, 1), new WeightedRandomChestContent(ModItems.gun_calamity, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.bottle_quantum, 0, 1, 3, 1), new WeightedRandomChestContent(ModItems.ingot_advanced_alloy, 0, 4, 12, 1), new WeightedRandomChestContent(ModItems.ammo_50bmg, 0, 24, 48, 1), + new WeightedRandomChestContent(ModItems.ammo_45, 0, 48, 64, 2), new WeightedRandomChestContent(ModItems.circuit_red_copper, 0, 6, 12, 1), new WeightedRandomChestContent(ModItems.gas_mask_m65, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.grenade_if_he, 0, 1, 1, 1), @@ -386,6 +388,8 @@ public class HbmChestContents { public static WeightedRandomChestContent[] lockersVault = new WeightedRandomChestContent[] { new WeightedRandomChestContent(ModItems.robes_helmet, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.robes_plate, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.ammo_45, 0, 48, 64, 2), + new WeightedRandomChestContent(ModItems.gun_uac_pistol, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.robes_legs, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.robes_boots, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.jackt, 0, 1, 1, 1), From 16f710450c83f00417885c58896f85562304d3c1 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Fri, 1 Sep 2023 11:43:59 -0400 Subject: [PATCH 003/207] actual burst fire logic also adds burst fire to josh --- .../com/hbm/handler/GunConfiguration.java | 4 +- .../hbm/handler/guncfg/Gun50BMGFactory.java | 13 +++++- .../com/hbm/items/weapon/ItemGunBase.java | 45 +++++++++++++++---- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/hbm/handler/GunConfiguration.java b/src/main/java/com/hbm/handler/GunConfiguration.java index 1763ad83a..dd8e20796 100644 --- a/src/main/java/com/hbm/handler/GunConfiguration.java +++ b/src/main/java/com/hbm/handler/GunConfiguration.java @@ -25,6 +25,8 @@ public class GunConfiguration implements Cloneable { public int rateOfFire; //amount of bullets fired per delay passed public int roundsPerCycle; + /** Amount of rounds per burst, irrelevant if not a burst fire weapon**/ + public int roundsPerBurst; //0 = normal, 1 = release, 2 = both public int gunMode; //0 = manual, 1 = automatic @@ -46,7 +48,7 @@ public class GunConfiguration implements Cloneable { //how long the reload animation will play //MUST BE GREATER THAN ZERO ! ! ! public int reloadDuration; - //duration of every animation cycle + //duration of every animation cycle, used also for how quickly a burst fire rifle can fire public int firingDuration; //sound path to the reload sound public String reloadSound = ""; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index 5da9631d2..189ad105e 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -157,7 +157,18 @@ public class Gun50BMGFactory { return config; } - + + public static GunConfiguration getAR15BurstConfig(){ + GunConfiguration config = getAR15Config(); + config.rateOfFire = 4; + config.roundsPerBurst = 3; + config.firingDuration = 2; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_BURST; + + return config; + } + public static GunConfiguration getM2Config() { GunConfiguration config = getAR15Config(); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index e2b428c7e..0bd0611f8 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -55,7 +55,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu public boolean m1;// = false; @SideOnly(Side.CLIENT) public boolean m2;// = false; - + + public int burstDuration = 0; public ItemGunBase(GunConfiguration config) { mainConfig = config; this.setMaxStackSize(1); @@ -131,13 +132,26 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(getIsMouseDown(stack) && !(player.getHeldItem() == stack)) { setIsMouseDown(stack, false); } - + + if(burstDuration > 0) { + if(altConfig == null) { + if (world.getWorldTime() % mainConfig.firingDuration == 0 && tryShoot(stack, world, player, true)) { + fire(stack, world, player); + } + } else { + boolean canFire = altConfig.firingDuration == 1 || world.getWorldTime() % altConfig.firingDuration == 0; + if (canFire && tryShoot(stack, world, player, false)) { + altFire(stack, world, player); + } + } + + if(--burstDuration == 0) setDelay(stack, mainConfig.rateOfFire); + } if(getIsAltDown(stack) && !isCurrentItem) { setIsAltDown(stack, false); } if(GeneralConfig.enableGuns && mainConfig.firingMode == 1 && getIsMouseDown(stack) && tryShoot(stack, world, player, isCurrentItem)) { - fire(stack, world, player); setDelay(stack, mainConfig.rateOfFire); } @@ -284,17 +298,32 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu //called on click (server side, called by mouse packet) for semi-automatics and specific events public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - if(mainConfig.firingMode == mainConfig.FIRE_MANUAL && main && tryShoot(stack, world, player, main)) { - fire(stack, world, player); - setDelay(stack, mainConfig.rateOfFire); + boolean validConfig = mainConfig.firingMode == GunConfiguration.FIRE_MANUAL || mainConfig.firingMode == GunConfiguration.FIRE_BURST; + + if(validConfig && main && tryShoot(stack, world, player, main)) { + + if(mainConfig.firingMode == GunConfiguration.FIRE_BURST){ + if(burstDuration <= 0) + burstDuration = mainConfig.firingDuration * mainConfig.roundsPerBurst; + } else { + fire(stack, world, player); + setDelay(stack, mainConfig.rateOfFire); + } + //setMag(stack, getMag(stack) - 1); //useUpAmmo(player, stack, main); //player.inventoryContainer.detectAndSendChanges(); } if(!main && altConfig != null && tryShoot(stack, world, player, main)) { - altFire(stack, world, player); - setDelay(stack, altConfig.rateOfFire); + + if(altConfig.firingMode == GunConfiguration.FIRE_BURST && burstDuration <= 0){ + burstDuration = altConfig.firingDuration * altConfig.roundsPerBurst; + } else { + altFire(stack, world, player); + setDelay(stack, altConfig.rateOfFire); + } + //useUpAmmo(player, stack, main); //player.inventoryContainer.detectAndSendChanges(); } From 9e2d2dba01d104d7d6953bfc28128b195c767972 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Fri, 1 Sep 2023 13:22:20 -0400 Subject: [PATCH 004/207] burst fire for the UAC pistol --- .../hbm/handler/guncfg/Gun45ACPFactory.java | 23 ++++++++++++++++++- src/main/java/com/hbm/items/ModItems.java | 4 ++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java index b4f25aa06..55f42911b 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java @@ -62,7 +62,7 @@ public class Gun45ACPFactory { config.firingMode = GunConfiguration.FIRE_MANUAL; config.reloadDuration = 10; config.firingDuration = 8; - config.ammoCap = 16; + config.ammoCap = 21; config.durability = 10000; config.reloadType = 1; config.allowsInfinity = true; @@ -88,6 +88,27 @@ public class Gun45ACPFactory { .addKeyframe(new BusAnimationKeyframe(15, 0, 0, 10)) .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 40)))); + //faster version of the main one, so it doesn't cut out much on the bursts + config.animations.put(AnimType.ALT_CYCLE, new BusAnimation() + .addBus("SLIDE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 5))// Wait for hammer + .addKeyframe(new BusAnimationKeyframe(0, 0, -3.5, 20))// Slide back + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 20)))// Return + .addBus("HAMMER", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(15, 0, 0, 5)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 20)))); + + return config; + } + + public static GunConfiguration getUACPistolBurstConfig() { + GunConfiguration config = getUACPistolConfig(); + config.rateOfFire = 5; + config.roundsPerBurst = 3; + config.firingDuration = 2; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_BURST; + return config; } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 119a33d3b..8ee6a7e1e 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4229,8 +4229,8 @@ public class ModItems { gun_glass_cannon = new ItemEnergyGunBase(GunPoweredFactory.getGlassCannonConfig()).setFull3D().setUnlocalizedName("gun_glass_cannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); gun_m2 = new ItemGunBase(Gun50BMGFactory.getM2Config()).setFull3D().setUnlocalizedName("gun_m2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); gun_lunatic_marksman = new ItemGunBase(Gun50BMGFactory.getLunaticMarksman()).setFull3D().setUnlocalizedName("gun_lunatic_marksman").setCreativeTab(MainRegistry.weaponTab); - gun_uac_pistol = new ItemGunBase(Gun45ACPFactory.getUACPistolConfig()).setFull3D().setUnlocalizedName("gun_uac_pistol").setCreativeTab(MainRegistry.weaponTab); - + gun_uac_pistol = new ItemGunBase(Gun45ACPFactory.getUACPistolConfig(), Gun45ACPFactory.getUACPistolBurstConfig()).setFull3D().setUnlocalizedName("gun_uac_pistol").setCreativeTab(MainRegistry.weaponTab); + ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0); crucible = new ItemCrucible(5000, 1F, matCrucible).setUnlocalizedName("crucible").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":crucible"); From ad826215eeeebbbe8b4595f01f15605c7d716c4b Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Fri, 1 Sep 2023 16:17:20 -0400 Subject: [PATCH 005/207] i forogr --- src/main/java/com/hbm/handler/GunConfiguration.java | 1 + .../java/com/hbm/handler/guncfg/Gun45ACPFactory.java | 10 ---------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/main/java/com/hbm/handler/GunConfiguration.java b/src/main/java/com/hbm/handler/GunConfiguration.java index dd8e20796..97cb7b3a5 100644 --- a/src/main/java/com/hbm/handler/GunConfiguration.java +++ b/src/main/java/com/hbm/handler/GunConfiguration.java @@ -96,6 +96,7 @@ public class GunConfiguration implements Cloneable { public static final int FIRE_MANUAL = 0; public static final int FIRE_AUTO = 1; + public static final int FIRE_BURST = 2; public static final int RELOAD_NONE = 0; public static final int RELOAD_FULL = 1; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java index 55f42911b..644d37457 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java @@ -88,16 +88,6 @@ public class Gun45ACPFactory { .addKeyframe(new BusAnimationKeyframe(15, 0, 0, 10)) .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 40)))); - //faster version of the main one, so it doesn't cut out much on the bursts - config.animations.put(AnimType.ALT_CYCLE, new BusAnimation() - .addBus("SLIDE", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 5))// Wait for hammer - .addKeyframe(new BusAnimationKeyframe(0, 0, -3.5, 20))// Slide back - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 20)))// Return - .addBus("HAMMER", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(15, 0, 0, 5)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 20)))); - return config; } From db288d06c7d69d73d8c8bd0ad522c675be36f95e Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 3 Sep 2023 18:29:47 +0200 Subject: [PATCH 006/207] conveyor press, fixes --- changelog | 21 +- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../blocks/machine/MachineConveyorPress.java | 173 +++ .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../projectile/EntityArtilleryShell.java | 1 + .../inventory/recipes/AssemblerRecipes.java | 3 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 2 + .../com/hbm/main/ModEventHandlerClient.java | 13 +- .../com/hbm/main/ModEventHandlerRenderer.java | 4 +- .../java/com/hbm/main/ResourceManager.java | 3 + .../hbm/render/entity/effect/RenderTorex.java | 2 +- .../tileentity/RenderConveyorPress.java | 80 ++ .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityConveyorPress.java | 269 +++++ .../machine/TileEntityCoreEmitter.java | 5 - .../machine/rbmk/TileEntityRBMKRod.java | 2 + .../storage/TileEntityMachineFENSU.java | 92 +- .../java/com/hbm/world/feature/BiomeCave.java | 7 +- .../java/com/hbm/world/feature/DeepLayer.java | 8 +- .../java/com/hbm/world/feature/OreCave.java | 7 +- .../java/com/hbm/world/feature/OreLayer.java | 7 +- .../com/hbm/world/feature/OreLayer3D.java | 8 +- .../com/hbm/world/feature/SchistStratum.java | 7 +- .../hbm/world/generator/DungeonToolbox.java | 8 + src/main/resources/assets/hbm/lang/de_DE.lang | 4 +- src/main/resources/assets/hbm/lang/en_US.lang | 3 + .../hbm/models/machines/conveyor_press.obj | 1042 +++++++++++++++++ .../hbm/textures/armor/trenchmaster_arm.png | Bin 0 -> 546 bytes .../textures/armor/trenchmaster_helmet.png | Bin 0 -> 1378 bytes .../models/machines/conveyor_press.png | Bin 0 -> 1767 bytes .../models/machines/conveyor_press_belt.png | Bin 0 -> 1482 bytes 32 files changed, 1699 insertions(+), 79 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderConveyorPress.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java create mode 100644 src/main/resources/assets/hbm/models/machines/conveyor_press.obj create mode 100644 src/main/resources/assets/hbm/textures/armor/trenchmaster_arm.png create mode 100644 src/main/resources/assets/hbm/textures/armor/trenchmaster_helmet.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/conveyor_press.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/conveyor_press_belt.png diff --git a/changelog b/changelog index e6f256dbe..a7baa47be 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,11 @@ +## Added +* Conveyor press + * An upgraded version of the electric press that can be integrated directly into conveyor belts + * Each pressing operation will process however many items happen to be at the belt at the time, so given enough conveyor infrastructure it can be much faster than a normal electric press + * Has no GUI, stamps are installed either by hand or via automation + * Stamps can be removed with a screwdriver + * Can only stamp single items to avoid issues with stack limits, so it's best to use ejection speed instead of stack ejection upgrades for the conveyor ejectors + ## Changed * Chlorophyte rounds now deal 2x more damage than their standard counterparts instead of 1.5x * Chlorophyte rounds now penetrate multiple enemies @@ -10,7 +18,18 @@ * 5mm assemblies now yield 64 instead of 32 bullets * The production complexity and time for making thermoelectric elements in the assembler has been reduced * Thermoelectric elements can now also be made in a tier 2 anvil +* Changed electric press recipe, crafting complexity has been reduced and the press now uses hydraulic pistons +* Removed DFC emitter beam cap again since the core already imposes a natural limit due to fuel consumption + * I don't know why anyone would need a DFC that strong anyway, but now you can have them again ## Fixed * Fixed logspam when pollution handler tries to save the pollution data for dimensions that have never been loaded before -* Fixed dead leaves layer not being replacable by other blocks \ No newline at end of file +* Fixed dead leaves layer not being replacable by other blocks +* Fixed rock layers like schist, hematite and sulfur caves not spawning at all +* Fixed rock layers replacing end portal frames or bedrock +* Fixed FEnSU instantly voiding all energy when sending +* Fixed some conflict causing the nuke flash to be applied permanently +* Fixed flux level not resetting when rods are above melting point with meltdowns disabled +* Fixed crash caused by express delivery shells +* Fixed 4 gauge solid steel slugs not being made from steel +* Fixed missing lang entry for fluorite ore \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index dd5bf106a..8adb34c14 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1050,6 +1050,7 @@ public class ModBlocks { public static Block press_preheater; public static Block machine_press; public static Block machine_epress; + public static Block machine_conveyor_press; public static Block machine_siren; @@ -2265,6 +2266,7 @@ public class ModBlocks { press_preheater = new BlockBase(Material.iron).setBlockName("press_preheater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":press_preheater"); machine_press = new MachinePress(Material.iron).setBlockName("machine_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_press"); machine_epress = new MachineEPress(Material.iron).setBlockName("machine_epress").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_epress"); + machine_conveyor_press = new MachineConveyorPress(Material.iron).setBlockName("machine_conveyor_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_selenium = new MachineSeleniumEngine(Material.iron).setBlockName("machine_selenium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_selenium"); reactor_research = new ReactorResearch(Material.iron).setBlockName("machine_reactor_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor_small"); reactor_zirnox = new ReactorZirnox(Material.iron).setBlockName("machine_zirnox").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3084,6 +3086,7 @@ public class ModBlocks { GameRegistry.registerBlock(press_preheater, press_preheater.getUnlocalizedName()); GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName()); + register(machine_conveyor_press); register(heater_firebox); register(heater_oven); register(machine_ashpit); diff --git a/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java b/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java new file mode 100644 index 000000000..1bddf1a9d --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java @@ -0,0 +1,173 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.items.machine.ItemStamp; +import com.hbm.tileentity.machine.TileEntityConveyorPress; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import api.hbm.block.IToolable; +import api.hbm.conveyor.IConveyorBelt; +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineConveyorPress extends BlockDummyable implements IConveyorBelt, ILookOverlay, IToolable, ITooltipProvider { + + public MachineConveyorPress(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityConveyorPress(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else { + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityConveyorPress)) + return false; + + TileEntityConveyorPress press = (TileEntityConveyorPress) te; + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemStamp && press.slots[0] == null) { + press.slots[0] = player.getHeldItem().copy(); + press.slots[0].stackSize = 1; + player.getHeldItem().stackSize--; + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); + press.markChanged(); + world.markBlockForUpdate(x, y, z); + return true; + } + } + + return false; + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + if(tool != ToolType.SCREWDRIVER) return false; + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityConveyorPress)) + return false; + + TileEntityConveyorPress press = (TileEntityConveyorPress) te; + + if(press.slots[0] == null) return false; + + if(!player.inventory.addItemStackToInventory(press.slots[0].copy())) { + EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, press.slots[0].copy()); + world.spawnEntityInWorld(item); + } else { + player.inventoryContainer.detectAndSendChanges(); + } + + press.slots[0] = null; + press.markChanged(); + + return true; + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, Vec3 itemPos, double speed) { + ForgeDirection dir = this.getTravelDirection(world, x, y, z, itemPos); + Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, itemPos); + Vec3 dest = Vec3.createVectorHelper(snap.xCoord - dir.offsetX * speed, snap.yCoord - dir.offsetY * speed, snap.zCoord - dir.offsetZ * speed); + Vec3 motion = Vec3.createVectorHelper((dest.xCoord - itemPos.xCoord), (dest.yCoord - itemPos.yCoord), (dest.zCoord - itemPos.zCoord)); + double len = motion.lengthVector(); + Vec3 ret = Vec3.createVectorHelper(itemPos.xCoord + motion.xCoord / len * speed, itemPos.yCoord + motion.yCoord / len * speed, itemPos.zCoord + motion.zCoord / len * speed); + return ret; + } + + public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos) { + int meta = world.getBlockMetadata(x, y - 1, z) - offset; + return ForgeDirection.getOrientation(meta).getRotation(ForgeDirection.UP); + } + + @Override + public Vec3 getClosestSnappingPosition(World world, int x, int y, int z, Vec3 itemPos) { + + ForgeDirection dir = this.getTravelDirection(world, x, y, z, itemPos); + itemPos.xCoord = MathHelper.clamp_double(itemPos.xCoord, x, x + 1); + itemPos.zCoord = MathHelper.clamp_double(itemPos.zCoord, z, z + 1); + double posX = x + 0.5; + double posZ = z + 0.5; + if(dir.offsetX != 0) posX = itemPos.xCoord; + if(dir.offsetZ != 0) posZ = itemPos.zCoord; + return Vec3.createVectorHelper(posX, y + 0.25, posZ); + } + + @Override + public boolean canItemStay(World world, int x, int y, int z, Vec3 itemPos) { + return world.getBlock(x, y - 1, z) == this && world.getBlockMetadata(x, y - 1, z) >= 12; + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityConveyorPress)) + return; + + TileEntityConveyorPress press = (TileEntityConveyorPress) te; + List text = new ArrayList(); + + text.add(BobMathUtil.getShortNumber(press.power) + "HE / " + BobMathUtil.getShortNumber(press.maxPower) + "HE"); + text.add("Installed stamp: " + ((press.syncStack == null || press.syncStack.getItem() == null) ? (EnumChatFormatting.RED + "NONE") : press.syncStack.getDisplayName())); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 0b55c4ab6..c81f7b911 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -196,7 +196,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModBlocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); diff --git a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java index a64891b70..b03d3118f 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java +++ b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java @@ -56,6 +56,7 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa @Override protected void entityInit() { + super.entityInit(); init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); this.dataWatcher.addObject(10, new Integer(0)); } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 0b2af8d85..50db8cf5a 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -13,6 +13,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ItemAmmoEnums; +import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemDrillbit.EnumDrillType; @@ -281,7 +282,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {new OreDictStack(STEEL.plate(), 24), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(CU.plate(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); - makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.bolt_tungsten, 4), new ComparableStack(ModItems.coil_copper, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_copper, 1), new OreDictStack(Fluids.LUBRICANT.getDict(1000)), },160); + makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit_copper, 1) }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.hull_big_steel, 4), new OreDictStack(ANY_TAR.any(), 4), },150); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 49b3aae01..97bcdb621 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -287,6 +287,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCoker.class, new RenderCoker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPistonInserter.class, new RenderPistonInserter()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConveyorPress.class, new RenderConveyorPress()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 7c0d6c047..338981eaa 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -984,6 +984,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.crane_unboxer), new Object[] { "WWW", "WPW", "CCC", 'W', KEY_STICK, 'P', Items.shears, 'C', ModBlocks.conveyor }); addRecipeAuto(new ItemStack(ModBlocks.crane_router), new Object[] { "PIP", "ICI", "PIP", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', ModItems.plate_polymer, 'C', ModItems.circuit_copper }); addRecipeAuto(new ItemStack(ModBlocks.crane_splitter), new Object[] { "III", "PCP", "III", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', STEEL.ingot(), 'C', ModItems.circuit_aluminium }); + + addRecipeAuto(new ItemStack(ModBlocks.machine_conveyor_press), new Object[] { "CPC", "CBC", "CCC", 'C', CU.plate(), 'P', ModBlocks.machine_epress, 'B', ModBlocks.conveyor }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1), new Object[] { ModItems.ingot_chainsteel, ASBESTOS.ingot(), ModItems.gem_alexandrite }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1, 3), new Object[] { DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2) }); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 8390aa880..bd54cf242 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -12,10 +12,6 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; -import com.hbm.blocks.rail.IRailNTM; -import com.hbm.blocks.rail.IRailNTM.MoveContext; -import com.hbm.blocks.rail.IRailNTM.RailCheckType; -import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.config.GeneralConfig; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; @@ -144,7 +140,8 @@ import net.minecraftforge.event.entity.player.ItemTooltipEvent; public class ModEventHandlerClient { - public static int flashTimer; + public static final int flashDuration = 5_000; + public static long flashTimestamp; @SubscribeEvent public void onOverlayRender(RenderGameOverlayEvent.Pre event) { @@ -152,7 +149,7 @@ public class ModEventHandlerClient { EntityPlayer player = Minecraft.getMinecraft().thePlayer; /// NUKE FLASH /// - if(event.type == ElementType.CROSSHAIRS && flashTimer > 0) { + if(event.type == ElementType.CROSSHAIRS && (flashTimestamp + flashDuration - System.currentTimeMillis()) > 0) { int width = event.resolution.getScaledWidth(); int height = event.resolution.getScaledHeight(); Tessellator tess = Tessellator.instance; @@ -162,7 +159,7 @@ public class ModEventHandlerClient { GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.0F); GL11.glDepthMask(false); tess.startDrawingQuads(); - float brightness = (flashTimer - event.partialTicks) / 200F; + float brightness = (flashTimestamp + flashDuration - System.currentTimeMillis()) / (float) flashDuration; tess.setColorRGBA_F(1F, 1F, 1F, brightness * 0.8F); tess.addVertex(width, 0, 0); tess.addVertex(0, 0, 0); @@ -1262,8 +1259,6 @@ public class ModEventHandlerClient { client.sendQueue.addToSendQueue(new C0CPacketInput(client.moveStrafing, client.moveForward, client.movementInput.jump, client.movementInput.sneak)); } } - - if(event.phase == Phase.START) if(flashTimer > 0) flashTimer--; } @SubscribeEvent diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index eee0c1d97..50156b735 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -383,8 +383,8 @@ public class ModEventHandlerRenderer { @SubscribeEvent public void onRenderHUD(RenderGameOverlayEvent.Pre event) { - if(event.type == ElementType.HOTBAR && ModEventHandlerClient.flashTimer > 0) { - double mult = (ModEventHandlerClient.flashTimer + event.partialTicks) * 0.01D; + if(event.type == ElementType.HOTBAR && (ModEventHandlerClient.flashTimestamp + ModEventHandlerClient.flashDuration - System.currentTimeMillis()) > 0) { + double mult = (ModEventHandlerClient.flashTimestamp + ModEventHandlerClient.flashDuration - System.currentTimeMillis()) / (double) ModEventHandlerClient.flashDuration * 2; double horizontal = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.02), -0.7, 0.7) * 5; double vertical = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.01 + 2), -0.7, 0.7) * 1; GL11.glTranslated(horizontal * mult, vertical * mult, 0); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index be61c02bd..4ad9341a7 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -122,6 +122,7 @@ public class ResourceManager { public static final IModelCustom press_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/press_head.obj")); public static final IModelCustom epress_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_body.obj")); public static final IModelCustom epress_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_head.obj")); + public static final IModelCustom conveyor_press = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/conveyor_press.obj")); //Assembler public static final IModelCustom assembler_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/assembler_new_body.obj")); @@ -479,6 +480,8 @@ public class ResourceManager { public static final ResourceLocation press_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/press_head.png"); public static final ResourceLocation epress_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/epress_body.png"); public static final ResourceLocation epress_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/epress_head.png"); + public static final ResourceLocation conveyor_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press.png"); + public static final ResourceLocation conveyor_press_belt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press_belt.png"); //Assembler public static final ResourceLocation assembler_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/assembler_base_new.png"); diff --git a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java index e54f175a0..e90761d3e 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java @@ -37,7 +37,7 @@ public class RenderTorex extends Render { EntityNukeTorex cloud = (EntityNukeTorex)entity; cloudletWrapper(cloud, interp); if(cloud.ticksExisted < 101) flashWrapper(cloud, interp); - if(cloud.ticksExisted < 10 && ModEventHandlerClient.flashTimer < 100) ModEventHandlerClient.flashTimer = 200; + if(cloud.ticksExisted < 10 && System.currentTimeMillis() - ModEventHandlerClient.flashTimestamp > 1_000) ModEventHandlerClient.flashTimestamp = System.currentTimeMillis(); if(fog) GL11.glEnable(GL11.GL_FOG); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderConveyorPress.java b/src/main/java/com/hbm/render/tileentity/RenderConveyorPress.java new file mode 100644 index 000000000..1bfb50fae --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderConveyorPress.java @@ -0,0 +1,80 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityConveyorPress; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderConveyorPress extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + TileEntityConveyorPress press = (TileEntityConveyorPress) tile; + + bindTexture(ResourceManager.conveyor_press_tex); + ResourceManager.conveyor_press.renderPart("Press"); + + if(press.syncStack != null) { + GL11.glPushMatrix(); + double piston = press.lastPress + (press.renderPress - press.lastPress) * interp; + GL11.glTranslated(0, -piston * 0.75, 0); + ResourceManager.conveyor_press.renderPart("Piston"); + GL11.glPopMatrix(); + } + + bindTexture(ResourceManager.conveyor_press_belt_tex); + + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + int ticks = (int)(tile.getWorldObj().getTotalWorldTime() % 16) - 2; + GL11.glTranslated(0, ticks / 16D, 0); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + ResourceManager.conveyor_press.renderPart("Belt"); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_conveyor_press); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(4.5, 4.5, 4.5); + } + public void renderCommon() { + bindTexture(ResourceManager.conveyor_press_tex); + ResourceManager.conveyor_press.renderPart("Press"); + ResourceManager.conveyor_press.renderPart("Piston"); + bindTexture(ResourceManager.conveyor_press_belt_tex); + ResourceManager.conveyor_press.renderPart("Belt"); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index fd8d60aca..ebd4e6c46 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -140,6 +140,7 @@ public class TileMappings { put(TileEntityDecon.class, "tileentity_decon"); put(TileEntityMachineSatDock.class, "tileentity_miner_dock"); put(TileEntityMachineEPress.class, "tileentity_electric_press"); + put(TileEntityConveyorPress.class, "tileentity_conveyor_press"); put(TileEntityCoreEmitter.class, "tileentity_v0_emitter"); put(TileEntityCoreReceiver.class, "tileentity_v0_receiver"); put(TileEntityCoreInjector.class, "tileentity_v0_injector"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java new file mode 100644 index 000000000..c4f7eaf9f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java @@ -0,0 +1,269 @@ +package com.hbm.tileentity.machine; + +import java.util.List; + +import com.hbm.entity.item.EntityMovingItem; +import com.hbm.inventory.recipes.PressRecipes; +import com.hbm.items.machine.ItemStamp; +import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityConveyorPress extends TileEntityMachineBase implements IEnergyUser { + + public int usage = 100; + public long power = 0; + public final static long maxPower = 50000; + + public double speed = 0.125; + public double press; + public double renderPress; + public double lastPress; + private double syncPress; + private int turnProgress; + protected boolean isRetracting = false; + private int delay; + + public ItemStack syncStack; + + public TileEntityConveyorPress() { + super(1); + } + + @Override + public String getName() { + return ""; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.updateConnections(); + + if(delay <= 0) { + + if(isRetracting) { + + if(this.canRetract()) { + this.press -= speed; + this.power -= this.usage; + + if(press <= 0) { + press = 0; + this.isRetracting = false; + delay = 0; + } + } + + } else { + + if(this.canExtend()) { + this.press += speed; + this.power -= this.usage; + + if(press >= 1) { + press = 1; + this.isRetracting = true; + delay = 5; + this.process(); + } + } + } + + } else { + delay--; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setDouble("press", press); + if(slots[0] != null) { + NBTTagCompound stack = new NBTTagCompound(); + slots[0].writeToNBT(stack); + data.setTag("stack", stack); + } + + this.networkPack(data, 50); + } else { + + // approach-based interpolation, GO! + this.lastPress = this.renderPress; + + if(this.turnProgress > 0) { + this.renderPress = this.renderPress + ((this.syncPress - this.renderPress) / (double) this.turnProgress); + --this.turnProgress; + } else { + this.renderPress = this.syncPress; + } + } + } + + protected void updateConnections() { + for(DirPos pos : getConPos()) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + protected DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 1, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z), + }; + } + + public boolean canExtend() { + + if(this.power < usage) return false; + if(slots[0] == null) return false; + + List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 1.5, zCoord + 1)); + if(items.isEmpty()) return false; + + for(EntityMovingItem item : items) { + ItemStack stack = item.getItemStack(); + if(PressRecipes.getOutput(stack, slots[0]) != null && stack.stackSize == 1) { + + double d0 = 0.35; + double d1 = 0.65; + if(item.posX > xCoord + d0 && item.posX < xCoord + d1 && item.posZ > zCoord + d0 && item.posZ < zCoord + d1) { + item.setPosition(xCoord + 0.5, item.posY, zCoord + 0.5); + } + + return true; + } + } + + return false; + } + + public void process() { + + List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 1.5, zCoord + 1)); + + for(EntityMovingItem item : items) { + ItemStack stack = item.getItemStack(); + ItemStack output = PressRecipes.getOutput(stack, slots[0]); + + if(output != null && stack.stackSize == 1) { + item.setDead(); + EntityMovingItem out = new EntityMovingItem(worldObj); + out.setPosition(item.posX, item.posY, item.posZ); + out.setItemStack(output.copy()); + worldObj.spawnEntityInWorld(out); + } + } + + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", 1.5F, 1.0F); + + if(slots[0].getMaxDamage() != 0) { + slots[0].setItemDamage(slots[0].getItemDamage() + 1); + if(slots[0].getItemDamage() >= slots[0].getMaxDamage()) { + slots[0] = null; + } + } + } + + public boolean canRetract() { + if(this.power < usage) return false; + return true; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.syncPress = nbt.getInteger("press"); + + if(nbt.hasKey("stack")) { + NBTTagCompound stack = nbt.getCompoundTag("stack"); + this.syncStack = ItemStack.loadItemStackFromNBT(stack); + } else { + this.syncStack = null; + } + + this.turnProgress = 2; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return stack.getItem() instanceof ItemStamp; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 0 }; + } + + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + return this.isItemValidForSlot(i, itemStack); + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public boolean canConnect(ForgeDirection dir) { + return dir != ForgeDirection.DOWN; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.press = nbt.getDouble("press"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setDouble("press", press); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index d40fff7d8..f19f9e586 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -43,7 +43,6 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne public boolean isOn; public FluidTank tank; public long prev; - public static long maxJoules = Long.MAX_VALUE / 100_000; public static final int range = 50; @@ -99,8 +98,6 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); for(int i = 1; i <= range; i++) { - if(out > maxJoules) out = maxJoules; - beam = i; int x = xCoord + dir.offsetX * i; @@ -111,13 +108,11 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne TileEntity te = worldObj.getTileEntity(x, y, z); if(block instanceof ILaserable) { - ((ILaserable)block).addEnergy(worldObj, x, y, z, out * 98 / 100, dir); break; } if(te instanceof ILaserable) { - ((ILaserable)te).addEnergy(worldObj, x, y, z, out * 98 / 100, dir); break; } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 1b1f607d4..2a432b5d7 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -91,6 +91,8 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM } else { this.meltdown(); } + this.fluxFast = 0; + this.fluxSlow = 0; return; } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java index eea2287d6..188b919e6 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java @@ -1,9 +1,16 @@ package com.hbm.tileentity.machine.storage; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import com.hbm.lib.Library; import api.hbm.energy.IEnergyConductor; import api.hbm.energy.IEnergyConnector; +import api.hbm.energy.IPowerNet; +import api.hbm.energy.PowerNet; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; @@ -28,7 +35,7 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower()); ////////////////////////////////////////////////////////////////////// - this.transmitPowerFairly(); + this.transmitPower(); ////////////////////////////////////////////////////////////////////// byte comp = this.getComparatorPower(); @@ -71,54 +78,61 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { short mode = (short) this.getRelevantMode(); - ForgeDirection dir = ForgeDirection.DOWN; + //HasSets to we don'T have any duplicates + Set nets = new HashSet(); + Set consumers = new HashSet(); + + //iterate over all sides + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(con.getPowerNet() != null && con.getPowerNet().isSubscribed(this)) - con.getPowerNet().unsubscribe(this); - } - - if(mode == 1 || mode == 2) { - if(te instanceof IEnergyConnector) { + TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + + //if it's a cable, buffer both the network and all subscribers of the net + if(te instanceof IEnergyConductor) { + IEnergyConductor con = (IEnergyConductor) te; + if(con.canConnect(dir.getOpposite()) && con.getPowerNet() != null) { + nets.add(con.getPowerNet()); + con.getPowerNet().unsubscribe(this); + consumers.addAll(con.getPowerNet().getSubscribers()); + } + + //if it's just a consumer, buffer it as a subscriber + } else if(te instanceof IEnergyConnector) { IEnergyConnector con = (IEnergyConnector) te; - - long max = maxTransfer; - long toTransfer = Math.min(max, this.power); - long remainder = this.power - toTransfer; - this.power = toTransfer; - - long oldPower = this.power; - long transfer = this.power - con.transferPower(this.power); - this.power = oldPower - transfer; - - power += remainder; - } - } - - if(te instanceof IEnergyConductor) { - IEnergyConductor con = (IEnergyConductor) te; - - if(con.getPowerNet() != null) { - if(mode == 2 || mode == 3) { - if(con.getPowerNet().isSubscribed(this)) { - con.getPowerNet().unsubscribe(this); - } - } else if(!con.getPowerNet().isSubscribed(this)) { - con.getPowerNet().subscribe(this); + if(con.canConnect(dir.getOpposite())) { + consumers.add((IEnergyConnector) te); } } } + + //send power to buffered consumers, independent of nets + if(this.power > 0 && (mode == mode_buffer || mode == mode_output)) { + List con = new ArrayList(); + con.addAll(consumers); + + if(PowerNet.trackingInstances == null) { + PowerNet.trackingInstances = new ArrayList(); + } + PowerNet.trackingInstances.clear(); + + nets.forEach(x -> { + if(x instanceof PowerNet) PowerNet.trackingInstances.add((PowerNet) x); + }); + + long toSend = Math.min(this.power, maxTransfer); + long powerRemaining = this.power - toSend; + this.power = PowerNet.fairTransfer(con, toSend) + powerRemaining; + } + + //resubscribe to buffered nets, if necessary + if(mode == mode_buffer || mode == mode_input) { + nets.forEach(x -> x.subscribe(this)); + } } @Override public long getPowerRemainingScaled(long i) { - double powerScaled = (double)power / (double)getMaxPower(); - return (long)(i * powerScaled); } diff --git a/src/main/java/com/hbm/world/feature/BiomeCave.java b/src/main/java/com/hbm/world/feature/BiomeCave.java index f1beb0d10..1dc57bd73 100644 --- a/src/main/java/com/hbm/world/feature/BiomeCave.java +++ b/src/main/java/com/hbm/world/feature/BiomeCave.java @@ -3,6 +3,7 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.blocks.BlockEnums.EnumBiomeType; +import com.hbm.world.generator.DungeonToolbox; import com.hbm.blocks.ModBlocks; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -13,7 +14,7 @@ import net.minecraft.world.biome.BiomeGenBase.TempCategory; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; public class BiomeCave { @@ -52,7 +53,7 @@ public class BiomeCave { } @SubscribeEvent - public void onDecorate(PopulateChunkEvent.Pre event) { + public void onDecorate(DecorateBiomeEvent.Pre event) { World world = event.world; @@ -95,7 +96,7 @@ public class BiomeCave { private static void handleBiome(World world, int x, int y, int z, EnumBiomeType type) { Block target = world.getBlock(x, y, z); - if(target.isNormalCube()) { + if(target.isNormalCube() && DungeonToolbox.allowedToReplace(target)) { boolean shouldGen = false; diff --git a/src/main/java/com/hbm/world/feature/DeepLayer.java b/src/main/java/com/hbm/world/feature/DeepLayer.java index 685fdb7eb..69216034d 100644 --- a/src/main/java/com/hbm/world/feature/DeepLayer.java +++ b/src/main/java/com/hbm/world/feature/DeepLayer.java @@ -3,22 +3,22 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; public class DeepLayer { NoiseGeneratorPerlin noise; @SubscribeEvent - public void onDecorate(PopulateChunkEvent.Pre event) { + public void onDecorate(DecorateBiomeEvent.Pre event) { World world = event.world; if(world.provider == null || world.provider.dimensionId != 0) return; @@ -51,7 +51,7 @@ public class DeepLayer { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && target.getMaterial() == Material.rock && target != Blocks.bedrock) { + if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) { boolean lava = false; diff --git a/src/main/java/com/hbm/world/feature/OreCave.java b/src/main/java/com/hbm/world/feature/OreCave.java index 49ae81a9b..7f879866b 100644 --- a/src/main/java/com/hbm/world/feature/OreCave.java +++ b/src/main/java/com/hbm/world/feature/OreCave.java @@ -5,6 +5,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockStalagmite; import com.hbm.inventory.RecipesCommon.MetaBlock; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; @@ -13,7 +14,7 @@ import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; public class OreCave { @@ -71,7 +72,7 @@ public class OreCave { @SuppressWarnings("incomplete-switch") @SubscribeEvent - public void onDecorate(PopulateChunkEvent.Pre event) { + public void onDecorate(DecorateBiomeEvent.Pre event) { World world = event.world; @@ -103,7 +104,7 @@ public class OreCave { for(int y = yLevel - range; y <= yLevel + range; y++) { Block genTarget = world.getBlock(x, y, z); - if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground)) { + if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground) && DungeonToolbox.allowedToReplace(genTarget)) { boolean shouldGen = false; boolean canGenFluid = event.rand.nextBoolean(); diff --git a/src/main/java/com/hbm/world/feature/OreLayer.java b/src/main/java/com/hbm/world/feature/OreLayer.java index 8e658cb65..aacf1c416 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer.java +++ b/src/main/java/com/hbm/world/feature/OreLayer.java @@ -3,6 +3,7 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.inventory.RecipesCommon.MetaBlock; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; @@ -10,7 +11,7 @@ import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; public class OreLayer { @@ -65,7 +66,7 @@ public class OreLayer { } @SubscribeEvent - public void onDecorate(PopulateChunkEvent.Pre event) { + public void onDecorate(DecorateBiomeEvent.Pre event) { World world = event.world; @@ -99,7 +100,7 @@ public class OreLayer { if(event.rand.nextFloat() < density) { Block genTarget = world.getBlock(x, y, z); - if(genTarget.isReplaceableOreGen(world, x, y, z, target)) { + if(genTarget.isReplaceableOreGen(world, x, y, z, target) && DungeonToolbox.allowedToReplace(genTarget)) { world.setBlock(x, y, z, ore.block, ore.meta, 2); } } diff --git a/src/main/java/com/hbm/world/feature/OreLayer3D.java b/src/main/java/com/hbm/world/feature/OreLayer3D.java index 08650db8e..50fba58b3 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer3D.java +++ b/src/main/java/com/hbm/world/feature/OreLayer3D.java @@ -2,13 +2,15 @@ package com.hbm.world.feature; import java.util.Random; +import com.hbm.world.generator.DungeonToolbox; + import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; public class OreLayer3D { @@ -51,7 +53,7 @@ public class OreLayer3D { } @SubscribeEvent - public void onDecorate(PopulateChunkEvent.Pre event) { + public void onDecorate(DecorateBiomeEvent.Pre event) { World world = event.world; @@ -74,7 +76,7 @@ public class OreLayer3D { if(nX * nY * nZ > threshold) { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && target.getMaterial() == Material.rock) { + if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) { world.setBlock(x, y, z, block, meta, 2); } } diff --git a/src/main/java/com/hbm/world/feature/SchistStratum.java b/src/main/java/com/hbm/world/feature/SchistStratum.java index 28d5d6fe2..d83ec528e 100644 --- a/src/main/java/com/hbm/world/feature/SchistStratum.java +++ b/src/main/java/com/hbm/world/feature/SchistStratum.java @@ -3,20 +3,21 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.world.World; import net.minecraft.world.gen.NoiseGeneratorPerlin; -import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; public class SchistStratum { NoiseGeneratorPerlin noise; @SubscribeEvent - public void onDecorate(PopulateChunkEvent.Pre event) { + public void onDecorate(DecorateBiomeEvent.Pre event) { if(this.noise == null) { this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed()), 4); @@ -51,7 +52,7 @@ public class SchistStratum { Block target = world.getBlock(x, y, z); - if(target.isNormalCube() && target.getMaterial() == Material.rock) { + if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) { world.setBlock(x, y, z, ModBlocks.stone_gneiss, 0, 2); } } diff --git a/src/main/java/com/hbm/world/generator/DungeonToolbox.java b/src/main/java/com/hbm/world/generator/DungeonToolbox.java index 7e0a899f9..b5ab4499c 100644 --- a/src/main/java/com/hbm/world/generator/DungeonToolbox.java +++ b/src/main/java/com/hbm/world/generator/DungeonToolbox.java @@ -94,4 +94,12 @@ public class DungeonToolbox { genFlowers.func_150550_a(flower, meta); genFlowers.generate(world, rand, x, y, z); } + + public static boolean allowedToReplace(Block block) { + + if(block == Blocks.end_portal_frame) return false; + if(block == Blocks.bedrock) return false; + + return true; + } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 2e712ef87..17f3b4acd 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2523,7 +2523,6 @@ item.oil_detector.bullseye=Ölvorkommen direkt untertage! item.oil_detector.detected=Ölvorkommen in der Nähe! item.oil_detector.noOil=Kein Öl gefunden. item.oil_tar.coal.name=Kohleteer -item.oil_tar.name=Ölteer item.oil_tar.crude.name=Erdölteer item.oil_tar.crack.name=Crackölteer item.oil_tar.paraffin.name=Paraffinwachs @@ -2533,6 +2532,7 @@ item.ore.asbestos=Asbest item.ore.borax=Borax item.ore.chlorocalcite=Chlorokalzit item.ore.copper=Kupfer +item.ore.fluorite=Fluorit item.ore.gold=Gold item.ore.iron=Eisen item.ore.niobium=Niob @@ -4011,6 +4011,8 @@ tile.machine_condenser.name=Dampfkondensierer tile.machine_controller.name=Reaktorfernsteuerung tile.machine_converter_he_rf.name=HE zu RF Konverter tile.machine_converter_rf_he.name=RF zu HE Konverter +tile.machine_conveyor_press.name=Förderband-Presse +tile.machine_conveyor_press.desc=Band bewegt sich von links nach rechts$Rechtsclick um Stempel zu montieren$Stempel kann mit Schraubenzieher entfernt werden tile.machine_crucible.name=Schmelztiegel tile.machine_crystallizer.name=Erzauflöser tile.machine_cyclotron.name=Zyklotron diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index cfa60dba7..56215f8d7 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3291,6 +3291,7 @@ item.ore.asbestos=Asbestos item.ore.borax=Borax item.ore.chlorocalcite=Chlorocalcite item.ore.copper=Copper +item.ore.fluorite=Fluorite item.ore.gold=Gold item.ore.iron=Iron item.ore.niobium=Niobium @@ -4986,6 +4987,8 @@ tile.machine_condenser.name=Steam Condenser tile.machine_controller.name=Reactor Remote Control Block tile.machine_converter_he_rf.name=HE to RF Converter tile.machine_converter_rf_he.name=RF to HE Converter +tile.machine_conveyor_press.name=Conveyor Press +tile.machine_conveyor_press.desc=Conveyor moves left to right$Right click stamp to install$Use screwdriver to remove stamp tile.machine_crucible.name=Crucible tile.machine_crystallizer.name=Ore Acidizer tile.machine_cyclotron.name=Cyclotron diff --git a/src/main/resources/assets/hbm/models/machines/conveyor_press.obj b/src/main/resources/assets/hbm/models/machines/conveyor_press.obj new file mode 100644 index 000000000..0fca31982 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/conveyor_press.obj @@ -0,0 +1,1042 @@ +# Blender v2.79 (sub 0) OBJ File: 'conveyor_press.blend' +# www.blender.org +o Belt +v -0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 1.000000 -0.500000 +v 0.500000 1.250000 0.500000 +v -0.500000 1.250000 0.500000 +v 0.500000 1.250000 -0.500000 +v -0.500000 1.250000 -0.500000 +vt -0.000000 0.953125 +vt 1.000000 0.937500 +vt 1.000000 0.953125 +vt 1.000000 0.937500 +vt 0.000000 0.953125 +vt 0.000000 0.937500 +vt 0.000000 1.000000 +vt 1.000000 0.937500 +vt 1.000000 1.000000 +vt -0.000000 0.937500 +vt 1.000000 0.953125 +vt 0.000000 0.937500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +s off +f 2/1/1 7/2/1 4/3/1 +f 3/4/2 6/5/2 1/6/2 +f 8/7/3 5/8/3 7/9/3 +f 2/1/1 8/10/1 7/2/1 +f 3/4/2 5/11/2 6/5/2 +f 8/7/3 6/12/3 5/8/3 +o Piston +v -0.250000 2.125000 -0.250000 +v -0.250000 2.125000 0.250000 +v 0.250000 2.125000 0.250000 +v 0.250000 2.125000 -0.250000 +v -0.250000 2.000000 -0.250000 +v -0.250000 2.000000 0.250000 +v 0.250000 2.000000 0.250000 +v 0.250000 2.000000 -0.250000 +v -0.187500 2.125000 0.187500 +v 0.187500 2.125000 0.187500 +v -0.187500 2.125000 -0.187500 +v 0.187500 2.125000 -0.187500 +v -0.187500 2.875000 0.187500 +v 0.187500 2.875000 0.187500 +v -0.187500 2.875000 -0.187500 +v 0.187500 2.875000 -0.187500 +vt 0.553571 0.528846 +vt 0.428571 0.519231 +vt 0.571429 0.519231 +vt 0.571429 0.423077 +vt 0.428571 0.500000 +vt 0.428571 0.423077 +vt 0.571429 0.500000 +vt 0.428571 0.519231 +vt 0.571429 0.500000 +vt 0.571429 0.519231 +vt 0.428571 0.519231 +vt 0.571429 0.500000 +vt 0.571429 0.519231 +vt 0.428571 0.519231 +vt 0.571429 0.500000 +vt 0.571429 0.519231 +vt 0.553571 0.644231 +vt 0.446429 0.528846 +vt 0.553571 0.528846 +vt 0.553571 0.644231 +vt 0.446429 0.528846 +vt 0.553571 0.528846 +vt 0.553571 0.644231 +vt 0.446429 0.528846 +vt 0.553571 0.644231 +vt 0.446429 0.528846 +vt 0.553571 0.528846 +vt 0.428571 0.500000 +vt 0.428571 0.500000 +vt 0.428571 0.500000 +vt 0.446429 0.644231 +vt 0.446429 0.644231 +vt 0.446429 0.644231 +vt 0.446429 0.644231 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 20/13/4 11/14/4 12/15/4 +f 13/16/5 15/17/5 14/18/5 +f 11/14/6 16/19/6 12/15/6 +f 9/20/7 14/21/7 10/22/7 +f 12/23/8 13/24/8 9/25/8 +f 10/26/9 15/27/9 11/28/9 +f 23/29/8 20/30/8 19/31/8 +f 22/32/9 17/33/9 18/34/9 +f 24/35/6 18/36/6 20/13/6 +f 21/37/7 19/38/7 17/39/7 +f 19/31/4 12/23/4 9/25/4 +f 17/39/4 9/20/4 10/22/4 +f 18/34/4 10/26/4 11/28/4 +f 20/13/4 18/36/4 11/14/4 +f 13/16/5 16/19/5 15/17/5 +f 11/14/6 15/17/6 16/19/6 +f 9/20/7 13/40/7 14/21/7 +f 12/23/8 16/41/8 13/24/8 +f 10/26/9 14/42/9 15/27/9 +f 23/29/8 24/43/8 20/30/8 +f 22/32/9 21/44/9 17/33/9 +f 24/35/6 22/45/6 18/36/6 +f 21/37/7 23/46/7 19/38/7 +f 19/31/4 20/30/4 12/23/4 +f 17/39/4 19/38/4 9/20/4 +f 18/34/4 17/33/4 10/26/4 +o Press +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 0.000000 0.375000 +v -0.500000 0.875000 0.375000 +v 0.500000 0.000000 0.375000 +v 0.500000 0.875000 0.375000 +v -0.500000 0.000000 -0.375000 +v -0.500000 0.875000 -0.375000 +v 0.500000 0.000000 -0.375000 +v 0.500000 0.875000 -0.375000 +v 0.375000 0.000000 0.500000 +v 0.375000 0.875000 0.500000 +v 0.375000 0.000000 -0.500000 +v 0.375000 0.875000 -0.500000 +v -0.375000 0.000000 0.500000 +v -0.375000 0.875000 0.500000 +v -0.375000 0.000000 -0.500000 +v -0.375000 0.875000 -0.500000 +v -0.437500 0.000000 0.375000 +v -0.437500 0.875000 0.375000 +v -0.437500 0.875000 -0.375000 +v -0.437500 0.000000 -0.375000 +v 0.375000 0.000000 0.437500 +v -0.375000 0.000000 0.437500 +v -0.375000 0.875000 0.437500 +v 0.375000 0.875000 0.437500 +v 0.437500 0.000000 0.375000 +v 0.437500 0.875000 0.375000 +v 0.437500 0.875000 -0.375000 +v 0.437500 0.000000 -0.375000 +v 0.375000 0.000000 -0.437500 +v -0.375000 0.000000 -0.437500 +v -0.375000 0.875000 -0.437500 +v 0.375000 0.875000 -0.437500 +v 0.500000 1.250000 0.500000 +v -0.500000 1.250000 0.500000 +v 0.500000 1.250000 -0.500000 +v -0.500000 1.250000 -0.500000 +v -0.375000 2.000000 0.375000 +v 0.375000 2.000000 0.375000 +v -0.375000 2.000000 -0.375000 +v 0.375000 2.000000 -0.375000 +v -0.375000 3.000000 -0.375000 +v -0.375000 3.000000 0.375000 +v 0.375000 3.000000 0.375000 +v 0.375000 3.000000 -0.375000 +v -0.250000 2.000000 0.250000 +v 0.250000 2.000000 0.250000 +v -0.250000 2.000000 -0.250000 +v 0.250000 2.000000 -0.250000 +v -0.250000 2.125000 -0.250000 +v -0.250000 2.125000 0.250000 +v 0.250000 2.125000 0.250000 +v 0.250000 2.125000 -0.250000 +v 0.625000 0.000000 0.500000 +v 0.625000 0.000000 0.375000 +v 0.750000 0.000000 0.500000 +v 0.750000 0.000000 0.375000 +v 0.625000 2.250000 0.500000 +v 0.625000 2.250000 0.375000 +v 0.750000 2.250000 0.500000 +v 0.750000 2.250000 0.375000 +v -0.750000 0.000000 0.500000 +v -0.750000 0.000000 0.375000 +v -0.625000 0.000000 0.500000 +v -0.625000 0.000000 0.375000 +v -0.750000 2.250000 0.500000 +v -0.750000 2.250000 0.375000 +v -0.625000 2.250000 0.500000 +v -0.625000 2.250000 0.375000 +v -0.500000 2.500000 0.375000 +v 0.500000 2.500000 0.375000 +v -0.500000 2.375000 0.375000 +v 0.500000 2.375000 0.375000 +v -0.500000 2.500000 0.500000 +v 0.500000 2.500000 0.500000 +v -0.500000 2.375000 0.500000 +v 0.500000 2.375000 0.500000 +v 0.625000 0.000000 -0.375000 +v 0.625000 0.000000 -0.500000 +v 0.750000 0.000000 -0.375000 +v 0.750000 0.000000 -0.500000 +v 0.625000 2.250000 -0.375000 +v 0.625000 2.250000 -0.500000 +v 0.750000 2.250000 -0.375000 +v 0.750000 2.250000 -0.500000 +v -0.750000 0.000000 -0.375000 +v -0.750000 0.000000 -0.500000 +v -0.625000 0.000000 -0.375000 +v -0.625000 0.000000 -0.500000 +v -0.750000 2.250000 -0.375000 +v -0.750000 2.250000 -0.500000 +v -0.625000 2.250000 -0.375000 +v -0.625000 2.250000 -0.500000 +v -0.500000 2.500000 -0.500000 +v 0.500000 2.500000 -0.500000 +v -0.500000 2.375000 -0.500000 +v 0.500000 2.375000 -0.500000 +v -0.500000 2.500000 -0.375000 +v 0.500000 2.500000 -0.375000 +v -0.500000 2.375000 -0.375000 +v 0.500000 2.375000 -0.375000 +v -0.250000 2.500000 0.375000 +v 0.250000 2.500000 0.375000 +v -0.250000 2.750000 0.375000 +v 0.250000 2.750000 0.375000 +v -0.250000 2.750000 0.437500 +v -0.250000 2.500000 0.437500 +v 0.250000 2.500000 0.437500 +v 0.250000 2.750000 0.437500 +v -0.250000 2.500000 -0.437500 +v 0.250000 2.500000 -0.437500 +v -0.250000 2.750000 -0.437500 +v 0.250000 2.750000 -0.437500 +v -0.250000 2.750000 -0.375000 +v -0.250000 2.500000 -0.375000 +v 0.250000 2.500000 -0.375000 +v 0.250000 2.750000 -0.375000 +v 0.500000 0.687500 0.187500 +v 0.500000 0.312500 0.187500 +v 0.500000 0.687500 -0.187500 +v 0.500000 0.312500 -0.187500 +v 0.437500 0.687500 -0.187500 +v 0.437500 0.687500 0.187500 +v 0.437500 0.312500 0.187500 +v 0.437500 0.312500 -0.187500 +v -0.500000 0.687500 -0.187500 +v -0.500000 0.312500 -0.187500 +v -0.500000 0.687500 0.187500 +v -0.500000 0.312500 0.187500 +v -0.437500 0.687500 0.187500 +v -0.437500 0.687500 -0.187500 +v -0.437500 0.312500 -0.187500 +v -0.437500 0.312500 0.187500 +v 0.187500 0.687500 -0.500000 +v 0.187500 0.312500 -0.500000 +v -0.187500 0.687500 -0.500000 +v -0.187500 0.312500 -0.500000 +v -0.187500 0.687500 -0.437500 +v 0.187500 0.687500 -0.437500 +v 0.187500 0.312500 -0.437500 +v -0.187500 0.312500 -0.437500 +v -0.187500 0.687500 0.500000 +v -0.187500 0.312500 0.500000 +v 0.187500 0.687500 0.500000 +v 0.187500 0.312500 0.500000 +v 0.187500 0.687500 0.437500 +v -0.187500 0.687500 0.437500 +v -0.187500 0.312500 0.437500 +v 0.187500 0.312500 0.437500 +v 0.500000 0.093750 0.468750 +v 0.500000 0.031250 0.468750 +v 0.500000 0.093750 0.406250 +v 0.500000 0.031250 0.406250 +v 0.625000 0.093750 0.468750 +v 0.625000 0.031250 0.468750 +v 0.625000 0.093750 0.406250 +v 0.625000 0.031250 0.406250 +v 0.500000 0.968750 0.468750 +v 0.500000 0.906250 0.468750 +v 0.500000 0.968750 0.406250 +v 0.500000 0.906250 0.406250 +v 0.625000 0.968750 0.468750 +v 0.625000 0.906250 0.468750 +v 0.625000 0.968750 0.406250 +v 0.625000 0.906250 0.406250 +v 0.500000 0.093750 -0.406250 +v 0.500000 0.031250 -0.406250 +v 0.500000 0.093750 -0.468750 +v 0.500000 0.031250 -0.468750 +v 0.625000 0.093750 -0.406250 +v 0.625000 0.031250 -0.406250 +v 0.625000 0.093750 -0.468750 +v 0.625000 0.031250 -0.468750 +v 0.500000 0.968750 -0.406250 +v 0.500000 0.906250 -0.406250 +v 0.500000 0.968750 -0.468750 +v 0.500000 0.906250 -0.468750 +v 0.625000 0.968750 -0.406250 +v 0.625000 0.906250 -0.406250 +v 0.625000 0.968750 -0.468750 +v 0.625000 0.906250 -0.468750 +v -0.625000 0.093750 0.468750 +v -0.625000 0.031250 0.468750 +v -0.625000 0.093750 0.406250 +v -0.625000 0.031250 0.406250 +v -0.500000 0.093750 0.468750 +v -0.500000 0.031250 0.468750 +v -0.500000 0.093750 0.406250 +v -0.500000 0.031250 0.406250 +v -0.625000 0.968750 0.468750 +v -0.625000 0.906250 0.468750 +v -0.625000 0.968750 0.406250 +v -0.625000 0.906250 0.406250 +v -0.500000 0.968750 0.468750 +v -0.500000 0.906250 0.468750 +v -0.500000 0.968750 0.406250 +v -0.500000 0.906250 0.406250 +v -0.625000 0.093750 -0.406250 +v -0.625000 0.031250 -0.406250 +v -0.625000 0.093750 -0.468750 +v -0.625000 0.031250 -0.468750 +v -0.500000 0.093750 -0.406250 +v -0.500000 0.031250 -0.406250 +v -0.500000 0.093750 -0.468750 +v -0.500000 0.031250 -0.468750 +v -0.625000 0.968750 -0.406250 +v -0.625000 0.906250 -0.406250 +v -0.625000 0.968750 -0.468750 +v -0.625000 0.906250 -0.468750 +v -0.500000 0.968750 -0.406250 +v -0.500000 0.906250 -0.406250 +v -0.500000 0.968750 -0.468750 +v -0.500000 0.906250 -0.468750 +vt 0.285714 -0.000000 +vt 0.321429 0.134615 +vt 0.285714 0.153846 +vt 0.285714 -0.000000 +vt 0.321429 0.134615 +vt 0.285714 0.153846 +vt 0.571429 -0.000000 +vt 0.535714 0.134615 +vt 0.535714 -0.000000 +vt 0.285714 -0.000000 +vt 0.321429 0.134615 +vt 0.285714 0.153846 +vt 0.535714 0.134615 +vt 0.571429 -0.000000 +vt 0.571429 0.153846 +vt 0.571429 -0.000000 +vt 0.535714 0.134615 +vt 0.535714 -0.000000 +vt 0.285714 -0.000000 +vt 0.321429 0.134615 +vt 0.285714 0.153846 +vt 0.571429 -0.000000 +vt 0.535714 0.134615 +vt 0.535714 -0.000000 +vt 0.571429 0.153846 +vt 0.571429 0.153846 +vt 0.571429 0.153846 +vt 0.714286 0.230769 +vt 0.428571 0.269231 +vt 0.428571 0.230769 +vt 0.803571 0.134615 +vt 0.589286 0.000000 +vt 0.803571 0.000000 +vt 0.821429 0.000000 +vt 0.821429 0.134615 +vt 0.589286 0.134615 +vt 0.803571 0.144231 +vt 0.589286 0.144231 +vt 0.571429 0.134615 +vt 0.571429 0.000000 +vt 0.714286 0.230769 +vt 0.428571 0.269231 +vt 0.428571 0.230769 +vt 0.803571 0.134615 +vt 0.589286 0.000000 +vt 0.803571 0.000000 +vt 0.571429 0.000000 +vt 0.589286 0.134615 +vt 0.571429 0.134615 +vt 0.589286 0.144231 +vt 0.803571 0.144231 +vt 0.821429 0.134615 +vt 0.821429 0.000000 +vt 0.803571 0.000000 +vt 0.589286 0.134615 +vt 0.589286 0.000000 +vt 0.571429 0.000000 +vt 0.571429 0.134615 +vt 0.589286 0.144231 +vt 0.803571 0.134615 +vt 0.803571 0.144231 +vt 0.821429 0.134615 +vt 0.821429 0.000000 +vt 0.803571 0.000000 +vt 0.589286 0.134615 +vt 0.589286 0.000000 +vt 0.017857 0.019231 +vt 0.250000 0.009615 +vt 0.267857 0.019231 +vt 0.803571 0.134615 +vt 0.821429 0.000000 +vt 0.821429 0.134615 +vt 0.803571 0.144231 +vt 0.589286 0.144231 +vt 0.571429 0.134615 +vt 0.571429 0.000000 +vt 0.214286 0.153846 +vt 0.250000 0.250000 +vt 0.214286 0.269231 +vt 0.214286 0.423077 +vt 0.428571 0.538462 +vt 0.214286 0.538462 +vt 0.428571 0.269231 +vt 0.857143 0.269231 +vt 0.642857 0.423077 +vt 0.642857 0.269231 +vt 0.428571 0.423077 +vt 0.000000 0.423077 +vt 0.000000 0.269231 +vt 0.142857 0.250000 +vt -0.000000 0.269231 +vt -0.000000 0.250000 +vt 0.392857 0.250000 +vt 0.392857 0.173077 +vt 0.428571 0.153846 +vt 0.250000 0.173077 +vt 0.392857 0.173077 +vt 0.250000 0.250000 +vt 0.250000 0.173077 +vt 0.142857 0.250000 +vt -0.000000 0.269231 +vt -0.000000 0.250000 +vt 0.142857 0.250000 +vt -0.000000 0.269231 +vt -0.000000 0.250000 +vt 0.142857 0.250000 +vt -0.000000 0.269231 +vt -0.000000 0.250000 +vt 0.928571 0.019231 +vt 0.892857 0.000000 +vt 0.928571 0.000000 +vt 0.928571 0.634615 +vt 0.964286 0.586538 +vt 0.964286 0.625000 +vt 0.892857 0.019231 +vt 0.857143 0.365385 +vt 0.857143 0.019231 +vt 0.892857 0.365385 +vt 0.964286 0.019231 +vt 0.928571 0.365385 +vt 1.000000 0.019231 +vt 0.964286 0.365385 +vt 1.000000 0.586538 +vt 1.000000 0.625000 +vt 0.928571 1.000000 +vt 0.892857 0.980769 +vt 0.928571 0.980769 +vt 0.892857 0.423077 +vt 0.857143 0.375000 +vt 0.857143 0.980769 +vt 0.892857 0.634615 +vt 0.964286 0.980769 +vt 1.000000 0.634615 +vt 1.000000 0.980769 +vt 0.964286 0.634615 +vt 0.964286 0.423077 +vt 0.928571 0.576923 +vt 0.928571 0.423077 +vt 0.892857 0.576923 +vt 0.857143 0.423077 +vt 0.964286 0.375000 +vt 1.000000 0.576923 +vt 0.964286 0.576923 +vt 1.000000 0.625000 +vt 0.964286 0.586538 +vt 1.000000 0.586538 +vt 0.857143 0.586538 +vt 0.857143 0.625000 +vt 0.928571 0.019231 +vt 0.892857 0.000000 +vt 0.928571 0.000000 +vt 0.928571 0.634615 +vt 0.964286 0.586538 +vt 0.964286 0.625000 +vt 0.892857 0.019231 +vt 0.857143 0.365385 +vt 0.857143 0.019231 +vt 0.892857 0.365385 +vt 0.964286 0.019231 +vt 0.928571 0.365385 +vt 1.000000 0.019231 +vt 0.964286 0.365385 +vt 1.000000 0.586538 +vt 1.000000 0.625000 +vt 0.928571 1.000000 +vt 0.892857 0.980769 +vt 0.928571 0.980769 +vt 0.892857 0.423077 +vt 0.857143 0.375000 +vt 0.857143 0.980769 +vt 0.892857 0.634615 +vt 0.964286 0.980769 +vt 1.000000 0.634615 +vt 1.000000 0.980769 +vt 0.964286 0.634615 +vt 0.964286 0.423077 +vt 0.928571 0.576923 +vt 0.928571 0.423077 +vt 0.892857 0.576923 +vt 0.857143 0.423077 +vt 0.964286 0.375000 +vt 1.000000 0.576923 +vt 0.964286 0.576923 +vt 1.000000 0.413462 +vt 1.000000 0.375000 +vt 0.857143 0.586538 +vt 0.857143 0.625000 +vt 0.446429 0.192308 +vt 0.428571 0.153846 +vt 0.446429 0.153846 +vt 0.589286 0.153846 +vt 0.446429 0.192308 +vt 0.446429 0.153846 +vt 0.446429 0.201923 +vt 0.589286 0.192308 +vt 0.589286 0.201923 +vt 0.589286 0.192308 +vt 0.446429 0.201923 +vt 0.607143 0.192308 +vt 0.607143 0.153846 +vt 0.428571 0.153846 +vt 0.428571 0.192308 +vt 0.589286 0.153846 +vt 0.607143 0.192308 +vt 0.017857 0.163462 +vt 0.125000 0.221154 +vt 0.017857 0.221154 +vt 0.017857 0.163462 +vt 0.125000 0.221154 +vt 0.017857 0.221154 +vt 0.125000 0.163462 +vt 0.142857 0.221154 +vt -0.000000 0.163462 +vt 0.125000 0.153846 +vt 0.017857 0.230769 +vt 0.125000 0.163462 +vt 0.142857 0.221154 +vt -0.000000 0.163462 +vt 0.125000 0.153846 +vt 0.017857 0.230769 +vt 0.017857 0.163462 +vt 0.125000 0.221154 +vt 0.017857 0.221154 +vt 0.017857 0.163462 +vt 0.125000 0.221154 +vt 0.017857 0.221154 +vt 0.125000 0.163462 +vt 0.142857 0.221154 +vt -0.000000 0.163462 +vt 0.125000 0.153846 +vt 0.017857 0.230769 +vt 0.125000 0.163462 +vt 0.142857 0.221154 +vt -0.000000 0.163462 +vt 0.125000 0.153846 +vt 0.017857 0.230769 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.053571 0.423077 +vt 0.071429 0.442308 +vt 0.053571 0.442308 +vt 0.017857 0.423077 +vt 0.035714 0.442308 +vt 0.017857 0.442308 +vt -0.000000 0.423077 +vt -0.000000 0.442308 +vt 0.035714 0.423077 +vt 0.321429 -0.000000 +vt 0.321429 -0.000000 +vt 0.321429 -0.000000 +vt 0.535714 -0.000000 +vt 0.321429 -0.000000 +vt 0.714286 0.269231 +vt 0.714286 0.269231 +vt 0.035714 0.153846 +vt 0.000000 0.153846 +vt 0.035714 0.144231 +vt 0.000000 0.134615 +vt 0.017857 0.134615 +vt 0.000000 0.019231 +vt 0.000000 0.000000 +vt 0.250000 0.144231 +vt 0.285714 0.153846 +vt 0.250000 0.153846 +vt 0.035714 0.009615 +vt 0.035714 0.000000 +vt 0.267857 0.134615 +vt 0.285714 0.134615 +vt 0.285714 0.019231 +vt 0.250000 0.000000 +vt 0.857143 0.423077 +vt 0.142857 0.269231 +vt 0.392857 0.250000 +vt 0.142857 0.269231 +vt 0.142857 0.269231 +vt 0.142857 0.269231 +vt 1.000000 0.365385 +vt 0.892857 1.000000 +vt 0.857143 0.413462 +vt 0.857143 0.634615 +vt 0.857143 0.576923 +vt 0.964286 0.413462 +vt 1.000000 0.423077 +vt 0.964286 0.625000 +vt 1.000000 0.365385 +vt 0.892857 1.000000 +vt 0.857143 0.413462 +vt 0.857143 0.634615 +vt 0.857143 0.576923 +vt 0.964286 0.413462 +vt 1.000000 0.423077 +vt 0.428571 0.192308 +vt 0.589286 0.201923 +vt 0.607143 0.153846 +vt 0.142857 0.163462 +vt -0.000000 0.221154 +vt 0.017857 0.153846 +vt 0.125000 0.230769 +vt 0.142857 0.163462 +vt -0.000000 0.221154 +vt 0.017857 0.153846 +vt 0.125000 0.230769 +vt 0.142857 0.163462 +vt -0.000000 0.221154 +vt 0.017857 0.153846 +vt 0.125000 0.230769 +vt 0.142857 0.163462 +vt -0.000000 0.221154 +vt 0.017857 0.153846 +vt 0.125000 0.230769 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vt 0.071429 0.423077 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +s off +f 25/47/10 46/48/10 26/49/10 +f 27/50/11 38/51/11 28/52/11 +f 27/53/12 48/54/12 47/55/12 +f 31/56/12 44/57/12 32/58/12 +f 34/59/11 25/60/11 26/61/11 +f 29/62/10 42/63/10 41/64/10 +f 29/65/13 36/66/13 30/67/13 +f 31/68/13 40/69/13 39/70/13 +f 30/67/13 40/69/13 32/71/13 +f 26/49/10 42/63/10 30/72/10 +f 28/73/12 44/57/12 48/54/12 +f 28/52/11 34/59/11 26/61/11 +f 26/74/11 68/75/11 28/76/11 +f 50/77/11 52/78/11 49/79/11 +f 50/77/12 33/80/12 34/81/12 +f 51/82/14 34/83/14 38/84/14 +f 52/78/10 38/85/10 37/86/10 +f 32/87/13 65/88/13 30/89/13 +f 56/90/10 54/91/10 53/92/10 +f 45/93/13 55/94/13 46/95/13 +f 46/96/14 56/90/14 42/97/14 +f 42/98/11 53/92/11 41/99/11 +f 60/100/13 58/101/13 57/102/13 +f 35/103/12 58/101/12 36/104/12 +f 36/105/14 59/106/14 40/107/14 +f 40/108/10 60/100/10 39/109/10 +f 62/110/12 64/111/12 61/112/12 +f 61/113/14 57/114/14 53/115/14 +f 63/116/13 47/117/13 48/118/13 +f 64/111/14 48/119/14 44/120/14 +f 61/112/11 44/121/11 43/122/11 +f 69/123/14 78/124/14 70/125/14 +f 75/126/15 73/127/15 74/128/15 +f 72/129/13 75/126/13 70/125/13 +f 69/130/11 73/131/11 71/132/11 +f 71/132/12 76/133/12 72/129/12 +f 70/125/10 74/134/10 69/135/10 +f 80/136/10 81/137/10 79/138/10 +f 70/125/14 80/139/14 72/129/14 +f 72/129/14 79/140/14 71/141/14 +f 71/141/14 77/142/14 69/123/14 +f 81/143/14 83/144/14 82/145/14 +f 77/146/12 83/147/12 78/148/12 +f 78/149/11 84/150/11 80/151/11 +f 79/152/13 82/153/13 77/154/13 +f 88/155/14 85/156/14 86/157/14 +f 98/158/12 103/159/12 100/160/12 +f 87/161/10 89/162/10 85/163/10 +f 88/155/13 91/164/13 87/161/13 +f 86/165/12 92/166/12 88/155/12 +f 85/167/11 90/168/11 86/165/11 +f 100/160/16 107/169/16 99/170/16 +f 96/171/14 93/172/14 94/173/14 +f 106/174/10 89/175/10 91/164/10 +f 95/176/10 97/177/10 93/172/10 +f 96/178/13 99/179/13 95/180/13 +f 94/173/12 100/181/12 96/178/12 +f 93/172/11 98/158/11 94/173/11 +f 92/166/17 106/174/17 91/164/17 +f 104/182/12 101/183/12 102/184/12 +f 105/185/10 108/186/10 106/174/10 +f 90/187/12 102/184/12 92/166/12 +f 104/182/14 107/188/14 103/189/14 +f 108/190/18 90/191/18 89/192/18 +f 101/183/15 106/174/15 102/184/15 +f 97/177/19 101/183/19 98/158/19 +f 107/193/10 97/177/10 99/194/10 +f 112/195/14 109/196/14 110/197/14 +f 122/198/12 127/199/12 124/200/12 +f 111/201/10 113/202/10 109/203/10 +f 112/195/13 115/204/13 111/201/13 +f 110/205/12 116/206/12 112/195/12 +f 109/207/11 114/208/11 110/205/11 +f 124/200/16 131/209/16 123/210/16 +f 120/211/14 117/212/14 118/213/14 +f 130/214/10 113/215/10 115/204/10 +f 119/216/10 121/217/10 117/212/10 +f 120/218/13 123/219/13 119/220/13 +f 118/213/12 124/221/12 120/218/12 +f 117/212/11 122/198/11 118/213/11 +f 116/206/17 130/214/17 115/204/17 +f 128/222/12 125/223/12 126/224/12 +f 129/225/10 132/226/10 130/214/10 +f 114/227/12 126/224/12 116/206/12 +f 128/222/14 131/228/14 127/229/14 +f 132/230/18 114/227/18 113/231/18 +f 125/223/15 130/214/15 126/224/15 +f 121/217/19 125/223/19 122/198/19 +f 131/232/10 121/217/10 123/233/10 +f 144/234/13 147/235/13 142/236/13 +f 139/237/10 137/238/10 138/239/10 +f 135/240/15 140/241/15 136/242/15 +f 143/243/15 148/244/15 144/234/15 +f 136/245/13 139/237/13 134/246/13 +f 133/247/11 137/238/11 135/248/11 +f 141/249/11 145/250/11 143/243/11 +f 144/234/12 141/249/12 143/243/12 +f 150/251/13 151/252/13 149/253/13 +f 158/254/11 159/255/11 157/256/11 +f 152/257/12 153/258/12 151/252/12 +f 149/253/10 155/259/10 150/251/10 +f 150/251/14 156/260/14 152/257/14 +f 151/252/15 154/261/15 149/253/15 +f 160/262/10 161/263/10 159/255/10 +f 157/256/12 163/264/12 158/254/12 +f 158/254/14 164/265/14 160/262/14 +f 159/255/15 162/266/15 157/256/15 +f 166/267/12 167/268/12 165/269/12 +f 174/270/10 175/271/10 173/272/10 +f 168/273/11 169/274/11 167/268/11 +f 165/269/13 171/275/13 166/267/13 +f 166/267/14 172/276/14 168/273/14 +f 167/268/15 170/277/15 165/269/15 +f 176/278/13 177/279/13 175/271/13 +f 173/272/11 179/280/11 174/270/11 +f 174/270/14 180/281/14 176/278/14 +f 175/271/15 178/282/15 173/272/15 +f 187/283/12 184/284/12 183/285/12 +f 186/286/10 181/287/10 182/288/10 +f 188/289/14 182/288/14 184/290/14 +f 185/291/15 183/285/15 181/287/15 +f 195/292/12 192/293/12 191/294/12 +f 194/295/10 189/296/10 190/297/10 +f 196/298/14 190/297/14 192/299/14 +f 193/300/15 191/294/15 189/296/15 +f 203/301/12 200/302/12 199/303/12 +f 202/304/10 197/305/10 198/306/10 +f 204/307/14 198/306/14 200/308/14 +f 201/309/15 199/303/15 197/305/15 +f 211/310/12 208/311/12 207/312/12 +f 210/313/10 205/314/10 206/315/10 +f 212/316/14 206/315/14 208/317/14 +f 209/318/15 207/312/15 205/314/15 +f 219/319/12 216/320/12 215/321/12 +f 218/322/10 213/323/10 214/324/10 +f 220/325/14 214/324/14 216/326/14 +f 217/327/15 215/321/15 213/323/15 +f 227/328/12 224/329/12 223/330/12 +f 226/331/10 221/332/10 222/333/10 +f 228/334/14 222/333/14 224/335/14 +f 225/336/15 223/330/15 221/332/15 +f 235/337/12 232/338/12 231/339/12 +f 234/340/10 229/341/10 230/342/10 +f 236/343/14 230/342/14 232/344/14 +f 233/345/15 231/339/15 229/341/15 +f 243/346/12 240/347/12 239/348/12 +f 242/349/10 237/350/10 238/351/10 +f 244/352/14 238/351/14 240/353/14 +f 241/354/15 239/348/15 237/350/15 +f 25/47/10 45/355/10 46/48/10 +f 27/50/11 37/356/11 38/51/11 +f 27/53/12 28/73/12 48/54/12 +f 31/56/12 43/357/12 44/57/12 +f 34/59/11 33/358/11 25/60/11 +f 29/62/10 30/72/10 42/63/10 +f 29/65/13 35/359/13 36/66/13 +f 31/68/13 32/71/13 40/69/13 +f 30/67/13 36/66/13 40/69/13 +f 26/49/10 46/48/10 42/63/10 +f 28/73/12 32/58/12 44/57/12 +f 28/52/11 38/51/11 34/59/11 +f 26/74/11 66/360/11 68/75/11 +f 50/77/11 51/82/11 52/78/11 +f 50/77/12 49/79/12 33/80/12 +f 51/82/14 50/77/14 34/83/14 +f 52/78/10 51/82/10 38/85/10 +f 32/87/13 67/361/13 65/88/13 +f 56/90/10 55/94/10 54/91/10 +f 45/93/13 54/91/13 55/94/13 +f 46/96/14 55/94/14 56/90/14 +f 42/98/11 56/90/11 53/92/11 +f 60/100/13 59/106/13 58/101/13 +f 35/103/12 57/102/12 58/101/12 +f 36/105/14 58/101/14 59/106/14 +f 40/108/10 59/106/10 60/100/10 +f 62/110/12 63/116/12 64/111/12 +f 37/362/14 27/363/14 52/364/14 +f 27/363/14 47/365/14 62/366/14 +f 27/363/14 62/366/14 52/364/14 +f 61/113/14 43/367/14 31/368/14 +f 52/364/14 62/366/14 49/369/14 +f 62/366/14 61/113/14 49/369/14 +f 25/370/14 33/371/14 49/369/14 +f 61/113/14 31/368/14 60/372/14 +f 31/368/14 39/373/14 60/372/14 +f 25/370/14 49/369/14 54/374/14 +f 49/369/14 61/113/14 54/374/14 +f 54/374/14 45/375/14 25/370/14 +f 29/65/14 41/376/14 53/115/14 +f 35/377/14 29/65/14 57/114/14 +f 29/65/14 53/115/14 57/114/14 +f 53/115/14 54/374/14 61/113/14 +f 61/113/14 60/372/14 57/114/14 +f 63/116/13 62/110/13 47/117/13 +f 64/111/14 63/116/14 48/119/14 +f 61/112/11 64/111/11 44/121/11 +f 69/123/14 77/142/14 78/124/14 +f 75/126/15 76/133/15 73/127/15 +f 72/129/13 76/133/13 75/126/13 +f 69/130/11 74/378/11 73/131/11 +f 71/132/12 73/131/12 76/133/12 +f 70/125/10 75/126/10 74/134/10 +f 80/136/10 84/379/10 81/137/10 +f 70/125/14 78/124/14 80/139/14 +f 72/129/14 80/139/14 79/140/14 +f 71/141/14 79/140/14 77/142/14 +f 81/143/14 84/380/14 83/144/14 +f 77/146/12 82/381/12 83/147/12 +f 78/149/11 83/382/11 84/150/11 +f 79/152/13 81/383/13 82/153/13 +f 88/155/14 87/161/14 85/156/14 +f 98/158/12 101/183/12 103/159/12 +f 87/161/10 91/164/10 89/162/10 +f 88/155/13 92/166/13 91/164/13 +f 86/165/12 90/168/12 92/166/12 +f 85/167/11 89/384/11 90/168/11 +f 100/160/16 103/159/16 107/169/16 +f 96/171/14 95/385/14 93/172/14 +f 106/174/10 108/386/10 89/175/10 +f 95/176/10 99/387/10 97/177/10 +f 96/178/13 100/181/13 99/179/13 +f 94/173/12 98/158/12 100/181/12 +f 93/172/11 97/177/11 98/158/11 +f 92/166/17 102/184/17 106/174/17 +f 104/182/12 103/189/12 101/183/12 +f 105/185/10 107/388/10 108/186/10 +f 90/187/12 104/389/12 102/184/12 +f 104/182/14 108/390/14 107/188/14 +f 108/190/18 104/391/18 90/191/18 +f 101/183/15 105/185/15 106/174/15 +f 97/177/19 105/185/19 101/183/19 +f 107/193/10 105/185/10 97/177/10 +f 112/195/14 111/201/14 109/196/14 +f 122/198/12 125/223/12 127/199/12 +f 111/201/10 115/204/10 113/202/10 +f 112/195/13 116/206/13 115/204/13 +f 110/205/12 114/208/12 116/206/12 +f 109/207/11 113/392/11 114/208/11 +f 124/200/16 127/199/16 131/209/16 +f 120/211/14 119/393/14 117/212/14 +f 130/214/10 132/394/10 113/215/10 +f 119/216/10 123/395/10 121/217/10 +f 120/218/13 124/221/13 123/219/13 +f 118/213/12 122/198/12 124/221/12 +f 117/212/11 121/217/11 122/198/11 +f 116/206/17 126/224/17 130/214/17 +f 128/222/12 127/229/12 125/223/12 +f 129/225/10 131/396/10 132/226/10 +f 114/227/12 128/397/12 126/224/12 +f 128/222/14 132/398/14 131/228/14 +f 132/230/18 128/397/18 114/227/18 +f 125/223/15 129/225/15 130/214/15 +f 121/217/19 129/225/19 125/223/19 +f 131/232/10 129/225/10 121/217/10 +f 144/234/13 148/399/13 147/235/13 +f 139/237/10 140/241/10 137/238/10 +f 135/240/15 137/238/15 140/241/15 +f 143/243/15 145/400/15 148/244/15 +f 136/245/13 140/241/13 139/237/13 +f 133/247/11 138/239/11 137/238/11 +f 141/249/11 146/401/11 145/250/11 +f 144/234/12 142/236/12 141/249/12 +f 150/251/13 152/257/13 151/252/13 +f 158/254/11 160/262/11 159/255/11 +f 152/257/12 156/402/12 153/258/12 +f 149/253/10 154/403/10 155/259/10 +f 150/251/14 155/404/14 156/260/14 +f 151/252/15 153/405/15 154/261/15 +f 160/262/10 164/406/10 161/263/10 +f 157/256/12 162/407/12 163/264/12 +f 158/254/14 163/408/14 164/265/14 +f 159/255/15 161/409/15 162/266/15 +f 166/267/12 168/273/12 167/268/12 +f 174/270/10 176/278/10 175/271/10 +f 168/273/11 172/410/11 169/274/11 +f 165/269/13 170/411/13 171/275/13 +f 166/267/14 171/412/14 172/276/14 +f 167/268/15 169/413/15 170/277/15 +f 176/278/13 180/414/13 177/279/13 +f 173/272/11 178/415/11 179/280/11 +f 174/270/14 179/416/14 180/281/14 +f 175/271/15 177/417/15 178/282/15 +f 187/283/12 188/418/12 184/284/12 +f 186/286/10 185/291/10 181/287/10 +f 188/289/14 186/286/14 182/288/14 +f 185/291/15 187/283/15 183/285/15 +f 195/292/12 196/419/12 192/293/12 +f 194/295/10 193/300/10 189/296/10 +f 196/298/14 194/295/14 190/297/14 +f 193/300/15 195/292/15 191/294/15 +f 203/301/12 204/420/12 200/302/12 +f 202/304/10 201/309/10 197/305/10 +f 204/307/14 202/304/14 198/306/14 +f 201/309/15 203/301/15 199/303/15 +f 211/310/12 212/421/12 208/311/12 +f 210/313/10 209/318/10 205/314/10 +f 212/316/14 210/313/14 206/315/14 +f 209/318/15 211/310/15 207/312/15 +f 219/319/12 220/422/12 216/320/12 +f 218/322/10 217/327/10 213/323/10 +f 220/325/14 218/322/14 214/324/14 +f 217/327/15 219/319/15 215/321/15 +f 227/328/12 228/423/12 224/329/12 +f 226/331/10 225/336/10 221/332/10 +f 228/334/14 226/331/14 222/333/14 +f 225/336/15 227/328/15 223/330/15 +f 235/337/12 236/424/12 232/338/12 +f 234/340/10 233/345/10 229/341/10 +f 236/343/14 234/340/14 230/342/14 +f 233/345/15 235/337/15 231/339/15 +f 243/346/12 244/425/12 240/347/12 +f 242/349/10 241/354/10 237/350/10 +f 244/352/14 242/349/14 238/351/14 +f 241/354/15 243/346/15 239/348/15 diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_arm.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..57abed7bed4073b0df827b5b623e252bfb59d7f5 GIT binary patch literal 546 zcmV+-0^R+IP)b>!3_KP2LiUV(ONXv4;J%Rn4j(h|U2zRnEq0jb|b0y_om!L6Mxg1!co7?Pe581}E1PoN^8CE&D< zYRLLr6I(k1af)df7!+x;U~&x}q9$q;7C3E6_{85u(qu_-j9axAbFerA9NMNJ#^bNW zDZV7c--|_bDyP4nbehpbQ|jxajwD<-wcr07SW}`1w4w;KB71@2y_kfAsr?26z!@h8 zj1K~_fx^m{eTs`fEAoFy$~0p{5okpbXhjidMgEN%DASAy`KLJLUMyWyB6#xJL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_helmet.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..75175e49473da956220f67c9fc4706a172f40cc8 GIT binary patch literal 1378 zcmV-o1)chdP)z+ z*zR;ya8f>`L#!zMnMk|}Rg+s4n_s^~szQ(`AagjTmErR1uha&8@hbu*yFS$~kqIki z#SgdJzW;8)%NfYeHUkR*f!e0kMX*%ne=!4?)9aTT@UoiBS{jk#Kr6AupbdVw1-+Q5 z+Nprb8tEj(u*H>{B!G%UY>RG6CeM0*yGcz6scDIyji?Ewrd77s*32w}qK#*ovlpOH zBUQh6UCq!W{Q;>q#8qe|ALj!YbF(;7dvPwB88a}F638V${!D$o$mYLb@Q0d2Ty4K9 z8D4EQLKo_IUP?t*)~8>2wL52T0g+b#R+N9~{OU_%mfB7!2u*g$^q!)~=0d*e?BvgK z9|8cZDK$p}`b`=|$}wSJP2i>4%@4Prm#+aJzw)YvX_=}vz0Eep1w6cl0_nErW@bp+Aj?dOf>OqdI_RTeDKMu|)Gyw{0H)kZ!s1!X^x4)yd+Q zKWa~RIB}#QdXMZf31-eu@53-m+tQBGY5FIkK^)4}Ih+IfHmw%ntPwe7*Y5?IZW6Y+ zOzn*{LPXYltJU(?kmu<#8WGXc6PcKaq^k@WHW{t@h%U5?_+yjdOhl+#FK^p4tvWJj zD1V;r4C4rV&gyR*p|g+H*@^Tyn-~3&x{*1UfcQk@&@hU!1T(e_5ba4#e_F@DINoim z0{$~H`WKxh)-{Zt&*uokke*w%;Uo;xEjml9O*m(;zQ}RByYP${myL752>=wul4FT8 zdG`DG_-Gt(c6PR>rPN0d1blygPrv~dR#g!M0eha8Un>)NgNVP&T>l+nDEGA6{u9XP z?CV6`G}ehh*!T4_fX+0clMrp+Qk*YRHe1=W7eAZZWq-Z8x>DvIg<(kgAQ__n4a{3& zUBq!*X&a9WTKWAi`6*EP1``kok>i(+V*o%zuZ-Ql@@Hdv)uhp+5gFH?0(hQ>&1QpI z&R&EV-)PUD8%1^(bmr{q1Z3Qi0AOq>AJ^_h{{G|0m>GY^_C7~4gK_qje8lY7`$S_R z*TKKW_5gv=5AOe|HgEi6iQG@>^ZtEgO;p9%$p`V$yakgFnod0yTkmGG=_zSk6Il)? z^0tozA|Is3ljN;A4m~-$D}*M>f@7|+AF9p!q>+7L`8EQ8yw3TM`O&+(7^m5oQw&5S z?~%~a6M2vHi0G(^2oeC`{x70gJrZ1B*LqEyde{!R1?0LV0yq|8VLmK83XQ~;dl~K( zVv^8wI(2&Y?(RTtfco*%?8gVr%{as;J`h8s- zg=tm6V2C*T$Y!%?WdWY&wKC6OH1b5`(BSMNZP<1Y1g!g-_$!nay^Xn+e2{q*8i_6U kGI}FY6#QHQ<6t!MKdjSoBTX?Q?f?J)07*qoM6N<$f-i-ZBme*a literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/conveyor_press.png b/src/main/resources/assets/hbm/textures/models/machines/conveyor_press.png new file mode 100644 index 0000000000000000000000000000000000000000..6464d8f83d75d5d0d0206440341ffeb2bdd2d4ec GIT binary patch literal 1767 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 Date: Sun, 3 Sep 2023 19:41:44 +0200 Subject: [PATCH 007/207] changelog, version bump --- changelog | 4 +++- gradle.properties | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/changelog b/changelog index a7baa47be..85430aa5f 100644 --- a/changelog +++ b/changelog @@ -21,6 +21,7 @@ * Changed electric press recipe, crafting complexity has been reduced and the press now uses hydraulic pistons * Removed DFC emitter beam cap again since the core already imposes a natural limit due to fuel consumption * I don't know why anyone would need a DFC that strong anyway, but now you can have them again +* The UAC pistol now has a crafting recipe and can also be found in structures ## Fixed * Fixed logspam when pollution handler tries to save the pollution data for dimensions that have never been loaded before @@ -32,4 +33,5 @@ * Fixed flux level not resetting when rods are above melting point with meltdowns disabled * Fixed crash caused by express delivery shells * Fixed 4 gauge solid steel slugs not being made from steel -* Fixed missing lang entry for fluorite ore \ No newline at end of file +* Fixed missing lang entry for fluorite ore +* Fixed UAC pistol UV \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 444f62413..0f150c67e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4707 +mod_build_number=4711 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 3d31d7c2a..b27af5248 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4707)"; + public static final String VERSION = "1.0.27 BETA (4711)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version From 5b8ab982862aca49d71ba47dc79586aaa0eece0c Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Sun, 3 Sep 2023 20:48:33 +0300 Subject: [PATCH 008/207] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 1438629e9..f71a694b7 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -2226,6 +2226,8 @@ tile.machine_ashpit.name=Зольник tile.machine_ashpit.desc=Собирает золу из топок и нагревательных печей tile.machine_stirling_creative.name=ТворчеÑкий генератор Стирлинга tile.machine_stirling_creative.desc=Превращает тепло в Ñнергию. Требует внешний иÑточник тепла.$СкороÑть теплопередачи: T*0.1 TU/t$БеÑконечное потребление/t$ЭффективноÑть: 100%% +tile.machine_conveyor_press.name=Конвейерный преÑÑ +tile.machine_conveyor_press.desc=Лента двигаетÑÑ Ñлево-направо$ПКМ чтобы уÑтановить штамп$ПКМ отвёрткой чтобы ÑнÑть штамп tile.cm_block.alloy.name=ÐšÐ¾Ñ€Ð¿ÑƒÑ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹ из продвинутого Ñплава tile.cm_block.desh.name=ÐšÐ¾Ñ€Ð¿ÑƒÑ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹ из деша @@ -3076,6 +3078,7 @@ item.ore.asbestos=ÐÑбеÑÑ‚Ð¾Ð²Ð°Ñ item.ore.borax=Ð‘ÑƒÑ€Ð¾Ð²Ð°Ñ item.ore.chlorocalcite=Ð¥Ð»Ð¾Ñ€ÐºÐ°Ð»ÑŒÑ†Ð¸Ñ‚Ð¾Ð²Ð°Ñ item.ore.copper=ÐœÐµÐ´Ð½Ð°Ñ +item.ore.fluorite=Ð¤Ð»ÑŽÐ¾Ñ€Ð¸Ñ‚Ð½Ð°Ñ item.ore.gold=Ð—Ð¾Ð»Ð¾Ñ‚Ð°Ñ item.ore.iron=Ð–ÐµÐ»ÐµÐ·Ð½Ð°Ñ item.ore.niobium=ÐÐ¸Ð¾Ð±Ð¸ÐµÐ²Ð°Ñ From 3852faa4708fbae4dc9bb557d534b8ef5c873a7e Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 4 Sep 2023 21:58:28 +0200 Subject: [PATCH 009/207] UV --- .../assets/hbm/models/armor/trenchmaster.obj | 3478 +++++++++++++++++ .../hbm/textures/armor/trenchmaster_chest.png | Bin 0 -> 1421 bytes .../textures/armor/trenchmaster_helmet.png | Bin 1378 -> 1394 bytes .../hbm/textures/armor/trenchmaster_leg.png | Bin 0 -> 286 bytes 4 files changed, 3478 insertions(+) create mode 100644 src/main/resources/assets/hbm/models/armor/trenchmaster.obj create mode 100644 src/main/resources/assets/hbm/textures/armor/trenchmaster_chest.png create mode 100644 src/main/resources/assets/hbm/textures/armor/trenchmaster_leg.png diff --git a/src/main/resources/assets/hbm/models/armor/trenchmaster.obj b/src/main/resources/assets/hbm/models/armor/trenchmaster.obj new file mode 100644 index 000000000..45c8bc4ac --- /dev/null +++ b/src/main/resources/assets/hbm/models/armor/trenchmaster.obj @@ -0,0 +1,3478 @@ +# Blender v2.79 (sub 0) OBJ File: 'trenchmaster.blend' +# www.blender.org +o Plane.005 +v 4.500000 0.000000 2.500000 +v -0.500000 0.000000 2.500000 +v 4.500000 0.000000 -2.500000 +v -0.500000 0.000000 -2.500000 +v 4.000000 12.000000 2.000000 +v 0.000000 12.000000 2.000000 +v 4.000000 12.000000 -2.000000 +v 0.000000 12.000000 -2.000000 +v 3.500000 0.000000 -3.500000 +v 0.500000 0.000000 -3.500000 +v 3.500000 2.000000 -3.500000 +v 0.500000 2.000000 -3.500000 +v 3.500000 3.000000 -2.500000 +v 0.500000 3.000000 -2.500000 +v 4.500000 2.000000 -2.500000 +v -0.500000 2.000000 -2.500000 +v 0.000000 4.000000 -2.000000 +v 4.000000 4.000000 -2.000000 +v 0.000000 4.000000 2.000000 +v 4.000000 4.000000 2.000000 +v 4.500000 4.000000 2.500000 +v -0.500000 4.000000 2.500000 +v 4.500000 4.000000 -2.500000 +v -0.500000 4.000000 -2.500000 +v 4.000000 5.000000 2.000000 +v 0.000000 5.000000 2.000000 +v 4.000000 5.000000 -2.000000 +v 0.000000 5.000000 -2.000000 +v 4.500000 5.000000 2.500000 +v -0.500000 5.000000 2.500000 +v 4.500000 5.000000 -2.500000 +v -0.500000 5.000000 -2.500000 +v 4.500000 8.000000 2.500000 +v -0.500000 8.000000 2.500000 +v 4.500000 8.000000 -2.500000 +v -0.500000 8.000000 -2.500000 +v 4.000000 8.000000 2.000000 +v 0.000000 8.000000 2.000000 +v 4.000000 8.000000 -2.000000 +v 0.000000 8.000000 -2.000000 +vt 0.000000 0.222222 +vt 0.250000 0.000000 +vt 0.000000 -0.000000 +vt 0.225000 1.000000 +vt 0.025000 0.822222 +vt 0.025000 1.000000 +vt 0.300000 0.044444 +vt 0.500000 0.000000 +vt 0.250000 0.000000 +vt 0.300000 0.133333 +vt 0.450000 0.044444 +vt 0.300000 0.177778 +vt 0.450000 0.133333 +vt 0.525000 0.422222 +vt 0.750000 0.400000 +vt 0.500000 0.400000 +vt 0.500000 0.311111 +vt 0.275000 0.422222 +vt 0.250000 0.400000 +vt 0.725000 0.466667 +vt 0.725000 0.422222 +vt 0.500000 0.133333 +vt 0.500000 0.044444 +vt 0.250000 0.133333 +vt 0.250000 0.044444 +vt 0.475000 0.466667 +vt 0.475000 0.422222 +vt 0.025000 0.422222 +vt 0.225000 0.466667 +vt 0.225000 0.422222 +vt 0.450000 0.177778 +vt 0.300000 0.355556 +vt 0.775000 0.422222 +vt 1.000000 0.400000 +vt 0.000000 0.400000 +vt 0.250000 0.311111 +vt 0.750000 0.222222 +vt 1.000000 0.222222 +vt 0.750000 0.488889 +vt 0.975000 0.466667 +vt 0.775000 0.466667 +vt 0.000000 0.488889 +vt 0.025000 0.466667 +vt 0.250000 0.488889 +vt 0.275000 0.466667 +vt 0.500000 0.488889 +vt 0.525000 0.466667 +vt 0.750000 0.622222 +vt 1.000000 0.488889 +vt 0.500000 0.622222 +vt 0.250000 0.622222 +vt 0.000000 0.622222 +vt 0.525000 0.644444 +vt 0.275000 0.644444 +vt 0.025000 0.644444 +vt 0.775000 0.644444 +vt 1.000000 0.622222 +vt 0.975000 0.644444 +vt 0.775000 0.822222 +vt 0.975000 0.822222 +vt 0.725000 0.644444 +vt 0.525000 0.822222 +vt 0.725000 0.822222 +vt 0.475000 0.644444 +vt 0.275000 0.822222 +vt 0.475000 0.822222 +vt 0.225000 0.644444 +vt 0.225000 0.822222 +vt 0.975000 0.422222 +vt 0.250000 0.222222 +vt 0.500000 0.222222 +vt 0.450000 0.355556 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -1.0000 0.0000 0.0000 +vn 0.5774 0.5774 -0.5774 +vn -0.5774 0.5774 -0.5774 +vn 0.0000 0.0000 1.0000 +s off +f 2/1/1 3/2/1 1/3/1 +f 7/4/2 6/5/2 5/6/2 +f 10/7/1 3/8/1 4/9/1 +f 12/10/3 9/11/3 10/7/3 +f 14/12/4 11/13/4 12/10/4 +f 18/14/2 21/15/2 23/16/2 +f 15/17/5 23/16/5 21/15/5 +f 17/18/2 23/16/2 24/19/2 +f 18/14/5 25/20/5 20/21/5 +f 9/11/6 15/22/6 3/23/6 +f 16/24/7 10/7/7 4/25/7 +f 17/18/3 27/26/3 18/27/3 +f 19/28/8 28/29/8 17/30/8 +f 13/31/9 15/22/9 11/13/9 +f 24/19/3 23/16/3 14/32/3 +f 12/10/10 16/24/10 14/12/10 +f 20/33/2 22/34/2 21/15/2 +f 19/28/2 24/19/2 22/35/2 +f 22/35/8 16/36/8 2/1/8 +f 1/37/11 22/34/11 2/38/11 +f 29/39/1 26/40/1 25/41/1 +f 30/42/1 28/29/1 26/43/1 +f 32/44/1 27/26/1 28/45/1 +f 31/46/1 25/20/1 27/47/1 +f 33/48/11 30/49/11 29/39/11 +f 35/50/5 29/39/5 31/46/5 +f 36/51/3 31/46/3 32/44/3 +f 34/52/8 32/44/8 30/42/8 +f 39/53/2 33/48/2 35/50/2 +f 40/54/2 35/50/2 36/51/2 +f 38/55/2 36/51/2 34/52/2 +f 37/56/2 34/57/2 33/48/2 +f 38/58/11 5/59/11 6/60/11 +f 37/61/5 7/62/5 5/63/5 +f 39/64/3 8/65/3 7/66/3 +f 40/67/8 6/5/8 8/68/8 +f 20/33/11 26/40/11 19/69/11 +f 2/1/1 4/70/1 3/2/1 +f 7/4/2 8/68/2 6/5/2 +f 10/7/1 9/11/1 3/8/1 +f 12/10/3 11/13/3 9/11/3 +f 14/12/4 13/31/4 11/13/4 +f 18/14/2 20/21/2 21/15/2 +f 21/15/5 1/37/5 15/17/5 +f 1/37/5 3/71/5 15/17/5 +f 17/18/2 18/27/2 23/16/2 +f 18/14/5 27/47/5 25/20/5 +f 9/11/6 11/13/6 15/22/6 +f 16/24/7 12/10/7 10/7/7 +f 17/18/3 28/45/3 27/26/3 +f 19/28/8 26/43/8 28/29/8 +f 23/16/3 15/17/3 13/72/3 +f 14/32/3 16/36/3 24/19/3 +f 23/16/3 13/72/3 14/32/3 +f 20/33/2 19/69/2 22/34/2 +f 19/28/2 17/30/2 24/19/2 +f 24/19/8 16/36/8 22/35/8 +f 16/36/8 4/70/8 2/1/8 +f 1/37/11 21/15/11 22/34/11 +f 29/39/1 30/49/1 26/40/1 +f 30/42/1 32/44/1 28/29/1 +f 32/44/1 31/46/1 27/26/1 +f 31/46/1 29/39/1 25/20/1 +f 33/48/11 34/57/11 30/49/11 +f 35/50/5 33/48/5 29/39/5 +f 36/51/3 35/50/3 31/46/3 +f 34/52/8 36/51/8 32/44/8 +f 39/53/2 37/61/2 33/48/2 +f 40/54/2 39/64/2 35/50/2 +f 38/55/2 40/67/2 36/51/2 +f 37/56/2 38/58/2 34/57/2 +f 38/58/11 37/56/11 5/59/11 +f 37/61/5 39/53/5 7/62/5 +f 39/64/3 40/54/3 8/65/3 +f 40/67/8 38/55/8 6/5/8 +f 20/33/11 25/41/11 26/40/11 +o Plane.004 +v -4.500000 0.000000 2.500000 +v 0.500000 0.000000 2.500000 +v -4.500000 0.000000 -2.500000 +v 0.500000 0.000000 -2.500000 +v -4.000000 12.000000 2.000000 +v 0.000000 12.000000 2.000000 +v -4.000000 12.000000 -2.000000 +v 0.000000 12.000000 -2.000000 +v -3.500000 0.000000 -3.500000 +v -0.500000 0.000000 -3.500000 +v -3.500000 2.000000 -3.500000 +v -0.500000 2.000000 -3.500000 +v -3.500000 3.000000 -2.500000 +v -0.500000 3.000000 -2.500000 +v -4.500000 2.000000 -2.500000 +v 0.500000 2.000000 -2.500000 +v 0.000000 4.000000 -2.000000 +v -4.000000 4.000000 -2.000000 +v 0.000000 4.000000 2.000000 +v -4.000000 4.000000 2.000000 +v -4.500000 4.000000 2.500000 +v 0.500000 4.000000 2.500000 +v -4.500000 4.000000 -2.500000 +v 0.500000 4.000000 -2.500000 +v -4.000000 5.000000 2.000000 +v 0.000000 5.000000 2.000000 +v -4.000000 5.000000 -2.000000 +v 0.000000 5.000000 -2.000000 +v -4.500000 5.000000 2.500000 +v 0.500000 5.000000 2.500000 +v -4.500000 5.000000 -2.500000 +v 0.500000 5.000000 -2.500000 +v -4.500000 8.000000 2.500000 +v 0.500000 8.000000 2.500000 +v -4.500000 8.000000 -2.500000 +v 0.500000 8.000000 -2.500000 +v -4.000000 8.000000 2.000000 +v 0.000000 8.000000 2.000000 +v -4.000000 8.000000 -2.000000 +v 0.000000 8.000000 -2.000000 +vt 0.250000 0.000000 +vt 0.000000 0.222222 +vt 0.000000 -0.000000 +vt 0.025000 0.822222 +vt 0.225000 1.000000 +vt 0.025000 1.000000 +vt 0.500000 0.000000 +vt 0.300000 0.044444 +vt 0.250000 0.000000 +vt 0.450000 0.044444 +vt 0.300000 0.133333 +vt 0.450000 0.133333 +vt 0.300000 0.177778 +vt 0.750000 0.400000 +vt 0.525000 0.422222 +vt 0.500000 0.400000 +vt 0.500000 0.311111 +vt 0.275000 0.422222 +vt 0.250000 0.400000 +vt 0.725000 0.466667 +vt 0.725000 0.422222 +vt 0.500000 0.133333 +vt 0.500000 0.044444 +vt 0.250000 0.133333 +vt 0.250000 0.044444 +vt 0.475000 0.466667 +vt 0.475000 0.422222 +vt 0.225000 0.466667 +vt 0.025000 0.422222 +vt 0.225000 0.422222 +vt 0.450000 0.177778 +vt 0.450000 0.355556 +vt 1.000000 0.400000 +vt 0.775000 0.422222 +vt 0.000000 0.400000 +vt 0.250000 0.311111 +vt 0.750000 0.222222 +vt 1.000000 0.222222 +vt 0.975000 0.466667 +vt 0.750000 0.488889 +vt 0.775000 0.466667 +vt 0.000000 0.488889 +vt 0.025000 0.466667 +vt 0.250000 0.488889 +vt 0.275000 0.466667 +vt 0.500000 0.488889 +vt 0.525000 0.466667 +vt 1.000000 0.488889 +vt 0.750000 0.622222 +vt 0.500000 0.622222 +vt 0.250000 0.622222 +vt 0.000000 0.622222 +vt 0.525000 0.644444 +vt 0.275000 0.644444 +vt 0.025000 0.644444 +vt 1.000000 0.622222 +vt 0.775000 0.644444 +vt 0.775000 0.822222 +vt 0.975000 0.644444 +vt 0.975000 0.822222 +vt 0.525000 0.822222 +vt 0.725000 0.644444 +vt 0.725000 0.822222 +vt 0.275000 0.822222 +vt 0.475000 0.644444 +vt 0.475000 0.822222 +vt 0.225000 0.644444 +vt 0.225000 0.822222 +vt 0.975000 0.422222 +vt 0.250000 0.222222 +vt 0.500000 0.222222 +vt 0.300000 0.355556 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.7071 -0.7071 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 1.0000 0.0000 0.0000 +vn -0.5774 0.5774 -0.5774 +vn 0.5774 0.5774 -0.5774 +vn 0.0000 0.0000 1.0000 +s off +f 43/73/12 42/74/12 41/75/12 +f 46/76/13 47/77/13 45/78/13 +f 43/79/12 50/80/12 44/81/12 +f 49/82/14 52/83/14 50/80/14 +f 51/84/15 54/85/15 52/83/15 +f 61/86/13 58/87/13 63/88/13 +f 61/86/16 63/88/16 55/89/16 +f 63/88/13 57/90/13 64/91/13 +f 65/92/16 58/87/16 60/93/16 +f 55/94/17 49/82/17 43/95/17 +f 50/80/18 56/96/18 44/97/18 +f 67/98/14 57/90/14 58/99/14 +f 68/100/19 59/101/19 57/102/19 +f 53/103/20 51/84/20 55/94/20 +f 64/91/14 53/104/14 63/88/14 +f 52/83/21 54/85/21 56/96/21 +f 62/105/13 60/106/13 61/86/13 +f 64/91/13 59/101/13 62/107/13 +f 42/74/19 56/108/19 62/107/19 +f 62/105/22 41/109/22 42/110/22 +f 66/111/12 69/112/12 65/113/12 +f 68/100/12 70/114/12 66/115/12 +f 67/98/12 72/116/12 68/117/12 +f 65/92/12 71/118/12 67/119/12 +f 70/120/22 73/121/22 69/112/22 +f 69/112/16 75/122/16 71/118/16 +f 71/118/14 76/123/14 72/116/14 +f 72/116/19 74/124/19 70/114/19 +f 73/121/13 79/125/13 75/122/13 +f 75/122/13 80/126/13 76/123/13 +f 76/123/13 78/127/13 74/124/13 +f 74/128/13 77/129/13 73/121/13 +f 45/130/22 78/131/22 46/132/22 +f 47/133/16 77/134/16 45/135/16 +f 48/136/14 79/137/14 47/138/14 +f 46/76/19 80/139/19 48/140/19 +f 66/111/22 60/106/22 59/141/22 +f 43/73/12 44/142/12 42/74/12 +f 46/76/13 48/140/13 47/77/13 +f 43/79/12 49/82/12 50/80/12 +f 49/82/14 51/84/14 52/83/14 +f 51/84/15 53/103/15 54/85/15 +f 61/86/13 60/93/13 58/87/13 +f 43/143/16 41/109/16 55/89/16 +f 41/109/16 61/86/16 55/89/16 +f 63/88/13 58/99/13 57/90/13 +f 65/92/16 67/119/16 58/87/16 +f 55/94/17 51/84/17 49/82/17 +f 50/80/18 52/83/18 56/96/18 +f 67/98/14 68/117/14 57/90/14 +f 68/100/19 66/115/19 59/101/19 +f 64/91/14 56/108/14 54/144/14 +f 53/104/14 55/89/14 63/88/14 +f 64/91/14 54/144/14 53/104/14 +f 62/105/13 59/141/13 60/106/13 +f 64/91/13 57/102/13 59/101/13 +f 44/142/19 56/108/19 42/74/19 +f 56/108/19 64/91/19 62/107/19 +f 62/105/22 61/86/22 41/109/22 +f 66/111/12 70/120/12 69/112/12 +f 68/100/12 72/116/12 70/114/12 +f 67/98/12 71/118/12 72/116/12 +f 65/92/12 69/112/12 71/118/12 +f 70/120/22 74/128/22 73/121/22 +f 69/112/16 73/121/16 75/122/16 +f 71/118/14 75/122/14 76/123/14 +f 72/116/19 76/123/19 74/124/19 +f 73/121/13 77/134/13 79/125/13 +f 75/122/13 79/137/13 80/126/13 +f 76/123/13 80/139/13 78/127/13 +f 74/128/13 78/131/13 77/129/13 +f 45/130/22 77/129/22 78/131/22 +f 47/133/16 79/125/16 77/134/16 +f 48/136/14 80/126/14 79/137/14 +f 46/76/19 78/127/19 80/139/19 +f 66/111/22 65/113/22 60/106/22 +o Plane.003 +v 8.500000 22.500000 0.500000 +v 8.500000 21.500000 0.500000 +v 8.500000 22.500000 -0.500000 +v 8.500000 21.500000 -0.500000 +v 9.000000 22.500000 -0.500000 +v 9.000000 22.500000 0.500000 +v 9.000000 21.500000 0.500000 +v 9.000000 21.500000 -0.500000 +v 9.000000 22.000000 -1.000000 +v 9.000000 22.707108 -0.707107 +v 9.000000 23.000000 0.000000 +v 9.000000 22.707108 0.707107 +v 9.000000 22.000000 1.000000 +v 9.000000 21.292892 0.707107 +v 9.000000 21.000000 -0.000000 +v 9.000000 21.292892 -0.707107 +v 9.250000 22.707108 -0.707107 +v 9.250000 22.000000 -1.000000 +v 9.250000 23.000000 0.000000 +v 9.250000 22.707108 0.707107 +v 9.250000 22.000000 1.000000 +v 9.250000 21.292892 0.707107 +v 9.250000 21.000000 -0.000000 +v 9.250000 21.292892 -0.707107 +v 8.500000 22.250000 0.500000 +v 8.500000 21.750000 0.500000 +v 8.500000 22.250000 2.500000 +v 8.500000 21.750000 2.500000 +v 8.750000 22.250000 0.500000 +v 8.750000 21.750000 0.500000 +v 8.750000 22.250000 2.500000 +v 8.750000 21.750000 2.500000 +v 8.750000 23.000000 0.500000 +v 8.750000 21.000000 0.500000 +v 8.750000 23.000000 -0.500000 +v 8.750000 21.000000 -0.500000 +v 8.500000 23.500000 0.500000 +v 8.500000 23.500000 -0.500000 +v 8.500000 20.500000 0.500000 +v 8.500000 20.500000 -0.500000 +v 8.000000 20.000000 2.000000 +v 8.000000 20.000000 -2.000000 +v 4.000000 20.000000 -2.000000 +v 4.000000 20.000000 2.000000 +v 3.500000 20.000000 -2.500000 +v 3.500000 20.000000 2.500000 +v 8.500000 20.000000 -2.500000 +v 8.500000 20.000000 2.500000 +v 3.500000 24.000000 -2.500000 +v 3.500000 24.000000 2.500000 +v 8.500000 24.000000 -2.500000 +v 8.500000 24.000000 2.500000 +v 5.000000 26.000000 -2.500000 +v 5.000000 26.000000 2.500000 +v 8.000000 18.000000 2.000000 +v 4.000000 18.000000 2.000000 +v 4.000000 18.000000 -2.000000 +v 8.000000 18.000000 -2.000000 +v 8.500000 18.000000 -2.500000 +v 8.500000 18.000000 2.500000 +v 3.500000 18.000000 -2.500000 +v 3.500000 18.000000 2.500000 +v 8.500000 14.000000 -2.500000 +v 8.500000 14.000000 2.500000 +v 3.500000 14.000000 -2.500000 +v 3.500000 14.000000 2.500000 +v 4.000000 14.000000 2.000000 +v 4.000000 14.000000 -2.000000 +v 8.000000 14.000000 -2.000000 +v 8.000000 14.000000 2.000000 +v 4.000000 13.000000 -2.000000 +v 4.000000 13.000000 2.000000 +v 8.000000 13.000000 -2.000000 +v 8.000000 13.000000 2.000000 +v 3.500000 13.000000 -2.500000 +v 3.500000 13.000000 2.500000 +v 8.500000 13.000000 -2.500000 +v 8.500000 13.000000 2.500000 +v 3.500000 11.000000 -2.500000 +v 3.500000 11.000000 2.500000 +v 8.000000 11.000000 -2.500000 +v 8.000000 11.000000 2.500000 +v 8.500000 26.000000 0.500000 +v 5.500000 26.000000 0.500000 +v 8.500000 26.000000 -0.500000 +v 5.500000 26.000000 -0.500000 +v 7.500000 24.000000 -0.500000 +v 7.500000 24.000000 0.500000 +v 5.500000 24.000000 0.500000 +v 5.500000 24.000000 -0.500000 +vt 0.650000 0.827586 +vt 0.700000 0.810345 +vt 0.700000 0.827586 +vt 0.725000 0.844828 +vt 0.700000 0.810345 +vt 0.725000 0.810345 +vt 0.725000 0.913793 +vt 0.700000 0.879310 +vt 0.725000 0.879310 +vt 0.725000 0.948276 +vt 0.700000 0.913793 +vt 0.700000 0.844828 +vt 0.601300 0.034483 +vt 0.650000 0.000897 +vt 0.698699 0.034483 +vt 0.476300 0.034483 +vt 0.525000 0.000897 +vt 0.573700 0.034483 +vt 0.575000 0.017241 +vt 0.600000 0.034483 +vt 0.575000 0.034483 +vt 0.575000 0.051724 +vt 0.600000 0.068966 +vt 0.575000 0.068966 +vt 0.575000 0.086207 +vt 0.600000 0.103448 +vt 0.575000 0.103448 +vt 0.600000 0.120690 +vt 0.575000 0.120690 +vt 0.575000 -0.000000 +vt 0.600000 0.017241 +vt 0.600000 0.051724 +vt 0.600000 0.086207 +vt 0.600000 0.137931 +vt 0.575000 0.137931 +vt 0.700000 0.896552 +vt 0.650000 0.913793 +vt 0.650000 0.896552 +vt 0.775000 0.810345 +vt 0.750000 0.879310 +vt 0.750000 0.810345 +vt 0.725000 0.810345 +vt 0.725000 0.879310 +vt 0.800000 0.879310 +vt 0.800000 0.810345 +vt 0.750000 0.896552 +vt 0.775000 0.879310 +vt 0.775000 0.896552 +vt 0.750000 0.448276 +vt 0.525000 0.465517 +vt 0.725000 0.465517 +vt 0.250000 0.551724 +vt 0.025000 0.534483 +vt -0.000000 0.551724 +vt 0.975000 0.534483 +vt 0.750000 0.551724 +vt 1.000000 0.551724 +vt 0.725000 0.534483 +vt 0.500000 0.551724 +vt 0.525000 0.534483 +vt 0.475000 0.534483 +vt 0.250000 0.689655 +vt 0.325000 0.758621 +vt 0.500000 0.689655 +vt -0.000000 0.689655 +vt 0.750000 0.689655 +vt 1.000000 0.689655 +vt 0.925000 0.758621 +vt -0.000000 0.758621 +vt 0.750000 0.810345 +vt 0.475000 0.465517 +vt 0.275000 0.534483 +vt 0.975000 0.465517 +vt 0.775000 0.534483 +vt 0.225000 0.465517 +vt 0.225000 0.534483 +vt 0.250000 0.310345 +vt 0.000000 0.448276 +vt 0.250000 0.448276 +vt 0.025000 0.465517 +vt 1.000000 0.448276 +vt 0.775000 0.465517 +vt 0.500000 0.448276 +vt 0.275000 0.465517 +vt 0.475000 0.293103 +vt 0.500000 0.310345 +vt 1.000000 0.310345 +vt 0.750000 0.310345 +vt 0.975000 0.258621 +vt 0.775000 0.293103 +vt 0.975000 0.293103 +vt 0.725000 0.293103 +vt 0.025000 0.293103 +vt -0.000000 0.310345 +vt 0.750000 0.241379 +vt 0.525000 0.258621 +vt 0.725000 0.258621 +vt 0.525000 0.293103 +vt 0.475000 0.258621 +vt 0.275000 0.293103 +vt 0.225000 0.258621 +vt 0.225000 0.293103 +vt 0.475000 0.172414 +vt 0.250000 0.241379 +vt 0.500000 0.241379 +vt 0.275000 0.258621 +vt 0.025000 0.258621 +vt 1.000000 0.241379 +vt 0.775000 0.258621 +vt 0.250000 -0.000000 +vt 0.250000 0.172414 +vt -0.000000 0.241379 +vt 0.775000 0.172414 +vt 0.750000 0.172414 +vt 0.150000 0.931035 +vt 0.100000 0.827586 +vt 0.100000 0.931035 +vt 0.250000 0.896552 +vt 0.150000 0.827586 +vt 0.000000 0.896552 +vt 0.150000 0.758621 +vt 0.100000 1.000000 +vt 0.650000 0.810345 +vt 0.700000 0.948276 +vt 0.650000 0.068069 +vt 0.615564 0.058232 +vt 0.615564 0.010734 +vt 0.684436 0.010734 +vt 0.684436 0.058232 +vt 0.559436 0.058232 +vt 0.525000 0.068069 +vt 0.490564 0.058232 +vt 0.490564 0.010734 +vt 0.559436 0.010734 +vt 0.600000 -0.000000 +vt 0.700000 0.913793 +vt 0.250000 0.758621 +vt 0.500000 0.810345 +vt 0.475000 0.000000 +vt -0.000000 0.172414 +vt 1.000000 0.172414 +vt 0.500000 0.172414 +vt 0.250000 0.827586 +vt 0.000000 0.827586 +vt 0.100000 0.758621 +vt 0.150000 1.000000 +vn 0.8944 -0.4472 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 -0.9239 -0.3827 +vn 0.8944 0.4472 0.0000 +vn -0.8000 0.6000 0.0000 +vn 0.4961 0.8682 0.0000 +vn 0.9701 -0.2425 0.0000 +s off +f 114/145/23 120/146/23 116/147/23 +f 83/148/24 88/149/24 84/150/24 +f 82/151/25 86/152/25 81/153/25 +f 84/154/26 87/155/26 82/151/26 +f 81/153/27 85/156/27 83/148/27 +f 89/157/28 95/158/28 93/159/28 +f 101/160/29 103/161/29 98/162/29 +f 94/163/30 101/164/30 93/165/30 +f 92/166/31 99/167/31 91/168/31 +f 90/169/32 98/170/32 89/171/32 +f 89/171/33 104/172/33 96/173/33 +f 95/174/34 102/175/34 94/163/34 +f 93/165/35 100/176/35 92/166/35 +f 91/168/36 97/177/36 90/169/36 +f 96/173/37 103/178/37 95/179/37 +f 115/180/38 117/181/38 113/182/38 +f 109/183/29 112/184/29 110/185/29 +f 106/186/26 112/184/26 108/187/26 +f 114/145/29 115/180/29 113/182/29 +f 107/188/27 109/183/27 105/189/27 +f 108/190/25 111/191/25 107/192/25 +f 140/193/27 138/194/27 135/195/27 +f 125/196/26 124/197/26 126/198/26 +f 124/199/26 128/200/26 126/201/26 +f 121/202/26 127/203/26 128/200/26 +f 135/195/29 122/204/29 121/202/29 +f 122/205/26 125/196/26 127/203/26 +f 129/206/24 133/207/24 131/208/24 +f 129/206/24 127/203/24 125/196/24 +f 130/209/28 125/196/28 126/198/28 +f 132/210/25 126/201/25 128/200/25 +f 131/208/29 128/200/29 127/203/29 +f 130/211/25 132/210/25 134/212/25 +f 134/213/39 129/206/39 130/209/39 +f 131/208/40 134/214/40 132/210/40 +f 138/215/24 123/216/24 122/205/24 +f 136/217/25 121/218/25 124/199/25 +f 137/219/28 124/197/28 123/220/28 +f 145/221/28 142/222/28 141/223/28 +f 141/223/27 136/224/27 137/219/27 +f 142/225/27 135/226/27 136/217/27 +f 139/227/27 137/228/27 138/215/27 +f 149/229/26 145/221/26 143/230/26 +f 143/230/24 141/223/24 139/227/24 +f 146/231/25 140/193/25 142/225/25 +f 144/232/29 139/227/29 140/193/29 +f 152/233/25 150/234/25 147/235/25 +f 150/236/26 143/230/26 144/232/26 +f 146/231/26 150/234/26 144/232/26 +f 145/221/26 147/237/26 146/238/26 +f 158/239/27 153/240/27 154/241/27 +f 154/241/29 149/242/29 150/236/29 +f 153/243/24 148/244/24 149/229/24 +f 151/245/28 147/237/28 148/246/28 +f 161/247/24 155/248/24 157/249/24 +f 157/249/27 151/250/27 153/243/27 +f 155/248/27 152/251/27 151/245/27 +f 156/252/27 154/253/27 152/233/27 +f 161/247/26 160/254/26 159/255/26 +f 159/255/28 156/256/28 155/248/28 +f 156/252/25 162/257/25 158/239/25 +f 162/258/41 157/249/41 158/239/41 +f 165/259/27 164/260/27 163/261/27 +f 167/262/24 166/263/24 165/259/24 +f 164/260/25 168/264/25 163/261/25 +f 170/265/28 164/260/28 166/263/28 +f 168/266/23 165/259/23 163/261/23 +f 114/145/23 119/267/23 120/146/23 +f 83/148/24 85/156/24 88/149/24 +f 82/151/25 87/155/25 86/152/25 +f 84/154/26 88/268/26 87/155/26 +f 81/153/27 86/152/27 85/156/27 +f 91/269/28 90/270/28 89/157/28 +f 89/157/28 96/271/28 95/158/28 +f 95/158/28 94/272/28 93/159/28 +f 93/159/28 92/273/28 91/269/28 +f 91/269/28 89/157/28 93/159/28 +f 98/162/29 97/274/29 99/275/29 +f 99/275/29 100/276/29 101/160/29 +f 101/160/29 102/277/29 103/161/29 +f 103/161/29 104/278/29 98/162/29 +f 98/162/29 99/275/29 101/160/29 +f 94/163/30 102/175/30 101/164/30 +f 92/166/31 100/176/31 99/167/31 +f 90/169/32 97/177/32 98/170/32 +f 89/171/33 98/170/33 104/172/33 +f 95/174/34 103/279/34 102/175/34 +f 93/165/35 101/164/35 100/176/35 +f 91/168/36 99/167/36 97/177/36 +f 96/173/37 104/172/37 103/178/37 +f 115/180/38 118/280/38 117/181/38 +f 109/183/29 111/191/29 112/184/29 +f 106/186/26 110/185/26 112/184/26 +f 114/145/29 116/147/29 115/180/29 +f 107/188/27 111/191/27 109/183/27 +f 108/190/25 112/184/25 111/191/25 +f 140/193/27 139/227/27 138/194/27 +f 125/196/26 123/220/26 124/197/26 +f 124/199/26 121/218/26 128/200/26 +f 121/202/26 122/204/26 127/203/26 +f 135/195/29 138/194/29 122/204/29 +f 122/205/26 123/216/26 125/196/26 +f 129/206/24 131/208/24 127/203/24 +f 130/209/28 129/206/28 125/196/28 +f 132/210/25 130/211/25 126/201/25 +f 131/208/29 132/210/29 128/200/29 +f 134/213/39 133/281/39 129/206/39 +f 131/208/40 133/282/40 134/214/40 +f 138/215/24 137/228/24 123/216/24 +f 136/217/25 135/226/25 121/218/25 +f 137/219/28 136/224/28 124/197/28 +f 145/221/28 146/238/28 142/222/28 +f 141/223/27 142/222/27 136/224/27 +f 142/225/27 140/193/27 135/226/27 +f 139/227/27 141/223/27 137/228/27 +f 149/229/26 148/244/26 145/221/26 +f 143/230/24 145/221/24 141/223/24 +f 146/231/25 144/232/25 140/193/25 +f 144/232/29 143/230/29 139/227/29 +f 152/233/25 154/253/25 150/234/25 +f 150/236/26 149/242/26 143/230/26 +f 146/231/26 147/235/26 150/234/26 +f 145/221/26 148/246/26 147/237/26 +f 158/239/27 157/249/27 153/240/27 +f 154/241/29 153/240/29 149/242/29 +f 153/243/24 151/250/24 148/244/24 +f 151/245/28 152/251/28 147/237/28 +f 161/247/24 159/255/24 155/248/24 +f 157/249/27 155/248/27 151/250/27 +f 155/248/27 156/256/27 152/251/27 +f 156/252/27 158/239/27 154/253/27 +f 161/247/26 162/283/26 160/254/26 +f 159/255/28 160/284/28 156/256/28 +f 156/252/25 160/285/25 162/257/25 +f 162/258/41 161/286/41 157/249/41 +f 165/259/27 166/263/27 164/260/27 +f 167/262/24 170/287/24 166/263/24 +f 164/260/25 169/288/25 168/264/25 +f 170/265/28 169/289/28 164/260/28 +f 168/266/23 167/290/23 165/259/23 +o Plane.002 +v -8.000000 20.000000 2.000000 +v -8.000000 20.000000 -2.000000 +v -4.000000 20.000000 -2.000000 +v -4.000000 20.000000 2.000000 +v -3.500000 20.000000 -2.500000 +v -3.500000 20.000000 2.500000 +v -8.500000 20.000000 -2.500000 +v -8.500000 20.000000 2.500000 +v -3.500000 24.000000 -2.500000 +v -3.500000 24.000000 2.500000 +v -8.500000 24.000000 -2.500000 +v -8.500000 24.000000 2.500000 +v -5.000000 26.000000 -2.500000 +v -5.000000 26.000000 2.500000 +v -8.000000 18.000000 2.000000 +v -4.000000 18.000000 2.000000 +v -4.000000 18.000000 -2.000000 +v -8.000000 18.000000 -2.000000 +v -8.500000 18.000000 -2.500000 +v -8.500000 18.000000 2.500000 +v -3.500000 18.000000 -2.500000 +v -3.500000 18.000000 2.500000 +v -8.500000 14.000000 -2.500000 +v -8.500000 14.000000 2.500000 +v -3.500000 14.000000 -2.500000 +v -3.500000 14.000000 2.500000 +v -4.000000 14.000000 2.000000 +v -4.000000 14.000000 -2.000000 +v -8.000000 14.000000 -2.000000 +v -8.000000 14.000000 2.000000 +v -4.000000 13.000000 -2.000000 +v -4.000000 13.000000 2.000000 +v -8.000000 13.000000 -2.000000 +v -8.000000 13.000000 2.000000 +v -3.500000 13.000000 -2.500000 +v -3.500000 13.000000 2.500000 +v -8.500000 13.000000 -2.500000 +v -8.500000 13.000000 2.500000 +v -3.500000 11.000000 -2.500000 +v -3.500000 11.000000 2.500000 +v -8.000000 11.000000 -2.500000 +v -8.000000 11.000000 2.500000 +v -9.000000 22.500000 1.500000 +v -9.000000 21.500000 1.500000 +v -9.000000 22.500000 -0.500000 +v -9.000000 21.500000 -0.500000 +v -8.500000 23.500000 1.500000 +v -8.500000 20.500000 1.500000 +v -8.500000 23.500000 -0.500000 +v -8.500000 20.500000 -0.500000 +v -8.625000 22.500000 3.000000 +v -8.625000 21.500000 2.000000 +v -8.625000 22.500000 -1.000000 +v -8.625000 21.500000 -1.000000 +v -8.875000 22.500000 -1.000000 +v -8.875000 22.500000 3.000000 +v -8.875000 21.500000 2.000000 +v -8.875000 21.500000 -1.000000 +v -8.500000 22.750000 -1.000000 +v -8.500000 21.250000 -1.000000 +v -9.000000 22.750000 -1.000000 +v -9.000000 21.250000 -1.000000 +v -8.500000 21.250000 -1.500000 +v -8.500000 22.750000 -1.500000 +v -9.000000 21.250000 -1.500000 +v -9.000000 22.750000 -1.500000 +v -9.000000 21.750000 -1.500000 +v -8.500000 21.750000 -1.500000 +v -9.000000 22.250000 -1.500000 +v -8.500000 22.250000 -1.500000 +v -9.000000 22.250000 -2.500000 +v -9.000000 21.750000 -2.500000 +v -8.500000 21.750000 -2.500000 +v -8.500000 22.250000 -2.500000 +v -8.500000 26.000000 0.500000 +v -5.500000 26.000000 0.500000 +v -8.500000 26.000000 -0.500000 +v -5.500000 26.000000 -0.500000 +v -7.500000 24.000000 -0.500000 +v -7.500000 24.000000 0.500000 +v -5.500000 24.000000 0.500000 +v -5.500000 24.000000 -0.500000 +vt 0.525000 0.465517 +vt 0.750000 0.448276 +vt 0.725000 0.465517 +vt 0.025000 0.534483 +vt 0.250000 0.551724 +vt -0.000000 0.551724 +vt 0.750000 0.551724 +vt 0.975000 0.534483 +vt 1.000000 0.551724 +vt 0.500000 0.551724 +vt 0.725000 0.534483 +vt 0.525000 0.534483 +vt 0.475000 0.534483 +vt 0.250000 0.689655 +vt 0.500000 0.689655 +vt 0.325000 0.758621 +vt -0.000000 0.689655 +vt 0.750000 0.689655 +vt 1.000000 0.689655 +vt 0.925000 0.758621 +vt -0.000000 0.758621 +vt 0.750000 0.810345 +vt 0.275000 0.534483 +vt 0.475000 0.465517 +vt 0.775000 0.534483 +vt 0.975000 0.465517 +vt 0.225000 0.465517 +vt 0.225000 0.534483 +vt 0.000000 0.448276 +vt 0.250000 0.310345 +vt 0.250000 0.448276 +vt 0.025000 0.465517 +vt 0.775000 0.465517 +vt 1.000000 0.448276 +vt 0.275000 0.465517 +vt 0.500000 0.448276 +vt 0.475000 0.293103 +vt 0.500000 0.310345 +vt 1.000000 0.310345 +vt 0.750000 0.310345 +vt 0.775000 0.293103 +vt 0.975000 0.258621 +vt 0.975000 0.293103 +vt 0.725000 0.293103 +vt 0.025000 0.293103 +vt -0.000000 0.310345 +vt 0.525000 0.258621 +vt 0.750000 0.241379 +vt 0.725000 0.258621 +vt 0.525000 0.293103 +vt 0.275000 0.293103 +vt 0.475000 0.258621 +vt 0.225000 0.258621 +vt 0.225000 0.293103 +vt 0.250000 0.241379 +vt 0.475000 0.172414 +vt 0.500000 0.241379 +vt 0.275000 0.258621 +vt 0.025000 0.258621 +vt 0.775000 0.258621 +vt 1.000000 0.241379 +vt 0.250000 -0.000000 +vt 0.250000 0.172414 +vt -0.000000 0.241379 +vt 0.775000 0.172414 +vt 1.000000 0.172414 +vt 0.750000 0.172414 +vt 0.250000 0.827586 +vt 0.350000 0.793103 +vt 0.350000 0.827586 +vt 0.250000 0.793103 +vt 0.350000 0.758621 +vt 0.250000 0.862069 +vt 0.500000 0.913793 +vt 0.550000 0.810345 +vt 0.550000 0.948276 +vt 0.575000 0.810345 +vt 0.625000 0.913793 +vt 0.575000 0.948276 +vt 0.650000 0.948276 +vt 0.650000 0.913793 +vt 0.625000 0.810345 +vt 0.650000 0.810345 +vt 0.375000 0.844828 +vt 0.450000 0.862069 +vt 0.375000 0.862069 +vt 0.450000 0.810345 +vt 0.375000 0.827586 +vt 0.375000 0.810345 +vt 0.350000 0.844828 +vt 0.450000 0.827586 +vt 0.450000 0.844828 +vt 0.475000 0.827586 +vt 0.475000 0.844828 +vt 0.375000 0.775862 +vt 0.400000 0.758621 +vt 0.400000 0.775862 +vt 0.375000 0.810345 +vt 0.400000 0.810345 +vt 0.350000 0.810345 +vt 0.425000 0.775862 +vt 0.425000 0.810345 +vt 0.100000 0.827586 +vt 0.150000 0.931035 +vt 0.100000 0.931035 +vt 0.150000 0.827586 +vt 0.250000 0.896552 +vt 0.000000 0.896552 +vt 0.000000 0.827586 +vt 0.150000 0.758621 +vt 0.100000 1.000000 +vt 0.250000 0.758621 +vt 0.500000 0.810345 +vt 0.475000 0.000000 +vt -0.000000 0.172414 +vt 0.500000 0.172414 +vt 0.250000 0.758621 +vt 0.350000 0.862069 +vt 0.500000 0.810345 +vt 0.625000 0.948276 +vt 0.350000 0.827586 +vt 0.375000 0.758621 +vt 0.350000 0.775862 +vt 0.250000 0.827586 +vt 0.100000 0.758621 +vt 0.150000 1.000000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.8000 0.6000 0.0000 +vn -0.4961 0.8682 0.0000 +vn -0.9701 -0.2425 0.0000 +vn -0.8944 -0.4472 0.0000 +vn -0.8944 0.4472 0.0000 +vn 0.0000 -0.7071 0.7071 +s off +f 188/291/42 190/292/42 185/293/42 +f 174/294/43 175/295/43 176/296/43 +f 178/297/43 174/298/43 176/299/43 +f 177/300/43 171/301/43 178/297/43 +f 172/302/44 185/293/44 171/301/44 +f 175/295/43 172/303/43 177/300/43 +f 179/304/45 181/305/45 183/306/45 +f 177/300/45 179/304/45 175/295/45 +f 175/295/46 180/307/46 176/296/46 +f 176/299/47 182/308/47 178/297/47 +f 178/297/44 181/305/44 177/300/44 +f 180/309/47 184/310/47 182/308/47 +f 179/304/48 184/311/48 180/307/48 +f 184/312/49 181/305/49 182/308/49 +f 173/313/45 188/314/45 172/303/45 +f 171/315/47 186/316/47 174/298/47 +f 174/294/46 187/317/46 173/318/46 +f 192/319/46 195/320/46 191/321/46 +f 186/322/42 191/321/42 187/317/42 +f 185/323/42 192/324/42 186/316/42 +f 187/325/42 189/326/42 188/314/42 +f 195/320/43 199/327/43 193/328/43 +f 191/321/45 193/328/45 189/326/45 +f 190/292/47 196/329/47 192/324/47 +f 189/326/44 194/330/44 190/292/44 +f 200/331/47 202/332/47 197/333/47 +f 193/328/43 200/334/43 194/330/43 +f 200/331/43 196/329/43 194/330/43 +f 197/335/43 195/320/43 196/336/43 +f 203/337/42 208/338/42 204/339/42 +f 199/340/44 204/339/44 200/334/44 +f 198/341/45 203/342/45 199/327/45 +f 197/335/46 201/343/46 198/344/46 +f 205/345/45 211/346/45 207/347/45 +f 201/348/42 207/347/42 203/342/42 +f 202/349/42 205/345/42 201/343/42 +f 204/350/42 206/351/42 202/332/42 +f 210/352/43 211/346/43 209/353/43 +f 206/354/46 209/353/46 205/345/46 +f 206/351/47 212/355/47 210/356/47 +f 207/347/50 212/357/50 208/338/50 +f 215/358/44 214/359/44 213/360/44 +f 216/361/51 218/362/51 214/359/51 +f 213/360/52 219/363/52 215/358/52 +f 222/364/46 223/365/46 221/366/46 +f 225/367/44 227/368/44 226/369/44 +f 221/370/53 227/368/53 222/371/53 +f 222/371/43 228/372/43 224/373/43 +f 223/365/42 226/369/42 221/366/42 +f 231/374/47 230/375/47 229/376/47 +f 233/377/45 236/378/45 234/379/45 +f 229/380/42 236/378/42 231/374/42 +f 231/374/44 235/381/44 232/382/44 +f 232/382/43 233/383/43 230/384/43 +f 241/385/45 243/386/45 242/387/45 +f 239/388/44 242/387/44 237/389/44 +f 240/390/42 241/385/42 239/388/42 +f 237/389/43 243/391/43 238/392/43 +f 246/393/42 247/394/42 245/395/42 +f 248/396/45 249/397/45 247/394/45 +f 246/393/47 250/398/47 251/399/47 +f 246/393/46 252/400/46 248/396/46 +f 247/394/51 250/401/51 245/395/51 +f 188/291/42 189/326/42 190/292/42 +f 174/294/43 173/318/43 175/295/43 +f 178/297/43 171/315/43 174/298/43 +f 177/300/43 172/302/43 171/301/43 +f 172/302/44 188/291/44 185/293/44 +f 175/295/43 173/313/43 172/303/43 +f 177/300/45 181/305/45 179/304/45 +f 175/295/46 179/304/46 180/307/46 +f 176/299/47 180/309/47 182/308/47 +f 178/297/44 182/308/44 181/305/44 +f 179/304/48 183/402/48 184/311/48 +f 184/312/49 183/403/49 181/305/49 +f 173/313/45 187/325/45 188/314/45 +f 171/315/47 185/323/47 186/316/47 +f 174/294/46 186/322/46 187/317/46 +f 192/319/46 196/336/46 195/320/46 +f 186/322/42 192/319/42 191/321/42 +f 185/323/42 190/292/42 192/324/42 +f 187/325/42 191/321/42 189/326/42 +f 195/320/43 198/341/43 199/327/43 +f 191/321/45 195/320/45 193/328/45 +f 190/292/47 194/330/47 196/329/47 +f 189/326/44 193/328/44 194/330/44 +f 200/331/47 204/350/47 202/332/47 +f 193/328/43 199/340/43 200/334/43 +f 200/331/43 197/333/43 196/329/43 +f 197/335/43 198/344/43 195/320/43 +f 203/337/42 207/347/42 208/338/42 +f 199/340/44 203/337/44 204/339/44 +f 198/341/45 201/348/45 203/342/45 +f 197/335/46 202/349/46 201/343/46 +f 205/345/45 209/353/45 211/346/45 +f 201/348/42 205/345/42 207/347/42 +f 202/349/42 206/354/42 205/345/42 +f 204/350/42 208/338/42 206/351/42 +f 210/352/43 212/404/43 211/346/43 +f 206/354/46 210/405/46 209/353/46 +f 206/351/47 208/338/47 212/355/47 +f 207/347/50 211/406/50 212/357/50 +f 215/358/44 216/361/44 214/359/44 +f 216/361/51 220/407/51 218/362/51 +f 213/360/52 217/408/52 219/363/52 +f 222/364/46 224/409/46 223/365/46 +f 225/367/44 228/372/44 227/368/44 +f 221/370/53 226/410/53 227/368/53 +f 222/371/43 227/368/43 228/372/43 +f 223/365/42 225/367/42 226/369/42 +f 231/374/47 232/382/47 230/375/47 +f 233/377/45 235/381/45 236/378/45 +f 229/380/42 234/411/42 236/378/42 +f 231/374/44 236/378/44 235/381/44 +f 232/382/43 235/381/43 233/383/43 +f 241/385/45 244/412/45 243/386/45 +f 239/388/44 241/385/44 242/387/44 +f 240/390/42 244/413/42 241/385/42 +f 237/389/43 242/387/43 243/391/43 +f 246/393/42 248/396/42 247/394/42 +f 248/396/45 252/414/45 249/397/45 +f 246/393/47 245/395/47 250/398/47 +f 246/393/46 251/415/46 252/400/46 +f 247/394/51 249/416/51 250/401/51 +o Plane.001 +v -5.000000 32.000000 -4.000000 +v -5.000000 32.000000 4.000000 +v 4.000000 32.000000 5.000000 +v -4.000000 32.000000 5.000000 +v 4.000000 32.000000 -5.000000 +v -4.000000 32.000000 -5.000000 +v 5.000000 32.000000 4.000000 +v 5.000000 32.000000 -4.000000 +v -5.000000 30.000000 -4.000000 +v -5.000000 30.000000 4.000000 +v 4.000000 30.000000 5.000000 +v -4.000000 30.000000 5.000000 +v 4.000000 30.000000 -5.000000 +v -4.000000 30.000000 -5.000000 +v 5.000000 30.000000 4.000000 +v 5.000000 30.000000 -4.000000 +v -7.000000 29.000000 -4.000000 +v -7.000000 29.000000 4.000000 +v 4.000000 29.000000 7.000000 +v -4.000000 29.000000 7.000000 +v 4.000000 29.000000 -7.000000 +v -4.000000 29.000000 -7.000000 +v 7.000000 29.000000 4.000000 +v 7.000000 29.000000 -4.000000 +v 3.000000 34.000000 3.000000 +v 3.000000 34.000000 -3.000000 +v -3.000000 34.000000 -3.000000 +v -3.000000 34.000000 3.000000 +v -4.500000 32.000000 -3.500000 +v -4.500000 32.000000 3.500000 +v 3.500000 32.000000 4.500000 +v -3.500000 32.000000 4.500000 +v 3.500000 32.000000 -4.500000 +v -3.500000 32.000000 -4.500000 +v 4.500000 32.000000 3.500000 +v 4.500000 32.000000 -3.500000 +v -4.500000 24.000000 -3.500000 +v -4.500000 24.000000 3.500000 +v 3.500000 24.000000 4.500000 +v -3.500000 24.000000 4.500000 +v 3.500000 24.000000 -4.500000 +v -3.500000 24.000000 -4.500000 +v 4.500000 24.000000 3.500000 +v 4.500000 24.000000 -3.500000 +v 3.500000 23.000000 3.500000 +v 3.500000 23.000000 -3.500000 +v -3.500000 23.000000 -3.500000 +v -3.500000 23.000000 3.500000 +v -1.500000 27.000000 -4.500000 +v 1.500000 27.000000 -4.500000 +v -1.500000 24.000000 -4.500000 +v 1.500000 24.000000 -4.500000 +v -1.500000 24.000000 -5.500000 +v -1.500000 26.000000 -5.500000 +v 1.500000 26.000000 -5.500000 +v 1.500000 24.000000 -5.500000 +v 2.000000 29.500000 -4.500000 +v 0.700962 28.750000 -4.500000 +v 0.700962 27.250000 -4.500000 +v 2.000000 26.500000 -4.500000 +v 3.299038 27.250000 -4.500000 +v 3.299038 28.750000 -4.500000 +v -2.000000 29.500000 -4.500000 +v -3.299038 28.750000 -4.500000 +v -3.299038 27.250000 -4.500000 +v -2.000000 26.500000 -4.500000 +v -0.700962 27.250000 -4.500000 +v -0.700962 28.750000 -4.500000 +v -2.000000 29.500000 -5.000000 +v -3.299038 28.750000 -5.000000 +v -3.299038 27.250000 -5.000000 +v -2.000000 26.500000 -5.000000 +v -0.700962 27.250000 -5.000000 +v -0.700962 28.750000 -5.000000 +v 2.000000 29.500000 -5.000000 +v 0.700962 28.750000 -5.000000 +v 0.700962 27.250000 -5.000000 +v 2.000000 26.500000 -5.000000 +v 3.299038 27.250000 -5.000000 +v 3.299038 28.750000 -5.000000 +v -0.500000 30.000000 -4.000000 +v -1.000000 30.000000 -4.500000 +v -1.000000 34.000000 -4.500000 +v -0.500000 34.000000 -4.000000 +v -1.000000 30.000000 -5.500000 +v -0.500000 30.000000 -6.000000 +v -0.500000 34.000000 -6.000000 +v -1.000000 34.000000 -5.500000 +v 1.000000 30.000000 -4.500000 +v 0.500000 30.000000 -4.000000 +v 0.500000 34.000000 -4.000000 +v 1.000000 34.000000 -4.500000 +v 0.500000 30.000000 -6.000000 +v 1.000000 30.000000 -5.500000 +v 1.000000 34.000000 -5.500000 +v 0.500000 34.000000 -6.000000 +v -1.000000 32.000000 -6.000000 +v 1.000000 32.000000 -6.000000 +v -1.000000 34.000000 -6.000000 +v 1.000000 34.000000 -6.000000 +v -2.000000 35.000000 -7.000000 +v -2.000000 31.000000 -7.000000 +v 2.000000 31.000000 -7.000000 +v 2.000000 35.000000 -7.000000 +v -1.500000 34.500000 -7.000000 +v -1.500000 31.500000 -7.000000 +v 1.500000 31.500000 -7.000000 +v 1.500000 34.500000 -7.000000 +v -1.000000 34.000000 -7.500000 +v -1.000000 32.000000 -7.500000 +v 1.000000 32.000000 -7.500000 +v 1.000000 34.000000 -7.500000 +v 4.500000 28.500000 2.000000 +v 4.500000 25.500000 2.000000 +v 4.500000 28.500000 -2.000000 +v 4.500000 25.500000 -2.000000 +v 5.500000 28.500000 -2.000000 +v 5.500000 28.500000 2.000000 +v 5.500000 25.500000 2.000000 +v 5.500000 25.500000 -2.000000 +v 5.500000 28.000000 1.500000 +v 5.500000 26.000000 1.500000 +v 5.500000 28.000000 -1.500000 +v 5.500000 26.000000 -1.500000 +v 6.000000 28.000000 -1.500000 +v 6.000000 28.000000 1.500000 +v 6.000000 26.000000 1.500000 +v 6.000000 26.000000 -1.500000 +v 6.750000 29.000000 0.250000 +v 7.250000 29.000000 0.250000 +v 6.750000 29.000000 -0.250000 +v 7.250000 29.000000 -0.250000 +v 6.750000 35.000000 -0.250000 +v 6.750000 35.000000 0.250000 +v 7.250000 35.000000 0.250000 +v 7.250000 35.000000 -0.250000 +v 5.250000 27.000000 -0.250000 +v 5.250000 27.000000 0.250000 +v 5.750000 27.000000 0.250000 +v 5.750000 27.000000 -0.250000 +v -1.500000 22.878681 -5.207107 +v -1.000000 22.525127 -4.853554 +v 1.000000 22.525127 -4.853554 +v 1.500000 22.878681 -5.207107 +v -1.000000 24.646446 -6.974874 +v -1.500000 24.292892 -6.621319 +v 1.500000 24.292892 -6.621319 +v 1.000000 24.646446 -6.974874 +v -1.500000 22.878677 -8.035534 +v -1.000000 23.232231 -8.389088 +v -1.000000 21.110912 -6.267767 +v -1.500000 21.464464 -6.621321 +v 1.500000 21.464464 -6.621321 +v 1.000000 21.110912 -6.267767 +v 1.000000 23.232231 -8.389088 +v 1.500000 22.878677 -8.035534 +v -1.000000 24.646446 -4.146446 +v -0.500000 24.292892 -3.792893 +v 0.500000 24.292892 -3.792893 +v 1.000000 24.646446 -4.146446 +v -0.500000 25.707108 -5.207107 +v -1.000000 25.353554 -4.853554 +v 1.000000 25.353554 -4.853554 +v 0.500000 25.707108 -5.207107 +v -1.000000 23.939339 -6.267766 +v -0.500000 24.292892 -6.621321 +v -0.500000 22.878681 -5.207107 +v -1.000000 23.232235 -5.560660 +v 1.000000 23.232235 -5.560660 +v 0.500000 22.878681 -5.207107 +v 0.500000 24.292892 -6.621321 +v 1.000000 23.939339 -6.267766 +v -5.500000 28.500000 -2.000000 +v -5.500000 28.500000 2.000000 +v -5.500000 25.500000 2.000000 +v -5.500000 25.500000 -2.000000 +v -4.500000 28.500000 -2.000000 +v -4.500000 28.500000 2.000000 +v -4.500000 25.500000 2.000000 +v -4.500000 25.500000 -2.000000 +v -6.500000 26.000000 3.000000 +v -6.500000 28.000000 5.000000 +v -6.500000 26.000000 1.000000 +v -6.500000 28.000000 1.000000 +v -5.500000 26.000000 0.000000 +v -5.500000 28.000000 0.000000 +v -5.100000 30.000000 -1.375000 +v -5.100000 32.000000 -1.375000 +v -5.100000 30.000000 -2.625000 +v -5.100000 32.000000 -2.625000 +v -5.200001 30.000000 -0.375000 +v -5.200001 32.000000 -0.375000 +v -5.200001 30.000000 -1.625000 +v -5.200001 32.000000 -1.625000 +v -5.300001 30.500000 0.000000 +v -5.300001 30.000000 0.000000 +v -5.300001 30.000000 -3.000000 +v -5.300001 30.500000 -3.000000 +v -5.000000 30.000000 -4.000000 +v -5.000000 30.500000 -4.000000 +v -5.000000 30.500000 1.000000 +v -5.000000 30.000000 1.000000 +vt 0.280000 0.046512 +vt 0.600000 0.093023 +vt 0.280000 0.093023 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.720000 0.046512 +vt 0.640000 0.093023 +vt 0.640000 0.046512 +vt 0.640000 0.093023 +vt 0.720000 0.046512 +vt 0.720000 0.093023 +vt 0.720000 0.046512 +vt 0.640000 0.093023 +vt 0.640000 0.046512 +vt 0.640000 0.093023 +vt 0.720000 0.046512 +vt 0.720000 0.093023 +vt 0.640000 0.046512 +vt 0.760000 0.000000 +vt 0.600000 0.000000 +vt 0.280000 0.046512 +vt 0.600000 0.000000 +vt 0.280000 0.046512 +vt 0.600000 -0.000000 +vt 0.640000 0.046512 +vt 0.280000 0.046512 +vt 0.600000 -0.000000 +vt 0.760000 0.000000 +vt 0.280000 -0.000000 +vt 0.600000 0.046512 +vt 0.560000 0.162791 +vt 0.320000 0.302326 +vt 0.320000 0.162791 +vt 0.560000 0.162791 +vt 0.320000 0.162791 +vt 0.560000 0.162791 +vt 0.720000 0.093023 +vt 0.680000 0.162791 +vt 0.680000 0.162791 +vt 0.720000 0.093023 +vt 0.680000 0.162791 +vt 0.680000 0.162791 +vt 0.280000 0.372093 +vt 0.320000 0.186047 +vt 0.320000 0.372093 +vt -0.000000 0.372093 +vt 0.280000 0.186047 +vt 0.000000 0.372093 +vt 0.280000 0.186047 +vt 0.280000 0.372093 +vt 0.280000 0.186047 +vt 0.320000 0.372093 +vt 0.280000 0.372093 +vt 0.320000 0.372093 +vt 0.000000 0.372093 +vt 0.000000 0.186047 +vt 0.280000 0.372093 +vt 0.000000 0.372093 +vt 0.320000 0.186047 +vt 0.320000 0.372093 +vt -0.000000 -0.000000 +vt 0.280000 0.162791 +vt -0.000000 0.162791 +vt -0.000000 0.186047 +vt 0.000000 0.186047 +vt 0.280000 0.162791 +vt 0.300000 0.162791 +vt 0.320000 0.186047 +vt 0.000000 0.186047 +vt 0.280000 0.162791 +vt 0.300000 0.162791 +vt 0.000000 0.162791 +vt 0.280000 0.186047 +vt 0.300000 0.162791 +vt 0.320000 0.186047 +vt 0.300000 0.162791 +vt 0.040000 0.441860 +vt 0.160000 0.395349 +vt 0.160000 0.441860 +vt 0.160000 0.372093 +vt 0.040000 0.395349 +vt 0.040000 0.372093 +vt 0.040000 0.465116 +vt 0.160000 0.465116 +vt -0.000000 0.395349 +vt -0.000000 0.465116 +vt 0.200000 0.395349 +vt 0.280000 0.372093 +vt 0.320000 0.418605 +vt 0.280000 0.418605 +vt 0.400000 0.372093 +vt 0.440000 0.418605 +vt 0.400000 0.418605 +vt 0.220000 0.372093 +vt 0.260000 0.418605 +vt 0.220000 0.418605 +vt 0.660000 0.465116 +vt 0.740000 0.418605 +vt 0.740000 0.465116 +vt 0.540000 0.418605 +vt 0.440000 0.406977 +vt 0.460000 0.348837 +vt 0.360000 0.465116 +vt 0.440000 0.418605 +vt 0.440000 0.465116 +vt 0.460000 0.465116 +vt 0.540000 0.465116 +vt 0.440000 0.523256 +vt 0.560000 0.476744 +vt 0.800000 0.406977 +vt 0.740000 0.395349 +vt 0.800000 0.395349 +vt 0.920000 0.406977 +vt 0.860000 0.395349 +vt 0.920000 0.395349 +vt 0.680000 0.406977 +vt 0.620000 0.395349 +vt 0.680000 0.395349 +vt 0.860000 0.406977 +vt 0.620000 0.406977 +vt 0.560000 0.395349 +vt 0.740000 0.406977 +vt 0.770035 0.472036 +vt 0.770035 0.411685 +vt 0.859930 0.441860 +vt 0.620000 0.406977 +vt 0.560000 0.395349 +vt 0.620000 0.395349 +vt 0.740000 0.406977 +vt 0.680000 0.395349 +vt 0.740000 0.395349 +vt 0.800000 0.406977 +vt 0.800000 0.395349 +vt 0.920000 0.406977 +vt 0.860000 0.395349 +vt 0.920000 0.395349 +vt 0.680000 0.406977 +vt 0.860000 0.406977 +vt 0.770035 0.472036 +vt 0.770035 0.411685 +vt 0.859930 0.441860 +vt 1.000000 0.139535 +vt 0.960000 0.046512 +vt 1.000000 0.046512 +vt 0.820000 0.139535 +vt 0.780000 0.046512 +vt 0.820000 0.046512 +vt 0.900000 0.151163 +vt 0.880000 0.186047 +vt 0.820000 0.174419 +vt 0.940000 0.139535 +vt 0.900000 0.046512 +vt 0.940000 0.046512 +vt 0.880000 0.139535 +vt 0.840000 0.046512 +vt 0.880000 0.046512 +vt 0.960000 0.139535 +vt 0.900000 0.139535 +vt 0.840000 0.139535 +vt 0.760000 0.046512 +vt 0.780000 0.139535 +vt 0.760000 0.139535 +vt 0.820000 0.034884 +vt 0.840000 0.000000 +vt 0.900000 0.011628 +vt 0.800000 0.279070 +vt 0.880000 0.232558 +vt 0.880000 0.279070 +vt 0.920000 0.395349 +vt 0.760000 0.302326 +vt 0.920000 0.302326 +vt 0.880000 0.279070 +vt 0.760000 0.302326 +vt 0.800000 0.279070 +vt 0.880000 0.279070 +vt 0.760000 0.302326 +vt 0.800000 0.279070 +vt 0.880000 0.279070 +vt 0.760000 0.302326 +vt 0.800000 0.279070 +vt 0.320000 0.372093 +vt 0.420000 0.360465 +vt 0.440000 0.372093 +vt 0.340000 0.313953 +vt 0.420000 0.313953 +vt 0.440000 0.302326 +vt 0.320000 0.302326 +vt 0.340000 0.360465 +vt 0.600000 0.186047 +vt 0.760000 0.255814 +vt 0.600000 0.255814 +vt 0.760000 0.162791 +vt 0.600000 0.162791 +vt 0.600000 0.279070 +vt 0.760000 0.279070 +vt 0.800000 0.255814 +vt 0.760000 0.186047 +vt 0.800000 0.186047 +vt 0.560000 0.186047 +vt 0.560000 0.255814 +vt 0.580000 0.290698 +vt 0.700000 0.337209 +vt 0.580000 0.337209 +vt 0.720000 0.337209 +vt 0.700000 0.290698 +vt 0.720000 0.290698 +vt 0.560000 0.290698 +vt 0.560000 0.337209 +vt 0.700000 0.279070 +vt 0.580000 0.279070 +vt 0.580000 0.348837 +vt 0.700000 0.348837 +vt 0.940000 0.290698 +vt 0.960000 0.232558 +vt 0.960000 0.290698 +vt 0.940000 0.430233 +vt 0.960000 0.441860 +vt 0.940000 0.441860 +vt 1.000000 0.290698 +vt 0.980000 0.430233 +vt 0.980000 0.290698 +vt 0.960000 0.430233 +vt 0.920000 0.430233 +vt 0.920000 0.290698 +vt 1.000000 0.232558 +vt 0.980000 0.232558 +vt 0.940000 0.232558 +vt 0.560000 0.465116 +vt 0.560000 0.418605 +vt 0.640000 0.418605 +vt 0.640000 0.465116 +vt 0.360000 0.418605 +vt 0.340000 0.465116 +vt 0.340000 0.418605 +vt 0.260000 0.372093 +vt 0.200000 0.418605 +vt 0.200000 0.372093 +vt 0.380000 0.372093 +vt 0.380000 0.418605 +vt 0.340000 0.418605 +vt 0.320000 0.372093 +vt 0.340000 0.372093 +vt 0.600000 0.255814 +vt 0.760000 0.186047 +vt 0.760000 0.255814 +vt 0.560000 0.186047 +vt 0.600000 0.186047 +vt 0.800000 0.255814 +vt 0.760000 0.162791 +vt 0.600000 0.279070 +vt 0.920000 0.186047 +vt 0.840000 0.232558 +vt 0.840000 0.186047 +vt 0.800000 0.186047 +vt 0.500000 1.000000 +vt 0.000000 0.534884 +vt 0.500000 0.534884 +vt 1.000000 1.000000 +vt 0.500000 0.534884 +vt 1.000000 0.534884 +vt 0.160000 0.476744 +vt 0.040000 0.465116 +vt 0.160000 0.465116 +vt 0.040000 0.476744 +vt -0.000000 0.465116 +vt 0.200000 0.476744 +vt 0.760000 0.000000 +vt 0.280000 0.000000 +vt 0.280000 -0.000000 +vt 0.760000 0.000000 +vt 0.280000 -0.000000 +vt 0.560000 0.302326 +vt 0.320000 0.162791 +vt 0.560000 0.162791 +vt 0.320000 0.162791 +vt 0.280000 -0.000000 +vt 0.000000 0.162791 +vt 0.000000 0.162791 +vt 0.280000 0.162791 +vt 0.200000 0.465116 +vt 0.440000 0.372093 +vt 0.660000 0.418605 +vt 0.540000 0.348837 +vt 0.560000 0.360465 +vt 0.560000 0.406977 +vt 0.460000 0.418605 +vt 0.440000 0.360465 +vt 0.560000 0.523256 +vt 0.540000 0.534884 +vt 0.460000 0.534884 +vt 0.440000 0.476744 +vt 0.560000 0.406977 +vt 0.829965 0.472036 +vt 0.740070 0.441860 +vt 0.829965 0.411685 +vt 0.560000 0.406977 +vt 0.829965 0.472036 +vt 0.740070 0.441860 +vt 0.829965 0.411685 +vt 0.820000 0.151163 +vt 0.900000 0.174419 +vt 0.840000 0.186047 +vt 0.900000 0.034884 +vt 0.820000 0.011628 +vt 0.880000 0.000000 +vt 0.800000 0.232558 +vt 0.760000 0.395349 +vt 0.920000 0.302326 +vt 0.920000 0.302326 +vt 0.920000 0.302326 +vt 1.000000 0.430233 +vt 0.920000 0.232558 +vt 0.560000 0.255814 +vt 0.800000 0.186047 +vt 0.600000 0.162791 +vt 0.760000 0.279070 +vt 1.000000 0.232558 +vt 0.800000 0.232558 +vt 0.000000 1.000000 +vt 0.500000 1.000000 +vt -0.000000 0.476744 +vt 0.200000 0.465116 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.4082 0.8165 -0.4082 +vn 0.4082 0.8165 0.4082 +vn 0.0000 0.8944 -0.4472 +vn -0.4472 0.8944 0.0000 +vn -0.4082 0.8165 0.4082 +vn 0.4472 0.8944 0.0000 +vn -0.4082 0.8165 -0.4082 +vn 0.0000 0.8944 0.4472 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.7071 0.0000 +vn 0.4851 0.7276 0.4851 +vn 0.4851 0.7276 -0.4851 +vn -0.4851 0.7276 -0.4851 +vn -0.4851 0.7276 0.4851 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.5774 -0.5774 -0.5774 +vn -0.7071 -0.7071 0.0000 +vn -0.5774 -0.5774 -0.5774 +vn 0.0000 -0.7071 0.7071 +vn -0.5774 -0.5774 0.5774 +vn 0.5774 -0.5774 0.5774 +vn 0.5000 0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8000 -0.6000 0.0000 +vn -0.8000 0.6000 0.0000 +vn 0.7071 0.5000 -0.5000 +vn -0.7071 0.5000 -0.5000 +vn -0.7071 -0.5000 0.5000 +vn 0.7071 -0.5000 0.5000 +vn -0.9578 0.0000 -0.2873 +vn -0.9578 0.0000 0.2874 +vn -0.9578 0.0000 -0.2874 +vn -0.9578 0.0000 0.2873 +s off +f 264/417/54 255/418/54 256/419/54 +f 257/420/55 266/421/55 258/422/55 +f 253/423/56 262/424/56 254/425/56 +f 259/426/57 268/427/57 260/428/57 +f 261/429/58 258/430/58 266/431/58 +f 254/432/59 264/433/59 256/434/59 +f 267/435/60 255/436/60 263/437/60 +f 260/438/61 265/439/61 257/440/61 +f 268/441/62 273/442/62 265/439/62 +f 271/443/63 267/435/63 263/437/63 +f 265/444/64 274/445/64 266/421/64 +f 261/446/65 270/447/65 262/424/65 +f 270/447/66 264/433/66 262/448/66 +f 267/449/67 276/450/67 268/427/67 +f 266/431/68 269/451/68 261/429/68 +f 272/452/69 263/453/69 264/417/69 +f 279/454/70 277/455/70 278/456/70 +f 279/454/71 257/420/71 258/422/71 +f 280/457/72 253/423/72 254/425/72 +f 255/418/73 280/458/73 256/419/73 +f 278/459/74 259/426/74 260/428/74 +f 259/460/75 277/461/75 255/436/75 +f 260/438/76 257/440/76 278/462/76 +f 253/463/77 279/464/77 258/430/77 +f 254/432/78 256/434/78 280/465/78 +f 286/466/58 289/467/58 281/468/58 +f 285/469/55 294/470/55 286/466/55 +f 281/471/56 290/472/56 282/473/56 +f 296/474/61 285/475/61 288/476/61 +f 290/472/59 284/477/59 282/473/59 +f 287/478/57 296/474/57 288/476/57 +f 292/479/54 283/480/54 284/481/54 +f 283/480/60 295/482/60 287/483/60 +f 297/484/79 299/485/79 298/486/79 +f 293/487/80 299/485/80 294/470/80 +f 295/488/81 298/489/81 296/474/81 +f 296/474/82 298/490/82 293/491/82 +f 289/492/83 300/493/83 290/472/83 +f 289/467/84 294/470/84 299/494/84 +f 300/495/85 291/496/85 292/479/85 +f 290/472/86 300/497/86 292/498/86 +f 295/482/87 291/496/87 297/499/87 +f 307/500/55 305/501/55 306/502/55 +f 303/503/79 308/504/79 304/505/79 +f 302/506/71 306/502/71 301/507/71 +f 304/508/57 307/500/57 302/509/57 +f 303/510/56 306/502/56 305/501/56 +f 423/511/71 413/512/71 416/513/71 +f 419/514/85 411/515/85 410/516/85 +f 421/517/57 415/518/57 412/519/57 +f 394/520/85 406/521/85 395/522/85 +f 402/523/80 408/524/80 406/525/80 +f 396/526/57 408/527/57 399/528/57 +f 400/529/71 402/523/71 397/530/71 +f 396/531/73 400/529/73 398/532/73 +f 326/533/88 315/534/88 320/535/88 +f 324/536/89 319/537/89 318/538/89 +f 322/539/56 317/540/56 316/541/56 +f 325/542/57 320/535/57 319/537/57 +f 323/543/90 318/544/90 317/540/90 +f 321/545/91 316/541/91 315/534/91 +f 321/546/55 325/547/55 323/548/55 +f 329/549/90 312/550/90 311/551/90 +f 327/552/91 310/553/91 309/554/91 +f 332/555/88 309/554/88 314/556/88 +f 330/557/89 313/558/89 312/559/89 +f 328/560/56 311/551/56 310/553/56 +f 331/561/57 314/556/57 313/558/57 +f 327/562/55 331/563/55 329/564/55 +f 343/565/54 333/566/54 342/567/54 +f 347/568/57 341/569/57 346/570/57 +f 340/571/70 336/572/70 344/573/70 +f 335/574/56 337/575/56 334/576/56 +f 339/577/55 345/578/55 338/579/55 +f 336/580/59 334/576/59 333/566/59 +f 338/579/58 340/581/58 339/577/58 +f 346/570/61 348/582/61 347/568/61 +f 342/583/60 344/584/60 343/585/60 +f 346/586/79 342/587/79 334/588/79 +f 350/589/54 351/590/54 349/591/54 +f 353/592/55 355/593/55 354/594/55 +f 350/595/60 356/596/60 352/597/60 +f 351/598/59 354/599/59 349/600/59 +f 352/601/73 353/602/73 351/603/73 +f 350/589/85 354/594/85 355/593/85 +f 360/604/71 361/605/71 357/606/71 +f 361/605/55 363/607/55 362/608/55 +f 357/606/58 362/608/58 358/609/58 +f 358/609/80 363/607/80 359/610/80 +f 359/610/61 364/611/61 360/604/61 +f 371/612/57 369/613/57 370/614/57 +f 368/615/79 371/612/79 366/616/79 +f 365/617/70 369/613/70 367/618/70 +f 367/619/55 372/620/55 368/621/55 +f 366/622/54 370/614/54 365/623/54 +f 379/624/57 377/625/57 378/626/57 +f 375/627/55 380/628/55 376/629/55 +f 374/630/54 378/626/54 373/631/54 +f 376/632/79 379/624/79 374/633/79 +f 373/634/70 377/625/70 375/635/70 +f 382/636/92 392/637/92 384/638/92 +f 387/639/70 385/640/70 386/641/70 +f 384/638/57 387/639/57 382/636/57 +f 381/642/56 385/643/56 383/644/56 +f 383/644/55 388/645/55 384/638/55 +f 382/636/54 386/646/54 381/647/54 +f 383/644/93 390/648/93 381/642/93 +f 383/644/55 392/637/55 389/649/55 +f 381/647/54 391/650/54 382/636/54 +f 408/527/94 400/529/94 399/528/94 +f 398/651/95 402/523/95 401/652/95 +f 404/653/96 394/520/96 393/654/96 +f 405/655/97 395/656/97 406/657/97 +f 393/654/56 401/652/56 404/653/56 +f 424/658/94 416/513/94 415/518/94 +f 421/517/97 411/659/97 422/660/97 +f 420/661/96 410/516/96 409/662/96 +f 414/663/95 418/664/95 417/665/95 +f 414/663/56 420/661/56 409/662/56 +f 425/666/56 427/667/56 426/668/56 +f 425/666/55 432/669/55 428/670/55 +f 427/667/54 430/671/54 426/668/54 +f 428/670/79 431/672/79 427/667/79 +f 426/668/70 429/673/70 425/666/70 +f 433/674/56 436/675/56 435/676/56 +f 436/675/58 437/677/58 435/676/58 +f 440/678/56 441/679/56 439/680/56 +f 444/681/56 445/682/56 443/683/56 +f 447/684/56 449/685/56 448/686/56 +f 450/687/98 451/688/98 449/685/98 +f 448/686/99 453/689/99 447/684/99 +f 264/417/54 263/453/54 255/418/54 +f 257/420/55 265/444/55 266/421/55 +f 253/423/56 261/446/56 262/424/56 +f 259/426/57 267/449/57 268/427/57 +f 261/429/58 253/463/58 258/430/58 +f 254/432/59 262/448/59 264/433/59 +f 267/435/60 259/460/60 255/436/60 +f 260/438/61 268/441/61 265/439/61 +f 268/441/62 276/450/62 273/442/62 +f 271/443/63 275/690/63 267/435/63 +f 265/444/64 273/691/64 274/445/64 +f 261/446/65 269/692/65 270/447/65 +f 270/447/66 272/693/66 264/433/66 +f 267/449/67 275/694/67 276/450/67 +f 266/431/68 274/445/68 269/451/68 +f 272/452/69 271/443/69 263/453/69 +f 279/454/70 280/695/70 277/455/70 +f 279/454/71 278/456/71 257/420/71 +f 280/457/72 279/696/72 253/423/72 +f 255/418/73 277/697/73 280/458/73 +f 278/459/74 277/698/74 259/426/74 +f 286/466/58 294/470/58 289/467/58 +f 285/469/55 293/487/55 294/470/55 +f 281/471/56 289/492/56 290/472/56 +f 296/474/61 293/491/61 285/475/61 +f 290/472/59 292/498/59 284/477/59 +f 287/478/57 295/488/57 296/474/57 +f 292/479/54 291/496/54 283/480/54 +f 283/480/60 291/496/60 295/482/60 +f 297/484/79 300/699/79 299/485/79 +f 293/487/80 298/486/80 299/485/80 +f 295/488/81 297/700/81 298/489/81 +f 289/492/83 299/701/83 300/493/83 +f 300/495/85 297/702/85 291/496/85 +f 307/500/55 308/504/55 305/501/55 +f 303/503/79 305/501/79 308/504/79 +f 302/506/71 307/500/71 306/502/71 +f 304/508/57 308/504/57 307/500/57 +f 303/510/56 301/703/56 306/502/56 +f 423/511/71 418/664/71 413/512/71 +f 419/514/85 422/704/85 411/515/85 +f 421/517/57 424/658/57 415/518/57 +f 394/520/85 403/705/85 406/521/85 +f 406/525/80 403/706/80 404/707/80 +f 404/707/80 401/708/80 406/525/80 +f 401/708/80 402/523/80 406/525/80 +f 402/523/80 407/709/80 408/524/80 +f 408/524/80 405/710/80 406/525/80 +f 396/526/57 405/655/57 408/527/57 +f 400/529/71 407/709/71 402/523/71 +f 398/532/73 393/711/73 396/531/73 +f 393/711/73 394/712/73 396/531/73 +f 394/712/73 395/713/73 396/531/73 +f 396/531/73 399/714/73 400/529/73 +f 400/529/73 397/530/73 398/532/73 +f 326/533/88 321/545/88 315/534/88 +f 324/536/89 325/542/89 319/537/89 +f 322/539/56 323/543/56 317/540/56 +f 325/542/57 326/533/57 320/535/57 +f 323/543/90 324/715/90 318/544/90 +f 321/545/91 322/539/91 316/541/91 +f 323/548/55 322/716/55 321/546/55 +f 321/546/55 326/717/55 325/547/55 +f 325/547/55 324/718/55 323/548/55 +f 329/549/90 330/719/90 312/550/90 +f 327/552/91 328/560/91 310/553/91 +f 332/555/88 327/552/88 309/554/88 +f 330/557/89 331/561/89 313/558/89 +f 328/560/56 329/549/56 311/551/56 +f 331/561/57 332/555/57 314/556/57 +f 329/564/55 328/720/55 327/562/55 +f 327/562/55 332/721/55 331/563/55 +f 331/563/55 330/722/55 329/564/55 +f 343/565/54 336/580/54 333/566/54 +f 347/568/57 344/584/57 341/569/57 +f 344/573/70 347/723/70 348/582/70 +f 348/582/70 339/577/70 340/571/70 +f 340/571/70 335/724/70 336/572/70 +f 336/572/70 343/725/70 344/573/70 +f 344/573/70 348/582/70 340/571/70 +f 335/574/56 340/581/56 337/575/56 +f 339/577/55 348/582/55 345/578/55 +f 336/580/59 335/574/59 334/576/59 +f 338/579/58 337/575/58 340/581/58 +f 346/570/61 345/578/61 348/582/61 +f 342/583/60 341/569/60 344/584/60 +f 334/588/79 337/726/79 338/579/79 +f 338/579/79 345/578/79 346/586/79 +f 346/586/79 341/727/79 342/587/79 +f 342/587/79 333/728/79 334/588/79 +f 334/588/79 338/579/79 346/586/79 +f 350/589/54 352/729/54 351/590/54 +f 353/592/55 356/730/55 355/593/55 +f 350/595/60 355/731/60 356/596/60 +f 351/598/59 353/732/59 354/599/59 +f 352/601/73 356/733/73 353/602/73 +f 350/589/85 349/591/85 354/594/85 +f 360/604/71 364/611/71 361/605/71 +f 361/605/55 364/611/55 363/607/55 +f 357/606/58 361/605/58 362/608/58 +f 358/609/80 362/608/80 363/607/80 +f 359/610/61 363/607/61 364/611/61 +f 371/612/57 372/620/57 369/613/57 +f 368/615/79 372/620/79 371/612/79 +f 365/617/70 370/614/70 369/613/70 +f 367/619/55 369/613/55 372/620/55 +f 366/622/54 371/612/54 370/614/54 +f 379/624/57 380/628/57 377/625/57 +f 375/627/55 377/625/55 380/628/55 +f 374/630/54 379/624/54 378/626/54 +f 376/632/79 380/628/79 379/624/79 +f 373/634/70 378/626/70 377/625/70 +f 382/636/92 391/650/92 392/637/92 +f 387/639/70 388/645/70 385/640/70 +f 384/638/57 388/645/57 387/639/57 +f 381/642/56 386/734/56 385/643/56 +f 383/644/55 385/643/55 388/645/55 +f 382/636/54 387/639/54 386/646/54 +f 383/644/93 389/649/93 390/648/93 +f 383/644/55 384/638/55 392/637/55 +f 381/647/54 390/735/54 391/650/54 +f 408/527/94 407/709/94 400/529/94 +f 398/651/95 397/530/95 402/523/95 +f 404/653/96 403/705/96 394/520/96 +f 405/655/97 396/526/97 395/656/97 +f 393/654/56 398/651/56 401/652/56 +f 424/658/94 423/511/94 416/513/94 +f 421/517/97 412/519/97 411/659/97 +f 420/661/96 419/514/96 410/516/96 +f 414/663/95 413/512/95 418/664/95 +f 414/663/56 417/665/56 420/661/56 +f 425/666/56 428/670/56 427/667/56 +f 425/666/55 429/736/55 432/669/55 +f 427/667/54 431/737/54 430/671/54 +f 428/670/79 432/738/79 431/672/79 +f 426/668/70 430/739/70 429/673/70 +f 433/674/56 434/740/56 436/675/56 +f 436/675/58 438/741/58 437/677/58 +f 440/678/56 442/742/56 441/679/56 +f 444/681/56 446/743/56 445/682/56 +f 447/684/56 450/687/56 449/685/56 +f 450/687/100 452/744/100 451/688/100 +f 448/686/101 454/745/101 453/689/101 +o Plane +v -4.000000 24.000000 2.000000 +v -4.000000 24.000000 -2.000000 +v 4.000000 24.000000 -2.000000 +v 1.500000 24.000000 -2.000000 +v 1.500000 24.000000 2.000000 +v 3.500000 24.000000 2.000000 +v 3.500000 24.000000 -2.000000 +v 4.000000 24.000000 2.000000 +v -4.000000 16.100000 -2.000000 +v 4.000000 16.100000 -2.000000 +v -4.000000 14.100000 -2.000000 +v 4.000000 14.100000 -2.000000 +v -4.000000 14.100000 -2.500000 +v -4.000000 16.100000 -2.500000 +v 4.000000 16.100000 -2.500000 +v 4.000000 14.100000 -2.500000 +v -4.000000 16.100000 2.000000 +v 4.000000 16.100000 2.000000 +v -4.000000 14.100000 2.000000 +v 4.000000 14.100000 2.000000 +v -4.000000 16.100000 2.500000 +v 4.000000 16.100000 2.500000 +v -4.000000 14.100000 2.500000 +v 4.000000 14.100000 2.500000 +v 4.500000 16.100000 -2.000000 +v 4.500000 14.100000 -2.000000 +v 4.500000 16.100000 2.000000 +v 4.500000 14.100000 2.000000 +v -4.500000 16.100000 -2.000000 +v -4.500000 14.100000 -2.000000 +v -4.500000 16.100000 2.000000 +v -4.500000 14.100000 2.000000 +v 4.000000 15.000000 2.000000 +v 4.000000 15.000000 -2.000000 +v -4.000000 15.000000 2.000000 +v -4.000000 15.000000 -2.000000 +v 4.000000 2.000000 5.000000 +v -4.000000 2.000000 5.000000 +v -5.000000 7.000000 2.000000 +v -5.000000 7.000000 -2.000000 +v 5.000000 7.000000 2.000000 +v 5.000000 7.000000 -2.000000 +v 0.000000 15.000000 -2.000000 +v 4.000000 9.000000 -3.000000 +v 2.000000 9.000000 -3.000000 +v -4.000000 9.000000 -3.000000 +v -2.000000 9.000000 -3.000000 +v -4.000000 12.000000 2.000000 +v -4.000000 12.000000 -2.000000 +v 4.000000 12.000000 -2.000000 +v 4.000000 12.000000 2.000000 +v -3.500000 24.000000 -2.000000 +v -3.500000 24.000000 2.000000 +v -1.500000 24.000000 2.000000 +v -1.500000 24.000000 -2.000000 +v 1.500000 22.000000 -2.000000 +v 1.500000 22.000000 2.000000 +v 3.500000 22.000000 2.000000 +v 3.500000 22.000000 -2.000000 +v -3.500000 22.000000 -2.000000 +v -3.500000 22.000000 2.000000 +v -1.500000 22.000000 2.000000 +v -1.500000 22.000000 -2.000000 +v 4.000000 22.000000 2.000000 +v 4.000000 22.000000 -2.000000 +v -4.000000 22.000000 -2.000000 +v -4.000000 22.000000 2.000000 +v 1.500000 24.000000 -3.000000 +v 3.500000 24.000000 -3.000000 +v -3.500000 24.000000 -3.000000 +v -1.500000 24.000000 -3.000000 +v 1.500000 22.000000 -3.000000 +v 3.500000 22.000000 -3.000000 +v -3.500000 22.000000 -3.000000 +v -1.500000 22.000000 -3.000000 +v 4.000000 22.000000 -3.000000 +v -4.000000 22.000000 -3.000000 +v 5.000000 22.000000 2.000000 +v 5.000000 22.000000 -2.000000 +v -5.000000 22.000000 -2.000000 +v -5.000000 22.000000 2.000000 +v 1.500000 24.000000 3.000000 +v 3.500000 24.000000 3.000000 +v -3.500000 24.000000 3.000000 +v -1.500000 24.000000 3.000000 +v 1.500000 22.000000 3.000000 +v 3.500000 22.000000 3.000000 +v -3.500000 22.000000 3.000000 +v -1.500000 22.000000 3.000000 +v 4.000000 22.000000 3.000000 +v -4.000000 22.000000 3.000000 +v 4.000000 18.000000 -3.000000 +v -4.000000 18.000000 -3.000000 +v 5.000000 17.000000 2.000000 +v 5.000000 17.000000 -2.000000 +v -5.000000 17.000000 -2.000000 +v -5.000000 17.000000 2.000000 +v 4.000000 18.000000 3.000000 +v -4.000000 18.000000 3.000000 +v 4.000000 17.000000 2.000000 +v 4.000000 17.000000 -2.000000 +v -4.000000 17.000000 -2.000000 +v -4.000000 17.000000 2.000000 +v 1.500000 25.000000 -2.000000 +v 1.500000 25.000000 2.000000 +v 3.500000 25.000000 2.000000 +v 3.500000 25.000000 -2.000000 +v -3.500000 25.000000 -2.000000 +v -3.500000 25.000000 2.000000 +v -1.500000 25.000000 2.000000 +v -1.500000 25.000000 -2.000000 +v -3.000000 13.000000 3.000000 +v 3.000000 13.000000 3.000000 +v -3.000000 23.000000 3.000000 +v 3.000000 23.000000 3.000000 +v -3.000000 23.000000 5.000000 +v 3.000000 23.000000 5.000000 +v -3.000000 21.000000 7.000000 +v -3.000000 13.000000 7.000000 +v 3.000000 13.000000 7.000000 +v 3.000000 21.000000 7.000000 +v -4.000000 19.000000 6.000000 +v -4.000000 14.000000 6.000000 +v -2.500000 11.500000 4.000000 +v 2.500000 11.500000 4.000000 +v -2.500000 10.085787 4.585787 +v 2.500000 10.085787 4.585787 +v -2.500000 9.500000 6.000000 +v 2.500000 9.500000 6.000000 +v -2.500000 10.085787 7.414213 +v 2.500000 10.085787 7.414213 +v -2.500000 11.500000 8.000000 +v 2.500000 11.500000 8.000000 +v -2.500000 12.914213 7.414213 +v 2.500000 12.914213 7.414213 +v -2.500000 13.500000 6.000000 +v 2.500000 13.500000 6.000000 +v -2.500000 12.914213 4.585787 +v 2.500000 12.914213 4.585787 +v -4.000000 14.000000 4.000000 +v -4.000000 19.000000 4.000000 +v -3.000000 13.000000 6.000000 +v -3.000000 19.000000 6.000000 +v -3.000000 13.000000 4.000000 +v -3.000000 19.000000 4.000000 +v -3.750000 19.000000 5.250000 +v -3.250000 19.000000 5.250000 +v -3.750000 19.000000 4.750000 +v -3.250000 19.000000 4.750000 +v -3.250000 20.000000 4.750000 +v -3.750000 20.000000 4.750000 +v -3.250000 20.000000 5.250000 +v -3.750000 20.000000 5.250000 +v -4.000000 20.000000 6.000000 +v -4.000000 20.000000 4.000000 +v -3.000000 20.000000 6.000000 +v -3.000000 20.000000 4.000000 +v -4.000000 22.000000 4.000000 +v -3.500000 22.000000 4.000000 +v -3.500000 22.000000 6.000000 +v -4.000000 22.000000 6.000000 +v -3.500000 20.000000 6.500000 +v -4.000000 20.000000 6.500000 +v -3.500000 21.000000 6.500000 +v -4.000000 21.000000 6.500000 +v -4.000000 20.000000 3.500000 +v -3.500000 20.000000 3.500000 +v -4.000000 21.000000 3.500000 +v -3.500000 21.000000 3.500000 +v 4.000000 19.000000 6.000000 +v 4.000000 14.000000 6.000000 +v 4.000000 14.000000 4.000000 +v 4.000000 19.000000 4.000000 +v 3.000000 19.000000 4.000000 +v 3.000000 13.000000 4.000000 +v 3.000000 19.000000 6.000000 +v 3.000000 13.000000 6.000000 +v 3.250000 19.000000 5.250000 +v 3.750000 19.000000 5.250000 +v 3.250000 19.000000 4.750000 +v 3.750000 19.000000 4.750000 +v 3.250000 22.000000 4.750000 +v 3.250000 22.000000 5.250000 +v 3.750000 22.000000 5.250000 +v 3.750000 22.000000 4.750000 +v 3.000000 21.500000 4.500000 +v 3.000000 21.500000 5.500000 +v 4.000000 21.500000 5.500000 +v 4.000000 21.500000 4.500000 +v 3.000000 20.000000 4.500000 +v 3.000000 20.000000 5.500000 +v 4.000000 20.000000 5.500000 +v 4.000000 20.000000 4.500000 +v 3.250000 21.250000 5.500000 +v 3.750000 21.250000 5.500000 +v 3.250000 20.250000 5.500000 +v 3.750000 20.250000 5.500000 +v 3.250000 20.750000 6.500000 +v 3.750000 20.750000 6.500000 +v 3.250000 20.250000 6.500000 +v 3.750000 20.250000 6.500000 +v 3.250000 20.250000 7.500000 +v 3.750000 20.250000 7.500000 +v 3.250000 19.750000 7.500000 +v 3.750000 19.750000 7.500000 +v 3.250000 21.250000 4.500000 +v 3.750000 21.250000 4.500000 +v 3.250000 20.250000 4.500000 +v 3.750000 20.250000 4.500000 +v 3.250000 20.750000 3.500000 +v 3.750000 20.750000 3.500000 +v 3.250000 20.250000 3.500000 +v 3.750000 20.250000 3.500000 +v 3.250000 20.250000 2.500000 +v 3.750000 20.250000 2.500000 +v 3.250000 19.750000 2.500000 +v 3.750000 19.750000 2.500000 +v -4.000000 23.000000 6.000000 +v 4.000000 23.000000 6.000000 +v -4.000000 21.585787 6.585787 +v 4.000000 21.585787 6.585787 +v -4.000000 21.000000 8.000000 +v 4.000000 21.000000 8.000000 +v -4.000000 21.585787 9.414213 +v 4.000000 21.585787 9.414213 +v -4.000000 23.000000 10.000000 +v 4.000000 23.000000 10.000000 +v -4.000000 24.414213 9.414213 +v 4.000000 24.414213 9.414213 +v -4.000000 25.000000 8.000000 +v 4.000000 25.000000 8.000000 +v -4.000000 24.414213 6.585787 +v 4.000000 24.414213 6.585787 +v -2.000000 14.000000 7.000000 +v 2.000000 14.000000 7.000000 +v -2.000000 18.000000 7.000000 +v 2.000000 18.000000 7.000000 +v -2.000000 18.000000 9.000000 +v -2.000000 14.000000 9.000000 +v 2.000000 14.000000 9.000000 +v 2.000000 18.000000 9.000000 +v 1.250000 18.000000 8.250000 +v 1.750000 18.000000 8.250000 +v 1.250000 18.000000 7.750000 +v 1.750000 18.000000 7.750000 +v 0.250000 18.000000 8.250000 +v 0.750000 18.000000 8.250000 +v 0.250000 18.000000 7.750000 +v 0.750000 18.000000 7.750000 +v 1.250000 19.000000 7.750000 +v 1.250000 19.000000 8.250000 +v 1.750000 19.000000 8.250000 +v 1.750000 19.000000 7.750000 +v 0.250000 19.000000 7.750000 +v 0.250000 19.000000 8.250000 +v 0.750000 19.000000 8.250000 +v 0.750000 19.000000 7.750000 +v 1.250000 22.000000 10.750000 +v 1.250000 22.000000 11.250000 +v 1.750000 22.000000 11.250000 +v 1.750000 22.000000 10.750000 +v 0.250000 22.000000 10.750000 +v 0.250000 22.000000 11.250000 +v 0.750000 22.000000 11.250000 +v 0.750000 22.000000 10.750000 +v 1.250000 28.000000 10.750000 +v 1.250000 28.000000 11.250000 +v 1.750000 28.000000 11.250000 +v 1.750000 28.000000 10.750000 +v 0.250000 24.000000 10.750000 +v 0.250000 24.000000 11.250000 +v 0.750000 24.000000 11.250000 +v 0.750000 24.000000 10.750000 +v -2.816987 12.381448 5.869995 +v -3.250000 12.405506 5.621155 +v -3.250000 12.381448 5.869995 +v -3.250000 15.367525 6.158691 +v -3.033494 12.369420 5.994413 +v -3.033494 15.355495 6.283112 +v -3.033494 12.345362 6.243254 +v -3.033494 15.331437 6.531950 +v -3.250000 12.333332 6.367672 +v -3.250000 15.319408 6.656370 +v -3.466506 12.345362 6.243254 +v -3.466506 15.331437 6.531950 +v -3.466506 12.369420 5.994413 +v -3.466506 15.355495 6.283112 +v -2.816987 12.333332 6.367672 +v -3.250000 12.309274 6.616512 +v -3.683012 12.333332 6.367672 +v -3.683012 12.381448 5.869995 +v -3.899518 11.398119 5.649342 +v -3.250000 11.434206 5.276081 +v -3.899518 11.325944 6.395861 +v -3.250000 11.289858 6.769119 +v -2.600481 11.325944 6.395861 +v -2.600481 11.398119 5.649342 +v -3.899518 10.402760 5.553108 +v -3.250000 10.438847 5.179850 +v -3.899518 10.330585 6.299629 +v -3.250000 10.294498 6.672888 +v -2.600481 10.330585 6.299629 +v -2.600481 10.402760 5.553108 +v -2.816987 11.859086 7.092363 +v -3.250000 11.817929 6.845776 +v -3.250000 11.859086 7.092363 +v -3.250000 14.818153 6.598488 +v -3.033494 11.879663 7.215658 +v -3.033494 14.838732 6.721783 +v -3.033494 11.920820 7.462248 +v -3.033494 14.879889 6.968372 +v -3.250000 11.941398 7.585541 +v -3.250000 14.900467 7.091665 +v -3.466506 11.920820 7.462248 +v -3.466506 14.879889 6.968372 +v -3.466506 11.879663 7.215658 +v -3.466506 14.838732 6.721783 +v -2.816987 11.941398 7.585541 +v -3.250000 11.982554 7.832130 +v -3.683012 11.941398 7.585541 +v -3.683012 11.859086 7.092363 +v -3.899518 10.852151 7.133694 +v -3.250000 10.790417 6.763811 +v -3.899518 10.975620 7.873461 +v -3.250000 11.037354 8.243345 +v -2.600481 10.975620 7.873461 +v -2.600481 10.852151 7.133694 +v -3.899518 9.865794 7.298319 +v -3.250000 9.804060 6.928434 +v -3.899518 9.989264 8.038086 +v -3.250000 10.050999 8.407970 +v -2.600481 9.989264 8.038086 +v -2.600481 9.865794 7.298319 +vt 0.629630 0.225000 +vt 0.611111 0.175000 +vt 0.629630 0.175000 +vt 0.620370 0.175000 +vt 0.675926 0.150000 +vt 0.675926 0.175000 +vt 0.648148 0.175000 +vt 0.629630 0.225000 +vt 0.629630 0.175000 +vt 0.712963 0.175000 +vt 0.722222 0.150000 +vt 0.722222 0.175000 +vt 0.333333 0.400000 +vt 0.481481 0.387500 +vt 0.481481 0.400000 +vt 0.092593 0.387500 +vt 0.240741 0.337500 +vt 0.240741 0.387500 +vt 0.240741 0.325000 +vt 0.092593 0.337500 +vt 0.092593 0.325000 +vt 0.092593 0.400000 +vt 0.240741 0.400000 +vt 0.092593 0.325000 +vt 0.166667 0.125000 +vt 0.166667 0.325000 +vt 0.203704 0.325000 +vt 0.351852 0.000000 +vt 0.351852 0.325000 +vt 0.481481 0.325000 +vt 0.333333 0.337500 +vt 0.333333 0.325000 +vt 0.481481 0.337500 +vt 0.009259 0.400000 +vt 0.083333 0.387500 +vt 0.083333 0.400000 +vt 0.083333 0.325000 +vt 0.009259 0.337500 +vt 0.009259 0.325000 +vt 0.250000 0.400000 +vt 0.324074 0.387500 +vt 0.324074 0.400000 +vt 0.324074 0.325000 +vt 0.250000 0.337500 +vt 0.250000 0.325000 +vt 0.324074 0.337500 +vt 0.083333 0.337500 +vt 0.083333 0.400000 +vt 0.083333 0.325000 +vt 0.000000 0.325000 +vt -0.000000 0.337500 +vt 0.009259 0.387500 +vt -0.000000 0.387500 +vt 0.000000 0.400000 +vt 0.324074 0.325000 +vt 0.333333 0.387500 +vt 0.324074 0.400000 +vt 0.240741 0.325000 +vt 0.250000 0.387500 +vt 0.240741 0.400000 +vt 0.388889 0.325000 +vt 0.462963 0.125000 +vt 0.462963 0.325000 +vt 0.203704 0.000000 +vt 0.388889 0.125000 +vt 0.481481 0.325000 +vt 0.518519 0.175000 +vt 0.555556 0.325000 +vt 0.074074 0.325000 +vt 0.037037 0.175000 +vt 0.074074 0.175000 +vt 0.481481 0.175000 +vt 0.092593 0.125000 +vt 0.296296 0.400000 +vt 0.444444 0.700000 +vt 0.296296 0.700000 +vt 0.222222 0.700000 +vt 0.074074 0.700000 +vt 0.222222 0.400000 +vt 0.000000 0.700000 +vt 0.074074 0.400000 +vt 0.703704 0.225000 +vt 0.685185 0.175000 +vt 0.703704 0.175000 +vt 0.574074 0.175000 +vt 0.555556 0.225000 +vt 0.555556 0.175000 +vt 0.574074 0.150000 +vt 0.583333 0.175000 +vt 0.574074 0.175000 +vt 0.574074 0.225000 +vt 0.685185 0.225000 +vt 0.481481 0.175000 +vt 0.555556 0.150000 +vt 0.555556 0.175000 +vt 0.740741 0.175000 +vt 0.814815 0.150000 +vt 0.814815 0.175000 +vt 0.574074 0.375000 +vt 0.555556 0.425000 +vt 0.555556 0.375000 +vt 0.972222 0.150000 +vt 0.981481 0.175000 +vt 0.972222 0.175000 +vt 0.833333 0.175000 +vt 0.842593 0.150000 +vt 0.842593 0.175000 +vt 0.648148 0.375000 +vt 0.629630 0.425000 +vt 0.629630 0.375000 +vt 0.629630 0.425000 +vt 0.611111 0.375000 +vt 0.629630 0.375000 +vt 0.879630 0.150000 +vt 0.935185 0.175000 +vt 0.879630 0.175000 +vt 0.703704 0.425000 +vt 0.685185 0.375000 +vt 0.703704 0.375000 +vt 1.000000 0.175000 +vt 0.981481 0.150000 +vt 0.814815 0.175000 +vt 0.833333 0.150000 +vt 0.740741 0.175000 +vt 0.555556 0.175000 +vt 1.000000 0.150000 +vt 0.981481 0.050000 +vt 1.000000 0.025000 +vt 0.574074 0.050000 +vt 0.833333 0.050000 +vt 0.481481 0.150000 +vt 0.555556 0.025000 +vt 0.740741 0.150000 +vt 0.722222 0.050000 +vt 0.740741 0.025000 +vt 0.814815 0.025000 +vt 0.620370 0.150000 +vt 0.583333 0.150000 +vt 0.685185 0.425000 +vt 0.574074 0.425000 +vt 0.814815 -0.000000 +vt 0.481481 0.025000 +vt 0.555556 0.000000 +vt 0.574074 0.025000 +vt 0.722222 0.025000 +vt 0.833333 0.025000 +vt 0.981481 0.025000 +vt 0.574074 0.250000 +vt 0.555556 0.350000 +vt 0.555556 0.250000 +vt 0.703704 0.350000 +vt 0.685185 0.250000 +vt 0.703704 0.250000 +vt 0.629630 0.350000 +vt 0.611111 0.250000 +vt 0.629630 0.250000 +vt 0.648148 0.250000 +vt 0.629630 0.350000 +vt 0.629630 0.250000 +vt 0.611111 0.350000 +vt 0.648148 0.350000 +vt 0.611111 0.225000 +vt 0.648148 0.225000 +vt 0.685185 0.350000 +vt 0.574074 0.350000 +vt 0.629630 0.350000 +vt 0.703704 0.350000 +vt 0.629630 0.350000 +vt 0.555556 0.350000 +vt 0.555556 0.250000 +vt 0.629630 0.250000 +vt 0.629630 0.250000 +vt 0.703704 0.250000 +vt 0.222222 0.800000 +vt 0.555556 0.775000 +vt 0.444444 0.525000 +vt 0.555556 0.525000 +vt 0.629630 0.825000 +vt 0.740741 0.775000 +vt 0.740741 0.825000 +vt 0.740741 0.725000 +vt 0.814815 0.525000 +vt 0.814815 0.775000 +vt 0.740741 0.525000 +vt 0.629630 0.425000 +vt 0.740741 0.425000 +vt 0.629630 0.725000 +vt 0.629630 0.525000 +vt 0.629630 0.775000 +vt 0.592593 0.775000 +vt 0.537037 0.850000 +vt 0.500000 0.900000 +vt 0.500000 0.850000 +vt 0.546296 0.900000 +vt 0.555556 0.875000 +vt 0.555556 0.900000 +vt 0.314815 0.925000 +vt 0.222222 0.962500 +vt 0.222222 0.925000 +vt 0.500000 0.775000 +vt 0.500000 0.825000 +vt 0.490741 0.800000 +vt 0.018519 0.850000 +vt 0.055556 0.875000 +vt 0.018519 0.875000 +vt 0.314815 0.962500 +vt 0.222222 1.000000 +vt 0.453704 0.775000 +vt 0.444444 0.800000 +vt 0.444444 0.775000 +vt 0.018519 0.700000 +vt 0.055556 0.725000 +vt 0.018519 0.725000 +vt 0.314815 0.700000 +vt 0.222222 0.737500 +vt 0.222222 0.700000 +vt 0.462963 0.775000 +vt 0.453704 0.800000 +vt 0.074074 0.850000 +vt 0.074074 0.700000 +vt 0.314815 0.737500 +vt 0.222222 0.775000 +vt 0.472222 0.775000 +vt 0.462963 0.800000 +vt 0.537037 0.912500 +vt 0.500000 0.912500 +vt 0.314815 0.775000 +vt 0.222222 0.812500 +vt 0.481481 0.775000 +vt 0.472222 0.800000 +vt 0.000000 0.850000 +vt 0.000000 0.700000 +vt 0.314815 0.812500 +vt 0.222222 0.850000 +vt 0.326344 0.715564 +vt 0.351852 0.701301 +vt 0.351852 0.798699 +vt 0.055556 0.850000 +vt 0.314815 0.850000 +vt 0.222222 0.887500 +vt 0.537037 0.825000 +vt 0.537037 0.775000 +vt 0.314815 0.887500 +vt 0.377360 0.815565 +vt 0.377360 0.884436 +vt 0.326344 0.884436 +vt 0.555556 0.850000 +vt 0.546296 0.875000 +vt 0.546296 0.850000 +vt 0.546296 0.837500 +vt 0.537037 0.900000 +vt 0.546296 0.800000 +vt 0.546296 0.825000 +vt 0.490741 0.850000 +vt 0.481481 0.875000 +vt 0.481481 0.850000 +vt 0.481481 0.900000 +vt 0.490741 0.875000 +vt 0.490741 0.900000 +vt 0.490741 0.837500 +vt 0.055556 0.725000 +vt 0.018519 0.850000 +vt 0.018519 0.725000 +vt 0.611111 0.887500 +vt 0.629630 0.912500 +vt 0.611111 0.912500 +vt 0.000000 0.850000 +vt 0.000000 0.700000 +vt 0.074074 0.850000 +vt 0.055556 0.850000 +vt 0.055556 0.700000 +vt 0.018519 0.875000 +vt 0.564815 0.850000 +vt 0.574074 0.862500 +vt 0.564815 0.862500 +vt 0.583333 0.775000 +vt 0.574074 0.850000 +vt 0.574074 0.775000 +vt 0.564815 0.775000 +vt 0.555556 0.850000 +vt 0.555556 0.775000 +vt 0.592593 0.775000 +vt 0.583333 0.850000 +vt 0.629630 0.825000 +vt 0.611111 0.850000 +vt 0.611111 0.825000 +vt 0.629630 0.887500 +vt 0.648148 0.850000 +vt 0.666667 0.887500 +vt 0.648148 0.887500 +vt 0.629630 0.850000 +vt 0.592593 0.850000 +vt 0.592593 0.887500 +vt 0.666667 0.862500 +vt 0.675926 0.837500 +vt 0.675926 0.862500 +vt 0.666667 0.887500 +vt 0.675926 0.887500 +vt 0.694444 0.887500 +vt 0.703704 0.862500 +vt 0.703704 0.887500 +vt 0.685185 0.862500 +vt 0.694444 0.862500 +vt 0.685185 0.887500 +vt 0.675926 0.825000 +vt 0.685185 0.837500 +vt 0.703704 0.837500 +vt 0.694444 0.837500 +vt 0.694444 0.862500 +vt 0.685185 0.837500 +vt 0.694444 0.837500 +vt 0.694444 0.887500 +vt 0.685185 0.862500 +vt 0.703704 0.862500 +vt 0.703704 0.887500 +vt 0.666667 0.887500 +vt 0.675926 0.862500 +vt 0.675926 0.887500 +vt 0.685185 0.887500 +vt 0.675926 0.837500 +vt 0.685185 0.825000 +vt 0.703704 0.837500 +vt 0.666667 0.862500 +vt 0.962963 0.662500 +vt 0.814815 0.700000 +vt 0.814815 0.662500 +vt 0.962963 0.700000 +vt 0.814815 0.737500 +vt 0.962963 0.437500 +vt 0.814815 0.475000 +vt 0.814815 0.437500 +vt 0.962963 0.475000 +vt 0.814815 0.512500 +vt 0.962963 0.512500 +vt 0.814815 0.550000 +vt 0.962963 0.550000 +vt 0.814815 0.587500 +vt 0.937455 0.253064 +vt 0.962963 0.238801 +vt 0.962963 0.336199 +vt 0.962963 0.587500 +vt 0.814815 0.625000 +vt 0.962963 0.625000 +vt 0.988471 0.353064 +vt 0.988471 0.421936 +vt 0.937455 0.421935 +vt 0.814815 0.225000 +vt 0.740741 0.325000 +vt 0.740741 0.225000 +vt 0.740741 0.375000 +vt 0.814815 0.325000 +vt 0.814815 0.375000 +vt 0.814815 0.175000 +vt 0.740741 0.175000 +vt 0.851852 0.325000 +vt 0.851852 0.225000 +vt 0.703704 0.225000 +vt 0.703704 0.325000 +vt 0.925926 0.200000 +vt 0.916667 0.275000 +vt 0.916667 0.200000 +vt 0.861111 0.200000 +vt 0.851852 0.275000 +vt 0.851852 0.200000 +vt 0.916667 0.175000 +vt 0.907407 0.200000 +vt 0.907407 0.175000 +vt 0.898148 0.175000 +vt 0.888889 0.200000 +vt 0.888889 0.175000 +vt 0.879630 0.175000 +vt 0.870370 0.200000 +vt 0.870370 0.175000 +vt 0.861111 0.175000 +vt 0.851852 0.175000 +vt 0.925926 0.175000 +vt 0.898148 0.200000 +vt 0.888889 0.175000 +vt 0.879630 0.200000 +vt 0.898148 0.275000 +vt 0.888889 0.325000 +vt 0.888889 0.275000 +vt 0.907407 0.325000 +vt 0.907407 0.275000 +vt 0.888889 0.200000 +vt 0.879630 0.275000 +vt 0.861111 0.275000 +vt 0.870370 0.275000 +vt 0.870370 0.425000 +vt 0.861111 0.437500 +vt 0.861111 0.425000 +vt 0.898148 0.337500 +vt 0.898148 0.325000 +vt 0.851852 0.425000 +vt 0.925926 0.275000 +vt 0.916667 0.325000 +vt 0.888889 0.275000 +vt 0.879630 0.425000 +vt 0.435185 0.800000 +vt 0.425926 0.825000 +vt 0.425926 0.800000 +vt 0.398148 0.787500 +vt 0.388889 0.800000 +vt 0.388889 0.787500 +vt 0.398148 0.712500 +vt 0.416667 0.800000 +vt 0.407407 0.825000 +vt 0.407407 0.800000 +vt 0.435185 0.787500 +vt 0.425926 0.787500 +vt 0.407407 0.712500 +vt 0.407407 0.787500 +vt 0.444444 0.800000 +vt 0.435185 0.825000 +vt 0.416667 0.787500 +vt 0.398148 0.850000 +vt 0.398148 0.825000 +vt 0.416667 0.712500 +vt 0.391360 0.711298 +vt 0.389201 0.706250 +vt 0.391360 0.701202 +vt 0.388889 0.825000 +vt 0.425926 0.712500 +vt 0.416667 0.825000 +vt 0.398148 0.800000 +vt 0.435185 0.712500 +vt 0.444444 0.787500 +vt 0.390314 0.856394 +vt 0.398148 0.850287 +vt 0.405982 0.856394 +vt 0.416667 0.850000 +vt 0.444444 0.825000 +vt 0.435185 0.850000 +vt 0.388889 0.850000 +vt 0.407407 0.850000 +vt 0.425926 0.850000 +vt 0.435185 0.800000 +vt 0.425926 0.825000 +vt 0.425926 0.800000 +vt 0.398148 0.787500 +vt 0.388889 0.800000 +vt 0.388889 0.787500 +vt 0.398148 0.712500 +vt 0.416667 0.800000 +vt 0.407407 0.825000 +vt 0.407407 0.800000 +vt 0.435185 0.787500 +vt 0.425926 0.787500 +vt 0.407407 0.787500 +vt 0.444444 0.800000 +vt 0.435185 0.825000 +vt 0.444444 0.787500 +vt 0.407407 0.712500 +vt 0.416667 0.787500 +vt 0.398148 0.825000 +vt 0.407407 0.850000 +vt 0.398148 0.850000 +vt 0.425926 0.712500 +vt 0.389201 0.706250 +vt 0.391360 0.701202 +vt 0.397836 0.706250 +vt 0.388889 0.825000 +vt 0.435185 0.712500 +vt 0.416667 0.825000 +vt 0.398148 0.800000 +vt 0.389102 0.862500 +vt 0.393625 0.851924 +vt 0.402671 0.851924 +vt 0.425926 0.850000 +vt 0.416667 0.850000 +vt 0.444444 0.825000 +vt 0.435185 0.850000 +vt 0.388889 0.850000 +vt 0.490741 0.825000 +vt 0.712963 0.150000 +vt -0.000000 0.325000 +vt 0.444444 0.400000 +vt 0.000000 0.400000 +vt 0.648148 0.425000 +vt 0.611111 0.425000 +vt 0.935185 0.150000 +vt 0.740741 -0.000000 +vt 0.481481 0.000000 +vt 0.074074 0.800000 +vt 0.444444 0.775000 +vt 0.777778 0.775000 +vt 0.314815 1.000000 +vt 0.055556 0.700000 +vt 0.481481 0.800000 +vt 0.377360 0.715564 +vt 0.387925 0.750000 +vt 0.377360 0.784436 +vt 0.326344 0.784436 +vt 0.315778 0.750000 +vt 0.315778 0.850000 +vt 0.326344 0.815564 +vt 0.351852 0.801301 +vt 0.387925 0.850000 +vt 0.351852 0.898699 +vt 0.074074 0.700000 +vt 0.018519 0.700000 +vt 0.055556 0.875000 +vt 0.592593 0.850000 +vt 0.666667 0.850000 +vt 0.666667 0.837500 +vt 0.685185 0.825000 +vt 0.675926 0.825000 +vt 0.666667 0.837500 +vt 0.962963 0.737500 +vt 0.988471 0.253064 +vt 0.999037 0.287500 +vt 0.988471 0.321936 +vt 0.937455 0.321936 +vt 0.926890 0.287500 +vt 0.926889 0.387500 +vt 0.937455 0.353064 +vt 0.962963 0.338801 +vt 0.999036 0.387500 +vt 0.962963 0.436199 +vt 0.870370 0.437500 +vt 0.907407 0.337500 +vt 0.925926 0.325000 +vt 0.888889 0.425000 +vt 0.388889 0.712500 +vt 0.395677 0.701202 +vt 0.397836 0.706250 +vt 0.395677 0.711298 +vt 0.444444 0.712500 +vt 0.405982 0.868606 +vt 0.398148 0.874712 +vt 0.390314 0.868606 +vt 0.444444 0.850000 +vt 0.388889 0.712500 +vt 0.416667 0.712500 +vt 0.395677 0.701202 +vt 0.395677 0.711298 +vt 0.391360 0.711298 +vt 0.444444 0.712500 +vt 0.407194 0.862500 +vt 0.402671 0.873076 +vt 0.393625 0.873076 +vt 0.444444 0.850000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.9923 0.1240 0.0000 +vn 0.0000 0.2249 0.9744 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.9923 0.1240 0.0000 +vn -0.8740 0.1093 0.4734 +vn 0.8740 0.1093 0.4734 +vn 0.0000 0.1644 -0.9864 +vn 0.7960 0.0995 -0.5970 +vn -0.7960 0.0995 -0.5970 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.4472 0.8944 +vn 0.0000 -0.3827 -0.9239 +vn 0.8729 0.2182 -0.4364 +vn 0.0000 -0.9239 -0.3827 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9239 -0.3827 +vn 0.9701 0.2425 0.0000 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 0.4472 -0.8944 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 0.8944 0.4472 +vn 0.0000 -0.8944 -0.4472 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 -0.8944 0.4472 +vn -0.9774 0.2106 0.0204 +vn -0.0000 0.9954 0.0962 +vn 0.5000 0.0833 -0.8620 +vn 0.4887 0.1292 0.8628 +vn -0.4887 0.2921 -0.8221 +vn 0.5000 -0.0833 0.8620 +vn -0.5000 -0.0833 0.8620 +vn 0.4887 0.2921 -0.8221 +vn -0.4887 0.1292 0.8629 +vn -0.5000 0.0833 -0.8620 +vn 0.9774 0.2106 0.0204 +vn -0.0000 -0.9954 -0.0962 +vn -0.9774 0.2087 -0.0348 +vn 0.0000 0.9864 -0.1646 +vn 0.5000 -0.1426 -0.8542 +vn 0.4887 0.3481 0.8000 +vn -0.4887 0.0694 -0.8697 +vn 0.5000 0.1426 0.8542 +vn -0.5000 0.1426 0.8542 +vn 0.4887 0.0694 -0.8697 +vn -0.4887 0.3481 0.8000 +vn -0.5000 -0.1426 -0.8542 +vn 0.9774 0.2087 -0.0348 +vn 0.0000 -0.9864 0.1646 +vn 0.8729 0.2182 0.4364 +vn 0.4887 0.1292 0.8629 +vn -0.4887 0.1292 0.8628 +s off +f 458/746/102 526/747/102 510/748/102 +f 510/749/103 529/750/103 517/751/103 +f 529/752/104 509/753/104 517/754/104 +f 514/755/103 531/756/103 520/757/103 +f 471/758/103 476/759/103 472/760/103 +f 469/761/105 467/762/105 468/763/105 +f 465/764/106 470/765/106 466/766/106 +f 464/767/103 468/763/103 463/768/103 +f 490/769/107 493/770/107 489/771/107 +f 489/772/108 491/773/108 487/774/108 +f 474/775/106 477/776/106 473/777/106 +f 476/759/109 477/776/109 478/778/109 +f 472/779/103 479/780/103 464/781/103 +f 466/782/106 482/783/106 474/784/106 +f 463/785/103 485/786/103 471/787/103 +f 473/788/106 484/789/106 465/790/106 +f 485/786/102 484/789/102 486/791/102 +f 479/780/104 482/783/104 480/792/104 +f 479/780/110 470/765/110 469/761/110 +f 464/767/103 479/793/103 469/761/103 +f 466/766/106 470/765/106 480/794/106 +f 474/784/106 482/783/106 478/795/106 +f 478/796/111 481/797/111 476/798/111 +f 472/779/103 476/799/103 481/797/103 +f 473/777/106 477/776/106 486/800/106 +f 485/786/112 477/776/112 475/801/112 +f 471/758/103 485/802/103 475/801/103 +f 465/790/106 484/789/106 467/803/106 +f 467/762/113 483/804/113 468/763/113 +f 463/785/103 468/805/103 483/804/103 +f 487/806/114 496/807/114 488/808/114 +f 489/772/115 493/770/115 492/809/115 +f 487/774/116 491/773/116 495/810/116 +f 488/811/117 499/812/117 497/813/117 +f 490/814/117 501/815/117 500/816/117 +f 488/808/118 496/807/118 498/817/118 +f 490/769/119 500/816/119 494/818/119 +f 502/819/109 462/820/109 455/821/109 +f 456/822/102 502/819/102 455/821/102 +f 457/823/105 503/824/105 456/822/105 +f 462/825/104 504/826/104 457/823/104 +f 506/827/102 528/828/102 514/829/102 +f 527/830/104 461/831/104 513/832/104 +f 530/833/103 513/834/103 519/835/103 +f 526/747/105 523/836/105 527/830/105 +f 524/837/105 529/752/105 528/828/105 +f 518/838/103 533/839/103 519/840/103 +f 520/841/103 535/842/103 521/843/103 +f 537/844/104 512/845/104 460/846/104 +f 541/847/103 518/848/103 512/849/103 +f 521/850/103 542/851/103 515/852/103 +f 539/853/104 516/854/104 508/855/104 +f 511/856/102 536/857/102 459/858/102 +f 543/859/103 511/860/103 516/861/103 +f 515/862/102 538/863/102 507/864/102 +f 532/865/103 518/848/103 544/866/103 +f 521/850/103 535/867/103 545/868/103 +f 520/757/103 531/756/103 534/869/103 +f 519/835/103 533/870/103 530/833/103 +f 532/871/111 552/872/111 548/873/111 +f 533/839/110 546/874/110 530/833/110 +f 535/842/112 553/875/112 545/868/112 +f 532/876/104 549/877/104 533/839/104 +f 534/878/113 547/879/113 550/880/113 +f 534/878/102 551/881/102 535/842/102 +f 526/882/105 527/883/105 546/874/105 +f 542/884/109 539/853/109 538/863/109 +f 536/857/109 541/885/109 537/844/109 +f 543/859/109 553/875/109 552/872/109 +f 550/880/106 557/886/106 551/881/106 +f 548/887/106 555/888/106 549/877/106 +f 549/877/120 555/889/120 546/874/120 +f 550/880/120 547/879/120 556/890/120 +f 546/874/120 556/890/120 547/879/120 +f 553/875/121 551/881/121 557/891/121 +f 552/872/121 554/892/121 548/873/121 +f 553/875/121 554/892/121 552/872/121 +f 561/893/104 460/894/104 461/895/104 +f 507/896/102 562/897/102 506/898/102 +f 459/899/102 558/900/102 458/901/102 +f 565/902/104 508/903/104 509/904/104 +f 559/905/103 561/893/103 558/900/103 +f 562/897/103 564/906/103 565/902/103 +f 522/907/122 561/893/122 523/836/122 +f 562/897/122 525/908/122 524/837/122 +f 539/853/123 563/909/123 538/863/123 +f 560/910/123 536/857/123 537/844/123 +f 459/858/102 536/857/102 559/911/102 +f 507/864/102 538/863/102 563/912/102 +f 508/855/104 564/913/104 539/853/104 +f 460/846/104 560/914/104 537/844/104 +f 461/831/104 523/836/104 561/915/104 +f 458/746/102 558/916/102 522/907/102 +f 509/753/104 525/908/104 565/917/104 +f 506/827/102 562/918/102 524/837/102 +f 455/919/103 457/823/103 456/822/103 +f 568/920/105 567/921/105 566/922/105 +f 568/923/103 571/924/103 569/925/103 +f 575/926/104 567/927/104 569/928/104 +f 574/929/106 566/930/106 567/931/106 +f 574/929/109 572/932/109 573/933/109 +f 570/934/123 575/926/123 571/924/123 +f 572/932/102 570/935/102 568/920/102 +f 608/936/102 612/937/102 609/938/102 +f 615/939/124 618/940/124 614/941/124 +f 579/942/125 580/943/125 578/944/125 +f 613/945/126 611/946/126 623/947/126 +f 595/948/103 597/949/103 599/950/103 +f 581/951/127 582/952/127 580/943/127 +f 602/953/105 604/954/105 603/955/105 +f 598/956/128 577/957/128 594/958/128 +f 583/959/129 584/960/129 582/961/129 +f 600/962/102 605/963/102 602/953/102 +f 597/964/109 577/957/109 596/965/109 +f 585/966/130 586/967/130 584/960/130 +f 601/968/109 607/969/109 600/962/109 +f 612/937/103 614/970/103 613/971/103 +f 587/972/131 588/973/131 586/967/131 +f 603/974/104 606/975/104 601/968/104 +f 594/958/105 599/976/105 598/977/105 +f 589/978/132 590/979/132 588/973/132 +f 585/980/104 583/981/104 591/982/104 +f 576/983/102 594/958/102 577/957/102 +f 591/984/133 592/985/133 590/979/133 +f 610/986/106 609/938/106 611/946/106 +f 611/946/134 614/987/134 610/986/134 +f 593/988/135 578/944/135 592/985/135 +f 584/989/102 588/990/102 592/991/102 +f 616/992/109 619/993/109 617/994/109 +f 608/936/106 616/995/106 617/994/106 +f 608/936/102 619/993/102 615/996/102 +f 610/986/111 618/997/111 616/998/111 +f 620/999/105 623/1000/105 621/1001/105 +f 613/1002/136 622/1003/136 612/1004/136 +f 609/938/106 621/1005/106 611/946/106 +f 609/938/102 622/1003/102 620/999/102 +f 626/1006/104 624/1007/104 625/1008/104 +f 642/1009/103 640/1010/103 641/1011/103 +f 625/1008/109 630/1012/109 631/1013/109 +f 626/1006/105 628/1014/105 627/1015/105 +f 625/1008/137 629/1016/137 626/1006/137 +f 627/1015/103 630/1017/103 624/1007/103 +f 638/1018/103 636/1019/103 637/1020/103 +f 634/1021/105 639/1022/105 635/1023/105 +f 633/1024/109 637/1025/109 632/1026/109 +f 635/1023/104 638/1018/104 633/1024/104 +f 632/1027/102 636/1028/102 634/1021/102 +f 644/1029/106 646/1030/106 645/1031/106 +f 646/1030/104 643/1032/104 642/1009/104 +f 644/1033/102 641/1034/102 640/1035/102 +f 647/1036/105 640/1035/105 643/1032/105 +f 645/1037/109 642/1009/109 641/1038/109 +f 654/1039/102 656/1040/102 652/1041/102 +f 650/1042/102 652/1041/102 648/1043/102 +f 651/1044/106 654/1045/106 650/1046/106 +f 651/1044/104 653/1047/104 655/1048/104 +f 648/1043/138 653/1047/138 649/1049/138 +f 658/1050/109 657/1051/109 656/1040/109 +f 655/1048/139 658/1052/139 654/1045/139 +f 655/1048/104 657/1051/104 659/1053/104 +f 652/1041/138 657/1051/138 653/1047/138 +f 666/1054/102 668/1055/102 670/1056/102 +f 662/1057/102 664/1058/102 666/1054/102 +f 662/1057/106 667/1059/106 663/1060/106 +f 663/1061/104 665/1062/104 661/1063/104 +f 661/1063/140 664/1058/140 660/1064/140 +f 669/1065/105 670/1066/105 668/1055/105 +f 666/1054/141 671/1067/141 667/1059/141 +f 667/1068/104 669/1065/104 665/1062/104 +f 665/1062/140 668/1055/140 664/1058/140 +f 673/1069/125 674/1070/125 672/1071/125 +f 675/1072/127 676/1073/127 674/1070/127 +f 677/1074/129 678/1075/129 676/1076/129 +f 679/1077/130 680/1078/130 678/1075/130 +f 681/1079/131 682/1080/131 680/1078/131 +f 683/1081/132 684/1082/132 682/1080/132 +f 679/1083/104 677/1084/104 685/1085/104 +f 685/1086/133 686/1087/133 684/1082/133 +f 687/1088/135 672/1071/135 686/1087/135 +f 678/1089/102 682/1090/102 686/1091/102 +f 694/1092/109 692/1093/109 693/1094/109 +f 690/1095/103 695/1096/103 691/1097/103 +f 689/1098/106 693/1094/106 688/1099/106 +f 691/1100/104 694/1092/104 689/1101/104 +f 688/1102/102 692/1093/102 690/1103/102 +f 708/1104/122 719/1105/122 711/1106/122 +f 705/1107/102 712/1108/102 704/1109/102 +f 703/1110/104 710/1111/104 701/1112/104 +f 700/1113/102 708/1114/102 702/1115/102 +f 699/1116/104 706/1117/104 697/1118/104 +f 696/1119/102 704/1109/102 698/1120/102 +f 702/1121/105 711/1106/105 703/1110/105 +f 701/1112/109 709/1122/109 700/1113/109 +f 698/1123/105 707/1124/105 699/1116/105 +f 697/1118/109 705/1107/109 696/1119/109 +f 717/1125/102 724/1126/102 716/1127/102 +f 719/1105/104 726/1128/104 718/1129/104 +f 710/1111/121 717/1125/121 709/1122/121 +f 704/1130/122 715/1131/122 707/1124/122 +f 706/1117/121 713/1132/121 705/1107/121 +f 710/1111/104 719/1105/104 718/1129/104 +f 709/1122/102 716/1127/102 708/1114/102 +f 706/1117/104 715/1131/104 714/1133/104 +f 722/1134/103 720/1135/103 721/1136/103 +f 726/1128/103 724/1137/103 725/1138/103 +f 715/1131/104 722/1134/104 714/1133/104 +f 713/1132/102 720/1139/102 712/1108/102 +f 716/1140/105 727/1141/105 719/1105/105 +f 718/1129/109 725/1138/109 717/1125/109 +f 712/1142/105 723/1143/105 715/1131/105 +f 714/1133/109 721/1136/109 713/1132/109 +f 745/1144/142 748/1145/142 744/1146/142 +f 732/1147/143 729/1148/143 730/1149/143 +f 730/1149/144 733/1150/144 732/1147/144 +f 743/1151/145 750/1152/145 742/1153/145 +f 740/1154/143 744/1146/143 738/1155/143 +f 732/1147/104 735/1156/104 734/1157/104 +f 729/1158/146 746/1159/146 745/1144/146 +f 740/1154/143 729/1158/143 745/1144/143 +f 735/1156/147 736/1160/147 734/1157/147 +f 750/1152/104 757/1161/104 751/1162/104 +f 738/1155/143 743/1151/143 736/1160/143 +f 737/1163/148 738/1155/148 736/1160/148 +f 739/1164/143 737/1165/143 735/1166/143 +f 729/1148/149 751/1162/149 747/1167/149 +f 739/1168/102 740/1154/102 738/1155/102 +f 743/1151/150 748/1145/150 749/1169/150 +f 734/1157/143 728/1170/143 732/1147/143 +f 741/1171/151 730/1172/151 740/1154/151 +f 734/1157/143 743/1151/143 742/1153/143 +f 742/1153/152 751/1162/152 728/1170/152 +f 755/1173/153 754/1174/153 752/1175/153 +f 748/1145/148 755/1176/148 749/1169/148 +f 747/1177/151 752/1178/151 746/1159/151 +f 747/1167/144 757/1161/144 753/1179/144 +f 750/1152/147 755/1176/147 756/1180/147 +f 748/1145/102 752/1178/102 754/1181/102 +f 775/1182/154 778/1183/154 774/1184/154 +f 762/1185/155 759/1186/155 760/1187/155 +f 760/1187/156 763/1188/156 762/1185/156 +f 773/1189/157 780/1190/157 772/1191/157 +f 770/1192/155 774/1184/155 768/1193/155 +f 763/1188/104 764/1194/104 762/1185/104 +f 759/1195/158 776/1196/158 775/1182/158 +f 760/1197/155 775/1182/155 770/1192/155 +f 765/1198/159 766/1199/159 764/1194/159 +f 781/1200/104 786/1201/104 787/1202/104 +f 768/1193/155 773/1189/155 766/1199/155 +f 766/1199/160 769/1203/160 768/1193/160 +f 767/1204/155 765/1205/155 761/1206/155 +f 759/1186/161 781/1200/161 777/1207/161 +f 768/1193/102 771/1208/102 770/1192/102 +f 773/1189/162 778/1183/162 779/1209/162 +f 762/1185/155 772/1191/155 758/1210/155 +f 771/1208/163 760/1197/163 770/1192/163 +f 764/1194/155 773/1189/155 772/1191/155 +f 758/1210/164 780/1190/164 781/1200/164 +f 785/1211/165 784/1212/165 782/1213/165 +f 779/1209/160 784/1214/160 785/1215/160 +f 777/1216/163 782/1217/163 776/1196/163 +f 777/1207/156 787/1202/156 783/1218/156 +f 779/1209/159 786/1201/159 780/1190/159 +f 776/1196/102 784/1214/102 778/1183/102 +f 618/997/166 610/986/166 614/987/166 +f 623/947/110 611/946/110 621/1219/110 +f 458/746/102 522/907/102 526/747/102 +f 510/749/103 526/882/103 529/750/103 +f 529/752/104 525/908/104 509/753/104 +f 514/755/103 528/1220/103 531/756/103 +f 471/758/103 475/801/103 476/759/103 +f 469/761/105 470/765/105 467/762/105 +f 465/764/106 467/762/106 470/765/106 +f 464/767/103 469/761/103 468/763/103 +f 490/769/107 494/818/107 493/770/107 +f 489/772/108 492/809/108 491/773/108 +f 474/775/106 478/778/106 477/776/106 +f 476/759/109 475/801/109 477/776/109 +f 472/779/103 481/797/103 479/780/103 +f 466/782/106 480/792/106 482/783/106 +f 463/785/103 483/804/103 485/786/103 +f 473/788/106 486/791/106 484/789/106 +f 485/786/102 483/804/102 484/789/102 +f 479/780/104 481/797/104 482/783/104 +f 479/780/110 480/792/110 470/765/110 +f 478/796/111 482/783/111 481/797/111 +f 485/786/112 486/791/112 477/776/112 +f 467/762/113 484/789/113 483/804/113 +f 487/806/114 495/810/114 496/807/114 +f 488/811/117 498/817/117 499/812/117 +f 490/814/117 497/1221/117 501/815/117 +f 502/819/109 505/1222/109 462/820/109 +f 456/822/102 503/824/102 502/819/102 +f 457/823/105 504/826/105 503/824/105 +f 462/825/104 505/1223/104 504/826/104 +f 506/827/102 524/837/102 528/828/102 +f 527/830/104 523/836/104 461/831/104 +f 530/833/103 527/883/103 513/834/103 +f 526/747/105 522/907/105 523/836/105 +f 524/837/105 525/908/105 529/752/105 +f 518/838/103 532/876/103 533/839/103 +f 520/841/103 534/878/103 535/842/103 +f 537/844/104 541/885/104 512/845/104 +f 541/847/103 544/866/103 518/848/103 +f 521/850/103 545/868/103 542/851/103 +f 539/853/104 543/1224/104 516/854/104 +f 511/856/102 540/1225/102 536/857/102 +f 543/859/103 540/1226/103 511/860/103 +f 515/862/102 542/884/102 538/863/102 +f 532/871/111 544/866/111 552/872/111 +f 533/839/110 549/877/110 546/874/110 +f 535/842/112 551/881/112 553/875/112 +f 532/876/104 548/887/104 549/877/104 +f 534/878/113 531/756/113 547/879/113 +f 534/878/102 550/880/102 551/881/102 +f 527/883/105 530/833/105 546/874/105 +f 546/874/105 547/879/105 529/750/105 +f 547/879/105 531/756/105 528/1220/105 +f 528/1220/105 529/750/105 547/879/105 +f 529/750/105 526/882/105 546/874/105 +f 542/884/109 543/1224/109 539/853/109 +f 536/857/109 540/1225/109 541/885/109 +f 544/866/109 541/847/109 552/872/109 +f 541/847/109 540/1226/109 552/872/109 +f 543/859/109 542/851/109 553/875/109 +f 542/851/109 545/868/109 553/875/109 +f 552/872/109 540/1226/109 543/859/109 +f 550/880/106 556/1227/106 557/886/106 +f 548/887/106 554/1228/106 555/888/106 +f 546/874/120 555/889/120 556/890/120 +f 553/875/121 557/891/121 554/892/121 +f 561/893/104 560/910/104 460/894/104 +f 507/896/102 563/909/102 562/897/102 +f 459/899/102 559/905/102 558/900/102 +f 565/902/104 564/906/104 508/903/104 +f 559/905/103 560/910/103 561/893/103 +f 562/897/103 563/909/103 564/906/103 +f 522/907/122 558/900/122 561/893/122 +f 562/897/122 565/902/122 525/908/122 +f 539/853/123 564/906/123 563/909/123 +f 560/910/123 559/905/123 536/857/123 +f 455/919/103 462/1229/103 457/823/103 +f 568/920/105 569/1230/105 567/921/105 +f 568/923/103 570/934/103 571/924/103 +f 569/928/104 571/1231/104 575/926/104 +f 575/926/104 574/929/104 567/927/104 +f 574/929/106 573/933/106 566/930/106 +f 574/929/109 575/926/109 572/932/109 +f 570/934/123 572/932/123 575/926/123 +f 568/920/102 566/922/102 572/932/102 +f 566/922/102 573/933/102 572/932/102 +f 608/936/102 615/996/102 612/937/102 +f 615/939/124 619/993/124 618/940/124 +f 579/942/125 581/951/125 580/943/125 +f 595/948/103 576/983/103 597/949/103 +f 581/951/127 583/1232/127 582/952/127 +f 602/953/105 605/963/105 604/954/105 +f 598/956/128 596/1233/128 577/957/128 +f 583/959/129 585/966/129 584/960/129 +f 600/962/102 607/969/102 605/963/102 +f 597/964/109 576/983/109 577/957/109 +f 585/966/130 587/972/130 586/967/130 +f 601/968/109 606/975/109 607/969/109 +f 612/937/103 615/996/103 614/970/103 +f 587/972/131 589/978/131 588/973/131 +f 603/974/104 604/1234/104 606/975/104 +f 594/958/105 595/948/105 599/976/105 +f 589/978/132 591/984/132 590/979/132 +f 583/981/104 581/1235/104 579/1236/104 +f 579/1236/104 593/1237/104 583/981/104 +f 593/1237/104 591/982/104 583/981/104 +f 591/982/104 589/1238/104 587/1239/104 +f 587/1239/104 585/980/104 591/982/104 +f 576/983/102 595/948/102 594/958/102 +f 591/984/133 593/988/133 592/985/133 +f 610/986/106 608/936/106 609/938/106 +f 611/946/134 613/945/134 614/987/134 +f 593/988/135 579/942/135 578/944/135 +f 592/991/102 578/1240/102 580/1241/102 +f 580/1241/102 582/1242/102 584/989/102 +f 584/989/102 586/1243/102 588/990/102 +f 588/990/102 590/1244/102 592/991/102 +f 592/991/102 580/1241/102 584/989/102 +f 616/992/109 618/940/109 619/993/109 +f 608/936/106 610/986/106 616/995/106 +f 608/936/102 617/994/102 619/993/102 +f 620/999/105 622/1003/105 623/1000/105 +f 613/1002/136 623/1000/136 622/1003/136 +f 609/938/106 620/999/106 621/1005/106 +f 609/938/102 612/937/102 622/1003/102 +f 626/1006/104 627/1015/104 624/1007/104 +f 642/1009/103 643/1032/103 640/1010/103 +f 625/1008/109 624/1007/109 630/1012/109 +f 626/1006/105 629/1245/105 628/1014/105 +f 625/1008/137 631/1246/137 629/1016/137 +f 627/1015/103 628/1247/103 630/1017/103 +f 638/1018/103 639/1022/103 636/1019/103 +f 634/1021/105 636/1028/105 639/1022/105 +f 633/1024/109 638/1018/109 637/1025/109 +f 635/1023/104 639/1022/104 638/1018/104 +f 632/1027/102 637/1248/102 636/1028/102 +f 644/1029/106 647/1036/106 646/1030/106 +f 646/1030/104 647/1036/104 643/1032/104 +f 644/1033/102 645/1249/102 641/1034/102 +f 647/1036/105 644/1033/105 640/1035/105 +f 645/1037/109 646/1030/109 642/1009/109 +f 654/1039/102 658/1250/102 656/1040/102 +f 650/1042/102 654/1039/102 652/1041/102 +f 651/1044/106 655/1048/106 654/1045/106 +f 651/1044/104 649/1049/104 653/1047/104 +f 648/1043/138 652/1041/138 653/1047/138 +f 658/1050/109 659/1251/109 657/1051/109 +f 655/1048/139 659/1053/139 658/1052/139 +f 655/1048/104 653/1047/104 657/1051/104 +f 652/1041/138 656/1040/138 657/1051/138 +f 666/1054/102 664/1058/102 668/1055/102 +f 662/1057/102 660/1064/102 664/1058/102 +f 662/1057/106 666/1054/106 667/1059/106 +f 663/1061/104 667/1068/104 665/1062/104 +f 661/1063/140 665/1062/140 664/1058/140 +f 669/1065/105 671/1252/105 670/1066/105 +f 666/1054/141 670/1056/141 671/1067/141 +f 667/1068/104 671/1253/104 669/1065/104 +f 665/1062/140 669/1065/140 668/1055/140 +f 673/1069/125 675/1072/125 674/1070/125 +f 675/1072/127 677/1254/127 676/1073/127 +f 677/1074/129 679/1077/129 678/1075/129 +f 679/1077/130 681/1079/130 680/1078/130 +f 681/1079/131 683/1081/131 682/1080/131 +f 683/1081/132 685/1086/132 684/1082/132 +f 677/1084/104 675/1255/104 673/1256/104 +f 673/1256/104 687/1257/104 677/1084/104 +f 687/1257/104 685/1085/104 677/1084/104 +f 685/1085/104 683/1258/104 681/1259/104 +f 681/1259/104 679/1083/104 685/1085/104 +f 685/1086/133 687/1088/133 686/1087/133 +f 687/1088/135 673/1069/135 672/1071/135 +f 686/1091/102 672/1260/102 674/1261/102 +f 674/1261/102 676/1262/102 678/1089/102 +f 678/1089/102 680/1263/102 682/1090/102 +f 682/1090/102 684/1264/102 686/1091/102 +f 686/1091/102 674/1261/102 678/1089/102 +f 694/1092/109 695/1096/109 692/1093/109 +f 690/1095/103 692/1093/103 695/1096/103 +f 689/1098/106 694/1092/106 693/1094/106 +f 691/1100/104 695/1096/104 694/1092/104 +f 688/1102/102 693/1094/102 692/1093/102 +f 708/1104/122 716/1140/122 719/1105/122 +f 705/1107/102 713/1132/102 712/1108/102 +f 703/1110/104 711/1106/104 710/1111/104 +f 700/1113/102 709/1122/102 708/1114/102 +f 699/1116/104 707/1124/104 706/1117/104 +f 696/1119/102 705/1107/102 704/1109/102 +f 702/1121/105 708/1104/105 711/1106/105 +f 701/1112/109 710/1111/109 709/1122/109 +f 698/1123/105 704/1130/105 707/1124/105 +f 697/1118/109 706/1117/109 705/1107/109 +f 717/1125/102 725/1138/102 724/1126/102 +f 719/1105/104 727/1141/104 726/1128/104 +f 710/1111/121 718/1129/121 717/1125/121 +f 704/1130/122 712/1142/122 715/1131/122 +f 706/1117/121 714/1133/121 713/1132/121 +f 710/1111/104 711/1106/104 719/1105/104 +f 709/1122/102 717/1125/102 716/1127/102 +f 706/1117/104 707/1124/104 715/1131/104 +f 722/1134/103 723/1265/103 720/1135/103 +f 726/1128/103 727/1266/103 724/1137/103 +f 715/1131/104 723/1143/104 722/1134/104 +f 713/1132/102 721/1136/102 720/1139/102 +f 716/1140/105 724/1267/105 727/1141/105 +f 718/1129/109 726/1128/109 725/1138/109 +f 712/1142/105 720/1268/105 723/1143/105 +f 714/1133/109 722/1134/109 721/1136/109 +f 745/1144/142 746/1159/142 748/1145/142 +f 732/1147/143 728/1170/143 729/1148/143 +f 730/1149/144 731/1269/144 733/1150/144 +f 743/1151/167 749/1169/167 750/1152/167 +f 740/1154/143 745/1144/143 744/1146/143 +f 732/1147/104 733/1150/104 735/1156/104 +f 729/1158/146 747/1177/146 746/1159/146 +f 740/1154/143 730/1172/143 729/1158/143 +f 735/1156/147 737/1163/147 736/1160/147 +f 750/1152/104 756/1180/104 757/1161/104 +f 738/1155/143 744/1146/143 743/1151/143 +f 737/1163/148 739/1168/148 738/1155/148 +f 735/1166/143 733/1270/143 739/1164/143 +f 733/1270/143 731/1271/143 739/1164/143 +f 731/1271/143 741/1272/143 739/1164/143 +f 729/1148/149 728/1170/149 751/1162/149 +f 739/1168/102 741/1171/102 740/1154/102 +f 743/1151/168 744/1146/168 748/1145/168 +f 734/1157/143 742/1153/143 728/1170/143 +f 741/1171/151 731/1273/151 730/1172/151 +f 734/1157/143 736/1160/143 743/1151/143 +f 742/1153/152 750/1152/152 751/1162/152 +f 752/1175/153 753/1274/153 755/1173/153 +f 753/1274/153 757/1275/153 755/1173/153 +f 757/1275/153 756/1276/153 755/1173/153 +f 748/1145/148 754/1181/148 755/1176/148 +f 747/1177/151 753/1277/151 752/1178/151 +f 747/1167/144 751/1162/144 757/1161/144 +f 750/1152/147 749/1169/147 755/1176/147 +f 748/1145/102 746/1159/102 752/1178/102 +f 775/1182/154 776/1196/154 778/1183/154 +f 762/1185/155 758/1210/155 759/1186/155 +f 760/1187/156 761/1278/156 763/1188/156 +f 773/1189/157 779/1209/157 780/1190/157 +f 770/1192/155 775/1182/155 774/1184/155 +f 763/1188/104 765/1198/104 764/1194/104 +f 759/1195/158 777/1216/158 776/1196/158 +f 760/1197/155 759/1195/155 775/1182/155 +f 765/1198/159 767/1279/159 766/1199/159 +f 781/1200/104 780/1190/104 786/1201/104 +f 768/1193/155 774/1184/155 773/1189/155 +f 766/1199/160 767/1279/160 769/1203/160 +f 765/1205/155 763/1280/155 761/1206/155 +f 761/1206/155 771/1281/155 769/1282/155 +f 769/1282/155 767/1204/155 761/1206/155 +f 759/1186/161 758/1210/161 781/1200/161 +f 768/1193/102 769/1203/102 771/1208/102 +f 773/1189/162 774/1184/162 778/1183/162 +f 762/1185/155 764/1194/155 772/1191/155 +f 771/1208/163 761/1283/163 760/1197/163 +f 764/1194/155 766/1199/155 773/1189/155 +f 758/1210/164 772/1191/164 780/1190/164 +f 782/1213/165 783/1284/165 787/1285/165 +f 787/1285/165 786/1286/165 782/1213/165 +f 786/1286/165 785/1211/165 782/1213/165 +f 779/1209/160 778/1183/160 784/1214/160 +f 777/1216/163 783/1287/163 782/1217/163 +f 777/1207/156 781/1200/156 787/1202/156 +f 779/1209/159 785/1215/159 786/1201/159 +f 776/1196/102 782/1217/102 784/1214/102 diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_chest.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..4da3b0b03d638b82fbb42b3cf81958d0e248a33c GIT binary patch literal 1421 zcmV;81#zi;C<6vw{|Ja!0>?IvfjJ9=wz%eh-&94=d1phGnWhc4Z2 z(bIBUm*RS}ZwQKZyZ#7ni~1jUY_vFY3IiE#=M9n^k)}k+A}!J42M`?55=ran{ooU+ zFxX}h@><7TN6d0hj)Ie}JK$-C7noz%H$!iDJ(Kv7d6QTJuVIei1?Ctd>n&W9^(Kad zeSvkvImF?_8r8#wYYq+o3w8j%-h%!JOc$Kg3`))s@+oMidXAg$o~j(veG$a)iP z$TjPV)caS&0iwq(>Q>;}pyN3QFK%6SN=4m%O+mO-XxJ?XD$R3^UPg(_&)xwq?cK;k zRR4x7Y8R2E9@S@*-?a&eU*zR~w{^mGqr`&g41xg5%*BZWuVbP9d+oX!18g} zA!&2L4<#(1Pf=pgbS^>!f2?ivrjmUwy!M>4nv;;q*oe8yQJ&$D9e7^;q*ZJENA@}N zOS|)Ja{}z9cgo7TWI}10EQ!F1pI!Is&@kON>*3*{RRgD|r_toWmWa;*dl__i%JBko3}=$R&axq+)p-qb3@YV2LaE5*w<_d5ZD&ojp*Q#_ISU100Ymj+ipZ^4 zrkbYL!f@4GJQrr++u^gAnTGs_5!g2X97ZJu~npDv>;!_UBAhx3#`X1U%dkoQRhyMX`rdYwcn~*oNrviLYSMwV6v{hK$=Zp z!V$dwK`8Pj(J@9qYAVX^W|!{r5a4Ces1P=%gJkh{Z6byV=M#$ZL9+0D5`jJE;K{G% z``v_LYS=`PPAZhCUR8Ur*XkyWRc%Hy9X7PF@?qaTJ!%)a5d7viASdxQMIl zKK>qr7ZCl+pHTZF)p5mo4%yz|H0*bS|H`9IU8dWsRT&4k3mV1%_ARPkcb99#Rm%rC zb?Y(R-rzLMb!v^n7{DNDkj#xVzNqv3s|u3)P!wbwYj0vpil;ghC z?HXRg9K)!M$u%vp09V`9VUp35*$(6hb;xZ^kg?6t#N318 zAv*#QgkEN|8Gy}BR|ZGLLt4a=lAnphvp_YuWxn}!OQb9Wi5xQfV_GTBzxi5i&=P?Csk(RImWS?}*xi76p5E%CDvHKEY7iWb|L znWa#)@kn#_9OP=G>=&=985$)&Akl`n3aw=0#sG#~FMp0yUYv_&h71g(1abk;c&a|1 zrSqRL_-#cZuC`y63@}BI@<@K8fl89&OA@(Z&MxOWme@ z06?>T%OsdNJAb_of*@&2Itr)ho`?oDmrZPK)=$e_ObdAc*D!cIn;{4SdTiN-;~+@3=rpZ1;grGpB8SoT z!c$^gG!9>VXO(5c5dh@Hl0%6zS@wH>e{URca&oexrAYYnzSJ<^_xbkrmViAhtN@fU zE#LRq^Sta@n#c=;{6p&cuMt7Hr|tHiL4QVPU&ZRCv5F1CUcRqv&aG)gCn4Itrzl&b zY__s#&wnwu%l>+CaiPpT2!eq0K{7=D3z)aWs)(Yf)HWWz+)i=+_*;JRmA>8tL_+BJ zrK1P{5YjVa_iy~s*j_eiG-*V}G|WAsELZxGYL6M2K=i0Gh+2oeC`{x70w zJ>p+pR(egGde{!R1?0LV1UM36VLmK82#rLRdl~K(VjRTtfco*%?8gVr%{as;J`h8U#glUyQZ-_Yi$a=kQWJm#?=QT1< zZ#42iWZ&TIBTd-0@B6I#n)oY}7QKzRmVA(T5E_Xr_cA&ok{A430%LD9@;|)8buM1y RuZ{o!002ovPDHLkV1gAToa_Jq delta 1343 zcmV-F1;G093gQZoG=CXML_t(|ob6h_i{nNV{@$Md0Ch{cy~Y;Y6>37RbmuFUZ4Z)S zRVR=ty`=wOtE=teiYxax$ZogQ!4U#mWWjcm?Lq;ekz^w8jA^_NFuZqQDfq#9-IMF8)S6L`CEA6i6 zQpSlsvFW)DbS+~9Y*kvM_NFM3(T1Et(-I4CwOt)18Eu*ENS;uK+|~ve+Z=7oJt`lv zClEpCWj>z+*zR;ya8f>`L#!zMnMk|}Rg+s4n_s^~szQ(`AagjTmErR1uha&8@hbu* zyFS$~kqIki#eWaC+rIy9!OI!Q&o%=K0fE}4)kUyW=6^8*nA7W*8}PE4%vu_e<3KC1 z#h?v-xCOnKsoJT4${Oh;#jwSdnk0aVL~M(0N+!>Gf4fOd38`s`pN*&qrKVN3*w)M} zgQAURnzI+6P$N~pcwNoVB>e%YHpEqEB_HPl7<02YQh$4KE}9uLFp?6;B|!d6eZI)% zzhLl(nnYY}zbYACZ8bs{>UdsCMOW6RUwO4VXKw+KR{&O&f9d?{OJkPWPALdYcFFXf zqR8e#zUu7c&vG9E0IVrBM+5pz8b!)6VPH+*rP|F8x1g7=0U*Efs)lKqsy4mNHpT@+ z8Hq19pnsQ=v)2fWR@0IfT2$FJJ<3r)w6l1TvXsdvG%dMax1}g;*7W(@T0D`2THiUW z!Ya#p^^^qwIP15e*IY}0nbU1|^g1;ygNc=)KaGfbJ-bh%I)GNtkYEO4Kaik%7kL)rDX3kIV!+$VL+tQBGY5FIkK^)4}Ih+IfHmw%n ztPwe7*Y5?IZW6Y+Ozn*{LPXYltJU(?kmu<#8WGXc6PcKaq^k@WHW{t@h%U5?_+yjd zOhl+#FK^p4tvWJjD1V;r4C4rV&gyR*p|g+H*@^Tyn-~3&x{*1UfcQk@&@hU!1T(e_ z5P$7SO@CU)z&PG*s{;NrGWr*tCe}5Kp3mn9!;qd^w&5fU(=9qnt4%m(u)fG~yu0v> z7?+K6!3h8q#gb!*GkNy=`1oiXaCUaKr=`?K5CnXGe^0;x7FJae1Oa=VmtQLrd4q_* z%Uu5*Vkq~t+x`>C=*PjA-o`=n5gIdmBgc#pw&z~Dbb{BN!?CS(%+>roaY$+et?nVCo-iwvPlNAEd{VTtf zco*%?8gVr%{as;J`h8s-g=tm6V2C*T$Y!%?WdWY&wKC6OH1b5`(BSMNZ8+F=5Cp9I zn)oY}7QKzRmVA(T6dH*w_cD4TQWX4L0^?vb@;|K8awAPKBklkI002ovPDHLkV1m68 Bl=lDt diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_leg.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..d527002d99ed423f46d40860eca5e486745d732e GIT binary patch literal 286 zcmV+(0pb3MP)dv*MhcsZ;O{2L@`Tg8g0g1sr%stK6d zpvJ%oli_=i2EC|*de;~@d|3T* kF? Date: Mon, 4 Sep 2023 16:59:45 -0400 Subject: [PATCH 010/207] Converted burst fire gun system to use NBT --- .../com/hbm/items/weapon/ItemGunBase.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 0bd0611f8..385801c3a 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -56,7 +56,6 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu @SideOnly(Side.CLIENT) public boolean m2;// = false; - public int burstDuration = 0; public ItemGunBase(GunConfiguration config) { mainConfig = config; this.setMaxStackSize(1); @@ -133,7 +132,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu setIsMouseDown(stack, false); } - if(burstDuration > 0) { + if(getBurstDuration(stack) > 0) { if(altConfig == null) { if (world.getWorldTime() % mainConfig.firingDuration == 0 && tryShoot(stack, world, player, true)) { fire(stack, world, player); @@ -145,7 +144,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu } } - if(--burstDuration == 0) setDelay(stack, mainConfig.rateOfFire); + setBurstDuration(stack, getBurstDuration(stack) - 1); + if(getBurstDuration(stack) == 0) setDelay(stack, mainConfig.rateOfFire); } if(getIsAltDown(stack) && !isCurrentItem) { setIsAltDown(stack, false); @@ -303,8 +303,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(validConfig && main && tryShoot(stack, world, player, main)) { if(mainConfig.firingMode == GunConfiguration.FIRE_BURST){ - if(burstDuration <= 0) - burstDuration = mainConfig.firingDuration * mainConfig.roundsPerBurst; + if(getBurstDuration(stack) <= 0) + setBurstDuration(stack,mainConfig.firingDuration * mainConfig.roundsPerBurst); } else { fire(stack, world, player); setDelay(stack, mainConfig.rateOfFire); @@ -317,8 +317,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(!main && altConfig != null && tryShoot(stack, world, player, main)) { - if(altConfig.firingMode == GunConfiguration.FIRE_BURST && burstDuration <= 0){ - burstDuration = altConfig.firingDuration * altConfig.roundsPerBurst; + if(altConfig.firingMode == GunConfiguration.FIRE_BURST && getBurstDuration(stack) <= 0){ + setBurstDuration(stack,altConfig.firingDuration * altConfig.roundsPerBurst); } else { altFire(stack, world, player); setDelay(stack, altConfig.rateOfFire); @@ -673,6 +673,14 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu public static int getMagType(ItemStack stack) { return readNBT(stack, "magazineType"); } + /// Sets how long a burst fires for, only useful for burst fire weapons /// + public static void setBurstDuration(ItemStack stack, int i) { + writeNBT(stack, "bduration", i); + } + + public static int getBurstDuration(ItemStack stack) { + return readNBT(stack, "bduration"); + } /// queued casing for ejection /// public static void setCasing(ItemStack stack, BulletConfiguration bullet) { From bf400c3525ba758f261649e28c5643dda6fddfc5 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Mon, 4 Sep 2023 16:31:38 -0400 Subject: [PATCH 011/207] Bomber Fixes Added a new helper function to WorldUtil which chunkloads an entity whenever it spawns and uses that helper function in the Airstrike Designator code to help the bombers load properly. Also turned the rancid if chains into switches --- .../com/hbm/items/tool/ItemBombCaller.java | 110 ++++++++++-------- src/main/java/com/hbm/world/WorldUtil.java | 37 +++++- 2 files changed, 95 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/hbm/items/tool/ItemBombCaller.java b/src/main/java/com/hbm/items/tool/ItemBombCaller.java index 9d39a924d..29ec58ced 100644 --- a/src/main/java/com/hbm/items/tool/ItemBombCaller.java +++ b/src/main/java/com/hbm/items/tool/ItemBombCaller.java @@ -7,6 +7,7 @@ import com.hbm.lib.Library; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import com.hbm.world.WorldUtil; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -23,26 +24,38 @@ public class ItemBombCaller extends Item { } @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { list.add("Aim & click to call an airstrike!"); - if(itemstack.getItemDamage() == 0) - list.add("Type: Carpet bombing"); - if(itemstack.getItemDamage() == 1) - list.add("Type: Napalm"); - if(itemstack.getItemDamage() == 2) - list.add("Type: Poison gas"); - if(itemstack.getItemDamage() == 3) - list.add("Type: Agent orange"); - if(itemstack.getItemDamage() == 4) - list.add("Type: Atomic bomb"); - if(itemstack.getItemDamage() == 5) - list.add("Type: VT stinger rockets"); - if(itemstack.getItemDamage() == 6) - list.add("Type: PIP OH GOD"); - if(itemstack.getItemDamage() == 7) - list.add("Type: Cloud the cloud oh god the cloud"); + switch (stack.getItemDamage()) { + + case 1: + list.add("Type: Napalm"); + break; + case 2: + list.add("Type: Poison gas"); + break; + case 3: + list.add("Type: Agent orange"); + break; + case 4: + list.add("Type: Atomic bomb"); + break; + case 5: + list.add("Type: VT stinger rockets"); + break; + case 6: + list.add("Type: PIP OH GOD"); + break; + case 7: + list.add("Type: Cloud the cloud oh god the cloud"); + break; + default: + list.add("Type: Carpet bombing"); + + } + } @Override @@ -53,45 +66,40 @@ public class ItemBombCaller extends Item { int y = pos.blockY; int z = pos.blockZ; - boolean b = false; - if(!world.isRemote) { + switch(stack.getItemDamage()) { + case 1: + WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacNapalm(world, x, y, z)); + break; + case 2: + WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacChlorine(world, x, y, z)); + break; + case 3: + WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacOrange(world, x, y, z)); + break; + case 4: + WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacABomb(world, x, y, z)); + break; + case 5: + WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacStinger(world, x, y, z)); + break; + case 6: + WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacBoxcar(world, x, y, z)); + break; + case 7: + WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacPC(world, x, y, z)); + + default: + WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacCarpet(world, x, y, z)); + } + + player.addChatMessage(new ChatComponentText("Called in airstrike!")); + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - if(stack.getItemDamage() == 0) - if(world.spawnEntityInWorld(EntityBomber.statFacCarpet(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 1) - if(world.spawnEntityInWorld(EntityBomber.statFacNapalm(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 2) - if(world.spawnEntityInWorld(EntityBomber.statFacChlorine(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 3) - if(world.spawnEntityInWorld(EntityBomber.statFacOrange(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 4) - if(world.spawnEntityInWorld(EntityBomber.statFacABomb(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 5) - if(world.spawnEntityInWorld(EntityBomber.statFacStinger(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 6) - if(world.spawnEntityInWorld(EntityBomber.statFacBoxcar(world, x, y, z))) - b = true; - if(stack.getItemDamage() == 7) - if(world.spawnEntityInWorld(EntityBomber.statFacPC(world, x, y, z))) - b = true; - - if(b) { - player.addChatMessage(new ChatComponentText("Called in airstrike!")); - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - } else { - world.playSoundAtEntity(player, "hbm:item.techBoop", 1.0F, 1.0F); - } } - stack.stackSize -= b ? 1 : 0; + stack.stackSize -= 1; return stack; } diff --git a/src/main/java/com/hbm/world/WorldUtil.java b/src/main/java/com/hbm/world/WorldUtil.java index 89f1db25e..ec75eee2e 100644 --- a/src/main/java/com/hbm/world/WorldUtil.java +++ b/src/main/java/com/hbm/world/WorldUtil.java @@ -2,12 +2,15 @@ package com.hbm.world; import com.hbm.packet.BiomeSyncPacket; import com.hbm.packet.PacketDispatcher; - import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.Chunk; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.EntityJoinWorldEvent; public class WorldUtil { @@ -31,6 +34,38 @@ public class WorldUtil { PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(coord.chunkXPos, coord.chunkZPos, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, coord.getCenterXPos(), 128, coord.getCenterZPosition() /* who named you? */, 1024D)); } + /**Chunkloads the chunk the entity is going to spawn in and then spawns it + * @param entity The entity to be spawned**/ + + /*fun fact: this is based off of joinEntityInSurroundings in World + however, since mojang is staffed by field mice, that function is client side only and half-baked + */ + public static void loadAndSpawnEntityInWorld(Entity entity) + { + World world = entity.worldObj; + int chunkX = MathHelper.floor_double(entity.posX / 16.0D); + int chunkZ = MathHelper.floor_double(entity.posZ / 16.0D); + byte loadRadius = 2; + + for (int k = chunkX - loadRadius; k <= chunkX + loadRadius; ++k) + { + for (int l = chunkZ - loadRadius; l <= chunkZ + loadRadius; ++l) + { + world.getChunkFromChunkCoords(k, l); + } + } + + if (!world.loadedEntityList.contains(entity)) + { + if (!MinecraftForge.EVENT_BUS.post(new EntityJoinWorldEvent(entity, world))) + { + world.getChunkFromChunkCoords(chunkX, chunkZ).addEntity(entity); + world.loadedEntityList.add(entity); + world.onEntityAdded(entity); + } + } + } + public static void syncBiomeChange(World world, int x, int z) { Chunk chunk = world.getChunkFromBlockCoords(x, z); byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; From 7c1bd3ad40ec0a3fcf40a599b92a2b00d2101068 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Mon, 4 Sep 2023 18:22:31 -0400 Subject: [PATCH 012/207] Cleaned up code and formatting --- .../com/hbm/items/tool/ItemBombCaller.java | 129 +++++++----------- src/main/java/com/hbm/world/WorldUtil.java | 4 +- 2 files changed, 53 insertions(+), 80 deletions(-) diff --git a/src/main/java/com/hbm/items/tool/ItemBombCaller.java b/src/main/java/com/hbm/items/tool/ItemBombCaller.java index 29ec58ced..5ea5c732e 100644 --- a/src/main/java/com/hbm/items/tool/ItemBombCaller.java +++ b/src/main/java/com/hbm/items/tool/ItemBombCaller.java @@ -17,108 +17,81 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class ItemBombCaller extends Item { - + public ItemBombCaller() { super(); - this.setHasSubtypes(true); + this.setHasSubtypes(true); } - + @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { list.add("Aim & click to call an airstrike!"); - switch (stack.getItemDamage()) { - - case 1: - list.add("Type: Napalm"); - break; - case 2: - list.add("Type: Poison gas"); - break; - case 3: - list.add("Type: Agent orange"); - break; - case 4: - list.add("Type: Atomic bomb"); - break; - case 5: - list.add("Type: VT stinger rockets"); - break; - case 6: - list.add("Type: PIP OH GOD"); - break; - case 7: - list.add("Type: Cloud the cloud oh god the cloud"); - break; - default: - list.add("Type: Carpet bombing"); + switch (stack.getItemDamage()) { + case 0: list.add("Type: Carpet bombing"); break; + case 1: list.add("Type: Napalm"); break; + case 2: list.add("Type: Poison gas"); break; + case 3: list.add("Type: Agent orange"); break; + case 4: list.add("Type: Atomic bomb"); break; + case 5: list.add("Type: VT stinger rockets"); break; + case 6: list.add("Type: PIP OH GOD"); break; + case 7: list.add("Type: Cloud the cloud oh god the cloud"); break; + default: list.add("Type: INVALID, Report it to mod creator"); } } - + @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) - { + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { MovingObjectPosition pos = Library.rayTrace(player, 500, 1); int x = pos.blockX; int y = pos.blockY; int z = pos.blockZ; - - if(!world.isRemote) + + if(!world.isRemote) { - switch(stack.getItemDamage()) { - case 1: - WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacNapalm(world, x, y, z)); - break; - case 2: - WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacChlorine(world, x, y, z)); - break; - case 3: - WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacOrange(world, x, y, z)); - break; - case 4: - WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacABomb(world, x, y, z)); - break; - case 5: - WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacStinger(world, x, y, z)); - break; - case 6: - WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacBoxcar(world, x, y, z)); - break; - case 7: - WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacPC(world, x, y, z)); + EntityBomber bomber; + switch(stack.getItemDamage()) { + + case 1: bomber = EntityBomber.statFacNapalm(world, x, y, z); break; + case 2: bomber = EntityBomber.statFacChlorine(world, x, y, z); break; + case 3: bomber = EntityBomber.statFacOrange(world, x, y, z); break; + case 4: bomber = EntityBomber.statFacABomb(world, x, y, z); break; + case 5: bomber = EntityBomber.statFacStinger(world, x, y, z); break; + case 6: bomber = EntityBomber.statFacBoxcar(world, x, y, z); break; + case 7: bomber = EntityBomber.statFacPC(world, x, y, z); break; + default: bomber = EntityBomber.statFacCarpet(world, x, y, z); - default: - WorldUtil.loadAndSpawnEntityInWorld(EntityBomber.statFacCarpet(world, x, y, z)); } - + WorldUtil.loadAndSpawnEntityInWorld(bomber); player.addChatMessage(new ChatComponentText("Called in airstrike!")); world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); } - - stack.stackSize -= 1; - - return stack; - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List p_150895_3_) - { - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 0)); - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 1)); - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 2)); - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 3)); - p_150895_3_.add(new ItemStack(p_150895_1_, 1, 4)); - } - @Override + stack.stackSize -= 1; + + return stack; + } + + @Override @SideOnly(Side.CLIENT) - public boolean hasEffect(ItemStack p_77636_1_) - { - return p_77636_1_.getItemDamage() >= 4; - } + public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List p_150895_3_) + { + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 0)); + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 1)); + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 2)); + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 3)); + p_150895_3_.add(new ItemStack(p_150895_1_, 1, 4)); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean hasEffect(ItemStack p_77636_1_) + { + return p_77636_1_.getItemDamage() >= 4; + } } diff --git a/src/main/java/com/hbm/world/WorldUtil.java b/src/main/java/com/hbm/world/WorldUtil.java index ec75eee2e..9e6e06647 100644 --- a/src/main/java/com/hbm/world/WorldUtil.java +++ b/src/main/java/com/hbm/world/WorldUtil.java @@ -40,8 +40,8 @@ public class WorldUtil { /*fun fact: this is based off of joinEntityInSurroundings in World however, since mojang is staffed by field mice, that function is client side only and half-baked */ - public static void loadAndSpawnEntityInWorld(Entity entity) - { + public static void loadAndSpawnEntityInWorld(Entity entity) { + World world = entity.worldObj; int chunkX = MathHelper.floor_double(entity.posX / 16.0D); int chunkZ = MathHelper.floor_double(entity.posZ / 16.0D); From d9416f650c1c7155951d235fd2cf6c58d5a73abd Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 6 Sep 2023 15:13:22 +0200 Subject: [PATCH 013/207] textures, fixes --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 6 +++--- .../hbm/textures/armor/trenchmaster_arm.png | Bin 546 -> 1632 bytes .../hbm/textures/armor/trenchmaster_chest.png | Bin 1421 -> 6026 bytes .../textures/armor/trenchmaster_helmet.png | Bin 1394 -> 2471 bytes .../hbm/textures/armor/trenchmaster_leg.png | Bin 286 -> 1218 bytes 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 8adb34c14..5806db479 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2271,7 +2271,7 @@ public class ModBlocks { reactor_research = new ReactorResearch(Material.iron).setBlockName("machine_reactor_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor_small"); reactor_zirnox = new ReactorZirnox(Material.iron).setBlockName("machine_zirnox").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); zirnox_destroyed = new ZirnoxDestroyed(Material.iron).setBlockName("zirnox_destroyed").setHardness(100.0F).setResistance(800.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_controller = new MachineReactorControl(Material.iron).setBlockName("machine_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_controller = new MachineReactorControl(Material.iron).setBlockName("machine_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); machine_boiler_off = new MachineBoiler(false).setBlockName("machine_boiler_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_boiler_off"); machine_boiler_on = new MachineBoiler(true).setBlockName("machine_boiler_on").setHardness(5.0F).setResistance(10.0F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_boiler_on"); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 56215f8d7..a6079a665 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3615,8 +3615,8 @@ item.primer_buckshot.name=Buckshot Primer (x12) item.protection_charm.name=Charm of Protection item.prototype_kit.name=Prototype Kit item.pudding.name=Pudding -item.pwr_fuel.bfb_am_mix.name=Fuel Grade Americium PWR ZFB Rod -item.pwr_fuel.bfb_pu241.name=Plutonium-241 PWR ZFB Rod +item.pwr_fuel.bfb_am_mix.name=Fuel Grade Americium PWR BFB Rod +item.pwr_fuel.bfb_pu241.name=Plutonium-241 PWR BFB Rod item.pwr_fuel.hea242.name=HEA-242 PWR Fuel Rod item.pwr_fuel.hen237.name=HEN-237 PWR Fuel Rod item.pwr_fuel.hep239.name=HEP-239 PWR Fuel Rod @@ -5448,7 +5448,7 @@ tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted) tile.watz_hatch.name=Watz Reactor Access Hatch tile.watz_pump.name=Watz Pressure Pump tile.yellow_barrel.name=Radioactive Barrel -tile.zirnox_destroyed.name=Destroyed ZINROX +tile.zirnox_destroyed.name=Destroyed ZIRNOX trait.asbestos=Asbestos trait.blinding=Blinding diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_arm.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_arm.png index 57abed7bed4073b0df827b5b623e252bfb59d7f5..b42795dcc3fab4d15c2141733c0952920ab90397 100644 GIT binary patch delta 1600 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 Eg0+*E`Tzg` delta 1387 zcmV-x1(f=VFO3V3Gk*m{Nklzi;C<6vw{|Ja!0>?IvfjJ9=wz%eh-&94=d1 zphGnWhc4Z2(bIBUm*RS}ZwQKZyZ#7ni~1jUY_vFY3IiE#=M9n^k)}k+A}!J42M`?5 z5=ran{ooU+FxX}h@><7TN6d0hj)Ie}JK$-C7noz%H$!iDJ%5wg6Rx`0L$eP!AJ3sgwlQ` z1WYL1Pa?5@AHdkx;9SVN+TP?ZCS-X3-sF!(6ZHM9bo z&*!adcwF~Djjx;hqt>$A7v0_6VLToq2m)3z4#OJVo3ys{GD=iYW)g>n^SMNRPgvil zf3NRzAEb6GUjRJ(F6+;i**TZsML$G8Hfuk6`}lWw2`-<{J~!**dZ}T{Z_a`1!!f2?ivrjmUwy!M>4nv;;q*oe8yQJ&$D z9e7^;q*ZJENA@}NOS|)Ja{}z9cgo7TWI}10EQ!F1pI!Is&@kON>*3*{RRgD|r_toWmWa;*dl__i%JBko41Z^mzs|BDqt$s0a||yq$M7c6HfPlC z{Ee8R^BU$DUSN*lO`>gllsIg>z#PMyMBDf%ao9MoVNK@+7Uy87;Quvyh^d{kF){lz z+IfNX9v>wR8!s@&@FvkVK1v)mUSN*lO`>g*-Np1Fz@xJHzWGjvi$iR zK@b3E;kIlxO!yLv7tj8>0y#o?a=T44kpsB;P-+!uF zoNrviLYSMwV6v{hK$=Zp!V$dwK`8Pj(J@9qYAVX^W|!{r5a4Ces1P=%gJkh{Z6byV z=M#$ZL9+0D5`jJE;K{G%``v_LYS=`PPAZhCUR8Ur*XkyWRc%Hy9X7PF@?qaTF@$`46Ui)na%x5lS_OS$HKmx zOKggq1Jva*Z?g9P(zuAL>^}Y;gclI~%b!sDBh_)mdJfs%;56)aga68-PF<$kt5q2X zxCLc!J$X@^e002ovPDHLkV1l6J$9Vt% diff --git a/src/main/resources/assets/hbm/textures/armor/trenchmaster_helmet.png b/src/main/resources/assets/hbm/textures/armor/trenchmaster_helmet.png index 14977368f83717e274b72d0676ec1b2f59d6359d..e8b93143321db8bc97e495b3eaad25d5df369e85 100644 GIT binary patch delta 2446 zcmV;9332xF3a1m0Gk*zQNkl-O?8}lv$WKTP`5PwSJ%=22$w4|e4i+{7gDk_^5sOa2SUs#X5w^yRX1cp_ z7`-)b)pYlC&rGjG9uVDKT~lv8^?p{(NGPQg3PhvPK($&eQhx**jRqv$0D$Lt@O|It z7J}%N^OhQho zY0(5mwOt!=GA3oVk`HKuw@rdf(ioE%TMqB?^PuW^5GVIfo;(2n+`D%#^XE^MNcHf< zq?Ry1;$i&}gn!r9R`t+BV>VfHPU4$01R|`7$KcGE7UAJnbH=kh`6SJpszw^KzF}7C z?Rx)ZxDK@gh$ZNWH)j1r^U6)6h-AqjuB`$}^{&Ah)J`^;xrij?no+?c6=_4gU5EJc zUhi3mZNlNGihG-<~is#jgw^D_-(%WpQAJ+7hv_cR|02bAFc_jDbM$yco0%YHz zd*OD~e16co7Y`KF_sPyLlv0XzZ+udt!Y0#fHgWapRSd{jiQoS6$%+T@KH@(&$7(j4 zr7tnfUqM}QfWQLEKr_oUm~+l9z1Jdc#iWt7Y1qQw+TgcB&5%>PYh zFO*2T-HyF40`iZ4c&OU#&nTBKAnp42uYZ3V$w@~cppO0-8z{uguM_7WH(tEK_V%`@ z)oRMN<955P-=zs2_C9yt={s46(~!dk&m#Eeh)ToYWSK;kJ{K=u#K(^x^>wVa*0cD( zLFh%E$i}MOZo_q5bUGb;{`?u8PG_vPjHaddH8YWVy{_8rw$_e)ABG_+l?qy|7Jn+0 zN}`j$c=192!0ztuz&qX6dN$OY7Zw(bXM@NjL*&uX5dff4sUQqP%*@PSdU_fQ3kyRh zx%kW9$F`?^R)@1;wb3w**!QmMA`C-(`0xP$Fh4(!{r!FH?(Sv^Aq1ZN~{p8@nD4U0CdR(}geM@Mj7 z7yJABn4X@-%*;$-L?lg6SU;DDq6lFa>d88eqe(c9V`$C@m(zEE)-&x}WJ=tmirA|- zw6Z}Epxf=D+wCF<0t7*zC##f#5CX32Y7NnIUW{8sBoZOtpw*9}NKc$hNGS!!ap1b{ zfMx)gSvNid4}dmYliGMmntv3xdB<_!IF2^CQmLd(kIcy+l7j$Yb#oKz^?Ks3O!xK< z5&Z*1~$2*XhO8<6hM{N3ZHTVikTz<-$d`}YUf+dIJH zr&|MKNLqQCDEAYJPSl4G8-5cI*Dq=RQ?J(*(BB6=e!3;T`FdHaF^PmGBBdN~a9V9@ zCx4*lEdQ+$1cCOmxc*rxhoKps6LDSFSUGwQ!_e>%0EWq>5u%VDMG>TwTFY5OY~D~T zDe=*Y^GHRS;<KGD(vs*pszQ%r>*cfln5J z9NlpoNGTBnLE>lP@aiA}4t~uz5 z(6ts7i*b_+!w_K@8qtevo+GXsGFFrBeFU`cXpcDTf;lrX5pXBdueP#6h`^Kx} zgviSfUQZ?66M`U!HAz~4vd)z5aAExpntToG*R2cfW9{Pp#&d?2)eGT zeIyP%wDW!k`-l06@UorX(?q$-$xkScB$e_u5v~z_ph11(`i-O!`z(vhf^VkcoIcKM zXpAU|Ff}zb(8nep1VL=SypY@>UDwsl$}>E7eiB|Pl@Nv@y4`N#;N5OlM?rf$PK@^> zFZS(zuV245GW^QbUw;_R^Zeg~C;F0Cu)HMEOs%qoYsIdw zr0iKL`4ZP`-02JTxBHC(hx-QYNoYXsA2tboZ`-$&(%2zVC4GE+j83Nmr4+7Tzpj${ zUAuNIHycT&!dHR_kSW;v5+MXSosMBvNk^>!vg>Gk*msNkle=w)nSs+l-UmC33bSAO^~t8(Zt+? z;vqW%5rkf5vl)QRPFDs;#Y0-el9Hc^#Iry(xn;ijbxWiy1c@9n`(s)u&cFFuZO|9L zBw)1dQ{567v43J#e0RO+`|ldOn1aUXW?&&8P}#KF2$stHPo@BKa{Y1zUX+trNh5L` zXe726w83}RpeIvRJ0(zBBdw$uwzyJ}1W=NQZP9hfWLfX;SBWVhF)i`45jCOEw2Btn zn3<(ewDCxD_8jDDr0f^3su>z3KOoVDxC*Ug8mW`+z5qy%yS(0Hmo zpQZDkG5BpoBCfVymJBa98lf|FJTIi8EA7*-yxg9%vw+A;087fgbaov}V;0&@DF}_W z$#kBg$mT+0)!Au0&3p&|u%g5q4d^y$6e-7uffa!lYB%3qgPuMIfb7c43Z`YM+VnQt z7#9$wB!9kKfu2gvULi1AO-o*AUS(JJC`SR&*5XCVQY0hSwB&l-mZCIS(`R#Q@kA18 zeP_Q4t2FD?Qx*W=wBLqKb1ea8PPW~_^Tf0aCRT**G$QKt^gfB|03L13O3}sw^-JBR zeE>kR<;n{iF_2a#^I!k0Jl+1pk(%f{vdbixIe$C74}u_ROF9at>7IxNaVS^ia1Q9& zv>Jr7M&y)TzZa;xN!aExwb#-J5n1!CM$2DAo~O&GMMO_eWMU?gt}q~e!)Uv$4EV3m=wEakTh}mnJewg10(xxOhT|Yew&*miHsO@P`XYzX z_QF$QTr>_}eP@+r!w~@F#gapbGgEUW;O zGA-Zt+4H>YTAIiUg#1J5`mYf|xu@;+pMOC{XJ5tYrm>0*!d||wY|gD|L?#^nbep66k`UZaw;=OMzk+VjU+k=+HYIr}OG8Gm;q z02o@z$CZ1Lzxy~cWX3;{z0Z+MZ=Ag$A2B=jE>WAvrT?$7-G^`VgWJ#L=8b+Tko!S> z-o1~kh{`xSjX}IHZ^1MMO(q_Tt#`d%ca$`)h%AQ_S=&1T(HNx1llYZ64m~)#D}*MB zf@7w!AIr`Appji+@hSv>tj>9x`hU^un+V70m}B%rBX1DX!4r9d?2Lsw(t9_`xt4s8c@P?jEcY@xBa#>VTmoZnH1a>Z!*woR STN9Gk*kmNklUX2vn-z8{y$-9zazQ zujfh!0K-4~z>U#C}7gA+l}x`o4$0x7H#_ z;&kbpgNQ&x;JruJb#TtXIk!Ev*`8ZOkR(Z13jn~!%1{}23!di>EuD9kGkHd+1 zATr+fJ*ujLwH7BQC&3!rShKQPtpEUNng%OqfX=zFuW`=d=H@1B#8Z)lJkJB8d7eki z(6j(BpU+{fg@_=}^XPz@k;}`=F#q=U7G2i`*7ZT=^MCo)#3F*CC?F!}`ySTXa8mDm zG*%Qv8zm)4+ta7Dq=%0f;dMbzQ@I zkI`tfHyFrNRaKGchQ7!{tyU{I=a6L?hGMM^hpy`yiM1AO+XnOYeUHBHAtLCyE{fKw zs-h?)V}HC-%CZde_5}>b>bj21uT4zdgl3{+l4|X^TwvcRwfXcMvdnv(dVaRYa4!)- z=*!+}dvyQy*?NC{sgv{bbH6X*DD*e_2u(wOrH)SO%mzT5J}8_IY*W>~WY2w*eZDXR zr!zeB8^LjW=%ZY3SS>V2>JV7hbs-;fEb03m`4K6PDhqgY3>P9NM@vv_xRx7Qc)JdbuF zsA2ikP07$w`kpRhy!W`iz78j*ZxP&VHVc#Q@9%&5mFvfkA3_kb*(}s*Eh2)etE-T( zxqmOo(A^D7ow3$N<%eJhlqKik;o+B`;1-L8=rT1FmQDiKdb(^<&wCF!J3I62QdmK# zNK;o;h2?Vju5X0X>C|Ug_A2>OoO8ja>HBmq{->KYO@l~`u6Pe<(B}&x#g^50(d$!4B;&rLh{$#CvcOZR4 zWHOofG)+Sk1H1aEeP^@T;Q06$z|Nr=^}sgb+qT8y!HLDh;DJT z4{D$~nd$@Sp7G!SjWOY6NP{7>ZQG(OODva5pdu(<5l6X0+5BwV>XB(ID7?dIhb-oD$i@R0QKB>i&GxAf<|LR--Dk^ tR?D;CuIyW;Rxx}J(x4Yx4)PZN@&y1iK6QA+z0m*w002ovPDHLkV1kbRZ%_aL From 24444d6c4e1e754e7684370dfafc57b5c229550c Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 6 Sep 2023 21:27:31 +0200 Subject: [PATCH 014/207] shredder compat fix(?), trenchmaster armor --- changelog | 37 - .../inventory/recipes/ShredderRecipes.java | 6 +- src/main/java/com/hbm/items/ModItems.java | 23 +- .../hbm/items/armor/ArmorTrenchmaster.java | 33 + .../com/hbm/items/weapon/ItemGunBase.java | 26 +- .../java/com/hbm/main/ResourceManager.java | 6 + .../render/model/ModelArmorTrenchmaster.java | 76 + .../assets/hbm/models/armor/trenchmaster.obj | 4713 +++++++++-------- 8 files changed, 2523 insertions(+), 2397 deletions(-) create mode 100644 src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java create mode 100644 src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java diff --git a/changelog b/changelog index 85430aa5f..e69de29bb 100644 --- a/changelog +++ b/changelog @@ -1,37 +0,0 @@ -## Added -* Conveyor press - * An upgraded version of the electric press that can be integrated directly into conveyor belts - * Each pressing operation will process however many items happen to be at the belt at the time, so given enough conveyor infrastructure it can be much faster than a normal electric press - * Has no GUI, stamps are installed either by hand or via automation - * Stamps can be removed with a screwdriver - * Can only stamp single items to avoid issues with stack limits, so it's best to use ejection speed instead of stack ejection upgrades for the conveyor ejectors - -## Changed -* Chlorophyte rounds now deal 2x more damage than their standard counterparts instead of 1.5x -* Chlorophyte rounds now penetrate multiple enemies -* Decreased chlorophyte targeting range from 200 to 30 blocks -* Josh now has recoil and reload animations -* Anvil recipes for upgrading ammo types have been adjusted to match the crafting batch size -* Adjusted the corium block destruction function to be more in line with the recent concrete nerfs -* Reduced the blast resistance threshold for FEL, making concrete once again resistant to lasers -* Crafting bullet assemblies now only yields one item, it's that one assembly that turns into a full set of bullets after being pressed once. This should reduce the amount of press operations by up to a factor of 64. -* 5mm assemblies now yield 64 instead of 32 bullets -* The production complexity and time for making thermoelectric elements in the assembler has been reduced -* Thermoelectric elements can now also be made in a tier 2 anvil -* Changed electric press recipe, crafting complexity has been reduced and the press now uses hydraulic pistons -* Removed DFC emitter beam cap again since the core already imposes a natural limit due to fuel consumption - * I don't know why anyone would need a DFC that strong anyway, but now you can have them again -* The UAC pistol now has a crafting recipe and can also be found in structures - -## Fixed -* Fixed logspam when pollution handler tries to save the pollution data for dimensions that have never been loaded before -* Fixed dead leaves layer not being replacable by other blocks -* Fixed rock layers like schist, hematite and sulfur caves not spawning at all -* Fixed rock layers replacing end portal frames or bedrock -* Fixed FEnSU instantly voiding all energy when sending -* Fixed some conflict causing the nuke flash to be applied permanently -* Fixed flux level not resetting when rods are above melting point with meltdowns disabled -* Fixed crash caused by express delivery shells -* Fixed 4 gauge solid steel slugs not being made from steel -* Fixed missing lang entry for fluorite ore -* Fixed UAC pistol UV \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index 457bddf9b..7faee9911 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -352,16 +352,16 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModItems.debris_graphite, new ItemStack(ModItems.powder_coal, 1)); /* GC COMPAT */ - Item gcMoonBlock = Compat.tryLoadItem(Compat.MOD_GCC, "moonBlock"); + Block gcMoonBlock = Compat.tryLoadBlock(Compat.MOD_GCC, "moonBlock"); if(gcMoonBlock != null) { ShredderRecipes.setRecipe(new ItemStack(gcMoonBlock, 1, 3), new ItemStack(ModBlocks.moon_turf)); //Moon dirt ShredderRecipes.setRecipe(new ItemStack(gcMoonBlock, 1, 5), new ItemStack(ModBlocks.moon_turf)); //Moon topsoil } /* AR COMPAT */ - Item arMoonTurf = Compat.tryLoadItem(Compat.MOD_AR, "turf"); + Block arMoonTurf = Compat.tryLoadBlock(Compat.MOD_AR, "turf"); if(arMoonTurf != null) ShredderRecipes.setRecipe(arMoonTurf, new ItemStack(ModBlocks.moon_turf)); //i assume it's moon turf - Item arMoonTurfDark = Compat.tryLoadItem(Compat.MOD_AR, "turfDark"); + Block arMoonTurfDark = Compat.tryLoadBlock(Compat.MOD_AR, "turfDark"); if(arMoonTurfDark != null) ShredderRecipes.setRecipe(arMoonTurfDark, new ItemStack(ModBlocks.moon_turf)); //probably moon dirt? would have helped if i had ever played AR for more than 5 seconds } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 8ee6a7e1e..bf19e4b95 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1989,6 +1989,10 @@ public class ModItems { public static Item dns_plate; public static Item dns_legs; public static Item dns_boots; + public static Item trenchmaster_helmet; + public static Item trenchmaster_plate; + public static Item trenchmaster_legs; + public static Item trenchmaster_boots; public static Item zirconium_legs; public static Item robes_helmet; public static Item robes_plate; @@ -4929,7 +4933,7 @@ public class ModItems { fau_plate = new ArmorDigamma(aMatFau, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setFullSetForHide().setUnlocalizedName("fau_plate").setTextureName(RefStrings.MODID + ":fau_plate"); fau_legs = new ArmorDigamma(aMatFau, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).hides(EnumPlayerPart.LEFT_LEG, EnumPlayerPart.RIGHT_LEG).setFullSetForHide().setUnlocalizedName("fau_legs").setTextureName(RefStrings.MODID + ":fau_legs"); fau_boots = new ArmorDigamma(aMatFau, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setUnlocalizedName("fau_boots").setTextureName(RefStrings.MODID + ":fau_boots"); - + ArmorMaterial aMatDNS = EnumHelper.addArmorMaterial("HBM_DNT_NANO", 150, new int[] { 3, 8, 6, 3 }, 100); aMatDNS.customCraftingMaterial = ModItems.plate_armor_dnt; dns_helmet = new ArmorDNT(aMatDNS, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115) @@ -4950,6 +4954,19 @@ public class ModItems { dns_legs = new ArmorDNT(aMatDNS, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_legs").setTextureName(RefStrings.MODID + ":dns_legs"); dns_boots = new ArmorDNT(aMatDNS, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_boots").setTextureName(RefStrings.MODID + ":dns_boots"); + ArmorMaterial aMatTrench = EnumHelper.addArmorMaterial("HBM_TRENCH", 150, new int[] { 3, 8, 6, 3 }, 100); + aMatTrench.customCraftingMaterial = ModItems.plate_iron; + trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") + .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 9)) + .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 7)) + .addEffect(new PotionEffect(Potion.jump.id, 20, 2)) + .enableVATS(true) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("trenchmaster_helmet").setTextureName(RefStrings.MODID + ":trenchmaster_helmet"); + trenchmaster_plate = new ArmorTrenchmaster(aMatTrench, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) trenchmaster_helmet).setUnlocalizedName("trenchmaster_plate").setTextureName(RefStrings.MODID + ":trenchmaster_plate"); + trenchmaster_legs = new ArmorTrenchmaster(aMatTrench, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) trenchmaster_helmet).setUnlocalizedName("trenchmaster_legs").setTextureName(RefStrings.MODID + ":trenchmaster_legs"); + trenchmaster_boots = new ArmorTrenchmaster(aMatTrench, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) trenchmaster_helmet).setUnlocalizedName("trenchmaster_boots").setTextureName(RefStrings.MODID + ":trenchmaster_boots"); + jackt = new ModArmor(MainRegistry.aMatSteel, 1).setUnlocalizedName("jackt").setTextureName(RefStrings.MODID + ":jackt"); jackt2 = new ModArmor(MainRegistry.aMatSteel, 1).setUnlocalizedName("jackt2").setTextureName(RefStrings.MODID + ":jackt2"); @@ -7838,6 +7855,10 @@ public class ModItems { GameRegistry.registerItem(dns_plate, dns_plate.getUnlocalizedName()); GameRegistry.registerItem(dns_legs, dns_legs.getUnlocalizedName()); GameRegistry.registerItem(dns_boots, dns_boots.getUnlocalizedName()); + GameRegistry.registerItem(trenchmaster_helmet, trenchmaster_helmet.getUnlocalizedName()); + GameRegistry.registerItem(trenchmaster_plate, trenchmaster_plate.getUnlocalizedName()); + GameRegistry.registerItem(trenchmaster_legs, trenchmaster_legs.getUnlocalizedName()); + GameRegistry.registerItem(trenchmaster_boots, trenchmaster_boots.getUnlocalizedName()); //Nobody will ever read this anyway, so it shouldn't matter. GameRegistry.registerItem(chainsaw, chainsaw.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java new file mode 100644 index 000000000..b2168b8af --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -0,0 +1,33 @@ +package com.hbm.items.armor; + +import com.hbm.render.model.ModelArmorTrenchmaster; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +public class ArmorTrenchmaster extends ArmorFSB { + + public ArmorTrenchmaster(ArmorMaterial material, int slot, String texture) { + super(material, slot, texture); + } + + @SideOnly(Side.CLIENT) + ModelArmorTrenchmaster[] models; + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { + + if(models == null) { + models = new ModelArmorTrenchmaster[4]; + + for(int i = 0; i < 4; i++) + models[i] = new ModelArmorTrenchmaster(i); + } + + return models[armorSlot]; + } +} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 385801c3a..aabdc3bfd 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -15,6 +15,8 @@ import com.hbm.interfaces.IHoldableWeapon; import com.hbm.interfaces.IItemHUD; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.IEquipReceiver; +import com.hbm.items.ModItems; +import com.hbm.items.armor.ArmorFSB; import com.hbm.lib.HbmCollection; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.GunAnimationPacket; @@ -117,7 +119,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(GameSettings.isKeyDown(HbmKeybinds.reloadKey) && Minecraft.getMinecraft().currentScreen == null && (getMag(stack) < mainConfig.ammoCap || hasInfinity(stack, mainConfig))) { PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 2)); setIsReloading(stack, true); - resetReloadCycle(stack); + resetReloadCycle(entity, stack); } } } @@ -374,7 +376,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if (getMag(stack) >= mainConfig.ammoCap) setIsReloading(stack, false); else - resetReloadCycle(stack); + resetReloadCycle(player, stack); if(hasLoaded && mainConfig.reloadSoundEnd) world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F); @@ -420,7 +422,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.RELOAD.ordinal()), (EntityPlayerMP) player); setIsReloading(stack, true); - resetReloadCycle(stack); + resetReloadCycle(player, stack); } public boolean canReload(ItemStack stack, World world, EntityPlayer player) { @@ -574,8 +576,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(!main) config = altConfig; - if(hasInfinity(stack, config)) - return; + if(hasInfinity(stack, config)) return; + if(isTrenchMaster(player) && player.getRNG().nextInt(3) == 0) return; if(config.reloadType != GunConfiguration.RELOAD_NONE) { setMag(stack, getMag(stack) - 1); @@ -589,8 +591,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu } /// sets reload cycle to config defult /// - public static void resetReloadCycle(ItemStack stack) { - writeNBT(stack, "reload", ((ItemGunBase)stack.getItem()).mainConfig.reloadDuration); + public static void resetReloadCycle(EntityPlayer player, ItemStack stack) { + writeNBT(stack, "reload", getReloadDuration(player, stack)); } /// if reloading routine is active /// @@ -815,4 +817,14 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu data.setInteger("ej", ejector.getId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 50)); } + + public static int getReloadDuration(EntityPlayer player, ItemStack stack) { + int cycle = ((ItemGunBase) stack.getItem()).mainConfig.reloadDuration; + if(isTrenchMaster(player)) return Math.max(1, cycle / 2); + return cycle; + } + + public static boolean isTrenchMaster(EntityPlayer player) { + return player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() == ModItems.trenchmaster_plate && ArmorFSB.hasFSBArmor(player); + } } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 4ad9341a7..59cbd5c29 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -789,6 +789,7 @@ public class ResourceManager { public static final IModelCustom armor_solstice = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/solstice.obj")); public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj")); public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj")); + public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj")); ////Texture Items @@ -935,6 +936,11 @@ public class ResourceManager { public static final ResourceLocation rpa_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/rpa_chest.png"); public static final ResourceLocation rpa_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/rpa_arm.png"); + public static final ResourceLocation trenchmaster_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/trenchmaster_helmet.png"); + public static final ResourceLocation trenchmaster_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/trenchmaster_leg.png"); + public static final ResourceLocation trenchmaster_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/trenchmaster_chest.png"); + public static final ResourceLocation trenchmaster_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/trenchmaster_arm.png"); + public static final ResourceLocation mod_tesla = new ResourceLocation(RefStrings.MODID, "textures/armor/mod_tesla.png"); public static final ResourceLocation armor_bismuth_tex = new ResourceLocation(RefStrings.MODID, "textures/armor/bismuth.png"); diff --git a/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java b/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java new file mode 100644 index 000000000..8ded2bb29 --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java @@ -0,0 +1,76 @@ +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.loader.ModelRendererObj; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.Entity; + +public class ModelArmorTrenchmaster extends ModelArmorBase { + + ModelRendererObj light; + + public ModelArmorTrenchmaster(int type) { + super(type); + + head = new ModelRendererObj(ResourceManager.armor_trenchmaster, "Helmet"); + light = new ModelRendererObj(ResourceManager.armor_trenchmaster, "Light"); + body = new ModelRendererObj(ResourceManager.armor_trenchmaster, "Chest"); + leftArm = new ModelRendererObj(ResourceManager.armor_trenchmaster, "LeftArm").setRotationPoint(-5.0F, 2.0F, 0.0F); + rightArm = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightArm").setRotationPoint(5.0F, 2.0F, 0.0F); + leftLeg = new ModelRendererObj(ResourceManager.armor_trenchmaster, "LeftLeg").setRotationPoint(1.9F, 12.0F, 0.0F); + rightLeg = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightLeg").setRotationPoint(-1.9F, 12.0F, 0.0F); + leftFoot = new ModelRendererObj(ResourceManager.armor_trenchmaster, "LeftFoot").setRotationPoint(1.9F, 12.0F, 0.0F); + rightFoot = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightFoot").setRotationPoint(-1.9F, 12.0F, 0.0F); + } + + @Override + public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { + setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); + head.copyTo(light); + + GL11.glPushMatrix(); + + if(type == 0) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_helmet); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + head.render(par7); + GL11.glDisable(GL11.GL_BLEND); + + /// START GLOW /// + float lastX = OpenGlHelper.lastBrightnessX; + float lastY = OpenGlHelper.lastBrightnessY; + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + GL11.glDisable(GL11.GL_LIGHTING); + light.render(par7); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lastX, lastY); + /// END GLOW /// + } + if(type == 1) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_chest); + body.render(par7); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_arm); + leftArm.render(par7); + rightArm.render(par7); + } + if(type == 2) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_leg); + leftLeg.render(par7); + rightLeg.render(par7); + } + if(type == 3) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_leg); + leftFoot.render(par7); + rightFoot.render(par7); + } + + GL11.glPopMatrix(); + } +} diff --git a/src/main/resources/assets/hbm/models/armor/trenchmaster.obj b/src/main/resources/assets/hbm/models/armor/trenchmaster.obj index 45c8bc4ac..9289dc89b 100644 --- a/src/main/resources/assets/hbm/models/armor/trenchmaster.obj +++ b/src/main/resources/assets/hbm/models/armor/trenchmaster.obj @@ -1,46 +1,111 @@ -# Blender v2.79 (sub 0) OBJ File: 'trenchmaster.blend' +# Blender v2.79 (sub 0) OBJ File: 'trenchmaster_scaled.blend' # www.blender.org -o Plane.005 -v 4.500000 0.000000 2.500000 -v -0.500000 0.000000 2.500000 -v 4.500000 0.000000 -2.500000 -v -0.500000 0.000000 -2.500000 -v 4.000000 12.000000 2.000000 -v 0.000000 12.000000 2.000000 -v 4.000000 12.000000 -2.000000 -v 0.000000 12.000000 -2.000000 -v 3.500000 0.000000 -3.500000 -v 0.500000 0.000000 -3.500000 -v 3.500000 2.000000 -3.500000 -v 0.500000 2.000000 -3.500000 -v 3.500000 3.000000 -2.500000 -v 0.500000 3.000000 -2.500000 -v 4.500000 2.000000 -2.500000 -v -0.500000 2.000000 -2.500000 -v 0.000000 4.000000 -2.000000 -v 4.000000 4.000000 -2.000000 -v 0.000000 4.000000 2.000000 -v 4.000000 4.000000 2.000000 -v 4.500000 4.000000 2.500000 -v -0.500000 4.000000 2.500000 -v 4.500000 4.000000 -2.500000 -v -0.500000 4.000000 -2.500000 -v 4.000000 5.000000 2.000000 -v 0.000000 5.000000 2.000000 -v 4.000000 5.000000 -2.000000 -v 0.000000 5.000000 -2.000000 -v 4.500000 5.000000 2.500000 -v -0.500000 5.000000 2.500000 -v 4.500000 5.000000 -2.500000 -v -0.500000 5.000000 -2.500000 -v 4.500000 8.000000 2.500000 -v -0.500000 8.000000 2.500000 -v 4.500000 8.000000 -2.500000 -v -0.500000 8.000000 -2.500000 -v 4.000000 8.000000 2.000000 -v 0.000000 8.000000 2.000000 -v 4.000000 8.000000 -2.000000 -v 0.000000 8.000000 -2.000000 +o Light +v 2.099990 -5.575001 -5.250000 +v 3.463980 -4.787502 -5.250000 +v 3.463981 -3.212502 -5.250000 +v 2.099991 -2.424999 -5.250000 +v 0.736001 -3.212500 -5.250000 +v 0.736001 -4.787500 -5.250000 +v -2.100009 -5.575001 -5.250000 +v -0.736019 -4.787500 -5.250000 +v -0.736019 -3.212500 -5.250000 +v -2.100008 -2.424999 -5.250000 +v -3.463999 -3.212498 -5.250000 +v -3.463999 -4.787498 -5.250000 +v 1.574989 -10.825001 -7.349999 +v 1.574990 -7.674999 -7.349999 +v -1.575010 -7.674999 -7.349999 +v -1.575011 -10.825001 -7.349999 +v 1.049989 -10.299999 -7.875000 +v 1.049989 -8.200001 -7.875000 +v -1.050010 -8.200001 -7.875000 +v -1.050011 -10.299999 -7.875000 +vt 0.770035 0.472036 +vt 0.770035 0.411685 +vt 0.859930 0.441860 +vt 0.770035 0.411685 +vt 0.829965 0.411685 +vt 0.859930 0.441860 +vt 0.320000 0.372093 +vt 0.420000 0.360465 +vt 0.440000 0.372093 +vt 0.340000 0.313953 +vt 0.420000 0.313953 +vt 0.440000 0.302326 +vt 0.320000 0.302326 +vt 0.340000 0.360465 +vt 0.829965 0.472036 +vt 0.740070 0.441860 +vt 0.829965 0.411685 +vt 0.829965 0.472036 +vt 0.770035 0.472036 +vt 0.740070 0.441860 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 1/1/1 5/2/1 3/3/1 +f 11/4/1 10/5/1 9/6/1 +f 16/7/2 17/8/2 13/9/2 +f 17/8/1 19/10/1 18/11/1 +f 13/9/3 18/11/3 14/12/3 +f 14/12/4 19/10/4 15/13/4 +f 15/13/5 20/14/5 16/7/5 +f 3/3/1 2/15/1 1/1/1 +f 1/1/1 6/16/1 5/2/1 +f 5/2/1 4/17/1 3/3/1 +f 9/6/1 8/18/1 11/4/1 +f 8/18/1 7/19/1 11/4/1 +f 7/19/1 12/20/1 11/4/1 +f 16/7/2 20/14/2 17/8/2 +f 17/8/1 20/14/1 19/10/1 +f 13/9/3 17/8/3 18/11/3 +f 14/12/4 18/11/4 19/10/4 +f 15/13/5 19/10/5 20/14/5 +o RightLeg +v -4.625000 24.300001 2.625000 +v 0.625000 24.299999 2.625000 +v -4.625000 24.300001 -2.625000 +v 0.625000 24.299999 -2.625000 +v -4.100004 11.700002 2.100000 +v 0.099996 11.700001 2.100000 +v -4.100004 11.700002 -2.100000 +v 0.099996 11.700001 -2.100000 +v -3.575000 24.300001 -3.675000 +v -0.425000 24.299999 -3.675000 +v -3.575000 22.200001 -3.675000 +v -0.425001 22.200001 -3.675000 +v -3.575001 21.150002 -2.625000 +v -0.425001 21.150000 -2.625000 +v -4.625000 22.200001 -2.625000 +v 0.624999 22.199999 -2.625000 +v 0.099999 20.100000 -2.100000 +v -4.100001 20.100002 -2.100000 +v 0.099999 20.100000 2.100000 +v -4.100001 20.100002 2.100000 +v -4.625001 20.100002 2.625000 +v 0.624999 20.100000 2.625000 +v -4.625001 20.100002 -2.625000 +v 0.624999 20.100000 -2.625000 +v -4.100001 19.050001 2.100000 +v 0.099998 19.049999 2.100000 +v -4.100001 19.050001 -2.100000 +v 0.099998 19.049999 -2.100000 +v -4.625001 19.050001 2.625000 +v 0.624998 19.049999 2.625000 +v -4.625001 19.050001 -2.625000 +v 0.624998 19.049999 -2.625000 +v -4.625003 15.900002 2.625000 +v 0.624997 15.900000 2.625000 +v -4.625003 15.900002 -2.625000 +v 0.624997 15.900000 -2.625000 +v -4.100003 15.900001 2.100000 +v 0.099997 15.900000 2.100000 +v -4.100003 15.900001 -2.100000 +v 0.099997 15.900000 -2.100000 vt 0.000000 0.222222 vt 0.250000 0.000000 vt 0.000000 -0.000000 @@ -72,6 +137,7 @@ vt 0.025000 0.422222 vt 0.225000 0.466667 vt 0.225000 0.422222 vt 0.450000 0.177778 +vt 0.450000 0.355556 vt 0.300000 0.355556 vt 0.775000 0.422222 vt 1.000000 0.400000 @@ -96,11 +162,11 @@ vt 0.000000 0.622222 vt 0.525000 0.644444 vt 0.275000 0.644444 vt 0.025000 0.644444 -vt 0.775000 0.644444 -vt 1.000000 0.622222 vt 0.975000 0.644444 -vt 0.775000 0.822222 +vt 1.000000 0.622222 vt 0.975000 0.822222 +vt 0.775000 0.644444 +vt 0.775000 0.822222 vt 0.725000 0.644444 vt 0.525000 0.822222 vt 0.725000 0.822222 @@ -112,136 +178,135 @@ vt 0.225000 0.822222 vt 0.975000 0.422222 vt 0.250000 0.222222 vt 0.500000 0.222222 -vt 0.450000 0.355556 -vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 0.7071 -0.7071 -vn 1.0000 0.0000 0.0000 -vn 0.7071 0.0000 -0.7071 -vn -0.7071 0.0000 -0.7071 +vn -0.0000 -1.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 vn -1.0000 0.0000 0.0000 -vn 0.5774 0.5774 -0.5774 -vn -0.5774 0.5774 -0.5774 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn 1.0000 -0.0000 0.0000 +vn -0.5773 -0.5774 -0.5774 +vn 0.5773 -0.5773 -0.5774 vn 0.0000 0.0000 1.0000 s off -f 2/1/1 3/2/1 1/3/1 -f 7/4/2 6/5/2 5/6/2 -f 10/7/1 3/8/1 4/9/1 -f 12/10/3 9/11/3 10/7/3 -f 14/12/4 11/13/4 12/10/4 -f 18/14/2 21/15/2 23/16/2 -f 15/17/5 23/16/5 21/15/5 -f 17/18/2 23/16/2 24/19/2 -f 18/14/5 25/20/5 20/21/5 -f 9/11/6 15/22/6 3/23/6 -f 16/24/7 10/7/7 4/25/7 -f 17/18/3 27/26/3 18/27/3 -f 19/28/8 28/29/8 17/30/8 -f 13/31/9 15/22/9 11/13/9 -f 24/19/3 23/16/3 14/32/3 -f 12/10/10 16/24/10 14/12/10 -f 20/33/2 22/34/2 21/15/2 -f 19/28/2 24/19/2 22/35/2 -f 22/35/8 16/36/8 2/1/8 -f 1/37/11 22/34/11 2/38/11 -f 29/39/1 26/40/1 25/41/1 -f 30/42/1 28/29/1 26/43/1 -f 32/44/1 27/26/1 28/45/1 -f 31/46/1 25/20/1 27/47/1 -f 33/48/11 30/49/11 29/39/11 -f 35/50/5 29/39/5 31/46/5 -f 36/51/3 31/46/3 32/44/3 -f 34/52/8 32/44/8 30/42/8 -f 39/53/2 33/48/2 35/50/2 -f 40/54/2 35/50/2 36/51/2 -f 38/55/2 36/51/2 34/52/2 -f 37/56/2 34/57/2 33/48/2 -f 38/58/11 5/59/11 6/60/11 -f 37/61/5 7/62/5 5/63/5 -f 39/64/3 8/65/3 7/66/3 -f 40/67/8 6/5/8 8/68/8 -f 20/33/11 26/40/11 19/69/11 -f 2/1/1 4/70/1 3/2/1 -f 7/4/2 8/68/2 6/5/2 -f 10/7/1 9/11/1 3/8/1 -f 12/10/3 11/13/3 9/11/3 -f 14/12/4 13/31/4 11/13/4 -f 18/14/2 20/21/2 21/15/2 -f 21/15/5 1/37/5 15/17/5 -f 1/37/5 3/71/5 15/17/5 -f 17/18/2 18/27/2 23/16/2 -f 18/14/5 27/47/5 25/20/5 -f 9/11/6 11/13/6 15/22/6 -f 16/24/7 12/10/7 10/7/7 -f 17/18/3 28/45/3 27/26/3 -f 19/28/8 26/43/8 28/29/8 -f 23/16/3 15/17/3 13/72/3 -f 14/32/3 16/36/3 24/19/3 -f 23/16/3 13/72/3 14/32/3 -f 20/33/2 19/69/2 22/34/2 -f 19/28/2 17/30/2 24/19/2 -f 24/19/8 16/36/8 22/35/8 -f 16/36/8 4/70/8 2/1/8 -f 1/37/11 21/15/11 22/34/11 -f 29/39/1 30/49/1 26/40/1 -f 30/42/1 32/44/1 28/29/1 -f 32/44/1 31/46/1 27/26/1 -f 31/46/1 29/39/1 25/20/1 -f 33/48/11 34/57/11 30/49/11 -f 35/50/5 33/48/5 29/39/5 -f 36/51/3 35/50/3 31/46/3 -f 34/52/8 36/51/8 32/44/8 -f 39/53/2 37/61/2 33/48/2 -f 40/54/2 39/64/2 35/50/2 -f 38/55/2 40/67/2 36/51/2 -f 37/56/2 38/58/2 34/57/2 -f 38/58/11 37/56/11 5/59/11 -f 37/61/5 39/53/5 7/62/5 -f 39/64/3 40/54/3 8/65/3 -f 40/67/8 38/55/8 6/5/8 -f 20/33/11 25/41/11 26/40/11 -o Plane.004 -v -4.500000 0.000000 2.500000 -v 0.500000 0.000000 2.500000 -v -4.500000 0.000000 -2.500000 -v 0.500000 0.000000 -2.500000 -v -4.000000 12.000000 2.000000 -v 0.000000 12.000000 2.000000 -v -4.000000 12.000000 -2.000000 -v 0.000000 12.000000 -2.000000 -v -3.500000 0.000000 -3.500000 -v -0.500000 0.000000 -3.500000 -v -3.500000 2.000000 -3.500000 -v -0.500000 2.000000 -3.500000 -v -3.500000 3.000000 -2.500000 -v -0.500000 3.000000 -2.500000 -v -4.500000 2.000000 -2.500000 -v 0.500000 2.000000 -2.500000 -v 0.000000 4.000000 -2.000000 -v -4.000000 4.000000 -2.000000 -v 0.000000 4.000000 2.000000 -v -4.000000 4.000000 2.000000 -v -4.500000 4.000000 2.500000 -v 0.500000 4.000000 2.500000 -v -4.500000 4.000000 -2.500000 -v 0.500000 4.000000 -2.500000 -v -4.000000 5.000000 2.000000 -v 0.000000 5.000000 2.000000 -v -4.000000 5.000000 -2.000000 -v 0.000000 5.000000 -2.000000 -v -4.500000 5.000000 2.500000 -v 0.500000 5.000000 2.500000 -v -4.500000 5.000000 -2.500000 -v 0.500000 5.000000 -2.500000 -v -4.500000 8.000000 2.500000 -v 0.500000 8.000000 2.500000 -v -4.500000 8.000000 -2.500000 -v 0.500000 8.000000 -2.500000 -v -4.000000 8.000000 2.000000 -v 0.000000 8.000000 2.000000 -v -4.000000 8.000000 -2.000000 -v 0.000000 8.000000 -2.000000 +f 22/21/6 23/22/6 21/23/6 +f 27/24/7 26/25/7 25/26/7 +f 30/27/6 23/28/6 24/29/6 +f 32/30/8 29/31/8 30/27/8 +f 34/32/9 31/33/9 32/30/9 +f 38/34/7 41/35/7 43/36/7 +f 35/37/10 43/36/10 41/35/10 +f 37/38/7 43/36/7 44/39/7 +f 38/34/10 45/40/10 40/41/10 +f 29/31/11 35/42/11 23/43/11 +f 36/44/12 30/27/12 24/45/12 +f 37/38/8 47/46/8 38/47/8 +f 39/48/13 48/49/13 37/50/13 +f 33/51/14 35/42/14 31/33/14 +f 33/52/8 34/53/8 44/39/8 +f 32/30/15 36/44/15 34/32/15 +f 40/54/7 42/55/7 41/35/7 +f 39/48/7 44/39/7 42/56/7 +f 42/56/13 36/57/13 22/21/13 +f 21/58/16 42/55/16 22/59/16 +f 49/60/6 46/61/6 45/62/6 +f 50/63/6 48/49/6 46/64/6 +f 52/65/6 47/46/6 48/66/6 +f 51/67/6 45/40/6 47/68/6 +f 53/69/16 50/70/16 49/60/16 +f 55/71/10 49/60/10 51/67/10 +f 56/72/8 51/67/8 52/65/8 +f 54/73/13 52/65/13 50/63/13 +f 59/74/7 53/69/7 55/71/7 +f 60/75/7 55/71/7 56/72/7 +f 58/76/7 56/72/7 54/73/7 +f 53/69/7 58/77/7 54/78/7 +f 26/79/16 57/80/16 25/81/16 +f 57/82/10 27/83/10 25/84/10 +f 59/85/8 28/86/8 27/87/8 +f 60/88/13 26/25/13 28/89/13 +f 40/54/16 46/61/16 39/90/16 +f 22/21/6 24/91/6 23/22/6 +f 27/24/7 28/89/7 26/25/7 +f 30/27/6 29/31/6 23/28/6 +f 32/30/8 31/33/8 29/31/8 +f 34/32/9 33/51/9 31/33/9 +f 38/34/7 40/41/7 41/35/7 +f 41/35/10 21/58/10 35/37/10 +f 21/58/10 23/92/10 35/37/10 +f 37/38/7 38/47/7 43/36/7 +f 38/34/10 47/68/10 45/40/10 +f 29/31/11 31/33/11 35/42/11 +f 36/44/12 32/30/12 30/27/12 +f 37/38/8 48/66/8 47/46/8 +f 39/48/13 46/64/13 48/49/13 +f 43/36/8 35/37/8 33/52/8 +f 34/53/8 36/57/8 44/39/8 +f 43/36/8 33/52/8 44/39/8 +f 40/54/7 39/90/7 42/55/7 +f 39/48/7 37/50/7 44/39/7 +f 44/39/13 36/57/13 42/56/13 +f 36/57/13 24/91/13 22/21/13 +f 21/58/16 41/35/16 42/55/16 +f 49/60/6 50/70/6 46/61/6 +f 50/63/6 52/65/6 48/49/6 +f 52/65/6 51/67/6 47/46/6 +f 51/67/6 49/60/6 45/40/6 +f 53/69/16 54/78/16 50/70/16 +f 55/71/10 53/69/10 49/60/10 +f 56/72/8 55/71/8 51/67/8 +f 54/73/13 56/72/13 52/65/13 +f 59/74/7 57/82/7 53/69/7 +f 60/75/7 59/85/7 55/71/7 +f 58/76/7 60/88/7 56/72/7 +f 53/69/7 57/80/7 58/77/7 +f 26/79/16 58/77/16 57/80/16 +f 57/82/10 59/74/10 27/83/10 +f 59/85/8 60/75/8 28/86/8 +f 60/88/13 58/76/13 26/25/13 +f 40/54/16 45/62/16 46/61/16 +o LeftLeg +v 4.625000 24.299997 2.625000 +v -0.625000 24.299999 2.625000 +v 4.625000 24.299997 -2.625000 +v -0.625000 24.299999 -2.625000 +v 4.099996 11.700000 2.100000 +v -0.100004 11.700001 2.100000 +v 4.099996 11.700000 -2.100000 +v -0.100004 11.700001 -2.100000 +v 3.575000 24.299999 -3.675000 +v 0.425000 24.299999 -3.675000 +v 3.574999 22.199999 -3.675000 +v 0.424999 22.199999 -3.675000 +v 3.574999 21.149998 -2.625000 +v 0.424999 21.150000 -2.625000 +v 4.625000 22.199999 -2.625000 +v -0.625001 22.200001 -2.625000 +v -0.100001 20.100000 -2.100000 +v 4.099998 20.099998 -2.100000 +v -0.100001 20.100000 2.100000 +v 4.099998 20.099998 2.100000 +v 4.624999 20.099998 2.625000 +v -0.625001 20.100000 2.625000 +v 4.624999 20.099998 -2.625000 +v -0.625001 20.100000 -2.625000 +v 4.099998 19.049999 2.100000 +v -0.100002 19.049999 2.100000 +v 4.099998 19.049999 -2.100000 +v -0.100002 19.049999 -2.100000 +v 4.624999 19.049999 2.625000 +v -0.625002 19.049999 2.625000 +v 4.624999 19.049999 -2.625000 +v -0.625002 19.049999 -2.625000 +v 4.624997 15.899998 2.625000 +v -0.625003 15.900000 2.625000 +v 4.624997 15.899998 -2.625000 +v -0.625003 15.900000 -2.625000 +v 4.099997 15.899999 2.100000 +v -0.100003 15.900000 2.100000 +v 4.099997 15.899999 -2.100000 +v -0.100003 15.900000 -2.100000 vt 0.250000 0.000000 vt 0.000000 0.222222 vt 0.000000 -0.000000 @@ -273,13 +338,14 @@ vt 0.225000 0.466667 vt 0.025000 0.422222 vt 0.225000 0.422222 vt 0.450000 0.177778 +vt 0.300000 0.355556 vt 0.450000 0.355556 vt 1.000000 0.400000 vt 0.775000 0.422222 vt 0.000000 0.400000 vt 0.250000 0.311111 -vt 0.750000 0.222222 vt 1.000000 0.222222 +vt 0.750000 0.222222 vt 0.975000 0.466667 vt 0.750000 0.488889 vt 0.775000 0.466667 @@ -289,7 +355,7 @@ vt 0.250000 0.488889 vt 0.275000 0.466667 vt 0.500000 0.488889 vt 0.525000 0.466667 -vt 1.000000 0.488889 +vt 1.000000 0.622222 vt 0.750000 0.622222 vt 0.500000 0.622222 vt 0.250000 0.622222 @@ -297,7 +363,6 @@ vt 0.000000 0.622222 vt 0.525000 0.644444 vt 0.275000 0.644444 vt 0.025000 0.644444 -vt 1.000000 0.622222 vt 0.775000 0.644444 vt 0.775000 0.822222 vt 0.975000 0.644444 @@ -313,207 +378,207 @@ vt 0.225000 0.822222 vt 0.975000 0.422222 vt 0.250000 0.222222 vt 0.500000 0.222222 -vt 0.300000 0.355556 -vn 0.0000 -1.0000 0.0000 +vt 1.000000 0.488889 vn 0.0000 1.0000 0.0000 +vn -0.0000 -1.0000 0.0000 vn 0.0000 0.0000 -1.0000 -vn 0.0000 0.7071 -0.7071 -vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 1.0000 -0.0000 0.0000 +vn 0.7071 -0.0000 -0.7071 vn -0.7071 0.0000 -0.7071 -vn 0.7071 0.0000 -0.7071 -vn 1.0000 0.0000 0.0000 -vn -0.5774 0.5774 -0.5774 -vn 0.5774 0.5774 -0.5774 +vn -1.0000 0.0000 0.0000 +vn 0.5774 -0.5774 -0.5773 +vn -0.5773 -0.5773 -0.5774 vn 0.0000 0.0000 1.0000 s off -f 43/73/12 42/74/12 41/75/12 -f 46/76/13 47/77/13 45/78/13 -f 43/79/12 50/80/12 44/81/12 -f 49/82/14 52/83/14 50/80/14 -f 51/84/15 54/85/15 52/83/15 -f 61/86/13 58/87/13 63/88/13 -f 61/86/16 63/88/16 55/89/16 -f 63/88/13 57/90/13 64/91/13 -f 65/92/16 58/87/16 60/93/16 -f 55/94/17 49/82/17 43/95/17 -f 50/80/18 56/96/18 44/97/18 -f 67/98/14 57/90/14 58/99/14 -f 68/100/19 59/101/19 57/102/19 -f 53/103/20 51/84/20 55/94/20 -f 64/91/14 53/104/14 63/88/14 -f 52/83/21 54/85/21 56/96/21 -f 62/105/13 60/106/13 61/86/13 -f 64/91/13 59/101/13 62/107/13 -f 42/74/19 56/108/19 62/107/19 -f 62/105/22 41/109/22 42/110/22 -f 66/111/12 69/112/12 65/113/12 -f 68/100/12 70/114/12 66/115/12 -f 67/98/12 72/116/12 68/117/12 -f 65/92/12 71/118/12 67/119/12 -f 70/120/22 73/121/22 69/112/22 -f 69/112/16 75/122/16 71/118/16 -f 71/118/14 76/123/14 72/116/14 -f 72/116/19 74/124/19 70/114/19 -f 73/121/13 79/125/13 75/122/13 -f 75/122/13 80/126/13 76/123/13 -f 76/123/13 78/127/13 74/124/13 -f 74/128/13 77/129/13 73/121/13 -f 45/130/22 78/131/22 46/132/22 -f 47/133/16 77/134/16 45/135/16 -f 48/136/14 79/137/14 47/138/14 -f 46/76/19 80/139/19 48/140/19 -f 66/111/22 60/106/22 59/141/22 -f 43/73/12 44/142/12 42/74/12 -f 46/76/13 48/140/13 47/77/13 -f 43/79/12 49/82/12 50/80/12 -f 49/82/14 51/84/14 52/83/14 -f 51/84/15 53/103/15 54/85/15 -f 61/86/13 60/93/13 58/87/13 -f 43/143/16 41/109/16 55/89/16 -f 41/109/16 61/86/16 55/89/16 -f 63/88/13 58/99/13 57/90/13 -f 65/92/16 67/119/16 58/87/16 -f 55/94/17 51/84/17 49/82/17 -f 50/80/18 52/83/18 56/96/18 -f 67/98/14 68/117/14 57/90/14 -f 68/100/19 66/115/19 59/101/19 -f 64/91/14 56/108/14 54/144/14 -f 53/104/14 55/89/14 63/88/14 -f 64/91/14 54/144/14 53/104/14 -f 62/105/13 59/141/13 60/106/13 -f 64/91/13 57/102/13 59/101/13 -f 44/142/19 56/108/19 42/74/19 -f 56/108/19 64/91/19 62/107/19 -f 62/105/22 61/86/22 41/109/22 -f 66/111/12 70/120/12 69/112/12 -f 68/100/12 72/116/12 70/114/12 -f 67/98/12 71/118/12 72/116/12 -f 65/92/12 69/112/12 71/118/12 -f 70/120/22 74/128/22 73/121/22 -f 69/112/16 73/121/16 75/122/16 -f 71/118/14 75/122/14 76/123/14 -f 72/116/19 76/123/19 74/124/19 -f 73/121/13 77/134/13 79/125/13 -f 75/122/13 79/137/13 80/126/13 -f 76/123/13 80/139/13 78/127/13 -f 74/128/13 78/131/13 77/129/13 -f 45/130/22 77/129/22 78/131/22 -f 47/133/16 79/125/16 77/134/16 -f 48/136/14 80/126/14 79/137/14 -f 46/76/19 78/127/19 80/139/19 -f 66/111/22 65/113/22 60/106/22 -o Plane.003 -v 8.500000 22.500000 0.500000 -v 8.500000 21.500000 0.500000 -v 8.500000 22.500000 -0.500000 -v 8.500000 21.500000 -0.500000 -v 9.000000 22.500000 -0.500000 -v 9.000000 22.500000 0.500000 -v 9.000000 21.500000 0.500000 -v 9.000000 21.500000 -0.500000 -v 9.000000 22.000000 -1.000000 -v 9.000000 22.707108 -0.707107 -v 9.000000 23.000000 0.000000 -v 9.000000 22.707108 0.707107 -v 9.000000 22.000000 1.000000 -v 9.000000 21.292892 0.707107 -v 9.000000 21.000000 -0.000000 -v 9.000000 21.292892 -0.707107 -v 9.250000 22.707108 -0.707107 -v 9.250000 22.000000 -1.000000 -v 9.250000 23.000000 0.000000 -v 9.250000 22.707108 0.707107 -v 9.250000 22.000000 1.000000 -v 9.250000 21.292892 0.707107 -v 9.250000 21.000000 -0.000000 -v 9.250000 21.292892 -0.707107 -v 8.500000 22.250000 0.500000 -v 8.500000 21.750000 0.500000 -v 8.500000 22.250000 2.500000 -v 8.500000 21.750000 2.500000 -v 8.750000 22.250000 0.500000 -v 8.750000 21.750000 0.500000 -v 8.750000 22.250000 2.500000 -v 8.750000 21.750000 2.500000 -v 8.750000 23.000000 0.500000 -v 8.750000 21.000000 0.500000 -v 8.750000 23.000000 -0.500000 -v 8.750000 21.000000 -0.500000 -v 8.500000 23.500000 0.500000 -v 8.500000 23.500000 -0.500000 -v 8.500000 20.500000 0.500000 -v 8.500000 20.500000 -0.500000 -v 8.000000 20.000000 2.000000 -v 8.000000 20.000000 -2.000000 -v 4.000000 20.000000 -2.000000 -v 4.000000 20.000000 2.000000 -v 3.500000 20.000000 -2.500000 -v 3.500000 20.000000 2.500000 -v 8.500000 20.000000 -2.500000 -v 8.500000 20.000000 2.500000 -v 3.500000 24.000000 -2.500000 -v 3.500000 24.000000 2.500000 -v 8.500000 24.000000 -2.500000 -v 8.500000 24.000000 2.500000 -v 5.000000 26.000000 -2.500000 -v 5.000000 26.000000 2.500000 -v 8.000000 18.000000 2.000000 -v 4.000000 18.000000 2.000000 -v 4.000000 18.000000 -2.000000 -v 8.000000 18.000000 -2.000000 -v 8.500000 18.000000 -2.500000 -v 8.500000 18.000000 2.500000 -v 3.500000 18.000000 -2.500000 -v 3.500000 18.000000 2.500000 -v 8.500000 14.000000 -2.500000 -v 8.500000 14.000000 2.500000 -v 3.500000 14.000000 -2.500000 -v 3.500000 14.000000 2.500000 -v 4.000000 14.000000 2.000000 -v 4.000000 14.000000 -2.000000 -v 8.000000 14.000000 -2.000000 -v 8.000000 14.000000 2.000000 -v 4.000000 13.000000 -2.000000 -v 4.000000 13.000000 2.000000 -v 8.000000 13.000000 -2.000000 -v 8.000000 13.000000 2.000000 -v 3.500000 13.000000 -2.500000 -v 3.500000 13.000000 2.500000 -v 8.500000 13.000000 -2.500000 -v 8.500000 13.000000 2.500000 -v 3.500000 11.000000 -2.500000 -v 3.500000 11.000000 2.500000 -v 8.000000 11.000000 -2.500000 -v 8.000000 11.000000 2.500000 -v 8.500000 26.000000 0.500000 -v 5.500000 26.000000 0.500000 -v 8.500000 26.000000 -0.500000 -v 5.500000 26.000000 -0.500000 -v 7.500000 24.000000 -0.500000 -v 7.500000 24.000000 0.500000 -v 5.500000 24.000000 0.500000 -v 5.500000 24.000000 -0.500000 +f 63/93/17 62/94/17 61/95/17 +f 66/96/18 67/97/18 65/98/18 +f 63/99/17 70/100/17 64/101/17 +f 69/102/19 72/103/19 70/100/19 +f 71/104/20 74/105/20 72/103/20 +f 81/106/18 78/107/18 83/108/18 +f 81/106/21 83/108/21 75/109/21 +f 83/108/18 77/110/18 84/111/18 +f 85/112/21 78/107/21 80/113/21 +f 75/114/22 69/102/22 63/115/22 +f 70/100/23 76/116/23 64/117/23 +f 87/118/19 77/110/19 78/119/19 +f 88/120/24 79/121/24 77/122/24 +f 73/123/25 71/104/25 75/114/25 +f 74/124/19 73/125/19 83/108/19 +f 72/103/26 74/105/26 76/116/26 +f 82/126/18 80/127/18 81/106/18 +f 84/111/18 79/121/18 82/128/18 +f 62/94/24 76/129/24 82/128/24 +f 62/130/27 81/106/27 61/131/27 +f 86/132/17 89/133/17 85/134/17 +f 88/120/17 90/135/17 86/136/17 +f 87/118/17 92/137/17 88/138/17 +f 85/112/17 91/139/17 87/140/17 +f 89/133/27 94/141/27 93/142/27 +f 89/133/21 95/143/21 91/139/21 +f 91/139/19 96/144/19 92/137/19 +f 92/137/24 94/145/24 90/135/24 +f 93/142/18 99/146/18 95/143/18 +f 95/143/18 100/147/18 96/144/18 +f 96/144/18 98/148/18 94/145/18 +f 94/141/18 97/149/18 93/142/18 +f 65/150/27 98/151/27 66/152/27 +f 67/153/21 97/154/21 65/155/21 +f 68/156/19 99/157/19 67/158/19 +f 66/96/24 100/159/24 68/160/24 +f 86/132/27 80/127/27 79/161/27 +f 63/93/17 64/162/17 62/94/17 +f 66/96/18 68/160/18 67/97/18 +f 63/99/17 69/102/17 70/100/17 +f 69/102/19 71/104/19 72/103/19 +f 71/104/20 73/123/20 74/105/20 +f 81/106/18 80/113/18 78/107/18 +f 63/163/21 61/131/21 75/109/21 +f 61/131/21 81/106/21 75/109/21 +f 83/108/18 78/119/18 77/110/18 +f 85/112/21 87/140/21 78/107/21 +f 75/114/22 71/104/22 69/102/22 +f 70/100/23 72/103/23 76/116/23 +f 87/118/19 88/138/19 77/110/19 +f 88/120/24 86/136/24 79/121/24 +f 84/111/19 76/129/19 74/124/19 +f 73/125/19 75/109/19 83/108/19 +f 84/111/19 74/124/19 83/108/19 +f 82/126/18 79/161/18 80/127/18 +f 84/111/18 77/122/18 79/121/18 +f 64/162/24 76/129/24 62/94/24 +f 76/129/24 84/111/24 82/128/24 +f 62/130/27 82/126/27 81/106/27 +f 86/132/17 90/164/17 89/133/17 +f 88/120/17 92/137/17 90/135/17 +f 87/118/17 91/139/17 92/137/17 +f 85/112/17 89/133/17 91/139/17 +f 89/133/27 90/164/27 94/141/27 +f 89/133/21 93/142/21 95/143/21 +f 91/139/19 95/143/19 96/144/19 +f 92/137/24 96/144/24 94/145/24 +f 93/142/18 97/154/18 99/146/18 +f 95/143/18 99/157/18 100/147/18 +f 96/144/18 100/159/18 98/148/18 +f 94/141/18 98/151/18 97/149/18 +f 65/150/27 97/149/27 98/151/27 +f 67/153/21 99/146/21 97/154/21 +f 68/156/19 100/147/19 99/157/19 +f 66/96/24 98/148/24 100/159/24 +f 86/132/27 85/134/27 80/127/27 +o RightArm +v -8.625008 1.275002 0.525000 +v -8.625007 2.325003 0.525000 +v -8.625008 1.275002 -0.525000 +v -8.625007 2.325003 -0.525000 +v -9.150007 1.275003 -0.525000 +v -9.150007 1.275003 0.525000 +v -9.150006 2.325005 0.525000 +v -9.150006 2.325005 -0.525000 +v -9.150007 1.800003 -1.050000 +v -9.150007 1.057541 -0.742462 +v -9.150007 0.750004 0.000000 +v -9.150007 1.057541 0.742462 +v -9.150007 1.800003 1.050000 +v -9.150006 2.542467 0.742462 +v -9.150006 2.850004 -0.000000 +v -9.150006 2.542467 -0.742462 +v -9.412508 1.057541 -0.742462 +v -9.412508 1.800003 -1.050000 +v -9.412508 0.750004 0.000000 +v -9.412508 1.057541 0.742462 +v -9.412508 1.800003 1.050000 +v -9.412507 2.542467 0.742462 +v -9.412507 2.850004 -0.000000 +v -9.412507 2.542467 -0.742462 +v -8.625008 1.537502 0.525000 +v -8.625007 2.062502 0.525000 +v -8.625008 1.537502 2.625000 +v -8.625007 2.062502 2.625000 +v -8.887507 1.537504 0.525000 +v -8.887506 2.062504 0.525000 +v -8.887507 1.537504 2.625000 +v -8.887506 2.062504 2.625000 +v -8.887507 0.750004 0.525000 +v -8.887506 2.850004 0.525000 +v -8.887507 0.750004 -0.525000 +v -8.887506 2.850004 -0.525000 +v -8.625008 0.225002 0.525000 +v -8.625008 0.225002 -0.525000 +v -8.625007 3.375002 0.525000 +v -8.625007 3.375002 -0.525000 +v -8.100007 3.900002 2.100000 +v -8.100007 3.900002 -2.100000 +v -3.900007 3.900002 -2.100000 +v -3.900007 3.900002 2.100000 +v -3.375006 3.900002 -2.625000 +v -3.375006 3.900002 2.625000 +v -8.625007 3.900002 -2.625000 +v -8.625007 3.900002 2.625000 +v -3.375008 -0.299997 -2.625000 +v -3.375008 -0.299997 2.625000 +v -8.625008 -0.299997 -2.625000 +v -8.625008 -0.299997 2.625000 +v -4.950008 -2.399998 -2.625000 +v -4.950008 -2.399998 2.625000 +v -8.100006 6.000002 2.100000 +v -3.900006 6.000002 2.100000 +v -3.900006 6.000002 -2.100000 +v -8.100006 6.000002 -2.100000 +v -8.625006 6.000002 -2.625000 +v -8.625006 6.000002 2.625000 +v -3.375006 6.000002 -2.625000 +v -3.375006 6.000002 2.625000 +v -8.625005 10.200003 -2.625000 +v -8.625005 10.200003 2.625000 +v -3.375005 10.200001 -2.625000 +v -3.375005 10.200001 2.625000 +v -3.900005 10.200001 2.100000 +v -3.900005 10.200001 -2.100000 +v -8.100005 10.200003 -2.100000 +v -8.100005 10.200003 2.100000 +v -3.900004 11.250001 -2.100000 +v -3.900004 11.250001 2.100000 +v -8.100004 11.250003 -2.100000 +v -8.100004 11.250003 2.100000 +v -3.375004 11.250001 -2.625000 +v -3.375004 11.250001 2.625000 +v -8.625004 11.250003 -2.625000 +v -8.625004 11.250003 2.625000 +v -3.375004 13.350000 -2.625000 +v -3.375004 13.350000 2.625000 +v -8.100004 13.350002 -2.625000 +v -8.100004 13.350002 2.625000 +v -8.625009 -2.399998 0.525000 +v -5.475008 -2.399998 0.525000 +v -8.625009 -2.399998 -0.525000 +v -5.475008 -2.399998 -0.525000 +v -7.575008 -0.299997 -0.525000 +v -7.575008 -0.299997 0.525000 +v -5.475008 -0.299997 0.525000 +v -5.475008 -0.299997 -0.525000 vt 0.650000 0.827586 vt 0.700000 0.810345 vt 0.700000 0.827586 -vt 0.725000 0.844828 -vt 0.700000 0.810345 vt 0.725000 0.810345 +vt 0.700000 0.844828 +vt 0.700000 0.810345 vt 0.725000 0.913793 vt 0.700000 0.879310 vt 0.725000 0.879310 vt 0.725000 0.948276 vt 0.700000 0.913793 -vt 0.700000 0.844828 +vt 0.725000 0.844828 vt 0.601300 0.034483 vt 0.650000 0.000897 vt 0.698699 0.034483 vt 0.476300 0.034483 vt 0.525000 0.000897 vt 0.573700 0.034483 -vt 0.575000 0.017241 -vt 0.600000 0.034483 vt 0.575000 0.034483 +vt 0.600000 0.017241 +vt 0.600000 0.034483 vt 0.575000 0.051724 vt 0.600000 0.068966 vt 0.575000 0.068966 @@ -523,7 +588,7 @@ vt 0.575000 0.103448 vt 0.600000 0.120690 vt 0.575000 0.120690 vt 0.575000 -0.000000 -vt 0.600000 0.017241 +vt 0.575000 0.017241 vt 0.600000 0.051724 vt 0.600000 0.086207 vt 0.600000 0.137931 @@ -550,9 +615,9 @@ vt -0.000000 0.551724 vt 0.975000 0.534483 vt 0.750000 0.551724 vt 1.000000 0.551724 -vt 0.725000 0.534483 -vt 0.500000 0.551724 vt 0.525000 0.534483 +vt 0.500000 0.551724 +vt 0.725000 0.534483 vt 0.475000 0.534483 vt 0.250000 0.689655 vt 0.325000 0.758621 @@ -565,7 +630,7 @@ vt -0.000000 0.758621 vt 0.750000 0.810345 vt 0.475000 0.465517 vt 0.275000 0.534483 -vt 0.975000 0.465517 +vt 0.775000 0.465517 vt 0.775000 0.534483 vt 0.225000 0.465517 vt 0.225000 0.534483 @@ -573,38 +638,38 @@ vt 0.250000 0.310345 vt 0.000000 0.448276 vt 0.250000 0.448276 vt 0.025000 0.465517 -vt 1.000000 0.448276 -vt 0.775000 0.465517 +vt 0.975000 0.465517 vt 0.500000 0.448276 vt 0.275000 0.465517 vt 0.475000 0.293103 vt 0.500000 0.310345 -vt 1.000000 0.310345 +vt 1.000000 0.448276 vt 0.750000 0.310345 vt 0.975000 0.258621 vt 0.775000 0.293103 vt 0.975000 0.293103 -vt 0.725000 0.293103 +vt 0.525000 0.293103 +vt 1.000000 0.310345 vt 0.025000 0.293103 vt -0.000000 0.310345 vt 0.750000 0.241379 vt 0.525000 0.258621 vt 0.725000 0.258621 -vt 0.525000 0.293103 -vt 0.475000 0.258621 +vt 0.725000 0.293103 +vt 0.275000 0.258621 vt 0.275000 0.293103 vt 0.225000 0.258621 vt 0.225000 0.293103 vt 0.475000 0.172414 vt 0.250000 0.241379 vt 0.500000 0.241379 -vt 0.275000 0.258621 +vt 0.475000 0.258621 vt 0.025000 0.258621 -vt 1.000000 0.241379 vt 0.775000 0.258621 vt 0.250000 -0.000000 vt 0.250000 0.172414 vt -0.000000 0.241379 +vt 1.000000 0.241379 vt 0.775000 0.172414 vt 0.750000 0.172414 vt 0.150000 0.931035 @@ -639,249 +704,249 @@ vt 0.250000 0.827586 vt 0.000000 0.827586 vt 0.100000 0.758621 vt 0.150000 1.000000 -vn 0.8944 -0.4472 0.0000 +vn -0.8944 0.4472 0.0000 vn 0.0000 0.0000 -1.0000 -vn 0.0000 0.0000 1.0000 -vn 0.0000 -1.0000 0.0000 +vn -0.0000 0.0000 1.0000 vn 0.0000 1.0000 0.0000 -vn -1.0000 0.0000 0.0000 +vn -0.0000 -1.0000 0.0000 vn 1.0000 0.0000 0.0000 -vn 0.0000 -0.3827 0.9239 -vn 0.0000 0.9239 0.3827 -vn 0.0000 0.3827 -0.9239 -vn 0.0000 -0.3827 -0.9239 -vn 0.0000 -0.9239 0.3827 +vn -1.0000 0.0000 0.0000 vn 0.0000 0.3827 0.9239 -vn 0.0000 0.9239 -0.3827 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 vn 0.0000 -0.9239 -0.3827 -vn 0.8944 0.4472 0.0000 -vn -0.8000 0.6000 0.0000 -vn 0.4961 0.8682 0.0000 -vn 0.9701 -0.2425 0.0000 +vn 0.0000 0.9239 -0.3827 +vn -0.8944 -0.4472 0.0000 +vn 0.8000 -0.6000 0.0000 +vn -0.4961 -0.8682 0.0000 +vn -0.9701 0.2425 0.0000 s off -f 114/145/23 120/146/23 116/147/23 -f 83/148/24 88/149/24 84/150/24 -f 82/151/25 86/152/25 81/153/25 -f 84/154/26 87/155/26 82/151/26 -f 81/153/27 85/156/27 83/148/27 -f 89/157/28 95/158/28 93/159/28 -f 101/160/29 103/161/29 98/162/29 -f 94/163/30 101/164/30 93/165/30 -f 92/166/31 99/167/31 91/168/31 -f 90/169/32 98/170/32 89/171/32 -f 89/171/33 104/172/33 96/173/33 -f 95/174/34 102/175/34 94/163/34 -f 93/165/35 100/176/35 92/166/35 -f 91/168/36 97/177/36 90/169/36 -f 96/173/37 103/178/37 95/179/37 -f 115/180/38 117/181/38 113/182/38 -f 109/183/29 112/184/29 110/185/29 -f 106/186/26 112/184/26 108/187/26 -f 114/145/29 115/180/29 113/182/29 -f 107/188/27 109/183/27 105/189/27 -f 108/190/25 111/191/25 107/192/25 -f 140/193/27 138/194/27 135/195/27 -f 125/196/26 124/197/26 126/198/26 -f 124/199/26 128/200/26 126/201/26 -f 121/202/26 127/203/26 128/200/26 -f 135/195/29 122/204/29 121/202/29 -f 122/205/26 125/196/26 127/203/26 -f 129/206/24 133/207/24 131/208/24 -f 129/206/24 127/203/24 125/196/24 -f 130/209/28 125/196/28 126/198/28 -f 132/210/25 126/201/25 128/200/25 -f 131/208/29 128/200/29 127/203/29 -f 130/211/25 132/210/25 134/212/25 -f 134/213/39 129/206/39 130/209/39 -f 131/208/40 134/214/40 132/210/40 -f 138/215/24 123/216/24 122/205/24 -f 136/217/25 121/218/25 124/199/25 -f 137/219/28 124/197/28 123/220/28 -f 145/221/28 142/222/28 141/223/28 -f 141/223/27 136/224/27 137/219/27 -f 142/225/27 135/226/27 136/217/27 -f 139/227/27 137/228/27 138/215/27 -f 149/229/26 145/221/26 143/230/26 -f 143/230/24 141/223/24 139/227/24 -f 146/231/25 140/193/25 142/225/25 -f 144/232/29 139/227/29 140/193/29 -f 152/233/25 150/234/25 147/235/25 -f 150/236/26 143/230/26 144/232/26 -f 146/231/26 150/234/26 144/232/26 -f 145/221/26 147/237/26 146/238/26 -f 158/239/27 153/240/27 154/241/27 -f 154/241/29 149/242/29 150/236/29 -f 153/243/24 148/244/24 149/229/24 -f 151/245/28 147/237/28 148/246/28 -f 161/247/24 155/248/24 157/249/24 -f 157/249/27 151/250/27 153/243/27 -f 155/248/27 152/251/27 151/245/27 -f 156/252/27 154/253/27 152/233/27 -f 161/247/26 160/254/26 159/255/26 -f 159/255/28 156/256/28 155/248/28 -f 156/252/25 162/257/25 158/239/25 -f 162/258/41 157/249/41 158/239/41 -f 165/259/27 164/260/27 163/261/27 -f 167/262/24 166/263/24 165/259/24 -f 164/260/25 168/264/25 163/261/25 -f 170/265/28 164/260/28 166/263/28 -f 168/266/23 165/259/23 163/261/23 -f 114/145/23 119/267/23 120/146/23 -f 83/148/24 85/156/24 88/149/24 -f 82/151/25 87/155/25 86/152/25 -f 84/154/26 88/268/26 87/155/26 -f 81/153/27 86/152/27 85/156/27 -f 91/269/28 90/270/28 89/157/28 -f 89/157/28 96/271/28 95/158/28 -f 95/158/28 94/272/28 93/159/28 -f 93/159/28 92/273/28 91/269/28 -f 91/269/28 89/157/28 93/159/28 -f 98/162/29 97/274/29 99/275/29 -f 99/275/29 100/276/29 101/160/29 -f 101/160/29 102/277/29 103/161/29 -f 103/161/29 104/278/29 98/162/29 -f 98/162/29 99/275/29 101/160/29 -f 94/163/30 102/175/30 101/164/30 -f 92/166/31 100/176/31 99/167/31 -f 90/169/32 97/177/32 98/170/32 -f 89/171/33 98/170/33 104/172/33 -f 95/174/34 103/279/34 102/175/34 -f 93/165/35 101/164/35 100/176/35 -f 91/168/36 99/167/36 97/177/36 -f 96/173/37 104/172/37 103/178/37 -f 115/180/38 118/280/38 117/181/38 -f 109/183/29 111/191/29 112/184/29 -f 106/186/26 110/185/26 112/184/26 -f 114/145/29 116/147/29 115/180/29 -f 107/188/27 111/191/27 109/183/27 -f 108/190/25 112/184/25 111/191/25 -f 140/193/27 139/227/27 138/194/27 -f 125/196/26 123/220/26 124/197/26 -f 124/199/26 121/218/26 128/200/26 -f 121/202/26 122/204/26 127/203/26 -f 135/195/29 138/194/29 122/204/29 -f 122/205/26 123/216/26 125/196/26 -f 129/206/24 131/208/24 127/203/24 -f 130/209/28 129/206/28 125/196/28 -f 132/210/25 130/211/25 126/201/25 -f 131/208/29 132/210/29 128/200/29 -f 134/213/39 133/281/39 129/206/39 -f 131/208/40 133/282/40 134/214/40 -f 138/215/24 137/228/24 123/216/24 -f 136/217/25 135/226/25 121/218/25 -f 137/219/28 136/224/28 124/197/28 -f 145/221/28 146/238/28 142/222/28 -f 141/223/27 142/222/27 136/224/27 -f 142/225/27 140/193/27 135/226/27 -f 139/227/27 141/223/27 137/228/27 -f 149/229/26 148/244/26 145/221/26 -f 143/230/24 145/221/24 141/223/24 -f 146/231/25 144/232/25 140/193/25 -f 144/232/29 143/230/29 139/227/29 -f 152/233/25 154/253/25 150/234/25 -f 150/236/26 149/242/26 143/230/26 -f 146/231/26 147/235/26 150/234/26 -f 145/221/26 148/246/26 147/237/26 -f 158/239/27 157/249/27 153/240/27 -f 154/241/29 153/240/29 149/242/29 -f 153/243/24 151/250/24 148/244/24 -f 151/245/28 152/251/28 147/237/28 -f 161/247/24 159/255/24 155/248/24 -f 157/249/27 155/248/27 151/250/27 -f 155/248/27 156/256/27 152/251/27 -f 156/252/27 158/239/27 154/253/27 -f 161/247/26 162/283/26 160/254/26 -f 159/255/28 160/284/28 156/256/28 -f 156/252/25 160/285/25 162/257/25 -f 162/258/41 161/286/41 157/249/41 -f 165/259/27 166/263/27 164/260/27 -f 167/262/24 170/287/24 166/263/24 -f 164/260/25 169/288/25 168/264/25 -f 170/265/28 169/289/28 164/260/28 -f 168/266/23 167/290/23 165/259/23 -o Plane.002 -v -8.000000 20.000000 2.000000 -v -8.000000 20.000000 -2.000000 -v -4.000000 20.000000 -2.000000 -v -4.000000 20.000000 2.000000 -v -3.500000 20.000000 -2.500000 -v -3.500000 20.000000 2.500000 -v -8.500000 20.000000 -2.500000 -v -8.500000 20.000000 2.500000 -v -3.500000 24.000000 -2.500000 -v -3.500000 24.000000 2.500000 -v -8.500000 24.000000 -2.500000 -v -8.500000 24.000000 2.500000 -v -5.000000 26.000000 -2.500000 -v -5.000000 26.000000 2.500000 -v -8.000000 18.000000 2.000000 -v -4.000000 18.000000 2.000000 -v -4.000000 18.000000 -2.000000 -v -8.000000 18.000000 -2.000000 -v -8.500000 18.000000 -2.500000 -v -8.500000 18.000000 2.500000 -v -3.500000 18.000000 -2.500000 -v -3.500000 18.000000 2.500000 -v -8.500000 14.000000 -2.500000 -v -8.500000 14.000000 2.500000 -v -3.500000 14.000000 -2.500000 -v -3.500000 14.000000 2.500000 -v -4.000000 14.000000 2.000000 -v -4.000000 14.000000 -2.000000 -v -8.000000 14.000000 -2.000000 -v -8.000000 14.000000 2.000000 -v -4.000000 13.000000 -2.000000 -v -4.000000 13.000000 2.000000 -v -8.000000 13.000000 -2.000000 -v -8.000000 13.000000 2.000000 -v -3.500000 13.000000 -2.500000 -v -3.500000 13.000000 2.500000 -v -8.500000 13.000000 -2.500000 -v -8.500000 13.000000 2.500000 -v -3.500000 11.000000 -2.500000 -v -3.500000 11.000000 2.500000 -v -8.000000 11.000000 -2.500000 -v -8.000000 11.000000 2.500000 -v -9.000000 22.500000 1.500000 -v -9.000000 21.500000 1.500000 -v -9.000000 22.500000 -0.500000 -v -9.000000 21.500000 -0.500000 -v -8.500000 23.500000 1.500000 -v -8.500000 20.500000 1.500000 -v -8.500000 23.500000 -0.500000 -v -8.500000 20.500000 -0.500000 -v -8.625000 22.500000 3.000000 -v -8.625000 21.500000 2.000000 -v -8.625000 22.500000 -1.000000 -v -8.625000 21.500000 -1.000000 -v -8.875000 22.500000 -1.000000 -v -8.875000 22.500000 3.000000 -v -8.875000 21.500000 2.000000 -v -8.875000 21.500000 -1.000000 -v -8.500000 22.750000 -1.000000 -v -8.500000 21.250000 -1.000000 -v -9.000000 22.750000 -1.000000 -v -9.000000 21.250000 -1.000000 -v -8.500000 21.250000 -1.500000 -v -8.500000 22.750000 -1.500000 -v -9.000000 21.250000 -1.500000 -v -9.000000 22.750000 -1.500000 -v -9.000000 21.750000 -1.500000 -v -8.500000 21.750000 -1.500000 -v -9.000000 22.250000 -1.500000 -v -8.500000 22.250000 -1.500000 -v -9.000000 22.250000 -2.500000 -v -9.000000 21.750000 -2.500000 -v -8.500000 21.750000 -2.500000 -v -8.500000 22.250000 -2.500000 -v -8.500000 26.000000 0.500000 -v -5.500000 26.000000 0.500000 -v -8.500000 26.000000 -0.500000 -v -5.500000 26.000000 -0.500000 -v -7.500000 24.000000 -0.500000 -v -7.500000 24.000000 0.500000 -v -5.500000 24.000000 0.500000 -v -5.500000 24.000000 -0.500000 +f 134/165/28 140/166/28 136/167/28 +f 104/168/29 105/169/29 108/170/29 +f 102/171/30 106/172/30 101/173/30 +f 104/174/31 107/175/31 102/171/31 +f 101/173/32 105/169/32 103/176/32 +f 109/177/33 115/178/33 113/179/33 +f 121/180/34 123/181/34 118/182/34 +f 113/183/35 122/184/35 121/185/35 +f 112/186/36 119/187/36 111/188/36 +f 110/189/37 118/190/37 109/191/37 +f 109/191/38 124/192/38 116/193/38 +f 115/194/39 122/184/39 114/195/39 +f 113/183/40 120/196/40 112/186/40 +f 111/188/41 117/197/41 110/189/41 +f 116/193/42 123/198/42 115/199/42 +f 135/200/43 137/201/43 133/202/43 +f 129/203/34 132/204/34 130/205/34 +f 126/206/31 132/204/31 128/207/31 +f 134/165/34 135/200/34 133/202/34 +f 127/208/32 129/203/32 125/209/32 +f 128/210/30 131/211/30 127/212/30 +f 160/213/32 158/214/32 155/215/32 +f 145/216/31 144/217/31 146/218/31 +f 144/219/31 148/220/31 146/221/31 +f 148/220/31 142/222/31 147/223/31 +f 155/215/34 142/222/34 141/224/34 +f 142/225/31 145/216/31 147/223/31 +f 149/226/29 153/227/29 151/228/29 +f 149/226/29 147/223/29 145/216/29 +f 150/229/33 145/216/33 146/218/33 +f 152/230/30 146/221/30 148/220/30 +f 151/228/34 148/220/34 147/223/34 +f 150/231/30 152/230/30 154/232/30 +f 154/233/44 149/226/44 150/229/44 +f 151/228/45 154/234/45 152/230/45 +f 158/235/29 143/236/29 142/225/29 +f 144/219/30 155/237/30 141/238/30 +f 157/239/33 144/217/33 143/240/33 +f 165/241/33 162/242/33 161/243/33 +f 161/243/32 156/244/32 157/239/32 +f 156/245/32 160/213/32 155/237/32 +f 159/246/32 157/247/32 158/235/32 +f 169/248/31 165/241/31 163/249/31 +f 159/246/29 165/241/29 161/243/29 +f 162/250/30 164/251/30 160/213/30 +f 164/251/34 159/246/34 160/213/34 +f 172/252/30 170/253/30 167/254/30 +f 164/251/31 169/255/31 163/249/31 +f 166/256/31 170/253/31 164/251/31 +f 165/241/31 167/257/31 166/258/31 +f 178/259/32 173/260/32 174/261/32 +f 174/261/34 169/255/34 170/262/34 +f 169/248/29 171/263/29 168/264/29 +f 171/265/33 167/257/33 168/266/33 +f 181/267/29 175/268/29 177/269/29 +f 177/269/32 171/263/32 173/270/32 +f 175/268/32 172/271/32 171/265/32 +f 172/252/32 178/259/32 174/272/32 +f 181/267/31 180/273/31 179/274/31 +f 179/274/33 176/275/33 175/268/33 +f 176/276/30 182/277/30 178/259/30 +f 182/278/46 177/269/46 178/259/46 +f 185/279/32 184/280/32 183/281/32 +f 187/282/29 186/283/29 185/279/29 +f 184/280/30 188/284/30 183/281/30 +f 190/285/33 184/280/33 186/283/33 +f 188/286/28 185/279/28 183/281/28 +f 134/165/28 139/287/28 140/166/28 +f 104/168/29 103/176/29 105/169/29 +f 102/171/30 107/175/30 106/172/30 +f 104/174/31 108/288/31 107/175/31 +f 101/173/32 106/172/32 105/169/32 +f 111/289/33 110/290/33 109/177/33 +f 109/177/33 116/291/33 115/178/33 +f 115/178/33 114/292/33 113/179/33 +f 113/179/33 112/293/33 111/289/33 +f 111/289/33 109/177/33 113/179/33 +f 118/182/34 117/294/34 119/295/34 +f 119/295/34 120/296/34 121/180/34 +f 121/180/34 122/297/34 123/181/34 +f 123/181/34 124/298/34 118/182/34 +f 118/182/34 119/295/34 121/180/34 +f 113/183/35 114/195/35 122/184/35 +f 112/186/36 120/196/36 119/187/36 +f 110/189/37 117/197/37 118/190/37 +f 109/191/38 118/190/38 124/192/38 +f 115/194/39 123/299/39 122/184/39 +f 113/183/40 121/185/40 120/196/40 +f 111/188/41 119/187/41 117/197/41 +f 116/193/42 124/192/42 123/198/42 +f 135/200/43 138/300/43 137/201/43 +f 129/203/34 131/211/34 132/204/34 +f 126/206/31 130/205/31 132/204/31 +f 134/165/34 136/167/34 135/200/34 +f 127/208/32 131/211/32 129/203/32 +f 128/210/30 132/204/30 131/211/30 +f 160/213/32 159/246/32 158/214/32 +f 145/216/31 143/240/31 144/217/31 +f 144/219/31 141/238/31 148/220/31 +f 148/220/31 141/224/31 142/222/31 +f 155/215/34 158/214/34 142/222/34 +f 142/225/31 143/236/31 145/216/31 +f 149/226/29 151/228/29 147/223/29 +f 150/229/33 149/226/33 145/216/33 +f 152/230/30 150/231/30 146/221/30 +f 151/228/34 152/230/34 148/220/34 +f 154/233/44 153/301/44 149/226/44 +f 151/228/45 153/302/45 154/234/45 +f 158/235/29 157/247/29 143/236/29 +f 144/219/30 156/245/30 155/237/30 +f 157/239/33 156/244/33 144/217/33 +f 165/241/33 166/258/33 162/242/33 +f 161/243/32 162/242/32 156/244/32 +f 156/245/32 162/250/32 160/213/32 +f 159/246/32 161/243/32 157/247/32 +f 169/248/31 168/264/31 165/241/31 +f 159/246/29 163/249/29 165/241/29 +f 162/250/30 166/256/30 164/251/30 +f 164/251/34 163/249/34 159/246/34 +f 172/252/30 174/272/30 170/253/30 +f 164/251/31 170/262/31 169/255/31 +f 166/256/31 167/254/31 170/253/31 +f 165/241/31 168/266/31 167/257/31 +f 178/259/32 177/269/32 173/260/32 +f 174/261/34 173/260/34 169/255/34 +f 169/248/29 173/270/29 171/263/29 +f 171/265/33 172/271/33 167/257/33 +f 181/267/29 179/274/29 175/268/29 +f 177/269/32 175/268/32 171/263/32 +f 175/268/32 176/275/32 172/271/32 +f 172/252/32 176/276/32 178/259/32 +f 181/267/31 182/303/31 180/273/31 +f 179/274/33 180/304/33 176/275/33 +f 176/276/30 180/305/30 182/277/30 +f 182/278/46 181/306/46 177/269/46 +f 185/279/32 186/283/32 184/280/32 +f 187/282/29 190/307/29 186/283/29 +f 184/280/30 189/308/30 188/284/30 +f 190/285/33 189/309/33 184/280/33 +f 188/286/28 187/310/28 185/279/28 +o LeftArm +v 8.099994 3.899998 2.100000 +v 8.099994 3.899998 -2.100000 +v 3.899994 3.899998 -2.100000 +v 3.899994 3.899998 2.100000 +v 3.374994 3.899998 -2.625000 +v 3.374994 3.899998 2.625000 +v 8.624993 3.899998 -2.625000 +v 8.624993 3.899998 2.625000 +v 3.374992 -0.300001 -2.625000 +v 3.374992 -0.300001 2.625000 +v 8.624992 -0.300001 -2.625000 +v 8.624992 -0.300001 2.625000 +v 4.949991 -2.400002 -2.625000 +v 4.949991 -2.400002 2.625000 +v 8.099995 5.999998 2.100000 +v 3.899994 5.999998 2.100000 +v 3.899994 5.999998 -2.100000 +v 8.099995 5.999998 -2.100000 +v 8.624994 5.999998 -2.625000 +v 8.624994 5.999998 2.625000 +v 3.374994 5.999998 -2.625000 +v 3.374994 5.999998 2.625000 +v 8.624995 10.199997 -2.625000 +v 8.624995 10.199997 2.625000 +v 3.374995 10.199999 -2.625000 +v 3.374995 10.199999 2.625000 +v 3.899996 10.199999 2.100000 +v 3.899996 10.199999 -2.100000 +v 8.099996 10.199997 -2.100000 +v 8.099996 10.199997 2.100000 +v 3.899996 11.249999 -2.100000 +v 3.899996 11.249999 2.100000 +v 8.099997 11.249997 -2.100000 +v 8.099997 11.249997 2.100000 +v 3.374996 11.249999 -2.625000 +v 3.374996 11.249999 2.625000 +v 8.624996 11.249997 -2.625000 +v 8.624996 11.249997 2.625000 +v 3.374996 13.349998 -2.625000 +v 3.374996 13.349998 2.625000 +v 8.099997 13.349997 -2.625000 +v 8.099997 13.349997 2.625000 +v 9.149992 1.274996 1.575000 +v 9.149993 2.324997 1.575000 +v 9.149992 1.274996 -0.525000 +v 9.149993 2.324997 -0.525000 +v 8.624992 0.224998 1.575000 +v 8.624993 3.374998 1.575000 +v 8.624992 0.224998 -0.525000 +v 8.624993 3.374998 -0.525000 +v 8.756243 1.274998 3.150000 +v 8.756244 2.324999 2.100000 +v 8.756243 1.274998 -1.050000 +v 8.756244 2.324999 -1.050000 +v 9.018743 1.274996 -1.050000 +v 9.018743 1.274996 3.150000 +v 9.018744 2.324997 2.100000 +v 9.018744 2.324997 -1.050000 +v 8.624992 1.012499 -1.050000 +v 8.624993 2.587498 -1.050000 +v 9.149992 1.012497 -1.050000 +v 9.149993 2.587496 -1.050000 +v 8.624993 2.587498 -1.575000 +v 8.624992 1.012499 -1.575000 +v 9.149993 2.587496 -1.575000 +v 9.149992 1.012497 -1.575000 +v 9.149993 2.062496 -1.575000 +v 8.624993 2.062498 -1.575000 +v 9.149992 1.537497 -1.575000 +v 8.624992 1.537498 -1.575000 +v 9.149992 1.537497 -2.625000 +v 9.149993 2.062496 -2.625000 +v 8.624993 2.062498 -2.625000 +v 8.624992 1.537498 -2.625000 +v 8.624991 -2.400002 0.525000 +v 5.474991 -2.400002 0.525000 +v 8.624991 -2.400002 -0.525000 +v 5.474991 -2.400002 -0.525000 +v 7.574992 -0.300001 -0.525000 +v 7.574992 -0.300001 0.525000 +v 5.474992 -0.300001 0.525000 +v 5.474992 -0.300001 -0.525000 vt 0.525000 0.465517 vt 0.750000 0.448276 vt 0.725000 0.465517 @@ -894,6 +959,7 @@ vt 1.000000 0.551724 vt 0.500000 0.551724 vt 0.725000 0.534483 vt 0.525000 0.534483 +vt 0.275000 0.534483 vt 0.475000 0.534483 vt 0.250000 0.689655 vt 0.500000 0.689655 @@ -904,7 +970,7 @@ vt 1.000000 0.689655 vt 0.925000 0.758621 vt -0.000000 0.758621 vt 0.750000 0.810345 -vt 0.275000 0.534483 +vt 0.275000 0.465517 vt 0.475000 0.465517 vt 0.775000 0.534483 vt 0.975000 0.465517 @@ -914,12 +980,11 @@ vt 0.000000 0.448276 vt 0.250000 0.310345 vt 0.250000 0.448276 vt 0.025000 0.465517 -vt 0.775000 0.465517 vt 1.000000 0.448276 -vt 0.275000 0.465517 vt 0.500000 0.448276 -vt 0.475000 0.293103 vt 0.500000 0.310345 +vt 0.275000 0.293103 +vt 0.475000 0.293103 vt 1.000000 0.310345 vt 0.750000 0.310345 vt 0.775000 0.293103 @@ -932,7 +997,6 @@ vt 0.525000 0.258621 vt 0.750000 0.241379 vt 0.725000 0.258621 vt 0.525000 0.293103 -vt 0.275000 0.293103 vt 0.475000 0.258621 vt 0.225000 0.258621 vt 0.225000 0.293103 @@ -941,7 +1005,6 @@ vt 0.475000 0.172414 vt 0.500000 0.241379 vt 0.275000 0.258621 vt 0.025000 0.258621 -vt 0.775000 0.258621 vt 1.000000 0.241379 vt 0.250000 -0.000000 vt 0.250000 0.172414 @@ -965,23 +1028,23 @@ vt 0.650000 0.948276 vt 0.650000 0.913793 vt 0.625000 0.810345 vt 0.650000 0.810345 -vt 0.375000 0.844828 -vt 0.450000 0.862069 vt 0.375000 0.862069 -vt 0.450000 0.810345 -vt 0.375000 0.827586 -vt 0.375000 0.810345 -vt 0.350000 0.844828 -vt 0.450000 0.827586 vt 0.450000 0.844828 +vt 0.450000 0.862069 +vt 0.375000 0.810345 +vt 0.450000 0.827586 +vt 0.375000 0.827586 +vt 0.350000 0.844828 +vt 0.375000 0.844828 vt 0.475000 0.827586 vt 0.475000 0.844828 -vt 0.375000 0.775862 -vt 0.400000 0.758621 vt 0.400000 0.775862 +vt 0.375000 0.758621 +vt 0.400000 0.758621 vt 0.375000 0.810345 vt 0.400000 0.810345 vt 0.350000 0.810345 +vt 0.375000 0.775862 vt 0.425000 0.775862 vt 0.425000 0.810345 vt 0.100000 0.827586 @@ -995,6 +1058,8 @@ vt 0.150000 0.758621 vt 0.100000 1.000000 vt 0.250000 0.758621 vt 0.500000 0.810345 +vt 0.775000 0.465517 +vt 0.775000 0.258621 vt 0.475000 0.000000 vt -0.000000 0.172414 vt 0.500000 0.172414 @@ -1002,389 +1067,381 @@ vt 0.250000 0.758621 vt 0.350000 0.862069 vt 0.500000 0.810345 vt 0.625000 0.948276 +vt 0.450000 0.810345 vt 0.350000 0.827586 -vt 0.375000 0.758621 vt 0.350000 0.775862 vt 0.250000 0.827586 vt 0.100000 0.758621 vt 0.150000 1.000000 -vn 0.0000 1.0000 0.0000 vn 0.0000 -1.0000 0.0000 -vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 vn 0.0000 0.0000 -1.0000 -vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 1.0000 -vn 0.8000 0.6000 0.0000 -vn -0.4961 0.8682 0.0000 -vn -0.9701 -0.2425 0.0000 -vn -0.8944 -0.4472 0.0000 -vn -0.8944 0.4472 0.0000 -vn 0.0000 -0.7071 0.7071 +vn -0.8000 -0.6000 0.0000 +vn 0.4961 -0.8682 0.0000 +vn 0.9701 0.2425 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.8944 -0.4472 0.0000 +vn 0.0000 0.7071 0.7071 s off -f 188/291/42 190/292/42 185/293/42 -f 174/294/43 175/295/43 176/296/43 -f 178/297/43 174/298/43 176/299/43 -f 177/300/43 171/301/43 178/297/43 -f 172/302/44 185/293/44 171/301/44 -f 175/295/43 172/303/43 177/300/43 -f 179/304/45 181/305/45 183/306/45 -f 177/300/45 179/304/45 175/295/45 -f 175/295/46 180/307/46 176/296/46 -f 176/299/47 182/308/47 178/297/47 -f 178/297/44 181/305/44 177/300/44 -f 180/309/47 184/310/47 182/308/47 -f 179/304/48 184/311/48 180/307/48 -f 184/312/49 181/305/49 182/308/49 -f 173/313/45 188/314/45 172/303/45 -f 171/315/47 186/316/47 174/298/47 -f 174/294/46 187/317/46 173/318/46 -f 192/319/46 195/320/46 191/321/46 -f 186/322/42 191/321/42 187/317/42 -f 185/323/42 192/324/42 186/316/42 -f 187/325/42 189/326/42 188/314/42 -f 195/320/43 199/327/43 193/328/43 -f 191/321/45 193/328/45 189/326/45 -f 190/292/47 196/329/47 192/324/47 -f 189/326/44 194/330/44 190/292/44 -f 200/331/47 202/332/47 197/333/47 -f 193/328/43 200/334/43 194/330/43 -f 200/331/43 196/329/43 194/330/43 -f 197/335/43 195/320/43 196/336/43 -f 203/337/42 208/338/42 204/339/42 -f 199/340/44 204/339/44 200/334/44 -f 198/341/45 203/342/45 199/327/45 -f 197/335/46 201/343/46 198/344/46 -f 205/345/45 211/346/45 207/347/45 -f 201/348/42 207/347/42 203/342/42 -f 202/349/42 205/345/42 201/343/42 -f 204/350/42 206/351/42 202/332/42 -f 210/352/43 211/346/43 209/353/43 -f 206/354/46 209/353/46 205/345/46 -f 206/351/47 212/355/47 210/356/47 -f 207/347/50 212/357/50 208/338/50 -f 215/358/44 214/359/44 213/360/44 -f 216/361/51 218/362/51 214/359/51 -f 213/360/52 219/363/52 215/358/52 -f 222/364/46 223/365/46 221/366/46 -f 225/367/44 227/368/44 226/369/44 -f 221/370/53 227/368/53 222/371/53 -f 222/371/43 228/372/43 224/373/43 -f 223/365/42 226/369/42 221/366/42 -f 231/374/47 230/375/47 229/376/47 -f 233/377/45 236/378/45 234/379/45 -f 229/380/42 236/378/42 231/374/42 -f 231/374/44 235/381/44 232/382/44 -f 232/382/43 233/383/43 230/384/43 -f 241/385/45 243/386/45 242/387/45 -f 239/388/44 242/387/44 237/389/44 -f 240/390/42 241/385/42 239/388/42 -f 237/389/43 243/391/43 238/392/43 -f 246/393/42 247/394/42 245/395/42 -f 248/396/45 249/397/45 247/394/45 -f 246/393/47 250/398/47 251/399/47 -f 246/393/46 252/400/46 248/396/46 -f 247/394/51 250/401/51 245/395/51 -f 188/291/42 189/326/42 190/292/42 -f 174/294/43 173/318/43 175/295/43 -f 178/297/43 171/315/43 174/298/43 -f 177/300/43 172/302/43 171/301/43 -f 172/302/44 188/291/44 185/293/44 -f 175/295/43 173/313/43 172/303/43 -f 177/300/45 181/305/45 179/304/45 -f 175/295/46 179/304/46 180/307/46 -f 176/299/47 180/309/47 182/308/47 -f 178/297/44 182/308/44 181/305/44 -f 179/304/48 183/402/48 184/311/48 -f 184/312/49 183/403/49 181/305/49 -f 173/313/45 187/325/45 188/314/45 -f 171/315/47 185/323/47 186/316/47 -f 174/294/46 186/322/46 187/317/46 -f 192/319/46 196/336/46 195/320/46 -f 186/322/42 192/319/42 191/321/42 -f 185/323/42 190/292/42 192/324/42 -f 187/325/42 191/321/42 189/326/42 -f 195/320/43 198/341/43 199/327/43 -f 191/321/45 195/320/45 193/328/45 -f 190/292/47 194/330/47 196/329/47 -f 189/326/44 193/328/44 194/330/44 -f 200/331/47 204/350/47 202/332/47 -f 193/328/43 199/340/43 200/334/43 -f 200/331/43 197/333/43 196/329/43 -f 197/335/43 198/344/43 195/320/43 -f 203/337/42 207/347/42 208/338/42 -f 199/340/44 203/337/44 204/339/44 -f 198/341/45 201/348/45 203/342/45 -f 197/335/46 202/349/46 201/343/46 -f 205/345/45 209/353/45 211/346/45 -f 201/348/42 205/345/42 207/347/42 -f 202/349/42 206/354/42 205/345/42 -f 204/350/42 208/338/42 206/351/42 -f 210/352/43 212/404/43 211/346/43 -f 206/354/46 210/405/46 209/353/46 -f 206/351/47 208/338/47 212/355/47 -f 207/347/50 211/406/50 212/357/50 -f 215/358/44 216/361/44 214/359/44 -f 216/361/51 220/407/51 218/362/51 -f 213/360/52 217/408/52 219/363/52 -f 222/364/46 224/409/46 223/365/46 -f 225/367/44 228/372/44 227/368/44 -f 221/370/53 226/410/53 227/368/53 -f 222/371/43 227/368/43 228/372/43 -f 223/365/42 225/367/42 226/369/42 -f 231/374/47 232/382/47 230/375/47 -f 233/377/45 235/381/45 236/378/45 -f 229/380/42 234/411/42 236/378/42 -f 231/374/44 236/378/44 235/381/44 -f 232/382/43 235/381/43 233/383/43 -f 241/385/45 244/412/45 243/386/45 -f 239/388/44 241/385/44 242/387/44 -f 240/390/42 244/413/42 241/385/42 -f 237/389/43 242/387/43 243/391/43 -f 246/393/42 248/396/42 247/394/42 -f 248/396/45 252/414/45 249/397/45 -f 246/393/47 245/395/47 250/398/47 -f 246/393/46 251/415/46 252/400/46 -f 247/394/51 249/416/51 250/401/51 -o Plane.001 -v -5.000000 32.000000 -4.000000 -v -5.000000 32.000000 4.000000 -v 4.000000 32.000000 5.000000 -v -4.000000 32.000000 5.000000 -v 4.000000 32.000000 -5.000000 -v -4.000000 32.000000 -5.000000 -v 5.000000 32.000000 4.000000 -v 5.000000 32.000000 -4.000000 -v -5.000000 30.000000 -4.000000 -v -5.000000 30.000000 4.000000 -v 4.000000 30.000000 5.000000 -v -4.000000 30.000000 5.000000 -v 4.000000 30.000000 -5.000000 -v -4.000000 30.000000 -5.000000 -v 5.000000 30.000000 4.000000 -v 5.000000 30.000000 -4.000000 -v -7.000000 29.000000 -4.000000 -v -7.000000 29.000000 4.000000 -v 4.000000 29.000000 7.000000 -v -4.000000 29.000000 7.000000 -v 4.000000 29.000000 -7.000000 -v -4.000000 29.000000 -7.000000 -v 7.000000 29.000000 4.000000 -v 7.000000 29.000000 -4.000000 -v 3.000000 34.000000 3.000000 -v 3.000000 34.000000 -3.000000 -v -3.000000 34.000000 -3.000000 -v -3.000000 34.000000 3.000000 -v -4.500000 32.000000 -3.500000 -v -4.500000 32.000000 3.500000 -v 3.500000 32.000000 4.500000 -v -3.500000 32.000000 4.500000 -v 3.500000 32.000000 -4.500000 -v -3.500000 32.000000 -4.500000 -v 4.500000 32.000000 3.500000 -v 4.500000 32.000000 -3.500000 -v -4.500000 24.000000 -3.500000 -v -4.500000 24.000000 3.500000 -v 3.500000 24.000000 4.500000 -v -3.500000 24.000000 4.500000 -v 3.500000 24.000000 -4.500000 -v -3.500000 24.000000 -4.500000 -v 4.500000 24.000000 3.500000 -v 4.500000 24.000000 -3.500000 -v 3.500000 23.000000 3.500000 -v 3.500000 23.000000 -3.500000 -v -3.500000 23.000000 -3.500000 -v -3.500000 23.000000 3.500000 -v -1.500000 27.000000 -4.500000 -v 1.500000 27.000000 -4.500000 -v -1.500000 24.000000 -4.500000 -v 1.500000 24.000000 -4.500000 -v -1.500000 24.000000 -5.500000 -v -1.500000 26.000000 -5.500000 -v 1.500000 26.000000 -5.500000 -v 1.500000 24.000000 -5.500000 -v 2.000000 29.500000 -4.500000 -v 0.700962 28.750000 -4.500000 -v 0.700962 27.250000 -4.500000 -v 2.000000 26.500000 -4.500000 -v 3.299038 27.250000 -4.500000 -v 3.299038 28.750000 -4.500000 -v -2.000000 29.500000 -4.500000 -v -3.299038 28.750000 -4.500000 -v -3.299038 27.250000 -4.500000 -v -2.000000 26.500000 -4.500000 -v -0.700962 27.250000 -4.500000 -v -0.700962 28.750000 -4.500000 -v -2.000000 29.500000 -5.000000 -v -3.299038 28.750000 -5.000000 -v -3.299038 27.250000 -5.000000 -v -2.000000 26.500000 -5.000000 -v -0.700962 27.250000 -5.000000 -v -0.700962 28.750000 -5.000000 -v 2.000000 29.500000 -5.000000 -v 0.700962 28.750000 -5.000000 -v 0.700962 27.250000 -5.000000 -v 2.000000 26.500000 -5.000000 -v 3.299038 27.250000 -5.000000 -v 3.299038 28.750000 -5.000000 -v -0.500000 30.000000 -4.000000 -v -1.000000 30.000000 -4.500000 -v -1.000000 34.000000 -4.500000 -v -0.500000 34.000000 -4.000000 -v -1.000000 30.000000 -5.500000 -v -0.500000 30.000000 -6.000000 -v -0.500000 34.000000 -6.000000 -v -1.000000 34.000000 -5.500000 -v 1.000000 30.000000 -4.500000 -v 0.500000 30.000000 -4.000000 -v 0.500000 34.000000 -4.000000 -v 1.000000 34.000000 -4.500000 -v 0.500000 30.000000 -6.000000 -v 1.000000 30.000000 -5.500000 -v 1.000000 34.000000 -5.500000 -v 0.500000 34.000000 -6.000000 -v -1.000000 32.000000 -6.000000 -v 1.000000 32.000000 -6.000000 -v -1.000000 34.000000 -6.000000 -v 1.000000 34.000000 -6.000000 -v -2.000000 35.000000 -7.000000 -v -2.000000 31.000000 -7.000000 -v 2.000000 31.000000 -7.000000 -v 2.000000 35.000000 -7.000000 -v -1.500000 34.500000 -7.000000 -v -1.500000 31.500000 -7.000000 -v 1.500000 31.500000 -7.000000 -v 1.500000 34.500000 -7.000000 -v -1.000000 34.000000 -7.500000 -v -1.000000 32.000000 -7.500000 -v 1.000000 32.000000 -7.500000 -v 1.000000 34.000000 -7.500000 -v 4.500000 28.500000 2.000000 -v 4.500000 25.500000 2.000000 -v 4.500000 28.500000 -2.000000 -v 4.500000 25.500000 -2.000000 -v 5.500000 28.500000 -2.000000 -v 5.500000 28.500000 2.000000 -v 5.500000 25.500000 2.000000 -v 5.500000 25.500000 -2.000000 -v 5.500000 28.000000 1.500000 -v 5.500000 26.000000 1.500000 -v 5.500000 28.000000 -1.500000 -v 5.500000 26.000000 -1.500000 -v 6.000000 28.000000 -1.500000 -v 6.000000 28.000000 1.500000 -v 6.000000 26.000000 1.500000 -v 6.000000 26.000000 -1.500000 -v 6.750000 29.000000 0.250000 -v 7.250000 29.000000 0.250000 -v 6.750000 29.000000 -0.250000 -v 7.250000 29.000000 -0.250000 -v 6.750000 35.000000 -0.250000 -v 6.750000 35.000000 0.250000 -v 7.250000 35.000000 0.250000 -v 7.250000 35.000000 -0.250000 -v 5.250000 27.000000 -0.250000 -v 5.250000 27.000000 0.250000 -v 5.750000 27.000000 0.250000 -v 5.750000 27.000000 -0.250000 -v -1.500000 22.878681 -5.207107 -v -1.000000 22.525127 -4.853554 -v 1.000000 22.525127 -4.853554 -v 1.500000 22.878681 -5.207107 -v -1.000000 24.646446 -6.974874 -v -1.500000 24.292892 -6.621319 -v 1.500000 24.292892 -6.621319 -v 1.000000 24.646446 -6.974874 -v -1.500000 22.878677 -8.035534 -v -1.000000 23.232231 -8.389088 -v -1.000000 21.110912 -6.267767 -v -1.500000 21.464464 -6.621321 -v 1.500000 21.464464 -6.621321 -v 1.000000 21.110912 -6.267767 -v 1.000000 23.232231 -8.389088 -v 1.500000 22.878677 -8.035534 -v -1.000000 24.646446 -4.146446 -v -0.500000 24.292892 -3.792893 -v 0.500000 24.292892 -3.792893 -v 1.000000 24.646446 -4.146446 -v -0.500000 25.707108 -5.207107 -v -1.000000 25.353554 -4.853554 -v 1.000000 25.353554 -4.853554 -v 0.500000 25.707108 -5.207107 -v -1.000000 23.939339 -6.267766 -v -0.500000 24.292892 -6.621321 -v -0.500000 22.878681 -5.207107 -v -1.000000 23.232235 -5.560660 -v 1.000000 23.232235 -5.560660 -v 0.500000 22.878681 -5.207107 -v 0.500000 24.292892 -6.621321 -v 1.000000 23.939339 -6.267766 -v -5.500000 28.500000 -2.000000 -v -5.500000 28.500000 2.000000 -v -5.500000 25.500000 2.000000 -v -5.500000 25.500000 -2.000000 -v -4.500000 28.500000 -2.000000 -v -4.500000 28.500000 2.000000 -v -4.500000 25.500000 2.000000 -v -4.500000 25.500000 -2.000000 -v -6.500000 26.000000 3.000000 -v -6.500000 28.000000 5.000000 -v -6.500000 26.000000 1.000000 -v -6.500000 28.000000 1.000000 -v -5.500000 26.000000 0.000000 -v -5.500000 28.000000 0.000000 -v -5.100000 30.000000 -1.375000 -v -5.100000 32.000000 -1.375000 -v -5.100000 30.000000 -2.625000 -v -5.100000 32.000000 -2.625000 -v -5.200001 30.000000 -0.375000 -v -5.200001 32.000000 -0.375000 -v -5.200001 30.000000 -1.625000 -v -5.200001 32.000000 -1.625000 -v -5.300001 30.500000 0.000000 -v -5.300001 30.000000 0.000000 -v -5.300001 30.000000 -3.000000 -v -5.300001 30.500000 -3.000000 -v -5.000000 30.000000 -4.000000 -v -5.000000 30.500000 -4.000000 -v -5.000000 30.500000 1.000000 -v -5.000000 30.000000 1.000000 +f 208/311/47 210/312/47 205/313/47 +f 194/314/48 195/315/48 196/316/48 +f 198/317/48 194/318/48 196/319/48 +f 197/320/48 191/321/48 198/317/48 +f 192/322/49 205/313/49 191/321/49 +f 197/320/48 193/323/48 192/324/48 +f 199/325/50 201/326/50 203/327/50 +f 195/315/50 201/326/50 199/325/50 +f 195/315/51 200/328/51 196/316/51 +f 196/319/52 202/329/52 198/317/52 +f 198/317/49 201/326/49 197/320/49 +f 200/330/52 204/331/52 202/329/52 +f 199/325/53 204/332/53 200/328/53 +f 204/333/54 201/326/54 202/329/54 +f 192/324/50 207/334/50 208/335/50 +f 191/336/52 206/337/52 194/318/52 +f 194/314/51 207/338/51 193/339/51 +f 212/340/51 215/341/51 211/342/51 +f 206/343/47 211/342/47 207/338/47 +f 206/337/47 210/312/47 212/344/47 +f 207/334/47 209/345/47 208/335/47 +f 213/346/48 218/347/48 219/348/48 +f 211/342/50 213/346/50 209/345/50 +f 210/312/52 216/349/52 212/344/52 +f 209/345/49 214/350/49 210/312/49 +f 220/351/52 222/352/52 217/353/52 +f 213/346/48 220/354/48 214/350/48 +f 214/350/48 217/353/48 216/349/48 +f 217/355/48 215/341/48 216/356/48 +f 223/357/47 228/358/47 224/359/47 +f 219/360/49 224/359/49 220/354/49 +f 218/347/50 223/361/50 219/348/50 +f 217/355/51 221/362/51 218/363/51 +f 225/364/50 231/365/50 227/366/50 +f 221/367/47 227/366/47 223/361/47 +f 222/368/47 225/364/47 221/362/47 +f 222/352/47 228/358/47 226/369/47 +f 230/370/48 231/365/48 229/371/48 +f 226/372/51 229/371/51 225/364/51 +f 226/369/52 232/373/52 230/374/52 +f 227/366/55 232/375/55 228/358/55 +f 235/376/49 234/377/49 233/378/49 +f 236/379/56 238/380/56 234/377/56 +f 233/378/57 239/381/57 235/376/57 +f 242/382/51 243/383/51 241/384/51 +f 245/385/49 247/386/49 246/387/49 +f 241/388/58 247/386/58 242/389/58 +f 242/389/48 248/390/48 244/391/48 +f 243/383/47 246/387/47 241/384/47 +f 249/392/52 252/393/52 250/394/52 +f 254/395/50 255/396/50 256/397/50 +f 249/398/47 256/397/47 251/399/47 +f 251/399/49 255/396/49 252/393/49 +f 252/393/48 253/400/48 250/401/48 +f 262/402/50 264/403/50 263/404/50 +f 259/405/49 262/402/49 257/406/49 +f 260/407/47 261/408/47 259/405/47 +f 257/406/48 263/409/48 258/410/48 +f 266/411/47 267/412/47 265/413/47 +f 268/414/50 269/415/50 267/412/50 +f 266/411/52 270/416/52 271/417/52 +f 266/411/51 272/418/51 268/414/51 +f 267/412/56 270/419/56 265/413/56 +f 208/311/47 209/345/47 210/312/47 +f 194/314/48 193/339/48 195/315/48 +f 198/317/48 191/336/48 194/318/48 +f 197/320/48 192/322/48 191/321/48 +f 192/322/49 208/311/49 205/313/49 +f 197/320/48 195/315/48 193/323/48 +f 195/315/50 197/320/50 201/326/50 +f 195/315/51 199/325/51 200/328/51 +f 196/319/52 200/330/52 202/329/52 +f 198/317/49 202/329/49 201/326/49 +f 199/325/53 203/420/53 204/332/53 +f 204/333/54 203/421/54 201/326/54 +f 192/324/50 193/323/50 207/334/50 +f 191/336/52 205/422/52 206/337/52 +f 194/314/51 206/343/51 207/338/51 +f 212/340/51 216/356/51 215/341/51 +f 206/343/47 212/340/47 211/342/47 +f 206/337/47 205/422/47 210/312/47 +f 207/334/47 211/342/47 209/345/47 +f 213/346/48 215/341/48 218/347/48 +f 211/342/50 215/341/50 213/346/50 +f 210/312/52 214/350/52 216/349/52 +f 209/345/49 213/346/49 214/350/49 +f 220/351/52 224/423/52 222/352/52 +f 213/346/48 219/360/48 220/354/48 +f 214/350/48 220/351/48 217/353/48 +f 217/355/48 218/363/48 215/341/48 +f 223/357/47 227/366/47 228/358/47 +f 219/360/49 223/357/49 224/359/49 +f 218/347/50 221/367/50 223/361/50 +f 217/355/51 222/368/51 221/362/51 +f 225/364/50 229/371/50 231/365/50 +f 221/367/47 225/364/47 227/366/47 +f 222/368/47 226/372/47 225/364/47 +f 222/352/47 224/423/47 228/358/47 +f 230/370/48 232/424/48 231/365/48 +f 226/372/51 230/425/51 229/371/51 +f 226/369/52 228/358/52 232/373/52 +f 227/366/55 231/426/55 232/375/55 +f 235/376/49 236/379/49 234/377/49 +f 236/379/56 240/427/56 238/380/56 +f 233/378/57 237/428/57 239/381/57 +f 242/382/51 244/429/51 243/383/51 +f 245/385/49 248/390/49 247/386/49 +f 241/388/58 246/430/58 247/386/58 +f 242/389/48 247/386/48 248/390/48 +f 243/383/47 245/385/47 246/387/47 +f 249/392/52 251/399/52 252/393/52 +f 254/395/50 253/431/50 255/396/50 +f 249/398/47 254/432/47 256/397/47 +f 251/399/49 256/397/49 255/396/49 +f 252/393/48 255/396/48 253/400/48 +f 262/402/50 261/408/50 264/403/50 +f 259/405/49 261/408/49 262/402/49 +f 260/407/47 264/433/47 261/408/47 +f 257/406/48 262/402/48 263/409/48 +f 266/411/47 268/414/47 267/412/47 +f 268/414/50 272/434/50 269/415/50 +f 266/411/52 265/413/52 270/416/52 +f 266/411/51 271/435/51 272/418/51 +f 267/412/56 269/436/56 270/419/56 +o Helmet +v 5.249990 -8.200001 -4.200000 +v 5.249990 -8.200001 4.200000 +v -4.200010 -8.200001 5.250000 +v 4.199989 -8.200001 5.250000 +v -4.200010 -8.200001 -5.250000 +v 4.199989 -8.200001 -5.250000 +v -5.250010 -8.200001 4.200000 +v -5.250010 -8.200001 -4.200000 +v 5.249990 -6.100002 -4.200000 +v 5.249990 -6.100002 4.200000 +v -4.200010 -6.099998 5.250000 +v 4.199990 -6.100002 5.250000 +v -4.200010 -6.099998 -5.250000 +v 4.199990 -6.100002 -5.250000 +v -5.250010 -6.099998 4.200000 +v -5.250010 -6.099998 -4.200000 +v 7.349990 -5.050001 -4.200000 +v 7.349990 -5.050001 4.200000 +v -4.200009 -5.049997 7.349999 +v 4.199990 -5.050001 7.349999 +v -4.200009 -5.049997 -7.349999 +v 4.199990 -5.050001 -7.349999 +v -7.350009 -5.049997 4.200000 +v -7.350009 -5.049997 -4.200000 +v -3.150011 -10.299999 3.150000 +v -3.150011 -10.299999 -3.150000 +v 3.149989 -10.299999 -3.150000 +v 3.149989 -10.299999 3.150000 +v 4.724989 -8.200001 -3.675000 +v 4.724989 -8.200001 3.675000 +v -3.675010 -8.200001 4.725000 +v 3.674989 -8.200001 4.725000 +v -3.675010 -8.200001 -4.725000 +v 3.674989 -8.200001 -4.725000 +v -4.725010 -8.200001 3.675000 +v -4.725010 -8.200001 -3.675000 +v 4.724992 0.199999 -3.675000 +v 4.724992 0.199999 3.675000 +v -3.675008 0.200003 4.725000 +v 3.674992 0.199999 4.725000 +v -3.675008 0.200003 -4.725000 +v 3.674992 0.199999 -4.725000 +v -4.725008 0.200003 3.675000 +v -4.725008 0.200003 -3.675000 +v -3.675007 1.250002 3.675000 +v -3.675007 1.250002 -3.675000 +v 3.674992 1.249998 -3.675000 +v 3.674992 1.249998 3.675000 +v 1.574991 -2.950001 -4.725000 +v -1.575009 -2.950001 -4.725000 +v 1.574992 0.200001 -4.725000 +v -1.575008 0.200001 -4.725000 +v 1.574992 0.200001 -5.775000 +v 1.574991 -1.900000 -5.775000 +v -1.575008 -1.900000 -5.775000 +v -1.575008 0.200001 -5.775000 +v -2.100009 -5.575001 -4.725000 +v -0.736019 -4.787500 -4.725000 +v -0.736019 -3.212500 -4.725000 +v -2.100008 -2.424999 -4.725000 +v -3.463999 -3.212498 -4.725000 +v -3.463999 -4.787498 -4.725000 +v 2.099990 -5.575001 -4.725000 +v 3.463980 -4.787502 -4.725000 +v 3.463981 -3.212502 -4.725000 +v 2.099991 -2.424999 -4.725000 +v 0.736001 -3.212500 -4.725000 +v 0.736001 -4.787500 -4.725000 +v 2.099990 -5.575001 -5.250000 +v 3.463980 -4.787502 -5.250000 +v 3.463981 -3.212502 -5.250000 +v 2.099991 -2.424999 -5.250000 +v 0.736001 -3.212500 -5.250000 +v 0.736001 -4.787500 -5.250000 +v -2.100009 -5.575001 -5.250000 +v -0.736019 -4.787500 -5.250000 +v -0.736019 -3.212500 -5.250000 +v -2.100008 -2.424999 -5.250000 +v -3.463999 -3.212498 -5.250000 +v -3.463999 -4.787498 -5.250000 +v 0.524990 -6.100000 -4.200000 +v 1.049990 -6.100000 -4.725000 +v 1.049989 -10.299999 -4.725000 +v 0.524989 -10.299999 -4.200000 +v 1.049990 -6.100000 -5.775000 +v 0.524990 -6.100000 -6.300000 +v 0.524989 -10.299999 -6.300000 +v 1.049989 -10.299999 -5.775000 +v -1.050010 -6.100000 -4.725000 +v -0.525010 -6.100000 -4.200000 +v -0.525011 -10.299999 -4.200000 +v -1.050011 -10.299999 -4.725000 +v -0.525010 -6.100000 -6.300000 +v -1.050010 -6.100000 -5.775000 +v -1.050011 -10.299999 -5.775000 +v -0.525011 -10.299999 -6.300000 +v 1.049989 -8.200001 -6.300000 +v -1.050010 -8.200001 -6.300000 +v 1.049989 -10.299999 -6.300000 +v -1.050011 -10.299999 -6.300000 +v 2.099988 -11.349998 -7.349999 +v 2.099990 -7.150000 -7.349999 +v -2.100010 -7.150000 -7.349999 +v -2.100011 -11.349998 -7.349999 +v -4.725009 -4.524998 2.100000 +v -4.725008 -1.374998 2.100000 +v -4.725009 -4.524998 -2.100000 +v -4.725008 -1.374998 -2.100000 +v -5.775009 -4.524998 -2.100000 +v -5.775009 -4.524998 2.100000 +v -5.775008 -1.374998 2.100000 +v -5.775008 -1.374998 -2.100000 +v -5.775009 -3.999998 1.575000 +v -5.775008 -1.899998 1.575000 +v -5.775009 -3.999998 -1.575000 +v -5.775008 -1.899998 -1.575000 +v -6.300009 -3.999998 -1.575000 +v -6.300009 -3.999998 1.575000 +v -6.300008 -1.899998 1.575000 +v -6.300008 -1.899998 -1.575000 +v -7.087509 -5.049997 0.262500 +v -7.612509 -5.049997 0.262500 +v -7.087509 -5.049997 -0.262500 +v -7.612509 -5.049997 -0.262500 +v -7.087511 -11.349995 -0.262500 +v -7.087511 -11.349995 0.262500 +v -7.612511 -11.349995 0.262500 +v -7.612511 -11.349995 -0.262500 +v -5.512508 -2.949999 -0.262500 +v -5.512508 -2.949999 0.262500 +v -6.037508 -2.949999 0.262500 +v -6.037508 -2.949999 -0.262500 +v 1.574993 1.377384 -5.467462 +v 1.049993 1.748615 -5.096232 +v -1.050007 1.748615 -5.096232 +v -1.575007 1.377384 -5.467462 +v 1.049992 -0.478769 -7.323617 +v 1.574992 -0.107536 -6.952385 +v -1.575008 -0.107536 -6.952385 +v -1.050008 -0.478769 -7.323617 +v 1.574993 1.377388 -8.437310 +v 1.049992 1.006157 -8.808541 +v 1.049993 3.233541 -6.581155 +v 1.574993 2.862312 -6.952386 +v -1.575007 2.862312 -6.952386 +v -1.050007 3.233541 -6.581155 +v -1.050007 1.006157 -8.808541 +v -1.575007 1.377388 -8.437310 +v 1.049992 -0.478769 -4.353768 +v 0.524992 -0.107536 -3.982538 +v -0.525008 -0.107536 -3.982538 +v -1.050008 -0.478769 -4.353768 +v 0.524992 -1.592463 -5.467462 +v 1.049992 -1.221231 -5.096231 +v -1.050008 -1.221231 -5.096231 +v -0.525008 -1.592463 -5.467462 +v 1.049992 0.263695 -6.581154 +v 0.524992 -0.107536 -6.952386 +v 0.524993 1.377384 -5.467462 +v 1.049992 1.006153 -5.838693 +v -1.050007 1.006153 -5.838693 +v -0.525007 1.377384 -5.467462 +v -0.525008 -0.107536 -6.952386 +v -1.050008 0.263695 -6.581154 +v 5.774991 -4.525002 -2.100000 +v 5.774991 -4.525002 2.100000 +v 5.774992 -1.375002 2.100000 +v 5.774992 -1.375002 -2.100000 +v 4.724991 -4.525002 -2.100000 +v 4.724991 -4.525002 2.100000 +v 4.724992 -1.375002 2.100000 +v 4.724992 -1.375002 -2.100000 +v 6.824991 -1.900002 3.150000 +v 6.824991 -4.000002 5.250000 +v 6.824991 -1.900002 1.050000 +v 6.824991 -4.000002 1.050000 +v 5.774991 -1.900002 0.000000 +v 5.774991 -4.000002 0.000000 +v 5.354990 -6.100002 -1.443750 +v 5.354990 -8.200001 -1.443750 +v 5.354990 -6.100002 -2.756250 +v 5.354990 -8.200001 -2.756250 +v 5.459991 -6.100002 -0.393750 +v 5.459990 -8.200001 -0.393750 +v 5.459991 -6.100002 -1.706250 +v 5.459990 -8.200001 -1.706250 +v 5.564991 -6.625002 0.000000 +v 5.564991 -6.100002 0.000000 +v 5.564991 -6.100002 -3.150000 +v 5.564991 -6.625002 -3.150000 +v 5.249990 -6.100002 -4.200000 +v 5.249990 -6.625002 -4.200000 +v 5.249990 -6.625002 1.050000 +v 5.249990 -6.100002 1.050000 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.280000 0.093023 +vt 0.600000 0.046512 +vt 0.600000 0.093023 +vt 0.720000 0.046512 +vt 0.640000 0.093023 +vt 0.640000 0.046512 +vt 0.640000 0.093023 +vt 0.720000 0.046512 +vt 0.720000 0.093023 +vt 0.720000 0.046512 +vt 0.640000 0.093023 +vt 0.640000 0.046512 +vt 0.640000 0.093023 +vt 0.720000 0.046512 +vt 0.720000 0.093023 +vt 0.600000 0.000000 +vt 0.760000 0.000000 +vt 0.760000 0.000000 +vt 0.280000 0.000000 +vt 0.600000 0.000000 vt 0.280000 0.046512 -vt 0.600000 0.093023 -vt 0.280000 0.093023 -vt 0.280000 0.093023 -vt 0.600000 0.046512 -vt 0.600000 0.093023 -vt 0.280000 0.093023 -vt 0.600000 0.046512 -vt 0.600000 0.093023 -vt 0.280000 0.093023 -vt 0.600000 0.046512 -vt 0.600000 0.093023 -vt 0.720000 0.046512 -vt 0.640000 0.093023 -vt 0.640000 0.046512 -vt 0.640000 0.093023 -vt 0.720000 0.046512 -vt 0.720000 0.093023 -vt 0.720000 0.046512 -vt 0.640000 0.093023 -vt 0.640000 0.046512 -vt 0.640000 0.093023 -vt 0.720000 0.046512 -vt 0.720000 0.093023 +vt 0.600000 -0.000000 vt 0.640000 0.046512 vt 0.760000 0.000000 -vt 0.600000 0.000000 vt 0.280000 0.046512 -vt 0.600000 0.000000 -vt 0.280000 0.046512 -vt 0.600000 -0.000000 -vt 0.640000 0.046512 -vt 0.280000 0.046512 -vt 0.600000 -0.000000 vt 0.760000 0.000000 vt 0.280000 -0.000000 -vt 0.600000 0.046512 +vt 0.280000 0.046512 vt 0.560000 0.162791 vt 0.320000 0.302326 vt 0.320000 0.162791 @@ -1431,38 +1488,37 @@ vt 0.280000 0.186047 vt 0.300000 0.162791 vt 0.320000 0.186047 vt 0.300000 0.162791 -vt 0.040000 0.441860 -vt 0.160000 0.395349 vt 0.160000 0.441860 -vt 0.160000 0.372093 vt 0.040000 0.395349 +vt 0.160000 0.395349 +vt 0.160000 0.372093 vt 0.040000 0.372093 -vt 0.040000 0.465116 vt 0.160000 0.465116 +vt 0.040000 0.441860 vt -0.000000 0.395349 vt -0.000000 0.465116 vt 0.200000 0.395349 vt 0.280000 0.372093 vt 0.320000 0.418605 vt 0.280000 0.418605 -vt 0.400000 0.372093 -vt 0.440000 0.418605 vt 0.400000 0.418605 +vt 0.440000 0.372093 +vt 0.440000 0.418605 vt 0.220000 0.372093 vt 0.260000 0.418605 vt 0.220000 0.418605 vt 0.660000 0.465116 vt 0.740000 0.418605 vt 0.740000 0.465116 -vt 0.540000 0.418605 -vt 0.440000 0.406977 +vt 0.440000 0.360465 vt 0.460000 0.348837 +vt 0.540000 0.418605 vt 0.360000 0.465116 vt 0.440000 0.418605 vt 0.440000 0.465116 -vt 0.460000 0.465116 vt 0.540000 0.465116 -vt 0.440000 0.523256 +vt 0.460000 0.418605 +vt 0.460000 0.465116 vt 0.560000 0.476744 vt 0.800000 0.406977 vt 0.740000 0.395349 @@ -1477,9 +1533,6 @@ vt 0.860000 0.406977 vt 0.620000 0.406977 vt 0.560000 0.395349 vt 0.740000 0.406977 -vt 0.770035 0.472036 -vt 0.770035 0.411685 -vt 0.859930 0.441860 vt 0.620000 0.406977 vt 0.560000 0.395349 vt 0.620000 0.395349 @@ -1493,17 +1546,14 @@ vt 0.860000 0.395349 vt 0.920000 0.395349 vt 0.680000 0.406977 vt 0.860000 0.406977 -vt 0.770035 0.472036 -vt 0.770035 0.411685 -vt 0.859930 0.441860 -vt 1.000000 0.139535 -vt 0.960000 0.046512 vt 1.000000 0.046512 +vt 0.960000 0.139535 +vt 0.960000 0.046512 vt 0.820000 0.139535 vt 0.780000 0.046512 vt 0.820000 0.046512 -vt 0.900000 0.151163 vt 0.880000 0.186047 +vt 0.840000 0.186047 vt 0.820000 0.174419 vt 0.940000 0.139535 vt 0.900000 0.046512 @@ -1511,14 +1561,12 @@ vt 0.940000 0.046512 vt 0.880000 0.139535 vt 0.840000 0.046512 vt 0.880000 0.046512 -vt 0.960000 0.139535 vt 0.900000 0.139535 vt 0.840000 0.139535 -vt 0.760000 0.046512 -vt 0.780000 0.139535 vt 0.760000 0.139535 -vt 0.820000 0.034884 +vt 0.780000 0.139535 vt 0.840000 0.000000 +vt 0.880000 0.000000 vt 0.900000 0.011628 vt 0.800000 0.279070 vt 0.880000 0.232558 @@ -1529,20 +1577,12 @@ vt 0.920000 0.302326 vt 0.880000 0.279070 vt 0.760000 0.302326 vt 0.800000 0.279070 +vt 0.800000 0.279070 +vt 0.920000 0.302326 +vt 0.760000 0.302326 vt 0.880000 0.279070 vt 0.760000 0.302326 vt 0.800000 0.279070 -vt 0.880000 0.279070 -vt 0.760000 0.302326 -vt 0.800000 0.279070 -vt 0.320000 0.372093 -vt 0.420000 0.360465 -vt 0.440000 0.372093 -vt 0.340000 0.313953 -vt 0.420000 0.313953 -vt 0.440000 0.302326 -vt 0.320000 0.302326 -vt 0.340000 0.360465 vt 0.600000 0.186047 vt 0.760000 0.255814 vt 0.600000 0.255814 @@ -1553,7 +1593,6 @@ vt 0.760000 0.279070 vt 0.800000 0.255814 vt 0.760000 0.186047 vt 0.800000 0.186047 -vt 0.560000 0.186047 vt 0.560000 0.255814 vt 0.580000 0.290698 vt 0.700000 0.337209 @@ -1561,7 +1600,6 @@ vt 0.580000 0.337209 vt 0.720000 0.337209 vt 0.700000 0.290698 vt 0.720000 0.290698 -vt 0.560000 0.290698 vt 0.560000 0.337209 vt 0.700000 0.279070 vt 0.580000 0.279070 @@ -1582,26 +1620,26 @@ vt 0.920000 0.290698 vt 1.000000 0.232558 vt 0.980000 0.232558 vt 0.940000 0.232558 -vt 0.560000 0.465116 vt 0.560000 0.418605 vt 0.640000 0.418605 vt 0.640000 0.465116 -vt 0.360000 0.418605 -vt 0.340000 0.465116 vt 0.340000 0.418605 +vt 0.360000 0.418605 vt 0.260000 0.372093 vt 0.200000 0.418605 vt 0.200000 0.372093 -vt 0.380000 0.372093 vt 0.380000 0.418605 +vt 0.400000 0.372093 vt 0.340000 0.418605 vt 0.320000 0.372093 vt 0.340000 0.372093 +vt 0.380000 0.372093 vt 0.600000 0.255814 vt 0.760000 0.186047 vt 0.760000 0.255814 vt 0.560000 0.186047 vt 0.600000 0.186047 +vt 0.800000 0.186047 vt 0.800000 0.255814 vt 0.760000 0.162791 vt 0.600000 0.279070 @@ -1621,10 +1659,10 @@ vt 0.160000 0.465116 vt 0.040000 0.476744 vt -0.000000 0.465116 vt 0.200000 0.476744 -vt 0.760000 0.000000 -vt 0.280000 0.000000 +vt 0.280000 0.046512 +vt 0.640000 0.046512 +vt 0.600000 0.000000 vt 0.280000 -0.000000 -vt 0.760000 0.000000 vt 0.280000 -0.000000 vt 0.560000 0.302326 vt 0.320000 0.162791 @@ -1634,41 +1672,40 @@ vt 0.280000 -0.000000 vt 0.000000 0.162791 vt 0.000000 0.162791 vt 0.280000 0.162791 +vt 0.040000 0.465116 vt 0.200000 0.465116 -vt 0.440000 0.372093 vt 0.660000 0.418605 vt 0.540000 0.348837 vt 0.560000 0.360465 vt 0.560000 0.406977 -vt 0.460000 0.418605 -vt 0.440000 0.360465 +vt 0.440000 0.406977 vt 0.560000 0.523256 vt 0.540000 0.534884 vt 0.460000 0.534884 +vt 0.440000 0.523256 vt 0.440000 0.476744 vt 0.560000 0.406977 -vt 0.829965 0.472036 -vt 0.740070 0.441860 -vt 0.829965 0.411685 vt 0.560000 0.406977 -vt 0.829965 0.472036 -vt 0.740070 0.441860 -vt 0.829965 0.411685 +vt 1.000000 0.139535 vt 0.820000 0.151163 +vt 0.900000 0.151163 vt 0.900000 0.174419 -vt 0.840000 0.186047 +vt 0.760000 0.046512 vt 0.900000 0.034884 +vt 0.820000 0.034884 vt 0.820000 0.011628 -vt 0.880000 0.000000 vt 0.800000 0.232558 vt 0.760000 0.395349 vt 0.920000 0.302326 +vt 0.880000 0.279070 vt 0.920000 0.302326 -vt 0.920000 0.302326 +vt 0.560000 0.186047 +vt 0.560000 0.290698 vt 1.000000 0.430233 vt 0.920000 0.232558 +vt 0.560000 0.465116 +vt 0.340000 0.465116 vt 0.560000 0.255814 -vt 0.800000 0.186047 vt 0.600000 0.162791 vt 0.760000 0.279070 vt 1.000000 0.232558 @@ -1679,661 +1716,641 @@ vt -0.000000 0.476744 vt 0.200000 0.465116 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 -vn -1.0000 0.0000 0.0000 vn 1.0000 0.0000 0.0000 -vn -0.7071 0.0000 -0.7071 -vn -0.7071 0.0000 0.7071 -vn 0.7071 0.0000 0.7071 +vn -1.0000 0.0000 0.0000 vn 0.7071 0.0000 -0.7071 -vn 0.4082 0.8165 -0.4082 -vn 0.4082 0.8165 0.4082 -vn 0.0000 0.8944 -0.4472 -vn -0.4472 0.8944 0.0000 -vn -0.4082 0.8165 0.4082 -vn 0.4472 0.8944 0.0000 -vn -0.4082 0.8165 -0.4082 -vn 0.0000 0.8944 0.4472 -vn 0.0000 1.0000 0.0000 -vn 0.0000 0.7071 -0.7071 -vn -0.7071 0.7071 0.0000 -vn 0.0000 0.7071 0.7071 -vn 0.7071 0.7071 0.0000 -vn 0.4851 0.7276 0.4851 -vn 0.4851 0.7276 -0.4851 -vn -0.4851 0.7276 -0.4851 -vn -0.4851 0.7276 0.4851 +vn 0.7071 -0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.4082 -0.8165 -0.4082 +vn -0.4082 -0.8165 0.4082 +vn -0.0000 -0.8944 -0.4472 +vn 0.4472 -0.8944 0.0000 +vn 0.4082 -0.8165 0.4082 +vn -0.4472 -0.8944 0.0000 +vn 0.4082 -0.8165 -0.4082 +vn -0.0000 -0.8944 0.4472 vn 0.0000 -1.0000 0.0000 vn 0.0000 -0.7071 -0.7071 vn 0.7071 -0.7071 0.0000 -vn 0.5774 -0.5774 -0.5774 -vn -0.7071 -0.7071 0.0000 -vn -0.5774 -0.5774 -0.5774 vn 0.0000 -0.7071 0.7071 -vn -0.5774 -0.5774 0.5774 -vn 0.5774 -0.5774 0.5774 -vn 0.5000 0.8660 0.0000 -vn 0.5000 -0.8660 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.4851 -0.7276 0.4851 +vn -0.4851 -0.7276 -0.4851 +vn 0.4851 -0.7276 -0.4851 +vn 0.4851 -0.7276 0.4851 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +vn -0.5774 0.5774 -0.5774 +vn 0.7071 0.7071 0.0000 +vn 0.5773 0.5774 -0.5774 +vn 0.0000 0.7071 0.7071 +vn 0.5773 0.5774 0.5774 +vn -0.5774 0.5774 0.5774 vn -0.5000 -0.8660 0.0000 vn -0.5000 0.8660 0.0000 -vn 0.8000 -0.6000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 vn -0.8000 0.6000 0.0000 -vn 0.7071 0.5000 -0.5000 -vn -0.7071 0.5000 -0.5000 -vn -0.7071 -0.5000 0.5000 -vn 0.7071 -0.5000 0.5000 -vn -0.9578 0.0000 -0.2873 -vn -0.9578 0.0000 0.2874 -vn -0.9578 0.0000 -0.2874 -vn -0.9578 0.0000 0.2873 +vn 0.8000 -0.6000 0.0000 +vn -0.7071 -0.5000 -0.5000 +vn 0.7071 -0.5000 -0.5000 +vn 0.7071 0.5000 0.5000 +vn -0.7071 0.5000 0.5000 +vn 0.9578 0.0000 -0.2873 +vn 0.9578 0.0000 0.2873 s off -f 264/417/54 255/418/54 256/419/54 -f 257/420/55 266/421/55 258/422/55 -f 253/423/56 262/424/56 254/425/56 -f 259/426/57 268/427/57 260/428/57 -f 261/429/58 258/430/58 266/431/58 -f 254/432/59 264/433/59 256/434/59 -f 267/435/60 255/436/60 263/437/60 -f 260/438/61 265/439/61 257/440/61 -f 268/441/62 273/442/62 265/439/62 -f 271/443/63 267/435/63 263/437/63 -f 265/444/64 274/445/64 266/421/64 -f 261/446/65 270/447/65 262/424/65 -f 270/447/66 264/433/66 262/448/66 -f 267/449/67 276/450/67 268/427/67 -f 266/431/68 269/451/68 261/429/68 -f 272/452/69 263/453/69 264/417/69 -f 279/454/70 277/455/70 278/456/70 -f 279/454/71 257/420/71 258/422/71 -f 280/457/72 253/423/72 254/425/72 -f 255/418/73 280/458/73 256/419/73 -f 278/459/74 259/426/74 260/428/74 -f 259/460/75 277/461/75 255/436/75 -f 260/438/76 257/440/76 278/462/76 -f 253/463/77 279/464/77 258/430/77 -f 254/432/78 256/434/78 280/465/78 -f 286/466/58 289/467/58 281/468/58 -f 285/469/55 294/470/55 286/466/55 -f 281/471/56 290/472/56 282/473/56 -f 296/474/61 285/475/61 288/476/61 -f 290/472/59 284/477/59 282/473/59 -f 287/478/57 296/474/57 288/476/57 -f 292/479/54 283/480/54 284/481/54 -f 283/480/60 295/482/60 287/483/60 -f 297/484/79 299/485/79 298/486/79 -f 293/487/80 299/485/80 294/470/80 -f 295/488/81 298/489/81 296/474/81 -f 296/474/82 298/490/82 293/491/82 -f 289/492/83 300/493/83 290/472/83 -f 289/467/84 294/470/84 299/494/84 -f 300/495/85 291/496/85 292/479/85 -f 290/472/86 300/497/86 292/498/86 -f 295/482/87 291/496/87 297/499/87 -f 307/500/55 305/501/55 306/502/55 -f 303/503/79 308/504/79 304/505/79 -f 302/506/71 306/502/71 301/507/71 -f 304/508/57 307/500/57 302/509/57 -f 303/510/56 306/502/56 305/501/56 -f 423/511/71 413/512/71 416/513/71 -f 419/514/85 411/515/85 410/516/85 -f 421/517/57 415/518/57 412/519/57 -f 394/520/85 406/521/85 395/522/85 -f 402/523/80 408/524/80 406/525/80 -f 396/526/57 408/527/57 399/528/57 -f 400/529/71 402/523/71 397/530/71 -f 396/531/73 400/529/73 398/532/73 -f 326/533/88 315/534/88 320/535/88 -f 324/536/89 319/537/89 318/538/89 -f 322/539/56 317/540/56 316/541/56 -f 325/542/57 320/535/57 319/537/57 -f 323/543/90 318/544/90 317/540/90 -f 321/545/91 316/541/91 315/534/91 -f 321/546/55 325/547/55 323/548/55 -f 329/549/90 312/550/90 311/551/90 -f 327/552/91 310/553/91 309/554/91 -f 332/555/88 309/554/88 314/556/88 -f 330/557/89 313/558/89 312/559/89 -f 328/560/56 311/551/56 310/553/56 -f 331/561/57 314/556/57 313/558/57 -f 327/562/55 331/563/55 329/564/55 -f 343/565/54 333/566/54 342/567/54 -f 347/568/57 341/569/57 346/570/57 -f 340/571/70 336/572/70 344/573/70 -f 335/574/56 337/575/56 334/576/56 -f 339/577/55 345/578/55 338/579/55 -f 336/580/59 334/576/59 333/566/59 -f 338/579/58 340/581/58 339/577/58 -f 346/570/61 348/582/61 347/568/61 -f 342/583/60 344/584/60 343/585/60 -f 346/586/79 342/587/79 334/588/79 -f 350/589/54 351/590/54 349/591/54 -f 353/592/55 355/593/55 354/594/55 -f 350/595/60 356/596/60 352/597/60 -f 351/598/59 354/599/59 349/600/59 -f 352/601/73 353/602/73 351/603/73 -f 350/589/85 354/594/85 355/593/85 -f 360/604/71 361/605/71 357/606/71 -f 361/605/55 363/607/55 362/608/55 -f 357/606/58 362/608/58 358/609/58 -f 358/609/80 363/607/80 359/610/80 -f 359/610/61 364/611/61 360/604/61 -f 371/612/57 369/613/57 370/614/57 -f 368/615/79 371/612/79 366/616/79 -f 365/617/70 369/613/70 367/618/70 -f 367/619/55 372/620/55 368/621/55 -f 366/622/54 370/614/54 365/623/54 -f 379/624/57 377/625/57 378/626/57 -f 375/627/55 380/628/55 376/629/55 -f 374/630/54 378/626/54 373/631/54 -f 376/632/79 379/624/79 374/633/79 -f 373/634/70 377/625/70 375/635/70 -f 382/636/92 392/637/92 384/638/92 -f 387/639/70 385/640/70 386/641/70 -f 384/638/57 387/639/57 382/636/57 -f 381/642/56 385/643/56 383/644/56 -f 383/644/55 388/645/55 384/638/55 -f 382/636/54 386/646/54 381/647/54 -f 383/644/93 390/648/93 381/642/93 -f 383/644/55 392/637/55 389/649/55 -f 381/647/54 391/650/54 382/636/54 -f 408/527/94 400/529/94 399/528/94 -f 398/651/95 402/523/95 401/652/95 -f 404/653/96 394/520/96 393/654/96 -f 405/655/97 395/656/97 406/657/97 -f 393/654/56 401/652/56 404/653/56 -f 424/658/94 416/513/94 415/518/94 -f 421/517/97 411/659/97 422/660/97 -f 420/661/96 410/516/96 409/662/96 -f 414/663/95 418/664/95 417/665/95 -f 414/663/56 420/661/56 409/662/56 -f 425/666/56 427/667/56 426/668/56 -f 425/666/55 432/669/55 428/670/55 -f 427/667/54 430/671/54 426/668/54 -f 428/670/79 431/672/79 427/667/79 -f 426/668/70 429/673/70 425/666/70 -f 433/674/56 436/675/56 435/676/56 -f 436/675/58 437/677/58 435/676/58 -f 440/678/56 441/679/56 439/680/56 -f 444/681/56 445/682/56 443/683/56 -f 447/684/56 449/685/56 448/686/56 -f 450/687/98 451/688/98 449/685/98 -f 448/686/99 453/689/99 447/684/99 -f 264/417/54 263/453/54 255/418/54 -f 257/420/55 265/444/55 266/421/55 -f 253/423/56 261/446/56 262/424/56 -f 259/426/57 267/449/57 268/427/57 -f 261/429/58 253/463/58 258/430/58 -f 254/432/59 262/448/59 264/433/59 -f 267/435/60 259/460/60 255/436/60 -f 260/438/61 268/441/61 265/439/61 -f 268/441/62 276/450/62 273/442/62 -f 271/443/63 275/690/63 267/435/63 -f 265/444/64 273/691/64 274/445/64 -f 261/446/65 269/692/65 270/447/65 -f 270/447/66 272/693/66 264/433/66 -f 267/449/67 275/694/67 276/450/67 -f 266/431/68 274/445/68 269/451/68 -f 272/452/69 271/443/69 263/453/69 -f 279/454/70 280/695/70 277/455/70 -f 279/454/71 278/456/71 257/420/71 -f 280/457/72 279/696/72 253/423/72 -f 255/418/73 277/697/73 280/458/73 -f 278/459/74 277/698/74 259/426/74 -f 286/466/58 294/470/58 289/467/58 -f 285/469/55 293/487/55 294/470/55 -f 281/471/56 289/492/56 290/472/56 -f 296/474/61 293/491/61 285/475/61 -f 290/472/59 292/498/59 284/477/59 -f 287/478/57 295/488/57 296/474/57 -f 292/479/54 291/496/54 283/480/54 -f 283/480/60 291/496/60 295/482/60 -f 297/484/79 300/699/79 299/485/79 -f 293/487/80 298/486/80 299/485/80 -f 295/488/81 297/700/81 298/489/81 -f 289/492/83 299/701/83 300/493/83 -f 300/495/85 297/702/85 291/496/85 -f 307/500/55 308/504/55 305/501/55 -f 303/503/79 305/501/79 308/504/79 -f 302/506/71 307/500/71 306/502/71 -f 304/508/57 308/504/57 307/500/57 -f 303/510/56 301/703/56 306/502/56 -f 423/511/71 418/664/71 413/512/71 -f 419/514/85 422/704/85 411/515/85 -f 421/517/57 424/658/57 415/518/57 -f 394/520/85 403/705/85 406/521/85 -f 406/525/80 403/706/80 404/707/80 -f 404/707/80 401/708/80 406/525/80 -f 401/708/80 402/523/80 406/525/80 -f 402/523/80 407/709/80 408/524/80 -f 408/524/80 405/710/80 406/525/80 -f 396/526/57 405/655/57 408/527/57 -f 400/529/71 407/709/71 402/523/71 -f 398/532/73 393/711/73 396/531/73 -f 393/711/73 394/712/73 396/531/73 -f 394/712/73 395/713/73 396/531/73 -f 396/531/73 399/714/73 400/529/73 -f 400/529/73 397/530/73 398/532/73 -f 326/533/88 321/545/88 315/534/88 -f 324/536/89 325/542/89 319/537/89 -f 322/539/56 323/543/56 317/540/56 -f 325/542/57 326/533/57 320/535/57 -f 323/543/90 324/715/90 318/544/90 -f 321/545/91 322/539/91 316/541/91 -f 323/548/55 322/716/55 321/546/55 -f 321/546/55 326/717/55 325/547/55 -f 325/547/55 324/718/55 323/548/55 -f 329/549/90 330/719/90 312/550/90 -f 327/552/91 328/560/91 310/553/91 -f 332/555/88 327/552/88 309/554/88 -f 330/557/89 331/561/89 313/558/89 -f 328/560/56 329/549/56 311/551/56 -f 331/561/57 332/555/57 314/556/57 -f 329/564/55 328/720/55 327/562/55 -f 327/562/55 332/721/55 331/563/55 -f 331/563/55 330/722/55 329/564/55 -f 343/565/54 336/580/54 333/566/54 -f 347/568/57 344/584/57 341/569/57 -f 344/573/70 347/723/70 348/582/70 -f 348/582/70 339/577/70 340/571/70 -f 340/571/70 335/724/70 336/572/70 -f 336/572/70 343/725/70 344/573/70 -f 344/573/70 348/582/70 340/571/70 -f 335/574/56 340/581/56 337/575/56 -f 339/577/55 348/582/55 345/578/55 -f 336/580/59 335/574/59 334/576/59 -f 338/579/58 337/575/58 340/581/58 -f 346/570/61 345/578/61 348/582/61 -f 342/583/60 341/569/60 344/584/60 -f 334/588/79 337/726/79 338/579/79 -f 338/579/79 345/578/79 346/586/79 -f 346/586/79 341/727/79 342/587/79 -f 342/587/79 333/728/79 334/588/79 -f 334/588/79 338/579/79 346/586/79 -f 350/589/54 352/729/54 351/590/54 -f 353/592/55 356/730/55 355/593/55 -f 350/595/60 355/731/60 356/596/60 -f 351/598/59 353/732/59 354/599/59 -f 352/601/73 356/733/73 353/602/73 -f 350/589/85 349/591/85 354/594/85 -f 360/604/71 364/611/71 361/605/71 -f 361/605/55 364/611/55 363/607/55 -f 357/606/58 361/605/58 362/608/58 -f 358/609/80 362/608/80 363/607/80 -f 359/610/61 363/607/61 364/611/61 -f 371/612/57 372/620/57 369/613/57 -f 368/615/79 372/620/79 371/612/79 -f 365/617/70 370/614/70 369/613/70 -f 367/619/55 369/613/55 372/620/55 -f 366/622/54 371/612/54 370/614/54 -f 379/624/57 380/628/57 377/625/57 -f 375/627/55 377/625/55 380/628/55 -f 374/630/54 379/624/54 378/626/54 -f 376/632/79 380/628/79 379/624/79 -f 373/634/70 378/626/70 377/625/70 -f 382/636/92 391/650/92 392/637/92 -f 387/639/70 388/645/70 385/640/70 -f 384/638/57 388/645/57 387/639/57 -f 381/642/56 386/734/56 385/643/56 -f 383/644/55 385/643/55 388/645/55 -f 382/636/54 387/639/54 386/646/54 -f 383/644/93 389/649/93 390/648/93 -f 383/644/55 384/638/55 392/637/55 -f 381/647/54 390/735/54 391/650/54 -f 408/527/94 407/709/94 400/529/94 -f 398/651/95 397/530/95 402/523/95 -f 404/653/96 403/705/96 394/520/96 -f 405/655/97 396/526/97 395/656/97 -f 393/654/56 398/651/56 401/652/56 -f 424/658/94 423/511/94 416/513/94 -f 421/517/97 412/519/97 411/659/97 -f 420/661/96 419/514/96 410/516/96 -f 414/663/95 413/512/95 418/664/95 -f 414/663/56 417/665/56 420/661/56 -f 425/666/56 428/670/56 427/667/56 -f 425/666/55 429/736/55 432/669/55 -f 427/667/54 431/737/54 430/671/54 -f 428/670/79 432/738/79 431/672/79 -f 426/668/70 430/739/70 429/673/70 -f 433/674/56 434/740/56 436/675/56 -f 436/675/58 438/741/58 437/677/58 -f 440/678/56 442/742/56 441/679/56 -f 444/681/56 446/743/56 445/682/56 -f 447/684/56 450/687/56 449/685/56 -f 450/687/100 452/744/100 451/688/100 -f 448/686/101 454/745/101 453/689/101 -o Plane -v -4.000000 24.000000 2.000000 -v -4.000000 24.000000 -2.000000 -v 4.000000 24.000000 -2.000000 -v 1.500000 24.000000 -2.000000 -v 1.500000 24.000000 2.000000 -v 3.500000 24.000000 2.000000 -v 3.500000 24.000000 -2.000000 -v 4.000000 24.000000 2.000000 -v -4.000000 16.100000 -2.000000 -v 4.000000 16.100000 -2.000000 -v -4.000000 14.100000 -2.000000 -v 4.000000 14.100000 -2.000000 -v -4.000000 14.100000 -2.500000 -v -4.000000 16.100000 -2.500000 -v 4.000000 16.100000 -2.500000 -v 4.000000 14.100000 -2.500000 -v -4.000000 16.100000 2.000000 -v 4.000000 16.100000 2.000000 -v -4.000000 14.100000 2.000000 -v 4.000000 14.100000 2.000000 -v -4.000000 16.100000 2.500000 -v 4.000000 16.100000 2.500000 -v -4.000000 14.100000 2.500000 -v 4.000000 14.100000 2.500000 -v 4.500000 16.100000 -2.000000 -v 4.500000 14.100000 -2.000000 -v 4.500000 16.100000 2.000000 -v 4.500000 14.100000 2.000000 -v -4.500000 16.100000 -2.000000 -v -4.500000 14.100000 -2.000000 -v -4.500000 16.100000 2.000000 -v -4.500000 14.100000 2.000000 -v 4.000000 15.000000 2.000000 -v 4.000000 15.000000 -2.000000 -v -4.000000 15.000000 2.000000 -v -4.000000 15.000000 -2.000000 -v 4.000000 2.000000 5.000000 -v -4.000000 2.000000 5.000000 -v -5.000000 7.000000 2.000000 -v -5.000000 7.000000 -2.000000 -v 5.000000 7.000000 2.000000 -v 5.000000 7.000000 -2.000000 -v 0.000000 15.000000 -2.000000 -v 4.000000 9.000000 -3.000000 -v 2.000000 9.000000 -3.000000 -v -4.000000 9.000000 -3.000000 -v -2.000000 9.000000 -3.000000 -v -4.000000 12.000000 2.000000 -v -4.000000 12.000000 -2.000000 -v 4.000000 12.000000 -2.000000 -v 4.000000 12.000000 2.000000 -v -3.500000 24.000000 -2.000000 -v -3.500000 24.000000 2.000000 -v -1.500000 24.000000 2.000000 -v -1.500000 24.000000 -2.000000 -v 1.500000 22.000000 -2.000000 -v 1.500000 22.000000 2.000000 -v 3.500000 22.000000 2.000000 -v 3.500000 22.000000 -2.000000 -v -3.500000 22.000000 -2.000000 -v -3.500000 22.000000 2.000000 -v -1.500000 22.000000 2.000000 -v -1.500000 22.000000 -2.000000 -v 4.000000 22.000000 2.000000 -v 4.000000 22.000000 -2.000000 -v -4.000000 22.000000 -2.000000 -v -4.000000 22.000000 2.000000 -v 1.500000 24.000000 -3.000000 -v 3.500000 24.000000 -3.000000 -v -3.500000 24.000000 -3.000000 -v -1.500000 24.000000 -3.000000 -v 1.500000 22.000000 -3.000000 -v 3.500000 22.000000 -3.000000 -v -3.500000 22.000000 -3.000000 -v -1.500000 22.000000 -3.000000 -v 4.000000 22.000000 -3.000000 -v -4.000000 22.000000 -3.000000 -v 5.000000 22.000000 2.000000 -v 5.000000 22.000000 -2.000000 -v -5.000000 22.000000 -2.000000 -v -5.000000 22.000000 2.000000 -v 1.500000 24.000000 3.000000 -v 3.500000 24.000000 3.000000 -v -3.500000 24.000000 3.000000 -v -1.500000 24.000000 3.000000 -v 1.500000 22.000000 3.000000 -v 3.500000 22.000000 3.000000 -v -3.500000 22.000000 3.000000 -v -1.500000 22.000000 3.000000 -v 4.000000 22.000000 3.000000 -v -4.000000 22.000000 3.000000 -v 4.000000 18.000000 -3.000000 -v -4.000000 18.000000 -3.000000 -v 5.000000 17.000000 2.000000 -v 5.000000 17.000000 -2.000000 -v -5.000000 17.000000 -2.000000 -v -5.000000 17.000000 2.000000 -v 4.000000 18.000000 3.000000 -v -4.000000 18.000000 3.000000 -v 4.000000 17.000000 2.000000 -v 4.000000 17.000000 -2.000000 -v -4.000000 17.000000 -2.000000 -v -4.000000 17.000000 2.000000 -v 1.500000 25.000000 -2.000000 -v 1.500000 25.000000 2.000000 -v 3.500000 25.000000 2.000000 -v 3.500000 25.000000 -2.000000 -v -3.500000 25.000000 -2.000000 -v -3.500000 25.000000 2.000000 -v -1.500000 25.000000 2.000000 -v -1.500000 25.000000 -2.000000 -v -3.000000 13.000000 3.000000 -v 3.000000 13.000000 3.000000 -v -3.000000 23.000000 3.000000 -v 3.000000 23.000000 3.000000 -v -3.000000 23.000000 5.000000 -v 3.000000 23.000000 5.000000 -v -3.000000 21.000000 7.000000 -v -3.000000 13.000000 7.000000 -v 3.000000 13.000000 7.000000 -v 3.000000 21.000000 7.000000 -v -4.000000 19.000000 6.000000 -v -4.000000 14.000000 6.000000 -v -2.500000 11.500000 4.000000 -v 2.500000 11.500000 4.000000 -v -2.500000 10.085787 4.585787 -v 2.500000 10.085787 4.585787 -v -2.500000 9.500000 6.000000 -v 2.500000 9.500000 6.000000 -v -2.500000 10.085787 7.414213 -v 2.500000 10.085787 7.414213 -v -2.500000 11.500000 8.000000 -v 2.500000 11.500000 8.000000 -v -2.500000 12.914213 7.414213 -v 2.500000 12.914213 7.414213 -v -2.500000 13.500000 6.000000 -v 2.500000 13.500000 6.000000 -v -2.500000 12.914213 4.585787 -v 2.500000 12.914213 4.585787 -v -4.000000 14.000000 4.000000 -v -4.000000 19.000000 4.000000 -v -3.000000 13.000000 6.000000 -v -3.000000 19.000000 6.000000 -v -3.000000 13.000000 4.000000 -v -3.000000 19.000000 4.000000 -v -3.750000 19.000000 5.250000 -v -3.250000 19.000000 5.250000 -v -3.750000 19.000000 4.750000 -v -3.250000 19.000000 4.750000 -v -3.250000 20.000000 4.750000 -v -3.750000 20.000000 4.750000 -v -3.250000 20.000000 5.250000 -v -3.750000 20.000000 5.250000 -v -4.000000 20.000000 6.000000 -v -4.000000 20.000000 4.000000 -v -3.000000 20.000000 6.000000 -v -3.000000 20.000000 4.000000 -v -4.000000 22.000000 4.000000 -v -3.500000 22.000000 4.000000 -v -3.500000 22.000000 6.000000 -v -4.000000 22.000000 6.000000 -v -3.500000 20.000000 6.500000 -v -4.000000 20.000000 6.500000 -v -3.500000 21.000000 6.500000 -v -4.000000 21.000000 6.500000 -v -4.000000 20.000000 3.500000 -v -3.500000 20.000000 3.500000 -v -4.000000 21.000000 3.500000 -v -3.500000 21.000000 3.500000 -v 4.000000 19.000000 6.000000 -v 4.000000 14.000000 6.000000 -v 4.000000 14.000000 4.000000 -v 4.000000 19.000000 4.000000 -v 3.000000 19.000000 4.000000 -v 3.000000 13.000000 4.000000 -v 3.000000 19.000000 6.000000 -v 3.000000 13.000000 6.000000 -v 3.250000 19.000000 5.250000 -v 3.750000 19.000000 5.250000 -v 3.250000 19.000000 4.750000 -v 3.750000 19.000000 4.750000 -v 3.250000 22.000000 4.750000 -v 3.250000 22.000000 5.250000 -v 3.750000 22.000000 5.250000 -v 3.750000 22.000000 4.750000 -v 3.000000 21.500000 4.500000 -v 3.000000 21.500000 5.500000 -v 4.000000 21.500000 5.500000 -v 4.000000 21.500000 4.500000 -v 3.000000 20.000000 4.500000 -v 3.000000 20.000000 5.500000 -v 4.000000 20.000000 5.500000 -v 4.000000 20.000000 4.500000 -v 3.250000 21.250000 5.500000 -v 3.750000 21.250000 5.500000 -v 3.250000 20.250000 5.500000 -v 3.750000 20.250000 5.500000 -v 3.250000 20.750000 6.500000 -v 3.750000 20.750000 6.500000 -v 3.250000 20.250000 6.500000 -v 3.750000 20.250000 6.500000 -v 3.250000 20.250000 7.500000 -v 3.750000 20.250000 7.500000 -v 3.250000 19.750000 7.500000 -v 3.750000 19.750000 7.500000 -v 3.250000 21.250000 4.500000 -v 3.750000 21.250000 4.500000 -v 3.250000 20.250000 4.500000 -v 3.750000 20.250000 4.500000 -v 3.250000 20.750000 3.500000 -v 3.750000 20.750000 3.500000 -v 3.250000 20.250000 3.500000 -v 3.750000 20.250000 3.500000 -v 3.250000 20.250000 2.500000 -v 3.750000 20.250000 2.500000 -v 3.250000 19.750000 2.500000 -v 3.750000 19.750000 2.500000 -v -4.000000 23.000000 6.000000 -v 4.000000 23.000000 6.000000 -v -4.000000 21.585787 6.585787 -v 4.000000 21.585787 6.585787 -v -4.000000 21.000000 8.000000 -v 4.000000 21.000000 8.000000 -v -4.000000 21.585787 9.414213 -v 4.000000 21.585787 9.414213 -v -4.000000 23.000000 10.000000 -v 4.000000 23.000000 10.000000 -v -4.000000 24.414213 9.414213 -v 4.000000 24.414213 9.414213 -v -4.000000 25.000000 8.000000 -v 4.000000 25.000000 8.000000 -v -4.000000 24.414213 6.585787 -v 4.000000 24.414213 6.585787 -v -2.000000 14.000000 7.000000 -v 2.000000 14.000000 7.000000 -v -2.000000 18.000000 7.000000 -v 2.000000 18.000000 7.000000 -v -2.000000 18.000000 9.000000 -v -2.000000 14.000000 9.000000 -v 2.000000 14.000000 9.000000 -v 2.000000 18.000000 9.000000 -v 1.250000 18.000000 8.250000 -v 1.750000 18.000000 8.250000 -v 1.250000 18.000000 7.750000 -v 1.750000 18.000000 7.750000 -v 0.250000 18.000000 8.250000 -v 0.750000 18.000000 8.250000 -v 0.250000 18.000000 7.750000 -v 0.750000 18.000000 7.750000 -v 1.250000 19.000000 7.750000 -v 1.250000 19.000000 8.250000 -v 1.750000 19.000000 8.250000 -v 1.750000 19.000000 7.750000 -v 0.250000 19.000000 7.750000 -v 0.250000 19.000000 8.250000 -v 0.750000 19.000000 8.250000 -v 0.750000 19.000000 7.750000 -v 1.250000 22.000000 10.750000 -v 1.250000 22.000000 11.250000 -v 1.750000 22.000000 11.250000 -v 1.750000 22.000000 10.750000 -v 0.250000 22.000000 10.750000 -v 0.250000 22.000000 11.250000 -v 0.750000 22.000000 11.250000 -v 0.750000 22.000000 10.750000 -v 1.250000 28.000000 10.750000 -v 1.250000 28.000000 11.250000 -v 1.750000 28.000000 11.250000 -v 1.750000 28.000000 10.750000 -v 0.250000 24.000000 10.750000 -v 0.250000 24.000000 11.250000 -v 0.750000 24.000000 11.250000 -v 0.750000 24.000000 10.750000 -v -2.816987 12.381448 5.869995 -v -3.250000 12.405506 5.621155 -v -3.250000 12.381448 5.869995 -v -3.250000 15.367525 6.158691 -v -3.033494 12.369420 5.994413 -v -3.033494 15.355495 6.283112 -v -3.033494 12.345362 6.243254 -v -3.033494 15.331437 6.531950 -v -3.250000 12.333332 6.367672 -v -3.250000 15.319408 6.656370 -v -3.466506 12.345362 6.243254 -v -3.466506 15.331437 6.531950 -v -3.466506 12.369420 5.994413 -v -3.466506 15.355495 6.283112 -v -2.816987 12.333332 6.367672 -v -3.250000 12.309274 6.616512 -v -3.683012 12.333332 6.367672 -v -3.683012 12.381448 5.869995 -v -3.899518 11.398119 5.649342 -v -3.250000 11.434206 5.276081 -v -3.899518 11.325944 6.395861 -v -3.250000 11.289858 6.769119 -v -2.600481 11.325944 6.395861 -v -2.600481 11.398119 5.649342 -v -3.899518 10.402760 5.553108 -v -3.250000 10.438847 5.179850 -v -3.899518 10.330585 6.299629 -v -3.250000 10.294498 6.672888 -v -2.600481 10.330585 6.299629 -v -2.600481 10.402760 5.553108 -v -2.816987 11.859086 7.092363 -v -3.250000 11.817929 6.845776 -v -3.250000 11.859086 7.092363 -v -3.250000 14.818153 6.598488 -v -3.033494 11.879663 7.215658 -v -3.033494 14.838732 6.721783 -v -3.033494 11.920820 7.462248 -v -3.033494 14.879889 6.968372 -v -3.250000 11.941398 7.585541 -v -3.250000 14.900467 7.091665 -v -3.466506 11.920820 7.462248 -v -3.466506 14.879889 6.968372 -v -3.466506 11.879663 7.215658 -v -3.466506 14.838732 6.721783 -v -2.816987 11.941398 7.585541 -v -3.250000 11.982554 7.832130 -v -3.683012 11.941398 7.585541 -v -3.683012 11.859086 7.092363 -v -3.899518 10.852151 7.133694 -v -3.250000 10.790417 6.763811 -v -3.899518 10.975620 7.873461 -v -3.250000 11.037354 8.243345 -v -2.600481 10.975620 7.873461 -v -2.600481 10.852151 7.133694 -v -3.899518 9.865794 7.298319 -v -3.250000 9.804060 6.928434 -v -3.899518 9.989264 8.038086 -v -3.250000 10.050999 8.407970 -v -2.600481 9.989264 8.038086 -v -2.600481 9.865794 7.298319 +f 276/437/59 283/438/59 275/439/59 +f 277/440/60 286/441/60 278/442/60 +f 273/443/61 282/444/61 274/445/61 +f 279/446/62 288/447/62 280/448/62 +f 281/449/63 278/450/63 286/451/63 +f 274/452/64 284/453/64 276/454/64 +f 287/455/65 275/456/65 283/457/65 +f 280/458/66 285/459/66 277/460/66 +f 285/459/67 296/461/67 293/462/67 +f 283/457/68 295/463/68 287/455/68 +f 286/441/69 293/464/69 294/465/69 +f 281/466/70 290/467/70 282/444/70 +f 282/468/71 292/469/71 284/453/71 +f 287/470/72 296/461/72 288/447/72 +f 286/451/73 289/471/73 281/449/73 +f 292/472/74 283/438/74 284/473/74 +f 299/474/75 297/475/75 298/476/75 +f 299/474/76 277/440/76 278/442/76 +f 300/477/77 273/443/77 274/445/77 +f 275/439/78 300/478/78 276/437/78 +f 298/479/79 279/446/79 280/448/79 +f 279/480/80 297/481/80 275/456/80 +f 280/458/81 277/460/81 298/482/81 +f 273/483/82 299/484/82 278/450/82 +f 274/452/83 276/454/83 300/485/83 +f 306/486/63 309/487/63 301/488/63 +f 305/489/60 314/490/60 306/486/60 +f 301/491/61 310/492/61 302/493/61 +f 316/494/66 305/495/66 308/496/66 +f 310/492/64 304/497/64 302/493/64 +f 307/498/62 316/494/62 308/496/62 +f 312/499/59 303/500/59 304/501/59 +f 303/500/65 315/502/65 307/503/65 +f 317/504/84 319/505/84 318/506/84 +f 313/507/85 319/505/85 314/490/85 +f 315/508/86 318/509/86 316/494/86 +f 316/494/87 318/510/87 313/511/87 +f 309/512/88 320/513/88 310/492/88 +f 309/487/89 314/490/89 319/514/89 +f 320/515/90 311/516/90 312/499/90 +f 310/492/91 320/517/91 312/518/91 +f 315/502/92 311/516/92 317/519/92 +f 326/520/60 328/521/60 325/522/60 +f 323/523/84 328/521/84 324/524/84 +f 321/525/76 327/526/76 326/520/76 +f 324/527/62 327/526/62 322/528/62 +f 323/529/61 326/520/61 325/522/61 +f 435/530/76 425/531/76 428/532/76 +f 422/533/90 434/534/90 423/535/90 +f 433/536/62 427/537/62 424/538/62 +f 406/539/90 418/540/90 407/541/90 +f 417/542/85 418/543/85 414/544/85 +f 408/545/62 420/546/62 411/547/62 +f 409/548/76 419/549/76 414/544/76 +f 412/550/78 409/548/78 410/551/78 +f 346/552/93 335/553/93 340/554/93 +f 344/555/94 339/556/94 338/557/94 +f 342/558/61 337/559/61 336/560/61 +f 345/561/62 340/554/62 339/556/62 +f 343/562/95 338/563/95 337/559/95 +f 341/564/96 336/560/96 335/553/96 +f 349/565/95 332/566/95 331/567/95 +f 347/568/96 330/569/96 329/570/96 +f 352/571/93 329/570/93 334/572/93 +f 350/573/94 333/574/94 332/575/94 +f 348/576/61 331/567/61 330/569/61 +f 351/577/62 334/572/62 333/574/62 +f 362/578/59 356/579/59 353/580/59 +f 367/581/62 361/582/62 366/583/62 +f 356/584/75 363/585/75 364/586/75 +f 355/587/61 357/588/61 354/589/61 +f 359/590/60 365/591/60 358/592/60 +f 356/579/64 354/589/64 353/580/64 +f 358/592/63 360/593/63 359/590/63 +f 366/583/66 368/594/66 367/581/66 +f 363/595/65 361/582/65 364/596/65 +f 362/597/84 353/598/84 354/599/84 +f 370/600/59 371/601/59 369/602/59 +f 373/603/60 375/604/60 374/605/60 +f 370/606/65 376/607/65 372/608/65 +f 369/609/64 373/610/64 374/611/64 +f 372/612/78 373/613/78 371/614/78 +f 369/602/90 375/604/90 370/600/90 +f 383/615/62 381/616/62 382/617/62 +f 380/618/84 383/615/84 378/619/84 +f 377/620/75 381/616/75 379/621/75 +f 379/622/60 384/623/60 380/624/60 +f 377/625/59 383/615/59 382/617/59 +f 391/626/62 389/627/62 390/628/62 +f 387/629/60 392/630/60 388/631/60 +f 385/632/59 391/626/59 390/628/59 +f 388/633/84 391/626/84 386/634/84 +f 385/635/75 389/627/75 387/636/75 +f 394/637/97 404/638/97 396/639/97 +f 399/640/75 397/641/75 398/642/75 +f 396/639/62 399/640/62 394/637/62 +f 393/643/61 397/644/61 395/645/61 +f 395/645/60 400/646/60 396/639/60 +f 394/637/59 398/647/59 393/648/59 +f 395/645/98 402/649/98 393/643/98 +f 395/645/60 404/638/60 401/650/60 +f 393/648/59 403/651/59 394/637/59 +f 420/546/99 412/550/99 411/547/99 +f 413/652/100 409/548/100 414/544/100 +f 416/653/101 406/539/101 405/654/101 +f 408/545/102 418/655/102 417/656/102 +f 405/654/61 413/652/61 416/653/61 +f 436/657/99 428/532/99 427/537/99 +f 433/536/102 423/658/102 434/659/102 +f 421/660/101 431/661/101 422/533/101 +f 426/662/100 430/663/100 429/664/100 +f 426/662/61 432/665/61 421/660/61 +f 437/666/61 439/667/61 438/668/61 +f 437/666/60 444/669/60 440/670/60 +f 438/668/59 443/671/59 442/672/59 +f 440/670/84 443/673/84 439/667/84 +f 438/668/75 441/674/75 437/666/75 +f 445/675/61 448/676/61 447/677/61 +f 448/676/63 449/678/63 447/677/63 +f 452/679/61 453/680/61 451/681/61 +f 456/682/61 457/683/61 455/684/61 +f 459/685/61 461/686/61 460/687/61 +f 462/688/103 463/689/103 461/686/103 +f 460/687/104 465/690/104 459/685/104 +f 276/437/59 284/473/59 283/438/59 +f 277/440/60 285/691/60 286/441/60 +f 273/443/61 281/466/61 282/444/61 +f 279/446/62 287/470/62 288/447/62 +f 281/449/63 273/483/63 278/450/63 +f 274/452/64 282/468/64 284/453/64 +f 287/455/65 279/480/65 275/456/65 +f 280/458/66 288/692/66 285/459/66 +f 285/459/67 288/692/67 296/461/67 +f 283/457/68 291/693/68 295/463/68 +f 286/441/69 285/691/69 293/464/69 +f 281/466/70 289/694/70 290/467/70 +f 282/468/71 290/467/71 292/469/71 +f 287/470/72 295/695/72 296/461/72 +f 286/451/73 294/465/73 289/471/73 +f 292/472/74 291/693/74 283/438/74 +f 299/474/75 300/696/75 297/475/75 +f 299/474/76 298/476/76 277/440/76 +f 300/477/77 299/697/77 273/443/77 +f 275/439/78 297/698/78 300/478/78 +f 298/479/79 297/699/79 279/446/79 +f 306/486/63 314/490/63 309/487/63 +f 305/489/60 313/507/60 314/490/60 +f 301/491/61 309/512/61 310/492/61 +f 316/494/66 313/511/66 305/495/66 +f 310/492/64 312/518/64 304/497/64 +f 307/498/62 315/508/62 316/494/62 +f 312/499/59 311/516/59 303/500/59 +f 303/500/65 311/516/65 315/502/65 +f 317/504/84 320/700/84 319/505/84 +f 313/507/85 318/506/85 319/505/85 +f 315/508/86 317/701/86 318/509/86 +f 309/512/88 319/702/88 320/513/88 +f 320/515/90 317/703/90 311/516/90 +f 326/520/60 327/526/60 328/521/60 +f 323/523/84 325/522/84 328/521/84 +f 321/525/76 322/704/76 327/526/76 +f 324/527/62 328/521/62 327/526/62 +f 323/529/61 321/705/61 326/520/61 +f 435/530/76 430/663/76 425/531/76 +f 422/533/90 431/661/90 434/534/90 +f 433/536/62 436/657/62 427/537/62 +f 406/539/90 415/706/90 418/540/90 +f 418/543/85 415/707/85 416/708/85 +f 416/708/85 413/709/85 418/543/85 +f 413/709/85 414/544/85 418/543/85 +f 414/544/85 419/549/85 420/710/85 +f 420/710/85 417/542/85 414/544/85 +f 408/545/62 417/656/62 420/546/62 +f 409/548/76 412/550/76 419/549/76 +f 410/551/78 405/711/78 406/712/78 +f 406/712/78 407/713/78 410/551/78 +f 407/713/78 408/714/78 410/551/78 +f 408/714/78 411/715/78 410/551/78 +f 411/715/78 412/550/78 410/551/78 +f 346/552/93 341/564/93 335/553/93 +f 344/555/94 345/561/94 339/556/94 +f 342/558/61 343/562/61 337/559/61 +f 345/561/62 346/552/62 340/554/62 +f 343/562/95 344/716/95 338/563/95 +f 341/564/96 342/558/96 336/560/96 +f 349/565/95 350/717/95 332/566/95 +f 347/568/96 348/576/96 330/569/96 +f 352/571/93 347/568/93 329/570/93 +f 350/573/94 351/577/94 333/574/94 +f 348/576/61 349/565/61 331/567/61 +f 351/577/62 352/571/62 334/572/62 +f 362/578/59 363/718/59 356/579/59 +f 367/581/62 364/596/62 361/582/62 +f 364/586/75 367/719/75 360/720/75 +f 367/719/75 368/594/75 360/720/75 +f 368/594/75 359/590/75 360/720/75 +f 360/720/75 355/721/75 364/586/75 +f 355/721/75 356/584/75 364/586/75 +f 355/587/61 360/593/61 357/588/61 +f 359/590/60 368/594/60 365/591/60 +f 356/579/64 355/587/64 354/589/64 +f 358/592/63 357/588/63 360/593/63 +f 366/583/66 365/591/66 368/594/66 +f 363/595/65 362/722/65 361/582/65 +f 354/599/84 357/723/84 366/724/84 +f 357/723/84 358/592/84 366/724/84 +f 358/592/84 365/591/84 366/724/84 +f 366/724/84 361/725/84 354/599/84 +f 361/725/84 362/597/84 354/599/84 +f 370/600/59 372/726/59 371/601/59 +f 373/603/60 376/727/60 375/604/60 +f 370/606/65 375/728/65 376/607/65 +f 369/609/64 371/729/64 373/610/64 +f 372/612/78 376/730/78 373/613/78 +f 369/602/90 374/605/90 375/604/90 +f 383/615/62 384/623/62 381/616/62 +f 380/618/84 384/623/84 383/615/84 +f 377/620/75 382/617/75 381/616/75 +f 379/622/60 381/616/60 384/623/60 +f 377/625/59 378/731/59 383/615/59 +f 391/626/62 392/630/62 389/627/62 +f 387/629/60 389/627/60 392/630/60 +f 385/632/59 386/732/59 391/626/59 +f 388/633/84 392/630/84 391/626/84 +f 385/635/75 390/628/75 389/627/75 +f 394/637/97 403/651/97 404/638/97 +f 399/640/75 400/646/75 397/641/75 +f 396/639/62 400/646/62 399/640/62 +f 393/643/61 398/733/61 397/644/61 +f 395/645/60 397/644/60 400/646/60 +f 394/637/59 399/640/59 398/647/59 +f 395/645/98 401/650/98 402/649/98 +f 395/645/60 396/639/60 404/638/60 +f 393/648/59 402/734/59 403/651/59 +f 420/546/99 419/549/99 412/550/99 +f 413/652/100 410/735/100 409/548/100 +f 416/653/101 415/706/101 406/539/101 +f 408/545/102 407/736/102 418/655/102 +f 405/654/61 410/735/61 413/652/61 +f 436/657/99 435/530/99 428/532/99 +f 433/536/102 424/538/102 423/658/102 +f 421/660/101 432/665/101 431/661/101 +f 426/662/100 425/531/100 430/663/100 +f 426/662/61 429/664/61 432/665/61 +f 437/666/61 440/670/61 439/667/61 +f 437/666/60 441/737/60 444/669/60 +f 438/668/59 439/667/59 443/671/59 +f 440/670/84 444/738/84 443/673/84 +f 438/668/75 442/739/75 441/674/75 +f 445/675/61 446/740/61 448/676/61 +f 448/676/63 450/741/63 449/678/63 +f 452/679/61 454/742/61 453/680/61 +f 456/682/61 458/743/61 457/683/61 +f 459/685/61 462/688/61 461/686/61 +f 462/688/103 464/744/103 463/689/103 +f 460/687/104 466/745/104 465/690/104 +o Chest +v 4.199992 -0.300001 2.100000 +v 4.199992 -0.300001 -2.100000 +v -4.200008 -0.299997 -2.100000 +v -1.575008 -0.299999 -2.100000 +v -1.575008 -0.299999 2.100000 +v -3.675008 -0.299997 2.100000 +v -3.675008 -0.299997 -2.100000 +v -4.200008 -0.299997 2.100000 +v 4.199994 7.994997 -2.100000 +v -4.200005 7.995001 -2.100000 +v 4.199995 10.094998 -2.100000 +v -4.200004 10.095000 -2.100000 +v 4.199995 10.094998 -2.625000 +v 4.199994 7.994997 -2.625000 +v -4.200005 7.995001 -2.625000 +v -4.200004 10.095000 -2.625000 +v 4.199994 7.994997 2.100000 +v -4.200005 7.995001 2.100000 +v 4.199995 10.094998 2.100000 +v -4.200004 10.095000 2.100000 +v 4.199994 7.994997 2.625000 +v -4.200005 7.995001 2.625000 +v 4.199995 10.094998 2.625000 +v -4.200004 10.095000 2.625000 +v -4.725005 7.995001 -2.100000 +v -4.725005 10.095001 -2.100000 +v -4.725005 7.995001 2.100000 +v -4.725005 10.095001 2.100000 +v 4.724995 7.994997 -2.100000 +v 4.724995 10.094997 -2.100000 +v 4.724995 7.994997 2.100000 +v 4.724995 10.094997 2.100000 +v -4.200005 9.150001 2.100000 +v -4.200005 9.150001 -2.100000 +v 4.199995 9.149999 2.100000 +v 4.199995 9.149999 -2.100000 +v -4.200000 22.800001 5.250000 +v 4.199999 22.799997 5.250000 +v 5.249998 17.549997 2.100000 +v 5.249998 17.549997 -2.100000 +v -5.250002 17.550001 2.100000 +v -5.250002 17.550001 -2.100000 +v -0.000005 9.150000 -2.100000 +v -4.200003 15.450001 -3.150000 +v -2.100003 15.450001 -3.150000 +v 4.199997 15.449999 -3.150000 +v 2.099997 15.449999 -3.150000 +v 4.199996 12.299998 2.100000 +v 4.199996 12.299998 -2.100000 +v -4.200004 12.300000 -2.100000 +v -4.200004 12.300000 2.100000 +v 3.674992 -0.300001 -2.100000 +v 3.674992 -0.300001 2.100000 +v 1.574992 -0.299999 2.100000 +v 1.574992 -0.299999 -2.100000 +v -1.575007 1.799999 -2.100000 +v -1.575007 1.799999 2.100000 +v -3.675007 1.800001 2.100000 +v -3.675007 1.800001 -2.100000 +v 3.674993 1.799997 -2.100000 +v 3.674993 1.799997 2.100000 +v 1.574993 1.799999 2.100000 +v 1.574993 1.799999 -2.100000 +v -4.200007 1.800001 2.100000 +v -4.200007 1.800001 -2.100000 +v 4.199993 1.799997 -2.100000 +v 4.199993 1.799997 2.100000 +v -1.575008 -0.299999 -3.150000 +v -3.675008 -0.299997 -3.150000 +v 3.674992 -0.300001 -3.150000 +v 1.574992 -0.299999 -3.150000 +v -1.575007 1.799999 -3.150000 +v -3.675007 1.800001 -3.150000 +v 3.674993 1.799997 -3.150000 +v 1.574993 1.799999 -3.150000 +v -4.200007 1.800001 -3.150000 +v 4.199993 1.799997 -3.150000 +v -5.250007 1.800001 2.100000 +v -5.250007 1.800001 -2.100000 +v 5.249993 1.799997 -2.100000 +v 5.249993 1.799997 2.100000 +v -1.575008 -0.299999 3.150000 +v -3.675008 -0.299997 3.150000 +v 3.674992 -0.300001 3.150000 +v 1.574992 -0.299999 3.150000 +v -1.575007 1.799999 3.150000 +v -3.675007 1.800001 3.150000 +v 3.674993 1.799997 3.150000 +v 1.574993 1.799999 3.150000 +v -4.200007 1.800001 3.150000 +v 4.199993 1.799997 3.150000 +v -4.200006 6.000002 -3.150000 +v 4.199994 5.999998 -3.150000 +v -5.250006 7.050001 2.100000 +v -5.250006 7.050001 -2.100000 +v 5.249994 7.049997 -2.100000 +v 5.249994 7.049997 2.100000 +v -4.200006 6.000002 3.150000 +v 4.199994 5.999998 3.150000 +v -4.200006 7.050001 2.100000 +v -4.200006 7.050001 -2.100000 +v 4.199994 7.049997 -2.100000 +v 4.199994 7.049997 2.100000 +v -1.575008 -1.349998 -2.100000 +v -1.575008 -1.349998 2.100000 +v -3.675008 -1.349997 2.100000 +v -3.675008 -1.349997 -2.100000 +v 3.674991 -1.350000 -2.100000 +v 3.674991 -1.350000 2.100000 +v 1.574992 -1.349998 2.100000 +v 1.574992 -1.349998 -2.100000 +v 3.149996 11.249999 3.150000 +v -3.150004 11.250001 3.150000 +v 3.149992 0.749998 3.150000 +v -3.150007 0.750002 3.150000 +v 3.149992 0.749998 5.250000 +v -3.150007 0.750002 5.250000 +v 3.149993 2.849998 7.349999 +v 3.149996 11.249999 7.349999 +v -3.150004 11.250001 7.349999 +v -3.150007 2.850002 7.349999 +v 4.199993 4.949999 6.300000 +v 4.199995 10.199999 6.300000 +v 2.624996 12.824999 4.200000 +v -2.625004 12.825001 4.200000 +v 2.624996 14.309922 4.815076 +v -2.625003 14.309924 4.815076 +v 2.624997 14.924998 6.300000 +v -2.625002 14.925000 6.300000 +v 2.624996 14.309922 7.784924 +v -2.625003 14.309924 7.784924 +v 2.624996 12.824999 8.400000 +v -2.625004 12.825001 8.400000 +v 2.624995 11.340075 7.784924 +v -2.625004 11.340077 7.784924 +v 2.624995 10.724999 6.300000 +v -2.625004 10.725001 6.300000 +v 2.624995 11.340075 4.815076 +v -2.625004 11.340077 4.815076 +v 4.199995 10.199999 4.200000 +v 4.199993 4.949999 4.200000 +v 3.149996 11.249999 6.300000 +v 3.149993 4.949999 6.300000 +v 3.149996 11.249999 4.200000 +v 3.149993 4.949999 4.200000 +v 3.937494 4.949999 5.512500 +v 3.412494 4.949999 5.512500 +v 3.937494 4.949999 4.987500 +v 3.412494 4.949999 4.987500 +v 3.412493 3.899998 4.987500 +v 3.937493 3.899998 4.987500 +v 3.412493 3.899998 5.512500 +v 3.937493 3.899998 5.512500 +v 4.199993 3.899998 6.300000 +v 4.199993 3.899998 4.200000 +v 3.149993 3.899998 6.300000 +v 3.149993 3.899998 4.200000 +v 4.199992 1.799997 4.200000 +v 3.674992 1.799997 4.200000 +v 3.674992 1.799997 6.300000 +v 4.199992 1.799997 6.300000 +v 3.674993 3.899998 6.825000 +v 4.199993 3.899998 6.825000 +v 3.674993 2.849998 6.825000 +v 4.199993 2.849998 6.825000 +v 4.199993 3.899998 3.675000 +v 3.674993 3.899998 3.675000 +v 4.199993 2.849998 3.675000 +v 3.674993 2.849998 3.675000 +v -4.200006 4.950003 6.300000 +v -4.200004 10.200001 6.300000 +v -4.200004 10.200001 4.200000 +v -4.200006 4.950003 4.200000 +v -3.150006 4.950003 4.200000 +v -3.150004 11.250001 4.200000 +v -3.150006 4.950003 6.300000 +v -3.150004 11.250001 6.300000 +v -3.412506 4.950003 5.512500 +v -3.937506 4.950003 5.512500 +v -3.412506 4.950003 4.987500 +v -3.937506 4.950003 4.987500 +v -3.412507 1.800001 4.987500 +v -3.412507 1.800001 5.512500 +v -3.937507 1.800001 5.512500 +v -3.937507 1.800001 4.987500 +v -3.150007 2.325003 4.725000 +v -3.150007 2.325003 5.775000 +v -4.200007 2.325003 5.775000 +v -4.200007 2.325003 4.725000 +v -3.150006 3.900002 4.725000 +v -3.150006 3.900002 5.775000 +v -4.200006 3.900002 5.775000 +v -4.200006 3.900002 4.725000 +v -3.412507 2.587502 5.775000 +v -3.937507 2.587502 5.775000 +v -3.412507 3.637503 5.775000 +v -3.937506 3.637503 5.775000 +v -3.412507 3.112501 6.825000 +v -3.937507 3.112501 6.825000 +v -3.412507 3.637503 6.825000 +v -3.937506 3.637503 6.825000 +v -3.412507 3.637503 7.875000 +v -3.937506 3.637503 7.875000 +v -3.412506 4.162502 7.875000 +v -3.937506 4.162502 7.875000 +v -3.412507 2.587502 4.725000 +v -3.937507 2.587502 4.725000 +v -3.412507 3.637503 4.725000 +v -3.937506 3.637503 4.725000 +v -3.412507 3.112501 3.675000 +v -3.937507 3.112501 3.675000 +v -3.412507 3.637503 3.675000 +v -3.937506 3.637503 3.675000 +v -3.412507 3.637503 2.625000 +v -3.937506 3.637503 2.625000 +v -3.412506 4.162502 2.625000 +v -3.937506 4.162502 2.625000 +v 4.199992 0.749998 6.300000 +v -4.200007 0.750002 6.300000 +v 4.199993 2.234922 6.915076 +v -4.200006 2.234926 6.915076 +v 4.199994 2.849998 8.400000 +v -4.200006 2.850002 8.400000 +v 4.199993 2.234922 9.884923 +v -4.200006 2.234926 9.884923 +v 4.199992 0.749998 10.500000 +v -4.200007 0.750002 10.500000 +v 4.199991 -0.734926 9.884923 +v -4.200008 -0.734922 9.884923 +v 4.199991 -1.350000 8.400000 +v -4.200008 -1.349997 8.400000 +v 4.199991 -0.734926 6.915076 +v -4.200008 -0.734922 6.915076 +v 2.099995 10.199999 7.349999 +v -2.100004 10.200001 7.349999 +v 2.099994 6.000000 7.349999 +v -2.100006 6.000000 7.349999 +v 2.099994 6.000000 9.450000 +v 2.099995 10.199999 9.450000 +v -2.100004 10.200001 9.450000 +v -2.100006 6.000000 9.450000 +v -1.312506 6.000000 8.662499 +v -1.837506 6.000000 8.662499 +v -1.312506 6.000000 8.137500 +v -1.837506 6.000000 8.137500 +v -0.262506 6.000000 8.662499 +v -0.787506 6.000000 8.662499 +v -0.262506 6.000000 8.137500 +v -0.787506 6.000000 8.137500 +v -1.312506 4.950001 8.137500 +v -1.312506 4.950001 8.662499 +v -1.837506 4.950001 8.662499 +v -1.837506 4.950001 8.137500 +v -0.262506 4.950001 8.137500 +v -0.262506 4.950001 8.662499 +v -0.787506 4.950001 8.662499 +v -0.787506 4.950001 8.137500 +v -1.312507 1.799999 11.287499 +v -1.312507 1.799999 11.812499 +v -1.837507 1.799999 11.812499 +v -1.837507 1.799999 11.287499 +v -0.262507 1.799999 11.287499 +v -0.262507 1.799999 11.812499 +v -0.787507 1.799999 11.812499 +v -0.787507 1.799999 11.287499 +v -1.312509 -4.500000 11.287499 +v -1.312509 -4.500000 11.812499 +v -1.837509 -4.500000 11.812499 +v -1.837509 -4.500000 11.287499 +v -0.262508 -0.299999 11.287499 +v -0.262508 -0.299999 11.812499 +v -0.787508 -0.299999 11.812499 +v -0.787508 -0.299999 11.287499 +v 2.957832 11.899478 6.163495 +v 3.412495 11.874217 5.902212 +v 3.412496 11.899478 6.163495 +v 3.412495 8.764097 6.466626 +v 3.185164 11.912108 6.294134 +v 3.185163 8.776729 6.597267 +v 3.185164 11.937369 6.555416 +v 3.185163 8.801990 6.858547 +v 3.412496 11.950000 6.686055 +v 3.412495 8.814620 6.989188 +v 3.639827 11.937369 6.555416 +v 3.639826 8.801990 6.858547 +v 3.639827 11.912108 6.294134 +v 3.639826 8.776729 6.597267 +v 2.957832 11.950000 6.686055 +v 3.412496 11.975261 6.947338 +v 3.867159 11.950000 6.686055 +v 3.867158 11.899478 6.163495 +v 4.094490 12.931973 5.931808 +v 3.412496 12.894082 5.539885 +v 4.094490 13.007758 6.715653 +v 3.412496 13.045648 7.107575 +v 2.730501 13.007758 6.715653 +v 2.730501 12.931973 5.931808 +v 4.094491 13.977101 5.830763 +v 3.412496 13.939210 5.438842 +v 4.094491 14.052884 6.614610 +v 3.412496 14.090775 7.006532 +v 2.730501 14.052884 6.614610 +v 2.730501 13.977101 5.830763 +v 2.957832 12.447959 7.446981 +v 3.412496 12.491173 7.188064 +v 3.412496 12.447959 7.446981 +v 3.412495 9.340938 6.928412 +v 3.185164 12.426353 7.576441 +v 3.185163 9.319330 7.057871 +v 3.185164 12.383138 7.835360 +v 3.185163 9.276116 7.316791 +v 3.412496 12.361531 7.964818 +v 3.412495 9.254509 7.446248 +v 3.639827 12.383138 7.835360 +v 3.639826 9.276116 7.316791 +v 3.639827 12.426353 7.576441 +v 3.639826 9.319330 7.057871 +v 2.957832 12.361531 7.964818 +v 3.412496 12.318316 8.223737 +v 3.867159 12.361531 7.964818 +v 3.867159 12.447959 7.446981 +v 4.094491 13.505240 7.490378 +v 3.412496 13.570062 7.102001 +v 4.094491 13.375598 8.267134 +v 3.412496 13.310778 8.655512 +v 2.730501 13.375598 8.267134 +v 2.730501 13.505240 7.490378 +v 4.094491 14.540915 7.663234 +v 3.412496 14.605736 7.274856 +v 4.094491 14.411272 8.439990 +v 3.412496 14.346450 8.828368 +v 2.730502 14.411272 8.439990 +v 2.730502 14.540915 7.663234 vt 0.629630 0.225000 vt 0.611111 0.175000 vt 0.629630 0.175000 @@ -2349,11 +2366,10 @@ vt 0.722222 0.175000 vt 0.333333 0.400000 vt 0.481481 0.387500 vt 0.481481 0.400000 -vt 0.092593 0.387500 -vt 0.240741 0.337500 vt 0.240741 0.387500 -vt 0.240741 0.325000 vt 0.092593 0.337500 +vt 0.240741 0.337500 +vt 0.240741 0.325000 vt 0.092593 0.325000 vt 0.092593 0.400000 vt 0.240741 0.400000 @@ -2367,6 +2383,7 @@ vt 0.481481 0.325000 vt 0.333333 0.337500 vt 0.333333 0.325000 vt 0.481481 0.337500 +vt 0.333333 0.387500 vt 0.009259 0.400000 vt 0.083333 0.387500 vt 0.083333 0.400000 @@ -2381,6 +2398,7 @@ vt 0.250000 0.337500 vt 0.250000 0.325000 vt 0.324074 0.337500 vt 0.083333 0.337500 +vt 0.092593 0.387500 vt 0.083333 0.400000 vt 0.083333 0.325000 vt 0.000000 0.325000 @@ -2389,7 +2407,6 @@ vt 0.009259 0.387500 vt -0.000000 0.387500 vt 0.000000 0.400000 vt 0.324074 0.325000 -vt 0.333333 0.387500 vt 0.324074 0.400000 vt 0.240741 0.325000 vt 0.250000 0.387500 @@ -2407,10 +2424,11 @@ vt 0.037037 0.175000 vt 0.074074 0.175000 vt 0.481481 0.175000 vt 0.092593 0.125000 -vt 0.296296 0.400000 -vt 0.444444 0.700000 vt 0.296296 0.700000 +vt 0.444444 0.400000 +vt 0.444444 0.700000 vt 0.222222 0.700000 +vt 0.296296 0.400000 vt 0.074074 0.700000 vt 0.222222 0.400000 vt 0.000000 0.700000 @@ -2425,7 +2443,7 @@ vt 0.574074 0.150000 vt 0.583333 0.175000 vt 0.574074 0.175000 vt 0.574074 0.225000 -vt 0.685185 0.225000 +vt 0.648148 0.225000 vt 0.481481 0.175000 vt 0.555556 0.150000 vt 0.555556 0.175000 @@ -2473,6 +2491,7 @@ vt 0.814815 0.025000 vt 0.620370 0.150000 vt 0.583333 0.150000 vt 0.685185 0.425000 +vt 0.611111 0.425000 vt 0.574074 0.425000 vt 0.814815 -0.000000 vt 0.481481 0.025000 @@ -2496,7 +2515,7 @@ vt 0.629630 0.250000 vt 0.611111 0.350000 vt 0.648148 0.350000 vt 0.611111 0.225000 -vt 0.648148 0.225000 +vt 0.685185 0.225000 vt 0.685185 0.350000 vt 0.574074 0.350000 vt 0.629630 0.350000 @@ -2508,9 +2527,9 @@ vt 0.629630 0.250000 vt 0.629630 0.250000 vt 0.703704 0.250000 vt 0.222222 0.800000 -vt 0.555556 0.775000 -vt 0.444444 0.525000 vt 0.555556 0.525000 +vt 0.444444 0.775000 +vt 0.444444 0.525000 vt 0.629630 0.825000 vt 0.740741 0.775000 vt 0.740741 0.825000 @@ -2520,26 +2539,25 @@ vt 0.814815 0.775000 vt 0.740741 0.525000 vt 0.629630 0.425000 vt 0.740741 0.425000 -vt 0.629630 0.725000 vt 0.629630 0.525000 -vt 0.629630 0.775000 +vt 0.629630 0.725000 vt 0.592593 0.775000 +vt 0.555556 0.775000 vt 0.537037 0.850000 vt 0.500000 0.900000 vt 0.500000 0.850000 vt 0.546296 0.900000 vt 0.555556 0.875000 vt 0.555556 0.900000 -vt 0.314815 0.925000 -vt 0.222222 0.962500 vt 0.222222 0.925000 +vt 0.314815 0.962500 +vt 0.222222 0.962500 vt 0.500000 0.775000 vt 0.500000 0.825000 vt 0.490741 0.800000 vt 0.018519 0.850000 vt 0.055556 0.875000 vt 0.018519 0.875000 -vt 0.314815 0.962500 vt 0.222222 1.000000 vt 0.453704 0.775000 vt 0.444444 0.800000 @@ -2554,23 +2572,22 @@ vt 0.462963 0.775000 vt 0.453704 0.800000 vt 0.074074 0.850000 vt 0.074074 0.700000 -vt 0.314815 0.737500 +vt 0.314815 0.775000 vt 0.222222 0.775000 vt 0.472222 0.775000 vt 0.462963 0.800000 vt 0.537037 0.912500 vt 0.500000 0.912500 -vt 0.314815 0.775000 +vt 0.314815 0.812500 vt 0.222222 0.812500 vt 0.481481 0.775000 vt 0.472222 0.800000 vt 0.000000 0.850000 vt 0.000000 0.700000 -vt 0.314815 0.812500 vt 0.222222 0.850000 +vt 0.315778 0.750000 vt 0.326344 0.715564 vt 0.351852 0.701301 -vt 0.351852 0.798699 vt 0.055556 0.850000 vt 0.314815 0.850000 vt 0.222222 0.887500 @@ -2590,9 +2607,8 @@ vt 0.546296 0.825000 vt 0.490741 0.850000 vt 0.481481 0.875000 vt 0.481481 0.850000 -vt 0.481481 0.900000 -vt 0.490741 0.875000 vt 0.490741 0.900000 +vt 0.490741 0.875000 vt 0.490741 0.837500 vt 0.055556 0.725000 vt 0.018519 0.850000 @@ -2625,7 +2641,6 @@ vt 0.648148 0.850000 vt 0.666667 0.887500 vt 0.648148 0.887500 vt 0.629630 0.850000 -vt 0.592593 0.850000 vt 0.592593 0.887500 vt 0.666667 0.862500 vt 0.675926 0.837500 @@ -2638,7 +2653,7 @@ vt 0.703704 0.887500 vt 0.685185 0.862500 vt 0.694444 0.862500 vt 0.685185 0.887500 -vt 0.675926 0.825000 +vt 0.685185 0.825000 vt 0.685185 0.837500 vt 0.703704 0.837500 vt 0.694444 0.837500 @@ -2653,14 +2668,15 @@ vt 0.666667 0.887500 vt 0.675926 0.862500 vt 0.675926 0.887500 vt 0.685185 0.887500 -vt 0.675926 0.837500 +vt 0.675926 0.825000 vt 0.685185 0.825000 vt 0.703704 0.837500 vt 0.666667 0.862500 -vt 0.962963 0.662500 -vt 0.814815 0.700000 +vt 0.675926 0.837500 vt 0.814815 0.662500 vt 0.962963 0.700000 +vt 0.814815 0.700000 +vt 0.962963 0.737500 vt 0.814815 0.737500 vt 0.962963 0.437500 vt 0.814815 0.475000 @@ -2676,10 +2692,10 @@ vt 0.962963 0.238801 vt 0.962963 0.336199 vt 0.962963 0.587500 vt 0.814815 0.625000 -vt 0.962963 0.625000 -vt 0.988471 0.353064 -vt 0.988471 0.421936 +vt 0.962963 0.662500 vt 0.937455 0.421935 +vt 0.937455 0.353064 +vt 0.988471 0.353064 vt 0.814815 0.225000 vt 0.740741 0.325000 vt 0.740741 0.225000 @@ -2692,9 +2708,9 @@ vt 0.851852 0.325000 vt 0.851852 0.225000 vt 0.703704 0.225000 vt 0.703704 0.325000 -vt 0.925926 0.200000 -vt 0.916667 0.275000 vt 0.916667 0.200000 +vt 0.925926 0.275000 +vt 0.916667 0.275000 vt 0.861111 0.200000 vt 0.851852 0.275000 vt 0.851852 0.200000 @@ -2709,16 +2725,15 @@ vt 0.870370 0.200000 vt 0.870370 0.175000 vt 0.861111 0.175000 vt 0.851852 0.175000 -vt 0.925926 0.175000 +vt 0.925926 0.200000 vt 0.898148 0.200000 -vt 0.888889 0.175000 +vt 0.888889 0.200000 vt 0.879630 0.200000 vt 0.898148 0.275000 vt 0.888889 0.325000 vt 0.888889 0.275000 vt 0.907407 0.325000 vt 0.907407 0.275000 -vt 0.888889 0.200000 vt 0.879630 0.275000 vt 0.861111 0.275000 vt 0.870370 0.275000 @@ -2728,65 +2743,64 @@ vt 0.861111 0.425000 vt 0.898148 0.337500 vt 0.898148 0.325000 vt 0.851852 0.425000 -vt 0.925926 0.275000 +vt 0.925926 0.325000 vt 0.916667 0.325000 vt 0.888889 0.275000 vt 0.879630 0.425000 -vt 0.435185 0.800000 -vt 0.425926 0.825000 vt 0.425926 0.800000 +vt 0.435185 0.825000 +vt 0.425926 0.825000 vt 0.398148 0.787500 vt 0.388889 0.800000 vt 0.388889 0.787500 vt 0.398148 0.712500 -vt 0.416667 0.800000 -vt 0.407407 0.825000 vt 0.407407 0.800000 -vt 0.435185 0.787500 +vt 0.416667 0.825000 +vt 0.407407 0.825000 vt 0.425926 0.787500 -vt 0.407407 0.712500 +vt 0.435185 0.800000 vt 0.407407 0.787500 vt 0.444444 0.800000 -vt 0.435185 0.825000 +vt 0.435185 0.787500 +vt 0.416667 0.712500 vt 0.416667 0.787500 vt 0.398148 0.850000 vt 0.398148 0.825000 -vt 0.416667 0.712500 +vt 0.416667 0.800000 +vt 0.425926 0.712500 +vt 0.397836 0.706250 vt 0.391360 0.711298 -vt 0.389201 0.706250 vt 0.391360 0.701202 vt 0.388889 0.825000 -vt 0.425926 0.712500 -vt 0.416667 0.825000 -vt 0.398148 0.800000 vt 0.435185 0.712500 +vt 0.398148 0.800000 vt 0.444444 0.787500 vt 0.390314 0.856394 vt 0.398148 0.850287 vt 0.405982 0.856394 vt 0.416667 0.850000 -vt 0.444444 0.825000 +vt 0.444444 0.850000 vt 0.435185 0.850000 vt 0.388889 0.850000 vt 0.407407 0.850000 vt 0.425926 0.850000 -vt 0.435185 0.800000 -vt 0.425926 0.825000 vt 0.425926 0.800000 +vt 0.435185 0.825000 +vt 0.425926 0.825000 vt 0.398148 0.787500 vt 0.388889 0.800000 vt 0.388889 0.787500 -vt 0.398148 0.712500 +vt 0.388889 0.712500 vt 0.416667 0.800000 vt 0.407407 0.825000 vt 0.407407 0.800000 vt 0.435185 0.787500 vt 0.425926 0.787500 +vt 0.407407 0.712500 vt 0.407407 0.787500 vt 0.444444 0.800000 -vt 0.435185 0.825000 +vt 0.435185 0.800000 vt 0.444444 0.787500 -vt 0.407407 0.712500 vt 0.416667 0.787500 vt 0.398148 0.825000 vt 0.407407 0.850000 @@ -2796,683 +2810,684 @@ vt 0.389201 0.706250 vt 0.391360 0.701202 vt 0.397836 0.706250 vt 0.388889 0.825000 -vt 0.435185 0.712500 vt 0.416667 0.825000 vt 0.398148 0.800000 -vt 0.389102 0.862500 +vt 0.435185 0.712500 vt 0.393625 0.851924 vt 0.402671 0.851924 -vt 0.425926 0.850000 +vt 0.402671 0.873076 vt 0.416667 0.850000 -vt 0.444444 0.825000 +vt 0.444444 0.850000 vt 0.435185 0.850000 vt 0.388889 0.850000 +vt 0.425926 0.850000 vt 0.490741 0.825000 vt 0.712963 0.150000 vt -0.000000 0.325000 -vt 0.444444 0.400000 vt 0.000000 0.400000 vt 0.648148 0.425000 -vt 0.611111 0.425000 vt 0.935185 0.150000 vt 0.740741 -0.000000 vt 0.481481 0.000000 vt 0.074074 0.800000 -vt 0.444444 0.775000 +vt 0.629630 0.775000 vt 0.777778 0.775000 +vt 0.314815 0.925000 vt 0.314815 1.000000 vt 0.055556 0.700000 +vt 0.314815 0.737500 vt 0.481481 0.800000 vt 0.377360 0.715564 +vt 0.351852 0.798699 vt 0.387925 0.750000 vt 0.377360 0.784436 vt 0.326344 0.784436 -vt 0.315778 0.750000 vt 0.315778 0.850000 vt 0.326344 0.815564 vt 0.351852 0.801301 vt 0.387925 0.850000 vt 0.351852 0.898699 +vt 0.481481 0.900000 vt 0.074074 0.700000 vt 0.018519 0.700000 vt 0.055556 0.875000 vt 0.592593 0.850000 vt 0.666667 0.850000 +vt 0.592593 0.850000 vt 0.666667 0.837500 -vt 0.685185 0.825000 vt 0.675926 0.825000 vt 0.666667 0.837500 -vt 0.962963 0.737500 vt 0.988471 0.253064 vt 0.999037 0.287500 vt 0.988471 0.321936 vt 0.937455 0.321936 vt 0.926890 0.287500 +vt 0.962963 0.625000 vt 0.926889 0.387500 -vt 0.937455 0.353064 vt 0.962963 0.338801 vt 0.999036 0.387500 +vt 0.988471 0.421936 vt 0.962963 0.436199 +vt 0.925926 0.175000 +vt 0.888889 0.175000 vt 0.870370 0.437500 vt 0.907407 0.337500 -vt 0.925926 0.325000 vt 0.888889 0.425000 vt 0.388889 0.712500 +vt 0.407407 0.712500 +vt 0.444444 0.825000 vt 0.395677 0.701202 -vt 0.397836 0.706250 vt 0.395677 0.711298 +vt 0.389201 0.706250 vt 0.444444 0.712500 vt 0.405982 0.868606 vt 0.398148 0.874712 vt 0.390314 0.868606 -vt 0.444444 0.850000 -vt 0.388889 0.712500 +vt 0.398148 0.712500 +vt 0.444444 0.825000 vt 0.416667 0.712500 vt 0.395677 0.701202 vt 0.395677 0.711298 vt 0.391360 0.711298 vt 0.444444 0.712500 vt 0.407194 0.862500 -vt 0.402671 0.873076 vt 0.393625 0.873076 -vt 0.444444 0.850000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 +vt 0.389102 0.862500 +vn 1.0000 -0.0000 0.0000 vn 0.0000 -1.0000 0.0000 -vn -0.9923 0.1240 0.0000 -vn 0.0000 0.2249 0.9744 +vn -1.0000 0.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9923 -0.1240 0.0000 +vn -0.0000 -0.2249 0.9744 vn 0.0000 0.0000 1.0000 -vn 0.7071 0.0000 -0.7071 -vn 0.7071 0.0000 0.7071 -vn -0.7071 0.0000 0.7071 vn -0.7071 0.0000 -0.7071 -vn 0.9923 0.1240 0.0000 -vn -0.8740 0.1093 0.4734 -vn 0.8740 0.1093 0.4734 -vn 0.0000 0.1644 -0.9864 -vn 0.7960 0.0995 -0.5970 -vn -0.7960 0.0995 -0.5970 -vn 0.0000 -0.7071 -0.7071 -vn 0.0000 -0.7071 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.9923 -0.1240 0.0000 +vn 0.8740 -0.1093 0.4734 +vn -0.8740 -0.1093 0.4734 +vn 0.0000 -0.1644 -0.9864 +vn -0.7960 -0.0995 -0.5970 +vn 0.7960 -0.0995 -0.5970 vn 0.0000 0.7071 -0.7071 vn 0.0000 0.7071 0.7071 -vn 0.0000 0.4472 0.8944 -vn 0.0000 -0.3827 -0.9239 -vn 0.8729 0.2182 -0.4364 -vn 0.0000 -0.9239 -0.3827 -vn -0.7071 -0.7071 0.0000 -vn 0.0000 -0.9239 0.3827 -vn 0.0000 -0.3827 0.9239 -vn 0.0000 0.3827 0.9239 -vn 0.0000 0.9239 0.3827 -vn 0.0000 0.9239 -0.3827 -vn 0.9701 0.2425 0.0000 +vn -0.0000 -0.7071 -0.7071 +vn -0.0000 -0.7071 0.7071 +vn 0.0000 -0.4472 0.8944 vn 0.0000 0.3827 -0.9239 -vn 0.0000 0.4472 -0.8944 -vn 0.7071 -0.7071 0.0000 -vn 0.0000 0.8944 0.4472 -vn 0.0000 -0.8944 -0.4472 -vn 0.0000 0.8944 -0.4472 +vn -0.8729 -0.2182 -0.4364 +vn 0.0000 0.9239 -0.3827 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.3827 0.9239 +vn -0.0000 -0.3827 0.9239 +vn -0.0000 -0.9239 0.3827 +vn -0.0000 -0.9239 -0.3827 +vn -0.9701 -0.2425 0.0000 +vn -0.0000 -0.3827 -0.9239 +vn 0.0000 -0.4472 -0.8944 +vn -0.7071 0.7071 0.0000 vn 0.0000 -0.8944 0.4472 -vn -0.9774 0.2106 0.0204 -vn -0.0000 0.9954 0.0962 -vn 0.5000 0.0833 -0.8620 -vn 0.4887 0.1292 0.8628 -vn -0.4887 0.2921 -0.8221 -vn 0.5000 -0.0833 0.8620 -vn -0.5000 -0.0833 0.8620 -vn 0.4887 0.2921 -0.8221 -vn -0.4887 0.1292 0.8629 -vn -0.5000 0.0833 -0.8620 -vn 0.9774 0.2106 0.0204 -vn -0.0000 -0.9954 -0.0962 -vn -0.9774 0.2087 -0.0348 -vn 0.0000 0.9864 -0.1646 -vn 0.5000 -0.1426 -0.8542 -vn 0.4887 0.3481 0.8000 -vn -0.4887 0.0694 -0.8697 -vn 0.5000 0.1426 0.8542 -vn -0.5000 0.1426 0.8542 -vn 0.4887 0.0694 -0.8697 -vn -0.4887 0.3481 0.8000 -vn -0.5000 -0.1426 -0.8542 -vn 0.9774 0.2087 -0.0348 -vn 0.0000 -0.9864 0.1646 -vn 0.8729 0.2182 0.4364 -vn 0.4887 0.1292 0.8629 -vn -0.4887 0.1292 0.8628 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 -0.8944 -0.4472 +vn 0.0000 0.8944 0.4472 +vn 0.9774 -0.2106 0.0204 +vn -0.0000 -0.9954 0.0962 +vn -0.5000 -0.0833 -0.8620 +vn -0.4887 -0.1292 0.8628 +vn 0.4887 -0.2921 -0.8221 +vn -0.5000 0.0833 0.8620 +vn 0.5000 0.0833 0.8620 +vn -0.4887 -0.2921 -0.8221 +vn 0.4887 -0.1292 0.8628 +vn 0.5000 -0.0833 -0.8620 +vn -0.9774 -0.2106 0.0204 +vn 0.0000 0.9954 -0.0962 +vn 0.9774 -0.2087 -0.0348 +vn -0.0000 -0.9864 -0.1646 +vn -0.5000 0.1426 -0.8542 +vn -0.4887 -0.3481 0.8000 +vn 0.4887 -0.0694 -0.8697 +vn -0.5000 -0.1426 0.8542 +vn 0.5000 -0.1426 0.8542 +vn -0.4887 -0.0694 -0.8697 +vn 0.4887 -0.3481 0.8000 +vn 0.5000 0.1426 -0.8542 +vn -0.9774 -0.2087 -0.0348 +vn 0.0000 0.9864 0.1646 +vn -0.8729 -0.2182 0.4364 s off -f 458/746/102 526/747/102 510/748/102 -f 510/749/103 529/750/103 517/751/103 -f 529/752/104 509/753/104 517/754/104 -f 514/755/103 531/756/103 520/757/103 -f 471/758/103 476/759/103 472/760/103 -f 469/761/105 467/762/105 468/763/105 -f 465/764/106 470/765/106 466/766/106 -f 464/767/103 468/763/103 463/768/103 -f 490/769/107 493/770/107 489/771/107 -f 489/772/108 491/773/108 487/774/108 -f 474/775/106 477/776/106 473/777/106 -f 476/759/109 477/776/109 478/778/109 -f 472/779/103 479/780/103 464/781/103 -f 466/782/106 482/783/106 474/784/106 -f 463/785/103 485/786/103 471/787/103 -f 473/788/106 484/789/106 465/790/106 -f 485/786/102 484/789/102 486/791/102 -f 479/780/104 482/783/104 480/792/104 -f 479/780/110 470/765/110 469/761/110 -f 464/767/103 479/793/103 469/761/103 -f 466/766/106 470/765/106 480/794/106 -f 474/784/106 482/783/106 478/795/106 -f 478/796/111 481/797/111 476/798/111 -f 472/779/103 476/799/103 481/797/103 -f 473/777/106 477/776/106 486/800/106 -f 485/786/112 477/776/112 475/801/112 -f 471/758/103 485/802/103 475/801/103 -f 465/790/106 484/789/106 467/803/106 -f 467/762/113 483/804/113 468/763/113 -f 463/785/103 468/805/103 483/804/103 -f 487/806/114 496/807/114 488/808/114 -f 489/772/115 493/770/115 492/809/115 -f 487/774/116 491/773/116 495/810/116 -f 488/811/117 499/812/117 497/813/117 -f 490/814/117 501/815/117 500/816/117 -f 488/808/118 496/807/118 498/817/118 -f 490/769/119 500/816/119 494/818/119 -f 502/819/109 462/820/109 455/821/109 -f 456/822/102 502/819/102 455/821/102 -f 457/823/105 503/824/105 456/822/105 -f 462/825/104 504/826/104 457/823/104 -f 506/827/102 528/828/102 514/829/102 -f 527/830/104 461/831/104 513/832/104 -f 530/833/103 513/834/103 519/835/103 -f 526/747/105 523/836/105 527/830/105 -f 524/837/105 529/752/105 528/828/105 -f 518/838/103 533/839/103 519/840/103 -f 520/841/103 535/842/103 521/843/103 -f 537/844/104 512/845/104 460/846/104 -f 541/847/103 518/848/103 512/849/103 -f 521/850/103 542/851/103 515/852/103 -f 539/853/104 516/854/104 508/855/104 -f 511/856/102 536/857/102 459/858/102 -f 543/859/103 511/860/103 516/861/103 -f 515/862/102 538/863/102 507/864/102 -f 532/865/103 518/848/103 544/866/103 -f 521/850/103 535/867/103 545/868/103 -f 520/757/103 531/756/103 534/869/103 -f 519/835/103 533/870/103 530/833/103 -f 532/871/111 552/872/111 548/873/111 -f 533/839/110 546/874/110 530/833/110 -f 535/842/112 553/875/112 545/868/112 -f 532/876/104 549/877/104 533/839/104 -f 534/878/113 547/879/113 550/880/113 -f 534/878/102 551/881/102 535/842/102 -f 526/882/105 527/883/105 546/874/105 -f 542/884/109 539/853/109 538/863/109 -f 536/857/109 541/885/109 537/844/109 -f 543/859/109 553/875/109 552/872/109 -f 550/880/106 557/886/106 551/881/106 -f 548/887/106 555/888/106 549/877/106 -f 549/877/120 555/889/120 546/874/120 -f 550/880/120 547/879/120 556/890/120 -f 546/874/120 556/890/120 547/879/120 -f 553/875/121 551/881/121 557/891/121 -f 552/872/121 554/892/121 548/873/121 -f 553/875/121 554/892/121 552/872/121 -f 561/893/104 460/894/104 461/895/104 -f 507/896/102 562/897/102 506/898/102 -f 459/899/102 558/900/102 458/901/102 -f 565/902/104 508/903/104 509/904/104 -f 559/905/103 561/893/103 558/900/103 -f 562/897/103 564/906/103 565/902/103 -f 522/907/122 561/893/122 523/836/122 -f 562/897/122 525/908/122 524/837/122 -f 539/853/123 563/909/123 538/863/123 -f 560/910/123 536/857/123 537/844/123 -f 459/858/102 536/857/102 559/911/102 -f 507/864/102 538/863/102 563/912/102 -f 508/855/104 564/913/104 539/853/104 -f 460/846/104 560/914/104 537/844/104 -f 461/831/104 523/836/104 561/915/104 -f 458/746/102 558/916/102 522/907/102 -f 509/753/104 525/908/104 565/917/104 -f 506/827/102 562/918/102 524/837/102 -f 455/919/103 457/823/103 456/822/103 -f 568/920/105 567/921/105 566/922/105 -f 568/923/103 571/924/103 569/925/103 -f 575/926/104 567/927/104 569/928/104 -f 574/929/106 566/930/106 567/931/106 -f 574/929/109 572/932/109 573/933/109 -f 570/934/123 575/926/123 571/924/123 -f 572/932/102 570/935/102 568/920/102 -f 608/936/102 612/937/102 609/938/102 -f 615/939/124 618/940/124 614/941/124 -f 579/942/125 580/943/125 578/944/125 -f 613/945/126 611/946/126 623/947/126 -f 595/948/103 597/949/103 599/950/103 -f 581/951/127 582/952/127 580/943/127 -f 602/953/105 604/954/105 603/955/105 -f 598/956/128 577/957/128 594/958/128 -f 583/959/129 584/960/129 582/961/129 -f 600/962/102 605/963/102 602/953/102 -f 597/964/109 577/957/109 596/965/109 -f 585/966/130 586/967/130 584/960/130 -f 601/968/109 607/969/109 600/962/109 -f 612/937/103 614/970/103 613/971/103 -f 587/972/131 588/973/131 586/967/131 -f 603/974/104 606/975/104 601/968/104 -f 594/958/105 599/976/105 598/977/105 -f 589/978/132 590/979/132 588/973/132 -f 585/980/104 583/981/104 591/982/104 -f 576/983/102 594/958/102 577/957/102 -f 591/984/133 592/985/133 590/979/133 -f 610/986/106 609/938/106 611/946/106 -f 611/946/134 614/987/134 610/986/134 -f 593/988/135 578/944/135 592/985/135 -f 584/989/102 588/990/102 592/991/102 -f 616/992/109 619/993/109 617/994/109 -f 608/936/106 616/995/106 617/994/106 -f 608/936/102 619/993/102 615/996/102 -f 610/986/111 618/997/111 616/998/111 -f 620/999/105 623/1000/105 621/1001/105 -f 613/1002/136 622/1003/136 612/1004/136 -f 609/938/106 621/1005/106 611/946/106 -f 609/938/102 622/1003/102 620/999/102 -f 626/1006/104 624/1007/104 625/1008/104 -f 642/1009/103 640/1010/103 641/1011/103 -f 625/1008/109 630/1012/109 631/1013/109 -f 626/1006/105 628/1014/105 627/1015/105 -f 625/1008/137 629/1016/137 626/1006/137 -f 627/1015/103 630/1017/103 624/1007/103 -f 638/1018/103 636/1019/103 637/1020/103 -f 634/1021/105 639/1022/105 635/1023/105 -f 633/1024/109 637/1025/109 632/1026/109 -f 635/1023/104 638/1018/104 633/1024/104 -f 632/1027/102 636/1028/102 634/1021/102 -f 644/1029/106 646/1030/106 645/1031/106 -f 646/1030/104 643/1032/104 642/1009/104 -f 644/1033/102 641/1034/102 640/1035/102 -f 647/1036/105 640/1035/105 643/1032/105 -f 645/1037/109 642/1009/109 641/1038/109 -f 654/1039/102 656/1040/102 652/1041/102 -f 650/1042/102 652/1041/102 648/1043/102 -f 651/1044/106 654/1045/106 650/1046/106 -f 651/1044/104 653/1047/104 655/1048/104 -f 648/1043/138 653/1047/138 649/1049/138 -f 658/1050/109 657/1051/109 656/1040/109 -f 655/1048/139 658/1052/139 654/1045/139 -f 655/1048/104 657/1051/104 659/1053/104 -f 652/1041/138 657/1051/138 653/1047/138 -f 666/1054/102 668/1055/102 670/1056/102 -f 662/1057/102 664/1058/102 666/1054/102 -f 662/1057/106 667/1059/106 663/1060/106 -f 663/1061/104 665/1062/104 661/1063/104 -f 661/1063/140 664/1058/140 660/1064/140 -f 669/1065/105 670/1066/105 668/1055/105 -f 666/1054/141 671/1067/141 667/1059/141 -f 667/1068/104 669/1065/104 665/1062/104 -f 665/1062/140 668/1055/140 664/1058/140 -f 673/1069/125 674/1070/125 672/1071/125 -f 675/1072/127 676/1073/127 674/1070/127 -f 677/1074/129 678/1075/129 676/1076/129 -f 679/1077/130 680/1078/130 678/1075/130 -f 681/1079/131 682/1080/131 680/1078/131 -f 683/1081/132 684/1082/132 682/1080/132 -f 679/1083/104 677/1084/104 685/1085/104 -f 685/1086/133 686/1087/133 684/1082/133 -f 687/1088/135 672/1071/135 686/1087/135 -f 678/1089/102 682/1090/102 686/1091/102 -f 694/1092/109 692/1093/109 693/1094/109 -f 690/1095/103 695/1096/103 691/1097/103 -f 689/1098/106 693/1094/106 688/1099/106 -f 691/1100/104 694/1092/104 689/1101/104 -f 688/1102/102 692/1093/102 690/1103/102 -f 708/1104/122 719/1105/122 711/1106/122 -f 705/1107/102 712/1108/102 704/1109/102 -f 703/1110/104 710/1111/104 701/1112/104 -f 700/1113/102 708/1114/102 702/1115/102 -f 699/1116/104 706/1117/104 697/1118/104 -f 696/1119/102 704/1109/102 698/1120/102 -f 702/1121/105 711/1106/105 703/1110/105 -f 701/1112/109 709/1122/109 700/1113/109 -f 698/1123/105 707/1124/105 699/1116/105 -f 697/1118/109 705/1107/109 696/1119/109 -f 717/1125/102 724/1126/102 716/1127/102 -f 719/1105/104 726/1128/104 718/1129/104 -f 710/1111/121 717/1125/121 709/1122/121 -f 704/1130/122 715/1131/122 707/1124/122 -f 706/1117/121 713/1132/121 705/1107/121 -f 710/1111/104 719/1105/104 718/1129/104 -f 709/1122/102 716/1127/102 708/1114/102 -f 706/1117/104 715/1131/104 714/1133/104 -f 722/1134/103 720/1135/103 721/1136/103 -f 726/1128/103 724/1137/103 725/1138/103 -f 715/1131/104 722/1134/104 714/1133/104 -f 713/1132/102 720/1139/102 712/1108/102 -f 716/1140/105 727/1141/105 719/1105/105 -f 718/1129/109 725/1138/109 717/1125/109 -f 712/1142/105 723/1143/105 715/1131/105 -f 714/1133/109 721/1136/109 713/1132/109 -f 745/1144/142 748/1145/142 744/1146/142 -f 732/1147/143 729/1148/143 730/1149/143 -f 730/1149/144 733/1150/144 732/1147/144 -f 743/1151/145 750/1152/145 742/1153/145 -f 740/1154/143 744/1146/143 738/1155/143 -f 732/1147/104 735/1156/104 734/1157/104 -f 729/1158/146 746/1159/146 745/1144/146 -f 740/1154/143 729/1158/143 745/1144/143 -f 735/1156/147 736/1160/147 734/1157/147 -f 750/1152/104 757/1161/104 751/1162/104 -f 738/1155/143 743/1151/143 736/1160/143 -f 737/1163/148 738/1155/148 736/1160/148 -f 739/1164/143 737/1165/143 735/1166/143 -f 729/1148/149 751/1162/149 747/1167/149 -f 739/1168/102 740/1154/102 738/1155/102 -f 743/1151/150 748/1145/150 749/1169/150 -f 734/1157/143 728/1170/143 732/1147/143 -f 741/1171/151 730/1172/151 740/1154/151 -f 734/1157/143 743/1151/143 742/1153/143 -f 742/1153/152 751/1162/152 728/1170/152 -f 755/1173/153 754/1174/153 752/1175/153 -f 748/1145/148 755/1176/148 749/1169/148 -f 747/1177/151 752/1178/151 746/1159/151 -f 747/1167/144 757/1161/144 753/1179/144 -f 750/1152/147 755/1176/147 756/1180/147 -f 748/1145/102 752/1178/102 754/1181/102 -f 775/1182/154 778/1183/154 774/1184/154 -f 762/1185/155 759/1186/155 760/1187/155 -f 760/1187/156 763/1188/156 762/1185/156 -f 773/1189/157 780/1190/157 772/1191/157 -f 770/1192/155 774/1184/155 768/1193/155 -f 763/1188/104 764/1194/104 762/1185/104 -f 759/1195/158 776/1196/158 775/1182/158 -f 760/1197/155 775/1182/155 770/1192/155 -f 765/1198/159 766/1199/159 764/1194/159 -f 781/1200/104 786/1201/104 787/1202/104 -f 768/1193/155 773/1189/155 766/1199/155 -f 766/1199/160 769/1203/160 768/1193/160 -f 767/1204/155 765/1205/155 761/1206/155 -f 759/1186/161 781/1200/161 777/1207/161 -f 768/1193/102 771/1208/102 770/1192/102 -f 773/1189/162 778/1183/162 779/1209/162 -f 762/1185/155 772/1191/155 758/1210/155 -f 771/1208/163 760/1197/163 770/1192/163 -f 764/1194/155 773/1189/155 772/1191/155 -f 758/1210/164 780/1190/164 781/1200/164 -f 785/1211/165 784/1212/165 782/1213/165 -f 779/1209/160 784/1214/160 785/1215/160 -f 777/1216/163 782/1217/163 776/1196/163 -f 777/1207/156 787/1202/156 783/1218/156 -f 779/1209/159 786/1201/159 780/1190/159 -f 776/1196/102 784/1214/102 778/1183/102 -f 618/997/166 610/986/166 614/987/166 -f 623/947/110 611/946/110 621/1219/110 -f 458/746/102 522/907/102 526/747/102 -f 510/749/103 526/882/103 529/750/103 -f 529/752/104 525/908/104 509/753/104 -f 514/755/103 528/1220/103 531/756/103 -f 471/758/103 475/801/103 476/759/103 -f 469/761/105 470/765/105 467/762/105 -f 465/764/106 467/762/106 470/765/106 -f 464/767/103 469/761/103 468/763/103 -f 490/769/107 494/818/107 493/770/107 -f 489/772/108 492/809/108 491/773/108 -f 474/775/106 478/778/106 477/776/106 -f 476/759/109 475/801/109 477/776/109 -f 472/779/103 481/797/103 479/780/103 -f 466/782/106 480/792/106 482/783/106 -f 463/785/103 483/804/103 485/786/103 -f 473/788/106 486/791/106 484/789/106 -f 485/786/102 483/804/102 484/789/102 -f 479/780/104 481/797/104 482/783/104 -f 479/780/110 480/792/110 470/765/110 -f 478/796/111 482/783/111 481/797/111 -f 485/786/112 486/791/112 477/776/112 -f 467/762/113 484/789/113 483/804/113 -f 487/806/114 495/810/114 496/807/114 -f 488/811/117 498/817/117 499/812/117 -f 490/814/117 497/1221/117 501/815/117 -f 502/819/109 505/1222/109 462/820/109 -f 456/822/102 503/824/102 502/819/102 -f 457/823/105 504/826/105 503/824/105 -f 462/825/104 505/1223/104 504/826/104 -f 506/827/102 524/837/102 528/828/102 -f 527/830/104 523/836/104 461/831/104 -f 530/833/103 527/883/103 513/834/103 -f 526/747/105 522/907/105 523/836/105 -f 524/837/105 525/908/105 529/752/105 -f 518/838/103 532/876/103 533/839/103 -f 520/841/103 534/878/103 535/842/103 -f 537/844/104 541/885/104 512/845/104 -f 541/847/103 544/866/103 518/848/103 -f 521/850/103 545/868/103 542/851/103 -f 539/853/104 543/1224/104 516/854/104 -f 511/856/102 540/1225/102 536/857/102 -f 543/859/103 540/1226/103 511/860/103 -f 515/862/102 542/884/102 538/863/102 -f 532/871/111 544/866/111 552/872/111 -f 533/839/110 549/877/110 546/874/110 -f 535/842/112 551/881/112 553/875/112 -f 532/876/104 548/887/104 549/877/104 -f 534/878/113 531/756/113 547/879/113 -f 534/878/102 550/880/102 551/881/102 -f 527/883/105 530/833/105 546/874/105 -f 546/874/105 547/879/105 529/750/105 -f 547/879/105 531/756/105 528/1220/105 -f 528/1220/105 529/750/105 547/879/105 -f 529/750/105 526/882/105 546/874/105 -f 542/884/109 543/1224/109 539/853/109 -f 536/857/109 540/1225/109 541/885/109 -f 544/866/109 541/847/109 552/872/109 -f 541/847/109 540/1226/109 552/872/109 -f 543/859/109 542/851/109 553/875/109 -f 542/851/109 545/868/109 553/875/109 -f 552/872/109 540/1226/109 543/859/109 -f 550/880/106 556/1227/106 557/886/106 -f 548/887/106 554/1228/106 555/888/106 -f 546/874/120 555/889/120 556/890/120 -f 553/875/121 557/891/121 554/892/121 -f 561/893/104 560/910/104 460/894/104 -f 507/896/102 563/909/102 562/897/102 -f 459/899/102 559/905/102 558/900/102 -f 565/902/104 564/906/104 508/903/104 -f 559/905/103 560/910/103 561/893/103 -f 562/897/103 563/909/103 564/906/103 -f 522/907/122 558/900/122 561/893/122 -f 562/897/122 565/902/122 525/908/122 -f 539/853/123 564/906/123 563/909/123 -f 560/910/123 559/905/123 536/857/123 -f 455/919/103 462/1229/103 457/823/103 -f 568/920/105 569/1230/105 567/921/105 -f 568/923/103 570/934/103 571/924/103 -f 569/928/104 571/1231/104 575/926/104 -f 575/926/104 574/929/104 567/927/104 -f 574/929/106 573/933/106 566/930/106 -f 574/929/109 575/926/109 572/932/109 -f 570/934/123 572/932/123 575/926/123 -f 568/920/102 566/922/102 572/932/102 -f 566/922/102 573/933/102 572/932/102 -f 608/936/102 615/996/102 612/937/102 -f 615/939/124 619/993/124 618/940/124 -f 579/942/125 581/951/125 580/943/125 -f 595/948/103 576/983/103 597/949/103 -f 581/951/127 583/1232/127 582/952/127 -f 602/953/105 605/963/105 604/954/105 -f 598/956/128 596/1233/128 577/957/128 -f 583/959/129 585/966/129 584/960/129 -f 600/962/102 607/969/102 605/963/102 -f 597/964/109 576/983/109 577/957/109 -f 585/966/130 587/972/130 586/967/130 -f 601/968/109 606/975/109 607/969/109 -f 612/937/103 615/996/103 614/970/103 -f 587/972/131 589/978/131 588/973/131 -f 603/974/104 604/1234/104 606/975/104 -f 594/958/105 595/948/105 599/976/105 -f 589/978/132 591/984/132 590/979/132 -f 583/981/104 581/1235/104 579/1236/104 -f 579/1236/104 593/1237/104 583/981/104 -f 593/1237/104 591/982/104 583/981/104 -f 591/982/104 589/1238/104 587/1239/104 -f 587/1239/104 585/980/104 591/982/104 -f 576/983/102 595/948/102 594/958/102 -f 591/984/133 593/988/133 592/985/133 -f 610/986/106 608/936/106 609/938/106 -f 611/946/134 613/945/134 614/987/134 -f 593/988/135 579/942/135 578/944/135 -f 592/991/102 578/1240/102 580/1241/102 -f 580/1241/102 582/1242/102 584/989/102 -f 584/989/102 586/1243/102 588/990/102 -f 588/990/102 590/1244/102 592/991/102 -f 592/991/102 580/1241/102 584/989/102 -f 616/992/109 618/940/109 619/993/109 -f 608/936/106 610/986/106 616/995/106 -f 608/936/102 617/994/102 619/993/102 -f 620/999/105 622/1003/105 623/1000/105 -f 613/1002/136 623/1000/136 622/1003/136 -f 609/938/106 620/999/106 621/1005/106 -f 609/938/102 612/937/102 622/1003/102 -f 626/1006/104 627/1015/104 624/1007/104 -f 642/1009/103 643/1032/103 640/1010/103 -f 625/1008/109 624/1007/109 630/1012/109 -f 626/1006/105 629/1245/105 628/1014/105 -f 625/1008/137 631/1246/137 629/1016/137 -f 627/1015/103 628/1247/103 630/1017/103 -f 638/1018/103 639/1022/103 636/1019/103 -f 634/1021/105 636/1028/105 639/1022/105 -f 633/1024/109 638/1018/109 637/1025/109 -f 635/1023/104 639/1022/104 638/1018/104 -f 632/1027/102 637/1248/102 636/1028/102 -f 644/1029/106 647/1036/106 646/1030/106 -f 646/1030/104 647/1036/104 643/1032/104 -f 644/1033/102 645/1249/102 641/1034/102 -f 647/1036/105 644/1033/105 640/1035/105 -f 645/1037/109 646/1030/109 642/1009/109 -f 654/1039/102 658/1250/102 656/1040/102 -f 650/1042/102 654/1039/102 652/1041/102 -f 651/1044/106 655/1048/106 654/1045/106 -f 651/1044/104 649/1049/104 653/1047/104 -f 648/1043/138 652/1041/138 653/1047/138 -f 658/1050/109 659/1251/109 657/1051/109 -f 655/1048/139 659/1053/139 658/1052/139 -f 655/1048/104 653/1047/104 657/1051/104 -f 652/1041/138 656/1040/138 657/1051/138 -f 666/1054/102 664/1058/102 668/1055/102 -f 662/1057/102 660/1064/102 664/1058/102 -f 662/1057/106 666/1054/106 667/1059/106 -f 663/1061/104 667/1068/104 665/1062/104 -f 661/1063/140 665/1062/140 664/1058/140 -f 669/1065/105 671/1252/105 670/1066/105 -f 666/1054/141 670/1056/141 671/1067/141 -f 667/1068/104 671/1253/104 669/1065/104 -f 665/1062/140 669/1065/140 668/1055/140 -f 673/1069/125 675/1072/125 674/1070/125 -f 675/1072/127 677/1254/127 676/1073/127 -f 677/1074/129 679/1077/129 678/1075/129 -f 679/1077/130 681/1079/130 680/1078/130 -f 681/1079/131 683/1081/131 682/1080/131 -f 683/1081/132 685/1086/132 684/1082/132 -f 677/1084/104 675/1255/104 673/1256/104 -f 673/1256/104 687/1257/104 677/1084/104 -f 687/1257/104 685/1085/104 677/1084/104 -f 685/1085/104 683/1258/104 681/1259/104 -f 681/1259/104 679/1083/104 685/1085/104 -f 685/1086/133 687/1088/133 686/1087/133 -f 687/1088/135 673/1069/135 672/1071/135 -f 686/1091/102 672/1260/102 674/1261/102 -f 674/1261/102 676/1262/102 678/1089/102 -f 678/1089/102 680/1263/102 682/1090/102 -f 682/1090/102 684/1264/102 686/1091/102 -f 686/1091/102 674/1261/102 678/1089/102 -f 694/1092/109 695/1096/109 692/1093/109 -f 690/1095/103 692/1093/103 695/1096/103 -f 689/1098/106 694/1092/106 693/1094/106 -f 691/1100/104 695/1096/104 694/1092/104 -f 688/1102/102 693/1094/102 692/1093/102 -f 708/1104/122 716/1140/122 719/1105/122 -f 705/1107/102 713/1132/102 712/1108/102 -f 703/1110/104 711/1106/104 710/1111/104 -f 700/1113/102 709/1122/102 708/1114/102 -f 699/1116/104 707/1124/104 706/1117/104 -f 696/1119/102 705/1107/102 704/1109/102 -f 702/1121/105 708/1104/105 711/1106/105 -f 701/1112/109 710/1111/109 709/1122/109 -f 698/1123/105 704/1130/105 707/1124/105 -f 697/1118/109 706/1117/109 705/1107/109 -f 717/1125/102 725/1138/102 724/1126/102 -f 719/1105/104 727/1141/104 726/1128/104 -f 710/1111/121 718/1129/121 717/1125/121 -f 704/1130/122 712/1142/122 715/1131/122 -f 706/1117/121 714/1133/121 713/1132/121 -f 710/1111/104 711/1106/104 719/1105/104 -f 709/1122/102 717/1125/102 716/1127/102 -f 706/1117/104 707/1124/104 715/1131/104 -f 722/1134/103 723/1265/103 720/1135/103 -f 726/1128/103 727/1266/103 724/1137/103 -f 715/1131/104 723/1143/104 722/1134/104 -f 713/1132/102 721/1136/102 720/1139/102 -f 716/1140/105 724/1267/105 727/1141/105 -f 718/1129/109 726/1128/109 725/1138/109 -f 712/1142/105 720/1268/105 723/1143/105 -f 714/1133/109 722/1134/109 721/1136/109 -f 745/1144/142 746/1159/142 748/1145/142 -f 732/1147/143 728/1170/143 729/1148/143 -f 730/1149/144 731/1269/144 733/1150/144 -f 743/1151/167 749/1169/167 750/1152/167 -f 740/1154/143 745/1144/143 744/1146/143 -f 732/1147/104 733/1150/104 735/1156/104 -f 729/1158/146 747/1177/146 746/1159/146 -f 740/1154/143 730/1172/143 729/1158/143 -f 735/1156/147 737/1163/147 736/1160/147 -f 750/1152/104 756/1180/104 757/1161/104 -f 738/1155/143 744/1146/143 743/1151/143 -f 737/1163/148 739/1168/148 738/1155/148 -f 735/1166/143 733/1270/143 739/1164/143 -f 733/1270/143 731/1271/143 739/1164/143 -f 731/1271/143 741/1272/143 739/1164/143 -f 729/1148/149 728/1170/149 751/1162/149 -f 739/1168/102 741/1171/102 740/1154/102 -f 743/1151/168 744/1146/168 748/1145/168 -f 734/1157/143 742/1153/143 728/1170/143 -f 741/1171/151 731/1273/151 730/1172/151 -f 734/1157/143 736/1160/143 743/1151/143 -f 742/1153/152 750/1152/152 751/1162/152 -f 752/1175/153 753/1274/153 755/1173/153 -f 753/1274/153 757/1275/153 755/1173/153 -f 757/1275/153 756/1276/153 755/1173/153 -f 748/1145/148 754/1181/148 755/1176/148 -f 747/1177/151 753/1277/151 752/1178/151 -f 747/1167/144 751/1162/144 757/1161/144 -f 750/1152/147 749/1169/147 755/1176/147 -f 748/1145/102 746/1159/102 752/1178/102 -f 775/1182/154 776/1196/154 778/1183/154 -f 762/1185/155 758/1210/155 759/1186/155 -f 760/1187/156 761/1278/156 763/1188/156 -f 773/1189/157 779/1209/157 780/1190/157 -f 770/1192/155 775/1182/155 774/1184/155 -f 763/1188/104 765/1198/104 764/1194/104 -f 759/1195/158 777/1216/158 776/1196/158 -f 760/1197/155 759/1195/155 775/1182/155 -f 765/1198/159 767/1279/159 766/1199/159 -f 781/1200/104 780/1190/104 786/1201/104 -f 768/1193/155 774/1184/155 773/1189/155 -f 766/1199/160 767/1279/160 769/1203/160 -f 765/1205/155 763/1280/155 761/1206/155 -f 761/1206/155 771/1281/155 769/1282/155 -f 769/1282/155 767/1204/155 761/1206/155 -f 759/1186/161 758/1210/161 781/1200/161 -f 768/1193/102 769/1203/102 771/1208/102 -f 773/1189/162 774/1184/162 778/1183/162 -f 762/1185/155 764/1194/155 772/1191/155 -f 771/1208/163 761/1283/163 760/1197/163 -f 764/1194/155 766/1199/155 773/1189/155 -f 758/1210/164 772/1191/164 780/1190/164 -f 782/1213/165 783/1284/165 787/1285/165 -f 787/1285/165 786/1286/165 782/1213/165 -f 786/1286/165 785/1211/165 782/1213/165 -f 779/1209/160 778/1183/160 784/1214/160 -f 777/1216/163 783/1287/163 782/1217/163 -f 777/1207/156 781/1200/156 787/1202/156 -f 779/1209/159 785/1215/159 786/1201/159 -f 776/1196/102 782/1217/102 784/1214/102 +f 470/746/105 538/747/105 522/748/105 +f 522/749/106 541/750/106 529/751/106 +f 541/752/107 521/753/107 529/754/107 +f 526/755/106 543/756/106 532/757/106 +f 483/758/106 488/759/106 484/760/106 +f 480/761/108 482/762/108 479/763/108 +f 477/764/109 482/762/109 478/765/109 +f 476/766/106 480/761/106 475/767/106 +f 502/768/110 505/769/110 501/770/110 +f 501/771/111 503/772/111 499/773/111 +f 486/774/109 489/775/109 485/776/109 +f 490/777/112 487/778/112 489/775/112 +f 484/779/106 491/780/106 476/781/106 +f 478/782/109 494/783/109 486/784/109 +f 475/785/106 497/786/106 483/787/106 +f 485/788/109 496/789/109 477/790/109 +f 497/786/105 496/789/105 498/791/105 +f 491/780/107 494/783/107 492/792/107 +f 491/780/113 482/762/113 481/793/113 +f 476/766/106 491/794/106 481/793/106 +f 478/765/109 482/762/109 492/795/109 +f 486/784/109 494/783/109 490/796/109 +f 490/797/114 493/798/114 488/799/114 +f 484/779/106 488/800/106 493/798/106 +f 485/776/109 489/775/109 498/801/109 +f 487/778/115 498/791/115 489/775/115 +f 483/758/106 497/802/106 487/778/106 +f 477/790/109 496/789/109 479/803/109 +f 480/761/116 496/789/116 495/804/116 +f 475/785/106 480/805/106 495/804/106 +f 499/806/117 508/807/117 500/808/117 +f 501/771/118 505/769/118 504/809/118 +f 499/773/119 503/772/119 507/810/119 +f 500/811/120 511/812/120 509/813/120 +f 502/814/120 513/815/120 512/816/120 +f 500/808/121 508/807/121 510/817/121 +f 502/768/122 512/816/122 506/818/122 +f 467/819/112 517/820/112 474/821/112 +f 468/822/105 514/823/105 467/819/105 +f 469/824/108 515/825/108 468/822/108 +f 474/826/107 516/827/107 469/824/107 +f 518/828/105 540/829/105 526/830/105 +f 539/831/107 473/832/107 525/833/107 +f 542/834/106 525/835/106 531/836/106 +f 538/747/108 535/837/108 539/831/108 +f 540/829/108 537/838/108 541/752/108 +f 530/839/106 545/840/106 531/841/106 +f 532/842/106 547/843/106 533/844/106 +f 549/845/107 524/846/107 472/847/107 +f 553/848/106 530/849/106 524/850/106 +f 533/851/106 554/852/106 527/853/106 +f 551/854/107 528/855/107 520/856/107 +f 523/857/105 548/858/105 471/859/105 +f 555/860/106 523/861/106 528/862/106 +f 527/863/105 550/864/105 519/865/105 +f 544/866/106 530/849/106 556/867/106 +f 533/851/106 547/868/106 557/869/106 +f 532/757/106 543/756/106 546/870/106 +f 531/836/106 545/871/106 542/834/106 +f 544/872/114 564/873/114 560/874/114 +f 545/840/113 558/875/113 542/834/113 +f 547/843/115 565/876/115 557/869/115 +f 544/877/107 561/878/107 545/840/107 +f 546/879/116 559/880/116 562/881/116 +f 546/879/105 563/882/105 547/843/105 +f 538/883/108 539/884/108 558/875/108 +f 554/885/112 551/854/112 550/864/112 +f 549/845/112 552/886/112 553/887/112 +f 564/873/112 556/867/112 553/848/112 +f 562/881/109 569/888/109 563/882/109 +f 560/889/109 567/890/109 561/878/109 +f 561/878/123 567/891/123 558/875/123 +f 562/881/123 559/880/123 568/892/123 +f 558/875/123 568/892/123 559/880/123 +f 565/876/124 563/882/124 569/893/124 +f 564/873/124 566/894/124 560/874/124 +f 564/873/124 569/893/124 566/894/124 +f 573/895/107 472/896/107 473/897/107 +f 519/898/105 574/899/105 518/900/105 +f 471/901/105 570/902/105 470/903/105 +f 577/904/107 520/905/107 521/906/107 +f 571/907/106 573/895/106 570/902/106 +f 574/899/106 576/908/106 577/904/106 +f 534/909/125 573/895/125 535/837/125 +f 536/910/125 577/904/125 537/838/125 +f 550/864/126 576/908/126 575/911/126 +f 572/912/126 548/858/126 549/845/126 +f 471/859/105 548/858/105 571/913/105 +f 519/865/105 550/864/105 575/914/105 +f 520/856/107 576/915/107 551/854/107 +f 472/847/107 572/916/107 549/845/107 +f 473/832/107 535/837/107 573/917/107 +f 470/746/105 570/918/105 534/909/105 +f 521/753/107 537/838/107 577/919/107 +f 518/828/105 574/920/105 536/910/105 +f 467/921/106 469/824/106 468/822/106 +f 578/922/108 581/923/108 579/924/108 +f 580/925/106 583/926/106 581/927/106 +f 587/928/107 579/929/107 581/930/107 +f 586/931/109 578/932/109 579/933/109 +f 585/934/112 587/928/112 584/935/112 +f 583/926/126 584/935/126 587/928/126 +f 584/935/105 582/936/105 580/937/105 +f 620/938/105 624/939/105 621/940/105 +f 627/941/127 630/942/127 626/943/127 +f 590/944/128 593/945/128 592/946/128 +f 625/947/129 623/948/129 635/949/129 +f 607/950/106 609/951/106 611/952/106 +f 593/945/130 594/953/130 592/946/130 +f 614/954/108 616/955/108 615/956/108 +f 610/957/131 589/958/131 606/959/131 +f 595/960/132 596/961/132 594/962/132 +f 612/963/105 617/964/105 614/954/105 +f 609/965/112 589/958/112 608/966/112 +f 596/961/133 599/967/133 598/968/133 +f 613/969/112 619/970/112 612/963/112 +f 624/939/106 626/971/106 625/972/106 +f 598/968/134 601/973/134 600/974/134 +f 615/975/107 618/976/107 613/969/107 +f 606/959/108 611/977/108 610/978/108 +f 601/973/135 602/979/135 600/974/135 +f 599/980/107 597/981/107 595/982/107 +f 588/983/105 606/959/105 589/958/105 +f 603/984/136 604/985/136 602/979/136 +f 622/986/109 621/940/109 623/948/109 +f 623/948/137 626/987/137 622/986/137 +f 605/988/138 590/944/138 604/985/138 +f 596/989/105 600/990/105 604/991/105 +f 628/992/112 631/993/112 629/994/112 +f 620/938/109 628/995/109 629/994/109 +f 620/938/105 631/993/105 627/996/105 +f 622/986/114 630/997/114 628/998/114 +f 632/999/108 635/1000/108 633/1001/108 +f 624/1002/139 635/1000/139 634/1003/139 +f 621/940/109 633/1004/109 623/948/109 +f 621/940/105 634/1003/105 632/999/105 +f 638/1005/107 636/1006/107 637/1007/107 +f 654/1008/106 652/1009/106 653/1010/106 +f 637/1007/112 642/1011/112 643/1012/112 +f 638/1005/108 640/1013/108 639/1014/108 +f 637/1007/140 641/1015/140 638/1005/140 +f 639/1014/106 642/1016/106 636/1006/106 +f 650/1017/106 648/1018/106 649/1019/106 +f 646/1020/108 651/1021/108 647/1022/108 +f 645/1023/112 649/1024/112 644/1025/112 +f 647/1022/107 650/1017/107 645/1023/107 +f 644/1026/105 648/1027/105 646/1020/105 +f 656/1028/109 658/1029/109 657/1030/109 +f 658/1029/107 655/1031/107 654/1008/107 +f 656/1032/105 653/1033/105 652/1034/105 +f 659/1035/108 652/1034/108 655/1031/108 +f 653/1036/112 658/1029/112 654/1008/112 +f 666/1037/105 668/1038/105 664/1039/105 +f 662/1040/105 664/1039/105 660/1041/105 +f 663/1042/109 666/1043/109 662/1044/109 +f 663/1042/107 665/1045/107 667/1046/107 +f 660/1041/141 665/1045/141 661/1047/141 +f 668/1038/112 671/1048/112 669/1049/112 +f 667/1046/142 670/1050/142 666/1043/142 +f 667/1046/107 669/1049/107 671/1051/107 +f 664/1039/141 669/1049/141 665/1045/141 +f 678/1052/105 680/1053/105 682/1054/105 +f 674/1055/105 676/1056/105 678/1052/105 +f 674/1055/109 679/1057/109 675/1058/109 +f 675/1059/107 677/1060/107 673/1061/107 +f 673/1061/143 676/1056/143 672/1062/143 +f 680/1053/108 683/1063/108 682/1064/108 +f 678/1052/144 683/1065/144 679/1057/144 +f 679/1066/107 681/1067/107 677/1060/107 +f 676/1056/143 681/1067/143 680/1053/143 +f 684/1068/128 687/1069/128 686/1070/128 +f 686/1070/130 689/1071/130 688/1072/130 +f 689/1073/132 690/1074/132 688/1075/132 +f 691/1076/133 692/1077/133 690/1074/133 +f 693/1078/134 694/1079/134 692/1077/134 +f 695/1080/135 696/1081/135 694/1079/135 +f 691/1082/107 689/1083/107 697/1084/107 +f 697/1085/136 698/1086/136 696/1081/136 +f 698/1086/138 685/1087/138 684/1068/138 +f 698/1088/105 686/1089/105 690/1090/105 +f 706/1091/112 704/1092/112 705/1093/112 +f 702/1094/106 707/1095/106 703/1096/106 +f 701/1097/109 705/1093/109 700/1098/109 +f 703/1099/107 706/1091/107 701/1100/107 +f 700/1101/105 704/1092/105 702/1102/105 +f 723/1103/125 728/1104/125 731/1105/125 +f 717/1106/105 724/1107/105 716/1108/105 +f 715/1109/107 722/1110/107 713/1111/107 +f 712/1112/105 720/1113/105 714/1114/105 +f 711/1115/107 718/1116/107 709/1117/107 +f 708/1118/105 716/1108/105 710/1119/105 +f 715/1109/108 720/1120/108 723/1103/108 +f 713/1111/112 721/1121/112 712/1112/112 +f 711/1115/108 716/1122/108 719/1123/108 +f 709/1117/112 717/1106/112 708/1118/112 +f 729/1124/105 736/1125/105 728/1126/105 +f 731/1105/107 738/1127/107 730/1128/107 +f 721/1121/124 730/1128/124 729/1124/124 +f 716/1122/125 727/1129/125 719/1123/125 +f 718/1116/124 725/1130/124 717/1106/124 +f 722/1110/107 731/1105/107 730/1128/107 +f 721/1121/105 728/1126/105 720/1113/105 +f 718/1116/107 727/1129/107 726/1131/107 +f 734/1132/106 732/1133/106 733/1134/106 +f 738/1127/106 736/1135/106 737/1136/106 +f 727/1129/107 734/1132/107 726/1131/107 +f 725/1130/105 732/1137/105 724/1107/105 +f 731/1105/108 736/1138/108 739/1139/108 +f 730/1128/112 737/1136/112 729/1124/112 +f 724/1140/108 735/1141/108 727/1129/108 +f 726/1131/112 733/1134/112 725/1130/112 +f 756/1142/145 758/1143/145 760/1144/145 +f 744/1145/146 741/1146/146 742/1147/146 +f 742/1147/147 745/1148/147 744/1145/147 +f 754/1149/148 761/1150/148 762/1151/148 +f 750/1152/146 757/1153/146 756/1142/146 +f 745/1148/107 746/1154/107 744/1145/107 +f 741/1155/149 758/1143/149 757/1153/149 +f 752/1156/146 741/1155/146 757/1153/146 +f 746/1154/150 749/1157/150 748/1158/150 +f 762/1151/107 769/1159/107 763/1160/107 +f 750/1152/146 755/1161/146 748/1158/146 +f 748/1158/151 751/1162/151 750/1152/151 +f 743/1163/146 751/1164/146 747/1165/146 +f 741/1146/152 763/1160/152 759/1166/152 +f 750/1152/105 753/1167/105 752/1156/105 +f 755/1161/153 760/1144/153 761/1150/153 +f 744/1145/146 754/1149/146 740/1168/146 +f 753/1167/154 742/1169/154 752/1156/154 +f 746/1154/146 755/1161/146 754/1149/146 +f 754/1149/155 763/1160/155 740/1168/155 +f 767/1170/156 766/1171/156 764/1172/156 +f 760/1144/151 767/1173/151 761/1150/151 +f 758/1143/154 765/1174/154 764/1175/154 +f 759/1166/147 769/1159/147 765/1176/147 +f 761/1150/150 768/1177/150 762/1151/150 +f 760/1144/105 764/1175/105 766/1178/105 +f 786/1179/157 788/1180/157 790/1181/157 +f 774/1182/158 771/1183/158 772/1184/158 +f 773/1185/159 774/1182/159 772/1184/159 +f 785/1186/160 792/1187/160 784/1188/160 +f 782/1189/158 786/1179/158 780/1190/158 +f 774/1182/107 777/1191/107 776/1192/107 +f 771/1193/161 788/1180/161 787/1194/161 +f 772/1195/158 787/1194/158 782/1189/158 +f 777/1191/162 778/1196/162 776/1192/162 +f 793/1197/107 798/1198/107 799/1199/107 +f 780/1190/158 785/1186/158 778/1196/158 +f 778/1196/163 781/1200/163 780/1190/163 +f 779/1201/158 777/1202/158 773/1203/158 +f 771/1183/164 793/1197/164 789/1204/164 +f 781/1200/105 782/1189/105 780/1190/105 +f 785/1186/165 790/1181/165 791/1205/165 +f 774/1182/158 784/1188/158 770/1206/158 +f 783/1207/166 772/1195/166 782/1189/166 +f 776/1192/158 785/1186/158 784/1188/158 +f 784/1188/167 793/1197/167 770/1206/167 +f 796/1208/168 794/1209/168 799/1210/168 +f 790/1181/163 797/1211/163 791/1205/163 +f 788/1180/166 795/1212/166 794/1213/166 +f 789/1204/159 799/1199/159 795/1214/159 +f 791/1205/162 798/1198/162 792/1187/162 +f 790/1181/105 794/1213/105 796/1215/105 +f 630/997/169 622/986/169 626/987/169 +f 635/949/113 623/948/113 633/1216/113 +f 470/746/105 534/909/105 538/747/105 +f 522/749/106 538/883/106 541/750/106 +f 541/752/107 537/838/107 521/753/107 +f 526/755/106 540/1217/106 543/756/106 +f 483/758/106 487/778/106 488/759/106 +f 480/761/108 481/793/108 482/762/108 +f 477/764/109 479/763/109 482/762/109 +f 476/766/106 481/793/106 480/761/106 +f 502/768/110 506/818/110 505/769/110 +f 501/771/111 504/809/111 503/772/111 +f 486/774/109 490/777/109 489/775/109 +f 490/777/112 488/759/112 487/778/112 +f 484/779/106 493/798/106 491/780/106 +f 478/782/109 492/792/109 494/783/109 +f 475/785/106 495/804/106 497/786/106 +f 485/788/109 498/791/109 496/789/109 +f 497/786/105 495/804/105 496/789/105 +f 491/780/107 493/798/107 494/783/107 +f 491/780/113 492/792/113 482/762/113 +f 490/797/114 494/783/114 493/798/114 +f 487/778/115 497/786/115 498/791/115 +f 480/761/116 479/763/116 496/789/116 +f 499/806/117 507/810/117 508/807/117 +f 500/811/120 510/817/120 511/812/120 +f 502/814/120 509/1218/120 513/815/120 +f 467/819/112 514/823/112 517/820/112 +f 468/822/105 515/825/105 514/823/105 +f 469/824/108 516/827/108 515/825/108 +f 474/826/107 517/1219/107 516/827/107 +f 518/828/105 536/910/105 540/829/105 +f 539/831/107 535/837/107 473/832/107 +f 542/834/106 539/884/106 525/835/106 +f 538/747/108 534/909/108 535/837/108 +f 540/829/108 536/910/108 537/838/108 +f 530/839/106 544/877/106 545/840/106 +f 532/842/106 546/879/106 547/843/106 +f 549/845/107 553/887/107 524/846/107 +f 553/848/106 556/867/106 530/849/106 +f 533/851/106 557/869/106 554/852/106 +f 551/854/107 555/1220/107 528/855/107 +f 523/857/105 552/886/105 548/858/105 +f 555/860/106 552/1221/106 523/861/106 +f 527/863/105 554/885/105 550/864/105 +f 544/872/114 556/867/114 564/873/114 +f 545/840/113 561/878/113 558/875/113 +f 547/843/115 563/882/115 565/876/115 +f 544/877/107 560/889/107 561/878/107 +f 546/879/116 543/756/116 559/880/116 +f 546/879/105 562/881/105 563/882/105 +f 539/884/108 542/834/108 558/875/108 +f 558/875/108 559/880/108 541/750/108 +f 559/880/108 543/756/108 540/1217/108 +f 541/750/108 559/880/108 540/1217/108 +f 541/750/108 538/883/108 558/875/108 +f 554/885/112 555/1220/112 551/854/112 +f 549/845/112 548/858/112 552/886/112 +f 553/848/112 552/1221/112 564/873/112 +f 552/1221/112 555/860/112 564/873/112 +f 555/860/112 554/852/112 565/876/112 +f 554/852/112 557/869/112 565/876/112 +f 565/876/112 564/873/112 555/860/112 +f 562/881/109 568/1222/109 569/888/109 +f 560/889/109 566/1223/109 567/890/109 +f 558/875/123 567/891/123 568/892/123 +f 564/873/124 565/876/124 569/893/124 +f 573/895/107 572/912/107 472/896/107 +f 519/898/105 575/911/105 574/899/105 +f 471/901/105 571/907/105 570/902/105 +f 577/904/107 576/908/107 520/905/107 +f 571/907/106 572/912/106 573/895/106 +f 574/899/106 575/911/106 576/908/106 +f 534/909/125 570/902/125 573/895/125 +f 536/910/125 574/899/125 577/904/125 +f 550/864/126 551/854/126 576/908/126 +f 572/912/126 571/907/126 548/858/126 +f 467/921/106 474/1224/106 469/824/106 +f 578/922/108 580/937/108 581/923/108 +f 580/925/106 582/1225/106 583/926/106 +f 581/930/107 583/1226/107 587/928/107 +f 587/928/107 586/931/107 579/929/107 +f 586/931/109 585/934/109 578/932/109 +f 585/934/112 586/931/112 587/928/112 +f 583/926/126 582/1225/126 584/935/126 +f 580/937/105 578/922/105 584/935/105 +f 578/922/105 585/934/105 584/935/105 +f 620/938/105 627/996/105 624/939/105 +f 627/941/127 631/993/127 630/942/127 +f 590/944/128 591/1227/128 593/945/128 +f 607/950/106 588/983/106 609/951/106 +f 593/945/130 595/1228/130 594/953/130 +f 614/954/108 617/964/108 616/955/108 +f 610/957/131 608/1229/131 589/958/131 +f 595/960/132 597/1230/132 596/961/132 +f 612/963/105 619/970/105 617/964/105 +f 609/965/112 588/983/112 589/958/112 +f 596/961/133 597/1230/133 599/967/133 +f 613/969/112 618/976/112 619/970/112 +f 624/939/106 627/996/106 626/971/106 +f 598/968/134 599/967/134 601/973/134 +f 615/975/107 616/1231/107 618/976/107 +f 606/959/108 607/950/108 611/977/108 +f 601/973/135 603/984/135 602/979/135 +f 595/982/107 593/1232/107 603/1233/107 +f 593/1232/107 591/1234/107 603/1233/107 +f 591/1234/107 605/1235/107 603/1233/107 +f 603/1233/107 601/1236/107 595/982/107 +f 601/1236/107 599/980/107 595/982/107 +f 588/983/105 607/950/105 606/959/105 +f 603/984/136 605/988/136 604/985/136 +f 622/986/109 620/938/109 621/940/109 +f 623/948/137 625/947/137 626/987/137 +f 605/988/138 591/1227/138 590/944/138 +f 604/991/105 590/1237/105 592/1238/105 +f 592/1238/105 594/1239/105 596/989/105 +f 596/989/105 598/1240/105 600/990/105 +f 600/990/105 602/1241/105 604/991/105 +f 604/991/105 592/1238/105 596/989/105 +f 628/992/112 630/942/112 631/993/112 +f 620/938/109 622/986/109 628/995/109 +f 620/938/105 629/994/105 631/993/105 +f 632/999/108 634/1003/108 635/1000/108 +f 624/1002/139 625/1242/139 635/1000/139 +f 621/940/109 632/999/109 633/1004/109 +f 621/940/105 624/939/105 634/1003/105 +f 638/1005/107 639/1014/107 636/1006/107 +f 654/1008/106 655/1031/106 652/1009/106 +f 637/1007/112 636/1006/112 642/1011/112 +f 638/1005/108 641/1243/108 640/1013/108 +f 637/1007/140 643/1244/140 641/1015/140 +f 639/1014/106 640/1245/106 642/1016/106 +f 650/1017/106 651/1021/106 648/1018/106 +f 646/1020/108 648/1027/108 651/1021/108 +f 645/1023/112 650/1017/112 649/1024/112 +f 647/1022/107 651/1021/107 650/1017/107 +f 644/1026/105 649/1246/105 648/1027/105 +f 656/1028/109 659/1035/109 658/1029/109 +f 658/1029/107 659/1035/107 655/1031/107 +f 656/1032/105 657/1247/105 653/1033/105 +f 659/1035/108 656/1032/108 652/1034/108 +f 653/1036/112 657/1248/112 658/1029/112 +f 666/1037/105 670/1249/105 668/1038/105 +f 662/1040/105 666/1037/105 664/1039/105 +f 663/1042/109 667/1046/109 666/1043/109 +f 663/1042/107 661/1047/107 665/1045/107 +f 660/1041/141 664/1039/141 665/1045/141 +f 668/1038/112 670/1250/112 671/1048/112 +f 667/1046/142 671/1051/142 670/1050/142 +f 667/1046/107 665/1045/107 669/1049/107 +f 664/1039/141 668/1038/141 669/1049/141 +f 678/1052/105 676/1056/105 680/1053/105 +f 674/1055/105 672/1062/105 676/1056/105 +f 674/1055/109 678/1052/109 679/1057/109 +f 675/1059/107 679/1066/107 677/1060/107 +f 673/1061/143 677/1060/143 676/1056/143 +f 680/1053/108 681/1067/108 683/1063/108 +f 678/1052/144 682/1054/144 683/1065/144 +f 679/1066/107 683/1251/107 681/1067/107 +f 676/1056/143 677/1060/143 681/1067/143 +f 684/1068/128 685/1087/128 687/1069/128 +f 686/1070/130 687/1069/130 689/1071/130 +f 689/1073/132 691/1076/132 690/1074/132 +f 691/1076/133 693/1078/133 692/1077/133 +f 693/1078/134 695/1080/134 694/1079/134 +f 695/1080/135 697/1085/135 696/1081/135 +f 689/1083/107 687/1252/107 697/1084/107 +f 687/1252/107 685/1253/107 697/1084/107 +f 685/1253/107 699/1254/107 697/1084/107 +f 697/1084/107 695/1255/107 693/1256/107 +f 693/1256/107 691/1082/107 697/1084/107 +f 697/1085/136 699/1257/136 698/1086/136 +f 698/1086/138 699/1257/138 685/1087/138 +f 698/1088/105 684/1258/105 686/1089/105 +f 686/1089/105 688/1259/105 690/1090/105 +f 690/1090/105 692/1260/105 694/1261/105 +f 694/1261/105 696/1262/105 690/1090/105 +f 696/1262/105 698/1088/105 690/1090/105 +f 706/1091/112 707/1095/112 704/1092/112 +f 702/1094/106 704/1092/106 707/1095/106 +f 701/1097/109 706/1091/109 705/1093/109 +f 703/1099/107 707/1095/107 706/1091/107 +f 700/1101/105 705/1093/105 704/1092/105 +f 723/1103/125 720/1120/125 728/1104/125 +f 717/1106/105 725/1130/105 724/1107/105 +f 715/1109/107 723/1103/107 722/1110/107 +f 712/1112/105 721/1121/105 720/1113/105 +f 711/1115/107 719/1123/107 718/1116/107 +f 708/1118/105 717/1106/105 716/1108/105 +f 715/1109/108 714/1263/108 720/1120/108 +f 713/1111/112 722/1110/112 721/1121/112 +f 711/1115/108 710/1264/108 716/1122/108 +f 709/1117/112 718/1116/112 717/1106/112 +f 729/1124/105 737/1136/105 736/1125/105 +f 731/1105/107 739/1139/107 738/1127/107 +f 721/1121/124 722/1110/124 730/1128/124 +f 716/1122/125 724/1140/125 727/1129/125 +f 718/1116/124 726/1131/124 725/1130/124 +f 722/1110/107 723/1103/107 731/1105/107 +f 721/1121/105 729/1124/105 728/1126/105 +f 718/1116/107 719/1123/107 727/1129/107 +f 734/1132/106 735/1265/106 732/1133/106 +f 738/1127/106 739/1266/106 736/1135/106 +f 727/1129/107 735/1141/107 734/1132/107 +f 725/1130/105 733/1134/105 732/1137/105 +f 731/1105/108 728/1104/108 736/1138/108 +f 730/1128/112 738/1127/112 737/1136/112 +f 724/1140/108 732/1267/108 735/1141/108 +f 726/1131/112 734/1132/112 733/1134/112 +f 756/1142/145 757/1153/145 758/1143/145 +f 744/1145/146 740/1168/146 741/1146/146 +f 742/1147/147 743/1268/147 745/1148/147 +f 754/1149/148 755/1161/148 761/1150/148 +f 750/1152/146 752/1156/146 757/1153/146 +f 745/1148/107 747/1269/107 746/1154/107 +f 741/1155/149 759/1270/149 758/1143/149 +f 752/1156/146 742/1169/146 741/1155/146 +f 746/1154/150 747/1269/150 749/1157/150 +f 762/1151/107 768/1177/107 769/1159/107 +f 750/1152/146 756/1142/146 755/1161/146 +f 748/1158/151 749/1157/151 751/1162/151 +f 747/1165/146 745/1271/146 743/1163/146 +f 743/1163/146 753/1272/146 751/1164/146 +f 751/1164/146 749/1273/146 747/1165/146 +f 741/1146/152 740/1168/152 763/1160/152 +f 750/1152/105 751/1162/105 753/1167/105 +f 755/1161/153 756/1142/153 760/1144/153 +f 744/1145/146 746/1154/146 754/1149/146 +f 753/1167/154 743/1274/154 742/1169/154 +f 746/1154/146 748/1158/146 755/1161/146 +f 754/1149/155 762/1151/155 763/1160/155 +f 764/1172/156 765/1275/156 767/1170/156 +f 765/1275/156 769/1276/156 767/1170/156 +f 769/1276/156 768/1277/156 767/1170/156 +f 760/1144/151 766/1178/151 767/1173/151 +f 758/1143/154 759/1270/154 765/1174/154 +f 759/1166/147 763/1160/147 769/1159/147 +f 761/1150/150 767/1173/150 768/1177/150 +f 760/1144/105 758/1143/105 764/1175/105 +f 786/1179/157 787/1194/157 788/1180/157 +f 774/1182/158 770/1206/158 771/1183/158 +f 773/1185/159 775/1278/159 774/1182/159 +f 785/1186/160 791/1205/160 792/1187/160 +f 782/1189/158 787/1194/158 786/1179/158 +f 774/1182/107 775/1278/107 777/1191/107 +f 771/1193/161 789/1279/161 788/1180/161 +f 772/1195/158 771/1193/158 787/1194/158 +f 777/1191/162 779/1280/162 778/1196/162 +f 793/1197/107 792/1187/107 798/1198/107 +f 780/1190/158 786/1179/158 785/1186/158 +f 778/1196/163 779/1280/163 781/1200/163 +f 777/1202/158 775/1281/158 773/1203/158 +f 773/1203/158 783/1282/158 781/1283/158 +f 781/1283/158 779/1201/158 773/1203/158 +f 771/1183/164 770/1206/164 793/1197/164 +f 781/1200/105 783/1207/105 782/1189/105 +f 785/1186/165 786/1179/165 790/1181/165 +f 774/1182/158 776/1192/158 784/1188/158 +f 783/1207/166 773/1284/166 772/1195/166 +f 776/1192/158 778/1196/158 785/1186/158 +f 784/1188/167 792/1187/167 793/1197/167 +f 794/1209/168 795/1285/168 799/1210/168 +f 799/1210/168 798/1286/168 797/1287/168 +f 797/1287/168 796/1208/168 799/1210/168 +f 790/1181/163 796/1215/163 797/1211/163 +f 788/1180/166 789/1279/166 795/1212/166 +f 789/1204/159 793/1197/159 799/1199/159 +f 791/1205/162 797/1211/162 798/1198/162 +f 790/1181/105 788/1180/105 794/1213/105 From be51ae39d00acb049fb3b30db2c35e54ebb3cf92 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 7 Sep 2023 15:33:27 +0200 Subject: [PATCH 015/207] he make an big steppy --- .../inventory/recipes/ShredderRecipes.java | 6 +++--- src/main/java/com/hbm/items/ModItems.java | 8 +++++--- .../java/com/hbm/items/armor/ArmorFSB.java | 7 +++++++ .../com/hbm/main/ModEventHandlerClient.java | 19 +++++++++++++++++++ 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index 7faee9911..e4e3e68af 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -353,16 +353,16 @@ public class ShredderRecipes extends SerializableRecipe { /* GC COMPAT */ Block gcMoonBlock = Compat.tryLoadBlock(Compat.MOD_GCC, "moonBlock"); - if(gcMoonBlock != null) { + if(gcMoonBlock != null && gcMoonBlock != Blocks.air) { ShredderRecipes.setRecipe(new ItemStack(gcMoonBlock, 1, 3), new ItemStack(ModBlocks.moon_turf)); //Moon dirt ShredderRecipes.setRecipe(new ItemStack(gcMoonBlock, 1, 5), new ItemStack(ModBlocks.moon_turf)); //Moon topsoil } /* AR COMPAT */ Block arMoonTurf = Compat.tryLoadBlock(Compat.MOD_AR, "turf"); - if(arMoonTurf != null) ShredderRecipes.setRecipe(arMoonTurf, new ItemStack(ModBlocks.moon_turf)); //i assume it's moon turf + if(arMoonTurf != null && gcMoonBlock != Blocks.air) ShredderRecipes.setRecipe(arMoonTurf, new ItemStack(ModBlocks.moon_turf)); //i assume it's moon turf Block arMoonTurfDark = Compat.tryLoadBlock(Compat.MOD_AR, "turfDark"); - if(arMoonTurfDark != null) ShredderRecipes.setRecipe(arMoonTurfDark, new ItemStack(ModBlocks.moon_turf)); //probably moon dirt? would have helped if i had ever played AR for more than 5 seconds + if(arMoonTurfDark != null && gcMoonBlock != Blocks.air) ShredderRecipes.setRecipe(arMoonTurfDark, new ItemStack(ModBlocks.moon_turf)); //probably moon dirt? would have helped if i had ever played AR for more than 5 seconds } /** diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index bf19e4b95..90b3279b0 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4957,10 +4957,12 @@ public class ModItems { ArmorMaterial aMatTrench = EnumHelper.addArmorMaterial("HBM_TRENCH", 150, new int[] { 3, 8, 6, 3 }, 100); aMatTrench.customCraftingMaterial = ModItems.plate_iron; trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") - .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 9)) - .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 7)) - .addEffect(new PotionEffect(Potion.jump.id, 20, 2)) + .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) + .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 1)) + .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) + .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 0)) .enableVATS(true) + .setStepSize(1) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("trenchmaster_helmet").setTextureName(RefStrings.MODID + ":trenchmaster_helmet"); trenchmaster_plate = new ArmorTrenchmaster(aMatTrench, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) trenchmaster_helmet).setUnlocalizedName("trenchmaster_plate").setTextureName(RefStrings.MODID + ":trenchmaster_plate"); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index 4e2e60571..3cacd975c 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -65,6 +65,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public boolean hardLanding = false; public double gravity = 0; public int dashCount = 0; + public int stepSize = 0; public String step; public String jump; public String fall; @@ -158,6 +159,11 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { this.dashCount = dashCount; return this; } + + public ArmorFSB setStepSize(int stepSize) { + this.stepSize = stepSize; + return this; + } public ArmorFSB setStep(String step) { this.step = step; @@ -199,6 +205,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { this.hardLanding = original.hardLanding; this.gravity = original.gravity; this.dashCount = original.dashCount; + this.stepSize = original.stepSize; this.step = original.step; this.jump = original.jump; this.fall = original.fall; diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index bd54cf242..650c36270 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -953,6 +953,25 @@ public class ModEventHandlerClient { } } } + + if(event.phase == Phase.START) { + EntityPlayer player = mc.thePlayer; + + float discriminator = 0.003F; + float defaultStepSize = 0.5F; + int newStepSize = 0; + + if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof ArmorFSB) { + ArmorFSB plate = (ArmorFSB) player.inventory.armorInventory[2].getItem(); + if(plate.hasFSBArmor(player)) newStepSize = plate.stepSize; + } + + if(newStepSize > 0) { + player.stepHeight = newStepSize + discriminator; + } else { + for(int i = 1; i < 4; i++) if(player.stepHeight == i + discriminator) player.stepHeight = defaultStepSize; + } + } } @SideOnly(Side.CLIENT) From 3392ac21d9ea124848e32675ce01445e40f4218d Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 7 Sep 2023 21:56:08 +0200 Subject: [PATCH 016/207] telex hee hoo --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../com/hbm/blocks/network/RadioTelex.java | 31 +++++++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 6 ++ .../hbm/render/tileentity/RenderTelex.java | 57 ++++++++++++ .../java/com/hbm/tileentity/TileMappings.java | 1 + .../network/TileEntityRadioTelex.java | 7 ++ .../assets/hbm/models/machines/telex.obj | 86 ++++++++++++++++++ .../hbm/textures/gui/machine/gui_telex.png | Bin 0 -> 2760 bytes .../textures/models/{ => machines}/telex.png | Bin 10 files changed, 192 insertions(+) create mode 100644 src/main/java/com/hbm/blocks/network/RadioTelex.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderTelex.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java create mode 100644 src/main/resources/assets/hbm/models/machines/telex.obj create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_telex.png rename src/main/resources/assets/hbm/textures/models/{ => machines}/telex.png (100%) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 5806db479..786f3da08 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -799,6 +799,7 @@ public class ModBlocks { public static Block radio_torch_sender; public static Block radio_torch_receiver; public static Block radio_torch_counter; + public static Block radio_telex; public static Block conveyor; //public static Block conveyor_classic; @@ -1972,6 +1973,7 @@ public class ModBlocks { radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); radio_torch_counter = new RadioTorchCounter().setBlockName("radio_torch_counter").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_counter"); + radio_telex = new RadioTelex().setBlockName("radio_telex").setHardness(3F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radio_telex"); conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); //conveyor_classic = new BlockConveyorClassic().setBlockName("conveyor_classic").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); @@ -3229,6 +3231,7 @@ public class ModBlocks { register(radio_torch_sender); register(radio_torch_receiver); register(radio_torch_counter); + register(radio_telex); register(crane_extractor); register(crane_inserter); diff --git a/src/main/java/com/hbm/blocks/network/RadioTelex.java b/src/main/java/com/hbm/blocks/network/RadioTelex.java new file mode 100644 index 000000000..76ae87d21 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/RadioTelex.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.network; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.network.TileEntityRadioTelex; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class RadioTelex extends BlockDummyable { + + public RadioTelex() { + super(Material.wood); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityRadioTelex(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 0, 0, 1, 0}; + } + + @Override + public int getOffset() { + return 0; + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 97bcdb621..c73c53576 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -288,6 +288,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPistonInserter.class, new RenderPistonInserter()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConveyorPress.class, new RenderConveyorPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioTelex.class, new RenderTelex()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 59cbd5c29..35da24ba7 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -346,6 +346,9 @@ public class ResourceManager { //DecoContainer (File Cabinet for now) public static final IModelCustom file_cabinet = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/file_cabinet.obj")); + //TELEX + public static final IModelCustom telex = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/telex.obj")); + ////Textures TEs public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); @@ -715,6 +718,9 @@ public class ResourceManager { public static final ResourceLocation file_cabinet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/file_cabinet.png"); public static final ResourceLocation file_cabinet_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/file_cabinet_steel.png"); + //TELEX + public static final ResourceLocation telex_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/telex.png"); + ////Obj Items //Shimmer Sledge diff --git a/src/main/java/com/hbm/render/tileentity/RenderTelex.java b/src/main/java/com/hbm/render/tileentity/RenderTelex.java new file mode 100644 index 000000000..5c3601e1a --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderTelex.java @@ -0,0 +1,57 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderTelex extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glTranslated(0, 0, 1); + + bindTexture(ResourceManager.telex_tex); + ResourceManager.telex.renderAll(); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.radio_telex); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -2, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + GL11.glTranslated(0, 0, 0.5); + bindTexture(ResourceManager.telex_tex); + ResourceManager.telex.renderAll(); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index ebd4e6c46..7c6f0a484 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -384,6 +384,7 @@ public class TileMappings { put(TileEntityRadioTorchSender.class, "tileentity_rtty_sender"); put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec"); put(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter"); + put(TileEntityRadioTelex.class, "tileentity_rtty_telex"); } private static void put(Class clazz, String... names) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java new file mode 100644 index 000000000..e1b117888 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -0,0 +1,7 @@ +package com.hbm.tileentity.network; + +import net.minecraft.tileentity.TileEntity; + +public class TileEntityRadioTelex extends TileEntity { + +} diff --git a/src/main/resources/assets/hbm/models/machines/telex.obj b/src/main/resources/assets/hbm/models/machines/telex.obj new file mode 100644 index 000000000..4caa6310e --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/telex.obj @@ -0,0 +1,86 @@ +# Blender v2.76 (sub 0) OBJ File: 'telex.blend' +# www.blender.org +o Cube_Cube.001 +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 0.000000 -1.500000 +v -0.500000 1.000000 -1.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 0.000000 -1.500000 +v 0.500000 0.625000 -1.500000 +v 0.500000 0.625000 0.500000 +v 0.125000 1.000000 -1.500000 +v 0.125000 1.000000 0.500000 +v 0.500000 0.625000 0.125000 +v 0.500000 0.625000 -0.750000 +v 0.125000 1.000000 -0.750000 +v 0.125000 0.625000 -0.750000 +v 0.125000 0.625000 0.125000 +v 0.125000 1.000000 0.125000 +vt -0.000000 0.500000 +vt -0.000000 0.250000 +vt 0.500000 0.250000 +vt 0.843750 0.250000 +vt 0.750000 0.156250 +vt 1.000000 -0.000000 +vt 0.093750 0.250000 +vt 0.093750 0.156250 +vt 0.312500 0.156250 +vt 0.500000 0.000000 +vt 0.656250 0.250000 +vt -0.000000 0.750000 +vt 0.500000 0.500000 +vt 0.500000 0.156250 +vt 0.312500 0.250000 +vt 0.000000 0.156250 +vt -0.000000 0.000000 +vt 0.593750 0.343750 +vt 0.812500 0.343750 +vt 0.593750 0.500000 +vt 0.500000 0.593750 +vt 0.687500 0.500000 +vt 0.687500 0.593750 +vt 0.593750 0.250000 +vt 0.750000 -0.000000 +vt 1.000000 0.250000 +vt 0.500000 0.750000 +vt 1.000000 0.500000 +vt 0.500000 0.343750 +vt 1.000000 0.343750 +vt 0.812500 0.250000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.707100 0.707100 0.000000 +vn 0.000000 1.000000 0.000000 +s off +f 4/1/1 3/2/1 1/3/1 +f 9/4/2 7/5/2 3/6/2 +f 16/7/3 15/8/3 14/9/3 +f 1/10/4 8/5/4 10/11/4 +f 3/12/5 6/1/5 5/13/5 +f 7/14/6 9/3/6 13/15/6 +f 10/2/6 8/16/6 11/8/6 +f 12/9/3 5/17/3 6/10/3 +f 16/18/7 13/19/7 2/13/7 +f 12/20/4 13/21/4 14/13/4 +f 11/20/2 15/22/2 16/23/2 +f 14/19/7 15/18/7 11/24/7 +f 2/13/1 4/1/1 1/3/1 +f 6/25/2 3/6/2 7/5/2 +f 4/26/2 9/4/2 3/6/2 +f 13/15/3 16/7/3 14/9/3 +f 10/11/4 2/3/4 1/10/4 +f 1/10/4 5/25/4 8/5/4 +f 1/27/5 3/12/5 5/13/5 +f 12/9/6 7/14/6 13/15/6 +f 16/7/6 10/2/6 11/8/6 +f 6/10/3 7/14/3 12/9/3 +f 12/9/3 11/8/3 5/17/3 +f 8/16/3 5/17/3 11/8/3 +f 4/28/7 2/13/7 13/19/7 +f 10/29/7 16/18/7 2/13/7 +f 13/19/7 9/30/7 4/28/7 +f 12/31/7 14/19/7 11/24/7 diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_telex.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_telex.png new file mode 100644 index 0000000000000000000000000000000000000000..2866b7299c9e258c628e1f81edb2808ac8bee978 GIT binary patch literal 2760 zcmeHJeK^y58~@FYR%Fg{qB7>F$4imqh?(Q%Je)&CokC8CN(tLA*@iW%J(cXRN?yv# zJXGG2h>gimnG^ETi4il+%XZSd46`lf%z3Ws`Rn=n{Po=b-1l{VuJ8AIU-$jJKKJL= zao?YGw03C$0HEXT<#7T4KJ_+XZPZy|@z^74e(W6zuHp2rX(R451(BqGH( zanMaL+x>I$oAko`-hi686~wQmro!=YlXD!s+tfk}(fA3)7F5Azq&V{k?Gy<22ymk} z_bp9|Ryh1Y{4)?@t03xvF;dKY4F67_lA79;W5Z(GqQ`oAe1HA1BtUeJI_v$W?WM-o zu!UDP0#>a%x+A^PA;<=R;ri??kzRWNYR>6lV<%szG}8~@y2d2gi8YYF(V>)Z+--yr z@MhA))d{%!#+`f_*po?J6$4&o5Jf-e_ED&`1Z;92KKT>G?co0p{C!>0*QXQ|6g05o z;|)h%YMMb3PX_`&mi(-qHU_P2kPDwIuK`F0NYOzfZE94(zC30KAo=RV#Dsj2ab{+U6x(l2G8mW3iB$%U3MKEN@k)eC!*9VFZgfka@4ObUl&b-J zpS|?T4FZ9jq{r~t_V#DU&cFB;#NeMwi9w6@&D>(7!Ic>QYH-LMKfu&1LwBE3S`mmu$K}z371Ncw zg76$E2#LZIi923>oJTk1J$zzkX;F!_%V%YwC<&Mfumz$av*taObNF{&c1NYt^=c^M z$?{KkQ_5r}!S zJ4p#$UEPhHGKnOFMi6jZ98}8=y1m(zh326&83AdyQMnR9Zt3^kuh>SJYF2jAvQTqk z@q*uxhHj`znRhep@)B{jdw$>}HOt0f=;`CNwb>C~X_{LB6E{wEGm4!kaCqDU&y>ZU z!Ckp<9}a--(r&GGRrv+$H zM=60V{5x#KNat1cw|}gr+kdp^IA$<MTIlMqb6@py z>xp+W&`pcyGZz-*ip3*kUo6`ac%k?)|GGkI087&7E(}b3k@W8O`YvSI2a*4M#+5Xu%6X}S!0udz6DIjw227jq(xtw(zYwKhQ0Br>7vNyR0X=OzQy4V z^`XYIpsm8lxDy{cQSuJq;div|y;xmes5rHpniNGkC_9@^D~>|T(0z6oQJ5aL6tY-k z(F6V5SmOyHzX?x2cc9E#*&fz6jNY@If}rio^5={~ef`qk?sa+M^86S#g4XI8hd<;f zc}wWwz*ZMoB}mQXsjX zog(|S1y$G-K9sgVE1T8d%g2M=PghA%r16MhG7|u>Ehgw zYVchfkeQie3~QTvIz!m`erIvH^%J(r2CF-ry>Ctr?LM$P`Z>coii;b>Lq8lUbL{In zpU{<%mOH1^pDIe^(##dxiXxw28+`}bf{ju8zB2ej=^AGhfe{rY_(Luys*%V}P5KO% z{Za%Jb$kPeZU0N6TjXa*ankrvOd=D}9wG7JvDemo1%1Q!2IKo`*HW{_rYjlGT#-9G zUdx-lg#P#%mr`_XwsAe|8(2ijM666F8Y#YogKki){TU4sd2R%Qff&xW%~u6X-=Sio zJKJ9BYJ_lJC~a^f!^5}wFV)GMtx8wt#`KZm!h7&NSGLXH4CRDIg0aEP$a+v^&nw); zb^eGcgn#$0de{euwSem9JhEzf^$BlAV*y%2434zY>v;z?WvaTiex`It*MQ_B--T{@3ldE+7J)F1Oj+GUihi!ZGC82RiYyT zcf0huX4rST>ZK)*FmGQeZd0A@^(jnp$<~dkq$tq8|I_^iu6HDhTDoSPHbsxUex(5=UVl)kBUYA5U$;~HCQY?{bnfUjZ aiAvWX>Rz}>3n+Z!L2plAkEcI`UHcPMDIz2Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/telex.png b/src/main/resources/assets/hbm/textures/models/machines/telex.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/telex.png rename to src/main/resources/assets/hbm/textures/models/machines/telex.png From 82dafa437bb88902973b00e64f03b48325f9ff85 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 8 Sep 2023 15:20:47 +0200 Subject: [PATCH 017/207] hopefully fixed the malicious gigglefish from the silly dimension --- changelog | 13 ++++++++++++ src/main/java/api/hbm/fluid/IFluidUser.java | 7 +++++-- src/main/java/api/hbm/fluid/PipeNet.java | 19 ++++++++++-------- .../com/hbm/items/armor/ArmorBJJetpack.java | 16 +++++++-------- .../java/com/hbm/items/armor/ArmorFSB.java | 4 ++++ .../hbm/items/armor/ArmorTrenchmaster.java | 13 ++++++++++++ .../machine/TileEntityMachineTurbineGas.java | 13 +++++------- .../machine/storage/TileEntityBarrel.java | 18 +++++++++++++++++ src/main/resources/assets/hbm/lang/de_DE.lang | 3 +++ src/main/resources/assets/hbm/lang/en_US.lang | 3 +++ .../hbm/textures/gui/machine/gui_telex.png | Bin 2760 -> 3290 bytes .../assets/hbm/textures/items/dnt_sword.png | Bin 528 -> 1004 bytes .../hbm/textures/items/dont_they_know.png | Bin 827 -> 0 bytes .../assets/hbm/textures/items/ingot_uzh.png | Bin 0 -> 368 bytes .../textures/items/template_folder_alt.png | Bin 366 -> 0 bytes 15 files changed, 83 insertions(+), 26 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/items/dont_they_know.png create mode 100644 src/main/resources/assets/hbm/textures/items/ingot_uzh.png delete mode 100644 src/main/resources/assets/hbm/textures/items/template_folder_alt.png diff --git a/changelog b/changelog index e69de29bb..ff10295e2 100644 --- a/changelog +++ b/changelog @@ -0,0 +1,13 @@ +## Added + +## Changed +* Updated russian localization +* The UAC pistol's UV now looks prettier +* The UAC pistol now fires a burst on right click +* CCGTs can no longer have smoke removed from them, on the count of there not being enough connections anyway. The pollution rate is now equivalent to three small furnaces + +## Fixed +* Fixed the bomber not spawning if the chunkloading radios is too small +* Fixed a couple spelling mistakes like BFB fuel being called ZFB and the broken ZIRNOX +* Potentially fixed a compat issue where galacticraft moon soil isn't shreddable into NTM moon turf +* Hopefully fixed the disappearing fluid buf once and for all \ No newline at end of file diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java index 7c4a36a92..a0b5a47f0 100644 --- a/src/main/java/api/hbm/fluid/IFluidUser.java +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -37,8 +37,11 @@ public interface IFluidUser extends IFluidConnector { if(con.canConnect(type, dir.getOpposite())) { long toSend = this.getTotalFluidForSend(type, pressure); - long transfer = toSend - con.transferFluid(type, pressure, toSend); - this.removeFluidForTransfer(type, pressure, transfer); + + if(toSend > 0) { + long transfer = toSend - con.transferFluid(type, pressure, toSend); + this.removeFluidForTransfer(type, pressure, transfer); + } red = true; } } diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java index 019aa3dcd..8ad18725d 100644 --- a/src/main/java/api/hbm/fluid/PipeNet.java +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -127,14 +127,17 @@ public class PipeNet implements IPipeNet { long given = (long) Math.floor(fraction * fill); - totalGiven += (given - con.transferFluid(type, pressure, given)); - - if(trackingInstances != null) { - for(int j = 0; j < trackingInstances.size(); j++) { - PipeNet net = trackingInstances.get(j); - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SSS"); - sdf.setTimeZone(TimeZone.getTimeZone("UTC")); - log(net, sdf.format(new Date(System.currentTimeMillis())) + " Sending " + given + "mB to " + conToString(con)); + if(given > 0) { + + totalGiven += (given - con.transferFluid(type, pressure, given)); + + if(trackingInstances != null) { + for(int j = 0; j < trackingInstances.size(); j++) { + PipeNet net = trackingInstances.get(j); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SSS"); + sdf.setTimeZone(TimeZone.getTimeZone("UTC")); + log(net, sdf.format(new Date(System.currentTimeMillis())) + " Sending " + given + "mB to " + conToString(con)); + } } } } diff --git a/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java b/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java index 93f8d34a3..5882236e7 100644 --- a/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java +++ b/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java @@ -89,13 +89,13 @@ public class ArmorBJJetpack extends ArmorBJ { } } } - } - - @SideOnly(Side.CLIENT) - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - super.addInformation(stack, player, list, ext); + } - list.add(EnumChatFormatting.RED + " + " + I18nUtil.resolveKey("armor.electricJetpack")); - list.add(EnumChatFormatting.GRAY + " + " + I18nUtil.resolveKey("armor.glider")); - } + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + super.addInformation(stack, player, list, ext); + + list.add(EnumChatFormatting.RED + " + " + I18nUtil.resolveKey("armor.electricJetpack")); + list.add(EnumChatFormatting.GRAY + " + " + I18nUtil.resolveKey("armor.glider")); + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index 3cacd975c..d6eb33079 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -289,6 +289,10 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.gravity", gravity)); } + if(stepSize != 0) { + list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); + } + if(dashCount > 0) { list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); } diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java index b2168b8af..5182cbdb5 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -1,12 +1,17 @@ package com.hbm.items.armor; +import java.util.List; + import com.hbm.render.model.ModelArmorTrenchmaster; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; public class ArmorTrenchmaster extends ArmorFSB { @@ -30,4 +35,12 @@ public class ArmorTrenchmaster extends ArmorFSB { return models[armorSlot]; } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + super.addInformation(stack, player, list, ext); + + list.add(EnumChatFormatting.RED + " + " + I18nUtil.resolveKey("armor.fasterReload")); + list.add(EnumChatFormatting.GRAY + " + " + I18nUtil.resolveKey("armor.moreAmmo")); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index b98d7daf0..32d1df24d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -18,7 +18,7 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; @@ -33,7 +33,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbineGas extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider { +public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider { public long power; public static final long maxPower = 1000000L; @@ -69,7 +69,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachinePolluting impl //TODO particles from heat exchanger maybe? maybe in a future public TileEntityMachineTurbineGas() { - super(2, 200); + super(2); this.tanks = new FluidTank[4]; tanks[0] = new FluidTank(Fluids.GAS, 100000); tanks[1] = new FluidTank(Fluids.LUBRICANT, 16000); @@ -137,9 +137,6 @@ public class TileEntityMachineTurbineGas extends TileEntityMachinePolluting impl for(int i = 0; i < 2; i++) { //fuel and lube this.trySubscribe(tanks[i].getTankType(), worldObj, xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()); this.trySubscribe(tanks[i].getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ, dir); - - this.sendSmoke(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()); - this.sendSmoke(xCoord + dir.offsetX * 2 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ, dir); } //water this.trySubscribe(tanks[2].getTankType(), worldObj, xCoord - dir.offsetX * 2 + rot.offsetX * -4, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * -4, dir.getOpposite()); @@ -303,7 +300,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachinePolluting impl } double consumption = fuelMaxCons.containsKey(tanks[0].getTankType()) ? fuelMaxCons.get(tanks[0].getTankType()) : 5D; - if(worldObj.getTotalWorldTime() % 20 == 0 && tanks[0].getTankType() != Fluids.OXYHYDROGEN) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * (float) consumption * 0.25F); + if(worldObj.getTotalWorldTime() % 20 == 0 && tanks[0].getTankType() != Fluids.OXYHYDROGEN) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, 3F); makePower(consumption, throttle); } @@ -536,7 +533,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachinePolluting impl @Override public FluidTank[] getSendingTanks() { - return new FluidTank[] { tanks[3], smoke, smoke_leaded, smoke_poison }; + return new FluidTank[] { tanks[3] }; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 32444fda7..ac0cd0be4 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -72,6 +72,24 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); } + @Override + public long getDemand(FluidType type, int pressure) { + + if(this.mode == 2 || this.mode == 3 || this.sendingBrake) + return 0; + + if(tank.getPressure() != pressure) return 0; + + return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; + } + + @Override + public long transferFluid(FluidType type, int pressure, long fluid) { + long toTransfer = Math.min(getDemand(type, pressure), fluid); + tank.setFill(tank.getFill() + (int) toTransfer); + return fluid - toTransfer; + } + @Override public void updateEntity() { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 17f3b4acd..24f23de44 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -88,6 +88,7 @@ armor.cap=Schadensobergrenze: %s armor.damageModifier=Modifikator: %s (%s) armor.electricJetpack=Ionentriebwerke armor.explosionImmune=Kann nur Schaden durch Explosionen nehmen +armor.fasterReload=Schneklleres Nachladen armor.fastFall=Schneller Fall armor.fireproof=Feuerfest armor.fullSetBonus=Set-Bonus: @@ -98,10 +99,12 @@ armor.gravity=Schwerkraftsmodifikator: %s armor.hardLanding=Harte Landung armor.ignoreLimit=Resistenz ist nicht limitiert armor.modifier=Genereller Schadensmodifikator: %s +armor.moreAmmo=Mehr Munition armor.nullDamage=Nichtet Schaden von %s armor.projectileProtection=Projektilmodifikator: %s armor.rocketBoots=Rocket boots armor.sprintBoost=Verstärkter Sprint +armor.stepSize=Schritthöhe: %s armor.thermal=Wärmebildkamera armor.threshold=Schadensschwelle: %s armor.vats=Feinde-HUD diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index a6079a665..c4c2b6dbc 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -135,6 +135,7 @@ armor.damageModifier=Damage modifier of %s against %s armor.dash=Grants %s dashes armor.electricJetpack=Ion Jetpack armor.explosionImmune=Cannot take any damage except from explosions +armor.fasterReload=Faster Reload armor.fastFall=Fast Fall armor.fireproof=Fireproof armor.fullSetBonus=Full Set Bonus: @@ -145,10 +146,12 @@ armor.gravity=Gravity modifier of %s armor.hardLanding=Hard Landing armor.ignoreLimit=Resistance is not affected by resistance limit armor.modifier=General damage modifier of %s +armor.moreAmmo=More Ammo armor.nullDamage=Nullifies all damage from %s armor.projectileProtection=Damage modifier of %s against projectiles armor.rocketBoots=Rocket Boots armor.sprintBoost=Boosted Sprint +armor.stepSize=Stepsize: %s armor.thermal=Thermal Sight armor.threshold=Damage threshold of %s armor.vats=Enemy HUD diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_telex.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_telex.png index 2866b7299c9e258c628e1f81edb2808ac8bee978..32635945dfbfec330c55e2d47300777d9d4e6348 100644 GIT binary patch literal 3290 zcmd^>i#rrpAIHy(Nt8?L9*t2=N`!rDmkhZ?8I>tnL~fOFSqzJ@E@LLG6mN<$Hkp}{ zLaq^V8GSZUn{4WJqNe7FtK|9MxO1#XaYXHclqiwC7f6bX?TV5N& zYPT*N*M&h{gMDnA^1^k_jfOTJWzd`ZKWa1>sx@yvcms9Rex~RUt4hI_UAsL$r}b(J z4;tFH4d2gtDtbBGGoqIB`TR`Eb{73%j5qpVR}hxV-*E0ibrnVTCvf=bhq{hwI=~ny zZ#?ahQ{$=L>V2AkRU5yYc1RP}j*d)VWKcHqA9cP$pdE%F!^86d-ZumY;wHRYsh z2UQe6#@C6_8Fx+C{lgyWp}hxzEwSj41t6a+gy^hs0!^eCyKVvS(jJg}k$_>W1bj4P zf$_g#K;sw`$nA!JtLguMJ8>xA3(=y4d-DUJ=#r-pd-BT*s`JB198RlSVu&_etj|v+25j&_JbRv_ZH*E(E zi!_6yZ&zlN1@{St#Pb6cY_?~V8GM$lXQxN52zzG=hu`u(4GF6UwFH8q zj>psC%%!xf8jADhT|Sx74{PU;9!b%~6ji@Zo3iRkUT3B)d#)#siMkUeU7i?;>;%n( zO&4k|5Hjcm&POdi&fch9sgEH7^1&`mt8qysT1vz>d*OsC)77tv2(dd<9jyEqu|T=b*a zn!$mH8rdJ)2MkjlGrJa%hu7lm;5)RZCYD)+);gY!nN#adr)2M!{zhuC|LQgKv^)Is zlCmE?d@85}Q|~C0 zkyPyZX$$Z~)^k>o4VM`?2N>UIRvP{AT+D0DFtS7fq8hbWZIaiMF&JwePi-T`&8M#c?IV4Jvhat%LRMmP@ z9jj|<)cdvp))Zfu!3{5rrFO&0zqs(vpe6bWfbpKjZHyL6M%p)((<5jDMo|4UNhlPZc^tFP3 zV@19D;}!i2`xBeiR_n;pkbw5SB#&h|(9nT!I~B1JVg-sW|HEYK@8nul0hG9$Pn}5b zH6~w|U1_S?MmSXAD^F5YRaNe(ME8=uRRx>OSYs_d-)pQ|+tsWudI6EKgc&SxzL#f8 zEx@pYerWw40Pj{4E9$v$SXXSQ7pLdN$eEFalxqEDyZa^x@2r8~Hc7~p#ouvDHdnqC zeF|TBHmLQ&`o80h1m#;emF7AL3?nRwf-gP|L!r2UrLLBt?F~=vQa1&NMfu1;vCwF5 z-`T*JGZrMj7`Q+Jr0do?V^ft zX-iY{YZ5S7jv1Q92rVJL=u2&!(6DbzRl+jN5!t)4!X0EBW z;p>I@X=3^1>z~i~ryYe`R#FZ%NR&o(uL9x*MWAU-a8KPfv305_Ul@b?|TJIXk)Ky$`YCw~0lfq9NQIdgSL#59+0MBEiWVaZ`j@ zQ+@I3x~JSfc9zS)Zkv z^&;_ujq)AwlmSUzuvwKQdNAIwe{0`SKYzQ)>4Z)~0^iw}Y>jN;1Ja%mE!Yqas>bFT zedPE*hTZxvAlDb^GGkjjkp}g|6n_YKsTrqlj8m5;V=m%0P0Thkxz*Z=G;SH%HCyOH zYij1*rI%*~)tGFdK@BPi1F_h{UVo+zYZyI?hIVV5O(R+ z#VmgeIdHYSu~fL8zOBKmT0dAHe+oMowrM<+2Gi S`vx=oZ5nOoXj^LIllULjA=c9X literal 2760 zcmeHJeK^y58~@FYR%Fg{qB7>F$4imqh?(Q%Je)&CokC8CN(tLA*@iW%J(cXRN?yv# zJXGG2h>gimnG^ETi4il+%XZSd46`lf%z3Ws`Rn=n{Po=b-1l{VuJ8AIU-$jJKKJL= zao?YGw03C$0HEXT<#7T4KJ_+XZPZy|@z^74e(W6zuHp2rX(R451(BqGH( zanMaL+x>I$oAko`-hi686~wQmro!=YlXD!s+tfk}(fA3)7F5Azq&V{k?Gy<22ymk} z_bp9|Ryh1Y{4)?@t03xvF;dKY4F67_lA79;W5Z(GqQ`oAe1HA1BtUeJI_v$W?WM-o zu!UDP0#>a%x+A^PA;<=R;ri??kzRWNYR>6lV<%szG}8~@y2d2gi8YYF(V>)Z+--yr z@MhA))d{%!#+`f_*po?J6$4&o5Jf-e_ED&`1Z;92KKT>G?co0p{C!>0*QXQ|6g05o z;|)h%YMMb3PX_`&mi(-qHU_P2kPDwIuK`F0NYOzfZE94(zC30KAo=RV#Dsj2ab{+U6x(l2G8mW3iB$%U3MKEN@k)eC!*9VFZgfka@4ObUl&b-J zpS|?T4FZ9jq{r~t_V#DU&cFB;#NeMwi9w6@&D>(7!Ic>QYH-LMKfu&1LwBE3S`mmu$K}z371Ncw zg76$E2#LZIi923>oJTk1J$zzkX;F!_%V%YwC<&Mfumz$av*taObNF{&c1NYt^=c^M z$?{KkQ_5r}!S zJ4p#$UEPhHGKnOFMi6jZ98}8=y1m(zh326&83AdyQMnR9Zt3^kuh>SJYF2jAvQTqk z@q*uxhHj`znRhep@)B{jdw$>}HOt0f=;`CNwb>C~X_{LB6E{wEGm4!kaCqDU&y>ZU z!Ckp<9}a--(r&GGRrv+$H zM=60V{5x#KNat1cw|}gr+kdp^IA$<MTIlMqb6@py z>xp+W&`pcyGZz-*ip3*kUo6`ac%k?)|GGkI087&7E(}b3k@W8O`YvSI2a*4M#+5Xu%6X}S!0udz6DIjw227jq(xtw(zYwKhQ0Br>7vNyR0X=OzQy4V z^`XYIpsm8lxDy{cQSuJq;div|y;xmes5rHpniNGkC_9@^D~>|T(0z6oQJ5aL6tY-k z(F6V5SmOyHzX?x2cc9E#*&fz6jNY@If}rio^5={~ef`qk?sa+M^86S#g4XI8hd<;f zc}wWwz*ZMoB}mQXsjX zog(|S1y$G-K9sgVE1T8d%g2M=PghA%r16MhG7|u>Ehgw zYVchfkeQie3~QTvIz!m`erIvH^%J(r2CF-ry>Ctr?LM$P`Z>coii;b>Lq8lUbL{In zpU{<%mOH1^pDIe^(##dxiXxw28+`}bf{ju8zB2ej=^AGhfe{rY_(Luys*%V}P5KO% z{Za%Jb$kPeZU0N6TjXa*ankrvOd=D}9wG7JvDemo1%1Q!2IKo`*HW{_rYjlGT#-9G zUdx-lg#P#%mr`_XwsAe|8(2ijM666F8Y#YogKki){TU4sd2R%Qff&xW%~u6X-=Sio zJKJ9BYJ_lJC~a^f!^5}wFV)GMtx8wt#`KZm!h7&NSGLXH4CRDIg0aEP$a+v^&nw); zb^eGcgn#$0de{euwSem9JhEzf^$BlAV*y%2434zY>v;z?WvaTiex`It*MQ_B--T{@3ldE+7J)F1Oj+GUihi!ZGC82RiYyT zcf0huX4rST>ZK)*FmGQeZd0A@^(jnp$<~dkq$tq8|I_^iu6HDhTDoSPHbsxUex(5=UVl)kBUYA5U$;~HCQY?{bnfUjZ aiAvWX>Rz}>3n+Z!L2plAkEcI`UHcPMDIz2Q diff --git a/src/main/resources/assets/hbm/textures/items/dnt_sword.png b/src/main/resources/assets/hbm/textures/items/dnt_sword.png index fb74fb890dd24121f0d27bdd824b8769d347ca09..6a2fbb9fe1e17ed173b875a6329119dc1beb4a50 100644 GIT binary patch delta 967 zcmV;&133JU1ndWpGk*i4Nkl2@cxgP{sn?~GniKeFOwGbv6_1YzEdp zf|?nSB#GGMB*%x&)6(X}-{d8kFl%q1+x#+5craI_q4n&Q1 zK$0Y;#&2`(lgk7wF|DCi+JmiROcTqrG1FPndX|~H->~G~+|qAv*+9AZ zVtS6gcP`-ZHPPU0LREBBC50xZP-UIz@zE{AVH*ZKp{U5GV!U$XJWVYjn%mlOvT1U* zLB_VQ4V(DX4el@A+LqOd2FlG{eVSMO5e_s2cz>ooKw48Vbd9vGk=9k_{=B|zIBeld zC`l4`Zhp(v@av2gO6)t(h?$mIbWHL&lWfLBj{V5W^6xu(qbd%NQzqzr`2?NIt2C5W zkPU@G-lE{zxH$uL_7_UUu^qq86$S{4?n6(b40#s)oZO40uA(hkw{!ua{2`!RfC*W1;sg zoMH*L=wK^jh}Eg8;hVA+J{Sp$E3X|DgOTvRXJK);bwE(pD;{_MuEM`MF|-C=&c^HN zvq|G%BrGDK9%f{TYcsLk*SsO?mT)i<7C?P39o{oIJTwp%gAv%v=4%obZ}fjI9t^Sj p&$wdB@U9nzL@kzVOZh+H{{W|E?!lne4i5kT002ovPDHLkV1gu3=w<)_ delta 487 zcmVyfwlU9?i}B05W3N9XN^m$RNnf6pA3yeuV>akn0(NEqJPnBQ>)cd@5{`9l#Nz)#6{7e4^# z^?LZepLnid%Rs5T^($N{#ryL;@HWDnx`DK}eQtZ%2o4q+h$au$IIMac9HwX>ExGUe z6TxAM2I9%1V1K{}4u5Fir{p1ADP;_YKQ!=La-|ggexE`2$p{V;G+>f^QaDV|fbHa= z#x{^u@=#+R$SS$9fwW1+7TmzVH$42l0c&sr1A&RPdK0D8@Qf{Zs)1mJ3*_~cwa ztrAH*S7^6f;k7Hdc+DVbOd~%c&lS49zL6Uoh7AbqxsYe_h=N^9V8Z?y8=F{KX(hHz dxtsV8>L(i`k*1ihlrjJS002ovPDHLkV1l)+?A8DP diff --git a/src/main/resources/assets/hbm/textures/items/dont_they_know.png b/src/main/resources/assets/hbm/textures/items/dont_they_know.png deleted file mode 100644 index b906a88b515251e06e870ec532d687798517b1fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 827 zcmV-B1H}A^P)Sj?Sh$c-SK_0wV0+UB`JrYfoT=BKK4S!FcaEK94C&$FhWj!z-4{g6*w{&p&Cg zy;;Kp-FApAg=$4Ji7l%uny{i!hbJ>0{WC%<2rGguOJ4S48j<0r?{~Pnx5~y^z^k_@ zx%E7GKIZ6jL^Xgg5X`R+-x4n}L=;v)DR2n8-H0^zob?i(_h)F)bT%WD61p2zjDBBf z_I6h&tz|sRh^iHqnd9b-2&F*_>}=KOZd3`3LU8Qu)=^4uuB2id>Ux@!WDa8#-+j4> z(Ta3w=?_!V+|yh!v>E}mP+^_N7+9nwS#IA8PF~EgwnS^;dc5T051S0%rCd*Pvb7>3hy1@ zFqMkt>G>ECJm8%0x}Wg%{SLqX@rE?9?BCm@9%*jfsMA@mqr62cg(!~>b@P{HW)TDt zLA+-$T9Rd!Z$9gA@c4?87gPF!jJ$yHETg+#MJd61;eTU(hYdL5kput$002ovPDHLk FV1j;)fUp1n diff --git a/src/main/resources/assets/hbm/textures/items/ingot_uzh.png b/src/main/resources/assets/hbm/textures/items/ingot_uzh.png new file mode 100644 index 0000000000000000000000000000000000000000..9c1bdf70206e006dcb97bf8756b692bec49f7c3b GIT binary patch literal 368 zcmV-$0gwKPP)k$W$oZS_*}N_=Psm+mv+55C^%}euQ?_cY4o(=Q#)dO)R?>TXrp8+#Bm4)yw-8 z0AAm|czV3j+>#&(+TJMvFz9!eB*rR8`u?2U%;mI5Nes)b#nt0WMsldZLBFf7&PvLa zJ>4CrK^TUl07i01_4E+WZ6keO!$}Z87>48vCaq@YM=>nn@7RYBu%$^X1k^ zJ@;;mV$qI4Xo<3`R~Mn#uk>(mbR7#JFgG`lFjxAF~%x`{mrMbh~I O0000 Date: Fri, 8 Sep 2023 18:13:04 -0400 Subject: [PATCH 018/207] kill me --- src/main/java/com/hbm/items/ModItems.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 90b3279b0..0f57d0bd5 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4155,7 +4155,7 @@ public class ModItems { gun_deagle = new ItemGunBase(Gun50AEFactory.getDeagleConfig()).setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); gun_bio_revolver = new ItemGunBio(Gun357MagnumFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); gun_flechette = new ItemGunBase(Gun556mmFactory.getSPIWConfig(), Gun556mmFactory.getGLauncherConfig()).setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); - gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); + gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config(), Gun50BMGFactory.getAR15BurstConfig()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); gun_calamity = new ItemGunBase(Gun762mmFactory.getCalamityConfig()).setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); gun_minigun = new ItemGunLacunae(Gun5mmFactory.get53Config()).setUnlocalizedName("gun_minigun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_minigun"); gun_avenger = new ItemGunLacunae(Gun5mmFactory.get57Config()).setUnlocalizedName("gun_avenger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_avenger"); From 8bffbfc530d37620a21e7c4cc7cbc6f7d4ecbaab Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Fri, 8 Sep 2023 19:29:30 -0400 Subject: [PATCH 019/207] the goodening of cobalt & starmetal Increases the durability and enchantability of starmetal and decorated cobalt tools Makes decorated cobalt tools cheaper, made by a blast furnace recipe Decreased the cost of cobalt armor significantly Increased the resistance of cobalt armor to be slightly better than AA Increased the enchantability of cobalt armor --- src/main/java/com/hbm/crafting/ArmorRecipes.java | 9 ++++----- src/main/java/com/hbm/crafting/ToolRecipes.java | 13 ++++++++----- .../hbm/inventory/recipes/BlastFurnaceRecipes.java | 8 +++++++- src/main/java/com/hbm/items/ModItems.java | 8 ++++---- src/main/java/com/hbm/main/MainRegistry.java | 4 ++-- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index 3aaa6019e..c4ff68c93 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -44,15 +44,14 @@ public class ArmorRecipes { addChest( CMB.ingot(), ModItems.cmb_plate); addLegs( CMB.ingot(), ModItems.cmb_legs); addBoots( CMB.ingot(), ModItems.cmb_boots); - addHelmet( CO.ingot(), ModItems.cobalt_helmet); - addChest( CO.ingot(), ModItems.cobalt_plate); - addLegs( CO.ingot(), ModItems.cobalt_legs); - addBoots( CO.ingot(), ModItems.cobalt_boots); addHelmet( ModItems.rag, ModItems.robes_helmet); addChest( ModItems.rag, ModItems.robes_plate); addLegs( ModItems.rag, ModItems.robes_legs); CraftingManager.addRecipeAuto(new ItemStack(ModItems.robes_boots, 1), new Object[] { "R R", "P P", 'R', ModItems.rag, 'P', ModItems.plate_polymer }); - + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_helmet, 1), new Object[] {"ECE", 'E', CO.billet(), 'C', ModItems.steel_helmet }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_plate, 1), new Object[] { " E ", "ECE"," E ", 'E', CO.billet(), 'C', ModItems.steel_plate }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_legs, 1), new Object[] { "ECE", "E E", 'E', CO.billet(), 'C', ModItems.steel_legs }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_boots, 1), new Object[] {"ECE", 'E', CO.billet(), 'C', ModItems.steel_boots }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_helmet, 1), new Object[] { "SSS", "IGI", 'S', STEEL.plate(), 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_plate, 1), new Object[] { "KWK", "IKI", "WKW", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_legs, 1), new Object[] { "IWI", "K K", "W W", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index f418904f6..9f46fefc4 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -180,16 +180,19 @@ public class ToolRecipes { addShovel( SA326.ingot(), ModItems.schrabidium_shovel); addHoe( SA326.ingot(), ModItems.schrabidium_hoe); } else { + /* CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_sword }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_pickaxe }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_axe, 1), new Object[] { "II", "IB", " S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_axe }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_shovel, 1), new Object[] { "I", "B", "S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_shovel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_hoe, 1), new Object[] { "II", " B", " S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_hoe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_sword }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_pickaxe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_axe, 1), new Object[] { "II", "IB", " S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_axe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_shovel, 1), new Object[] { "I", "B", "S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_shovel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_hoe, 1), new Object[] { "II", " B", " S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_hoe }); + + */ + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_sword, 1), new Object[] { " I ", " B ", "ISI", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_sword }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_pickaxe, 1), new Object[] { "ISI", " B ", " I ", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_pickaxe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_axe, 1), new Object[] { "IS", "IB", " I", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_axe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_shovel, 1), new Object[] { "I", "B", "I", 'I', STAR.ingot(), 'B', ModItems.cobalt_decorated_shovel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_hoe, 1), new Object[] { "IS", " B", " I", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_hoe }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_sword, 1), new Object[] { "I", "W", "S", 'I', SA326.block(), 'W', ModItems.desh_sword, 'S', POLYMER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_pickaxe, 1), new Object[] { "BSB", " W ", " P ", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_pickaxe, 'P', POLYMER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_axe, 1), new Object[] { "BS", "BW", " P", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_axe, 'P', POLYMER.ingot() }); diff --git a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java index 3dd2f4914..2bcce4544 100644 --- a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java @@ -63,7 +63,13 @@ public class BlastFurnaceRecipes extends SerializableRecipe { addRecipe(CO, ModBlocks.block_meteor, new ItemStack(ModItems.ingot_meteorite)); addRecipe(ModItems.meteorite_sword_hardened, CO, new ItemStack(ModItems.meteorite_sword_alloyed)); addRecipe(ModBlocks.block_meteor, CO, new ItemStack(ModItems.ingot_meteorite)); - + + addRecipe(ModItems.cobalt_sword, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_sword)); + addRecipe(ModItems.cobalt_pickaxe, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_pickaxe)); + addRecipe(ModItems.cobalt_axe, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_axe)); + addRecipe(ModItems.cobalt_shovel, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_shovel)); + addRecipe(ModItems.cobalt_hoe, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_hoe)); + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) { addRecipe(ModItems.canister_empty, COAL, new ItemStack(ModItems.canister_full, 1, Fluids.OIL.getID())); } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 90b3279b0..d61786b1f 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4714,11 +4714,11 @@ public class ModItems { asbestos_plate = new ArmorFSB(MainRegistry.aMatAsbestos, 1, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_plate").setTextureName(RefStrings.MODID + ":asbestos_plate"); asbestos_legs = new ArmorFSB(MainRegistry.aMatAsbestos, 2, RefStrings.MODID + ":textures/armor/asbestos_2.png").setFireproof(true).setUnlocalizedName("asbestos_legs").setTextureName(RefStrings.MODID + ":asbestos_legs"); asbestos_boots = new ArmorFSB(MainRegistry.aMatAsbestos, 3, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_boots").setTextureName(RefStrings.MODID + ":asbestos_boots"); - security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setMod(0.75F).setProjectileProtection(0.5F).setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); + security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setMod(0.65F).setProjectileProtection(0.5F).setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); security_plate = new ArmorFSB(MainRegistry.aMatSecurity, 1, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_plate").setTextureName(RefStrings.MODID + ":security_plate"); security_legs = new ArmorFSB(MainRegistry.aMatSecurity, 2, RefStrings.MODID + ":textures/armor/security_2.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_legs").setTextureName(RefStrings.MODID + ":security_legs"); security_boots = new ArmorFSB(MainRegistry.aMatSecurity, 3, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_boots").setTextureName(RefStrings.MODID + ":security_boots"); - cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setMod(0.75F).setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); + cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setMod(0.7F).setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); cobalt_plate = new ArmorFSB(MainRegistry.aMatCobalt, 1, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_plate").setTextureName(RefStrings.MODID + ":cobalt_plate"); cobalt_legs = new ArmorFSB(MainRegistry.aMatCobalt, 2, RefStrings.MODID + ":textures/armor/cobalt_2.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_legs").setTextureName(RefStrings.MODID + ":cobalt_legs"); cobalt_boots = new ArmorFSB(MainRegistry.aMatCobalt, 3, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_boots").setTextureName(RefStrings.MODID + ":cobalt_boots"); @@ -5133,7 +5133,7 @@ public class ModItems { .addBreakAbility(new LuckAbility(1)).setUnlocalizedName("cobalt_shovel").setTextureName(RefStrings.MODID + ":cobalt_shovel"); cobalt_hoe = new ModHoe(MainRegistry.tMatCobalt).setUnlocalizedName("cobalt_hoe").setTextureName(RefStrings.MODID + ":cobalt_hoe"); - ToolMaterial matDecCobalt = EnumHelper.addToolMaterial("HBM_COBALT2", 3, 1000, 15.0F, 2.5F, 25).setRepairItem(new ItemStack(ModItems.ingot_cobalt)); + ToolMaterial matDecCobalt = EnumHelper.addToolMaterial("HBM_COBALT2", 3, 2500, 15.0F, 2.5F, 75).setRepairItem(new ItemStack(ModItems.ingot_cobalt)); cobalt_decorated_sword = new ItemSwordAbility(15F, 0, matDecCobalt) .addHitAbility(new WeaponAbility.BobbleAbility()).setUnlocalizedName("cobalt_decorated_sword").setTextureName(RefStrings.MODID + ":cobalt_decorated_sword"); cobalt_decorated_pickaxe = new ItemToolAbility(6F, 0, matDecCobalt, EnumToolType.PICKAXE) @@ -5154,7 +5154,7 @@ public class ModItems { .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cobalt_decorated_shovel").setTextureName(RefStrings.MODID + ":cobalt_decorated_shovel"); cobalt_decorated_hoe = new ModHoe(matDecCobalt).setUnlocalizedName("cobalt_decorated_hoe").setTextureName(RefStrings.MODID + ":cobalt_decorated_hoe"); - ToolMaterial matStarmetal = EnumHelper.addToolMaterial("HBM_STARMETAL", 3, 1000, 20.0F, 2.5F, 30).setRepairItem(new ItemStack(ModItems.ingot_starmetal)); + ToolMaterial matStarmetal = EnumHelper.addToolMaterial("HBM_STARMETAL", 3, 3000, 20.0F, 2.5F, 100).setRepairItem(new ItemStack(ModItems.ingot_starmetal)); starmetal_sword = new ItemSwordAbility(25F, 0, matStarmetal) .addHitAbility(new WeaponAbility.BeheaderAbility()) .addHitAbility(new WeaponAbility.StunAbility(3)) diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index e8834cff7..1ffdcc58f 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -129,7 +129,7 @@ public class MainRegistry { public static ToolMaterial tMatCMB = EnumHelper.addToolMaterial("HBM_CMB", 3, 8500, 40.0F, 55F, 100); public static ToolMaterial tMatElec = EnumHelper.addToolMaterial("HBM_ELEC", 3, 0, 30.0F, 12.0F, 2); public static ToolMaterial tMatDesh = EnumHelper.addToolMaterial("HBM_DESH", 2, 0, 7.5F, 2.0F, 10); - public static ToolMaterial tMatCobalt = EnumHelper.addToolMaterial("HBM_COBALT", 3, 750, 9.0F, 2.5F, 15); + public static ToolMaterial tMatCobalt = EnumHelper.addToolMaterial("HBM_COBALT", 3, 750, 9.0F, 2.5F, 60); public static ToolMaterial enumToolMaterialSaw = EnumHelper.addToolMaterial("SAW", 2, 750, 2.0F, 3.5F, 25); public static ToolMaterial enumToolMaterialBat = EnumHelper.addToolMaterial("BAT", 0, 500, 1.5F, 3F, 25); @@ -158,7 +158,7 @@ public class MainRegistry { public static ArmorMaterial aMatCMB = EnumHelper.addArmorMaterial("HBM_CMB", 60, new int[] { 3, 8, 6, 3 }, 50); public static ArmorMaterial aMatAus3 = EnumHelper.addArmorMaterial("HBM_AUSIII", 375, new int[] { 2, 6, 5, 2 }, 0); public static ArmorMaterial aMatSecurity = EnumHelper.addArmorMaterial("HBM_SECURITY", 100, new int[] { 3, 8, 6, 3 }, 15); - public static ArmorMaterial aMatCobalt = EnumHelper.addArmorMaterial("HBM_COBALT", 70, new int[] { 3, 8, 6, 3 }, 25); + public static ArmorMaterial aMatCobalt = EnumHelper.addArmorMaterial("HBM_COBALT", 70, new int[] { 3, 8, 6, 3 }, 60); public static ArmorMaterial aMatStarmetal = EnumHelper.addArmorMaterial("HBM_STARMETAL", 150, new int[] { 3, 8, 6, 3 }, 100); public static ArmorMaterial aMatBismuth = EnumHelper.addArmorMaterial("HBM_BISMUTH", 100, new int[] { 3, 8, 6, 3 }, 100); From 360177414aad78481c8455ba39719f46fcda7afb Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 9 Sep 2023 23:43:50 +0200 Subject: [PATCH 020/207] the telex machine is kept so clean --- .../com/hbm/blocks/network/RadioTelex.java | 15 + .../inventory/gui/GUIScreenRadioTorch.java | 1 - .../inventory/gui/GuiScreenRadioTelex.java | 321 ++++++++++++++++++ .../hbm/items/armor/ArmorTrenchmaster.java | 4 +- .../java/com/hbm/main/CraftingManager.java | 2 +- .../network/TileEntityRadioTelex.java | 189 ++++++++++- src/main/resources/assets/hbm/lang/de_DE.lang | 2 +- .../hbm/textures/blocks/radio_telex.png | Bin 0 -> 609 bytes 8 files changed, 528 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/radio_telex.png diff --git a/src/main/java/com/hbm/blocks/network/RadioTelex.java b/src/main/java/com/hbm/blocks/network/RadioTelex.java index 76ae87d21..8b7614b51 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTelex.java +++ b/src/main/java/com/hbm/blocks/network/RadioTelex.java @@ -1,9 +1,12 @@ package com.hbm.blocks.network; import com.hbm.blocks.BlockDummyable; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityRadioTelex; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -28,4 +31,16 @@ public class RadioTelex extends BlockDummyable { public int getOffset() { return 0; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote && !player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); + return true; + } else { + return !player.isSneaking(); + } + } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java index fb9f41afc..fc90751df 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java @@ -85,7 +85,6 @@ public class GUIScreenRadioTorch extends GuiScreen { GL11.glEnable(GL11.GL_LIGHTING); } - private void drawGuiContainerForegroundLayer(int x, int y) { String name = I18nUtil.resolveKey(this.title); this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752); diff --git a/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java b/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java new file mode 100644 index 000000000..316c6e9fb --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java @@ -0,0 +1,321 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; +import java.util.Random; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.network.TileEntityRadioTelex; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatAllowedCharacters; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class GuiScreenRadioTelex extends GuiScreen { + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_telex.png"); + protected TileEntityRadioTelex telex; + protected int xSize = 256; + protected int ySize = 244; + protected int guiLeft; + protected int guiTop; + protected GuiTextField txFrequency; + protected GuiTextField rxFrequency; + protected boolean textFocus = false; + + protected String[] txBuffer; + protected int cursorPos = 0; + + public GuiScreenRadioTelex(TileEntityRadioTelex tile) { + this.telex = tile; + this.txBuffer = new String[tile.txBuffer.length]; + + for(int i = 0; i < txBuffer.length; i++) { + this.txBuffer[i] = tile.txBuffer[i]; + } + + for(int i = 4; i > 0; i--) { + if(!txBuffer[i].isEmpty()) { + cursorPos = i; + break; + } + } + } + + @Override + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + + Keyboard.enableRepeatEvents(true); + + this.txFrequency = new GuiTextField(this.fontRendererObj, guiLeft + 29, guiTop + 110, 90, 14); + this.txFrequency.setTextColor(0x00ff00); + this.txFrequency.setDisabledTextColour(0x00ff00); + this.txFrequency.setEnableBackgroundDrawing(false); + this.txFrequency.setMaxStringLength(10); + this.txFrequency.setText(telex.txChannel == null ? "" : telex.txChannel); + + this.rxFrequency = new GuiTextField(this.fontRendererObj, guiLeft + 29, guiTop + 224, 90, 14); + this.rxFrequency.setTextColor(0x00ff00); + this.rxFrequency.setDisabledTextColour(0x00ff00); + this.rxFrequency.setEnableBackgroundDrawing(false); + this.rxFrequency.setMaxStringLength(10); + this.rxFrequency.setText(telex.rxChannel == null ? "" : telex.rxChannel); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + private void drawGuiContainerForegroundLayer(int x, int y) { + + if(checkClick(x, y, 7, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "BELL", "Plays a bell when this character is received"}), x, y); + if(checkClick(x, y, 27, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "PRINT", "Forces recipient to print message after transmission ends"}), x, y); + if(checkClick(x, y, 47, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "CLEAR SCREEN", "Wipes message buffer when this character is received"}), x, y); + if(checkClick(x, y, 67, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "FORMAT", "Inserts format character for message formatting"}), x, y); + if(checkClick(x, y, 87, 85, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GOLD + "PAUSE", "Pauses message transmission for one second"}), x, y); + + if(checkClick(x, y, 127, 105, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GREEN + "SAVE ID"}), x, y); + if(checkClick(x, y, 147, 105, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.YELLOW + "SEND MESSAGE"}), x, y); + if(checkClick(x, y, 167, 105, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.RED + "DELETE MESSAGE BUFFER"}), x, y); + + if(checkClick(x, y, 127, 219, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.GREEN + "SAVE ID"}), x, y); + if(checkClick(x, y, 147, 219, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.AQUA + "PRINT MESSAGE"}), x, y); + if(checkClick(x, y, 167, 219, 18, 18)) this.func_146283_a(Arrays.asList(new String[] {EnumChatFormatting.RED + "CLEAR SCREEN"}), x, y); + } + + private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + this.txFrequency.drawTextBox(); + this.rxFrequency.drawTextBox(); + + for(int line = 0; line < 5; line++) { + String text = txBuffer[line]; + int y = 11 + 14 * line; + + String format = EnumChatFormatting.RESET + ""; + + for(int index = 0; index < text.length(); index++) { + int x = 11 + 7 * index; + char c = text.charAt(index); + x += (7 - this.fontRendererObj.getCharWidth(c)) / 2; + if(c == '§' && text.length() > index + 1) { + format = "\u00a7" + text.charAt(index + 1); + x -= 3; + } + String glyph = format + c; + if(c == '\u0007') glyph = EnumChatFormatting.RED + "B"; + if(c == '\u000c') glyph = EnumChatFormatting.RED + "P"; + if(c == '\u007f') glyph = EnumChatFormatting.RED + "<"; + if(c == '\u0016') glyph = EnumChatFormatting.RED + "W"; + this.fontRendererObj.drawString(glyph, guiLeft + x, guiTop + y, 0x00ff00); + } + + if(System.currentTimeMillis() % 1000 < 500 && this.textFocus) { + int x = Math.max(11 + 7 * (text.length() - 1) + 7, 11); + if(this.cursorPos == line) { + this.fontRendererObj.drawString("|", guiLeft + x, guiTop + y, 0x00ff00); + } + } + } + + for(int line = 0; line < 5; line++) { + String text = telex.rxBuffer[line]; + int y = 145 + 14 * line; + + String format = EnumChatFormatting.RESET + ""; + + int x = 11; + + for(int index = 0; index < text.length(); index++) { + + char c = text.charAt(index); + x += (7 - this.fontRendererObj.getCharWidth(c)) / 2; + if(c == '§' && text.length() > index + 1) { + format = "\u00a7" + text.charAt(index + 1); + c = ' '; + } else if(c == '§') { + c = ' '; + } else if(index > 0 && text.charAt(index - 1) == '§') { + c = ' '; + x -= 14; + } + String glyph = format + c; + this.fontRendererObj.drawString(glyph, guiLeft + x, guiTop + y, 0x00ff00); + x += 7; + } + } + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glLineWidth(3F); + Random rand = new Random(telex.sendingChar); + Tessellator tess = Tessellator.instance; + tess.startDrawing(GL11.GL_LINES); + tess.setColorOpaque_I(0x00ff00); + double offset = 0; + for(int i = 0; i < 48; i++) { + tess.addVertex(guiLeft + 199 + i, guiTop + 93.5 + offset, this.zLevel + 10); + if(telex.sendingChar != ' ' && i > 4 && i < 43) offset = rand.nextGaussian() * 7; else offset = 0; + offset = MathHelper.clamp_double(offset, -7D, 7D); + tess.addVertex(guiLeft + 199 + i + 1, guiTop + 93.5 + offset, this.zLevel + 10); + } + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + this.txFrequency.mouseClicked(x, y, i); + this.rxFrequency.mouseClicked(x, y, i); + + if(guiLeft + 7 <= x && guiLeft + 7 + 242 > x && guiTop + 7 < y && guiTop + 7 + 74 >= y) { + this.textFocus = true; + } else { + this.textFocus = false; + } + + char character = '\0'; + String cmd = null; + + /* special characters */ + // BEL + if(checkClick(x, y, 7, 85, 18, 18)) character = '\u0007'; // bell + // PRT + if(checkClick(x, y, 27, 85, 18, 18)) character = '\u000c'; // form feed + // CLS + if(checkClick(x, y, 47, 85, 18, 18)) character = '\u007f'; // delete + // FMT + if(checkClick(x, y, 67, 85, 18, 18)) character = '§'; // minecraft formatting character + // PSE + if(checkClick(x, y, 87, 85, 18, 18)) character = '\u0016'; // synchronous idle + + // SVE + if(checkClick(x, y, 127, 105, 18, 18) || checkClick(x, y, 127, 219, 18, 18)) cmd = "sve"; // save channel + // SND + if(checkClick(x, y, 147, 105, 18, 18)) cmd = "snd"; // send message in TX buffer + // DEL + if(checkClick(x, y, 167, 105, 18, 18)) { // delete message in TX buffer + cmd = "rxdel"; + for(int j = 0; j < 5; j++) this.txBuffer[j] = ""; + NBTTagCompound data = new NBTTagCompound(); + for(int j = 0; j < 5; j++) data.setString("tx" + j, this.txBuffer[j]); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, telex.xCoord, telex.yCoord, telex.zCoord)); + } + // PRT + if(checkClick(x, y, 147, 219, 18, 18)) cmd = "rxprt"; // print message in RX buffer + // CLS + if(checkClick(x, y, 167, 219, 18, 18)) cmd = "rxcls"; // delete message in RX buffer + + if(cmd != null) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setString("cmd", cmd); + + if("snd".equals(cmd)) { + for(int j = 0; j < 5; j++) data.setString("tx" + j, this.txBuffer[j]); + } + + if("sve".equals(cmd)) { + data.setString("txChan", this.txFrequency.getText()); + data.setString("rxChan", this.rxFrequency.getText()); + } + + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, telex.xCoord, telex.yCoord, telex.zCoord)); + } + + if(character != '\0') { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + setTextFocus(); + submitChar(character); + } + } + + protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { + return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; + } + + protected void setTextFocus() { + this.textFocus = true; + this.txFrequency.setFocused(false); + this.rxFrequency.setFocused(false); + } + + @Override + protected void keyTyped(char c, int i) { + + if(this.txFrequency.textboxKeyTyped(c, i)) return; + if(this.rxFrequency.textboxKeyTyped(c, i)) return; + + if(this.textFocus) { + + if(i == 1) { + this.textFocus = false; + return; + } + + if(i == Keyboard.KEY_UP) this.cursorPos--; + if(i == Keyboard.KEY_DOWN) this.cursorPos++; + + this.cursorPos = MathHelper.clamp_int(cursorPos, 0, 4); + + if(ChatAllowedCharacters.isAllowedCharacter(c)) { + submitChar(c); + return; + } + + if(i == Keyboard.KEY_BACK && this.txBuffer[cursorPos].length() > 0) { + this.txBuffer[cursorPos] = this.txBuffer[cursorPos].substring(0, this.txBuffer[cursorPos].length() - 1); + } + } + + if(i == 1 || i == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + this.mc.setIngameFocus(); + } + } + + protected void submitChar(char c) { + String line = this.txBuffer[cursorPos]; + + if(line.length() < TileEntityRadioTelex.lineWidth) { + this.txBuffer[cursorPos] = line + c; + } + } + + @Override + public void onGuiClosed() { + Keyboard.enableRepeatEvents(false); + NBTTagCompound data = new NBTTagCompound(); + for(int j = 0; j < 5; j++) data.setString("tx" + j, this.txBuffer[j]); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, telex.xCoord, telex.yCoord, telex.zCoord)); + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } +} diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java index 5182cbdb5..e4c42037e 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -40,7 +40,7 @@ public class ArmorTrenchmaster extends ArmorFSB { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { super.addInformation(stack, player, list, ext); - list.add(EnumChatFormatting.RED + " + " + I18nUtil.resolveKey("armor.fasterReload")); - list.add(EnumChatFormatting.GRAY + " + " + I18nUtil.resolveKey("armor.moreAmmo")); + list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fasterReload")); + list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.moreAmmo")); } } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 338981eaa..177442895 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -783,7 +783,7 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.ams_catalyst_dineutronium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_hagalaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, DNT.dust(), DNT.dust(), DNT.dust(), DNT.dust() }); addRecipeAuto(new ItemStack(ModBlocks.dfc_core, 1), new Object[] { "DLD", "LML", "DLD", 'D', ModItems.ingot_bismuth, 'L', DNT.block(), 'M', KEY_CIRCUIT_BISMUTH }); addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', new ItemStack(ModBlocks.sellafield, 1, 5), 'L', ModItems.hull_small_steel }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModBlocks.block_dineutronium, 'L', ModItems.hull_small_steel }); addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel }); addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', AL.plate() }); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java index e1b117888..7b933f115 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -1,7 +1,194 @@ package com.hbm.tileentity.network; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.gui.GuiScreenRadioTelex; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.network.RTTYSystem.RTTYChannel; +import com.hbm.util.ItemStackUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; -public class TileEntityRadioTelex extends TileEntity { +public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider { + public static final int lineWidth = 33; + public String txChannel = ""; + public String rxChannel = ""; + public String[] txBuffer = new String[] {"", "", "", "", ""}; + public String[] rxBuffer = new String[] {"", "", "", "", ""}; + public int sendingLine = 0; + public int sendingIndex = 0; + public boolean isSending = false; + public int sendingWait = 0; + public int writingLine = 0; + public boolean printAfterRx = false; + public boolean deleteOnReceive = true; + public char sendingChar = ' '; + + public static final char eol = '\n'; + public static final char eot = '\u0004'; + public static final char bell = '\u0007'; + public static final char print = '\u000c'; + public static final char pause = '\u0016'; + public static final char clear = '\u007f'; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.sendingChar = ' '; + + if(this.isSending && this.txChannel.isEmpty()) this.isSending = false; + + if(this.isSending) { + + if(sendingWait > 0) { + sendingWait--; + } else { + + String line = txBuffer[sendingLine]; + + if(line.length() > sendingIndex) { + char c = line.charAt(sendingIndex); + sendingIndex++; + if(c == pause) { + sendingWait = 20; + } else { + RTTYSystem.broadcast(worldObj, this.txChannel, c); + this.sendingChar = c; + } + } else { + + if(sendingLine >= 4) { + this.isSending = false; + RTTYSystem.broadcast(worldObj, this.txChannel, eot); + this.sendingLine = 0; + this.sendingIndex = 0; + } else { + RTTYSystem.broadcast(worldObj, this.txChannel, eol); + this.sendingLine++; + this.sendingIndex = 0; + } + } + } + } + + if(!this.rxChannel.isEmpty()) { + RTTYChannel chan = RTTYSystem.listen(worldObj, this.rxChannel); + + if(chan != null && chan.signal instanceof Character && (chan.timeStamp > worldObj.getTotalWorldTime() - 2 && chan.timeStamp != -1)) { + char c = (char) chan.signal; + + if(this.deleteOnReceive) { + this.deleteOnReceive = false; + for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; + this.writingLine = 0; + } + + if(c == eot) { + if(this.printAfterRx) { + this.printAfterRx = false; + this.print(); + } + this.deleteOnReceive = true; + } else if(c == eol) { + if(this.writingLine < 4) this.writingLine++; + } else if(c == bell) { + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.orb", 2F, 0.5F); + } else if(c == print) { + this.printAfterRx = true; + } else if(c == clear) { + for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; + this.writingLine = 0; + } else { + this.rxBuffer[this.writingLine] += c; + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + for(int i = 0; i < 5; i++) { + data.setString("tx" + i, txBuffer[i]); + data.setString("rx" + i, rxBuffer[i]); + } + data.setString("txChan", txChannel); + data.setString("rxChan", rxChannel); + data.setInteger("sending", sendingChar); + INBTPacketReceiver.networkPack(this, data, 16); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + + for(int i = 0; i < 5; i++) { + txBuffer[i] = nbt.getString("tx" + i); + rxBuffer[i] = nbt.getString("rx" + i); + } + this.txChannel = nbt.getString("txChan"); + this.rxChannel = nbt.getString("rxChan"); + this.sendingChar = (char) nbt.getInteger("sending"); + } + + @Override + public void receiveControl(NBTTagCompound data) { + + for(int i = 0; i < 5; i++) { + if(data.hasKey("tx" + i)) this.txBuffer[i] = data.getString("tx" + i); + } + + String cmd = data.getString("cmd"); + + if("snd".equals(cmd) && !this.isSending) { + this.isSending = true; + this.sendingLine = 0; + this.sendingIndex = 0; + } + + if("rxprt".equals(cmd)) { + print(); + } + + if("rxcls".equals(cmd)) { + for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; + this.writingLine = 0; + } + + if("sve".equals(cmd)) { + this.txChannel = data.getString("txChan"); + this.rxChannel = data.getString("rxChan"); + this.markDirty(); + } + } + + public void print() { + ItemStack stack = new ItemStack(Items.paper); + ItemStackUtil.addTooltipToStack(stack, rxBuffer); + stack.setStackDisplayName("Message"); + worldObj.spawnEntityInWorld(new EntityItem(worldObj, xCoord + 0.5, yCoord + 1, zCoord + 0.5, stack)); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 16 * 16; + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GuiScreenRadioTelex(this); + } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 24f23de44..f2a0719a4 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -88,7 +88,7 @@ armor.cap=Schadensobergrenze: %s armor.damageModifier=Modifikator: %s (%s) armor.electricJetpack=Ionentriebwerke armor.explosionImmune=Kann nur Schaden durch Explosionen nehmen -armor.fasterReload=Schneklleres Nachladen +armor.fasterReload=Schnelleres Nachladen armor.fastFall=Schneller Fall armor.fireproof=Feuerfest armor.fullSetBonus=Set-Bonus: diff --git a/src/main/resources/assets/hbm/textures/blocks/radio_telex.png b/src/main/resources/assets/hbm/textures/blocks/radio_telex.png new file mode 100644 index 0000000000000000000000000000000000000000..fddb508ddb390e352104c3e52f2c048d6f6f3b04 GIT binary patch literal 609 zcmV-n0-pVeP)fgc5QZP`+RhrgI8oF_sSp%;EJ#I2oVXw%s!9m;Kkyg$ zUA=KAr%HSs5f^SjNDXR$x@m|_?A@%*!Nf|4*o#Ly^FHs)tes~Mu2%rMu=p(rz|h{| zhWx_+&Z1Tq78jr$M6_y74H&~Tx{omir4-g$%CZE&T8kHXq{a{m^A`}wHJ6Qz4PL)F zp*k=)Cmz6R{KW8buwMga#e5B5jA;bbfdN>HKkvslPw$4+ve0iyhV~BqexI@|vDTuL z!kAhpgg{D3p639#TkUvlgyE?E9vvMK93PV%9x@t@*xueINfNr&mYCWkX{_|{?i$^w!*r`^%-1@ z+1=^T2}1m?Q!jC|+hIJ*=*1BO#zZZTv@nhHa{eOBc=aJgse19^Dys`SLG2QU{@RNG zM6K0PI-L$d5FjR*#+15AwnJ}4@Go$ZY4SX8b|K=>CoK%7)O??$EIL{q!ITtA$mje4@3sXo-mVs_00000NkvXXu0mjf@}CqK literal 0 HcmV?d00001 From 37eb69e47d60ebd3d56a98a13d57c50ab3ae9b52 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 10 Sep 2023 21:02:20 +0200 Subject: [PATCH 021/207] wa'er pumps, new capacitor, fixes --- src/main/java/com/hbm/blocks/ModBlocks.java | 13 +- .../com/hbm/blocks/machine/MachinePump.java | 100 ++ .../ChunkRadiationHandlerSimple.java | 2 +- .../com/hbm/inventory/OreDictManager.java | 1 + .../gui/GUIScreenTemplateFolder.java | 7 +- .../inventory/recipes/anvil/AnvilRecipes.java | 16 + src/main/java/com/hbm/main/ClientProxy.java | 2 + .../java/com/hbm/main/CraftingManager.java | 1 + src/main/java/com/hbm/main/MainRegistry.java | 4 +- .../com/hbm/main/ModEventHandlerImpact.java | 2 + .../java/com/hbm/main/ResourceManager.java | 7 + .../com/hbm/render/tileentity/RenderPump.java | 102 ++ .../render/tileentity/RenderSteamEngine.java | 2 +- .../java/com/hbm/saveddata/TomSaveData.java | 4 + .../java/com/hbm/tileentity/TileMappings.java | 3 + .../machine/TileEntityMachinePumpBase.java | 119 ++ .../TileEntityMachinePumpElectric.java | 69 + .../machine/TileEntityMachinePumpSteam.java | 76 ++ .../network/TileEntityRadioTelex.java | 35 +- src/main/resources/assets/hbm/lang/de_DE.lang | 4 + src/main/resources/assets/hbm/lang/en_US.lang | 4 + .../assets/hbm/models/machines/pump.obj | 1107 +++++++++++++++++ .../blocks/capacitor_schrabidate_bottom.png | Bin 0 -> 554 bytes .../capacitor_schrabidate_inner_side.png | Bin 0 -> 170 bytes .../capacitor_schrabidate_inner_top.png | Bin 0 -> 271 bytes .../blocks/capacitor_schrabidate_side.png | Bin 0 -> 328 bytes .../blocks/capacitor_schrabidate_top.png | Bin 0 -> 203 bytes .../hbm/textures/models/machines/pump.png | Bin 0 -> 937 bytes .../models/machines/pump_electric.png | Bin 0 -> 5288 bytes .../textures/models/machines/pump_steam.png | Bin 0 -> 8373 bytes 30 files changed, 1672 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachinePump.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderPump.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java create mode 100644 src/main/resources/assets/hbm/models/machines/pump.obj create mode 100644 src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_bottom.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_top.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_top.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/pump.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/pump_electric.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/pump_steam.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 786f3da08..723931983 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -660,6 +660,9 @@ public class ModBlocks { public static Block nuke_n45; public static Block nuke_fstbmb; public static Block bomb_multi; + + public static Block pump_steam; + public static Block pump_electric; public static Block heater_firebox; public static Block heater_oven; @@ -771,6 +774,7 @@ public class ModBlocks { public static Block capacitor_gold; public static Block capacitor_niobium; public static Block capacitor_tantalium; + public static Block capacitor_schrabidate; public static Block machine_coal_off; public static Block machine_coal_on; @@ -1821,6 +1825,9 @@ public class ModBlocks { semtex = new BlockSemtex().setBlockName("semtex").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":semtex"); c4 = new BlockC4().setBlockName("c4").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":c4"); fissure_bomb = new BlockFissureBomb().setBlockName("fissure_bomb").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":fissure_bomb"); + + pump_steam = new MachinePump().setBlockName("pump_steam").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pump_steam"); + pump_electric = new MachinePump().setBlockName("pump_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pump_electric"); heater_firebox = new HeaterFirebox().setBlockName("heater_firebox").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_oven = new HeaterOven().setBlockName("heater_oven").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); @@ -1924,7 +1931,8 @@ public class ModBlocks { capacitor_copper = new MachineCapacitor(Material.iron, 1_000_000L, "copper").setBlockName("capacitor_copper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); capacitor_gold = new MachineCapacitor(Material.iron, 5_000_000L, "gold").setBlockName("capacitor_gold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("gold_block"); capacitor_niobium = new MachineCapacitor(Material.iron, 25_000_000L, "niobium").setBlockName("capacitor_niobium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_niobium"); - capacitor_tantalium = new MachineCapacitor(Material.iron, 100_000_000L, "tantalium").setBlockName("capacitor_tantalium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); + capacitor_tantalium = new MachineCapacitor(Material.iron, 150_000_000L, "tantalium").setBlockName("capacitor_tantalium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); + capacitor_schrabidate = new MachineCapacitor(Material.iron, 50_000_000_000L, "schrabidate").setBlockName("capacitor_schrabidate").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); machine_coal_off = new MachineCoal(false).setBlockName("machine_coal_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_coal_on = new MachineCoal(true).setBlockName("machine_coal_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -3089,6 +3097,8 @@ public class ModBlocks { GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName()); register(machine_conveyor_press); + register(pump_steam); + register(pump_electric); register(heater_firebox); register(heater_oven); register(machine_ashpit); @@ -3277,6 +3287,7 @@ public class ModBlocks { register(capacitor_gold); register(capacitor_niobium); register(capacitor_tantalium); + register(capacitor_schrabidate); GameRegistry.registerBlock(machine_transformer, machine_transformer.getUnlocalizedName()); GameRegistry.registerBlock(machine_transformer_20, machine_transformer_20.getUnlocalizedName()); GameRegistry.registerBlock(machine_transformer_dnt, machine_transformer_dnt.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachinePump.java b/src/main/java/com/hbm/blocks/machine/MachinePump.java new file mode 100644 index 000000000..ee90203b1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachinePump.java @@ -0,0 +1,100 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.ModBlocks; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachinePumpElectric; +import com.hbm.tileentity.machine.TileEntityMachinePumpSteam; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachinePump extends BlockDummyable implements ITooltipProvider, ILookOverlay { + + public MachinePump() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) { + if(this == ModBlocks.pump_steam) return new TileEntityMachinePumpSteam(); + if(this == ModBlocks.pump_electric) return new TileEntityMachinePumpElectric(); + } + if(meta >= 6) { + if(this == ModBlocks.pump_steam) return new TileEntityProxyCombo().fluid(); + if(this == ModBlocks.pump_electric) return new TileEntityProxyCombo().fluid().power(); + } + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {3, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + this.makeExtra(world, x - dir.offsetX + 1, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX - 1, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ + 1); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ - 1); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + List text = new ArrayList(); + + if(te instanceof TileEntityMachinePumpSteam) { + TileEntityMachinePumpSteam pump = (TileEntityMachinePumpSteam) te; + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.steam.getTankType().getUnlocalizedName()) + ": " + String.format("%,d", pump.steam.getFill()) + " / " + String.format("%,d", pump.steam.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.lps.getTankType().getUnlocalizedName()) + ": " + String.format("%,d", pump.lps.getFill()) + " / " + String.format("%,d", pump.lps.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.water.getTankType().getUnlocalizedName()) + ": " + String.format("%,d", pump.water.getFill()) + " / " + String.format("%,d", pump.water.getMaxFill()) + "mB"); + } + + if(te instanceof TileEntityMachinePumpElectric) { + TileEntityMachinePumpElectric pump = (TileEntityMachinePumpElectric) te; + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + String.format("%,d", pump.power) + " / " + String.format("%,d", pump.maxPower) + "HE"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.water.getTankType().getUnlocalizedName()) + ": " + String.format("%,d", pump.water.getFill()) + " / " + String.format("%,d", pump.water.getMaxFill()) + "mB"); + } + + if(pos[1] > 70) { + text.add("&[" + (BobMathUtil.getBlink() ? 0xff0000 : 0xffff00) + "&]! ! ! ALTITUDE ! ! !"); + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java index d080eb6e6..72ab84887 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java @@ -102,7 +102,7 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { } float rad = radiation.get(newCoord); - if(rad > RadiationConfig.fogRad && world != null && world.rand.nextInt(RadiationConfig.fogCh) == 0 && world.getChunkFromChunkCoords(coord.chunkXPos, coord.chunkZPos).isChunkLoaded) { + if(rad > RadiationConfig.fogRad && world != null && world.rand.nextInt(RadiationConfig.fogCh) == 0 && world.getChunkProvider().chunkExists(coord.chunkXPos, coord.chunkZPos)) { int x = coord.chunkXPos * 16 + world.rand.nextInt(16); int z = coord.chunkZPos * 16 + world.rand.nextInt(16); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 02afded30..685251982 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -63,6 +63,7 @@ public class OreDictManager { public static final String KEY_LEAVES = "treeLeaves"; public static final String KEY_SAPLING = "treeSapling"; public static final String KEY_SAND = "sand"; + public static final String KEY_COBBLESTONE = "cobblestone"; public static final String KEY_BLACK = "dyeBlack"; public static final String KEY_RED = "dyeRed"; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index 4d09369be..44a89c104 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -101,8 +101,11 @@ public class GUIScreenTemplateFolder extends GuiScreen { for(int i = 0; i < AssemblerRecipes.recipeList.size(); i++) { if(AssemblerRecipes.hidden.get(AssemblerRecipes.recipeList.get(i)) != null && - AssemblerRecipes.hidden.get(AssemblerRecipes.recipeList.get(i)).contains(player.getHeldItem().getItem())) - allStacks.add(new ItemStack(ModItems.assembly_template, 1, i)); + AssemblerRecipes.hidden.get(AssemblerRecipes.recipeList.get(i)).contains(player.getHeldItem().getItem())) { + + ComparableStack comp = AssemblerRecipes.recipeList.get(i); + allStacks.add(ItemAssemblyTemplate.writeType(new ItemStack(ModItems.assembly_template, 1, i), comp)); + } } isJournal = true; diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 3df9c8e30..607b9f289 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -225,6 +225,22 @@ public class AnvilRecipes { new ComparableStack(ModItems.circuit_aluminium, 1 * ukModifier) }, new AnvilOutput(new ItemStack(ModBlocks.machine_assembler))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(KEY_COBBLESTONE, 8), + new OreDictStack(KEY_PLANKS, 16), + new OreDictStack(IRON.ingot(), 4), + new OreDictStack(CU.plate(), 8) + }, new AnvilOutput(new ItemStack(ModBlocks.pump_steam))).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(Blocks.stonebrick, 8), + new OreDictStack(STEEL.plate(), 16), + new ComparableStack(ModItems.motor, 2), + new ComparableStack(ModItems.circuit_copper, 1) + }, new AnvilOutput(new ItemStack(ModBlocks.pump_electric))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(Blocks.furnace), diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c73c53576..c9800c9a6 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -289,6 +289,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPistonInserter.class, new RenderPistonInserter()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConveyorPress.class, new RenderConveyorPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioTelex.class, new RenderTelex()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpSteam.class, new RenderPump()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpElectric.class, new RenderPump()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 177442895..24711fe67 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -287,6 +287,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.capacitor_gold, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_PLASTIC.ingot(), 'C', GOLD.block(), 'W', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.capacitor_niobium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', RUBBER.ingot(), 'C', NB.block(), 'W', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.capacitor_tantalium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', TA.block(), 'W', STEEL.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_schrabidate, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', SBD.block(), 'W', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', STEEL.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_electric_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', DESH.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', ModBlocks.machine_electric_furnace_off }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index e8834cff7..7c3542ec2 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -289,7 +289,8 @@ public class MainRegistry { SiegeTier.registerTiers(); HazardRegistry.registerItems(); HazardRegistry.registerTrafos(); - OreDictManager.registerGroups(); + OreDictManager.registerGroups(); //important to run first + OreDictManager.registerOres(); Library.superuser.add("192af5d7-ed0f-48d8-bd89-9d41af8524f8"); Library.superuser.add("5aee1e3d-3767-4987-a222-e7ce1fbdf88e"); @@ -806,7 +807,6 @@ public class MainRegistry { // MUST be initialized AFTER achievements!! BobmazonOfferFactory.init(); - OreDictManager.registerOres(); IMCHandler.registerHandler("blastfurnace", new IMCBlastFurnace()); IMCHandler.registerHandler("crystallizer", new IMCCrystallizer()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerImpact.java b/src/main/java/com/hbm/main/ModEventHandlerImpact.java index fbad76c79..27529784c 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerImpact.java +++ b/src/main/java/com/hbm/main/ModEventHandlerImpact.java @@ -125,6 +125,8 @@ public class ModEventHandlerImpact { @SubscribeEvent(priority = EventPriority.LOWEST) public void onLoad(WorldEvent.Load event) { + TomSaveData.resetLastCached(); + if(GeneralConfig.enableImpactWorldProvider) { DimensionManager.unregisterProviderType(0); DimensionManager.registerProviderType(0, WorldProviderNTM.class, true); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 35da24ba7..7a0ff4d0c 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -96,6 +96,9 @@ public class ResourceManager { //Gas Turbine public static final IModelCustom turbinegas = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbinegas.obj")); + //Pumps + public static final IModelCustom pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pump.obj")).asDisplayList(); + //Large Turbine public static final IModelCustom steam_engine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/steam_engine.obj")).asDisplayList(); public static final IModelCustom turbine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbine.obj")); @@ -449,6 +452,10 @@ public class ResourceManager { //Gas Turbine public static final ResourceLocation turbinegas_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbinegas.png"); + + //Pumps + public static final ResourceLocation pump_steam_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/pump_steam.png"); + public static final ResourceLocation pump_electric_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/pump_electric.png"); //Large Turbine public static final ResourceLocation steam_engine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/steam_engine.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPump.java b/src/main/java/com/hbm/render/tileentity/RenderPump.java new file mode 100644 index 000000000..8b9dc8756 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPump.java @@ -0,0 +1,102 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachinePumpBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPump extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 3: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + TileEntityMachinePumpBase engine = (TileEntityMachinePumpBase) tile; + float angle = engine.lastRotor + (engine.rotor - engine.lastRotor) * interp; + renderCommon(angle, engine.getBlockType() == ModBlocks.pump_steam ? 0 : 1); + //renderCommon(0, engine.getBlockType() == ModBlocks.pump_steam ? 0 : 1); + + GL11.glPopMatrix(); + } + + private void renderCommon(double rot, int type) { + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + if(type == 0) bindTexture(ResourceManager.pump_steam_tex); + else bindTexture(ResourceManager.pump_electric_tex); + ResourceManager.pump.renderPart("Base"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 2.25, 0); + GL11.glRotated(rot - 90, 0, 0, 1); + GL11.glTranslated(0, -2.25, 0); + ResourceManager.pump.renderPart("Rotor"); + GL11.glPopMatrix(); + + double sin = Math.sin(rot * Math.PI / 180D) * 0.5D - 0.5D; + double cos = Math.cos(rot * Math.PI / 180D) * 0.5D; + double ang = Math.acos(cos / 2D); + double cath = Math.sqrt(1 + (cos * cos) / 2); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1 - cath + sin, 0); + GL11.glTranslated(0, 4.75, 0); + GL11.glRotated(ang * 180D / Math.PI - 90D, 0, 0, -1); + GL11.glTranslated(0, -4.75, 0); + ResourceManager.pump.renderPart("Arms"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1 - cath + sin, 0); + ResourceManager.pump.renderPart("Piston"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.pump_steam); + } + + @Override + public Item[] getItemsForRenderer() { + return new Item[] { + Item.getItemFromBlock(ModBlocks.pump_steam), + Item.getItemFromBlock(ModBlocks.pump_electric) + }; + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommonWithStack(ItemStack item) { + RenderPump.this.renderCommon(System.currentTimeMillis() % 3600 * 0.1F, item.getItem() == Item.getItemFromBlock(ModBlocks.pump_steam) ? 0 : 1); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java b/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java index f4b35ac7b..ff5e30bde 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java @@ -71,7 +71,7 @@ public class RenderSteamEngine extends TileEntitySpecialRenderer implements IIte GL11.glPopMatrix(); GL11.glPushMatrix(); - double cath = Math.sqrt(3.515625D - (cos * cos)); + double cath = Math.sqrt(3.515625D - (cos * cos) / 2); GL11.glTranslated(1.875 - cath + sin, 0, 0); //the difference that "1.875 - cath" makes is minuscule but very much noticeable ResourceManager.steam_engine.renderPart("Piston"); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/saveddata/TomSaveData.java b/src/main/java/com/hbm/saveddata/TomSaveData.java index be36cecb5..0ccc22395 100644 --- a/src/main/java/com/hbm/saveddata/TomSaveData.java +++ b/src/main/java/com/hbm/saveddata/TomSaveData.java @@ -32,6 +32,10 @@ public class TomSaveData extends WorldSavedData { public static TomSaveData getLastCachedOrNull() { return lastCachedUnsafe; } + + public static void resetLastCached() { + lastCachedUnsafe = null; + } public TomSaveData(String tagName) { super(tagName); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 7c6f0a484..3274e10a2 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -277,6 +277,9 @@ public class TileMappings { put(TileEntityHeatBoiler.class, "tileentity_heat_boiler"); put(TileEntityHeatBoilerIndustrial.class, "tileentity_heat_boiler_industrial"); + put(TileEntityMachinePumpSteam.class, "tileentity_steam_pump"); + put(TileEntityMachinePumpElectric.class, "tileentity_electric_pump"); + put(TileEntityFoundryMold.class, "tileentity_foundry_mold"); put(TileEntityFoundryBasin.class, "tileentity_foundry_basin"); put(TileEntityFoundryChannel.class, "tileentity_foundry_channel"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java new file mode 100644 index 000000000..9d5426e62 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java @@ -0,0 +1,119 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; + +public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver { + + public FluidTank water; + + public boolean isOn = false; + public float rotor; + public float lastRotor; + + public void updateEntity() { + + if(!worldObj.isRemote) { + + for(DirPos pos : getConPos()) { + if(water.getFill() > 0) this.sendFluid(water, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + this.isOn = false; + if(this.canOperate() && yCoord <= 70) { + this.isOn = true; + this.operate(); + } + + NBTTagCompound data = this.getSync(); + INBTPacketReceiver.networkPack(this, data, 150); + + } else { + + this.lastRotor = this.rotor; + if(this.isOn) this.rotor += 10F; + + if(this.rotor >= 360F) { + this.rotor -= 360F; + this.lastRotor -= 360F; + + MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:block.steamEngineOperate", 0.5F, 0.75F); + } + } + } + + protected NBTTagCompound getSync() { + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("isOn", isOn); + water.writeToNBT(data, "w"); + return data; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.isOn = nbt.getBoolean("isOn"); + water.readFromNBT(nbt, "w"); + } + + protected abstract boolean canOperate(); + protected abstract void operate(); + + protected DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) + }; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {water}; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {water}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[0]; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 5, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java new file mode 100644 index 000000000..2551c42a9 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java @@ -0,0 +1,69 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import net.minecraft.nbt.NBTTagCompound; + +public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase implements IEnergyUser { + + public long power; + public static final long maxPower = 10_000; + + public TileEntityMachinePumpElectric() { + super(); + water = new FluidTank(Fluids.WATER, 1_000_000); + } + + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + super.updateEntity(); + } + + protected NBTTagCompound getSync() { + NBTTagCompound data = super.getSync(); + data.setLong("power", power); + return data; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); + } + + @Override + protected boolean canOperate() { + return power >= 1_000 && water.getFill() < water.getMaxFill(); + } + + @Override + protected void operate() { + this.power -= 1_000; + water.setFill(Math.min(water.getFill() + 10_000, water.getMaxFill())); + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public void setPower(long power) { + this.power = power; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java new file mode 100644 index 000000000..6644f3e83 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java @@ -0,0 +1,76 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.util.fauxpointtwelve.DirPos; + +import net.minecraft.nbt.NBTTagCompound; + +public class TileEntityMachinePumpSteam extends TileEntityMachinePumpBase { + + public FluidTank steam; + public FluidTank lps; + + public TileEntityMachinePumpSteam() { + super(); + water = new FluidTank(Fluids.WATER, 100_000); + steam = new FluidTank(Fluids.STEAM, 1_000); + lps = new FluidTank(Fluids.SPENTSTEAM, 10); + } + + public void updateEntity() { + + if(!worldObj.isRemote) { + + for(DirPos pos : getConPos()) { + this.trySubscribe(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(lps.getFill() > 0) { + this.sendFluid(lps, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + } + + super.updateEntity(); + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {water, steam, lps}; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {water, lps}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {steam}; + } + + protected NBTTagCompound getSync() { + NBTTagCompound data = super.getSync(); + steam.writeToNBT(data, "s"); + lps.writeToNBT(data, "l"); + return data; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + steam.readFromNBT(nbt, "s"); + lps.readFromNBT(nbt, "l"); + } + + @Override + protected boolean canOperate() { + return steam.getFill() >= 100 && lps.getMaxFill() - lps.getFill() > 0 && water.getFill() < water.getMaxFill(); + } + + @Override + protected void operate() { + steam.setFill(steam.getFill() - 100); + lps.setFill(lps.getFill() + 1); + water.setFill(Math.min(water.getFill() + 1000, water.getMaxFill())); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java index 7b933f115..3137ef832 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.network; +import java.util.ArrayList; +import java.util.List; + import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.gui.GuiScreenRadioTelex; import com.hbm.tileentity.IGUIProvider; @@ -104,6 +107,7 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv this.deleteOnReceive = true; } else if(c == eol) { if(this.writingLine < 4) this.writingLine++; + this.markDirty(); } else if(c == bell) { worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.orb", 2F, 0.5F); } else if(c == print) { @@ -113,6 +117,7 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv this.writingLine = 0; } else { this.rxBuffer[this.writingLine] += c; + this.markDirty(); } } } @@ -174,7 +179,11 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv public void print() { ItemStack stack = new ItemStack(Items.paper); - ItemStackUtil.addTooltipToStack(stack, rxBuffer); + List text = new ArrayList(); + for(int i = 0; i < 5; i++) { + if(!rxBuffer[i].isEmpty()) text.add(rxBuffer[i]); + } + ItemStackUtil.addTooltipToStack(stack, text.toArray(new String[0])); stack.setStackDisplayName("Message"); worldObj.spawnEntityInWorld(new EntityItem(worldObj, xCoord + 0.5, yCoord + 1, zCoord + 0.5, stack)); } @@ -184,6 +193,30 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv return player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 16 * 16; } + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + for(int i = 0; i < 5; i++) { + txBuffer[i] = nbt.getString("tx" + i); + rxBuffer[i] = nbt.getString("rx" + i); + } + this.txChannel = nbt.getString("txChan"); + this.rxChannel = nbt.getString("rxChan"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + for(int i = 0; i < 5; i++) { + nbt.setString("tx" + i, txBuffer[i]); + nbt.setString("rx" + i, rxBuffer[i]); + } + nbt.setString("txChan", txChannel); + nbt.setString("rxChan", rxChannel); + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } @Override diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index f2a0719a4..549ddb0fa 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4255,6 +4255,10 @@ tile.pribris.name=RBMK-Schutt tile.pribris_burning.name=Flammender RBMK-Schutt tile.pribris_digamma.name=Geschwärzter RBMK-Schutt tile.pribris_radiating.name=Glühender RBMK-Schutt +tile.pump_electric.name=Elektrische Grundwasserpumpe +tile.pump_electric.desc=Nutzt Strom um Grundwasser hochzupumpen$Erzeugt bis zu 10.000mB/t$Muss unter Y:70 platziert werden +tile.pump_steam.name=Dampfbetriebene Grundwasserpumpe +tile.pump_steam.desc=Nutzt Dampf um Grundwasser hochzupumpen$Erzeugt bis zu 10.000mB/t$Muss unter Y:70 platziert werden tile.pwr_block.name=PWR tile.pwr_casing.name=PWR Druckbehälter tile.pwr_casing.desc=Muss alle internen Teile des PWRs abdecken$Platzierung: Hülle diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c4c2b6dbc..9f1240865 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5235,6 +5235,10 @@ tile.pribris.name=RBMK Debris tile.pribris_burning.name=Flaming RBMK Debris tile.pribris_digamma.name=Blackened RBMK Debris tile.pribris_radiating.name=Smoldering RBMK Debris +tile.pump_electric.name=Electric Groundwater Pump +tile.pump_electric.desc=Uses electricity to pump up groundwater$Generates up to 10,000mB/t$Needs to be placed below Y:70 +tile.pump_steam.name=Steam-Powered Groundwater Pump +tile.pump_steam.desc=Uses steam to pump up groundwater$Generates up to 100mB/t$Needs to be placed below Y:70 tile.pwr_block.name=PWR tile.pwr_casing.name=PWR Pressure Vessel tile.pwr_casing.desc=Needs to cover all internal parts for the reactor to form$Placement: Casing diff --git a/src/main/resources/assets/hbm/models/machines/pump.obj b/src/main/resources/assets/hbm/models/machines/pump.obj new file mode 100644 index 000000000..4f859d6aa --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/pump.obj @@ -0,0 +1,1107 @@ +# Blender v2.79 (sub 0) OBJ File: 'pump.blend' +# www.blender.org +o Piston +v -0.500000 4.500000 -0.500000 +v -0.500000 4.500000 0.500000 +v 0.500000 4.500000 0.500000 +v 0.500000 4.500000 -0.500000 +v -0.500000 5.000000 -0.500000 +v -0.500000 5.000000 0.500000 +v 0.500000 5.000000 0.500000 +v 0.500000 5.000000 -0.500000 +v -0.125000 4.625000 1.000000 +v -0.125000 4.875000 1.000000 +v -0.125000 4.625000 -1.000000 +v -0.125000 4.875000 -1.000000 +v 0.125000 4.625000 1.000000 +v 0.125000 4.875000 1.000000 +v 0.125000 4.625000 -1.000000 +v 0.125000 4.875000 -1.000000 +v -0.250000 3.500000 0.250000 +v 0.250000 3.500000 0.250000 +v -0.250000 3.500000 -0.250000 +v 0.250000 3.500000 -0.250000 +v -0.250000 4.500000 0.250000 +v 0.250000 4.500000 0.250000 +v -0.250000 4.500000 -0.250000 +v 0.250000 4.500000 -0.250000 +vt 0.727273 0.250000 +vt 0.636364 0.375000 +vt 0.636364 0.250000 +vt 0.636364 0.437500 +vt 0.727273 0.562500 +vt 0.636364 0.562500 +vt 0.727273 0.375000 +vt 0.909091 0.375000 +vt 0.818182 0.437500 +vt 0.818182 0.375000 +vt 0.727273 0.437500 +vt 0.545455 0.437500 +vt 0.545455 0.375000 +vt 0.477273 0.656250 +vt 0.659091 0.687500 +vt 0.477273 0.687500 +vt 0.659091 0.656250 +vt 0.681818 0.625000 +vt 0.681818 0.656250 +vt 0.659091 0.625000 +vt 0.477273 0.593750 +vt 0.659091 0.593750 +vt 0.477273 0.625000 +vt 0.454545 0.656250 +vt 0.454545 0.625000 +vt 0.477273 0.562500 +vt 0.659091 0.562500 +vt 0.909091 0.250000 +vt 0.863636 0.375000 +vt 0.863636 0.250000 +vt 1.000000 0.250000 +vt 0.954545 0.375000 +vt 0.954545 0.250000 +vt 0.909091 0.375000 +vt 0.818182 0.375000 +vt 0.818182 0.250000 +vt 0.909091 0.437500 +vt 1.000000 0.375000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 1/1/1 3/2/1 2/3/1 +f 7/4/2 5/5/2 6/6/2 +f 4/7/3 7/4/3 3/2/3 +f 2/8/4 5/9/4 1/10/4 +f 1/10/5 8/11/5 4/7/5 +f 3/2/6 6/12/6 2/13/6 +f 10/14/4 11/15/4 9/16/4 +f 12/17/5 15/18/5 11/19/5 +f 16/20/3 13/21/3 15/22/3 +f 14/23/6 9/24/6 13/25/6 +f 15/22/1 9/26/1 11/27/1 +f 12/17/2 14/23/2 16/20/2 +f 20/28/3 22/29/3 18/30/3 +f 17/31/4 23/32/4 19/33/4 +f 19/33/5 24/34/5 20/28/5 +f 18/30/6 21/35/6 17/36/6 +f 1/1/1 4/7/1 3/2/1 +f 7/4/2 8/11/2 5/5/2 +f 4/7/3 8/11/3 7/4/3 +f 2/8/4 6/37/4 5/9/4 +f 1/10/5 5/9/5 8/11/5 +f 3/2/6 7/4/6 6/12/6 +f 10/14/4 12/17/4 11/15/4 +f 12/17/5 16/20/5 15/18/5 +f 16/20/3 14/23/3 13/21/3 +f 14/23/6 10/14/6 9/24/6 +f 15/22/1 13/21/1 9/26/1 +f 12/17/2 10/14/2 14/23/2 +f 20/28/3 24/34/3 22/29/3 +f 17/31/4 21/38/4 23/32/4 +f 19/33/5 23/32/5 24/34/5 +f 18/30/6 22/29/6 21/35/6 +o Arms +v -0.062500 2.687500 0.750000 +v 0.062500 2.687500 0.750000 +v -0.062500 4.812500 0.750000 +v 0.062500 4.812500 0.750000 +v -0.062500 4.812500 0.875000 +v -0.062500 2.687500 0.875000 +v 0.062500 2.687500 0.875000 +v 0.062500 4.812500 0.875000 +v -0.062500 2.687500 -0.875000 +v 0.062500 2.687500 -0.875000 +v -0.062500 4.812500 -0.875000 +v 0.062500 4.812500 -0.875000 +v -0.062500 4.812500 -0.750000 +v -0.062500 2.687500 -0.750000 +v 0.062500 2.687500 -0.750000 +v 0.062500 4.812500 -0.750000 +vt 0.579545 0.953125 +vt 0.568182 0.703125 +vt 0.579545 0.703125 +vt 0.556818 0.703125 +vt 0.545455 0.953125 +vt 0.545455 0.703125 +vt 0.568182 0.953125 +vt 0.590909 0.953125 +vt 0.590909 0.968750 +vt 0.579545 0.968750 +vt 0.579545 0.687500 +vt 0.590909 0.703125 +vt 0.579545 0.953125 +vt 0.568182 0.703125 +vt 0.579545 0.703125 +vt 0.556818 0.703125 +vt 0.545455 0.953125 +vt 0.545455 0.703125 +vt 0.568182 0.953125 +vt 0.590909 0.953125 +vt 0.590909 0.968750 +vt 0.579545 0.968750 +vt 0.579545 0.687500 +vt 0.590909 0.703125 +vt 0.556818 0.953125 +vt 0.590909 0.687500 +vt 0.556818 0.953125 +vt 0.590909 0.687500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 27/39/7 26/40/7 25/41/7 +f 31/42/8 29/43/8 30/44/8 +f 28/45/9 31/42/9 26/40/9 +f 25/41/10 29/46/10 27/39/10 +f 27/39/11 32/47/11 28/48/11 +f 26/49/12 30/50/12 25/41/12 +f 35/51/7 34/52/7 33/53/7 +f 39/54/8 37/55/8 38/56/8 +f 36/57/9 39/54/9 34/52/9 +f 33/53/10 37/58/10 35/51/10 +f 35/51/11 40/59/11 36/60/11 +f 34/61/12 38/62/12 33/53/12 +f 27/39/7 28/45/7 26/40/7 +f 31/42/8 32/63/8 29/43/8 +f 28/45/9 32/63/9 31/42/9 +f 25/41/10 30/50/10 29/46/10 +f 27/39/11 29/46/11 32/47/11 +f 26/49/12 31/64/12 30/50/12 +f 35/51/7 36/57/7 34/52/7 +f 39/54/8 40/65/8 37/55/8 +f 36/57/9 40/65/9 39/54/9 +f 33/53/10 38/62/10 37/58/10 +f 35/51/11 37/58/11 40/59/11 +f 34/61/12 39/66/12 38/62/12 +o Rotor +v -0.000000 2.875000 0.500000 +v -0.441942 2.691942 0.500000 +v -0.625000 2.250000 0.500000 +v -0.441942 1.808058 0.500000 +v 0.000000 1.625000 0.500000 +v 0.441942 1.808058 0.500000 +v 0.625000 2.250000 0.500000 +v 0.441942 2.691942 0.500000 +v -0.441942 2.691942 0.750000 +v -0.000000 2.875000 0.750000 +v -0.625000 2.250000 0.750000 +v -0.441942 1.808058 0.750000 +v 0.000000 1.625000 0.750000 +v 0.441942 1.808058 0.750000 +v 0.625000 2.250000 0.750000 +v 0.441942 2.691942 0.750000 +v -0.000000 2.875000 -0.750000 +v -0.441942 2.691942 -0.750000 +v -0.625000 2.250000 -0.750000 +v -0.441942 1.808058 -0.750000 +v 0.000000 1.625000 -0.750000 +v 0.441942 1.808058 -0.750000 +v 0.625000 2.250000 -0.750000 +v 0.441942 2.691942 -0.750000 +v -0.441942 2.691942 -0.500000 +v -0.000000 2.875000 -0.500000 +v -0.625000 2.250000 -0.500000 +v -0.441942 1.808058 -0.500000 +v 0.000000 1.625000 -0.500000 +v 0.441942 1.808058 -0.500000 +v 0.625000 2.250000 -0.500000 +v 0.441942 2.691942 -0.500000 +vt 0.920455 0.439870 +vt 0.959412 0.462058 +vt 0.975549 0.515625 +vt 0.784091 0.439870 +vt 0.839185 0.515625 +vt 0.784091 0.591380 +vt 0.863636 0.687500 +vt 0.840909 0.625000 +vt 0.863636 0.625000 +vt 0.863636 0.562500 +vt 0.840909 0.500000 +vt 0.863636 0.500000 +vt 0.863636 0.937500 +vt 0.840909 0.875000 +vt 0.863636 0.875000 +vt 0.863636 0.812500 +vt 0.840909 0.750000 +vt 0.863636 0.750000 +vt 0.840909 0.562500 +vt 0.840909 0.437500 +vt 0.863636 0.437500 +vt 0.840909 0.812500 +vt 0.840909 0.687500 +vt 0.920455 0.439870 +vt 0.959412 0.462058 +vt 0.975549 0.515625 +vt 0.784091 0.439870 +vt 0.839185 0.515625 +vt 0.784091 0.591380 +vt 0.863636 0.687500 +vt 0.840909 0.625000 +vt 0.863636 0.625000 +vt 0.863636 0.562500 +vt 0.840909 0.500000 +vt 0.863636 0.500000 +vt 0.863636 0.937500 +vt 0.840909 0.875000 +vt 0.863636 0.875000 +vt 0.863636 0.812500 +vt 0.840909 0.750000 +vt 0.863636 0.750000 +vt 0.840909 0.562500 +vt 0.840909 0.437500 +vt 0.863636 0.437500 +vt 0.840909 0.812500 +vt 0.840909 0.687500 +vt 0.959412 0.569192 +vt 0.865360 0.515625 +vt 0.920455 0.591380 +vt 0.881497 0.569192 +vt 0.881497 0.462058 +vt 0.745133 0.569192 +vt 0.728997 0.515625 +vt 0.745133 0.462058 +vt 0.823048 0.462058 +vt 0.823048 0.569192 +vt 0.840909 0.937500 +vt 0.959412 0.569192 +vt 0.865360 0.515625 +vt 0.920455 0.591380 +vt 0.881497 0.569192 +vt 0.881497 0.462058 +vt 0.745133 0.569192 +vt 0.728997 0.515625 +vt 0.745133 0.462058 +vt 0.823048 0.462058 +vt 0.823048 0.569192 +vt 0.840909 0.937500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +s off +f 45/67/13 44/68/13 43/69/13 +f 53/70/14 55/71/14 50/72/14 +f 41/73/15 56/74/15 48/75/15 +f 47/76/16 54/77/16 46/78/16 +f 45/79/17 52/80/17 44/81/17 +f 43/82/18 49/83/18 42/84/18 +f 48/75/19 55/85/19 47/76/19 +f 46/78/20 53/86/20 45/87/20 +f 44/81/21 51/88/21 43/82/21 +f 42/84/22 50/89/22 41/73/22 +f 61/90/13 60/91/13 59/92/13 +f 69/93/14 71/94/14 66/95/14 +f 57/96/15 72/97/15 64/98/15 +f 63/99/16 70/100/16 62/101/16 +f 61/102/17 68/103/17 60/104/17 +f 59/105/18 65/106/18 58/107/18 +f 64/98/19 71/108/19 63/99/19 +f 62/101/20 69/109/20 61/110/20 +f 60/104/21 67/111/21 59/105/21 +f 58/107/22 66/112/22 57/96/22 +f 43/69/13 42/113/13 47/114/13 +f 42/113/13 41/115/13 47/114/13 +f 41/115/13 48/116/13 47/114/13 +f 47/114/13 46/117/13 43/69/13 +f 46/117/13 45/67/13 43/69/13 +f 50/72/14 49/118/14 51/119/14 +f 51/119/14 52/120/14 53/70/14 +f 53/70/14 54/121/14 55/71/14 +f 55/71/14 56/122/14 50/72/14 +f 50/72/14 51/119/14 53/70/14 +f 41/73/15 50/89/15 56/74/15 +f 47/76/16 55/85/16 54/77/16 +f 45/79/17 53/123/17 52/80/17 +f 43/82/18 51/88/18 49/83/18 +f 48/75/19 56/74/19 55/85/19 +f 46/78/20 54/77/20 53/86/20 +f 44/81/21 52/80/21 51/88/21 +f 42/84/22 49/83/22 50/89/22 +f 59/92/13 58/124/13 63/125/13 +f 58/124/13 57/126/13 63/125/13 +f 57/126/13 64/127/13 63/125/13 +f 63/125/13 62/128/13 59/92/13 +f 62/128/13 61/90/13 59/92/13 +f 66/95/14 65/129/14 67/130/14 +f 67/130/14 68/131/14 69/93/14 +f 69/93/14 70/132/14 71/94/14 +f 71/94/14 72/133/14 66/95/14 +f 66/95/14 67/130/14 69/93/14 +f 57/96/15 66/112/15 72/97/15 +f 63/99/16 71/108/16 70/100/16 +f 61/102/17 69/134/17 68/103/17 +f 59/105/18 67/111/18 65/106/18 +f 64/98/19 72/97/19 71/108/19 +f 62/101/20 70/100/20 69/109/20 +f 60/104/21 68/103/21 67/111/21 +f 58/107/22 65/106/22 66/112/22 +o Base +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 1.000000 1.500000 +v 1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -1.500000 +v -1.000000 1.000000 1.000000 +v 1.000000 1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v 1.000000 1.000000 -1.000000 +v -1.000000 1.500000 -1.000000 +v -1.000000 1.500000 1.000000 +v 1.000000 1.500000 1.000000 +v 1.000000 1.500000 -1.000000 +v -0.500000 1.500000 0.500000 +v 0.500000 1.500000 0.500000 +v -0.500000 1.500000 -0.500000 +v 0.500000 1.500000 -0.500000 +v -0.500000 3.500000 -0.500000 +v -0.500000 3.500000 0.500000 +v 0.500000 3.500000 0.500000 +v 0.500000 3.500000 -0.500000 +v 0.625000 3.125000 -0.375000 +v 0.775888 3.150888 -0.338388 +v 0.801777 3.176777 -0.250000 +v 0.775888 3.150888 -0.161612 +v 0.713388 3.088388 -0.125000 +v 0.650888 3.025888 -0.161612 +v 0.650888 3.025888 -0.338388 +v 0.713388 3.088388 -0.375000 +v 0.838388 3.000000 -0.338388 +v 0.875000 3.000000 -0.250000 +v 0.838388 3.000000 -0.161612 +v 0.750000 3.000000 -0.125000 +v 0.661612 3.000000 -0.161612 +v 0.625000 3.000000 -0.250000 +v 0.661612 3.000000 -0.338388 +v 0.750000 3.000000 -0.375000 +v 0.750000 1.500000 0.125000 +v 0.661612 1.500000 0.161612 +v 0.625000 1.500000 0.250000 +v 0.661612 1.500000 0.338388 +v 0.750000 1.500000 0.375000 +v 0.838388 1.500000 0.338388 +v 0.875000 1.500000 0.250000 +v 0.838388 1.500000 0.161612 +v 0.750000 3.000000 0.125000 +v 0.661612 3.000000 0.161612 +v 0.625000 3.000000 0.250000 +v 0.661612 3.000000 0.338388 +v 0.750000 3.000000 0.375000 +v 0.838388 3.000000 0.338388 +v 0.875000 3.000000 0.250000 +v 0.838388 3.000000 0.161612 +v 0.713388 3.088388 0.125000 +v 0.650888 3.025888 0.161612 +v 0.650888 3.025888 0.338388 +v 0.713388 3.088388 0.375000 +v 0.775888 3.150888 0.338388 +v 0.801777 3.176777 0.250000 +v 0.775888 3.150888 0.161612 +v 0.625000 3.125000 0.125000 +v 0.625000 3.036612 0.161612 +v 0.625000 3.036612 0.338388 +v 0.625000 3.125000 0.375000 +v 0.625000 3.213388 0.338388 +v 0.625000 3.250000 0.250000 +v 0.625000 3.213388 0.161612 +v 0.500000 3.000000 0.250000 +v 0.500000 3.125000 0.125000 +v 0.500000 3.036612 0.161612 +v 0.500000 3.036612 0.338388 +v 0.500000 3.125000 0.375000 +v 0.500000 3.213388 0.338388 +v 0.500000 3.250000 0.250000 +v 0.500000 3.213388 0.161612 +v 0.838388 1.500000 -0.338388 +v 0.875000 1.500000 -0.250000 +v 0.838388 1.500000 -0.161612 +v 0.750000 1.500000 -0.125000 +v 0.661612 1.500000 -0.161612 +v 0.625000 1.500000 -0.250000 +v 0.661612 1.500000 -0.338388 +v 0.750000 1.500000 -0.375000 +v 0.625000 3.036612 -0.338388 +v 0.625000 3.036612 -0.161612 +v 0.625000 3.125000 -0.125000 +v 0.625000 3.213388 -0.161612 +v 0.625000 3.250000 -0.250000 +v 0.625000 3.213388 -0.338388 +v 0.500000 3.000000 -0.250000 +v 0.500000 3.125000 -0.375000 +v 0.500000 3.036612 -0.338388 +v 0.500000 3.036612 -0.161612 +v 0.500000 3.125000 -0.125000 +v 0.500000 3.213388 -0.161612 +v 0.500000 3.250000 -0.250000 +v 0.500000 3.213388 -0.338388 +v -0.625000 3.125000 0.375000 +v -0.775888 3.150888 0.338388 +v -0.801777 3.176777 0.250000 +v -0.775888 3.150888 0.161612 +v -0.713388 3.088388 0.125000 +v -0.650888 3.025888 0.161612 +v -0.650888 3.025888 0.338388 +v -0.713388 3.088388 0.375000 +v -0.838388 3.000000 0.338388 +v -0.875000 3.000000 0.250000 +v -0.838388 3.000000 0.161612 +v -0.750000 3.000000 0.125000 +v -0.661612 3.000000 0.161612 +v -0.625000 3.000000 0.250000 +v -0.661612 3.000000 0.338388 +v -0.750000 3.000000 0.375000 +v -0.750000 1.500000 -0.125000 +v -0.661612 1.500000 -0.161612 +v -0.625000 1.500000 -0.250000 +v -0.661612 1.500000 -0.338388 +v -0.750000 1.500000 -0.375000 +v -0.838388 1.500000 -0.338388 +v -0.875000 1.500000 -0.250000 +v -0.838388 1.500000 -0.161612 +v -0.750000 3.000000 -0.125000 +v -0.661612 3.000000 -0.161612 +v -0.625000 3.000000 -0.250000 +v -0.661612 3.000000 -0.338388 +v -0.750000 3.000000 -0.375000 +v -0.838388 3.000000 -0.338388 +v -0.875000 3.000000 -0.250000 +v -0.838388 3.000000 -0.161612 +v -0.713388 3.088388 -0.125000 +v -0.650888 3.025888 -0.161612 +v -0.650888 3.025888 -0.338388 +v -0.713388 3.088388 -0.375000 +v -0.775888 3.150888 -0.338388 +v -0.801777 3.176777 -0.250000 +v -0.775888 3.150888 -0.161612 +v -0.625000 3.125000 -0.125000 +v -0.625000 3.036612 -0.161612 +v -0.625000 3.036612 -0.338388 +v -0.625000 3.125000 -0.375000 +v -0.625000 3.213388 -0.338388 +v -0.625000 3.250000 -0.250000 +v -0.625000 3.213388 -0.161612 +v -0.500000 3.000000 -0.250000 +v -0.500000 3.125000 -0.125000 +v -0.500000 3.036612 -0.161612 +v -0.500000 3.036612 -0.338388 +v -0.500000 3.125000 -0.375000 +v -0.500000 3.213388 -0.338388 +v -0.500000 3.250000 -0.250000 +v -0.500000 3.213388 -0.161612 +v -0.838388 1.500000 0.338388 +v -0.875000 1.500000 0.250000 +v -0.838388 1.500000 0.161612 +v -0.750000 1.500000 0.125000 +v -0.661612 1.500000 0.161612 +v -0.625000 1.500000 0.250000 +v -0.661612 1.500000 0.338388 +v -0.750000 1.500000 0.375000 +v -0.625000 3.036612 0.338388 +v -0.625000 3.036612 0.161612 +v -0.625000 3.125000 0.125000 +v -0.625000 3.213388 0.161612 +v -0.625000 3.250000 0.250000 +v -0.625000 3.213388 0.338388 +v -0.500000 3.000000 0.250000 +v -0.500000 3.125000 0.375000 +v -0.500000 3.036612 0.338388 +v -0.500000 3.036612 0.161612 +v -0.500000 3.125000 0.125000 +v -0.500000 3.213388 0.161612 +v -0.500000 3.250000 0.250000 +v -0.500000 3.213388 0.338388 +vt 0.363636 0.007812 +vt 0.090909 0.382812 +vt 0.090909 0.007812 +vt 0.090909 0.500000 +vt 0.363636 0.875000 +vt 0.090909 0.875000 +vt 0.454545 0.875000 +vt 0.363636 0.500000 +vt 0.454545 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.875000 +vt 0.363636 0.382812 +vt 0.090909 1.000000 +vt 0.363636 1.000000 +vt 0.409091 0.062500 +vt 0.590909 0.312500 +vt 0.409091 0.312500 +vt 0.363636 0.062500 +vt 0.363636 0.312500 +vt 0.590909 0.000000 +vt 0.409091 0.000000 +vt 0.409091 0.375000 +vt 0.590909 0.375000 +vt 0.636364 0.312500 +vt 0.590909 0.062500 +vt 0.636364 0.062500 +vt 0.727273 0.250000 +vt 0.818182 0.375000 +vt 0.727273 0.375000 +vt 1.000000 -0.000000 +vt 0.909091 0.250000 +vt 0.909091 -0.000000 +vt 0.818182 0.250000 +vt 0.818182 -0.000000 +vt 0.727273 -0.000000 +vt 0.636364 0.250000 +vt 0.636364 -0.000000 +vt 1.000000 0.250000 +vt 0.465909 0.898438 +vt 0.477273 0.914062 +vt 0.465909 0.906250 +vt 0.488636 0.898438 +vt 0.500000 0.921875 +vt 0.488636 0.921875 +vt 0.477273 0.882812 +vt 0.465909 0.890625 +vt 0.488636 0.875000 +vt 0.500000 0.898438 +vt 0.522727 0.882812 +vt 0.511364 0.898438 +vt 0.511364 0.875000 +vt 0.534091 0.890625 +vt 0.522727 0.898438 +vt 0.477273 0.898438 +vt 0.500000 0.875000 +vt 0.522727 0.687500 +vt 0.511364 0.687500 +vt 0.534091 0.687500 +vt 0.522727 0.875000 +vt 0.500000 0.687500 +vt 0.488636 0.875000 +vt 0.488636 0.687500 +vt 0.477273 0.687500 +vt 0.465909 0.875000 +vt 0.465909 0.687500 +vt 0.545455 0.687500 +vt 0.534091 0.875000 +vt 0.534091 0.687500 +vt 0.511364 0.687500 +vt 0.500000 0.875000 +vt 0.477273 0.875000 +vt 0.454545 0.875000 +vt 0.454545 0.687500 +vt 0.522727 0.875000 +vt 0.522727 0.687500 +vt 0.511364 0.875000 +vt 0.500000 0.898438 +vt 0.477273 0.882812 +vt 0.488636 0.898438 +vt 0.477273 0.898438 +vt 0.522727 0.882812 +vt 0.534091 0.898438 +vt 0.522727 0.898438 +vt 0.511364 0.898438 +vt 0.465909 0.890625 +vt 0.465909 0.898438 +vt 0.500000 0.921875 +vt 0.488636 0.921875 +vt 0.477273 0.914062 +vt 0.465909 0.906250 +vt 0.522727 0.914062 +vt 0.511364 0.921875 +vt 0.534091 0.890625 +vt 0.545455 0.898438 +vt 0.534091 0.906250 +vt 0.454545 0.898438 +vt 0.477273 0.921875 +vt 0.465909 0.937500 +vt 0.465909 0.921875 +vt 0.500000 0.937500 +vt 0.477273 0.937500 +vt 0.534091 0.921875 +vt 0.522727 0.937500 +vt 0.522727 0.921875 +vt 0.454545 0.937500 +vt 0.454545 0.921875 +vt 0.511364 0.937500 +vt 0.545455 0.937500 +vt 0.534091 0.937500 +vt 0.488636 0.937500 +vt 0.465909 0.687500 +vt 0.454545 0.875000 +vt 0.454545 0.687500 +vt 0.488636 0.687500 +vt 0.477273 0.875000 +vt 0.477273 0.687500 +vt 0.500000 0.687500 +vt 0.545455 0.687500 +vt 0.534091 0.875000 +vt 0.465909 0.875000 +vt 0.534091 0.898438 +vt 0.522727 0.914062 +vt 0.511364 0.921875 +vt 0.545455 0.898438 +vt 0.534091 0.906250 +vt 0.454545 0.898438 +vt 0.477273 0.921875 +vt 0.465909 0.937500 +vt 0.465909 0.921875 +vt 0.500000 0.937500 +vt 0.477273 0.937500 +vt 0.534091 0.921875 +vt 0.522727 0.937500 +vt 0.522727 0.921875 +vt 0.454545 0.937500 +vt 0.454545 0.921875 +vt 0.511364 0.937500 +vt 0.545455 0.937500 +vt 0.534091 0.937500 +vt 0.488636 0.937500 +vt 0.465909 0.898438 +vt 0.477273 0.914062 +vt 0.465909 0.906250 +vt 0.488636 0.898438 +vt 0.500000 0.921875 +vt 0.488636 0.921875 +vt 0.477273 0.882812 +vt 0.465909 0.890625 +vt 0.500000 0.875000 +vt 0.488636 0.875000 +vt 0.522727 0.882812 +vt 0.511364 0.898438 +vt 0.511364 0.875000 +vt 0.534091 0.890625 +vt 0.522727 0.898438 +vt 0.477273 0.898438 +vt 0.500000 0.898438 +vt 0.522727 0.687500 +vt 0.511364 0.687500 +vt 0.534091 0.687500 +vt 0.522727 0.875000 +vt 0.500000 0.687500 +vt 0.488636 0.875000 +vt 0.488636 0.687500 +vt 0.477273 0.687500 +vt 0.465909 0.875000 +vt 0.465909 0.687500 +vt 0.545455 0.687500 +vt 0.534091 0.875000 +vt 0.534091 0.687500 +vt 0.511364 0.687500 +vt 0.500000 0.875000 +vt 0.477273 0.875000 +vt 0.454545 0.875000 +vt 0.454545 0.687500 +vt 0.522727 0.875000 +vt 0.522727 0.687500 +vt 0.511364 0.875000 +vt 0.500000 0.898438 +vt 0.477273 0.882812 +vt 0.488636 0.898438 +vt 0.477273 0.898438 +vt 0.522727 0.882812 +vt 0.534091 0.898438 +vt 0.522727 0.898438 +vt 0.511364 0.898438 +vt 0.465909 0.890625 +vt 0.465909 0.898438 +vt 0.500000 0.921875 +vt 0.488636 0.921875 +vt 0.465909 0.906250 +vt 0.477273 0.914062 +vt 0.522727 0.914062 +vt 0.511364 0.921875 +vt 0.534091 0.890625 +vt 0.545455 0.898438 +vt 0.534091 0.906250 +vt 0.454545 0.898438 +vt 0.465909 0.921875 +vt 0.477273 0.937500 +vt 0.465909 0.937500 +vt 0.500000 0.937500 +vt 0.477273 0.921875 +vt 0.534091 0.921875 +vt 0.522727 0.937500 +vt 0.522727 0.921875 +vt 0.454545 0.937500 +vt 0.454545 0.921875 +vt 0.511364 0.937500 +vt 0.545455 0.937500 +vt 0.534091 0.937500 +vt 0.488636 0.937500 +vt 0.465909 0.687500 +vt 0.454545 0.875000 +vt 0.454545 0.687500 +vt 0.488636 0.687500 +vt 0.477273 0.875000 +vt 0.477273 0.687500 +vt 0.500000 0.687500 +vt 0.545455 0.687500 +vt 0.534091 0.875000 +vt 0.465909 0.875000 +vt 0.534091 0.906250 +vt 0.522727 0.914062 +vt 0.511364 0.921875 +vt 0.545455 0.898438 +vt 0.534091 0.898438 +vt 0.454545 0.898438 +vt 0.477273 0.921875 +vt 0.465909 0.937500 +vt 0.465909 0.921875 +vt 0.500000 0.937500 +vt 0.477273 0.937500 +vt 0.534091 0.921875 +vt 0.522727 0.937500 +vt 0.522727 0.921875 +vt 0.454545 0.937500 +vt 0.454545 0.921875 +vt 0.511364 0.937500 +vt 0.545455 0.937500 +vt 0.534091 0.937500 +vt 0.488636 0.937500 +vt 0.545455 0.875000 +vt 0.545455 0.921875 +vt 0.545455 0.875000 +vt 0.545455 0.921875 +vt 0.545455 0.875000 +vt 0.545455 0.921875 +vt 0.545455 0.875000 +vt 0.545455 0.921875 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.4617 -0.4617 0.7573 +vn 0.0196 0.0473 0.9987 +vn -0.1363 -0.6737 0.7263 +vn 0.5293 0.5293 0.6630 +vn 0.1866 0.9824 0.0000 +vn 0.1447 0.7194 0.6794 +vn 0.0473 0.0196 0.9987 +vn -0.6737 -0.1363 0.7263 +vn 0.7194 0.1447 0.6794 +vn 0.7071 0.7071 0.0000 +vn 0.0473 0.0196 -0.9987 +vn 0.5293 0.5293 -0.6630 +vn 0.7194 0.1447 -0.6794 +vn -0.6737 -0.1363 -0.7263 +vn 0.0670 0.0670 -0.9955 +vn 0.0670 0.0670 0.9955 +vn 0.9824 0.1866 0.0000 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.4617 -0.4617 -0.7573 +vn 0.0196 0.0473 -0.9987 +vn 0.1447 0.7194 -0.6794 +vn -0.1363 -0.6737 -0.7263 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.4617 -0.4617 -0.7573 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 -0.7263 +vn -0.5293 0.5293 -0.6630 +vn -0.1866 0.9824 0.0000 +vn -0.1447 0.7194 -0.6794 +vn -0.0473 0.0196 -0.9987 +vn 0.6737 -0.1363 -0.7263 +vn -0.9824 0.1866 0.0000 +vn -0.7194 0.1447 -0.6794 +vn -0.0473 0.0196 0.9987 +vn -0.5293 0.5293 0.6630 +vn -0.7194 0.1447 0.6794 +vn 0.6737 -0.1363 0.7263 +vn -0.0670 0.0670 0.9955 +vn -0.0670 0.0670 -0.9955 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.4617 -0.4617 0.7573 +vn -0.0196 0.0473 0.9987 +vn -0.1447 0.7194 0.6794 +vn 0.1363 -0.6737 0.7263 +s off +f 75/135/23 74/136/23 73/137/23 +f 78/138/24 79/139/24 77/140/24 +f 75/141/25 80/142/25 76/143/25 +f 74/144/26 77/140/26 73/145/26 +f 76/146/27 78/138/27 74/136/27 +f 73/147/28 79/139/28 75/148/28 +f 87/149/24 85/150/24 86/151/24 +f 82/152/26 86/151/26 81/153/26 +f 84/154/27 87/149/27 82/155/27 +f 81/156/28 85/150/28 83/157/28 +f 83/158/25 88/159/25 84/160/25 +f 95/161/24 93/162/24 94/163/24 +f 89/164/28 93/165/28 91/166/28 +f 91/166/25 96/167/25 92/168/25 +f 90/169/26 94/170/26 89/171/26 +f 92/168/27 95/161/27 90/169/27 +f 75/135/23 76/146/23 74/136/23 +f 78/138/24 80/142/24 79/139/24 +f 75/141/25 79/139/25 80/142/25 +f 74/144/26 78/138/26 77/140/26 +f 76/146/27 80/142/27 78/138/27 +f 73/147/28 77/140/28 79/139/28 +f 87/149/24 88/159/24 85/150/24 +f 82/152/26 87/149/26 86/151/26 +f 84/154/27 88/159/27 87/149/27 +f 81/156/28 86/151/28 85/150/28 +f 83/158/25 85/150/25 88/159/25 +f 95/161/24 96/167/24 93/162/24 +f 89/164/28 94/172/28 93/165/28 +f 91/166/25 93/165/25 96/167/25 +f 90/169/26 95/161/26 94/170/26 +f 92/168/27 96/167/27 95/161/27 +s 1 +f 102/173/29 161/174/30 160/175/31 +f 100/176/32 163/177/33 162/178/34 +f 108/179/35 102/173/29 109/180/36 +f 107/181/37 99/182/38 100/176/32 +f 112/183/39 98/184/40 105/185/41 +f 111/186/42 104/187/43 112/183/39 +f 107/181/37 101/188/44 108/179/35 +f 106/189/45 98/184/40 99/182/38 +f 158/190/25 105/185/41 151/191/46 +f 157/192/47 112/193/39 158/190/25 +f 119/194/27 126/195/37 118/196/48 +f 117/197/26 124/198/36 116/199/49 +f 115/200/28 122/201/42 114/202/47 +f 120/203/46 127/204/45 119/194/27 +f 118/196/48 125/205/35 117/197/26 +f 116/199/49 123/206/50 115/207/28 +f 114/202/47 121/208/39 113/209/25 +f 113/209/25 128/210/41 120/203/46 +f 128/210/41 134/211/38 127/204/45 +f 125/212/35 133/213/32 132/214/44 +f 121/215/39 130/216/51 129/217/43 +f 128/210/41 129/217/43 135/218/40 +f 126/195/37 134/211/38 133/213/32 +f 124/219/36 132/214/44 131/220/29 +f 133/213/32 141/221/33 140/222/34 +f 131/220/29 139/223/30 138/224/31 +f 135/218/40 141/221/33 134/211/38 +f 132/214/44 140/222/34 139/223/30 +f 130/216/51 136/225/52 129/217/43 +f 129/217/43 142/226/53 135/218/40 +f 122/227/42 123/228/50 130/216/51 +f 130/216/51 123/228/50 137/229/54 +f 124/219/36 131/220/29 123/230/50 +f 131/220/29 138/224/31 123/230/50 +f 139/231/30 146/232/55 138/233/31 +f 142/226/53 149/234/24 141/221/33 +f 140/222/34 147/235/26 139/231/30 +f 137/236/54 144/237/25 136/238/52 +f 138/233/31 143/239/23 123/240/50 +f 136/238/52 150/241/56 142/226/53 +f 137/236/54 143/242/23 145/243/57 +f 140/222/34 149/234/24 148/244/58 +f 155/245/49 110/246/50 156/247/28 +f 153/248/48 108/249/35 154/250/26 +f 151/191/46 106/189/45 152/251/27 +f 156/252/28 111/253/42 157/192/47 +f 154/250/26 109/254/36 155/245/49 +f 152/251/27 107/181/37 153/248/48 +f 98/184/40 163/177/33 99/182/38 +f 101/188/44 162/178/34 161/174/30 +f 103/255/51 97/256/52 104/187/43 +f 104/187/43 164/257/53 98/184/40 +f 111/186/42 110/258/50 103/255/51 +f 103/255/51 110/258/50 159/259/54 +f 109/180/36 102/173/29 110/260/50 +f 102/173/29 160/175/31 110/260/50 +f 161/261/30 168/262/55 160/263/31 +f 164/257/53 171/264/24 163/177/33 +f 162/178/34 169/265/26 161/261/30 +f 159/266/54 166/267/25 97/268/52 +f 160/263/31 165/269/23 110/270/50 +f 97/268/52 172/271/56 164/257/53 +f 159/266/54 165/272/23 167/273/57 +f 162/178/34 171/264/24 170/274/58 +f 178/275/59 237/276/60 236/277/61 +f 176/278/62 239/279/63 238/280/64 +f 184/281/65 178/275/59 185/282/66 +f 182/283/67 176/278/62 183/284/68 +f 188/285/69 174/286/70 181/287/71 +f 187/288/72 180/289/73 188/285/69 +f 183/284/68 177/290/74 184/281/65 +f 182/283/67 174/286/70 175/291/75 +f 234/292/26 181/287/71 227/293/49 +f 233/294/48 188/295/69 234/292/26 +f 195/296/28 202/297/68 194/298/47 +f 193/299/25 200/300/66 192/301/46 +f 191/302/27 198/303/72 190/304/48 +f 196/305/49 203/306/67 195/296/28 +f 194/298/47 201/307/65 193/299/25 +f 192/301/46 199/308/76 191/309/27 +f 190/304/48 197/310/69 189/311/26 +f 189/311/26 204/312/71 196/305/49 +f 204/312/71 210/313/75 203/306/67 +f 201/314/65 209/315/62 208/316/74 +f 197/317/69 206/318/77 205/319/73 +f 204/312/71 205/319/73 211/320/70 +f 202/297/68 210/313/75 209/315/62 +f 200/321/66 208/316/74 207/322/59 +f 209/315/62 217/323/63 216/324/64 +f 208/316/74 214/325/61 207/322/59 +f 211/320/70 217/323/63 210/313/75 +f 208/316/74 216/324/64 215/326/60 +f 206/318/77 212/327/78 205/319/73 +f 205/319/73 218/328/79 211/320/70 +f 198/329/72 199/330/76 206/318/77 +f 206/318/77 199/330/76 213/331/80 +f 200/321/66 207/322/59 199/332/76 +f 207/322/59 214/325/61 199/332/76 +f 214/333/61 223/334/25 222/335/57 +f 218/328/79 225/336/24 217/323/63 +f 216/324/64 223/334/25 215/337/60 +f 213/338/80 220/339/26 212/340/78 +f 214/333/61 219/341/23 199/342/76 +f 212/340/78 226/343/58 218/328/79 +f 213/338/80 219/344/23 221/345/55 +f 216/324/64 225/336/24 224/346/56 +f 231/347/46 186/348/76 232/349/27 +f 229/350/47 184/351/65 230/352/25 +f 227/293/49 182/283/67 228/353/28 +f 232/354/27 187/355/72 233/294/48 +f 230/352/25 185/356/66 231/347/46 +f 228/353/28 183/284/68 229/350/47 +f 174/286/70 239/279/63 175/291/75 +f 177/290/74 238/280/64 237/276/60 +f 180/289/73 235/357/80 173/358/78 +f 180/289/73 240/359/79 174/286/70 +f 187/288/72 186/360/76 179/361/77 +f 179/361/77 186/360/76 235/357/80 +f 185/282/66 178/275/59 186/362/76 +f 178/275/59 236/277/61 186/362/76 +f 237/363/60 244/364/57 236/365/61 +f 240/359/79 247/366/24 239/279/63 +f 238/280/64 245/367/25 237/363/60 +f 235/368/80 242/369/26 173/370/78 +f 236/365/61 241/371/23 186/372/76 +f 173/370/78 248/373/58 240/359/79 +f 235/368/80 241/374/23 243/375/55 +f 238/280/64 247/366/24 246/376/56 +f 102/173/29 101/188/44 161/174/30 +f 100/176/32 99/182/38 163/177/33 +f 108/179/35 101/188/44 102/173/29 +f 107/181/37 106/189/45 99/182/38 +f 112/183/39 104/187/43 98/184/40 +f 111/186/42 103/255/51 104/187/43 +f 107/181/37 100/176/32 101/188/44 +f 106/189/45 105/185/41 98/184/40 +f 158/190/25 112/193/39 105/185/41 +f 157/192/47 111/253/42 112/193/39 +f 119/194/27 127/204/45 126/195/37 +f 117/197/26 125/205/35 124/198/36 +f 115/200/28 123/377/50 122/201/42 +f 120/203/46 128/210/41 127/204/45 +f 118/196/48 126/195/37 125/205/35 +f 116/199/49 124/198/36 123/206/50 +f 114/202/47 122/201/42 121/208/39 +f 113/209/25 121/208/39 128/210/41 +f 128/210/41 135/218/40 134/211/38 +f 125/212/35 126/195/37 133/213/32 +f 121/215/39 122/227/42 130/216/51 +f 128/210/41 121/215/39 129/217/43 +f 126/195/37 127/204/45 134/211/38 +f 124/219/36 125/212/35 132/214/44 +f 133/213/32 134/211/38 141/221/33 +f 131/220/29 132/214/44 139/223/30 +f 135/218/40 142/226/53 141/221/33 +f 132/214/44 133/213/32 140/222/34 +f 130/216/51 137/229/54 136/225/52 +f 129/217/43 136/225/52 142/226/53 +f 139/231/30 147/235/26 146/232/55 +f 142/226/53 150/241/56 149/234/24 +f 140/222/34 148/244/58 147/235/26 +f 137/236/54 145/243/57 144/237/25 +f 138/233/31 146/232/55 143/239/23 +f 136/238/52 144/237/25 150/241/56 +f 137/236/54 123/378/50 143/242/23 +f 140/222/34 141/221/33 149/234/24 +f 155/245/49 109/254/36 110/246/50 +f 153/248/48 107/181/37 108/249/35 +f 151/191/46 105/185/41 106/189/45 +f 156/252/28 110/379/50 111/253/42 +f 154/250/26 108/249/35 109/254/36 +f 152/251/27 106/189/45 107/181/37 +f 98/184/40 164/257/53 163/177/33 +f 101/188/44 100/176/32 162/178/34 +f 103/255/51 159/259/54 97/256/52 +f 104/187/43 97/256/52 164/257/53 +f 161/261/30 169/265/26 168/262/55 +f 164/257/53 172/271/56 171/264/24 +f 162/178/34 170/274/58 169/265/26 +f 159/266/54 167/273/57 166/267/25 +f 160/263/31 168/262/55 165/269/23 +f 97/268/52 166/267/25 172/271/56 +f 159/266/54 110/380/50 165/272/23 +f 162/178/34 163/177/33 171/264/24 +f 178/275/59 177/290/74 237/276/60 +f 176/278/62 175/291/75 239/279/63 +f 184/281/65 177/290/74 178/275/59 +f 182/283/67 175/291/75 176/278/62 +f 188/285/69 180/289/73 174/286/70 +f 187/288/72 179/361/77 180/289/73 +f 183/284/68 176/278/62 177/290/74 +f 182/283/67 181/287/71 174/286/70 +f 234/292/26 188/295/69 181/287/71 +f 233/294/48 187/355/72 188/295/69 +f 195/296/28 203/306/67 202/297/68 +f 193/299/25 201/307/65 200/300/66 +f 191/302/27 199/381/76 198/303/72 +f 196/305/49 204/312/71 203/306/67 +f 194/298/47 202/297/68 201/307/65 +f 192/301/46 200/300/66 199/308/76 +f 190/304/48 198/303/72 197/310/69 +f 189/311/26 197/310/69 204/312/71 +f 204/312/71 211/320/70 210/313/75 +f 201/314/65 202/297/68 209/315/62 +f 197/317/69 198/329/72 206/318/77 +f 204/312/71 197/317/69 205/319/73 +f 202/297/68 203/306/67 210/313/75 +f 200/321/66 201/314/65 208/316/74 +f 209/315/62 210/313/75 217/323/63 +f 208/316/74 215/326/60 214/325/61 +f 211/320/70 218/328/79 217/323/63 +f 208/316/74 209/315/62 216/324/64 +f 206/318/77 213/331/80 212/327/78 +f 205/319/73 212/327/78 218/328/79 +f 214/333/61 215/337/60 223/334/25 +f 218/328/79 226/343/58 225/336/24 +f 216/324/64 224/346/56 223/334/25 +f 213/338/80 221/345/55 220/339/26 +f 214/333/61 222/335/57 219/341/23 +f 212/340/78 220/339/26 226/343/58 +f 213/338/80 199/382/76 219/344/23 +f 216/324/64 217/323/63 225/336/24 +f 231/347/46 185/356/66 186/348/76 +f 229/350/47 183/284/68 184/351/65 +f 227/293/49 181/287/71 182/283/67 +f 232/354/27 186/383/76 187/355/72 +f 230/352/25 184/351/65 185/356/66 +f 228/353/28 182/283/67 183/284/68 +f 174/286/70 240/359/79 239/279/63 +f 177/290/74 176/278/62 238/280/64 +f 180/289/73 179/361/77 235/357/80 +f 180/289/73 173/358/78 240/359/79 +f 237/363/60 245/367/25 244/364/57 +f 240/359/79 248/373/58 247/366/24 +f 238/280/64 246/376/56 245/367/25 +f 235/368/80 243/375/55 242/369/26 +f 236/365/61 244/364/57 241/371/23 +f 173/370/78 242/369/26 248/373/58 +f 235/368/80 186/384/76 241/374/23 +f 238/280/64 239/279/63 247/366/24 diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..91b4ab9501665e0a9c1f760e9f5a81304c03829c GIT binary patch literal 554 zcmV+_0@eMAP)X2M5QRT*fr;CZy^FHQYLuhQDRY)NNR&gwNxN+@U}n){ z6l>TZDAnWrQ0n)eKjr)T8*43H*D*~K&N=pdM{A9>7Oge&JOj}8JpkLb@&5jfEX%^j z#|JrQ07Qh85-~;|A0LS^;=RW?M~o3;3`!}6Vc>SVAtFM~nQ|``5Mu-&=UnenN{r*k z^?E&liwLC@w6(UPDy3-Kwl?RS5fSEj=61VLN+IV=(=<5e5E1mUEHq66z%UGW?rnRQ*!B2o+9d-}ddL{55-I)HNy=N#5rj4|kK+iEd{z%)%&>#_gzV_nx8 zwNeV*_x*{oQi_~&{TBy_bM8d{h*W#;tNSAIAN?bdbzK4Kzu30zo+VVXdV4FMpP$4S svDQ*bsZ)1Mp)rQ*^@=g3zJ8?h7gQQ9TN||oUjP6A07*qoM6N<$f|?Wmk^lez literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_inner_side.png new file mode 100644 index 0000000000000000000000000000000000000000..c81f1996e8618265823159e0918e8c5ec18481f4 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfyU#$oBdHG#ZVC@$JGrFT;CM4tyhUVx|ySCs^Zkd*#bA#L~=h?ewJ9aT;|#T zXY-Gz?7p3?<2=1fvO&D{*ds5kEo&GVTxUs^>{~qb5a%C$h6B<1|GQH=r*-|A#AL$A zaP;dn{V=Xrtvdz(&TVC2xVP-B%XQ=D&zDSm&%zLL-1%~($m4ZlYj?#lI83t@*KSeh z*_FM_xxvuzg#$+-`w4$em%{aL9UZPOa$~OZPht5{$CrHIweDI5zX#FXjB<}xx!S+V S{ZR(=5re0zpUXO@geCw)$7urq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_schrabidate_side.png new file mode 100644 index 0000000000000000000000000000000000000000..c70303bb14c15c860743b968897d0ae1a157069d GIT binary patch literal 328 zcmV-O0k{5%P)62$tiP|9K^~6yonMAf{+ckD^R*= zlq$>4YW^Q-{+khP+a~^4-h0&AyjxXO0U)1E=bUiPiFNo&1BkY5llPuy^PLkm0&A^U zO>3=qr9VcXo`rKx0IW-Y(;p-F|A9vwPN#Ig-!aBe6a}~2jXcj;mIWy##u%iO^nDLN zS(X5V5U|#whGF1*J~PiV07@yQX(GnRZnq=G$T*JVc}|QGtu;ajs;c7gc%aI%q^@h4 zrumVwEDIrojbt20>bhna20{qz_j@jv3*zf|OxNp`7$e3QQc7FWnyj^^>pHa78zDfJ aWqboyB=nTkXnkG)0000z({>D!Sf19IMTh*38;v zt#bC`*Z73e*5f*R{%}>_NqYE+<#E~^;Tncs{U)8zA2${PUBlq%>gTe~DWM4fCqqoP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/pump.png b/src/main/resources/assets/hbm/textures/models/machines/pump.png new file mode 100644 index 0000000000000000000000000000000000000000..57b8c9d99c5a767c42966326f8d0cc7029a5a668 GIT binary patch literal 937 zcmeAS@N?(olHy`uVBq!ia0vp^8-TchgAGWoKKuAHkYXuz@(kesf*OvL4h9D11Wy;o zkcv5P@A~@*2QnQ0Xx`R*!0k@@2l@m+&%kmUAr-}@L8Ui*RL*0l^QbJntrzXRbkC* zdgg%h&UxqMrwPCIS@zjT@NK}E16$`wKQ{Wdy6nKgIdY8GZ+&%*{%;tnqnH(Ide;8h z!P#ebEjwdXy=N*=XXG)9%w^Z%{^dVzCB29w&XhE6pYvo?Y4XsDpZ%cGw0htFt?!?fl=j}N-*fT3WBcQpgd43$ z4h1vketn;QH}vh_Bgw1({))V6FJE#0_aQ7kjruCLqV|E6_5J;~_wQR<{qOdv*V*&` z7YBd;pU;L8B4ATP=W}1=Gw4XZX8-=%g>4q`+p}u6-(O}reR}!bUk~TbpTEBL|Lkwq zZ+*<)b&m%T(%`@V2DmBg^(5F8flio@ey#$FVdlUi{1Y YwPeA@?T22)0rMV%r>mdKI;Vst0NcpNCIA2c literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/pump_electric.png b/src/main/resources/assets/hbm/textures/models/machines/pump_electric.png new file mode 100644 index 0000000000000000000000000000000000000000..a54bf774f55e4649122361e85fcc9aae682aaf13 GIT binary patch literal 5288 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 literal 0 HcmV?d00001 From 2ee2bda4e94b445a350bb02591e230112a20974d Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 11 Sep 2023 15:47:25 +0200 Subject: [PATCH 022/207] pump fixes, finished telex --- .../com/hbm/blocks/machine/MachinePump.java | 7 +++ .../java/com/hbm/main/CraftingManager.java | 1 + .../machine/TileEntityMachinePumpBase.java | 55 ++++++++++++++++++- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + 5 files changed, 64 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachinePump.java b/src/main/java/com/hbm/blocks/machine/MachinePump.java index ee90203b1..a2cd6ab1c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePump.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePump.java @@ -8,6 +8,7 @@ import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachinePumpBase; import com.hbm.tileentity.machine.TileEntityMachinePumpElectric; import com.hbm.tileentity.machine.TileEntityMachinePumpSteam; import com.hbm.util.BobMathUtil; @@ -75,6 +76,8 @@ public class MachinePump extends BlockDummyable implements ITooltipProvider, ILo return; TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityMachinePumpBase)) return; List text = new ArrayList(); @@ -95,6 +98,10 @@ public class MachinePump extends BlockDummyable implements ITooltipProvider, ILo text.add("&[" + (BobMathUtil.getBlink() ? 0xff0000 : 0xffff00) + "&]! ! ! ALTITUDE ! ! !"); } + if(!((TileEntityMachinePumpBase) te).onGround) { + text.add("&[" + (BobMathUtil.getBlink() ? 0xff0000 : 0xffff00) + "&]! ! ! NO VALID GROUND ! ! !"); + } + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 24711fe67..1096a4c18 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -254,6 +254,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.radio_torch_sender, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', NETHERQUARTZ.gem() }); addRecipeAuto(new ItemStack(ModBlocks.radio_torch_receiver, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.radio_torch_counter, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', ModItems.circuit_aluminium }); + addRecipeAuto(new ItemStack(ModBlocks.radio_telex, 2), new Object[] { "SCR", "W#W", "WWW", 'S', ModBlocks.radio_torch_sender, 'C', ModItems.crt_display, 'R', ModBlocks.radio_torch_receiver, 'W', KEY_PLANKS, '#', ModItems.circuit_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "RSR", "I I", "RSR", 'I', IRON.ingot(), 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', IRON.plate() }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java index 9d5426e62..cbb7ee308 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.HashSet; + +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; @@ -10,16 +13,34 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver { + public static final HashSet validBlocks = new HashSet(); + + static { + validBlocks.add(Blocks.grass); + validBlocks.add(Blocks.dirt); + validBlocks.add(Blocks.sand); + validBlocks.add(Blocks.mycelium); + validBlocks.add(ModBlocks.waste_earth); + validBlocks.add(ModBlocks.dirt_dead); + validBlocks.add(ModBlocks.dirt_oily); + validBlocks.add(ModBlocks.sand_dirty); + validBlocks.add(ModBlocks.sand_dirty_red); + } + public FluidTank water; public boolean isOn = false; public float rotor; public float lastRotor; + public boolean onGround = false; + public int groundCheckDelay = 0; public void updateEntity() { @@ -29,8 +50,14 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp if(water.getFill() > 0) this.sendFluid(water, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } + if(groundCheckDelay > 0) { + groundCheckDelay--; + } else { + onGround = this.checkGround(); + } + this.isOn = false; - if(this.canOperate() && yCoord <= 70) { + if(this.canOperate() && yCoord <= 70 && onGround) { this.isOn = true; this.operate(); } @@ -52,9 +79,34 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp } } + protected boolean checkGround() { + + if(worldObj.provider.hasNoSky) return false; + + int validBlocks = 0; + int invalidBlocks = 0; + + for(int x = -1; x <= 1; x++) { + for(int y = -1; y >= -4; y--) { + for(int z = -1; z <= 1; z++) { + + Block b = worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z); + + if(y == -1 && !b.isNormalCube()) return false; // first layer has to be full solid + + if(this.validBlocks.contains(b)) validBlocks++; + else invalidBlocks ++; + } + } + } + + return validBlocks >= invalidBlocks; // valid block count has to be at least 50% + } + protected NBTTagCompound getSync() { NBTTagCompound data = new NBTTagCompound(); data.setBoolean("isOn", isOn); + data.setBoolean("onGround", onGround); water.writeToNBT(data, "w"); return data; } @@ -62,6 +114,7 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp @Override public void networkUnpack(NBTTagCompound nbt) { this.isOn = nbt.getBoolean("isOn"); + this.onGround = nbt.getBoolean("onGround"); water.readFromNBT(nbt, "w"); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 549ddb0fa..a82e8db40 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4278,6 +4278,7 @@ tile.pwr_port.name=PWR Zugangsport tile.pwr_port.desc=Erlaubt IO für Items und Flüssigkeiten$Platzierung: Hülle tile.pwr_reflector.name=PWR Neutronenreflektor tile.pwr_reflector.desc=Reflektier Neutronen auf Brennstäbe zurück$Platzierung: Hülle, für höhere Reaktivität$Gültiger Block für Hülle +tile.radio_telex.name=Telex-Maschine tile.radio_torch_counter.name=Redstone-over-Radio Itemzähler tile.radio_torch_counter.desc=Kann auf ebenen Flächen oder Komparator-kompatiblen Blöcken platziert werden$Signal basiert auf Anzahl passender Items tile.radio_torch_receiver.name=Redstone-over-Radio Empfänger diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 9f1240865..46c98ba3e 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5258,6 +5258,7 @@ tile.pwr_port.name=PWR Access Port tile.pwr_port.desc=Allows item and fluid IO$Placement: Casing tile.pwr_reflector.name=PWR Neutron Reflector tile.pwr_reflector.desc=Reflects neutrons back to fuel rods$Placement: Grid, for increased reactivity$Valid casing material +tile.radio_telex.name=Telex Machine tile.radio_torch_counter.name=Redstone-over-Radio Item Counter tile.radio_torch_counter.desc=Placable on flat surfaces or comparator-compatible blocks$Bases signal on the amount of matching items tile.radio_torch_receiver.name=Redstone-over-Radio Receiver From d9a700ca57fb66565a9a13fe55216e39af11f3db Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 11 Sep 2023 22:02:59 +0200 Subject: [PATCH 023/207] fixed armor legs, alternate firebrick recipe --- .../java/com/hbm/crafting/MineralRecipes.java | 2 + .../inventory/recipes/CombinationRecipes.java | 2 + .../render/model/ModelArmorTrenchmaster.java | 4 +- .../machine/TileEntityMachinePumpBase.java | 1 + .../network/TileEntityRadioTelex.java | 26 + .../assets/hbm/models/armor/trenchmaster.obj | 2698 +++++++++-------- 6 files changed, 1402 insertions(+), 1331 deletions(-) diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index 039644891..45e58b454 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -1,6 +1,7 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; @@ -446,6 +447,7 @@ public class MineralRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.ball_fireclay, 4), new Object[] { Items.clay_ball, Items.clay_ball, Items.clay_ball, AL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.ball_fireclay, 4), new Object[] { Items.clay_ball, Items.clay_ball, Items.clay_ball, AL.ore() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ball_fireclay, 4), new Object[] { Items.clay_ball, Items.clay_ball, DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), KEY_SAND }); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_IRON), new ItemStack(ModItems.powder_iron)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_COPPER), new ItemStack(ModItems.powder_copper)); diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 517229247..2b70c1359 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -26,6 +26,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.util.Tuple.Pair; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -60,6 +61,7 @@ public class CombinationRecipes extends SerializableRecipe { recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WOOD)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), null)); recipes.put(new ComparableStack(Items.reeds), new Pair(new ItemStack(Items.sugar, 2), new FluidStack(Fluids.ETHANOL, 50))); + recipes.put(new ComparableStack(Blocks.clay), new Pair(new ItemStack(Blocks.brick_block, 1), null)); } public static Pair getOutput(ItemStack stack) { diff --git a/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java b/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java index 8ded2bb29..533190861 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java +++ b/src/main/java/com/hbm/render/model/ModelArmorTrenchmaster.java @@ -23,8 +23,8 @@ public class ModelArmorTrenchmaster extends ModelArmorBase { rightArm = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightArm").setRotationPoint(5.0F, 2.0F, 0.0F); leftLeg = new ModelRendererObj(ResourceManager.armor_trenchmaster, "LeftLeg").setRotationPoint(1.9F, 12.0F, 0.0F); rightLeg = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightLeg").setRotationPoint(-1.9F, 12.0F, 0.0F); - leftFoot = new ModelRendererObj(ResourceManager.armor_trenchmaster, "LeftFoot").setRotationPoint(1.9F, 12.0F, 0.0F); - rightFoot = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightFoot").setRotationPoint(-1.9F, 12.0F, 0.0F); + leftFoot = new ModelRendererObj(ResourceManager.armor_trenchmaster, "LeftBoot").setRotationPoint(1.9F, 12.0F, 0.0F); + rightFoot = new ModelRendererObj(ResourceManager.armor_trenchmaster, "RightBoot").setRotationPoint(-1.9F, 12.0F, 0.0F); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java index cbb7ee308..2b91757d8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java @@ -75,6 +75,7 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp this.lastRotor -= 360F; MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:block.steamEngineOperate", 0.5F, 0.75F); + MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "game.neutral.swim.splash", 1F, 0.5F); } } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java index 3137ef832..628e3e118 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -20,6 +20,7 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider { @@ -224,4 +225,29 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GuiScreenRadioTelex(this); } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 1, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } } diff --git a/src/main/resources/assets/hbm/models/armor/trenchmaster.obj b/src/main/resources/assets/hbm/models/armor/trenchmaster.obj index 9289dc89b..afb0242b7 100644 --- a/src/main/resources/assets/hbm/models/armor/trenchmaster.obj +++ b/src/main/resources/assets/hbm/models/armor/trenchmaster.obj @@ -1,5 +1,211 @@ # Blender v2.79 (sub 0) OBJ File: 'trenchmaster_scaled.blend' # www.blender.org +o LeftBoot +v 4.625000 24.299997 2.625000 +v -0.625000 24.299999 2.625000 +v 4.625000 24.299997 -2.625000 +v -0.625000 24.299999 -2.625000 +v 3.575000 24.299999 -3.675000 +v 0.425000 24.299999 -3.675000 +v 3.574999 22.199999 -3.675000 +v 0.424999 22.199999 -3.675000 +v 3.574999 21.149998 -2.625000 +v 0.424999 21.150000 -2.625000 +v 4.625000 22.199999 -2.625000 +v -0.625001 22.200001 -2.625000 +v -0.100001 20.100000 -2.100000 +v 4.099998 20.099998 -2.100000 +v -0.100001 20.100000 2.100000 +v 4.099998 20.099998 2.100000 +v 4.624999 20.099998 2.625000 +v -0.625001 20.100000 2.625000 +v 4.624999 20.099998 -2.625000 +v -0.625001 20.100000 -2.625000 +vt 0.250000 0.000000 +vt 0.000000 0.222222 +vt 0.000000 -0.000000 +vt 0.500000 0.000000 +vt 0.300000 0.044444 +vt 0.250000 0.000000 +vt 0.450000 0.044444 +vt 0.300000 0.133333 +vt 0.450000 0.133333 +vt 0.300000 0.177778 +vt 0.750000 0.400000 +vt 0.525000 0.422222 +vt 0.500000 0.400000 +vt 0.500000 0.311111 +vt 0.275000 0.422222 +vt 0.250000 0.400000 +vt 0.500000 0.133333 +vt 0.500000 0.044444 +vt 0.250000 0.133333 +vt 0.250000 0.044444 +vt 0.450000 0.177778 +vt 0.300000 0.355556 +vt 0.450000 0.355556 +vt 1.000000 0.400000 +vt 0.775000 0.422222 +vt 0.025000 0.422222 +vt 0.000000 0.400000 +vt 0.250000 0.311111 +vt 1.000000 0.222222 +vt 0.750000 0.222222 +vt 0.250000 0.222222 +vt 0.725000 0.422222 +vt 0.500000 0.222222 +vt 0.475000 0.422222 +vt 0.975000 0.422222 +vt 0.225000 0.422222 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.5774 -0.5774 -0.5773 +vn -0.5773 -0.5773 -0.5774 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 3/4/1 6/5/1 4/6/1 +f 5/7/2 8/8/2 6/5/2 +f 7/9/3 10/10/3 8/8/3 +f 17/11/4 14/12/4 19/13/4 +f 17/11/5 19/13/5 11/14/5 +f 19/13/4 13/15/4 20/16/4 +f 11/17/6 5/7/6 3/18/6 +f 6/5/7 12/19/7 4/20/7 +f 9/21/8 7/9/8 11/17/8 +f 10/22/2 9/23/2 19/13/2 +f 8/8/9 10/10/9 12/19/9 +f 18/24/4 16/25/4 17/11/4 +f 20/16/4 15/26/4 18/27/4 +f 2/2/10 12/28/10 18/27/10 +f 2/29/11 17/11/11 1/30/11 +f 3/1/1 4/31/1 2/2/1 +f 3/4/1 5/7/1 6/5/1 +f 5/7/2 7/9/2 8/8/2 +f 7/9/3 9/21/3 10/10/3 +f 17/11/4 16/32/4 14/12/4 +f 3/33/5 1/30/5 11/14/5 +f 1/30/5 17/11/5 11/14/5 +f 19/13/4 14/34/4 13/15/4 +f 11/17/6 7/9/6 5/7/6 +f 6/5/7 8/8/7 12/19/7 +f 20/16/2 12/28/2 10/22/2 +f 9/23/2 11/14/2 19/13/2 +f 20/16/2 10/22/2 19/13/2 +f 18/24/4 15/35/4 16/25/4 +f 20/16/4 13/36/4 15/26/4 +f 4/31/10 12/28/10 2/2/10 +f 12/28/10 20/16/10 18/27/10 +f 2/29/11 18/24/11 17/11/11 +o RightBoot +v -4.625000 24.300001 2.625000 +v 0.625000 24.299999 2.625000 +v -4.625000 24.300001 -2.625000 +v 0.625000 24.299999 -2.625000 +v -3.575000 24.300001 -3.675000 +v -0.425000 24.299999 -3.675000 +v -3.575000 22.200001 -3.675000 +v -0.425001 22.200001 -3.675000 +v -3.575001 21.150002 -2.625000 +v -0.425001 21.150000 -2.625000 +v -4.625000 22.200001 -2.625000 +v 0.624999 22.199999 -2.625000 +v 0.099999 20.100000 -2.100000 +v -4.100001 20.100002 -2.100000 +v 0.099999 20.100000 2.100000 +v -4.100001 20.100002 2.100000 +v -4.625001 20.100002 2.625000 +v 0.624999 20.100000 2.625000 +v -4.625001 20.100002 -2.625000 +v 0.624999 20.100000 -2.625000 +vt 0.000000 0.222222 +vt 0.250000 0.000000 +vt 0.000000 -0.000000 +vt 0.300000 0.044444 +vt 0.500000 0.000000 +vt 0.250000 0.000000 +vt 0.300000 0.133333 +vt 0.450000 0.044444 +vt 0.300000 0.177778 +vt 0.450000 0.133333 +vt 0.525000 0.422222 +vt 0.750000 0.400000 +vt 0.500000 0.400000 +vt 0.500000 0.311111 +vt 0.275000 0.422222 +vt 0.250000 0.400000 +vt 0.500000 0.133333 +vt 0.500000 0.044444 +vt 0.250000 0.133333 +vt 0.250000 0.044444 +vt 0.450000 0.177778 +vt 0.450000 0.355556 +vt 0.300000 0.355556 +vt 0.775000 0.422222 +vt 1.000000 0.400000 +vt 0.025000 0.422222 +vt 0.000000 0.400000 +vt 0.250000 0.311111 +vt 0.750000 0.222222 +vt 1.000000 0.222222 +vt 0.250000 0.222222 +vt 0.725000 0.422222 +vt 0.500000 0.222222 +vt 0.475000 0.422222 +vt 0.975000 0.422222 +vt 0.225000 0.422222 +vn 0.0000 1.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.5773 -0.5774 -0.5774 +vn 0.5773 -0.5773 -0.5774 +vn 1.0000 -0.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 22/37/12 23/38/12 21/39/12 +f 26/40/12 23/41/12 24/42/12 +f 28/43/13 25/44/13 26/40/13 +f 30/45/14 27/46/14 28/43/14 +f 34/47/15 37/48/15 39/49/15 +f 31/50/16 39/49/16 37/48/16 +f 33/51/15 39/49/15 40/52/15 +f 25/44/17 31/53/17 23/54/17 +f 32/55/18 26/40/18 24/56/18 +f 29/57/19 31/53/19 27/46/19 +f 29/58/13 30/59/13 40/52/13 +f 28/43/20 32/55/20 30/45/20 +f 36/60/15 38/61/15 37/48/15 +f 35/62/15 40/52/15 38/63/15 +f 38/63/21 32/64/21 22/37/21 +f 21/65/22 38/61/22 22/66/22 +f 22/37/12 24/67/12 23/38/12 +f 26/40/12 25/44/12 23/41/12 +f 28/43/13 27/46/13 25/44/13 +f 30/45/14 29/57/14 27/46/14 +f 34/47/15 36/68/15 37/48/15 +f 37/48/16 21/65/16 31/50/16 +f 21/65/16 23/69/16 31/50/16 +f 33/51/15 34/70/15 39/49/15 +f 25/44/17 27/46/17 31/53/17 +f 32/55/18 28/43/18 26/40/18 +f 39/49/13 31/50/13 29/58/13 +f 30/59/13 32/64/13 40/52/13 +f 39/49/13 29/58/13 40/52/13 +f 36/60/15 35/71/15 38/61/15 +f 35/62/15 33/72/15 40/52/15 +f 40/52/21 32/64/21 38/63/21 +f 32/64/21 24/67/21 22/37/21 +f 21/65/22 37/48/22 38/61/22 o Light v 2.099990 -5.575001 -5.250000 v 3.463980 -4.787502 -5.250000 @@ -47,49 +253,33 @@ vn 0.7071 -0.0000 -0.7071 vn 0.0000 0.7071 -0.7071 vn -0.7071 0.0000 -0.7071 s off -f 1/1/1 5/2/1 3/3/1 -f 11/4/1 10/5/1 9/6/1 -f 16/7/2 17/8/2 13/9/2 -f 17/8/1 19/10/1 18/11/1 -f 13/9/3 18/11/3 14/12/3 -f 14/12/4 19/10/4 15/13/4 -f 15/13/5 20/14/5 16/7/5 -f 3/3/1 2/15/1 1/1/1 -f 1/1/1 6/16/1 5/2/1 -f 5/2/1 4/17/1 3/3/1 -f 9/6/1 8/18/1 11/4/1 -f 8/18/1 7/19/1 11/4/1 -f 7/19/1 12/20/1 11/4/1 -f 16/7/2 20/14/2 17/8/2 -f 17/8/1 20/14/1 19/10/1 -f 13/9/3 17/8/3 18/11/3 -f 14/12/4 18/11/4 19/10/4 -f 15/13/5 19/10/5 20/14/5 +f 41/73/23 45/74/23 43/75/23 +f 51/76/23 50/77/23 49/78/23 +f 56/79/24 57/80/24 53/81/24 +f 57/80/23 59/82/23 58/83/23 +f 53/81/25 58/83/25 54/84/25 +f 54/84/26 59/82/26 55/85/26 +f 55/85/27 60/86/27 56/79/27 +f 43/75/23 42/87/23 41/73/23 +f 41/73/23 46/88/23 45/74/23 +f 45/74/23 44/89/23 43/75/23 +f 49/78/23 48/90/23 51/76/23 +f 48/90/23 47/91/23 51/76/23 +f 47/91/23 52/92/23 51/76/23 +f 56/79/24 60/86/24 57/80/24 +f 57/80/23 60/86/23 59/82/23 +f 53/81/25 57/80/25 58/83/25 +f 54/84/26 58/83/26 59/82/26 +f 55/85/27 59/82/27 60/86/27 o RightLeg -v -4.625000 24.300001 2.625000 -v 0.625000 24.299999 2.625000 -v -4.625000 24.300001 -2.625000 -v 0.625000 24.299999 -2.625000 v -4.100004 11.700002 2.100000 v 0.099996 11.700001 2.100000 v -4.100004 11.700002 -2.100000 v 0.099996 11.700001 -2.100000 -v -3.575000 24.300001 -3.675000 -v -0.425000 24.299999 -3.675000 -v -3.575000 22.200001 -3.675000 -v -0.425001 22.200001 -3.675000 -v -3.575001 21.150002 -2.625000 -v -0.425001 21.150000 -2.625000 -v -4.625000 22.200001 -2.625000 -v 0.624999 22.199999 -2.625000 v 0.099999 20.100000 -2.100000 v -4.100001 20.100002 -2.100000 v 0.099999 20.100000 2.100000 v -4.100001 20.100002 2.100000 -v -4.625001 20.100002 2.625000 -v 0.624999 20.100000 2.625000 -v -4.625001 20.100002 -2.625000 -v 0.624999 20.100000 -2.625000 v -4.100001 19.050001 2.100000 v 0.099998 19.049999 2.100000 v -4.100001 19.050001 -2.100000 @@ -106,45 +296,18 @@ v -4.100003 15.900001 2.100000 v 0.099997 15.900000 2.100000 v -4.100003 15.900001 -2.100000 v 0.099997 15.900000 -2.100000 -vt 0.000000 0.222222 -vt 0.250000 0.000000 -vt 0.000000 -0.000000 vt 0.225000 1.000000 vt 0.025000 0.822222 vt 0.025000 1.000000 -vt 0.300000 0.044444 -vt 0.500000 0.000000 -vt 0.250000 0.000000 -vt 0.300000 0.133333 -vt 0.450000 0.044444 -vt 0.300000 0.177778 -vt 0.450000 0.133333 vt 0.525000 0.422222 -vt 0.750000 0.400000 -vt 0.500000 0.400000 -vt 0.500000 0.311111 -vt 0.275000 0.422222 -vt 0.250000 0.400000 vt 0.725000 0.466667 vt 0.725000 0.422222 -vt 0.500000 0.133333 -vt 0.500000 0.044444 -vt 0.250000 0.133333 -vt 0.250000 0.044444 +vt 0.275000 0.422222 vt 0.475000 0.466667 vt 0.475000 0.422222 vt 0.025000 0.422222 vt 0.225000 0.466667 vt 0.225000 0.422222 -vt 0.450000 0.177778 -vt 0.450000 0.355556 -vt 0.300000 0.355556 -vt 0.775000 0.422222 -vt 1.000000 0.400000 -vt 0.000000 0.400000 -vt 0.250000 0.311111 -vt 0.750000 0.222222 -vt 1.000000 0.222222 vt 0.750000 0.488889 vt 0.975000 0.466667 vt 0.775000 0.466667 @@ -175,122 +338,66 @@ vt 0.275000 0.822222 vt 0.475000 0.822222 vt 0.225000 0.644444 vt 0.225000 0.822222 +vt 0.775000 0.422222 vt 0.975000 0.422222 -vt 0.250000 0.222222 -vt 0.500000 0.222222 -vn 0.0000 1.0000 0.0000 vn -0.0000 -1.0000 0.0000 -vn -0.0000 0.0000 -1.0000 -vn 0.0000 -0.7071 -0.7071 vn -1.0000 0.0000 0.0000 -vn -0.7071 0.0000 -0.7071 -vn 0.7071 -0.0000 -0.7071 +vn 0.0000 0.0000 -1.0000 vn 1.0000 -0.0000 0.0000 -vn -0.5773 -0.5774 -0.5774 -vn 0.5773 -0.5773 -0.5774 +vn 0.0000 1.0000 0.0000 vn 0.0000 0.0000 1.0000 s off -f 22/21/6 23/22/6 21/23/6 -f 27/24/7 26/25/7 25/26/7 -f 30/27/6 23/28/6 24/29/6 -f 32/30/8 29/31/8 30/27/8 -f 34/32/9 31/33/9 32/30/9 -f 38/34/7 41/35/7 43/36/7 -f 35/37/10 43/36/10 41/35/10 -f 37/38/7 43/36/7 44/39/7 -f 38/34/10 45/40/10 40/41/10 -f 29/31/11 35/42/11 23/43/11 -f 36/44/12 30/27/12 24/45/12 -f 37/38/8 47/46/8 38/47/8 -f 39/48/13 48/49/13 37/50/13 -f 33/51/14 35/42/14 31/33/14 -f 33/52/8 34/53/8 44/39/8 -f 32/30/15 36/44/15 34/32/15 -f 40/54/7 42/55/7 41/35/7 -f 39/48/7 44/39/7 42/56/7 -f 42/56/13 36/57/13 22/21/13 -f 21/58/16 42/55/16 22/59/16 -f 49/60/6 46/61/6 45/62/6 -f 50/63/6 48/49/6 46/64/6 -f 52/65/6 47/46/6 48/66/6 -f 51/67/6 45/40/6 47/68/6 -f 53/69/16 50/70/16 49/60/16 -f 55/71/10 49/60/10 51/67/10 -f 56/72/8 51/67/8 52/65/8 -f 54/73/13 52/65/13 50/63/13 -f 59/74/7 53/69/7 55/71/7 -f 60/75/7 55/71/7 56/72/7 -f 58/76/7 56/72/7 54/73/7 -f 53/69/7 58/77/7 54/78/7 -f 26/79/16 57/80/16 25/81/16 -f 57/82/10 27/83/10 25/84/10 -f 59/85/8 28/86/8 27/87/8 -f 60/88/13 26/25/13 28/89/13 -f 40/54/16 46/61/16 39/90/16 -f 22/21/6 24/91/6 23/22/6 -f 27/24/7 28/89/7 26/25/7 -f 30/27/6 29/31/6 23/28/6 -f 32/30/8 31/33/8 29/31/8 -f 34/32/9 33/51/9 31/33/9 -f 38/34/7 40/41/7 41/35/7 -f 41/35/10 21/58/10 35/37/10 -f 21/58/10 23/92/10 35/37/10 -f 37/38/7 38/47/7 43/36/7 -f 38/34/10 47/68/10 45/40/10 -f 29/31/11 31/33/11 35/42/11 -f 36/44/12 32/30/12 30/27/12 -f 37/38/8 48/66/8 47/46/8 -f 39/48/13 46/64/13 48/49/13 -f 43/36/8 35/37/8 33/52/8 -f 34/53/8 36/57/8 44/39/8 -f 43/36/8 33/52/8 44/39/8 -f 40/54/7 39/90/7 42/55/7 -f 39/48/7 37/50/7 44/39/7 -f 44/39/13 36/57/13 42/56/13 -f 36/57/13 24/91/13 22/21/13 -f 21/58/16 41/35/16 42/55/16 -f 49/60/6 50/70/6 46/61/6 -f 50/63/6 52/65/6 48/49/6 -f 52/65/6 51/67/6 47/46/6 -f 51/67/6 49/60/6 45/40/6 -f 53/69/16 54/78/16 50/70/16 -f 55/71/10 53/69/10 49/60/10 -f 56/72/8 55/71/8 51/67/8 -f 54/73/13 56/72/13 52/65/13 -f 59/74/7 57/82/7 53/69/7 -f 60/75/7 59/85/7 55/71/7 -f 58/76/7 60/88/7 56/72/7 -f 53/69/7 57/80/7 58/77/7 -f 26/79/16 58/77/16 57/80/16 -f 57/82/10 59/74/10 27/83/10 -f 59/85/8 60/75/8 28/86/8 -f 60/88/13 58/76/13 26/25/13 -f 40/54/16 45/62/16 46/61/16 +f 63/93/28 62/94/28 61/95/28 +f 66/96/29 69/97/29 68/98/29 +f 65/99/30 71/100/30 66/101/30 +f 67/102/31 72/103/31 65/104/31 +f 73/105/32 70/106/32 69/107/32 +f 74/108/32 72/103/32 70/109/32 +f 76/110/32 71/100/32 72/111/32 +f 75/112/32 69/97/32 71/113/32 +f 77/114/33 74/115/33 73/105/33 +f 79/116/29 73/105/29 75/112/29 +f 80/117/30 75/112/30 76/110/30 +f 78/118/31 76/110/31 74/108/31 +f 83/119/28 77/114/28 79/116/28 +f 84/120/28 79/116/28 80/117/28 +f 82/121/28 80/117/28 78/118/28 +f 77/114/28 82/122/28 78/123/28 +f 62/124/33 81/125/33 61/126/33 +f 81/127/29 63/128/29 61/129/29 +f 83/130/30 64/131/30 63/132/30 +f 84/133/31 62/94/31 64/134/31 +f 68/135/33 70/106/33 67/136/33 +f 63/93/28 64/134/28 62/94/28 +f 66/96/29 71/113/29 69/97/29 +f 65/99/30 72/111/30 71/100/30 +f 67/102/31 70/109/31 72/103/31 +f 73/105/32 74/115/32 70/106/32 +f 74/108/32 76/110/32 72/103/32 +f 76/110/32 75/112/32 71/100/32 +f 75/112/32 73/105/32 69/97/32 +f 77/114/33 78/123/33 74/115/33 +f 79/116/29 77/114/29 73/105/29 +f 80/117/30 79/116/30 75/112/30 +f 78/118/31 80/117/31 76/110/31 +f 83/119/28 81/127/28 77/114/28 +f 84/120/28 83/130/28 79/116/28 +f 82/121/28 84/133/28 80/117/28 +f 77/114/28 81/125/28 82/122/28 +f 62/124/33 82/122/33 81/125/33 +f 81/127/29 83/119/29 63/128/29 +f 83/130/30 84/120/30 64/131/30 +f 84/133/31 82/121/31 62/94/31 +f 68/135/33 69/107/33 70/106/33 o LeftLeg -v 4.625000 24.299997 2.625000 -v -0.625000 24.299999 2.625000 -v 4.625000 24.299997 -2.625000 -v -0.625000 24.299999 -2.625000 v 4.099996 11.700000 2.100000 v -0.100004 11.700001 2.100000 v 4.099996 11.700000 -2.100000 v -0.100004 11.700001 -2.100000 -v 3.575000 24.299999 -3.675000 -v 0.425000 24.299999 -3.675000 -v 3.574999 22.199999 -3.675000 -v 0.424999 22.199999 -3.675000 -v 3.574999 21.149998 -2.625000 -v 0.424999 21.150000 -2.625000 -v 4.625000 22.199999 -2.625000 -v -0.625001 22.200001 -2.625000 v -0.100001 20.100000 -2.100000 v 4.099998 20.099998 -2.100000 v -0.100001 20.100000 2.100000 v 4.099998 20.099998 2.100000 -v 4.624999 20.099998 2.625000 -v -0.625001 20.100000 2.625000 -v 4.624999 20.099998 -2.625000 -v -0.625001 20.100000 -2.625000 v 4.099998 19.049999 2.100000 v -0.100002 19.049999 2.100000 v 4.099998 19.049999 -2.100000 @@ -307,45 +414,18 @@ v 4.099997 15.899999 2.100000 v -0.100003 15.900000 2.100000 v 4.099997 15.899999 -2.100000 v -0.100003 15.900000 -2.100000 -vt 0.250000 0.000000 -vt 0.000000 0.222222 -vt 0.000000 -0.000000 vt 0.025000 0.822222 vt 0.225000 1.000000 vt 0.025000 1.000000 -vt 0.500000 0.000000 -vt 0.300000 0.044444 -vt 0.250000 0.000000 -vt 0.450000 0.044444 -vt 0.300000 0.133333 -vt 0.450000 0.133333 -vt 0.300000 0.177778 -vt 0.750000 0.400000 -vt 0.525000 0.422222 -vt 0.500000 0.400000 -vt 0.500000 0.311111 -vt 0.275000 0.422222 -vt 0.250000 0.400000 vt 0.725000 0.466667 +vt 0.525000 0.422222 vt 0.725000 0.422222 -vt 0.500000 0.133333 -vt 0.500000 0.044444 -vt 0.250000 0.133333 -vt 0.250000 0.044444 vt 0.475000 0.466667 +vt 0.275000 0.422222 vt 0.475000 0.422222 vt 0.225000 0.466667 vt 0.025000 0.422222 vt 0.225000 0.422222 -vt 0.450000 0.177778 -vt 0.300000 0.355556 -vt 0.450000 0.355556 -vt 1.000000 0.400000 -vt 0.775000 0.422222 -vt 0.000000 0.400000 -vt 0.250000 0.311111 -vt 1.000000 0.222222 -vt 0.750000 0.222222 vt 0.975000 0.466667 vt 0.750000 0.488889 vt 0.775000 0.466667 @@ -375,98 +455,58 @@ vt 0.475000 0.644444 vt 0.475000 0.822222 vt 0.225000 0.644444 vt 0.225000 0.822222 +vt 0.775000 0.422222 vt 0.975000 0.422222 -vt 0.250000 0.222222 -vt 0.500000 0.222222 vt 1.000000 0.488889 -vn 0.0000 1.0000 0.0000 vn -0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 -vn 0.0000 -0.7071 -0.7071 -vn 1.0000 -0.0000 0.0000 -vn 0.7071 -0.0000 -0.7071 -vn -0.7071 0.0000 -0.7071 vn -1.0000 0.0000 0.0000 -vn 0.5774 -0.5774 -0.5773 -vn -0.5773 -0.5773 -0.5774 +vn 0.0000 1.0000 0.0000 vn 0.0000 0.0000 1.0000 s off -f 63/93/17 62/94/17 61/95/17 -f 66/96/18 67/97/18 65/98/18 -f 63/99/17 70/100/17 64/101/17 -f 69/102/19 72/103/19 70/100/19 -f 71/104/20 74/105/20 72/103/20 -f 81/106/18 78/107/18 83/108/18 -f 81/106/21 83/108/21 75/109/21 -f 83/108/18 77/110/18 84/111/18 -f 85/112/21 78/107/21 80/113/21 -f 75/114/22 69/102/22 63/115/22 -f 70/100/23 76/116/23 64/117/23 -f 87/118/19 77/110/19 78/119/19 -f 88/120/24 79/121/24 77/122/24 -f 73/123/25 71/104/25 75/114/25 -f 74/124/19 73/125/19 83/108/19 -f 72/103/26 74/105/26 76/116/26 -f 82/126/18 80/127/18 81/106/18 -f 84/111/18 79/121/18 82/128/18 -f 62/94/24 76/129/24 82/128/24 -f 62/130/27 81/106/27 61/131/27 -f 86/132/17 89/133/17 85/134/17 -f 88/120/17 90/135/17 86/136/17 -f 87/118/17 92/137/17 88/138/17 -f 85/112/17 91/139/17 87/140/17 -f 89/133/27 94/141/27 93/142/27 -f 89/133/21 95/143/21 91/139/21 -f 91/139/19 96/144/19 92/137/19 -f 92/137/24 94/145/24 90/135/24 -f 93/142/18 99/146/18 95/143/18 -f 95/143/18 100/147/18 96/144/18 -f 96/144/18 98/148/18 94/145/18 -f 94/141/18 97/149/18 93/142/18 -f 65/150/27 98/151/27 66/152/27 -f 67/153/21 97/154/21 65/155/21 -f 68/156/19 99/157/19 67/158/19 -f 66/96/24 100/159/24 68/160/24 -f 86/132/27 80/127/27 79/161/27 -f 63/93/17 64/162/17 62/94/17 -f 66/96/18 68/160/18 67/97/18 -f 63/99/17 69/102/17 70/100/17 -f 69/102/19 71/104/19 72/103/19 -f 71/104/20 73/123/20 74/105/20 -f 81/106/18 80/113/18 78/107/18 -f 63/163/21 61/131/21 75/109/21 -f 61/131/21 81/106/21 75/109/21 -f 83/108/18 78/119/18 77/110/18 -f 85/112/21 87/140/21 78/107/21 -f 75/114/22 71/104/22 69/102/22 -f 70/100/23 72/103/23 76/116/23 -f 87/118/19 88/138/19 77/110/19 -f 88/120/24 86/136/24 79/121/24 -f 84/111/19 76/129/19 74/124/19 -f 73/125/19 75/109/19 83/108/19 -f 84/111/19 74/124/19 83/108/19 -f 82/126/18 79/161/18 80/127/18 -f 84/111/18 77/122/18 79/121/18 -f 64/162/24 76/129/24 62/94/24 -f 76/129/24 84/111/24 82/128/24 -f 62/130/27 82/126/27 81/106/27 -f 86/132/17 90/164/17 89/133/17 -f 88/120/17 92/137/17 90/135/17 -f 87/118/17 91/139/17 92/137/17 -f 85/112/17 89/133/17 91/139/17 -f 89/133/27 90/164/27 94/141/27 -f 89/133/21 93/142/21 95/143/21 -f 91/139/19 95/143/19 96/144/19 -f 92/137/24 96/144/24 94/145/24 -f 93/142/18 97/154/18 99/146/18 -f 95/143/18 99/157/18 100/147/18 -f 96/144/18 100/159/18 98/148/18 -f 94/141/18 98/151/18 97/149/18 -f 65/150/27 97/149/27 98/151/27 -f 67/153/21 99/146/21 97/154/21 -f 68/156/19 100/147/19 99/157/19 -f 66/96/24 98/148/24 100/159/24 -f 86/132/27 85/134/27 80/127/27 +f 86/137/34 87/138/34 85/139/34 +f 93/140/35 90/141/35 92/142/35 +f 95/143/36 89/144/36 90/145/36 +f 96/146/37 91/147/37 89/148/37 +f 94/149/38 97/150/38 93/151/38 +f 96/146/38 98/152/38 94/153/38 +f 95/143/38 100/154/38 96/155/38 +f 93/140/38 99/156/38 95/157/38 +f 97/150/39 102/158/39 101/159/39 +f 97/150/35 103/160/35 99/156/35 +f 99/156/36 104/161/36 100/154/36 +f 100/154/37 102/162/37 98/152/37 +f 101/159/34 107/163/34 103/160/34 +f 103/160/34 108/164/34 104/161/34 +f 104/161/34 106/165/34 102/162/34 +f 102/158/34 105/166/34 101/159/34 +f 85/167/39 106/168/39 86/169/39 +f 87/170/35 105/171/35 85/172/35 +f 88/173/36 107/174/36 87/175/36 +f 86/137/37 108/176/37 88/177/37 +f 94/149/39 92/178/39 91/179/39 +f 86/137/34 88/177/34 87/138/34 +f 93/140/35 95/157/35 90/141/35 +f 95/143/36 96/155/36 89/144/36 +f 96/146/37 94/153/37 91/147/37 +f 94/149/38 98/180/38 97/150/38 +f 96/146/38 100/154/38 98/152/38 +f 95/143/38 99/156/38 100/154/38 +f 93/140/38 97/150/38 99/156/38 +f 97/150/39 98/180/39 102/158/39 +f 97/150/35 101/159/35 103/160/35 +f 99/156/36 103/160/36 104/161/36 +f 100/154/37 104/161/37 102/162/37 +f 101/159/34 105/171/34 107/163/34 +f 103/160/34 107/174/34 108/164/34 +f 104/161/34 108/176/34 106/165/34 +f 102/158/34 106/168/34 105/166/34 +f 85/167/39 105/166/39 106/168/39 +f 87/170/35 107/163/35 105/171/35 +f 88/173/36 108/164/36 107/174/36 +f 86/137/37 106/165/37 108/176/37 +f 94/149/39 93/151/39 92/178/39 o RightArm v -8.625008 1.275002 0.525000 v -8.625007 2.325003 0.525000 @@ -724,146 +764,146 @@ vn 0.8000 -0.6000 0.0000 vn -0.4961 -0.8682 0.0000 vn -0.9701 0.2425 0.0000 s off -f 134/165/28 140/166/28 136/167/28 -f 104/168/29 105/169/29 108/170/29 -f 102/171/30 106/172/30 101/173/30 -f 104/174/31 107/175/31 102/171/31 -f 101/173/32 105/169/32 103/176/32 -f 109/177/33 115/178/33 113/179/33 -f 121/180/34 123/181/34 118/182/34 -f 113/183/35 122/184/35 121/185/35 -f 112/186/36 119/187/36 111/188/36 -f 110/189/37 118/190/37 109/191/37 -f 109/191/38 124/192/38 116/193/38 -f 115/194/39 122/184/39 114/195/39 -f 113/183/40 120/196/40 112/186/40 -f 111/188/41 117/197/41 110/189/41 -f 116/193/42 123/198/42 115/199/42 -f 135/200/43 137/201/43 133/202/43 -f 129/203/34 132/204/34 130/205/34 -f 126/206/31 132/204/31 128/207/31 -f 134/165/34 135/200/34 133/202/34 -f 127/208/32 129/203/32 125/209/32 -f 128/210/30 131/211/30 127/212/30 -f 160/213/32 158/214/32 155/215/32 -f 145/216/31 144/217/31 146/218/31 -f 144/219/31 148/220/31 146/221/31 -f 148/220/31 142/222/31 147/223/31 -f 155/215/34 142/222/34 141/224/34 -f 142/225/31 145/216/31 147/223/31 -f 149/226/29 153/227/29 151/228/29 -f 149/226/29 147/223/29 145/216/29 -f 150/229/33 145/216/33 146/218/33 -f 152/230/30 146/221/30 148/220/30 -f 151/228/34 148/220/34 147/223/34 -f 150/231/30 152/230/30 154/232/30 -f 154/233/44 149/226/44 150/229/44 -f 151/228/45 154/234/45 152/230/45 -f 158/235/29 143/236/29 142/225/29 -f 144/219/30 155/237/30 141/238/30 -f 157/239/33 144/217/33 143/240/33 -f 165/241/33 162/242/33 161/243/33 -f 161/243/32 156/244/32 157/239/32 -f 156/245/32 160/213/32 155/237/32 -f 159/246/32 157/247/32 158/235/32 -f 169/248/31 165/241/31 163/249/31 -f 159/246/29 165/241/29 161/243/29 -f 162/250/30 164/251/30 160/213/30 -f 164/251/34 159/246/34 160/213/34 -f 172/252/30 170/253/30 167/254/30 -f 164/251/31 169/255/31 163/249/31 -f 166/256/31 170/253/31 164/251/31 -f 165/241/31 167/257/31 166/258/31 -f 178/259/32 173/260/32 174/261/32 -f 174/261/34 169/255/34 170/262/34 -f 169/248/29 171/263/29 168/264/29 -f 171/265/33 167/257/33 168/266/33 -f 181/267/29 175/268/29 177/269/29 -f 177/269/32 171/263/32 173/270/32 -f 175/268/32 172/271/32 171/265/32 -f 172/252/32 178/259/32 174/272/32 -f 181/267/31 180/273/31 179/274/31 -f 179/274/33 176/275/33 175/268/33 -f 176/276/30 182/277/30 178/259/30 -f 182/278/46 177/269/46 178/259/46 -f 185/279/32 184/280/32 183/281/32 -f 187/282/29 186/283/29 185/279/29 -f 184/280/30 188/284/30 183/281/30 -f 190/285/33 184/280/33 186/283/33 -f 188/286/28 185/279/28 183/281/28 -f 134/165/28 139/287/28 140/166/28 -f 104/168/29 103/176/29 105/169/29 -f 102/171/30 107/175/30 106/172/30 -f 104/174/31 108/288/31 107/175/31 -f 101/173/32 106/172/32 105/169/32 -f 111/289/33 110/290/33 109/177/33 -f 109/177/33 116/291/33 115/178/33 -f 115/178/33 114/292/33 113/179/33 -f 113/179/33 112/293/33 111/289/33 -f 111/289/33 109/177/33 113/179/33 -f 118/182/34 117/294/34 119/295/34 -f 119/295/34 120/296/34 121/180/34 -f 121/180/34 122/297/34 123/181/34 -f 123/181/34 124/298/34 118/182/34 -f 118/182/34 119/295/34 121/180/34 -f 113/183/35 114/195/35 122/184/35 -f 112/186/36 120/196/36 119/187/36 -f 110/189/37 117/197/37 118/190/37 -f 109/191/38 118/190/38 124/192/38 -f 115/194/39 123/299/39 122/184/39 -f 113/183/40 121/185/40 120/196/40 -f 111/188/41 119/187/41 117/197/41 -f 116/193/42 124/192/42 123/198/42 -f 135/200/43 138/300/43 137/201/43 -f 129/203/34 131/211/34 132/204/34 -f 126/206/31 130/205/31 132/204/31 -f 134/165/34 136/167/34 135/200/34 -f 127/208/32 131/211/32 129/203/32 -f 128/210/30 132/204/30 131/211/30 -f 160/213/32 159/246/32 158/214/32 -f 145/216/31 143/240/31 144/217/31 -f 144/219/31 141/238/31 148/220/31 -f 148/220/31 141/224/31 142/222/31 -f 155/215/34 158/214/34 142/222/34 -f 142/225/31 143/236/31 145/216/31 -f 149/226/29 151/228/29 147/223/29 -f 150/229/33 149/226/33 145/216/33 -f 152/230/30 150/231/30 146/221/30 -f 151/228/34 152/230/34 148/220/34 -f 154/233/44 153/301/44 149/226/44 -f 151/228/45 153/302/45 154/234/45 -f 158/235/29 157/247/29 143/236/29 -f 144/219/30 156/245/30 155/237/30 -f 157/239/33 156/244/33 144/217/33 -f 165/241/33 166/258/33 162/242/33 -f 161/243/32 162/242/32 156/244/32 -f 156/245/32 162/250/32 160/213/32 -f 159/246/32 161/243/32 157/247/32 -f 169/248/31 168/264/31 165/241/31 -f 159/246/29 163/249/29 165/241/29 -f 162/250/30 166/256/30 164/251/30 -f 164/251/34 163/249/34 159/246/34 -f 172/252/30 174/272/30 170/253/30 -f 164/251/31 170/262/31 169/255/31 -f 166/256/31 167/254/31 170/253/31 -f 165/241/31 168/266/31 167/257/31 -f 178/259/32 177/269/32 173/260/32 -f 174/261/34 173/260/34 169/255/34 -f 169/248/29 173/270/29 171/263/29 -f 171/265/33 172/271/33 167/257/33 -f 181/267/29 179/274/29 175/268/29 -f 177/269/32 175/268/32 171/263/32 -f 175/268/32 176/275/32 172/271/32 -f 172/252/32 176/276/32 178/259/32 -f 181/267/31 182/303/31 180/273/31 -f 179/274/33 180/304/33 176/275/33 -f 176/276/30 180/305/30 182/277/30 -f 182/278/46 181/306/46 177/269/46 -f 185/279/32 186/283/32 184/280/32 -f 187/282/29 190/307/29 186/283/29 -f 184/280/30 189/308/30 188/284/30 -f 190/285/33 189/309/33 184/280/33 -f 188/286/28 187/310/28 185/279/28 +f 142/181/40 148/182/40 144/183/40 +f 112/184/41 113/185/41 116/186/41 +f 110/187/42 114/188/42 109/189/42 +f 112/190/43 115/191/43 110/187/43 +f 109/189/44 113/185/44 111/192/44 +f 117/193/45 123/194/45 121/195/45 +f 129/196/46 131/197/46 126/198/46 +f 121/199/47 130/200/47 129/201/47 +f 120/202/48 127/203/48 119/204/48 +f 118/205/49 126/206/49 117/207/49 +f 117/207/50 132/208/50 124/209/50 +f 123/210/51 130/200/51 122/211/51 +f 121/199/52 128/212/52 120/202/52 +f 119/204/53 125/213/53 118/205/53 +f 124/209/54 131/214/54 123/215/54 +f 143/216/55 145/217/55 141/218/55 +f 137/219/46 140/220/46 138/221/46 +f 134/222/43 140/220/43 136/223/43 +f 142/181/46 143/216/46 141/218/46 +f 135/224/44 137/219/44 133/225/44 +f 136/226/42 139/227/42 135/228/42 +f 168/229/44 166/230/44 163/231/44 +f 153/232/43 152/233/43 154/234/43 +f 152/235/43 156/236/43 154/237/43 +f 156/236/43 150/238/43 155/239/43 +f 163/231/46 150/238/46 149/240/46 +f 150/241/43 153/232/43 155/239/43 +f 157/242/41 161/243/41 159/244/41 +f 157/242/41 155/239/41 153/232/41 +f 158/245/45 153/232/45 154/234/45 +f 160/246/42 154/237/42 156/236/42 +f 159/244/46 156/236/46 155/239/46 +f 158/247/42 160/246/42 162/248/42 +f 162/249/56 157/242/56 158/245/56 +f 159/244/57 162/250/57 160/246/57 +f 166/251/41 151/252/41 150/241/41 +f 152/235/42 163/253/42 149/254/42 +f 165/255/45 152/233/45 151/256/45 +f 173/257/45 170/258/45 169/259/45 +f 169/259/44 164/260/44 165/255/44 +f 164/261/44 168/229/44 163/253/44 +f 167/262/44 165/263/44 166/251/44 +f 177/264/43 173/257/43 171/265/43 +f 167/262/41 173/257/41 169/259/41 +f 170/266/42 172/267/42 168/229/42 +f 172/267/46 167/262/46 168/229/46 +f 180/268/42 178/269/42 175/270/42 +f 172/267/43 177/271/43 171/265/43 +f 174/272/43 178/269/43 172/267/43 +f 173/257/43 175/273/43 174/274/43 +f 186/275/44 181/276/44 182/277/44 +f 182/277/46 177/271/46 178/278/46 +f 177/264/41 179/279/41 176/280/41 +f 179/281/45 175/273/45 176/282/45 +f 189/283/41 183/284/41 185/285/41 +f 185/285/44 179/279/44 181/286/44 +f 183/284/44 180/287/44 179/281/44 +f 180/268/44 186/275/44 182/288/44 +f 189/283/43 188/289/43 187/290/43 +f 187/290/45 184/291/45 183/284/45 +f 184/292/42 190/293/42 186/275/42 +f 190/294/58 185/285/58 186/275/58 +f 193/295/44 192/296/44 191/297/44 +f 195/298/41 194/299/41 193/295/41 +f 192/296/42 196/300/42 191/297/42 +f 198/301/45 192/296/45 194/299/45 +f 196/302/40 193/295/40 191/297/40 +f 142/181/40 147/303/40 148/182/40 +f 112/184/41 111/192/41 113/185/41 +f 110/187/42 115/191/42 114/188/42 +f 112/190/43 116/304/43 115/191/43 +f 109/189/44 114/188/44 113/185/44 +f 119/305/45 118/306/45 117/193/45 +f 117/193/45 124/307/45 123/194/45 +f 123/194/45 122/308/45 121/195/45 +f 121/195/45 120/309/45 119/305/45 +f 119/305/45 117/193/45 121/195/45 +f 126/198/46 125/310/46 127/311/46 +f 127/311/46 128/312/46 129/196/46 +f 129/196/46 130/313/46 131/197/46 +f 131/197/46 132/314/46 126/198/46 +f 126/198/46 127/311/46 129/196/46 +f 121/199/47 122/211/47 130/200/47 +f 120/202/48 128/212/48 127/203/48 +f 118/205/49 125/213/49 126/206/49 +f 117/207/50 126/206/50 132/208/50 +f 123/210/51 131/315/51 130/200/51 +f 121/199/52 129/201/52 128/212/52 +f 119/204/53 127/203/53 125/213/53 +f 124/209/54 132/208/54 131/214/54 +f 143/216/55 146/316/55 145/217/55 +f 137/219/46 139/227/46 140/220/46 +f 134/222/43 138/221/43 140/220/43 +f 142/181/46 144/183/46 143/216/46 +f 135/224/44 139/227/44 137/219/44 +f 136/226/42 140/220/42 139/227/42 +f 168/229/44 167/262/44 166/230/44 +f 153/232/43 151/256/43 152/233/43 +f 152/235/43 149/254/43 156/236/43 +f 156/236/43 149/240/43 150/238/43 +f 163/231/46 166/230/46 150/238/46 +f 150/241/43 151/252/43 153/232/43 +f 157/242/41 159/244/41 155/239/41 +f 158/245/45 157/242/45 153/232/45 +f 160/246/42 158/247/42 154/237/42 +f 159/244/46 160/246/46 156/236/46 +f 162/249/56 161/317/56 157/242/56 +f 159/244/57 161/318/57 162/250/57 +f 166/251/41 165/263/41 151/252/41 +f 152/235/42 164/261/42 163/253/42 +f 165/255/45 164/260/45 152/233/45 +f 173/257/45 174/274/45 170/258/45 +f 169/259/44 170/258/44 164/260/44 +f 164/261/44 170/266/44 168/229/44 +f 167/262/44 169/259/44 165/263/44 +f 177/264/43 176/280/43 173/257/43 +f 167/262/41 171/265/41 173/257/41 +f 170/266/42 174/272/42 172/267/42 +f 172/267/46 171/265/46 167/262/46 +f 180/268/42 182/288/42 178/269/42 +f 172/267/43 178/278/43 177/271/43 +f 174/272/43 175/270/43 178/269/43 +f 173/257/43 176/282/43 175/273/43 +f 186/275/44 185/285/44 181/276/44 +f 182/277/46 181/276/46 177/271/46 +f 177/264/41 181/286/41 179/279/41 +f 179/281/45 180/287/45 175/273/45 +f 189/283/41 187/290/41 183/284/41 +f 185/285/44 183/284/44 179/279/44 +f 183/284/44 184/291/44 180/287/44 +f 180/268/44 184/292/44 186/275/44 +f 189/283/43 190/319/43 188/289/43 +f 187/290/45 188/320/45 184/291/45 +f 184/292/42 188/321/42 190/293/42 +f 190/294/58 189/322/58 185/285/58 +f 193/295/44 194/299/44 192/296/44 +f 195/298/41 198/323/41 194/299/41 +f 192/296/42 197/324/42 196/300/42 +f 198/301/45 197/325/45 192/296/45 +f 196/302/40 195/326/40 193/295/40 o LeftArm v 8.099994 3.899998 2.100000 v 8.099994 3.899998 -2.100000 @@ -1086,130 +1126,130 @@ vn 0.8944 0.4472 0.0000 vn 0.8944 -0.4472 0.0000 vn 0.0000 0.7071 0.7071 s off -f 208/311/47 210/312/47 205/313/47 -f 194/314/48 195/315/48 196/316/48 -f 198/317/48 194/318/48 196/319/48 -f 197/320/48 191/321/48 198/317/48 -f 192/322/49 205/313/49 191/321/49 -f 197/320/48 193/323/48 192/324/48 -f 199/325/50 201/326/50 203/327/50 -f 195/315/50 201/326/50 199/325/50 -f 195/315/51 200/328/51 196/316/51 -f 196/319/52 202/329/52 198/317/52 -f 198/317/49 201/326/49 197/320/49 -f 200/330/52 204/331/52 202/329/52 -f 199/325/53 204/332/53 200/328/53 -f 204/333/54 201/326/54 202/329/54 -f 192/324/50 207/334/50 208/335/50 -f 191/336/52 206/337/52 194/318/52 -f 194/314/51 207/338/51 193/339/51 -f 212/340/51 215/341/51 211/342/51 -f 206/343/47 211/342/47 207/338/47 -f 206/337/47 210/312/47 212/344/47 -f 207/334/47 209/345/47 208/335/47 -f 213/346/48 218/347/48 219/348/48 -f 211/342/50 213/346/50 209/345/50 -f 210/312/52 216/349/52 212/344/52 -f 209/345/49 214/350/49 210/312/49 -f 220/351/52 222/352/52 217/353/52 -f 213/346/48 220/354/48 214/350/48 -f 214/350/48 217/353/48 216/349/48 -f 217/355/48 215/341/48 216/356/48 -f 223/357/47 228/358/47 224/359/47 -f 219/360/49 224/359/49 220/354/49 -f 218/347/50 223/361/50 219/348/50 -f 217/355/51 221/362/51 218/363/51 -f 225/364/50 231/365/50 227/366/50 -f 221/367/47 227/366/47 223/361/47 -f 222/368/47 225/364/47 221/362/47 -f 222/352/47 228/358/47 226/369/47 -f 230/370/48 231/365/48 229/371/48 -f 226/372/51 229/371/51 225/364/51 -f 226/369/52 232/373/52 230/374/52 -f 227/366/55 232/375/55 228/358/55 -f 235/376/49 234/377/49 233/378/49 -f 236/379/56 238/380/56 234/377/56 -f 233/378/57 239/381/57 235/376/57 -f 242/382/51 243/383/51 241/384/51 -f 245/385/49 247/386/49 246/387/49 -f 241/388/58 247/386/58 242/389/58 -f 242/389/48 248/390/48 244/391/48 -f 243/383/47 246/387/47 241/384/47 -f 249/392/52 252/393/52 250/394/52 -f 254/395/50 255/396/50 256/397/50 -f 249/398/47 256/397/47 251/399/47 -f 251/399/49 255/396/49 252/393/49 -f 252/393/48 253/400/48 250/401/48 -f 262/402/50 264/403/50 263/404/50 -f 259/405/49 262/402/49 257/406/49 -f 260/407/47 261/408/47 259/405/47 -f 257/406/48 263/409/48 258/410/48 -f 266/411/47 267/412/47 265/413/47 -f 268/414/50 269/415/50 267/412/50 -f 266/411/52 270/416/52 271/417/52 -f 266/411/51 272/418/51 268/414/51 -f 267/412/56 270/419/56 265/413/56 -f 208/311/47 209/345/47 210/312/47 -f 194/314/48 193/339/48 195/315/48 -f 198/317/48 191/336/48 194/318/48 -f 197/320/48 192/322/48 191/321/48 -f 192/322/49 208/311/49 205/313/49 -f 197/320/48 195/315/48 193/323/48 -f 195/315/50 197/320/50 201/326/50 -f 195/315/51 199/325/51 200/328/51 -f 196/319/52 200/330/52 202/329/52 -f 198/317/49 202/329/49 201/326/49 -f 199/325/53 203/420/53 204/332/53 -f 204/333/54 203/421/54 201/326/54 -f 192/324/50 193/323/50 207/334/50 -f 191/336/52 205/422/52 206/337/52 -f 194/314/51 206/343/51 207/338/51 -f 212/340/51 216/356/51 215/341/51 -f 206/343/47 212/340/47 211/342/47 -f 206/337/47 205/422/47 210/312/47 -f 207/334/47 211/342/47 209/345/47 -f 213/346/48 215/341/48 218/347/48 -f 211/342/50 215/341/50 213/346/50 -f 210/312/52 214/350/52 216/349/52 -f 209/345/49 213/346/49 214/350/49 -f 220/351/52 224/423/52 222/352/52 -f 213/346/48 219/360/48 220/354/48 -f 214/350/48 220/351/48 217/353/48 -f 217/355/48 218/363/48 215/341/48 -f 223/357/47 227/366/47 228/358/47 -f 219/360/49 223/357/49 224/359/49 -f 218/347/50 221/367/50 223/361/50 -f 217/355/51 222/368/51 221/362/51 -f 225/364/50 229/371/50 231/365/50 -f 221/367/47 225/364/47 227/366/47 -f 222/368/47 226/372/47 225/364/47 -f 222/352/47 224/423/47 228/358/47 -f 230/370/48 232/424/48 231/365/48 -f 226/372/51 230/425/51 229/371/51 -f 226/369/52 228/358/52 232/373/52 -f 227/366/55 231/426/55 232/375/55 -f 235/376/49 236/379/49 234/377/49 -f 236/379/56 240/427/56 238/380/56 -f 233/378/57 237/428/57 239/381/57 -f 242/382/51 244/429/51 243/383/51 -f 245/385/49 248/390/49 247/386/49 -f 241/388/58 246/430/58 247/386/58 -f 242/389/48 247/386/48 248/390/48 -f 243/383/47 245/385/47 246/387/47 -f 249/392/52 251/399/52 252/393/52 -f 254/395/50 253/431/50 255/396/50 -f 249/398/47 254/432/47 256/397/47 -f 251/399/49 256/397/49 255/396/49 -f 252/393/48 255/396/48 253/400/48 -f 262/402/50 261/408/50 264/403/50 -f 259/405/49 261/408/49 262/402/49 -f 260/407/47 264/433/47 261/408/47 -f 257/406/48 262/402/48 263/409/48 -f 266/411/47 268/414/47 267/412/47 -f 268/414/50 272/434/50 269/415/50 -f 266/411/52 265/413/52 270/416/52 -f 266/411/51 271/435/51 272/418/51 -f 267/412/56 269/436/56 270/419/56 +f 216/327/59 218/328/59 213/329/59 +f 202/330/60 203/331/60 204/332/60 +f 206/333/60 202/334/60 204/335/60 +f 205/336/60 199/337/60 206/333/60 +f 200/338/61 213/329/61 199/337/61 +f 205/336/60 201/339/60 200/340/60 +f 207/341/62 209/342/62 211/343/62 +f 203/331/62 209/342/62 207/341/62 +f 203/331/63 208/344/63 204/332/63 +f 204/335/64 210/345/64 206/333/64 +f 206/333/61 209/342/61 205/336/61 +f 208/346/64 212/347/64 210/345/64 +f 207/341/65 212/348/65 208/344/65 +f 212/349/66 209/342/66 210/345/66 +f 200/340/62 215/350/62 216/351/62 +f 199/352/64 214/353/64 202/334/64 +f 202/330/63 215/354/63 201/355/63 +f 220/356/63 223/357/63 219/358/63 +f 214/359/59 219/358/59 215/354/59 +f 214/353/59 218/328/59 220/360/59 +f 215/350/59 217/361/59 216/351/59 +f 221/362/60 226/363/60 227/364/60 +f 219/358/62 221/362/62 217/361/62 +f 218/328/64 224/365/64 220/360/64 +f 217/361/61 222/366/61 218/328/61 +f 228/367/64 230/368/64 225/369/64 +f 221/362/60 228/370/60 222/366/60 +f 222/366/60 225/369/60 224/365/60 +f 225/371/60 223/357/60 224/372/60 +f 231/373/59 236/374/59 232/375/59 +f 227/376/61 232/375/61 228/370/61 +f 226/363/62 231/377/62 227/364/62 +f 225/371/63 229/378/63 226/379/63 +f 233/380/62 239/381/62 235/382/62 +f 229/383/59 235/382/59 231/377/59 +f 230/384/59 233/380/59 229/378/59 +f 230/368/59 236/374/59 234/385/59 +f 238/386/60 239/381/60 237/387/60 +f 234/388/63 237/387/63 233/380/63 +f 234/385/64 240/389/64 238/390/64 +f 235/382/67 240/391/67 236/374/67 +f 243/392/61 242/393/61 241/394/61 +f 244/395/68 246/396/68 242/393/68 +f 241/394/69 247/397/69 243/392/69 +f 250/398/63 251/399/63 249/400/63 +f 253/401/61 255/402/61 254/403/61 +f 249/404/70 255/402/70 250/405/70 +f 250/405/60 256/406/60 252/407/60 +f 251/399/59 254/403/59 249/400/59 +f 257/408/64 260/409/64 258/410/64 +f 262/411/62 263/412/62 264/413/62 +f 257/414/59 264/413/59 259/415/59 +f 259/415/61 263/412/61 260/409/61 +f 260/409/60 261/416/60 258/417/60 +f 270/418/62 272/419/62 271/420/62 +f 267/421/61 270/418/61 265/422/61 +f 268/423/59 269/424/59 267/421/59 +f 265/422/60 271/425/60 266/426/60 +f 274/427/59 275/428/59 273/429/59 +f 276/430/62 277/431/62 275/428/62 +f 274/427/64 278/432/64 279/433/64 +f 274/427/63 280/434/63 276/430/63 +f 275/428/68 278/435/68 273/429/68 +f 216/327/59 217/361/59 218/328/59 +f 202/330/60 201/355/60 203/331/60 +f 206/333/60 199/352/60 202/334/60 +f 205/336/60 200/338/60 199/337/60 +f 200/338/61 216/327/61 213/329/61 +f 205/336/60 203/331/60 201/339/60 +f 203/331/62 205/336/62 209/342/62 +f 203/331/63 207/341/63 208/344/63 +f 204/335/64 208/346/64 210/345/64 +f 206/333/61 210/345/61 209/342/61 +f 207/341/65 211/436/65 212/348/65 +f 212/349/66 211/437/66 209/342/66 +f 200/340/62 201/339/62 215/350/62 +f 199/352/64 213/438/64 214/353/64 +f 202/330/63 214/359/63 215/354/63 +f 220/356/63 224/372/63 223/357/63 +f 214/359/59 220/356/59 219/358/59 +f 214/353/59 213/438/59 218/328/59 +f 215/350/59 219/358/59 217/361/59 +f 221/362/60 223/357/60 226/363/60 +f 219/358/62 223/357/62 221/362/62 +f 218/328/64 222/366/64 224/365/64 +f 217/361/61 221/362/61 222/366/61 +f 228/367/64 232/439/64 230/368/64 +f 221/362/60 227/376/60 228/370/60 +f 222/366/60 228/367/60 225/369/60 +f 225/371/60 226/379/60 223/357/60 +f 231/373/59 235/382/59 236/374/59 +f 227/376/61 231/373/61 232/375/61 +f 226/363/62 229/383/62 231/377/62 +f 225/371/63 230/384/63 229/378/63 +f 233/380/62 237/387/62 239/381/62 +f 229/383/59 233/380/59 235/382/59 +f 230/384/59 234/388/59 233/380/59 +f 230/368/59 232/439/59 236/374/59 +f 238/386/60 240/440/60 239/381/60 +f 234/388/63 238/441/63 237/387/63 +f 234/385/64 236/374/64 240/389/64 +f 235/382/67 239/442/67 240/391/67 +f 243/392/61 244/395/61 242/393/61 +f 244/395/68 248/443/68 246/396/68 +f 241/394/69 245/444/69 247/397/69 +f 250/398/63 252/445/63 251/399/63 +f 253/401/61 256/406/61 255/402/61 +f 249/404/70 254/446/70 255/402/70 +f 250/405/60 255/402/60 256/406/60 +f 251/399/59 253/401/59 254/403/59 +f 257/408/64 259/415/64 260/409/64 +f 262/411/62 261/447/62 263/412/62 +f 257/414/59 262/448/59 264/413/59 +f 259/415/61 264/413/61 263/412/61 +f 260/409/60 263/412/60 261/416/60 +f 270/418/62 269/424/62 272/419/62 +f 267/421/61 269/424/61 270/418/61 +f 268/423/59 272/449/59 269/424/59 +f 265/422/60 270/418/60 271/425/60 +f 274/427/59 276/430/59 275/428/59 +f 276/430/62 280/450/62 277/431/62 +f 274/427/64 273/429/64 278/432/64 +f 274/427/63 279/451/63 280/434/63 +f 275/428/68 277/452/68 278/435/68 o Helmet v 5.249990 -8.200001 -4.200000 v 5.249990 -8.200001 4.200000 @@ -1761,262 +1801,262 @@ vn -0.7071 0.5000 0.5000 vn 0.9578 0.0000 -0.2873 vn 0.9578 0.0000 0.2873 s off -f 276/437/59 283/438/59 275/439/59 -f 277/440/60 286/441/60 278/442/60 -f 273/443/61 282/444/61 274/445/61 -f 279/446/62 288/447/62 280/448/62 -f 281/449/63 278/450/63 286/451/63 -f 274/452/64 284/453/64 276/454/64 -f 287/455/65 275/456/65 283/457/65 -f 280/458/66 285/459/66 277/460/66 -f 285/459/67 296/461/67 293/462/67 -f 283/457/68 295/463/68 287/455/68 -f 286/441/69 293/464/69 294/465/69 -f 281/466/70 290/467/70 282/444/70 -f 282/468/71 292/469/71 284/453/71 -f 287/470/72 296/461/72 288/447/72 -f 286/451/73 289/471/73 281/449/73 -f 292/472/74 283/438/74 284/473/74 -f 299/474/75 297/475/75 298/476/75 -f 299/474/76 277/440/76 278/442/76 -f 300/477/77 273/443/77 274/445/77 -f 275/439/78 300/478/78 276/437/78 -f 298/479/79 279/446/79 280/448/79 -f 279/480/80 297/481/80 275/456/80 -f 280/458/81 277/460/81 298/482/81 -f 273/483/82 299/484/82 278/450/82 -f 274/452/83 276/454/83 300/485/83 -f 306/486/63 309/487/63 301/488/63 -f 305/489/60 314/490/60 306/486/60 -f 301/491/61 310/492/61 302/493/61 -f 316/494/66 305/495/66 308/496/66 -f 310/492/64 304/497/64 302/493/64 -f 307/498/62 316/494/62 308/496/62 -f 312/499/59 303/500/59 304/501/59 -f 303/500/65 315/502/65 307/503/65 -f 317/504/84 319/505/84 318/506/84 -f 313/507/85 319/505/85 314/490/85 -f 315/508/86 318/509/86 316/494/86 -f 316/494/87 318/510/87 313/511/87 -f 309/512/88 320/513/88 310/492/88 -f 309/487/89 314/490/89 319/514/89 -f 320/515/90 311/516/90 312/499/90 -f 310/492/91 320/517/91 312/518/91 -f 315/502/92 311/516/92 317/519/92 -f 326/520/60 328/521/60 325/522/60 -f 323/523/84 328/521/84 324/524/84 -f 321/525/76 327/526/76 326/520/76 -f 324/527/62 327/526/62 322/528/62 -f 323/529/61 326/520/61 325/522/61 -f 435/530/76 425/531/76 428/532/76 -f 422/533/90 434/534/90 423/535/90 -f 433/536/62 427/537/62 424/538/62 -f 406/539/90 418/540/90 407/541/90 -f 417/542/85 418/543/85 414/544/85 -f 408/545/62 420/546/62 411/547/62 -f 409/548/76 419/549/76 414/544/76 -f 412/550/78 409/548/78 410/551/78 -f 346/552/93 335/553/93 340/554/93 -f 344/555/94 339/556/94 338/557/94 -f 342/558/61 337/559/61 336/560/61 -f 345/561/62 340/554/62 339/556/62 -f 343/562/95 338/563/95 337/559/95 -f 341/564/96 336/560/96 335/553/96 -f 349/565/95 332/566/95 331/567/95 -f 347/568/96 330/569/96 329/570/96 -f 352/571/93 329/570/93 334/572/93 -f 350/573/94 333/574/94 332/575/94 -f 348/576/61 331/567/61 330/569/61 -f 351/577/62 334/572/62 333/574/62 -f 362/578/59 356/579/59 353/580/59 -f 367/581/62 361/582/62 366/583/62 -f 356/584/75 363/585/75 364/586/75 -f 355/587/61 357/588/61 354/589/61 -f 359/590/60 365/591/60 358/592/60 -f 356/579/64 354/589/64 353/580/64 -f 358/592/63 360/593/63 359/590/63 -f 366/583/66 368/594/66 367/581/66 -f 363/595/65 361/582/65 364/596/65 -f 362/597/84 353/598/84 354/599/84 -f 370/600/59 371/601/59 369/602/59 -f 373/603/60 375/604/60 374/605/60 -f 370/606/65 376/607/65 372/608/65 -f 369/609/64 373/610/64 374/611/64 -f 372/612/78 373/613/78 371/614/78 -f 369/602/90 375/604/90 370/600/90 -f 383/615/62 381/616/62 382/617/62 -f 380/618/84 383/615/84 378/619/84 -f 377/620/75 381/616/75 379/621/75 -f 379/622/60 384/623/60 380/624/60 -f 377/625/59 383/615/59 382/617/59 -f 391/626/62 389/627/62 390/628/62 -f 387/629/60 392/630/60 388/631/60 -f 385/632/59 391/626/59 390/628/59 -f 388/633/84 391/626/84 386/634/84 -f 385/635/75 389/627/75 387/636/75 -f 394/637/97 404/638/97 396/639/97 -f 399/640/75 397/641/75 398/642/75 -f 396/639/62 399/640/62 394/637/62 -f 393/643/61 397/644/61 395/645/61 -f 395/645/60 400/646/60 396/639/60 -f 394/637/59 398/647/59 393/648/59 -f 395/645/98 402/649/98 393/643/98 -f 395/645/60 404/638/60 401/650/60 -f 393/648/59 403/651/59 394/637/59 -f 420/546/99 412/550/99 411/547/99 -f 413/652/100 409/548/100 414/544/100 -f 416/653/101 406/539/101 405/654/101 -f 408/545/102 418/655/102 417/656/102 -f 405/654/61 413/652/61 416/653/61 -f 436/657/99 428/532/99 427/537/99 -f 433/536/102 423/658/102 434/659/102 -f 421/660/101 431/661/101 422/533/101 -f 426/662/100 430/663/100 429/664/100 -f 426/662/61 432/665/61 421/660/61 -f 437/666/61 439/667/61 438/668/61 -f 437/666/60 444/669/60 440/670/60 -f 438/668/59 443/671/59 442/672/59 -f 440/670/84 443/673/84 439/667/84 -f 438/668/75 441/674/75 437/666/75 -f 445/675/61 448/676/61 447/677/61 -f 448/676/63 449/678/63 447/677/63 -f 452/679/61 453/680/61 451/681/61 -f 456/682/61 457/683/61 455/684/61 -f 459/685/61 461/686/61 460/687/61 -f 462/688/103 463/689/103 461/686/103 -f 460/687/104 465/690/104 459/685/104 -f 276/437/59 284/473/59 283/438/59 -f 277/440/60 285/691/60 286/441/60 -f 273/443/61 281/466/61 282/444/61 -f 279/446/62 287/470/62 288/447/62 -f 281/449/63 273/483/63 278/450/63 -f 274/452/64 282/468/64 284/453/64 -f 287/455/65 279/480/65 275/456/65 -f 280/458/66 288/692/66 285/459/66 -f 285/459/67 288/692/67 296/461/67 -f 283/457/68 291/693/68 295/463/68 -f 286/441/69 285/691/69 293/464/69 -f 281/466/70 289/694/70 290/467/70 -f 282/468/71 290/467/71 292/469/71 -f 287/470/72 295/695/72 296/461/72 -f 286/451/73 294/465/73 289/471/73 -f 292/472/74 291/693/74 283/438/74 -f 299/474/75 300/696/75 297/475/75 -f 299/474/76 298/476/76 277/440/76 -f 300/477/77 299/697/77 273/443/77 -f 275/439/78 297/698/78 300/478/78 -f 298/479/79 297/699/79 279/446/79 -f 306/486/63 314/490/63 309/487/63 -f 305/489/60 313/507/60 314/490/60 -f 301/491/61 309/512/61 310/492/61 -f 316/494/66 313/511/66 305/495/66 -f 310/492/64 312/518/64 304/497/64 -f 307/498/62 315/508/62 316/494/62 -f 312/499/59 311/516/59 303/500/59 -f 303/500/65 311/516/65 315/502/65 -f 317/504/84 320/700/84 319/505/84 -f 313/507/85 318/506/85 319/505/85 -f 315/508/86 317/701/86 318/509/86 -f 309/512/88 319/702/88 320/513/88 -f 320/515/90 317/703/90 311/516/90 -f 326/520/60 327/526/60 328/521/60 -f 323/523/84 325/522/84 328/521/84 -f 321/525/76 322/704/76 327/526/76 -f 324/527/62 328/521/62 327/526/62 -f 323/529/61 321/705/61 326/520/61 -f 435/530/76 430/663/76 425/531/76 -f 422/533/90 431/661/90 434/534/90 -f 433/536/62 436/657/62 427/537/62 -f 406/539/90 415/706/90 418/540/90 -f 418/543/85 415/707/85 416/708/85 -f 416/708/85 413/709/85 418/543/85 -f 413/709/85 414/544/85 418/543/85 -f 414/544/85 419/549/85 420/710/85 -f 420/710/85 417/542/85 414/544/85 -f 408/545/62 417/656/62 420/546/62 -f 409/548/76 412/550/76 419/549/76 -f 410/551/78 405/711/78 406/712/78 -f 406/712/78 407/713/78 410/551/78 -f 407/713/78 408/714/78 410/551/78 -f 408/714/78 411/715/78 410/551/78 -f 411/715/78 412/550/78 410/551/78 -f 346/552/93 341/564/93 335/553/93 -f 344/555/94 345/561/94 339/556/94 -f 342/558/61 343/562/61 337/559/61 -f 345/561/62 346/552/62 340/554/62 -f 343/562/95 344/716/95 338/563/95 -f 341/564/96 342/558/96 336/560/96 -f 349/565/95 350/717/95 332/566/95 -f 347/568/96 348/576/96 330/569/96 -f 352/571/93 347/568/93 329/570/93 -f 350/573/94 351/577/94 333/574/94 -f 348/576/61 349/565/61 331/567/61 -f 351/577/62 352/571/62 334/572/62 -f 362/578/59 363/718/59 356/579/59 -f 367/581/62 364/596/62 361/582/62 -f 364/586/75 367/719/75 360/720/75 -f 367/719/75 368/594/75 360/720/75 -f 368/594/75 359/590/75 360/720/75 -f 360/720/75 355/721/75 364/586/75 -f 355/721/75 356/584/75 364/586/75 -f 355/587/61 360/593/61 357/588/61 -f 359/590/60 368/594/60 365/591/60 -f 356/579/64 355/587/64 354/589/64 -f 358/592/63 357/588/63 360/593/63 -f 366/583/66 365/591/66 368/594/66 -f 363/595/65 362/722/65 361/582/65 -f 354/599/84 357/723/84 366/724/84 -f 357/723/84 358/592/84 366/724/84 -f 358/592/84 365/591/84 366/724/84 -f 366/724/84 361/725/84 354/599/84 -f 361/725/84 362/597/84 354/599/84 -f 370/600/59 372/726/59 371/601/59 -f 373/603/60 376/727/60 375/604/60 -f 370/606/65 375/728/65 376/607/65 -f 369/609/64 371/729/64 373/610/64 -f 372/612/78 376/730/78 373/613/78 -f 369/602/90 374/605/90 375/604/90 -f 383/615/62 384/623/62 381/616/62 -f 380/618/84 384/623/84 383/615/84 -f 377/620/75 382/617/75 381/616/75 -f 379/622/60 381/616/60 384/623/60 -f 377/625/59 378/731/59 383/615/59 -f 391/626/62 392/630/62 389/627/62 -f 387/629/60 389/627/60 392/630/60 -f 385/632/59 386/732/59 391/626/59 -f 388/633/84 392/630/84 391/626/84 -f 385/635/75 390/628/75 389/627/75 -f 394/637/97 403/651/97 404/638/97 -f 399/640/75 400/646/75 397/641/75 -f 396/639/62 400/646/62 399/640/62 -f 393/643/61 398/733/61 397/644/61 -f 395/645/60 397/644/60 400/646/60 -f 394/637/59 399/640/59 398/647/59 -f 395/645/98 401/650/98 402/649/98 -f 395/645/60 396/639/60 404/638/60 -f 393/648/59 402/734/59 403/651/59 -f 420/546/99 419/549/99 412/550/99 -f 413/652/100 410/735/100 409/548/100 -f 416/653/101 415/706/101 406/539/101 -f 408/545/102 407/736/102 418/655/102 -f 405/654/61 410/735/61 413/652/61 -f 436/657/99 435/530/99 428/532/99 -f 433/536/102 424/538/102 423/658/102 -f 421/660/101 432/665/101 431/661/101 -f 426/662/100 425/531/100 430/663/100 -f 426/662/61 429/664/61 432/665/61 -f 437/666/61 440/670/61 439/667/61 -f 437/666/60 441/737/60 444/669/60 -f 438/668/59 439/667/59 443/671/59 -f 440/670/84 444/738/84 443/673/84 -f 438/668/75 442/739/75 441/674/75 -f 445/675/61 446/740/61 448/676/61 -f 448/676/63 450/741/63 449/678/63 -f 452/679/61 454/742/61 453/680/61 -f 456/682/61 458/743/61 457/683/61 -f 459/685/61 462/688/61 461/686/61 -f 462/688/103 464/744/103 463/689/103 -f 460/687/104 466/745/104 465/690/104 +f 284/453/71 291/454/71 283/455/71 +f 285/456/72 294/457/72 286/458/72 +f 281/459/73 290/460/73 282/461/73 +f 287/462/74 296/463/74 288/464/74 +f 289/465/75 286/466/75 294/467/75 +f 282/468/76 292/469/76 284/470/76 +f 295/471/77 283/472/77 291/473/77 +f 288/474/78 293/475/78 285/476/78 +f 293/475/79 304/477/79 301/478/79 +f 291/473/80 303/479/80 295/471/80 +f 294/457/81 301/480/81 302/481/81 +f 289/482/82 298/483/82 290/460/82 +f 290/484/83 300/485/83 292/469/83 +f 295/486/84 304/477/84 296/463/84 +f 294/467/85 297/487/85 289/465/85 +f 300/488/86 291/454/86 292/489/86 +f 307/490/87 305/491/87 306/492/87 +f 307/490/88 285/456/88 286/458/88 +f 308/493/89 281/459/89 282/461/89 +f 283/455/90 308/494/90 284/453/90 +f 306/495/91 287/462/91 288/464/91 +f 287/496/92 305/497/92 283/472/92 +f 288/474/93 285/476/93 306/498/93 +f 281/499/94 307/500/94 286/466/94 +f 282/468/95 284/470/95 308/501/95 +f 314/502/75 317/503/75 309/504/75 +f 313/505/72 322/506/72 314/502/72 +f 309/507/73 318/508/73 310/509/73 +f 324/510/78 313/511/78 316/512/78 +f 318/508/76 312/513/76 310/509/76 +f 315/514/74 324/510/74 316/512/74 +f 320/515/71 311/516/71 312/517/71 +f 311/516/77 323/518/77 315/519/77 +f 325/520/96 327/521/96 326/522/96 +f 321/523/97 327/521/97 322/506/97 +f 323/524/98 326/525/98 324/510/98 +f 324/510/99 326/526/99 321/527/99 +f 317/528/100 328/529/100 318/508/100 +f 317/503/101 322/506/101 327/530/101 +f 328/531/102 319/532/102 320/515/102 +f 318/508/103 328/533/103 320/534/103 +f 323/518/104 319/532/104 325/535/104 +f 334/536/72 336/537/72 333/538/72 +f 331/539/96 336/537/96 332/540/96 +f 329/541/88 335/542/88 334/536/88 +f 332/543/74 335/542/74 330/544/74 +f 331/545/73 334/536/73 333/538/73 +f 443/546/88 433/547/88 436/548/88 +f 430/549/102 442/550/102 431/551/102 +f 441/552/74 435/553/74 432/554/74 +f 414/555/102 426/556/102 415/557/102 +f 425/558/97 426/559/97 422/560/97 +f 416/561/74 428/562/74 419/563/74 +f 417/564/88 427/565/88 422/560/88 +f 420/566/90 417/564/90 418/567/90 +f 354/568/105 343/569/105 348/570/105 +f 352/571/106 347/572/106 346/573/106 +f 350/574/73 345/575/73 344/576/73 +f 353/577/74 348/570/74 347/572/74 +f 351/578/107 346/579/107 345/575/107 +f 349/580/108 344/576/108 343/569/108 +f 357/581/107 340/582/107 339/583/107 +f 355/584/108 338/585/108 337/586/108 +f 360/587/105 337/586/105 342/588/105 +f 358/589/106 341/590/106 340/591/106 +f 356/592/73 339/583/73 338/585/73 +f 359/593/74 342/588/74 341/590/74 +f 370/594/71 364/595/71 361/596/71 +f 375/597/74 369/598/74 374/599/74 +f 364/600/87 371/601/87 372/602/87 +f 363/603/73 365/604/73 362/605/73 +f 367/606/72 373/607/72 366/608/72 +f 364/595/76 362/605/76 361/596/76 +f 366/608/75 368/609/75 367/606/75 +f 374/599/78 376/610/78 375/597/78 +f 371/611/77 369/598/77 372/612/77 +f 370/613/96 361/614/96 362/615/96 +f 378/616/71 379/617/71 377/618/71 +f 381/619/72 383/620/72 382/621/72 +f 378/622/77 384/623/77 380/624/77 +f 377/625/76 381/626/76 382/627/76 +f 380/628/90 381/629/90 379/630/90 +f 377/618/102 383/620/102 378/616/102 +f 391/631/74 389/632/74 390/633/74 +f 388/634/96 391/631/96 386/635/96 +f 385/636/87 389/632/87 387/637/87 +f 387/638/72 392/639/72 388/640/72 +f 385/641/71 391/631/71 390/633/71 +f 399/642/74 397/643/74 398/644/74 +f 395/645/72 400/646/72 396/647/72 +f 393/648/71 399/642/71 398/644/71 +f 396/649/96 399/642/96 394/650/96 +f 393/651/87 397/643/87 395/652/87 +f 402/653/109 412/654/109 404/655/109 +f 407/656/87 405/657/87 406/658/87 +f 404/655/74 407/656/74 402/653/74 +f 401/659/73 405/660/73 403/661/73 +f 403/661/72 408/662/72 404/655/72 +f 402/653/71 406/663/71 401/664/71 +f 403/661/110 410/665/110 401/659/110 +f 403/661/72 412/654/72 409/666/72 +f 401/664/71 411/667/71 402/653/71 +f 428/562/111 420/566/111 419/563/111 +f 421/668/112 417/564/112 422/560/112 +f 424/669/113 414/555/113 413/670/113 +f 416/561/114 426/671/114 425/672/114 +f 413/670/73 421/668/73 424/669/73 +f 444/673/111 436/548/111 435/553/111 +f 441/552/114 431/674/114 442/675/114 +f 429/676/113 439/677/113 430/549/113 +f 434/678/112 438/679/112 437/680/112 +f 434/678/73 440/681/73 429/676/73 +f 445/682/73 447/683/73 446/684/73 +f 445/682/72 452/685/72 448/686/72 +f 446/684/71 451/687/71 450/688/71 +f 448/686/96 451/689/96 447/683/96 +f 446/684/87 449/690/87 445/682/87 +f 453/691/73 456/692/73 455/693/73 +f 456/692/75 457/694/75 455/693/75 +f 460/695/73 461/696/73 459/697/73 +f 464/698/73 465/699/73 463/700/73 +f 467/701/73 469/702/73 468/703/73 +f 470/704/115 471/705/115 469/702/115 +f 468/703/116 473/706/116 467/701/116 +f 284/453/71 292/489/71 291/454/71 +f 285/456/72 293/707/72 294/457/72 +f 281/459/73 289/482/73 290/460/73 +f 287/462/74 295/486/74 296/463/74 +f 289/465/75 281/499/75 286/466/75 +f 282/468/76 290/484/76 292/469/76 +f 295/471/77 287/496/77 283/472/77 +f 288/474/78 296/708/78 293/475/78 +f 293/475/79 296/708/79 304/477/79 +f 291/473/80 299/709/80 303/479/80 +f 294/457/81 293/707/81 301/480/81 +f 289/482/82 297/710/82 298/483/82 +f 290/484/83 298/483/83 300/485/83 +f 295/486/84 303/711/84 304/477/84 +f 294/467/85 302/481/85 297/487/85 +f 300/488/86 299/709/86 291/454/86 +f 307/490/87 308/712/87 305/491/87 +f 307/490/88 306/492/88 285/456/88 +f 308/493/89 307/713/89 281/459/89 +f 283/455/90 305/714/90 308/494/90 +f 306/495/91 305/715/91 287/462/91 +f 314/502/75 322/506/75 317/503/75 +f 313/505/72 321/523/72 322/506/72 +f 309/507/73 317/528/73 318/508/73 +f 324/510/78 321/527/78 313/511/78 +f 318/508/76 320/534/76 312/513/76 +f 315/514/74 323/524/74 324/510/74 +f 320/515/71 319/532/71 311/516/71 +f 311/516/77 319/532/77 323/518/77 +f 325/520/96 328/716/96 327/521/96 +f 321/523/97 326/522/97 327/521/97 +f 323/524/98 325/717/98 326/525/98 +f 317/528/100 327/718/100 328/529/100 +f 328/531/102 325/719/102 319/532/102 +f 334/536/72 335/542/72 336/537/72 +f 331/539/96 333/538/96 336/537/96 +f 329/541/88 330/720/88 335/542/88 +f 332/543/74 336/537/74 335/542/74 +f 331/545/73 329/721/73 334/536/73 +f 443/546/88 438/679/88 433/547/88 +f 430/549/102 439/677/102 442/550/102 +f 441/552/74 444/673/74 435/553/74 +f 414/555/102 423/722/102 426/556/102 +f 426/559/97 423/723/97 424/724/97 +f 424/724/97 421/725/97 426/559/97 +f 421/725/97 422/560/97 426/559/97 +f 422/560/97 427/565/97 428/726/97 +f 428/726/97 425/558/97 422/560/97 +f 416/561/74 425/672/74 428/562/74 +f 417/564/88 420/566/88 427/565/88 +f 418/567/90 413/727/90 414/728/90 +f 414/728/90 415/729/90 418/567/90 +f 415/729/90 416/730/90 418/567/90 +f 416/730/90 419/731/90 418/567/90 +f 419/731/90 420/566/90 418/567/90 +f 354/568/105 349/580/105 343/569/105 +f 352/571/106 353/577/106 347/572/106 +f 350/574/73 351/578/73 345/575/73 +f 353/577/74 354/568/74 348/570/74 +f 351/578/107 352/732/107 346/579/107 +f 349/580/108 350/574/108 344/576/108 +f 357/581/107 358/733/107 340/582/107 +f 355/584/108 356/592/108 338/585/108 +f 360/587/105 355/584/105 337/586/105 +f 358/589/106 359/593/106 341/590/106 +f 356/592/73 357/581/73 339/583/73 +f 359/593/74 360/587/74 342/588/74 +f 370/594/71 371/734/71 364/595/71 +f 375/597/74 372/612/74 369/598/74 +f 372/602/87 375/735/87 368/736/87 +f 375/735/87 376/610/87 368/736/87 +f 376/610/87 367/606/87 368/736/87 +f 368/736/87 363/737/87 372/602/87 +f 363/737/87 364/600/87 372/602/87 +f 363/603/73 368/609/73 365/604/73 +f 367/606/72 376/610/72 373/607/72 +f 364/595/76 363/603/76 362/605/76 +f 366/608/75 365/604/75 368/609/75 +f 374/599/78 373/607/78 376/610/78 +f 371/611/77 370/738/77 369/598/77 +f 362/615/96 365/739/96 374/740/96 +f 365/739/96 366/608/96 374/740/96 +f 366/608/96 373/607/96 374/740/96 +f 374/740/96 369/741/96 362/615/96 +f 369/741/96 370/613/96 362/615/96 +f 378/616/71 380/742/71 379/617/71 +f 381/619/72 384/743/72 383/620/72 +f 378/622/77 383/744/77 384/623/77 +f 377/625/76 379/745/76 381/626/76 +f 380/628/90 384/746/90 381/629/90 +f 377/618/102 382/621/102 383/620/102 +f 391/631/74 392/639/74 389/632/74 +f 388/634/96 392/639/96 391/631/96 +f 385/636/87 390/633/87 389/632/87 +f 387/638/72 389/632/72 392/639/72 +f 385/641/71 386/747/71 391/631/71 +f 399/642/74 400/646/74 397/643/74 +f 395/645/72 397/643/72 400/646/72 +f 393/648/71 394/748/71 399/642/71 +f 396/649/96 400/646/96 399/642/96 +f 393/651/87 398/644/87 397/643/87 +f 402/653/109 411/667/109 412/654/109 +f 407/656/87 408/662/87 405/657/87 +f 404/655/74 408/662/74 407/656/74 +f 401/659/73 406/749/73 405/660/73 +f 403/661/72 405/660/72 408/662/72 +f 402/653/71 407/656/71 406/663/71 +f 403/661/110 409/666/110 410/665/110 +f 403/661/72 404/655/72 412/654/72 +f 401/664/71 410/750/71 411/667/71 +f 428/562/111 427/565/111 420/566/111 +f 421/668/112 418/751/112 417/564/112 +f 424/669/113 423/722/113 414/555/113 +f 416/561/114 415/752/114 426/671/114 +f 413/670/73 418/751/73 421/668/73 +f 444/673/111 443/546/111 436/548/111 +f 441/552/114 432/554/114 431/674/114 +f 429/676/113 440/681/113 439/677/113 +f 434/678/112 433/547/112 438/679/112 +f 434/678/73 437/680/73 440/681/73 +f 445/682/73 448/686/73 447/683/73 +f 445/682/72 449/753/72 452/685/72 +f 446/684/71 447/683/71 451/687/71 +f 448/686/96 452/754/96 451/689/96 +f 446/684/87 450/755/87 449/690/87 +f 453/691/73 454/756/73 456/692/73 +f 456/692/75 458/757/75 457/694/75 +f 460/695/73 462/758/73 461/696/73 +f 464/698/73 466/759/73 465/699/73 +f 467/701/73 470/704/73 469/702/73 +f 470/704/115 472/760/115 471/705/115 +f 468/703/116 474/761/116 473/706/116 o Chest v 4.199992 -0.300001 2.100000 v 4.199992 -0.300001 -2.100000 @@ -2959,535 +2999,535 @@ vn -0.9774 -0.2087 -0.0348 vn 0.0000 0.9864 0.1646 vn -0.8729 -0.2182 0.4364 s off -f 470/746/105 538/747/105 522/748/105 -f 522/749/106 541/750/106 529/751/106 -f 541/752/107 521/753/107 529/754/107 -f 526/755/106 543/756/106 532/757/106 -f 483/758/106 488/759/106 484/760/106 -f 480/761/108 482/762/108 479/763/108 -f 477/764/109 482/762/109 478/765/109 -f 476/766/106 480/761/106 475/767/106 -f 502/768/110 505/769/110 501/770/110 -f 501/771/111 503/772/111 499/773/111 -f 486/774/109 489/775/109 485/776/109 -f 490/777/112 487/778/112 489/775/112 -f 484/779/106 491/780/106 476/781/106 -f 478/782/109 494/783/109 486/784/109 -f 475/785/106 497/786/106 483/787/106 -f 485/788/109 496/789/109 477/790/109 -f 497/786/105 496/789/105 498/791/105 -f 491/780/107 494/783/107 492/792/107 -f 491/780/113 482/762/113 481/793/113 -f 476/766/106 491/794/106 481/793/106 -f 478/765/109 482/762/109 492/795/109 -f 486/784/109 494/783/109 490/796/109 -f 490/797/114 493/798/114 488/799/114 -f 484/779/106 488/800/106 493/798/106 -f 485/776/109 489/775/109 498/801/109 -f 487/778/115 498/791/115 489/775/115 -f 483/758/106 497/802/106 487/778/106 -f 477/790/109 496/789/109 479/803/109 -f 480/761/116 496/789/116 495/804/116 -f 475/785/106 480/805/106 495/804/106 -f 499/806/117 508/807/117 500/808/117 -f 501/771/118 505/769/118 504/809/118 -f 499/773/119 503/772/119 507/810/119 -f 500/811/120 511/812/120 509/813/120 -f 502/814/120 513/815/120 512/816/120 -f 500/808/121 508/807/121 510/817/121 -f 502/768/122 512/816/122 506/818/122 -f 467/819/112 517/820/112 474/821/112 -f 468/822/105 514/823/105 467/819/105 -f 469/824/108 515/825/108 468/822/108 -f 474/826/107 516/827/107 469/824/107 -f 518/828/105 540/829/105 526/830/105 -f 539/831/107 473/832/107 525/833/107 -f 542/834/106 525/835/106 531/836/106 -f 538/747/108 535/837/108 539/831/108 -f 540/829/108 537/838/108 541/752/108 -f 530/839/106 545/840/106 531/841/106 -f 532/842/106 547/843/106 533/844/106 -f 549/845/107 524/846/107 472/847/107 -f 553/848/106 530/849/106 524/850/106 -f 533/851/106 554/852/106 527/853/106 -f 551/854/107 528/855/107 520/856/107 -f 523/857/105 548/858/105 471/859/105 -f 555/860/106 523/861/106 528/862/106 -f 527/863/105 550/864/105 519/865/105 -f 544/866/106 530/849/106 556/867/106 -f 533/851/106 547/868/106 557/869/106 -f 532/757/106 543/756/106 546/870/106 -f 531/836/106 545/871/106 542/834/106 -f 544/872/114 564/873/114 560/874/114 -f 545/840/113 558/875/113 542/834/113 -f 547/843/115 565/876/115 557/869/115 -f 544/877/107 561/878/107 545/840/107 -f 546/879/116 559/880/116 562/881/116 -f 546/879/105 563/882/105 547/843/105 -f 538/883/108 539/884/108 558/875/108 -f 554/885/112 551/854/112 550/864/112 -f 549/845/112 552/886/112 553/887/112 -f 564/873/112 556/867/112 553/848/112 -f 562/881/109 569/888/109 563/882/109 -f 560/889/109 567/890/109 561/878/109 -f 561/878/123 567/891/123 558/875/123 -f 562/881/123 559/880/123 568/892/123 -f 558/875/123 568/892/123 559/880/123 -f 565/876/124 563/882/124 569/893/124 -f 564/873/124 566/894/124 560/874/124 -f 564/873/124 569/893/124 566/894/124 -f 573/895/107 472/896/107 473/897/107 -f 519/898/105 574/899/105 518/900/105 -f 471/901/105 570/902/105 470/903/105 -f 577/904/107 520/905/107 521/906/107 -f 571/907/106 573/895/106 570/902/106 -f 574/899/106 576/908/106 577/904/106 -f 534/909/125 573/895/125 535/837/125 -f 536/910/125 577/904/125 537/838/125 -f 550/864/126 576/908/126 575/911/126 -f 572/912/126 548/858/126 549/845/126 -f 471/859/105 548/858/105 571/913/105 -f 519/865/105 550/864/105 575/914/105 -f 520/856/107 576/915/107 551/854/107 -f 472/847/107 572/916/107 549/845/107 -f 473/832/107 535/837/107 573/917/107 -f 470/746/105 570/918/105 534/909/105 -f 521/753/107 537/838/107 577/919/107 -f 518/828/105 574/920/105 536/910/105 -f 467/921/106 469/824/106 468/822/106 -f 578/922/108 581/923/108 579/924/108 -f 580/925/106 583/926/106 581/927/106 -f 587/928/107 579/929/107 581/930/107 -f 586/931/109 578/932/109 579/933/109 -f 585/934/112 587/928/112 584/935/112 -f 583/926/126 584/935/126 587/928/126 -f 584/935/105 582/936/105 580/937/105 -f 620/938/105 624/939/105 621/940/105 -f 627/941/127 630/942/127 626/943/127 -f 590/944/128 593/945/128 592/946/128 -f 625/947/129 623/948/129 635/949/129 -f 607/950/106 609/951/106 611/952/106 -f 593/945/130 594/953/130 592/946/130 -f 614/954/108 616/955/108 615/956/108 -f 610/957/131 589/958/131 606/959/131 -f 595/960/132 596/961/132 594/962/132 -f 612/963/105 617/964/105 614/954/105 -f 609/965/112 589/958/112 608/966/112 -f 596/961/133 599/967/133 598/968/133 -f 613/969/112 619/970/112 612/963/112 -f 624/939/106 626/971/106 625/972/106 -f 598/968/134 601/973/134 600/974/134 -f 615/975/107 618/976/107 613/969/107 -f 606/959/108 611/977/108 610/978/108 -f 601/973/135 602/979/135 600/974/135 -f 599/980/107 597/981/107 595/982/107 -f 588/983/105 606/959/105 589/958/105 -f 603/984/136 604/985/136 602/979/136 -f 622/986/109 621/940/109 623/948/109 -f 623/948/137 626/987/137 622/986/137 -f 605/988/138 590/944/138 604/985/138 -f 596/989/105 600/990/105 604/991/105 -f 628/992/112 631/993/112 629/994/112 -f 620/938/109 628/995/109 629/994/109 -f 620/938/105 631/993/105 627/996/105 -f 622/986/114 630/997/114 628/998/114 -f 632/999/108 635/1000/108 633/1001/108 -f 624/1002/139 635/1000/139 634/1003/139 -f 621/940/109 633/1004/109 623/948/109 -f 621/940/105 634/1003/105 632/999/105 -f 638/1005/107 636/1006/107 637/1007/107 -f 654/1008/106 652/1009/106 653/1010/106 -f 637/1007/112 642/1011/112 643/1012/112 -f 638/1005/108 640/1013/108 639/1014/108 -f 637/1007/140 641/1015/140 638/1005/140 -f 639/1014/106 642/1016/106 636/1006/106 -f 650/1017/106 648/1018/106 649/1019/106 -f 646/1020/108 651/1021/108 647/1022/108 -f 645/1023/112 649/1024/112 644/1025/112 -f 647/1022/107 650/1017/107 645/1023/107 -f 644/1026/105 648/1027/105 646/1020/105 -f 656/1028/109 658/1029/109 657/1030/109 -f 658/1029/107 655/1031/107 654/1008/107 -f 656/1032/105 653/1033/105 652/1034/105 -f 659/1035/108 652/1034/108 655/1031/108 -f 653/1036/112 658/1029/112 654/1008/112 -f 666/1037/105 668/1038/105 664/1039/105 -f 662/1040/105 664/1039/105 660/1041/105 -f 663/1042/109 666/1043/109 662/1044/109 -f 663/1042/107 665/1045/107 667/1046/107 -f 660/1041/141 665/1045/141 661/1047/141 -f 668/1038/112 671/1048/112 669/1049/112 -f 667/1046/142 670/1050/142 666/1043/142 -f 667/1046/107 669/1049/107 671/1051/107 -f 664/1039/141 669/1049/141 665/1045/141 -f 678/1052/105 680/1053/105 682/1054/105 -f 674/1055/105 676/1056/105 678/1052/105 -f 674/1055/109 679/1057/109 675/1058/109 -f 675/1059/107 677/1060/107 673/1061/107 -f 673/1061/143 676/1056/143 672/1062/143 -f 680/1053/108 683/1063/108 682/1064/108 -f 678/1052/144 683/1065/144 679/1057/144 -f 679/1066/107 681/1067/107 677/1060/107 -f 676/1056/143 681/1067/143 680/1053/143 -f 684/1068/128 687/1069/128 686/1070/128 -f 686/1070/130 689/1071/130 688/1072/130 -f 689/1073/132 690/1074/132 688/1075/132 -f 691/1076/133 692/1077/133 690/1074/133 -f 693/1078/134 694/1079/134 692/1077/134 -f 695/1080/135 696/1081/135 694/1079/135 -f 691/1082/107 689/1083/107 697/1084/107 -f 697/1085/136 698/1086/136 696/1081/136 -f 698/1086/138 685/1087/138 684/1068/138 -f 698/1088/105 686/1089/105 690/1090/105 -f 706/1091/112 704/1092/112 705/1093/112 -f 702/1094/106 707/1095/106 703/1096/106 -f 701/1097/109 705/1093/109 700/1098/109 -f 703/1099/107 706/1091/107 701/1100/107 -f 700/1101/105 704/1092/105 702/1102/105 -f 723/1103/125 728/1104/125 731/1105/125 -f 717/1106/105 724/1107/105 716/1108/105 -f 715/1109/107 722/1110/107 713/1111/107 -f 712/1112/105 720/1113/105 714/1114/105 -f 711/1115/107 718/1116/107 709/1117/107 -f 708/1118/105 716/1108/105 710/1119/105 -f 715/1109/108 720/1120/108 723/1103/108 -f 713/1111/112 721/1121/112 712/1112/112 -f 711/1115/108 716/1122/108 719/1123/108 -f 709/1117/112 717/1106/112 708/1118/112 -f 729/1124/105 736/1125/105 728/1126/105 -f 731/1105/107 738/1127/107 730/1128/107 -f 721/1121/124 730/1128/124 729/1124/124 -f 716/1122/125 727/1129/125 719/1123/125 -f 718/1116/124 725/1130/124 717/1106/124 -f 722/1110/107 731/1105/107 730/1128/107 -f 721/1121/105 728/1126/105 720/1113/105 -f 718/1116/107 727/1129/107 726/1131/107 -f 734/1132/106 732/1133/106 733/1134/106 -f 738/1127/106 736/1135/106 737/1136/106 -f 727/1129/107 734/1132/107 726/1131/107 -f 725/1130/105 732/1137/105 724/1107/105 -f 731/1105/108 736/1138/108 739/1139/108 -f 730/1128/112 737/1136/112 729/1124/112 -f 724/1140/108 735/1141/108 727/1129/108 -f 726/1131/112 733/1134/112 725/1130/112 -f 756/1142/145 758/1143/145 760/1144/145 -f 744/1145/146 741/1146/146 742/1147/146 -f 742/1147/147 745/1148/147 744/1145/147 -f 754/1149/148 761/1150/148 762/1151/148 -f 750/1152/146 757/1153/146 756/1142/146 -f 745/1148/107 746/1154/107 744/1145/107 -f 741/1155/149 758/1143/149 757/1153/149 -f 752/1156/146 741/1155/146 757/1153/146 -f 746/1154/150 749/1157/150 748/1158/150 -f 762/1151/107 769/1159/107 763/1160/107 -f 750/1152/146 755/1161/146 748/1158/146 -f 748/1158/151 751/1162/151 750/1152/151 -f 743/1163/146 751/1164/146 747/1165/146 -f 741/1146/152 763/1160/152 759/1166/152 -f 750/1152/105 753/1167/105 752/1156/105 -f 755/1161/153 760/1144/153 761/1150/153 -f 744/1145/146 754/1149/146 740/1168/146 -f 753/1167/154 742/1169/154 752/1156/154 -f 746/1154/146 755/1161/146 754/1149/146 -f 754/1149/155 763/1160/155 740/1168/155 -f 767/1170/156 766/1171/156 764/1172/156 -f 760/1144/151 767/1173/151 761/1150/151 -f 758/1143/154 765/1174/154 764/1175/154 -f 759/1166/147 769/1159/147 765/1176/147 -f 761/1150/150 768/1177/150 762/1151/150 -f 760/1144/105 764/1175/105 766/1178/105 -f 786/1179/157 788/1180/157 790/1181/157 -f 774/1182/158 771/1183/158 772/1184/158 -f 773/1185/159 774/1182/159 772/1184/159 -f 785/1186/160 792/1187/160 784/1188/160 -f 782/1189/158 786/1179/158 780/1190/158 -f 774/1182/107 777/1191/107 776/1192/107 -f 771/1193/161 788/1180/161 787/1194/161 -f 772/1195/158 787/1194/158 782/1189/158 -f 777/1191/162 778/1196/162 776/1192/162 -f 793/1197/107 798/1198/107 799/1199/107 -f 780/1190/158 785/1186/158 778/1196/158 -f 778/1196/163 781/1200/163 780/1190/163 -f 779/1201/158 777/1202/158 773/1203/158 -f 771/1183/164 793/1197/164 789/1204/164 -f 781/1200/105 782/1189/105 780/1190/105 -f 785/1186/165 790/1181/165 791/1205/165 -f 774/1182/158 784/1188/158 770/1206/158 -f 783/1207/166 772/1195/166 782/1189/166 -f 776/1192/158 785/1186/158 784/1188/158 -f 784/1188/167 793/1197/167 770/1206/167 -f 796/1208/168 794/1209/168 799/1210/168 -f 790/1181/163 797/1211/163 791/1205/163 -f 788/1180/166 795/1212/166 794/1213/166 -f 789/1204/159 799/1199/159 795/1214/159 -f 791/1205/162 798/1198/162 792/1187/162 -f 790/1181/105 794/1213/105 796/1215/105 -f 630/997/169 622/986/169 626/987/169 -f 635/949/113 623/948/113 633/1216/113 -f 470/746/105 534/909/105 538/747/105 -f 522/749/106 538/883/106 541/750/106 -f 541/752/107 537/838/107 521/753/107 -f 526/755/106 540/1217/106 543/756/106 -f 483/758/106 487/778/106 488/759/106 -f 480/761/108 481/793/108 482/762/108 -f 477/764/109 479/763/109 482/762/109 -f 476/766/106 481/793/106 480/761/106 -f 502/768/110 506/818/110 505/769/110 -f 501/771/111 504/809/111 503/772/111 -f 486/774/109 490/777/109 489/775/109 -f 490/777/112 488/759/112 487/778/112 -f 484/779/106 493/798/106 491/780/106 -f 478/782/109 492/792/109 494/783/109 -f 475/785/106 495/804/106 497/786/106 -f 485/788/109 498/791/109 496/789/109 -f 497/786/105 495/804/105 496/789/105 -f 491/780/107 493/798/107 494/783/107 -f 491/780/113 492/792/113 482/762/113 -f 490/797/114 494/783/114 493/798/114 -f 487/778/115 497/786/115 498/791/115 -f 480/761/116 479/763/116 496/789/116 -f 499/806/117 507/810/117 508/807/117 -f 500/811/120 510/817/120 511/812/120 -f 502/814/120 509/1218/120 513/815/120 -f 467/819/112 514/823/112 517/820/112 -f 468/822/105 515/825/105 514/823/105 -f 469/824/108 516/827/108 515/825/108 -f 474/826/107 517/1219/107 516/827/107 -f 518/828/105 536/910/105 540/829/105 -f 539/831/107 535/837/107 473/832/107 -f 542/834/106 539/884/106 525/835/106 -f 538/747/108 534/909/108 535/837/108 -f 540/829/108 536/910/108 537/838/108 -f 530/839/106 544/877/106 545/840/106 -f 532/842/106 546/879/106 547/843/106 -f 549/845/107 553/887/107 524/846/107 -f 553/848/106 556/867/106 530/849/106 -f 533/851/106 557/869/106 554/852/106 -f 551/854/107 555/1220/107 528/855/107 -f 523/857/105 552/886/105 548/858/105 -f 555/860/106 552/1221/106 523/861/106 -f 527/863/105 554/885/105 550/864/105 -f 544/872/114 556/867/114 564/873/114 -f 545/840/113 561/878/113 558/875/113 -f 547/843/115 563/882/115 565/876/115 -f 544/877/107 560/889/107 561/878/107 -f 546/879/116 543/756/116 559/880/116 -f 546/879/105 562/881/105 563/882/105 -f 539/884/108 542/834/108 558/875/108 -f 558/875/108 559/880/108 541/750/108 -f 559/880/108 543/756/108 540/1217/108 -f 541/750/108 559/880/108 540/1217/108 -f 541/750/108 538/883/108 558/875/108 -f 554/885/112 555/1220/112 551/854/112 -f 549/845/112 548/858/112 552/886/112 -f 553/848/112 552/1221/112 564/873/112 -f 552/1221/112 555/860/112 564/873/112 -f 555/860/112 554/852/112 565/876/112 -f 554/852/112 557/869/112 565/876/112 -f 565/876/112 564/873/112 555/860/112 -f 562/881/109 568/1222/109 569/888/109 -f 560/889/109 566/1223/109 567/890/109 -f 558/875/123 567/891/123 568/892/123 -f 564/873/124 565/876/124 569/893/124 -f 573/895/107 572/912/107 472/896/107 -f 519/898/105 575/911/105 574/899/105 -f 471/901/105 571/907/105 570/902/105 -f 577/904/107 576/908/107 520/905/107 -f 571/907/106 572/912/106 573/895/106 -f 574/899/106 575/911/106 576/908/106 -f 534/909/125 570/902/125 573/895/125 -f 536/910/125 574/899/125 577/904/125 -f 550/864/126 551/854/126 576/908/126 -f 572/912/126 571/907/126 548/858/126 -f 467/921/106 474/1224/106 469/824/106 -f 578/922/108 580/937/108 581/923/108 -f 580/925/106 582/1225/106 583/926/106 -f 581/930/107 583/1226/107 587/928/107 -f 587/928/107 586/931/107 579/929/107 -f 586/931/109 585/934/109 578/932/109 -f 585/934/112 586/931/112 587/928/112 -f 583/926/126 582/1225/126 584/935/126 -f 580/937/105 578/922/105 584/935/105 -f 578/922/105 585/934/105 584/935/105 -f 620/938/105 627/996/105 624/939/105 -f 627/941/127 631/993/127 630/942/127 -f 590/944/128 591/1227/128 593/945/128 -f 607/950/106 588/983/106 609/951/106 -f 593/945/130 595/1228/130 594/953/130 -f 614/954/108 617/964/108 616/955/108 -f 610/957/131 608/1229/131 589/958/131 -f 595/960/132 597/1230/132 596/961/132 -f 612/963/105 619/970/105 617/964/105 -f 609/965/112 588/983/112 589/958/112 -f 596/961/133 597/1230/133 599/967/133 -f 613/969/112 618/976/112 619/970/112 -f 624/939/106 627/996/106 626/971/106 -f 598/968/134 599/967/134 601/973/134 -f 615/975/107 616/1231/107 618/976/107 -f 606/959/108 607/950/108 611/977/108 -f 601/973/135 603/984/135 602/979/135 -f 595/982/107 593/1232/107 603/1233/107 -f 593/1232/107 591/1234/107 603/1233/107 -f 591/1234/107 605/1235/107 603/1233/107 -f 603/1233/107 601/1236/107 595/982/107 -f 601/1236/107 599/980/107 595/982/107 -f 588/983/105 607/950/105 606/959/105 -f 603/984/136 605/988/136 604/985/136 -f 622/986/109 620/938/109 621/940/109 -f 623/948/137 625/947/137 626/987/137 -f 605/988/138 591/1227/138 590/944/138 -f 604/991/105 590/1237/105 592/1238/105 -f 592/1238/105 594/1239/105 596/989/105 -f 596/989/105 598/1240/105 600/990/105 -f 600/990/105 602/1241/105 604/991/105 -f 604/991/105 592/1238/105 596/989/105 -f 628/992/112 630/942/112 631/993/112 -f 620/938/109 622/986/109 628/995/109 -f 620/938/105 629/994/105 631/993/105 -f 632/999/108 634/1003/108 635/1000/108 -f 624/1002/139 625/1242/139 635/1000/139 -f 621/940/109 632/999/109 633/1004/109 -f 621/940/105 624/939/105 634/1003/105 -f 638/1005/107 639/1014/107 636/1006/107 -f 654/1008/106 655/1031/106 652/1009/106 -f 637/1007/112 636/1006/112 642/1011/112 -f 638/1005/108 641/1243/108 640/1013/108 -f 637/1007/140 643/1244/140 641/1015/140 -f 639/1014/106 640/1245/106 642/1016/106 -f 650/1017/106 651/1021/106 648/1018/106 -f 646/1020/108 648/1027/108 651/1021/108 -f 645/1023/112 650/1017/112 649/1024/112 -f 647/1022/107 651/1021/107 650/1017/107 -f 644/1026/105 649/1246/105 648/1027/105 -f 656/1028/109 659/1035/109 658/1029/109 -f 658/1029/107 659/1035/107 655/1031/107 -f 656/1032/105 657/1247/105 653/1033/105 -f 659/1035/108 656/1032/108 652/1034/108 -f 653/1036/112 657/1248/112 658/1029/112 -f 666/1037/105 670/1249/105 668/1038/105 -f 662/1040/105 666/1037/105 664/1039/105 -f 663/1042/109 667/1046/109 666/1043/109 -f 663/1042/107 661/1047/107 665/1045/107 -f 660/1041/141 664/1039/141 665/1045/141 -f 668/1038/112 670/1250/112 671/1048/112 -f 667/1046/142 671/1051/142 670/1050/142 -f 667/1046/107 665/1045/107 669/1049/107 -f 664/1039/141 668/1038/141 669/1049/141 -f 678/1052/105 676/1056/105 680/1053/105 -f 674/1055/105 672/1062/105 676/1056/105 -f 674/1055/109 678/1052/109 679/1057/109 -f 675/1059/107 679/1066/107 677/1060/107 -f 673/1061/143 677/1060/143 676/1056/143 -f 680/1053/108 681/1067/108 683/1063/108 -f 678/1052/144 682/1054/144 683/1065/144 -f 679/1066/107 683/1251/107 681/1067/107 -f 676/1056/143 677/1060/143 681/1067/143 -f 684/1068/128 685/1087/128 687/1069/128 -f 686/1070/130 687/1069/130 689/1071/130 -f 689/1073/132 691/1076/132 690/1074/132 -f 691/1076/133 693/1078/133 692/1077/133 -f 693/1078/134 695/1080/134 694/1079/134 -f 695/1080/135 697/1085/135 696/1081/135 -f 689/1083/107 687/1252/107 697/1084/107 -f 687/1252/107 685/1253/107 697/1084/107 -f 685/1253/107 699/1254/107 697/1084/107 -f 697/1084/107 695/1255/107 693/1256/107 -f 693/1256/107 691/1082/107 697/1084/107 -f 697/1085/136 699/1257/136 698/1086/136 -f 698/1086/138 699/1257/138 685/1087/138 -f 698/1088/105 684/1258/105 686/1089/105 -f 686/1089/105 688/1259/105 690/1090/105 -f 690/1090/105 692/1260/105 694/1261/105 -f 694/1261/105 696/1262/105 690/1090/105 -f 696/1262/105 698/1088/105 690/1090/105 -f 706/1091/112 707/1095/112 704/1092/112 -f 702/1094/106 704/1092/106 707/1095/106 -f 701/1097/109 706/1091/109 705/1093/109 -f 703/1099/107 707/1095/107 706/1091/107 -f 700/1101/105 705/1093/105 704/1092/105 -f 723/1103/125 720/1120/125 728/1104/125 -f 717/1106/105 725/1130/105 724/1107/105 -f 715/1109/107 723/1103/107 722/1110/107 -f 712/1112/105 721/1121/105 720/1113/105 -f 711/1115/107 719/1123/107 718/1116/107 -f 708/1118/105 717/1106/105 716/1108/105 -f 715/1109/108 714/1263/108 720/1120/108 -f 713/1111/112 722/1110/112 721/1121/112 -f 711/1115/108 710/1264/108 716/1122/108 -f 709/1117/112 718/1116/112 717/1106/112 -f 729/1124/105 737/1136/105 736/1125/105 -f 731/1105/107 739/1139/107 738/1127/107 -f 721/1121/124 722/1110/124 730/1128/124 -f 716/1122/125 724/1140/125 727/1129/125 -f 718/1116/124 726/1131/124 725/1130/124 -f 722/1110/107 723/1103/107 731/1105/107 -f 721/1121/105 729/1124/105 728/1126/105 -f 718/1116/107 719/1123/107 727/1129/107 -f 734/1132/106 735/1265/106 732/1133/106 -f 738/1127/106 739/1266/106 736/1135/106 -f 727/1129/107 735/1141/107 734/1132/107 -f 725/1130/105 733/1134/105 732/1137/105 -f 731/1105/108 728/1104/108 736/1138/108 -f 730/1128/112 738/1127/112 737/1136/112 -f 724/1140/108 732/1267/108 735/1141/108 -f 726/1131/112 734/1132/112 733/1134/112 -f 756/1142/145 757/1153/145 758/1143/145 -f 744/1145/146 740/1168/146 741/1146/146 -f 742/1147/147 743/1268/147 745/1148/147 -f 754/1149/148 755/1161/148 761/1150/148 -f 750/1152/146 752/1156/146 757/1153/146 -f 745/1148/107 747/1269/107 746/1154/107 -f 741/1155/149 759/1270/149 758/1143/149 -f 752/1156/146 742/1169/146 741/1155/146 -f 746/1154/150 747/1269/150 749/1157/150 -f 762/1151/107 768/1177/107 769/1159/107 -f 750/1152/146 756/1142/146 755/1161/146 -f 748/1158/151 749/1157/151 751/1162/151 -f 747/1165/146 745/1271/146 743/1163/146 -f 743/1163/146 753/1272/146 751/1164/146 -f 751/1164/146 749/1273/146 747/1165/146 -f 741/1146/152 740/1168/152 763/1160/152 -f 750/1152/105 751/1162/105 753/1167/105 -f 755/1161/153 756/1142/153 760/1144/153 -f 744/1145/146 746/1154/146 754/1149/146 -f 753/1167/154 743/1274/154 742/1169/154 -f 746/1154/146 748/1158/146 755/1161/146 -f 754/1149/155 762/1151/155 763/1160/155 -f 764/1172/156 765/1275/156 767/1170/156 -f 765/1275/156 769/1276/156 767/1170/156 -f 769/1276/156 768/1277/156 767/1170/156 -f 760/1144/151 766/1178/151 767/1173/151 -f 758/1143/154 759/1270/154 765/1174/154 -f 759/1166/147 763/1160/147 769/1159/147 -f 761/1150/150 767/1173/150 768/1177/150 -f 760/1144/105 758/1143/105 764/1175/105 -f 786/1179/157 787/1194/157 788/1180/157 -f 774/1182/158 770/1206/158 771/1183/158 -f 773/1185/159 775/1278/159 774/1182/159 -f 785/1186/160 791/1205/160 792/1187/160 -f 782/1189/158 787/1194/158 786/1179/158 -f 774/1182/107 775/1278/107 777/1191/107 -f 771/1193/161 789/1279/161 788/1180/161 -f 772/1195/158 771/1193/158 787/1194/158 -f 777/1191/162 779/1280/162 778/1196/162 -f 793/1197/107 792/1187/107 798/1198/107 -f 780/1190/158 786/1179/158 785/1186/158 -f 778/1196/163 779/1280/163 781/1200/163 -f 777/1202/158 775/1281/158 773/1203/158 -f 773/1203/158 783/1282/158 781/1283/158 -f 781/1283/158 779/1201/158 773/1203/158 -f 771/1183/164 770/1206/164 793/1197/164 -f 781/1200/105 783/1207/105 782/1189/105 -f 785/1186/165 786/1179/165 790/1181/165 -f 774/1182/158 776/1192/158 784/1188/158 -f 783/1207/166 773/1284/166 772/1195/166 -f 776/1192/158 778/1196/158 785/1186/158 -f 784/1188/167 792/1187/167 793/1197/167 -f 794/1209/168 795/1285/168 799/1210/168 -f 799/1210/168 798/1286/168 797/1287/168 -f 797/1287/168 796/1208/168 799/1210/168 -f 790/1181/163 796/1215/163 797/1211/163 -f 788/1180/166 789/1279/166 795/1212/166 -f 789/1204/159 793/1197/159 799/1199/159 -f 791/1205/162 797/1211/162 798/1198/162 -f 790/1181/105 788/1180/105 794/1213/105 +f 478/762/117 546/763/117 530/764/117 +f 530/765/118 549/766/118 537/767/118 +f 549/768/119 529/769/119 537/770/119 +f 534/771/118 551/772/118 540/773/118 +f 491/774/118 496/775/118 492/776/118 +f 488/777/120 490/778/120 487/779/120 +f 485/780/121 490/778/121 486/781/121 +f 484/782/118 488/777/118 483/783/118 +f 510/784/122 513/785/122 509/786/122 +f 509/787/123 511/788/123 507/789/123 +f 494/790/121 497/791/121 493/792/121 +f 498/793/124 495/794/124 497/791/124 +f 492/795/118 499/796/118 484/797/118 +f 486/798/121 502/799/121 494/800/121 +f 483/801/118 505/802/118 491/803/118 +f 493/804/121 504/805/121 485/806/121 +f 505/802/117 504/805/117 506/807/117 +f 499/796/119 502/799/119 500/808/119 +f 499/796/125 490/778/125 489/809/125 +f 484/782/118 499/810/118 489/809/118 +f 486/781/121 490/778/121 500/811/121 +f 494/800/121 502/799/121 498/812/121 +f 498/813/126 501/814/126 496/815/126 +f 492/795/118 496/816/118 501/814/118 +f 493/792/121 497/791/121 506/817/121 +f 495/794/127 506/807/127 497/791/127 +f 491/774/118 505/818/118 495/794/118 +f 485/806/121 504/805/121 487/819/121 +f 488/777/128 504/805/128 503/820/128 +f 483/801/118 488/821/118 503/820/118 +f 507/822/129 516/823/129 508/824/129 +f 509/787/130 513/785/130 512/825/130 +f 507/789/131 511/788/131 515/826/131 +f 508/827/132 519/828/132 517/829/132 +f 510/830/132 521/831/132 520/832/132 +f 508/824/133 516/823/133 518/833/133 +f 510/784/134 520/832/134 514/834/134 +f 475/835/124 525/836/124 482/837/124 +f 476/838/117 522/839/117 475/835/117 +f 477/840/120 523/841/120 476/838/120 +f 482/842/119 524/843/119 477/840/119 +f 526/844/117 548/845/117 534/846/117 +f 547/847/119 481/848/119 533/849/119 +f 550/850/118 533/851/118 539/852/118 +f 546/763/120 543/853/120 547/847/120 +f 548/845/120 545/854/120 549/768/120 +f 538/855/118 553/856/118 539/857/118 +f 540/858/118 555/859/118 541/860/118 +f 557/861/119 532/862/119 480/863/119 +f 561/864/118 538/865/118 532/866/118 +f 541/867/118 562/868/118 535/869/118 +f 559/870/119 536/871/119 528/872/119 +f 531/873/117 556/874/117 479/875/117 +f 563/876/118 531/877/118 536/878/118 +f 535/879/117 558/880/117 527/881/117 +f 552/882/118 538/865/118 564/883/118 +f 541/867/118 555/884/118 565/885/118 +f 540/773/118 551/772/118 554/886/118 +f 539/852/118 553/887/118 550/850/118 +f 552/888/126 572/889/126 568/890/126 +f 553/856/125 566/891/125 550/850/125 +f 555/859/127 573/892/127 565/885/127 +f 552/893/119 569/894/119 553/856/119 +f 554/895/128 567/896/128 570/897/128 +f 554/895/117 571/898/117 555/859/117 +f 546/899/120 547/900/120 566/891/120 +f 562/901/124 559/870/124 558/880/124 +f 557/861/124 560/902/124 561/903/124 +f 572/889/124 564/883/124 561/864/124 +f 570/897/121 577/904/121 571/898/121 +f 568/905/121 575/906/121 569/894/121 +f 569/894/135 575/907/135 566/891/135 +f 570/897/135 567/896/135 576/908/135 +f 566/891/135 576/908/135 567/896/135 +f 573/892/136 571/898/136 577/909/136 +f 572/889/136 574/910/136 568/890/136 +f 572/889/136 577/909/136 574/910/136 +f 581/911/119 480/912/119 481/913/119 +f 527/914/117 582/915/117 526/916/117 +f 479/917/117 578/918/117 478/919/117 +f 585/920/119 528/921/119 529/922/119 +f 579/923/118 581/911/118 578/918/118 +f 582/915/118 584/924/118 585/920/118 +f 542/925/137 581/911/137 543/853/137 +f 544/926/137 585/920/137 545/854/137 +f 558/880/138 584/924/138 583/927/138 +f 580/928/138 556/874/138 557/861/138 +f 479/875/117 556/874/117 579/929/117 +f 527/881/117 558/880/117 583/930/117 +f 528/872/119 584/931/119 559/870/119 +f 480/863/119 580/932/119 557/861/119 +f 481/848/119 543/853/119 581/933/119 +f 478/762/117 578/934/117 542/925/117 +f 529/769/119 545/854/119 585/935/119 +f 526/844/117 582/936/117 544/926/117 +f 475/937/118 477/840/118 476/838/118 +f 586/938/120 589/939/120 587/940/120 +f 588/941/118 591/942/118 589/943/118 +f 595/944/119 587/945/119 589/946/119 +f 594/947/121 586/948/121 587/949/121 +f 593/950/124 595/944/124 592/951/124 +f 591/942/138 592/951/138 595/944/138 +f 592/951/117 590/952/117 588/953/117 +f 628/954/117 632/955/117 629/956/117 +f 635/957/139 638/958/139 634/959/139 +f 598/960/140 601/961/140 600/962/140 +f 633/963/141 631/964/141 643/965/141 +f 615/966/118 617/967/118 619/968/118 +f 601/961/142 602/969/142 600/962/142 +f 622/970/120 624/971/120 623/972/120 +f 618/973/143 597/974/143 614/975/143 +f 603/976/144 604/977/144 602/978/144 +f 620/979/117 625/980/117 622/970/117 +f 617/981/124 597/974/124 616/982/124 +f 604/977/145 607/983/145 606/984/145 +f 621/985/124 627/986/124 620/979/124 +f 632/955/118 634/987/118 633/988/118 +f 606/984/146 609/989/146 608/990/146 +f 623/991/119 626/992/119 621/985/119 +f 614/975/120 619/993/120 618/994/120 +f 609/989/147 610/995/147 608/990/147 +f 607/996/119 605/997/119 603/998/119 +f 596/999/117 614/975/117 597/974/117 +f 611/1000/148 612/1001/148 610/995/148 +f 630/1002/121 629/956/121 631/964/121 +f 631/964/149 634/1003/149 630/1002/149 +f 613/1004/150 598/960/150 612/1001/150 +f 604/1005/117 608/1006/117 612/1007/117 +f 636/1008/124 639/1009/124 637/1010/124 +f 628/954/121 636/1011/121 637/1010/121 +f 628/954/117 639/1009/117 635/1012/117 +f 630/1002/126 638/1013/126 636/1014/126 +f 640/1015/120 643/1016/120 641/1017/120 +f 632/1018/151 643/1016/151 642/1019/151 +f 629/956/121 641/1020/121 631/964/121 +f 629/956/117 642/1019/117 640/1015/117 +f 646/1021/119 644/1022/119 645/1023/119 +f 662/1024/118 660/1025/118 661/1026/118 +f 645/1023/124 650/1027/124 651/1028/124 +f 646/1021/120 648/1029/120 647/1030/120 +f 645/1023/152 649/1031/152 646/1021/152 +f 647/1030/118 650/1032/118 644/1022/118 +f 658/1033/118 656/1034/118 657/1035/118 +f 654/1036/120 659/1037/120 655/1038/120 +f 653/1039/124 657/1040/124 652/1041/124 +f 655/1038/119 658/1033/119 653/1039/119 +f 652/1042/117 656/1043/117 654/1036/117 +f 664/1044/121 666/1045/121 665/1046/121 +f 666/1045/119 663/1047/119 662/1024/119 +f 664/1048/117 661/1049/117 660/1050/117 +f 667/1051/120 660/1050/120 663/1047/120 +f 661/1052/124 666/1045/124 662/1024/124 +f 674/1053/117 676/1054/117 672/1055/117 +f 670/1056/117 672/1055/117 668/1057/117 +f 671/1058/121 674/1059/121 670/1060/121 +f 671/1058/119 673/1061/119 675/1062/119 +f 668/1057/153 673/1061/153 669/1063/153 +f 676/1054/124 679/1064/124 677/1065/124 +f 675/1062/154 678/1066/154 674/1059/154 +f 675/1062/119 677/1065/119 679/1067/119 +f 672/1055/153 677/1065/153 673/1061/153 +f 686/1068/117 688/1069/117 690/1070/117 +f 682/1071/117 684/1072/117 686/1068/117 +f 682/1071/121 687/1073/121 683/1074/121 +f 683/1075/119 685/1076/119 681/1077/119 +f 681/1077/155 684/1072/155 680/1078/155 +f 688/1069/120 691/1079/120 690/1080/120 +f 686/1068/156 691/1081/156 687/1073/156 +f 687/1082/119 689/1083/119 685/1076/119 +f 684/1072/155 689/1083/155 688/1069/155 +f 692/1084/140 695/1085/140 694/1086/140 +f 694/1086/142 697/1087/142 696/1088/142 +f 697/1089/144 698/1090/144 696/1091/144 +f 699/1092/145 700/1093/145 698/1090/145 +f 701/1094/146 702/1095/146 700/1093/146 +f 703/1096/147 704/1097/147 702/1095/147 +f 699/1098/119 697/1099/119 705/1100/119 +f 705/1101/148 706/1102/148 704/1097/148 +f 706/1102/150 693/1103/150 692/1084/150 +f 706/1104/117 694/1105/117 698/1106/117 +f 714/1107/124 712/1108/124 713/1109/124 +f 710/1110/118 715/1111/118 711/1112/118 +f 709/1113/121 713/1109/121 708/1114/121 +f 711/1115/119 714/1107/119 709/1116/119 +f 708/1117/117 712/1108/117 710/1118/117 +f 731/1119/137 736/1120/137 739/1121/137 +f 725/1122/117 732/1123/117 724/1124/117 +f 723/1125/119 730/1126/119 721/1127/119 +f 720/1128/117 728/1129/117 722/1130/117 +f 719/1131/119 726/1132/119 717/1133/119 +f 716/1134/117 724/1124/117 718/1135/117 +f 723/1125/120 728/1136/120 731/1119/120 +f 721/1127/124 729/1137/124 720/1128/124 +f 719/1131/120 724/1138/120 727/1139/120 +f 717/1133/124 725/1122/124 716/1134/124 +f 737/1140/117 744/1141/117 736/1142/117 +f 739/1121/119 746/1143/119 738/1144/119 +f 729/1137/136 738/1144/136 737/1140/136 +f 724/1138/137 735/1145/137 727/1139/137 +f 726/1132/136 733/1146/136 725/1122/136 +f 730/1126/119 739/1121/119 738/1144/119 +f 729/1137/117 736/1142/117 728/1129/117 +f 726/1132/119 735/1145/119 734/1147/119 +f 742/1148/118 740/1149/118 741/1150/118 +f 746/1143/118 744/1151/118 745/1152/118 +f 735/1145/119 742/1148/119 734/1147/119 +f 733/1146/117 740/1153/117 732/1123/117 +f 739/1121/120 744/1154/120 747/1155/120 +f 738/1144/124 745/1152/124 737/1140/124 +f 732/1156/120 743/1157/120 735/1145/120 +f 734/1147/124 741/1150/124 733/1146/124 +f 764/1158/157 766/1159/157 768/1160/157 +f 752/1161/158 749/1162/158 750/1163/158 +f 750/1163/159 753/1164/159 752/1161/159 +f 762/1165/160 769/1166/160 770/1167/160 +f 758/1168/158 765/1169/158 764/1158/158 +f 753/1164/119 754/1170/119 752/1161/119 +f 749/1171/161 766/1159/161 765/1169/161 +f 760/1172/158 749/1171/158 765/1169/158 +f 754/1170/162 757/1173/162 756/1174/162 +f 770/1167/119 777/1175/119 771/1176/119 +f 758/1168/158 763/1177/158 756/1174/158 +f 756/1174/163 759/1178/163 758/1168/163 +f 751/1179/158 759/1180/158 755/1181/158 +f 749/1162/164 771/1176/164 767/1182/164 +f 758/1168/117 761/1183/117 760/1172/117 +f 763/1177/165 768/1160/165 769/1166/165 +f 752/1161/158 762/1165/158 748/1184/158 +f 761/1183/166 750/1185/166 760/1172/166 +f 754/1170/158 763/1177/158 762/1165/158 +f 762/1165/167 771/1176/167 748/1184/167 +f 775/1186/168 774/1187/168 772/1188/168 +f 768/1160/163 775/1189/163 769/1166/163 +f 766/1159/166 773/1190/166 772/1191/166 +f 767/1182/159 777/1175/159 773/1192/159 +f 769/1166/162 776/1193/162 770/1167/162 +f 768/1160/117 772/1191/117 774/1194/117 +f 794/1195/169 796/1196/169 798/1197/169 +f 782/1198/170 779/1199/170 780/1200/170 +f 781/1201/171 782/1198/171 780/1200/171 +f 793/1202/172 800/1203/172 792/1204/172 +f 790/1205/170 794/1195/170 788/1206/170 +f 782/1198/119 785/1207/119 784/1208/119 +f 779/1209/173 796/1196/173 795/1210/173 +f 780/1211/170 795/1210/170 790/1205/170 +f 785/1207/174 786/1212/174 784/1208/174 +f 801/1213/119 806/1214/119 807/1215/119 +f 788/1206/170 793/1202/170 786/1212/170 +f 786/1212/175 789/1216/175 788/1206/175 +f 787/1217/170 785/1218/170 781/1219/170 +f 779/1199/176 801/1213/176 797/1220/176 +f 789/1216/117 790/1205/117 788/1206/117 +f 793/1202/177 798/1197/177 799/1221/177 +f 782/1198/170 792/1204/170 778/1222/170 +f 791/1223/178 780/1211/178 790/1205/178 +f 784/1208/170 793/1202/170 792/1204/170 +f 792/1204/179 801/1213/179 778/1222/179 +f 804/1224/180 802/1225/180 807/1226/180 +f 798/1197/175 805/1227/175 799/1221/175 +f 796/1196/178 803/1228/178 802/1229/178 +f 797/1220/171 807/1215/171 803/1230/171 +f 799/1221/174 806/1214/174 800/1203/174 +f 798/1197/117 802/1229/117 804/1231/117 +f 638/1013/181 630/1002/181 634/1003/181 +f 643/965/125 631/964/125 641/1232/125 +f 478/762/117 542/925/117 546/763/117 +f 530/765/118 546/899/118 549/766/118 +f 549/768/119 545/854/119 529/769/119 +f 534/771/118 548/1233/118 551/772/118 +f 491/774/118 495/794/118 496/775/118 +f 488/777/120 489/809/120 490/778/120 +f 485/780/121 487/779/121 490/778/121 +f 484/782/118 489/809/118 488/777/118 +f 510/784/122 514/834/122 513/785/122 +f 509/787/123 512/825/123 511/788/123 +f 494/790/121 498/793/121 497/791/121 +f 498/793/124 496/775/124 495/794/124 +f 492/795/118 501/814/118 499/796/118 +f 486/798/121 500/808/121 502/799/121 +f 483/801/118 503/820/118 505/802/118 +f 493/804/121 506/807/121 504/805/121 +f 505/802/117 503/820/117 504/805/117 +f 499/796/119 501/814/119 502/799/119 +f 499/796/125 500/808/125 490/778/125 +f 498/813/126 502/799/126 501/814/126 +f 495/794/127 505/802/127 506/807/127 +f 488/777/128 487/779/128 504/805/128 +f 507/822/129 515/826/129 516/823/129 +f 508/827/132 518/833/132 519/828/132 +f 510/830/132 517/1234/132 521/831/132 +f 475/835/124 522/839/124 525/836/124 +f 476/838/117 523/841/117 522/839/117 +f 477/840/120 524/843/120 523/841/120 +f 482/842/119 525/1235/119 524/843/119 +f 526/844/117 544/926/117 548/845/117 +f 547/847/119 543/853/119 481/848/119 +f 550/850/118 547/900/118 533/851/118 +f 546/763/120 542/925/120 543/853/120 +f 548/845/120 544/926/120 545/854/120 +f 538/855/118 552/893/118 553/856/118 +f 540/858/118 554/895/118 555/859/118 +f 557/861/119 561/903/119 532/862/119 +f 561/864/118 564/883/118 538/865/118 +f 541/867/118 565/885/118 562/868/118 +f 559/870/119 563/1236/119 536/871/119 +f 531/873/117 560/902/117 556/874/117 +f 563/876/118 560/1237/118 531/877/118 +f 535/879/117 562/901/117 558/880/117 +f 552/888/126 564/883/126 572/889/126 +f 553/856/125 569/894/125 566/891/125 +f 555/859/127 571/898/127 573/892/127 +f 552/893/119 568/905/119 569/894/119 +f 554/895/128 551/772/128 567/896/128 +f 554/895/117 570/897/117 571/898/117 +f 547/900/120 550/850/120 566/891/120 +f 566/891/120 567/896/120 549/766/120 +f 567/896/120 551/772/120 548/1233/120 +f 549/766/120 567/896/120 548/1233/120 +f 549/766/120 546/899/120 566/891/120 +f 562/901/124 563/1236/124 559/870/124 +f 557/861/124 556/874/124 560/902/124 +f 561/864/124 560/1237/124 572/889/124 +f 560/1237/124 563/876/124 572/889/124 +f 563/876/124 562/868/124 573/892/124 +f 562/868/124 565/885/124 573/892/124 +f 573/892/124 572/889/124 563/876/124 +f 570/897/121 576/1238/121 577/904/121 +f 568/905/121 574/1239/121 575/906/121 +f 566/891/135 575/907/135 576/908/135 +f 572/889/136 573/892/136 577/909/136 +f 581/911/119 580/928/119 480/912/119 +f 527/914/117 583/927/117 582/915/117 +f 479/917/117 579/923/117 578/918/117 +f 585/920/119 584/924/119 528/921/119 +f 579/923/118 580/928/118 581/911/118 +f 582/915/118 583/927/118 584/924/118 +f 542/925/137 578/918/137 581/911/137 +f 544/926/137 582/915/137 585/920/137 +f 558/880/138 559/870/138 584/924/138 +f 580/928/138 579/923/138 556/874/138 +f 475/937/118 482/1240/118 477/840/118 +f 586/938/120 588/953/120 589/939/120 +f 588/941/118 590/1241/118 591/942/118 +f 589/946/119 591/1242/119 595/944/119 +f 595/944/119 594/947/119 587/945/119 +f 594/947/121 593/950/121 586/948/121 +f 593/950/124 594/947/124 595/944/124 +f 591/942/138 590/1241/138 592/951/138 +f 588/953/117 586/938/117 592/951/117 +f 586/938/117 593/950/117 592/951/117 +f 628/954/117 635/1012/117 632/955/117 +f 635/957/139 639/1009/139 638/958/139 +f 598/960/140 599/1243/140 601/961/140 +f 615/966/118 596/999/118 617/967/118 +f 601/961/142 603/1244/142 602/969/142 +f 622/970/120 625/980/120 624/971/120 +f 618/973/143 616/1245/143 597/974/143 +f 603/976/144 605/1246/144 604/977/144 +f 620/979/117 627/986/117 625/980/117 +f 617/981/124 596/999/124 597/974/124 +f 604/977/145 605/1246/145 607/983/145 +f 621/985/124 626/992/124 627/986/124 +f 632/955/118 635/1012/118 634/987/118 +f 606/984/146 607/983/146 609/989/146 +f 623/991/119 624/1247/119 626/992/119 +f 614/975/120 615/966/120 619/993/120 +f 609/989/147 611/1000/147 610/995/147 +f 603/998/119 601/1248/119 611/1249/119 +f 601/1248/119 599/1250/119 611/1249/119 +f 599/1250/119 613/1251/119 611/1249/119 +f 611/1249/119 609/1252/119 603/998/119 +f 609/1252/119 607/996/119 603/998/119 +f 596/999/117 615/966/117 614/975/117 +f 611/1000/148 613/1004/148 612/1001/148 +f 630/1002/121 628/954/121 629/956/121 +f 631/964/149 633/963/149 634/1003/149 +f 613/1004/150 599/1243/150 598/960/150 +f 612/1007/117 598/1253/117 600/1254/117 +f 600/1254/117 602/1255/117 604/1005/117 +f 604/1005/117 606/1256/117 608/1006/117 +f 608/1006/117 610/1257/117 612/1007/117 +f 612/1007/117 600/1254/117 604/1005/117 +f 636/1008/124 638/958/124 639/1009/124 +f 628/954/121 630/1002/121 636/1011/121 +f 628/954/117 637/1010/117 639/1009/117 +f 640/1015/120 642/1019/120 643/1016/120 +f 632/1018/151 633/1258/151 643/1016/151 +f 629/956/121 640/1015/121 641/1020/121 +f 629/956/117 632/955/117 642/1019/117 +f 646/1021/119 647/1030/119 644/1022/119 +f 662/1024/118 663/1047/118 660/1025/118 +f 645/1023/124 644/1022/124 650/1027/124 +f 646/1021/120 649/1259/120 648/1029/120 +f 645/1023/152 651/1260/152 649/1031/152 +f 647/1030/118 648/1261/118 650/1032/118 +f 658/1033/118 659/1037/118 656/1034/118 +f 654/1036/120 656/1043/120 659/1037/120 +f 653/1039/124 658/1033/124 657/1040/124 +f 655/1038/119 659/1037/119 658/1033/119 +f 652/1042/117 657/1262/117 656/1043/117 +f 664/1044/121 667/1051/121 666/1045/121 +f 666/1045/119 667/1051/119 663/1047/119 +f 664/1048/117 665/1263/117 661/1049/117 +f 667/1051/120 664/1048/120 660/1050/120 +f 661/1052/124 665/1264/124 666/1045/124 +f 674/1053/117 678/1265/117 676/1054/117 +f 670/1056/117 674/1053/117 672/1055/117 +f 671/1058/121 675/1062/121 674/1059/121 +f 671/1058/119 669/1063/119 673/1061/119 +f 668/1057/153 672/1055/153 673/1061/153 +f 676/1054/124 678/1266/124 679/1064/124 +f 675/1062/154 679/1067/154 678/1066/154 +f 675/1062/119 673/1061/119 677/1065/119 +f 672/1055/153 676/1054/153 677/1065/153 +f 686/1068/117 684/1072/117 688/1069/117 +f 682/1071/117 680/1078/117 684/1072/117 +f 682/1071/121 686/1068/121 687/1073/121 +f 683/1075/119 687/1082/119 685/1076/119 +f 681/1077/155 685/1076/155 684/1072/155 +f 688/1069/120 689/1083/120 691/1079/120 +f 686/1068/156 690/1070/156 691/1081/156 +f 687/1082/119 691/1267/119 689/1083/119 +f 684/1072/155 685/1076/155 689/1083/155 +f 692/1084/140 693/1103/140 695/1085/140 +f 694/1086/142 695/1085/142 697/1087/142 +f 697/1089/144 699/1092/144 698/1090/144 +f 699/1092/145 701/1094/145 700/1093/145 +f 701/1094/146 703/1096/146 702/1095/146 +f 703/1096/147 705/1101/147 704/1097/147 +f 697/1099/119 695/1268/119 705/1100/119 +f 695/1268/119 693/1269/119 705/1100/119 +f 693/1269/119 707/1270/119 705/1100/119 +f 705/1100/119 703/1271/119 701/1272/119 +f 701/1272/119 699/1098/119 705/1100/119 +f 705/1101/148 707/1273/148 706/1102/148 +f 706/1102/150 707/1273/150 693/1103/150 +f 706/1104/117 692/1274/117 694/1105/117 +f 694/1105/117 696/1275/117 698/1106/117 +f 698/1106/117 700/1276/117 702/1277/117 +f 702/1277/117 704/1278/117 698/1106/117 +f 704/1278/117 706/1104/117 698/1106/117 +f 714/1107/124 715/1111/124 712/1108/124 +f 710/1110/118 712/1108/118 715/1111/118 +f 709/1113/121 714/1107/121 713/1109/121 +f 711/1115/119 715/1111/119 714/1107/119 +f 708/1117/117 713/1109/117 712/1108/117 +f 731/1119/137 728/1136/137 736/1120/137 +f 725/1122/117 733/1146/117 732/1123/117 +f 723/1125/119 731/1119/119 730/1126/119 +f 720/1128/117 729/1137/117 728/1129/117 +f 719/1131/119 727/1139/119 726/1132/119 +f 716/1134/117 725/1122/117 724/1124/117 +f 723/1125/120 722/1279/120 728/1136/120 +f 721/1127/124 730/1126/124 729/1137/124 +f 719/1131/120 718/1280/120 724/1138/120 +f 717/1133/124 726/1132/124 725/1122/124 +f 737/1140/117 745/1152/117 744/1141/117 +f 739/1121/119 747/1155/119 746/1143/119 +f 729/1137/136 730/1126/136 738/1144/136 +f 724/1138/137 732/1156/137 735/1145/137 +f 726/1132/136 734/1147/136 733/1146/136 +f 730/1126/119 731/1119/119 739/1121/119 +f 729/1137/117 737/1140/117 736/1142/117 +f 726/1132/119 727/1139/119 735/1145/119 +f 742/1148/118 743/1281/118 740/1149/118 +f 746/1143/118 747/1282/118 744/1151/118 +f 735/1145/119 743/1157/119 742/1148/119 +f 733/1146/117 741/1150/117 740/1153/117 +f 739/1121/120 736/1120/120 744/1154/120 +f 738/1144/124 746/1143/124 745/1152/124 +f 732/1156/120 740/1283/120 743/1157/120 +f 734/1147/124 742/1148/124 741/1150/124 +f 764/1158/157 765/1169/157 766/1159/157 +f 752/1161/158 748/1184/158 749/1162/158 +f 750/1163/159 751/1284/159 753/1164/159 +f 762/1165/160 763/1177/160 769/1166/160 +f 758/1168/158 760/1172/158 765/1169/158 +f 753/1164/119 755/1285/119 754/1170/119 +f 749/1171/161 767/1286/161 766/1159/161 +f 760/1172/158 750/1185/158 749/1171/158 +f 754/1170/162 755/1285/162 757/1173/162 +f 770/1167/119 776/1193/119 777/1175/119 +f 758/1168/158 764/1158/158 763/1177/158 +f 756/1174/163 757/1173/163 759/1178/163 +f 755/1181/158 753/1287/158 751/1179/158 +f 751/1179/158 761/1288/158 759/1180/158 +f 759/1180/158 757/1289/158 755/1181/158 +f 749/1162/164 748/1184/164 771/1176/164 +f 758/1168/117 759/1178/117 761/1183/117 +f 763/1177/165 764/1158/165 768/1160/165 +f 752/1161/158 754/1170/158 762/1165/158 +f 761/1183/166 751/1290/166 750/1185/166 +f 754/1170/158 756/1174/158 763/1177/158 +f 762/1165/167 770/1167/167 771/1176/167 +f 772/1188/168 773/1291/168 775/1186/168 +f 773/1291/168 777/1292/168 775/1186/168 +f 777/1292/168 776/1293/168 775/1186/168 +f 768/1160/163 774/1194/163 775/1189/163 +f 766/1159/166 767/1286/166 773/1190/166 +f 767/1182/159 771/1176/159 777/1175/159 +f 769/1166/162 775/1189/162 776/1193/162 +f 768/1160/117 766/1159/117 772/1191/117 +f 794/1195/169 795/1210/169 796/1196/169 +f 782/1198/170 778/1222/170 779/1199/170 +f 781/1201/171 783/1294/171 782/1198/171 +f 793/1202/172 799/1221/172 800/1203/172 +f 790/1205/170 795/1210/170 794/1195/170 +f 782/1198/119 783/1294/119 785/1207/119 +f 779/1209/173 797/1295/173 796/1196/173 +f 780/1211/170 779/1209/170 795/1210/170 +f 785/1207/174 787/1296/174 786/1212/174 +f 801/1213/119 800/1203/119 806/1214/119 +f 788/1206/170 794/1195/170 793/1202/170 +f 786/1212/175 787/1296/175 789/1216/175 +f 785/1218/170 783/1297/170 781/1219/170 +f 781/1219/170 791/1298/170 789/1299/170 +f 789/1299/170 787/1217/170 781/1219/170 +f 779/1199/176 778/1222/176 801/1213/176 +f 789/1216/117 791/1223/117 790/1205/117 +f 793/1202/177 794/1195/177 798/1197/177 +f 782/1198/170 784/1208/170 792/1204/170 +f 791/1223/178 781/1300/178 780/1211/178 +f 784/1208/170 786/1212/170 793/1202/170 +f 792/1204/179 800/1203/179 801/1213/179 +f 802/1225/180 803/1301/180 807/1226/180 +f 807/1226/180 806/1302/180 805/1303/180 +f 805/1303/180 804/1224/180 807/1226/180 +f 798/1197/175 804/1231/175 805/1227/175 +f 796/1196/178 797/1295/178 803/1228/178 +f 797/1220/171 801/1213/171 807/1215/171 +f 799/1221/174 805/1227/174 806/1214/174 +f 798/1197/117 796/1196/117 802/1229/117 From fb09867517458a161dddb0cfd5d1e12deab6a0e1 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 12 Sep 2023 14:46:17 +0200 Subject: [PATCH 024/207] stuff the world doesn't need --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 +++ .../hbm/blocks/network/BlockConveyorExpress.java | 12 ++++++++++++ src/main/java/com/hbm/main/CraftingManager.java | 1 + src/main/resources/assets/hbm/lang/de_DE.lang | 3 +++ src/main/resources/assets/hbm/lang/en_US.lang | 3 +++ .../hbm/textures/blocks/conveyor_express.png | Bin 0 -> 921 bytes .../textures/blocks/conveyor_express.png.mcmeta | 3 +++ .../blocks/conveyor_express_curve_left.png | Bin 0 -> 3495 bytes .../conveyor_express_curve_left.png.mcmeta | 3 +++ .../blocks/conveyor_express_curve_right.png | Bin 0 -> 3321 bytes .../conveyor_express_curve_right.png.mcmeta | 3 +++ 11 files changed, 31 insertions(+) create mode 100644 src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_express.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_right.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_right.png.mcmeta diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 723931983..7601d719a 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -806,6 +806,7 @@ public class ModBlocks { public static Block radio_telex; public static Block conveyor; + public static Block conveyor_express; //public static Block conveyor_classic; public static Block conveyor_double; public static Block conveyor_triple; @@ -1984,6 +1985,7 @@ public class ModBlocks { radio_telex = new RadioTelex().setBlockName("radio_telex").setHardness(3F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radio_telex"); conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); + conveyor_express = new BlockConveyorExpress().setBlockName("conveyor_express").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_express"); //conveyor_classic = new BlockConveyorClassic().setBlockName("conveyor_classic").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); conveyor_double = new BlockConveyorDouble().setBlockName("conveyor_double").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_double"); conveyor_triple = new BlockConveyorTriple().setBlockName("conveyor_triple").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_triple"); @@ -3250,6 +3252,7 @@ public class ModBlocks { register(crane_boxer); register(crane_unboxer); register(conveyor); + register(conveyor_express); register(conveyor_double); register(conveyor_triple); register(conveyor_chute); diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java b/src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java new file mode 100644 index 000000000..0041da992 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/BlockConveyorExpress.java @@ -0,0 +1,12 @@ +package com.hbm.blocks.network; + +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class BlockConveyorExpress extends BlockConveyorBendable { + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, Vec3 itemPos, double speed) { + return super.getTravelLocation(world, x, y, z, itemPos, speed * 3); + } +} diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 1096a4c18..4d29c4ee7 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -259,6 +259,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "RSR", "I I", "RSR", 'I', IRON.ingot(), 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', RUBBER.ingot(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.conveyor_express, 16), new Object[] { "CCC", "CLC", "CCC", 'C', ModBlocks.conveyor, 'L', Fluids.LUBRICANT.getDict(1_000) }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_double, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_triple, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor_double, 'P', STEEL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_chute, 3), new Object[] { "IGI", "IGI", "ICI" , 'I', IRON.ingot(), 'G', ModBlocks.steel_grate, 'C', ModBlocks.conveyor }); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a82e8db40..682604c76 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3653,6 +3653,7 @@ tile.capacitor_bus.desc=Output für Kondensatoren$Kann in einer geraden Linie an tile.capacitor_copper.name=Kupferkondensator tile.capacitor_gold.name=Goldkondensator tile.capacitor_niobium.name=Niobkondensator +tile.capacitor_schrabidate.name=Schrabidatkondensator tile.capacitor_tantalium.name=Tantalkondensator tile.capacitor.desc=Input: Oben$Output: Unten, über Kondensator-Bus tile.charge_c4.name=Abrissladung @@ -3721,6 +3722,8 @@ tile.conveyor_chute.name=Förderschütte tile.conveyor_chute.desc=Bewegt Items nach unten$Die unterste Schütte verhält sich wie ein normales Förderband tile.conveyor_double.name=Zweispuriges Förderband tile.conveyor_double.desc=Bewegt Items$Kann mit Schraubenzieher im Uhrzeigersinn gedreht werden$Shiftclick umdas Band zu biegen +tile.conveyor_express.name=Expressförderband +tile.conveyor_express.desc=Bewegt Items sehr schnell$Kann mit Schraubenzieher im Uhrzeigersinn gedreht werden$Shiftclick umdas Band zu biegen tile.conveyor_lift.name=Kettenaufzug tile.conveyor_lift.desc=Bewegt Items nach oben$Benötigt mindestens zwei Aufzüge übereinander um richtig zu funktionieren tile.conveyor_triple.name=Dreispuriges Förderband diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 46c98ba3e..ad1c176bb 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4600,6 +4600,7 @@ tile.capacitor_bus.desc=Output block for capacitors$Can be chained up in a strai tile.capacitor_copper.name=Copper Capacitor tile.capacitor_gold.name=Golden Capacitor tile.capacitor_niobium.name=Niobium Capacitor +tile.capacitor_schrabidate.name=Schrabidate Capacitor tile.capacitor_tantalium.name=Tantalium Capacitor tile.capacitor.desc=Input: Top$Output: Bottom, via Capacitor Bus tile.charge_c4.name=Demolition Charge @@ -4692,6 +4693,8 @@ tile.conveyor_chute.name=Conveyor Chute tile.conveyor_chute.desc=Moves items down$The bottom-most chute will act like a regular conveyor belt tile.conveyor_double.name=Double-Lane Conveyor Belt tile.conveyor_double.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend +tile.conveyor_express.name=Express Conveyor Belt +tile.conveyor_express.desc=Moves items dropped on it very fast$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend tile.conveyor_lift.name=Conveyor Chain Lift tile.conveyor_lift.desc=Moves items up$Requires at least two blocks on top of each other to work properly tile.conveyor_triple.name=Triple-Lane Conveyor Belt diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png new file mode 100644 index 0000000000000000000000000000000000000000..df5c9a664bf705b75409371b676cbc4110338757 GIT binary patch literal 921 zcmV;K17`e*P)EK|00004b3#c}2nYxW zd5Z5?`l~!1pfE}68S}+LMNx{r&MaiiG10#_@}aQ5H%q!GwhXJ=>MKYe)3 zyKyeo>}EXUYE#sIU~jIY4%{;&-& zI7k2}%aSxr+1uMANs=|k#bQBKRn&D&p63h?-vA4CcK3(eUrh1dQxpZU$rS;twODHb zm`o-N4ic90n>GUg=Nxx;cVW%qELoIgi7_V3kFMVXtTeFJlIQu88N_qmd%j-Xwi+zw zP0--{{G2pR$+8UZeQ-*W_VcY8#L(*ED#%_BiLbyu93S*j5km+|KU) zkml-^BWpvdqWZ6N_$C2F#3V_WOeUmh%6L4+ITv*3YGAG9@!GFM6gxdV4dZyr;<;{C zp%Tloq%6xd=U;KrTpavDT^6jhVM$q*0q`HNoHwgoh&AxOeJ>hFHdR&O zoWolCvkq=r4VtT40P;NF*v5D_vMdXAAU*?Gg7<#I8Cpi1a~NaRfEt~=U5O|sDohH~ z3x+8aQoR0n-J*QFr1qS5s{nuY$5pP>g~xlpQApcNVN#eBrrva_10ZaP^a9Sg4Kc-x zF(gUC=;ZCHkQ63`Np?Z9c!4nWpi><{yN$Bm?lCSRajff_`-^F-fx@IPp)f&zI@P#8 z*oLx<#Zh2d&L0#eg-KzGGw4C5DkdyEMdNrp23i^$sYKBLltxe*mBwe?>b4p@V2oM& zKQNt6HH<-B2Zas+${>Bo-UEV`yJDNI2Fc-b(?3D37v9qjH8 zLm`RDJ%pz$4z4gMObSzPI@JNJo-GoS^yMY*XR}!dcz@CUpHP?-CWVQ05ub6VDjyU@ z5th&`Ww~lqRX|Ja7cFHi<^NYHYoGWVe%j*al_lNSIX-sBfWm~rq%ifTPh8F$hKGLv zFr7{}bPzGqG^MWVa3A8^K?2+;ObXK~z)OcoH0VL68mr!Q5{u^pji4~ei3*d#^t?OO v!A5x6N{h`Hv-LY-Id2pug$aeJH=XJa5dQ-mcLDsZ00000NkvXXu0mjfO?IV0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta new file mode 100644 index 000000000..df9cfce6e --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/conveyor_express.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": { } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_express_curve_left.png new file mode 100644 index 0000000000000000000000000000000000000000..dc1fd209b4a9a046083f4c333b4501a47bf2c3bf GIT binary patch literal 3495 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 xq?a1+^5#cBo7+t Date: Tue, 12 Sep 2023 15:00:33 +0200 Subject: [PATCH 025/207] Make ModSoundType more versatile - Fine-grained control over block sound subtypes - Allows copying from existing sounds - Volume and pitch envelopes Also moved custom sound types into their own class. --- src/main/java/com/hbm/blocks/ModBlocks.java | 90 +++++----- .../java/com/hbm/blocks/ModSoundType.java | 158 +++++++++++++++++- .../java/com/hbm/blocks/ModSoundTypes.java | 7 + 3 files changed, 199 insertions(+), 56 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/ModSoundTypes.java diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 7601d719a..196925a44 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1,38 +1,37 @@ package com.hbm.blocks; -import com.hbm.blocks.generic.*; -import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; -import com.hbm.blocks.generic.BlockMotherOfAllOres.ItemRandomOreBlock; import com.hbm.blocks.BlockEnums.*; import com.hbm.blocks.bomb.*; import com.hbm.blocks.fluid.*; import com.hbm.blocks.gas.*; +import com.hbm.blocks.generic.*; +import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; +import com.hbm.blocks.generic.BlockMotherOfAllOres.ItemRandomOreBlock; import com.hbm.blocks.machine.*; import com.hbm.blocks.machine.pile.*; import com.hbm.blocks.machine.rbmk.*; import com.hbm.blocks.network.*; -import com.hbm.blocks.rail.RailNarrowCurve; -import com.hbm.blocks.rail.RailNarrowStraight; -import com.hbm.blocks.rail.RailStandardBuffer; -import com.hbm.blocks.rail.RailStandardCurve; -import com.hbm.blocks.rail.RailStandardRamp; -import com.hbm.blocks.rail.RailStandardStraight; -import com.hbm.blocks.siege.*; +import com.hbm.blocks.rail.*; +import com.hbm.blocks.siege.SiegeCircuit; +import com.hbm.blocks.siege.SiegeHole; +import com.hbm.blocks.siege.SiegeInternal; +import com.hbm.blocks.siege.SiegeShield; import com.hbm.blocks.test.*; import com.hbm.blocks.turret.*; import com.hbm.items.block.*; -import com.hbm.items.bomb.*; +import com.hbm.items.bomb.ItemPrototypeBlock; import com.hbm.items.special.ItemOreBlock; import com.hbm.lib.ModDamageSource; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.machine.storage.TileEntityFileCabinet; - import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; -import net.minecraft.block.material.*; +import net.minecraft.block.material.MapColor; +import net.minecraft.block.material.Material; +import net.minecraft.block.material.MaterialLiquid; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemBlock; import net.minecraftforge.fluids.Fluid; @@ -1263,19 +1262,6 @@ public class ModBlocks { public static Material materialGas = new MaterialGas(); - public static Block.SoundType soundTypeGrate = new ModSoundType("metalBlock", 0.5F, 1.0F) { - - @Override - public String func_150496_b() { - return Block.soundTypeMetal.func_150496_b(); - } - - @Override - public String getBreakSound() { - return "dig.stone"; - } - }; - private static void initializeBlock() { test_render = new TestRender(Material.rock).setBlockName("test_render").setCreativeTab(null); @@ -1676,33 +1662,33 @@ public class ModBlocks { steel_roof = new DecoBlock(Material.iron).setBlockName("steel_roof").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_roof"); steel_beam = new DecoBlock(Material.iron).setBlockName("steel_beam").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_beam"); steel_scaffold = new BlockScaffold().setBlockName("steel_scaffold").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel_orig"); - steel_grate = new BlockGrate(Material.iron).setBlockName("steel_grate").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); - steel_grate_wide = new BlockGrate(Material.iron).setBlockName("steel_grate_wide").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); + steel_grate = new BlockGrate(Material.iron).setBlockName("steel_grate").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); + steel_grate_wide = new BlockGrate(Material.iron).setBlockName("steel_grate_wide").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); - deco_pipe = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 0).setBlockName("deco_pipe").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 0).setBlockName("deco_pipe_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 0).setBlockName("deco_pipe_green").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 0).setBlockName("deco_pipe_green_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 0).setBlockName("deco_pipe_red").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 0).setBlockName("deco_pipe_marked").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - deco_pipe_rim = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 1).setBlockName("deco_pipe_rim").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_rim_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 1).setBlockName("deco_pipe_rim_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_rim_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 1).setBlockName("deco_pipe_rim_green").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_rim_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 1).setBlockName("deco_pipe_rim_green_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_rim_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 1).setBlockName("deco_pipe_rim_red").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_rim_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 1).setBlockName("deco_pipe_rim_marked").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - deco_pipe_framed = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 3).setBlockName("deco_pipe_framed").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_framed_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 3).setBlockName("deco_pipe_framed_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_framed_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 3).setBlockName("deco_pipe_framed_green").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_framed_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 3).setBlockName("deco_pipe_framed_green_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_framed_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 3).setBlockName("deco_pipe_framed_red").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_framed_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 3).setBlockName("deco_pipe_framed_marked").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - deco_pipe_quad = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 2).setBlockName("deco_pipe_quad").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_quad_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 2).setBlockName("deco_pipe_quad_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_quad_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 2).setBlockName("deco_pipe_quad_green").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_quad_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 2).setBlockName("deco_pipe_quad_green_rusted").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_quad_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 2).setBlockName("deco_pipe_quad_red").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_quad_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 2).setBlockName("deco_pipe_quad_marked").setStepSound(soundTypeGrate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 0).setBlockName("deco_pipe").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 0).setBlockName("deco_pipe_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 0).setBlockName("deco_pipe_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 0).setBlockName("deco_pipe_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 0).setBlockName("deco_pipe_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 0).setBlockName("deco_pipe_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe_rim = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 1).setBlockName("deco_pipe_rim").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_rim_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 1).setBlockName("deco_pipe_rim_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_rim_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 1).setBlockName("deco_pipe_rim_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_rim_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 1).setBlockName("deco_pipe_rim_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_rim_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 1).setBlockName("deco_pipe_rim_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_rim_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 1).setBlockName("deco_pipe_rim_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe_framed = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 3).setBlockName("deco_pipe_framed").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_framed_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 3).setBlockName("deco_pipe_framed_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_framed_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 3).setBlockName("deco_pipe_framed_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_framed_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 3).setBlockName("deco_pipe_framed_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_framed_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 3).setBlockName("deco_pipe_framed_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_framed_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 3).setBlockName("deco_pipe_framed_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe_quad = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 2).setBlockName("deco_pipe_quad").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_quad_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 2).setBlockName("deco_pipe_quad_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_quad_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 2).setBlockName("deco_pipe_quad_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_quad_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 2).setBlockName("deco_pipe_quad_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_quad_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 2).setBlockName("deco_pipe_quad_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_quad_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 2).setBlockName("deco_pipe_quad_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); broadcaster_pc = new PinkCloudBroadcaster(Material.iron).setBlockName("broadcaster_pc").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":broadcaster_pc"); geiger = new GeigerCounter(Material.iron).setBlockName("geiger").setCreativeTab(MainRegistry.machineTab).setHardness(15.0F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":geiger"); diff --git a/src/main/java/com/hbm/blocks/ModSoundType.java b/src/main/java/com/hbm/blocks/ModSoundType.java index 331a7e27a..0bd8e8a46 100644 --- a/src/main/java/com/hbm/blocks/ModSoundType.java +++ b/src/main/java/com/hbm/blocks/ModSoundType.java @@ -2,18 +2,168 @@ package com.hbm.blocks; import net.minecraft.block.Block; +import java.util.Random; + public class ModSoundType extends Block.SoundType { + protected final String placeSound; + protected final String breakSound; + protected final String stepSound; - public ModSoundType(String name, float volume, float pitch) { - super(name, volume, pitch); + protected ModSoundType(String placeSound, String breakSound, String stepSound, float volume, float pitch) { + super("", volume, pitch); + this.placeSound = placeSound; + this.breakSound = breakSound; + this.stepSound = stepSound; } + public ModEnvelopedSoundType enveloped() { + return new ModEnvelopedSoundType(placeSound, breakSound, stepSound, volume, frequency); + } + + public ModEnvelopedSoundType enveloped(Random random) { + return new ModEnvelopedSoundType(placeSound, breakSound, stepSound, volume, frequency, random); + } + + @Override + public String func_150496_b() { + return placeSound; + } + + @Override public String getBreakSound() { - return "hbm:" + super.getBreakSound(); + return breakSound; } + @Override public String getStepResourcePath() { - return "hbm:" + super.getStepResourcePath(); + return stepSound; } + // creates a sound type with vanilla-like sound strings name-spaced to the mod + public static ModSoundType mod(String soundName, float volume, float pitch) { + return new ModSoundType(modDig(soundName), modDig(soundName), modStep(soundName), volume, pitch); + } + + // these permutations allow creating a sound type with one of the three sounds being custom + // and the other ones defaulting to vanilla-like sound strings name-spaced to the mod + + public static ModSoundType customPlace(String soundName, String placeSound, float volume, float pitch) { + return new ModSoundType(placeSound, modDig(soundName), modStep(soundName), volume, pitch); + } + + public static ModSoundType customBreak(String soundName, String breakSound, float volume, float pitch) { + return new ModSoundType(modDig(soundName), breakSound, modStep(soundName), volume, pitch); + } + + public static ModSoundType customStep(String soundName, String stepSound, float volume, float pitch) { + return new ModSoundType(modDig(soundName), modDig(soundName), stepSound, volume, pitch); + } + + public static ModSoundType customDig(String soundName, String digSound, float volume, float pitch) { + return new ModSoundType(digSound, digSound, modStep(soundName), volume, pitch); + } + + // these permutations copy sounds from an existing sound type and modify one of the sounds, + // but with a manual path for the custom sound + + public static ModSoundType customPlace(Block.SoundType from, String placeSound, float volume, float pitch) { + return new ModSoundType(placeSound, from.getBreakSound(), from.getStepResourcePath(), volume, pitch); + } + + public static ModSoundType customBreak(Block.SoundType from, String breakSound, float volume, float pitch) { + return new ModSoundType(from.func_150496_b(), breakSound, from.getStepResourcePath(), volume, pitch); + } + + public static ModSoundType customStep(Block.SoundType from, String stepSound, float volume, float pitch) { + return new ModSoundType(from.func_150496_b(), from.getBreakSound(), stepSound, volume, pitch); + } + + public static ModSoundType customDig(Block.SoundType from, String dig, float volume, float pitch) { + return new ModSoundType(dig, dig, from.getStepResourcePath(), volume, pitch); + } + + // customizes all sounds + public static ModSoundType placeBreakStep(String placeSound, String breakSound, String stepSound, float volume, float pitch) { + return new ModSoundType(placeSound, breakSound, stepSound, volume, pitch); + } + + private static String modDig(String soundName) { + return "hbm:dig." + soundName; + } + + private static String modStep(String soundName) { + return "hbm:step." + soundName; + } + + public static class ModEnvelopedSoundType extends ModSoundType { + private final Random random; + + ModEnvelopedSoundType(String placeSound, String breakSound, String stepSound, float volume, float pitch, Random random) { + super(placeSound, breakSound, stepSound, volume, pitch); + this.random = random; + } + + ModEnvelopedSoundType(String placeSound, String breakSound, String stepSound, float volume, float pitch) { + this(placeSound, breakSound, stepSound, volume, pitch, new Random()); + } + + // a bit of a hack, but most of the time, playSound is called with the sound path queried first, and then volume and pitch + private SubType probableSubType = SubType.PLACE; + + @Override + public String func_150496_b() { + probableSubType = SubType.PLACE; + return super.func_150496_b(); + } + + @Override + public String getBreakSound() { + probableSubType = SubType.BREAK; + return super.getBreakSound(); + } + + @Override + public String getStepResourcePath() { + probableSubType = SubType.STEP; + return super.getStepResourcePath(); + } + + private Envelope volumeEnvelope = null; + private Envelope pitchEnvelope = null; + + public ModEnvelopedSoundType volumeFunction(Envelope volumeEnvelope) { + this.volumeEnvelope = volumeEnvelope; + return this; + } + + public ModEnvelopedSoundType pitchFunction(Envelope pitchEnvelope) { + this.pitchEnvelope = pitchEnvelope; + return this; + } + + @Override + public float getVolume() { + if (volumeEnvelope == null) + return super.getVolume(); + else + return volumeEnvelope.compute(super.getVolume(), random, probableSubType); + } + + @Override + public float getPitch() { + if (pitchEnvelope == null) + return super.getPitch(); + else + return pitchEnvelope.compute(super.getPitch(), random, probableSubType); + } + + @FunctionalInterface + public interface Envelope { + float compute(float in, Random rand, SubType type); + } + } + + public enum SubType { + PLACE, BREAK, STEP + } } diff --git a/src/main/java/com/hbm/blocks/ModSoundTypes.java b/src/main/java/com/hbm/blocks/ModSoundTypes.java new file mode 100644 index 000000000..2b4213cd4 --- /dev/null +++ b/src/main/java/com/hbm/blocks/ModSoundTypes.java @@ -0,0 +1,7 @@ +package com.hbm.blocks; + +import net.minecraft.block.Block; + +class ModSoundTypes { + static final ModSoundType grate = ModSoundType.customStep(Block.soundTypeStone, "hbm:step.metalBlock", 0.5F, 1.0F); +} From 283569d28f985897dc237018f2b53aa39121dd70 Mon Sep 17 00:00:00 2001 From: MartinTheDragon Date: Tue, 12 Sep 2023 15:25:13 +0200 Subject: [PATCH 026/207] Play pipe sound when placing default ducts --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../java/com/hbm/blocks/ModSoundTypes.java | 2 + .../com/hbm/items/machine/ItemFluidDuct.java | 7 +- src/main/java/com/hbm/main/MainRegistry.java | 140 +++++++++--------- 4 files changed, 73 insertions(+), 78 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 196925a44..868165597 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1958,7 +1958,7 @@ public class ModBlocks { machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off"); fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon"); fluid_duct_solid = new BlockFluidDuctSolid(Material.iron).setBlockName("fluid_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_solid"); - fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); + fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); fluid_duct_exhaust = new FluidDuctBoxExhaust(Material.iron).setBlockName("fluid_duct_exhaust").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); fluid_duct_paintable = new FluidDuctPaintable().setBlockName("fluid_duct_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); diff --git a/src/main/java/com/hbm/blocks/ModSoundTypes.java b/src/main/java/com/hbm/blocks/ModSoundTypes.java index 2b4213cd4..544f70c1e 100644 --- a/src/main/java/com/hbm/blocks/ModSoundTypes.java +++ b/src/main/java/com/hbm/blocks/ModSoundTypes.java @@ -1,7 +1,9 @@ package com.hbm.blocks; +import com.hbm.main.MainRegistry; import net.minecraft.block.Block; class ModSoundTypes { static final ModSoundType grate = ModSoundType.customStep(Block.soundTypeStone, "hbm:step.metalBlock", 0.5F, 1.0F); + static final ModSoundType pipe = ModSoundType.customDig(Block.soundTypeMetal, "hbm:block.pipePlaced", 0.85F, 0.65F).enveloped(MainRegistry.instance.rand).pitchFunction((in, rand, type) -> { if (type == ModSoundType.SubType.BREAK) in -= 0.15F; return type == ModSoundType.SubType.STEP ? in : in + rand.nextFloat() * 0.2F; }); } diff --git a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java index b366e39ea..93413ee62 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java @@ -1,12 +1,9 @@ package com.hbm.items.machine; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.tileentity.network.TileEntityPipeBaseNT; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -19,6 +16,8 @@ import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import java.util.List; + public class ItemFluidDuct extends Item { IIcon overlayIcon; @@ -126,8 +125,6 @@ public class ItemFluidDuct extends Item { ((TileEntityPipeBaseNT) world.getTileEntity(x, y, z)).setType(Fluids.fromID(stack.getItemDamage())); } - world.playSoundEffect(x, y, z, "hbm:block.pipePlaced", 1.0F, 0.65F + world.rand.nextFloat() * 0.2F); - return true; } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 7c3542ec2..44e8ebca1 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1,6 +1,71 @@ package com.hbm.main; +import com.google.common.collect.ImmutableList; +import com.hbm.blocks.BlockEnums.EnumStoneType; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres; +import com.hbm.blocks.generic.BlockToolConversion; +import com.hbm.commands.CommandDebugChunkLoad; +import com.hbm.commands.CommandReloadRecipes; import com.hbm.commands.CommandSatellites; +import com.hbm.config.*; +import com.hbm.crafting.RodRecipes; +import com.hbm.creativetabs.*; +import com.hbm.entity.EntityMappings; +import com.hbm.entity.grenade.*; +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.entity.mob.siege.SiegeTier; +import com.hbm.handler.*; +import com.hbm.handler.imc.IMCBlastFurnace; +import com.hbm.handler.imc.IMCCentrifuge; +import com.hbm.handler.imc.IMCCrystallizer; +import com.hbm.handler.imc.IMCHandler; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.hazard.HazardRegistry; +import com.hbm.inventory.FluidContainerRegistry; +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.*; +import com.hbm.inventory.recipes.anvil.AnvilRecipes; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; +import com.hbm.items.ItemEnums.EnumAchievementType; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemFertilizer; +import com.hbm.items.weapon.ItemGenericGrenade; +import com.hbm.lib.HbmWorld; +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.potion.HbmPotion; +import com.hbm.saveddata.satellites.Satellite; +import com.hbm.tileentity.TileMappings; +import com.hbm.tileentity.bomb.TileEntityNukeCustom; +import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; +import com.hbm.tileentity.machine.TileEntityNukeFurnace; +import com.hbm.tileentity.machine.rbmk.RBMKDials; +import com.hbm.util.*; +import com.hbm.world.feature.BedrockOre; +import com.hbm.world.feature.OreCave; +import com.hbm.world.feature.OreLayer3D; +import com.hbm.world.feature.SchistStratum; +import com.hbm.world.generator.CellularDungeonFactory; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.Mod.EventHandler; +import cpw.mods.fml.common.Mod.Instance; +import cpw.mods.fml.common.Mod.Metadata; +import cpw.mods.fml.common.ModMetadata; +import cpw.mods.fml.common.SidedProxy; +import cpw.mods.fml.common.event.*; +import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; +import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; import net.minecraft.block.BlockDispenser; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.dispenser.BehaviorDefaultDispenseItem; @@ -26,12 +91,8 @@ import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.util.EnumHelper; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.Mod.Metadata; -import cpw.mods.fml.common.ModMetadata; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.File; import java.util.HashMap; @@ -40,71 +101,6 @@ import java.util.List; import java.util.Map.Entry; import java.util.Random; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import com.google.common.collect.ImmutableList; -import com.hbm.blocks.BlockEnums.EnumStoneType; -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockMotherOfAllOres; -import com.hbm.blocks.generic.BlockToolConversion; -import com.hbm.commands.CommandDebugChunkLoad; -import com.hbm.commands.CommandReloadRecipes; -import com.hbm.config.*; -import com.hbm.crafting.RodRecipes; -import com.hbm.creativetabs.*; -import com.hbm.entity.EntityMappings; -import com.hbm.entity.grenade.*; -import com.hbm.entity.logic.*; -import com.hbm.entity.mob.siege.*; -import com.hbm.handler.*; -import com.hbm.handler.imc.*; -import com.hbm.handler.pollution.PollutionHandler; -import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.hazard.HazardRegistry; -import com.hbm.inventory.*; -import com.hbm.inventory.OreDictManager.DictFrame; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.recipes.*; -import com.hbm.inventory.recipes.anvil.AnvilRecipes; -import com.hbm.inventory.recipes.loader.SerializableRecipe; -import com.hbm.items.ModItems; -import com.hbm.items.tool.ItemFertilizer; -import com.hbm.items.weapon.ItemGenericGrenade; -import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; -import com.hbm.items.ItemEnums.EnumAchievementType; -import com.hbm.lib.HbmWorld; -import com.hbm.lib.Library; -import com.hbm.lib.RefStrings; -import com.hbm.packet.PacketDispatcher; -import com.hbm.potion.HbmPotion; -import com.hbm.saveddata.satellites.Satellite; -import com.hbm.tileentity.TileMappings; -import com.hbm.tileentity.bomb.TileEntityNukeCustom; -import com.hbm.tileentity.machine.*; -import com.hbm.tileentity.machine.rbmk.RBMKDials; -import com.hbm.util.AchievementHandler; -import com.hbm.util.ArmorUtil; -import com.hbm.util.Compat; -import com.hbm.util.StatHelper; -import com.hbm.util.SuicideThreadDump; -import com.hbm.world.feature.*; -import com.hbm.world.generator.CellularDungeonFactory; - -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLMissingMappingsEvent; -import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; -import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; -import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.event.FMLServerStartedEvent; -import cpw.mods.fml.common.event.FMLServerStartingEvent; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.relauncher.Side; - @Mod(modid = RefStrings.MODID, name = RefStrings.NAME, version = RefStrings.VERSION) public class MainRegistry { @@ -249,7 +245,7 @@ public class MainRegistry { public static File configDir; public static File configHbmDir; - Random rand = new Random(); + public Random rand = new Random(); @EventHandler public void PreLoad(FMLPreInitializationEvent PreEvent) { From 282228239f6a2b821b807c3b91feeaf01b7a935d Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 12 Sep 2023 22:04:26 +0200 Subject: [PATCH 027/207] fixes, armor sprites --- .../java/com/hbm/handler/HazmatRegistry.java | 6 ++++++ .../hbm/handler/nei/CustomMachineHandler.java | 2 -- src/main/java/com/hbm/items/ModItems.java | 4 +++- .../hbm/items/armor/ArmorTrenchmaster.java | 20 ++++++++++++++++++ src/main/java/com/hbm/main/MainRegistry.java | 6 +++--- .../hbm/textures/items/trenchmaster_boots.png | Bin 0 -> 164 bytes .../textures/items/trenchmaster_helmet.png | Bin 0 -> 347 bytes .../hbm/textures/items/trenchmaster_legs.png | Bin 0 -> 240 bytes .../hbm/textures/items/trenchmaster_plate.png | Bin 0 -> 392 bytes 9 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/trenchmaster_boots.png create mode 100644 src/main/resources/assets/hbm/textures/items/trenchmaster_helmet.png create mode 100644 src/main/resources/assets/hbm/textures/items/trenchmaster_legs.png create mode 100644 src/main/resources/assets/hbm/textures/items/trenchmaster_plate.png diff --git a/src/main/java/com/hbm/handler/HazmatRegistry.java b/src/main/java/com/hbm/handler/HazmatRegistry.java index 1d6b322b1..07e7df1b0 100644 --- a/src/main/java/com/hbm/handler/HazmatRegistry.java +++ b/src/main/java/com/hbm/handler/HazmatRegistry.java @@ -56,6 +56,7 @@ public class HazmatRegistry { double env = 2D; // 99% double hev = 2.3D; // 99.5% double rpa = 2D; // 99% + double trench = 1D; // 90% double fau = 4D; // 99.99% double dns = 5D; // 99.999% double security = 0.825D; // 85% @@ -124,6 +125,11 @@ public class HazmatRegistry { HazmatRegistry.registerHazmat(ModItems.rpa_legs, rpa * legs); HazmatRegistry.registerHazmat(ModItems.rpa_boots, rpa * boots); + HazmatRegistry.registerHazmat(ModItems.trenchmaster_helmet, trench * helmet); + HazmatRegistry.registerHazmat(ModItems.trenchmaster_plate, trench * chest); + HazmatRegistry.registerHazmat(ModItems.trenchmaster_legs, trench * legs); + HazmatRegistry.registerHazmat(ModItems.trenchmaster_boots, trench * boots); + HazmatRegistry.registerHazmat(ModItems.fau_helmet, fau * helmet); HazmatRegistry.registerHazmat(ModItems.fau_plate, fau * chest); HazmatRegistry.registerHazmat(ModItems.fau_legs, fau * legs); diff --git a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java index cf3570f79..17acd394c 100644 --- a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java +++ b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java @@ -132,8 +132,6 @@ public class CustomMachineHandler extends TemplateRecipeHandler { List recipes = CustomMachineRecipes.recipes.get(conf.recipeKey); - System.out.println(conf.recipeKey); - if(recipes != null) outer:for(CustomMachineRecipe recipe : recipes) { for(Pair stack : recipe.outputItems) { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 90b3279b0..2d0270f08 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4956,12 +4956,14 @@ public class ModItems { ArmorMaterial aMatTrench = EnumHelper.addArmorMaterial("HBM_TRENCH", 150, new int[] { 3, 8, 6, 3 }, 100); aMatTrench.customCraftingMaterial = ModItems.plate_iron; - trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") + trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.25F).setThreshold(5.0F) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 0)) .enableVATS(true) + .addResistance("fall", 0F) + .setFireproof(true) .setStepSize(1) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("trenchmaster_helmet").setTextureName(RefStrings.MODID + ":trenchmaster_helmet"); diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java index e4c42037e..ec497410c 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -2,6 +2,7 @@ package com.hbm.items.armor; import java.util.List; +import com.hbm.extprop.HbmPlayerProps; import com.hbm.render.model.ModelArmorTrenchmaster; import com.hbm.util.I18nUtil; @@ -12,6 +13,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.event.entity.living.LivingAttackEvent; public class ArmorTrenchmaster extends ArmorFSB { @@ -43,4 +45,22 @@ public class ArmorTrenchmaster extends ArmorFSB { list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fasterReload")); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.moreAmmo")); } + + @Override + public void handleAttack(LivingAttackEvent event) { + + EntityLivingBase e = event.entityLiving; + + if(e instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) e; + + if(ArmorFSB.hasFSBArmor(player)) { + + if(e.getRNG().nextInt(3) == 0) { + HbmPlayerProps.plink(player, "random.break", 0.5F, 1.0F + e.getRNG().nextFloat() * 0.5F); + event.setCanceled(true); + } + } + } + } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 7c3542ec2..23e7a4a92 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -289,6 +289,9 @@ public class MainRegistry { SiegeTier.registerTiers(); HazardRegistry.registerItems(); HazardRegistry.registerTrafos(); + + OreDictManager oreMan = new OreDictManager(); + MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent OreDictManager.registerGroups(); //important to run first OreDictManager.registerOres(); @@ -899,9 +902,6 @@ public class MainRegistry { MinecraftForge.EVENT_BUS.register(impactHandler); MinecraftForge.TERRAIN_GEN_BUS.register(impactHandler); - OreDictManager oreMan = new OreDictManager(); - MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent - PacketDispatcher.registerPackets(); ChunkRadiationManager radiationSystem = new ChunkRadiationManager(); diff --git a/src/main/resources/assets/hbm/textures/items/trenchmaster_boots.png b/src/main/resources/assets/hbm/textures/items/trenchmaster_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..509f7cae63cdddc78aa22a7d84ee1d5da77750c2 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf z{)#QRVdmG84vtHL4lZo**^K9S-uXuUS>~%A^09l{pJv_yM!RgibtQ>=K<;7iboFyt I=akR{0G@9(n*aa+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/trenchmaster_helmet.png b/src/main/resources/assets/hbm/textures/items/trenchmaster_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..b12e0e69f292402234ccf6956dc2223c9ee74daa GIT binary patch literal 347 zcmV-h0i^zkP)08mO9t+lW}9&WBo5NrV0@4t9_ zeisvZR&&lluwnP~!tVZ-!Dz8Tk|YLzpAV2*H+O1;IF1d#_2mWj2ydU?0F-4ZW(@}M zDQpt~5Jk}<;a{q%5^I32>(E+@G);}?dH;&~zNaXPV+Sh$t+h}}82~9I`Rg5do+G6k z#c&weF&H7YhYifd7VD{GmSq66ZR^BC2R6qJ>`RnV(zdPhY_VNCdx=XK-FKR%2B2vg tC-3_{fU|)~gMly%o!hAEdbai~egT>IY}~g=gL?n~002ovPDHLkV1g7Xk6r)( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/trenchmaster_legs.png b/src/main/resources/assets/hbm/textures/items/trenchmaster_legs.png new file mode 100644 index 0000000000000000000000000000000000000000..48e7b3e7cc0b10eec7ca82ed944ffe688890ae95 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfCs&GFz2nV5|B2Law2XX|d~khQz($#(9TtMK8s z|1vp`JzspGBiBvnRuNCm%3A zSjeAX8)0`#|GvzG$8t}*MKkyg$ZTLZy3MrCys^W8M|%)NZ4fq4*&hbo$#yd_n80i>G4uwWz*Be! zZ{Z0{RWumgV0Q-AU{KgZSi1#j1Lu?i`%;qLbzzHiZ{rkTwKT1Huw!3fUV69q?F8Nv&?QC^4iJx z3kPwM5+^B#1D7~Sc^D;G94Bd|VFRGs^Nl@>5N<(G=ImQ*#bg{c9DtLf{Y)@@eM6}^ zgVsAY=>o31j8gL~@2#(8@#$Igd4uiMrHnkkxB}p^#=*hyUUh{$>}RnS^D6?}N7sd# m$`Q3zg<^ooIBHn_&+!3*xQFmFi(-iY0000 Date: Wed, 13 Sep 2023 13:32:33 +0200 Subject: [PATCH 028/207] dude why --- src/main/java/com/hbm/items/weapon/ItemGunBase.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index aabdc3bfd..2a6eff682 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -134,13 +134,15 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu setIsMouseDown(stack, false); } - if(getBurstDuration(stack) > 0) { + int burstDuration = getBurstDuration(stack); + if(burstDuration > 0) { + if(altConfig == null) { - if (world.getWorldTime() % mainConfig.firingDuration == 0 && tryShoot(stack, world, player, true)) { + if (burstDuration % mainConfig.firingDuration == 0 && tryShoot(stack, world, player, true)) { fire(stack, world, player); } } else { - boolean canFire = altConfig.firingDuration == 1 || world.getWorldTime() % altConfig.firingDuration == 0; + boolean canFire = altConfig.firingDuration == 1 || burstDuration % altConfig.firingDuration == 0; if (canFire && tryShoot(stack, world, player, false)) { altFire(stack, world, player); } From 82fca1ce88d60af39c37a0d2af8d96004f5b3d75 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 14 Sep 2023 23:16:53 +0200 Subject: [PATCH 029/207] even girthier smokestacks --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../blocks/machine/MachineChimneyBrick.java | 12 +- .../machine/MachineChimneyIndustrial.java | 54 + .../inventory/recipes/anvil/AnvilRecipes.java | 12 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 2 + .../tileentity/RenderChimneyIndustrial.java | 56 + .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityChimneyBase.java | 86 ++ .../machine/TileEntityChimneyBrick.java | 97 +- .../machine/TileEntityChimneyIndustrial.java | 59 + .../TileEntityMachineAssemblerBase.java | 2 +- .../machine/TileEntityMachineChemplant.java | 4 +- .../TileEntityMachineChemplantBase.java | 4 +- src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 3 + .../models/machines/chimney_industrial.obj | 1224 +++++++++++++++++ .../hbm/textures/items/powder_ash.fly.png | Bin 0 -> 288 bytes .../models/machines/chimney_industrial.png | Bin 0 -> 8033 bytes 19 files changed, 1535 insertions(+), 88 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderChimneyIndustrial.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java create mode 100644 src/main/resources/assets/hbm/models/machines/chimney_industrial.obj create mode 100644 src/main/resources/assets/hbm/textures/items/powder_ash.fly.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/chimney_industrial.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 868165597..f08d42a0f 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -979,6 +979,7 @@ public class ModBlocks { public static Block machine_flare; public static Block chimney_brick; + public static Block chimney_industrial; public static Block machine_refinery; public static Block machine_vacuum_distill; @@ -2238,6 +2239,7 @@ public class ModBlocks { oil_pipe = new BlockNoDrop(Material.iron).setBlockName("oil_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_pipe"); machine_flare = new MachineGasFlare(Material.iron).setBlockName("machine_flare").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); chimney_brick = new MachineChimneyBrick(Material.iron).setBlockName("chimney_brick").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + chimney_industrial = new MachineChimneyIndustrial(Material.iron).setBlockName("chimney_industrial").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete_colored_ext.machine"); machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_refinery"); machine_vacuum_distill = new MachineVacuumDistill(Material.iron).setBlockName("machine_vacuum_distill").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_fraction_tower = new MachineFractionTower(Material.iron).setBlockName("machine_fraction_tower").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3323,6 +3325,7 @@ public class ModBlocks { register(machine_fracking_tower); register(machine_flare); register(chimney_brick); + register(chimney_industrial); register(machine_refinery); register(machine_vacuum_distill); register(machine_fraction_tower); diff --git a/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java b/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java index ab6bf4bbc..7c8f40bc2 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java +++ b/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java @@ -1,15 +1,20 @@ package com.hbm.blocks.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityChimneyBrick; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class MachineChimneyBrick extends BlockDummyable { +public class MachineChimneyBrick extends BlockDummyable implements ITooltipProvider { public MachineChimneyBrick(Material mat) { super(mat); @@ -41,4 +46,9 @@ public class MachineChimneyBrick extends BlockDummyable { this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1); this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java b/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java new file mode 100644 index 000000000..036273535 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java @@ -0,0 +1,54 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityChimneyIndustrial; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineChimneyIndustrial extends BlockDummyable implements ITooltipProvider { + + public MachineChimneyIndustrial(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityChimneyIndustrial(); + if(meta >= 6) return new TileEntityProxyCombo().fluid(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {22, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 607b9f289..28ad6600b 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -452,10 +452,20 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(STEEL.plate(), 4), - new ComparableStack(Blocks.brick_block, 16) + new ComparableStack(Blocks.brick_block, 16), + new ComparableStack(ModBlocks.steel_grate, 2) }, new AnvilOutput(new ItemStack(ModBlocks.chimney_brick))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(STEEL.plate(), 16), + new OreDictStack(ANY_CONCRETE.any(), 64), + new ComparableStack(ModBlocks.steel_grate, 4), + new ComparableStack(ModItems.filter_coal, 4) + }, + new AnvilOutput(new ItemStack(ModBlocks.chimney_industrial))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.tank_steel, 1), diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c9800c9a6..8272517cf 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -215,6 +215,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyIndustrial.class, new RenderChimneyIndustrial()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningLaser.class, new RenderLaserMiner()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 7a0ff4d0c..c6260e18f 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -83,6 +83,7 @@ public class ResourceManager { //Flare Stack public static final IModelCustom oilflare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/flare_stack.obj")); public static final IModelCustom chimney_brick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_brick.obj")); + public static final IModelCustom chimney_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_industrial.obj")); //Tank public static final IModelCustom fluidtank = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank.obj")); @@ -437,6 +438,7 @@ public class ResourceManager { //Flare Stack public static final ResourceLocation oilflare_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/flare_stack.png"); public static final ResourceLocation chimney_brick_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chimney_brick.png"); + public static final ResourceLocation chimney_industrial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chimney_industrial.png"); //Tank public static final ResourceLocation tank_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderChimneyIndustrial.java b/src/main/java/com/hbm/render/tileentity/RenderChimneyIndustrial.java new file mode 100644 index 000000000..b29da43dd --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderChimneyIndustrial.java @@ -0,0 +1,56 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderChimneyIndustrial extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotatef(180, 0F, 1F, 0F); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.chimney_industrial_tex); + ResourceManager.chimney_industrial.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.chimney_industrial); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(2.75, 2.75, 2.75); + } + public void renderCommon() { + GL11.glScaled(0.25, 0.25, 0.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.chimney_industrial_tex); + ResourceManager.chimney_industrial.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 3274e10a2..f865030c1 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -329,6 +329,7 @@ public class TileMappings { put(TileEntityMachineCatalyticReformer.class, "tileentity_catalytic_reformer"); put(TileEntityMachineCoker.class, "tileentity_coker"); put(TileEntityChimneyBrick.class, "tileentity_chimney_brick"); + put(TileEntityChimneyIndustrial.class, "tileentity_chimney_industrial"); put(TileEntityReactorZirnox.class, "tileentity_zirnox"); put(TileEntityZirnoxDestroyed.class, "tileentity_zirnox_destroyed"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java new file mode 100644 index 000000000..c942a55e7 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java @@ -0,0 +1,86 @@ +package com.hbm.tileentity.machine; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.lib.Library; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; + +import api.hbm.fluid.IFluidUser; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; + +public abstract class TileEntityChimneyBase extends TileEntityLoadedBase implements IFluidUser, INBTPacketReceiver { + + public int onTicks; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) { + FluidType[] types = new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON}; + + for(FluidType type : types) { + this.trySubscribe(type, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); + this.trySubscribe(type, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); + this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); + this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("onTicks", onTicks); + INBTPacketReceiver.networkPack(this, data, 150); + + if(onTicks > 0) onTicks--; + + } else { + + if(onTicks > 0) { + this.spawnParticles(); + } + } + } + + public void spawnParticles() { } + + public void networkUnpack(NBTTagCompound nbt) { + this.onTicks = nbt.getInteger("onTicks"); + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return (dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH || dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) && + (type == Fluids.SMOKE || type == Fluids.SMOKE_LEADED || type == Fluids.SMOKE_POISON); + } + + @Override + public long transferFluid(FluidType type, int pressure, long fluid) { + onTicks = 20; + + fluid *= getPollutionMod(); + + if(type == Fluids.SMOKE) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, fluid / 100F); + if(type == Fluids.SMOKE_LEADED) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.HEAVYMETAL, fluid / 100F); + if(type == Fluids.SMOKE_POISON) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.POISON, fluid / 100F); + + return 0; + } + + public abstract double getPollutionMod(); + + @Override + public long getDemand(FluidType type, int pressure) { + return 1_000_000; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {}; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java index 7d636a718..5a95b31ac 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java @@ -1,100 +1,35 @@ package com.hbm.tileentity.machine; -import com.hbm.handler.pollution.PollutionHandler; -import com.hbm.handler.pollution.PollutionHandler.PollutionType; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.tileentity.INBTPacketReceiver; -import com.hbm.tileentity.TileEntityLoadedBase; -import api.hbm.fluid.IFluidUser; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityChimneyBrick extends TileEntityLoadedBase implements IFluidUser, INBTPacketReceiver { - - public int onTicks; +public class TileEntityChimneyBrick extends TileEntityChimneyBase { @Override - public void updateEntity() { - - if(!worldObj.isRemote) { - - if(worldObj.getTotalWorldTime() % 20 == 0) { - FluidType[] types = new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON}; - - for(FluidType type : types) { - this.trySubscribe(type, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.trySubscribe(type, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); - } - } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("onTicks", onTicks); - INBTPacketReceiver.networkPack(this, data, 150); - - if(onTicks > 0) onTicks--; - - } else { - - if(onTicks > 0) { + public void spawnParticles() { - if(worldObj.getTotalWorldTime() % 2 == 0) { - NBTTagCompound fx = new NBTTagCompound(); - fx.setString("type", "tower"); - fx.setFloat("lift", 10F); - fx.setFloat("base", 0.5F); - fx.setFloat("max", 3F); - fx.setInteger("life", 250 + worldObj.rand.nextInt(50)); - fx.setInteger("color",0x404040); - fx.setDouble("posX", xCoord + 0.5); - fx.setDouble("posY", yCoord + 12); - fx.setDouble("posZ", zCoord + 0.5); - MainRegistry.proxy.effectNT(fx); - } - } + if(worldObj.getTotalWorldTime() % 2 == 0) { + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 10F); + fx.setFloat("base", 0.5F); + fx.setFloat("max", 3F); + fx.setInteger("life", 250 + worldObj.rand.nextInt(50)); + fx.setInteger("color",0x404040); + fx.setDouble("posX", xCoord + 0.5); + fx.setDouble("posY", yCoord + 12); + fx.setDouble("posZ", zCoord + 0.5); + MainRegistry.proxy.effectNT(fx); } } - - public void networkUnpack(NBTTagCompound nbt) { - this.onTicks = nbt.getInteger("onTicks"); - } @Override - public boolean canConnect(FluidType type, ForgeDirection dir) { - return (dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH || dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) && - (type == Fluids.SMOKE || type == Fluids.SMOKE_LEADED || type == Fluids.SMOKE_POISON); - } - - @Override - public long transferFluid(FluidType type, int pressure, long fluid) { - onTicks = 20; - - fluid *= 0.25; - - if(type == Fluids.SMOKE) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, fluid / 100F); - if(type == Fluids.SMOKE_LEADED) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.HEAVYMETAL, fluid / 100F); - if(type == Fluids.SMOKE_POISON) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.POISON, fluid / 100F); - - return 0; - } - - @Override - public long getDemand(FluidType type, int pressure) { - return 1_000_000; - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] {}; + public double getPollutionMod() { + return 0.25D; } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java new file mode 100644 index 000000000..abbabb942 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java @@ -0,0 +1,59 @@ +package com.hbm.tileentity.machine; + +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityChimneyIndustrial extends TileEntityChimneyBase { + + @Override + public void spawnParticles() { + + if(worldObj.getTotalWorldTime() % 2 == 0) { + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 10F); + fx.setFloat("base", 0.75F); + fx.setFloat("max", 3F); + fx.setInteger("life", 250 + worldObj.rand.nextInt(50)); + fx.setInteger("color",0x404040); + fx.setDouble("posX", xCoord + 0.5); + fx.setDouble("posY", yCoord + 22); + fx.setDouble("posZ", zCoord + 0.5); + MainRegistry.proxy.effectNT(fx); + } + } + + @Override + public double getPollutionMod() { + return 0.25D; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 23, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java index aa5c7fec8..5a4bdcbbd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java @@ -213,7 +213,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa } } - if(!found) return; + if(!found) break outer; } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 3da9f3833..3a14f536b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -396,8 +396,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } } } - - if(!found) return; + + if(!found) break outer; } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 99e38f3e4..5363c7e9e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -246,8 +246,8 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } } } - - if(!found) return; + + if(!found) break outer; } } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 682604c76..0e75f8cdf 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3664,6 +3664,9 @@ tile.charger.name=Ladestation tile.cheater_virus.name=Geliertes Euphemium tile.cheater_virus_seed.name=Instabiler Euphemiumschrabid-Block tile.chimney_brick.name=Schornstein +tile.chimney_brick.desc=Kann mit Abgasrohren verbunden werden$Reduziert Abgas um 75%% +tile.chimney_industrial.name=Industrieschornstein +tile.chimney_industrial.desc=Kann mit Abgasrohren verbunden werden$Reduziert Abgas um 90%% tile.chlorine_gas.name=Chlorgas tile.cluster_aluminium.name=Aluminiumerzcluster tile.cluster_copper.name=Kupfererzcluster diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ad1c176bb..ac7c7b266 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4611,6 +4611,9 @@ tile.charger.name=Charging Station tile.cheater_virus.name=Gelid Euphemium tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block tile.chimney_brick.name=Smokestack +tile.chimney_brick.desc=Connect using exhaust pipes to polluting machines$Reduces pollution emission by 75%% +tile.chimney_industrial.name=Industrial Smokestack +tile.chimney_industrial.desc=Connect using exhaust pipes to polluting machines$Reduces pollution emission by 90%% tile.chlorine_gas.name=Chlorine Gas tile.cluster_aluminium.name=Aluminium Ore Cluster tile.cluster_copper.name=Copper Ore Cluster diff --git a/src/main/resources/assets/hbm/models/machines/chimney_industrial.obj b/src/main/resources/assets/hbm/models/machines/chimney_industrial.obj new file mode 100644 index 000000000..894620dcb --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/chimney_industrial.obj @@ -0,0 +1,1224 @@ +# Blender v2.79 (sub 0) OBJ File: 'chimney_industrial.blend' +# www.blender.org +o Plane +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 2.000000 1.500000 +v 1.500000 2.000000 1.500000 +v -1.500000 2.000000 -1.500000 +v 1.500000 2.000000 -1.500000 +v 1.500000 0.875000 0.375000 +v 1.500000 0.125000 0.375000 +v 1.500000 0.875000 -0.375000 +v 1.500000 0.125000 -0.375000 +v 1.500000 0.687500 0.187500 +v 1.500000 0.312500 0.187500 +v 1.500000 0.687500 -0.187500 +v 1.500000 0.312500 -0.187500 +v 1.375000 0.875000 -0.375000 +v 1.375000 0.875000 0.375000 +v 1.375000 0.125000 0.375000 +v 1.375000 0.125000 -0.375000 +v 1.375000 0.687500 -0.187500 +v 1.375000 0.687500 0.187500 +v 1.375000 0.312500 0.187500 +v 1.375000 0.312500 -0.187500 +v -1.500000 0.875000 -0.375000 +v -1.500000 0.125000 -0.375000 +v -1.500000 0.875000 0.375000 +v -1.500000 0.125000 0.375000 +v -1.500000 0.687500 -0.187500 +v -1.500000 0.312500 -0.187500 +v -1.500000 0.687500 0.187500 +v -1.500000 0.312500 0.187500 +v -1.375000 0.875000 0.375000 +v -1.375000 0.875000 -0.375000 +v -1.375000 0.125000 -0.375000 +v -1.375000 0.125000 0.375000 +v -1.375000 0.687500 0.187500 +v -1.375000 0.687500 -0.187500 +v -1.375000 0.312500 -0.187500 +v -1.375000 0.312500 0.187500 +v 0.375000 0.875000 -1.500000 +v 0.375000 0.125000 -1.500000 +v -0.375000 0.875000 -1.500000 +v -0.375000 0.125000 -1.500000 +v 0.187500 0.687500 -1.500000 +v 0.187500 0.312500 -1.500000 +v -0.187500 0.687500 -1.500000 +v -0.187500 0.312500 -1.500000 +v -0.375000 0.875000 -1.375000 +v 0.375000 0.875000 -1.375000 +v 0.375000 0.125000 -1.375000 +v -0.375000 0.125000 -1.375000 +v -0.187500 0.687500 -1.375000 +v 0.187500 0.687500 -1.375000 +v 0.187500 0.312500 -1.375000 +v -0.187500 0.312500 -1.375000 +v -0.375000 0.875000 1.500000 +v -0.375000 0.125000 1.500000 +v 0.375000 0.875000 1.500000 +v 0.375000 0.125000 1.500000 +v -0.187500 0.687500 1.500000 +v -0.187500 0.312500 1.500000 +v 0.187500 0.687500 1.500000 +v 0.187500 0.312500 1.500000 +v 0.375000 0.875000 1.375000 +v -0.375000 0.875000 1.375000 +v -0.375000 0.125000 1.375000 +v 0.375000 0.125000 1.375000 +v 0.187500 0.687500 1.375000 +v -0.187500 0.687500 1.375000 +v -0.187500 0.312500 1.375000 +v 0.187500 0.312500 1.375000 +v 0.000000 10.000000 -1.250000 +v -0.478354 10.000000 -1.154849 +v -0.883883 10.000000 -0.883883 +v -1.154849 10.000000 -0.478354 +v -1.250000 10.000000 0.000000 +v -1.154849 10.000000 0.478354 +v -0.883883 10.000000 0.883883 +v -0.478354 10.000000 1.154849 +v -0.000000 10.000000 1.250000 +v 0.478354 10.000000 1.154850 +v 0.883883 10.000000 0.883884 +v 1.154849 10.000000 0.478354 +v 1.250000 10.000000 -0.000000 +v 1.154849 10.000000 -0.478355 +v 0.883883 10.000000 -0.883884 +v 0.478354 10.000000 -1.154850 +v 0.000000 23.000000 -1.250000 +v -0.478354 23.000000 -1.154849 +v -0.883883 23.000000 -0.883883 +v -1.154849 23.000000 -0.478354 +v -1.250000 23.000000 0.000000 +v -1.154849 23.000000 0.478354 +v -0.883883 23.000000 0.883883 +v -0.478354 23.000000 1.154849 +v -0.000000 23.000000 1.250000 +v 0.478354 23.000000 1.154850 +v 0.883883 23.000000 0.883884 +v 1.154849 23.000000 0.478354 +v 1.250000 23.000000 -0.000000 +v 1.154849 23.000000 -0.478355 +v 0.883883 23.000000 -0.883884 +v 0.478354 23.000000 -1.154850 +v -0.000000 23.000000 -1.000000 +v -0.382684 23.000000 -0.923880 +v -0.707107 23.000000 -0.707107 +v -0.923880 23.000000 -0.382683 +v -1.000000 23.000000 0.000000 +v -0.923880 23.000000 0.382684 +v -0.707107 23.000000 0.707107 +v -0.382684 23.000000 0.923880 +v -0.000000 23.000000 1.000000 +v 0.382683 23.000000 0.923880 +v 0.707107 23.000000 0.707107 +v 0.923879 23.000000 0.382684 +v 1.000000 23.000000 -0.000000 +v 0.923879 23.000000 -0.382684 +v 0.707106 23.000000 -0.707107 +v 0.382683 23.000000 -0.923880 +v -0.000000 21.000000 -1.000000 +v -0.382684 21.000000 -0.923880 +v -0.707107 21.000000 -0.707107 +v -0.923880 21.000000 -0.382683 +v -1.000000 21.000000 0.000000 +v -0.923880 21.000000 0.382684 +v -0.707107 21.000000 0.707107 +v -0.382684 21.000000 0.923880 +v -0.000000 21.000000 1.000000 +v 0.382683 21.000000 0.923880 +v 0.707107 21.000000 0.707107 +v 0.923879 21.000000 0.382684 +v 1.000000 21.000000 -0.000000 +v 0.923879 21.000000 -0.382684 +v 0.707106 21.000000 -0.707107 +v 0.382683 21.000000 -0.923880 +v 0.000000 2.000000 -1.500000 +v -0.574025 2.000000 -1.385819 +v -1.060660 2.000000 -1.060660 +v -1.385819 2.000000 -0.574025 +v -1.500000 2.000000 0.000000 +v -1.385819 2.000000 0.574025 +v -1.060660 2.000000 1.060660 +v -0.574025 2.000000 1.385819 +v -0.000000 2.000000 1.500000 +v 0.574025 2.000000 1.385819 +v 1.060660 2.000000 1.060660 +v 1.385819 2.000000 0.574025 +v 1.500000 2.000000 -0.000000 +v 1.385819 2.000000 -0.574025 +v 1.060660 2.000000 -1.060660 +v 0.574024 2.000000 -1.385820 +v -0.000000 22.500000 -1.500000 +v -0.574025 22.500000 -1.385819 +v -1.060660 22.500000 -1.060660 +v -1.385819 22.500000 -0.574025 +v -1.500000 22.500000 0.000000 +v -1.385819 22.500000 0.574025 +v -1.060660 22.500000 1.060660 +v -0.574025 22.500000 1.385819 +v -0.000000 22.500000 1.500000 +v 0.574025 22.500000 1.385819 +v 1.060660 22.500000 1.060660 +v 1.385819 22.500000 0.574025 +v 1.500000 22.500000 -0.000000 +v 1.385819 22.500000 -0.574025 +v 1.060660 22.500000 -1.060660 +v 0.574024 22.500000 -1.385820 +v 0.000000 22.500000 -1.250000 +v -0.478354 22.500000 -1.154849 +v -0.883883 22.500000 -0.883883 +v -1.154849 22.500000 -0.478354 +v -1.250000 22.500000 0.000000 +v -1.154849 22.500000 0.478354 +v -0.883883 22.500000 0.883883 +v -0.478354 22.500000 1.154849 +v -0.000000 22.500000 1.250000 +v 0.478354 22.500000 1.154850 +v 0.883883 22.500000 0.883884 +v 1.154849 22.500000 0.478354 +v 1.250000 22.500000 -0.000000 +v 1.154849 22.500000 -0.478355 +v 0.883883 22.500000 -0.883884 +v 0.478354 22.500000 -1.154850 +v 0.000000 22.000000 -1.250000 +v -0.478354 22.000000 -1.154849 +v -0.883883 22.000000 -0.883883 +v -1.154849 22.000000 -0.478354 +v -1.250000 22.000000 0.000000 +v -1.154849 22.000000 0.478354 +v -0.883883 22.000000 0.883883 +v -0.478354 22.000000 1.154849 +v -0.000000 22.000000 1.250000 +v 0.478354 22.000000 1.154850 +v 0.883883 22.000000 0.883884 +v 1.154849 22.000000 0.478354 +v 1.250000 22.000000 -0.000000 +v 1.154849 22.000000 -0.478355 +v 0.883883 22.000000 -0.883884 +v 0.478354 22.000000 -1.154850 +v -0.000000 22.250000 -1.500000 +v -0.574025 22.250000 -1.385819 +v -1.060660 22.250000 -1.060660 +v -1.385819 22.250000 -0.574025 +v -1.500000 22.250000 0.000000 +v -1.385819 22.250000 0.574025 +v -1.060660 22.250000 1.060660 +v -0.574025 22.250000 1.385819 +v -0.000000 22.250000 1.500000 +v 0.574025 22.250000 1.385819 +v 1.060660 22.250000 1.060660 +v 1.385819 22.250000 0.574025 +v 1.500000 22.250000 -0.000000 +v 1.385819 22.250000 -0.574025 +v 1.060660 22.250000 -1.060660 +v 0.574024 22.250000 -1.385820 +v -0.000000 14.250000 -1.500000 +v -0.574025 14.250000 -1.385819 +v -1.060660 14.250000 -1.060660 +v -1.385819 14.250000 -0.574025 +v -1.500000 14.250000 0.000000 +v -1.385819 14.250000 0.574025 +v -1.060660 14.250000 1.060660 +v -0.574025 14.250000 1.385819 +v -0.000000 14.250000 1.500000 +v 0.574025 14.250000 1.385819 +v 1.060660 14.250000 1.060660 +v 1.385819 14.250000 0.574025 +v 1.500000 14.250000 -0.000000 +v 1.385819 14.250000 -0.574025 +v 1.060660 14.250000 -1.060660 +v 0.574024 14.250000 -1.385820 +v 0.000000 14.250000 -1.250000 +v -0.478354 14.250000 -1.154849 +v -0.883883 14.250000 -0.883883 +v -1.154849 14.250000 -0.478354 +v -1.250000 14.250000 0.000000 +v -1.154849 14.250000 0.478354 +v -0.883883 14.250000 0.883883 +v -0.478354 14.250000 1.154849 +v -0.000000 14.250000 1.250000 +v 0.478354 14.250000 1.154850 +v 0.883883 14.250000 0.883884 +v 1.154849 14.250000 0.478354 +v 1.250000 14.250000 -0.000000 +v 1.154849 14.250000 -0.478355 +v 0.883883 14.250000 -0.883884 +v 0.478354 14.250000 -1.154850 +v 0.000000 13.750000 -1.250000 +v -0.478354 13.750000 -1.154849 +v -0.883883 13.750000 -0.883883 +v -1.154849 13.750000 -0.478354 +v -1.250000 13.750000 0.000000 +v -1.154849 13.750000 0.478354 +v -0.883883 13.750000 0.883883 +v -0.478354 13.750000 1.154849 +v -0.000000 13.750000 1.250000 +v 0.478354 13.750000 1.154850 +v 0.883883 13.750000 0.883884 +v 1.154849 13.750000 0.478354 +v 1.250000 13.750000 -0.000000 +v 1.154849 13.750000 -0.478355 +v 0.883883 13.750000 -0.883884 +v 0.478354 13.750000 -1.154850 +v -0.000000 14.000000 -1.500000 +v -0.574025 14.000000 -1.385819 +v -1.060660 14.000000 -1.060660 +v -1.385819 14.000000 -0.574025 +v -1.500000 14.000000 0.000000 +v -1.385819 14.000000 0.574025 +v -1.060660 14.000000 1.060660 +v -0.574025 14.000000 1.385819 +v -0.000000 14.000000 1.500000 +v 0.574025 14.000000 1.385819 +v 1.060660 14.000000 1.060660 +v 1.385819 14.000000 0.574025 +v 1.500000 14.000000 -0.000000 +v 1.385819 14.000000 -0.574025 +v 1.060660 14.000000 -1.060660 +v 0.574024 14.000000 -1.385820 +vt 0.272727 -0.000000 +vt -0.000000 0.129032 +vt -0.000000 -0.000000 +vt -0.000000 0.212366 +vt 0.272727 0.344086 +vt -0.000000 0.344086 +vt 0.170455 0.166667 +vt 0.272727 0.129032 +vt 0.272727 0.212366 +vt 0.102273 0.166667 +vt 0.102273 0.134409 +vt 0.039773 0.362903 +vt 0.073864 0.379032 +vt 0.039773 0.379032 +vt 0.039773 0.384409 +vt 0.073864 0.357527 +vt 0.073864 0.362903 +vt 0.000000 0.354839 +vt 0.011364 0.387097 +vt 0.000000 0.387097 +vt 0.113636 0.387097 +vt 0.102273 0.354839 +vt 0.113636 0.354839 +vt 0.022727 0.349462 +vt 0.090909 0.349462 +vt 0.102273 0.387097 +vt 0.085227 0.362903 +vt 0.090909 0.392473 +vt 0.022727 0.392473 +vt 0.011364 0.354839 +vt 0.028409 0.379032 +vt 0.090909 0.344086 +vt 0.022727 0.344086 +vt 0.022727 0.397849 +vt 0.090909 0.397849 +vt 0.085227 0.379032 +vt 0.028409 0.362903 +vt 0.039773 0.362903 +vt 0.073864 0.379032 +vt 0.039773 0.379032 +vt 0.039773 0.384409 +vt 0.073864 0.357527 +vt 0.073864 0.362903 +vt 0.000000 0.354839 +vt 0.011364 0.387097 +vt 0.000000 0.387097 +vt 0.113636 0.387097 +vt 0.102273 0.354839 +vt 0.113636 0.354839 +vt 0.022727 0.349462 +vt 0.090909 0.349462 +vt 0.102273 0.387097 +vt 0.085227 0.362903 +vt 0.090909 0.392473 +vt 0.022727 0.392473 +vt 0.011364 0.354839 +vt 0.028409 0.379032 +vt 0.090909 0.344086 +vt 0.022727 0.344086 +vt 0.022727 0.397849 +vt 0.090909 0.397849 +vt 0.085227 0.379032 +vt 0.028409 0.362903 +vt 0.039773 0.362903 +vt 0.073864 0.379032 +vt 0.039773 0.379032 +vt 0.039773 0.384409 +vt 0.073864 0.357527 +vt 0.073864 0.362903 +vt 0.000000 0.354839 +vt 0.011364 0.387097 +vt 0.000000 0.387097 +vt 0.113636 0.387097 +vt 0.102273 0.354839 +vt 0.113636 0.354839 +vt 0.022727 0.349462 +vt 0.090909 0.349462 +vt 0.085227 0.379032 +vt 0.102273 0.387097 +vt 0.090909 0.392473 +vt 0.022727 0.392473 +vt 0.028409 0.362903 +vt 0.011364 0.354839 +vt 0.090909 0.344086 +vt 0.022727 0.344086 +vt 0.022727 0.397849 +vt 0.090909 0.397849 +vt 0.039773 0.362903 +vt 0.073864 0.379032 +vt 0.039773 0.379032 +vt 0.073864 0.384409 +vt 0.039773 0.384409 +vt 0.073864 0.357527 +vt 0.073864 0.362903 +vt 0.000000 0.354839 +vt 0.011364 0.387097 +vt 0.000000 0.387097 +vt 0.113636 0.387097 +vt 0.102273 0.354839 +vt 0.113636 0.354839 +vt 0.022727 0.349462 +vt 0.090909 0.349462 +vt 0.085227 0.379032 +vt 0.102273 0.387097 +vt 0.090909 0.392473 +vt 0.022727 0.392473 +vt 0.028409 0.362903 +vt 0.011364 0.354839 +vt 0.090909 0.344086 +vt 0.022727 0.344086 +vt 0.022727 0.397849 +vt 0.090909 0.397849 +vt -0.000000 0.129032 +vt 0.102273 0.166667 +vt -0.000000 0.215054 +vt 0.170455 0.134409 +vt 0.272727 0.129032 +vt 0.272727 0.215054 +vt 0.170455 0.166667 +vt 0.102273 0.166667 +vt 0.000000 0.129032 +vt 0.102273 0.134409 +vt 0.272727 0.215054 +vt 0.000000 0.215054 +vt 0.272727 0.129032 +vt 0.170455 0.166667 +vt 0.170455 0.134409 +vt 0.102273 0.166667 +vt -0.000000 0.129032 +vt 0.102273 0.134409 +vt 0.272727 0.129032 +vt 0.170455 0.166667 +vt 0.272727 0.215054 +vt -0.000000 0.215054 +vt 0.863636 0.903226 +vt 0.823864 0.913979 +vt 0.818182 0.903226 +vt 0.778409 0.913979 +vt 0.772727 0.903226 +vt 0.727273 0.903226 +vt 0.767045 0.913979 +vt 0.732955 0.913979 +vt 0.687500 0.913979 +vt 0.681818 0.903226 +vt 0.642045 0.913979 +vt 0.636364 0.903226 +vt 0.596591 0.913979 +vt 0.590909 0.903226 +vt 0.545455 0.903226 +vt 0.585227 0.913979 +vt 0.551136 0.913979 +vt 0.500000 0.903226 +vt 0.539773 0.913979 +vt 0.505682 0.913979 +vt 0.454545 0.903226 +vt 0.494318 0.913979 +vt 0.460227 0.913979 +vt 0.409091 0.903226 +vt 0.448864 0.913979 +vt 0.414773 0.913979 +vt 0.363636 0.903226 +vt 0.403409 0.913979 +vt 0.369318 0.913979 +vt 0.323864 0.913979 +vt 0.318182 0.903226 +vt 0.278409 0.913979 +vt 0.272727 0.903226 +vt 1.000000 0.903226 +vt 0.960227 0.913979 +vt 0.954545 0.903226 +vt 0.914773 0.913979 +vt 0.909091 0.903226 +vt 0.869318 0.913979 +vt 0.026682 0.410473 +vt 0.090909 0.397887 +vt 0.181740 0.440860 +vt 0.227273 0.666667 +vt 0.204545 0.688172 +vt 0.204545 0.666667 +vt 0.227273 0.365591 +vt 0.204545 0.344086 +vt 0.227273 0.344086 +vt 0.227273 0.387097 +vt 0.204545 0.365591 +vt 0.227273 0.408602 +vt 0.204545 0.387097 +vt 0.227273 0.430108 +vt 0.204545 0.408602 +vt 0.227273 0.451613 +vt 0.204545 0.430108 +vt 0.227273 0.473118 +vt 0.204545 0.451613 +vt 0.227273 0.494624 +vt 0.204545 0.473118 +vt 0.227273 0.516129 +vt 0.204545 0.494624 +vt 0.204545 0.537634 +vt 0.204545 0.516129 +vt 0.227273 0.537634 +vt 0.204545 0.559140 +vt 0.227273 0.559140 +vt 0.204545 0.580645 +vt 0.227273 0.580645 +vt 0.204545 0.602151 +vt 0.227273 0.602151 +vt 0.204545 0.623656 +vt 0.227273 0.623656 +vt 0.204545 0.645161 +vt 0.227273 0.645161 +vt 0.227273 0.666667 +vt 0.204545 0.688172 +vt 0.204545 0.666667 +vt 0.227273 0.365591 +vt 0.204545 0.344086 +vt 0.227273 0.344086 +vt 0.227273 0.387097 +vt 0.204545 0.365591 +vt 0.227273 0.408602 +vt 0.204545 0.387097 +vt 0.227273 0.430108 +vt 0.204545 0.408602 +vt 0.227273 0.451613 +vt 0.204545 0.430108 +vt 0.227273 0.473118 +vt 0.204545 0.451613 +vt 0.227273 0.494624 +vt 0.204545 0.473118 +vt 0.227273 0.516129 +vt 0.204545 0.494624 +vt 0.204545 0.537634 +vt 0.204545 0.516129 +vt 0.227273 0.537634 +vt 0.204545 0.559140 +vt 0.227273 0.559140 +vt 0.204545 0.580645 +vt 0.227273 0.580645 +vt 0.204545 0.602151 +vt 0.227273 0.602151 +vt 0.204545 0.623656 +vt 0.227273 0.623656 +vt 0.204545 0.645161 +vt 0.227273 0.645161 +vt 0.170455 0.134409 +vt 0.073864 0.384409 +vt 0.039773 0.357527 +vt 0.073864 0.384409 +vt 0.039773 0.357527 +vt 0.073864 0.384409 +vt 0.039773 0.357527 +vt 0.085227 0.362903 +vt 0.028409 0.379032 +vt 0.039773 0.357527 +vt 0.085227 0.362903 +vt 0.028409 0.379032 +vt 0.102273 0.134409 +vt 0.170455 0.134409 +vt 0.857955 0.913979 +vt 0.812500 0.913979 +vt 0.721591 0.913979 +vt 0.676136 0.913979 +vt 0.630682 0.913979 +vt 0.357955 0.913979 +vt 0.312500 0.913979 +vt 0.994318 0.913979 +vt 0.948864 0.913979 +vt 0.903409 0.913979 +vt 0.174826 0.457305 +vt 0.155136 0.471247 +vt 0.125668 0.480563 +vt 0.090909 0.483834 +vt 0.056150 0.480563 +vt 0.026682 0.471247 +vt 0.006992 0.457305 +vt 0.000078 0.440860 +vt 0.006993 0.424415 +vt 0.056150 0.401158 +vt 0.125668 0.401158 +vt 0.155136 0.410473 +vt 0.174826 0.424415 +vt 0.227273 0.688172 +vt 0.227273 0.688172 +vt 0.363636 0.344086 +vt 0.318182 0.344086 +vt 0.727273 0.344086 +vt 0.681818 0.344086 +vt 0.409091 0.344086 +vt 0.772727 0.344086 +vt 0.454545 0.344086 +vt 0.863636 0.344086 +vt 0.818182 0.344086 +vt 0.500000 0.344086 +vt 0.909091 0.344086 +vt 0.545455 0.344086 +vt 0.954545 0.344086 +vt 0.590909 0.344086 +vt 1.000000 0.344086 +vt 0.636364 0.344086 +vt 0.272727 0.344086 +vt 0.505682 1.000000 +vt 0.914773 1.000000 +vt 0.551136 1.000000 +vt 0.960227 1.000000 +vt 0.596591 1.000000 +vt 0.278409 1.000000 +vt 0.642045 1.000000 +vt 0.323864 1.000000 +vt 0.687500 1.000000 +vt 0.369318 1.000000 +vt 0.732955 1.000000 +vt 0.414773 1.000000 +vt 0.823864 1.000000 +vt 0.778409 1.000000 +vt 0.460227 1.000000 +vt 0.869318 1.000000 +vt 0.909091 0.000000 +vt 0.954545 0.000000 +vt 0.272727 -0.000000 +vt 0.318182 -0.000000 +vt 0.363636 -0.000000 +vt 0.409091 -0.000000 +vt 0.454545 0.000000 +vt 0.545455 -0.000000 +vt 0.590909 0.000000 +vt 0.681818 0.000000 +vt 0.772727 -0.000000 +vt 0.818182 -0.000000 +vt 0.250000 0.451613 +vt 0.250000 0.645161 +vt 0.250000 0.473118 +vt 0.250000 0.666667 +vt 0.250000 0.494624 +vt 0.250000 0.344086 +vt 0.250000 0.516129 +vt 0.250000 0.365591 +vt 0.250000 0.537634 +vt 0.250000 0.387097 +vt 0.250000 0.559140 +vt 0.250000 0.408602 +vt 0.250000 0.602151 +vt 0.250000 0.580645 +vt 0.250000 0.430108 +vt 0.250000 0.623656 +vt 0.272727 0.688172 +vt 0.272727 0.666667 +vt 0.272727 0.365591 +vt 0.272727 0.344086 +vt 0.272727 0.387097 +vt 0.272727 0.408602 +vt 0.272727 0.430108 +vt 0.272727 0.451613 +vt 0.272727 0.473118 +vt 0.272727 0.516129 +vt 0.272727 0.494624 +vt 0.272727 0.537634 +vt 0.272727 0.559140 +vt 0.272727 0.580645 +vt 0.272727 0.602151 +vt 0.272727 0.623656 +vt 0.272727 0.645161 +vt 0.250000 0.451613 +vt 0.250000 0.645161 +vt 0.250000 0.473118 +vt 0.250000 0.666667 +vt 0.250000 0.494624 +vt 0.250000 0.344086 +vt 0.250000 0.516129 +vt 0.250000 0.365591 +vt 0.250000 0.537634 +vt 0.250000 0.387097 +vt 0.250000 0.559140 +vt 0.250000 0.408602 +vt 0.250000 0.602151 +vt 0.250000 0.580645 +vt 0.250000 0.430108 +vt 0.250000 0.623656 +vt 0.272727 0.688172 +vt 0.272727 0.666667 +vt 0.272727 0.365591 +vt 0.272727 0.344086 +vt 0.272727 0.387097 +vt 0.272727 0.408602 +vt 0.272727 0.430108 +vt 0.272727 0.451613 +vt 0.272727 0.473118 +vt 0.272727 0.516129 +vt 0.272727 0.494624 +vt 0.272727 0.537634 +vt 0.272727 0.559140 +vt 0.272727 0.580645 +vt 0.272727 0.602151 +vt 0.272727 0.623656 +vt 0.272727 0.645161 +vt 0.539773 1.000000 +vt 0.948864 1.000000 +vt 0.585227 1.000000 +vt 0.994318 1.000000 +vt 0.630682 1.000000 +vt 0.312500 1.000000 +vt 0.676136 1.000000 +vt 0.357955 1.000000 +vt 0.721591 1.000000 +vt 0.403409 1.000000 +vt 0.767045 1.000000 +vt 0.448864 1.000000 +vt 0.857955 1.000000 +vt 0.812500 1.000000 +vt 0.494318 1.000000 +vt 0.903409 1.000000 +vt 1.000000 0.000000 +vt 0.500000 0.000000 +vt 0.636364 0.000000 +vt 0.727273 -0.000000 +vt 0.863636 -0.000000 +vt 0.250000 0.688172 +vt 0.250000 0.688172 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.9239 0.0000 0.3827 +vn 0.7071 0.0000 -0.7071 +vn 0.9239 0.0000 -0.3827 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn -0.7068 0.0312 -0.7068 +vn -0.9234 0.0312 -0.3825 +vn -0.9995 0.0312 -0.0000 +vn -0.9234 0.0312 0.3825 +vn -0.7068 0.0312 0.7068 +vn -0.3825 0.0312 0.9234 +vn -0.0000 0.0312 0.9995 +vn 0.3825 0.0312 0.9234 +vn 0.7068 0.0312 0.7068 +vn 0.9234 0.0312 0.3825 +vn 0.9995 0.0312 -0.0000 +vn 0.9234 0.0312 -0.3825 +vn 0.7068 0.0312 -0.7068 +vn 0.3825 0.0312 -0.9234 +vn -0.0000 0.0312 -0.9995 +vn -0.3825 0.0312 -0.9234 +vn -0.7071 -0.7071 -0.0000 +vn -0.6533 -0.7071 -0.2706 +vn -0.6533 -0.7071 0.2706 +vn -0.5000 -0.7071 0.5000 +vn -0.2706 -0.7071 0.6533 +vn -0.0000 -0.7071 0.7071 +vn 0.2706 -0.7071 0.6533 +vn 0.5000 -0.7071 0.5000 +vn 0.6533 -0.7071 0.2706 +vn 0.7071 -0.7071 -0.0000 +vn 0.6533 -0.7071 -0.2706 +vn 0.5000 -0.7071 -0.5000 +vn 0.2706 -0.7071 -0.6533 +vn -0.0000 -0.7071 -0.7071 +vn -0.2706 -0.7071 -0.6533 +vn -0.5000 -0.7071 -0.5000 +s off +f 3/1/1 2/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 11/7/3 4/8/3 8/9/3 +f 9/10/3 2/2/3 10/11/3 +f 9/10/3 8/9/3 6/4/3 +f 4/8/3 10/11/3 2/2/3 +f 14/12/3 15/13/3 13/14/3 +f 15/13/2 22/15/2 13/14/2 +f 14/12/1 24/16/1 16/17/1 +f 10/18/4 18/19/4 9/20/4 +f 11/21/5 20/22/5 12/23/5 +f 24/16/3 19/24/3 20/25/3 +f 17/26/3 24/27/3 20/22/3 +f 22/15/3 17/28/3 18/29/3 +f 19/30/3 22/31/3 18/19/3 +f 12/32/2 19/24/2 10/33/2 +f 9/34/1 17/28/1 11/35/1 +f 16/17/4 21/36/4 15/13/4 +f 13/14/5 23/37/5 14/12/5 +f 30/38/6 31/39/6 29/40/6 +f 31/39/2 38/41/2 29/40/2 +f 30/38/1 40/42/1 32/43/1 +f 26/44/5 34/45/5 25/46/5 +f 27/47/4 36/48/4 28/49/4 +f 40/42/6 35/50/6 36/51/6 +f 33/52/6 40/53/6 36/48/6 +f 38/41/6 33/54/6 34/55/6 +f 35/56/6 38/57/6 34/45/6 +f 28/58/2 35/50/2 26/59/2 +f 25/60/1 33/54/1 27/61/1 +f 32/43/5 37/62/5 31/39/5 +f 29/40/4 39/63/4 30/38/4 +f 46/64/4 47/65/4 45/66/4 +f 47/65/2 54/67/2 45/66/2 +f 46/64/1 56/68/1 48/69/1 +f 42/70/6 50/71/6 41/72/6 +f 43/73/3 52/74/3 44/75/3 +f 56/68/4 51/76/4 52/77/4 +f 53/78/4 52/74/4 49/79/4 +f 54/67/4 49/80/4 50/81/4 +f 55/82/4 50/71/4 51/83/4 +f 44/84/2 51/76/2 42/85/2 +f 41/86/1 49/80/1 43/87/1 +f 48/69/6 53/78/6 47/65/6 +f 45/66/3 55/82/3 46/64/3 +f 62/88/5 63/89/5 61/90/5 +f 61/90/2 69/91/2 70/92/2 +f 62/88/1 72/93/1 64/94/1 +f 58/95/3 66/96/3 57/97/3 +f 59/98/6 68/99/6 60/100/6 +f 72/93/5 67/101/5 68/102/5 +f 69/103/5 68/99/5 65/104/5 +f 70/92/5 65/105/5 66/106/5 +f 71/107/5 66/96/5 67/108/5 +f 60/109/2 67/101/2 58/110/2 +f 57/111/1 65/105/1 59/112/1 +f 64/94/3 69/103/3 63/89/3 +f 61/90/6 71/107/6 62/88/6 +f 4/113/4 41/114/4 8/115/4 +f 44/116/4 4/113/4 3/117/4 +f 41/114/4 7/118/4 8/115/4 +f 43/119/4 3/117/4 7/118/4 +f 25/120/6 3/121/6 26/122/6 +f 25/120/6 5/123/6 7/124/6 +f 1/125/6 26/122/6 3/121/6 +f 1/125/6 27/126/6 28/127/6 +f 57/128/5 1/129/5 58/130/5 +f 2/131/5 58/130/5 1/129/5 +f 59/132/5 2/131/5 6/133/5 +f 57/128/5 6/133/5 5/134/5 +f 90/135/2 105/136/2 89/137/2 +f 89/137/2 120/138/2 104/139/2 +f 103/140/2 120/141/2 119/142/2 +f 103/140/2 118/143/2 102/144/2 +f 102/144/2 117/145/2 101/146/2 +f 101/146/2 116/147/2 100/148/2 +f 99/149/2 116/150/2 115/151/2 +f 98/152/2 115/153/2 114/154/2 +f 97/155/2 114/156/2 113/157/2 +f 96/158/2 113/159/2 112/160/2 +f 95/161/2 112/162/2 111/163/2 +f 95/161/2 110/164/2 94/165/2 +f 94/165/2 109/166/2 93/167/2 +f 93/168/2 108/169/2 92/170/2 +f 92/170/2 107/171/2 91/172/2 +f 91/172/2 106/173/2 90/135/2 +f 131/174/2 133/175/2 121/176/2 +f 156/177/2 173/178/2 172/179/2 +f 158/180/2 173/181/2 157/182/2 +f 159/183/2 174/184/2 158/180/2 +f 160/185/2 175/186/2 159/183/2 +f 161/187/2 176/188/2 160/185/2 +f 162/189/2 177/190/2 161/187/2 +f 163/191/2 178/192/2 162/189/2 +f 164/193/2 179/194/2 163/191/2 +f 165/195/2 180/196/2 164/193/2 +f 165/195/2 182/197/2 181/198/2 +f 166/199/2 183/200/2 182/197/2 +f 167/201/2 184/202/2 183/200/2 +f 168/203/2 169/204/2 184/202/2 +f 153/205/2 170/206/2 169/204/2 +f 154/207/2 171/208/2 170/206/2 +f 155/209/2 172/179/2 171/208/2 +f 220/210/2 237/211/2 236/212/2 +f 222/213/2 237/214/2 221/215/2 +f 223/216/2 238/217/2 222/213/2 +f 224/218/2 239/219/2 223/216/2 +f 225/220/2 240/221/2 224/218/2 +f 226/222/2 241/223/2 225/220/2 +f 227/224/2 242/225/2 226/222/2 +f 228/226/2 243/227/2 227/224/2 +f 229/228/2 244/229/2 228/226/2 +f 229/228/2 246/230/2 245/231/2 +f 230/232/2 247/233/2 246/230/2 +f 231/234/2 248/235/2 247/233/2 +f 232/236/2 233/237/2 248/235/2 +f 217/238/2 234/239/2 233/237/2 +f 218/240/2 235/241/2 234/239/2 +f 219/242/2 236/212/2 235/241/2 +f 3/1/1 4/8/1 2/2/1 +f 6/4/2 8/9/2 7/5/2 +f 11/7/3 12/243/3 4/8/3 +f 9/10/3 6/4/3 2/2/3 +f 9/10/3 11/7/3 8/9/3 +f 4/8/3 12/243/3 10/11/3 +f 14/12/3 16/17/3 15/13/3 +f 15/13/2 21/244/2 22/15/2 +f 14/12/1 23/245/1 24/16/1 +f 10/18/4 19/30/4 18/19/4 +f 11/21/5 17/26/5 20/22/5 +f 24/16/3 23/245/3 19/24/3 +f 17/26/3 21/36/3 24/27/3 +f 22/15/3 21/244/3 17/28/3 +f 19/30/3 23/37/3 22/31/3 +f 12/32/2 20/25/2 19/24/2 +f 9/34/1 18/29/1 17/28/1 +f 16/17/4 24/27/4 21/36/4 +f 13/14/5 22/31/5 23/37/5 +f 30/38/6 32/43/6 31/39/6 +f 31/39/2 37/246/2 38/41/2 +f 30/38/1 39/247/1 40/42/1 +f 26/44/5 35/56/5 34/45/5 +f 27/47/4 33/52/4 36/48/4 +f 40/42/6 39/247/6 35/50/6 +f 33/52/6 37/62/6 40/53/6 +f 38/41/6 37/246/6 33/54/6 +f 35/56/6 39/63/6 38/57/6 +f 28/58/2 36/51/2 35/50/2 +f 25/60/1 34/55/1 33/54/1 +f 32/43/5 40/53/5 37/62/5 +f 29/40/4 38/57/4 39/63/4 +f 46/64/4 48/69/4 47/65/4 +f 47/65/2 53/248/2 54/67/2 +f 46/64/1 55/249/1 56/68/1 +f 42/70/6 51/83/6 50/71/6 +f 43/73/3 49/79/3 52/74/3 +f 56/68/4 55/249/4 51/76/4 +f 53/78/4 56/250/4 52/74/4 +f 54/67/4 53/248/4 49/80/4 +f 55/82/4 54/251/4 50/71/4 +f 44/84/2 52/77/2 51/76/2 +f 41/86/1 50/81/1 49/80/1 +f 48/69/6 56/250/6 53/78/6 +f 45/66/3 54/251/3 55/82/3 +f 62/88/5 64/94/5 63/89/5 +f 61/90/2 63/89/2 69/91/2 +f 62/88/1 71/252/1 72/93/1 +f 58/95/3 67/108/3 66/96/3 +f 59/98/6 65/104/6 68/99/6 +f 72/93/5 71/252/5 67/101/5 +f 69/103/5 72/253/5 68/99/5 +f 70/92/5 69/91/5 65/105/5 +f 71/107/5 70/254/5 66/96/5 +f 60/109/2 68/102/2 67/101/2 +f 57/111/1 66/106/1 65/105/1 +f 64/94/3 72/253/3 69/103/3 +f 61/90/6 70/254/6 71/107/6 +f 4/113/4 42/255/4 41/114/4 +f 44/116/4 42/255/4 4/113/4 +f 41/114/4 43/119/4 7/118/4 +f 43/119/4 44/116/4 3/117/4 +f 25/120/6 7/124/6 3/121/6 +f 25/120/6 27/126/6 5/123/6 +f 1/125/6 28/127/6 26/122/6 +f 1/125/6 5/123/6 27/126/6 +f 57/128/5 5/134/5 1/129/5 +f 2/131/5 60/256/5 58/130/5 +f 59/132/5 60/256/5 2/131/5 +f 57/128/5 59/132/5 6/133/5 +f 90/135/2 106/257/2 105/136/2 +f 89/137/2 105/258/2 120/138/2 +f 103/140/2 104/139/2 120/141/2 +f 103/140/2 119/259/2 118/143/2 +f 102/144/2 118/260/2 117/145/2 +f 101/146/2 117/261/2 116/147/2 +f 99/149/2 100/148/2 116/150/2 +f 98/152/2 99/149/2 115/153/2 +f 97/155/2 98/152/2 114/156/2 +f 96/158/2 97/155/2 113/159/2 +f 95/161/2 96/158/2 112/162/2 +f 95/161/2 111/262/2 110/164/2 +f 94/165/2 110/263/2 109/166/2 +f 93/168/2 109/264/2 108/169/2 +f 92/170/2 108/265/2 107/171/2 +f 91/172/2 107/266/2 106/173/2 +f 121/176/2 122/267/2 123/268/2 +f 123/268/2 124/269/2 125/270/2 +f 125/270/2 126/271/2 127/272/2 +f 127/272/2 128/273/2 129/274/2 +f 129/274/2 130/275/2 131/174/2 +f 131/174/2 132/276/2 133/175/2 +f 133/175/2 134/277/2 121/176/2 +f 134/277/2 135/278/2 121/176/2 +f 135/278/2 136/279/2 121/176/2 +f 121/176/2 123/268/2 125/270/2 +f 125/270/2 127/272/2 121/176/2 +f 127/272/2 129/274/2 121/176/2 +f 129/274/2 131/174/2 121/176/2 +f 156/177/2 157/280/2 173/178/2 +f 158/180/2 174/184/2 173/181/2 +f 159/183/2 175/186/2 174/184/2 +f 160/185/2 176/188/2 175/186/2 +f 161/187/2 177/190/2 176/188/2 +f 162/189/2 178/192/2 177/190/2 +f 163/191/2 179/194/2 178/192/2 +f 164/193/2 180/196/2 179/194/2 +f 165/195/2 181/198/2 180/196/2 +f 165/195/2 166/199/2 182/197/2 +f 166/199/2 167/201/2 183/200/2 +f 167/201/2 168/203/2 184/202/2 +f 168/203/2 153/205/2 169/204/2 +f 153/205/2 154/207/2 170/206/2 +f 154/207/2 155/209/2 171/208/2 +f 155/209/2 156/177/2 172/179/2 +f 220/210/2 221/281/2 237/211/2 +f 222/213/2 238/217/2 237/214/2 +f 223/216/2 239/219/2 238/217/2 +f 224/218/2 240/221/2 239/219/2 +f 225/220/2 241/223/2 240/221/2 +f 226/222/2 242/225/2 241/223/2 +f 227/224/2 243/227/2 242/225/2 +f 228/226/2 244/229/2 243/227/2 +f 229/228/2 245/231/2 244/229/2 +f 229/228/2 230/232/2 246/230/2 +f 230/232/2 231/234/2 247/233/2 +f 231/234/2 232/236/2 248/235/2 +f 232/236/2 217/238/2 233/237/2 +f 217/238/2 218/240/2 234/239/2 +f 218/240/2 219/242/2 235/241/2 +f 219/242/2 220/210/2 236/212/2 +s 1 +f 79/282/7 94/165/8 78/283/8 +f 87/284/9 102/144/10 86/285/10 +f 80/286/11 95/161/7 79/282/7 +f 88/287/12 103/140/9 87/284/9 +f 81/288/5 96/158/11 80/286/11 +f 74/289/13 89/137/4 73/290/4 +f 73/290/4 104/139/12 88/287/12 +f 82/291/14 97/155/5 81/288/5 +f 75/292/15 90/135/13 74/289/13 +f 83/293/16 98/152/14 82/291/14 +f 76/294/17 91/172/15 75/292/15 +f 84/295/18 99/149/16 83/293/16 +f 77/296/6 92/170/17 76/294/17 +f 85/297/3 100/148/18 84/295/18 +f 78/283/8 93/167/6 77/298/6 +f 86/285/10 101/146/3 85/297/3 +f 115/153/15 130/299/13 114/154/13 +f 108/265/18 123/300/16 107/171/16 +f 116/150/17 131/301/15 115/151/15 +f 109/264/3 124/302/18 108/169/18 +f 117/261/6 132/303/17 116/147/17 +f 110/263/10 125/304/3 109/166/3 +f 118/260/8 133/305/6 117/145/6 +f 111/262/9 126/306/10 110/164/10 +f 119/259/7 134/307/8 118/143/8 +f 112/162/12 127/308/9 111/163/9 +f 120/141/11 135/309/7 119/142/7 +f 113/159/4 128/310/12 112/160/12 +f 106/257/14 121/311/5 105/136/5 +f 105/258/5 136/312/11 120/138/11 +f 114/156/13 129/313/4 113/157/4 +f 107/266/16 122/314/14 106/173/14 +f 139/315/19 76/294/20 75/292/19 +f 140/316/20 77/296/21 76/294/20 +f 141/317/21 78/283/22 77/298/21 +f 142/318/22 79/282/23 78/283/22 +f 143/319/23 80/286/24 79/282/23 +f 144/320/24 81/288/25 80/286/24 +f 145/321/25 82/291/26 81/288/25 +f 82/291/26 147/322/27 83/293/27 +f 147/322/27 84/295/28 83/293/27 +f 148/323/28 85/297/29 84/295/28 +f 85/297/29 150/324/30 86/285/30 +f 150/324/30 87/284/31 86/285/30 +f 87/284/31 152/325/32 88/287/32 +f 152/325/32 73/290/33 88/287/32 +f 137/326/33 74/289/34 73/290/33 +f 74/289/34 139/315/19 75/292/19 +f 210/327/14 163/191/16 162/189/14 +f 203/328/15 156/177/17 155/209/15 +f 211/329/16 164/193/18 163/191/16 +f 204/330/17 157/280/6 156/177/17 +f 212/331/18 165/195/3 164/193/18 +f 205/332/6 158/180/8 157/182/6 +f 213/333/3 166/199/10 165/195/3 +f 206/334/8 159/183/7 158/180/8 +f 214/335/10 167/201/9 166/199/10 +f 207/336/7 160/185/11 159/183/7 +f 215/337/9 168/203/12 167/201/9 +f 208/338/11 161/187/5 160/185/11 +f 201/339/4 154/207/13 153/205/4 +f 216/340/12 153/205/4 168/203/12 +f 209/341/5 162/189/14 161/187/5 +f 202/342/13 155/209/15 154/207/13 +f 189/343/35 204/330/36 188/344/36 +f 190/345/37 205/332/35 189/346/35 +f 191/347/38 206/334/37 190/345/37 +f 191/347/38 208/338/39 207/336/38 +f 192/348/39 209/341/40 208/338/39 +f 193/349/40 210/327/41 209/341/40 +f 194/350/41 211/329/42 210/327/41 +f 195/351/42 212/331/43 211/329/42 +f 197/352/44 212/331/43 196/353/43 +f 198/354/45 213/333/44 197/352/44 +f 199/355/46 214/335/45 198/354/45 +f 200/356/47 215/337/46 199/355/46 +f 185/357/48 216/340/47 200/356/47 +f 186/358/49 201/339/48 185/357/48 +f 187/359/50 202/342/49 186/358/49 +f 188/344/36 203/328/50 187/359/50 +f 274/360/14 227/224/16 226/222/14 +f 267/361/15 220/210/17 219/242/15 +f 275/362/16 228/226/18 227/224/16 +f 268/363/17 221/281/6 220/210/17 +f 276/364/18 229/228/3 228/226/18 +f 269/365/6 222/213/8 221/215/6 +f 277/366/3 230/232/10 229/228/3 +f 270/367/8 223/216/7 222/213/8 +f 278/368/10 231/234/9 230/232/10 +f 271/369/7 224/218/11 223/216/7 +f 279/370/9 232/236/12 231/234/9 +f 272/371/11 225/220/5 224/218/11 +f 265/372/4 218/240/13 217/238/4 +f 280/373/12 217/238/4 232/236/12 +f 273/374/5 226/222/14 225/220/5 +f 266/375/13 219/242/15 218/240/13 +f 253/376/35 268/363/36 252/377/36 +f 254/378/37 269/365/35 253/379/35 +f 254/378/37 271/369/38 270/367/37 +f 255/380/38 272/371/39 271/369/38 +f 256/381/39 273/374/40 272/371/39 +f 257/382/40 274/360/41 273/374/40 +f 258/383/41 275/362/42 274/360/41 +f 259/384/42 276/364/43 275/362/42 +f 261/385/44 276/364/43 260/386/43 +f 262/387/45 277/366/44 261/385/44 +f 263/388/46 278/368/45 262/387/45 +f 264/389/47 279/370/46 263/388/46 +f 249/390/48 280/373/47 264/389/47 +f 250/391/49 265/372/48 249/390/48 +f 251/392/50 266/375/49 250/391/49 +f 252/377/36 267/361/50 251/392/50 +f 79/282/7 95/161/7 94/165/8 +f 87/284/9 103/140/9 102/144/10 +f 80/286/11 96/158/11 95/161/7 +f 88/287/12 104/139/12 103/140/9 +f 81/288/5 97/155/5 96/158/11 +f 74/289/13 90/135/13 89/137/4 +f 73/290/4 89/137/4 104/139/12 +f 82/291/14 98/152/14 97/155/5 +f 75/292/15 91/172/15 90/135/13 +f 83/293/16 99/149/16 98/152/14 +f 76/294/17 92/170/17 91/172/15 +f 84/295/18 100/148/18 99/149/16 +f 77/296/6 93/168/6 92/170/17 +f 85/297/3 101/146/3 100/148/18 +f 78/283/8 94/165/8 93/167/6 +f 86/285/10 102/144/10 101/146/3 +f 115/153/15 131/393/15 130/299/13 +f 108/265/18 124/394/18 123/300/16 +f 116/150/17 132/395/17 131/301/15 +f 109/264/3 125/396/3 124/302/18 +f 117/261/6 133/397/6 132/303/17 +f 110/263/10 126/398/10 125/304/3 +f 118/260/8 134/399/8 133/305/6 +f 111/262/9 127/400/9 126/306/10 +f 119/259/7 135/401/7 134/307/8 +f 112/162/12 128/402/12 127/308/9 +f 120/141/11 136/403/11 135/309/7 +f 113/159/4 129/404/4 128/310/12 +f 106/257/14 122/405/14 121/311/5 +f 105/258/5 121/406/5 136/312/11 +f 114/156/13 130/407/13 129/313/4 +f 107/266/16 123/408/16 122/314/14 +f 139/315/19 140/316/20 76/294/20 +f 140/316/20 141/409/21 77/296/21 +f 141/317/21 142/318/22 78/283/22 +f 142/318/22 143/319/23 79/282/23 +f 143/319/23 144/320/24 80/286/24 +f 144/320/24 145/321/25 81/288/25 +f 145/321/25 146/410/26 82/291/26 +f 82/291/26 146/410/26 147/322/27 +f 147/322/27 148/323/28 84/295/28 +f 148/323/28 149/411/29 85/297/29 +f 85/297/29 149/411/29 150/324/30 +f 150/324/30 151/412/31 87/284/31 +f 87/284/31 151/412/31 152/325/32 +f 152/325/32 137/326/33 73/290/33 +f 137/326/33 138/413/34 74/289/34 +f 74/289/34 138/413/34 139/315/19 +f 210/327/14 211/329/16 163/191/16 +f 203/328/15 204/330/17 156/177/17 +f 211/329/16 212/331/18 164/193/18 +f 204/330/17 205/414/6 157/280/6 +f 212/331/18 213/333/3 165/195/3 +f 205/332/6 206/334/8 158/180/8 +f 213/333/3 214/335/10 166/199/10 +f 206/334/8 207/336/7 159/183/7 +f 214/335/10 215/337/9 167/201/9 +f 207/336/7 208/338/11 160/185/11 +f 215/337/9 216/340/12 168/203/12 +f 208/338/11 209/341/5 161/187/5 +f 201/339/4 202/342/13 154/207/13 +f 216/340/12 201/339/4 153/205/4 +f 209/341/5 210/327/14 162/189/14 +f 202/342/13 203/328/15 155/209/15 +f 189/343/35 205/414/35 204/330/36 +f 190/345/37 206/334/37 205/332/35 +f 191/347/38 207/336/38 206/334/37 +f 191/347/38 192/348/39 208/338/39 +f 192/348/39 193/349/40 209/341/40 +f 193/349/40 194/350/41 210/327/41 +f 194/350/41 195/351/42 211/329/42 +f 195/351/42 196/353/43 212/331/43 +f 197/352/44 213/333/44 212/331/43 +f 198/354/45 214/335/45 213/333/44 +f 199/355/46 215/337/46 214/335/45 +f 200/356/47 216/340/47 215/337/46 +f 185/357/48 201/339/48 216/340/47 +f 186/358/49 202/342/49 201/339/48 +f 187/359/50 203/328/50 202/342/49 +f 188/344/36 204/330/36 203/328/50 +f 274/360/14 275/362/16 227/224/16 +f 267/361/15 268/363/17 220/210/17 +f 275/362/16 276/364/18 228/226/18 +f 268/363/17 269/415/6 221/281/6 +f 276/364/18 277/366/3 229/228/3 +f 269/365/6 270/367/8 222/213/8 +f 277/366/3 278/368/10 230/232/10 +f 270/367/8 271/369/7 223/216/7 +f 278/368/10 279/370/9 231/234/9 +f 271/369/7 272/371/11 224/218/11 +f 279/370/9 280/373/12 232/236/12 +f 272/371/11 273/374/5 225/220/5 +f 265/372/4 266/375/13 218/240/13 +f 280/373/12 265/372/4 217/238/4 +f 273/374/5 274/360/14 226/222/14 +f 266/375/13 267/361/15 219/242/15 +f 253/376/35 269/415/35 268/363/36 +f 254/378/37 270/367/37 269/365/35 +f 254/378/37 255/380/38 271/369/38 +f 255/380/38 256/381/39 272/371/39 +f 256/381/39 257/382/40 273/374/40 +f 257/382/40 258/383/41 274/360/41 +f 258/383/41 259/384/42 275/362/42 +f 259/384/42 260/386/43 276/364/43 +f 261/385/44 277/366/44 276/364/43 +f 262/387/45 278/368/45 277/366/44 +f 263/388/46 279/370/46 278/368/45 +f 264/389/47 280/373/47 279/370/46 +f 249/390/48 265/372/48 280/373/47 +f 250/391/49 266/375/49 265/372/48 +f 251/392/50 267/361/50 266/375/49 +f 252/377/36 268/363/36 267/361/50 diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.fly.png b/src/main/resources/assets/hbm/textures/items/powder_ash.fly.png new file mode 100644 index 0000000000000000000000000000000000000000..15e4bae5ca8174fa2bc7b5dea5b11cf20dc56d32 GIT binary patch literal 288 zcmV+*0pI?KP)3hVcYP3VPF5HEmP?00004-S<7$a-PR^oX2raxW3+v%F(de(8SjNbAW&{Cjcdj}=?fX%kr&z$+VCsqEBrmo zio|o*n#yi7I?27YnT;zukt~IrY7TCSG;e-e2CFFBeAm`M*q?}GjSR4E4raa19pxwU z&b;pr=rMVF`qY)b*E<$wXA3%_tbD_wUcXtyq!5XV?N3aWg7m%Z{Ot2yChTQ6=}WA8QIC-2j6_bK`-(po3Ox?MGBb%X^{5qw19B;$EzOHBTEN^*WDxGjoZ zg+=CHdxLp3&3w{9kB{8H)pgTaSRlkPMrB!`GFp_8CWMVYM1!#?KL}O3V}GH{6hhy# z-ShZ+wX(bNn==j=5j+o*m`S}N_CbkZP>%{v_7%P^6NzWm{_2}xDZ**IT8v?N0bejR zBG}dN@Jx$Kc!8bk7cRvL(Uwb#Fpr#dF+KggE1^*_ObU@O7Dg|@d|Zv6o>iDWBv!QT zSy&wX($&g=<*s{ysBQ4GGE+sOwz>>wyOEr!`w>x|v3x9&=i}j4bOcYJA@uxqebG)_ z+u9-*1tn z$iNYL{xqbPh|iL{>j}s0NVer=HAkd8!Id6=f=LV;^)VpqNMr2X@60jBAJH%|$!7Z5 zVM9@G!EPS$2IsQJ!dr@}K8G7^xW~6ipF6rF;CrF*Y`BTOq)JSwx6JFzjSp!X( z2L{o~Aqmg;I5pkuPZE@Gfv4P%cusw7b;ehPx9*H+wWWG`V7czu%Ht?egud?}6d7dh z7;PWuINc?l7p5UGx79V{#wdZ=J#GydsMVc0J2hFM$xn}6?r7ZXKXQZ)p;Z#l4*SEA>y-1Hb|M#z*aojiT5aWzH-uKOz?lg% zM=xUaPipq@$5adl29DFg87~dAPG}4Nu)p4^Y_PY59b60XK1;l^$)I zn?5b=9r9?uy2mI8dnzomiCD9FtunZRB@Y*Dbowd0Z6-fH-r%$Ipp27v25L}wi(YS6 z&B4N-Q?p>Y+!FO4zU*`#w7^YBVrY@7I~#851E(&UJM zM#YBdPrhw7)Acj4hQX*>edD(JxGTW7uNVv z@;kv8W5=#GJvLC6jR=)Gsaf%Ovf+jS=j%DehuKlLjieB1ApWy+xl>ebT3C|SdYK%LT4hRq4qdV^U4HXtNx>=P%&5(MysnV#MXYs{9p*Bk@r8ZH zQ$u#c_)oA~%?9Lsk2R#T&6^i0!ihrzGGO>6x`3G%X6ncqElO*mT{s)<19x~~p7?o< zGjFfwocQK-oyAEMG3~TErNh{V#-flf`;n5q&%3-d4YhTJ;_|w0TbJJ+Uzu!+HIzoA zgT?mEa*q1mb~cb5>OO6&Z^8w6^&lcZ*zPRGzQR2HlPMRu1+^+yCM8t*#n=QlEcwa_ ze^Xd0L(hODS6KLgNF;W+0U%Ft_$X#fBkxP6jBjpo*QV4&rv|H9j1)X9oL6Ku$oUk8 z`k;(Dy^v|;zY>j;SE%iySJVDliPXjLw_rOISvA$tze^*M@wLXhLXDJZ=l96Sw_+0w z-8eu=1B2CRkvP#mxoG~Dxg$Kut4x+ftqN+?B}SaK{-I3IB=G3*_^nu0YMZg4tCYCelcnxE6NJ8R?W88F!LhpYA-A3C za#d2thD+MhB7D5CN$3>tcwYpbrVu7)qpz9{DtBY8`?bW!YNqzo*Y zdW@8o&Gx3TN(D3+FtZ_8#@pWL6Y!~o3{Ir;B}5Wz?AhjMz7=Z$i=LUidE)Cr5!F8v z2Bl}|7k>VnawzXj07QpDGnL;K(0Lo&|lki@XCr<=nYsV0JdaKLy zxi8{U@(FQ>aW7xNHTGv=SU(dJ6m6_MPOF&%K9vgi8xXjsK zM`!|SJ;?V6rD>=u&MMp%>eIPZq=U5y_8VWAZck!+N_kCS?Nq%Y=cvIOEHNL)vQQ!2 zt+LD~@MHT8p@Q|;((J*Npt5|DJXOc`lg?EE(HO%0AJb%)B02!mplPdyM3Yvu4z@6! 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 literal 0 HcmV?d00001 From e1af74b781f899bd5f9198f78149991aea4ea240 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Thu, 14 Sep 2023 19:32:31 -0400 Subject: [PATCH 030/207] improvement to recipes --- .../com/hbm/inventory/recipes/BlastFurnaceRecipes.java | 6 ------ .../com/hbm/inventory/recipes/anvil/AnvilRecipes.java | 8 ++++++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java index 2bcce4544..af7032305 100644 --- a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java @@ -64,12 +64,6 @@ public class BlastFurnaceRecipes extends SerializableRecipe { addRecipe(ModItems.meteorite_sword_hardened, CO, new ItemStack(ModItems.meteorite_sword_alloyed)); addRecipe(ModBlocks.block_meteor, CO, new ItemStack(ModItems.ingot_meteorite)); - addRecipe(ModItems.cobalt_sword, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_sword)); - addRecipe(ModItems.cobalt_pickaxe, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_pickaxe)); - addRecipe(ModItems.cobalt_axe, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_axe)); - addRecipe(ModItems.cobalt_shovel, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_shovel)); - addRecipe(ModItems.cobalt_hoe, ModItems.ingot_meteorite, new ItemStack(ModItems.cobalt_decorated_hoe)); - if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) { addRecipe(ModItems.canister_empty, COAL, new ItemStack(ModItems.canister_full, 1, Fluids.OIL.getID())); } diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 3df9c8e30..b803e8cb7 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -65,6 +65,14 @@ public class AnvilRecipes { smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_meteorite_forged, 1), new ComparableStack(ModItems.ingot_meteorite), new ComparableStack(ModItems.ingot_meteorite))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.blade_meteorite, 1), new ComparableStack(ModItems.ingot_meteorite_forged), new ComparableStack(ModItems.ingot_meteorite_forged))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.meteorite_sword_reforged, 1), new ComparableStack(ModItems.meteorite_sword_seared), new ComparableStack(ModItems.ingot_meteorite_forged))); + + + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_sword, 1), new ComparableStack(ModItems.cobalt_sword), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_pickaxe, 1), new ComparableStack(ModItems.cobalt_pickaxe), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_axe, 1), new ComparableStack(ModItems.cobalt_axe), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_shovel, 1), new ComparableStack(ModItems.cobalt_shovel), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_hoe, 1), new ComparableStack(ModItems.cobalt_hoe), new ComparableStack(ModItems.ingot_meteorite))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.gun_ar15, 1), new ComparableStack(ModItems.gun_thompson), new ComparableStack(ModItems.pipe_lead))); smithingRecipes.add(new AnvilSmithingRecipe(1916169, new ItemStack(ModItems.wings_murk, 1), new ComparableStack(ModItems.wings_limp), new ComparableStack(ModItems.particle_tachyon))); smithingRecipes.add(new AnvilSmithingRecipe(4, new ItemStack(ModItems.flask_infusion, 1, EnumInfusion.SHIELD.ordinal()), new ComparableStack(ModItems.gem_alexandrite), new ComparableStack(ModItems.bottle_nuka))); From b04e73422d23e9505cabad617d368dd9821a0d1a Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 15 Sep 2023 13:10:36 +0200 Subject: [PATCH 031/207] ashpit NEI handling, ashpit for chimneys, removed old trash, fixes --- changelog | 40 +++++++++++++- src/main/java/com/hbm/blocks/ModBlocks.java | 4 +- .../java/com/hbm/handler/FuelHandler.java | 2 + .../com/hbm/handler/nei/AshpitHandler.java | 50 ++++++++++++++++++ .../com/hbm/inventory/OreDictManager.java | 4 +- .../inventory/recipes/AssemblerRecipes.java | 2 +- .../inventory/recipes/anvil/AnvilRecipes.java | 3 +- src/main/java/com/hbm/items/ItemEnums.java | 4 +- src/main/java/com/hbm/items/ModItems.java | 34 ------------ .../com/hbm/items/weapon/ItemGunBase.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 10 ++++ src/main/java/com/hbm/main/NEIConfig.java | 1 + .../tileentity/machine/TileEntityAshpit.java | 8 +++ .../machine/TileEntityChimneyBase.java | 29 +++++++++- .../machine/TileEntityChimneyIndustrial.java | 7 ++- src/main/java/com/hbm/util/InventoryUtil.java | 4 ++ src/main/resources/assets/hbm/lang/de_DE.lang | 5 ++ src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../assets/hbm/textures/items/plan_c_alt.png | Bin 245 -> 0 bytes .../hbm/textures/items/powder_ash.soot.png | Bin 0 -> 299 bytes .../hbm/textures/items/recycled_crystal.png | Bin 811 -> 0 bytes .../textures/items/recycled_electronic.png | Bin 469 -> 0 bytes .../hbm/textures/items/recycled_explosive.png | Bin 372 -> 0 bytes .../hbm/textures/items/recycled_ground.png | Bin 408 -> 0 bytes .../hbm/textures/items/recycled_metal.png | Bin 376 -> 0 bytes .../hbm/textures/items/recycled_misc.png | Bin 647 -> 0 bytes .../hbm/textures/items/recycled_nuclear.png | Bin 352 -> 0 bytes .../hbm/textures/items/recycled_organic.png | Bin 409 -> 0 bytes .../hbm/textures/items/recycled_overlay.png | Bin 278 -> 0 bytes .../hbm/textures/items/recycled_refined.png | Bin 399 -> 0 bytes .../hbm/textures/items/recycled_rock.png | Bin 443 -> 0 bytes 31 files changed, 167 insertions(+), 44 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/AshpitHandler.java delete mode 100644 src/main/resources/assets/hbm/textures/items/plan_c_alt.png create mode 100644 src/main/resources/assets/hbm/textures/items/powder_ash.soot.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_crystal.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_electronic.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_explosive.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_ground.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_metal.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_misc.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_nuclear.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_organic.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_overlay.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_refined.png delete mode 100644 src/main/resources/assets/hbm/textures/items/recycled_rock.png diff --git a/changelog b/changelog index ff10295e2..607efd8b8 100644 --- a/changelog +++ b/changelog @@ -1,13 +1,51 @@ ## Added +* Telex + * A basic message system using redstone over radio + * Allows messages to be sent at a rate of 20 characters per second + * Features things like text formatting, printing and the terminal bell +* Ground water pumps + * Come in steam-powered and electric variants + * Faster than their infinite barrel counterpart + * Need to be placed below Y:70 and on solid ground to work + * Compatible floor blocks include all dirt variants and sand, the pump will not work when placed on pure rock +* Schrabidate capacitor + * Can store 50GHE +* Express conveyor belts + * Work like regular single-lane conveyor belts but 3x faster +* Industrial smokestack + * An even larger smokestack, matching the size of the coker unit + * Reduced pollution by 90%, as opposed to the brick smokestack's 75% ## Changed * Updated russian localization * The UAC pistol's UV now looks prettier * The UAC pistol now fires a burst on right click * CCGTs can no longer have smoke removed from them, on the count of there not being enough connections anyway. The pollution rate is now equivalent to three small furnaces +* The DFC receiver is now crafted with a block of DNT instead of sellafite corium, on the count of sellafite corium being near impossible to get +* Fireclay now has a third recipe, being craftable from clay, limestone and sand +* A whole clay block can now be combination smelted into a block of bricks +* The pipe clanking sound is now also used when placing regular pipes as opposed to only when pre-defined pipe items are used +* Josh now has a burst fire mode using RMB +* The smokestack's recipe has changed, now requiring a steel grate for catching ashes +* Simplified the decorated cobalt tool recipes, they now only require one cobalt tool and one hot bar of meteorite in an anvil +* Changed the starmetal tool recipes +* Cobalt armor is now crafted with steel armor and cobalt billets, making the armor substantially cheaper +* Sightly increased protection levels for the security armor and cobalt gear +* Cobalt, decorated cobalt and starmetal gear is now a lot more enchantable +* The ashpit now has a NEI handler, showing roughly how ash types are made +* Smokestacks now capture fly ash and are now compatible with ashpits +* Industrial smokestacks can also capture fine soot +* Reduced strings required for making coal filters, filters are now also available in tier 2 anvils ## Fixed * Fixed the bomber not spawning if the chunkloading radios is too small * Fixed a couple spelling mistakes like BFB fuel being called ZFB and the broken ZIRNOX * Potentially fixed a compat issue where galacticraft moon soil isn't shreddable into NTM moon turf -* Hopefully fixed the disappearing fluid buf once and for all \ No newline at end of file +* Hopefully fixed the disappearing fluid bug once and for all +* Fixed lag caused by the radiation system needlessly loading chunks +* Fixed secret folders giving volatile templates instead of persistent ones +* Fixed the ore dict registry happening in a later loading phase instead of PreInit which should fix some compatibility issues +* Hopefully fixed issue where the tom impact effects will last even when switching worlds +* Fixed logspam caused by custom machine crafting handler +* Fixed issue with the assemblers and chemplants where recipes with larger input requirements would break the input funnel +* Fixed crash caused by reloading when the ammo item is in the last slot \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index f08d42a0f..8c6fb76c6 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1960,8 +1960,8 @@ public class ModBlocks { fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon"); fluid_duct_solid = new BlockFluidDuctSolid(Material.iron).setBlockName("fluid_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_solid"); fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); - fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); - fluid_duct_exhaust = new FluidDuctBoxExhaust(Material.iron).setBlockName("fluid_duct_exhaust").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); + fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); + fluid_duct_exhaust = new FluidDuctBoxExhaust(Material.iron).setBlockName("fluid_duct_exhaust").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); fluid_duct_paintable = new FluidDuctPaintable().setBlockName("fluid_duct_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); fluid_duct_gauge = new FluidDuctGauge().setBlockName("fluid_duct_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); fluid_valve = new FluidValve(Material.iron).setBlockName("fluid_valve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); diff --git a/src/main/java/com/hbm/handler/FuelHandler.java b/src/main/java/com/hbm/handler/FuelHandler.java index 951a5d6c2..18442a5a2 100644 --- a/src/main/java/com/hbm/handler/FuelHandler.java +++ b/src/main/java/com/hbm/handler/FuelHandler.java @@ -57,6 +57,8 @@ public class FuelHandler implements IFuelHandler { case 0: return single / 2; case 1: return single; case 2: return single / 2; + case 3: return single; + case 4: return single / 2; } } diff --git a/src/main/java/com/hbm/handler/nei/AshpitHandler.java b/src/main/java/com/hbm/handler/nei/AshpitHandler.java new file mode 100644 index 000000000..d7cf8af20 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/AshpitHandler.java @@ -0,0 +1,50 @@ +package com.hbm.handler.nei; + +import java.util.HashMap; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ItemEnums.EnumAshType; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; + +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class AshpitHandler extends NEIUniversalHandler { + + public AshpitHandler() { + super("Ashpit", ModBlocks.machine_ashpit, getRecipes()); + } + + @Override + public String getKey() { + return "ntmAshpit"; + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + ItemStack[] ovens = new ItemStack[] {new ItemStack(ModBlocks.heater_firebox), new ItemStack(ModBlocks.heater_oven)}; + ItemStack[] chimneys = new ItemStack[] {new ItemStack(ModBlocks.chimney_brick), new ItemStack(ModBlocks.chimney_industrial)}; + ItemStack[] coals = new ItemStack[] {new ItemStack(Items.coal, 1, 0), new ItemStack(ModItems.lignite), new ItemStack(ModItems.coke)}; + ItemStack[] wood = new ItemStack[] {new ItemStack(Blocks.log), new ItemStack(Blocks.log2), new ItemStack(Blocks.planks), new ItemStack(Blocks.sapling)}; + ItemStack[] misc = new ItemStack[] {new ItemStack(ModItems.solid_fuel), new ItemStack(ModItems.scrap), new ItemStack(ModItems.dust), new ItemStack(ModItems.rocket_fuel)}; + FluidType[] smokes = new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON};; + + recipes.put(new ItemStack[][] {ovens, coals}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.COAL)); + recipes.put(new ItemStack[][] {ovens, wood}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD)); + recipes.put(new ItemStack[][] {ovens, misc}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC)); + + for(FluidType smoke : smokes) { + recipes.put(new ItemStack[][] {chimneys, new ItemStack[] {ItemFluidIcon.make(smoke, 2_000)}}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FLY)); + recipes.put(new ItemStack[][] {new ItemStack[] {new ItemStack(ModBlocks.chimney_industrial)}, new ItemStack[] {ItemFluidIcon.make(smoke, 8_000)}}, DictFrame.fromOne(ModItems.powder_ash, EnumAshType.SOOT)); + } + + return recipes; + } +} diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 685251982..68339d68a 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -466,7 +466,7 @@ public class OreDictManager { for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored_ext, 1, i)); } ANY_COKE .gem(fromAll(coke, EnumCokeType.class)).block(fromAll(block_coke, EnumCokeType.class)); ANY_BISMOID .ingot(ingot_bismuth, ingot_arsenic).nugget(nugget_bismuth, nugget_arsenic).block(block_bismuth); - ANY_ASH .any(fromOne(ModItems.powder_ash, EnumAshType.WOOD), fromOne(ModItems.powder_ash, EnumAshType.COAL), fromOne(ModItems.powder_ash, EnumAshType.MISC)); + ANY_ASH .any(fromOne(ModItems.powder_ash, EnumAshType.WOOD), fromOne(ModItems.powder_ash, EnumAshType.COAL), fromOne(ModItems.powder_ash, EnumAshType.MISC), fromOne(ModItems.powder_ash, EnumAshType.FLY), fromOne(ModItems.powder_ash, EnumAshType.SOOT)); /* * TAR @@ -575,6 +575,8 @@ public class OreDictManager { OreDictionary.registerOre("dyeLightGray", fromOne(powder_ash, EnumAshType.WOOD)); OreDictionary.registerOre("dyeBlack", fromOne(powder_ash, EnumAshType.COAL)); OreDictionary.registerOre("dyeGray", fromOne(powder_ash, EnumAshType.MISC)); + OreDictionary.registerOre("dyeBrown", fromOne(powder_ash, EnumAshType.FLY)); + OreDictionary.registerOre("dyeBlack", fromOne(powder_ash, EnumAshType.SOOT)); OreDictionary.registerOre("dye", new ItemStack(powder_ash, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre("blockGlass", glass_boron); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 50db8cf5a..0e6afcdb5 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -164,7 +164,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.wire_magnetized_tungsten, 6), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), },20); makeRecipe(new ComparableStack(ModItems.hazmat_cloth, 4), new AStack[] {new OreDictStack(PB.dust(), 4), new ComparableStack(Items.string, 8), },50); makeRecipe(new ComparableStack(ModItems.asbestos_cloth, 4), new AStack[] {new OreDictStack(ASBESTOS.ingot(), 2), new ComparableStack(Items.string, 6), new ComparableStack(Blocks.wool, 1), },50); - makeRecipe(new ComparableStack(ModItems.filter_coal, 1), new AStack[] {new OreDictStack(COAL.dust(), 4), new ComparableStack(Items.string, 6), new ComparableStack(Items.paper, 1), },50); + makeRecipe(new ComparableStack(ModItems.filter_coal, 1), new AStack[] {new OreDictStack(COAL.dust(), 4), new ComparableStack(Items.string, 2), new ComparableStack(Items.paper, 1), },50); makeRecipe(new ComparableStack(ModItems.centrifuge_element, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 4), new OreDictStack(TI.plate528(), 4), new ComparableStack(ModItems.motor, 1), }, 100); makeRecipe(new ComparableStack(ModItems.magnet_circular, 1), new AStack[] {new ComparableStack(ModBlocks.fusion_conductor, 5), new OreDictStack(STEEL.ingot(), 4), new OreDictStack(ALLOY.plate(), 6), },150); makeRecipe(new ComparableStack(ModItems.reactor_core, 1), new AStack[] {new OreDictStack(PB.ingot(), 8), new OreDictStack(BE.ingot(), 6), new OreDictStack(STEEL.plate(), 16), new OreDictStack(OreDictManager.getReflector(), 8), new OreDictStack(FIBER.ingot(), 2) },100); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index cc325331a..568f66a6f 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -212,7 +212,8 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] {new ComparableStack(ModItems.motor), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(DESH.ingot(), 2), new ComparableStack(ModItems.coil_gold_torus)}, new AnvilOutput(new ItemStack(ModItems.motor_desh, 1))).setTier(3)); - + + pullFromAssembler(new ComparableStack(ModItems.filter_coal), 2); pullFromAssembler(new ComparableStack(ModItems.thermo_element), 2); constructionRecipes.add(new AnvilConstructionRecipe( diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index a83f5171c..f57fde2f9 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -26,7 +26,9 @@ public class ItemEnums { public static enum EnumAshType { WOOD, COAL, - MISC + MISC, + FLY, + SOOT } public static enum EnumBriquetteType { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 89810e7bc..62b4e98ce 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1203,17 +1203,6 @@ public class ModItems { public static Item debris_element; public static Item containment_box; - - public static Item recycled_ground; - public static Item recycled_rock; - public static Item recycled_metal; - public static Item recycled_refined; - public static Item recycled_organic; - public static Item recycled_crystal; - public static Item recycled_explosive; - public static Item recycled_electronic; - public static Item recycled_nuclear; - public static Item recycled_misc; public static Item test_nuke_igniter; public static Item test_nuke_propellant; @@ -3474,17 +3463,6 @@ public class ModItems { coin_worm = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_worm").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_worm"); coin_ufo = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_ufo").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_ufo"); - recycled_ground = new Item().setUnlocalizedName("recycled_ground").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_ground"); - recycled_rock = new Item().setUnlocalizedName("recycled_rock").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_rock"); - recycled_metal = new Item().setUnlocalizedName("recycled_metal").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_metal"); - recycled_refined = new Item().setUnlocalizedName("recycled_refined").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_refined"); - recycled_organic = new Item().setUnlocalizedName("recycled_organic").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_organic"); - recycled_crystal = new Item().setUnlocalizedName("recycled_crystal").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_crystal"); - recycled_explosive = new Item().setUnlocalizedName("recycled_explosive").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_explosive"); - recycled_electronic = new Item().setUnlocalizedName("recycled_electronic").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_electronic"); - recycled_nuclear = new Item().setUnlocalizedName("recycled_nuclear").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_nuclear"); - recycled_misc = new Item().setUnlocalizedName("recycled_misc").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_misc"); - rod_empty = new Item().setUnlocalizedName("rod_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_empty"); rod = (ItemEnumMulti) new ItemBreedingRod().setUnlocalizedName("rod").setContainerItem(ModItems.rod_empty).setCreativeTab(MainRegistry.controlTab); rod_dual_empty = new Item().setUnlocalizedName("rod_dual_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_dual_empty"); @@ -6523,18 +6501,6 @@ public class ModItems { GameRegistry.registerItem(laser_crystal_dnt, laser_crystal_dnt.getUnlocalizedName()); GameRegistry.registerItem(laser_crystal_digamma, laser_crystal_digamma.getUnlocalizedName()); - //Recycled Units - GameRegistry.registerItem(recycled_ground, recycled_ground.getUnlocalizedName()); - GameRegistry.registerItem(recycled_rock, recycled_rock.getUnlocalizedName()); - GameRegistry.registerItem(recycled_metal, recycled_metal.getUnlocalizedName()); - GameRegistry.registerItem(recycled_refined, recycled_refined.getUnlocalizedName()); - GameRegistry.registerItem(recycled_organic, recycled_organic.getUnlocalizedName()); - GameRegistry.registerItem(recycled_crystal, recycled_crystal.getUnlocalizedName()); - GameRegistry.registerItem(recycled_explosive, recycled_explosive.getUnlocalizedName()); - GameRegistry.registerItem(recycled_electronic, recycled_electronic.getUnlocalizedName()); - GameRegistry.registerItem(recycled_nuclear, recycled_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(recycled_misc, recycled_misc.getUnlocalizedName()); - //Catalyst Rune Sigils GameRegistry.registerItem(rune_blank, rune_blank.getUnlocalizedName()); GameRegistry.registerItem(rune_isa, rune_isa.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 2a6eff682..6ec696cab 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -386,7 +386,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(mainConfig.ejector != null && mainConfig.ejector.getAfterReload()) queueCasing(player, mainConfig.ejector, prevCfg, stack); - InventoryUtil.tryConsumeAStack(player.inventory.mainInventory, 0, player.inventory.mainInventory.length, ammo); + InventoryUtil.tryConsumeAStack(player.inventory.mainInventory, 0, player.inventory.mainInventory.length - 1, ammo); } else { setReloadCycle(stack, getReloadCycle(stack) - 1); } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index cdc5212a2..b1458de1f 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1163,6 +1163,16 @@ public class MainRegistry { ignoreMappings.add("hbm:item.primer_50"); ignoreMappings.add("hbm:item.primer_buckshot"); ignoreMappings.add("hbm:tile.ore_bedrock_coltan"); + ignoreMappings.add("hbm:item.recycled_ground"); + ignoreMappings.add("hbm:item.recycled_rock"); + ignoreMappings.add("hbm:item.recycled_metal"); + ignoreMappings.add("hbm:item.recycled_refined"); + ignoreMappings.add("hbm:item.recycled_organic"); + ignoreMappings.add("hbm:item.recycled_crystal"); + ignoreMappings.add("hbm:item.recycled_explosive"); + ignoreMappings.add("hbm:item.recycled_electronic"); + ignoreMappings.add("hbm:item.recycled_nuclear"); + ignoreMappings.add("hbm:item.recycled_misc"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 7ce0ffd04..8f3f93532 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -75,6 +75,7 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new OutgasserHandler()); registerHandler(new ElectrolyserFluidHandler()); registerHandler(new ElectrolyserMetalHandler()); + registerHandler(new AshpitHandler()); for(MachineConfiguration conf : CustomMachineConfigJSON.niceList) registerHandlerBypass(new CustomMachineHandler(conf)); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java index d5e27e4ac..cd78eb206 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java @@ -29,6 +29,8 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi public int ashLevelWood; public int ashLevelCoal; public int ashLevelMisc; + public int ashLevelFly; + public int ashLevelSoot; public TileEntityAshpit() { super(5); @@ -59,6 +61,8 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi if(processAsh(ashLevelWood, EnumAshType.WOOD, threshold)) ashLevelWood -= threshold; if(processAsh(ashLevelCoal, EnumAshType.COAL, threshold)) ashLevelCoal -= threshold; if(processAsh(ashLevelMisc, EnumAshType.MISC, threshold)) ashLevelMisc -= threshold; + if(processAsh(ashLevelFly, EnumAshType.FLY, threshold)) ashLevelFly -= threshold; + if(processAsh(ashLevelSoot, EnumAshType.SOOT, threshold * 4)) ashLevelSoot -= threshold * 4; isFull = false; @@ -126,6 +130,8 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi this.ashLevelWood = nbt.getInteger("ashLevelWood"); this.ashLevelCoal = nbt.getInteger("ashLevelCoal"); this.ashLevelMisc = nbt.getInteger("ashLevelMisc"); + this.ashLevelFly = nbt.getInteger("ashLevelFly"); + this.ashLevelSoot = nbt.getInteger("ashLevelSoot"); } @Override @@ -135,6 +141,8 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi nbt.setInteger("ashLevelWood", ashLevelWood); nbt.setInteger("ashLevelCoal", ashLevelCoal); nbt.setInteger("ashLevelMisc", ashLevelMisc); + nbt.setInteger("ashLevelFly", ashLevelFly); + nbt.setInteger("ashLevelSoot", ashLevelSoot); } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java index c942a55e7..e01b8352f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java @@ -11,10 +11,13 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.fluid.IFluidUser; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; public abstract class TileEntityChimneyBase extends TileEntityLoadedBase implements IFluidUser, INBTPacketReceiver { - + + public long ashTick = 0; + public long sootTick = 0; public int onTicks; @Override @@ -33,6 +36,19 @@ public abstract class TileEntityChimneyBase extends TileEntityLoadedBase impleme } } + if(ashTick > 0 || sootTick > 0) { + + TileEntity below = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); + + if(below instanceof TileEntityAshpit) { + TileEntityAshpit ashpit = (TileEntityAshpit) below; + ashpit.ashLevelFly += ashTick; + ashpit.ashLevelSoot += sootTick; + } + this.ashTick = 0; + this.sootTick = 0; + } + NBTTagCompound data = new NBTTagCompound(); data.setInteger("onTicks", onTicks); INBTPacketReceiver.networkPack(this, data, 150); @@ -46,6 +62,14 @@ public abstract class TileEntityChimneyBase extends TileEntityLoadedBase impleme } } } + + public boolean cpaturesAsh() { + return true; + } + + public boolean cpaturesSoot() { + return false; + } public void spawnParticles() { } @@ -62,6 +86,9 @@ public abstract class TileEntityChimneyBase extends TileEntityLoadedBase impleme @Override public long transferFluid(FluidType type, int pressure, long fluid) { onTicks = 20; + + if(cpaturesAsh()) ashTick += fluid; + if(cpaturesSoot()) sootTick += fluid; fluid *= getPollutionMod(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java index abbabb942..f5a79dce4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java @@ -29,7 +29,12 @@ public class TileEntityChimneyIndustrial extends TileEntityChimneyBase { @Override public double getPollutionMod() { - return 0.25D; + return 0.1D; + } + + @Override + public boolean cpaturesSoot() { + return true; } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/util/InventoryUtil.java b/src/main/java/com/hbm/util/InventoryUtil.java index 8efc4be37..4e6a27661 100644 --- a/src/main/java/com/hbm/util/InventoryUtil.java +++ b/src/main/java/com/hbm/util/InventoryUtil.java @@ -375,6 +375,10 @@ public class InventoryUtil { return stacks; } + if(o instanceof ItemStack[][]) { + return (ItemStack[][]) o; + } + if(o instanceof AStack) { AStack astack = (AStack) o; ItemStack[] ext = astack.extractForNEI().toArray(new ItemStack[0]); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 0e75f8cdf..64edc30b5 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2691,6 +2691,11 @@ item.powder_actinium_tiny.name=Kleiner Haufen Actiniumstaub item.powder_advanced_alloy.name=Fortgeschrittener Legierungsstaub item.powder_aluminium.name=Aluminiumstaub item.powder_asbestos.name=Asbeststaub +item.powder_ash.coal.name=Kohleasche +item.powder_ash.fly.name=Flugasche +item.powder_ash.misc.name=Asche +item.powder_ash.soot.name=Feiner Ruß +item.powder_ash.wood.name=Holzasche item.powder_astatine.name=Astatstaub item.powder_at209.name=Astat-209-Staub item.powder_au198.name=Gold-198-Staub diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ac7c7b266..ccccc5e67 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3497,7 +3497,9 @@ item.powder_aluminium.name=Aluminium Powder item.powder_asbestos.name=Asbestos Powder item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r item.powder_ash.coal.name=Coal Ash +item.powder_ash.fly.name=Fly Ash item.powder_ash.misc.name=Ash +item.powder_ash.soot.name=Fine Soot item.powder_ash.wood.name=Wood Ash item.powder_astatine.name=Astatine Powder item.powder_at209.name=Astatine-209 Powder diff --git a/src/main/resources/assets/hbm/textures/items/plan_c_alt.png b/src/main/resources/assets/hbm/textures/items/plan_c_alt.png deleted file mode 100644 index 0a44d83179874a478d27c7c7577f3e954de57015..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf*0F<#F=|x_20St}#5A^*-fH*NU|zTO>7Zc17}fK6()LR-jpO@%3e* sel^Em=mi;iD`~CJn{@PEsGXd=xUtIfWe0onfbM4SboFyt=akR{05UORzyJUM diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.soot.png b/src/main/resources/assets/hbm/textures/items/powder_ash.soot.png new file mode 100644 index 0000000000000000000000000000000000000000..664b4aa40705f7acb0d5c3d85c6342a74f0aefa6 GIT binary patch literal 299 zcmV+`0o4A9P)Iyck;&ka_vKfvEQj_`IS;G*< x`0Bem$GUU|v4!Pym%CqE;h&WKp|`$os&CBefFD~ffnopv002ovPDHLkV1h#UfGYq1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/recycled_crystal.png b/src/main/resources/assets/hbm/textures/items/recycled_crystal.png deleted file mode 100644 index 89635cfbae6767779e818b2e2b715b22b0c34440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P){F&~@ZSEYM^Eh{Qw)u5oJ2+30?`VS0&3B%c z_j|wRJl_lFJ-|^#F>{m2GgsLBt48+GXJVDssiAK8G}y=%hAd28Sb@ggfL{UN+yxHV zKrhR0+#m}f3uy1sVRjnO+D(w>lQ23pnD|mucvS`T_jNE0r$r4{gJ5t23!w~}t;cYt zL8tKkz7CQL93@#01l%7s0{}kQ>LAHkOb54-+}y^{qp*@wH30zN@pxddSa97p@+V?e z;-V;GY;3H$0!r|Dz2JEs03eEDrDf<%_`ji{Zn$*O$^gLU^OZSJvVP)goK%x6AU4|0 z!apQD7|E8!Up_qxaZ!Zl_IFZEat}oKBH|lGjJ`XM^|>?>sWf795}Z~&);Dw1a&!Ss zyB=JcVKKCc^l}z$t>v5waubG=1;p12a5mM#)~Hi)D##AB*bUH&3`^lHtj4nFbk~=0 zD##8*k}~3{0-Bq2ur=sZoC>-Fj^i+77?vU#2yqErm(69I3VIJD@>pKW!*Qw>RuiY< zRL~u0Hozzqu@v1xG9kg!Z7Jhb7Z6IwNU!G6*2+Q4b1F`Sas{cW9#&cduiN+irn{W= zXtC8H6qOK8=2V;tZtvm$+7OCM5P2Ccs}^iUtKw8B4n!t-nB3zUlY3m_=(b=#7hFyw zTy_IOF$qyVr{Wb0I0*XtI#@U^A;QaWn6)@<)M78McqDUlTa+t^O!DZwGo$*d34(x! z&vu^g^-72edAM7Q$P^10c%B2GuY4rieQ2o>|0bd|lD!z&8Oet429@}c9LY#mPz`VZ zU~-RZQd2#wwCc p4xgW#WN)vXV5OhbLpih>_zeJ~rQ{6LFKhq+002ovPDHLkV1i+(aH{|S diff --git a/src/main/resources/assets/hbm/textures/items/recycled_electronic.png b/src/main/resources/assets/hbm/textures/items/recycled_electronic.png deleted file mode 100644 index 6076ee25128d20e7cd4aad35f28018156c5392a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P) z_74z5GsFaHXbhDLZfU53ge>hsI`Q7U{$xP*OQuj|Q<=^`W&2u0M)6;pVjxz+Ob7iAY z*=`>uJqXq?oaOJbG6YhwsOuN78$j|Gf=~t82Wf!x+}(#|3<2Q!&^as+h;C1+D~Y6? zQVUsKG|N7DqoQ&NCcW*|&!=Udc>~XZr64BY>US8ml#SleYo`boRRl(sn#kR8-Un(T zZf4196l6EjaSHOF4YR(Ug5K1v1cSCpB**ouqB3C9Ba+4HpFdL_uHK}v9kc;i5`F_Y SbeB*70000rX<~C0o1NW@e}Xu$unhCf_kA-1{|p6icYRs@1+=2h>-`N^kD00g zyiw=r;TC{aX~@yMPtyvh(N9=UQaZgDfLXo*payWvhE{2$xQ&5c%zT_l&WutbV5u~g z^aCht1AxWU7H@Zb^e~}2uz%NRYY?J>4FE^ZLZhDu*jaInBMtm8C9$xcq+o1e)bvst zeJu@_O0!hh+Owut5XR{+5kUA{&Wx(V6${}2-K4`qYkv!N{~7H;T(JjyRS^2t z!-Pm9FJ#;g1#od5m+rQI3%9KjIAO!{OQ8;e4#g+5GL0jNMXH1V0000qC diff --git a/src/main/resources/assets/hbm/textures/items/recycled_metal.png b/src/main/resources/assets/hbm/textures/items/recycled_metal.png deleted file mode 100644 index b1f504225583ead06cf7eca0d60c02752a44d725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+vHP)RQilv>%}n;H@luAw#ttn~#YvW)ox7KNPY3_R2%xH}?V-ZDu8~rX#{PqkJe9#c z(~3NmWLg2BwFcm5*jWgH5Q6KM1#N>nPv>$-1;9D5e{7rXK3|p0S0w=VrxW*02!S!i zHE<3xt(@4$!^MOs0rqSubkKCf=(u}}8*6KvR!r;-zWwR;Ei&(eu4{QB{1 z8t{KL0JwcEcaE|PL4(>xE*9#f#^xz9;}=8i#~Q8SFGT6vsc~&hG5YYL2<92K_lCT>_K9z(Y5?u7?N-0-0dz zVnmd5=+eDY5~4)12(&E^qj`T)EfXA>HyO;;cx)k^a#~e z+#KmO09dZbXv!v{kO4pjux%JUeF1R507LH*4A0*uzp_T6Z^*4FMW^mp_j(G1Rbp`L zwo3+RZ*Ql0P37U)A(RLpc9~b)@)Y>|A(8`^VbuXDZ6JR5_`Z?l%H(6x=``VR*d@oK z2A!{BJ3Xk!`Kbp0k#W2Vsu^Pfy8R~Goz28^cK{?6I_wSzDb5Aeqi2z_UyUhPX9z~O&p@;j$#CzQ<`Y6$B@89SSW+7<}J(4v*x$YIAHvWCmsZ6rZ|r%GN;tvz=J yY85PRrI5z?wGhi>RM_bixz6@q@HyAU_P{rkGgiZ8k}5O+0000U>{6%m4}=W} z+S;sLlr*9&5=o=!7OPzxve58&qUYPGlEd(P^h zTDpIDyW?EMUd6ufWx+B$0$|pQ9YSj;nDt`1<34GYGa0=C;M+x-tO*N=In$16m}WV? zEKHqopcNNVeMgBPN(8VW>wik<%XOd?ZTPZa){6;3V9%6X2T~OVhtO`;N!N{Sw3~G< zPX{nMDbD~Px)tWFHc8{+c;LDOXw)__`LZafrdeJ}#cA;VIalh5aFW=D9;OX51Fbsk z#AXfv-Ep7i^o7L->$Ow06L#!@fu|yC4FzeID_3iB5V}iN+2#h}CU0%o-U*GJ4)lga zi696u$5ylxLBHxO7Aw8m8jV`j40j*yub;eM3;u#1DQt%Zu=8j{00000NkvXXu0mjf DTYaoc diff --git a/src/main/resources/assets/hbm/textures/items/recycled_overlay.png b/src/main/resources/assets/hbm/textures/items/recycled_overlay.png deleted file mode 100644 index e3d5183a671a77b26720fd79c32090001520370e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfvq(v%j7s7>(;Z%J=Iy|Y!kHhX&Q^!7XPaU&mIWLH-7az z;rVMGxBYYX{$!stPbWL|cB@(ba?Nb#-!=K0-~4Ymys>$uv(xMoUPrrb&iUxw^ITKC ag5m5--*Wcl7ajpU#^CAd=d#Wzp$PzAg>caT diff --git a/src/main/resources/assets/hbm/textures/items/recycled_refined.png b/src/main/resources/assets/hbm/textures/items/recycled_refined.png deleted file mode 100644 index 2c346dbbda5977d5d4c0fa2668399568e7e4c2cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmV;A0dW3_P)qjy~v!n#kkkn0qm`3fNz)j)6&65dS9iXaU zW^MvY6&f>Dw`5EZnk*%RWL?D&ukX>4+8jhaz0QOn@&Oo(J^{xjdd!p#Ufa@{3s_=Hb*~ zICTIxJ4)4?ZRRYNhFYK$1d*@EdUfaFU>5M@*s$OFmnNtK9tmC z?-a2U*a2H|00NjLm0u~ymaB)XUgj;92A2Di1t~dW_fDtrJfTQ4#`6S#JkJ3*1FWKmbO8Grd-+RdF%iKz2Y@js z(u{&88Q|x2#>FB*MEJa&!67Ch#2BrqG0=``-g^L6(-{K?98`)ic1G)~XhoVq-6Rf1 z-PxJ%-~4EOlZGEjv9&Xb0&f)wbzM?_4E&Il@qCXeTd0n~~#JE3nQXtn#VCA63m z!0{$dH1N+)#8GULj&x8B_FE2T2X`M!)^6R705BRIDc5UOHl8prw1 ziU@^kZy|rl$aS>CO~e?fs*25S(-l#J02hmdfy3TvIx|g_kv8oEgb?huxw)ovCEr(< l_Co>WbrUbk(&+z-{Q`~hvKIYsX666@002ovPDHLkV1oH>y%PWc From b077a65624badb13f6793a0a321a23d30dc4aee0 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 15 Sep 2023 21:18:53 +0200 Subject: [PATCH 032/207] new telex model, sound adjustments --- src/main/java/com/hbm/blocks/ModBlocks.java | 4 +- .../java/com/hbm/blocks/ModSoundTypes.java | 10 +- .../com/hbm/items/machine/ItemFluidDuct.java | 2 + .../hbm/render/tileentity/RenderTelex.java | 7 +- .../network/TileEntityRadioTelex.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- .../assets/hbm/models/machines/telex.obj | 513 +++++++++++++++--- .../hbm/textures/models/machines/telex.png | Bin 1934 -> 3786 bytes 9 files changed, 456 insertions(+), 86 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 8c6fb76c6..8a91ad707 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1814,8 +1814,8 @@ public class ModBlocks { c4 = new BlockC4().setBlockName("c4").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":c4"); fissure_bomb = new BlockFissureBomb().setBlockName("fissure_bomb").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":fissure_bomb"); - pump_steam = new MachinePump().setBlockName("pump_steam").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pump_steam"); - pump_electric = new MachinePump().setBlockName("pump_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pump_electric"); + pump_steam = new MachinePump().setBlockName("pump_steam").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); + pump_electric = new MachinePump().setBlockName("pump_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_firebox = new HeaterFirebox().setBlockName("heater_firebox").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_oven = new HeaterOven().setBlockName("heater_oven").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); diff --git a/src/main/java/com/hbm/blocks/ModSoundTypes.java b/src/main/java/com/hbm/blocks/ModSoundTypes.java index 544f70c1e..85f42f310 100644 --- a/src/main/java/com/hbm/blocks/ModSoundTypes.java +++ b/src/main/java/com/hbm/blocks/ModSoundTypes.java @@ -3,7 +3,11 @@ package com.hbm.blocks; import com.hbm.main.MainRegistry; import net.minecraft.block.Block; -class ModSoundTypes { - static final ModSoundType grate = ModSoundType.customStep(Block.soundTypeStone, "hbm:step.metalBlock", 0.5F, 1.0F); - static final ModSoundType pipe = ModSoundType.customDig(Block.soundTypeMetal, "hbm:block.pipePlaced", 0.85F, 0.65F).enveloped(MainRegistry.instance.rand).pitchFunction((in, rand, type) -> { if (type == ModSoundType.SubType.BREAK) in -= 0.15F; return type == ModSoundType.SubType.STEP ? in : in + rand.nextFloat() * 0.2F; }); +public class ModSoundTypes { + + public static final ModSoundType grate = ModSoundType.customStep(Block.soundTypeStone, "hbm:step.metalBlock", 0.5F, 1.0F); + public static final ModSoundType pipe = ModSoundType.customDig(Block.soundTypeMetal, "hbm:block.pipePlaced", 0.85F, 0.85F).enveloped(MainRegistry.instance.rand).pitchFunction((in, rand, type) -> { + if(type == ModSoundType.SubType.BREAK) in -= 0.15F; + return in + rand.nextFloat() * 0.2F; + }); } diff --git a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java index 93413ee62..84fcb8ba1 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java @@ -124,6 +124,8 @@ public class ItemFluidDuct extends Item { if(world.getTileEntity(x, y, z) instanceof TileEntityPipeBaseNT) { ((TileEntityPipeBaseNT) world.getTileEntity(x, y, z)).setType(Fluids.fromID(stack.getItemDamage())); } + + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, ModBlocks.fluid_duct_neo.stepSound.func_150496_b(), (ModBlocks.fluid_duct_neo.stepSound.getVolume() + 1.0F) / 2.0F, ModBlocks.fluid_duct_neo.stepSound.getPitch() * 0.8F); return true; } diff --git a/src/main/java/com/hbm/render/tileentity/RenderTelex.java b/src/main/java/com/hbm/render/tileentity/RenderTelex.java index 5c3601e1a..9761d83e3 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderTelex.java +++ b/src/main/java/com/hbm/render/tileentity/RenderTelex.java @@ -19,7 +19,7 @@ public class RenderTelex extends TileEntitySpecialRenderer implements IItemRende GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y, z + 0.5); GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_CULL_FACE); switch(tile.getBlockMetadata() - BlockDummyable.offset) { case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; @@ -28,11 +28,10 @@ public class RenderTelex extends TileEntitySpecialRenderer implements IItemRende case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } - GL11.glTranslated(0, 0, 1); - bindTexture(ResourceManager.telex_tex); ResourceManager.telex.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glPopMatrix(); } @@ -49,7 +48,7 @@ public class RenderTelex extends TileEntitySpecialRenderer implements IItemRende GL11.glScaled(6, 6, 6); } public void renderCommon() { - GL11.glTranslated(0, 0, 0.5); + GL11.glTranslated(0, 0, -0.5); bindTexture(ResourceManager.telex_tex); ResourceManager.telex.renderAll(); }}; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java index 628e3e118..5f2e68975 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -237,7 +237,7 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv yCoord, zCoord - 1, xCoord + 2, - yCoord + 1, + yCoord + 2, zCoord + 2 ); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 64edc30b5..50a1f341b 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4269,7 +4269,7 @@ tile.pribris_radiating.name=Glühender RBMK-Schutt tile.pump_electric.name=Elektrische Grundwasserpumpe tile.pump_electric.desc=Nutzt Strom um Grundwasser hochzupumpen$Erzeugt bis zu 10.000mB/t$Muss unter Y:70 platziert werden tile.pump_steam.name=Dampfbetriebene Grundwasserpumpe -tile.pump_steam.desc=Nutzt Dampf um Grundwasser hochzupumpen$Erzeugt bis zu 10.000mB/t$Muss unter Y:70 platziert werden +tile.pump_steam.desc=Nutzt Dampf um Grundwasser hochzupumpen$Erzeugt bis zu 1.000mB/t$Muss unter Y:70 platziert werden tile.pwr_block.name=PWR tile.pwr_casing.name=PWR Druckbehälter tile.pwr_casing.desc=Muss alle internen Teile des PWRs abdecken$Platzierung: Hülle diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ccccc5e67..d9255f011 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5246,7 +5246,7 @@ tile.pribris_radiating.name=Smoldering RBMK Debris tile.pump_electric.name=Electric Groundwater Pump tile.pump_electric.desc=Uses electricity to pump up groundwater$Generates up to 10,000mB/t$Needs to be placed below Y:70 tile.pump_steam.name=Steam-Powered Groundwater Pump -tile.pump_steam.desc=Uses steam to pump up groundwater$Generates up to 100mB/t$Needs to be placed below Y:70 +tile.pump_steam.desc=Uses steam to pump up groundwater$Generates up to 1,000mB/t$Needs to be placed below Y:70 tile.pwr_block.name=PWR tile.pwr_casing.name=PWR Pressure Vessel tile.pwr_casing.desc=Needs to cover all internal parts for the reactor to form$Placement: Casing diff --git a/src/main/resources/assets/hbm/models/machines/telex.obj b/src/main/resources/assets/hbm/models/machines/telex.obj index 4caa6310e..ae7237edb 100644 --- a/src/main/resources/assets/hbm/models/machines/telex.obj +++ b/src/main/resources/assets/hbm/models/machines/telex.obj @@ -1,86 +1,451 @@ -# Blender v2.76 (sub 0) OBJ File: 'telex.blend' +# Blender v2.79 (sub 0) OBJ File: '' # www.blender.org -o Cube_Cube.001 -v -0.500000 0.000000 0.500000 -v -0.500000 1.000000 0.500000 -v -0.500000 0.000000 -1.500000 -v -0.500000 1.000000 -1.500000 -v 0.500000 0.000000 0.500000 -v 0.500000 0.000000 -1.500000 -v 0.500000 0.625000 -1.500000 -v 0.500000 0.625000 0.500000 -v 0.125000 1.000000 -1.500000 -v 0.125000 1.000000 0.500000 -v 0.500000 0.625000 0.125000 -v 0.500000 0.625000 -0.750000 -v 0.125000 1.000000 -0.750000 -v 0.125000 0.625000 -0.750000 -v 0.125000 0.625000 0.125000 -v 0.125000 1.000000 0.125000 -vt -0.000000 0.500000 -vt -0.000000 0.250000 -vt 0.500000 0.250000 -vt 0.843750 0.250000 -vt 0.750000 0.156250 -vt 1.000000 -0.000000 -vt 0.093750 0.250000 -vt 0.093750 0.156250 -vt 0.312500 0.156250 -vt 0.500000 0.000000 +o Cube.001 +v 0.500000 0.000000 1.500000 +v 0.500000 0.625000 1.500000 +v 0.125000 1.000000 1.500000 +v -0.500000 1.000000 1.500000 +v -0.500000 0.000000 1.500000 +v 0.500000 0.000000 1.125000 +v 0.500000 0.625000 1.125000 +v 0.125000 1.000000 1.125000 +v 0.125000 0.625000 1.125000 +v -0.500000 1.000000 1.125000 +v 0.125000 0.625000 0.250000 +v 0.125000 1.000000 0.250000 +v 0.500000 0.625000 0.250000 +v 0.125000 1.000000 -0.500000 +v 0.500000 0.625000 -0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.250000 +v -0.500000 1.000000 0.250000 +v -0.500000 1.000000 -0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.000000 0.250000 +v -0.500000 0.000000 1.125000 +v -0.187500 1.000000 -0.437500 +v -0.437500 1.000000 -0.437500 +v -0.437500 1.000000 0.062500 +v -0.187500 1.000000 0.062500 +v -0.187500 1.312500 -0.437500 +v -0.187500 1.312500 0.062500 +v -0.437500 1.312500 0.062500 +v -0.437500 1.312500 -0.437500 +v -0.375000 1.062500 0.062500 +v -0.312500 1.062500 0.062500 +v -0.312500 1.062500 0.125000 +v -0.375000 1.062500 0.187500 +v -0.312500 1.000000 0.062500 +v -0.312500 1.000000 0.125000 +v -0.375000 1.000000 0.062500 +v -0.375000 1.000000 0.187500 +v -0.125000 1.062500 0.125000 +v -0.125000 1.062500 0.187500 +v -0.125000 1.000000 0.125000 +v -0.125000 1.000000 0.187500 +v 0.000000 1.062500 0.125000 +v -0.062500 1.062500 0.125000 +v -0.062500 1.187500 0.125000 +v 0.000000 1.187500 0.125000 +v 0.062500 1.000000 0.250000 +v 0.062500 1.000000 0.062500 +v 0.062500 1.062500 0.062500 +v 0.062500 1.062500 0.250000 +v -0.125000 1.000000 0.062500 +v -0.125000 1.000000 0.250000 +v -0.125000 1.062500 0.250000 +v -0.125000 1.062500 0.062500 +v -0.062500 1.062500 0.187500 +v 0.000000 1.062500 0.187500 +v 0.000000 1.187500 0.187500 +v -0.062500 1.187500 0.187500 +v -0.093750 1.187500 0.093750 +v 0.031250 1.187500 0.093750 +v 0.031250 1.187500 0.218750 +v -0.093750 1.187500 0.218750 +v -0.093750 1.437500 0.093750 +v -0.093750 1.437500 0.218750 +v 0.031250 1.437500 0.218750 +v 0.031250 1.437500 0.093750 +v -0.312500 1.812500 0.000000 +v -0.375000 1.812500 0.000000 +v -0.375000 1.812500 -0.062500 +v -0.312500 1.812500 -0.062500 +v -0.375000 1.312500 -0.062500 +v -0.312500 1.312500 -0.062500 +v -0.312500 1.312500 0.000000 +v -0.375000 1.312500 0.000000 +v 0.312500 0.812500 -0.312500 +v 0.312500 0.812500 0.062500 +v 0.375000 0.875000 0.062500 +v 0.375000 0.875000 -0.312500 +v 0.562500 0.875000 0.062500 +v 0.562500 0.875000 -0.312500 +v 0.625000 0.812500 0.062500 +v 0.625000 0.812500 -0.312500 +v 0.625000 0.625000 0.062500 +v 0.625000 0.625000 -0.312500 +v 0.562500 0.562500 0.062500 +v 0.562500 0.562500 -0.312500 +v 0.562500 0.375000 0.062500 +v 0.562500 0.375000 -0.312500 +v 0.625000 0.312500 0.062500 +v 0.625000 0.312500 -0.312500 +v 0.625000 0.125000 0.062500 +v 0.625000 0.125000 -0.312500 +v 0.562500 0.062500 -0.312500 +v 0.562500 0.062500 0.062500 vt 0.656250 0.250000 -vt -0.000000 0.750000 +vt 0.500000 0.250000 +vt 0.500000 -0.000000 +vt 0.000000 -0.000000 +vt 0.093750 0.156250 +vt -0.000000 0.156250 +vt 0.093750 0.250000 vt 0.500000 0.500000 -vt 0.500000 0.156250 -vt 0.312500 0.250000 -vt 0.000000 0.156250 -vt -0.000000 0.000000 -vt 0.593750 0.343750 -vt 0.812500 0.343750 vt 0.593750 0.500000 vt 0.500000 0.593750 +vt 0.593750 0.500000 +vt 0.500000 0.343750 +vt 0.593750 0.343750 vt 0.687500 0.500000 +vt 0.593750 0.500000 vt 0.687500 0.593750 +vt 0.312500 0.156250 +vt 0.500000 0.250000 +vt 0.500000 0.156250 +vt 0.312500 0.156250 +vt 0.500000 -0.000000 +vt 0.500000 0.156250 +vt 0.093750 0.000000 vt 0.593750 0.250000 +vt 0.812500 0.343750 +vt 0.593750 0.343750 +vt 0.093750 0.156250 +vt 0.312500 0.250000 +vt 1.000000 0.343750 +vt 0.812500 0.500000 +vt 0.812500 0.343750 +vt 1.000000 -0.000000 +vt 0.843750 0.250000 +vt 0.750000 0.156250 +vt 0.093750 0.250000 +vt 0.312500 0.500000 +vt 0.312500 0.250000 +vt 0.093750 0.500000 +vt -0.000000 0.250000 +vt -0.000000 0.500000 +vt 0.500000 0.250000 +vt 0.500000 0.500000 +vt 0.093750 0.750000 +vt 0.312500 0.750000 +vt 0.093750 0.500000 +vt 0.285714 0.500000 +vt 0.000000 1.000000 +vt 0.285714 1.000000 +vt 0.250000 0.750000 +vt 0.125000 0.812500 +vt 0.250000 0.812500 +vt 0.312500 0.828125 +vt 0.250000 0.750000 +vt 0.312500 0.750000 +vt 0.187500 0.828125 +vt 0.250000 0.906250 +vt 0.187500 0.906250 +vt 0.187500 0.828125 +vt 0.062500 0.906250 +vt 0.187500 0.906250 +vt 0.125000 0.828125 +vt 0.000000 0.750000 +vt 0.125000 0.750000 +vt 0.437500 0.875000 +vt 0.421875 0.859375 +vt 0.437500 0.859375 +vt 0.437500 0.859375 +vt 0.453125 0.843750 +vt 0.437500 0.843750 +vt 0.437500 0.890625 +vt 0.406250 0.875000 +vt 0.406250 0.890625 +vt 0.406250 0.812500 +vt 0.406250 0.875000 +vt 0.100000 1.000000 +vt 0.000000 0.900000 +vt 0.000000 1.000000 +vt 0.437500 0.812500 +vt 0.421875 0.859375 +vt 0.390625 0.812500 +vt 0.406250 0.875000 +vt 0.406250 0.812500 +vt 0.406250 0.750000 +vt 0.390625 0.781250 +vt 0.390625 0.750000 +vt 0.453125 0.750000 +vt 0.406250 0.765625 +vt 0.406250 0.750000 +vt 0.406250 0.765625 +vt 0.453125 0.750000 +vt 0.453125 0.765625 +vt 0.453125 0.750000 +vt 0.406250 0.765625 +vt 0.406250 0.750000 +vt 0.406250 0.765625 +vt 0.453125 0.750000 +vt 0.453125 0.765625 +vt 0.421875 0.781250 +vt 0.406250 0.750000 +vt 0.421875 0.765625 +vt 0.453125 0.750000 +vt 0.437500 0.765625 +vt 0.453125 0.796875 +vt 0.437500 0.781250 +vt 0.406250 0.796875 +vt 0.390625 0.781250 +vt 0.406250 0.750000 +vt 0.406250 0.781250 +vt 0.390625 0.781250 +vt 0.406250 0.750000 +vt 0.406250 0.781250 +vt 0.390625 0.781250 +vt 0.406250 0.750000 +vt 0.406250 0.781250 +vt 0.437500 0.750000 +vt 0.406250 0.781250 +vt 0.406250 0.750000 +vt 0.343750 0.875000 +vt 0.375000 0.906250 +vt 0.343750 0.906250 +vt 0.343750 0.812500 +vt 0.312500 0.875000 +vt 0.312500 0.812500 +vt 0.312500 0.812500 +vt 0.343750 0.875000 +vt 0.343750 0.812500 +vt 0.312500 0.812500 +vt 0.343750 0.875000 +vt 0.343750 0.812500 +vt 0.468750 0.859375 +vt 0.484375 0.875000 +vt 0.484375 0.859375 +vt 0.484375 0.875000 +vt 0.468750 0.750000 +vt 0.484375 0.750000 +vt 0.484375 0.875000 +vt 0.468750 0.750000 +vt 0.484375 0.750000 +vt 0.484375 0.875000 +vt 0.468750 0.750000 +vt 0.484375 0.750000 +vt 0.468750 0.750000 +vt 0.484375 0.750000 +vt 0.687500 0.750000 +vt 0.781250 0.765625 +vt 0.781250 0.750000 +vt 0.687500 0.703125 +vt 0.781250 0.750000 +vt 0.781250 0.703125 +vt 0.687500 0.687500 +vt 0.781250 0.703125 +vt 0.781250 0.687500 +vt 0.687500 0.687500 +vt 0.781250 0.640625 +vt 0.781250 0.687500 +vt 0.687500 0.640625 +vt 0.781250 0.625000 +vt 0.687500 0.625000 +vt 0.781250 0.578125 +vt 0.781250 0.562500 +vt 0.687500 0.578125 +vt 0.687500 0.562500 +vt 0.687500 0.515625 +vt 0.781250 0.500000 +vt 0.687500 0.515625 +vt 0.781250 0.515625 vt 0.750000 -0.000000 +vt 0.750000 0.156250 +vt -0.000000 0.250000 +vt 0.500000 0.500000 +vt 0.312500 0.250000 +vt 0.312500 0.000000 +vt 0.812500 0.250000 +vt 0.312500 0.156250 +vt 1.000000 0.500000 +vt 0.750000 0.000000 vt 1.000000 0.250000 vt 0.500000 0.750000 -vt 1.000000 0.500000 -vt 0.500000 0.343750 -vt 1.000000 0.343750 -vt 0.812500 0.250000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.707100 0.707100 0.000000 -vn 0.000000 1.000000 0.000000 +vt 0.500000 0.500000 +vt 0.312500 0.500000 +vt 0.000000 0.500000 +vt -0.000000 0.750000 +vt 0.000000 0.500000 +vt 0.125000 0.750000 +vt 0.250000 0.828125 +vt 0.250000 0.828125 +vt 0.062500 0.828125 +vt 0.000000 0.828125 +vt 0.453125 0.859375 +vt 0.437500 0.875000 +vt 0.421875 0.812500 +vt 0.100000 0.900000 +vt 0.421875 0.812500 +vt 0.390625 0.875000 +vt 0.406250 0.781250 +vt 0.453125 0.765625 +vt 0.453125 0.765625 +vt 0.406250 0.750000 +vt 0.390625 0.750000 +vt 0.390625 0.750000 +vt 0.390625 0.750000 +vt 0.437500 0.781250 +vt 0.375000 0.875000 +vt 0.312500 0.875000 +vt 0.312500 0.875000 +vt 0.468750 0.875000 +vt 0.468750 0.875000 +vt 0.468750 0.875000 +vt 0.468750 0.875000 +vt 0.687500 0.765625 +vt 0.687500 0.750000 +vt 0.687500 0.703125 +vt 0.781250 0.515625 +vt 0.687500 0.500000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 s off -f 4/1/1 3/2/1 1/3/1 -f 9/4/2 7/5/2 3/6/2 -f 16/7/3 15/8/3 14/9/3 -f 1/10/4 8/5/4 10/11/4 -f 3/12/5 6/1/5 5/13/5 -f 7/14/6 9/3/6 13/15/6 -f 10/2/6 8/16/6 11/8/6 -f 12/9/3 5/17/3 6/10/3 -f 16/18/7 13/19/7 2/13/7 -f 12/20/4 13/21/4 14/13/4 -f 11/20/2 15/22/2 16/23/2 -f 14/19/7 15/18/7 11/24/7 -f 2/13/1 4/1/1 1/3/1 -f 6/25/2 3/6/2 7/5/2 -f 4/26/2 9/4/2 3/6/2 -f 13/15/3 16/7/3 14/9/3 -f 10/11/4 2/3/4 1/10/4 -f 1/10/4 5/25/4 8/5/4 -f 1/27/5 3/12/5 5/13/5 -f 12/9/6 7/14/6 13/15/6 -f 16/7/6 10/2/6 11/8/6 -f 6/10/3 7/14/3 12/9/3 -f 12/9/3 11/8/3 5/17/3 -f 8/16/3 5/17/3 11/8/3 -f 4/28/7 2/13/7 13/19/7 -f 10/29/7 16/18/7 2/13/7 -f 13/19/7 9/30/7 4/28/7 -f 12/31/7 14/19/7 11/24/7 +f 3/1/1 4/2/1 5/3/1 +f 1/4/2 7/5/2 2/6/2 +f 8/7/3 2/6/3 7/5/3 +f 9/8/4 8/9/4 7/10/4 +f 10/11/5 3/12/5 8/13/5 +f 11/14/1 13/15/1 12/16/1 +f 12/17/3 15/18/3 14/19/3 +f 13/20/2 16/21/2 15/22/2 +f 6/23/2 13/20/2 7/5/2 +f 7/24/5 11/25/5 9/26/5 +f 9/27/2 12/28/2 8/7/2 +f 14/29/5 18/30/5 12/31/5 +f 20/32/4 14/33/4 15/34/4 +f 12/31/5 10/11/5 8/13/5 +f 22/35/6 18/36/6 21/37/6 +f 10/38/6 5/39/6 4/40/6 +f 20/41/6 18/36/6 19/42/6 +f 22/43/7 21/44/7 6/45/7 +f 26/46/7 24/47/7 23/48/7 +f 30/49/5 28/50/5 27/51/5 +f 30/52/4 23/53/4 24/54/4 +f 28/55/1 25/56/1 26/57/1 +f 29/58/6 24/59/6 25/60/6 +f 27/61/2 26/62/2 23/63/2 +f 31/64/5 33/65/5 32/66/5 +f 33/67/2 35/68/2 32/69/2 +f 38/70/6 31/71/6 37/72/6 +f 40/73/5 33/65/5 34/74/5 +f 42/75/2 39/76/2 40/77/2 +f 39/78/4 36/79/4 33/67/4 +f 38/80/1 40/81/1 34/82/1 +f 44/83/4 46/84/4 43/85/4 +f 48/86/2 50/87/2 47/88/2 +f 52/89/6 54/90/6 51/91/6 +f 51/92/4 49/93/4 48/94/4 +f 47/95/1 53/96/1 52/97/1 +f 44/98/5 53/99/5 55/100/5 +f 55/100/5 50/101/5 56/102/5 +f 56/102/5 49/103/5 43/104/5 +f 43/104/5 54/105/5 44/98/5 +f 56/106/1 58/107/1 55/108/1 +f 43/109/2 57/110/2 56/111/2 +f 55/112/6 45/113/6 44/114/6 +f 60/115/7 62/116/7 59/117/7 +f 64/118/5 66/119/5 63/120/5 +f 60/121/2 65/122/2 61/123/2 +f 62/124/6 63/125/6 59/126/6 +f 59/127/4 66/128/4 60/121/4 +f 61/123/1 64/118/1 62/129/1 +f 70/130/5 68/131/5 67/132/5 +f 69/133/4 72/134/4 71/135/4 +f 67/136/1 74/137/1 73/138/1 +f 70/139/2 73/140/2 72/141/2 +f 68/131/6 71/142/6 74/143/6 +f 76/144/8 78/145/8 75/146/8 +f 77/147/5 80/148/5 78/149/5 +f 79/150/3 82/151/3 80/152/3 +f 81/153/2 84/154/2 82/155/2 +f 83/156/9 86/157/9 84/154/9 +f 85/158/2 88/159/2 86/157/2 +f 90/160/3 87/161/3 89/162/3 +f 91/163/2 90/160/2 89/162/2 +f 92/164/9 94/165/9 93/166/9 +f 5/3/1 1/167/1 2/168/1 +f 2/168/1 3/1/1 5/3/1 +f 1/4/2 6/23/2 7/5/2 +f 8/7/3 3/169/3 2/6/3 +f 10/11/5 4/170/5 3/12/5 +f 12/17/3 13/171/3 15/18/3 +f 13/20/2 17/172/2 16/21/2 +f 6/23/2 17/172/2 13/20/2 +f 7/24/5 13/173/5 11/25/5 +f 9/27/2 11/174/2 12/28/2 +f 14/29/5 19/175/5 18/30/5 +f 15/34/4 16/176/4 20/32/4 +f 20/32/4 19/177/4 14/33/4 +f 12/31/5 18/30/5 10/11/5 +f 22/35/6 10/38/6 18/36/6 +f 10/38/6 22/35/6 5/39/6 +f 20/41/6 21/37/6 18/36/6 +f 20/178/7 16/179/7 17/180/7 +f 6/45/7 1/181/7 5/182/7 +f 20/178/7 17/180/7 21/44/7 +f 17/180/7 6/45/7 21/44/7 +f 5/182/7 22/43/7 6/45/7 +f 26/46/7 25/183/7 24/47/7 +f 30/49/5 29/184/5 28/50/5 +f 30/52/4 27/185/4 23/53/4 +f 28/55/1 29/186/1 25/56/1 +f 29/58/6 30/187/6 24/59/6 +f 27/61/2 28/188/2 26/62/2 +f 31/64/5 34/74/5 33/65/5 +f 33/67/2 36/189/2 35/68/2 +f 38/70/6 34/190/6 31/71/6 +f 40/73/5 39/191/5 33/65/5 +f 42/75/2 41/192/2 39/76/2 +f 39/78/4 41/193/4 36/79/4 +f 38/80/1 42/194/1 40/81/1 +f 44/83/4 45/195/4 46/84/4 +f 48/86/2 49/196/2 50/87/2 +f 52/89/6 53/99/6 54/90/6 +f 51/92/4 54/197/4 49/93/4 +f 47/95/1 50/198/1 53/96/1 +f 44/98/5 54/105/5 53/99/5 +f 55/100/5 53/99/5 50/101/5 +f 56/102/5 50/101/5 49/103/5 +f 43/104/5 49/103/5 54/105/5 +f 56/106/1 57/199/1 58/107/1 +f 43/109/2 46/200/2 57/110/2 +f 55/112/6 58/201/6 45/113/6 +f 60/115/7 61/202/7 62/116/7 +f 64/118/5 65/203/5 66/119/5 +f 60/121/2 66/128/2 65/122/2 +f 62/124/6 64/204/6 63/125/6 +f 59/127/4 63/205/4 66/128/4 +f 61/123/1 65/122/1 64/118/1 +f 70/130/5 69/206/5 68/131/5 +f 69/133/4 70/207/4 72/134/4 +f 67/136/1 68/208/1 74/137/1 +f 70/139/2 67/209/2 73/140/2 +f 68/131/6 69/206/6 71/142/6 +f 76/144/8 77/210/8 78/145/8 +f 77/147/5 79/211/5 80/148/5 +f 79/150/3 81/212/3 82/151/3 +f 81/153/2 83/156/2 84/154/2 +f 83/156/9 85/158/9 86/157/9 +f 85/158/2 87/161/2 88/159/2 +f 90/160/3 88/159/3 87/161/3 +f 91/163/2 92/213/2 90/160/2 +f 92/164/9 91/214/9 94/165/9 diff --git a/src/main/resources/assets/hbm/textures/models/machines/telex.png b/src/main/resources/assets/hbm/textures/models/machines/telex.png index 2ba7d96c7e4f48d504956a8c36ae14d690e44d34..3cc38b488511b12b6b3e305641af570a6168098c 100644 GIT binary patch delta 3785 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 delta 1918 zcmV-^2Z8v?9gYu>C4Xl@O+f$vv5yPl0UK8 zUuVA2x4k{y+4YhIF(rNKuCA)-ud2J})oP@XMjC0PkwzM6q>)A%X{3=x{(o}m+;X_^ z$x`@m=4kli#%%cY%48Q97lvVH&i5xLA_^L#6A=NMXUD_&>DR*bkKc^_pT3wZA@cOq z;wRk`mA^wVfPaEBA4M-{j7~&^Hb+{-Jwbs2xSsl_ke}uQ1&z@OgtY1o#(Z3Tjk_&} z)JJ`d1LiJhj7}h-?Vhd}gtcmd+dZb=c;-YeXpBxE19_2CBD5sniFqPv%pmcM6*NXC zPTC2AbOn`2E~$Rw|5XL>^GRC=xtMn)G7i#_!jE$L@SoAkj4ccQ%fS!K~=o$9;^2NlIm3iCI62U zVDsy%<$uQsgq*Yz^uz=oSB&@fiq{7ib1Jc_B6#wk7#^PJOAs<54_G0#DXpFYDYTk7 z>=my$fhPyN2x;=5Fbz-iQKB6{QYn1(hGF-Qp)^52;<@BOL3?R%Q>q|hPegr(!B1T?nac##t^S`u)go(SU} z({Ft0-(rQF@ZGPDmO604vb(1(irHsX^l177GBOsi~=F3JO61Ae%dzRq!*N zj(^ob8Xu1Us{yH{rKR$2d+OAwvQ>X>Zmz@T_Bz0yIhc#%KmmMJ9jwl0Q!i!h5cgFC zsZVMbJf41wm4FPSJW256$&>K-@#Bufl}MGHzI@#7vCO3-kRwRaf{&>s0qLMBUUrWK zipM_|0H^>?etUa6+`oT6_UqU^$-V6KIe&J#2c%FkA}(D>cYxxm{8M!80Nn%T=jY4S zeE9HTB>&*SgYf9lqpk#Vb}vxQuAQI)0M4QSF|}22{}i&PF^<$f-UGY?cFDoz#f)l;BX0Z4p# zc{y@fSy_p#^r~@+QH0kQy{c-Zo)vTi3L0HPGIf%cPP?xHup*F>4j`z^xV4Q^v&qpR;@pa`!oJR*QUKlLc7f_yzj{a&%a<9QSVKf1+*9x+ zR;?bJ=<0KQ=8et_G9Zuycl7D$>GI|1*s)^~jLCN5@Zs?7p+jN*$dPhf&+y!h&mnSp z3ULH!b&o*zdyI$|IaZ1iPUCgY(R+{PD68d&tJr>AJ@?{)aNt5Kwq5&Z?hh6@LJtDu76#L(Bh0ZH)OR>HKo z{-^B~ztc|MzaqT=p0pRkcK|Eogn4R62TmA!RS}eYuXw%sOK))w9S|c4$ok8RUS=5g zgtzbAd)l^l0Ja$0K3gQY7w`ev@~n;sYDYj)3Avp_;aTKf9^<<48h?)kP(>Xo!0zsD z`0K=pu(PuhwzjsS&IgWK630(1g&~$}q&rJGHd@WAEh^IJo`CEC!dg-1O~2oG6{O{4 z1dzWg7c0V;~_0e%7eNi3Ii3jA{M5OAG-Kl2YWzWg7+04=)ux&S&C0qE?2T*4_- zfHWQ*==%N6Kg{^@YY=04!Sn*O_;a@F90B}t@zS~eAoCA1es`e%0qg+3+4&7ot&oeS zF9L(iKg{@!0^DAkj^Fd&Uzy(Xdmj7EFAv8SfBN5DKGG2{dm4Z3?0B49q Date: Sat, 16 Sep 2023 19:46:56 +0200 Subject: [PATCH 033/207] power gauge, fixes --- changelog | 13 +- gradle.properties | 2 +- src/main/java/api/hbm/energy/PowerNet.java | 2 + src/main/java/api/hbm/fluid/PipeNet.java | 2 + src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../hbm/blocks/network/BlockCableGauge.java | 165 ++++++++++++++++++ .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../inventory/recipes/anvil/AnvilRecipes.java | 17 ++ src/main/java/com/hbm/items/ModItems.java | 3 - src/main/java/com/hbm/lib/HbmWorldGen.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 3 +- src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/tileentity/TileMappings.java | 2 + .../java/com/hbm/util/EntityDamageUtil.java | 6 +- src/main/resources/assets/hbm/lang/de_DE.lang | 6 + src/main/resources/assets/hbm/lang/en_US.lang | 6 + .../hbm/textures/blocks/cable_gauge.png | Bin 0 -> 305 bytes 18 files changed, 227 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/network/BlockCableGauge.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/cable_gauge.png diff --git a/changelog b/changelog index 607efd8b8..03232f545 100644 --- a/changelog +++ b/changelog @@ -15,6 +15,12 @@ * Industrial smokestack * An even larger smokestack, matching the size of the coker unit * Reduced pollution by 90%, as opposed to the brick smokestack's 75% +* Power gauge + * Like the flow gauge pipe for cable networks + * Shows the total amount of power being transferred within the connected network +* Trenchmaster armor + * A new unique set of armor that is currently unobtainable + * Has new traits like faster reloads, a 33% chance of not using up ammo and step-assist ## Changed * Updated russian localization @@ -36,6 +42,8 @@ * Smokestacks now capture fly ash and are now compatible with ashpits * Industrial smokestacks can also capture fine soot * Reduced strings required for making coal filters, filters are now also available in tier 2 anvils +* Fireboxes and heating ovens can now be disassembled in tier 2 anvils, yielding most of the resources used for making them +* Signal beacons now only spawn half as often ## Fixed * Fixed the bomber not spawning if the chunkloading radios is too small @@ -48,4 +56,7 @@ * Hopefully fixed issue where the tom impact effects will last even when switching worlds * Fixed logspam caused by custom machine crafting handler * Fixed issue with the assemblers and chemplants where recipes with larger input requirements would break the input funnel -* Fixed crash caused by reloading when the ammo item is in the last slot \ No newline at end of file +* Fixed crash caused by reloading when the ammo item is in the last slot +* Power and fluid networks will no longer transfer amounts less or equal than 0, preventing negative values and removing unnecessary operations where nothing would happen anyways +* Fixed bug where damage sources that bypass iframes would deal significantly more damage if the victim has taken a lot of damage prior +* Fixed duplicate balefire shell existing, the one that was usable was not the one that was craftable diff --git a/gradle.properties b/gradle.properties index 0f150c67e..f918fa348 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4711 +mod_build_number=4724 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index 172e22dde..a2165b49b 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -153,6 +153,8 @@ public class PowerNet implements IPowerNet { public static long fairTransfer(List subscribers, long power) { + if(power <= 0) return 0; + if(subscribers.isEmpty()) return power; diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java index 8ad18725d..412af45c5 100644 --- a/src/main/java/api/hbm/fluid/PipeNet.java +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -106,6 +106,8 @@ public class PipeNet implements IPipeNet { public static long fairTransfer(List subList, FluidType type, int pressure, long fill) { + if(fill <= 0) return 0; + List weight = new ArrayList(); long totalReq = 0; diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 8a91ad707..7f809f174 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -782,6 +782,7 @@ public class ModBlocks { public static Block red_cable; public static Block red_cable_classic; public static Block red_cable_paintable; + public static Block red_cable_gauge; public static Block red_connector; public static Block red_pylon; public static Block red_pylon_large; @@ -1949,6 +1950,7 @@ public class ModBlocks { red_cable = new BlockCable(Material.iron).setBlockName("red_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_neo"); red_cable_classic = new BlockCable(Material.iron).setBlockName("red_cable_classic").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_cable_classic"); red_cable_paintable = new BlockCablePaintable().setBlockName("red_cable_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + red_cable_gauge = new BlockCableGauge().setBlockName("red_cable_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_large = new PylonLarge(Material.iron).setBlockName("red_pylon_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon_large"); @@ -3210,6 +3212,7 @@ public class ModBlocks { GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName()); GameRegistry.registerBlock(red_cable_classic, red_cable_classic.getUnlocalizedName()); GameRegistry.registerBlock(red_cable_paintable, red_cable_paintable.getUnlocalizedName()); + register(red_cable_gauge); GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); GameRegistry.registerBlock(red_connector, ItemBlockBase.class, red_connector.getUnlocalizedName()); GameRegistry.registerBlock(red_pylon, ItemBlockBase.class, red_pylon.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java new file mode 100644 index 000000000..93b29daec --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java @@ -0,0 +1,165 @@ +package com.hbm.blocks.network; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.lib.RefStrings; +import com.hbm.render.block.RenderBlockMultipass; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.network.TileEntityCableBaseNT; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.common.Optional; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, ILookOverlay, ITooltipProvider { + + @SideOnly(Side.CLIENT) protected IIcon overlayGauge; + + public BlockCableGauge() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityCableGauge(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.blockIcon = reg.registerIcon(RefStrings.MODID + ":deco_red_copper"); + this.overlayGauge = reg.registerIcon(RefStrings.MODID + ":cable_gauge"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + if(RenderBlockMultipass.currentPass == 0) { + return blockIcon; + } + + return side == world.getBlockMetadata(x, y, z) ? this.overlayGauge : this.blockIcon; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + public int getPasses() { + return 2; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityCableGauge)) + return; + + TileEntityCableGauge duct = (TileEntityCableGauge) te; + + List text = new ArrayList(); + text.add(BobMathUtil.getShortNumber(duct.deltaTick) + "HE/t"); + text.add(BobMathUtil.getShortNumber(duct.deltaLastSecond) + "HE/s"); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public int getRenderType(){ + return IBlockMultiPass.getRenderType(); + } + + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) + public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent { + + private BigInteger lastMeasurement = BigInteger.valueOf(10); + private long deltaTick = 0; + private long deltaSecond = 0; + private long deltaLastSecond = 0; + + @Override + public void updateEntity() { + super.updateEntity(); + + if(!worldObj.isRemote) { + + if(network != null) { + BigInteger total = network.getTotalTransfer(); + BigInteger delta = total.subtract(this.lastMeasurement); + this.lastMeasurement = total; + + try { + this.deltaTick = delta.longValueExact(); + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.deltaLastSecond = this.deltaSecond; + this.deltaSecond = 0; + } + this.deltaSecond += deltaTick; + + } catch(Exception ex) { } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("deltaT", deltaTick); + data.setLong("deltaS", deltaLastSecond); + INBTPacketReceiver.networkPack(this, data, 25); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); + this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); + } + + public String getComponentName() { + return "ntm_cable_gauge"; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getTransfer(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond}; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond, xCoord, yCoord, zCoord}; + } + } +} diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 65160734e..003f4c7e3 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -98,7 +98,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "SSI", "IIM", "WPH", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', ModItems.wire_aluminium, 'H', ModItems.hull_small_steel, 'P', Item.getItemFromBlock(Blocks.piston), 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', ModItems.wire_gold, 'F', ModItems.gun_fatman }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ModItems.plate_polymer, 'L', ModItems.plate_desh, 'W', ModItems.wire_tungsten, 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bf_ammo, 1), new Object[] { " S ", "EBE", " S ", 'S', ModItems.hull_small_steel, 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1, AmmoFatman.BALEFIRE.ordinal()), new Object[] { " S ", "EBE", " S ", 'S', ModItems.hull_small_steel, 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_thompson, 1), new Object[] { "IIM", " SW", " S ", 'S', IRON.plate(), 'I', STEEL.plate(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flechette, 1), new Object[] { "PPM", "TIS", "G ", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_2, 'T', ModItems.hull_small_steel, 'I', STEEL.ingot(), 'S', ANY_PLASTIC.ingot(), 'G', ModItems.mechanism_launcher_1 }); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 568f66a6f..18c3f31e9 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -693,6 +693,23 @@ public class AnvilRecipes { } public static void registerConstructionRecycling() { + + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.heater_firebox), + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.plate_steel, 8)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 6)) + } + ).setTier(2)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.heater_oven), + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.ingot_firebrick, 16)), + new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)) + } + ).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.barrel_tcalloy), new AnvilOutput[] { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 62b4e98ce..576140252 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1542,7 +1542,6 @@ public class ModItems { public static Item gun_proto; public static Item gun_mirv; public static Item gun_bf; - public static Item gun_bf_ammo; public static Item gun_chemthrower; public static Item gun_mp40; public static Item gun_thompson; @@ -4142,7 +4141,6 @@ public class ModItems { gun_fatman = new ItemGunBase(GunFatmanFactory.getFatmanConfig()).setUnlocalizedName("gun_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_proto = new ItemGunBase(GunFatmanFactory.getProtoConfig()).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_mirv = new ItemGunBase(GunFatmanFactory.getMIRVConfig()).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); - gun_bf_ammo = new Item().setUnlocalizedName("gun_bf_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf_ammo"); gun_bf = new ItemGunBase(GunFatmanFactory.getBELConfig()).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); gun_chemthrower = new ItemGunChemthrower().setUnlocalizedName("gun_chemthrower").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); @@ -7065,7 +7063,6 @@ public class ModItems { //GameRegistry.registerItem(gun_stinger_ammo, gun_stinger_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_fatman_ammo, gun_fatman_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_mirv_ammo, gun_mirv_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_bf_ammo, gun_bf_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_mp40_ammo, gun_mp40_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_uzi_ammo, gun_uzi_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_uboinik_ammo, gun_uboinik_ammo.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 6182148ab..b832541ce 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -393,7 +393,7 @@ public class HbmWorldGen implements IWorldGenerator { } } - if(rand.nextInt(1000) == 0) { + if(rand.nextInt(2000) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index b27af5248..3df3c0458 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4711)"; + public static final String VERSION = "1.0.27 BETA (4724)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 4d29c4ee7..fbf14fab9 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -259,7 +259,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "RSR", "I I", "RSR", 'I', IRON.ingot(), 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', RUBBER.ingot(), 'I', IRON.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.conveyor_express, 16), new Object[] { "CCC", "CLC", "CCC", 'C', ModBlocks.conveyor, 'L', Fluids.LUBRICANT.getDict(1_000) }); + addRecipeAuto(new ItemStack(ModBlocks.conveyor_express, 8), new Object[] { "CCC", "CLC", "CCC", 'C', ModBlocks.conveyor, 'L', Fluids.LUBRICANT.getDict(1_000) }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_double, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_triple, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor_double, 'P', STEEL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_chute, 3), new Object[] { "IGI", "IGI", "ICI" , 'I', IRON.ingot(), 'G', ModBlocks.steel_grate, 'C', ModBlocks.conveyor }); @@ -281,6 +281,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.red_cable, 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', ModItems.wire_red_copper }); addShapelessAuto(new ItemStack(ModBlocks.red_cable_classic, 1), new Object[] { ModBlocks.red_cable }); addShapelessAuto(new ItemStack(ModBlocks.red_cable, 1), new Object[] { ModBlocks.red_cable_classic }); + addShapelessAuto(new ItemStack(ModBlocks.red_cable_gauge), new Object[] { ModBlocks.red_wire_coated, STEEL.ingot(), ModItems.circuit_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.machine_battery_potato, 1), new Object[] { "PCP", "WRW", "PCP", 'P', ItemBattery.getEmptyBattery(ModItems.battery_potato), 'C', CU.ingot(), 'R', REDSTONE.block(), 'W', KEY_PLANKS }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index b1458de1f..9dc506768 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1173,6 +1173,7 @@ public class MainRegistry { ignoreMappings.add("hbm:item.recycled_electronic"); ignoreMappings.add("hbm:item.recycled_nuclear"); ignoreMappings.add("hbm:item.recycled_misc"); + ignoreMappings.add("hbm:item.gun_bf_ammo"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index f865030c1..3ff167e2e 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -19,6 +19,7 @@ import com.hbm.blocks.machine.MachineCapacitor.TileEntityCapacitor; import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; +import com.hbm.blocks.network.BlockCableGauge.TileEntityCableGauge; import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge; @@ -190,6 +191,7 @@ public class TileMappings { put(TileEntityDeaerator.class, "tileentity_deaerator"); put(TileEntityCableBaseNT.class, "tileentity_ohgod"); // what? put(TileEntityCablePaintable.class, "tileentity_cable_paintable"); + put(TileEntityCableGauge.class, "tileentity_cable_gauge"); put(TileEntityPipeBaseNT.class, "tileentity_pipe_base"); put(TileEntityPipePaintable.class, "tileentity_pipe_paintable"); put(TileEntityPipeGauge.class, "tileentity_pipe_gauge"); diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index e1c299c7c..c86fb2ee9 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -67,7 +67,11 @@ public class EntityDamageUtil { if(!victim.attackEntityFrom(src, damage)) { if(victim instanceof EntityLivingBase) { - damage += ((EntityLivingBase) victim).lastDamage; + EntityLivingBase living = (EntityLivingBase) victim; + + if(living.hurtResistantTime > living.maxHurtResistantTime / 2.0F) { + damage += living.lastDamage; + } } return victim.attackEntityFrom(src, damage); } else { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 50a1f341b..c06ee2508 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3244,6 +3244,10 @@ item.titanium_shovel.name=Titanschaufel item.titanium_sword.name=Titanschwert item.toothpicks.name=Zahnstocher item.train.cargo_tram.name=Elektrischer Flachwagen +item.trenchmaster_boots.name=Stiefel des Trenchmasters +item.trenchmaster_helmet.name=Helm des Trenchmasters +item.trenchmaster_legs.name=Hose des Trenchmasters +item.trenchmaster_plate.name=Brustpanzer des Trenchmasters item.trinitite.name=Trinitit item.tritium_deuterium_cake.name=Tritium-Deuterium-Kuchen item.tsar_core.name=Fusionskern @@ -4334,6 +4338,8 @@ tile.reactor_inserter.name=Reaktor-Brennstoffeinlass tile.red_barrel.name=Explosives Fass tile.red_cable.name=Rotes Kupferkabel tile.red_cable_classic.name=Rotes Kupferkabel (Klassisch) +tile.red_cable_gauge.name=Strommessgerät +tile.red_cable_gauge.desc=Kabel welches anzeight, wie viel Strom$sich pro Tick im Netzwerk bewegt.$Geteilte Netzwerke die über Energiespeicherblöcke$verbunden sind, werden als ein einzelnes gezählt. tile.red_cable_paintable.name=Geschirmtes rotes Kupferkabel (Färbbar) tile.red_connector.name=Stromverbindungsstück tile.red_pylon.name=Strommasten diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d9255f011..17a91ee2f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4161,6 +4161,10 @@ item.titanium_shovel.name=Titanium Shovel item.titanium_sword.name=Titanium Sword item.toothpicks.name=Toothpicks item.train.cargo_tram.name=Electric Flat Bed Tram +item.trenchmaster_boots.name=Trenchmaster's Boots +item.trenchmaster_helmet.name=Trenchmaster's Helmet +item.trenchmaster_legs.name=Trenchmaster's Leggings +item.trenchmaster_plate.name=Trenchmaster's Chestplate item.trinitite.name=Trinitite item.tritium_deuterium_cake.name=Tritium-Deuterium-Cake item.tritium_deuterium_cake.desc=Not actual cake, but great$universal fusion fuel! @@ -5311,6 +5315,8 @@ tile.reactor_inserter.name=Reactor Fuel Inserter tile.red_barrel.name=Explosive Barrel tile.red_cable.name=Red Copper Cable tile.red_cable_classic.name=Red Copper Cable (Classic) +tile.red_cable_gauge.name=Power Gauge +tile.red_cable_gauge.desc=Cable that displays how much power$moves within the network per tick.$Split networks connected by energy$stroage blocks are considered as one shared network. tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole diff --git a/src/main/resources/assets/hbm/textures/blocks/cable_gauge.png b/src/main/resources/assets/hbm/textures/blocks/cable_gauge.png new file mode 100644 index 0000000000000000000000000000000000000000..206104da9d0df1170deb56da8bb2f22ba4f84a5f GIT binary patch literal 305 zcmV-10nYx3P)f=Kg-S(cHe8PNRy$MH^4 zRU}#u14JBYx&Zo{H(%KrJg2IPw_>fWyX*Uk@9*>g0wGkS*7=DO00000NkvXXu0mjf DL+61X literal 0 HcmV?d00001 From cf903adf3a46cc38d2ed087d7e85041791f5b748 Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Sat, 16 Sep 2023 20:59:06 +0300 Subject: [PATCH 034/207] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index f71a694b7..622fd2644 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -303,6 +303,9 @@ armor.sprintBoost=УÑкоренный бег armor.projectileProtection=Модификатор урона %s от ÑнарÑдов armor.dash=Даёт %s рывков armor.yield=Защита применима к урону <%s +armor.fasterReload=БыÑÑ‚Ñ€Ð°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ñ€Ñдка +armor.moreAmmo=Больше патронов +armor.stepSize=Шаг: %s armorMod.all=Ð’Ñему armorMod.applicableTo=ПрименÑетÑÑ Ðº: @@ -1837,6 +1840,8 @@ tile.red_wire_coated.name=Медный кабель Ñ Ð¿Ð¾ÐºÑ€Ñ‹Ñ‚Ð¸ÐµÐ¼ tile.cable_switch.name=Рубильник tile.cable_detector.name=РедÑтоун-рубильник tile.cable_diode.name=Диод из краÑной меди +tile.red_cable_gauge.name=Датчик мощноÑти +tile.red_cable_gauge.desc=Кабель, который показывает, Ñколько Ñнергии$ перемещаетÑÑ Ð¿Ð¾ Ñети за тик.$Разделенные Ñети, Ñоединенные блоками Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñнергии$раÑÑматриваютÑÑ ÐºÐ°Ðº одна Ð¾Ð±Ñ‰Ð°Ñ Ñеть. tile.machine_deuterium.name=Дейтериевый ÑкÑтрактор container.machine_deuterium=Дейтериевый ÑкÑтрактор tile.machine_battery_potato.name=ÐšÐ°Ñ€Ñ‚Ð¾Ñ„ÐµÐ»ÑŒÐ½Ð°Ñ Ð±Ð°Ñ‚Ð°Ñ€ÐµÑ @@ -1851,6 +1856,7 @@ tile.capacitor_copper.name=Медный конденÑатор tile.capacitor_gold.name=Золотой конденÑатор tile.capacitor_niobium.name=Ðиобиевый конденÑатор tile.capacitor_tantalium.name=Танталовый конденÑатор +tile.capacitor_schrabidate.name=Шрабидатовый конденÑатор tile.capacitor.desc=Вход: Сверху$Выход: Снизу через шину tile.machine_coal_off.name=Генератор внутреннего ÑÐ³Ð¾Ñ€Ð°Ð½Ð¸Ñ tile.machine_coal_on.name=Генератор внутреннего ÑÐ³Ð¾Ñ€Ð°Ð½Ð¸Ñ @@ -2069,6 +2075,8 @@ tile.machine_solidifier.desc=УниверÑÐ°Ð»ÑŒÐ½Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð°, оÑнащ tile.conveyor.name=Конвейер tile.conveyor.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend +tile.conveyor_express.name=БыÑтрый конвейер +tile.conveyor_express.desc=Moves items dropped on it very fast$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend container.craneExtractor=Конвейерный извлекатель container.craneInserter=Конвейерный вÑтавщик tile.crane_extractor.name=Конвейерный извлекатель @@ -2210,6 +2218,9 @@ container.machineCoker=КокÑÐ¾Ð²Ð°Ñ ÑƒÑтановка container.machineCompressor=КомпреÑÑор tile.machine_compressor.name=КомпреÑÑор tile.chimney_brick.name=Ð”Ñ‹Ð¼Ð¾Ð²Ð°Ñ Ñ‚Ñ€ÑƒÐ±Ð° +tile.chimney_brick.desc=ПодÑоединÑетÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ выхлопных труб к машинам$Сокращает выброÑÑ‹ загрÑзнÑющих вещеÑтв на 75%% +tile.chimney_industrial.name=ÐŸÑ€Ð¾Ð¼Ñ‹ÑˆÐ»ÐµÐ½Ð½Ð°Ñ Ð´Ñ‹Ð¼Ð¾Ð²Ð°Ñ Ñ‚Ñ€ÑƒÐ±Ð° +tile.chimney_industrial.desc=ПодÑоединÑетÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ выхлопных труб к машинам$Сокращает выброÑÑ‹ загрÑзнÑющих вещеÑтв на 90%% tile.radio_torch_counter.name=РедÑтоун-радио Ñчётчик предметов tile.radio_torch_counter.desc=СтавитÑÑ Ð½Ð° плоÑкие поверхноÑти или ÑовмеÑтимые компараторные блоки$Сигнал завиÑит от количеÑтва нужных предметов container.rttyCounter=РедÑтоун-радио Ñчётчик предметов @@ -2228,6 +2239,10 @@ tile.machine_stirling_creative.name=ТворчеÑкий генератор Ст tile.machine_stirling_creative.desc=Превращает тепло в Ñнергию. Требует внешний иÑточник тепла.$СкороÑть теплопередачи: T*0.1 TU/t$БеÑконечное потребление/t$ЭффективноÑть: 100%% tile.machine_conveyor_press.name=Конвейерный преÑÑ tile.machine_conveyor_press.desc=Лента двигаетÑÑ Ñлево-направо$ПКМ чтобы уÑтановить штамп$ПКМ отвёрткой чтобы ÑнÑть штамп +tile.pump_electric.name=ЭлектричеÑкий наÑÐ¾Ñ Ð´Ð»Ñ Ð³Ñ€ÑƒÐ½Ñ‚Ð¾Ð²Ñ‹Ñ… вод +tile.pump_electric.desc=ИÑпользует ÑлектричеÑтво Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ½Ñ‚Ð¾Ð²Ñ‹Ñ… вод$Выкачывает до 10,000мБ/тик$Должно быть размещено ниже Y:70 +tile.pump_steam.name=Паровой наÑÐ¾Ñ Ð´Ð»Ñ Ð³Ñ€ÑƒÐ½Ñ‚Ð¾Ð²Ñ‹Ñ… вод +tile.pump_steam.desc=ИÑпользует пар Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ½Ñ‚Ð¾Ð²Ñ‹Ñ… вод$Выкачывает до 1000мБ/тик$Должно быть размещено ниже Y:70 tile.cm_block.alloy.name=ÐšÐ¾Ñ€Ð¿ÑƒÑ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹ из продвинутого Ñплава tile.cm_block.desh.name=ÐšÐ¾Ñ€Ð¿ÑƒÑ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹ из деша @@ -2919,7 +2934,9 @@ tile.block_fallout.name=Блок радиоактивных оÑадков tile.fallout.name=Радиоактивный оÑадок tile.ash_digamma.name=Пепел item.powder_ash.coal.name=Ð£Ð³Ð¾Ð»ÑŒÐ½Ð°Ñ Ð·Ð¾Ð»Ð° +item.powder_ash.fly.name=Ð›ÐµÑ‚ÑƒÑ‡Ð°Ñ Ð·Ð¾Ð»Ð° item.powder_ash.misc.name=Пепел +item.powder_ash.soot.name=ÐœÐµÐ»ÐºÐ°Ñ Ñажа item.powder_ash.wood.name=ДревеÑÐ½Ð°Ñ Ð·Ð¾Ð»Ð° tile.glass_ash.name=Пепельное Ñтекло tile.fire_digamma.name=ЗатÑÐ¶Ð½Ð°Ñ Ð”Ð¸Ð³Ð°Ð¼Ð¼Ð° @@ -5120,6 +5137,10 @@ item.envsuit_boots.name=Ботинки защитного коÑтюма M1TTY item.envsuit_helmet.name=Шлем защитного коÑтюма M1TTY item.envsuit_legs.name=Поножи защитного коÑтюма M1TTY item.envsuit_plate.name=Ðагрудник защитного коÑтюма M1TTY +item.trenchmaster_boots.name=Сапоги траншейщика +item.trenchmaster_helmet.name=Шлем траншейщика +item.trenchmaster_legs.name=Поножи траншейщика +item.trenchmaster_plate.name=Ðагрудник траншейщика tile.mush.name=СветÑщийÑÑ Ð³Ñ€Ð¸Ð± tile.waste_mycelium.name=СветÑщийÑÑ Ð¼Ð¸Ñ†ÐµÐ»Ð¸Ð¹ From ab659a405d08a77bdaa81d21c33232a64fdd9cf9 Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Sat, 16 Sep 2023 22:44:40 +0300 Subject: [PATCH 035/207] Updated ru_RU.lang MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ñй --- src/main/resources/assets/hbm/lang/ru_RU.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 622fd2644..85417993a 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -2195,6 +2195,7 @@ tile.radio_torch_sender.name=РедÑтоун-радио передатчик tile.radio_torch_sender.desc=СтавитÑÑ Ð½Ð° плоÑкие поверхноÑти или ÑовмеÑтимые компараторные блоки$Считывает редÑтоун Ñигнал или вход компаратора container.rttyReceiver=РедÑтоун-радио приёмник container.rttySender=РедÑтоун-радио передатчик +tile.radio_telex.name=Ð¢ÐµÐ»ÐµÐºÑ tile.machine_combustion_engine.name=Промышленный двигатель внутреннего ÑÐ³Ð¾Ñ€Ð°Ð½Ð¸Ñ tile.machine_mixer.name=Промышленный ÑмеÑитель container.machineMixer=Промышленный ÑмеÑитель From 8ce3e9837b3c42bab4a51ce7417d9d1dab64aab6 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 17 Sep 2023 20:11:53 +0200 Subject: [PATCH 036/207] "today i will get shit done" and other jokes you can tell yourself --- src/main/java/com/hbm/blocks/ModBlocks.java | 8 + .../hbm/blocks/machine/BlockHadronCoil.java | 3 +- .../hbm/blocks/machine/BlockMassStorage.java | 5 +- .../hbm/blocks/machine/HeaterElectric.java | 3 +- .../com/hbm/blocks/machine/HeaterHeatex.java | 3 +- .../hbm/blocks/machine/HeaterOilburner.java | 3 +- .../hbm/blocks/machine/MachineHeatBoiler.java | 6 +- .../machine/MachineHeatBoilerIndustrial.java | 6 +- .../hbm/blocks/machine/MachineHephaestus.java | 2 +- .../com/hbm/blocks/machine/MachinePump.java | 11 +- .../blocks/machine/MachineSteamEngine.java | 5 +- .../hbm/blocks/machine/MachineTeleporter.java | 3 +- .../com/hbm/blocks/network/DroneCrate.java | 41 + .../com/hbm/blocks/network/DroneWaypoint.java | 141 ++ .../hbm/blocks/network/FluidDuctGauge.java | 5 +- .../com/hbm/commands/CommandSatellites.java | 3 +- .../java/com/hbm/config/CommonConfig.java | 6 +- .../java/com/hbm/config/StructureConfig.java | 4 +- .../java/com/hbm/entity/EntityMappings.java | 1 + .../hbm/entity/item/EntityDeliveryDrone.java | 138 ++ .../hbm/handler/nei/HadronRecipeHandler.java | 3 +- .../com/hbm/interfaces/ICustomWarhead.java | 3 +- .../hbm/inventory/fluid/trait/FT_Toxin.java | 3 +- .../inventory/gui/GUICombustionEngine.java | 4 +- .../com/hbm/inventory/gui/GUICrucible.java | 5 +- .../com/hbm/inventory/gui/GUIFirebox.java | 3 +- .../hbm/inventory/gui/GUIFurnaceCombo.java | 6 +- .../hbm/inventory/gui/GUIFurnaceSteel.java | 6 +- .../java/com/hbm/inventory/gui/GUIHadron.java | 2 +- .../hbm/inventory/gui/GUIMachineCoker.java | 6 +- .../com/hbm/inventory/gui/GUIMassStorage.java | 4 +- .../com/hbm/inventory/gui/GUIOilburner.java | 6 +- .../java/com/hbm/inventory/gui/GUIPWR.java | 8 +- .../java/com/hbm/inventory/gui/GUIWatz.java | 6 +- src/main/java/com/hbm/items/ModItems.java | 3 + .../com/hbm/items/machine/ItemRBMKRod.java | 5 +- .../com/hbm/items/machine/ItemRTGPellet.java | 9 +- .../com/hbm/items/tool/ItemBlowtorch.java | 3 +- .../com/hbm/items/tool/ItemDroneLinker.java | 101 + .../com/hbm/items/tool/ItemMirrorTool.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 7 +- .../java/com/hbm/main/ResourceManager.java | 6 + src/main/java/com/hbm/main/ServerProxy.java | 15 +- .../hbm/render/item/RenderDeliveryDrone.java | 32 + .../com/hbm/tileentity/IRadioisotopeFuel.java | 7 +- .../java/com/hbm/tileentity/TileMappings.java | 2 + .../tileentity/network/IDroneLinkable.java | 9 + .../network/TileEntityDroneWaypoint.java | 90 + src/main/java/com/hbm/util/TimeAnalyzer.java | 5 +- .../java/com/hbm/util/function/Function.java | 16 +- .../assets/hbm/models/machines/drone.obj | 1707 +++++++++++++++++ .../textures/blocks/drone_crate_bottom.png | Bin 0 -> 785 bytes .../blocks/drone_crate_bottom.png.mcmeta | 5 + .../hbm/textures/blocks/drone_crate_side.png | Bin 0 -> 803 bytes .../blocks/drone_crate_side.png.mcmeta | 5 + .../hbm/textures/blocks/drone_crate_top.png | Bin 0 -> 695 bytes .../blocks/drone_crate_top.png.mcmeta | 5 + .../hbm/textures/blocks/drone_waypoint.png | Bin 0 -> 236 bytes .../textures/blocks/drone_waypoint.png.mcmeta | 5 + .../textures/gui/storage/gui_crate_drone.png | Bin 0 -> 2165 bytes .../hbm/textures/items/drone_linker.png | Bin 0 -> 312 bytes .../textures/items/drone_linker.png.mcmeta | 5 + .../hbm/textures/models/machines/drone.png | Bin 0 -> 2662 bytes 64 files changed, 2429 insertions(+), 78 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/network/DroneCrate.java create mode 100644 src/main/java/com/hbm/blocks/network/DroneWaypoint.java create mode 100644 src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java create mode 100644 src/main/java/com/hbm/items/tool/ItemDroneLinker.java create mode 100644 src/main/java/com/hbm/render/item/RenderDeliveryDrone.java create mode 100644 src/main/java/com/hbm/tileentity/network/IDroneLinkable.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java create mode 100644 src/main/resources/assets/hbm/models/machines/drone.obj create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_crate_drone.png create mode 100644 src/main/resources/assets/hbm/textures/items/drone_linker.png create mode 100755 src/main/resources/assets/hbm/textures/items/drone_linker.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/models/machines/drone.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 7f809f174..c348fc5b3 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -819,6 +819,9 @@ public class ModBlocks { public static Block crane_boxer; public static Block crane_unboxer; public static Block crane_splitter; + + public static Block drone_waypoint; + public static Block drone_crate; public static Block fan; @@ -1990,6 +1993,9 @@ public class ModBlocks { fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); + drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); ladder_sturdy = new BlockNTMLadder().setBlockName("ladder_sturdy").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_sturdy"); @@ -3249,6 +3255,8 @@ public class ModBlocks { register(conveyor_chute); register(conveyor_lift); register(crane_splitter); + register(drone_waypoint); + register(drone_crate); register(fan); register(piston_inserter); diff --git a/src/main/java/com/hbm/blocks/machine/BlockHadronCoil.java b/src/main/java/com/hbm/blocks/machine/BlockHadronCoil.java index ae323e1bf..1cb88488a 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockHadronCoil.java +++ b/src/main/java/com/hbm/blocks/machine/BlockHadronCoil.java @@ -1,6 +1,7 @@ package com.hbm.blocks.machine; import java.util.List; +import java.util.Locale; import com.hbm.blocks.ITooltipProvider; import com.hbm.render.block.ct.CT; @@ -53,6 +54,6 @@ public class BlockHadronCoil extends Block implements IBlockCT, ITooltipProvider @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(I18nUtil.resolveKey("info.coil") + ": " + String.format("%,d", factor)); + list.add(I18nUtil.resolveKey("info.coil") + ": " + String.format(Locale.US, "%,d", factor)); } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java b/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java index d8e2f6773..03fc8c597 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java +++ b/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Random; import com.hbm.blocks.IBlockMulti; @@ -265,7 +266,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo if(full) { title = storage.type.getDisplayName(); - text.add(String.format("%,d", storage.getStockpile()) + " / " + String.format("%,d", storage.getCapacity())); + text.add(String.format(Locale.US, "%,d", storage.getStockpile()) + " / " + String.format(Locale.US, "%,d", storage.getCapacity())); double percent = (double) storage.getStockpile() / (double) storage.getCapacity(); int charge = (int) Math.floor(percent * 10_000D); @@ -286,7 +287,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo if(type != null) { list.add(EnumChatFormatting.GOLD + type.getDisplayName()); - list.add(String.format("%,d", stack.stackTagCompound.getInteger("stack")) + " / " + String.format("%,d", getCapacity(stack.getItemDamage()))); + list.add(String.format(Locale.US, "%,d", stack.stackTagCompound.getInteger("stack")) + " / " + String.format(Locale.US, "%,d", getCapacity(stack.getItemDamage()))); } } diff --git a/src/main/java/com/hbm/blocks/machine/HeaterElectric.java b/src/main/java/com/hbm/blocks/machine/HeaterElectric.java index 7d458daf5..c66fad6b7 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterElectric.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterElectric.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import api.hbm.block.IToolable; import com.hbm.blocks.BlockDummyable; @@ -75,7 +76,7 @@ public class HeaterElectric extends BlockDummyable implements ILookOverlay, IToo TileEntityHeaterElectric heater = (TileEntityHeaterElectric) te; List text = new ArrayList(); - text.add(String.format("%,d", heater.heatEnergy) + " TU"); + text.add(String.format(Locale.US, "%,d", heater.heatEnergy) + " TU"); text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + heater.getConsumption() + " HE/t"); text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + heater.getHeatGen() + " TU/t"); diff --git a/src/main/java/com/hbm/blocks/machine/HeaterHeatex.java b/src/main/java/com/hbm/blocks/machine/HeaterHeatex.java index fa585caeb..ddc4c63dc 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterHeatex.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterHeatex.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -63,7 +64,7 @@ public class HeaterHeatex extends BlockDummyable implements ILookOverlay, IToolt TileEntityHeaterHeatex heater = (TileEntityHeaterHeatex) te; List text = new ArrayList(); - text.add(String.format("%,d", heater.heatEnergy) + " TU"); + text.add(String.format(Locale.US, "%,d", heater.heatEnergy) + " TU"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/HeaterOilburner.java b/src/main/java/com/hbm/blocks/machine/HeaterOilburner.java index eb9c13e53..0ddca5005 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterOilburner.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterOilburner.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -97,7 +98,7 @@ public class HeaterOilburner extends BlockDummyable implements ILookOverlay, ITo FluidType type = heater.tank.getTankType(); if(type.hasTrait(FT_Flammable.class)) { int heat = (int)(type.getTrait(FT_Flammable.class).getHeatEnergy() * heater.setting / 1000); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + String.format("%,d", heat) + " TU/t"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", heat) + " TU/t"); } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java index a8779573e..522b046a8 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java @@ -175,9 +175,9 @@ public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, I if(boiler.hasExploded) return; List text = new ArrayList(); - text.add(String.format("%,d", boiler.heat) + "TU"); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", boiler.tanks[0].getFill()) + " / " + String.format("%,d", boiler.tanks[0].getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", boiler.tanks[1].getFill()) + " / " + String.format("%,d", boiler.tanks[1].getMaxFill()) + "mB"); + text.add(String.format(Locale.US, "%,d", boiler.heat) + "TU"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", boiler.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", boiler.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[1].getMaxFill()) + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java index 00b06f50d..7656c5f06 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java @@ -112,9 +112,9 @@ public class MachineHeatBoilerIndustrial extends BlockDummyable implements ILook TileEntityHeatBoilerIndustrial boiler = (TileEntityHeatBoilerIndustrial) te; List text = new ArrayList(); - text.add(String.format("%,d", boiler.heat) + "TU"); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", boiler.tanks[0].getFill()) + " / " + String.format("%,d", boiler.tanks[0].getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", boiler.tanks[1].getFill()) + " / " + String.format("%,d", boiler.tanks[1].getMaxFill()) + "mB"); + text.add(String.format(Locale.US, "%,d", boiler.heat) + "TU"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", boiler.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", boiler.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[1].getMaxFill()) + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java b/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java index 6f31472b9..0c583b572 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java @@ -107,7 +107,7 @@ public class MachineHephaestus extends BlockDummyable implements ILookOverlay { TileEntityMachineHephaestus heatex = (TileEntityMachineHephaestus) te; List text = new ArrayList(); - text.add(String.format("%,d", heatex.bufferedHeat) + " TU"); + text.add(String.format(Locale.US, "%,d", heatex.bufferedHeat) + " TU"); for(int i = 0; i < heatex.getAllTanks().length; i++) { FluidTank tank = heatex.getAllTanks()[i]; diff --git a/src/main/java/com/hbm/blocks/machine/MachinePump.java b/src/main/java/com/hbm/blocks/machine/MachinePump.java index a2cd6ab1c..a31d2fdc3 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePump.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePump.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -83,15 +84,15 @@ public class MachinePump extends BlockDummyable implements ITooltipProvider, ILo if(te instanceof TileEntityMachinePumpSteam) { TileEntityMachinePumpSteam pump = (TileEntityMachinePumpSteam) te; - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.steam.getTankType().getUnlocalizedName()) + ": " + String.format("%,d", pump.steam.getFill()) + " / " + String.format("%,d", pump.steam.getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.lps.getTankType().getUnlocalizedName()) + ": " + String.format("%,d", pump.lps.getFill()) + " / " + String.format("%,d", pump.lps.getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.water.getTankType().getUnlocalizedName()) + ": " + String.format("%,d", pump.water.getFill()) + " / " + String.format("%,d", pump.water.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.steam.getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", pump.steam.getFill()) + " / " + String.format(Locale.US, "%,d", pump.steam.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.lps.getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", pump.lps.getFill()) + " / " + String.format(Locale.US, "%,d", pump.lps.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.water.getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", pump.water.getFill()) + " / " + String.format(Locale.US, "%,d", pump.water.getMaxFill()) + "mB"); } if(te instanceof TileEntityMachinePumpElectric) { TileEntityMachinePumpElectric pump = (TileEntityMachinePumpElectric) te; - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + String.format("%,d", pump.power) + " / " + String.format("%,d", pump.maxPower) + "HE"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.water.getTankType().getUnlocalizedName()) + ": " + String.format("%,d", pump.water.getFill()) + " / " + String.format("%,d", pump.water.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", pump.power) + " / " + String.format(Locale.US, "%,d", pump.maxPower) + "HE"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.water.getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", pump.water.getFill()) + " / " + String.format(Locale.US, "%,d", pump.water.getMaxFill()) + "mB"); } if(pos[1] > 70) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java index 7277b011d..384f216e8 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -72,8 +73,8 @@ public class MachineSteamEngine extends BlockDummyable implements ILookOverlay, TileEntitySteamEngine engine = (TileEntitySteamEngine) te; List text = new ArrayList(); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", engine.tanks[0].getFill()) + " / " + String.format("%,d", engine.tanks[0].getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", engine.tanks[1].getFill()) + " / " + String.format("%,d", engine.tanks[1].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", engine.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", engine.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[1].getMaxFill()) + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTeleporter.java b/src/main/java/com/hbm/blocks/machine/MachineTeleporter.java index 3b5ccd587..f702e0b4f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTeleporter.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTeleporter.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.ILookOverlay; import com.hbm.lib.RefStrings; @@ -61,7 +62,7 @@ public class MachineTeleporter extends BlockContainer implements ILookOverlay { if(tele.targetY == -1) { text.add(EnumChatFormatting.RED + "No destination set!"); } else { - text.add((tele.power >= tele.consumption ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + String.format("%,d", tele.power) + " / " + String.format("%,d", tele.maxPower)); + text.add((tele.power >= tele.consumption ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + String.format(Locale.US, "%,d", tele.power) + " / " + String.format(Locale.US, "%,d", tele.maxPower)); text.add("Destination: " + tele.targetX + " / " + tele.targetY + " / " + tele.targetZ + " (D: " + tele.targetDim + ")"); } diff --git a/src/main/java/com/hbm/blocks/network/DroneCrate.java b/src/main/java/com/hbm/blocks/network/DroneCrate.java new file mode 100644 index 000000000..440e3e5c5 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/DroneCrate.java @@ -0,0 +1,41 @@ +package com.hbm.blocks.network; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class DroneCrate extends BlockContainer { + + @SideOnly(Side.CLIENT) private IIcon iconTop; + @SideOnly(Side.CLIENT) private IIcon iconBottom; + + public DroneCrate() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.blockIcon = reg.registerIcon(RefStrings.MODID + ":drone_crate_side"); + this.iconTop = reg.registerIcon(RefStrings.MODID + ":drone_crate_top"); + this.iconBottom = reg.registerIcon(RefStrings.MODID + ":drone_crate_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); + } +} diff --git a/src/main/java/com/hbm/blocks/network/DroneWaypoint.java b/src/main/java/com/hbm/blocks/network/DroneWaypoint.java new file mode 100644 index 000000000..28e9e338b --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/DroneWaypoint.java @@ -0,0 +1,141 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.items.ModItems; +import com.hbm.tileentity.network.TileEntityDroneWaypoint; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class DroneWaypoint extends BlockContainer implements ILookOverlay, ITooltipProvider { + + public DroneWaypoint() { + super(Material.circuits); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityDroneWaypoint(); + } + + @Override + public int getRenderType() { + return RadioTorchBase.renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + return true; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + @Override + public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 vec0, Vec3 vec1) { + + int meta = world.getBlockMetadata(x, y, z) & 7; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + + this.setBlockBounds( + dir.offsetX == 1 ? 0F : 0.375F, + dir.offsetY == 1 ? 0F : 0.375F, + dir.offsetZ == 1 ? 0F : 0.375F, + dir.offsetX == -1 ? 1F : 0.625F, + dir.offsetY == -1 ? 1F : 0.625F, + dir.offsetZ == -1 ? 1F : 0.625F + ); + + return super.collisionRayTrace(world, x, y, z, vec0, vec1); + } + + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { + return side; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + + int meta = world.getBlockMetadata(x, y, z); + ForgeDirection dir = ForgeDirection.getOrientation(meta); + Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + + if(!b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) && (!b.renderAsNormalBlock() || b.isAir(world, x, y, z))) { + this.dropBlockAsItem(world, x, y, z, meta, 0); + world.setBlockToAir(x, y, z); + } + } + + @Override + public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) { + if(!super.canPlaceBlockOnSide(world, x, y, z, side)) return false; + + ForgeDirection dir = ForgeDirection.getOrientation(side); + Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + + return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.drone_linker) return false; + + if(world.isRemote) return true; + + TileEntityDroneWaypoint tile = (TileEntityDroneWaypoint) world.getTileEntity(x, y, z); + tile.addHeight(player.isSneaking() ? - 1 : 1); + return true; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntityDroneWaypoint tile = (TileEntityDroneWaypoint) world.getTileEntity(x, y, z); + List text = new ArrayList(); + + text.add("Waypoint distance: " + tile.height); + + if(tile.nextY != -1) { + text.add("Next waypoint: " + tile.nextX + " / " + tile.nextY + " / " + tile.nextZ); + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 948befc56..155c42512 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -3,6 +3,7 @@ package com.hbm.blocks.network; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; @@ -96,8 +97,8 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL List text = new ArrayList(); text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); - text.add(String.format("%,d", duct.deltaTick) + " mB/t"); - text.add(String.format("%,d", duct.deltaLastSecond) + " mB/s"); + text.add(String.format(Locale.US, "%,d", duct.deltaTick) + " mB/t"); + text.add(String.format(Locale.US, "%,d", duct.deltaLastSecond) + " mB/s"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/commands/CommandSatellites.java b/src/main/java/com/hbm/commands/CommandSatellites.java index 82f474b70..6f1a803cd 100644 --- a/src/main/java/com/hbm/commands/CommandSatellites.java +++ b/src/main/java/com/hbm/commands/CommandSatellites.java @@ -13,6 +13,7 @@ import net.minecraft.util.EnumChatFormatting; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.stream.Collectors; public class CommandSatellites extends CommandBase { @@ -23,7 +24,7 @@ public class CommandSatellites extends CommandBase { @Override public String getCommandUsage(ICommandSender iCommandSender) { - return String.format( + return String.format(Locale.US, "%s/%s orbit %s- Launch the held satellite\n" + "%s/%s descend %s- Deletes satellite by frequency.", EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE, diff --git a/src/main/java/com/hbm/config/CommonConfig.java b/src/main/java/com/hbm/config/CommonConfig.java index e1d6ed63c..7e121b26e 100644 --- a/src/main/java/com/hbm/config/CommonConfig.java +++ b/src/main/java/com/hbm/config/CommonConfig.java @@ -1,5 +1,7 @@ package com.hbm.config; +import java.util.Locale; + import com.hbm.main.MainRegistry; import net.minecraftforge.common.config.Configuration; @@ -31,7 +33,7 @@ public class CommonConfig { if(value < 0) { MainRegistry.logger.error("Fatal error config: Randomizer value has been below zero, despite bound having to be positive integer!"); - MainRegistry.logger.error(String.format("Errored value will default back to %d, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", def)); + MainRegistry.logger.error(String.format(Locale.US, "Errored value will default back to %d, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", def)); return def; } @@ -42,7 +44,7 @@ public class CommonConfig { if(value <= 0) { MainRegistry.logger.error("Fatal error config: Randomizer value has been set to zero, despite bound having to be positive integer!"); - MainRegistry.logger.error(String.format("Errored value will default back to %d, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", def)); + MainRegistry.logger.error(String.format(Locale.US, "Errored value will default back to %d, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", def)); return def; } diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index 2f22d7281..9d6ad3cc0 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -1,5 +1,7 @@ package com.hbm.config; +import java.util.Locale; + import com.hbm.main.MainRegistry; import net.minecraftforge.common.config.Configuration; @@ -28,7 +30,7 @@ public class StructureConfig { if(structureMinChunks > structureMaxChunks) { MainRegistry.logger.error("Fatal error config: Minimum value has been set higher than the maximum value!"); - MainRegistry.logger.error(String.format("Errored values will default back to %1$d and %2$d respectively, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", 8, 24)); + MainRegistry.logger.error(String.format(Locale.US, "Errored values will default back to %1$d and %2$d respectively, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", 8, 24)); structureMinChunks = 8; structureMaxChunks = 24; } diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index c9eb1c210..e10fb1097 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -174,6 +174,7 @@ public class EntityMappings { addEntity(EntitySoyuzCapsule.class, "entity_soyuz_capsule", 1000); addEntity(EntityMovingItem.class, "entity_c_item", 1000); addEntity(EntityMovingPackage.class, "entity_c_package", 1000); + addEntity(EntityDeliveryDrone.class, "entity_delivery_drone", 250, false); addEntity(EntityCloudTom.class, "entity_moonstone_blast", 1000); addEntity(EntityBeamVortex.class, "entity_vortex_beam", 1000); addEntity(EntityFireworks.class, "entity_firework_ball", 1000); diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java new file mode 100644 index 000000000..f8b50012d --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -0,0 +1,138 @@ +package com.hbm.entity.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityDeliveryDrone extends Entity { + + protected int turnProgress; + protected double syncPosX; + protected double syncPosY; + protected double syncPosZ; + @SideOnly(Side.CLIENT) protected double velocityX; + @SideOnly(Side.CLIENT) protected double velocityY; + @SideOnly(Side.CLIENT) protected double velocityZ; + + public double targetX = -1; + public double targetY = -1; + public double targetZ = -1; + + public EntityDeliveryDrone(World world) { + super(world); + this.setSize(1.5F, 2.0F); + } + + public void setTarget(double x, double y, double z) { + this.targetX = x; + this.targetY = y; + this.targetZ = z; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + @Override + public boolean canAttackWithItem() { + return true; + } + + @Override + public boolean hitByEntity(Entity attacker) { + + if(attacker instanceof EntityPlayer) { + this.setDead(); + } + + return false; + } + + @Override + protected boolean canTriggerWalking() { + return true; + } + + @Override + protected void entityInit() { + this.dataWatcher.addObject(10, new Integer(0)); + } + + @Override + public void onUpdate() { + + if(worldObj.isRemote) { + if(this.turnProgress > 0) { + double interpX = this.posX + (this.syncPosX - this.posX) / (double) this.turnProgress; + double interpY = this.posY + (this.syncPosY - this.posY) / (double) this.turnProgress; + double interpZ = this.posZ + (this.syncPosZ - this.posZ) / (double) this.turnProgress; + --this.turnProgress; + this.setPosition(interpX, interpY, interpZ); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + + worldObj.spawnParticle("smoke", posX + 1.125, posY + 0.75, posZ, 0, -0.2, 0); + worldObj.spawnParticle("smoke", posX - 1.125, posY + 0.75, posZ, 0, -0.2, 0); + worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ + 1.125, 0, -0.2, 0); + worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ - 1.125, 0, -0.2, 0); + } else { + + this.motionX = 0; + this.motionY = 0; + this.motionZ = 0; + + if(this.targetY != -1) { + + Vec3 dist = Vec3.createVectorHelper(targetX - posX, targetY - posY, targetZ - posZ); + double speed = getSpeed(); + + if(dist.lengthVector() >= speed) { + dist = dist.normalize(); + this.motionX = dist.xCoord * speed; + this.motionY = dist.yCoord * speed; + this.motionZ = dist.zCoord * speed; + } + } + + this.moveEntity(motionX, motionY, motionZ); + } + } + + public double getSpeed() { + return 0.125D; + } + + @Override + protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { + + } + + @Override + protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { + + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double motionX, double motionY, double motionZ) { + this.velocityX = this.motionX = motionX; + this.velocityY = this.motionY = motionY; + this.velocityZ = this.motionZ = motionZ; + } + + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double x, double y, double z, float yaw, float pitch, int theNumberThree) { + this.syncPosX = x; + this.syncPosY = y; + this.syncPosZ = z; + this.turnProgress = theNumberThree; + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + } +} diff --git a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java b/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java index 21ba387e3..cbd520858 100644 --- a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java @@ -6,6 +6,7 @@ import java.awt.Rectangle; import java.util.Arrays; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import com.hbm.inventory.gui.GUIHadron; import com.hbm.inventory.recipes.HadronRecipes; @@ -141,7 +142,7 @@ public class HadronRecipeHandler extends TemplateRecipeHandler { FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; - String mom = String.format("%,d", rec.momentum); + String mom = String.format(Locale.US, "%,d", rec.momentum); fontRenderer.drawString(mom, -fontRenderer.getStringWidth(mom) / 2 + 30, 42, 0x404040); } diff --git a/src/main/java/com/hbm/interfaces/ICustomWarhead.java b/src/main/java/com/hbm/interfaces/ICustomWarhead.java index 9c9301bc2..656425cd1 100644 --- a/src/main/java/com/hbm/interfaces/ICustomWarhead.java +++ b/src/main/java/com/hbm/interfaces/ICustomWarhead.java @@ -3,6 +3,7 @@ package com.hbm.interfaces; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.apache.logging.log4j.Level; @@ -198,7 +199,7 @@ public interface ICustomWarhead { for (Enum f : combinedFuels) if (data.getFloat(f.toString()) > 0) - tooltip.add(String.format("%s: %skg (%s)", I18nUtil.resolveKey("warheadFuel.".concat(f.toString())), df.format(data.getFloat(f.toString())), BobMathUtil.toPercentage(data.getFloat(f.toString()), data.getFloat(NBT_MASS)))); + tooltip.add(String.format(Locale.US, "%s: %skg (%s)", I18nUtil.resolveKey("warheadFuel.".concat(f.toString())), df.format(data.getFloat(f.toString())), BobMathUtil.toPercentage(data.getFloat(f.toString()), data.getFloat(NBT_MASS)))); } public default void addTooltip(ItemStack stack, List tooltip) diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java index 354da3175..fe814219e 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java @@ -3,6 +3,7 @@ package com.hbm.inventory.fluid.trait; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -100,7 +101,7 @@ public class FT_Toxin extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (requires hazmat suit)" : "") + ": " + EnumChatFormatting.YELLOW + String.format("%,.1f", amount * 20 / delay) + " DPS"); + info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (requires hazmat suit)" : "") + ": " + EnumChatFormatting.YELLOW + String.format(Locale.US, "%,.1f", amount * 20 / delay) + " DPS"); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java b/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java index fe85c7fe6..dc8f89785 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java +++ b/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCombustionEngine; @@ -59,7 +61,7 @@ public class GUICombustionEngine extends GuiInfoContainer { power = setting * 0.2 * trait.getCombustionEnergy() / 1_000D * piston.eff[trait.getGrade().ordinal()]; } String c = EnumChatFormatting.YELLOW + ""; - drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 50, 35, 14, x, y, c + String.format("%,d", (int)(power)) + " HE/t", c + String.format("%,d", (int)(power * 20)) + " HE/s"); + drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 50, 35, 14, x, y, c + String.format(Locale.US, "%,d", (int)(power)) + " HE/t", c + String.format(Locale.US, "%,d", (int)(power * 20)) + " HE/s"); } drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 13, 35, 15, x, y, "Ignition"); diff --git a/src/main/java/com/hbm/inventory/gui/GUICrucible.java b/src/main/java/com/hbm/inventory/gui/GUICrucible.java index f235275b5..a41ef4288 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICrucible.java +++ b/src/main/java/com/hbm/inventory/gui/GUICrucible.java @@ -3,6 +3,7 @@ package com.hbm.inventory.gui; import java.awt.Color; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -42,8 +43,8 @@ public class GUICrucible extends GuiInfoContainer { drawStackInfo(crucible.wasteStack, x, y, 16, 17); drawStackInfo(crucible.recipeStack, x, y, 61, 17); - this.drawCustomInfoStat(x, y, guiLeft + 125, guiTop + 81, 34, 7, x, y, new String[] { String.format("%,d", crucible.progress) + " / " + String.format("%,d", crucible.processTime) + "TU" }); - this.drawCustomInfoStat(x, y, guiLeft + 125, guiTop + 90, 34, 7, x, y, new String[] { String.format("%,d", crucible.heat) + " / " + String.format("%,d", crucible.maxHeat) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 125, guiTop + 81, 34, 7, x, y, new String[] { String.format(Locale.US, "%,d", crucible.progress) + " / " + String.format(Locale.US, "%,d", crucible.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 125, guiTop + 90, 34, 7, x, y, new String[] { String.format(Locale.US, "%,d", crucible.heat) + " / " + String.format(Locale.US, "%,d", crucible.maxHeat) + "TU" }); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIFirebox.java b/src/main/java/com/hbm/inventory/gui/GUIFirebox.java index 6091d74d2..35fe1207e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFirebox.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFirebox.java @@ -1,6 +1,7 @@ package com.hbm.inventory.gui; import java.util.List; +import java.util.Locale; import org.lwjgl.opengl.GL11; @@ -48,7 +49,7 @@ public class GUIFirebox extends GuiInfoContainer { } } - this.drawCustomInfoStat(x, y, guiLeft + 80, guiTop + 27, 71, 7, x, y, new String[] { String.format("%,d", firebox.heatEnergy) + " / " + String.format("%,d", firebox.getMaxHeat()) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 80, guiTop + 27, 71, 7, x, y, new String[] { String.format(Locale.US, "%,d", firebox.heatEnergy) + " / " + String.format(Locale.US, "%,d", firebox.getMaxHeat()) + "TU" }); this.drawCustomInfoStat(x, y, guiLeft + 80, guiTop + 36, 71, 7, x, y, new String[] { firebox.burnHeat + "TU/t", (firebox.burnTime / 20) + "s" }); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIFurnaceCombo.java b/src/main/java/com/hbm/inventory/gui/GUIFurnaceCombo.java index 118c83f60..6fa6362ea 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFurnaceCombo.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFurnaceCombo.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFurnaceCombo; @@ -30,8 +32,8 @@ public class GUIFurnaceCombo extends GuiInfoContainer { furnace.tank.renderTankInfo(this, x, y, guiLeft + 118, guiTop + 18, 16, 52); - this.drawCustomInfoStat(x, y, guiLeft + 44, guiTop + 36, 39, 7, x, y, new String[] { String.format("%,d", furnace.progress) + " / " + String.format("%,d", furnace.processTime) + "TU" }); - this.drawCustomInfoStat(x, y, guiLeft + 44, guiTop + 45, 39, 7, x, y, new String[] { String.format("%,d", furnace.heat) + " / " + String.format("%,d", furnace.maxHeat) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 44, guiTop + 36, 39, 7, x, y, new String[] { String.format(Locale.US, "%,d", furnace.progress) + " / " + String.format(Locale.US, "%,d", furnace.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 44, guiTop + 45, 39, 7, x, y, new String[] { String.format(Locale.US, "%,d", furnace.heat) + " / " + String.format(Locale.US, "%,d", furnace.maxHeat) + "TU" }); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIFurnaceSteel.java b/src/main/java/com/hbm/inventory/gui/GUIFurnaceSteel.java index a7dcb6eb8..dfdddf87e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFurnaceSteel.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFurnaceSteel.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFurnaceSteel; @@ -29,11 +31,11 @@ public class GUIFurnaceSteel extends GuiInfoContainer { super.drawScreen(x, y, interp); for(int i = 0; i < 3; i++) { - this.drawCustomInfoStat(x, y, guiLeft + 53, guiTop + 17 + 18 * i, 70, 7, x, y, new String[] { String.format("%,d", furnace.progress[i]) + " / " + String.format("%,d", furnace.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 53, guiTop + 17 + 18 * i, 70, 7, x, y, new String[] { String.format(Locale.US, "%,d", furnace.progress[i]) + " / " + String.format(Locale.US, "%,d", furnace.processTime) + "TU" }); this.drawCustomInfoStat(x, y, guiLeft + 53, guiTop + 26 + 18 * i, 70, 7, x, y, new String[] { "Bonus: " + furnace.bonus[i] + "%" }); } - this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 18, 9, 50, x, y, new String[] { String.format("%,d", furnace.heat) + " / " + String.format("%,d", furnace.maxHeat) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 18, 9, 50, x, y, new String[] { String.format(Locale.US, "%,d", furnace.heat) + " / " + String.format(Locale.US, "%,d", furnace.maxHeat) + "TU" }); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIHadron.java b/src/main/java/com/hbm/inventory/gui/GUIHadron.java index f932ba665..959d93d7c 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHadron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHadron.java @@ -54,7 +54,7 @@ public class GUIHadron extends GuiInfoContainer { stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hadron.stats")); stats.add((hadron.stat_success ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + I18n.format("hadron." + this.hadron.stat_state.name().toLowerCase(Locale.US))); if(this.hadron.state.showCoord) stats.add(EnumChatFormatting.RED + I18nUtil.resolveKey("hadron.stats_coord", hadron.stat_x, hadron.stat_y, hadron.stat_z)); - stats.add(EnumChatFormatting.GRAY + I18nUtil.resolveKey("hadron.stats_momentum", String.format("%,d", hadron.stat_charge))); + stats.add(EnumChatFormatting.GRAY + I18nUtil.resolveKey("hadron.stats_momentum", String.format(Locale.US, "%,d", hadron.stat_charge))); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 41, guiTop + 92, 25, 11, mouseX, mouseY, stats.toArray(new String[0])); this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 4, guiTop + 36, 16, 16, guiLeft + 4, guiTop + 36 + 16, new String[] {"Initial particle momentum: 750"}); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java index b9b2d5d1f..e21a06d8b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineCoker; @@ -31,8 +33,8 @@ public class GUIMachineCoker extends GuiInfoContainer { refinery.tanks[0].renderTankInfo(this, x, y, guiLeft + 35, guiTop + 18, 16, 52); refinery.tanks[1].renderTankInfo(this, x, y, guiLeft + 125, guiTop + 18, 16, 52); - this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 45, 54, 7, x, y, new String[] { String.format("%,d", refinery.progress) + " / " + String.format("%,d", refinery.processTime) + "TU" }); - this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 54, 54, 7, x, y, new String[] { String.format("%,d", refinery.heat) + " / " + String.format("%,d", refinery.maxHeat) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 45, 54, 7, x, y, new String[] { String.format(Locale.US, "%,d", refinery.progress) + " / " + String.format(Locale.US, "%,d", refinery.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 54, 54, 7, x, y, new String[] { String.format(Locale.US, "%,d", refinery.heat) + " / " + String.format(Locale.US, "%,d", refinery.maxHeat) + "TU" }); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java b/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java index 8ada24c3c..dfa413f97 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -35,7 +37,7 @@ public class GUIMassStorage extends GuiInfoContainer { String percent = (((int) (storage.getStockpile() * 1000D / (double) storage.getCapacity())) / 10D) + "%"; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 96, guiTop + 16, 18, 90, mouseX, mouseY, new String[] - { String.format("%,d", storage.getStockpile()) + " / " + String.format("%,d", storage.getCapacity()), percent }); + { String.format(Locale.US, "%,d", storage.getStockpile()) + " / " + String.format(Locale.US, "%,d", storage.getCapacity()), percent }); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 62, guiTop + 72, 14, 14, mouseX, mouseY, new String[] { "Click: Provide one", "Shift-click: Provide stack" }); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 80, guiTop + 72, 14, 14, mouseX, mouseY, new String[] { "Toggle output" }); diff --git a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java index 35112f2b6..8d040b03f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerOilburner; @@ -33,10 +35,10 @@ public class GUIOilburner extends GuiInfoContainer { public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); - this.drawCustomInfoStat(x, y, guiLeft + 116, guiTop + 17, 16, 52, x, y, new String[] { String.format("%,d", Math.min(diFurnace.heatEnergy, diFurnace.maxHeatEnergy)) + " / " + String.format("%,d", diFurnace.maxHeatEnergy) + " TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 116, guiTop + 17, 16, 52, x, y, new String[] { String.format(Locale.US, "%,d", Math.min(diFurnace.heatEnergy, diFurnace.maxHeatEnergy)) + " / " + String.format(Locale.US, "%,d", diFurnace.maxHeatEnergy) + " TU" }); if(diFurnace.tank.getTankType().hasTrait(FT_Flammable.class)) { - this.drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 34, 18, 18, x, y, new String[] { diFurnace.setting + " mB/t", String.format("%,d", (int)(diFurnace.tank.getTankType().getTrait(FT_Flammable.class).getHeatEnergy() / 1000) * diFurnace.setting) + " TU/t" }); + this.drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 34, 18, 18, x, y, new String[] { diFurnace.setting + " mB/t", String.format(Locale.US, "%,d", (int)(diFurnace.tank.getTankType().getTrait(FT_Flammable.class).getHeatEnergy() / 1000) * diFurnace.setting) + " TU/t" }); } diFurnace.tank.renderTankInfo(this, x, y, guiLeft + 44, guiTop + 17, 16, 52); diff --git a/src/main/java/com/hbm/inventory/gui/GUIPWR.java b/src/main/java/com/hbm/inventory/gui/GUIPWR.java index d8549a9e4..338f4be99 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPWR.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPWR.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.apache.commons.lang3.math.NumberUtils; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -59,8 +61,8 @@ public class GUIPWR extends GuiInfoContainer { public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); - this.drawCustomInfoStat(x, y, guiLeft + 115, guiTop + 31, 18, 18, x, y, new String[] { "Core: " + String.format("%,d", controller.coreHeat) + " / " + String.format("%,d", controller.coreHeatCapacity) + " TU" }); - this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 31, 18, 18, x, y, new String[] { "Hull: " + String.format("%,d", controller.hullHeat) + " / " + String.format("%,d", controller.hullHeatCapacity) + " TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 115, guiTop + 31, 18, 18, x, y, new String[] { "Core: " + String.format(Locale.US, "%,d", controller.coreHeat) + " / " + String.format(Locale.US, "%,d", controller.coreHeatCapacity) + " TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 31, 18, 18, x, y, new String[] { "Hull: " + String.format(Locale.US, "%,d", controller.hullHeat) + " / " + String.format(Locale.US, "%,d", controller.hullHeatCapacity) + " TU" }); this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 31, 36, 18, x, y, new String[] { ((int) (controller.progress * 100 / controller.processTime)) + "%" }); this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - controller.rodLevel) + "%"); @@ -96,7 +98,7 @@ public class GUIPWR extends GuiInfoContainer { this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); double scale = 1.25; - String flux = String.format("%,.1f", controller.flux); + String flux = String.format(Locale.US, "%,.1f", controller.flux); GL11.glScaled(1 / scale, 1 / scale, 1); this.fontRendererObj.drawString(flux, (int) (165 * scale - this.fontRendererObj.getStringWidth(flux)), (int)(64 * scale), 0x00ff00); GL11.glScaled(scale, scale, 1); diff --git a/src/main/java/com/hbm/inventory/gui/GUIWatz.java b/src/main/java/com/hbm/inventory/gui/GUIWatz.java index 5153b1032..c22046d29 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIWatz.java +++ b/src/main/java/com/hbm/inventory/gui/GUIWatz.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.Locale; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerWatz; @@ -35,7 +37,7 @@ public class GUIWatz extends GuiInfoContainer { public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); - this.drawCustomInfoStat(x, y, guiLeft + 13, guiTop + 100, 18, 18, x, y, new String[] { String.format("%,d", watz.heat) + " TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 13, guiTop + 100, 18, 18, x, y, new String[] { String.format(Locale.US, "%,d", watz.heat) + " TU" }); this.drawCustomInfoStat(x, y, guiLeft + 143, guiTop + 71, 16, 16, x, y, new String[] { watz.isLocked ? "Unlock pellet IO configuration" : "Lock pellet IO configuration" }); watz.tanks[0].renderTankInfo(this, x, y, guiLeft + 142, guiTop + 23, 6, 45); @@ -48,7 +50,7 @@ public class GUIWatz extends GuiInfoContainer { this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 93, 4210752); double scale = 1.25; - String flux = String.format("%,.1f", watz.fluxDisplay); + String flux = String.format(Locale.US, "%,.1f", watz.fluxDisplay); GL11.glScaled(1 / scale, 1 / scale, 1); this.fontRendererObj.drawString(flux, (int) (161 * scale - this.fontRendererObj.getStringWidth(flux)), (int)(107 * scale), 0x00ff00); GL11.glScaled(scale, scale, 1); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 576140252..bd693d645 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1254,6 +1254,7 @@ public class ModItems { public static Item power_net_tool; public static Item analysis_tool; public static Item coupling_tool; + public static Item drone_linker; public static Item template_folder; public static Item journal_pip; @@ -4581,6 +4582,7 @@ public class ModItems { power_net_tool = new ItemPowerNetTool().setUnlocalizedName("power_net_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":power_net_tool"); analysis_tool = new ItemAnalysisTool().setUnlocalizedName("analysis_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":analysis_tool"); coupling_tool = new ItemCouplingTool().setUnlocalizedName("coupling_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coupling_tool"); + drone_linker = new ItemDroneLinker().setUnlocalizedName("drone_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":drone_linker"); key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key"); key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red"); @@ -6747,6 +6749,7 @@ public class ModItems { GameRegistry.registerItem(survey_scanner, survey_scanner.getUnlocalizedName()); GameRegistry.registerItem(mirror_tool, mirror_tool.getUnlocalizedName()); GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName()); + GameRegistry.registerItem(drone_linker, drone_linker.getUnlocalizedName()); GameRegistry.registerItem(coltan_tool, coltan_tool.getUnlocalizedName()); GameRegistry.registerItem(power_net_tool, power_net_tool.getUnlocalizedName()); GameRegistry.registerItem(analysis_tool, analysis_tool.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index 68158958f..960a84874 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; @@ -295,10 +296,10 @@ public class ItemRBMKRod extends Item { String reactivity = EnumChatFormatting.YELLOW + "" + ((int)(this.reactivity * enrichment * 1000D) / 1000D) + EnumChatFormatting.WHITE; String enrichmentPer = EnumChatFormatting.GOLD + " (" + ((int)(enrichment * 1000D) / 10D) + "%)"; - return String.format(function, selfRate > 0 ? "(x" + EnumChatFormatting.RED + " + " + selfRate + "" + EnumChatFormatting.WHITE + ")" : "x", reactivity).concat(enrichmentPer); + return String.format(Locale.US, function, selfRate > 0 ? "(x" + EnumChatFormatting.RED + " + " + selfRate + "" + EnumChatFormatting.WHITE + ")" : "x", reactivity).concat(enrichmentPer); } - return String.format(function, selfRate > 0 ? "(x" + EnumChatFormatting.RED + " + " + selfRate + "" + EnumChatFormatting.WHITE + ")" : "x", reactivity); + return String.format(Locale.US, function, selfRate > 0 ? "(x" + EnumChatFormatting.RED + " + " + selfRate + "" + EnumChatFormatting.WHITE + ")" : "x", reactivity); } public static enum EnumDepleteFunc { diff --git a/src/main/java/com/hbm/items/machine/ItemRTGPellet.java b/src/main/java/com/hbm/items/machine/ItemRTGPellet.java index 1cbdb729e..151a27f34 100644 --- a/src/main/java/com/hbm/items/machine/ItemRTGPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemRTGPellet.java @@ -3,6 +3,7 @@ package com.hbm.items.machine; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import javax.annotation.CheckForNull; @@ -156,17 +157,17 @@ public class ItemRTGPellet extends Item { list.add(BobMathUtil.toPercentage(instance.getLifespan(stack), instance.getMaxLifespan())); if (bool) { list.add("EXTENDED INFO:"); - list.add(String.format("%s / %s ticks", instance.getLifespan(stack), instance.getMaxLifespan())); + list.add(String.format(Locale.US, "%s / %s ticks", instance.getLifespan(stack), instance.getMaxLifespan())); final String[] timeLeft = BobMathUtil.ticksToDate(instance.getLifespan(stack)); final String[] maxLife = BobMathUtil.ticksToDate(instance.getMaxLifespan()); - list.add(String.format("Time remaining: %s y, %s d, %s h", (Object[]) timeLeft)); - list.add(String.format("Maximum life: %s y, %s d, %s h", (Object[]) maxLife)); + list.add(String.format(Locale.US, "Time remaining: %s y, %s d, %s h", (Object[]) timeLeft)); + list.add(String.format(Locale.US, "Maximum life: %s y, %s d, %s h", (Object[]) maxLife)); } } } public String getData() { - return String.format("%s (%s HE/t) %s", I18nUtil.resolveKey(getUnlocalizedName().concat(".name")), getHeat(), (getDoesDecay() ? " (decays)" : "")); + return String.format(Locale.US, "%s (%s HE/t) %s", I18nUtil.resolveKey(getUnlocalizedName().concat(".name")), getHeat(), (getDoesDecay() ? " (decays)" : "")); } public static HashMap getRecipeMap() { diff --git a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java index 211a203c6..1e10d8f98 100644 --- a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java +++ b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java @@ -1,6 +1,7 @@ package com.hbm.items.tool; import java.util.List; +import java.util.Locale; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -199,7 +200,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { @SideOnly(Side.CLIENT) private String getFillGauge(ItemStack stack, FluidType type) { - return I18nUtil.resolveKey(type.getUnlocalizedName()) + ": " + String.format("%,d", this.getFill(stack, type)) + " / " + String.format("%,d", this.getMaxFill(type)); + return I18nUtil.resolveKey(type.getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", this.getFill(stack, type)) + " / " + String.format(Locale.US, "%,d", this.getMaxFill(type)); } @Override public boolean providesFluid(FluidType type, ItemStack stack) { return false; } diff --git a/src/main/java/com/hbm/items/tool/ItemDroneLinker.java b/src/main/java/com/hbm/items/tool/ItemDroneLinker.java new file mode 100644 index 000000000..31489ea8d --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemDroneLinker.java @@ -0,0 +1,101 @@ +package com.hbm.items.tool; + +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.network.IDroneLinkable; +import com.hbm.util.ChatBuilder; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class ItemDroneLinker extends Item { + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + + TileEntity tile = world.getTileEntity(x, y, z); + + if(tile instanceof IDroneLinkable) { + + if(!world.isRemote) { + if(!stack.hasTagCompound()) { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setInteger("x", x); + stack.stackTagCompound.setInteger("y", y); + stack.stackTagCompound.setInteger("z", z); + + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Set initial position!").color(EnumChatFormatting.AQUA).flush()); + + } else { + + int tx = stack.stackTagCompound.getInteger("x"); + int ty = stack.stackTagCompound.getInteger("y"); + int tz = stack.stackTagCompound.getInteger("z"); + + TileEntity prev = world.getTileEntity(tx, ty, tz); + + if(prev instanceof IDroneLinkable) { + + BlockPos dest = ((IDroneLinkable) tile).getPoint(); + ((IDroneLinkable) prev).setNextTarget(dest.getX(), dest.getY(), dest.getZ()); + + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Link set!").color(EnumChatFormatting.AQUA).flush()); + } else { + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Previous link lost!").color(EnumChatFormatting.RED).flush()); + } + + stack.stackTagCompound.setInteger("x", x); + stack.stackTagCompound.setInteger("y", y); + stack.stackTagCompound.setInteger("z", z); + } + } + + return true; + } + + return false; + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean inhand) { + + if(world.isRemote && inhand) { + if(stack.hasTagCompound()) { + int x = stack.stackTagCompound.getInteger("x"); + int y = stack.stackTagCompound.getInteger("y"); + int z = stack.stackTagCompound.getInteger("z"); + MainRegistry.proxy.displayTooltip("Prev pos: " + x + " / " + y + " / " + z, MainRegistry.proxy.ID_DRONE); + } + } + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + if(!world.isRemote && stack.hasTagCompound()) { + stack.stackTagCompound = null; + + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Position cleared!").color(EnumChatFormatting.GREEN).flush()); + } + + return stack; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemMirrorTool.java b/src/main/java/com/hbm/items/tool/ItemMirrorTool.java index 935a37937..61db24d6e 100644 --- a/src/main/java/com/hbm/items/tool/ItemMirrorTool.java +++ b/src/main/java/com/hbm/items/tool/ItemMirrorTool.java @@ -24,7 +24,7 @@ import net.minecraft.world.World; public class ItemMirrorTool extends Item { @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { Block b = world.getBlock(x, y, z); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 8272517cf..c451c670f 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -713,6 +713,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); RenderingRegistry.registerEntityRenderingHandler(EntityTNTPrimedBase.class, new RenderTNTPrimedBase()); + RenderingRegistry.registerEntityRenderingHandler(EntityDeliveryDrone.class, new RenderDeliveryDrone()); //mobs RenderingRegistry.registerEntityRenderingHandler(EntityCreeperNuclear.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor.png").setSwellMod(5F)); RenderingRegistry.registerEntityRenderingHandler(EntityCreeperTainted.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_tainted.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor_taint.png")); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index fbf14fab9..a45c039a8 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -636,8 +636,11 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.fluid_tank_empty, 8), new Object[] { "121", "1G1", "121", '1', AL.plate(), '2', IRON.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(ModItems.fluid_tank_lead_empty, 4), new Object[] { "LUL", "LTL", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'T', ModItems.fluid_tank_empty }); addRecipeAuto(new ItemStack(ModItems.fluid_barrel_empty, 2), new Object[] { "121", "1G1", "121", '1', STEEL.plate(), '2', AL.plate(), 'G', KEY_ANYPANE }); - addRecipeAuto(new ItemStack(ModItems.inf_water, 1), new Object[] { "222", "131", "222", '1', Items.water_bucket, '2', AL.plate(), '3', DIAMOND.gem() }); - addRecipeAuto(new ItemStack(ModItems.inf_water_mk2, 1), new Object[] { "BPB", "PTP", "BPB", 'B', ModItems.inf_water, 'P', ModBlocks.fluid_duct_neo, 'T', ModItems.tank_steel }); + + if(!GeneralConfig.enable528) { + addRecipeAuto(new ItemStack(ModItems.inf_water, 1), new Object[] { "222", "131", "222", '1', Items.water_bucket, '2', AL.plate(), '3', DIAMOND.gem() }); + addRecipeAuto(new ItemStack(ModItems.inf_water_mk2, 1), new Object[] { "BPB", "PTP", "BPB", 'B', ModItems.inf_water, 'P', ModBlocks.fluid_duct_neo, 'T', ModItems.tank_steel }); + } //not so Temporary Crappy Recipes addRecipeAuto(new ItemStack(ModItems.piston_selenium, 1), new Object[] { "SSS", "STS", " D ", 'S', STEEL.plate(), 'T', W.ingot(), 'D', ModItems.bolt_dura_steel }); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c6260e18f..8f229cb16 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1090,6 +1090,9 @@ public class ResourceManager { public static final IModelCustom train_cargo_tram_trailer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram_trailer.obj")); public static final IModelCustom tunnel_bore = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/vehicles/tunnel_bore.obj")); + //Drones + public static final IModelCustom delivery_drone = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/drone.obj")); + ////Texture Entities //Blast @@ -1366,6 +1369,9 @@ public class ResourceManager { public static final ResourceLocation train_tram = new ResourceLocation(RefStrings.MODID, "textures/models/trains/tram.png"); public static final ResourceLocation tram_trailer = new ResourceLocation(RefStrings.MODID, "textures/models/trains/tram_trailer.png"); + //Drone + public static final ResourceLocation delivery_drone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone.png"); + //ISBRHs public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/scaffold.obj")); public static final IModelCustom taperecorder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/taperecorder.obj")); diff --git a/src/main/java/com/hbm/main/ServerProxy.java b/src/main/java/com/hbm/main/ServerProxy.java index 7695b401f..e30cbe562 100644 --- a/src/main/java/com/hbm/main/ServerProxy.java +++ b/src/main/java/com/hbm/main/ServerProxy.java @@ -20,13 +20,14 @@ public class ServerProxy { public static final int ID_FILTER = 1; public static final int ID_COMPASS = 2; public static final int ID_CABLE = 3; - public static final int ID_JETPACK = 4; - public static final int ID_HUD = 5; - public static final int ID_DETONATOR = 6; - public static final int ID_FLUID_ID = 7; - public static final int ID_TOOLABILITY = 8; - public static final int ID_GUN_MODE = 9; - public static final int ID_GAS_HAZARD = 10; + public static final int ID_DRONE = 4; + public static final int ID_JETPACK = 5; + public static final int ID_HUD = 6; + public static final int ID_DETONATOR = 7; + public static final int ID_FLUID_ID = 8; + public static final int ID_TOOLABILITY = 9; + public static final int ID_GUN_MODE = 10; + public static final int ID_GAS_HAZARD = 11; public void registerRenderInfo() { } public void registerTileEntitySpecialRenderer() { } diff --git a/src/main/java/com/hbm/render/item/RenderDeliveryDrone.java b/src/main/java/com/hbm/render/item/RenderDeliveryDrone.java new file mode 100644 index 000000000..d84b1de01 --- /dev/null +++ b/src/main/java/com/hbm/render/item/RenderDeliveryDrone.java @@ -0,0 +1,32 @@ +package com.hbm.render.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderDeliveryDrone extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.delivery_drone_tex); + ResourceManager.delivery_drone.renderPart("Drone"); + ResourceManager.delivery_drone.renderPart("Barrel"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return null; + } +} diff --git a/src/main/java/com/hbm/tileentity/IRadioisotopeFuel.java b/src/main/java/com/hbm/tileentity/IRadioisotopeFuel.java index 829bfba2f..5f737b6e8 100644 --- a/src/main/java/com/hbm/tileentity/IRadioisotopeFuel.java +++ b/src/main/java/com/hbm/tileentity/IRadioisotopeFuel.java @@ -1,6 +1,7 @@ package com.hbm.tileentity; import java.util.List; +import java.util.Locale; import javax.annotation.CheckForNull; import javax.annotation.Nonnull; @@ -139,11 +140,11 @@ public interface IRadioisotopeFuel if (showAdv) { tooltip.add("EXTENDED INFO:"); - tooltip.add(String.format("%s / %s ticks", instance.getLifespan(stack), instance.getMaxLifespan())); + tooltip.add(String.format(Locale.US, "%s / %s ticks", instance.getLifespan(stack), instance.getMaxLifespan())); final String[] timeLeft = BobMathUtil.ticksToDate(instance.getLifespan(stack)); final String[] maxLife = BobMathUtil.ticksToDate(instance.getMaxLifespan()); - tooltip.add(String.format("Time remaining: %s y, %s d, %s h", (Object[]) timeLeft)); - tooltip.add(String.format("Maximum life: %s y, %s d, %s h", (Object[]) maxLife)); + tooltip.add(String.format(Locale.US, "Time remaining: %s y, %s d, %s h", (Object[]) timeLeft)); + tooltip.add(String.format(Locale.US, "Maximum life: %s y, %s d, %s h", (Object[]) maxLife)); } } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 3ff167e2e..993af256b 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -391,6 +391,8 @@ public class TileMappings { put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec"); put(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter"); put(TileEntityRadioTelex.class, "tileentity_rtty_telex"); + + put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint"); } private static void put(Class clazz, String... names) { diff --git a/src/main/java/com/hbm/tileentity/network/IDroneLinkable.java b/src/main/java/com/hbm/tileentity/network/IDroneLinkable.java new file mode 100644 index 000000000..eae54d23e --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/IDroneLinkable.java @@ -0,0 +1,9 @@ +package com.hbm.tileentity.network; + +import com.hbm.util.fauxpointtwelve.BlockPos; + +public interface IDroneLinkable { + + public BlockPos getPoint(); + public void setNextTarget(int x, int y, int z); +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java new file mode 100644 index 000000000..073562a08 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java @@ -0,0 +1,90 @@ +package com.hbm.tileentity.network; + +import java.util.List; + +import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketReceiver, IDroneLinkable { + + public int height = 5; + public int nextX = -1; + public int nextY = -1; + public int nextZ = -1; + + public void updateEntity() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + + if(!worldObj.isRemote) { + + if(nextY != -1) { + List drones = worldObj.getEntitiesWithinAABB(EntityDeliveryDrone.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1).offset(dir.offsetX * height, dir.offsetY * height, dir.offsetZ * height)); + for(EntityDeliveryDrone drone : drones) { + if(Vec3.createVectorHelper(drone.motionX, drone.motionY, drone.motionZ).lengthVector() < 0.05) { + drone.setTarget(nextX + 0.5, nextY + 0.5, nextZ + 0.5); + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("height", height); + data.setIntArray("pos", new int[] {nextX, nextY, nextZ}); + INBTPacketReceiver.networkPack(this, data, 15); + } else { + + if(nextY != -1 && worldObj.getTotalWorldTime() % 2 == 0) { + double x = xCoord + height * dir.offsetX + 0.5; + double y = yCoord + height * dir.offsetY + 0.5; + double z = zCoord + height * dir.offsetZ + 0.5; + + worldObj.spawnParticle("reddust", x, y, z, 0, 0, 0); + + /*Vec3 vec = Vec3.createVectorHelper(nextX + 0.5 - x, nextY + 0.5 - y, nextZ + 0.5 - z); + double speed = Math.min(vec.lengthVector(), 0.5); + double mX = vec.xCoord * speed; + double mY = vec.yCoord * speed; + double mZ = vec.zCoord * speed; + vec = vec.normalize(); + + worldObj.spawnParticle("crit", x, y, z, mX, mY, mZ);*/ + } + } + } + + @Override + public BlockPos getPoint() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + return new BlockPos(xCoord, yCoord, zCoord).offset(dir, height); + } + + @Override + public void setNextTarget(int x, int y, int z) { + this.nextX = x; + this.nextY = y; + this.nextZ = z; + this.markDirty(); + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.height = nbt.getInteger("height"); + int[] pos = nbt.getIntArray("pos"); + this.nextX = pos[0]; + this.nextY = pos[1]; + this.nextZ = pos[2]; + } + + public void addHeight(int h) { + height += h; + height = MathHelper.clamp_int(height, 1, 15); + } +} diff --git a/src/main/java/com/hbm/util/TimeAnalyzer.java b/src/main/java/com/hbm/util/TimeAnalyzer.java index 6cb4f53ec..ec856e301 100644 --- a/src/main/java/com/hbm/util/TimeAnalyzer.java +++ b/src/main/java/com/hbm/util/TimeAnalyzer.java @@ -3,6 +3,7 @@ package com.hbm.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map.Entry; import com.hbm.util.Tuple.Pair; @@ -44,11 +45,11 @@ public class TimeAnalyzer { for(Entry entry : milliTime.entrySet()) { total += entry.getValue(); - String time = String.format("%,d", entry.getValue()); + String time = String.format(Locale.US, "%,d", entry.getValue()); System.out.println(entry.getKey() + ": " + time + "ns"); } - System.out.println("Total time passed: " + String.format("%,d", total) + "ns (" + (total / 1_000_000_000) + "s)"); + System.out.println("Total time passed: " + String.format(Locale.US, "%,d", total) + "ns (" + (total / 1_000_000_000) + "s)"); currentSection = ""; sectionStartTime = 0; diff --git a/src/main/java/com/hbm/util/function/Function.java b/src/main/java/com/hbm/util/function/Function.java index 4e8cc26b9..9dd32272c 100644 --- a/src/main/java/com/hbm/util/function/Function.java +++ b/src/main/java/com/hbm/util/function/Function.java @@ -1,5 +1,7 @@ package com.hbm.util.function; +import java.util.Locale; + import com.hbm.util.BobMathUtil; import net.minecraft.util.EnumChatFormatting; @@ -28,8 +30,8 @@ public abstract class Function { public String getXName(boolean brackets) { String x = "x"; boolean mod = false; - if(div != 1D) x += " / " + String.format("%,.1f", div); - if(off != 0D) x += " + " + String.format("%,.1f", off); + if(div != 1D) x += " / " + String.format(Locale.US, "%,.1f", div); + if(off != 0D) x += " + " + String.format(Locale.US, "%,.1f", off); if(mod && brackets) x = "(" + x + ")"; return x; } @@ -47,21 +49,21 @@ public abstract class Function { public static class FunctionLogarithmic extends FunctionSingleArg { public FunctionLogarithmic(double level) { super(level); this.withOff(1D); } @Override public double effonix(double x) { return Math.log10(getX(x)) * level; } - @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format("%,.1f", this.level); } + @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format(Locale.US, "%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; } } public static class FunctionPassive extends FunctionSingleArg { public FunctionPassive(double level) { super(level); } @Override public double effonix(double x) { return this.level; } - @Override public String getLabelForFuel() { return "" + String.format("%,.1f", this.level); } + @Override public String getLabelForFuel() { return "" + String.format(Locale.US, "%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; } } public static class FunctionSqrt extends FunctionSingleArg { public FunctionSqrt(double level) { super(level); } @Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; } - @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format("%,.3f", this.level); } //not entirely correct but good enough + @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format(Locale.US, "%,.3f", this.level); } //not entirely correct but good enough @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; } } @@ -75,7 +77,7 @@ public abstract class Function { public static class FunctionLinear extends FunctionSingleArg { public FunctionLinear(double level) { super(level); } @Override public double effonix(double x) { return getX(x) * this.level; } - @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format("%,.1f", this.level); } + @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format(Locale.US, "%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; } } @@ -83,7 +85,7 @@ public abstract class Function { public FunctionQuadratic(double level) { super(level, 0D); } public FunctionQuadratic(double level, double vOff) { super(level, vOff); } @Override public double effonix(double x) { return getX(x) * getX(x) * this.level + this.vOff; } - @Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format("%,.1f", this.level) + (vOff != 0 ? (" + " + String.format("%,.1f", vOff)) : ""); } + @Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format(Locale.US, "%,.1f", this.level) + (vOff != 0 ? (" + " + String.format(Locale.US, "%,.1f", vOff)) : ""); } @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"; } } } diff --git a/src/main/resources/assets/hbm/models/machines/drone.obj b/src/main/resources/assets/hbm/models/machines/drone.obj new file mode 100644 index 000000000..93a950fbf --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/drone.obj @@ -0,0 +1,1707 @@ +# Blender v2.79 (sub 0) OBJ File: 'drone.blend' +# www.blender.org +o Crate +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +vt 0.242424 0.210526 +vt 0.000000 0.421053 +vt 0.000000 0.210526 +vt -0.000000 0.210526 +vt 0.242424 0.421053 +vt -0.000000 0.421053 +vt 0.242424 0.000000 +vt -0.000000 0.000000 +vt 0.242424 0.000000 +vt 0.000000 0.210526 +vt 0.000000 0.000000 +vt 0.242424 0.000000 +vt -0.000000 0.210526 +vt -0.000000 0.000000 +vt 0.242424 0.000000 +vt 0.000000 0.210526 +vt 0.000000 0.000000 +vt 0.242424 0.421053 +vt 0.242424 0.210526 +vt 0.242424 0.210526 +vt 0.242424 0.210526 +vt 0.242424 0.210526 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 4/7/3 6/4/3 2/8/3 +f 1/9/4 7/10/4 3/11/4 +f 3/12/5 8/13/5 4/14/5 +f 2/15/6 5/16/6 1/17/6 +f 3/1/1 4/18/1 2/2/1 +f 6/4/2 8/19/2 7/5/2 +f 4/7/3 8/19/3 6/4/3 +f 1/9/4 5/20/4 7/10/4 +f 3/12/5 7/21/5 8/13/5 +f 2/15/6 6/22/6 5/16/6 +o Barrel +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +vt 0.484848 0.210526 +vt 0.242424 0.421053 +vt 0.242424 0.210526 +vt 0.242424 0.210526 +vt 0.484848 0.421053 +vt 0.242424 0.421053 +vt 0.484848 -0.000000 +vt 0.242424 -0.000000 +vt 0.484848 -0.000000 +vt 0.242424 0.210526 +vt 0.242424 -0.000000 +vt 0.484848 -0.000000 +vt 0.242424 0.210526 +vt 0.242424 -0.000000 +vt 0.484848 -0.000000 +vt 0.242424 0.210526 +vt 0.242424 -0.000000 +vt 0.484848 0.421053 +vt 0.484848 0.210526 +vt 0.484848 0.210526 +vt 0.484848 0.210526 +vt 0.484848 0.210526 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 11/23/7 10/24/7 9/25/7 +f 14/26/8 15/27/8 13/28/8 +f 12/29/9 14/26/9 10/30/9 +f 9/31/10 15/32/10 11/33/10 +f 11/34/11 16/35/11 12/36/11 +f 10/37/12 13/38/12 9/39/12 +f 11/23/7 12/40/7 10/24/7 +f 14/26/8 16/41/8 15/27/8 +f 12/29/9 16/41/9 14/26/9 +f 9/31/10 13/42/10 15/32/10 +f 11/34/11 15/43/11 16/35/11 +f 10/37/12 14/44/12 13/38/12 +o Drone +v -0.088388 0.875000 1.036612 +v 0.000000 0.875000 1.000000 +v 0.088388 0.875000 1.036612 +v 0.125000 0.875000 1.125000 +v 0.088388 0.875000 1.213388 +v 0.000000 0.875000 1.250000 +v -0.125000 0.875000 1.125000 +v -0.088388 0.875000 1.213388 +v -0.031250 2.375000 0.031250 +v 0.031250 2.375000 0.031250 +v -0.031250 2.375000 -0.031250 +v 0.031250 2.375000 -0.031250 +v 0.031250 1.875000 -0.031250 +v -0.031250 1.875000 -0.031250 +v 0.031250 1.875000 0.031250 +v -0.031250 1.875000 0.031250 +v 0.375000 1.875000 -0.375000 +v 0.375000 1.875000 0.375000 +v -0.375000 1.875000 0.375000 +v -0.375000 1.875000 -0.375000 +v -0.500000 1.750000 0.500000 +v 0.500000 1.750000 0.500000 +v -0.500000 1.750000 -0.500000 +v 0.500000 1.750000 -0.500000 +v 0.500000 1.625000 -0.500000 +v -0.500000 1.625000 -0.500000 +v 0.500000 1.625000 0.500000 +v -0.500000 1.625000 0.500000 +v -0.500000 0.625000 0.500000 +v -0.500000 0.375000 0.500000 +v -0.250000 0.625000 0.500000 +v -0.250000 0.375000 0.500000 +v -0.500000 0.625000 0.250000 +v -0.500000 0.375000 0.250000 +v -0.250000 0.625000 0.625000 +v -0.250000 0.375000 0.625000 +v -0.625000 0.625000 0.250000 +v -0.625000 0.375000 0.250000 +v -0.625000 0.625000 0.625000 +v -0.625000 0.375000 0.625000 +v -0.625000 0.625000 0.500000 +v -0.625000 0.625000 0.625000 +v -0.500000 0.625000 0.500000 +v -0.500000 0.625000 0.625000 +v -0.625000 1.375000 0.500000 +v -0.625000 1.375000 0.625000 +v -0.500000 1.375000 0.500000 +v -0.500000 1.375000 0.625000 +v -0.625000 1.375000 0.625000 +v 0.625000 1.375000 0.625000 +v -0.625000 1.375000 -0.625000 +v 0.625000 1.375000 -0.625000 +v -0.625000 1.625000 -0.625000 +v -0.625000 1.625000 0.625000 +v 0.625000 1.625000 0.625000 +v 0.625000 1.625000 -0.625000 +v 0.500000 1.125000 -1.125000 +v -0.500000 1.125000 -1.125000 +v -0.500000 1.375000 -1.125000 +v 0.500000 1.375000 -1.125000 +v -0.500000 1.125000 1.125000 +v 0.500000 1.125000 1.125000 +v 0.500000 1.375000 1.125000 +v -0.500000 1.375000 1.125000 +v 1.125000 1.125000 0.500000 +v 1.125000 1.125000 -0.500000 +v 1.125000 1.375000 -0.500000 +v 1.125000 1.375000 0.500000 +v -1.125000 1.125000 -0.500000 +v -1.125000 1.125000 0.500000 +v -1.125000 1.375000 0.500000 +v -1.125000 1.375000 -0.500000 +v -0.088388 0.750000 1.036612 +v -0.125000 0.750000 1.125000 +v -0.250000 1.250000 1.125000 +v -0.250000 1.625000 1.125000 +v -0.176777 1.250000 0.948223 +v -0.176777 1.625000 0.948223 +v 0.000000 1.250000 0.875000 +v 0.000000 1.625000 0.875000 +v 0.176777 1.250000 0.948223 +v 0.176777 1.625000 0.948223 +v 0.250000 1.250000 1.125000 +v 0.250000 1.625000 1.125000 +v 0.176777 1.250000 1.301776 +v 0.176777 1.625000 1.301776 +v 0.000000 1.250000 1.375000 +v 0.000000 1.625000 1.375000 +v -0.176777 1.250000 1.301776 +v -0.176777 1.625000 1.301776 +v 0.000000 0.750000 1.000000 +v 0.088388 0.750000 1.036612 +v 0.125000 0.750000 1.125000 +v 0.088388 0.750000 1.213388 +v 0.000000 0.750000 1.250000 +v -0.088388 0.750000 1.213388 +v -0.132583 1.750000 0.992417 +v -0.187500 1.750000 1.125000 +v 0.000000 1.750000 0.937500 +v 0.132582 1.750000 0.992418 +v 0.187500 1.750000 1.125000 +v 0.132583 1.750000 1.257582 +v 0.000000 1.750000 1.312500 +v -0.132583 1.750000 1.257582 +v -0.132583 1.625000 0.992417 +v -0.187500 1.625000 1.125000 +v 0.000000 1.625000 0.937500 +v 0.132582 1.625000 0.992418 +v 0.187500 1.625000 1.125000 +v 0.132583 1.625000 1.257582 +v 0.000000 1.625000 1.312500 +v -0.132583 1.625000 1.257582 +v -0.250000 1.125000 1.375000 +v 0.250000 1.125000 1.375000 +v 0.250000 1.375000 1.375000 +v -0.250000 1.375000 1.375000 +v -0.500000 1.125000 1.125000 +v 0.500000 1.125000 1.125000 +v 0.500000 1.375000 1.125000 +v -0.500000 1.375000 1.125000 +v 0.088388 0.875000 -1.036612 +v -0.000000 0.875000 -1.000000 +v -0.088388 0.875000 -1.036612 +v -0.125000 0.875000 -1.125000 +v -0.088388 0.875000 -1.213388 +v -0.000000 0.875000 -1.250000 +v 0.125000 0.875000 -1.125000 +v 0.088388 0.875000 -1.213388 +v 0.088388 0.750000 -1.036612 +v 0.125000 0.750000 -1.125000 +v 0.250000 1.250000 -1.125000 +v 0.250000 1.625000 -1.125000 +v 0.176777 1.250000 -0.948223 +v 0.176777 1.625000 -0.948223 +v -0.000000 1.250000 -0.875000 +v -0.000000 1.625000 -0.875000 +v -0.176777 1.250000 -0.948223 +v -0.176777 1.625000 -0.948223 +v -0.250000 1.250000 -1.125000 +v -0.250000 1.625000 -1.125000 +v -0.176777 1.250000 -1.301776 +v -0.176777 1.625000 -1.301776 +v -0.000000 1.250000 -1.375000 +v -0.000000 1.625000 -1.375000 +v 0.176777 1.250000 -1.301776 +v 0.176777 1.625000 -1.301776 +v -0.000000 0.750000 -1.000000 +v -0.088388 0.750000 -1.036612 +v -0.125000 0.750000 -1.125000 +v -0.088388 0.750000 -1.213388 +v -0.000000 0.750000 -1.250000 +v 0.088388 0.750000 -1.213388 +v 0.132583 1.750000 -0.992417 +v 0.187500 1.750000 -1.125000 +v -0.000000 1.750000 -0.937500 +v -0.132583 1.750000 -0.992418 +v -0.187500 1.750000 -1.125000 +v -0.132583 1.750000 -1.257582 +v -0.000000 1.750000 -1.312500 +v 0.132583 1.750000 -1.257582 +v 0.132583 1.625000 -0.992417 +v 0.187500 1.625000 -1.125000 +v -0.000000 1.625000 -0.937500 +v -0.132583 1.625000 -0.992418 +v -0.187500 1.625000 -1.125000 +v -0.132583 1.625000 -1.257582 +v -0.000000 1.625000 -1.312500 +v 0.132583 1.625000 -1.257582 +v 0.250000 1.125000 -1.375000 +v -0.250000 1.125000 -1.375000 +v -0.250000 1.375000 -1.375000 +v 0.250000 1.375000 -1.375000 +v 0.500000 1.125000 -1.125000 +v -0.500000 1.125000 -1.125000 +v -0.500000 1.375000 -1.125000 +v 0.500000 1.375000 -1.125000 +v 1.036612 0.875000 0.088388 +v 1.000000 0.875000 0.000000 +v 1.036612 0.875000 -0.088388 +v 1.125000 0.875000 -0.125000 +v 1.213388 0.875000 -0.088388 +v 1.250000 0.875000 0.000000 +v 1.125000 0.875000 0.125000 +v 1.213388 0.875000 0.088388 +v 1.036612 0.750000 0.088388 +v 1.125000 0.750000 0.125000 +v 1.125000 1.250000 0.250000 +v 1.125000 1.625000 0.250000 +v 0.948223 1.250000 0.176777 +v 0.948223 1.625000 0.176777 +v 0.875000 1.250000 -0.000000 +v 0.875000 1.625000 -0.000000 +v 0.948223 1.250000 -0.176777 +v 0.948223 1.625000 -0.176777 +v 1.125000 1.250000 -0.250000 +v 1.125000 1.625000 -0.250000 +v 1.301776 1.250000 -0.176777 +v 1.301776 1.625000 -0.176777 +v 1.375000 1.250000 -0.000000 +v 1.375000 1.625000 -0.000000 +v 1.301776 1.250000 0.176777 +v 1.301776 1.625000 0.176777 +v 1.000000 0.750000 0.000000 +v 1.036612 0.750000 -0.088388 +v 1.125000 0.750000 -0.125000 +v 1.213388 0.750000 -0.088388 +v 1.250000 0.750000 0.000000 +v 1.213388 0.750000 0.088388 +v 0.992417 1.750000 0.132583 +v 1.125000 1.750000 0.187500 +v 0.937500 1.750000 -0.000000 +v 0.992418 1.750000 -0.132582 +v 1.125000 1.750000 -0.187500 +v 1.257582 1.750000 -0.132583 +v 1.312500 1.750000 0.000000 +v 1.257582 1.750000 0.132583 +v 0.992417 1.625000 0.132583 +v 1.125000 1.625000 0.187500 +v 0.937500 1.625000 -0.000000 +v 0.992418 1.625000 -0.132582 +v 1.125000 1.625000 -0.187500 +v 1.257582 1.625000 -0.132583 +v 1.312500 1.625000 0.000000 +v 1.257582 1.625000 0.132583 +v 1.375000 1.125000 0.250000 +v 1.375000 1.125000 -0.250000 +v 1.375000 1.375000 -0.250000 +v 1.375000 1.375000 0.250000 +v 1.125000 1.125000 0.500000 +v 1.125000 1.125000 -0.500000 +v 1.125000 1.375000 -0.500000 +v 1.125000 1.375000 0.500000 +v -1.036612 0.875000 -0.088388 +v -1.000000 0.875000 0.000000 +v -1.036612 0.875000 0.088388 +v -1.125000 0.875000 0.125000 +v -1.213388 0.875000 0.088388 +v -1.250000 0.875000 0.000000 +v -1.125000 0.875000 -0.125000 +v -1.213388 0.875000 -0.088388 +v -1.036612 0.750000 -0.088388 +v -1.125000 0.750000 -0.125000 +v -1.125000 1.250000 -0.250000 +v -1.125000 1.625000 -0.250000 +v -0.948223 1.250000 -0.176777 +v -0.948223 1.625000 -0.176777 +v -0.875000 1.250000 0.000000 +v -0.875000 1.625000 0.000000 +v -0.948223 1.250000 0.176777 +v -0.948223 1.625000 0.176777 +v -1.125000 1.250000 0.250000 +v -1.125000 1.625000 0.250000 +v -1.301776 1.250000 0.176777 +v -1.301776 1.625000 0.176777 +v -1.375000 1.250000 0.000000 +v -1.375000 1.625000 0.000000 +v -1.301776 1.250000 -0.176776 +v -1.301776 1.625000 -0.176776 +v -1.000000 0.750000 0.000000 +v -1.036612 0.750000 0.088388 +v -1.125000 0.750000 0.125000 +v -1.213388 0.750000 0.088388 +v -1.250000 0.750000 0.000000 +v -1.213388 0.750000 -0.088388 +v -0.992417 1.750000 -0.132583 +v -1.125000 1.750000 -0.187500 +v -0.937500 1.750000 0.000000 +v -0.992418 1.750000 0.132583 +v -1.125000 1.750000 0.187500 +v -1.257582 1.750000 0.132583 +v -1.312500 1.750000 0.000000 +v -1.257582 1.750000 -0.132582 +v -0.992417 1.625000 -0.132583 +v -1.125000 1.625000 -0.187500 +v -0.937500 1.625000 0.000000 +v -0.992418 1.625000 0.132583 +v -1.125000 1.625000 0.187500 +v -1.257582 1.625000 0.132583 +v -1.312500 1.625000 0.000000 +v -1.257582 1.625000 -0.132582 +v -1.375000 1.125000 -0.250000 +v -1.375000 1.125000 0.250000 +v -1.375000 1.375000 0.250000 +v -1.375000 1.375000 -0.250000 +v -1.125000 1.125000 -0.500000 +v -1.125000 1.125000 0.500000 +v -1.125000 1.375000 0.500000 +v -1.125000 1.375000 -0.500000 +v 0.500000 0.625000 -0.500000 +v 0.500000 0.375000 -0.500000 +v 0.250000 0.625000 -0.500000 +v 0.250000 0.375000 -0.500000 +v 0.500000 0.625000 -0.250000 +v 0.500000 0.375000 -0.250000 +v 0.250000 0.625000 -0.625000 +v 0.250000 0.375000 -0.625000 +v 0.625000 0.625000 -0.250000 +v 0.625000 0.375000 -0.250000 +v 0.625000 0.625000 -0.625000 +v 0.625000 0.375000 -0.625000 +v 0.625000 0.625000 -0.500000 +v 0.625000 0.625000 -0.625000 +v 0.500000 0.625000 -0.500000 +v 0.500000 0.625000 -0.625000 +v 0.625000 1.375000 -0.500000 +v 0.625000 1.375000 -0.625000 +v 0.500000 1.375000 -0.500000 +v 0.500000 1.375000 -0.625000 +v 0.500000 0.625000 0.500000 +v 0.500000 0.375000 0.500000 +v 0.500000 0.625000 0.250000 +v 0.500000 0.375000 0.250000 +v 0.250000 0.625000 0.500000 +v 0.250000 0.375000 0.500000 +v 0.625000 0.625000 0.250000 +v 0.625000 0.375000 0.250000 +v 0.250000 0.625000 0.625000 +v 0.250000 0.375000 0.625000 +v 0.625000 0.625000 0.625000 +v 0.625000 0.375000 0.625000 +v 0.500000 0.625000 0.625000 +v 0.625000 0.625000 0.625000 +v 0.500000 0.625000 0.500000 +v 0.625000 0.625000 0.500000 +v 0.500000 1.375000 0.625000 +v 0.625000 1.375000 0.625000 +v 0.500000 1.375000 0.500000 +v 0.625000 1.375000 0.500000 +v -0.500000 0.625000 -0.500000 +v -0.500000 0.375000 -0.500000 +v -0.500000 0.625000 -0.250000 +v -0.500000 0.375000 -0.250000 +v -0.250000 0.625000 -0.500000 +v -0.250000 0.375000 -0.500000 +v -0.625000 0.625000 -0.250000 +v -0.625000 0.375000 -0.250000 +v -0.250000 0.625000 -0.625000 +v -0.250000 0.375000 -0.625000 +v -0.625000 0.625000 -0.625000 +v -0.625000 0.375000 -0.625000 +v -0.500000 0.625000 -0.625000 +v -0.625000 0.625000 -0.625000 +v -0.500000 0.625000 -0.500000 +v -0.625000 0.625000 -0.500000 +v -0.500000 1.375000 -0.625000 +v -0.625000 1.375000 -0.625000 +v -0.500000 1.375000 -0.500000 +v -0.625000 1.375000 -0.500000 +vt 0.787879 0.184205 +vt 0.766456 0.176499 +vt 0.809302 0.139291 +vt 0.727273 0.934211 +vt 0.742424 0.921053 +vt 0.742424 0.934211 +vt 0.757576 0.921053 +vt 0.742424 0.815789 +vt 0.757576 0.815789 +vt 0.727273 0.921053 +vt 0.712121 0.815789 +vt 0.727273 0.815789 +vt 0.772727 0.921053 +vt 0.772727 0.815789 +vt 0.954545 0.552632 +vt 0.742424 0.592105 +vt 0.712121 0.552632 +vt 0.696970 0.565789 +vt 0.742424 0.750000 +vt 0.696970 0.776316 +vt 0.969697 0.776316 +vt 0.924242 0.592105 +vt 0.969697 0.565789 +vt 0.924242 0.750000 +vt 1.000000 0.776316 +vt 1.000000 0.565789 +vt 0.666667 0.565789 +vt 0.666667 0.776316 +vt 0.954545 0.526316 +vt 0.712121 0.526316 +vt 0.712121 0.815789 +vt 0.954545 0.789474 +vt 0.954545 0.815789 +vt 0.712121 0.789474 +vt 0.787879 0.131579 +vt 0.848485 0.078947 +vt 0.848485 0.131579 +vt 0.545455 0.078947 +vt 0.484848 0.131579 +vt 0.484848 0.078947 +vt 0.757576 0.131579 +vt 0.787879 0.078947 +vt 0.575758 0.078947 +vt 0.545455 0.131579 +vt 0.666667 0.078947 +vt 0.575758 0.131579 +vt 0.757576 0.078947 +vt 0.636364 0.157895 +vt 0.666667 0.131579 +vt 0.666667 0.210526 +vt 0.636364 0.210526 +vt 0.636364 0.052632 +vt 0.575758 0.052632 +vt 0.666667 -0.000000 +vt 0.606061 0.315789 +vt 0.575758 0.157895 +vt 0.606061 0.157895 +vt 0.545455 0.315789 +vt 0.515152 0.157895 +vt 0.545455 0.157895 +vt 0.575758 0.315789 +vt 0.515152 0.315789 +vt 0.484848 0.157895 +vt 0.484848 0.578947 +vt 0.181818 0.842105 +vt 0.181818 0.578947 +vt 0.181818 0.578947 +vt 0.484848 0.842105 +vt 0.181818 0.842105 +vt 0.666667 0.815789 +vt 0.606061 0.605263 +vt 0.666667 0.605263 +vt 0.606061 0.815789 +vt 0.484848 0.842105 +vt 0.606061 0.815789 +vt 0.666667 0.921053 +vt 0.606061 0.921053 +vt 0.484848 0.578947 +vt 0.666667 0.500000 +vt 0.606061 0.500000 +vt 0.000000 0.605263 +vt 0.060606 0.815789 +vt 0.000000 0.815789 +vt 0.060606 0.605263 +vt 0.060606 0.605263 +vt 0.000000 0.500000 +vt 0.060606 0.500000 +vt 0.000000 0.921053 +vt 0.060606 0.921053 +vt 0.454545 0.421053 +vt 0.212121 0.473684 +vt 0.212121 0.421053 +vt 0.212121 0.947368 +vt 0.454545 0.473684 +vt 0.575758 0.421053 +vt 0.575758 0.473684 +vt 0.090909 0.421053 +vt 0.090909 0.473684 +vt 0.212121 1.000000 +vt 0.454545 0.947368 +vt 0.454545 1.000000 +vt 0.454545 0.473684 +vt 0.212121 0.947368 +vt 0.090909 1.000000 +vt 0.090909 0.947368 +vt 0.575758 1.000000 +vt 0.575758 0.947368 +vt 0.712121 0.210395 +vt 0.666817 0.171053 +vt 0.712121 0.131710 +vt 0.909091 0.473684 +vt 0.787879 0.526316 +vt 0.787879 0.473684 +vt 0.727273 0.473684 +vt 0.969697 0.526316 +vt 0.909091 0.526316 +vt 0.787879 0.184205 +vt 0.766456 0.176499 +vt 0.809302 0.139291 +vt 0.712121 0.210395 +vt 0.666817 0.171053 +vt 0.712121 0.131710 +vt 0.909091 0.473684 +vt 0.787879 0.526316 +vt 0.787879 0.473684 +vt 0.727273 0.473684 +vt 0.969697 0.526316 +vt 0.909091 0.526316 +vt 0.787879 0.184205 +vt 0.766456 0.176499 +vt 0.809302 0.139291 +vt 0.712121 0.210395 +vt 0.666817 0.171053 +vt 0.712121 0.131710 +vt 0.909091 0.473684 +vt 0.787879 0.526316 +vt 0.787879 0.473684 +vt 0.727273 0.473684 +vt 0.969697 0.526316 +vt 0.909091 0.526316 +vt 0.787879 0.184205 +vt 0.766456 0.176499 +vt 0.809302 0.139291 +vt 0.712121 0.210395 +vt 0.666817 0.171053 +vt 0.712121 0.131710 +vt 0.909091 0.473684 +vt 0.787879 0.526316 +vt 0.787879 0.473684 +vt 0.727273 0.473684 +vt 0.969697 0.526316 +vt 0.909091 0.526316 +vt 0.787879 0.131579 +vt 0.848485 0.078947 +vt 0.848485 0.131579 +vt 0.545455 0.078947 +vt 0.484848 0.131579 +vt 0.484848 0.078947 +vt 0.757576 0.131579 +vt 0.787879 0.078947 +vt 0.575758 0.078947 +vt 0.545455 0.131579 +vt 0.666667 0.078947 +vt 0.575758 0.131579 +vt 0.757576 0.078947 +vt 0.636364 0.157895 +vt 0.666667 0.131579 +vt 0.666667 0.210526 +vt 0.636364 0.210526 +vt 0.636364 0.052632 +vt 0.575758 0.052632 +vt 0.666667 -0.000000 +vt 0.606061 0.315789 +vt 0.575758 0.157895 +vt 0.606061 0.157895 +vt 0.545455 0.315789 +vt 0.515152 0.157895 +vt 0.545455 0.157895 +vt 0.575758 0.315789 +vt 0.515152 0.315789 +vt 0.484848 0.157895 +vt 0.787879 0.131579 +vt 0.848485 0.078947 +vt 0.848485 0.131579 +vt 0.545455 0.078947 +vt 0.484848 0.131579 +vt 0.484848 0.078947 +vt 0.757576 0.131579 +vt 0.787879 0.078947 +vt 0.575758 0.078947 +vt 0.545455 0.131579 +vt 0.666667 0.078947 +vt 0.575758 0.131579 +vt 0.757576 0.078947 +vt 0.636364 0.157895 +vt 0.666667 0.131579 +vt 0.666667 0.210526 +vt 0.636364 0.210526 +vt 0.636364 0.052632 +vt 0.575758 0.052632 +vt 0.666667 -0.000000 +vt 0.606061 0.315789 +vt 0.575758 0.157895 +vt 0.606061 0.157895 +vt 0.545455 0.315789 +vt 0.515152 0.157895 +vt 0.545455 0.157895 +vt 0.575758 0.315789 +vt 0.515152 0.315789 +vt 0.484848 0.157895 +vt 0.787879 0.131579 +vt 0.848485 0.078947 +vt 0.848485 0.131579 +vt 0.545455 0.078947 +vt 0.484848 0.131579 +vt 0.484848 0.078947 +vt 0.757576 0.131579 +vt 0.787879 0.078947 +vt 0.575758 0.078947 +vt 0.545455 0.131579 +vt 0.666667 0.078947 +vt 0.575758 0.131579 +vt 0.757576 0.078947 +vt 0.636364 0.157895 +vt 0.666667 0.131579 +vt 0.666667 0.210526 +vt 0.636364 0.210526 +vt 0.636364 0.052632 +vt 0.575758 0.052632 +vt 0.666667 -0.000000 +vt 0.606061 0.315789 +vt 0.575758 0.157895 +vt 0.606061 0.157895 +vt 0.545455 0.315789 +vt 0.515152 0.157895 +vt 0.545455 0.157895 +vt 0.575758 0.315789 +vt 0.515152 0.315789 +vt 0.484848 0.157895 +vt 0.757582 0.157895 +vt 0.766456 0.139291 +vt 0.787879 0.131585 +vt 0.818175 0.157895 +vt 0.809302 0.176499 +vt 0.712121 0.921053 +vt 0.575758 0.157895 +vt 0.636364 -0.000000 +vt 0.484848 0.315789 +vt 0.606061 0.605263 +vt 0.060606 0.815789 +vt 0.454545 0.947368 +vt 0.212121 0.473684 +vt 0.680087 0.198872 +vt 0.680087 0.143233 +vt 0.744156 0.143233 +vt 0.757425 0.171053 +vt 0.744156 0.198872 +vt 0.727273 0.526316 +vt 0.969697 0.473684 +vt 0.757582 0.157895 +vt 0.766456 0.139291 +vt 0.787879 0.131585 +vt 0.818175 0.157895 +vt 0.809302 0.176499 +vt 0.680087 0.198872 +vt 0.680087 0.143233 +vt 0.744156 0.143233 +vt 0.757425 0.171053 +vt 0.744156 0.198872 +vt 0.727273 0.526316 +vt 0.969697 0.473684 +vt 0.757582 0.157895 +vt 0.766456 0.139291 +vt 0.787879 0.131585 +vt 0.818175 0.157895 +vt 0.809302 0.176499 +vt 0.680087 0.198872 +vt 0.680087 0.143233 +vt 0.744156 0.143233 +vt 0.757425 0.171053 +vt 0.744156 0.198872 +vt 0.727273 0.526316 +vt 0.969697 0.473684 +vt 0.757582 0.157895 +vt 0.766456 0.139291 +vt 0.787879 0.131585 +vt 0.818175 0.157895 +vt 0.809302 0.176499 +vt 0.680087 0.198872 +vt 0.680087 0.143233 +vt 0.744156 0.143233 +vt 0.757425 0.171053 +vt 0.744156 0.198872 +vt 0.727273 0.526316 +vt 0.969697 0.473684 +vt 0.575758 0.157895 +vt 0.636364 -0.000000 +vt 0.484848 0.315789 +vt 0.575758 0.157895 +vt 0.636364 -0.000000 +vt 0.484848 0.315789 +vt 0.575758 0.157895 +vt 0.636364 -0.000000 +vt 0.484848 0.315789 +vt 0.939394 0.236842 +vt 0.969697 0.210526 +vt 0.969697 0.236842 +vt 0.803030 0.236842 +vt 0.833333 0.210526 +vt 0.833333 0.236842 +vt 0.666667 0.236842 +vt 0.696970 0.210526 +vt 0.696970 0.236842 +vt 0.893939 0.236842 +vt 0.924242 0.210526 +vt 0.924242 0.236842 +vt 0.757576 0.236842 +vt 0.787879 0.210526 +vt 0.787879 0.236842 +vt 0.621212 0.236842 +vt 0.651515 0.210526 +vt 0.651515 0.236842 +vt 0.712121 0.236842 +vt 0.742424 0.210526 +vt 0.742424 0.236842 +vt 0.848485 0.236842 +vt 0.878788 0.210526 +vt 0.878788 0.236842 +vt 0.787879 0.421053 +vt 0.833333 0.447368 +vt 0.803030 0.447368 +vt 0.787879 0.342105 +vt 0.833333 0.342105 +vt 0.696970 0.421053 +vt 0.651515 0.342105 +vt 0.696970 0.342105 +vt 0.651515 0.421053 +vt 0.696970 0.447368 +vt 0.666667 0.447368 +vt 0.606061 0.342105 +vt 0.833333 0.421053 +vt 0.878788 0.447368 +vt 0.848485 0.447368 +vt 0.969697 0.421053 +vt 0.924242 0.342105 +vt 0.969697 0.342105 +vt 0.742424 0.421053 +vt 0.712121 0.447368 +vt 0.878788 0.342105 +vt 0.924242 0.421053 +vt 0.893939 0.447368 +vt 0.878788 0.421053 +vt 0.742424 0.447368 +vt 0.712121 0.473684 +vt 0.742424 0.342105 +vt 0.787879 0.447368 +vt 0.757576 0.447368 +vt 0.606061 0.421053 +vt 0.651515 0.447368 +vt 0.621212 0.447368 +vt 0.939394 0.447368 +vt 0.803030 0.473684 +vt 0.924242 0.447368 +vt 0.893939 0.473684 +vt 0.621212 0.473684 +vt 0.757576 0.473684 +vt 0.848485 0.473684 +vt 0.969697 0.447368 +vt 0.939394 0.473684 +vt 0.666667 0.473684 +vt 0.939394 0.236842 +vt 0.969697 0.210526 +vt 0.969697 0.236842 +vt 0.803030 0.236842 +vt 0.833333 0.210526 +vt 0.833333 0.236842 +vt 0.666667 0.236842 +vt 0.696970 0.210526 +vt 0.696970 0.236842 +vt 0.893939 0.236842 +vt 0.924242 0.210526 +vt 0.924242 0.236842 +vt 0.757576 0.236842 +vt 0.787879 0.210526 +vt 0.787879 0.236842 +vt 0.621212 0.236842 +vt 0.651515 0.210526 +vt 0.651515 0.236842 +vt 0.712121 0.236842 +vt 0.742424 0.210526 +vt 0.742424 0.236842 +vt 0.848485 0.236842 +vt 0.878788 0.210526 +vt 0.878788 0.236842 +vt 0.833333 0.421053 +vt 0.803030 0.447368 +vt 0.787879 0.421053 +vt 0.833333 0.342105 +vt 0.696970 0.421053 +vt 0.651515 0.342105 +vt 0.696970 0.342105 +vt 0.651515 0.421053 +vt 0.696970 0.447368 +vt 0.666667 0.447368 +vt 0.606061 0.342105 +vt 0.878788 0.447368 +vt 0.848485 0.447368 +vt 0.969697 0.421053 +vt 0.924242 0.342105 +vt 0.969697 0.342105 +vt 0.742424 0.421053 +vt 0.712121 0.447368 +vt 0.878788 0.342105 +vt 0.924242 0.421053 +vt 0.893939 0.447368 +vt 0.878788 0.421053 +vt 0.742424 0.447368 +vt 0.712121 0.473684 +vt 0.787879 0.342105 +vt 0.787879 0.447368 +vt 0.757576 0.447368 +vt 0.742424 0.342105 +vt 0.606061 0.421053 +vt 0.651515 0.447368 +vt 0.621212 0.447368 +vt 0.969697 0.447368 +vt 0.939394 0.447368 +vt 0.833333 0.447368 +vt 0.803030 0.473684 +vt 0.924242 0.447368 +vt 0.893939 0.473684 +vt 0.621212 0.473684 +vt 0.757576 0.473684 +vt 0.848485 0.473684 +vt 0.939394 0.473684 +vt 0.666667 0.473684 +vt 0.939394 0.236842 +vt 0.969697 0.210526 +vt 0.969697 0.236842 +vt 0.803030 0.236842 +vt 0.833333 0.210526 +vt 0.833333 0.236842 +vt 0.666667 0.236842 +vt 0.696970 0.210526 +vt 0.696970 0.236842 +vt 0.893939 0.236842 +vt 0.924242 0.210526 +vt 0.924242 0.236842 +vt 0.757576 0.236842 +vt 0.787879 0.210526 +vt 0.787879 0.236842 +vt 0.621212 0.236842 +vt 0.651515 0.210526 +vt 0.651515 0.236842 +vt 0.712121 0.236842 +vt 0.742424 0.210526 +vt 0.742424 0.236842 +vt 0.848485 0.236842 +vt 0.878788 0.210526 +vt 0.878788 0.236842 +vt 0.787879 0.421053 +vt 0.833333 0.447368 +vt 0.803030 0.447368 +vt 0.787879 0.342105 +vt 0.833333 0.342105 +vt 0.696970 0.421053 +vt 0.651515 0.342105 +vt 0.696970 0.342105 +vt 0.651515 0.421053 +vt 0.696970 0.447368 +vt 0.666667 0.447368 +vt 0.606061 0.342105 +vt 0.878788 0.421053 +vt 0.848485 0.447368 +vt 0.833333 0.421053 +vt 0.969697 0.421053 +vt 0.924242 0.342105 +vt 0.969697 0.342105 +vt 0.742424 0.421053 +vt 0.712121 0.447368 +vt 0.878788 0.342105 +vt 0.924242 0.421053 +vt 0.893939 0.447368 +vt 0.742424 0.447368 +vt 0.712121 0.473684 +vt 0.787879 0.447368 +vt 0.757576 0.447368 +vt 0.742424 0.342105 +vt 0.606061 0.421053 +vt 0.651515 0.447368 +vt 0.621212 0.447368 +vt 0.969697 0.447368 +vt 0.939394 0.447368 +vt 0.803030 0.473684 +vt 0.924242 0.447368 +vt 0.893939 0.473684 +vt 0.621212 0.473684 +vt 0.757576 0.473684 +vt 0.878788 0.447368 +vt 0.848485 0.473684 +vt 0.939394 0.473684 +vt 0.666667 0.473684 +vt 0.939394 0.236842 +vt 0.969697 0.210526 +vt 0.969697 0.236842 +vt 0.803030 0.236842 +vt 0.833333 0.210526 +vt 0.833333 0.236842 +vt 0.666667 0.236842 +vt 0.696970 0.210526 +vt 0.696970 0.236842 +vt 0.893939 0.236842 +vt 0.924242 0.210526 +vt 0.924242 0.236842 +vt 0.757576 0.236842 +vt 0.787879 0.210526 +vt 0.787879 0.236842 +vt 0.621212 0.236842 +vt 0.651515 0.210526 +vt 0.651515 0.236842 +vt 0.712121 0.236842 +vt 0.742424 0.210526 +vt 0.742424 0.236842 +vt 0.848485 0.236842 +vt 0.878788 0.210526 +vt 0.878788 0.236842 +vt 0.787879 0.421053 +vt 0.833333 0.447368 +vt 0.803030 0.447368 +vt 0.787879 0.342105 +vt 0.833333 0.342105 +vt 0.696970 0.421053 +vt 0.651515 0.342105 +vt 0.696970 0.342105 +vt 0.651515 0.421053 +vt 0.696970 0.447368 +vt 0.666667 0.447368 +vt 0.606061 0.342105 +vt 0.833333 0.421053 +vt 0.878788 0.447368 +vt 0.848485 0.447368 +vt 0.969697 0.421053 +vt 0.924242 0.342105 +vt 0.969697 0.342105 +vt 0.742424 0.421053 +vt 0.712121 0.447368 +vt 0.878788 0.342105 +vt 0.924242 0.421053 +vt 0.893939 0.447368 +vt 0.878788 0.421053 +vt 0.742424 0.447368 +vt 0.712121 0.473684 +vt 0.742424 0.342105 +vt 0.787879 0.447368 +vt 0.757576 0.447368 +vt 0.606061 0.421053 +vt 0.651515 0.447368 +vt 0.621212 0.447368 +vt 0.969697 0.447368 +vt 0.939394 0.447368 +vt 0.803030 0.473684 +vt 0.924242 0.447368 +vt 0.893939 0.473684 +vt 0.621212 0.473684 +vt 0.757576 0.473684 +vt 0.848485 0.473684 +vt 0.939394 0.473684 +vt 0.666667 0.473684 +vt 0.939394 0.210526 +vt 0.803030 0.210526 +vt 0.666667 0.210526 +vt 0.893939 0.210526 +vt 0.757576 0.210526 +vt 0.621212 0.210526 +vt 0.712121 0.210526 +vt 0.848485 0.210526 +vt 0.742424 0.473684 +vt 0.833333 0.473684 +vt 0.924242 0.473684 +vt 0.651515 0.473684 +vt 0.787879 0.473684 +vt 0.878788 0.473684 +vt 0.969697 0.473684 +vt 0.696970 0.473684 +vt 0.939394 0.210526 +vt 0.803030 0.210526 +vt 0.666667 0.210526 +vt 0.893939 0.210526 +vt 0.757576 0.210526 +vt 0.621212 0.210526 +vt 0.712121 0.210526 +vt 0.848485 0.210526 +vt 0.742424 0.473684 +vt 0.833333 0.473684 +vt 0.924242 0.473684 +vt 0.651515 0.473684 +vt 0.787879 0.473684 +vt 0.878788 0.473684 +vt 0.969697 0.473684 +vt 0.696970 0.473684 +vt 0.939394 0.210526 +vt 0.803030 0.210526 +vt 0.666667 0.210526 +vt 0.893939 0.210526 +vt 0.757576 0.210526 +vt 0.621212 0.210526 +vt 0.712121 0.210526 +vt 0.848485 0.210526 +vt 0.742424 0.473684 +vt 0.833333 0.473684 +vt 0.924242 0.473684 +vt 0.651515 0.473684 +vt 0.787879 0.473684 +vt 0.878788 0.473684 +vt 0.969697 0.473684 +vt 0.696970 0.473684 +vt 0.939394 0.210526 +vt 0.803030 0.210526 +vt 0.666667 0.210526 +vt 0.893939 0.210526 +vt 0.757576 0.210526 +vt 0.621212 0.210526 +vt 0.712121 0.210526 +vt 0.848485 0.210526 +vt 0.742424 0.473684 +vt 0.833333 0.473684 +vt 0.924242 0.473684 +vt 0.651515 0.473684 +vt 0.787879 0.473684 +vt 0.878788 0.473684 +vt 0.969697 0.473684 +vt 0.696970 0.473684 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +vn 0.0000 -0.8944 0.4472 +vn -0.9701 0.0000 -0.2425 +vn 0.0000 0.8944 -0.4472 +vn 0.9701 0.0000 -0.2425 +vn 0.0000 -0.8944 -0.4472 +vn 0.9701 0.0000 0.2425 +vn 0.0000 0.8944 0.4472 +vn -0.9701 0.0000 0.2425 +vn -0.4472 -0.8944 0.0000 +vn 0.2425 0.0000 -0.9701 +vn 0.4472 0.8944 0.0000 +vn 0.2425 0.0000 0.9701 +vn 0.4472 -0.8944 0.0000 +vn -0.2425 0.0000 0.9701 +vn -0.4472 0.8944 0.0000 +vn -0.2425 0.0000 -0.9701 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.0000 0.4472 0.8944 +vn 0.6325 0.4472 0.6325 +vn -0.0000 -0.2425 0.9701 +vn 0.6860 -0.2425 0.6860 +vn -0.6325 0.4472 -0.6325 +vn -0.8944 0.4472 0.0000 +vn 0.0000 -0.2425 -0.9701 +vn -0.6860 -0.2425 -0.6860 +vn 0.8944 0.4472 0.0000 +vn -0.9701 -0.2425 0.0000 +vn -0.6325 0.4472 0.6325 +vn 0.9701 -0.2425 0.0000 +vn 0.6325 0.4472 -0.6325 +vn 0.6860 -0.2425 -0.6860 +vn -0.6860 -0.2425 0.6860 +vn 0.0000 0.4472 -0.8944 +s off +f 22/45/13 24/46/13 19/47/13 +f 25/48/14 28/49/14 27/50/14 +f 27/51/15 29/52/15 30/53/15 +f 26/54/16 32/55/16 31/56/16 +f 28/49/17 31/56/17 29/52/17 +f 25/57/18 30/53/18 32/58/18 +f 40/59/19 34/60/19 38/61/19 +f 38/62/20 35/63/20 37/64/20 +f 39/65/21 33/66/21 40/67/21 +f 34/60/14 36/68/14 35/63/14 +f 42/69/15 40/67/15 41/70/15 +f 43/71/16 37/64/16 44/72/16 +f 41/73/17 38/61/17 43/74/17 +f 44/75/18 39/76/18 42/77/18 +f 37/78/22 36/68/22 39/76/22 +f 47/79/15 46/80/15 45/81/15 +f 50/82/17 45/83/17 46/84/17 +f 51/85/17 48/86/17 47/79/17 +f 54/87/15 49/88/15 50/82/15 +f 56/89/18 53/90/18 54/87/18 +f 51/85/16 56/89/16 52/91/16 +f 45/92/14 53/90/14 55/93/14 +f 45/92/14 51/94/14 47/95/14 +f 46/96/13 54/87/13 50/97/13 +f 46/96/13 52/98/13 56/89/13 +f 63/99/17 60/100/17 59/101/17 +f 62/102/18 57/103/18 58/104/18 +f 64/105/16 58/104/16 60/100/16 +f 61/106/15 59/107/15 57/103/15 +f 67/108/13 66/109/13 65/110/13 +f 71/111/14 69/112/14 70/113/14 +f 74/114/15 76/115/15 73/116/15 +f 67/108/23 73/117/23 68/118/23 +f 75/119/24 67/120/24 69/121/24 +f 76/115/25 69/112/25 72/122/25 +f 68/123/26 76/115/26 72/124/26 +f 78/125/16 80/126/16 77/127/16 +f 66/109/27 77/128/27 65/110/27 +f 79/129/28 66/130/28 71/131/28 +f 80/126/29 71/111/29 70/113/29 +f 65/132/30 80/126/30 70/133/30 +f 82/134/17 84/135/17 81/136/17 +f 68/118/31 81/137/31 66/109/31 +f 83/138/32 68/139/32 72/140/32 +f 84/135/33 72/122/33 71/111/33 +f 66/141/34 84/135/34 71/142/34 +f 86/143/18 88/144/18 85/145/18 +f 65/110/35 85/146/35 67/108/35 +f 87/147/36 65/148/36 70/149/36 +f 88/144/37 70/113/37 69/112/37 +f 67/150/38 88/144/38 69/151/38 +f 123/152/14 122/153/14 127/154/14 +f 130/155/16 132/156/16 129/157/16 +f 132/156/39 133/158/39 129/157/39 +f 130/155/40 135/159/40 131/160/40 +f 142/161/13 144/162/13 139/163/13 +f 179/164/14 178/165/14 183/166/14 +f 186/167/15 188/168/15 185/169/15 +f 188/168/41 189/170/41 185/169/41 +f 186/167/42 191/171/42 187/172/42 +f 198/173/13 200/174/13 195/175/13 +f 235/176/14 234/177/14 239/178/14 +f 242/179/17 244/180/17 241/181/17 +f 244/180/40 245/182/40 241/181/40 +f 242/179/41 247/183/41 243/184/41 +f 254/185/13 256/186/13 251/187/13 +f 291/188/14 290/189/14 295/190/14 +f 298/191/18 300/192/18 297/193/18 +f 300/192/42 301/194/42 297/193/42 +f 298/191/39 303/195/39 299/196/39 +f 307/197/16 306/198/16 305/199/16 +f 310/200/18 305/201/18 306/202/18 +f 311/203/18 308/204/18 307/197/18 +f 314/205/16 309/206/16 310/200/16 +f 316/207/17 313/208/17 314/205/17 +f 311/203/15 316/207/15 312/209/15 +f 305/210/14 313/208/14 315/211/14 +f 305/210/14 311/212/14 307/213/14 +f 306/214/13 314/205/13 310/215/13 +f 306/214/13 312/216/13 316/207/13 +f 323/217/18 320/218/18 319/219/18 +f 322/220/17 317/221/17 318/222/17 +f 324/223/15 318/222/15 320/218/15 +f 321/224/16 319/225/16 317/221/16 +f 327/226/18 326/227/18 325/228/18 +f 330/229/15 325/230/15 326/231/15 +f 331/232/15 328/233/15 327/226/15 +f 334/234/18 329/235/18 330/229/18 +f 336/236/16 333/237/16 334/234/16 +f 331/232/17 336/236/17 332/238/17 +f 325/239/14 333/237/14 335/240/14 +f 325/239/14 331/241/14 327/242/14 +f 326/243/13 334/234/13 330/244/13 +f 326/243/13 332/245/13 336/236/13 +f 343/246/15 340/247/15 339/248/15 +f 342/249/16 337/250/16 338/251/16 +f 344/252/17 338/251/17 340/247/17 +f 341/253/18 339/254/18 337/250/18 +f 347/255/17 346/256/17 345/257/17 +f 350/258/16 345/259/16 346/260/16 +f 351/261/16 348/262/16 347/255/16 +f 354/263/17 349/264/17 350/258/17 +f 356/265/15 353/266/15 354/263/15 +f 351/261/18 356/265/18 352/267/18 +f 345/268/14 353/266/14 355/269/14 +f 345/268/14 351/270/14 347/271/14 +f 346/272/13 354/263/13 350/273/13 +f 346/272/13 352/274/13 356/265/13 +f 363/275/16 360/276/16 359/277/16 +f 362/278/15 357/279/15 358/280/15 +f 364/281/18 358/280/18 360/276/18 +f 361/282/17 359/283/17 357/279/17 +f 24/46/13 23/284/13 19/47/13 +f 23/284/13 17/285/13 19/47/13 +f 17/285/13 18/286/13 19/47/13 +f 19/47/13 20/287/13 21/288/13 +f 21/288/13 22/45/13 19/47/13 +f 25/48/14 26/54/14 28/49/14 +f 27/51/15 28/49/15 29/52/15 +f 26/54/16 25/289/16 32/55/16 +f 28/49/17 26/54/17 31/56/17 +f 25/57/18 27/51/18 30/53/18 +f 40/59/19 33/66/19 34/60/19 +f 38/62/20 34/60/20 35/63/20 +f 39/65/21 36/68/21 33/66/21 +f 34/60/14 33/66/14 36/68/14 +f 42/69/15 39/65/15 40/67/15 +f 43/71/16 38/62/16 37/64/16 +f 41/73/17 40/59/17 38/61/17 +f 44/75/18 37/78/18 39/76/18 +f 37/78/22 35/63/22 36/68/22 +f 47/79/15 48/86/15 46/80/15 +f 50/82/17 49/88/17 45/83/17 +f 51/85/17 52/91/17 48/86/17 +f 54/87/15 53/90/15 49/88/15 +f 56/89/18 55/93/18 53/90/18 +f 51/85/16 55/93/16 56/89/16 +f 45/92/14 49/290/14 53/90/14 +f 45/92/14 55/93/14 51/94/14 +f 46/96/13 56/89/13 54/87/13 +f 46/96/13 48/291/13 52/98/13 +f 63/99/17 64/105/17 60/100/17 +f 62/102/18 61/106/18 57/103/18 +f 64/105/16 62/102/16 58/104/16 +f 61/106/15 63/292/15 59/107/15 +f 67/108/13 68/118/13 66/109/13 +f 71/111/14 72/122/14 69/112/14 +f 74/114/15 75/119/15 76/115/15 +f 67/108/23 74/293/23 73/117/23 +f 75/119/24 74/114/24 67/120/24 +f 76/115/25 75/119/25 69/112/25 +f 68/123/26 73/116/26 76/115/26 +f 78/125/16 79/129/16 80/126/16 +f 66/109/27 78/294/27 77/128/27 +f 79/129/28 78/125/28 66/130/28 +f 80/126/29 79/129/29 71/111/29 +f 65/132/30 77/127/30 80/126/30 +f 82/134/17 83/138/17 84/135/17 +f 68/118/31 82/295/31 81/137/31 +f 83/138/32 82/134/32 68/139/32 +f 84/135/33 83/138/33 72/122/33 +f 66/141/34 81/136/34 84/135/34 +f 86/143/18 87/147/18 88/144/18 +f 65/110/35 86/296/35 85/146/35 +f 87/147/36 86/143/36 65/148/36 +f 88/144/37 87/147/37 70/113/37 +f 67/150/38 85/145/38 88/144/38 +f 123/152/14 121/297/14 122/153/14 +f 122/153/14 128/298/14 127/154/14 +f 127/154/14 126/299/14 125/300/14 +f 125/300/14 124/301/14 127/154/14 +f 124/301/14 123/152/14 127/154/14 +f 130/155/16 131/160/16 132/156/16 +f 132/156/39 136/302/39 133/158/39 +f 130/155/40 134/303/40 135/159/40 +f 144/162/13 143/304/13 139/163/13 +f 143/304/13 137/305/13 139/163/13 +f 137/305/13 138/306/13 139/163/13 +f 139/163/13 140/307/13 141/308/13 +f 141/308/13 142/161/13 139/163/13 +f 179/164/14 177/309/14 178/165/14 +f 178/165/14 184/310/14 183/166/14 +f 183/166/14 182/311/14 181/312/14 +f 181/312/14 180/313/14 183/166/14 +f 180/313/14 179/164/14 183/166/14 +f 186/167/15 187/172/15 188/168/15 +f 188/168/41 192/314/41 189/170/41 +f 186/167/42 190/315/42 191/171/42 +f 200/174/13 199/316/13 195/175/13 +f 199/316/13 193/317/13 195/175/13 +f 193/317/13 194/318/13 195/175/13 +f 195/175/13 196/319/13 197/320/13 +f 197/320/13 198/173/13 195/175/13 +f 235/176/14 233/321/14 234/177/14 +f 234/177/14 240/322/14 239/178/14 +f 239/178/14 238/323/14 237/324/14 +f 237/324/14 236/325/14 239/178/14 +f 236/325/14 235/176/14 239/178/14 +f 242/179/17 243/184/17 244/180/17 +f 244/180/40 248/326/40 245/182/40 +f 242/179/41 246/327/41 247/183/41 +f 256/186/13 255/328/13 251/187/13 +f 255/328/13 249/329/13 251/187/13 +f 249/329/13 250/330/13 251/187/13 +f 251/187/13 252/331/13 253/332/13 +f 253/332/13 254/185/13 251/187/13 +f 291/188/14 289/333/14 290/189/14 +f 290/189/14 296/334/14 295/190/14 +f 295/190/14 294/335/14 293/336/14 +f 293/336/14 292/337/14 295/190/14 +f 292/337/14 291/188/14 295/190/14 +f 298/191/18 299/196/18 300/192/18 +f 300/192/42 304/338/42 301/194/42 +f 298/191/39 302/339/39 303/195/39 +f 307/197/16 308/204/16 306/198/16 +f 310/200/18 309/206/18 305/201/18 +f 311/203/18 312/209/18 308/204/18 +f 314/205/16 313/208/16 309/206/16 +f 316/207/17 315/211/17 313/208/17 +f 311/203/15 315/211/15 316/207/15 +f 305/210/14 309/340/14 313/208/14 +f 305/210/14 315/211/14 311/212/14 +f 306/214/13 316/207/13 314/205/13 +f 306/214/13 308/341/13 312/216/13 +f 323/217/18 324/223/18 320/218/18 +f 322/220/17 321/224/17 317/221/17 +f 324/223/15 322/220/15 318/222/15 +f 321/224/16 323/342/16 319/225/16 +f 327/226/18 328/233/18 326/227/18 +f 330/229/15 329/235/15 325/230/15 +f 331/232/15 332/238/15 328/233/15 +f 334/234/18 333/237/18 329/235/18 +f 336/236/16 335/240/16 333/237/16 +f 331/232/17 335/240/17 336/236/17 +f 325/239/14 329/343/14 333/237/14 +f 325/239/14 335/240/14 331/241/14 +f 326/243/13 336/236/13 334/234/13 +f 326/243/13 328/344/13 332/245/13 +f 343/246/15 344/252/15 340/247/15 +f 342/249/16 341/253/16 337/250/16 +f 344/252/17 342/249/17 338/251/17 +f 341/253/18 343/345/18 339/254/18 +f 347/255/17 348/262/17 346/256/17 +f 350/258/16 349/264/16 345/259/16 +f 351/261/16 352/267/16 348/262/16 +f 354/263/17 353/266/17 349/264/17 +f 356/265/15 355/269/15 353/266/15 +f 351/261/18 355/269/18 356/265/18 +f 345/268/14 349/346/14 353/266/14 +f 345/268/14 355/269/14 351/270/14 +f 346/272/13 356/265/13 354/263/13 +f 346/272/13 348/347/13 352/274/13 +f 363/275/16 364/281/16 360/276/16 +f 362/278/15 361/282/15 357/279/15 +f 364/281/18 362/278/18 358/280/18 +f 361/282/17 363/348/17 359/283/17 +s 1 +f 108/349/39 18/350/16 107/351/16 +f 111/352/15 21/353/42 110/354/42 +f 89/355/40 23/356/17 90/357/17 +f 109/358/18 19/359/39 108/360/39 +f 112/361/41 22/362/15 111/363/15 +f 107/364/16 17/365/40 89/366/40 +f 90/367/17 24/368/41 112/369/41 +f 110/370/42 20/371/18 109/372/18 +f 104/373/43 118/374/44 119/375/43 +f 103/376/45 110/354/46 101/377/46 +f 92/378/18 93/379/42 91/380/18 +f 94/381/47 114/382/48 113/383/47 +f 95/384/49 89/366/50 93/379/50 +f 94/381/42 95/384/15 93/379/42 +f 102/385/44 117/386/51 118/387/44 +f 91/380/52 89/355/50 90/357/52 +f 96/388/15 97/389/41 95/390/15 +f 106/391/53 114/392/48 92/378/48 +f 101/377/46 109/372/54 99/393/54 +f 98/394/41 99/393/17 97/389/41 +f 98/394/55 117/395/51 100/396/51 +f 99/393/54 108/360/56 97/389/56 +f 100/396/17 101/377/40 99/393/17 +f 120/397/41 122/398/17 114/392/17 +f 105/399/57 111/363/45 103/376/45 +f 102/385/40 103/376/16 101/377/40 +f 106/391/53 119/400/43 120/401/53 +f 104/373/16 105/399/39 103/376/16 +f 96/402/58 113/403/47 115/404/58 +f 91/380/52 112/369/57 105/399/57 +f 106/391/39 91/380/18 105/399/39 +f 95/390/49 108/349/56 107/351/49 +f 96/388/58 116/405/55 98/394/55 +f 118/374/42 127/406/15 119/375/15 +f 116/407/39 125/408/18 117/395/18 +f 113/403/40 123/409/16 115/404/16 +f 119/400/15 128/410/41 120/401/41 +f 117/386/18 126/411/42 118/387/42 +f 115/412/16 124/413/39 116/405/39 +f 114/382/17 121/414/40 113/383/40 +f 164/415/41 138/416/15 163/417/15 +f 167/418/16 141/419/40 166/420/40 +f 145/421/42 143/422/18 146/423/18 +f 165/424/17 139/425/41 164/426/41 +f 168/427/39 142/428/16 167/429/16 +f 163/430/15 137/431/42 145/432/42 +f 146/433/18 144/434/39 168/435/39 +f 166/436/40 140/437/17 165/438/17 +f 158/439/47 175/440/58 160/441/58 +f 157/442/50 167/418/49 166/420/50 +f 148/443/17 149/444/40 147/445/17 +f 150/446/44 170/447/51 169/448/44 +f 151/449/45 145/432/46 149/444/46 +f 150/446/40 151/449/16 149/444/40 +f 158/439/47 173/450/48 174/451/47 +f 147/445/54 145/421/46 146/423/54 +f 152/452/16 153/453/39 151/454/16 +f 162/455/55 170/456/51 148/443/51 +f 157/442/50 165/438/52 155/457/52 +f 154/458/39 155/457/18 153/453/39 +f 154/458/53 173/459/48 156/460/48 +f 155/457/52 164/426/57 153/453/57 +f 156/460/18 157/442/42 155/457/18 +f 176/461/39 178/462/18 170/456/18 +f 159/463/49 168/427/56 167/429/49 +f 158/439/42 159/463/15 157/442/42 +f 162/455/55 175/464/58 176/465/55 +f 160/441/15 161/466/41 159/463/15 +f 152/467/43 169/468/44 171/469/43 +f 147/445/54 168/435/56 161/466/56 +f 162/455/41 147/445/17 161/466/41 +f 153/453/57 163/417/45 151/454/45 +f 154/458/53 171/470/43 172/471/53 +f 174/472/40 183/473/16 175/440/16 +f 172/474/41 181/475/17 173/459/17 +f 169/468/42 179/476/15 171/469/15 +f 175/464/16 184/477/39 176/465/39 +f 173/450/17 182/478/40 174/451/40 +f 171/470/15 180/479/41 172/471/41 +f 170/447/18 177/480/42 169/448/42 +f 220/481/40 194/482/17 219/483/17 +f 223/484/18 197/485/39 222/486/39 +f 201/487/41 199/488/15 202/489/15 +f 221/490/16 195/491/40 220/492/40 +f 224/493/42 198/494/18 223/495/18 +f 219/496/17 193/497/41 201/498/41 +f 202/499/15 200/500/42 224/501/42 +f 222/502/39 196/503/16 221/504/16 +f 216/505/51 230/506/55 231/507/51 +f 215/508/54 222/486/56 213/509/56 +f 204/510/16 205/511/39 203/512/16 +f 206/513/53 226/514/43 225/515/53 +f 205/511/57 219/496/52 201/498/57 +f 206/513/39 207/516/18 205/511/39 +f 212/517/58 230/518/55 214/519/55 +f 205/511/57 202/489/45 203/512/45 +f 208/520/18 209/521/42 207/522/18 +f 218/523/44 226/524/43 204/510/43 +f 213/509/56 221/504/49 211/525/49 +f 210/526/42 211/525/15 209/521/42 +f 210/526/47 229/527/58 212/517/58 +f 209/521/50 221/490/49 220/492/50 +f 212/517/15 213/509/41 211/525/15 +f 232/528/42 234/529/15 226/524/15 +f 215/508/54 224/493/46 223/495/54 +f 214/519/41 215/508/17 213/509/41 +f 218/523/44 231/530/51 232/531/44 +f 216/505/17 217/532/40 215/508/17 +f 208/533/48 225/534/53 227/535/48 +f 203/512/45 224/501/46 217/532/46 +f 218/523/40 203/512/16 217/532/40 +f 209/521/50 219/483/52 207/522/52 +f 210/526/47 227/536/48 228/537/47 +f 230/506/39 239/538/18 231/507/18 +f 228/539/40 237/540/16 229/527/16 +f 225/534/41 235/541/17 227/535/17 +f 231/530/18 240/542/42 232/531/42 +f 229/543/16 238/544/39 230/518/39 +f 227/536/17 236/545/40 228/537/40 +f 226/514/15 233/546/41 225/515/41 +f 276/547/42 250/548/18 275/549/18 +f 279/550/17 253/551/41 278/552/41 +f 257/553/39 255/554/16 258/555/16 +f 277/556/15 251/557/42 276/558/42 +f 280/559/40 254/560/17 279/561/17 +f 275/562/18 249/563/39 257/564/39 +f 258/565/16 256/566/40 280/567/40 +f 278/568/41 252/569/15 277/570/15 +f 272/571/48 286/572/53 287/573/48 +f 271/574/52 278/552/57 269/575/57 +f 260/576/15 261/577/41 259/578/15 +f 262/579/55 282/580/58 281/581/55 +f 263/582/54 257/564/56 261/577/56 +f 262/579/41 263/582/17 261/577/41 +f 270/583/53 285/584/43 286/585/53 +f 261/577/56 258/555/49 259/578/49 +f 264/586/17 265/587/40 263/588/17 +f 274/589/47 282/590/58 260/576/58 +f 269/575/57 277/570/45 267/591/45 +f 266/592/40 267/591/16 265/587/40 +f 266/592/44 285/593/43 268/594/43 +f 267/591/45 276/558/46 265/587/46 +f 268/594/16 269/575/39 267/591/16 +f 288/595/40 290/596/16 282/590/16 +f 273/597/50 279/561/52 271/574/52 +f 270/583/39 271/574/18 269/575/39 +f 274/589/47 287/598/48 288/599/47 +f 272/571/18 273/597/42 271/574/18 +f 264/600/51 281/601/55 283/602/51 +f 259/578/49 280/567/50 273/597/50 +f 274/589/42 259/578/15 273/597/42 +f 265/587/46 275/549/54 263/588/54 +f 266/592/44 283/603/51 284/604/44 +f 286/572/41 295/605/17 287/573/17 +f 284/606/42 293/607/15 285/593/15 +f 281/601/39 291/608/18 283/602/18 +f 287/598/17 296/609/40 288/599/40 +f 285/584/15 294/610/41 286/585/41 +f 283/603/18 292/611/42 284/604/42 +f 282/580/16 289/612/39 281/581/39 +f 108/349/39 19/613/39 18/350/16 +f 111/352/15 22/614/15 21/353/42 +f 89/355/40 17/615/40 23/356/17 +f 109/358/18 20/616/18 19/359/39 +f 112/361/41 24/617/41 22/362/15 +f 107/364/16 18/618/16 17/365/40 +f 90/367/17 23/619/17 24/368/41 +f 110/370/42 21/620/42 20/371/18 +f 104/373/43 102/385/44 118/374/44 +f 103/376/45 111/352/45 110/354/46 +f 92/378/18 94/381/42 93/379/42 +f 94/381/47 92/378/48 114/382/48 +f 95/384/49 107/364/49 89/366/50 +f 94/381/42 96/402/15 95/384/15 +f 102/385/44 100/396/51 117/386/51 +f 91/380/52 93/379/50 89/355/50 +f 96/388/15 98/394/41 97/389/41 +f 106/391/53 120/397/53 114/392/48 +f 101/377/46 110/370/46 109/372/54 +f 98/394/41 100/396/17 99/393/17 +f 98/394/55 116/407/55 117/395/51 +f 99/393/54 109/358/54 108/360/56 +f 100/396/17 102/385/40 101/377/40 +f 120/397/41 128/621/41 122/398/17 +f 105/399/57 112/361/57 111/363/45 +f 102/385/40 104/373/16 103/376/16 +f 106/391/53 104/373/43 119/400/43 +f 104/373/16 106/391/39 105/399/39 +f 96/402/58 94/381/47 113/403/47 +f 91/380/52 90/367/52 112/369/57 +f 106/391/39 92/378/18 91/380/18 +f 95/390/49 97/389/56 108/349/56 +f 96/388/58 115/412/58 116/405/55 +f 118/374/42 126/622/42 127/406/15 +f 116/407/39 124/623/39 125/408/18 +f 113/403/40 121/624/40 123/409/16 +f 119/400/15 127/625/15 128/410/41 +f 117/386/18 125/626/18 126/411/42 +f 115/412/16 123/627/16 124/413/39 +f 114/382/17 122/628/17 121/414/40 +f 164/415/41 139/629/41 138/416/15 +f 167/418/16 142/630/16 141/419/40 +f 145/421/42 137/631/42 143/422/18 +f 165/424/17 140/632/17 139/425/41 +f 168/427/39 144/633/39 142/428/16 +f 163/430/15 138/634/15 137/431/42 +f 146/433/18 143/635/18 144/434/39 +f 166/436/40 141/636/40 140/437/17 +f 158/439/47 174/472/47 175/440/58 +f 157/442/50 159/463/49 167/418/49 +f 148/443/17 150/446/40 149/444/40 +f 150/446/44 148/443/51 170/447/51 +f 151/449/45 163/430/45 145/432/46 +f 150/446/40 152/467/16 151/449/16 +f 158/439/47 156/460/48 173/450/48 +f 147/445/54 149/444/46 145/421/46 +f 152/452/16 154/458/39 153/453/39 +f 162/455/55 176/461/55 170/456/51 +f 157/442/50 166/436/50 165/438/52 +f 154/458/39 156/460/18 155/457/18 +f 154/458/53 172/474/53 173/459/48 +f 155/457/52 165/424/52 164/426/57 +f 156/460/18 158/439/42 157/442/42 +f 176/461/39 184/637/39 178/462/18 +f 159/463/49 161/466/56 168/427/56 +f 158/439/42 160/441/15 159/463/15 +f 162/455/55 160/441/58 175/464/58 +f 160/441/15 162/455/41 161/466/41 +f 152/467/43 150/446/44 169/468/44 +f 147/445/54 146/433/54 168/435/56 +f 162/455/41 148/443/17 147/445/17 +f 153/453/57 164/415/57 163/417/45 +f 154/458/53 152/452/43 171/470/43 +f 174/472/40 182/638/40 183/473/16 +f 172/474/41 180/639/41 181/475/17 +f 169/468/42 177/640/42 179/476/15 +f 175/464/16 183/641/16 184/477/39 +f 173/450/17 181/642/17 182/478/40 +f 171/470/15 179/643/15 180/479/41 +f 170/447/18 178/644/18 177/480/42 +f 220/481/40 195/645/40 194/482/17 +f 223/484/18 198/646/18 197/485/39 +f 201/487/41 193/647/41 199/488/15 +f 221/490/16 196/648/16 195/491/40 +f 224/493/42 200/649/42 198/494/18 +f 219/496/17 194/650/17 193/497/41 +f 202/499/15 199/651/15 200/500/42 +f 222/502/39 197/652/39 196/503/16 +f 216/505/51 214/519/55 230/506/55 +f 215/508/54 223/484/54 222/486/56 +f 204/510/16 206/513/39 205/511/39 +f 206/513/53 204/510/43 226/514/43 +f 205/511/57 207/516/52 219/496/52 +f 206/513/39 208/533/18 207/516/18 +f 212/517/58 229/543/58 230/518/55 +f 205/511/57 201/487/57 202/489/45 +f 208/520/18 210/526/42 209/521/42 +f 218/523/44 232/528/44 226/524/43 +f 213/509/56 222/502/56 221/504/49 +f 210/526/42 212/517/15 211/525/15 +f 210/526/47 228/539/47 229/527/58 +f 209/521/50 211/525/49 221/490/49 +f 212/517/15 214/519/41 213/509/41 +f 232/528/42 240/653/42 234/529/15 +f 215/508/54 217/532/46 224/493/46 +f 214/519/41 216/505/17 215/508/17 +f 218/523/44 216/505/51 231/530/51 +f 216/505/17 218/523/40 217/532/40 +f 208/533/48 206/513/53 225/534/53 +f 203/512/45 202/499/45 224/501/46 +f 218/523/40 204/510/16 203/512/16 +f 209/521/50 220/481/50 219/483/52 +f 210/526/47 208/520/48 227/536/48 +f 230/506/39 238/654/39 239/538/18 +f 228/539/40 236/655/40 237/540/16 +f 225/534/41 233/656/41 235/541/17 +f 231/530/18 239/657/18 240/542/42 +f 229/543/16 237/658/16 238/544/39 +f 227/536/17 235/659/17 236/545/40 +f 226/514/15 234/660/15 233/546/41 +f 276/547/42 251/661/42 250/548/18 +f 279/550/17 254/662/17 253/551/41 +f 257/553/39 249/663/39 255/554/16 +f 277/556/15 252/664/15 251/557/42 +f 280/559/40 256/665/40 254/560/17 +f 275/562/18 250/666/18 249/563/39 +f 258/565/16 255/667/16 256/566/40 +f 278/568/41 253/668/41 252/569/15 +f 272/571/48 270/583/53 286/572/53 +f 271/574/52 279/550/52 278/552/57 +f 260/576/15 262/579/41 261/577/41 +f 262/579/55 260/576/58 282/580/58 +f 263/582/54 275/562/54 257/564/56 +f 262/579/41 264/600/17 263/582/17 +f 270/583/53 268/594/43 285/584/43 +f 261/577/56 257/553/56 258/555/49 +f 264/586/17 266/592/40 265/587/40 +f 274/589/47 288/595/47 282/590/58 +f 269/575/57 278/568/57 277/570/45 +f 266/592/40 268/594/16 267/591/16 +f 266/592/44 284/606/44 285/593/43 +f 267/591/45 277/556/45 276/558/46 +f 268/594/16 270/583/39 269/575/39 +f 288/595/40 296/669/40 290/596/16 +f 273/597/50 280/559/50 279/561/52 +f 270/583/39 272/571/18 271/574/18 +f 274/589/47 272/571/48 287/598/48 +f 272/571/18 274/589/42 273/597/42 +f 264/600/51 262/579/55 281/601/55 +f 259/578/49 258/565/49 280/567/50 +f 274/589/42 260/576/15 259/578/15 +f 265/587/46 276/547/46 275/549/54 +f 266/592/44 264/586/51 283/603/51 +f 286/572/41 294/670/41 295/605/17 +f 284/606/42 292/671/42 293/607/15 +f 281/601/39 289/672/39 291/608/18 +f 287/598/17 295/673/17 296/609/40 +f 285/584/15 293/674/15 294/610/41 +f 283/603/18 291/675/18 292/611/42 +f 282/580/16 290/676/16 289/612/39 diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc6e87ca39f8c8aff49aa7b26ecdf86d6eb6c71 GIT binary patch literal 785 zcmV+s1Md8ZP)4%06vux%GrK!;#}Y~4$^?#p+i*pyKnkVF7ceedIjC{t zDyX?oGDOFV=y!UwTSuU5Hot**Dwk_lF7%3&*d-6PIyYiG#U{?06+*qmSxev&1Qr5p6zyvF@~<|dfjk1)LI|w2gb-+& zCLYpt9YP4k<1uwzqqXky+P1x6-0+N2Nz&VF8hNfu{LiBmV^9Uj0R}@9OMF>IDG;B5-(lo_di!mnpriLCL zym}Q4d-LcKZQI65h88C;Uq;QxXV3bJ%d!Mux>%s+a{$KUF~%4|2xzTI(-f`s4V@68 zuW*?E+mkq$*ECHWra$YHQUD|e2M68d+_r68p04ZSc%Ph{pjN9D z+wGQ%iwkat_dd?XQ0WlE#;X1Oeg0cKcwuLJ`|fTY{Cxk2=hJ_S2QTc50SJG^gF*NG z`&&Ht`t>yrGJQ7>zIl7igZ$qAJox-PIDK%QdGO2Rng>68yv2j((*-~3zvscA z`)oW=&N)V-5$EUU0DSlB0p^RI2fMqwH+b;n??3V3w-4;??Zw6W$2|B0`}L)()krm^ P00000NkvXXu0mjf6A*Mz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_bottom.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png new file mode 100644 index 0000000000000000000000000000000000000000..bb54d31aeddca91bc62a6069b9acf61adbc4bbad GIT binary patch literal 803 zcmV+;1Kj+HP)Y|~MV2x~SwhcfK1Zb@z!=<#= zNGZwZ^E4U_Ow+_vO0mDcPY?ujyItOW|IR9TpFiU`4()b(VW739TCGy4R8UIs?bR!C zxg3^dF`LaW3(+ijknp3qt| zolc|2&1REcug8a4jkUEkq?8Dy6jDk6>h(H>LV;W^$Nl|1lgR|%_erPI^m;u8g8{{2 z5dh1w5JF%shXY{SHs|N(?CtF_o6YF=`xgnp=BZP=H6_3Z!T4T=V^Jv1BWkp7@Sd1_XQA&|aCed0WguwGW z01U%e6dVqRf33*#7>!003I#4MF6ef<^!t4>nGBDQk4Py=CX)aNAr>u+Mx)3;2tm1A zrqk!26h*uXFh3WWke5O8;QM>d;{LM4Pi#A30?V0U+yMx(*?^)>73>(Mvs^*Y63 zkxV8-v)Ke-JRUEKx~>}~?BwKxUa!aY_BM$`f*=Tp$KxoaXfzs>N+nXM6klJzMhJmn z7?@H@4h{~uy1K%3UEWlyFUB|oN}oPq+cu}Cr;8c*zR$zM1Fq|m&*y1<{752^h$1|h zOqkE-BoYZs)5Hiv(&;op2wJTc=I!k*&(F_DDWm?D(ppE^Sf+KU<;9wnN`-$H51!tw z=D~aK7d#k#Tg`(@=LH`8Vf{W2CLjLi0sJ?4@ZS4<9@t-3@ZiUrDz`7h_|FjDmVUv5 h-PURzgvLM2gP&uBd4_F6BH{o5002ovPDHLkV1jP>dPx8P literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_side.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4d38b8ec78d3dc29b10f8fb49394f2c6108b8dc0 GIT binary patch literal 695 zcmV;o0!aOdP)paDS*J?NTHK!2PjPLl(P^HapNXOf zr4-8deT*?2A0Lw>3B%Ed{k=VkqCf~i5Cmwg3B!=nvoo$PFG-SwySqEGEJGM$FvgH1 z3HSH+0MvC&9LGp0F~$%C0rUAB!0Ey;#Pd9qloBZ=!_ml|m|s<>iIsdnJppy|u;4$_iR*mV*Ex1gbMf2tgQz%w{tHo}Qk5 z+T8E=vDQ+SC2<_nGz|cvOQ4i;<$e^N=Ml#-d7cx7VS8|0*Uq>g2wW@Qi>7JF^BkoV zp69g(W?9yjA_RG!QxwIA34{>Dag67Au2R*tr~A=;`~Ci#1WGB2q9BfA=bP&FdH|eX zTsYz8#)g|ZYppZv`sT)Ijt&poq-mN0xCtAMMy#%`QdJdYSrUdJT5IP`rxVj@dzEfs zaT0sI9@bi_s=^pUXLhGkO0}IC3CE$=EZ(8Cf9sz& z`ah*-SnaSnz!z}$49}-^EhP<4npM8%e!OJH?9ek&kwvgzQrESp9>XJwN(-)aU7IBr z;MHj8#$Rym?dA!^_qG_6R{Ui7wS;G~|AW~NHlGmqI6*I>F#1booBxANr^Jr%uDjpy jS-r#gnf;H$_CFZg*TyAFNQXH9oy*|q>gTe~DWM4f$+cW` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_drone.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_drone.png new file mode 100644 index 0000000000000000000000000000000000000000..a0afa80194287477c2b4311c87c501b3cf79b305 GIT binary patch literal 2165 zcmbuBc~FyC62M!!uKsX|>fZ&0Eih_z98ad<$1jvVIjKjI( zh_V=oG9>{SV$2G1O@dqngMdU1xe`Q80Fj#zj$a@}0BE{6J01f7rZ~a?QbnQ8M6xa^6yln_%L$}H5|9_^03gj=9PLh!AB+!h z!t}&jRYg*beK3pC%d1ctQTI>ESY?T4?Bo8OgX+P?{Fb}fW(HS}CAW}t@8qWP9fB+l zLnX>TFsVc+tvmUNS;xk>4s>B9B`+xAXZi$scM@;uSC7Vf#Do*dvkn}2Ca;RUjdztz zrIRT#_LIQ(eG3+H-vnHl4Ou=UEDDw5Ub$=}9<66+zmz`;sF^4+#!&Ty4foQUm!(BR zak%85fJwoD)OzE`pVD4br1>nz$Mx%sa>RW?9}M0%>a=fmL_`FN`|h*EyQIuI@)MDF zNk$hw_YeX{kbo3A3v)4~o171;c8GSNZ_GGbw@cxU%1waW2De#69#Q@(MW zsp_VSk$UR_eGk9g*X;s_?EZN5q*1tZojj|CH$Rj6uAw`he1MfR%`LEj9m;;c>%8SD z&BaCyIcaRCoo_aZ^B2v8`RVuk{0etq9$fFfl(H(e;`aHESi1t13zPv~TV#1LTB9$8 z>Wly>$6^!DW(U?ytXJh{sZwtMe`eR%Ea^_u&oSwbwB$$_pMbx}oQMpbWUo5*Nd2{e zMsuRK{1%Jyabii7`O*~7p4aBQNxUq&uzaL4yqFZtUY05oX(6kA(pEr=;yUcQ)AV6b zH@1%_DA9lFo})soOWsKkM4xc1BjYk;2_>y+qYv`(442DGlM13U4q`8hZDb!u2dJh~ zuO-FOGO0~n4IY{z_e+3a#PZWjIo6bQTw1iWB%P4TSKH3<1{W3!*t|hpmsA*giAG*= zC?0GxMAgS?#eL8%%S`n-I3pQelI1>EyWc(!!j{Ayg^QhDb$NQ5<6_aP<)QM{_l9f} zc@MX2ojM4uWT?3ncu$xlPr`(%yB%_`Wk$>Hp6+;IQ^8ECLg?V{JGh0*m& zV}EhiZ2lWor}ma@Fan7&pw#nmy7p2(7P(DhS+{dk4mDle5LlJw&9x#u2rxy0(6Nth zP&ERm&c$d!DQkMMnd)oVTYB1KwVPI|p$*=4$?#C_qScJqJy*T!Mt}_2v>*&RP{Fgm zt=MuC=g#SMm=Qp@r=b+|N|1kzk$T*AFad{HTHbOJscLM$(i(?Qi5`Q6lTKsqr7)D& zvevpWL!6kEgPT#*%H38r>#wZz7!|LYtVi$_a|=-qVYh~i>btJRoDQAe)l8N(NonW9 zK#O>$VIZ^%9rpJ7BnH+m-Z(}>vbWEBvGJ_T<6V>ZKFv~8HiEQdVxzlRndo*#zY;kX z?LDUA#48l04X4syE(#mj)T%GywVA0BNPhiFyXCzn)gLBBPlu!e5wnE?984ATsoqJw zMu7Fp9SX2C2CUa^{$xdS-YIRtC^}uTT)R_YGvH4uN;#mj#Xw=32Q*g@p0#H+Tn&VB zRn2j5sJ8_{b5hvw(9i~;|DoCT3>L1*I?|m%l>VI&3ujFG-VejY2(RZy|!22kmeWd79t3ruz-eiK-1RA@~@D7)|&^)tUzm9+v$*HreZ2l<33nf zl&}@}VD9bDaXXTT(SP#?YQb6Cm7|W1US3{~H@@?jwO4Ek)c)Mp#wXbU22JUN+2;63 zL53K0RIvc}ZdUie?BG6xZ4BD`BAj;Id?l=LUdIRDr?-D}g=bLZ z9`o@xn|u_GobMBH|MK{s2C&9Z0e||Hxr9HPQNkbRApXHAxjQ$T7lX^BKi>UAD948! zX_Pak!8~MbP3h1{zV!^&lQC}kEdEC>bnC#v+9%-u7ttZP7QOz4E_VT!x)#lac*L>9 I-v9dF0F-32X#fBK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/drone_linker.png b/src/main/resources/assets/hbm/textures/items/drone_linker.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0a5e7cdcc0c7bf5a653f010860c3a7824ecf93 GIT binary patch literal 312 zcmV-80muG{P)bh1{RY`;M)MZf=Ow*KXa&~xVn&#WM-h0}%{m?Bw7xaDqrPx}_FbqdrU;wbY-2h-5 zY~9RXE|x)UbOy%FV&i5mhG>GruJ0yW2iKA6fU?$xQP**CVBozEhV>&^mlEAVyL`j4#2`iF6WJ}g~GLy`Vdipbm z>8i|!q>-huG=}-Zpq`#r-Bqt%{okv9w+!||6h(Xf1~5Cj@6R34sl8zsN4vq}K^*7J zdKrC3#OOQXNXX?PqUdO!TyB33I%Yie5s`b3t~gY-Wrt&C>yFr`f4TRFX0O(*X0L)V z&7u4L)JH_O@c54C=GyKdp6EwJjJ_jc^c@jHcC^@Q9UpbCvDfwI=1wGQwL9XZ3G9UK zZ?xUG(@b|O5)OO6hKRXz>C%y$_SIKk>1*{lB1UJ9=wTF##jaiJsdI!{4&89V#fulC z;o)JRzce(Sx`@~fYE}=5-J+=<5i$CXh|zaMjJ_jc^c@kS?}!+EN5tqmB1Yd4G5U^( zVYEFr=(gT)RJ8Qx(&fuQbD4aU5?i%xcSP$0p5s=GTBW*{{_W<7qd+;L^QNn{W6Ckz zdOzZXG|E;yb-T|-dF|rGi${vqg@pxut*6crjd)yc*bn`z5u-C%?uJ}0>Iz33gdaNe zul2Qn`04oGxBaB~``oAXC+Pi%h#`CKeTY^ZQ~&xA5o2#}_t1NmQ@J`1tjuA&5!H`B zH!!+&9{LfX(erhLnz5(!GB z5? z7D%O1IF5r5fRWLrNnU@lF6hVwClPEA;@Gh1VKPPpT{)Y-*r7nNYgYi zO_OWat|5fL^E`at$8}w#lmtP5@B288gOpO+oj!dU(=;_FL{WrknuKAfBSP_wloHc4 z@jQ}Xssb2t|NjV(6cCnz;PVHFvN9TY}*Fvp|93?rBWf8 zOzO-cWxXyFLQpQ3bsHgsZs&O(sZ@$oDg~f3Nv}Yv4*9-MCX)f`=~JzD+qMbAP!nIJ zQb9_oqeHcY`oJyA((P-tn&yUNGO78e5lT-`I)c&*)b~F>(c%9ASt^wP^dJ>UD!%YM zPjiEsRmBDRB5_3czK>;Dx{W#(Lh$96Ujp#jYp*r6=@p1-wOT(ALVpx7s+z!cU3PYM zuq+G5aY&_7npav;tJU-pDVNKbrpdS8e#`pO4HmEepIk22R8RB@q*~9u?_=Axjtt-T zb!4dDJ~n{U3!g$oxDLg<-QgG?k6L{Wt6x)_F``Qfd%-ePs*0jnDi`1s?Gbt&IV z;+RyOQWc|VnmRgmc6M-GmoN2>AQ>XL>N^P>Xx3?J?8PT&^C=?hP8s@+M`HV`X z0)Xq*YX`OAQpA`{CMlQ81cA@lbLS4!!EP#1yPaQ|iyd+I?p&O^L3 zu3fvv{rmSxr_(@ZJz{)(oVB$zq?COBeSILRMeY&R@22*qy1sA zG6(bX^L)5=1!&VG+h)8IL=Xgg{q@(p`s%BUjg9f};X_?+o2J>MM?Cl3bF8kevbws; z^z^h&pK7L6WvQUbYIST`R-64{F+V@gl`B`8&V6pcU;Z_JsOxDxVr6B8nVA_q+h@+4 zY0@KJc;N-s*VozF+G1*IiowA_Ow+_L3_Qri;?bi= zoIiiQNsmz5b>H{(Qb;5cx*YdBk7~85Ij7aWoA~VAE4*&HN zebUsPIFbw|55yJP5siAp($W$yz4Q`NN<7cw&Ye4qkB=jSAe~NAsZ4^^Tpx9N9n39gCAjd}#Y%*+h;@89Rqqeq-ReHz0sn3$L#3_~71e8}0eXPY8K?KGn( z!uNd=iG*Gjs{T-W5X-Wt)oM-lb9~aYhUa2#h%3o9bXxOsdvHr9h(E;2PWMLL~kadA;!M5RJik64z4Wm&pJ zcN_=Xwsj@hXx}T4p6Bt)FTZFfbkZZDC}MPU6d?rn?%iWzVnP$5DxxgQ()=QXAfL}O zG&H1BXruji-+gz|J^*4pLW!(u*Qjt1J>rKSegNv}P?4Zv7%VR@H>K28D7#+4?}&#? UfC1gdzW@LL07*qoM6N<$g4{AD*#H0l literal 0 HcmV?d00001 From ee34c5990887ef89659df57a8a29bc27a646abe8 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 18 Sep 2023 21:37:01 +0200 Subject: [PATCH 037/207] =?UTF-8?q?pain=C2=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hbm/blocks/network/DroneCrate.java | 78 +++++++++++++++- .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityMachineAssembler.java | 9 +- .../TileEntityMachineAssemblerBase.java | 61 ++++++------ .../machine/TileEntityMachineAssemfac.java | 29 +++--- .../machine/TileEntityMachineChemfac.java | 29 +++--- .../machine/TileEntityMachineChemplant.java | 33 ++++--- .../TileEntityMachineChemplantBase.java | 57 +++++++----- .../network/TileEntityDroneCrate.java | 88 ++++++++++++++++++ .../network/TileEntityDroneWaypoint.java | 2 +- .../hbm/textures/models/machines/drone.png | Bin 2662 -> 2748 bytes 11 files changed, 286 insertions(+), 101 deletions(-) create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java diff --git a/src/main/java/com/hbm/blocks/network/DroneCrate.java b/src/main/java/com/hbm/blocks/network/DroneCrate.java index 440e3e5c5..02180bfbd 100644 --- a/src/main/java/com/hbm/blocks/network/DroneCrate.java +++ b/src/main/java/com/hbm/blocks/network/DroneCrate.java @@ -1,17 +1,33 @@ package com.hbm.blocks.network; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityDroneCrate; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class DroneCrate extends BlockContainer { +public class DroneCrate extends BlockContainer implements ILookOverlay, ITooltipProvider { + + private static Random rand = new Random(); @SideOnly(Side.CLIENT) private IIcon iconTop; @SideOnly(Side.CLIENT) private IIcon iconBottom; @@ -22,7 +38,7 @@ public class DroneCrate extends BlockContainer { @Override public TileEntity createNewTileEntity(World world, int meta) { - return null; + return new TileEntityDroneCrate(); } @Override @@ -38,4 +54,62 @@ public class DroneCrate extends BlockContainer { public IIcon getIcon(int side, int metadata) { return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + TileEntityDroneCrate tileentityfurnace = (TileEntityDroneCrate) world.getTileEntity(x, y, z); + + if(tileentityfurnace != null) { + for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) { + ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + + if(itemstack != null) { + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int j1 = this.rand.nextInt(21) + 10; + + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float) this.rand.nextGaussian() * f3; + entityitem.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) this.rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); + } + } + } + + world.func_147453_f(x, y, z, block); + } + + super.breakBlock(world, x, y, z, block, meta); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntityDroneCrate tile = (TileEntityDroneCrate) world.getTileEntity(x, y, z); + List text = new ArrayList(); + + if(tile.nextY != -1) { + text.add("Next waypoint: " + tile.nextX + " / " + tile.nextY + " / " + tile.nextZ); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 993af256b..40b91f1a4 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -393,6 +393,7 @@ public class TileMappings { put(TileEntityRadioTelex.class, "tileentity_rtty_telex"); put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint"); + put(TileEntityDroneCrate.class, "tileentity_drone_crate"); } private static void put(Class clazz, String... names) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index 452a614e9..3c0893c5f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -25,7 +25,6 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -211,16 +210,16 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase { } @Override - public ChunkCoordinates[] getInputPositions() { + public DirPos[] getInputPositions() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - return new ChunkCoordinates[] {new ChunkCoordinates(xCoord - dir.offsetX * 3 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 3 + rot.offsetZ)}; + return new DirPos[] {new DirPos(xCoord - dir.offsetX * 3 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 3 + rot.offsetZ, dir.getOpposite())}; } @Override - public ChunkCoordinates[] getOutputPositions() { + public DirPos[] getOutputPositions() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - return new ChunkCoordinates[] {new ChunkCoordinates(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2)}; + return new DirPos[] {new DirPos(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2, dir)}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java index 5a4bdcbbd..b4bcd8648 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java @@ -11,13 +11,13 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.storage.TileEntityCrateTemplate; import com.hbm.util.InventoryUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChunkCoordinates; public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { @@ -145,27 +145,29 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa int template = getTemplateIndex(index); - ChunkCoordinates[] positions = getInputPositions(); + DirPos[] positions = getInputPositions(); int[] indices = getSlotIndicesFromIndex(index); - for(ChunkCoordinates coord : positions) { + for(DirPos coord : positions) { - TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); + TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); if(te instanceof IInventory) { IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; boolean templateCrate = te instanceof TileEntityCrateTemplate; if(templateCrate && slots[template] == null) { - for(int i = 0; i < inv.getSizeInventory(); i++) { - ItemStack stack = inv.getStackInSlot(i); + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { + int slot = access != null ? access[i] : i; + ItemStack stack = inv.getStackInSlot(slot); - if(stack != null && stack.getItem() == ModItems.assembly_template && (sided == null || sided.canExtractItem(i, stack, 0))) { + if(stack != null && stack.getItem() == ModItems.assembly_template && (sided == null || sided.canExtractItem(slot, stack, 0))) { slots[template] = stack.copy(); - sided.setInventorySlotContents(i, null); + sided.setInventorySlotContents(slot, null); this.needsTemplateSwitch[index] = false; break; } @@ -186,16 +188,17 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa boolean found = false; - for(int i = 0; i < inv.getSizeInventory(); i++) { - - ItemStack stack = inv.getStackInSlot(i); - if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(i, stack, 0))) { + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { + + int slot = access != null ? access[i] : i; + ItemStack stack = inv.getStackInSlot(slot); + if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(slot, stack, 0))) { found = true; for(int j = indices[0]; j <= indices[1]; j++) { if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { - inv.decrStackSize(i, 1); + inv.decrStackSize(slot, 1); slots[j].stackSize++; continue outer; } @@ -206,7 +209,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa if(slots[j] == null) { slots[j] = stack.copy(); slots[j].stackSize = 1; - inv.decrStackSize(i, 1); + inv.decrStackSize(slot, 1); continue outer; } } @@ -224,16 +227,18 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa private void unloadItems(int index) { - ChunkCoordinates[] positions = getOutputPositions(); + DirPos[] positions = getOutputPositions(); int[] indices = getSlotIndicesFromIndex(index); - for(ChunkCoordinates coord : positions) { + for(DirPos coord : positions) { - TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); + TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); if(te instanceof IInventory) { IInventory inv = (IInventory) te; + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; int i = indices[2]; ItemStack out = slots[i]; @@ -246,12 +251,14 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa if(out != null) { - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!(sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) continue; - ItemStack target = inv.getStackInSlot(j); + ItemStack target = inv.getStackInSlot(slot); if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { this.decrStackSize(i, 1); @@ -260,15 +267,17 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa } } - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - if(inv.getStackInSlot(j) == null && inv.isItemValidForSlot(j, out)) { + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) { ItemStack copy = out.copy(); copy.stackSize = 1; - inv.setInventorySlotContents(j, copy); + inv.setInventorySlotContents(slot, copy); this.decrStackSize(i, 1); return; } @@ -296,7 +305,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa * @return A size 3 int array containing min input, max input and output indices in that order. */ public abstract int[] getSlotIndicesFromIndex(int index); - public abstract ChunkCoordinates[] getInputPositions(); - public abstract ChunkCoordinates[] getOutputPositions(); + public abstract DirPos[] getInputPositions(); + public abstract DirPos[] getOutputPositions(); public abstract int getPowerSlot(); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java index a7f8b6f1e..407c74ad6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java @@ -21,7 +21,6 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -351,11 +350,11 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im return new int[] { 5 + index * 14, 16 + index * 14, 18 + index * 14}; } - ChunkCoordinates[] inpos; - ChunkCoordinates[] outpos; + DirPos[] inpos; + DirPos[] outpos; @Override - public ChunkCoordinates[] getInputPositions() { + public DirPos[] getInputPositions() { if(inpos != null) return inpos; @@ -363,18 +362,18 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - inpos = new ChunkCoordinates[] { - new ChunkCoordinates(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1), - new ChunkCoordinates(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2), - new ChunkCoordinates(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4), - new ChunkCoordinates(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5) + inpos = new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1, dir), + new DirPos(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5, rot) }; return inpos; } @Override - public ChunkCoordinates[] getOutputPositions() { + public DirPos[] getOutputPositions() { if(outpos != null) return outpos; @@ -382,11 +381,11 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - outpos = new ChunkCoordinates[] { - new ChunkCoordinates(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2), - new ChunkCoordinates(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1), - new ChunkCoordinates(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4), - new ChunkCoordinates(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5) + outpos = new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2, dir), + new DirPos(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5, rot) }; return outpos; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 539ea2f42..3f7413677 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -23,7 +23,6 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -234,11 +233,11 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { return new int[] {5 + index * 9, 8 + index * 9, 9 + index * 9, 12 + index * 9}; } - ChunkCoordinates[] inpos; - ChunkCoordinates[] outpos; + DirPos[] inpos; + DirPos[] outpos; @Override - public ChunkCoordinates[] getInputPositions() { + public DirPos[] getInputPositions() { if(inpos != null) return inpos; @@ -246,18 +245,18 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - inpos = new ChunkCoordinates[] { - new ChunkCoordinates(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1), - new ChunkCoordinates(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2), - new ChunkCoordinates(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4), - new ChunkCoordinates(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5) + inpos = new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1, dir), + new DirPos(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5, rot) }; return inpos; } @Override - public ChunkCoordinates[] getOutputPositions() { + public DirPos[] getOutputPositions() { if(outpos != null) return outpos; @@ -265,11 +264,11 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - outpos = new ChunkCoordinates[] { - new ChunkCoordinates(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2), - new ChunkCoordinates(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1), - new ChunkCoordinates(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4), - new ChunkCoordinates(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5) + outpos = new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2, dir), + new DirPos(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5, rot) }; return outpos; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 3a14f536b..edc19ee83 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -363,6 +363,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(dir.ordinal()) : null; for(AStack ingredient : recipe.inputs) { @@ -371,15 +372,17 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements boolean found = false; - for(int i = 0; i < inv.getSizeInventory(); i++) { + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { + + int slot = access != null ? access[i] : i; + ItemStack stack = inv.getStackInSlot(slot); - ItemStack stack = inv.getStackInSlot(i); - if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(i, stack, 0))) { + if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(slot, stack, 0))) { for(int j = 13; j <= 16; j++) { if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { - inv.decrStackSize(i, 1); + inv.decrStackSize(slot, 1); slots[j].stackSize++; continue outer; } @@ -390,7 +393,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements if(slots[j] == null) { slots[j] = stack.copy(); slots[j].stackSize = 1; - inv.decrStackSize(i, 1); + inv.decrStackSize(slot, 1); continue outer; } } @@ -417,6 +420,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements if(te instanceof IInventory) { IInventory inv = (IInventory) te; + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(dir.ordinal()) : null; for(int i = 5; i <= 8; i++) { @@ -424,12 +429,14 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements if(out != null) { - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - ItemStack target = inv.getStackInSlot(j); + ItemStack target = inv.getStackInSlot(slot); if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize()) { this.decrStackSize(i, 1); @@ -438,15 +445,17 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } } - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - if(inv.getStackInSlot(j) == null && inv.isItemValidForSlot(j, out)) { + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, dir.ordinal()) : inv.isItemValidForSlot(slot, out))) { ItemStack copy = out.copy(); copy.stackSize = 1; - inv.setInventorySlotContents(j, copy); + inv.setInventorySlotContents(slot, copy); this.decrStackSize(i, 1); return; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 5363c7e9e..129a665fd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -14,6 +14,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.InventoryUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidUser; @@ -22,7 +23,6 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChunkCoordinates; /** * Base class for single and multi chemplants. @@ -202,17 +202,18 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa if(recipe != null) { - ChunkCoordinates[] positions = getInputPositions(); + DirPos[] positions = getInputPositions(); int[] indices = getSlotIndicesFromIndex(index); - for(ChunkCoordinates coord : positions) { - - TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); + for(DirPos coord : positions) { + + TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); if(te instanceof IInventory) { IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; for(AStack ingredient : recipe.inputs) { @@ -221,15 +222,16 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa boolean found = false; - for(int i = 0; i < inv.getSizeInventory(); i++) { - - ItemStack stack = inv.getStackInSlot(i); - if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(i, stack, 0))) { + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { + + int slot = access != null ? access[i] : i; + ItemStack stack = inv.getStackInSlot(slot); + if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(slot, stack, 0))) { for(int j = indices[0]; j <= indices[1]; j++) { if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { - inv.decrStackSize(i, 1); + inv.decrStackSize(slot, 1); slots[j].stackSize++; continue outer; } @@ -240,7 +242,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa if(slots[j] == null) { slots[j] = stack.copy(); slots[j].stackSize = 1; - inv.decrStackSize(i, 1); + inv.decrStackSize(slot, 1); continue outer; } } @@ -257,17 +259,18 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa private void unloadItems(int index) { - ChunkCoordinates[] positions = getOutputPositions(); + DirPos[] positions = getOutputPositions(); int[] indices = getSlotIndicesFromIndex(index); - for(ChunkCoordinates coord : positions) { - - TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); + for(DirPos coord : positions) { + + TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); if(te instanceof IInventory) { IInventory inv = (IInventory) te; - //ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; for(int i = indices[2]; i <= indices[3]; i++) { @@ -275,12 +278,14 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa if(out != null) { - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - ItemStack target = inv.getStackInSlot(j); + ItemStack target = inv.getStackInSlot(slot); if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { this.decrStackSize(i, 1); @@ -289,15 +294,17 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } } - for(int j = 0; j < inv.getSizeInventory(); j++) { + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { + + int slot = access != null ? access[j] : j; - if(!inv.isItemValidForSlot(j, out)) + if(!inv.isItemValidForSlot(slot, out)) continue; - if(inv.getStackInSlot(j) == null && inv.isItemValidForSlot(j, out)) { + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) { ItemStack copy = out.copy(); copy.stackSize = 1; - inv.setInventorySlotContents(j, copy); + inv.setInventorySlotContents(slot, copy); this.decrStackSize(i, 1); return; } @@ -585,6 +592,6 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa * @return A size 4 int array containing min input, max input, min output and max output indices in that order. */ public abstract int[] getSlotIndicesFromIndex(int index); - public abstract ChunkCoordinates[] getInputPositions(); - public abstract ChunkCoordinates[] getOutputPositions(); + public abstract DirPos[] getInputPositions(); + public abstract DirPos[] getOutputPositions(); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java new file mode 100644 index 000000000..1fbad4f7d --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java @@ -0,0 +1,88 @@ +package com.hbm.tileentity.network; + +import java.util.List; + +import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIProvider, INBTPacketReceiver, IDroneLinkable { + + public int nextX = -1; + public int nextY = -1; + public int nextZ = -1; + + public TileEntityDroneCrate() { + super(19); + } + + @Override + public String getName() { + return "container.droneCrate"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(nextY != -1) { + + List drones = worldObj.getEntitiesWithinAABB(EntityDeliveryDrone.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 2, zCoord + 1)); + for(EntityDeliveryDrone drone : drones) { + if(Vec3.createVectorHelper(drone.motionX, drone.motionY, drone.motionZ).lengthVector() < 0.05) { + drone.setTarget(nextX + 0.5, nextY, nextZ + 0.5); + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setIntArray("pos", new int[] {nextX, nextY, nextZ}); + INBTPacketReceiver.networkPack(this, data, 25); + } + } + + @Override + public BlockPos getPoint() { + return new BlockPos(xCoord, yCoord + 1, zCoord); + } + + @Override + public void setNextTarget(int x, int y, int z) { + this.nextX = x; + this.nextY = y; + this.nextZ = z; + this.markDirty(); + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + int[] pos = nbt.getIntArray("pos"); + this.nextX = pos[0]; + this.nextY = pos[1]; + this.nextZ = pos[2]; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return null; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java index 073562a08..8476fef96 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java @@ -30,7 +30,7 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec List drones = worldObj.getEntitiesWithinAABB(EntityDeliveryDrone.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1).offset(dir.offsetX * height, dir.offsetY * height, dir.offsetZ * height)); for(EntityDeliveryDrone drone : drones) { if(Vec3.createVectorHelper(drone.motionX, drone.motionY, drone.motionZ).lengthVector() < 0.05) { - drone.setTarget(nextX + 0.5, nextY + 0.5, nextZ + 0.5); + drone.setTarget(nextX + 0.5, nextY, nextZ + 0.5); } } } diff --git a/src/main/resources/assets/hbm/textures/models/machines/drone.png b/src/main/resources/assets/hbm/textures/models/machines/drone.png index c264733bd5aed8568681f45230db1c4fa53df8c6..56d1e7312ed1159a4d699f2efe572c103a39d04f 100644 GIT binary patch delta 2724 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 Date: Wed, 20 Sep 2023 16:27:52 +0200 Subject: [PATCH 038/207] the malicious gigglefish from the silly dimension --- .../machine/TileEntityFurnaceCombination.java | 3 +-- .../machine/TileEntityMachineDetector.java | 5 +++++ .../assets/hbm/textures/items/ingot_cft.png | Bin 0 -> 356 bytes .../hbm/textures/items/ingot_crystalline.png | Bin 0 -> 346 bytes .../hbm/textures/models/machines/pump.png | Bin 937 -> 0 bytes .../models/machines/pump_electric.png | Bin 5288 -> 6022 bytes .../textures/models/machines/pump_steam.png | Bin 8373 -> 8963 bytes 7 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/ingot_cft.png create mode 100644 src/main/resources/assets/hbm/textures/items/ingot_crystalline.png delete mode 100644 src/main/resources/assets/hbm/textures/models/machines/pump.png diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index de325d440..4b6c42214 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -122,9 +122,8 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp for(Entity e : entities) e.setFire(5); if(worldObj.getTotalWorldTime() % 10 == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 1, this.zCoord, "hbm:weapon.flamethrowerShoot", 0.25F, 0.5F); + if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); } - - if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); } else { this.progress = 0; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java index e71df5eab..8f62d9f47 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java @@ -52,4 +52,9 @@ public class TileEntityMachineDetector extends TileEntityLoadedBase implements I return 5; } + @Override + public ConnectionPriority getPriority() { + return ConnectionPriority.HIGH; + } + } diff --git a/src/main/resources/assets/hbm/textures/items/ingot_cft.png b/src/main/resources/assets/hbm/textures/items/ingot_cft.png new file mode 100644 index 0000000000000000000000000000000000000000..9346dbb5ab25457a3d44653425ac35b27a6d84fc GIT binary patch literal 356 zcmV-q0h|7bP)~OJ^tJR9*@p$+0;c!qriXzpAVW6&SX#>=CO%Mc1 zqC>v#tDa>UZQB|P)F0$|P8`PwAq*(bbDE|BV7J@dywLc>i$sS2*6X$Ep65Ll00<#y zn#O?i?Du;^@}dumqPW@kNa8ro?+b(wBuT<#GWin%IGs-PeGfp_b#&W}Wq*HtT1;mW zxGT{ifNs07^tlb7OUkkwh4dJM*Xc~2&*xF-U-JV+&X*_Bqmk(V0000V>O z0s+&cvC`RM$uN_cwORJ7KIWhI{$b$1B7{&v2=#jIZb8qUrYUXP0;oLCosWW7Xt&$x zS=+Y6acoK4Eod#K#1%rQEX%mx@2i)`an${AIOsmlGhNpy7oh7p!Z6el6AFSr_tWXb zFbviL{Rc%+kR%CGN((BAg1+woxLhu8FSI`KDKQ~{x~_HK@Asbt08&c&zPBJV*Xz}i ze3`?tEZ;VMl6ao?^8zU)$Kw&-_kV=|rfK5wcmQy_-DsM|ajU9wq9{_ps>Fl@2l@m+&%kmUAr-}@L8Ui*RL*0l^QbJntrzXRbkC* zdgg%h&UxqMrwPCIS@zjT@NK}E16$`wKQ{Wdy6nKgIdY8GZ+&%*{%;tnqnH(Ide;8h z!P#ebEjwdXy=N*=XXG)9%w^Z%{^dVzCB29w&XhE6pYvo?Y4XsDpZ%cGw0htFt?!?fl=j}N-*fT3WBcQpgd43$ z4h1vketn;QH}vh_Bgw1({))V6FJE#0_aQ7kjruCLqV|E6_5J;~_wQR<{qOdv*V*&` z7YBd;pU;L8B4ATP=W}1=Gw4XZX8-=%g>4q`+p}u6-(O}reR}!bUk~TbpTEBL|Lkwq zZ+*<)b&m%T(%`@V2DmBg^(5F8flio@ey#$FVdlUi{1Y YwPeA@?T22)0rMV%r>mdKI;Vst0NcpNCIA2c diff --git a/src/main/resources/assets/hbm/textures/models/machines/pump_electric.png b/src/main/resources/assets/hbm/textures/models/machines/pump_electric.png index a54bf774f55e4649122361e85fcc9aae682aaf13..ca6baef2d874f9f3ef64ae5c169f8f5e95f51609 100644 GIT binary patch literal 6022 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 literal 5288 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 From b1dd1407375761d46cb94b24d76cd7cd6a5d3d07 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 21 Sep 2023 15:30:32 +0200 Subject: [PATCH 039/207] loading dock for drones --- .../com/hbm/blocks/network/DroneCrate.java | 14 ++ .../hbm/entity/item/EntityDeliveryDrone.java | 133 +++++++++++- .../container/ContainerDroneCrate.java | 79 +++++++ .../com/hbm/inventory/gui/GUIDroneCrate.java | 75 +++++++ .../item/RenderDeliveryDrone.java | 17 +- .../network/TileEntityDroneCrate.java | 193 +++++++++++++++++- .../network/TileEntityDroneWaypoint.java | 26 ++- .../hbm/textures/items/delivery_drone.png | Bin 0 -> 267 bytes 8 files changed, 514 insertions(+), 23 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerDroneCrate.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java rename src/main/java/com/hbm/render/{ => entity}/item/RenderDeliveryDrone.java (55%) create mode 100644 src/main/resources/assets/hbm/textures/items/delivery_drone.png diff --git a/src/main/java/com/hbm/blocks/network/DroneCrate.java b/src/main/java/com/hbm/blocks/network/DroneCrate.java index 02180bfbd..bd82c8d20 100644 --- a/src/main/java/com/hbm/blocks/network/DroneCrate.java +++ b/src/main/java/com/hbm/blocks/network/DroneCrate.java @@ -7,9 +7,11 @@ import java.util.Random; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityDroneCrate; import com.hbm.util.I18nUtil; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -54,6 +56,18 @@ public class DroneCrate extends BlockContainer implements ILookOverlay, ITooltip public IIcon getIcon(int side, int metadata) { return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + return true; + } else { + return false; + } + } @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index f8b50012d..d63dd43d3 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -1,14 +1,20 @@ package com.hbm.entity.item; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.Fluids; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class EntityDeliveryDrone extends Entity { +public class EntityDeliveryDrone extends Entity implements IInventory { protected int turnProgress; protected double syncPosX; @@ -17,6 +23,9 @@ public class EntityDeliveryDrone extends Entity { @SideOnly(Side.CLIENT) protected double velocityX; @SideOnly(Side.CLIENT) protected double velocityY; @SideOnly(Side.CLIENT) protected double velocityZ; + + protected ItemStack[] slots = new ItemStack[this.getSizeInventory()]; + public FluidStack fluid; public double targetX = -1; public double targetY = -1; @@ -60,7 +69,20 @@ public class EntityDeliveryDrone extends Entity { @Override protected void entityInit() { - this.dataWatcher.addObject(10, new Integer(0)); + this.dataWatcher.addObject(10, new Byte((byte) 0)); + } + + /** + * 0: Empty
+ * 1: Crate
+ * 2: Barrel
+ */ + public void setAppearance(int style) { + this.dataWatcher.updateObject(10, (byte) style); + } + + public int getAppearance() { + return this.dataWatcher.getWatchableObjectByte(10); } @Override @@ -107,15 +129,57 @@ public class EntityDeliveryDrone extends Entity { public double getSpeed() { return 0.125D; } - + @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { + protected void writeEntityToNBT(NBTTagCompound nbt) { + + nbt.setDouble("tX", targetX); + nbt.setDouble("tY", targetY); + nbt.setDouble("tZ", targetZ); + NBTTagList nbttaglist = new NBTTagList(); + + for(int i = 0; i < this.slots.length; ++i) { + if(this.slots[i] != null) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte) i); + this.slots[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + } + + nbt.setTag("Items", nbttaglist); + + if(fluid != null) { + nbt.setString("fluidType", fluid.type.getUnlocalizedName()); + nbt.setInteger("fluidAmount", fluid.fill); + } } @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { + protected void readEntityFromNBT(NBTTagCompound nbt) { + + if(nbt.hasKey("tY")) { + this.targetX = nbt.getDouble("tX"); + this.targetY = nbt.getDouble("tY"); + this.targetZ = nbt.getDouble("tZ"); + } + NBTTagList nbttaglist = nbt.getTagList("Items", 10); + this.slots = new ItemStack[this.getSizeInventory()]; + + for(int i = 0; i < nbttaglist.tagCount(); ++i) { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + int j = nbttagcompound1.getByte("Slot") & 255; + + if(j >= 0 && j < this.slots.length) { + this.slots[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1); + } + } + + if(nbt.hasKey("fluidType")) { + this.fluid = new FluidStack(Fluids.fromName(nbt.getString("fluidType")), nbt.getInteger("fluidAmount")); + } } @SideOnly(Side.CLIENT) @@ -135,4 +199,63 @@ public class EntityDeliveryDrone extends Entity { this.motionY = this.velocityY; this.motionZ = this.velocityZ; } + + @Override + public ItemStack getStackInSlot(int slot) { + return slots[slot]; + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + if(this.slots[slot] != null) { + ItemStack itemstack; + + if(this.slots[slot].stackSize <= amount) { + itemstack = this.slots[slot]; + this.slots[slot] = null; + return itemstack; + } else { + itemstack = this.slots[slot].splitStack(amount); + + if(this.slots[slot].stackSize == 0) { + this.slots[slot] = null; + } + + return itemstack; + } + } else { + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + if(this.slots[slot] != null) { + ItemStack itemstack = this.slots[slot]; + this.slots[slot] = null; + return itemstack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + this.slots[slot] = stack; + + if(stack != null && stack.stackSize > this.getInventoryStackLimit()) { + stack.stackSize = this.getInventoryStackLimit(); + } + } + + @Override public int getSizeInventory() { return 18; } + @Override public String getInventoryName() { return "container.drone"; } + @Override public int getInventoryStackLimit() { return 64; } + @Override public boolean hasCustomInventoryName() { return false; } + @Override public boolean isUseableByPlayer(EntityPlayer player) { return false; } + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return false; } + + @Override public void markDirty() { } + @Override public void openInventory() { } + @Override public void closeInventory() { } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneCrate.java b/src/main/java/com/hbm/inventory/container/ContainerDroneCrate.java new file mode 100644 index 000000000..cf9338763 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneCrate.java @@ -0,0 +1,79 @@ +package com.hbm.inventory.container; + +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.network.TileEntityDroneCrate; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerDroneCrate extends Container { + + protected TileEntityDroneCrate crate; + + public ContainerDroneCrate(InventoryPlayer invPlayer, TileEntityDroneCrate inserter) { + this.crate = inserter; + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 6; j++) { + this.addSlotToContainer(new Slot(inserter, j + i * 6, 8 + j * 18, 17 + i * 18)); + } + } + + this.addSlotToContainer(new Slot(inserter, 18, 125, 53)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(slot); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(slot <= crate.getSizeInventory() - 1) { + if(!this.mergeItemStack(var5, crate.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 18, 19, false)) + return null; + } else if(!this.mergeItemStack(var5, 0, 18, false)) { + return null; + } + + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(player, var5); + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return crate.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java b/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java new file mode 100644 index 000000000..cd99405b4 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java @@ -0,0 +1,75 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerDroneCrate; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.network.TileEntityDroneCrate; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIDroneCrate extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crate_drone.png"); + private TileEntityDroneCrate crate; + + public GUIDroneCrate(InventoryPlayer invPlayer, TileEntityDroneCrate crate) { + super(new ContainerDroneCrate(invPlayer, crate)); + this.crate = crate; + + this.xSize = 176; + this.ySize = 185; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + crate.tank.renderTankInfo(this, x, y, guiLeft + 125, guiTop + 17, 16, 34); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + String op = null; + + // Toggle type + if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 16 < y && guiTop + 16 + 18 >= y) op = "type"; + // Toggle mode + if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 52 < y && guiTop + 52 + 18 >= y) op = "mode"; + + if(op != null) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean(op, true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, crate.xCoord, crate.yCoord, crate.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.crate.hasCustomInventoryName() ? this.crate.getInventoryName() : I18n.format(this.crate.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + drawTexturedModalRect(guiLeft + 151, guiTop + 16, 194, crate.itemType ? 0 : 18, 18, 18); + drawTexturedModalRect(guiLeft + 151, guiTop + 52, 176, crate.sendingMode ? 18 : 0, 18, 18); + + crate.tank.renderTank(guiLeft + 125, guiTop + 51, this.zLevel, 16, 34); + } +} diff --git a/src/main/java/com/hbm/render/item/RenderDeliveryDrone.java b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java similarity index 55% rename from src/main/java/com/hbm/render/item/RenderDeliveryDrone.java rename to src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java index d84b1de01..0c7434688 100644 --- a/src/main/java/com/hbm/render/item/RenderDeliveryDrone.java +++ b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java @@ -1,7 +1,8 @@ -package com.hbm.render.item; +package com.hbm.render.entity.item; import org.lwjgl.opengl.GL11; +import com.hbm.entity.item.EntityDeliveryDrone; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; @@ -16,17 +17,25 @@ public class RenderDeliveryDrone extends Render { GL11.glPushMatrix(); GL11.glTranslated(x, y, z); + GL11.glDisable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.delivery_drone_tex); ResourceManager.delivery_drone.renderPart("Drone"); - ResourceManager.delivery_drone.renderPart("Barrel"); + + EntityDeliveryDrone drone = (EntityDeliveryDrone) entity; + int style = drone.getAppearance(); + + if(style == 1) ResourceManager.delivery_drone.renderPart("Crate"); + if(style == 2) ResourceManager.delivery_drone.renderPart("Barrel"); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glPopMatrix(); } @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return null; + protected ResourceLocation getEntityTexture(Entity drone) { + return ResourceManager.delivery_drone_tex; } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java index 1fbad4f7d..5512fe3ab 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java @@ -3,29 +3,44 @@ package com.hbm.tileentity.network; import java.util.List; import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.container.ContainerDroneCrate; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIDroneCrate; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.fauxpointtwelve.BlockPos; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIProvider, INBTPacketReceiver, IDroneLinkable { +public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIProvider, INBTPacketReceiver, IControlReceiver, IDroneLinkable, IFluidStandardTransceiver { + + public FluidTank tank; public int nextX = -1; public int nextY = -1; public int nextZ = -1; + + public boolean sendingMode = false; + public boolean itemType = true; public TileEntityDroneCrate() { super(19); + this.tank = new FluidTank(Fluids.NONE, 64_000); } @Override @@ -38,22 +53,141 @@ public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIP if(!worldObj.isRemote) { + this.tank.setType(18, slots); + + if(sendingMode && !itemType && worldObj.getTotalWorldTime() % 20 == 0) { + this.subscribeToAllAround(tank.getTankType(), this); + } + + if(!sendingMode && !itemType && worldObj.getTotalWorldTime() % 20 == 0) { + this.sendFluidToAll(tank, this); + } + if(nextY != -1) { List drones = worldObj.getEntitiesWithinAABB(EntityDeliveryDrone.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 2, zCoord + 1)); for(EntityDeliveryDrone drone : drones) { if(Vec3.createVectorHelper(drone.motionX, drone.motionY, drone.motionZ).lengthVector() < 0.05) { drone.setTarget(nextX + 0.5, nextY, nextZ + 0.5); + + if(sendingMode && itemType) loadItems(drone); + if(!sendingMode && itemType) unloadItems(drone); + if(sendingMode && !itemType) loadFluid(drone); + if(!sendingMode && !itemType) unloadFluid(drone); } } } NBTTagCompound data = new NBTTagCompound(); data.setIntArray("pos", new int[] {nextX, nextY, nextZ}); + data.setBoolean("mode", sendingMode); + data.setBoolean("type", itemType); + tank.writeToNBT(data, "t"); INBTPacketReceiver.networkPack(this, data, 25); } } + @Override + public void networkUnpack(NBTTagCompound nbt) { + int[] pos = nbt.getIntArray("pos"); + this.nextX = pos[0]; + this.nextY = pos[1]; + this.nextZ = pos[2]; + this.sendingMode = nbt.getBoolean("mode"); + this.itemType = nbt.getBoolean("type"); + tank.readFromNBT(nbt, "t"); + } + + protected void loadItems(EntityDeliveryDrone drone) { + + if(drone.getAppearance() != 0) return; + + boolean loaded = false; + + for(int i = 0; i < 18; i++) { + if(this.slots[i] != null) { + loaded = true; + drone.setInventorySlotContents(i, this.slots[i].copy()); + this.slots[i] = null; + } + } + + if(loaded) { + this.markDirty(); + drone.setAppearance(1); + } + } + + protected void unloadItems(EntityDeliveryDrone drone) { + + if(drone.getAppearance() != 1) return; + + boolean emptied = true; + + for(int i = 0; i < 18; i++) { + ItemStack droneSlot = drone.getStackInSlot(i); + + if(this.slots[i] == null && droneSlot != null) { + this.slots[i] = droneSlot.copy(); + drone.setInventorySlotContents(i, null); + } else if(this.slots[i] != null && droneSlot != null) { + emptied = false; + } + } + + this.markDirty(); + + if(emptied) drone.setAppearance(0); + } + + protected void loadFluid(EntityDeliveryDrone drone) { + + if(drone.getAppearance() != 0) return; + + if(this.tank.getFill() > 0) { + drone.fluid = new FluidStack(tank.getTankType(), tank.getFill()); + this.tank.setFill(0); + drone.setAppearance(2); + + this.markDirty(); + } + } + + protected void unloadFluid(EntityDeliveryDrone drone) { + + if(drone.getAppearance() != 2) return; + + if(drone.fluid != null && drone.fluid.type == tank.getTankType()) { + + if(drone.fluid.fill + tank.getFill() <= tank.getMaxFill()) { + tank.setFill(tank.getFill() + drone.fluid.fill); + drone.fluid = null; + drone.setAppearance(0); + } else { + int overshoot = drone.fluid.fill + tank.getFill() - tank.getMaxFill(); + tank.setFill(tank.getMaxFill()); + drone.fluid.fill = overshoot; + } + + this.markDirty(); + } + } + + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return true; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return true; + } + @Override public BlockPos getPoint() { return new BlockPos(xCoord, yCoord + 1, zCoord); @@ -66,23 +200,72 @@ public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIP this.nextZ = z; this.markDirty(); } - + @Override - public void networkUnpack(NBTTagCompound nbt) { + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + int[] pos = nbt.getIntArray("pos"); this.nextX = pos[0]; this.nextY = pos[1]; this.nextZ = pos[2]; + this.sendingMode = nbt.getBoolean("mode"); + this.itemType = nbt.getBoolean("type"); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setIntArray("pos", new int[] {nextX, nextY, nextZ}); + nbt.setBoolean("mode", sendingMode); + nbt.setBoolean("type", itemType); + tank.writeToNBT(nbt, "t"); } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; + return new ContainerDroneCrate(player.inventory, this); } @Override @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; + return new GUIDroneCrate(player.inventory, this); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + + if(data.hasKey("mode")) { + this.sendingMode = !this.sendingMode; + this.markChanged(); + } + + if(data.hasKey("type")) { + this.itemType = !this.itemType; + this.markChanged(); + } + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] { tank }; + } + + @Override + public FluidTank[] getSendingTanks() { + return !sendingMode && !itemType ? new FluidTank[] { tank } : new FluidTank[0]; + } + + @Override + public FluidTank[] getReceivingTanks() { + return sendingMode && !itemType ? new FluidTank[] { tank } : new FluidTank[0]; } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java index 8476fef96..99cddf18f 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java @@ -47,15 +47,6 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec double z = zCoord + height * dir.offsetZ + 0.5; worldObj.spawnParticle("reddust", x, y, z, 0, 0, 0); - - /*Vec3 vec = Vec3.createVectorHelper(nextX + 0.5 - x, nextY + 0.5 - y, nextZ + 0.5 - z); - double speed = Math.min(vec.lengthVector(), 0.5); - double mX = vec.xCoord * speed; - double mY = vec.yCoord * speed; - double mZ = vec.zCoord * speed; - vec = vec.normalize(); - - worldObj.spawnParticle("crit", x, y, z, mX, mY, mZ);*/ } } } @@ -87,4 +78,21 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec height += h; height = MathHelper.clamp_int(height, 1, 15); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + int[] pos = nbt.getIntArray("pos"); + this.nextX = pos[0]; + this.nextY = pos[1]; + this.nextZ = pos[2]; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setIntArray("pos", new int[] {nextX, nextY, nextZ}); + } } diff --git a/src/main/resources/assets/hbm/textures/items/delivery_drone.png b/src/main/resources/assets/hbm/textures/items/delivery_drone.png new file mode 100644 index 0000000000000000000000000000000000000000..a1bd3424a0c0740162a701616a7a2d883450d5a1 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf)x*H@j&Suct z*wA$U%)2w^|JSD{UJ{t#$doAYPjm)v(FUf-X`Zu|>29~^I~rEKE#s5z^jEJ1IrhAs zy|z&&Ed1(It%lP##T%Yh@g4a5t?<~}bBmXR$TjS|-EuXd{=>=7d!8=aI_>VZC1=;q zFR;lqI2It%y6VKf;@^QmTH0wnjBYbP0l+XkKoGxvb literal 0 HcmV?d00001 From bb591306dbd6a2d62f78732a7ef4ee9956a8867f Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 22 Sep 2023 15:24:23 +0200 Subject: [PATCH 040/207] custom falling block, mojang stink --- .../java/com/hbm/blocks/BlockFallingNT.java | 96 ++++++ .../java/com/hbm/blocks/machine/NTMAnvil.java | 42 ++- .../hbm/blocks/network/BlockCableGauge.java | 24 +- .../java/com/hbm/entity/EntityMappings.java | 1 + .../hbm/entity/effect/EntityFalloutRain.java | 6 +- .../hbm/entity/item/EntityFallingBlockNT.java | 286 ++++++++++++++++++ .../entity/missile/EntityMissileCustom.java | 1 - .../com/hbm/explosion/ExplosionChaos.java | 4 +- .../explosion/ExplosionNukeRayBatched.java | 4 - .../java/com/hbm/items/tool/ItemWandD.java | 7 - src/main/java/com/hbm/main/ClientProxy.java | 1 + .../entity/item/RenderFallingBlockNT.java | 71 +++++ .../network/TileEntityDroneCrate.java | 1 - 13 files changed, 501 insertions(+), 43 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/BlockFallingNT.java create mode 100644 src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java create mode 100644 src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java diff --git a/src/main/java/com/hbm/blocks/BlockFallingNT.java b/src/main/java/com/hbm/blocks/BlockFallingNT.java new file mode 100644 index 000000000..f880d7268 --- /dev/null +++ b/src/main/java/com/hbm/blocks/BlockFallingNT.java @@ -0,0 +1,96 @@ +package com.hbm.blocks; + +import java.util.Random; + +import com.hbm.entity.item.EntityFallingBlockNT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; + +public class BlockFallingNT extends Block { + + public static boolean fallInstantly; + + public BlockFallingNT() { + super(Material.sand); + this.setCreativeTab(CreativeTabs.tabBlock); + } + + public BlockFallingNT(Material mat) { + super(mat); + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + if(!world.isRemote) { + this.fall(world, x, y, z); + } + } + + protected void fall(World world, int x, int y, int z) { + + if(canFallThrough(world, x, y - 1, z) && y >= 0) { + byte range = 32; + + if(!fallInstantly && world.checkChunksExist(x - range, y - range, z - range, x + range, y + range, z + range)) { + if(!world.isRemote) { + EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(world, x + 0.5D, y + 0.5D, z + 0.5D, this, world.getBlockMetadata(x, y, z)); + this.modifyFallingBlock(entityfallingblock); + world.spawnEntityInWorld(entityfallingblock); + } + } else { + world.setBlockToAir(x, y, z); + + while(canFallThrough(world, x, y - 1, z) && y > 0) { + --y; + } + + if(y > 0) { + world.setBlock(x, y, z, this); + } + } + } + } + + protected void modifyFallingBlock(EntityFallingBlockNT falling) { } + + @Override + public int tickRate(World world) { + return 2; + } + + public static boolean canFallThrough(World world, int x, int y, int z) { + Block block = world.getBlock(x, y, z); + + if(block.isAir(world, x, y, z)) { + return true; + } else if(block == Blocks.fire) { + return true; + } else { + Material material = block.getMaterial(); + return material == Material.water ? true : material == Material.lava; + } + } + + public void onLand(World world, int x, int y, int z, int meta) { } + + @SideOnly(Side.CLIENT) public boolean shouldOverrideRenderer() { return false; } + @SideOnly(Side.CLIENT) public void overrideRenderer(EntityFallingBlockNT falling, RenderBlocks renderBlocks, Tessellator tessellator) { } +} diff --git a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java index 099748d19..5a73eb253 100644 --- a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java +++ b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java @@ -4,12 +4,16 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import com.hbm.blocks.BlockFallingNT; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; +import com.hbm.entity.item.EntityFallingBlockNT; import com.hbm.inventory.container.ContainerAnvil; import com.hbm.inventory.gui.GUIAnvil; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -17,9 +21,10 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.block.BlockFalling; import net.minecraft.block.material.Material; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -31,8 +36,9 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; -public class NTMAnvil extends BlockFalling implements ITooltipProvider, IGUIProvider { +public class NTMAnvil extends BlockFallingNT implements ITooltipProvider, IGUIProvider { public final int tier; @@ -180,4 +186,36 @@ public class NTMAnvil extends BlockFalling implements ITooltipProvider, IGUIProv public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIAnvil(player.inventory, ((NTMAnvil)world.getBlock(x, y, z)).tier); } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldOverrideRenderer() { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public void overrideRenderer(EntityFallingBlockNT falling, RenderBlocks renderBlocks, Tessellator tessellator) { + + World world = falling.worldObj; + float rotation = 0; + + if(falling.getMeta() == 2) + rotation = 90F / 180F * (float) Math.PI; + + if(falling.getMeta() == 3) + rotation = 270F / 180F * (float) Math.PI; + + if(falling.getMeta() == 4) + rotation = 180F / 180F * (float)Math.PI; + + tessellator.addTranslation(0F, -0.5F, 0F); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Top", getIcon(1, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Bottom", getIcon(0, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Front", getIcon(0, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Back", getIcon(0, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Left", getIcon(0, 0), tessellator, rotation, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Right", getIcon(0, 0), tessellator, rotation, true); + tessellator.addTranslation(0F, 0.5F, 0F); + } } diff --git a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java index 93b29daec..54921d0c7 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java +++ b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java @@ -14,13 +14,8 @@ import com.hbm.tileentity.network.TileEntityCableBaseNT; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; -import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; @@ -103,8 +98,7 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, return IBlockMultiPass.getRenderType(); } - @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) - public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent { + public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver { private BigInteger lastMeasurement = BigInteger.valueOf(10); private long deltaTick = 0; @@ -145,21 +139,5 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } - - public String getComponentName() { - return "ntm_cable_gauge"; - } - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getTransfer(Context context, Arguments args) { - return new Object[] {deltaTick, deltaSecond}; - } - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getInfo(Context context, Arguments args) { - return new Object[] {deltaTick, deltaSecond, xCoord, yCoord, zCoord}; - } } } diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index e10fb1097..0b8d01653 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -213,6 +213,7 @@ public class EntityMappings { addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); addEntity(EntityMist.class, "entity_mist", 250, false); addEntity(EntityAcidBomb.class, "entity_acid_bomb", 1000); + addEntity(EntityFallingBlockNT.class, "entity_falling_block_nt", 1000); addEntity(EntityItemWaste.class, "entity_item_waste", 100); addEntity(EntityItemBuoyant.class, "entity_item_buoyant", 100); diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index 51ee981cb..4eae334d6 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -4,12 +4,12 @@ import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; import com.hbm.config.FalloutConfigJSON; import com.hbm.config.FalloutConfigJSON.FalloutEntry; +import com.hbm.entity.item.EntityFallingBlockNT; import com.hbm.saveddata.AuxSavedData; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; @@ -178,8 +178,8 @@ public class EntityFalloutRain extends Entity { for(int i = 0; i <= depth; i++) { hardness = worldObj.getBlock(x, y + i, z).getBlockHardness(worldObj, x, y + i, z); if(hardness <= Blocks.stonebrick.getExplosionResistance(null) && hardness >= 0) { - EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldObj, x + 0.5D, y + 0.5D + i, z + 0.5D, worldObj.getBlock(x, y + i, z), worldObj.getBlockMetadata(x, y + i, z)); - entityfallingblock.field_145813_c = false; //turn off block drops because block dropping was coded by a mule with dementia + EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(worldObj, x + 0.5D, y + 0.5D + i, z + 0.5D, worldObj.getBlock(x, y + i, z), worldObj.getBlockMetadata(x, y + i, z)); + entityfallingblock.canDrop = false; //turn off block drops because block dropping was coded by a mule with dementia worldObj.spawnEntityInWorld(entityfallingblock); } } diff --git a/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java new file mode 100644 index 000000000..483e0dd95 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java @@ -0,0 +1,286 @@ +package com.hbm.entity.item; + +import java.util.ArrayList; +import java.util.Iterator; + +import com.hbm.blocks.BlockFallingNT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockFalling; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.crash.CrashReportCategory; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class EntityFallingBlockNT extends Entity { + + private Block fallingBlock; + public int fallingMeta = -1; + public int fallingTicks; + public boolean canDrop; + private boolean destroyOnLand; + private boolean canHurtEntities; + private int damageCap; + private float damageAmount; + public NBTTagCompound tileNBT; + + public EntityFallingBlockNT(World world) { + super(world); + this.canDrop = true; + this.damageCap = 40; + this.damageAmount = 2.0F; + this.setSize(0.98F, 0.98F); + this.yOffset = this.height / 2.0F; + } + + public EntityFallingBlockNT(World world, double x, double y, double z, Block block) { + this(world, x, y, z, block, 0); + } + + public EntityFallingBlockNT(World world, double x, double y, double z, Block block, int meta) { + super(world); + this.canDrop = true; + this.damageCap = 40; + this.damageAmount = 2.0F; + this.fallingBlock = block; + this.dataWatcher.updateObject(10, Block.getIdFromBlock(fallingBlock)); + this.fallingMeta = meta; + this.dataWatcher.updateObject(11, fallingMeta); + this.preventEntitySpawning = true; + this.setPosition(x, y, z); + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + this.prevPosX = x; + this.prevPosY = y; + this.prevPosZ = z; + } + + @Override protected void entityInit() { + this.dataWatcher.addObject(10, new Integer(0)); + this.dataWatcher.addObject(11, new Integer(0)); + } + + public Block getBlock() { + if(this.fallingBlock != null) return this.fallingBlock; + + this.fallingBlock = Block.getBlockById(this.dataWatcher.getWatchableObjectInt(10)); + return this.fallingBlock; + } + + public int getMeta() { + if(this.fallingMeta != -1) return this.fallingMeta; + this.fallingMeta = 0; + + this.fallingMeta = this.dataWatcher.getWatchableObjectInt(11); + return this.fallingMeta; + } + + @Override protected boolean canTriggerWalking() { return false; } + @Override public boolean canBeCollidedWith() { return !this.isDead; } + + public void onUpdate() { + + if(this.getBlock().getMaterial() == Material.air) { + this.setDead(); + } else { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + ++this.fallingTicks; + this.motionY -= 0.04D; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.98D; + this.motionY *= 0.98D; + this.motionZ *= 0.98D; + + if(!this.worldObj.isRemote) { + int x = MathHelper.floor_double(this.posX); + int y = MathHelper.floor_double(this.posY); + int z = MathHelper.floor_double(this.posZ); + + if(this.fallingTicks == 1) { + if(this.worldObj.getBlock(x, y, z) != this.getBlock()) { + this.setDead(); + return; + } + + this.worldObj.setBlockToAir(x, y, z); + } + + if(this.onGround) { + this.motionX *= 0.7D; + this.motionZ *= 0.7D; + this.motionY *= -0.5D; + + if(this.worldObj.getBlock(x, y, z) != Blocks.piston_extension) { + this.setDead(); + + if(!this.destroyOnLand && replacementCheck(x, y, z) && this.worldObj.setBlock(x, y, z, this.getBlock(), this.getMeta(), 3)) { + + if(this.getBlock() instanceof BlockFalling) ((BlockFalling) this.getBlock()).func_149828_a(this.worldObj, x, y, z, this.getMeta()); + if(this.getBlock() instanceof BlockFallingNT) ((BlockFallingNT) this.getBlock()).onLand(this.worldObj, x, y, z, this.getMeta()); + + if(this.tileNBT != null && this.getBlock() instanceof ITileEntityProvider) { + TileEntity tileentity = this.worldObj.getTileEntity(x, y, z); + + if(tileentity != null) { + NBTTagCompound nbt = new NBTTagCompound(); + tileentity.writeToNBT(nbt); + Iterator it = this.tileNBT.func_150296_c().iterator(); + + while(it.hasNext()) { + String s = (String) it.next(); + NBTBase nbtbase = this.tileNBT.getTag(s); + + if(!s.equals("x") && !s.equals("y") && !s.equals("z")) { + nbt.setTag(s, nbtbase.copy()); + } + } + + tileentity.readFromNBT(nbt); + tileentity.markDirty(); + } + } + } else if(this.canDrop && !this.destroyOnLand) { + this.entityDropItem(new ItemStack(this.getBlock(), 1, this.getBlock().damageDropped(this.getMeta())), 0.0F); + } + } + } else if(this.fallingTicks > 100 && !this.worldObj.isRemote && (y < 1 || y > 256) || this.fallingTicks > 600) { + if(this.canDrop) { + this.entityDropItem(new ItemStack(this.getBlock(), 1, this.getBlock().damageDropped(this.getMeta())), 0.0F); + } + + this.setDead(); + } + } + } + } + + public boolean replacementCheck(int x, int y, int z) { + return worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z) && this.getBlock().canBlockStay(worldObj, x, y, z); + } + + @Override + protected void fall(float fallDistance) { + + if(this.canHurtEntities) { + int fall = MathHelper.ceiling_float_int(fallDistance - 1.0F); + + if(fall > 0) { + ArrayList arraylist = new ArrayList(this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox)); + boolean isAnvil = this.getBlock() == Blocks.anvil; + DamageSource damagesource = isAnvil ? DamageSource.anvil : DamageSource.fallingBlock; + Iterator iterator = arraylist.iterator(); + + while(iterator.hasNext()) { + Entity entity = (Entity) iterator.next(); + entity.attackEntityFrom(damagesource, (float) Math.min(MathHelper.floor_float((float) fall * this.damageAmount), this.damageCap)); + } + + if(isAnvil && (double) this.rand.nextFloat() < 0.05D + (double) fall * 0.05D) { + int j = this.getMeta() >> 2; + int k = this.getMeta() & 3; + ++j; + + if(j > 2) { + this.destroyOnLand = true; + } else { + this.fallingMeta = k | j << 2; + } + } + } + } + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setByte("Tile", (byte) Block.getIdFromBlock(this.fallingBlock)); + nbt.setInteger("TileID", Block.getIdFromBlock(this.fallingBlock)); + nbt.setByte("Data", (byte) this.fallingMeta); + nbt.setByte("Time", (byte) this.fallingTicks); + nbt.setBoolean("DropItem", this.canDrop); + nbt.setBoolean("HurtEntities", this.canHurtEntities); + nbt.setFloat("FallHurtAmount", this.damageAmount); + nbt.setInteger("FallHurtMax", this.damageCap); + + if(this.tileNBT != null) { + nbt.setTag("TileEntityData", this.tileNBT); + } + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + + if(nbt.hasKey("TileID", 99)) { + this.fallingBlock = Block.getBlockById(nbt.getInteger("TileID")); + } else { + this.fallingBlock = Block.getBlockById(nbt.getByte("Tile") & 255); + } + + this.fallingMeta = nbt.getByte("Data") & 255; + this.fallingTicks = nbt.getByte("Time") & 255; + + if(nbt.hasKey("HurtEntities", 99)) { + this.canHurtEntities = nbt.getBoolean("HurtEntities"); + this.damageAmount = nbt.getFloat("FallHurtAmount"); + this.damageCap = nbt.getInteger("FallHurtMax"); + } else if(this.fallingBlock == Blocks.anvil) { + this.canHurtEntities = true; + } + + if(nbt.hasKey("DropItem", 99)) { + this.canDrop = nbt.getBoolean("DropItem"); + } + + if(nbt.hasKey("TileEntityData", 10)) { + this.tileNBT = nbt.getCompoundTag("TileEntityData"); + } + + if(this.fallingBlock.getMaterial() == Material.air) { + this.fallingBlock = Blocks.sand; + } + } + + public void func_145806_a(boolean p_145806_1_) { + this.canHurtEntities = p_145806_1_; + } + + @Override + public void addEntityCrashInfo(CrashReportCategory report) { + super.addEntityCrashInfo(report); + report.addCrashSection("Immitating block ID", Integer.valueOf(Block.getIdFromBlock(this.fallingBlock))); + report.addCrashSection("Immitating block data", Integer.valueOf(this.fallingMeta)); + } + + @Override + @SideOnly(Side.CLIENT) + public float getShadowSize() { + return 0.0F; + } + + @SideOnly(Side.CLIENT) + public World getWorldForRender() { + return this.worldObj; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean canRenderOnFire() { + return false; + } + + public Block getBlockForRender() { + return this.getBlock(); + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index 41841568c..0fed51411 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.BlockTaint; -import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityBalefire; import com.hbm.entity.logic.EntityNukeExplosionMK5; diff --git a/src/main/java/com/hbm/explosion/ExplosionChaos.java b/src/main/java/com/hbm/explosion/ExplosionChaos.java index 38b3514da..820f3df46 100644 --- a/src/main/java/com/hbm/explosion/ExplosionChaos.java +++ b/src/main/java/com/hbm/explosion/ExplosionChaos.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.entity.grenade.EntityGrenadeTau; import com.hbm.entity.grenade.EntityGrenadeZOMG; +import com.hbm.entity.item.EntityFallingBlockNT; import com.hbm.entity.missile.EntityMissileAntiBallistic; import com.hbm.entity.missile.EntityMissileBase; import com.hbm.entity.particle.EntityChlorineFX; @@ -29,7 +30,6 @@ import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.entity.item.EntityTNTPrimed; import net.minecraft.entity.passive.EntitySheep; import net.minecraft.entity.player.EntityPlayer; @@ -406,7 +406,7 @@ public class ExplosionChaos { public static void pDestruction(World world, int x, int y, int z) { - EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); + EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(world, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); world.spawnEntityInWorld(entityfallingblock); } diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java index f8cc562fe..8f075876c 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java @@ -6,14 +6,10 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.init.Blocks; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 2d661577c..88a0522c8 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -3,21 +3,14 @@ package com.hbm.items.tool; import java.util.List; import com.hbm.entity.effect.EntityNukeTorex; -import com.hbm.handler.pollution.PollutionHandler; -import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.lib.Library; import com.hbm.util.TrackerUtil; -import cpw.mods.fml.relauncher.ReflectionHelper; -import net.minecraft.entity.EntityTracker; -import net.minecraft.entity.EntityTrackerEntry; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.IntHashMap; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; -import net.minecraft.world.WorldServer; public class ItemWandD extends Item { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c451c670f..19ef08ea7 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -714,6 +714,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); RenderingRegistry.registerEntityRenderingHandler(EntityTNTPrimedBase.class, new RenderTNTPrimedBase()); RenderingRegistry.registerEntityRenderingHandler(EntityDeliveryDrone.class, new RenderDeliveryDrone()); + RenderingRegistry.registerEntityRenderingHandler(EntityFallingBlockNT.class, new RenderFallingBlockNT()); //mobs RenderingRegistry.registerEntityRenderingHandler(EntityCreeperNuclear.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor.png").setSwellMod(5F)); RenderingRegistry.registerEntityRenderingHandler(EntityCreeperTainted.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_tainted.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor_taint.png")); diff --git a/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java b/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java new file mode 100644 index 000000000..d5ed89036 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java @@ -0,0 +1,71 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockFallingNT; +import com.hbm.entity.item.EntityFallingBlockNT; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class RenderFallingBlockNT extends Render { + + private final RenderBlocks renderBlocks = new RenderBlocks(); + + public RenderFallingBlockNT() { + this.shadowSize = 0.5F; + } + + public void doRender(EntityFallingBlockNT entity, double x, double y, double z, float f0, float f1) { + + World world = entity.getWorldForRender(); + Block block = entity.getBlockForRender(); + + int iX = MathHelper.floor_double(entity.posX); + int iY = MathHelper.floor_double(entity.posY); + int iZ = MathHelper.floor_double(entity.posZ); + + if(block != null && block != world.getBlock(iX, iY, iZ)) { + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + this.bindEntityTexture(entity); + GL11.glDisable(GL11.GL_LIGHTING); + + this.renderBlocks.blockAccess = world; + + if(block instanceof BlockFallingNT && ((BlockFallingNT) block).shouldOverrideRenderer()) { + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + ((BlockFallingNT) block).overrideRenderer(entity, renderBlocks, tessellator); + tessellator.draw(); + } else { + this.renderBlocks.setRenderBoundsFromBlock(block); + this.renderBlocks.renderBlockSandFalling(block, world, iX, iY, iZ, entity.fallingMeta); + } + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + } + + protected ResourceLocation getEntityTexture(EntityFallingBlockNT entity) { + return TextureMap.locationBlocksTexture; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityFallingBlockNT) entity); + } + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + this.doRender((EntityFallingBlockNT) entity, x, y, z, f0, f1); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java index 5512fe3ab..eb530096d 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java @@ -22,7 +22,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; From f5c17f8bd7b638eb3f483724919d519cea125c90 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 23 Sep 2023 23:34:22 +0200 Subject: [PATCH 041/207] smart pathing waypoints --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../com/hbm/blocks/network/DroneCrate.java | 4 + .../blocks/network/DroneWaypointRequest.java | 100 +++++++++ .../hbm/entity/item/EntityDeliveryDrone.java | 146 +++++++------- .../com/hbm/entity/item/EntityDroneBase.java | 97 +++++++++ .../inventory/gui/GUIMachineTurbineGas.java | 4 - src/main/java/com/hbm/items/ModItems.java | 3 + .../com/hbm/items/special/ItemAntiCheat.java | 33 --- .../java/com/hbm/items/tool/ItemDrone.java | 50 +++++ .../java/com/hbm/main/ResourceManager.java | 1 + .../entity/item/RenderDeliveryDrone.java | 6 +- .../hbm/render/entity/mob/RenderGlyphid.java | 3 - .../entity/mob/RenderGlyphidNuclear.java | 2 - .../java/com/hbm/tileentity/TileMappings.java | 1 + .../network/TileEntityDroneWaypoint.java | 9 +- .../TileEntityDroneWaypointRequest.java | 189 ++++++++++++++++++ src/main/java/com/hbm/util/ParticleUtil.java | 18 ++ .../hbm/textures/blocks/diamond_block.png | Bin 469 -> 0 bytes .../hbm/textures/blocks/diamond_ore.png | Bin 262 -> 0 bytes .../blocks/drone_waypoint_request.png | Bin 0 -> 239 bytes .../blocks/drone_waypoint_request.png.mcmeta | 5 + .../hbm/textures/blocks/emerald_ore.png | Bin 364 -> 0 bytes .../{delivery_drone.png => drone.patrol.png} | Bin .../items/drone.patrol_chunkloading.png | Bin 0 -> 284 bytes .../textures/items/drone.patrol_express.png | Bin 0 -> 264 bytes .../drone.patrol_express_chunkloading.png | Bin 0 -> 281 bytes .../hbm/textures/items/drone.request.png | Bin 0 -> 262 bytes .../hbm/textures/models/machines/drone.png | Bin 2748 -> 2506 bytes .../models/machines/drone_express.png | Bin 0 -> 2744 bytes .../models/machines/drone_request.png | Bin 0 -> 2759 bytes 30 files changed, 550 insertions(+), 124 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java create mode 100644 src/main/java/com/hbm/entity/item/EntityDroneBase.java delete mode 100644 src/main/java/com/hbm/items/special/ItemAntiCheat.java create mode 100644 src/main/java/com/hbm/items/tool/ItemDrone.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java delete mode 100644 src/main/resources/assets/hbm/textures/blocks/diamond_block.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/diamond_ore.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png.mcmeta delete mode 100644 src/main/resources/assets/hbm/textures/blocks/emerald_ore.png rename src/main/resources/assets/hbm/textures/items/{delivery_drone.png => drone.patrol.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/items/drone.patrol_chunkloading.png create mode 100644 src/main/resources/assets/hbm/textures/items/drone.patrol_express.png create mode 100644 src/main/resources/assets/hbm/textures/items/drone.patrol_express_chunkloading.png create mode 100644 src/main/resources/assets/hbm/textures/items/drone.request.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/drone_express.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/drone_request.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c348fc5b3..c297d4391 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -821,6 +821,7 @@ public class ModBlocks { public static Block crane_splitter; public static Block drone_waypoint; + public static Block drone_waypoint_request; public static Block drone_crate; public static Block fan; @@ -1994,6 +1995,7 @@ public class ModBlocks { piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); + drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); @@ -3256,6 +3258,7 @@ public class ModBlocks { register(conveyor_lift); register(crane_splitter); register(drone_waypoint); + register(drone_waypoint_request); register(drone_crate); register(fan); register(piston_inserter); diff --git a/src/main/java/com/hbm/blocks/network/DroneCrate.java b/src/main/java/com/hbm/blocks/network/DroneCrate.java index bd82c8d20..94641ed8f 100644 --- a/src/main/java/com/hbm/blocks/network/DroneCrate.java +++ b/src/main/java/com/hbm/blocks/network/DroneCrate.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityDroneCrate; @@ -59,6 +60,9 @@ public class DroneCrate extends BlockContainer implements ILookOverlay, ITooltip @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.drone_linker) return false; + if(world.isRemote) { return true; } else if(!player.isSneaking()) { diff --git a/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java b/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java new file mode 100644 index 000000000..a02b63a3c --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java @@ -0,0 +1,100 @@ +package com.hbm.blocks.network; + +import com.hbm.tileentity.network.TileEntityDroneWaypointRequest; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class DroneWaypointRequest extends BlockContainer { + + public DroneWaypointRequest() { + super(Material.circuits); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityDroneWaypointRequest(); + } + + @Override + public int getRenderType() { + return RadioTorchBase.renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + return true; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + @Override + public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 vec0, Vec3 vec1) { + + int meta = world.getBlockMetadata(x, y, z) & 7; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + + this.setBlockBounds( + dir.offsetX == 1 ? 0F : 0.375F, + dir.offsetY == 1 ? 0F : 0.375F, + dir.offsetZ == 1 ? 0F : 0.375F, + dir.offsetX == -1 ? 1F : 0.625F, + dir.offsetY == -1 ? 1F : 0.625F, + dir.offsetZ == -1 ? 1F : 0.625F + ); + + return super.collisionRayTrace(world, x, y, z, vec0, vec1); + } + + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { + return side; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + + int meta = world.getBlockMetadata(x, y, z); + ForgeDirection dir = ForgeDirection.getOrientation(meta); + Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + + if(!b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) && (!b.renderAsNormalBlock() || b.isAir(world, x, y, z))) { + this.dropBlockAsItem(world, x, y, z, meta, 0); + world.setBlockToAir(x, y, z); + } + } + + @Override + public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) { + if(!super.canPlaceBlockOnSide(world, x, y, z, side)) return false; + + ForgeDirection dir = ForgeDirection.getOrientation(side); + Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + + return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); + } +} diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index d63dd43d3..eb4b6e603 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -1,28 +1,25 @@ package com.hbm.entity.item; +import com.hbm.entity.logic.IChunkLoader; import com.hbm.inventory.FluidStack; import com.hbm.inventory.fluid.Fluids; +import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; -public class EntityDeliveryDrone extends Entity implements IInventory { - - protected int turnProgress; - protected double syncPosX; - protected double syncPosY; - protected double syncPosZ; - @SideOnly(Side.CLIENT) protected double velocityX; - @SideOnly(Side.CLIENT) protected double velocityY; - @SideOnly(Side.CLIENT) protected double velocityZ; +public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, IChunkLoader { protected ItemStack[] slots = new ItemStack[this.getSizeInventory()]; public FluidStack fluid; @@ -31,10 +28,24 @@ public class EntityDeliveryDrone extends Entity implements IInventory { public double targetY = -1; public double targetZ = -1; + private Ticket loaderTicket; + public boolean isChunkLoading = false; + public EntityDeliveryDrone(World world) { super(world); this.setSize(1.5F, 2.0F); } + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(11, new Byte((byte) 0)); + } + + public EntityDeliveryDrone setChunkLoading() { + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + return this; + } public void setTarget(double x, double y, double z) { this.targetX = x; @@ -42,68 +53,11 @@ public class EntityDeliveryDrone extends Entity implements IInventory { this.targetZ = z; } - @Override - public boolean canBeCollidedWith() { - return true; - } - - @Override - public boolean canAttackWithItem() { - return true; - } - - @Override - public boolean hitByEntity(Entity attacker) { - - if(attacker instanceof EntityPlayer) { - this.setDead(); - } - - return false; - } - - @Override - protected boolean canTriggerWalking() { - return true; - } - - @Override - protected void entityInit() { - this.dataWatcher.addObject(10, new Byte((byte) 0)); - } - - /** - * 0: Empty
- * 1: Crate
- * 2: Barrel
- */ - public void setAppearance(int style) { - this.dataWatcher.updateObject(10, (byte) style); - } - - public int getAppearance() { - return this.dataWatcher.getWatchableObjectByte(10); - } - @Override public void onUpdate() { + super.onUpdate(); - if(worldObj.isRemote) { - if(this.turnProgress > 0) { - double interpX = this.posX + (this.syncPosX - this.posX) / (double) this.turnProgress; - double interpY = this.posY + (this.syncPosY - this.posY) / (double) this.turnProgress; - double interpZ = this.posZ + (this.syncPosZ - this.posZ) / (double) this.turnProgress; - --this.turnProgress; - this.setPosition(interpX, interpY, interpZ); - } else { - this.setPosition(this.posX, this.posY, this.posZ); - } - - worldObj.spawnParticle("smoke", posX + 1.125, posY + 0.75, posZ, 0, -0.2, 0); - worldObj.spawnParticle("smoke", posX - 1.125, posY + 0.75, posZ, 0, -0.2, 0); - worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ + 1.125, 0, -0.2, 0); - worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ - 1.125, 0, -0.2, 0); - } else { + if(!worldObj.isRemote) { this.motionX = 0; this.motionY = 0; @@ -122,12 +76,15 @@ public class EntityDeliveryDrone extends Entity implements IInventory { } } + loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); + this.moveEntity(motionX, motionY, motionZ); } } - + + @Override public double getSpeed() { - return 0.125D; + return this.dataWatcher.getWatchableObjectByte(11) == 1 ? 0.375 : 0.125; } @Override @@ -154,6 +111,9 @@ public class EntityDeliveryDrone extends Entity implements IInventory { nbt.setString("fluidType", fluid.type.getUnlocalizedName()); nbt.setInteger("fluidAmount", fluid.fill); } + + nbt.setByte("app", this.dataWatcher.getWatchableObjectByte(10)); + nbt.setByte("load", this.dataWatcher.getWatchableObjectByte(11)); } @Override @@ -180,13 +140,9 @@ public class EntityDeliveryDrone extends Entity implements IInventory { if(nbt.hasKey("fluidType")) { this.fluid = new FluidStack(Fluids.fromName(nbt.getString("fluidType")), nbt.getInteger("fluidAmount")); } - } - - @SideOnly(Side.CLIENT) - public void setVelocity(double motionX, double motionY, double motionZ) { - this.velocityX = this.motionX = motionX; - this.velocityY = this.motionY = motionY; - this.velocityZ = this.motionZ = motionZ; + + this.dataWatcher.updateObject(10, nbt.getByte("app")); + this.dataWatcher.updateObject(11, nbt.getByte("load")); } @SideOnly(Side.CLIENT) @@ -258,4 +214,38 @@ public class EntityDeliveryDrone extends Entity implements IInventory { @Override public void markDirty() { } @Override public void openInventory() { } @Override public void closeInventory() { } + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + clearChunkLoader(); + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(newChunkX, newChunkZ)); + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(newChunkX + (int) Math.ceil((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.ceil((this.posZ + this.motionZ) / 16D))); + } + } + + @Override + public void setDead() { + super.setDead(); + this.clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loaderTicket.getChunkList()) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } } diff --git a/src/main/java/com/hbm/entity/item/EntityDroneBase.java b/src/main/java/com/hbm/entity/item/EntityDroneBase.java new file mode 100644 index 000000000..12969f711 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityDroneBase.java @@ -0,0 +1,97 @@ +package com.hbm.entity.item; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +public abstract class EntityDroneBase extends Entity { + + protected int turnProgress; + protected double syncPosX; + protected double syncPosY; + protected double syncPosZ; + @SideOnly(Side.CLIENT) protected double velocityX; + @SideOnly(Side.CLIENT) protected double velocityY; + @SideOnly(Side.CLIENT) protected double velocityZ; + + public EntityDroneBase(World world) { + super(world); + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + @Override + public boolean canAttackWithItem() { + return true; + } + + @Override + public boolean hitByEntity(Entity attacker) { + + if(attacker instanceof EntityPlayer) { + this.setDead(); + } + + return false; + } + + @Override + protected boolean canTriggerWalking() { + return true; + } + + @Override + protected void entityInit() { + this.dataWatcher.addObject(10, new Byte((byte) 0)); + } + + /** + * 0: Empty
+ * 1: Crate
+ * 2: Barrel
+ */ + public void setAppearance(int style) { + this.dataWatcher.updateObject(10, (byte) style); + } + + public int getAppearance() { + return this.dataWatcher.getWatchableObjectByte(10); + } + + @Override + public void onUpdate() { + + if(worldObj.isRemote) { + if(this.turnProgress > 0) { + double interpX = this.posX + (this.syncPosX - this.posX) / (double) this.turnProgress; + double interpY = this.posY + (this.syncPosY - this.posY) / (double) this.turnProgress; + double interpZ = this.posZ + (this.syncPosZ - this.posZ) / (double) this.turnProgress; + --this.turnProgress; + this.setPosition(interpX, interpY, interpZ); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + + worldObj.spawnParticle("smoke", posX + 1.125, posY + 0.75, posZ, 0, -0.2, 0); + worldObj.spawnParticle("smoke", posX - 1.125, posY + 0.75, posZ, 0, -0.2, 0); + worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ + 1.125, 0, -0.2, 0); + worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ - 1.125, 0, -0.2, 0); + } + } + + public double getSpeed() { + return 0.125D; + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double motionX, double motionY, double motionZ) { + this.velocityX = this.motionX = motionX; + this.velocityY = this.motionY = motionY; + this.velocityZ = this.motionZ = motionZ; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java index 724797310..eefdf12c1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java @@ -225,10 +225,6 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { int firstDigitX = 66; int firstDigitY = 62; - int width = 5; - int height = 11; - int spaceBetweenBumbers = 3; - int[] digit = new int[6]; for(int i = 5; i >= 0; i--) { //creates an array of digits that represent the numbers diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index bd693d645..784625ea1 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1038,6 +1038,7 @@ public class ModItems { public static Item cart; public static Item train; + public static Item drone; public static Item coin_creeper; public static Item coin_radiation; @@ -3456,6 +3457,7 @@ public class ModItems { cart = new ItemModMinecart().setUnlocalizedName("cart"); train = new ItemTrain().setUnlocalizedName("train"); + drone = new ItemDrone().setUnlocalizedName("drone"); coin_creeper = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_creeper").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_creeper"); coin_radiation = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_radiation").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_radiation"); @@ -7696,6 +7698,7 @@ public class ModItems { //Minecarts GameRegistry.registerItem(cart, cart.getUnlocalizedName()); GameRegistry.registerItem(train, train.getUnlocalizedName()); + GameRegistry.registerItem(drone, drone.getUnlocalizedName()); //High Explosive Lenses GameRegistry.registerItem(early_explosive_lenses, early_explosive_lenses.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/ItemAntiCheat.java b/src/main/java/com/hbm/items/special/ItemAntiCheat.java deleted file mode 100644 index ddb62457f..000000000 --- a/src/main/java/com/hbm/items/special/ItemAntiCheat.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hbm.items.special; - -import com.hbm.items.ItemCustomLore; - -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemAntiCheat extends ItemCustomLore { - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int j, boolean b) { - - /*if(stack.getItemDamage() != 34) { - - if(entity instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer)entity; - for(ItemStack s : player.inventory.mainInventory) { - player.inventory.consumeInventoryItem(ModItems.ingot_euphemium); - player.inventory.consumeInventoryItem(ModItems.nugget_euphemium); - } - } - - //entity.attackEntityFrom(ModDamageSource.cheater, Float.POSITIVE_INFINITY); - for(int i = 0; i < 100; i++) - entity.attackEntityFrom(ModDamageSource.cheater, 10000); - - //if(!world.isRemote) - // ExplosionChaos.antiCheat(world, (int)entity.posX, (int)entity.posY, (int)entity.posZ, 20); - }*/ - } - -} diff --git a/src/main/java/com/hbm/items/tool/ItemDrone.java b/src/main/java/com/hbm/items/tool/ItemDrone.java new file mode 100644 index 000000000..5ac0d79f0 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemDrone.java @@ -0,0 +1,50 @@ +package com.hbm.items.tool; + +import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.items.ItemEnumMulti; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemDrone extends ItemEnumMulti { + + public ItemDrone() { + super(EnumDroneType.class, true, true); + } + + public static enum EnumDroneType { + PATROL, + PATROL_CHUNKLOADING, + PATROL_EXPRESS, + PATROL_EXPRESS_CHUNKLOADING, + REQUEST + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer entity, World world, int x, int y, int z, int side, float fx, float fy, float fz) { + + if(side != 1) return false; + if(world.isRemote) return true; + + Entity toSpawn = null; + + if(stack.getItemDamage() < 4) { + toSpawn = new EntityDeliveryDrone(world); + if(stack.getItemDamage() % 2 == 0) { + ((EntityDeliveryDrone) toSpawn).setChunkLoading(); + } + if(stack.getItemDamage() > 1) { + ((EntityDeliveryDrone) toSpawn).getDataWatcher().updateObject(11, (byte) 1); + } + } + + if(toSpawn != null) { + toSpawn.setPosition(x + 0.5, y + 1, z + 0.5); + world.spawnEntityInWorld(toSpawn); + } + + return false; + } +} diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 8f229cb16..18f7b0059 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1371,6 +1371,7 @@ public class ResourceManager { //Drone public static final ResourceLocation delivery_drone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone.png"); + public static final ResourceLocation delivery_drone_express_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone_express.png"); //ISBRHs public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/scaffold.obj")); diff --git a/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java index 0c7434688..4cf9e844c 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java +++ b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java @@ -19,7 +19,11 @@ public class RenderDeliveryDrone extends Render { GL11.glDisable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.delivery_drone_tex); + + if(entity.getDataWatcher().getWatchableObjectByte(11) == 1) + bindTexture(ResourceManager.delivery_drone_express_tex); + else + bindTexture(ResourceManager.delivery_drone_tex); ResourceManager.delivery_drone.renderPart("Drone"); EntityDeliveryDrone drone = (EntityDeliveryDrone) entity; diff --git a/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java b/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java index c64649c77..49b0ea4f8 100644 --- a/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java +++ b/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java @@ -48,12 +48,9 @@ public class RenderGlyphid extends RenderLiving { EntityLivingBase living = (EntityLivingBase) entity; byte armor = living.getDataWatcher().getWatchableObjectByte(17); - //MainRegistry.proxy.displayTooltip("" + limbSwingAmount, 999); double walkCycle = limbSwing; - double speed = 100000D; - double chewing = 200000D; double cy0 = Math.sin(walkCycle % (Math.PI * 2)); double cy1 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.5); double cy2 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI); diff --git a/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java b/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java index 5c91e44a1..88c74cc21 100644 --- a/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java +++ b/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java @@ -108,8 +108,6 @@ public class RenderGlyphidNuclear extends RenderLiving { double walkCycle = limbSwing; - double speed = 100000D; - double chewing = 200000D; double cy0 = Math.sin(walkCycle % (Math.PI * 2)); double cy1 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.5); double cy2 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 40b91f1a4..36e0d6df7 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -393,6 +393,7 @@ public class TileMappings { put(TileEntityRadioTelex.class, "tileentity_rtty_telex"); put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint"); + put(TileEntityDroneWaypointRequest.class, "tileentity_drone_waypoint_request"); put(TileEntityDroneCrate.class, "tileentity_drone_crate"); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java index 99cddf18f..f14fb0f99 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java @@ -19,7 +19,8 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec public int nextX = -1; public int nextY = -1; public int nextZ = -1; - + + @Override public void updateEntity() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); @@ -82,7 +83,8 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + + this.height = nbt.getInteger("height"); int[] pos = nbt.getIntArray("pos"); this.nextX = pos[0]; this.nextY = pos[1]; @@ -92,7 +94,8 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + + nbt.setInteger("height", height); nbt.setIntArray("pos", new int[] {nextX, nextY, nextZ}); } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java new file mode 100644 index 000000000..b7bb9e52d --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java @@ -0,0 +1,189 @@ +package com.hbm.tileentity.network; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; + +import com.hbm.util.ParticleUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityDroneWaypointRequest extends TileEntity { + + public static HashMap>> activeWaypoints = new HashMap(); + public static HashMap lastActive = new HashMap(); + public static long lastWipe = 0; + + public Set reachableNodes = new HashSet(); + public Set knownNodes = new HashSet(); + public static final int maxRange = 24; + public static final int maxAge = 1_000; + + public int height = 5; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) { + BlockPos pos = getCoord(); + push(worldObj, pos); + + for(BlockPos known : knownNodes) { + ParticleUtil.spawnDebugLine(worldObj, + pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, + (known.getX() - pos.getX()) / 2D, (known.getY() - pos.getY()) / 2D, (known.getZ() - pos.getZ()) / 2D, + reachableNodes.contains(known) ? 0x00ff00 : 0xff0000); + } + + //rescan known nodes + if(worldObj.getTotalWorldTime() % 40 == 0 && knownNodes.size() > 0) { + + BlockPos node = (BlockPos) new ArrayList(knownNodes).get(knownNodes.size() > 1 ? worldObj.rand.nextInt(knownNodes.size() - 1) : 0); + + if(node != null) { + + Long timestamp = lastActive.get(node); + + if(timestamp == null || timestamp < System.currentTimeMillis() - maxAge) { + knownNodes.remove(node); + reachableNodes.remove(node); + lastActive.remove(node); + } else if(!hasPath(worldObj, pos, node)) { + reachableNodes.remove(node); + } else { + reachableNodes.add(node); + } + } + + //discover new nodes + } else { + + Set nodes = getAllLocalNodes(worldObj, pos.getX(), pos.getZ()); + + for(BlockPos node : nodes) { + + if(!knownNodes.contains(node) && !node.equals(pos)) { + knownNodes.add(node); + if(hasPath(worldObj, pos, node)) reachableNodes.add(node); + break; + } + } + } + } + } + } + + public BlockPos getCoord() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + return new BlockPos(xCoord + dir.offsetX * height, yCoord + dir.offsetY * height, zCoord + dir.offsetZ * height); + } + + public static boolean hasPath(World world, BlockPos pos1, BlockPos pos2) { + Vec3 vec1 = Vec3.createVectorHelper(pos1.getX() + 0.5, pos1.getY() + 0.5, pos1.getZ() + 0.5); + Vec3 vec2 = Vec3.createVectorHelper(pos2.getX() + 0.5, pos2.getY() + 0.5, pos2.getZ() + 0.5); + Vec3 vec3 = vec1.subtract(vec2); + if(vec3.lengthVector() > maxRange) return false; + //for some fucking reason beyond any human comprehension, this function will randomly yield incorrect results but only from one side + //therefore we just run the stupid fucking thing twice and then compare the results + //thanks for this marvelous piece of programming, mojang + MovingObjectPosition mop0 = world.func_147447_a(vec1, vec2, false, true, false); + MovingObjectPosition mop2 = world.func_147447_a(vec2, vec1, false, true, false); + return (mop0 == null || mop0.typeOfHit == mop0.typeOfHit.MISS) && (mop2 == null || mop2.typeOfHit == mop2.typeOfHit.MISS); + } + + public void addHeight(int h) { + height += h; + height = MathHelper.clamp_int(height, 1, 15); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.height = nbt.getInteger("height"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("height", height); + } + + /** + * Adds the position to that chunk's node list. + * @param world + * @param x + * @param y + * @param z + */ + public static void push(World world, BlockPos pos) { + + HashMap> coordMap = activeWaypoints.get(world); + + if(coordMap == null) { + coordMap = new HashMap(); + activeWaypoints.put(world, coordMap); + } + + ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(pos.getX() >> 4, pos.getZ() >> 4); + Set posList = coordMap.get(chunkPos); + + if(posList == null) { + posList = new HashSet(); + coordMap.put(chunkPos, posList); + } + + posList.add(pos); + + lastActive.put(pos, System.currentTimeMillis()); + } + + /** + * Gets all active nodes in a 5x5 chunk area, centered around the given position. + * Used for finding neighbors to check connections to. + * @param world + * @param x + * @param z + * @return + */ + public static Set getAllLocalNodes(World world, int x, int z) { + + Set nodes = new HashSet(); + + x >>= 4; + z >>= 4; + + HashMap> coordMap = activeWaypoints.get(world); + + if(coordMap == null) return nodes; + + for(int i = -2; i <= 2; i++) { + for(int j = -2; j <= 2; j++) { + + Set posList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); + + if(posList != null) for(BlockPos node : posList) { + Long timestamp = lastActive.get(node); + + if(timestamp != null && timestamp >= System.currentTimeMillis() - maxAge) { + nodes.add(node); + } + } + } + } + + return nodes; + } +} diff --git a/src/main/java/com/hbm/util/ParticleUtil.java b/src/main/java/com/hbm/util/ParticleUtil.java index 0428ec19b..f62efba92 100644 --- a/src/main/java/com/hbm/util/ParticleUtil.java +++ b/src/main/java/com/hbm/util/ParticleUtil.java @@ -27,4 +27,22 @@ public class ParticleUtil { PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 150)); } } + + public static void spawnDebugLine(World world, double x, double y, double z, double x0, double y0, double z0, int color) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debugline"); + data.setDouble("mX", x0); + data.setDouble("mY", y0); + data.setDouble("mZ", z0); + data.setInteger("color", color); + if(world.isRemote) { + data.setDouble("posX", x); + data.setDouble("posY", y); + data.setDouble("posZ", z); + MainRegistry.proxy.effectNT(data); + } else { + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 150)); + } + } } diff --git a/src/main/resources/assets/hbm/textures/blocks/diamond_block.png b/src/main/resources/assets/hbm/textures/blocks/diamond_block.png deleted file mode 100644 index f2e2e771a6498eb87678fd201c2027a4b7eb7c01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P)mh0kz@<(`-8wB80g(5;djiC8fmLGwWL^a|J-szEwyoD|xzj&l3+>c|;@Gq<{|n?ja&k z$E0)Dn};z@KHfScGc|dsIKcfKBYGt^a80?@s4hj-{dA^qPhY_6a4y*ChD7+fb zqwe?>=sp3KK{Zd*i~{rp?1_PQ-qH6ZXU5^1MRN~;)lTL(>x>E@FLgR3?!Z-nzIXMp z!!HXqZhI1prX`-~ucVba(;@lHSry+wX7*Rc)hNR$uQXpRD>uOR13oyM5D0-qt^fc4 M07*qoM6N<$f^{iwX8-^I diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png new file mode 100644 index 0000000000000000000000000000000000000000..730f2a0517ec05cee0a9f9aca9ea047523f65908 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!3HFyJAa%3QY^(zo*^7SP{WbZ0pu_9ba4#v z=zKe6BQKL7k88a~@Wo)^R;wVl1mQN1QsoQEhEAu1y=7`QF)GIhKHc0nu|_2P$@XdU z|EktAJ6BIve&|v9xmHo%U-!tw_xzrDcbJw(-sDkOdPHI|hlPi0wrU?f?J) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_waypoint_request.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/emerald_ore.png b/src/main/resources/assets/hbm/textures/blocks/emerald_ore.png deleted file mode 100644 index a26c35f6a08d6c6c8d61c42a5157eac0d182bbdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP)*~`q zU7{!oZ<@yEdG@aB{5TH3!y#w*K>#$4qnBmrd7k@^|M|yn?NwF99Rq}X1Ck&>lC1cT zM|f;spP_=)5PjcAj%QE0t5+&RoR6A@eDvv8SdeWDuY^6Lr|3f5+Mg*+qQur zF}*NW$6*+Tc%UBO%r;al4K=;ow#}DiIjd;3yAi&403iAVfGuQM7X2d6-B1GaK>%+XHl*^ z0CTnpi^gi>lcs6SO=~U7c}{)4yux-j!5Bl9WvUqVov%NOa%Ex07@&h+a7t_alE8J= iNrJb4s^dHN|IiaZhf+mj%47Nf0000G zO*{K?Ra+cufngNGw%4i*+keT*l;7~rU8>Y@{B-oJV}iX~w@pv$ndlsQ@%#30i}fbw zEWM&v9b419e*P`5${EFcKMw1&r1t!rrBL#1I;R`s-6I>nRK8#~Q+3VVCHS%(=oJP} LS3j3^P66}DNSL9Fs>U6vaU&*jP3$c zn(ohe`@8CYjy6M?lEvDoi?+{dm?yPWL0_S9{y_$pz%POZzfyj1O-P-&B=eS+_av8? z((L8S>K`qR3tM<#?Y*m|lBa6wt9~o87F=m$&`C>XIQR6h^}B3)v({M*G4Ia>nQmi| zNRG;k%Dy>;HMhRD^{~l-DDS+Y(3#BdUmsryUv++kTJbXO!k0T&bR6-8FlH^B1PLC2@;4TVyS0j#E)M$GH4?fYLTMt1Zs| zRr{yU|NnpT_k?Q#69SnsXYq0AxLL9^u3EK3=X76mpoq}90QQ>ClV`jV6V%)A?#l#Y zudh3~6fTD|Ua(_6kS*PNd;fO3aLxmtOW6}vMnB3bU$X9X-)uuSx#ipV{+t&!`z?LW zGN(9zflc^t?dxLEBXf!`_!zWm^!)S{czrOW+F;6~`M+&Gu${Z(a!)MlUj@)344$rj JF6*2UngC~pXuALa literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/drone.png b/src/main/resources/assets/hbm/textures/models/machines/drone.png index 56d1e7312ed1159a4d699f2efe572c103a39d04f..3e55db1657ed91302da4ddcf1b59cd44cc33f628 100644 GIT binary patch delta 2481 zcmV;i2~PIB70MHkGk*zzNkl=it1rp+wC&c~(tPn5oL=e)7szO5QB1(}8Dh9HIR@-!|s%dxQ z25;gx_Wa~wd?z!GojCE2xFTOE%FNtj-+RtI^F2R&1s(9-yMMD`r?Fw+jklM?Fz3^E z8$9`{;N{n})U(I;eV#0b9mn^=UY}2n4-<0eGma>B^@u0SAy1aQ1CQ^8UO(SY9Oyml z7k>u%6#eScpn7Sn>I(t+oY5bbQYyW7wFqTBE4w7&82@zh^0I8gXJNdAz-%dcrY zb4@j(T9=e=*b0) zN&(c0-PTvBRQfWT%`KAO_1qakaYDa5L4DtIXNY##Z+hL%h)0=a6Gw(< z;>Zw992ugCBSSQCWQZn?4AI1qA)45;A2A9zlzv3J$%j>mc2fAz`Vl)P9_)@N103eh z2|M}`t$(eu_uici2W6Ocinp78uYN>73a~x<5$zV%^Q^mke>)7aU!sio+*P0NzyE%0 zxL$h`J6d%IL9YbbuSjsvU$|Odrvv2?PnN@;6gjL@F}q>kdBhuUFNtBFkLa|%QmNGA zT4qDFhK_l}C}FSl^?H^IK=0+$$}lp%VV$ZuFn?K&k{9*kELKNrkJvd&wH7g;>*wQ~ zWwCiOrc^2o71qhiywb0oGwgo{nip^X9@sJ z7bd`mN9EO&@Z!BP^K+*Guq=y5DEY`A<`jI_|o}V>h*f8;B;XkR(!R(0T3H1Df6GQ&%Yl$!`gz+$!xz>PZ( z0OGN1)&wG>T)(x%>$9K5_dMSE&UXod0DmC_Qc8j#NKGV!KnQ{7c}OYw)z5!6cHI7J6S+L|bEolrpUurp!Z76c@#7Q< z1+v*Jg+hVx@o`R^I6*F#BcIPRIXTJH)D%)mG)-r8G7*sVdgPw9n!~l5cL6w8Jb#5{ zSuEa*ykhZQIp&KbZ&;QUaRLyAA)2NU1VQW(hG8J3MAvl;!@zZ2T-PNGLvpzsK`=U| zkPs;ZkpUL(m6^!psn_dVIzLOT=5ThV5D_SmC#cUnDzBpH29Dz*guro}Sn(hTP(}uD z90%X`@jMS9L~3jlAeBN2m(I_|ynpbhyc%;t^14=YQlHWFC<>dV85==LiEZ0)L@`Yh z-}hs0iMV1U0tNu``mH5^l)|u0lFA#@Yoea3d)W3UDJ9iv71K21`!EcVQsTNUwrykE zHb5LfMg_VeM2M7A_w#e7xpwm|=ZdG|@Tzi++ohE_toojd<1~Osal%Nl>$-Selt7tgh9C%2nd8HU4}sx@%p`PB?|qarSeC`@(h9594K80e!?l}t zxqRVF{7z37CgRXKU6^2bBjN}E&+}qZOcJD&l7HR20l=AaUjyixBb0FljX1@w)f_C# ziWeApM>M89Bk4U!S;Y|mjekZ1UDv5rs|X>;X0v>7>yP~PpC3@IR{6uV>%8^7?|01+ z!!m@NE=;7zv6UMj$}bcrB*UnZwJa+YC2ZR!o6Ta|HlF9PQK?X^Rsq=Dsw0Hh7e|!K z<$+#9Gml8_bn?1hug4@hKX*DskV@9~+*rv>CPNs8IF5r5BIbv$Tz`6l^_3OYS62AJ zPktKb9-|X8K({Q5Y0F|UTTUr@yR-sC(IlB>tLM{&2_BVKS^sYZ-}lgUowc>KICLhl zxw*;PKl~A47_zpuhOX<3jg9eaNJ@4CT@_Es%ClatbK}kfE}frE)RuEUe{nfD5 z2(X8O?vwC?kT1-CJ-%-jKAVk`!MExZDXPRu zDV~Hfh%&(ZTs}&osvFGC%*3hl`bHH^(>QfVt zy3UIyj`Q&+tK{oBeBV#W2a~7vV~2sE=YGV8A3X#?+8@x)s(>vUWJGy=6_lutU5mHKYDUnjdQ9w#bp-^CKYz)&h$>nnxh7pgo%8vqc z)sIl+b@IBkAE5|T;p|L-<@;so4F^q=arv!6rhjRgY;A2}+cuVM#pA8=?a;dOgU%;< z?neM|CbQzhekNxU?NUh1m9T)d*1Xqk{hdW-)SNKhY4700000NkvXXu0mjf#qr!q delta 2725 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 diff --git a/src/main/resources/assets/hbm/textures/models/machines/drone_express.png b/src/main/resources/assets/hbm/textures/models/machines/drone_express.png new file mode 100644 index 0000000000000000000000000000000000000000..e2150991008791ee30dd0ee295e5d543cd4bae04 GIT binary patch literal 2744 zcmV;p3P<&cP)=R^@KafR`KQO>7XD1-bSr{-J1X($QFo|Ky0u;#)$&yVoWI|Hi>{k|Kl}U*d z^`IykqXQUfcUO1Sy>;u}Q->w!f^V;1OS(N91a92EF9zA4+U?=gB%D8MwcUHV8L?jM z{=64@z2EwLkdTA#ayYSTM64HKy%-(%c`qFH{eI#=>#$$>W6*hEH|!b_yJ2eba2@w6 z4W5CyMh_c*fkUeIlPf196gzmd-$ zxDN@9nceH`_LE=i^;_M>H$Fbz_U|w_Q29Ive`v+|v(}+=Ouuo$BbqpH)!0wMdmW%) zccYGa&#{-PH3+9GXwSx-4Bx(<50f9-(Qe>+v2*`}sAe6PMmNKcYGz(JcBf-@L#b41 zs}}FS|Nfq%w^S;T&*x3_b>$KLoAte;wa-?k4}#~Y)&UI52538W8(*nZ>PsI7t{TUM z`T6<2CGXa6y>^b!IiX*XpuhLpIieHxORqaQ@q}46apH(3P8`w1i6fdgaYPd*j%eb< z5lx&pqKTe*#4zAk^oUNK4{9gc&ER9xBX)Ltv@@a|aGXCU?9d~&OJ(0)zm^=8V>%h$ zssCPjL_aoQJ@trA13PrDyL`VBj#4ktPJHclpLg!uF^)T|HnBshI|vS&K>Jk*4*Cn% z_T_XS9M*BP2Eq6Sb*kpT$#R&Ys2^vsx_W!a&ROcQh$FgwJtN|J7;)K|r-yC7n)FE|-a-$ov9b zDwTNh~0rm=2QC=_sA7o`+&98-Mul+BF|EK4ymGJ@xMgkjj|Kq+&b zN;SSEM9heiY;A4z9N@)^7yD{(Hz?b-iK2)vzW9R0#YOV@Jg)2Fc^*|0IrMgb+w6+oA+O2!RlSFbt7W@}GbIYaj;h z6)K7%q9|fD5Xrh)2B~kS(eEONs?e$7I7S#h|u{)DTQTO1VKO)MI=eW$jHc!s5wqZ z+qR8CaU2uJF^=O9$1$Gg5d;CA=P^1uic*Tv(NR*V6zOytDJ4oN>h%C2gqeArJ3P-b z9qH%_!w?}v+p}SSghmpSQj*DJ%q&SMNu^Sz;nvm`Q550(KCbI_4C_=XWt1UWCLBlwr)d0`)h~t=gy>6V5B#Bw))oK;Tag32lHRys?`sn>fdl_HK~llZFDDoQDnDD}J0Fx<9n^SR)|Oco+Cbedm&*Z-O;r>%qN!Lcn#$9PYPHIjUw%oF zBovE9lu{-!4+~Tf1Y|N9mX?-)M!k1k7a;@_6BA|wr8ikGUc6v(a?;Fdu~=kmY@Gjo zyFj&C1)yGU>}K_bOD9Ihai~-(L{Z4ubLaLnz=eecF+V?_=(E%PzSa;Qe)wThsZ@+% zt%#z?%<%T-dWUM;w#gSslC)9mR&@LR_3PKo|2vh>rf_ofQr!n1d_X5XqSix?5JK?F zFTXH5J8Q~prBXpk$(wJ!Nx58Ra&po*rC2QD`#x{H@kU$wJwn{Pc{2f$g@pxuua(*+ zw5x6Vy>2XxyLa!hzP?T-lL30`5!2JttgNh{l;WqKerk-QNx6j(tgf!M-7`J6BuD*h zW@e^~?SqA~ZJVoCuM)>G8yg#3zI=ICJ>uNCb1W|}v$nQ|QVQ2~O+;x{Y1=mGbQ;UD z%obkr5>2;t`#xg(=4W3eNk&n`ci(--JMX;1g$oyW{`|S2+m>au=@C;?Q!Fnpv%I{_ z?Ch*5pL(V>v((VET3_3?y`%lGz~~W6OH0hn&6(LgbLLE&9&!Hsc~)0f+1%V@W@d)b z(NQeRLI`1qmWFNHWV2Zl833BfYuc^bYZZArnmNJzJ!+^{J>tQG2VA{+6{QqwYimqQ zOaPF}<=EWZNI0E?h7&o=$eU#A@wRU)O3iW2kmUr}q1u@tZeq?zL$G z4IZ*DN3`k@i;IiA_10S`r3iw6$B!Q~Jw0v2n`*VnsZ*zjqKGqR&M-1EVk%0dQX!Yi z;W!RSl29&}86O{~P$(GTr?vgm)YN|baAfGJN2F3Ik|Z(fT}RD!J>v1>$3T1e++9>heEE{or%xk<;L@c_#Bt2?=g&EN_H0{(=$&SgBqjmsWuf_p-h8g#UvF54dvW3b|a4)z#HDJwhpEmWnQk zQc5N#C&^~Bq|<3rO1rfm1}MD)o1UKL*I$37QmJt9;zjE9I==54Qna$N!pzJJ<#L&P zKF@pay=OEBtxD;rilT^Gt!7H7<2a_=`o6!TeJ5<6`J?6&%Cao3UAx9_zx_t3RAPF1 zx~m>>@7_ITW@gA_GTgg&&wNCeLd{1skI)p|^E^_ilwp#s?S};_2m*fp{dePpUV225 zB%C^R3MnN|pFZW%rAsCuwvs5FU!;^23I)c-#!LxqZU4g$KODCY08me!JVEObde^A2 y7d_(VpMM4#F>z< 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 N002ovPDHLkV1o3YS|0!a literal 0 HcmV?d00001 From 9528ce8afef2ec331427edeb20034315331a0eab Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 24 Sep 2023 20:31:04 +0200 Subject: [PATCH 042/207] redcoil fix, no more shredding of blocks with the "Any" prefix, GUIs --- .../inventory/recipes/ShredderRecipes.java | 6 +-- src/main/java/com/hbm/items/ModItems.java | 2 +- .../com/hbm/items/machine/ItemCapacitor.java | 39 ++------------ .../hbm/items/tool/ItemTitaniumFilter.java | 51 ++++++++++++++++++ ...eEntityMachineSchrabidiumTransmutator.java | 7 ++- .../machine/TileEntityWatzCore.java | 6 +-- .../textures/gui/storage/gui_drone_dock.png | Bin 0 -> 1313 bytes .../gui/storage/gui_drone_provider.png | Bin 0 -> 1239 bytes .../gui/storage/gui_drone_requester.png | Bin 0 -> 1389 bytes 9 files changed, 64 insertions(+), 47 deletions(-) create mode 100644 src/main/java/com/hbm/items/tool/ItemTitaniumFilter.java create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_drone_dock.png create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_drone_provider.png create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_drone_requester.png diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index e4e3e68af..aee7d21ae 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -46,6 +46,8 @@ public class ShredderRecipes extends SerializableRecipe { if(name == null || name.isEmpty()) continue; + if(name.contains("Any")) continue; + List matches = OreDictionary.getOres(name); //if the name isn't assigned to an ore, also skip @@ -94,10 +96,6 @@ public class ShredderRecipes extends SerializableRecipe { String matName = name.substring(len); - //skip over genericized names so we don't accidentally convert item groups - if(matName.startsWith("Any")) - return; - ItemStack dust = getDustByName(matName); if(dust != null && dust.getItem() != ModItems.scrap) { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 784625ea1..a080abd59 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4410,7 +4410,7 @@ public class ModItems { fuse = new ItemCustomLore().setUnlocalizedName("fuse").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fuse"); redcoil_capacitor = new ItemCapacitor(10).setUnlocalizedName("redcoil_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor"); euphemium_capacitor = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("euphemium_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor_euphemium"); - titanium_filter = new ItemCapacitor(6 * 60 * 60 * 20).setUnlocalizedName("titanium_filter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":titanium_filter"); + titanium_filter = new ItemTitaniumFilter(6 * 60 * 60 * 20).setUnlocalizedName("titanium_filter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":titanium_filter"); screwdriver = new ItemTooling(ToolType.SCREWDRIVER, 100).setUnlocalizedName("screwdriver"); screwdriver_desh = new ItemTooling(ToolType.SCREWDRIVER, 0).setUnlocalizedName("screwdriver_desh"); hand_drill = new ItemTooling(ToolType.HAND_DRILL, 100).setUnlocalizedName("hand_drill"); diff --git a/src/main/java/com/hbm/items/machine/ItemCapacitor.java b/src/main/java/com/hbm/items/machine/ItemCapacitor.java index 57ee26b2c..2d2147615 100644 --- a/src/main/java/com/hbm/items/machine/ItemCapacitor.java +++ b/src/main/java/com/hbm/items/machine/ItemCapacitor.java @@ -8,15 +8,13 @@ import net.minecraft.entity.effect.EntityLightningBolt; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; public class ItemCapacitor extends Item { - private int dura; public ItemCapacitor(int dura) { - this.dura = dura; + this.setMaxDamage(dura); } @Override @@ -24,11 +22,7 @@ public class ItemCapacitor extends Item { if (this == ModItems.redcoil_capacitor) { list.add("Right-click a block to negate positive charge."); list.add("[Needed for Schrabidium Synthesis]"); - list.add(getDura(itemstack) + "/" + dura); - } - if (this == ModItems.titanium_filter) { - list.add("[Needed for Watz Reaction]"); - list.add((getDura(itemstack) / 20) + "/" + (dura / 20)); + list.add((itemstack.getMaxDamage() - itemstack.getItemDamage()) + "/" + itemstack.getMaxDamage()); } } @@ -39,9 +33,9 @@ public class ItemCapacitor extends Item { if (!player.isSneaking()) { - if (getDura(stack) < dura) { + if(stack.getItemDamage() > 0) { - setDura(stack, getDura(stack) + 1); + stack.setItemDamage(stack.getItemDamage() - 1); if (!world.isRemote) { world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 2.5F, true); @@ -55,29 +49,4 @@ public class ItemCapacitor extends Item { return false; } - - public boolean showDurabilityBar(ItemStack stack) { - return getDurabilityForDisplay(stack) > 0; - } - - public static int getDura(ItemStack stack) { - - if(stack.stackTagCompound == null) - return ((ItemCapacitor)stack.getItem()).dura; - - return stack.stackTagCompound.getInteger("dura"); - } - - public static void setDura(ItemStack stack, int dura) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - - stack.stackTagCompound.setInteger("dura", dura); - } - - public double getDurabilityForDisplay(ItemStack stack) - { - return 1D - (double)getDura(stack) / (double)dura; - } } diff --git a/src/main/java/com/hbm/items/tool/ItemTitaniumFilter.java b/src/main/java/com/hbm/items/tool/ItemTitaniumFilter.java new file mode 100644 index 000000000..322d5f574 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemTitaniumFilter.java @@ -0,0 +1,51 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.items.ModItems; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ItemTitaniumFilter extends Item { + + private int dura; + + public ItemTitaniumFilter(int dura) { + this.dura = dura; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + if(this == ModItems.titanium_filter) { + list.add("[Needed for Watz Reaction]"); + list.add((getDura(itemstack) / 20) + "/" + (dura / 20)); + } + } + + public boolean showDurabilityBar(ItemStack stack) { + return getDurabilityForDisplay(stack) > 0; + } + + public static int getDura(ItemStack stack) { + + if(stack.stackTagCompound == null) + return ((ItemTitaniumFilter) stack.getItem()).dura; + + return stack.stackTagCompound.getInteger("dura"); + } + + public static void setDura(ItemStack stack, int dura) { + + if(!stack.hasTagCompound()) + stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setInteger("dura", dura); + } + + public double getDurabilityForDisplay(ItemStack stack) { + return 1D - (double) getDura(stack) / (double) dura; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java index ba08db645..bed920b68 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java @@ -6,7 +6,6 @@ import com.hbm.inventory.container.ContainerMachineSchrabidiumTransmutator; import com.hbm.inventory.gui.GUIMachineSchrabidiumTransmutator; import com.hbm.inventory.recipes.MachineRecipes; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemCapacitor; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; @@ -89,7 +88,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB @Override public boolean canExtractItem(int i, ItemStack stack, int j) { - if (i == 2 && stack.getItem() != null && (stack.getItem() == ModItems.redcoil_capacitor && ItemCapacitor.getDura(stack) <= 0) || stack.getItem() == ModItems.euphemium_capacitor) { + if (i == 2 && stack.getItem() != null && (stack.getItem() == ModItems.redcoil_capacitor && stack.getItemDamage() == stack.getMaxDamage()) || stack.getItem() == ModItems.euphemium_capacitor) { return true; } @@ -115,7 +114,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB public boolean canProcess() { if (power >= 4990000 && slots[0] != null && MachineRecipes.mODE(slots[0], OreDictManager.U.ingot()) && slots[2] != null - && (slots[2].getItem() == ModItems.redcoil_capacitor && ItemCapacitor.getDura(slots[2]) > 0 || slots[2].getItem() == ModItems.euphemium_capacitor) + && (slots[2].getItem() == ModItems.redcoil_capacitor && slots[2].getItemDamage() < slots[2].getMaxDamage() || slots[2].getItem() == ModItems.euphemium_capacitor) && (slots[1] == null || (slots[1] != null && slots[1].getItem() == VersatileConfig.getTransmutatorItem() && slots[1].stackSize < slots[1].getMaxStackSize()))) { return true; @@ -146,7 +145,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB slots[1].stackSize++; } if (slots[2] != null && slots[2].getItem() == ModItems.redcoil_capacitor) { - ItemCapacitor.setDura(slots[2], ItemCapacitor.getDura(slots[2]) - 1); + slots[2].setItemDamage(slots[2].getItemDamage() + 1); } this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "ambient.weather.thunder", 10000.0F, diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java index 95db0d668..ad410410b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java @@ -18,8 +18,8 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIWatzCore; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemCapacitor; import com.hbm.items.special.WatzFuel; +import com.hbm.items.tool.ItemTitaniumFilter; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxElectricityPacket; @@ -504,7 +504,7 @@ public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedIn @Override public boolean hasFuse() { - return slots[38] != null && slots[38].getItem() == ModItems.titanium_filter && ItemCapacitor.getDura(slots[38]) > 0; + return slots[38] != null && slots[38].getItem() == ModItems.titanium_filter && ItemTitaniumFilter.getDura(slots[38]) > 0; } @Override @@ -576,7 +576,7 @@ public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedIn //Only damages filter when heat is present (thus waste being created) if (heatList > 0) { - ItemCapacitor.setDura(slots[38], ItemCapacitor.getDura(slots[38]) - 1); + ItemTitaniumFilter.setDura(slots[38], ItemTitaniumFilter.getDura(slots[38]) - 1); } heatList *= heatMultiplier; diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_dock.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_dock.png new file mode 100644 index 0000000000000000000000000000000000000000..4bcea800caae298f74a61db1aa791232e0bf9b37 GIT binary patch literal 1313 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGxW4Nn)x zkcv5P?*``0&Jt<8=zP`l>O3~#jYn*31dRD?bly2XS@qR-u2tKo_Py7lLtnC}KI9ho zy=3*@+1u?JcuS+@8FFv`Ha}r=e&_T0>!qQ;|4V&t%8!;m(6z|_->OxavsP_d-|*wW zyn3rYVhyjq?s~W|=W&f)c<9xqMJsQ8zdp>c-zXI=*qG*?$Pyb) z)H2lGziz;@dp7g=E}jDxefs$icjkV|%{#oD`nIAI-njuwE#Q zHTS>#B&EUr#&1!FatoPlc5S|~dec{}%6t8Ifv@I$iO<*AH!Pg8-Vm7hK)_*3e7wq} zKS`4N#Psu`PP`SiJiqz#{Phc8@6r;CII_Ly)90f;mqVU*l?uk*Wj&B46;)nczTDhu z@4M~g%vL`YPv5)G$77>_HIX2DazlH)bU~;6(!1Yldmm@?S|24n!~O53Jcm!qACW1}2o4YZY;!*J z>wkOxJmm?Nx@UIY=P0q8zk1cHqMadoYxzHWnla71{6|K*@!Dfa1{QoKqo@BI7Ng}q zE!P}(Qz)J_KUw)g6-2;{Y3*@iT)73i`8PRI{5}^)oIl*_a6w7BaoS@saMl7U{`Ns} z!P*1QwirCG(>6H0QS`=~XU{7v_R4K17|bZ)vKg##gIsju&!QaGxV~tp`+fxFP5-a+ zxH_~n_WIe&CO@Az&A1ItD`vI=6>aPdr+55kIX7E|)#m(3en=vrlzjbzUt@0Jz0ReM Q&p}3cy85}Sb4q9e0DiOFp#T5? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_provider.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_provider.png new file mode 100644 index 0000000000000000000000000000000000000000..5c3ef3032ce732a1b922a4643ad8fcd5ffde87af GIT binary patch literal 1239 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGv=pQnps zNX4ADcOT~7ju2?QSm`)x(-k&p!2@<79TDuIV&B^zCOkfCHPN;0{GR6`29+Dm>We7$ zM#YW?QxxNq_4 zKc7A8gS!3iE2h-OtiQf$)vmjFp~wHle)e?V$NWR_w+bvh=62h>muf8!xZ@T<^#)kWy+zwY? zyM9`eD3LX5*}7+Q&OcxNe1fVGL+E<(GsedX*JRGxHLLi`Zs}{!6&0`eyotg>Nl$N;(#ry*z(5l`$I?wS3( z!Eq!`iTT29HF@dA8{R1lt8!SHw9Ydq%z}FwO&=mO;1Xgx`4?>WwKHSdIQ;|z(AS~U z(!ZFo%ZZ9M{Qes^{dDU4WC!y_OaY;#d*i;_F_j#4KF};=_3y~U_Y6_lxig>NJj(F@ z@r!bXwLR<^KhX&n)y`yJ}i$QuJ>KbxGxVzm6Xr5RK1abwIx2{#r!wE`t>a-{fuFTT;& z>+r0^{Q87IV`vO($Ug3K4XBnVYA?gIq#ltn9Fa@U=)_?fJ1@;5mqxLI&wz2;Ib6=vwDwhS? z{!-_PJ{4bjSg@j~^~Tg`rvKC!jz8Y`Fhj2SZeDn3=?g6TwFZ6@BN`k{99t6ldL5QOzrk_E{yWx? z!EPTg$kLPp*sE?oNmdTvlWr6{vr+KH7nxt_$`_g}&6wuS0}B7Y!;BipIE{iz^g77C z$erBZ>tOj#m0|YTWhX!N+dT$N@@F z1pIpA>J#$7zrCPW}X$ z{qWfTyv6QjOfxV4m62||_E-*_9|$-fk%MwrjF$hlTyxw_p?KH)WaSH05CJo$wa0A< zh62JEU`D*jk>dBgIO6=tUWW_H(v7!1ior5x*(bFHYY#m8V(|Q1Si-H1qBrKed%nYR zuUtMOwyccP>1o;HoKU+_I`IQR3O*hYwD+8kmPO z9De%rX|o*19}aVd+dKZUoZ~MN`S5toA4u|`l-$s_pOG! Date: Mon, 25 Sep 2023 16:42:02 +0200 Subject: [PATCH 043/207] even more drone crate stuff --- src/main/java/com/hbm/blocks/ModBlocks.java | 15 +- .../com/hbm/blocks/network/DroneDock.java | 39 ++++ .../TileEntityDroneWaypointRequest.java | 154 +--------------- .../network/TileEntityRequestNetwork.java | 172 ++++++++++++++++++ .../blocks/drone_crate_provider_bottom.png | Bin 0 -> 764 bytes .../drone_crate_provider_bottom.png.mcmeta | 5 + .../blocks/drone_crate_provider_side.png | Bin 0 -> 834 bytes .../drone_crate_provider_side.png.mcmeta | 5 + .../blocks/drone_crate_provider_top.png | Bin 0 -> 732 bytes .../drone_crate_provider_top.png.mcmeta | 5 + .../blocks/drone_crate_requester_bottom.png | Bin 0 -> 797 bytes .../drone_crate_requester_bottom.png.mcmeta | 5 + .../blocks/drone_crate_requester_side.png | Bin 0 -> 896 bytes .../drone_crate_requester_side.png.mcmeta | 5 + .../blocks/drone_crate_requester_top.png | Bin 0 -> 772 bytes .../drone_crate_requester_top.png.mcmeta | 5 + .../hbm/textures/blocks/drone_dock_bottom.png | Bin 0 -> 528 bytes .../hbm/textures/blocks/drone_dock_side.png | Bin 0 -> 675 bytes .../blocks/drone_dock_side.png.mcmeta | 5 + .../hbm/textures/blocks/drone_dock_top.png | Bin 0 -> 523 bytes .../gui/storage/gui_drone_provider.png | Bin 1239 -> 1279 bytes .../gui/storage/gui_drone_requester.png | Bin 1389 -> 1440 bytes 22 files changed, 259 insertions(+), 156 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/network/DroneDock.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_dock_bottom.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_dock_side.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/drone_dock_side.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/drone_dock_top.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c297d4391..fc09defc2 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -821,8 +821,11 @@ public class ModBlocks { public static Block crane_splitter; public static Block drone_waypoint; - public static Block drone_waypoint_request; public static Block drone_crate; + public static Block drone_waypoint_request; + public static Block drone_dock; + public static Block drone_crate_provider; + public static Block drone_crate_requester; public static Block fan; @@ -1995,8 +1998,11 @@ public class ModBlocks { piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); - drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); + drone_dock = new DroneDock().setBlockName("drone_dock").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_dock"); + drone_crate_provider = new DroneDock().setBlockName("drone_crate_provider").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_provider"); + drone_crate_requester = new DroneDock().setBlockName("drone_crate_requester").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_requester"); chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); @@ -3258,8 +3264,11 @@ public class ModBlocks { register(conveyor_lift); register(crane_splitter); register(drone_waypoint); - register(drone_waypoint_request); register(drone_crate); + register(drone_waypoint_request); + register(drone_dock); + register(drone_crate_provider); + register(drone_crate_requester); register(fan); register(piston_inserter); diff --git a/src/main/java/com/hbm/blocks/network/DroneDock.java b/src/main/java/com/hbm/blocks/network/DroneDock.java new file mode 100644 index 000000000..bee33693f --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/DroneDock.java @@ -0,0 +1,39 @@ +package com.hbm.blocks.network; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class DroneDock extends BlockContainer { + + @SideOnly(Side.CLIENT) private IIcon iconTop; + @SideOnly(Side.CLIENT) private IIcon iconBottom; + + public DroneDock() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.blockIcon = reg.registerIcon(this.textureName + "_side"); + this.iconTop = reg.registerIcon(this.textureName + "_top"); + this.iconBottom = reg.registerIcon(this.textureName + "_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java index b7bb9e52d..a4135d3b9 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java @@ -1,107 +1,21 @@ package com.hbm.tileentity.network; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; - -import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.ChunkCoordIntPair; -import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDroneWaypointRequest extends TileEntity { - - public static HashMap>> activeWaypoints = new HashMap(); - public static HashMap lastActive = new HashMap(); - public static long lastWipe = 0; - - public Set reachableNodes = new HashSet(); - public Set knownNodes = new HashSet(); - public static final int maxRange = 24; - public static final int maxAge = 1_000; +public class TileEntityDroneWaypointRequest extends TileEntityRequestNetwork { public int height = 5; @Override - public void updateEntity() { - - if(!worldObj.isRemote) { - - if(worldObj.getTotalWorldTime() % 20 == 0) { - BlockPos pos = getCoord(); - push(worldObj, pos); - - for(BlockPos known : knownNodes) { - ParticleUtil.spawnDebugLine(worldObj, - pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, - (known.getX() - pos.getX()) / 2D, (known.getY() - pos.getY()) / 2D, (known.getZ() - pos.getZ()) / 2D, - reachableNodes.contains(known) ? 0x00ff00 : 0xff0000); - } - - //rescan known nodes - if(worldObj.getTotalWorldTime() % 40 == 0 && knownNodes.size() > 0) { - - BlockPos node = (BlockPos) new ArrayList(knownNodes).get(knownNodes.size() > 1 ? worldObj.rand.nextInt(knownNodes.size() - 1) : 0); - - if(node != null) { - - Long timestamp = lastActive.get(node); - - if(timestamp == null || timestamp < System.currentTimeMillis() - maxAge) { - knownNodes.remove(node); - reachableNodes.remove(node); - lastActive.remove(node); - } else if(!hasPath(worldObj, pos, node)) { - reachableNodes.remove(node); - } else { - reachableNodes.add(node); - } - } - - //discover new nodes - } else { - - Set nodes = getAllLocalNodes(worldObj, pos.getX(), pos.getZ()); - - for(BlockPos node : nodes) { - - if(!knownNodes.contains(node) && !node.equals(pos)) { - knownNodes.add(node); - if(hasPath(worldObj, pos, node)) reachableNodes.add(node); - break; - } - } - } - } - } - } - public BlockPos getCoord() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); return new BlockPos(xCoord + dir.offsetX * height, yCoord + dir.offsetY * height, zCoord + dir.offsetZ * height); } - public static boolean hasPath(World world, BlockPos pos1, BlockPos pos2) { - Vec3 vec1 = Vec3.createVectorHelper(pos1.getX() + 0.5, pos1.getY() + 0.5, pos1.getZ() + 0.5); - Vec3 vec2 = Vec3.createVectorHelper(pos2.getX() + 0.5, pos2.getY() + 0.5, pos2.getZ() + 0.5); - Vec3 vec3 = vec1.subtract(vec2); - if(vec3.lengthVector() > maxRange) return false; - //for some fucking reason beyond any human comprehension, this function will randomly yield incorrect results but only from one side - //therefore we just run the stupid fucking thing twice and then compare the results - //thanks for this marvelous piece of programming, mojang - MovingObjectPosition mop0 = world.func_147447_a(vec1, vec2, false, true, false); - MovingObjectPosition mop2 = world.func_147447_a(vec2, vec1, false, true, false); - return (mop0 == null || mop0.typeOfHit == mop0.typeOfHit.MISS) && (mop2 == null || mop2.typeOfHit == mop2.typeOfHit.MISS); - } - public void addHeight(int h) { height += h; height = MathHelper.clamp_int(height, 1, 15); @@ -120,70 +34,4 @@ public class TileEntityDroneWaypointRequest extends TileEntity { nbt.setInteger("height", height); } - - /** - * Adds the position to that chunk's node list. - * @param world - * @param x - * @param y - * @param z - */ - public static void push(World world, BlockPos pos) { - - HashMap> coordMap = activeWaypoints.get(world); - - if(coordMap == null) { - coordMap = new HashMap(); - activeWaypoints.put(world, coordMap); - } - - ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(pos.getX() >> 4, pos.getZ() >> 4); - Set posList = coordMap.get(chunkPos); - - if(posList == null) { - posList = new HashSet(); - coordMap.put(chunkPos, posList); - } - - posList.add(pos); - - lastActive.put(pos, System.currentTimeMillis()); - } - - /** - * Gets all active nodes in a 5x5 chunk area, centered around the given position. - * Used for finding neighbors to check connections to. - * @param world - * @param x - * @param z - * @return - */ - public static Set getAllLocalNodes(World world, int x, int z) { - - Set nodes = new HashSet(); - - x >>= 4; - z >>= 4; - - HashMap> coordMap = activeWaypoints.get(world); - - if(coordMap == null) return nodes; - - for(int i = -2; i <= 2; i++) { - for(int j = -2; j <= 2; j++) { - - Set posList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); - - if(posList != null) for(BlockPos node : posList) { - Long timestamp = lastActive.get(node); - - if(timestamp != null && timestamp >= System.currentTimeMillis() - maxAge) { - nodes.add(node); - } - } - } - } - - return nodes; - } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java new file mode 100644 index 000000000..0ae16c2df --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java @@ -0,0 +1,172 @@ +package com.hbm.tileentity.network; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; + +import com.hbm.util.ParticleUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; + +public class TileEntityRequestNetwork extends TileEntity { + + public static HashMap>> activeWaypoints = new HashMap(); + public static HashMap lastActive = new HashMap(); + public static long lastWipe = 0; + + public Set reachableNodes = new HashSet(); + public Set knownNodes = new HashSet(); + public static final int maxRange = 24; + public static final int maxAge = 2_000; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) { + BlockPos pos = getCoord(); + push(worldObj, pos); + + for(BlockPos known : knownNodes) { + ParticleUtil.spawnDebugLine(worldObj, + pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, + (known.getX() - pos.getX()) / 2D, (known.getY() - pos.getY()) / 2D, (known.getZ() - pos.getZ()) / 2D, + reachableNodes.contains(known) ? 0x00ff00 : 0xff0000); + } + + //rescan known nodes + if(worldObj.getTotalWorldTime() % 40 == 0 && knownNodes.size() > 0) { + + BlockPos node = (BlockPos) new ArrayList(knownNodes).get(knownNodes.size() > 1 ? worldObj.rand.nextInt(knownNodes.size() - 1) : 0); + + if(node != null) { + + Long timestamp = lastActive.get(node); + + if(timestamp == null || timestamp < System.currentTimeMillis() - maxAge) { + knownNodes.remove(node); + reachableNodes.remove(node); + lastActive.remove(node); + } else if(!hasPath(worldObj, pos, node)) { + reachableNodes.remove(node); + } else { + reachableNodes.add(node); + } + } + + //discover new nodes + } else { + + Set nodes = getAllLocalNodes(worldObj, pos.getX(), pos.getZ()); + + for(BlockPos node : nodes) { + + if(!knownNodes.contains(node) && !node.equals(pos)) { + knownNodes.add(node); + if(hasPath(worldObj, pos, node)) reachableNodes.add(node); + break; + } + } + } + } + } + } + + public BlockPos getCoord() { + return new BlockPos(xCoord, yCoord + 1, zCoord); + } + + /** + * Performs a bidirectional scan to see if the nodes have line of sight + * @param world + * @param pos1 + * @param pos2 + * @return + */ + public static boolean hasPath(World world, BlockPos pos1, BlockPos pos2) { + Vec3 vec1 = Vec3.createVectorHelper(pos1.getX() + 0.5, pos1.getY() + 0.5, pos1.getZ() + 0.5); + Vec3 vec2 = Vec3.createVectorHelper(pos2.getX() + 0.5, pos2.getY() + 0.5, pos2.getZ() + 0.5); + Vec3 vec3 = vec1.subtract(vec2); + if(vec3.lengthVector() > maxRange) return false; + //for some fucking reason beyond any human comprehension, this function will randomly yield incorrect results but only from one side + //therefore we just run the stupid fucking thing twice and then compare the results + //thanks for this marvelous piece of programming, mojang + MovingObjectPosition mop0 = world.func_147447_a(vec1, vec2, false, true, false); + MovingObjectPosition mop2 = world.func_147447_a(vec2, vec1, false, true, false); + return (mop0 == null || mop0.typeOfHit == mop0.typeOfHit.MISS) && (mop2 == null || mop2.typeOfHit == mop2.typeOfHit.MISS); + } + + /** + * Adds the position to that chunk's node list. + * @param world + * @param x + * @param y + * @param z + */ + public static void push(World world, BlockPos pos) { + + HashMap> coordMap = activeWaypoints.get(world); + + if(coordMap == null) { + coordMap = new HashMap(); + activeWaypoints.put(world, coordMap); + } + + ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(pos.getX() >> 4, pos.getZ() >> 4); + Set posList = coordMap.get(chunkPos); + + if(posList == null) { + posList = new HashSet(); + coordMap.put(chunkPos, posList); + } + + posList.add(pos); + + lastActive.put(pos, System.currentTimeMillis()); + } + + /** + * Gets all active nodes in a 5x5 chunk area, centered around the given position. + * Used for finding neighbors to check connections to. + * @param world + * @param x + * @param z + * @return + */ + public static Set getAllLocalNodes(World world, int x, int z) { + + Set nodes = new HashSet(); + + x >>= 4; + z >>= 4; + + HashMap> coordMap = activeWaypoints.get(world); + + if(coordMap == null) return nodes; + + for(int i = -2; i <= 2; i++) { + for(int j = -2; j <= 2; j++) { + + Set posList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); + + if(posList != null) for(BlockPos node : posList) { + Long timestamp = lastActive.get(node); + + if(timestamp != null && timestamp >= System.currentTimeMillis() - maxAge) { + nodes.add(node); + } + } + } + } + + return nodes; + } + +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..c7d04c9a352e326ac1694bc6378cfe89772fce57 GIT binary patch literal 764 zcmVVx+qUf9wtVsS&sb{_LQqu|&N;N!eDv*W z?C)*Uwk`hAJ^H>!gb)ZJ(6%i{M@Im7@2Tq=DJ3BUs;XkKSO8?5)|#RyP*O^ylDh%us+Vm8xQYjcuwj;3k&{LLRJ z%M#}tRdoR&1R|LugkWQ1gBT+KLI`HFSvGLFToOWHwOV0}VVb73E)`Hp5o1IMfwh(x zBjY&cBGWV>grKf#hG9T!z0ULApD`{yqm+^uBeU6z7$e?$gb)nFfKrO0DAptQeVrxd*$)vvpjhB*B77gK+n$Q!L{FBe!_zb)&D&B+j+3}!Y|pd_l{mVmj_>8e3&(# u{_)oO;>3en+xxt)ZvxNeLDKz)crs z2!V6~mnj1wZ9+&$x6O77+le$;T&?XOKNw4XNJzGXN47?<(Va;lG!Tfz7AZo=>F@dO zcka1A3JUe`};JT zP2%x50KV^|wGIvE(pn>>B$vxktJN?~6H_V0_VzZu@6&3v`0?Tk7U|b#2iUevqtTcd zXsxMKDwNA*lu~^80p{BjYfl3tHs*d z8sqU8fFK9}{%YX+K0*kNkB`~d*uXSRJkR6u@{(LGhY%ussc1Bc)*5pHn7+0g$AzcG8hcV=kuJNp3-Wy=yW=y(`oMS?~ziH zNF)FdLd;ee34u`X$j^l(4J3Kt3-EOnKzD_I_!}oon(I`qO zYPA}ho0}w)NuI5Kix2|CFfgT*?Ck7tetwSQIDGfVb9nbikKe%0pY@2x;~X6w%`)&j zkGs1&9LFJ-%kh1oLM#>wD?A#Fm`_xngG!~N#c zT8G`3w{@=hk2TBXGXE|f{PvOaNP;u%^`9>0!H1P6i+Nz5{XGx%qA%Z@2fu&f{?7yc zn>^U-KYec=eDG@NaUQ%bUjy|=iu{(ZH$Ps?gU_!Di+NxK|11yw1lp^4c!Fv#umAu6 M07*qoM6N<$f*RwE@Bjb+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_side.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_provider_top.png new file mode 100644 index 0000000000000000000000000000000000000000..824bd9421e2335b5bba09ee7263f581e58552cdf GIT binary patch literal 732 zcmV<20wev2P)ko_Xh; zXP)^vPi|eQwAM7`x-L~!F&d4~T9YIRp63zAF~%68C}M1Ej3|m24u>eMHA_oN7-Nu9 z0#KGE#u(eMsYbK5wnn?%Mk$4IT^C~vr)K8}!;s#5mpey~lcp&`2t3b2YmM*wTzmP9 zh1-jSVMy`jA#ofdj4>Ev2*Z%UU;sc-6a+zlloDeMp64+djR369_kA44K}ji*Qqr66 z+EG_mR}n%WrKBuNgb?I;4q$b2(=$jZ>mx`hxjA*1vMkxy*kCaD%udytI>5xl1X^o6 zZyX^6sxe0hf$#gQudf5}_}kBm&vj~Zvn(SB0;;M4Kr{`MQg+cn?ZAEhyEYZ6D=RBZPEOi| z?RFc-ad2IiG)*ar!akm=s%*Ub{XS|q9Fk=j%gf8#Of$yVY;3*W=EbV%>1qBh9`w6C zPF_5=BM+Y5d(P#>g+IiDez#{w{S^-y-JYwbe&)fE3x_s&5PsU8V_@p^{!Jc?d;fXx z+j;Qf!D}l#IJ0+09=v-ru$uGN&(uvD9yAH-cYC|?-~(T*PKf@$!h;`iBUa@YvLTKD O0000!;H4U9G#kY#saKobMS$Yi*|WH&LGpgZV$tGhnhpy^^}8H{$pzylTa zdrqD6*6AmEaR2(~oMVnW&l$&&&1Qphj;`w{%aXQj2_eul4LdtKG)=>Ly+%3bI6gim zgn*P1fEXhogj8^jS#x%FhA{@E6e`biLI_-a>lUlkishl@yU%{XT8j{ZvMh1Vp|$42 zFJ9;9_8zO%3h(aHwk;xrKnQ`=YQ@RP2>{-Es;WXtNeF?mEZJ-}07<8{Cd)FEloBZ= z%R>u13xKtjVHi+K5kkOwkF^#c>2AI9H&V)J1Sut7e)KajMwC(%g~nQ&lALqYbrhIOW!W@x+qS9Y zuIrL{F-BsHIOkAGQP(xjIgBw3!+;QC%A21@2$4=**Xb4^1j8_}-EPVA9BVDcnB<$9 zXS{Lq?PS>3pWMTHpE{XG{P?Rkljg^RKLJop(*UFmTOL}fs$v)h`o2eNjdL!o`K%K{ zOdZZ29^J&*ykQv9GM(2crKS#?b1W7M7Ulta&v{;Yag8xgk!2aXySrFx@!n&M;iqr^ zVjM@Fc{(6vITcv1*YthQ>FFttMhGG8#@y)~^B=4B_xJg4@!*bK^1;q)m-68IvtK#b zJ9O~&BtDZl{gW^&iTz4;@<3ag94<0)YZg2ibhP~Ila48Rd zXn&go9ei3|n=YPtaIkm8`}!LIs;a^mLyQrvHF=(+wZ5Qxf;=eRz!-BW4?b7#Fpj@J bULO1d^a-o}ttbwv00000NkvXXu0mjfC`@Nz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_bottom.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_side.png new file mode 100644 index 0000000000000000000000000000000000000000..70d40f0709beea9bd522bb11bc50b97452930fce GIT binary patch literal 896 zcmV-`1AqL9P)1vn+4cIO5J!&e!ig9_{(F_kGuOS;#O9eBWm@8sWMw!{HFqG_h?Pr4*KB5s$~wG>xO9BXrkwIXpb1 z-EI?&Mgj0V52aLKxR6o`DJ7XqhI+k@uIuQAVNfg<@jQ=Cr^C0ue8e*S_~j9`T8&n# zH8)U7ad2=zxm?CD3_gD6JJRVirfD*rPSG?C!!Q_+$82nDaDHB+R;#hMw@0m3Lr5u+ zQu6i(yOc^LQmGWJR*T2SN0d@HjuRYiG#YffU4D4>2`eirNGazlNGSoRR;v_?MRZ-K z)oQV}wgx~lnWWq8((m^v6bb;Cril;&eGv{oG#cgf^pu^Q9j4PMyvTG7Zf@c@ z4gkLI1N_;*^E`wQoSdAnwY7z=>$tAV)zuZ5Oa>uD@KWJ$7^M{YY&HuLHcc}y3WY-W zzK>xT#9}d&QV1a!4u=3}nl>M3+jd|u91a9q9G>TKb8|x~l?qBFgg}Hsp}-)Y&r`40 zxxBn&b#*nkX0=+SP$-a0CTTPp0F1}u`B2NUf`(Np6}sIn*=&|bB!cI8gu`JB!=PTT zv%S4dJRaxWH@`p#fu?EbQc8Arce%K@z_Kj9`sux;RsQ~Sn`ku3@$vCI1J`xAzrV+_ zEHar4Uw?K$BoYZKJef?G&1OU*5p-S0_caoU1VRX!%_jQw^)-XR04Zg#-$F{Mpc{*} zF0}ZudbwQY<>JAwo7U10_w!Gd^WY8pl^5{f{GWNSfAaIc=D}}U!+;0kuRO@*a-`E~ zZf|dyOeVOlOCphY*?2Jdp9k;<5A+2O_VZ7uR4NPx1G3pH)9Dn)aR`UQxUL)Uz_x8( zYYY+DIS;g_-@NWSj)QI6^!t6DuQiue`O{b5qS!^1<`?KVm&gzx(pV^~|?=5psQTTkDxyu3`e+huWak)@?2 z78Vv*Sy|zSX9rxr@jaJ2cbS=)!CH$j#$b#gj$=ln5dc+H5k(PFN{lfCLBM1(0dTr7 z4Dmb2fXwR&)HfDi&HC3RgRgrF=-0H@o&x{j0*<@-KTO77peLS5G!A0IOs z{l$4PxV^&s{5)D~f?y6I1gbGd2tgQz93342@bfPx4{vTv%`J+8D2lMw0w9_MN-5Xw zMd5iKQ52D78DSVs3s+U;j0=Lmjq<#(){ObH-n4>B zk_3Q<-#j9YV+IfUbUGc%vZN>q!Z1W@?YwDpLWt?FG#^fHVyo4nu4~GkhWtZ9LDz_kHp_r>ZJKTVs@2t1-YXB(KY0+xF~k0Vo8Mj|&vS$j1VMn-nlKD`^7V7ReDshwj;ZvIq-pvN zc`)n`T&w@agGM*Ay>^lZpWgrEEf3;XXZINRc<|v{9?S**^WdHH;J4l%PWVypgL8TC z=e?2Be6e$DnzZ3Tvth&j;6fg}(DVoX`6+;%kp0000 CTV&n< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/drone_crate_requester_top.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/drone_dock_bottom.png b/src/main/resources/assets/hbm/textures/blocks/drone_dock_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..67ebd79eccb2298270afc77f08be6e483e0d1450 GIT binary patch literal 528 zcmV+r0`L8aP)1s=ALY$E&LOiR6h{3LG7RPUn&da+~)VJ>wi z%h%VJhY$d8cjj7EF*8I25n(=K40`W`5C|b)BEskACn7>?Z2`7zLsbzGQc9Q^?#_MR zlu`hAKA+gOZKRa=`1l~_ObCHm>jE9e!M^XLl*l>r^YcS%jpy@8YwgXz%otLke?SO}v6vUN)^PW?WD!AC*G7zy-a9EJVvOAPjffCJ zpp>#am8rIa(~jdH#>nsQFFEIT{$`jN!QE-C{i$#WVb$2oh%s_q7q!+^ zX?MrnF?U}e5#c;f?)wH<^k1 S7CSru0000;@S0}=riP= zTmlIT10#YE*n?)KXQsO=hh>^gvKT#hNeTv2i<|axhy!Q!E6a~f@lv3n*j12bt^=T|Dr`{{kAM)|$TW6KFghGa8M^^Bm_KkB^Ud@2RQ^@BNa2wU!totLG2`_xJZ0W7yf*q3b%7 zQt6%do)7}I?|b^bPt=D;cXxN(e7y$XARe-{wM9`BOePaVggnoOIV^`^jA1gFq{;&r zVD{;pvMdQ9qyoS)fl`Vr%gFPb5CTh;Vy* zyB564WImr0V@w;;!+Hift_9~D zbzLtL3hzM3hFvg&@Mk&R~`&0V9 z2S}}j5NO*L=NxSth%u(3cIe$&%l7s*8ygz{IOhNeA@K0@1)zkJphLs^!oCu0mD1VUI+?Yb`gr9-R3y@+5J ziv>^l!JyJr9f%0y@%X>+1FmlX_;z^kaz7Zr0L}UAWquGYul|s(n_WE557vQKnY_Lq zyg5EfqFU<*Qa|kn-#?tCYCqO6ko~<^_Jir^$4&R!@~o& zx3{E}jtqJjs>-q~xI1reZ~QhdFE5A)W(IHsDI!eML`n%W!`*)c1MK_GzVEcwaCb!H zAW+o->^1&HP;14^Mnj?3(`9wfzm2M5W~}SVx~`N`2-7qTU;hJl0(U3p%=LOb2zr3i zG_fqpsO&Eb+qND3$9Nofr?ob`iwLi;um5DCs?=I3r3^B6$K4MCRV9Rgi176EM6Gp@ z_1!O}kaMP#f|-p^WA`3oy>p~nWhOd)Yi+2=IkT=S+qMy79NXDXR8`LB^YEmqV`0o}gx2>ZgfQOSogWRl90I$X3Qhn3 N002ovPDHLkV1m9+@V@{6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_provider.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_drone_provider.png index 5c3ef3032ce732a1b922a4643ad8fcd5ffde87af..a0b473215e5bb9d60a1e54f6915bf0e13ea87ec0 100644 GIT binary patch delta 869 zcmV-r1DgET3I7R@G=H{9L_t(|obBB)P8(|!hT$_&_K+sqpa2(l1?eoYiwGnaSpuCS zc7g1U72L)y*hZSHVp3SXx*?H?@l58&-}5wdhhN}%H6EEmSLd&v`T!H^rak~|JNFkz z|L@n&Q=efn|J>YHo&WEc6TF-H03(XN_^Yb!t}m*x?|^v0`zNUn@V9KY+o_N6*DW8O z>O)n1-$lTk0KYirJAnTrUi|PUA_4&Xo|7;E7*SZvM}e!VE-x>qKEmjH>XBna1)%Eu zFOV+}Py0Utf)~XFplWxKoa)oZs>g4qpJm87vzZH@<3t9aYInh$VzKyKk2m*C%{lkG z8;0j0AOsVWT>~pDBKHA&`ndc1`E#2C$BGQV^J$eG{;6DjujbzDjR{I z$}<3nlV1ZYA4Tp1Xl;{^jX+E#G61b@^05(!sYC{#%0?il@(ci?lYs#xk&wH_)W?8kLh9X!JlOLP@Jub;>F@`- zsShx+{_grB{$lvP`*QBTYhEGYMbUql`UDel@pDMZ3!|U<025029RmOW0000007U!$ zheVP;EW_L4!%YL({~-Imcm4A*HgsKAB?5zZS1x|un9XKW<&Jd_T|Enc%`~)bxm;FN z)oQh>awl+-pY{Q`_#umhAd_JOBsT~DJMiu8?aAL@KA+cmy*9_3SI?QvW+%_#_g?(> z;Pd(Xq;IfTENZ=8n`6$a=lCnt@puaW!I8lklWzkOJ+OoO0Os>~Ef$NDzlk~K(59}c z`o8b0>eqh{ZX=L6EzEho5oozwR#nw%wW`{^hIu6$fy`-sj*UR$@eGsD0U?v10S1xK z2OKs6nbZ6n#$zLpInB?p5okO%0-4kN927GN<`DjOXA+AZU?| zK*RAC0D=hs1QP%VcJLvft-$8AFz5MJV1{EWusO}o@o;)P-U5>`0U?ub0}MsXR$z0Q zpTl@;1?J7M6?iz_0zfbUfM5c^o3g+CXBh9Rs_VM0-)uI1xDaN42hd$zT}^rrIEDv+ v!+8D!>?b(|9M8oMlYs<3laK@l7vuN=u%9ic%XHUS00000NkvXXu0mjfcsQ%2 delta 827 zcmV-B1H}CQ3D*gbG=GjsL_t(|obBD=ZQEE7h0%FInzGae8xg=hRESsyRTlS$;b7y< zI*~<&&%EapFnO@eFBBn-S{>iA_W^d)_C5f8JNh5UvMjmRe`~Gk_`hSG@NMq{Y$*ET zud15oxhne(h~GH!{|-L|;C{dFc$9ryuh*)oy4`M7$NpXONe)N81Nb5F;)g#G5dh%V zlg|PcO9BAFzVCg2zv<=WW$zq%E|(vl0f66$3qaNDMe?j+7;2iP zuI8N2=cnh8B{Be2uNTZS#&N7^n!1{E^t&6@lRg16CJe(+<2W8}4m>I{0Mj%*y@ls( zlTS}`Yy{#_kpZZ(5eTY01Au6g-~$|!&jJr1SmZu{-ZuHz2*h3@1JK(h9~*(#OJo45 zYy^TT&j28rlc516lb-_ye-^n9ptnsvHUhDi$N-$r=T(+x^fm_`6%~N{{a%;LW$$A^ zH=+ViRdu~y_dWu2!$ZJ>5<33Gk?#OnYi*h5*~I|=;8#?8EN{T;r>> zhheB`n#?ih({s+}^V4(qwcma@=r9aV{R87T)-+A#nDgm5KBc-HF9DO010j>(0}MR& z;XZ(27-}5Hr~eUi%%M-Ms+MJ0s_MUA4{jrnIX%pIzY*wqy;fD#?RKkr{Tt?!Yy>i= z`#ClOZO1c{(E}?W1OS5B2xLz8bJ&iJK<0Em$3~#-*a&1!_j7Cn+Ky)clfeQcli&jh zHM0@OobKnaoewtxL62+%T920i5KI6dm;gYq4<7>B3T#dfbKY+SW<9n7o74Rq52v@| zB>S3#y^X7O1=P5uoeIS002ovPDHLk FV1n&Mg~so`}a z%w#)E)_nkcYv>oG`{(a_1CL}|{Pz2kDiLVPxdCT6`B~}lqbw^`t`M7YeyqXE<#Mdi zY^cTJbzQnx_2FZ6-KA(F0 z<<~z3Jd!rOeEzI1UwFFi!{7%-4M5fQe=PXH!`H`OaygZ!fBiY&(X{8?+c$Oh#=4J! z9~nIWRYxaDUw3X-?H}|%mLca%r>8&hzxM9!o8B|7?_8}H%U4a!dH?Bi?>UU?Oaf4K zbi(v8pWh&>{eve>%^C9Q=K9XnUVlHmd8=M5Uo|yn+pli6ft!Gnp#v0?t^^rLJCl6? zcWxhje}3EM4CVUH)tcVCwRLl7-3=-hcW$*z%0l=FqlL z1F&2!>%qgPGO7}p}TZ(gsE%=Cx2VUdRQU4k>;}bocsU)00000 z001NS`a>B$yu+sOVWNQ?KapM6Ise%VlgXq?1O{=gocwH=e;#}`oAr8t`Fvh`dwb@XbLu(1r8*vO0h3Sy8Bs_VM0s{Z@);5Gu8)54sS8-W&!MO9Vp?(S9{{SR|WHUgQ`{2UvB#*^;@G#L3g zjK@YGbDE!HBhYwk1Tv@jIW_`~$32s;1RIl(0TVRY2xLz4a~RLcjX=;M8-a%7EdT@) z00<@k5Nzd5KwE*$X<^REt-uV&R$z0QpX28Ac)SIZkpm=?t^^83t-$6qKZo(y3e3i_ z6?iz_0zfbUfM5c^MmfIxXBg+JYBHHjy2HamPcDQxz5B>GPLn%QJeLL*G^n!0~vjtE;OuAL6XNef_FFet7@The5ER;jDR{=c=l%{&%Gx zyWOs;s`mSRRolNk?#N9*?#0c?PhVQT1sH~5m=A}87aPt*>nnia^769rNFEcH|9x5O zg_u{GOUwCl@&f<>000000IcAjAIk9I9nOUh6E$-4M1K7yAM|b*hAI(g;z>FAIWvdD zp~@9&6GPn!fba6tJ9`D%`R3bzPJYN@AqWH$lWhbcG1$r925j-u-s3pdG)?B1bLTmm z&1Uf&zVCm39CRGVMGvsuZflw*bIiH(9N$u1kGGR>1S^xk0R%a@4`3X}+HSXtAH*DU z=+jVD^E}U0_3xhtw-Lyk9_HNM2(;Vns;X+g-&bA#4Rc2}0-4kO92=8W00?&SCZMgr z=JYV<_Euopu@%^y?&r8Uy&i7?lPv@!lYayWMP@6oIo;1;J+=aKc5DT1$6EjhCIApj z05~f*m;bc!w5o<-80N#_;K_wBH&+0|<>lpr9tivhHvrqX{RGYrauo36ocxnf1vryn e1r8Xnj=up0TE$ELmBAhW0000 Date: Mon, 25 Sep 2023 21:23:36 +0200 Subject: [PATCH 044/207] my personal hell is southend-on-sea --- .../com/hbm/blocks/network/DroneDock.java | 6 + .../java/com/hbm/tileentity/TileMappings.java | 3 +- .../network/TileEntityDroneDock.java | 18 +++ .../network/TileEntityRequestNetwork.java | 10 ++ .../TileEntityRequestNetworkContainer.java | 149 ++++++++++++++++++ 5 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java diff --git a/src/main/java/com/hbm/blocks/network/DroneDock.java b/src/main/java/com/hbm/blocks/network/DroneDock.java index bee33693f..4a857b786 100644 --- a/src/main/java/com/hbm/blocks/network/DroneDock.java +++ b/src/main/java/com/hbm/blocks/network/DroneDock.java @@ -1,5 +1,8 @@ package com.hbm.blocks.network; +import com.hbm.blocks.ModBlocks; +import com.hbm.tileentity.network.TileEntityDroneDock; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; @@ -20,6 +23,9 @@ public class DroneDock extends BlockContainer { @Override public TileEntity createNewTileEntity(World world, int meta) { + + if(this == ModBlocks.drone_dock) return new TileEntityDroneDock(); + return null; } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 36e0d6df7..36afb0545 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -393,8 +393,9 @@ public class TileMappings { put(TileEntityRadioTelex.class, "tileentity_rtty_telex"); put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint"); - put(TileEntityDroneWaypointRequest.class, "tileentity_drone_waypoint_request"); put(TileEntityDroneCrate.class, "tileentity_drone_crate"); + put(TileEntityDroneWaypointRequest.class, "tileentity_drone_waypoint_request"); + put(TileEntityDroneDock.class, "tileentity_drone_dock"); } private static void put(Class clazz, String... names) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java new file mode 100644 index 000000000..9efcc685c --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java @@ -0,0 +1,18 @@ +package com.hbm.tileentity.network; + +public class TileEntityDroneDock extends TileEntityRequestNetworkContainer { + + public TileEntityDroneDock() { + super(9); + } + + @Override + public String getName() { + return "container.droneDock"; + } + + @Override + public void updateEntity() { + super.updateEntity(); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java index 0ae16c2df..ad2e4d361 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java @@ -14,6 +14,16 @@ import net.minecraft.util.Vec3; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; +/** + * i can see it clearly + * this simple idea, this concept of 4 individually acting objects performing basic tasks + * it is all spiraling out of control + * in a giant mess of nested generics, magic numbers and static global variables + * may god have mercy on my soul + * + * @author hbm + * + */ public class TileEntityRequestNetwork extends TileEntity { public static HashMap>> activeWaypoints = new HashMap(); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java new file mode 100644 index 000000000..4870bf2b4 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java @@ -0,0 +1,149 @@ +package com.hbm.tileentity.network; + +import com.hbm.packet.NBTPacket; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; + +/** + * "Multiple inheritance is bad because...uhhhh...i guess if you do it wrong then it can lead to bad things" + * ~ genuinely retarded people on StackOverflow + * like yeah, doing things wrong can lead to bad things + * no shit + * just like how java operates already + * you fucking dork + * + * this class has to extend TileEntityRequestNetwork for all the network stuff to work + * but it also needs slots and all the container boilerplate crap + * since multiple inheritance is a sin punishable by stoning, i had to cram the entire contents of TileEntityMachineBase into this class + * is this good code? is this what you wanted? was it worth avoiding those hypothetical scenarios where multiple inheritance is le bad? + * i believe that neither heaven nor hell awaits me when all is said and done + * saint peter will send me to southend + * + * @author hbm + */ +public abstract class TileEntityRequestNetworkContainer extends TileEntityRequestNetwork implements ISidedInventory { + + public ItemStack slots[]; + + private String customName; + + public TileEntityRequestNetworkContainer(int scount) { + slots = new ItemStack[scount]; + } + + @Override public int getSizeInventory() { return slots.length; } + @Override public ItemStack getStackInSlot(int i) { return slots[i]; } + @Override public void openInventory() { } + @Override public void closeInventory() { } + @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return false; } + @Override public boolean canInsertItem(int slot, ItemStack itemStack, int side) { return this.isItemValidForSlot(slot, itemStack); } + @Override public boolean canExtractItem(int slot, ItemStack itemStack, int side) { return false; } + @Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] { }; } + + public void markChanged() { + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) { + if(slots[i] != null) + { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemStack) { + slots[i] = itemStack; + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) + { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.customName : getName(); } + public abstract String getName(); + @Override public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } + public void setCustomName(String name) { this.customName = name; } + @Override public int getInventoryStackLimit() { return 64; } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; + } + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + if(slots[slot] != null) { + + if(slots[slot].stackSize <= amount) { + ItemStack itemStack = slots[slot]; + slots[slot] = null; + return itemStack; + } + + ItemStack itemStack1 = slots[slot].splitStack(amount); + if(slots[slot].stackSize == 0) { + slots[slot] = null; + } + + return itemStack1; + } else { + return null; + } + } + + public void networkPack(NBTTagCompound nbt, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + + public void networkUnpack(NBTTagCompound nbt) { } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList list = nbt.getTagList("items", 10); + + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if(b0 >= 0 && b0 < slots.length) + { + slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList list = new NBTTagList(); + + for(int i = 0; i < slots.length; i++) + { + if(slots[i] != null) + { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setByte("slot", (byte)i); + slots[i].writeToNBT(nbt1); + list.appendTag(nbt1); + } + } + nbt.setTag("items", list); + } +} From 2986382029347c8445ba38c2cfae362a1b125f3c Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 27 Sep 2023 16:25:30 +0200 Subject: [PATCH 045/207] drone GUI crap --- .../com/hbm/blocks/machine/MachineBoiler.java | 26 ++-------- .../com/hbm/blocks/network/DroneDock.java | 21 +++++++- .../container/ContainerDroneDock.java | 29 +++++++++++ .../container/ContainerDroneProvider.java | 29 +++++++++++ .../com/hbm/inventory/gui/GUIDroneDock.java | 39 ++++++++++++++ .../hbm/inventory/gui/GUIDroneProvider.java | 42 +++++++++++++++ .../network/TileEntityDroneDock.java | 24 ++++++++- .../network/TileEntityDroneProvider.java | 51 ++++++++++++++++++ .../network/TileEntityDroneRequester.java | 52 +++++++++++++++++++ 9 files changed, 288 insertions(+), 25 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerDroneDock.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIDroneDock.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIDroneProvider.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java create mode 100644 src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java diff --git a/src/main/java/com/hbm/blocks/machine/MachineBoiler.java b/src/main/java/com/hbm/blocks/machine/MachineBoiler.java index 24bd24f16..2f65df9e8 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBoiler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBoiler.java @@ -147,30 +147,10 @@ public class MachineBoiler extends BlockContainer { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { + if(world.isRemote) { return true; - } else if(!player.isSneaking()) - { - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityMachineBoiler) { - - TileEntityMachineBoiler entity = (TileEntityMachineBoiler) te; - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - } - - if(te instanceof TileEntityMachineBoilerElectric) { - - TileEntityMachineBoilerElectric entity = (TileEntityMachineBoilerElectric) te; - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - } + } else if(!player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; } else { return false; diff --git a/src/main/java/com/hbm/blocks/network/DroneDock.java b/src/main/java/com/hbm/blocks/network/DroneDock.java index 4a857b786..592f5a194 100644 --- a/src/main/java/com/hbm/blocks/network/DroneDock.java +++ b/src/main/java/com/hbm/blocks/network/DroneDock.java @@ -1,13 +1,18 @@ package com.hbm.blocks.network; import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityDroneDock; +import com.hbm.tileentity.network.TileEntityDroneProvider; +import com.hbm.tileentity.network.TileEntityDroneRequester; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -23,8 +28,10 @@ public class DroneDock extends BlockContainer { @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(this == ModBlocks.drone_dock) return new TileEntityDroneDock(); + if(this == ModBlocks.drone_crate_provider) return new TileEntityDroneProvider(); + if(this == ModBlocks.drone_crate_requester) return new TileEntityDroneRequester(); return null; } @@ -42,4 +49,16 @@ public class DroneDock extends BlockContainer { public IIcon getIcon(int side, int metadata) { return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + return true; + } else { + return false; + } + } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java b/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java new file mode 100644 index 000000000..63a49cba6 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java @@ -0,0 +1,29 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.network.TileEntityDroneDock; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; + +public class ContainerDroneDock extends ContainerCrateBase { + + public ContainerDroneDock(InventoryPlayer invPlayer, TileEntityDroneDock tedf) { + super(tedf); + + for(int i = 0; i < 34; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new Slot(tedf, j + i * 3, 62 + j * 18, 17 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java new file mode 100644 index 000000000..974162b38 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java @@ -0,0 +1,29 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.network.TileEntityDroneProvider; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; + +public class ContainerDroneProvider extends ContainerCrateBase { + + public ContainerDroneProvider(InventoryPlayer invPlayer, TileEntityDroneProvider tedf) { + super(tedf); + + for(int i = 0; i < 34; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new Slot(tedf, j + i * 3, 62 + j * 18, 17 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneDock.java b/src/main/java/com/hbm/inventory/gui/GUIDroneDock.java new file mode 100644 index 000000000..006b8a092 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneDock.java @@ -0,0 +1,39 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerDroneDock; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityDroneDock; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIDroneDock extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_drone_dock.png"); + private TileEntityDroneDock diFurnace; + + public GUIDroneDock(InventoryPlayer invPlayer, TileEntityDroneDock tedf) { + super(new ContainerDroneDock(invPlayer, tedf)); + diFurnace = tedf; + this.xSize = 176; + this.ySize = 185; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneProvider.java b/src/main/java/com/hbm/inventory/gui/GUIDroneProvider.java new file mode 100644 index 000000000..0547e969d --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneProvider.java @@ -0,0 +1,42 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerDroneProvider; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityDroneProvider; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIDroneProvider extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_drone_provider.png"); + private TileEntityDroneProvider diFurnace; + + public GUIDroneProvider(InventoryPlayer invPlayer, TileEntityDroneProvider tedf) { + super(new ContainerDroneProvider(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java index 9efcc685c..12e36938b 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java @@ -1,6 +1,17 @@ package com.hbm.tileentity.network; -public class TileEntityDroneDock extends TileEntityRequestNetworkContainer { +import com.hbm.inventory.container.ContainerDroneDock; +import com.hbm.inventory.gui.GUIDroneDock; +import com.hbm.tileentity.IGUIProvider; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.world.World; + +public class TileEntityDroneDock extends TileEntityRequestNetworkContainer implements IGUIProvider { public TileEntityDroneDock() { super(9); @@ -15,4 +26,15 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer { public void updateEntity() { super.updateEntity(); } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerDroneDock(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIDroneDock(player.inventory, this); + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java new file mode 100644 index 000000000..ab9860d64 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java @@ -0,0 +1,51 @@ +package com.hbm.tileentity.network; + +import com.hbm.inventory.container.ContainerDroneProvider; +import com.hbm.inventory.gui.GUIDroneProvider; +import com.hbm.tileentity.IGUIProvider; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class TileEntityDroneProvider extends TileEntityRequestNetworkContainer implements IGUIProvider { + + public TileEntityDroneProvider() { + super(9); + } + + @Override + public String getName() { + return "container.droneProvider"; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return true; + } + + @Override + public boolean canExtractItem(int i, ItemStack stack, int j) { + return false; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerDroneProvider(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIDroneProvider(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java new file mode 100644 index 000000000..a6eb59b08 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java @@ -0,0 +1,52 @@ +package com.hbm.tileentity.network; + +import com.hbm.module.ModulePatternMatcher; + +import net.minecraft.item.ItemStack; + +public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer { + + public ModulePatternMatcher matcher; + + public TileEntityDroneRequester() { + super(18); + this.matcher = new ModulePatternMatcher(9); + } + + @Override + public String getName() { + return "container.droneRequester"; + } + + public boolean matchesFilter(ItemStack stack) { + + for(int i = 0; i < 9; i++) { + ItemStack filter = slots[i]; + + if(filter != null && this.matcher.isValidForFilter(filter, i, stack)) { + return true; + } + } + + return false; + } + + public void nextMode(int i) { + this.matcher.nextMode(worldObj, slots[i], i); + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 17 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return false; + } + + @Override + public boolean canExtractItem(int i, ItemStack stack, int j) { + return true; + } +} From 1a318e2867cef6341a2d71c254ba26cf8912d0f9 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 27 Sep 2023 22:20:06 +0200 Subject: [PATCH 046/207] condenser model --- .../assets/hbm/models/machines/condenser.obj | 5515 +++++++++++++++++ .../textures/models/machines/condenser.png | Bin 0 -> 1581 bytes 2 files changed, 5515 insertions(+) create mode 100644 src/main/resources/assets/hbm/models/machines/condenser.obj create mode 100644 src/main/resources/assets/hbm/textures/models/machines/condenser.png diff --git a/src/main/resources/assets/hbm/models/machines/condenser.obj b/src/main/resources/assets/hbm/models/machines/condenser.obj new file mode 100644 index 000000000..f2b846454 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/condenser.obj @@ -0,0 +1,5515 @@ +# Blender v2.79 (sub 0) OBJ File: 'condenser.blend' +# www.blender.org +o Fan1 +v -1.375000 1.500000 0.125000 +v -1.375000 1.608253 0.062500 +v -1.375000 1.608253 -0.062500 +v -1.375000 1.500000 -0.125000 +v -1.375000 1.391747 -0.062500 +v -1.375000 1.391747 0.062500 +v -1.500000 1.608253 0.062500 +v -1.500000 1.500000 0.125000 +v -1.500000 1.608253 -0.062500 +v -1.500000 1.500000 -0.125000 +v -1.500000 1.391747 -0.062500 +v -1.500000 1.391747 0.062500 +v -1.501628 1.937500 -0.176192 +v -1.458876 1.500000 -0.058731 +v -1.373371 1.937500 0.176192 +v -1.416123 1.500000 0.058731 +v -1.501628 1.128663 -0.290790 +v -1.458876 1.449138 0.029366 +v -1.373371 1.433837 -0.466982 +v -1.416123 1.550862 -0.029365 +v -1.501628 1.433837 0.466982 +v -1.458876 1.550862 0.029365 +v -1.373371 1.128663 0.290790 +v -1.416123 1.449138 -0.029365 +vt 0.908031 0.056886 +vt 0.915969 0.056886 +vt 0.919938 0.070312 +vt 0.912000 0.039062 +vt 0.904000 0.054688 +vt 0.904000 0.039062 +vt 0.944000 0.039062 +vt 0.936000 0.054688 +vt 0.936000 0.039062 +vt 0.928000 0.039062 +vt 0.920000 0.054688 +vt 0.920000 0.039062 +vt 0.912000 0.054688 +vt 0.952000 0.039062 +vt 0.944000 0.054688 +vt 0.928000 0.054688 +vt 0.928000 0.054688 +vt 0.944000 0.109375 +vt 0.920000 0.109375 +vt 0.920000 0.109375 +vt 0.936000 0.054688 +vt 0.944000 0.109375 +vt 0.928000 0.054688 +vt 0.944000 0.109375 +vt 0.920000 0.109375 +vt 0.915969 0.083739 +vt 0.908031 0.083739 +vt 0.904062 0.070313 +vt 0.952000 0.054688 +vt 0.936000 0.054688 +vt 0.928000 0.054688 +vt 0.936000 0.054688 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.0000 0.5000 -0.8660 +vn 0.0000 0.5000 0.8660 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 1.0000 0.0000 +vn -0.9397 0.0000 0.3420 +vn -0.9397 0.2962 -0.1710 +vn -0.9397 -0.2962 -0.1710 +s off +f 11/1/1 12/2/1 8/3/1 +f 6/4/2 11/5/2 5/6/2 +f 4/7/3 9/8/3 3/9/3 +f 2/10/4 8/11/4 1/12/4 +f 1/12/5 12/13/5 6/4/5 +f 5/14/6 10/15/6 4/7/6 +f 2/10/7 9/8/7 7/16/7 +f 14/17/8 15/18/8 13/19/8 +f 17/20/9 20/21/9 19/22/9 +f 22/23/10 23/24/10 21/25/10 +f 8/3/1 7/26/1 11/1/1 +f 7/26/1 9/27/1 11/1/1 +f 9/27/1 10/28/1 11/1/1 +f 6/4/2 12/13/2 11/5/2 +f 4/7/3 10/15/3 9/8/3 +f 2/10/4 7/16/4 8/11/4 +f 1/12/5 8/11/5 12/13/5 +f 5/14/6 11/29/6 10/15/6 +f 2/10/7 3/9/7 9/8/7 +f 14/17/8 16/30/8 15/18/8 +f 17/20/9 18/31/9 20/21/9 +f 22/23/10 24/32/10 23/24/10 +o Fan2 +v 1.375000 1.500000 -0.125000 +v 1.375000 1.608253 -0.062500 +v 1.375000 1.608253 0.062500 +v 1.375000 1.500000 0.125000 +v 1.375000 1.391747 0.062500 +v 1.375000 1.391747 -0.062500 +v 1.500000 1.608253 -0.062500 +v 1.500000 1.500000 -0.125000 +v 1.500000 1.608253 0.062500 +v 1.500000 1.500000 0.125000 +v 1.500000 1.391747 0.062500 +v 1.500000 1.391747 -0.062500 +v 1.501628 1.937500 0.176192 +v 1.458876 1.500000 0.058731 +v 1.373371 1.937500 -0.176192 +v 1.416123 1.500000 -0.058731 +v 1.501628 1.128663 0.290790 +v 1.458876 1.449138 -0.029366 +v 1.373371 1.433837 0.466982 +v 1.416123 1.550862 0.029365 +v 1.501628 1.433837 -0.466982 +v 1.458876 1.550862 -0.029365 +v 1.373371 1.128663 -0.290790 +v 1.416123 1.449138 0.029366 +vt 0.915969 0.056886 +vt 0.919938 0.070312 +vt 0.908031 0.083739 +vt 0.912000 0.039063 +vt 0.904000 0.054688 +vt 0.904000 0.039063 +vt 0.944000 0.039062 +vt 0.936000 0.054688 +vt 0.936000 0.039062 +vt 0.928000 0.039062 +vt 0.920000 0.054688 +vt 0.920000 0.039062 +vt 0.912000 0.054688 +vt 0.952000 0.039062 +vt 0.944000 0.054687 +vt 0.928000 0.054688 +vt 0.928000 0.054688 +vt 0.944000 0.109375 +vt 0.920000 0.109375 +vt 0.920000 0.109375 +vt 0.936000 0.054688 +vt 0.944000 0.109375 +vt 0.928000 0.054688 +vt 0.944000 0.109375 +vt 0.920000 0.109375 +vt 0.915969 0.083739 +vt 0.904062 0.070312 +vt 0.908031 0.056886 +vt 0.952000 0.054687 +vt 0.936000 0.054688 +vt 0.928000 0.054688 +vt 0.936000 0.054688 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 1.0000 0.0000 +vn 0.9397 0.0000 -0.3420 +vn 0.9397 0.2962 0.1710 +vn 0.9397 -0.2962 0.1710 +s off +f 36/33/11 32/34/11 33/35/11 +f 30/36/12 35/37/12 29/38/12 +f 28/39/13 33/40/13 27/41/13 +f 26/42/14 32/43/14 25/44/14 +f 25/44/15 36/45/15 30/36/15 +f 29/46/16 34/47/16 28/39/16 +f 27/41/17 31/48/17 26/42/17 +f 38/49/18 39/50/18 37/51/18 +f 41/52/19 44/53/19 43/54/19 +f 46/55/20 47/56/20 45/57/20 +f 32/34/11 31/58/11 33/35/11 +f 33/35/11 34/59/11 35/60/11 +f 35/60/11 36/33/11 33/35/11 +f 30/36/12 36/45/12 35/37/12 +f 28/39/13 34/47/13 33/40/13 +f 26/42/14 31/48/14 32/43/14 +f 25/44/15 32/43/15 36/45/15 +f 29/46/16 35/61/16 34/47/16 +f 27/41/17 33/40/17 31/48/17 +f 38/49/18 40/62/18 39/50/18 +f 41/52/19 42/63/19 44/53/19 +f 46/55/20 48/64/20 47/56/20 +o Condenser +v 1.500000 0.250000 -3.125000 +v 1.500000 0.250000 3.125000 +v 1.250000 0.250000 3.125000 +v 1.250000 0.250000 -3.125000 +v 1.250000 0.000000 -3.125000 +v 1.250000 0.000000 3.125000 +v 1.500000 0.000000 3.125000 +v 1.500000 0.000000 -3.125000 +v 1.500000 0.000000 -3.500000 +v 1.500000 0.000000 -3.125000 +v 1.125000 0.000000 -3.500000 +v 1.125000 0.000000 -3.125000 +v 1.500000 0.375000 -3.500000 +v 1.500000 0.375000 -3.125000 +v 1.125000 0.375000 -3.500000 +v 1.125000 0.375000 -3.125000 +v -1.125000 0.000000 -3.500000 +v -1.125000 0.000000 -3.125000 +v -1.500000 0.000000 -3.500000 +v -1.500000 0.000000 -3.125000 +v -1.125000 0.375000 -3.500000 +v -1.125000 0.375000 -3.125000 +v -1.500000 0.375000 -3.500000 +v -1.500000 0.375000 -3.125000 +v 1.500000 0.000000 3.125000 +v 1.500000 0.000000 3.500000 +v 1.125000 0.000000 3.125000 +v 1.125000 0.000000 3.500000 +v 1.500000 0.375000 3.125000 +v 1.500000 0.375000 3.500000 +v 1.125000 0.375000 3.125000 +v 1.125000 0.375000 3.500000 +v -1.125000 0.000000 3.125000 +v -1.125000 0.000000 3.500000 +v -1.500000 0.000000 3.125000 +v -1.500000 0.000000 3.500000 +v -1.125000 0.375000 3.125000 +v -1.125000 0.375000 3.500000 +v -1.500000 0.375000 3.125000 +v -1.500000 0.375000 3.500000 +v 1.500000 2.625000 -3.500000 +v 1.500000 2.625000 -3.125000 +v 1.125000 2.625000 -3.500000 +v 1.125000 2.625000 -3.125000 +v 1.500000 3.000000 -3.500000 +v 1.500000 3.000000 -3.125000 +v 1.125000 3.000000 -3.500000 +v 1.125000 3.000000 -3.125000 +v -1.125000 2.625000 -3.500000 +v -1.125000 2.625000 -3.125000 +v -1.500000 2.625000 -3.500000 +v -1.500000 2.625000 -3.125000 +v -1.125000 3.000000 -3.500000 +v -1.125000 3.000000 -3.125000 +v -1.500000 3.000000 -3.500000 +v -1.500000 3.000000 -3.125000 +v 1.500000 2.625000 3.125000 +v 1.500000 2.625000 3.500000 +v 1.125000 2.625000 3.125000 +v 1.125000 2.625000 3.500000 +v 1.500000 3.000000 3.125000 +v 1.500000 3.000000 3.500000 +v 1.125000 3.000000 3.125000 +v 1.125000 3.000000 3.500000 +v -1.125000 2.625000 3.125000 +v -1.125000 2.625000 3.500000 +v -1.500000 2.625000 3.125000 +v -1.500000 2.625000 3.500000 +v -1.125000 3.000000 3.125000 +v -1.125000 3.000000 3.500000 +v -1.500000 3.000000 3.125000 +v -1.500000 3.000000 3.500000 +v 1.500000 3.000000 -3.125000 +v 1.500000 3.000000 3.125000 +v 1.250000 3.000000 3.125000 +v 1.250000 3.000000 -3.125000 +v 1.250000 2.750000 -3.125000 +v 1.250000 2.750000 3.125000 +v 1.500000 2.750000 3.125000 +v 1.500000 2.750000 -3.125000 +v -1.250000 0.250000 -3.125000 +v -1.250000 0.250000 3.125000 +v -1.500000 0.250000 3.125000 +v -1.500000 0.250000 -3.125000 +v -1.500000 0.000000 -3.125000 +v -1.500000 0.000000 3.125000 +v -1.250000 0.000000 3.125000 +v -1.250000 0.000000 -3.125000 +v -1.250000 3.000000 -3.125000 +v -1.250000 3.000000 3.125000 +v -1.500000 3.000000 3.125000 +v -1.500000 3.000000 -3.125000 +v -1.500000 2.750000 -3.125000 +v -1.500000 2.750000 3.125000 +v -1.250000 2.750000 3.125000 +v -1.250000 2.750000 -3.125000 +v 1.125000 0.000000 3.500000 +v -1.125000 0.000000 3.500000 +v 1.125000 0.000000 3.250000 +v -1.125000 0.000000 3.250000 +v 1.125000 0.250000 3.500000 +v -1.125000 0.250000 3.500000 +v 1.125000 0.250000 3.250000 +v -1.125000 0.250000 3.250000 +v 1.125000 0.000000 -3.250000 +v -1.125000 0.000000 -3.250000 +v 1.125000 0.000000 -3.500000 +v -1.125000 0.000000 -3.500000 +v 1.125000 0.250000 -3.250000 +v -1.125000 0.250000 -3.250000 +v 1.125000 0.250000 -3.500000 +v -1.125000 0.250000 -3.500000 +v 1.125000 2.750000 3.500000 +v -1.125000 2.750000 3.500000 +v 1.125000 2.750000 3.250000 +v -1.125000 2.750000 3.250000 +v 1.125000 3.000000 3.500000 +v -1.125000 3.000000 3.500000 +v 1.125000 3.000000 3.250000 +v -1.125000 3.000000 3.250000 +v 1.125000 2.750000 -3.250000 +v -1.125000 2.750000 -3.250000 +v 1.125000 2.750000 -3.500000 +v -1.125000 2.750000 -3.500000 +v 1.125000 3.000000 -3.250000 +v -1.125000 3.000000 -3.250000 +v 1.125000 3.000000 -3.500000 +v -1.125000 3.000000 -3.500000 +v -1.500000 0.375000 3.500000 +v -1.500000 2.625000 3.500000 +v -1.500000 0.375000 3.250000 +v -1.500000 2.625000 3.250000 +v -1.250000 0.375000 3.500000 +v -1.250000 2.625000 3.500000 +v -1.250000 0.375000 3.250000 +v -1.250000 2.625000 3.250000 +v 1.250000 0.375000 3.500000 +v 1.250000 2.625000 3.500000 +v 1.250000 0.375000 3.250000 +v 1.250000 2.625000 3.250000 +v 1.500000 0.375000 3.500000 +v 1.500000 2.625000 3.500000 +v 1.500000 0.375000 3.250000 +v 1.500000 2.625000 3.250000 +v -1.500000 0.375000 -3.250000 +v -1.500000 2.625000 -3.250000 +v -1.500000 0.375000 -3.500000 +v -1.500000 2.625000 -3.500000 +v -1.250000 0.375000 -3.250000 +v -1.250000 2.625000 -3.250000 +v -1.250000 0.375000 -3.500000 +v -1.250000 2.625000 -3.500000 +v 1.250000 0.375000 -3.250000 +v 1.250000 2.625000 -3.250000 +v 1.250000 0.375000 -3.500000 +v 1.250000 2.625000 -3.500000 +v 1.500000 0.375000 -3.250000 +v 1.500000 2.625000 -3.250000 +v 1.500000 0.375000 -3.500000 +v 1.500000 2.625000 -3.500000 +v 0.000000 3.000000 2.500000 +v 0.000000 3.000000 2.750000 +v 0.574025 2.885819 2.500000 +v 0.574025 2.885819 2.750000 +v 1.060660 2.560660 2.500000 +v 1.060660 2.560660 2.750000 +v 1.385819 2.074025 2.500000 +v 1.385819 2.074025 2.750000 +v 1.500000 1.500000 2.500000 +v 1.500000 1.500000 2.750000 +v 1.385819 0.925975 2.500000 +v 1.385819 0.925975 2.750000 +v 1.060660 0.439340 2.500000 +v 1.060660 0.439340 2.750000 +v 0.574025 0.114181 2.500000 +v 0.574025 0.114181 2.750000 +v 0.000000 0.000000 2.500000 +v 0.000000 0.000000 2.750000 +v -0.574025 0.114181 2.500000 +v -0.574025 0.114181 2.750000 +v -1.060660 0.439340 2.500000 +v -1.060660 0.439340 2.750000 +v -1.385819 0.925975 2.500000 +v -1.385819 0.925975 2.750000 +v -1.500000 1.500000 2.500000 +v -1.500000 1.500000 2.750000 +v -1.385819 2.074025 2.500000 +v -1.385819 2.074025 2.750000 +v -1.060660 2.560660 2.500000 +v -1.060660 2.560660 2.750000 +v -0.574024 2.885820 2.500000 +v -0.574024 2.885820 2.750000 +v 1.374999 1.500001 -2.750000 +v 1.190784 1.500001 -3.093750 +v 0.000000 2.690785 3.093750 +v 0.000000 2.875000 2.750000 +v 0.687499 1.500000 -3.345392 +v -0.000000 2.690785 -3.093750 +v 1.270334 0.973811 -2.750000 +v 1.100142 1.044307 -3.093750 +v 0.263095 2.135167 3.345392 +v 0.455694 2.600142 3.093750 +v 0.526190 2.770334 2.750000 +v 0.574024 2.885820 -2.750000 +v 0.574024 2.885820 -2.500000 +v 0.635167 1.236906 -3.345392 +v 0.972271 0.527729 -2.750000 +v 0.486136 1.986136 3.345392 +v 0.842012 2.342012 3.093750 +v 0.972272 2.472272 2.750000 +v 1.060659 2.560660 -2.750000 +v 1.060659 2.560660 -2.500000 +v 0.842011 0.657989 -3.093750 +v 0.486135 1.013865 -3.345392 +v 0.635167 1.763095 3.345392 +v 1.100142 1.955694 3.093750 +v 1.270334 2.026190 2.750000 +v 1.385819 2.074025 -2.750000 +v 1.385819 2.074025 -2.500000 +v 0.526190 0.229666 -2.750000 +v 0.455694 0.399859 -3.093750 +v 0.687500 1.500000 3.345392 +v 1.190784 1.500000 3.093750 +v 1.375000 1.500000 2.750000 +v 1.500000 1.500000 -2.750000 +v 1.500000 1.500000 -2.500000 +v 0.263094 0.864833 -3.345392 +v 0.000000 0.125001 -2.750000 +v 0.635167 1.236905 3.345392 +v 1.100142 1.044307 3.093750 +v 1.270334 0.973810 2.750000 +v 1.385819 0.925975 -2.750000 +v 1.385819 0.925975 -2.500000 +v 0.000000 0.309216 -3.093750 +v -0.000000 0.812500 -3.345392 +v 0.486136 1.013864 3.345392 +v 0.842011 0.657988 3.093750 +v 0.972271 0.527729 2.750000 +v 1.060659 0.439340 -2.750000 +v 1.060659 0.439340 -2.500000 +v -0.526189 0.229666 -2.750000 +v -0.455693 0.399859 -3.093750 +v 0.263095 0.864833 3.345392 +v 0.455693 0.399859 3.093750 +v 0.526189 0.229666 2.750000 +v 0.574025 0.114181 -2.750000 +v 0.574025 0.114181 -2.500000 +v -0.263095 0.864833 -3.345392 +v -0.972271 0.527729 -2.750000 +v 0.000000 0.812500 3.345392 +v -0.000000 0.309216 3.093750 +v -0.000000 0.125001 2.750000 +v -0.000000 0.000000 -2.750000 +v -0.000000 0.000000 -2.500000 +v -0.842012 0.657988 -3.093750 +v -0.486136 1.013864 -3.345392 +v -0.263095 0.864833 3.345392 +v -0.455694 0.399859 3.093750 +v -0.526190 0.229666 2.750000 +v -0.574026 0.114181 -2.750000 +v -0.574026 0.114181 -2.500000 +v -1.270334 0.973810 -2.750000 +v -1.100142 1.044307 -3.093750 +v -0.486136 1.013865 3.345392 +v -0.842012 0.657989 3.093750 +v -0.972272 0.527729 2.750000 +v -1.060660 0.439340 -2.750000 +v -1.060660 0.439340 -2.500000 +v -0.635167 1.236905 -3.345392 +v -1.375000 1.500000 -2.750000 +v -0.635167 1.236906 3.345392 +v -1.100142 1.044307 3.093750 +v -1.270334 0.973811 2.750000 +v -1.385819 0.925975 -2.750000 +v -1.385819 0.925975 -2.500000 +v -1.190785 1.500000 -3.093750 +v -0.687500 1.500000 -3.345392 +v -0.687500 1.500000 3.345392 +v -1.190784 1.500001 3.093750 +v -1.375000 1.500001 2.750000 +v -1.500000 1.500000 -2.750000 +v -1.500000 1.500000 -2.500000 +v -1.270334 2.026190 -2.750000 +v -1.100142 1.955694 -3.093750 +v -0.635167 1.763095 3.345392 +v -1.100141 1.955694 3.093750 +v -1.270334 2.026190 2.750000 +v -1.385819 2.074025 -2.750000 +v -1.385819 2.074025 -2.500000 +v -0.635167 1.763095 -3.345392 +v -0.972272 2.472272 -2.750000 +v -0.486135 1.986136 3.345392 +v -0.842011 2.342012 3.093750 +v -0.972271 2.472272 2.750000 +v -1.060660 2.560660 -2.750000 +v -1.060660 2.560660 -2.500000 +v -0.842012 2.342012 -3.093750 +v -0.486136 1.986136 -3.345392 +v -0.263094 2.135167 3.345392 +v -0.455693 2.600142 3.093750 +v -0.526189 2.770334 2.750000 +v -0.574025 2.885819 -2.750000 +v -0.574025 2.885819 -2.500000 +v -0.526190 2.770334 -2.750000 +v 0.000000 1.500000 3.437500 +v 0.000000 2.187500 3.345392 +v -0.455694 2.600142 -3.093750 +v -0.263095 2.135167 -3.345392 +v -0.000000 3.000000 -2.750000 +v -0.000000 2.875000 -2.750000 +v 0.000000 3.000000 -2.500000 +v 0.635166 1.763095 -3.345392 +v 1.100141 1.955694 -3.093750 +v 1.270333 2.026190 -2.750000 +v 0.486135 1.986136 -3.345392 +v 0.842011 2.342012 -3.093750 +v 0.972271 2.472272 -2.750000 +v 0.263094 2.135167 -3.345392 +v 0.455692 2.600142 -3.093750 +v 0.526189 2.770334 -2.750000 +v -0.000000 1.500000 -3.437500 +v -0.000000 2.187500 -3.345392 +v 0.000000 2.875000 2.500000 +v 0.526190 2.770334 2.500000 +v 0.972272 2.472272 2.500000 +v 1.270334 2.026190 2.500000 +v 1.375000 1.500000 2.500000 +v 1.270334 0.973810 2.500000 +v 0.972271 0.527729 2.500000 +v 0.526189 0.229666 2.500000 +v -0.000000 0.125001 2.500000 +v -0.526190 0.229666 2.500000 +v -0.972272 0.527729 2.500000 +v -1.270334 0.973811 2.500000 +v -1.375000 1.500001 2.500000 +v -1.270334 2.026190 2.500000 +v -0.972271 2.472272 2.500000 +v -0.526189 2.770334 2.500000 +v 0.000000 2.875000 -2.500000 +v 0.526190 2.770334 -2.500000 +v 0.972272 2.472272 -2.500000 +v 1.270334 2.026190 -2.500000 +v 1.375000 1.500000 -2.500000 +v 1.270334 0.973810 -2.500000 +v 0.972271 0.527729 -2.500000 +v 0.526189 0.229666 -2.500000 +v -0.000000 0.125001 -2.500000 +v -0.526190 0.229666 -2.500000 +v -0.972272 0.527729 -2.500000 +v -1.270334 0.973811 -2.500000 +v -1.375000 1.500001 -2.500000 +v -1.270334 2.026190 -2.500000 +v -0.972271 2.472272 -2.500000 +v -0.526189 2.770334 -2.500000 +v 1.375000 2.250000 1.500000 +v 1.375000 0.750000 1.500000 +v 1.375000 2.250000 -1.500000 +v 1.375000 0.750000 -1.500000 +v 1.000000 2.250000 -1.500000 +v 1.000000 2.250000 1.500000 +v 1.000000 0.750000 1.500000 +v 1.000000 0.750000 -1.500000 +v 1.375000 1.500000 -0.625000 +v 1.375000 1.812500 -0.541266 +v 1.375000 2.041266 -0.312500 +v 1.375000 2.125000 0.000000 +v 1.375000 2.041266 0.312500 +v 1.375000 1.812500 0.541266 +v 1.375000 1.500000 0.625000 +v 1.375000 1.187500 0.541266 +v 1.375000 0.958734 0.312500 +v 1.375000 0.875000 0.000000 +v 1.375000 0.958734 -0.312500 +v 1.375000 1.187500 -0.541266 +v 1.375000 1.500000 -0.500000 +v 1.375000 1.750000 -0.433013 +v 1.375000 1.933013 -0.250000 +v 1.375000 2.000000 0.000000 +v 1.375000 1.933013 0.250000 +v 1.375000 1.750000 0.433013 +v 1.375000 1.500000 0.500000 +v 1.375000 1.250000 0.433013 +v 1.375000 1.066987 0.250000 +v 1.375000 1.000000 0.000000 +v 1.375000 1.066987 -0.250000 +v 1.375000 1.250000 -0.433013 +v 1.625000 1.812500 -0.541266 +v 1.625000 1.500000 -0.625000 +v 1.625000 2.041266 -0.312500 +v 1.625000 2.125000 0.000000 +v 1.625000 2.041266 0.312500 +v 1.625000 1.812500 0.541266 +v 1.625000 1.500000 0.625000 +v 1.625000 1.187500 0.541266 +v 1.625000 0.958734 0.312500 +v 1.625000 0.875000 0.000000 +v 1.625000 0.958734 -0.312500 +v 1.625000 1.187500 -0.541266 +v 1.625000 1.750000 -0.433013 +v 1.625000 1.500000 -0.500000 +v 1.625000 1.933013 -0.250000 +v 1.625000 2.000000 0.000000 +v 1.625000 1.933013 0.250000 +v 1.625000 1.750000 0.433013 +v 1.625000 1.500000 0.500000 +v 1.625000 1.250000 0.433013 +v 1.625000 1.066987 0.250000 +v 1.625000 1.000000 0.000000 +v 1.625000 1.066987 -0.250000 +v 1.625000 1.250000 -0.433013 +v 1.562500 1.406250 0.500000 +v 1.562500 1.343750 0.500000 +v 1.562500 1.406250 -0.500000 +v 1.562500 1.343750 -0.500000 +v 1.562500 1.656250 0.500000 +v 1.562500 1.593750 0.500000 +v 1.562500 1.656250 -0.500000 +v 1.562500 1.593750 -0.500000 +v 1.562500 1.906250 0.375000 +v 1.562500 1.843750 0.375000 +v 1.562500 1.906250 -0.375000 +v 1.562500 1.843750 -0.375000 +v 1.562500 1.166250 0.375000 +v 1.562500 1.103750 0.375000 +v 1.562500 1.166250 -0.375000 +v 1.562500 1.103750 -0.375000 +v 1.375000 2.000000 -0.750000 +v 1.375000 1.000000 -0.750000 +v 1.375000 2.000000 -1.250000 +v 1.375000 1.000000 -1.250000 +v 1.500000 2.000000 -1.250000 +v 1.500000 2.000000 -0.750000 +v 1.500000 1.000000 -0.750000 +v 1.500000 1.000000 -1.250000 +v 1.375000 2.000000 1.250000 +v 1.375000 1.000000 1.250000 +v 1.375000 2.000000 0.750000 +v 1.375000 1.000000 0.750000 +v 1.500000 2.000000 0.750000 +v 1.500000 2.000000 1.250000 +v 1.500000 1.000000 1.250000 +v 1.500000 1.000000 0.750000 +v 1.250000 0.000000 -2.375000 +v -1.250000 0.000000 -2.375000 +v 1.250000 0.125000 -2.375000 +v -1.250000 0.125000 -2.375000 +v 1.250000 0.000000 -2.125000 +v -1.250000 0.000000 -2.125000 +v 1.250000 0.125000 -2.125000 +v -1.250000 0.125000 -2.125000 +v 1.250000 0.000000 2.125000 +v -1.250000 0.000000 2.125000 +v 1.250000 0.125000 2.125000 +v -1.250000 0.125000 2.125000 +v 1.250000 0.000000 2.375000 +v -1.250000 0.000000 2.375000 +v 1.250000 0.125000 2.375000 +v -1.250000 0.125000 2.375000 +v 1.250000 2.875000 -2.375000 +v -1.250000 2.875000 -2.375000 +v 1.250000 3.000000 -2.375000 +v -1.250000 3.000000 -2.375000 +v 1.250000 2.875000 -2.125000 +v -1.250000 2.875000 -2.125000 +v 1.250000 3.000000 -2.125000 +v -1.250000 3.000000 -2.125000 +v 1.250000 2.875000 2.125000 +v -1.250000 2.875000 2.125000 +v 1.250000 3.000000 2.125000 +v -1.250000 3.000000 2.125000 +v 1.250000 2.875000 2.375000 +v -1.250000 2.875000 2.375000 +v 1.250000 3.000000 2.375000 +v -1.250000 3.000000 2.375000 +v -1.500000 0.250000 -2.375000 +v -1.500000 2.750000 -2.375000 +v -1.375000 0.250000 -2.375000 +v -1.375000 2.750000 -2.375000 +v -1.500000 0.250000 -2.125000 +v -1.500000 2.750000 -2.125000 +v -1.375000 0.250000 -2.125000 +v -1.375000 2.750000 -2.125000 +v -1.500000 0.250000 2.125000 +v -1.500000 2.750000 2.125000 +v -1.375000 0.250000 2.125000 +v -1.375000 2.750000 2.125000 +v -1.500000 0.250000 2.375000 +v -1.500000 2.750000 2.375000 +v -1.375000 0.250000 2.375000 +v -1.375000 2.750000 2.375000 +v 1.375000 0.250000 -2.375000 +v 1.375000 2.750000 -2.375000 +v 1.500000 0.250000 -2.375000 +v 1.500000 2.750000 -2.375000 +v 1.375000 0.250000 -2.125000 +v 1.375000 2.750000 -2.125000 +v 1.500000 0.250000 -2.125000 +v 1.500000 2.750000 -2.125000 +v 1.375000 0.250000 2.125000 +v 1.375000 2.750000 2.125000 +v 1.500000 0.250000 2.125000 +v 1.500000 2.750000 2.125000 +v 1.375000 0.250000 2.375000 +v 1.375000 2.750000 2.375000 +v 1.500000 0.250000 2.375000 +v 1.500000 2.750000 2.375000 +v -1.375000 2.250000 -1.500000 +v -1.375000 0.750000 -1.500000 +v -1.375000 2.250000 1.500000 +v -1.375000 0.750000 1.500000 +v -1.000000 2.250000 1.500000 +v -1.000000 2.250000 -1.500000 +v -1.000000 0.750000 -1.500000 +v -1.000000 0.750000 1.500000 +v -1.375000 1.500000 0.625000 +v -1.375000 1.812500 0.541266 +v -1.375000 2.041266 0.312500 +v -1.375000 2.125000 0.000000 +v -1.375000 2.041266 -0.312500 +v -1.375000 1.812500 -0.541266 +v -1.375000 1.500000 -0.625000 +v -1.375000 1.187500 -0.541266 +v -1.375000 0.958734 -0.312500 +v -1.375000 0.875000 -0.000000 +v -1.375000 0.958734 0.312500 +v -1.375000 1.187500 0.541266 +v -1.375000 1.500000 0.500000 +v -1.375000 1.750000 0.433013 +v -1.375000 1.933013 0.250000 +v -1.375000 2.000000 0.000000 +v -1.375000 1.933013 -0.250000 +v -1.375000 1.750000 -0.433013 +v -1.375000 1.500000 -0.500000 +v -1.375000 1.250000 -0.433013 +v -1.375000 1.066987 -0.250000 +v -1.375000 1.000000 -0.000000 +v -1.375000 1.066987 0.250000 +v -1.375000 1.250000 0.433013 +v -1.625000 1.812500 0.541266 +v -1.625000 1.500000 0.625000 +v -1.625000 2.041266 0.312500 +v -1.625000 2.125000 0.000000 +v -1.625000 2.041266 -0.312500 +v -1.625000 1.812500 -0.541266 +v -1.625000 1.500000 -0.625000 +v -1.625000 1.187500 -0.541266 +v -1.625000 0.958734 -0.312500 +v -1.625000 0.875000 -0.000000 +v -1.625000 0.958734 0.312500 +v -1.625000 1.187500 0.541266 +v -1.625000 1.750000 0.433013 +v -1.625000 1.500000 0.500000 +v -1.625000 1.933013 0.250000 +v -1.625000 2.000000 0.000000 +v -1.625000 1.933013 -0.250000 +v -1.625000 1.750000 -0.433013 +v -1.625000 1.500000 -0.500000 +v -1.625000 1.250000 -0.433013 +v -1.625000 1.066987 -0.250000 +v -1.625000 1.000000 -0.000000 +v -1.625000 1.066987 0.250000 +v -1.625000 1.250000 0.433013 +v -1.562500 1.406250 -0.500000 +v -1.562500 1.343750 -0.500000 +v -1.562500 1.406250 0.500000 +v -1.562500 1.343750 0.500000 +v -1.562500 1.656250 -0.500000 +v -1.562500 1.593750 -0.500000 +v -1.562500 1.656250 0.500000 +v -1.562500 1.593750 0.500000 +v -1.562500 1.906250 -0.375000 +v -1.562500 1.843750 -0.375000 +v -1.562500 1.906250 0.375000 +v -1.562500 1.843750 0.375000 +v -1.562500 1.166250 -0.375000 +v -1.562500 1.103750 -0.375000 +v -1.562500 1.166250 0.375000 +v -1.562500 1.103750 0.375000 +v -1.375000 2.000000 0.750000 +v -1.375000 1.000000 0.750000 +v -1.375000 2.000000 1.250000 +v -1.375000 1.000000 1.250000 +v -1.500000 2.000000 1.250000 +v -1.500000 2.000000 0.750000 +v -1.500000 1.000000 0.750000 +v -1.500000 1.000000 1.250000 +v -1.375000 2.000000 -1.250000 +v -1.375000 1.000000 -1.250000 +v -1.375000 2.000000 -0.750000 +v -1.375000 1.000000 -0.750000 +v -1.500000 2.000000 -0.750000 +v -1.500000 2.000000 -1.250000 +v -1.500000 1.000000 -1.250000 +v -1.500000 1.000000 -0.750000 +v 1.125000 2.250000 -0.125000 +v 1.036612 2.250000 -0.088388 +v 1.000000 2.250000 0.000000 +v 1.036612 2.250000 0.088388 +v 1.125000 2.250000 0.125000 +v 1.213388 2.250000 0.088388 +v 1.250000 2.250000 -0.000000 +v 1.213388 2.250000 -0.088388 +v 1.125000 2.750000 -0.125000 +v 1.036612 2.750000 -0.088388 +v 1.000000 2.750000 0.000000 +v 1.036612 2.750000 0.088388 +v 1.125000 2.750000 0.125000 +v 1.213388 2.750000 0.088388 +v 1.250000 2.750000 -0.000000 +v 1.213388 2.750000 -0.088388 +v 1.088388 2.838388 -0.125000 +v 1.025888 2.775888 -0.088388 +v 1.025888 2.775888 0.088388 +v 1.088388 2.838388 0.125000 +v 1.150888 2.900888 0.088388 +v 1.176777 2.926777 -0.000000 +v 1.150888 2.900888 -0.088388 +v 1.000000 2.875000 -0.125000 +v 1.000000 2.786612 -0.088388 +v 1.000000 2.786612 0.088388 +v 1.000000 2.875000 0.125000 +v 1.000000 2.963388 0.088388 +v 1.000000 3.000000 -0.000000 +v 1.000000 2.963388 -0.088388 +v -1.125000 2.250000 0.125000 +v -1.036612 2.250000 0.088388 +v -1.000000 2.250000 0.000000 +v -1.036612 2.250000 -0.088388 +v -1.125000 2.250000 -0.125000 +v -1.213388 2.250000 -0.088388 +v -1.250000 2.250000 0.000000 +v -1.213388 2.250000 0.088388 +v -1.125000 2.750000 0.125000 +v -1.036612 2.750000 0.088388 +v -1.000000 2.750000 0.000000 +v -1.036612 2.750000 -0.088388 +v -1.125000 2.750000 -0.125000 +v -1.213388 2.750000 -0.088388 +v -1.250000 2.750000 0.000000 +v -1.213388 2.750000 0.088388 +v -1.088388 2.838388 0.125000 +v -1.025888 2.775888 0.088388 +v -1.025888 2.775888 -0.088388 +v -1.088388 2.838388 -0.125000 +v -1.150888 2.900888 -0.088388 +v -1.176777 2.926777 0.000000 +v -1.150888 2.900888 0.088388 +v -1.000000 2.875000 0.125000 +v -1.000000 2.786612 0.088388 +v -1.000000 2.786612 -0.088388 +v -1.000000 2.875000 -0.125000 +v -1.000000 2.963388 -0.088388 +v -1.000000 3.000000 0.000000 +v -1.000000 2.963388 0.088388 +v -0.500000 3.125000 1.000000 +v 0.500000 3.125000 1.000000 +v -0.500000 3.125000 -1.000000 +v 0.500000 3.125000 -1.000000 +v -0.500000 2.750000 -1.000000 +v -0.500000 2.750000 1.000000 +v 0.500000 2.750000 1.000000 +v 0.500000 2.750000 -1.000000 +v 0.000000 1.750000 -3.500000 +v -0.176777 1.676777 -3.500000 +v -0.250000 1.500000 -3.500000 +v -0.176777 1.323223 -3.500000 +v 0.000000 1.250000 -3.500000 +v 0.176777 1.323223 -3.500000 +v 0.250000 1.500000 -3.500000 +v 0.176777 1.676777 -3.500000 +v -0.176777 1.676777 -3.375000 +v 0.000000 1.750000 -3.375000 +v -0.250000 1.500000 -3.375000 +v -0.176777 1.323223 -3.375000 +v 0.000000 1.250000 -3.375000 +v 0.176777 1.323223 -3.375000 +v 0.250000 1.500000 -3.375000 +v 0.176777 1.676777 -3.375000 +v 0.000000 1.750000 3.500000 +v 0.176777 1.676777 3.500000 +v 0.250000 1.500000 3.500000 +v 0.176777 1.323223 3.500000 +v 0.000000 1.250000 3.500000 +v -0.176776 1.323223 3.500000 +v -0.250000 1.500000 3.500000 +v -0.176776 1.676777 3.500000 +v 0.176777 1.676777 3.375000 +v 0.000000 1.750000 3.375000 +v 0.250000 1.500000 3.375000 +v 0.176777 1.323223 3.375000 +v 0.000000 1.250000 3.375000 +v -0.176776 1.323223 3.375000 +v -0.250000 1.500000 3.375000 +v -0.176776 1.676777 3.375000 +v -0.500000 -0.125000 -1.000000 +v 0.500000 -0.125000 -1.000000 +v -0.500000 -0.125000 1.000000 +v 0.500000 -0.125000 1.000000 +v -0.500000 0.250000 1.000000 +v -0.500000 0.250000 -1.000000 +v 0.500000 0.250000 -1.000000 +v 0.500000 0.250000 1.000000 +v 1.125000 2.250000 -0.375000 +v 1.036612 2.250000 -0.338388 +v 1.000000 2.250000 -0.250000 +v 1.036612 2.250000 -0.161612 +v 1.125000 2.250000 -0.125000 +v 1.213388 2.250000 -0.161612 +v 1.250000 2.250000 -0.250000 +v 1.213388 2.250000 -0.338388 +v 1.125000 2.750000 -0.375000 +v 1.036612 2.750000 -0.338388 +v 1.000000 2.750000 -0.250000 +v 1.036612 2.750000 -0.161612 +v 1.125000 2.750000 -0.125000 +v 1.213388 2.750000 -0.161612 +v 1.250000 2.750000 -0.250000 +v 1.213388 2.750000 -0.338388 +v 1.088388 2.838388 -0.375000 +v 1.025888 2.775888 -0.338388 +v 1.025888 2.775888 -0.161612 +v 1.088388 2.838388 -0.125000 +v 1.150888 2.900888 -0.161612 +v 1.176777 2.926777 -0.250000 +v 1.150888 2.900888 -0.338388 +v 1.000000 2.875000 -0.375000 +v 1.000000 2.786612 -0.338388 +v 1.000000 2.786612 -0.161612 +v 1.000000 2.875000 -0.125000 +v 1.000000 2.963388 -0.161612 +v 1.000000 3.000000 -0.250000 +v 1.000000 2.963388 -0.338388 +v -1.125000 2.250000 -0.125000 +v -1.036612 2.250000 -0.161612 +v -1.000000 2.250000 -0.250000 +v -1.036612 2.250000 -0.338388 +v -1.125000 2.250000 -0.375000 +v -1.213388 2.250000 -0.338388 +v -1.250000 2.250000 -0.250000 +v -1.213388 2.250000 -0.161612 +v -1.125000 2.750000 -0.125000 +v -1.036612 2.750000 -0.161612 +v -1.000000 2.750000 -0.250000 +v -1.036612 2.750000 -0.338388 +v -1.125000 2.750000 -0.375000 +v -1.213388 2.750000 -0.338388 +v -1.250000 2.750000 -0.250000 +v -1.213388 2.750000 -0.161612 +v -1.088388 2.838388 -0.125000 +v -1.025888 2.775888 -0.161612 +v -1.025888 2.775888 -0.338388 +v -1.088388 2.838388 -0.375000 +v -1.150888 2.900888 -0.338388 +v -1.176777 2.926777 -0.250000 +v -1.150888 2.900888 -0.161612 +v -1.000000 2.875000 -0.125000 +v -1.000000 2.786612 -0.161612 +v -1.000000 2.786612 -0.338388 +v -1.000000 2.875000 -0.375000 +v -1.000000 2.963388 -0.338388 +v -1.000000 3.000000 -0.250000 +v -1.000000 2.963388 -0.161612 +v 1.125000 2.250000 -0.625000 +v 1.036612 2.250000 -0.588388 +v 1.000000 2.250000 -0.500000 +v 1.036612 2.250000 -0.411612 +v 1.125000 2.250000 -0.375000 +v 1.213388 2.250000 -0.411612 +v 1.250000 2.250000 -0.500000 +v 1.213388 2.250000 -0.588388 +v 1.125000 2.750000 -0.625000 +v 1.036612 2.750000 -0.588388 +v 1.000000 2.750000 -0.500000 +v 1.036612 2.750000 -0.411612 +v 1.125000 2.750000 -0.375000 +v 1.213388 2.750000 -0.411612 +v 1.250000 2.750000 -0.500000 +v 1.213388 2.750000 -0.588388 +v 1.088388 2.838388 -0.625000 +v 1.025888 2.775888 -0.588388 +v 1.025888 2.775888 -0.411612 +v 1.088388 2.838388 -0.375000 +v 1.150888 2.900888 -0.411612 +v 1.176777 2.926777 -0.500000 +v 1.150888 2.900888 -0.588388 +v 1.000000 2.875000 -0.625000 +v 1.000000 2.786612 -0.588388 +v 1.000000 2.786612 -0.411612 +v 1.000000 2.875000 -0.375000 +v 1.000000 2.963388 -0.411612 +v 1.000000 3.000000 -0.500000 +v 1.000000 2.963388 -0.588388 +v -1.125000 2.250000 -0.375000 +v -1.036612 2.250000 -0.411612 +v -1.000000 2.250000 -0.500000 +v -1.036612 2.250000 -0.588388 +v -1.125000 2.250000 -0.625000 +v -1.213388 2.250000 -0.588388 +v -1.250000 2.250000 -0.500000 +v -1.213388 2.250000 -0.411612 +v -1.125000 2.750000 -0.375000 +v -1.036612 2.750000 -0.411612 +v -1.000000 2.750000 -0.500000 +v -1.036612 2.750000 -0.588388 +v -1.125000 2.750000 -0.625000 +v -1.213388 2.750000 -0.588388 +v -1.250000 2.750000 -0.500000 +v -1.213388 2.750000 -0.411612 +v -1.088388 2.838388 -0.375000 +v -1.025888 2.775888 -0.411612 +v -1.025888 2.775888 -0.588388 +v -1.088388 2.838388 -0.625000 +v -1.150888 2.900888 -0.588388 +v -1.176777 2.926777 -0.500000 +v -1.150888 2.900888 -0.411612 +v -1.000000 2.875000 -0.375000 +v -1.000000 2.786612 -0.411612 +v -1.000000 2.786612 -0.588388 +v -1.000000 2.875000 -0.625000 +v -1.000000 2.963388 -0.588388 +v -1.000000 3.000000 -0.500000 +v -1.000000 2.963388 -0.411612 +v 1.125000 2.250000 0.375000 +v 1.036612 2.250000 0.411612 +v 1.000000 2.250000 0.500000 +v 1.036612 2.250000 0.588388 +v 1.125000 2.250000 0.625000 +v 1.213388 2.250000 0.588388 +v 1.250000 2.250000 0.500000 +v 1.213388 2.250000 0.411612 +v 1.125000 2.750000 0.375000 +v 1.036612 2.750000 0.411612 +v 1.000000 2.750000 0.500000 +v 1.036612 2.750000 0.588388 +v 1.125000 2.750000 0.625000 +v 1.213388 2.750000 0.588388 +v 1.250000 2.750000 0.500000 +v 1.213388 2.750000 0.411612 +v 1.088388 2.838388 0.375000 +v 1.025888 2.775888 0.411612 +v 1.025888 2.775888 0.588388 +v 1.088388 2.838388 0.625000 +v 1.150888 2.900888 0.588388 +v 1.176777 2.926777 0.500000 +v 1.150888 2.900888 0.411612 +v 1.000000 2.875000 0.375000 +v 1.000000 2.786612 0.411612 +v 1.000000 2.786612 0.588388 +v 1.000000 2.875000 0.625000 +v 1.000000 2.963388 0.588388 +v 1.000000 3.000000 0.500000 +v 1.000000 2.963388 0.411612 +v -1.125000 2.250000 0.625000 +v -1.036612 2.250000 0.588388 +v -1.000000 2.250000 0.500000 +v -1.036612 2.250000 0.411612 +v -1.125000 2.250000 0.375000 +v -1.213388 2.250000 0.411612 +v -1.250000 2.250000 0.500000 +v -1.213388 2.250000 0.588388 +v -1.125000 2.750000 0.625000 +v -1.036612 2.750000 0.588388 +v -1.000000 2.750000 0.500000 +v -1.036612 2.750000 0.411612 +v -1.125000 2.750000 0.375000 +v -1.213388 2.750000 0.411612 +v -1.250000 2.750000 0.500000 +v -1.213388 2.750000 0.588388 +v -1.088388 2.838388 0.625000 +v -1.025888 2.775888 0.588388 +v -1.025888 2.775888 0.411612 +v -1.088388 2.838388 0.375000 +v -1.150888 2.900888 0.411612 +v -1.176777 2.926777 0.500000 +v -1.150888 2.900888 0.588388 +v -1.000000 2.875000 0.625000 +v -1.000000 2.786612 0.588388 +v -1.000000 2.786612 0.411612 +v -1.000000 2.875000 0.375000 +v -1.000000 2.963388 0.411612 +v -1.000000 3.000000 0.500000 +v -1.000000 2.963388 0.588388 +v 1.125000 2.250000 0.125000 +v 1.036612 2.250000 0.161612 +v 1.000000 2.250000 0.250000 +v 1.036612 2.250000 0.338388 +v 1.125000 2.250000 0.375000 +v 1.213388 2.250000 0.338388 +v 1.250000 2.250000 0.250000 +v 1.213388 2.250000 0.161612 +v 1.125000 2.750000 0.125000 +v 1.036612 2.750000 0.161612 +v 1.000000 2.750000 0.250000 +v 1.036612 2.750000 0.338388 +v 1.125000 2.750000 0.375000 +v 1.213388 2.750000 0.338388 +v 1.250000 2.750000 0.250000 +v 1.213388 2.750000 0.161612 +v 1.088388 2.838388 0.125000 +v 1.025888 2.775888 0.161612 +v 1.025888 2.775888 0.338388 +v 1.088388 2.838388 0.375000 +v 1.150888 2.900888 0.338388 +v 1.176777 2.926777 0.250000 +v 1.150888 2.900888 0.161612 +v 1.000000 2.875000 0.125000 +v 1.000000 2.786612 0.161612 +v 1.000000 2.786612 0.338388 +v 1.000000 2.875000 0.375000 +v 1.000000 2.963388 0.338388 +v 1.000000 3.000000 0.250000 +v 1.000000 2.963388 0.161612 +v -1.125000 2.250000 0.375000 +v -1.036612 2.250000 0.338388 +v -1.000000 2.250000 0.250000 +v -1.036612 2.250000 0.161612 +v -1.125000 2.250000 0.125000 +v -1.213388 2.250000 0.161612 +v -1.250000 2.250000 0.250000 +v -1.213388 2.250000 0.338388 +v -1.125000 2.750000 0.375000 +v -1.036612 2.750000 0.338388 +v -1.000000 2.750000 0.250000 +v -1.036612 2.750000 0.161612 +v -1.125000 2.750000 0.125000 +v -1.213388 2.750000 0.161612 +v -1.250000 2.750000 0.250000 +v -1.213388 2.750000 0.338388 +v -1.088388 2.838388 0.375000 +v -1.025888 2.775888 0.338388 +v -1.025888 2.775888 0.161612 +v -1.088388 2.838388 0.125000 +v -1.150888 2.900888 0.161612 +v -1.176777 2.926777 0.250000 +v -1.150888 2.900888 0.338388 +v -1.000000 2.875000 0.375000 +v -1.000000 2.786612 0.338388 +v -1.000000 2.786612 0.161612 +v -1.000000 2.875000 0.125000 +v -1.000000 2.963388 0.161612 +v -1.000000 3.000000 0.250000 +v -1.000000 2.963388 0.338388 +v 1.125000 0.750000 0.125000 +v 1.036612 0.750000 0.088388 +v 1.000000 0.750000 -0.000000 +v 1.036612 0.750000 -0.088388 +v 1.125000 0.750000 -0.125000 +v 1.213388 0.750000 -0.088388 +v 1.250000 0.750000 -0.000000 +v 1.213388 0.750000 0.088388 +v 1.125000 0.250000 0.125000 +v 1.036612 0.250000 0.088388 +v 1.000000 0.250000 -0.000000 +v 1.036612 0.250000 -0.088389 +v 1.125000 0.250000 -0.125000 +v 1.213388 0.250000 -0.088389 +v 1.250000 0.250000 -0.000000 +v 1.213388 0.250000 0.088388 +v 1.088388 0.161612 0.125000 +v 1.025888 0.224112 0.088388 +v 1.025888 0.224112 -0.088389 +v 1.088388 0.161612 -0.125000 +v 1.150888 0.099112 -0.088389 +v 1.176777 0.073223 -0.000000 +v 1.150888 0.099112 0.088388 +v 1.000000 0.125000 0.125000 +v 1.000000 0.213388 0.088388 +v 1.000000 0.213388 -0.088389 +v 1.000000 0.125000 -0.125000 +v 1.000000 0.036612 -0.088389 +v 1.000000 0.000000 -0.000000 +v 1.000000 0.036612 0.088388 +v -1.125000 0.750000 -0.125000 +v -1.036612 0.750000 -0.088388 +v -1.000000 0.750000 -0.000000 +v -1.036612 0.750000 0.088388 +v -1.125000 0.750000 0.125000 +v -1.213388 0.750000 0.088388 +v -1.250000 0.750000 -0.000000 +v -1.213388 0.750000 -0.088388 +v -1.125000 0.250000 -0.125000 +v -1.036612 0.250000 -0.088389 +v -1.000000 0.250000 -0.000000 +v -1.036612 0.250000 0.088388 +v -1.125000 0.250000 0.125000 +v -1.213388 0.250000 0.088388 +v -1.250000 0.250000 -0.000000 +v -1.213388 0.250000 -0.088389 +v -1.088388 0.161612 -0.125000 +v -1.025888 0.224112 -0.088389 +v -1.025888 0.224112 0.088388 +v -1.088388 0.161612 0.125000 +v -1.150888 0.099112 0.088388 +v -1.176777 0.073223 -0.000000 +v -1.150888 0.099112 -0.088389 +v -1.000000 0.125000 -0.125000 +v -1.000000 0.213388 -0.088389 +v -1.000000 0.213388 0.088388 +v -1.000000 0.125000 0.125000 +v -1.000000 0.036612 0.088388 +v -1.000000 0.000000 -0.000000 +v -1.000000 0.036612 -0.088389 +v 1.125000 0.750000 0.375000 +v 1.036612 0.750000 0.338388 +v 1.000000 0.750000 0.250000 +v 1.036612 0.750000 0.161611 +v 1.125000 0.750000 0.125000 +v 1.213388 0.750000 0.161612 +v 1.250000 0.750000 0.250000 +v 1.213388 0.750000 0.338388 +v 1.125000 0.250000 0.375000 +v 1.036612 0.250000 0.338388 +v 1.000000 0.250000 0.250000 +v 1.036612 0.250000 0.161611 +v 1.125000 0.250000 0.125000 +v 1.213388 0.250000 0.161611 +v 1.250000 0.250000 0.250000 +v 1.213388 0.250000 0.338388 +v 1.088388 0.161612 0.375000 +v 1.025888 0.224112 0.338388 +v 1.025888 0.224112 0.161611 +v 1.088388 0.161612 0.125000 +v 1.150888 0.099112 0.161611 +v 1.176777 0.073223 0.250000 +v 1.150888 0.099112 0.338388 +v 1.000000 0.125000 0.375000 +v 1.000000 0.213388 0.338388 +v 1.000000 0.213388 0.161611 +v 1.000000 0.125000 0.125000 +v 1.000000 0.036612 0.161611 +v 1.000000 0.000000 0.250000 +v 1.000000 0.036612 0.338388 +v -1.125000 0.750000 0.125000 +v -1.036612 0.750000 0.161611 +v -1.000000 0.750000 0.250000 +v -1.036612 0.750000 0.338388 +v -1.125000 0.750000 0.375000 +v -1.213388 0.750000 0.338388 +v -1.250000 0.750000 0.250000 +v -1.213388 0.750000 0.161611 +v -1.125000 0.250000 0.125000 +v -1.036612 0.250000 0.161611 +v -1.000000 0.250000 0.250000 +v -1.036612 0.250000 0.338388 +v -1.125000 0.250000 0.375000 +v -1.213388 0.250000 0.338388 +v -1.250000 0.250000 0.250000 +v -1.213388 0.250000 0.161611 +v -1.088388 0.161612 0.125000 +v -1.025888 0.224112 0.161611 +v -1.025888 0.224112 0.338388 +v -1.088388 0.161612 0.375000 +v -1.150888 0.099112 0.338388 +v -1.176777 0.073223 0.250000 +v -1.150888 0.099112 0.161611 +v -1.000000 0.125000 0.125000 +v -1.000000 0.213388 0.161611 +v -1.000000 0.213388 0.338388 +v -1.000000 0.125000 0.375000 +v -1.000000 0.036612 0.338388 +v -1.000000 0.000000 0.250000 +v -1.000000 0.036612 0.161611 +v 1.125000 0.750000 0.625000 +v 1.036612 0.750000 0.588388 +v 1.000000 0.750000 0.500000 +v 1.036612 0.750000 0.411612 +v 1.125000 0.750000 0.375000 +v 1.213388 0.750000 0.411612 +v 1.250000 0.750000 0.500000 +v 1.213388 0.750000 0.588388 +v 1.125000 0.250000 0.625000 +v 1.036612 0.250000 0.588388 +v 1.000000 0.250000 0.500000 +v 1.036612 0.250000 0.411611 +v 1.125000 0.250000 0.375000 +v 1.213388 0.250000 0.411611 +v 1.250000 0.250000 0.500000 +v 1.213388 0.250000 0.588388 +v 1.088388 0.161612 0.625000 +v 1.025888 0.224112 0.588388 +v 1.025888 0.224112 0.411611 +v 1.088388 0.161612 0.375000 +v 1.150888 0.099112 0.411611 +v 1.176777 0.073223 0.500000 +v 1.150888 0.099112 0.588388 +v 1.000000 0.125000 0.625000 +v 1.000000 0.213388 0.588388 +v 1.000000 0.213388 0.411611 +v 1.000000 0.125000 0.375000 +v 1.000000 0.036612 0.411611 +v 1.000000 0.000000 0.500000 +v 1.000000 0.036612 0.588388 +v -1.125000 0.750000 0.375000 +v -1.036612 0.750000 0.411612 +v -1.000000 0.750000 0.500000 +v -1.036612 0.750000 0.588388 +v -1.125000 0.750000 0.625000 +v -1.213388 0.750000 0.588388 +v -1.250000 0.750000 0.500000 +v -1.213388 0.750000 0.411612 +v -1.125000 0.250000 0.375000 +v -1.036612 0.250000 0.411611 +v -1.000000 0.250000 0.500000 +v -1.036612 0.250000 0.588388 +v -1.125000 0.250000 0.625000 +v -1.213388 0.250000 0.588388 +v -1.250000 0.250000 0.500000 +v -1.213388 0.250000 0.411611 +v -1.088388 0.161612 0.375000 +v -1.025888 0.224112 0.411611 +v -1.025888 0.224112 0.588388 +v -1.088388 0.161612 0.625000 +v -1.150888 0.099112 0.588388 +v -1.176777 0.073223 0.500000 +v -1.150888 0.099112 0.411611 +v -1.000000 0.125000 0.375000 +v -1.000000 0.213388 0.411611 +v -1.000000 0.213388 0.588388 +v -1.000000 0.125000 0.625000 +v -1.000000 0.036612 0.588388 +v -1.000000 0.000000 0.500000 +v -1.000000 0.036612 0.411611 +v 1.125000 0.750000 -0.375000 +v 1.036612 0.750000 -0.411612 +v 1.000000 0.750000 -0.500000 +v 1.036612 0.750000 -0.588389 +v 1.125000 0.750000 -0.625000 +v 1.213388 0.750000 -0.588389 +v 1.250000 0.750000 -0.500000 +v 1.213388 0.750000 -0.411612 +v 1.125000 0.250000 -0.375000 +v 1.036612 0.250000 -0.411612 +v 1.000000 0.250000 -0.500000 +v 1.036612 0.250000 -0.588389 +v 1.125000 0.250000 -0.625000 +v 1.213388 0.250000 -0.588389 +v 1.250000 0.250000 -0.500000 +v 1.213388 0.250000 -0.411612 +v 1.088388 0.161612 -0.375000 +v 1.025888 0.224112 -0.411612 +v 1.025888 0.224112 -0.588389 +v 1.088388 0.161612 -0.625000 +v 1.150888 0.099112 -0.588389 +v 1.176777 0.073223 -0.500000 +v 1.150888 0.099112 -0.411612 +v 1.000000 0.125000 -0.375000 +v 1.000000 0.213388 -0.411612 +v 1.000000 0.213388 -0.588389 +v 1.000000 0.125000 -0.625000 +v 1.000000 0.036612 -0.588389 +v 1.000000 0.000000 -0.500000 +v 1.000000 0.036612 -0.411612 +v -1.125000 0.750000 -0.625000 +v -1.036612 0.750000 -0.588389 +v -1.000000 0.750000 -0.500000 +v -1.036612 0.750000 -0.411612 +v -1.125000 0.750000 -0.375000 +v -1.213388 0.750000 -0.411612 +v -1.250000 0.750000 -0.500000 +v -1.213388 0.750000 -0.588389 +v -1.125000 0.250000 -0.625000 +v -1.036612 0.250000 -0.588389 +v -1.000000 0.250000 -0.500000 +v -1.036612 0.250000 -0.411612 +v -1.125000 0.250000 -0.375000 +v -1.213388 0.250000 -0.411612 +v -1.250000 0.250000 -0.500000 +v -1.213388 0.250000 -0.588389 +v -1.088388 0.161612 -0.625000 +v -1.025888 0.224112 -0.588389 +v -1.025888 0.224112 -0.411612 +v -1.088388 0.161612 -0.375000 +v -1.150888 0.099112 -0.411612 +v -1.176777 0.073223 -0.500000 +v -1.150888 0.099112 -0.588389 +v -1.000000 0.125000 -0.625000 +v -1.000000 0.213388 -0.588389 +v -1.000000 0.213388 -0.411612 +v -1.000000 0.125000 -0.375000 +v -1.000000 0.036612 -0.411612 +v -1.000000 0.000000 -0.500000 +v -1.000000 0.036612 -0.588389 +v 1.125000 0.750000 -0.125000 +v 1.036612 0.750000 -0.161612 +v 1.000000 0.750000 -0.250000 +v 1.036612 0.750000 -0.338388 +v 1.125000 0.750000 -0.375000 +v 1.213388 0.750000 -0.338388 +v 1.250000 0.750000 -0.250000 +v 1.213388 0.750000 -0.161612 +v 1.125000 0.250000 -0.125000 +v 1.036612 0.250000 -0.161612 +v 1.000000 0.250000 -0.250000 +v 1.036612 0.250000 -0.338389 +v 1.125000 0.250000 -0.375000 +v 1.213388 0.250000 -0.338389 +v 1.250000 0.250000 -0.250000 +v 1.213388 0.250000 -0.161612 +v 1.088388 0.161612 -0.125000 +v 1.025888 0.224112 -0.161612 +v 1.025888 0.224112 -0.338389 +v 1.088388 0.161612 -0.375000 +v 1.150888 0.099112 -0.338389 +v 1.176777 0.073223 -0.250000 +v 1.150888 0.099112 -0.161612 +v 1.000000 0.125000 -0.125000 +v 1.000000 0.213388 -0.161612 +v 1.000000 0.213388 -0.338389 +v 1.000000 0.125000 -0.375000 +v 1.000000 0.036612 -0.338389 +v 1.000000 0.000000 -0.250000 +v 1.000000 0.036612 -0.161612 +v -1.125000 0.750000 -0.375000 +v -1.036612 0.750000 -0.338388 +v -1.000000 0.750000 -0.250000 +v -1.036612 0.750000 -0.161612 +v -1.125000 0.750000 -0.125000 +v -1.213388 0.750000 -0.161612 +v -1.250000 0.750000 -0.250000 +v -1.213388 0.750000 -0.338388 +v -1.125000 0.250000 -0.375000 +v -1.036612 0.250000 -0.338389 +v -1.000000 0.250000 -0.250000 +v -1.036612 0.250000 -0.161612 +v -1.125000 0.250000 -0.125000 +v -1.213388 0.250000 -0.161612 +v -1.250000 0.250000 -0.250000 +v -1.213388 0.250000 -0.338389 +v -1.088388 0.161612 -0.375000 +v -1.025888 0.224112 -0.338389 +v -1.025888 0.224112 -0.161612 +v -1.088388 0.161612 -0.125000 +v -1.150888 0.099112 -0.161612 +v -1.176777 0.073223 -0.250000 +v -1.150888 0.099112 -0.338389 +v -1.000000 0.125000 -0.375000 +v -1.000000 0.213388 -0.338389 +v -1.000000 0.213388 -0.161612 +v -1.000000 0.125000 -0.125000 +v -1.000000 0.036612 -0.161612 +v -1.000000 0.000000 -0.250000 +v -1.000000 0.036612 -0.338389 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.600000 0.046875 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.000000 +vt 0.600000 0.000000 +vt 0.576000 0.046875 +vt 0.600000 0.046875 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 0.031250 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 1.000000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.600000 0.062500 +vt 0.744000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.744000 0.031250 +vt 0.600000 0.062500 +vt 0.600000 0.031250 +vt 0.096000 0.500000 +vt 0.104000 0.437500 +vt 0.104000 0.500000 +vt 0.104000 0.562500 +vt 0.096000 0.625000 +vt 0.096000 0.562500 +vt 0.104000 0.625000 +vt 0.096000 0.687500 +vt 0.104000 0.687500 +vt 0.096000 0.750000 +vt 0.104000 0.750000 +vt 0.096000 0.812500 +vt 0.104000 0.812500 +vt 0.096000 0.875000 +vt 0.096000 0.937500 +vt 0.104000 0.875000 +vt 0.104000 0.937500 +vt 0.096000 1.000000 +vt 0.104000 1.000000 +vt 0.096000 0.062500 +vt 0.104000 0.000000 +vt 0.104000 0.062500 +vt 0.096000 0.125000 +vt 0.104000 0.125000 +vt 0.096000 0.187500 +vt 0.104000 0.187500 +vt 0.104000 0.250000 +vt 0.104000 0.312500 +vt 0.096000 0.250000 +vt 0.104000 0.375000 +vt 0.096000 0.312500 +vt 0.096000 0.375000 +vt 0.472000 0.500000 +vt 0.480000 0.562500 +vt 0.472000 0.562500 +vt 0.480000 0.437500 +vt 0.472000 0.437500 +vt 0.480000 0.375000 +vt 0.472000 0.375000 +vt 0.480000 0.312500 +vt 0.472000 0.312500 +vt 0.480000 0.250000 +vt 0.472000 0.250000 +vt 0.480000 0.187500 +vt 0.472000 0.187500 +vt 0.480000 0.125000 +vt 0.480000 0.062500 +vt 0.472000 0.125000 +vt 0.472000 0.062500 +vt 0.480000 0.000000 +vt 0.472000 0.000000 +vt 0.480000 0.937500 +vt 0.472000 1.000000 +vt 0.472000 0.937500 +vt 0.480000 0.875000 +vt 0.472000 0.875000 +vt 0.480000 0.812500 +vt 0.472000 0.812500 +vt 0.472000 0.750000 +vt 0.472000 0.687500 +vt 0.480000 0.750000 +vt 0.472000 0.625000 +vt 0.480000 0.687500 +vt 0.480000 0.625000 +vt 0.120000 0.750000 +vt 0.128000 0.812500 +vt 0.120000 0.812500 +vt 0.128000 0.875000 +vt 0.120000 0.875000 +vt 0.128000 0.937500 +vt 0.120000 0.937500 +vt 0.128000 1.000000 +vt 0.120000 1.000000 +vt 0.120000 -0.000000 +vt 0.128000 0.062500 +vt 0.120000 0.062500 +vt 0.128000 0.125000 +vt 0.120000 0.125000 +vt 0.128000 0.187500 +vt 0.120000 0.187500 +vt 0.120000 0.250000 +vt 0.128000 0.250000 +vt 0.120000 0.312500 +vt 0.128000 0.312500 +vt 0.120000 0.375000 +vt 0.128000 0.375000 +vt 0.120000 0.437500 +vt 0.128000 0.500000 +vt 0.120000 0.500000 +vt 0.120000 0.562500 +vt 0.128000 0.562500 +vt 0.128000 0.625000 +vt 0.120000 0.625000 +vt 0.128000 0.687500 +vt 0.120000 0.687500 +vt 0.128000 0.750000 +vt 0.456000 0.250000 +vt 0.448000 0.312500 +vt 0.448000 0.250000 +vt 0.456000 0.312500 +vt 0.448000 0.375000 +vt 0.456000 0.375000 +vt 0.448000 0.437500 +vt 0.448000 0.500000 +vt 0.456000 0.437500 +vt 0.456000 0.500000 +vt 0.448000 0.562500 +vt 0.456000 0.562500 +vt 0.448000 0.625000 +vt 0.456000 0.625000 +vt 0.448000 0.687500 +vt 0.456000 0.687500 +vt 0.448000 0.750000 +vt 0.456000 0.750000 +vt 0.448000 0.812500 +vt 0.456000 0.812500 +vt 0.448000 0.875000 +vt 0.448000 0.937500 +vt 0.456000 0.875000 +vt 0.456000 0.937500 +vt 0.456000 1.000000 +vt 0.456000 0.062500 +vt 0.448000 0.000000 +vt 0.456000 -0.000000 +vt 0.456000 0.125000 +vt 0.448000 0.062500 +vt 0.456000 0.187500 +vt 0.448000 0.125000 +vt 0.448000 0.187500 +vt 0.600000 0.156250 +vt 0.792000 0.343750 +vt 0.600000 0.343750 +vt 0.792000 0.109375 +vt 0.792000 0.156250 +vt 0.600000 0.390625 +vt 0.816000 0.343750 +vt 0.576000 0.156250 +vt 0.904000 0.062500 +vt 0.884000 0.078125 +vt 0.884000 0.062500 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.904000 0.062500 +vt 0.884000 0.078125 +vt 0.884000 0.062500 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.904000 0.031250 +vt 0.968000 0.039062 +vt 0.904000 0.039062 +vt 0.904000 0.031250 +vt 0.968000 0.039062 +vt 0.904000 0.039062 +vt 0.912000 0.031250 +vt 0.960000 0.039062 +vt 0.912000 0.039062 +vt 0.912000 0.031250 +vt 0.960000 0.039062 +vt 0.912000 0.039062 +vt 0.824000 0.062500 +vt 0.856000 0.187500 +vt 0.824000 0.187500 +vt 0.824000 0.062500 +vt 0.856000 0.187500 +vt 0.824000 0.187500 +vt 0.864000 0.187500 +vt 0.856000 0.062500 +vt 0.864000 0.062500 +vt 0.816000 0.062500 +vt 0.816000 0.187500 +vt 0.856000 0.046875 +vt 0.824000 0.046875 +vt 0.824000 0.203125 +vt 0.856000 0.203125 +vt 0.864000 0.187500 +vt 0.856000 0.062500 +vt 0.864000 0.062500 +vt 0.816000 0.062500 +vt 0.816000 0.187500 +vt 0.856000 0.046875 +vt 0.824000 0.046875 +vt 0.824000 0.203125 +vt 0.856000 0.203125 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.576000 0.109375 +vt 0.736000 0.093750 +vt 0.736000 0.109375 +vt 0.576000 0.093750 +vt 0.736000 0.062500 +vt 0.736000 0.062500 +vt 0.576000 0.093750 +vt 0.576000 0.062500 +vt 0.736000 0.093750 +vt 0.576000 0.109375 +vt 0.600000 0.156250 +vt 0.792000 0.343750 +vt 0.600000 0.343750 +vt 0.792000 0.109375 +vt 0.792000 0.156250 +vt 0.600000 0.390625 +vt 0.816000 0.343750 +vt 0.576000 0.156250 +vt 0.904000 0.062500 +vt 0.884000 0.078125 +vt 0.884000 0.062500 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.864000 0.062500 +vt 0.868000 0.078125 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.864000 0.062500 +vt 0.868000 0.078125 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.864000 0.062500 +vt 0.868000 0.078125 +vt 0.904000 0.062500 +vt 0.884000 0.078125 +vt 0.884000 0.062500 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.884000 0.062500 +vt 0.900000 0.078125 +vt 0.884000 0.078125 +vt 0.868000 0.078125 +vt 0.864000 0.062500 +vt 0.904000 0.031250 +vt 0.968000 0.039062 +vt 0.904000 0.039063 +vt 0.904000 0.031250 +vt 0.968000 0.039062 +vt 0.904000 0.039063 +vt 0.912000 0.031250 +vt 0.960000 0.039062 +vt 0.912000 0.039063 +vt 0.912000 0.031250 +vt 0.960000 0.039062 +vt 0.912000 0.039063 +vt 0.824000 0.062500 +vt 0.856000 0.187500 +vt 0.824000 0.187500 +vt 0.824000 0.062500 +vt 0.856000 0.187500 +vt 0.824000 0.187500 +vt 0.864000 0.187500 +vt 0.856000 0.062500 +vt 0.864000 0.062500 +vt 0.816000 0.062500 +vt 0.816000 0.187500 +vt 0.856000 0.046875 +vt 0.824000 0.046875 +vt 0.824000 0.203125 +vt 0.856000 0.203125 +vt 0.864000 0.187500 +vt 0.856000 0.062500 +vt 0.864000 0.062500 +vt 0.816000 0.062500 +vt 0.816000 0.187500 +vt 0.856000 0.046875 +vt 0.824000 0.046875 +vt 0.824000 0.203125 +vt 0.856000 0.203125 +vt 0.600000 0.437500 +vt 0.728000 0.562500 +vt 0.600000 0.562500 +vt 0.576000 0.562500 +vt 0.600000 0.390625 +vt 0.728000 0.437500 +vt 0.728000 0.609375 +vt 0.752000 0.437500 +vt 0.744002 0.078125 +vt 0.760000 0.046879 +vt 0.775998 0.078125 +vt 0.760000 0.046879 +vt 0.771312 0.056031 +vt 0.775998 0.078125 +vt 0.728000 0.562500 +vt 0.600000 0.437500 +vt 0.728000 0.437500 +vt 0.752000 0.437500 +vt 0.728000 0.609375 +vt 0.600000 0.562500 +vt 0.600000 0.390625 +vt 0.576000 0.562500 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 0.576000 0.046875 +vt 1.000000 -0.000000 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 1.000000 -0.000000 +vt 0.600000 0.031250 +vt 1.000000 -0.000000 +vt 0.600000 -0.000000 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.600000 0.031250 +vt 0.600000 0.031250 +vt 0.744000 0.062500 +vt 0.744000 0.062500 +vt 0.096000 0.437500 +vt 0.096000 -0.000000 +vt 0.480000 0.500000 +vt 0.480000 1.000000 +vt 0.128000 0.000000 +vt 0.128000 0.437500 +vt 0.448000 1.000000 +vt 0.600000 0.109375 +vt 0.792000 0.390625 +vt 0.816000 0.156250 +vt 0.576000 0.343750 +vt 0.900000 0.078125 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.900000 0.078125 +vt 0.968000 0.031250 +vt 0.968000 0.031250 +vt 0.960000 0.031250 +vt 0.960000 0.031250 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.576000 0.062500 +vt 0.736000 0.109375 +vt 0.600000 0.109375 +vt 0.792000 0.390625 +vt 0.816000 0.156250 +vt 0.576000 0.343750 +vt 0.900000 0.078125 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.904000 0.062500 +vt 0.900000 0.078125 +vt 0.904000 0.062500 +vt 0.968000 0.031250 +vt 0.968000 0.031250 +vt 0.960000 0.031250 +vt 0.960000 0.031250 +vt 0.576000 0.437500 +vt 0.728000 0.390625 +vt 0.600000 0.609375 +vt 0.752000 0.562500 +vt 0.771312 0.100219 +vt 0.760000 0.109371 +vt 0.748688 0.100219 +vt 0.748688 0.056031 +vt 0.771312 0.056031 +vt 0.771312 0.100219 +vt 0.760000 0.109371 +vt 0.748688 0.100219 +vt 0.744002 0.078125 +vt 0.748688 0.056031 +vt 0.752000 0.562500 +vt 0.600000 0.609375 +vt 0.728000 0.390625 +vt 0.576000 0.437500 +vt 0.072000 0.437500 +vt 0.040000 0.484375 +vt 0.000000 0.468750 +vt 0.040000 0.453125 +vt 0.504000 0.875000 +vt 0.536000 0.765625 +vt 0.576000 0.781250 +vt 0.536000 0.796875 +vt 0.072000 0.500000 +vt 0.504000 0.750000 +vt 0.504000 0.812500 +vt 0.536000 0.703125 +vt 0.576000 0.718750 +vt 0.536000 0.734375 +vt 0.040000 0.421875 +vt 0.072000 0.375000 +vt 0.504000 0.687500 +vt -0.000000 0.406250 +vt 0.040000 0.390625 +vt 0.536000 0.640625 +vt 0.576000 0.656250 +vt 0.536000 0.671875 +vt 0.040000 0.359375 +vt 0.072000 0.312500 +vt 0.504000 0.625000 +vt 0.000000 0.343750 +vt 0.040000 0.328125 +vt 0.040000 0.296875 +vt 0.072000 0.250000 +vt 0.536000 0.578125 +vt 0.576000 0.593750 +vt 0.536000 0.609375 +vt 0.000000 0.281250 +vt 0.040000 0.265625 +vt 0.504000 0.562500 +vt 0.040000 0.203125 +vt 0.072000 0.187500 +vt 0.040000 0.234375 +vt -0.000000 0.218750 +vt 0.536000 0.515625 +vt 0.504000 0.500000 +vt 0.576000 0.531250 +vt 0.536000 0.546875 +vt 0.072000 0.125000 +vt 0.040000 0.171875 +vt -0.000000 0.156250 +vt 0.040000 0.140625 +vt 0.040000 0.109375 +vt -0.000000 0.093750 +vt 0.040000 0.078125 +vt 0.072000 0.062500 +vt 0.072000 -0.000000 +vt 0.040000 0.046875 +vt 0.000000 0.031250 +vt 0.040000 0.015625 +vt 0.072000 1.000000 +vt 0.040000 0.984375 +vt 0.000000 0.968750 +vt 0.040000 0.953125 +vt 0.072000 0.937500 +vt 0.040000 0.921875 +vt -0.000000 0.906250 +vt 0.040000 0.890625 +vt 0.072000 0.875000 +vt 0.040000 0.859375 +vt 0.000000 0.843750 +vt 0.040000 0.828125 +vt 0.072000 0.812500 +vt 0.040000 0.796875 +vt 0.072000 0.750000 +vt -0.000000 0.781250 +vt 0.040000 0.765625 +vt 0.040000 0.703125 +vt 0.072000 0.687500 +vt 0.040000 0.734375 +vt 0.000000 0.718750 +vt 0.040000 0.671875 +vt 0.072000 0.625000 +vt -0.000000 0.656250 +vt 0.040000 0.640625 +vt 0.040000 0.578125 +vt 0.072000 0.562500 +vt 0.040000 0.609375 +vt -0.000000 0.593750 +vt 0.040000 0.546875 +vt 0.000000 0.531250 +vt 0.040000 0.515625 +vt 0.536000 0.828125 +vt 0.576000 0.843750 +vt 0.536000 0.859375 +vt 0.504000 0.937500 +vt 0.536000 0.890625 +vt 0.576000 0.906250 +vt 0.536000 0.921875 +vt 0.504000 1.000000 +vt 0.536000 0.953125 +vt 0.576000 0.968750 +vt 0.536000 0.984375 +vt 0.504000 -0.000000 +vt 0.536000 0.015625 +vt 0.576000 0.031250 +vt 0.536000 0.046875 +vt 0.504000 0.062500 +vt 0.536000 0.078125 +vt 0.576000 0.093750 +vt 0.536000 0.109375 +vt 0.504000 0.125000 +vt 0.536000 0.140625 +vt 0.576000 0.156250 +vt 0.536000 0.171875 +vt 0.504000 0.187500 +vt 0.536000 0.203125 +vt 0.504000 0.250000 +vt 0.576000 0.218750 +vt 0.536000 0.234375 +vt 0.536000 0.265625 +vt 0.504000 0.312500 +vt 0.576000 0.281250 +vt 0.536000 0.296875 +vt 0.536000 0.359375 +vt 0.504000 0.375000 +vt 0.536000 0.328125 +vt 0.576000 0.343750 +vt 0.536000 0.390625 +vt 0.504000 0.437500 +vt 0.576000 0.406250 +vt 0.536000 0.421875 +vt 0.536000 0.484375 +vt 0.536000 0.453125 +vt 0.576000 0.468750 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.884000 0.109375 +vt 0.900000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.884000 0.109375 +vt 0.900000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.900000 0.109375 +vt 0.884000 0.031250 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.868000 0.109375 +vt 0.884000 0.109375 +vt 0.904000 0.031250 +vt 0.868000 0.109375 +vt 0.864000 0.031250 +vt 0.900000 0.109375 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.920000 0.203125 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.484375 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.492188 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.780000 0.046875 +vt 0.792000 0.031250 +vt 0.792000 0.046875 +vt 0.804000 0.046875 +vt 0.804000 0.031250 +vt 0.828000 0.046875 +vt 0.816000 0.031250 +vt 0.828000 0.031250 +vt 0.744000 0.046875 +vt 0.756000 0.031250 +vt 0.756000 0.046875 +vt 0.768000 0.046875 +vt 0.780000 0.031250 +vt 0.816000 0.046875 +vt 0.840000 0.031250 +vt 0.840000 0.046875 +vt 0.768000 0.031250 +vt 0.780000 0.046875 +vt 0.792000 0.031250 +vt 0.792000 0.046875 +vt 0.804000 0.031250 +vt 0.804000 0.046875 +vt 0.828000 0.046875 +vt 0.816000 0.031250 +vt 0.828000 0.031250 +vt 0.744000 0.046875 +vt 0.756000 0.031250 +vt 0.756000 0.046875 +vt 0.768000 0.046875 +vt 0.780000 0.031250 +vt 0.816000 0.046875 +vt 0.840000 0.031250 +vt 0.840000 0.046875 +vt 0.768000 0.031250 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.920000 0.203125 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.484375 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.492188 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.468750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.896000 0.195312 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.872000 0.218750 +vt 0.864000 0.468750 +vt 0.864000 0.218750 +vt 0.880000 0.468750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.920000 0.203125 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.484375 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.492188 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.468750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.928000 0.578125 +vt 0.920000 0.515625 +vt 0.928000 0.515625 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.578125 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.872000 0.218750 +vt 0.864000 0.468750 +vt 0.864000 0.218750 +vt 0.880000 0.468750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.888000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.888000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.468750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.928000 0.578125 +vt 0.920000 0.515625 +vt 0.928000 0.515625 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.578125 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.484375 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.492188 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.872000 0.218750 +vt 0.864000 0.468750 +vt 0.864000 0.218750 +vt 0.880000 0.468750 +vt 0.904000 0.109375 +vt 0.896000 0.171875 +vt 0.896000 0.109375 +vt 0.888000 0.109375 +vt 0.880000 0.171875 +vt 0.880000 0.109375 +vt 0.872000 0.109375 +vt 0.864000 0.171875 +vt 0.864000 0.109375 +vt 0.920000 0.109375 +vt 0.912000 0.171875 +vt 0.912000 0.109375 +vt 0.904000 0.171875 +vt 0.888000 0.171875 +vt 0.872000 0.171875 +vt 0.928000 0.109375 +vt 0.920000 0.171875 +vt 0.912000 0.179688 +vt 0.920000 0.195312 +vt 0.912000 0.195312 +vt 0.904000 0.195312 +vt 0.896000 0.195312 +vt 0.888000 0.195312 +vt 0.880000 0.179688 +vt 0.872000 0.195312 +vt 0.872000 0.187500 +vt 0.880000 0.195312 +vt 0.896000 0.218750 +vt 0.888000 0.218750 +vt 0.880000 0.210938 +vt 0.912000 0.210938 +vt 0.904000 0.218750 +vt 0.872000 0.203125 +vt 0.864000 0.195312 +vt 0.920000 0.187500 +vt 0.928000 0.195312 +vt 0.920000 0.203125 +vt 0.888000 0.578125 +vt 0.896000 0.515625 +vt 0.896000 0.578125 +vt 0.904000 0.578125 +vt 0.912000 0.515625 +vt 0.912000 0.578125 +vt 0.920000 0.578125 +vt 0.928000 0.515625 +vt 0.928000 0.578125 +vt 0.872000 0.578125 +vt 0.880000 0.515625 +vt 0.880000 0.578125 +vt 0.888000 0.515625 +vt 0.904000 0.515625 +vt 0.920000 0.515625 +vt 0.864000 0.578125 +vt 0.872000 0.515625 +vt 0.872000 0.500000 +vt 0.880000 0.492188 +vt 0.880000 0.507812 +vt 0.888000 0.492188 +vt 0.896000 0.492188 +vt 0.904000 0.492188 +vt 0.920000 0.500000 +vt 0.912000 0.492188 +vt 0.920000 0.492188 +vt 0.912000 0.507812 +vt 0.896000 0.468750 +vt 0.904000 0.468750 +vt 0.912000 0.476562 +vt 0.872000 0.492188 +vt 0.880000 0.476562 +vt 0.888000 0.468750 +vt 0.920000 0.484375 +vt 0.928000 0.492188 +vt 0.864000 0.492188 +vt 0.872000 0.484375 +vt 0.880000 0.218750 +vt 0.912000 0.468750 +vt 0.912000 0.218750 +vt 0.920000 0.468750 +vt 0.920000 0.218750 +vt 0.928000 0.218750 +vt 0.864000 0.218750 +vt 0.872000 0.468750 +vt 0.864000 0.468750 +vt 0.880000 0.468750 +vt 0.872000 0.218750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.744000 0.031250 +vt 0.744000 0.031250 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.872000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.872000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vt 0.872000 0.468750 +vt 0.928000 0.171875 +vt 0.864000 0.515625 +vt 0.928000 0.468750 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.0000 0.8814 0.4723 +vn 0.2738 0.6610 0.6987 +vn 0.3373 0.8143 0.4723 +vn -0.0000 0.3125 0.9499 +vn 0.1196 0.2888 0.9499 +vn -0.8143 -0.3373 -0.4723 +vn -0.5059 -0.5059 -0.6987 +vn -0.6233 -0.6233 -0.4723 +vn -0.3125 -0.0000 -0.9499 +vn -0.2888 -0.1196 -0.9499 +vn -0.0000 0.7155 0.6987 +vn -0.7155 -0.0000 -0.6987 +vn -0.8814 -0.0000 -0.4723 +vn -0.6610 -0.2738 -0.6987 +vn -0.2888 0.1196 -0.9499 +vn 0.5059 0.5059 0.6987 +vn -0.6610 0.2738 -0.6987 +vn -0.8143 0.3373 -0.4723 +vn 0.6233 0.6233 0.4723 +vn 0.2210 0.2210 0.9499 +vn -0.2210 0.2210 -0.9499 +vn 0.6610 0.2738 0.6987 +vn -0.5059 0.5059 -0.6987 +vn -0.6233 0.6233 -0.4723 +vn 0.8143 0.3373 0.4723 +vn 0.2888 0.1196 0.9499 +vn 0.7155 -0.0000 0.6987 +vn -0.1196 0.2888 -0.9499 +vn 0.8814 -0.0000 0.4723 +vn 0.3126 0.0000 0.9499 +vn -0.2738 0.6610 -0.6987 +vn -0.3373 0.8143 -0.4723 +vn 0.2888 -0.1196 0.9499 +vn 0.6610 -0.2738 0.6987 +vn 0.8143 -0.3373 0.4723 +vn 0.0000 0.3125 -0.9499 +vn 0.0000 0.7155 -0.6987 +vn -0.0000 0.8814 -0.4723 +vn 0.5059 -0.5059 0.6987 +vn 0.6233 -0.6233 0.4723 +vn 0.2210 -0.2210 0.9499 +vn 0.3373 -0.8143 0.4723 +vn 0.1196 -0.2888 0.9499 +vn 0.2738 -0.6610 0.6987 +vn -0.0000 -0.7155 0.6987 +vn -0.0000 -0.8814 0.4723 +vn -0.0000 -0.3125 0.9499 +vn -0.3373 -0.8143 0.4723 +vn -0.1196 -0.2888 0.9499 +vn -0.2738 -0.6610 0.6987 +vn -0.6233 -0.6233 0.4723 +vn -0.2210 -0.2210 0.9499 +vn -0.5059 -0.5059 0.6987 +vn -0.2888 -0.1196 0.9499 +vn -0.6610 -0.2738 0.6987 +vn -0.8143 -0.3373 0.4723 +vn -0.7155 0.0000 0.6987 +vn -0.8814 0.0000 0.4723 +vn -0.3125 0.0000 0.9499 +vn -0.2888 0.1196 0.9499 +vn -0.6610 0.2738 0.6987 +vn -0.8143 0.3373 0.4723 +vn -0.5059 0.5059 0.6987 +vn -0.6233 0.6233 0.4723 +vn -0.2210 0.2210 0.9499 +vn -0.1196 0.2888 0.9499 +vn -0.2738 0.6610 0.6987 +vn -0.3373 0.8143 0.4723 +vn -0.2210 -0.2210 -0.9499 +vn -0.2738 -0.6610 -0.6987 +vn -0.3373 -0.8143 -0.4723 +vn -0.1196 -0.2888 -0.9499 +vn -0.0000 -0.7155 -0.6987 +vn 0.0000 -0.8814 -0.4723 +vn -0.0000 -0.3125 -0.9499 +vn 0.3373 -0.8143 -0.4723 +vn 0.1196 -0.2888 -0.9499 +vn 0.2738 -0.6610 -0.6987 +vn 0.6233 -0.6233 -0.4723 +vn 0.2210 -0.2210 -0.9499 +vn 0.5059 -0.5059 -0.6987 +vn 0.2888 -0.1196 -0.9499 +vn 0.6610 -0.2738 -0.6987 +vn 0.8143 -0.3373 -0.4723 +vn 0.7155 0.0000 -0.6987 +vn 0.8814 0.0000 -0.4723 +vn 0.3125 0.0000 -0.9499 +vn 0.6610 0.2738 -0.6987 +vn 0.8143 0.3373 -0.4723 +vn 0.2888 0.1196 -0.9499 +vn 0.2210 0.2210 -0.9499 +vn 0.5059 0.5059 -0.6987 +vn 0.6233 0.6233 -0.4723 +vn 0.2738 0.6610 -0.6987 +vn 0.3373 0.8143 -0.4723 +vn 0.1196 0.2888 -0.9499 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 0.8660 0.5000 +vn 0.0000 -0.5000 0.8660 +vn 0.7071 0.0000 -0.7071 +vn 0.9824 0.1866 -0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.0473 0.0196 0.9987 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0473 0.0196 -0.9987 +vn 0.7194 0.1448 -0.6794 +vn 0.7194 0.1448 0.6794 +vn -0.6737 -0.1363 0.7263 +vn -0.6737 -0.1363 -0.7263 +vn -0.4617 -0.4617 -0.7574 +vn 0.0671 0.0671 -0.9955 +vn 0.5294 0.5294 -0.6630 +vn 0.5294 0.5294 0.6630 +vn -0.4617 -0.4617 0.7574 +vn 0.0671 0.0671 0.9955 +vn 0.1866 0.9824 0.0000 +vn 0.1448 0.7194 0.6794 +vn 0.0196 0.0473 0.9987 +vn -0.1363 -0.6737 -0.7263 +vn 0.0196 0.0473 -0.9987 +vn 0.1448 0.7194 -0.6794 +vn -0.1363 -0.6737 0.7263 +vn -0.9824 0.1866 0.0000 +vn -0.0473 0.0196 -0.9987 +vn -0.0473 0.0196 0.9987 +vn -0.7194 0.1448 0.6794 +vn -0.7194 0.1448 -0.6794 +vn 0.6737 -0.1363 -0.7263 +vn 0.6737 -0.1363 0.7263 +vn -0.0671 0.0671 0.9955 +vn -0.5294 0.5294 0.6630 +vn -0.5294 0.5294 -0.6630 +vn -0.0671 0.0671 -0.9955 +vn 0.4617 -0.4617 -0.7574 +vn -0.1866 0.9824 -0.0000 +vn -0.1448 0.7194 -0.6794 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 0.7263 +vn -0.0196 0.0473 0.9987 +vn -0.1448 0.7194 0.6794 +vn 0.1363 -0.6737 -0.7263 +vn 0.4617 -0.4617 0.7574 +vn 0.9824 -0.1866 0.0000 +vn 0.0473 -0.0196 -0.9987 +vn 0.0473 -0.0196 0.9987 +vn 0.7194 -0.1448 0.6794 +vn 0.7194 -0.1448 -0.6794 +vn -0.6737 0.1363 -0.7263 +vn -0.6737 0.1363 0.7263 +vn -0.4617 0.4617 0.7574 +vn 0.0671 -0.0671 0.9955 +vn 0.5294 -0.5294 0.6630 +vn 0.5294 -0.5294 -0.6630 +vn -0.4617 0.4617 -0.7574 +vn 0.0671 -0.0671 -0.9955 +vn 0.1866 -0.9824 -0.0000 +vn 0.1448 -0.7194 -0.6794 +vn 0.0196 -0.0473 -0.9987 +vn 0.0196 -0.0473 0.9987 +vn 0.1448 -0.7194 0.6794 +vn -0.1363 0.6737 -0.7263 +vn -0.1363 0.6737 0.7263 +vn -0.9824 -0.1866 0.0000 +vn -0.0473 -0.0196 0.9987 +vn 0.6737 0.1363 0.7263 +vn -0.0473 -0.0196 -0.9987 +vn -0.7194 -0.1448 -0.6794 +vn -0.7194 -0.1448 0.6794 +vn 0.6737 0.1363 -0.7263 +vn -0.0671 -0.0671 -0.9955 +vn -0.5294 -0.5294 -0.6630 +vn -0.5294 -0.5294 0.6630 +vn -0.0671 -0.0671 0.9955 +vn 0.4617 0.4617 0.7574 +vn -0.1866 -0.9824 0.0000 +vn -0.1448 -0.7194 0.6794 +vn -0.0196 -0.0473 0.9987 +vn 0.4617 0.4617 -0.7574 +vn -0.0196 -0.0473 -0.9987 +vn -0.1448 -0.7194 -0.6794 +vn 0.1363 0.6737 0.7263 +vn 0.1363 0.6737 -0.7263 +s off +f 61/65/21 58/66/21 57/67/21 +f 62/68/22 60/69/22 58/70/22 +f 64/71/23 59/72/23 60/73/23 +f 63/74/24 57/75/24 59/76/24 +f 63/74/25 62/77/25 61/78/25 +f 58/79/26 59/76/26 57/80/26 +f 69/81/21 66/82/21 65/83/21 +f 70/84/22 68/85/22 66/86/22 +f 72/87/23 67/88/23 68/89/23 +f 71/90/24 65/91/24 67/92/24 +f 71/90/25 70/93/25 69/94/25 +f 66/95/26 67/92/26 65/96/26 +f 77/97/21 74/98/21 73/99/21 +f 78/100/22 76/101/22 74/102/22 +f 80/103/23 75/104/23 76/105/23 +f 79/106/24 73/107/24 75/108/24 +f 79/106/25 78/109/25 77/110/25 +f 74/111/26 75/108/26 73/112/26 +f 85/113/21 82/114/21 81/115/21 +f 86/116/22 84/117/22 82/118/22 +f 88/119/23 83/120/23 84/121/23 +f 87/122/24 81/123/24 83/124/24 +f 87/122/25 86/125/25 85/126/25 +f 82/127/26 83/124/26 81/128/26 +f 93/129/21 90/130/21 89/131/21 +f 94/132/22 92/133/22 90/134/22 +f 96/135/23 91/136/23 92/137/23 +f 95/138/24 89/139/24 91/140/24 +f 95/138/25 94/141/25 93/142/25 +f 90/143/26 91/140/26 89/144/26 +f 101/145/21 98/146/21 97/147/21 +f 102/148/22 100/149/22 98/150/22 +f 104/151/23 99/152/23 100/153/23 +f 103/154/24 97/155/24 99/156/24 +f 103/154/25 102/157/25 101/158/25 +f 98/159/26 99/156/26 97/160/26 +f 109/161/21 106/162/21 105/163/21 +f 110/164/22 108/165/22 106/166/22 +f 112/167/23 107/168/23 108/169/23 +f 111/170/24 105/171/24 107/172/24 +f 111/170/25 110/173/25 109/174/25 +f 106/175/26 107/172/26 105/176/26 +f 117/177/21 114/178/21 113/179/21 +f 118/180/22 116/181/22 114/182/22 +f 120/183/23 115/184/23 116/185/23 +f 119/186/24 113/187/24 115/188/24 +f 119/186/25 118/189/25 117/190/25 +f 114/191/26 115/188/26 113/192/26 +f 54/193/26 56/194/26 55/195/26 +f 49/196/21 55/197/21 56/198/21 +f 51/199/23 53/200/23 54/201/23 +f 51/202/25 49/203/25 52/204/25 +f 126/205/26 128/206/26 127/207/26 +f 121/208/21 127/209/21 128/210/21 +f 123/211/23 125/212/23 126/213/23 +f 123/214/25 121/215/25 124/216/25 +f 134/217/26 136/218/26 135/219/26 +f 129/220/21 135/221/21 136/222/21 +f 131/223/23 133/224/23 134/225/23 +f 131/226/25 129/227/25 132/228/25 +f 142/229/26 144/230/26 143/231/26 +f 137/232/21 143/233/21 144/234/21 +f 139/235/23 141/236/23 142/237/23 +f 139/238/25 137/239/25 140/240/25 +f 146/241/26 147/242/26 145/243/26 +f 148/244/24 151/245/24 147/246/24 +f 145/247/22 150/248/22 146/249/22 +f 149/250/25 152/251/25 150/252/25 +f 154/253/26 155/254/26 153/255/26 +f 156/256/24 159/257/24 155/258/24 +f 153/259/22 158/260/22 154/261/22 +f 157/262/25 160/263/25 158/264/25 +f 162/265/26 163/266/26 161/267/26 +f 164/268/24 167/269/24 163/270/24 +f 161/271/22 166/272/22 162/273/22 +f 165/274/25 168/275/25 166/276/25 +f 170/277/26 171/278/26 169/279/26 +f 172/280/24 175/281/24 171/282/24 +f 169/283/22 174/284/22 170/285/22 +f 173/286/25 176/287/25 174/288/25 +f 178/289/23 179/290/23 177/291/23 +f 180/292/24 183/293/24 179/294/24 +f 177/295/22 182/296/22 178/297/22 +f 181/298/21 184/299/21 182/300/21 +f 186/301/23 187/302/23 185/303/23 +f 188/304/24 191/305/24 187/306/24 +f 185/307/22 190/308/22 186/309/22 +f 189/310/21 192/311/21 190/312/21 +f 194/313/23 195/314/23 193/315/23 +f 196/316/24 199/317/24 195/318/24 +f 193/319/22 198/320/22 194/321/22 +f 197/322/21 200/323/21 198/324/21 +f 202/325/23 203/326/23 201/327/23 +f 204/328/24 207/329/24 203/330/24 +f 201/331/22 206/332/22 202/333/22 +f 205/334/21 208/335/21 206/336/21 +f 244/337/22 212/338/22 210/339/22 +f 240/340/22 244/337/22 210/339/22 +f 240/340/22 342/341/22 349/342/22 +f 238/343/22 335/344/22 342/341/22 +f 236/345/22 328/346/22 335/344/22 +f 234/347/22 321/348/22 328/346/22 +f 232/349/22 314/350/22 321/348/22 +f 307/351/22 230/352/22 228/353/22 +f 300/354/22 228/353/22 226/355/22 +f 293/356/22 226/357/22 224/358/22 +f 286/359/22 224/358/22 222/360/22 +f 279/361/22 222/360/22 220/362/22 +f 218/363/22 279/361/22 220/362/22 +f 216/364/22 272/365/22 218/363/22 +f 214/366/22 265/367/22 216/364/22 +f 212/338/22 258/368/22 214/366/22 +f 357/369/24 352/370/24 350/371/24 +f 368/372/24 357/369/24 252/373/24 +f 252/373/24 365/374/24 368/372/24 +f 259/375/24 362/376/24 365/374/24 +f 266/377/24 241/378/24 362/376/24 +f 273/379/24 247/380/24 241/378/24 +f 280/381/24 255/382/24 247/380/24 +f 268/383/24 287/384/24 294/385/24 +f 276/386/24 294/385/24 301/387/24 +f 289/388/24 301/389/24 308/390/24 +f 297/391/24 308/390/24 315/392/24 +f 310/393/24 315/392/24 322/394/24 +f 329/395/24 310/393/24 322/394/24 +f 336/396/24 318/397/24 329/395/24 +f 343/398/24 331/399/24 336/396/24 +f 350/371/24 339/400/24 343/398/24 +f 233/401/24 382/402/24 231/403/24 +f 231/403/24 381/404/24 229/405/24 +f 229/405/24 380/406/24 227/407/24 +f 227/407/24 379/408/24 225/409/24 +f 225/410/24 378/411/24 223/412/24 +f 223/412/24 377/413/24 221/414/24 +f 221/414/24 376/415/24 219/416/24 +f 217/417/24 376/415/24 375/418/24 +f 375/418/24 215/419/24 217/417/24 +f 374/420/24 213/421/24 215/419/24 +f 373/422/24 211/423/24 213/421/24 +f 211/423/24 371/424/24 209/425/24 +f 239/426/24 371/424/24 386/427/24 +f 239/426/24 385/428/24 237/429/24 +f 237/429/24 384/430/24 235/431/24 +f 235/431/24 383/432/24 233/401/24 +f 274/433/22 390/434/22 391/435/22 +f 267/436/22 389/437/22 390/434/22 +f 260/438/22 388/439/22 389/437/22 +f 387/440/22 253/441/22 359/442/22 +f 402/443/22 359/442/22 351/444/22 +f 351/444/22 401/445/22 402/443/22 +f 344/446/22 400/447/22 401/445/22 +f 337/448/22 399/449/22 400/447/22 +f 330/450/22 398/451/22 399/449/22 +f 323/452/22 397/453/22 398/451/22 +f 396/454/22 316/455/22 309/456/22 +f 302/457/22 396/454/22 309/456/22 +f 295/458/22 395/459/22 302/460/22 +f 288/461/22 394/462/22 295/458/22 +f 281/463/22 393/464/22 288/461/22 +f 274/433/22 392/465/22 281/463/22 +f 404/466/21 405/467/21 403/468/21 +f 404/466/26 410/469/26 406/470/26 +f 405/467/25 408/471/25 403/468/25 +f 406/470/24 407/472/24 405/467/24 +f 403/468/22 409/473/22 404/466/22 +f 439/474/21 450/475/21 438/476/21 +f 438/476/21 449/477/21 437/478/21 +f 435/479/21 449/480/21 447/481/21 +f 435/479/21 448/482/21 436/483/21 +f 446/484/21 448/485/21 458/486/21 +f 446/484/21 457/487/21 445/488/21 +f 444/489/21 457/490/21 456/491/21 +f 444/489/21 455/492/21 443/493/21 +f 442/494/21 455/495/21 454/496/21 +f 442/494/21 453/497/21 441/498/21 +f 441/499/21 452/500/21 440/501/21 +f 440/501/21 451/502/21 439/503/21 +f 460/504/21 461/505/21 459/506/21 +f 464/507/21 465/508/21 463/509/21 +f 468/510/21 469/511/21 467/512/21 +f 472/513/21 473/514/21 471/515/21 +f 489/516/21 487/517/21 488/518/21 +f 481/519/21 479/520/21 480/521/21 +f 477/522/24 482/523/24 478/524/24 +f 476/525/22 480/521/22 475/526/22 +f 478/527/26 481/519/26 476/528/26 +f 475/529/25 479/520/25 477/530/25 +f 485/531/24 490/532/24 486/533/24 +f 484/534/22 488/518/22 483/535/22 +f 486/536/26 489/516/26 484/537/26 +f 483/538/25 487/517/25 485/539/25 +f 492/540/24 493/541/24 491/542/24 +f 494/543/25 497/544/25 493/541/25 +f 491/545/26 496/546/26 492/547/26 +f 495/548/22 498/549/22 496/546/22 +f 500/550/24 501/551/24 499/552/24 +f 502/553/25 505/554/25 501/551/25 +f 499/555/26 504/556/26 500/557/26 +f 503/558/22 506/559/22 504/556/22 +f 508/560/24 509/561/24 507/562/24 +f 510/563/25 513/564/25 509/561/25 +f 507/565/26 512/566/26 508/567/26 +f 511/568/22 514/569/22 512/566/22 +f 516/570/24 517/571/24 515/572/24 +f 518/573/25 521/574/25 517/571/25 +f 515/575/26 520/576/26 516/577/26 +f 519/578/22 522/579/22 520/576/22 +f 524/580/24 525/581/24 523/582/24 +f 526/583/21 529/584/21 525/581/21 +f 523/585/23 528/586/23 524/587/23 +f 527/588/22 530/589/22 528/586/22 +f 532/590/24 533/591/24 531/592/24 +f 534/593/21 537/594/21 533/591/21 +f 531/595/23 536/596/23 532/597/23 +f 535/598/22 538/599/22 536/596/22 +f 540/600/24 541/601/24 539/602/24 +f 542/603/21 545/604/21 541/601/21 +f 539/605/23 544/606/23 540/607/23 +f 543/608/22 546/609/22 544/606/22 +f 548/610/24 549/611/24 547/612/24 +f 550/613/21 553/614/21 549/611/21 +f 547/615/23 552/616/23 548/617/23 +f 551/618/22 554/619/22 552/616/22 +f 556/620/23 557/621/23 555/622/23 +f 556/620/26 562/623/26 558/624/26 +f 557/621/25 560/625/25 555/622/25 +f 558/624/22 559/626/22 557/621/22 +f 555/622/24 561/627/24 556/620/24 +f 591/628/23 602/629/23 590/630/23 +f 590/630/23 601/631/23 589/632/23 +f 587/633/23 601/634/23 599/635/23 +f 588/636/23 599/635/23 600/637/23 +f 598/638/23 600/639/23 610/640/23 +f 597/641/23 610/640/23 609/642/23 +f 596/643/23 609/644/23 608/645/23 +f 595/646/23 608/645/23 607/647/23 +f 595/648/23 606/649/23 594/650/23 +f 594/650/23 605/651/23 593/652/23 +f 592/653/23 605/654/23 604/655/23 +f 592/653/23 603/656/23 591/657/23 +f 612/658/23 613/659/23 611/660/23 +f 616/661/23 617/662/23 615/663/23 +f 620/664/23 621/665/23 619/666/23 +f 624/667/23 625/668/23 623/669/23 +f 641/670/23 639/671/23 640/672/23 +f 633/673/23 631/674/23 632/675/23 +f 629/676/22 634/677/22 630/678/22 +f 628/679/24 632/675/24 627/680/24 +f 630/681/26 633/673/26 628/682/26 +f 627/683/25 631/674/25 629/684/25 +f 637/685/22 642/686/22 638/687/22 +f 636/688/24 640/672/24 635/689/24 +f 638/690/26 641/670/26 636/691/26 +f 635/692/25 639/671/25 637/693/25 +f 704/694/25 705/695/25 703/696/25 +f 708/697/22 704/694/22 703/696/22 +f 709/698/21 706/699/21 704/694/21 +f 707/700/23 703/696/23 705/695/23 +f 710/701/24 705/695/24 706/699/24 +f 717/702/24 715/703/24 713/704/24 +f 731/705/22 730/706/22 729/707/22 +f 744/708/26 745/709/26 743/710/26 +f 748/711/24 744/708/24 743/710/24 +f 749/712/21 746/713/21 744/708/21 +f 747/714/23 743/710/23 745/709/23 +f 750/715/22 745/709/22 746/713/22 +f 61/65/21 62/716/21 58/66/21 +f 62/68/22 64/717/22 60/69/22 +f 64/71/23 63/718/23 59/72/23 +f 63/74/24 61/719/24 57/75/24 +f 63/74/25 64/717/25 62/77/25 +f 58/79/26 60/69/26 59/76/26 +f 69/81/21 70/720/21 66/82/21 +f 70/84/22 72/721/22 68/85/22 +f 72/87/23 71/722/23 67/88/23 +f 71/90/24 69/723/24 65/91/24 +f 71/90/25 72/721/25 70/93/25 +f 66/95/26 68/85/26 67/92/26 +f 77/97/21 78/724/21 74/98/21 +f 78/100/22 80/725/22 76/101/22 +f 80/103/23 79/726/23 75/104/23 +f 79/106/24 77/727/24 73/107/24 +f 79/106/25 80/725/25 78/109/25 +f 74/111/26 76/101/26 75/108/26 +f 85/113/21 86/728/21 82/114/21 +f 86/116/22 88/729/22 84/117/22 +f 88/119/23 87/730/23 83/120/23 +f 87/122/24 85/731/24 81/123/24 +f 87/122/25 88/729/25 86/125/25 +f 82/127/26 84/117/26 83/124/26 +f 93/129/21 94/732/21 90/130/21 +f 94/132/22 96/733/22 92/133/22 +f 96/135/23 95/734/23 91/136/23 +f 95/138/24 93/735/24 89/139/24 +f 95/138/25 96/733/25 94/141/25 +f 90/143/26 92/133/26 91/140/26 +f 101/145/21 102/736/21 98/146/21 +f 102/148/22 104/737/22 100/149/22 +f 104/151/23 103/738/23 99/152/23 +f 103/154/24 101/739/24 97/155/24 +f 103/154/25 104/737/25 102/157/25 +f 98/159/26 100/149/26 99/156/26 +f 109/161/21 110/740/21 106/162/21 +f 110/164/22 112/741/22 108/165/22 +f 112/167/23 111/742/23 107/168/23 +f 111/170/24 109/743/24 105/171/24 +f 111/170/25 112/741/25 110/173/25 +f 106/175/26 108/165/26 107/172/26 +f 117/177/21 118/744/21 114/178/21 +f 118/180/22 120/745/22 116/181/22 +f 120/183/23 119/746/23 115/184/23 +f 119/186/24 117/747/24 113/187/24 +f 119/186/25 120/745/25 118/189/25 +f 114/191/26 116/181/26 115/188/26 +f 54/193/26 53/748/26 56/194/26 +f 49/196/21 50/749/21 55/197/21 +f 51/199/23 52/750/23 53/200/23 +f 51/202/25 50/751/25 49/203/25 +f 126/205/26 125/752/26 128/206/26 +f 121/208/21 122/753/21 127/209/21 +f 123/211/23 124/754/23 125/212/23 +f 123/214/25 122/755/25 121/215/25 +f 134/217/26 133/756/26 136/218/26 +f 129/220/21 130/757/21 135/221/21 +f 131/223/23 132/758/23 133/224/23 +f 131/226/25 130/759/25 129/227/25 +f 142/229/26 141/760/26 144/230/26 +f 137/232/21 138/761/21 143/233/21 +f 139/235/23 140/762/23 141/236/23 +f 139/238/25 138/763/25 137/239/25 +f 146/241/26 148/764/26 147/242/26 +f 148/244/24 152/765/24 151/245/24 +f 145/247/22 149/766/22 150/248/22 +f 149/250/25 151/767/25 152/251/25 +f 154/253/26 156/768/26 155/254/26 +f 156/256/24 160/769/24 159/257/24 +f 153/259/22 157/770/22 158/260/22 +f 157/262/25 159/771/25 160/263/25 +f 162/265/26 164/772/26 163/266/26 +f 164/268/24 168/773/24 167/269/24 +f 161/271/22 165/774/22 166/272/22 +f 165/274/25 167/775/25 168/275/25 +f 170/277/26 172/776/26 171/278/26 +f 172/280/24 176/777/24 175/281/24 +f 169/283/22 173/778/22 174/284/22 +f 173/286/25 175/779/25 176/287/25 +f 178/289/23 180/780/23 179/290/23 +f 180/292/24 184/781/24 183/293/24 +f 177/295/22 181/782/22 182/296/22 +f 181/298/21 183/783/21 184/299/21 +f 186/301/23 188/784/23 187/302/23 +f 188/304/24 192/785/24 191/305/24 +f 185/307/22 189/786/22 190/308/22 +f 189/310/21 191/787/21 192/311/21 +f 194/313/23 196/788/23 195/314/23 +f 196/316/24 200/789/24 199/317/24 +f 193/319/22 197/790/22 198/320/22 +f 197/322/21 199/791/21 200/323/21 +f 202/325/23 204/792/23 203/326/23 +f 204/328/24 208/793/24 207/329/24 +f 201/331/22 205/794/22 206/332/22 +f 205/334/21 207/795/21 208/335/21 +f 244/337/22 251/796/22 212/338/22 +f 240/340/22 349/342/22 244/337/22 +f 240/340/22 238/343/22 342/341/22 +f 238/343/22 236/345/22 335/344/22 +f 236/345/22 234/347/22 328/346/22 +f 234/347/22 232/349/22 321/348/22 +f 232/349/22 230/352/22 314/350/22 +f 307/351/22 314/350/22 230/352/22 +f 300/354/22 307/351/22 228/353/22 +f 293/356/22 300/797/22 226/357/22 +f 286/359/22 293/356/22 224/358/22 +f 279/361/22 286/359/22 222/360/22 +f 218/363/22 272/365/22 279/361/22 +f 216/364/22 265/367/22 272/365/22 +f 214/366/22 258/368/22 265/367/22 +f 212/338/22 251/796/22 258/368/22 +f 357/369/24 358/798/24 352/370/24 +f 368/372/24 358/798/24 357/369/24 +f 252/373/24 259/375/24 365/374/24 +f 259/375/24 266/377/24 362/376/24 +f 266/377/24 273/379/24 241/378/24 +f 273/379/24 280/381/24 247/380/24 +f 280/381/24 287/384/24 255/382/24 +f 268/383/24 255/382/24 287/384/24 +f 276/386/24 268/383/24 294/385/24 +f 289/388/24 276/799/24 301/389/24 +f 297/391/24 289/388/24 308/390/24 +f 310/393/24 297/391/24 315/392/24 +f 329/395/24 318/397/24 310/393/24 +f 336/396/24 331/399/24 318/397/24 +f 343/398/24 339/400/24 331/399/24 +f 350/371/24 352/370/24 339/400/24 +f 233/401/24 383/432/24 382/402/24 +f 231/403/24 382/402/24 381/404/24 +f 229/405/24 381/404/24 380/406/24 +f 227/407/24 380/406/24 379/408/24 +f 225/410/24 379/800/24 378/411/24 +f 223/412/24 378/411/24 377/413/24 +f 221/414/24 377/413/24 376/415/24 +f 217/417/24 219/416/24 376/415/24 +f 375/418/24 374/420/24 215/419/24 +f 374/420/24 373/422/24 213/421/24 +f 373/422/24 372/801/24 211/423/24 +f 211/423/24 372/801/24 371/424/24 +f 239/426/24 209/425/24 371/424/24 +f 239/426/24 386/427/24 385/428/24 +f 237/429/24 385/428/24 384/430/24 +f 235/431/24 384/430/24 383/432/24 +f 274/433/22 267/436/22 390/434/22 +f 267/436/22 260/438/22 389/437/22 +f 260/438/22 253/441/22 388/439/22 +f 387/440/22 388/439/22 253/441/22 +f 402/443/22 387/440/22 359/442/22 +f 351/444/22 344/446/22 401/445/22 +f 344/446/22 337/448/22 400/447/22 +f 337/448/22 330/450/22 399/449/22 +f 330/450/22 323/452/22 398/451/22 +f 323/452/22 316/455/22 397/453/22 +f 396/454/22 397/453/22 316/455/22 +f 302/457/22 395/802/22 396/454/22 +f 295/458/22 394/462/22 395/459/22 +f 288/461/22 393/464/22 394/462/22 +f 281/463/22 392/465/22 393/464/22 +f 274/433/22 391/435/22 392/465/22 +f 404/466/21 406/470/21 405/467/21 +f 404/466/26 409/803/26 410/469/26 +f 405/467/25 407/804/25 408/471/25 +f 406/470/24 410/805/24 407/472/24 +f 403/468/22 408/806/22 409/473/22 +f 439/474/21 451/807/21 450/475/21 +f 438/476/21 450/475/21 449/477/21 +f 435/479/21 437/808/21 449/480/21 +f 435/479/21 447/481/21 448/482/21 +f 446/484/21 436/809/21 448/485/21 +f 446/484/21 458/486/21 457/487/21 +f 444/489/21 445/810/21 457/490/21 +f 444/489/21 456/491/21 455/492/21 +f 442/494/21 443/811/21 455/495/21 +f 442/494/21 454/496/21 453/497/21 +f 441/499/21 453/812/21 452/500/21 +f 440/501/21 452/500/21 451/502/21 +f 460/504/21 462/813/21 461/505/21 +f 464/507/21 466/814/21 465/508/21 +f 468/510/21 470/815/21 469/511/21 +f 472/513/21 474/816/21 473/514/21 +f 489/516/21 490/532/21 487/517/21 +f 481/519/21 482/523/21 479/520/21 +f 477/522/24 479/520/24 482/523/24 +f 476/525/22 481/519/22 480/521/22 +f 478/527/26 482/523/26 481/519/26 +f 475/529/25 480/521/25 479/520/25 +f 485/531/24 487/517/24 490/532/24 +f 484/534/22 489/516/22 488/518/22 +f 486/536/26 490/532/26 489/516/26 +f 483/538/25 488/518/25 487/517/25 +f 492/540/24 494/543/24 493/541/24 +f 494/543/25 498/817/25 497/544/25 +f 491/545/26 495/548/26 496/546/26 +f 495/548/22 497/818/22 498/549/22 +f 500/550/24 502/553/24 501/551/24 +f 502/553/25 506/819/25 505/554/25 +f 499/555/26 503/558/26 504/556/26 +f 503/558/22 505/820/22 506/559/22 +f 508/560/24 510/563/24 509/561/24 +f 510/563/25 514/821/25 513/564/25 +f 507/565/26 511/568/26 512/566/26 +f 511/568/22 513/822/22 514/569/22 +f 516/570/24 518/573/24 517/571/24 +f 518/573/25 522/823/25 521/574/25 +f 515/575/26 519/578/26 520/576/26 +f 519/578/22 521/824/22 522/579/22 +f 524/580/24 526/583/24 525/581/24 +f 526/583/21 530/825/21 529/584/21 +f 523/585/23 527/588/23 528/586/23 +f 527/588/22 529/826/22 530/589/22 +f 532/590/24 534/593/24 533/591/24 +f 534/593/21 538/827/21 537/594/21 +f 531/595/23 535/598/23 536/596/23 +f 535/598/22 537/828/22 538/599/22 +f 540/600/24 542/603/24 541/601/24 +f 542/603/21 546/829/21 545/604/21 +f 539/605/23 543/608/23 544/606/23 +f 543/608/22 545/830/22 546/609/22 +f 548/610/24 550/613/24 549/611/24 +f 550/613/21 554/831/21 553/614/21 +f 547/615/23 551/618/23 552/616/23 +f 551/618/22 553/832/22 554/619/22 +f 556/620/23 558/624/23 557/621/23 +f 556/620/26 561/833/26 562/623/26 +f 557/621/25 559/834/25 560/625/25 +f 558/624/22 562/835/22 559/626/22 +f 555/622/24 560/836/24 561/627/24 +f 591/628/23 603/837/23 602/629/23 +f 590/630/23 602/629/23 601/631/23 +f 587/633/23 589/838/23 601/634/23 +f 588/636/23 587/633/23 599/635/23 +f 598/638/23 588/839/23 600/639/23 +f 597/641/23 598/638/23 610/640/23 +f 596/643/23 597/840/23 609/644/23 +f 595/646/23 596/643/23 608/645/23 +f 595/648/23 607/841/23 606/649/23 +f 594/650/23 606/649/23 605/651/23 +f 592/653/23 593/842/23 605/654/23 +f 592/653/23 604/655/23 603/656/23 +f 612/658/23 614/843/23 613/659/23 +f 616/661/23 618/844/23 617/662/23 +f 620/664/23 622/845/23 621/665/23 +f 624/667/23 626/846/23 625/668/23 +f 641/670/23 642/686/23 639/671/23 +f 633/673/23 634/677/23 631/674/23 +f 629/676/22 631/674/22 634/677/22 +f 628/679/24 633/673/24 632/675/24 +f 630/681/26 634/677/26 633/673/26 +f 627/683/25 632/675/25 631/674/25 +f 637/685/22 639/671/22 642/686/22 +f 636/688/24 641/670/24 640/672/24 +f 638/690/26 642/686/26 641/670/26 +f 635/692/25 640/672/25 639/671/25 +f 704/694/25 706/699/25 705/695/25 +f 708/697/22 709/847/22 704/694/22 +f 709/698/21 710/848/21 706/699/21 +f 707/700/23 708/849/23 703/696/23 +f 710/701/24 707/850/24 705/695/24 +f 713/704/24 712/851/24 711/852/24 +f 711/852/24 718/853/24 717/702/24 +f 717/702/24 716/854/24 715/703/24 +f 715/703/24 714/855/24 713/704/24 +f 713/704/24 711/852/24 717/702/24 +f 729/707/22 728/856/22 727/857/22 +f 727/857/22 734/858/22 729/707/22 +f 734/858/22 733/859/22 729/707/22 +f 733/859/22 732/860/22 729/707/22 +f 732/860/22 731/705/22 729/707/22 +f 744/708/26 746/713/26 745/709/26 +f 748/711/24 749/861/24 744/708/24 +f 749/712/21 750/862/21 746/713/21 +f 747/714/23 748/863/23 743/710/23 +f 750/715/22 747/864/22 745/709/22 +s 1 +f 210/339/25 211/423/27 209/425/25 +f 212/338/27 213/421/28 211/423/27 +f 214/366/28 215/419/29 213/421/28 +f 216/364/29 217/417/21 215/419/29 +f 218/363/21 219/416/30 217/417/21 +f 220/362/30 221/414/31 219/416/30 +f 222/360/31 223/412/32 221/414/31 +f 224/358/32 225/410/26 223/412/32 +f 226/355/26 227/407/33 225/409/26 +f 228/353/33 229/405/34 227/407/33 +f 230/352/34 231/403/35 229/405/34 +f 232/349/35 233/401/23 231/403/35 +f 234/347/23 235/431/36 233/401/23 +f 236/345/36 237/429/37 235/431/36 +f 238/343/37 239/426/38 237/429/37 +f 240/340/38 209/425/25 239/426/38 +f 244/337/39 250/865/40 251/796/41 +f 354/866/42 353/867/22 249/868/43 +f 310/393/44 303/869/45 297/391/46 +f 325/870/47 369/871/24 317/872/48 +f 354/866/42 250/865/40 243/873/49 +f 324/874/50 310/393/44 318/397/51 +f 325/870/47 311/875/52 324/874/50 +f 338/876/53 369/877/24 325/878/47 +f 249/879/43 257/880/54 250/865/40 +f 332/881/55 318/397/51 331/399/56 +f 251/796/41 257/880/54 258/368/57 +f 249/879/43 353/882/22 256/883/58 +f 332/881/55 325/878/47 324/874/50 +f 346/884/59 369/885/24 338/886/53 +f 256/887/58 264/888/60 257/880/54 +f 345/889/61 331/399/56 339/400/62 +f 258/368/57 264/888/60 265/367/63 +f 256/887/58 353/890/22 263/891/64 +f 345/889/61 338/886/53 332/881/55 +f 263/892/64 271/893/65 264/888/60 +f 356/894/66 369/895/24 346/896/59 +f 265/367/63 271/893/65 272/365/67 +f 263/892/64 353/897/22 270/898/68 +f 355/899/69 339/400/62 352/370/70 +f 271/893/65 277/900/71 278/901/72 +f 356/894/66 345/889/61 355/899/69 +f 272/365/67 278/901/72 279/361/73 +f 270/902/68 353/903/22 277/900/71 +f 370/904/74 355/899/69 246/905/75 +f 370/904/74 369/906/24 356/907/66 +f 246/905/75 352/370/70 358/798/76 +f 279/361/73 285/908/77 286/359/78 +f 277/909/71 353/910/22 284/911/79 +f 252/373/27 359/442/25 253/441/27 +f 259/375/28 253/441/27 260/438/28 +f 278/901/72 284/911/79 285/908/77 +f 266/377/29 260/438/28 267/436/29 +f 285/908/77 293/356/80 286/359/78 +f 284/912/79 353/913/22 291/914/81 +f 273/379/21 267/436/29 274/433/21 +f 280/381/30 274/433/21 281/463/30 +f 284/912/79 292/915/82 285/908/77 +f 287/384/31 281/463/30 288/461/31 +f 293/356/80 299/916/83 300/797/84 +f 291/917/81 353/918/22 298/919/85 +f 294/385/32 288/461/31 295/458/32 +f 301/387/26 295/458/32 302/460/26 +f 291/917/81 299/916/83 292/915/82 +f 308/390/33 302/457/26 309/456/33 +f 299/920/83 307/351/86 300/354/84 +f 298/921/85 353/922/22 305/923/87 +f 315/392/34 309/456/33 316/455/34 +f 322/394/35 316/455/34 323/452/35 +f 298/921/85 306/924/88 299/920/83 +f 306/924/88 314/350/89 307/351/86 +f 305/925/87 353/926/22 312/927/90 +f 329/395/23 323/452/35 330/450/23 +f 336/396/36 330/450/23 337/448/36 +f 305/925/87 313/928/91 306/924/88 +f 343/398/37 337/448/36 344/446/37 +f 312/929/90 353/930/22 319/931/92 +f 350/371/38 344/446/37 351/444/38 +f 357/369/25 351/444/38 359/442/25 +f 312/929/90 320/932/93 313/928/91 +f 314/350/89 320/932/93 321/348/94 +f 319/933/92 327/934/95 320/932/93 +f 320/932/93 328/346/96 321/348/94 +f 319/933/92 353/935/22 326/936/97 +f 327/934/95 333/937/98 334/938/99 +f 327/934/95 335/344/100 328/346/96 +f 326/939/97 353/940/22 333/937/98 +f 333/941/98 341/942/101 334/938/99 +f 334/938/99 342/341/102 335/344/100 +f 333/941/98 353/943/22 340/944/103 +f 341/942/101 347/945/104 348/946/105 +f 341/942/101 349/342/106 342/341/102 +f 340/947/103 353/948/22 347/945/104 +f 347/949/104 243/873/49 348/946/105 +f 348/946/105 244/337/39 349/342/106 +f 347/949/104 353/950/22 354/951/42 +f 317/952/48 369/953/24 304/954/107 +f 317/952/48 303/869/45 311/875/52 +f 297/391/46 290/955/108 289/388/109 +f 304/956/107 369/957/24 296/958/110 +f 304/956/107 290/955/108 303/869/45 +f 289/388/109 282/959/111 276/799/112 +f 296/960/110 369/961/24 283/962/113 +f 290/955/108 283/962/113 282/959/111 +f 282/963/111 268/383/114 276/386/112 +f 283/964/113 369/965/24 275/966/115 +f 282/963/111 275/966/115 269/967/116 +f 269/967/116 255/382/117 268/383/114 +f 275/968/115 369/969/24 262/970/118 +f 269/967/116 262/970/118 261/971/119 +f 262/972/118 369/973/24 254/974/120 +f 261/971/119 254/974/120 248/975/121 +f 261/971/119 247/380/122 255/382/117 +f 254/976/120 242/977/123 248/975/121 +f 248/975/121 241/378/124 247/380/122 +f 254/976/120 369/978/24 245/979/125 +f 245/980/125 361/981/126 242/977/123 +f 242/977/123 362/376/127 241/378/124 +f 245/980/125 369/982/24 360/983/128 +f 361/981/126 363/984/129 364/985/130 +f 361/981/126 365/374/131 362/376/127 +f 360/986/128 369/987/24 363/984/129 +f 363/988/129 367/989/132 364/985/130 +f 364/985/130 368/372/133 365/374/131 +f 363/988/129 369/990/24 366/991/134 +f 367/989/132 370/992/74 246/905/75 +f 367/989/132 358/798/76 368/372/133 +f 366/993/134 369/994/24 370/992/74 +f 384/430/36 399/449/23 383/432/23 +f 377/413/31 392/465/30 376/415/30 +f 385/428/37 400/447/36 384/430/36 +f 378/411/32 393/464/31 377/413/31 +f 386/427/38 401/445/37 385/428/37 +f 379/800/26 394/462/32 378/411/32 +f 372/801/27 387/440/25 371/424/25 +f 371/424/25 402/443/38 386/427/38 +f 380/406/33 395/802/26 379/408/26 +f 373/422/28 388/439/27 372/801/27 +f 381/404/34 396/454/33 380/406/33 +f 374/420/29 389/437/28 373/422/28 +f 382/402/35 397/453/34 381/404/34 +f 375/418/21 390/434/29 374/420/29 +f 383/432/23 398/451/35 382/402/35 +f 376/415/30 391/435/21 375/418/21 +f 420/995/26 443/493/135 419/996/135 +f 434/997/136 448/485/22 423/998/22 +f 413/999/137 435/479/138 412/1000/138 +f 427/1001/139 452/500/140 428/1002/140 +f 421/1003/139 444/489/26 420/995/26 +f 414/1004/25 437/478/137 413/1005/137 +f 428/1002/140 453/812/24 429/1006/24 +f 422/1007/140 445/488/139 421/1008/139 +f 415/1009/141 438/476/25 414/1004/25 +f 429/1010/24 454/496/138 430/1011/138 +f 411/1012/24 446/484/140 422/1007/140 +f 416/1013/136 439/503/141 415/1014/141 +f 430/1011/138 455/495/137 431/1015/137 +f 423/1016/22 447/481/142 424/1017/142 +f 417/1018/22 440/501/136 416/1013/136 +f 431/1019/137 456/491/25 432/1020/25 +f 424/1017/142 449/480/135 425/1021/135 +f 418/1022/142 441/498/22 417/1023/22 +f 432/1020/25 457/490/141 433/1024/141 +f 425/1025/135 450/475/26 426/1026/26 +f 419/1027/135 442/494/142 418/1022/142 +f 433/1028/141 458/486/136 434/997/136 +f 412/1000/138 436/483/24 411/1029/24 +f 426/1026/26 451/807/139 427/1030/139 +f 572/1031/26 595/646/139 571/1032/139 +f 586/1033/138 600/639/24 575/1034/24 +f 565/1035/141 587/633/136 564/1036/136 +f 579/1037/135 604/655/142 580/1038/142 +f 573/1039/135 596/643/26 572/1031/26 +f 566/1040/25 589/632/141 565/1041/141 +f 580/1038/142 605/654/22 581/1042/22 +f 574/1043/142 597/641/135 573/1044/135 +f 567/1045/137 590/630/25 566/1040/25 +f 581/1046/22 606/649/136 582/1047/136 +f 563/1048/22 598/638/142 574/1043/142 +f 568/1049/138 591/657/137 567/1050/137 +f 582/1047/136 607/841/141 583/1051/141 +f 575/1052/24 599/635/140 576/1053/140 +f 569/1054/24 592/653/138 568/1049/138 +f 583/1055/141 608/645/25 584/1056/25 +f 576/1053/140 601/634/139 577/1057/139 +f 570/1058/140 593/652/24 569/1059/24 +f 584/1056/25 609/644/137 585/1060/137 +f 577/1061/139 602/629/26 578/1062/26 +f 571/1063/139 594/650/140 570/1058/140 +f 585/1064/137 610/640/138 586/1033/138 +f 564/1036/136 588/636/22 563/1065/22 +f 578/1062/26 603/837/135 579/1066/135 +f 650/1067/143 657/1068/144 649/1069/21 +f 648/1070/145 655/1071/146 647/1072/22 +f 646/1073/147 653/1074/34 645/1075/23 +f 644/1076/148 651/1077/149 643/1078/24 +f 643/1078/24 658/1079/150 650/1067/143 +f 649/1069/21 656/1080/151 648/1070/145 +f 647/1072/22 654/1081/152 646/1073/147 +f 645/1082/23 652/1083/153 644/1076/148 +f 651/1084/149 660/1085/154 659/1086/155 +f 658/1079/150 659/1086/155 665/1087/156 +f 656/1080/151 664/1088/28 663/1089/157 +f 655/1090/146 661/1091/158 654/1092/152 +f 658/1079/150 664/1088/28 657/1068/144 +f 656/1080/151 662/1093/159 655/1090/146 +f 665/1087/156 671/1094/160 664/1088/28 +f 662/1093/159 670/1095/161 669/1096/162 +f 659/1086/155 667/1097/163 666/1098/164 +f 659/1086/155 672/1099/165 665/1087/156 +f 664/1088/28 670/1095/161 663/1089/157 +f 662/1093/159 668/1100/166 661/1091/158 +f 654/1092/152 661/1091/158 653/1101/34 +f 661/1091/158 668/1100/166 653/1101/34 +f 652/1102/153 653/1103/34 660/1085/154 +f 660/1085/154 653/1103/34 667/1097/163 +f 680/1104/147 687/1105/167 679/1106/23 +f 678/1107/148 685/1108/168 677/1109/24 +f 676/1110/143 683/1111/31 675/1112/21 +f 674/1113/145 681/1114/169 673/1115/22 +f 673/1115/22 688/1116/170 680/1104/147 +f 679/1106/23 686/1117/171 678/1107/148 +f 677/1109/24 684/1118/172 676/1110/143 +f 675/1119/21 682/1120/173 674/1113/145 +f 682/1121/173 689/1122/174 681/1123/169 +f 688/1116/170 689/1122/174 695/1124/175 +f 686/1117/171 694/1125/37 693/1126/176 +f 684/1127/172 692/1128/177 691/1129/178 +f 688/1116/170 694/1125/37 687/1105/167 +f 685/1130/168 693/1126/176 692/1128/177 +f 695/1124/175 701/1131/179 694/1125/37 +f 692/1128/177 700/1132/180 699/1133/181 +f 689/1122/174 697/1134/182 696/1135/183 +f 689/1122/174 702/1136/184 695/1124/175 +f 693/1126/176 701/1131/179 700/1132/180 +f 691/1129/178 699/1133/181 698/1137/185 +f 684/1127/172 691/1129/178 683/1138/31 +f 691/1129/178 698/1137/185 683/1138/31 +f 682/1121/173 683/1139/31 690/1140/186 +f 690/1140/186 683/1139/31 697/1134/182 +f 702/1136/184 669/1141/162 670/1095/161 +f 671/1094/160 702/1136/184 670/1095/161 +f 700/1132/180 671/1094/160 672/1099/165 +f 699/1142/181 672/1099/165 666/1143/164 +f 698/1144/185 666/1143/164 667/1145/163 +f 653/1146/34 698/1144/185 667/1145/163 +f 653/1147/34 697/1148/182 683/1149/31 +f 696/1150/183 668/1151/166 669/1141/162 +f 712/1152/37 720/1153/25 711/1154/25 +f 718/1155/28 720/1153/25 726/1156/28 +f 716/1157/31 725/1158/21 724/1159/31 +f 715/1160/26 722/1161/34 714/1162/34 +f 713/1163/23 719/1164/37 712/1152/37 +f 717/1165/21 726/1156/28 725/1158/21 +f 716/1157/31 723/1166/26 715/1167/26 +f 714/1162/34 721/1168/23 713/1163/23 +f 728/1169/28 736/1170/25 727/1171/25 +f 727/1171/25 742/1172/37 734/1173/37 +f 732/1174/34 741/1175/23 740/1176/34 +f 731/1177/26 738/1178/31 730/1179/31 +f 729/1180/21 735/1181/28 728/1169/28 +f 733/1182/23 742/1172/37 741/1175/23 +f 732/1174/34 739/1183/26 731/1184/26 +f 730/1179/31 737/1185/21 729/1180/21 +f 758/1186/143 765/1187/144 757/1188/21 +f 756/1189/145 763/1190/146 755/1191/22 +f 754/1192/147 761/1193/34 753/1194/23 +f 752/1195/148 759/1196/149 751/1197/24 +f 751/1197/24 766/1198/150 758/1186/143 +f 757/1188/21 764/1199/151 756/1189/145 +f 755/1191/22 762/1200/152 754/1192/147 +f 753/1201/23 760/1202/153 752/1195/148 +f 759/1203/149 768/1204/154 767/1205/155 +f 766/1198/150 767/1205/155 773/1206/156 +f 764/1199/151 772/1207/28 771/1208/157 +f 763/1209/146 769/1210/158 762/1211/152 +f 766/1198/150 772/1207/28 765/1187/144 +f 764/1199/151 770/1212/159 763/1209/146 +f 773/1206/156 779/1213/160 772/1207/28 +f 770/1212/159 778/1214/161 777/1215/162 +f 767/1205/155 775/1216/163 774/1217/164 +f 767/1205/155 780/1218/165 773/1206/156 +f 771/1208/157 779/1213/160 778/1214/161 +f 770/1212/159 776/1219/166 769/1210/158 +f 762/1211/152 769/1210/158 761/1220/34 +f 769/1210/158 776/1219/166 761/1220/34 +f 760/1221/153 761/1222/34 768/1204/154 +f 768/1204/154 761/1222/34 775/1216/163 +f 788/1223/147 795/1224/167 787/1225/23 +f 786/1226/148 793/1227/168 785/1228/24 +f 784/1229/143 791/1230/31 783/1231/21 +f 782/1232/145 789/1233/169 781/1234/22 +f 781/1234/22 796/1235/170 788/1223/147 +f 787/1225/23 794/1236/171 786/1226/148 +f 785/1228/24 792/1237/172 784/1229/143 +f 783/1238/21 790/1239/173 782/1232/145 +f 790/1240/173 797/1241/174 789/1242/169 +f 789/1242/169 803/1243/175 796/1235/170 +f 794/1236/171 802/1244/37 801/1245/176 +f 792/1246/172 800/1247/177 799/1248/178 +f 796/1235/170 802/1244/37 795/1224/167 +f 793/1249/168 801/1245/176 800/1247/177 +f 803/1243/175 809/1250/179 802/1244/37 +f 800/1247/177 808/1251/180 807/1252/181 +f 797/1241/174 805/1253/182 804/1254/183 +f 797/1241/174 810/1255/184 803/1243/175 +f 801/1245/176 809/1250/179 808/1251/180 +f 800/1247/177 806/1256/185 799/1248/178 +f 792/1246/172 799/1248/178 791/1257/31 +f 799/1248/178 806/1256/185 791/1257/31 +f 790/1240/173 791/1258/31 798/1259/186 +f 798/1259/186 791/1258/31 805/1253/182 +f 810/1255/184 777/1260/162 778/1214/161 +f 779/1213/160 810/1255/184 778/1214/161 +f 808/1251/180 779/1213/160 780/1218/165 +f 807/1261/181 780/1218/165 774/1262/164 +f 806/1263/185 774/1262/164 775/1264/163 +f 761/1265/34 806/1263/185 775/1264/163 +f 761/1266/34 805/1267/182 791/1268/31 +f 804/1269/183 776/1270/166 777/1260/162 +f 818/1271/143 825/1272/144 817/1273/21 +f 816/1274/145 823/1275/146 815/1276/22 +f 814/1277/147 821/1278/34 813/1279/23 +f 812/1280/148 819/1281/149 811/1282/24 +f 811/1282/24 826/1283/150 818/1271/143 +f 817/1273/21 824/1284/151 816/1274/145 +f 815/1276/22 822/1285/152 814/1277/147 +f 813/1286/23 820/1287/153 812/1280/148 +f 819/1288/149 828/1289/154 827/1290/155 +f 826/1283/150 827/1290/155 833/1291/156 +f 824/1284/151 832/1292/28 831/1293/157 +f 823/1294/146 829/1295/158 822/1296/152 +f 825/1272/144 833/1291/156 832/1292/28 +f 824/1284/151 830/1297/159 823/1294/146 +f 833/1291/156 839/1298/160 832/1292/28 +f 830/1297/159 838/1299/161 837/1300/162 +f 828/1289/154 834/1301/164 827/1290/155 +f 827/1290/155 840/1302/165 833/1291/156 +f 831/1293/157 839/1298/160 838/1299/161 +f 829/1295/158 837/1300/162 836/1303/166 +f 822/1296/152 829/1295/158 821/1304/34 +f 829/1295/158 836/1303/166 821/1304/34 +f 820/1305/153 821/1306/34 828/1289/154 +f 828/1289/154 821/1306/34 835/1307/163 +f 848/1308/147 855/1309/167 847/1310/23 +f 846/1311/148 853/1312/168 845/1313/24 +f 844/1314/143 851/1315/31 843/1316/21 +f 842/1317/145 849/1318/169 841/1319/22 +f 841/1319/22 856/1320/170 848/1308/147 +f 847/1310/23 854/1321/171 846/1311/148 +f 845/1313/24 852/1322/172 844/1314/143 +f 843/1323/21 850/1324/173 842/1317/145 +f 850/1325/173 857/1326/174 849/1327/169 +f 849/1327/169 863/1328/175 856/1320/170 +f 854/1321/171 862/1329/37 861/1330/176 +f 852/1331/172 860/1332/177 859/1333/178 +f 856/1320/170 862/1329/37 855/1309/167 +f 853/1334/168 861/1330/176 860/1332/177 +f 863/1328/175 869/1335/179 862/1329/37 +f 860/1332/177 868/1336/180 867/1337/181 +f 858/1338/186 864/1339/183 857/1326/174 +f 857/1326/174 870/1340/184 863/1328/175 +f 861/1330/176 869/1335/179 868/1336/180 +f 859/1333/178 867/1337/181 866/1341/185 +f 852/1331/172 859/1333/178 851/1342/31 +f 859/1333/178 866/1341/185 851/1342/31 +f 850/1325/173 851/1343/31 858/1338/186 +f 858/1338/186 851/1343/31 865/1344/182 +f 870/1340/184 837/1345/162 838/1299/161 +f 839/1298/160 870/1340/184 838/1299/161 +f 868/1336/180 839/1298/160 840/1302/165 +f 867/1346/181 840/1302/165 834/1347/164 +f 866/1348/185 834/1347/164 835/1349/163 +f 851/1350/31 835/1349/163 821/1351/34 +f 821/1352/34 865/1353/182 851/1354/31 +f 864/1355/183 836/1356/166 837/1345/162 +f 878/1357/143 885/1358/144 877/1359/21 +f 876/1360/145 883/1361/146 875/1362/22 +f 874/1363/147 881/1364/34 873/1365/23 +f 872/1366/148 879/1367/149 871/1368/24 +f 871/1368/24 886/1369/150 878/1357/143 +f 877/1359/21 884/1370/151 876/1360/145 +f 875/1362/22 882/1371/152 874/1363/147 +f 873/1372/23 880/1373/153 872/1366/148 +f 879/1374/149 888/1375/154 887/1376/155 +f 886/1369/150 887/1376/155 893/1377/156 +f 885/1358/144 891/1378/157 884/1370/151 +f 883/1379/146 889/1380/158 882/1381/152 +f 886/1369/150 892/1382/28 885/1358/144 +f 884/1370/151 890/1383/159 883/1379/146 +f 893/1377/156 899/1384/160 892/1382/28 +f 890/1383/159 898/1385/161 897/1386/162 +f 888/1375/154 894/1387/164 887/1376/155 +f 887/1376/155 900/1388/165 893/1377/156 +f 891/1378/157 899/1384/160 898/1385/161 +f 889/1380/158 897/1386/162 896/1389/166 +f 882/1381/152 889/1380/158 881/1390/34 +f 889/1380/158 896/1389/166 881/1390/34 +f 880/1391/153 881/1392/34 888/1375/154 +f 888/1375/154 881/1392/34 895/1393/163 +f 908/1394/147 915/1395/167 907/1396/23 +f 906/1397/148 913/1398/168 905/1399/24 +f 904/1400/143 911/1401/31 903/1402/21 +f 902/1403/145 909/1404/169 901/1405/22 +f 901/1405/22 916/1406/170 908/1394/147 +f 907/1396/23 914/1407/171 906/1397/148 +f 905/1399/24 912/1408/172 904/1400/143 +f 903/1409/21 910/1410/173 902/1403/145 +f 910/1411/173 917/1412/174 909/1413/169 +f 909/1413/169 923/1414/175 916/1406/170 +f 914/1407/171 922/1415/37 921/1416/176 +f 912/1417/172 920/1418/177 919/1419/178 +f 916/1406/170 922/1415/37 915/1395/167 +f 913/1420/168 921/1416/176 920/1418/177 +f 923/1414/175 929/1421/179 922/1415/37 +f 920/1418/177 928/1422/180 927/1423/181 +f 918/1424/186 924/1425/183 917/1412/174 +f 917/1412/174 930/1426/184 923/1414/175 +f 921/1416/176 929/1421/179 928/1422/180 +f 920/1418/177 926/1427/185 919/1419/178 +f 912/1417/172 919/1419/178 911/1428/31 +f 919/1419/178 926/1427/185 911/1428/31 +f 910/1411/173 911/1429/31 918/1424/186 +f 918/1424/186 911/1429/31 925/1430/182 +f 930/1426/184 897/1431/162 898/1385/161 +f 899/1384/160 930/1426/184 898/1385/161 +f 928/1422/180 899/1384/160 900/1388/165 +f 927/1432/181 900/1388/165 894/1433/164 +f 926/1434/185 894/1433/164 895/1435/163 +f 881/1436/34 926/1434/185 895/1435/163 +f 896/1437/166 911/1438/31 881/1439/34 +f 924/1440/183 896/1437/166 897/1431/162 +f 938/1441/143 945/1442/144 937/1443/21 +f 936/1444/145 943/1445/146 935/1446/22 +f 934/1447/147 941/1448/34 933/1449/23 +f 932/1450/148 939/1451/149 931/1452/24 +f 931/1452/24 946/1453/150 938/1441/143 +f 937/1443/21 944/1454/151 936/1444/145 +f 935/1446/22 942/1455/152 934/1447/147 +f 933/1456/23 940/1457/153 932/1450/148 +f 939/1458/149 948/1459/154 947/1460/155 +f 946/1453/150 947/1460/155 953/1461/156 +f 944/1454/151 952/1462/28 951/1463/157 +f 943/1464/146 949/1465/158 942/1466/152 +f 946/1453/150 952/1462/28 945/1442/144 +f 944/1454/151 950/1467/159 943/1464/146 +f 953/1461/156 959/1468/160 952/1462/28 +f 950/1467/159 958/1469/161 957/1470/162 +f 947/1460/155 955/1471/163 954/1472/164 +f 947/1460/155 960/1473/165 953/1461/156 +f 951/1463/157 959/1468/160 958/1469/161 +f 950/1467/159 956/1474/166 949/1465/158 +f 942/1466/152 949/1465/158 941/1475/34 +f 949/1465/158 956/1474/166 941/1475/34 +f 940/1476/153 941/1477/34 948/1459/154 +f 948/1459/154 941/1477/34 955/1471/163 +f 968/1478/147 975/1479/167 967/1480/23 +f 966/1481/148 973/1482/168 965/1483/24 +f 964/1484/143 971/1485/31 963/1486/21 +f 962/1487/145 969/1488/169 961/1489/22 +f 961/1489/22 976/1490/170 968/1478/147 +f 967/1480/23 974/1491/171 966/1481/148 +f 965/1483/24 972/1492/172 964/1484/143 +f 963/1493/21 970/1494/173 962/1487/145 +f 970/1495/173 977/1496/174 969/1497/169 +f 969/1497/169 983/1498/175 976/1490/170 +f 974/1491/171 982/1499/37 981/1500/176 +f 972/1501/172 980/1502/177 979/1503/178 +f 976/1490/170 982/1499/37 975/1479/167 +f 973/1504/168 981/1500/176 980/1502/177 +f 983/1498/175 989/1505/179 982/1499/37 +f 980/1502/177 988/1506/180 987/1507/181 +f 977/1496/174 985/1508/182 984/1509/183 +f 977/1496/174 990/1510/184 983/1498/175 +f 981/1500/176 989/1505/179 988/1506/180 +f 980/1502/177 986/1511/185 979/1503/178 +f 972/1501/172 979/1503/178 971/1512/31 +f 979/1503/178 986/1511/185 971/1512/31 +f 970/1495/173 971/1513/31 978/1514/186 +f 978/1514/186 971/1513/31 985/1508/182 +f 990/1510/184 957/1515/162 958/1469/161 +f 959/1468/160 990/1510/184 958/1469/161 +f 988/1506/180 959/1468/160 960/1473/165 +f 987/1516/181 960/1473/165 954/1517/164 +f 986/1518/185 954/1517/164 955/1519/163 +f 971/1520/31 955/1519/163 941/1521/34 +f 941/1522/34 985/1523/182 971/1524/31 +f 984/1525/183 956/1526/166 957/1515/162 +f 998/1527/145 1005/1528/187 997/1529/21 +f 996/1530/143 1003/1531/188 995/1532/24 +f 994/1533/148 1001/1534/37 993/1535/23 +f 992/1536/147 999/1537/189 991/1538/22 +f 991/1538/22 1006/1539/190 998/1527/145 +f 997/1529/21 1004/1540/191 996/1530/143 +f 995/1532/24 1002/1541/192 994/1533/148 +f 993/1542/23 1000/1543/193 992/1536/147 +f 999/1544/189 1008/1545/194 1007/1546/195 +f 1006/1539/190 1007/1546/195 1013/1547/196 +f 1004/1540/191 1012/1548/31 1011/1549/197 +f 1003/1550/188 1009/1551/198 1002/1552/192 +f 1006/1539/190 1012/1548/31 1005/1528/187 +f 1004/1540/191 1010/1553/199 1003/1550/188 +f 1013/1547/196 1019/1554/200 1012/1548/31 +f 1010/1553/199 1018/1555/201 1017/1556/202 +f 1008/1545/194 1014/1557/203 1007/1546/195 +f 1007/1546/195 1020/1558/204 1013/1547/196 +f 1011/1549/197 1019/1554/200 1018/1555/201 +f 1009/1551/198 1017/1556/202 1016/1559/205 +f 1002/1552/192 1009/1551/198 1001/1560/37 +f 1009/1551/198 1016/1559/205 1001/1560/37 +f 1000/1561/193 1001/1562/37 1008/1545/194 +f 1008/1545/194 1001/1562/37 1015/1563/206 +f 1028/1564/148 1035/1565/207 1027/1566/23 +f 1026/1567/147 1033/1568/208 1025/1569/22 +f 1023/1570/21 1032/1571/209 1031/1572/28 +f 1022/1573/143 1029/1574/210 1021/1575/24 +f 1021/1575/24 1036/1576/211 1028/1564/148 +f 1027/1566/23 1034/1577/212 1026/1567/147 +f 1025/1569/22 1032/1571/209 1024/1578/145 +f 1023/1579/21 1030/1580/213 1022/1573/143 +f 1030/1581/213 1037/1582/214 1029/1583/210 +f 1029/1583/210 1043/1584/215 1036/1576/211 +f 1034/1577/212 1042/1585/34 1041/1586/216 +f 1032/1587/209 1040/1588/217 1039/1589/218 +f 1036/1576/211 1042/1585/34 1035/1565/207 +f 1033/1590/208 1041/1586/216 1040/1588/217 +f 1043/1584/215 1049/1591/219 1042/1585/34 +f 1040/1588/217 1048/1592/220 1047/1593/221 +f 1038/1594/222 1044/1595/223 1037/1582/214 +f 1037/1582/214 1050/1596/224 1043/1584/215 +f 1041/1586/216 1049/1591/219 1048/1592/220 +f 1039/1589/218 1047/1593/221 1046/1597/225 +f 1032/1587/209 1039/1589/218 1031/1598/28 +f 1039/1589/218 1046/1597/225 1031/1598/28 +f 1030/1581/213 1031/1599/28 1038/1594/222 +f 1038/1594/222 1031/1599/28 1045/1600/226 +f 1050/1596/224 1017/1601/202 1018/1555/201 +f 1049/1591/219 1018/1555/201 1019/1554/200 +f 1048/1592/220 1019/1554/200 1020/1558/204 +f 1047/1602/221 1020/1558/204 1014/1603/203 +f 1046/1604/225 1014/1603/203 1015/1605/206 +f 1001/1606/37 1046/1604/225 1015/1605/206 +f 1016/1607/205 1031/1608/28 1001/1609/37 +f 1044/1610/223 1016/1607/205 1017/1601/202 +f 1058/1611/145 1065/1612/187 1057/1613/21 +f 1056/1614/143 1063/1615/188 1055/1616/24 +f 1054/1617/148 1061/1618/37 1053/1619/23 +f 1052/1620/147 1059/1621/189 1051/1622/22 +f 1051/1622/22 1066/1623/190 1058/1611/145 +f 1057/1613/21 1064/1624/191 1056/1614/143 +f 1055/1616/24 1062/1625/192 1054/1617/148 +f 1053/1626/23 1060/1627/193 1052/1620/147 +f 1059/1628/189 1068/1629/194 1067/1630/195 +f 1066/1623/190 1067/1630/195 1073/1631/196 +f 1064/1624/191 1072/1632/31 1071/1633/197 +f 1063/1634/188 1069/1635/198 1062/1636/192 +f 1066/1623/190 1072/1632/31 1065/1612/187 +f 1064/1624/191 1070/1637/199 1063/1634/188 +f 1073/1631/196 1079/1638/200 1072/1632/31 +f 1071/1633/197 1077/1639/202 1070/1637/199 +f 1068/1629/194 1074/1640/203 1067/1630/195 +f 1067/1630/195 1080/1641/204 1073/1631/196 +f 1071/1633/197 1079/1638/200 1078/1642/201 +f 1069/1635/198 1077/1639/202 1076/1643/205 +f 1062/1636/192 1069/1635/198 1061/1644/37 +f 1069/1635/198 1076/1643/205 1061/1644/37 +f 1060/1645/193 1061/1646/37 1068/1629/194 +f 1068/1629/194 1061/1646/37 1075/1647/206 +f 1088/1648/148 1095/1649/207 1087/1650/23 +f 1086/1651/147 1093/1652/208 1085/1653/22 +f 1084/1654/145 1091/1655/28 1083/1656/21 +f 1082/1657/143 1089/1658/210 1081/1659/24 +f 1081/1659/24 1096/1660/211 1088/1648/148 +f 1087/1650/23 1094/1661/212 1086/1651/147 +f 1085/1653/22 1092/1662/209 1084/1654/145 +f 1083/1663/21 1090/1664/213 1082/1657/143 +f 1090/1665/213 1097/1666/214 1089/1667/210 +f 1089/1667/210 1103/1668/215 1096/1660/211 +f 1094/1661/212 1102/1669/34 1101/1670/216 +f 1092/1671/209 1100/1672/217 1099/1673/218 +f 1096/1660/211 1102/1669/34 1095/1649/207 +f 1093/1674/208 1101/1670/216 1100/1672/217 +f 1103/1668/215 1109/1675/219 1102/1669/34 +f 1100/1672/217 1108/1676/220 1107/1677/221 +f 1098/1678/222 1104/1679/223 1097/1666/214 +f 1103/1668/215 1104/1679/223 1110/1680/224 +f 1101/1670/216 1109/1675/219 1108/1676/220 +f 1100/1672/217 1106/1681/225 1099/1673/218 +f 1092/1671/209 1099/1673/218 1091/1682/28 +f 1099/1673/218 1106/1681/225 1091/1682/28 +f 1090/1665/213 1091/1683/28 1098/1678/222 +f 1098/1678/222 1091/1683/28 1105/1684/226 +f 1110/1680/224 1077/1685/202 1078/1642/201 +f 1079/1638/200 1110/1680/224 1078/1642/201 +f 1108/1676/220 1079/1638/200 1080/1641/204 +f 1107/1686/221 1080/1641/204 1074/1687/203 +f 1106/1688/225 1074/1687/203 1075/1689/206 +f 1061/1690/37 1106/1688/225 1075/1689/206 +f 1061/1691/37 1105/1692/226 1091/1693/28 +f 1104/1694/223 1076/1695/205 1077/1685/202 +f 1118/1696/145 1125/1697/187 1117/1698/21 +f 1116/1699/143 1123/1700/188 1115/1701/24 +f 1114/1702/148 1121/1703/37 1113/1704/23 +f 1112/1705/147 1119/1706/189 1111/1707/22 +f 1111/1707/22 1126/1708/190 1118/1696/145 +f 1117/1698/21 1124/1709/191 1116/1699/143 +f 1115/1701/24 1122/1710/192 1114/1702/148 +f 1113/1711/23 1120/1712/193 1112/1705/147 +f 1119/1713/189 1128/1714/194 1127/1715/195 +f 1126/1708/190 1127/1715/195 1133/1716/196 +f 1124/1709/191 1132/1717/31 1131/1718/197 +f 1123/1719/188 1129/1720/198 1122/1721/192 +f 1126/1708/190 1132/1717/31 1125/1697/187 +f 1124/1709/191 1130/1722/199 1123/1719/188 +f 1133/1716/196 1139/1723/200 1132/1717/31 +f 1131/1718/197 1137/1724/202 1130/1722/199 +f 1128/1714/194 1134/1725/203 1127/1715/195 +f 1127/1715/195 1140/1726/204 1133/1716/196 +f 1131/1718/197 1139/1723/200 1138/1727/201 +f 1129/1720/198 1137/1724/202 1136/1728/205 +f 1122/1721/192 1129/1720/198 1121/1729/37 +f 1129/1720/198 1136/1728/205 1121/1729/37 +f 1120/1730/193 1121/1731/37 1128/1714/194 +f 1128/1714/194 1121/1731/37 1135/1732/206 +f 1148/1733/148 1155/1734/207 1147/1735/23 +f 1146/1736/147 1153/1737/208 1145/1738/22 +f 1144/1739/145 1151/1740/28 1143/1741/21 +f 1142/1742/143 1149/1743/210 1141/1744/24 +f 1141/1744/24 1156/1745/211 1148/1733/148 +f 1147/1735/23 1154/1746/212 1146/1736/147 +f 1145/1738/22 1152/1747/209 1144/1739/145 +f 1143/1748/21 1150/1749/213 1142/1742/143 +f 1150/1750/213 1157/1751/214 1149/1752/210 +f 1149/1752/210 1163/1753/215 1156/1745/211 +f 1154/1746/212 1162/1754/34 1161/1755/216 +f 1152/1756/209 1160/1757/217 1159/1758/218 +f 1156/1745/211 1162/1754/34 1155/1734/207 +f 1153/1759/208 1161/1755/216 1160/1757/217 +f 1163/1753/215 1169/1760/219 1162/1754/34 +f 1160/1757/217 1168/1761/220 1167/1762/221 +f 1158/1763/222 1164/1764/223 1157/1751/214 +f 1157/1751/214 1170/1765/224 1163/1753/215 +f 1161/1755/216 1169/1760/219 1168/1761/220 +f 1159/1758/218 1167/1762/221 1166/1766/225 +f 1152/1756/209 1159/1758/218 1151/1767/28 +f 1159/1758/218 1166/1766/225 1151/1767/28 +f 1150/1750/213 1151/1768/28 1158/1763/222 +f 1158/1763/222 1151/1768/28 1165/1769/226 +f 1170/1765/224 1137/1770/202 1138/1727/201 +f 1169/1760/219 1138/1727/201 1139/1723/200 +f 1168/1761/220 1139/1723/200 1140/1726/204 +f 1167/1771/221 1140/1726/204 1134/1772/203 +f 1166/1773/225 1134/1772/203 1135/1774/206 +f 1151/1775/28 1135/1774/206 1121/1776/37 +f 1121/1777/37 1165/1778/226 1151/1779/28 +f 1164/1780/223 1136/1781/205 1137/1770/202 +f 1178/1782/145 1185/1783/187 1177/1784/21 +f 1176/1785/143 1183/1786/188 1175/1787/24 +f 1174/1788/148 1181/1789/37 1173/1790/23 +f 1172/1791/147 1179/1792/189 1171/1793/22 +f 1171/1793/22 1186/1794/190 1178/1782/145 +f 1177/1784/21 1184/1795/191 1176/1785/143 +f 1175/1787/24 1182/1796/192 1174/1788/148 +f 1173/1797/23 1180/1798/193 1172/1791/147 +f 1179/1799/189 1188/1800/194 1187/1801/195 +f 1186/1794/190 1187/1801/195 1193/1802/196 +f 1184/1795/191 1192/1803/31 1191/1804/197 +f 1183/1805/188 1189/1806/198 1182/1807/192 +f 1186/1794/190 1192/1803/31 1185/1783/187 +f 1184/1795/191 1190/1808/199 1183/1805/188 +f 1193/1802/196 1199/1809/200 1192/1803/31 +f 1190/1808/199 1198/1810/201 1197/1811/202 +f 1188/1800/194 1194/1812/203 1187/1801/195 +f 1187/1801/195 1200/1813/204 1193/1802/196 +f 1191/1804/197 1199/1809/200 1198/1810/201 +f 1189/1806/198 1197/1811/202 1196/1814/205 +f 1182/1807/192 1189/1806/198 1181/1815/37 +f 1189/1806/198 1196/1814/205 1181/1815/37 +f 1180/1816/193 1181/1817/37 1188/1800/194 +f 1188/1800/194 1181/1817/37 1195/1818/206 +f 1208/1819/148 1215/1820/207 1207/1821/23 +f 1206/1822/147 1213/1823/208 1205/1824/22 +f 1203/1825/21 1212/1826/209 1211/1827/28 +f 1202/1828/143 1209/1829/210 1201/1830/24 +f 1201/1830/24 1216/1831/211 1208/1819/148 +f 1207/1821/23 1214/1832/212 1206/1822/147 +f 1204/1833/145 1213/1823/208 1212/1826/209 +f 1203/1834/21 1210/1835/213 1202/1828/143 +f 1210/1836/213 1217/1837/214 1209/1838/210 +f 1209/1838/210 1223/1839/215 1216/1831/211 +f 1214/1832/212 1222/1840/34 1221/1841/216 +f 1212/1842/209 1220/1843/217 1219/1844/218 +f 1216/1831/211 1222/1840/34 1215/1820/207 +f 1213/1845/208 1221/1841/216 1220/1843/217 +f 1223/1839/215 1229/1846/219 1222/1840/34 +f 1220/1843/217 1228/1847/220 1227/1848/221 +f 1217/1837/214 1225/1849/226 1224/1850/223 +f 1217/1837/214 1230/1851/224 1223/1839/215 +f 1221/1841/216 1229/1846/219 1228/1847/220 +f 1220/1843/217 1226/1852/225 1219/1844/218 +f 1212/1842/209 1219/1844/218 1211/1853/28 +f 1219/1844/218 1226/1852/225 1211/1853/28 +f 1210/1836/213 1211/1854/28 1218/1855/222 +f 1218/1855/222 1211/1854/28 1225/1849/226 +f 1230/1851/224 1197/1856/202 1198/1810/201 +f 1199/1809/200 1230/1851/224 1198/1810/201 +f 1228/1847/220 1199/1809/200 1200/1813/204 +f 1227/1857/221 1200/1813/204 1194/1858/203 +f 1226/1859/225 1194/1858/203 1195/1860/206 +f 1181/1861/37 1226/1859/225 1195/1860/206 +f 1196/1862/205 1211/1863/28 1181/1864/37 +f 1224/1865/223 1196/1862/205 1197/1856/202 +f 1238/1866/145 1245/1867/187 1237/1868/21 +f 1236/1869/143 1243/1870/188 1235/1871/24 +f 1234/1872/148 1241/1873/37 1233/1874/23 +f 1232/1875/147 1239/1876/189 1231/1877/22 +f 1231/1877/22 1246/1878/190 1238/1866/145 +f 1237/1868/21 1244/1879/191 1236/1869/143 +f 1235/1871/24 1242/1880/192 1234/1872/148 +f 1233/1881/23 1240/1882/193 1232/1875/147 +f 1239/1883/189 1248/1884/194 1247/1885/195 +f 1246/1878/190 1247/1885/195 1253/1886/196 +f 1244/1879/191 1252/1887/31 1251/1888/197 +f 1243/1889/188 1249/1890/198 1242/1891/192 +f 1246/1878/190 1252/1887/31 1245/1867/187 +f 1244/1879/191 1250/1892/199 1243/1889/188 +f 1253/1886/196 1259/1893/200 1252/1887/31 +f 1250/1892/199 1258/1894/201 1257/1895/202 +f 1248/1884/194 1254/1896/203 1247/1885/195 +f 1247/1885/195 1260/1897/204 1253/1886/196 +f 1251/1888/197 1259/1893/200 1258/1894/201 +f 1249/1890/198 1257/1895/202 1256/1898/205 +f 1242/1891/192 1249/1890/198 1241/1899/37 +f 1249/1890/198 1256/1898/205 1241/1899/37 +f 1240/1900/193 1241/1901/37 1248/1884/194 +f 1248/1884/194 1241/1901/37 1255/1902/206 +f 1268/1903/148 1275/1904/207 1267/1905/23 +f 1266/1906/147 1273/1907/208 1265/1908/22 +f 1264/1909/145 1271/1910/28 1263/1911/21 +f 1262/1912/143 1269/1913/210 1261/1914/24 +f 1261/1914/24 1276/1915/211 1268/1903/148 +f 1267/1905/23 1274/1916/212 1266/1906/147 +f 1265/1908/22 1272/1917/209 1264/1909/145 +f 1263/1918/21 1270/1919/213 1262/1912/143 +f 1270/1920/213 1277/1921/214 1269/1922/210 +f 1269/1922/210 1283/1923/215 1276/1915/211 +f 1274/1916/212 1282/1924/34 1281/1925/216 +f 1272/1926/209 1280/1927/217 1279/1928/218 +f 1276/1915/211 1282/1924/34 1275/1904/207 +f 1273/1929/208 1281/1925/216 1280/1927/217 +f 1283/1923/215 1289/1930/219 1282/1924/34 +f 1280/1927/217 1288/1931/220 1287/1932/221 +f 1278/1933/222 1284/1934/223 1277/1921/214 +f 1277/1921/214 1290/1935/224 1283/1923/215 +f 1281/1925/216 1289/1930/219 1288/1931/220 +f 1280/1927/217 1286/1936/225 1279/1928/218 +f 1272/1926/209 1279/1928/218 1271/1937/28 +f 1279/1928/218 1286/1936/225 1271/1937/28 +f 1270/1920/213 1271/1938/28 1278/1933/222 +f 1278/1933/222 1271/1938/28 1285/1939/226 +f 1290/1935/224 1257/1940/202 1258/1894/201 +f 1289/1930/219 1258/1894/201 1259/1893/200 +f 1288/1931/220 1259/1893/200 1260/1897/204 +f 1287/1941/221 1260/1897/204 1254/1942/203 +f 1286/1943/225 1254/1942/203 1255/1944/206 +f 1241/1945/37 1286/1943/225 1255/1944/206 +f 1241/1946/37 1285/1947/226 1271/1948/28 +f 1284/1949/223 1256/1950/205 1257/1940/202 +f 210/339/25 212/338/27 211/423/27 +f 212/338/27 214/366/28 213/421/28 +f 214/366/28 216/364/29 215/419/29 +f 216/364/29 218/363/21 217/417/21 +f 218/363/21 220/362/30 219/416/30 +f 220/362/30 222/360/31 221/414/31 +f 222/360/31 224/358/32 223/412/32 +f 224/358/32 226/357/26 225/410/26 +f 226/355/26 228/353/33 227/407/33 +f 228/353/33 230/352/34 229/405/34 +f 230/352/34 232/349/35 231/403/35 +f 232/349/35 234/347/23 233/401/23 +f 234/347/23 236/345/36 235/431/36 +f 236/345/36 238/343/37 237/429/37 +f 238/343/37 240/340/38 239/426/38 +f 240/340/38 210/339/25 209/425/25 +f 244/337/39 243/873/49 250/865/40 +f 310/393/44 311/875/52 303/869/45 +f 354/866/42 249/868/43 250/865/40 +f 324/874/50 311/875/52 310/393/44 +f 325/870/47 317/872/48 311/875/52 +f 249/879/43 256/883/58 257/880/54 +f 332/881/55 324/874/50 318/397/51 +f 251/796/41 250/865/40 257/880/54 +f 332/881/55 338/876/53 325/878/47 +f 256/887/58 263/891/64 264/888/60 +f 345/889/61 332/881/55 331/399/56 +f 258/368/57 257/880/54 264/888/60 +f 345/889/61 346/884/59 338/886/53 +f 263/892/64 270/898/68 271/893/65 +f 265/367/63 264/888/60 271/893/65 +f 355/899/69 345/889/61 339/400/62 +f 271/893/65 270/902/68 277/900/71 +f 356/894/66 346/896/59 345/889/61 +f 272/365/67 271/893/65 278/901/72 +f 370/904/74 356/907/66 355/899/69 +f 246/905/75 355/899/69 352/370/70 +f 279/361/73 278/901/72 285/908/77 +f 252/373/27 357/369/25 359/442/25 +f 259/375/28 252/373/27 253/441/27 +f 278/901/72 277/909/71 284/911/79 +f 266/377/29 259/375/28 260/438/28 +f 285/908/77 292/915/82 293/356/80 +f 273/379/21 266/377/29 267/436/29 +f 280/381/30 273/379/21 274/433/21 +f 284/912/79 291/914/81 292/915/82 +f 287/384/31 280/381/30 281/463/30 +f 293/356/80 292/915/82 299/916/83 +f 294/385/32 287/384/31 288/461/31 +f 301/387/26 294/385/32 295/458/32 +f 291/917/81 298/919/85 299/916/83 +f 308/390/33 301/389/26 302/457/26 +f 299/920/83 306/924/88 307/351/86 +f 315/392/34 308/390/33 309/456/33 +f 322/394/35 315/392/34 316/455/34 +f 298/921/85 305/923/87 306/924/88 +f 306/924/88 313/928/91 314/350/89 +f 329/395/23 322/394/35 323/452/35 +f 336/396/36 329/395/23 330/450/23 +f 305/925/87 312/927/90 313/928/91 +f 343/398/37 336/396/36 337/448/36 +f 350/371/38 343/398/37 344/446/37 +f 357/369/25 350/371/38 351/444/38 +f 312/929/90 319/931/92 320/932/93 +f 314/350/89 313/928/91 320/932/93 +f 319/933/92 326/936/97 327/934/95 +f 320/932/93 327/934/95 328/346/96 +f 327/934/95 326/939/97 333/937/98 +f 327/934/95 334/938/99 335/344/100 +f 333/941/98 340/944/103 341/942/101 +f 334/938/99 341/942/101 342/341/102 +f 341/942/101 340/947/103 347/945/104 +f 341/942/101 348/946/105 349/342/106 +f 347/949/104 354/951/42 243/873/49 +f 348/946/105 243/873/49 244/337/39 +f 317/952/48 304/954/107 303/869/45 +f 297/391/46 303/869/45 290/955/108 +f 304/956/107 296/958/110 290/955/108 +f 289/388/109 290/955/108 282/959/111 +f 290/955/108 296/960/110 283/962/113 +f 282/963/111 269/967/116 268/383/114 +f 282/963/111 283/964/113 275/966/115 +f 269/967/116 261/971/119 255/382/117 +f 269/967/116 275/968/115 262/970/118 +f 261/971/119 262/972/118 254/974/120 +f 261/971/119 248/975/121 247/380/122 +f 254/976/120 245/979/125 242/977/123 +f 248/975/121 242/977/123 241/378/124 +f 245/980/125 360/983/128 361/981/126 +f 242/977/123 361/981/126 362/376/127 +f 361/981/126 360/986/128 363/984/129 +f 361/981/126 364/985/130 365/374/131 +f 363/988/129 366/991/134 367/989/132 +f 364/985/130 367/989/132 368/372/133 +f 367/989/132 366/993/134 370/992/74 +f 367/989/132 246/905/75 358/798/76 +f 384/430/36 400/447/36 399/449/23 +f 377/413/31 393/464/31 392/465/30 +f 385/428/37 401/445/37 400/447/36 +f 378/411/32 394/462/32 393/464/31 +f 386/427/38 402/443/38 401/445/37 +f 379/800/26 395/459/26 394/462/32 +f 372/801/27 388/439/27 387/440/25 +f 371/424/25 387/440/25 402/443/38 +f 380/406/33 396/454/33 395/802/26 +f 373/422/28 389/437/28 388/439/27 +f 381/404/34 397/453/34 396/454/33 +f 374/420/29 390/434/29 389/437/28 +f 382/402/35 398/451/35 397/453/34 +f 375/418/21 391/435/21 390/434/29 +f 383/432/23 399/449/23 398/451/35 +f 376/415/30 392/465/30 391/435/21 +f 420/995/26 444/489/26 443/493/135 +f 434/997/136 458/486/136 448/485/22 +f 413/999/137 437/808/137 435/479/138 +f 427/1001/139 451/502/139 452/500/140 +f 421/1003/139 445/810/139 444/489/26 +f 414/1004/25 438/476/25 437/478/137 +f 428/1002/140 452/500/140 453/812/24 +f 422/1007/140 446/484/140 445/488/139 +f 415/1009/141 439/474/141 438/476/25 +f 429/1010/24 453/497/24 454/496/138 +f 411/1012/24 436/809/24 446/484/140 +f 416/1013/136 440/501/136 439/503/141 +f 430/1011/138 454/496/138 455/495/137 +f 423/1016/22 448/482/22 447/481/142 +f 417/1018/22 441/499/22 440/501/136 +f 431/1019/137 455/492/137 456/491/25 +f 424/1017/142 447/481/142 449/480/135 +f 418/1022/142 442/494/142 441/498/22 +f 432/1020/25 456/491/25 457/490/141 +f 425/1025/135 449/477/135 450/475/26 +f 419/1027/135 443/811/135 442/494/142 +f 433/1028/141 457/487/141 458/486/136 +f 412/1000/138 435/479/138 436/483/24 +f 426/1026/26 450/475/26 451/807/139 +f 572/1031/26 596/643/26 595/646/139 +f 586/1033/138 610/640/138 600/639/24 +f 565/1035/141 589/838/141 587/633/136 +f 579/1037/135 603/656/135 604/655/142 +f 573/1039/135 597/840/135 596/643/26 +f 566/1040/25 590/630/25 589/632/141 +f 580/1038/142 604/655/142 605/654/22 +f 574/1043/142 598/638/142 597/641/135 +f 567/1045/137 591/628/137 590/630/25 +f 581/1046/22 605/651/22 606/649/136 +f 563/1048/22 588/839/22 598/638/142 +f 568/1049/138 592/653/138 591/657/137 +f 582/1047/136 606/649/136 607/841/141 +f 575/1052/24 600/637/24 599/635/140 +f 569/1054/24 593/842/24 592/653/138 +f 583/1055/141 607/647/141 608/645/25 +f 576/1053/140 599/635/140 601/634/139 +f 570/1058/140 594/650/140 593/652/24 +f 584/1056/25 608/645/25 609/644/137 +f 577/1061/139 601/631/139 602/629/26 +f 571/1063/139 595/648/139 594/650/140 +f 585/1064/137 609/642/137 610/640/138 +f 564/1036/136 587/633/136 588/636/22 +f 578/1062/26 602/629/26 603/837/135 +f 650/1067/143 658/1079/150 657/1068/144 +f 648/1070/145 656/1080/151 655/1071/146 +f 646/1073/147 654/1081/152 653/1074/34 +f 644/1076/148 652/1083/153 651/1077/149 +f 643/1078/24 651/1077/149 658/1079/150 +f 649/1069/21 657/1068/144 656/1080/151 +f 647/1072/22 655/1071/146 654/1081/152 +f 645/1082/23 653/1951/34 652/1083/153 +f 651/1084/149 652/1102/153 660/1085/154 +f 658/1079/150 651/1084/149 659/1086/155 +f 656/1080/151 657/1068/144 664/1088/28 +f 655/1090/146 662/1093/159 661/1091/158 +f 658/1079/150 665/1087/156 664/1088/28 +f 656/1080/151 663/1089/157 662/1093/159 +f 665/1087/156 672/1099/165 671/1094/160 +f 662/1093/159 663/1089/157 670/1095/161 +f 659/1086/155 660/1085/154 667/1097/163 +f 659/1086/155 666/1098/164 672/1099/165 +f 664/1088/28 671/1094/160 670/1095/161 +f 662/1093/159 669/1096/162 668/1100/166 +f 680/1104/147 688/1116/170 687/1105/167 +f 678/1107/148 686/1117/171 685/1108/168 +f 676/1110/143 684/1118/172 683/1111/31 +f 674/1113/145 682/1120/173 681/1114/169 +f 673/1115/22 681/1114/169 688/1116/170 +f 679/1106/23 687/1105/167 686/1117/171 +f 677/1109/24 685/1108/168 684/1118/172 +f 675/1119/21 683/1952/31 682/1120/173 +f 682/1121/173 690/1140/186 689/1122/174 +f 688/1116/170 681/1123/169 689/1122/174 +f 686/1117/171 687/1105/167 694/1125/37 +f 684/1127/172 685/1130/168 692/1128/177 +f 688/1116/170 695/1124/175 694/1125/37 +f 685/1130/168 686/1117/171 693/1126/176 +f 695/1124/175 702/1136/184 701/1131/179 +f 692/1128/177 693/1126/176 700/1132/180 +f 689/1122/174 690/1140/186 697/1134/182 +f 689/1122/174 696/1135/183 702/1136/184 +f 693/1126/176 694/1125/37 701/1131/179 +f 691/1129/178 692/1128/177 699/1133/181 +f 702/1136/184 696/1150/183 669/1141/162 +f 671/1094/160 701/1131/179 702/1136/184 +f 700/1132/180 701/1131/179 671/1094/160 +f 699/1142/181 700/1132/180 672/1099/165 +f 698/1144/185 699/1142/181 666/1143/164 +f 653/1146/34 683/1953/31 698/1144/185 +f 653/1147/34 668/1151/166 697/1148/182 +f 696/1150/183 697/1148/182 668/1151/166 +f 712/1152/37 719/1164/37 720/1153/25 +f 718/1155/28 711/1154/25 720/1153/25 +f 716/1157/31 717/1165/21 725/1158/21 +f 715/1160/26 723/1954/26 722/1161/34 +f 713/1163/23 721/1168/23 719/1164/37 +f 717/1165/21 718/1155/28 726/1156/28 +f 716/1157/31 724/1159/31 723/1166/26 +f 714/1162/34 722/1161/34 721/1168/23 +f 728/1169/28 735/1181/28 736/1170/25 +f 727/1171/25 736/1170/25 742/1172/37 +f 732/1174/34 733/1182/23 741/1175/23 +f 731/1177/26 739/1955/26 738/1178/31 +f 729/1180/21 737/1185/21 735/1181/28 +f 733/1182/23 734/1173/37 742/1172/37 +f 732/1174/34 740/1176/34 739/1183/26 +f 730/1179/31 738/1178/31 737/1185/21 +f 758/1186/143 766/1198/150 765/1187/144 +f 756/1189/145 764/1199/151 763/1190/146 +f 754/1192/147 762/1200/152 761/1193/34 +f 752/1195/148 760/1202/153 759/1196/149 +f 751/1197/24 759/1196/149 766/1198/150 +f 757/1188/21 765/1187/144 764/1199/151 +f 755/1191/22 763/1190/146 762/1200/152 +f 753/1201/23 761/1956/34 760/1202/153 +f 759/1203/149 760/1221/153 768/1204/154 +f 766/1198/150 759/1203/149 767/1205/155 +f 764/1199/151 765/1187/144 772/1207/28 +f 763/1209/146 770/1212/159 769/1210/158 +f 766/1198/150 773/1206/156 772/1207/28 +f 764/1199/151 771/1208/157 770/1212/159 +f 773/1206/156 780/1218/165 779/1213/160 +f 770/1212/159 771/1208/157 778/1214/161 +f 767/1205/155 768/1204/154 775/1216/163 +f 767/1205/155 774/1217/164 780/1218/165 +f 771/1208/157 772/1207/28 779/1213/160 +f 770/1212/159 777/1215/162 776/1219/166 +f 788/1223/147 796/1235/170 795/1224/167 +f 786/1226/148 794/1236/171 793/1227/168 +f 784/1229/143 792/1237/172 791/1230/31 +f 782/1232/145 790/1239/173 789/1233/169 +f 781/1234/22 789/1233/169 796/1235/170 +f 787/1225/23 795/1224/167 794/1236/171 +f 785/1228/24 793/1227/168 792/1237/172 +f 783/1238/21 791/1957/31 790/1239/173 +f 790/1240/173 798/1259/186 797/1241/174 +f 789/1242/169 797/1241/174 803/1243/175 +f 794/1236/171 795/1224/167 802/1244/37 +f 792/1246/172 793/1249/168 800/1247/177 +f 796/1235/170 803/1243/175 802/1244/37 +f 793/1249/168 794/1236/171 801/1245/176 +f 803/1243/175 810/1255/184 809/1250/179 +f 800/1247/177 801/1245/176 808/1251/180 +f 797/1241/174 798/1259/186 805/1253/182 +f 797/1241/174 804/1254/183 810/1255/184 +f 801/1245/176 802/1244/37 809/1250/179 +f 800/1247/177 807/1252/181 806/1256/185 +f 810/1255/184 804/1269/183 777/1260/162 +f 779/1213/160 809/1250/179 810/1255/184 +f 808/1251/180 809/1250/179 779/1213/160 +f 807/1261/181 808/1251/180 780/1218/165 +f 806/1263/185 807/1261/181 774/1262/164 +f 761/1265/34 791/1958/31 806/1263/185 +f 761/1266/34 776/1270/166 805/1267/182 +f 804/1269/183 805/1267/182 776/1270/166 +f 818/1271/143 826/1283/150 825/1272/144 +f 816/1274/145 824/1284/151 823/1275/146 +f 814/1277/147 822/1285/152 821/1278/34 +f 812/1280/148 820/1287/153 819/1281/149 +f 811/1282/24 819/1281/149 826/1283/150 +f 817/1273/21 825/1272/144 824/1284/151 +f 815/1276/22 823/1275/146 822/1285/152 +f 813/1286/23 821/1959/34 820/1287/153 +f 819/1288/149 820/1305/153 828/1289/154 +f 826/1283/150 819/1288/149 827/1290/155 +f 824/1284/151 825/1272/144 832/1292/28 +f 823/1294/146 830/1297/159 829/1295/158 +f 825/1272/144 826/1283/150 833/1291/156 +f 824/1284/151 831/1293/157 830/1297/159 +f 833/1291/156 840/1302/165 839/1298/160 +f 830/1297/159 831/1293/157 838/1299/161 +f 828/1289/154 835/1307/163 834/1301/164 +f 827/1290/155 834/1301/164 840/1302/165 +f 831/1293/157 832/1292/28 839/1298/160 +f 829/1295/158 830/1297/159 837/1300/162 +f 848/1308/147 856/1320/170 855/1309/167 +f 846/1311/148 854/1321/171 853/1312/168 +f 844/1314/143 852/1322/172 851/1315/31 +f 842/1317/145 850/1324/173 849/1318/169 +f 841/1319/22 849/1318/169 856/1320/170 +f 847/1310/23 855/1309/167 854/1321/171 +f 845/1313/24 853/1312/168 852/1322/172 +f 843/1323/21 851/1960/31 850/1324/173 +f 850/1325/173 858/1338/186 857/1326/174 +f 849/1327/169 857/1326/174 863/1328/175 +f 854/1321/171 855/1309/167 862/1329/37 +f 852/1331/172 853/1334/168 860/1332/177 +f 856/1320/170 863/1328/175 862/1329/37 +f 853/1334/168 854/1321/171 861/1330/176 +f 863/1328/175 870/1340/184 869/1335/179 +f 860/1332/177 861/1330/176 868/1336/180 +f 858/1338/186 865/1344/182 864/1339/183 +f 857/1326/174 864/1339/183 870/1340/184 +f 861/1330/176 862/1329/37 869/1335/179 +f 859/1333/178 860/1332/177 867/1337/181 +f 870/1340/184 864/1355/183 837/1345/162 +f 839/1298/160 869/1335/179 870/1340/184 +f 868/1336/180 869/1335/179 839/1298/160 +f 867/1346/181 868/1336/180 840/1302/165 +f 866/1348/185 867/1346/181 834/1347/164 +f 851/1350/31 866/1348/185 835/1349/163 +f 821/1352/34 836/1356/166 865/1353/182 +f 864/1355/183 865/1353/182 836/1356/166 +f 878/1357/143 886/1369/150 885/1358/144 +f 876/1360/145 884/1370/151 883/1361/146 +f 874/1363/147 882/1371/152 881/1364/34 +f 872/1366/148 880/1373/153 879/1367/149 +f 871/1368/24 879/1367/149 886/1369/150 +f 877/1359/21 885/1358/144 884/1370/151 +f 875/1362/22 883/1361/146 882/1371/152 +f 873/1372/23 881/1961/34 880/1373/153 +f 879/1374/149 880/1391/153 888/1375/154 +f 886/1369/150 879/1374/149 887/1376/155 +f 885/1358/144 892/1382/28 891/1378/157 +f 883/1379/146 890/1383/159 889/1380/158 +f 886/1369/150 893/1377/156 892/1382/28 +f 884/1370/151 891/1378/157 890/1383/159 +f 893/1377/156 900/1388/165 899/1384/160 +f 890/1383/159 891/1378/157 898/1385/161 +f 888/1375/154 895/1393/163 894/1387/164 +f 887/1376/155 894/1387/164 900/1388/165 +f 891/1378/157 892/1382/28 899/1384/160 +f 889/1380/158 890/1383/159 897/1386/162 +f 908/1394/147 916/1406/170 915/1395/167 +f 906/1397/148 914/1407/171 913/1398/168 +f 904/1400/143 912/1408/172 911/1401/31 +f 902/1403/145 910/1410/173 909/1404/169 +f 901/1405/22 909/1404/169 916/1406/170 +f 907/1396/23 915/1395/167 914/1407/171 +f 905/1399/24 913/1398/168 912/1408/172 +f 903/1409/21 911/1962/31 910/1410/173 +f 910/1411/173 918/1424/186 917/1412/174 +f 909/1413/169 917/1412/174 923/1414/175 +f 914/1407/171 915/1395/167 922/1415/37 +f 912/1417/172 913/1420/168 920/1418/177 +f 916/1406/170 923/1414/175 922/1415/37 +f 913/1420/168 914/1407/171 921/1416/176 +f 923/1414/175 930/1426/184 929/1421/179 +f 920/1418/177 921/1416/176 928/1422/180 +f 918/1424/186 925/1430/182 924/1425/183 +f 917/1412/174 924/1425/183 930/1426/184 +f 921/1416/176 922/1415/37 929/1421/179 +f 920/1418/177 927/1423/181 926/1427/185 +f 930/1426/184 924/1440/183 897/1431/162 +f 899/1384/160 929/1421/179 930/1426/184 +f 928/1422/180 929/1421/179 899/1384/160 +f 927/1432/181 928/1422/180 900/1388/165 +f 926/1434/185 927/1432/181 894/1433/164 +f 881/1436/34 911/1963/31 926/1434/185 +f 896/1437/166 925/1964/182 911/1438/31 +f 924/1440/183 925/1964/182 896/1437/166 +f 938/1441/143 946/1453/150 945/1442/144 +f 936/1444/145 944/1454/151 943/1445/146 +f 934/1447/147 942/1455/152 941/1448/34 +f 932/1450/148 940/1457/153 939/1451/149 +f 931/1452/24 939/1451/149 946/1453/150 +f 937/1443/21 945/1442/144 944/1454/151 +f 935/1446/22 943/1445/146 942/1455/152 +f 933/1456/23 941/1965/34 940/1457/153 +f 939/1458/149 940/1476/153 948/1459/154 +f 946/1453/150 939/1458/149 947/1460/155 +f 944/1454/151 945/1442/144 952/1462/28 +f 943/1464/146 950/1467/159 949/1465/158 +f 946/1453/150 953/1461/156 952/1462/28 +f 944/1454/151 951/1463/157 950/1467/159 +f 953/1461/156 960/1473/165 959/1468/160 +f 950/1467/159 951/1463/157 958/1469/161 +f 947/1460/155 948/1459/154 955/1471/163 +f 947/1460/155 954/1472/164 960/1473/165 +f 951/1463/157 952/1462/28 959/1468/160 +f 950/1467/159 957/1470/162 956/1474/166 +f 968/1478/147 976/1490/170 975/1479/167 +f 966/1481/148 974/1491/171 973/1482/168 +f 964/1484/143 972/1492/172 971/1485/31 +f 962/1487/145 970/1494/173 969/1488/169 +f 961/1489/22 969/1488/169 976/1490/170 +f 967/1480/23 975/1479/167 974/1491/171 +f 965/1483/24 973/1482/168 972/1492/172 +f 963/1493/21 971/1966/31 970/1494/173 +f 970/1495/173 978/1514/186 977/1496/174 +f 969/1497/169 977/1496/174 983/1498/175 +f 974/1491/171 975/1479/167 982/1499/37 +f 972/1501/172 973/1504/168 980/1502/177 +f 976/1490/170 983/1498/175 982/1499/37 +f 973/1504/168 974/1491/171 981/1500/176 +f 983/1498/175 990/1510/184 989/1505/179 +f 980/1502/177 981/1500/176 988/1506/180 +f 977/1496/174 978/1514/186 985/1508/182 +f 977/1496/174 984/1509/183 990/1510/184 +f 981/1500/176 982/1499/37 989/1505/179 +f 980/1502/177 987/1507/181 986/1511/185 +f 990/1510/184 984/1525/183 957/1515/162 +f 959/1468/160 989/1505/179 990/1510/184 +f 988/1506/180 989/1505/179 959/1468/160 +f 987/1516/181 988/1506/180 960/1473/165 +f 986/1518/185 987/1516/181 954/1517/164 +f 971/1520/31 986/1518/185 955/1519/163 +f 941/1522/34 956/1526/166 985/1523/182 +f 984/1525/183 985/1523/182 956/1526/166 +f 998/1527/145 1006/1539/190 1005/1528/187 +f 996/1530/143 1004/1540/191 1003/1531/188 +f 994/1533/148 1002/1541/192 1001/1534/37 +f 992/1536/147 1000/1543/193 999/1537/189 +f 991/1538/22 999/1537/189 1006/1539/190 +f 997/1529/21 1005/1528/187 1004/1540/191 +f 995/1532/24 1003/1531/188 1002/1541/192 +f 993/1542/23 1001/1967/37 1000/1543/193 +f 999/1544/189 1000/1561/193 1008/1545/194 +f 1006/1539/190 999/1544/189 1007/1546/195 +f 1004/1540/191 1005/1528/187 1012/1548/31 +f 1003/1550/188 1010/1553/199 1009/1551/198 +f 1006/1539/190 1013/1547/196 1012/1548/31 +f 1004/1540/191 1011/1549/197 1010/1553/199 +f 1013/1547/196 1020/1558/204 1019/1554/200 +f 1010/1553/199 1011/1549/197 1018/1555/201 +f 1008/1545/194 1015/1563/206 1014/1557/203 +f 1007/1546/195 1014/1557/203 1020/1558/204 +f 1011/1549/197 1012/1548/31 1019/1554/200 +f 1009/1551/198 1010/1553/199 1017/1556/202 +f 1028/1564/148 1036/1576/211 1035/1565/207 +f 1026/1567/147 1034/1577/212 1033/1568/208 +f 1023/1570/21 1024/1578/145 1032/1571/209 +f 1022/1573/143 1030/1580/213 1029/1574/210 +f 1021/1575/24 1029/1574/210 1036/1576/211 +f 1027/1566/23 1035/1565/207 1034/1577/212 +f 1025/1569/22 1033/1568/208 1032/1571/209 +f 1023/1579/21 1031/1968/28 1030/1580/213 +f 1030/1581/213 1038/1594/222 1037/1582/214 +f 1029/1583/210 1037/1582/214 1043/1584/215 +f 1034/1577/212 1035/1565/207 1042/1585/34 +f 1032/1587/209 1033/1590/208 1040/1588/217 +f 1036/1576/211 1043/1584/215 1042/1585/34 +f 1033/1590/208 1034/1577/212 1041/1586/216 +f 1043/1584/215 1050/1596/224 1049/1591/219 +f 1040/1588/217 1041/1586/216 1048/1592/220 +f 1038/1594/222 1045/1600/226 1044/1595/223 +f 1037/1582/214 1044/1595/223 1050/1596/224 +f 1041/1586/216 1042/1585/34 1049/1591/219 +f 1039/1589/218 1040/1588/217 1047/1593/221 +f 1050/1596/224 1044/1610/223 1017/1601/202 +f 1049/1591/219 1050/1596/224 1018/1555/201 +f 1048/1592/220 1049/1591/219 1019/1554/200 +f 1047/1602/221 1048/1592/220 1020/1558/204 +f 1046/1604/225 1047/1602/221 1014/1603/203 +f 1001/1606/37 1031/1969/28 1046/1604/225 +f 1016/1607/205 1045/1970/226 1031/1608/28 +f 1044/1610/223 1045/1970/226 1016/1607/205 +f 1058/1611/145 1066/1623/190 1065/1612/187 +f 1056/1614/143 1064/1624/191 1063/1615/188 +f 1054/1617/148 1062/1625/192 1061/1618/37 +f 1052/1620/147 1060/1627/193 1059/1621/189 +f 1051/1622/22 1059/1621/189 1066/1623/190 +f 1057/1613/21 1065/1612/187 1064/1624/191 +f 1055/1616/24 1063/1615/188 1062/1625/192 +f 1053/1626/23 1061/1971/37 1060/1627/193 +f 1059/1628/189 1060/1645/193 1068/1629/194 +f 1066/1623/190 1059/1628/189 1067/1630/195 +f 1064/1624/191 1065/1612/187 1072/1632/31 +f 1063/1634/188 1070/1637/199 1069/1635/198 +f 1066/1623/190 1073/1631/196 1072/1632/31 +f 1064/1624/191 1071/1633/197 1070/1637/199 +f 1073/1631/196 1080/1641/204 1079/1638/200 +f 1071/1633/197 1078/1642/201 1077/1639/202 +f 1068/1629/194 1075/1647/206 1074/1640/203 +f 1067/1630/195 1074/1640/203 1080/1641/204 +f 1071/1633/197 1072/1632/31 1079/1638/200 +f 1069/1635/198 1070/1637/199 1077/1639/202 +f 1088/1648/148 1096/1660/211 1095/1649/207 +f 1086/1651/147 1094/1661/212 1093/1652/208 +f 1084/1654/145 1092/1662/209 1091/1655/28 +f 1082/1657/143 1090/1664/213 1089/1658/210 +f 1081/1659/24 1089/1658/210 1096/1660/211 +f 1087/1650/23 1095/1649/207 1094/1661/212 +f 1085/1653/22 1093/1652/208 1092/1662/209 +f 1083/1663/21 1091/1972/28 1090/1664/213 +f 1090/1665/213 1098/1678/222 1097/1666/214 +f 1089/1667/210 1097/1666/214 1103/1668/215 +f 1094/1661/212 1095/1649/207 1102/1669/34 +f 1092/1671/209 1093/1674/208 1100/1672/217 +f 1096/1660/211 1103/1668/215 1102/1669/34 +f 1093/1674/208 1094/1661/212 1101/1670/216 +f 1103/1668/215 1110/1680/224 1109/1675/219 +f 1100/1672/217 1101/1670/216 1108/1676/220 +f 1098/1678/222 1105/1684/226 1104/1679/223 +f 1103/1668/215 1097/1666/214 1104/1679/223 +f 1101/1670/216 1102/1669/34 1109/1675/219 +f 1100/1672/217 1107/1677/221 1106/1681/225 +f 1110/1680/224 1104/1694/223 1077/1685/202 +f 1079/1638/200 1109/1675/219 1110/1680/224 +f 1108/1676/220 1109/1675/219 1079/1638/200 +f 1107/1686/221 1108/1676/220 1080/1641/204 +f 1106/1688/225 1107/1686/221 1074/1687/203 +f 1061/1690/37 1091/1973/28 1106/1688/225 +f 1061/1691/37 1076/1695/205 1105/1692/226 +f 1104/1694/223 1105/1692/226 1076/1695/205 +f 1118/1696/145 1126/1708/190 1125/1697/187 +f 1116/1699/143 1124/1709/191 1123/1700/188 +f 1114/1702/148 1122/1710/192 1121/1703/37 +f 1112/1705/147 1120/1712/193 1119/1706/189 +f 1111/1707/22 1119/1706/189 1126/1708/190 +f 1117/1698/21 1125/1697/187 1124/1709/191 +f 1115/1701/24 1123/1700/188 1122/1710/192 +f 1113/1711/23 1121/1974/37 1120/1712/193 +f 1119/1713/189 1120/1730/193 1128/1714/194 +f 1126/1708/190 1119/1713/189 1127/1715/195 +f 1124/1709/191 1125/1697/187 1132/1717/31 +f 1123/1719/188 1130/1722/199 1129/1720/198 +f 1126/1708/190 1133/1716/196 1132/1717/31 +f 1124/1709/191 1131/1718/197 1130/1722/199 +f 1133/1716/196 1140/1726/204 1139/1723/200 +f 1131/1718/197 1138/1727/201 1137/1724/202 +f 1128/1714/194 1135/1732/206 1134/1725/203 +f 1127/1715/195 1134/1725/203 1140/1726/204 +f 1131/1718/197 1132/1717/31 1139/1723/200 +f 1129/1720/198 1130/1722/199 1137/1724/202 +f 1148/1733/148 1156/1745/211 1155/1734/207 +f 1146/1736/147 1154/1746/212 1153/1737/208 +f 1144/1739/145 1152/1747/209 1151/1740/28 +f 1142/1742/143 1150/1749/213 1149/1743/210 +f 1141/1744/24 1149/1743/210 1156/1745/211 +f 1147/1735/23 1155/1734/207 1154/1746/212 +f 1145/1738/22 1153/1737/208 1152/1747/209 +f 1143/1748/21 1151/1975/28 1150/1749/213 +f 1150/1750/213 1158/1763/222 1157/1751/214 +f 1149/1752/210 1157/1751/214 1163/1753/215 +f 1154/1746/212 1155/1734/207 1162/1754/34 +f 1152/1756/209 1153/1759/208 1160/1757/217 +f 1156/1745/211 1163/1753/215 1162/1754/34 +f 1153/1759/208 1154/1746/212 1161/1755/216 +f 1163/1753/215 1170/1765/224 1169/1760/219 +f 1160/1757/217 1161/1755/216 1168/1761/220 +f 1158/1763/222 1165/1769/226 1164/1764/223 +f 1157/1751/214 1164/1764/223 1170/1765/224 +f 1161/1755/216 1162/1754/34 1169/1760/219 +f 1159/1758/218 1160/1757/217 1167/1762/221 +f 1170/1765/224 1164/1780/223 1137/1770/202 +f 1169/1760/219 1170/1765/224 1138/1727/201 +f 1168/1761/220 1169/1760/219 1139/1723/200 +f 1167/1771/221 1168/1761/220 1140/1726/204 +f 1166/1773/225 1167/1771/221 1134/1772/203 +f 1151/1775/28 1166/1773/225 1135/1774/206 +f 1121/1777/37 1136/1781/205 1165/1778/226 +f 1164/1780/223 1165/1778/226 1136/1781/205 +f 1178/1782/145 1186/1794/190 1185/1783/187 +f 1176/1785/143 1184/1795/191 1183/1786/188 +f 1174/1788/148 1182/1796/192 1181/1789/37 +f 1172/1791/147 1180/1798/193 1179/1792/189 +f 1171/1793/22 1179/1792/189 1186/1794/190 +f 1177/1784/21 1185/1783/187 1184/1795/191 +f 1175/1787/24 1183/1786/188 1182/1796/192 +f 1173/1797/23 1181/1976/37 1180/1798/193 +f 1179/1799/189 1180/1816/193 1188/1800/194 +f 1186/1794/190 1179/1799/189 1187/1801/195 +f 1184/1795/191 1185/1783/187 1192/1803/31 +f 1183/1805/188 1190/1808/199 1189/1806/198 +f 1186/1794/190 1193/1802/196 1192/1803/31 +f 1184/1795/191 1191/1804/197 1190/1808/199 +f 1193/1802/196 1200/1813/204 1199/1809/200 +f 1190/1808/199 1191/1804/197 1198/1810/201 +f 1188/1800/194 1195/1818/206 1194/1812/203 +f 1187/1801/195 1194/1812/203 1200/1813/204 +f 1191/1804/197 1192/1803/31 1199/1809/200 +f 1189/1806/198 1190/1808/199 1197/1811/202 +f 1208/1819/148 1216/1831/211 1215/1820/207 +f 1206/1822/147 1214/1832/212 1213/1823/208 +f 1203/1825/21 1204/1833/145 1212/1826/209 +f 1202/1828/143 1210/1835/213 1209/1829/210 +f 1201/1830/24 1209/1829/210 1216/1831/211 +f 1207/1821/23 1215/1820/207 1214/1832/212 +f 1204/1833/145 1205/1824/22 1213/1823/208 +f 1203/1834/21 1211/1977/28 1210/1835/213 +f 1210/1836/213 1218/1855/222 1217/1837/214 +f 1209/1838/210 1217/1837/214 1223/1839/215 +f 1214/1832/212 1215/1820/207 1222/1840/34 +f 1212/1842/209 1213/1845/208 1220/1843/217 +f 1216/1831/211 1223/1839/215 1222/1840/34 +f 1213/1845/208 1214/1832/212 1221/1841/216 +f 1223/1839/215 1230/1851/224 1229/1846/219 +f 1220/1843/217 1221/1841/216 1228/1847/220 +f 1217/1837/214 1218/1855/222 1225/1849/226 +f 1217/1837/214 1224/1850/223 1230/1851/224 +f 1221/1841/216 1222/1840/34 1229/1846/219 +f 1220/1843/217 1227/1848/221 1226/1852/225 +f 1230/1851/224 1224/1865/223 1197/1856/202 +f 1199/1809/200 1229/1846/219 1230/1851/224 +f 1228/1847/220 1229/1846/219 1199/1809/200 +f 1227/1857/221 1228/1847/220 1200/1813/204 +f 1226/1859/225 1227/1857/221 1194/1858/203 +f 1181/1861/37 1211/1978/28 1226/1859/225 +f 1196/1862/205 1225/1979/226 1211/1863/28 +f 1224/1865/223 1225/1979/226 1196/1862/205 +f 1238/1866/145 1246/1878/190 1245/1867/187 +f 1236/1869/143 1244/1879/191 1243/1870/188 +f 1234/1872/148 1242/1880/192 1241/1873/37 +f 1232/1875/147 1240/1882/193 1239/1876/189 +f 1231/1877/22 1239/1876/189 1246/1878/190 +f 1237/1868/21 1245/1867/187 1244/1879/191 +f 1235/1871/24 1243/1870/188 1242/1880/192 +f 1233/1881/23 1241/1980/37 1240/1882/193 +f 1239/1883/189 1240/1900/193 1248/1884/194 +f 1246/1878/190 1239/1883/189 1247/1885/195 +f 1244/1879/191 1245/1867/187 1252/1887/31 +f 1243/1889/188 1250/1892/199 1249/1890/198 +f 1246/1878/190 1253/1886/196 1252/1887/31 +f 1244/1879/191 1251/1888/197 1250/1892/199 +f 1253/1886/196 1260/1897/204 1259/1893/200 +f 1250/1892/199 1251/1888/197 1258/1894/201 +f 1248/1884/194 1255/1902/206 1254/1896/203 +f 1247/1885/195 1254/1896/203 1260/1897/204 +f 1251/1888/197 1252/1887/31 1259/1893/200 +f 1249/1890/198 1250/1892/199 1257/1895/202 +f 1268/1903/148 1276/1915/211 1275/1904/207 +f 1266/1906/147 1274/1916/212 1273/1907/208 +f 1264/1909/145 1272/1917/209 1271/1910/28 +f 1262/1912/143 1270/1919/213 1269/1913/210 +f 1261/1914/24 1269/1913/210 1276/1915/211 +f 1267/1905/23 1275/1904/207 1274/1916/212 +f 1265/1908/22 1273/1907/208 1272/1917/209 +f 1263/1918/21 1271/1981/28 1270/1919/213 +f 1270/1920/213 1278/1933/222 1277/1921/214 +f 1269/1922/210 1277/1921/214 1283/1923/215 +f 1274/1916/212 1275/1904/207 1282/1924/34 +f 1272/1926/209 1273/1929/208 1280/1927/217 +f 1276/1915/211 1283/1923/215 1282/1924/34 +f 1273/1929/208 1274/1916/212 1281/1925/216 +f 1283/1923/215 1290/1935/224 1289/1930/219 +f 1280/1927/217 1281/1925/216 1288/1931/220 +f 1278/1933/222 1285/1939/226 1284/1934/223 +f 1277/1921/214 1284/1934/223 1290/1935/224 +f 1281/1925/216 1282/1924/34 1289/1930/219 +f 1280/1927/217 1287/1932/221 1286/1936/225 +f 1290/1935/224 1284/1949/223 1257/1940/202 +f 1289/1930/219 1290/1935/224 1258/1894/201 +f 1288/1931/220 1289/1930/219 1259/1893/200 +f 1287/1941/221 1288/1931/220 1260/1897/204 +f 1286/1943/225 1287/1941/221 1254/1942/203 +f 1241/1945/37 1271/1982/28 1286/1943/225 +f 1241/1946/37 1256/1950/205 1285/1947/226 +f 1284/1949/223 1285/1947/226 1256/1950/205 diff --git a/src/main/resources/assets/hbm/textures/models/machines/condenser.png b/src/main/resources/assets/hbm/textures/models/machines/condenser.png new file mode 100644 index 0000000000000000000000000000000000000000..b5bbd66b728211045a93347c3917975519de1aa9 GIT binary patch literal 1581 zcmZ{ke>9VO9LE>##X^x#Hd=HdH|a!X<}N?#;fe~mU7Dq&x-Nwcqs;9P<+S1IuB$pr z)34h_H}No8POhfp$0m(t8*Q;!+hTq-;XYe`)ajg_bDrn>&-3|wU!V8;{r#Tb8xEMm z*TP{in0ZKWPz1DUp*PRud+57#9N}#=W5G#-cN>m|ATb;xp&UM)nKC+=uz_ez?`*D>tXwQqLu*ItrC;Yx^3K| zwJ{a5Y(^s8GoEYZxb$d*HtyNicPBMdi>jhGTgVw>qY{sFu~>0@aXuVhf9c6!lMCL% z{kH)t3fr2!*_Q7Hw-dVw-5pc|sE5Oak+rbAxBFyyhSr$j)}3;%SES(>(W;u3WLFi7 zgFnD}-_Uy$tZwW*(v&I~N}K3O*Q8!FrAc@1UU#X zld|CTw3Oxe%+_UaW5hZd)fwVI(JVrUgVjzn5qeVQ;_rYg>tMzL4#*HGH@Q+_ zf!L8G0qH`$#7S#9-!wNoa0D)TZMGYlDp)>2Nb{piv=FGCH>FnyjTl4JNNuSTX zhMs9;O)705;rm`Xm*7yAWO1^U&!IiTNU72A!QUv>il{r;fgS&cqGvkKORDh&Ful7BaBf39Fx% zT^@LneDO9^O|5!^)$-hUjq)NaaxnB-*InPdw8#-vb2N^;&7yT=hBPRVXMKn%=s{zK zVUS9zSAbioA|suJbe)A4eaQ}fboHp~{bM?1ArYyN&U3lMSQ+b+OHj&mg~%M`LRM^2 z*eIq(vE<*tn)#M(a+w<7{G#{S0SS;_5J5+4QC8Ua^96i$hQ#NFp#@}3ggj%Sc)&eo z2NVw311KCVsT+HkOw%uPWZ^${s;--UCF4(EG4Pao<%>Egci-911h@?oj+4y`M zD!-ke7zON67%W@<2k+iBuO$y!VJxv^y`NO>Ce5z zocI!Fl3>vvRHAmPmBd6`SfNsY*XF_D$YK*p)e;4BCQYT`Pw@)73BrV#bg`8tH|(S6 z+H|ZiSi&#Kt$d+PAW(_}I9zlY0|yzkN$9?7{E Date: Thu, 28 Sep 2023 16:19:43 +0200 Subject: [PATCH 047/207] boring ahh GUI crap --- .../container/ContainerCraneExtractor.java | 3 +- .../container/ContainerDroneDock.java | 2 +- .../container/ContainerDroneProvider.java | 35 ++++++++- .../container/ContainerDroneRequester.java | 77 +++++++++++++++++++ .../hbm/inventory/gui/GUIDroneRequester.java | 69 +++++++++++++++++ .../network/TileEntityDroneRequester.java | 22 +++++- 6 files changed, 204 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java index afab4ad24..dab69d73b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java @@ -1,5 +1,6 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotPattern; import com.hbm.inventory.SlotUpgrade; import com.hbm.items.ModItems; import com.hbm.tileentity.network.TileEntityCraneExtractor; @@ -20,7 +21,7 @@ public class ContainerCraneExtractor extends Container { //filter for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { - this.addSlotToContainer(new Slot(extractor, j + i * 3, 71 + j * 18, 17 + i * 18)); + this.addSlotToContainer(new SlotPattern(extractor, j + i * 3, 71 + j * 18, 17 + i * 18)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java b/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java index 63a49cba6..913ee1dd3 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java @@ -10,7 +10,7 @@ public class ContainerDroneDock extends ContainerCrateBase { public ContainerDroneDock(InventoryPlayer invPlayer, TileEntityDroneDock tedf) { super(tedf); - for(int i = 0; i < 34; i++) { + for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { this.addSlotToContainer(new Slot(tedf, j + i * 3, 62 + j * 18, 17 + i * 18)); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java index 974162b38..19fd929ec 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java @@ -2,15 +2,17 @@ package com.hbm.inventory.container; import com.hbm.tileentity.network.TileEntityDroneProvider; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; public class ContainerDroneProvider extends ContainerCrateBase { public ContainerDroneProvider(InventoryPlayer invPlayer, TileEntityDroneProvider tedf) { super(tedf); - for(int i = 0; i < 34; i++) { + for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { this.addSlotToContainer(new Slot(tedf, j + i * 3, 62 + j * 18, 17 + i * 18)); } @@ -26,4 +28,35 @@ public class ContainerDroneProvider extends ContainerCrateBase { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); } } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 < 9) return null; //ignore filters + + if(par2 <= crate.getSizeInventory() - 1) { + if(!this.mergeItemStack(var5, crate.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(var5, 9, crate.getSizeInventory(), false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(p_82846_1_, var5); + } + + return var3; + } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java new file mode 100644 index 000000000..c629951d7 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java @@ -0,0 +1,77 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotPattern; +import com.hbm.tileentity.network.TileEntityDroneRequester; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerDroneRequester extends ContainerCrateBase { + + public ContainerDroneRequester(InventoryPlayer invPlayer, TileEntityDroneRequester tedf) { + super(tedf); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new SlotPattern(tedf, j + i * 3, 98 + j * 18, 17 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new Slot(tedf, j + i * 3 + 9, 26 + j * 18, 17 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + //L/R: 0 + //M3: 3 + //SHIFT: 1 + //DRAG: 5 + + if(index < 0 || index > 8) { + return super.slotClick(index, button, mode, player); + } + + Slot slot = this.getSlot(index); + + ItemStack ret = null; + ItemStack held = player.inventory.getItemStack(); + TileEntityDroneRequester requester = (TileEntityDroneRequester) crate; + + if(slot.getHasStack()) + ret = slot.getStack().copy(); + + if(button == 1 && mode == 0 && slot.getHasStack()) { + requester.nextMode(index); + return ret; + + } else { + slot.putStack(held != null ? held.copy() : null); + + if(slot.getHasStack()) { + slot.getStack().stackSize = 1; + } + + slot.onSlotChanged(); + requester.matcher.initPatternStandard(requester.getWorldObj(), slot.getStack(), index); + + return ret; + } + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java b/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java new file mode 100644 index 000000000..4fec012e5 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java @@ -0,0 +1,69 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerDroneRequester; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityDroneRequester; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIDroneRequester extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_drone_requester.png"); + private TileEntityDroneRequester diFurnace; + + public GUIDroneRequester(InventoryPlayer invPlayer, TileEntityDroneRequester tedf) { + super(new ContainerDroneRequester(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + for(int i = 0; i < 9; ++i) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); + + if(this.isMouseOverSlot(slot, x, y) && diFurnace.matcher.modes[i] != null) { + + String label = EnumChatFormatting.YELLOW + ""; + + switch(diFurnace.matcher.modes[i]) { + case "exact": label += "Item and meta match"; break; + case "wildcard": label += "Item matches"; break; + default: label += "Ore dict key matches: " + diFurnace.matcher.modes[i]; break; + } + + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + } + } + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java index a6eb59b08..dee3d60d7 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java @@ -1,10 +1,19 @@ package com.hbm.tileentity.network; +import com.hbm.inventory.container.ContainerDroneRequester; +import com.hbm.inventory.gui.GUIDroneRequester; import com.hbm.module.ModulePatternMatcher; +import com.hbm.tileentity.IGUIProvider; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; +import net.minecraft.world.World; -public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer { +public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer implements IGUIProvider { public ModulePatternMatcher matcher; @@ -49,4 +58,15 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer public boolean canExtractItem(int i, ItemStack stack, int j) { return true; } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerDroneRequester(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIDroneRequester(player.inventory, this); + } } From d7ff947bbf12371d8b615047cfe6be4b8217f6e4 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 28 Sep 2023 22:49:12 +0200 Subject: [PATCH 048/207] powered condenser --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../machine/MachineCondenserPowered.java | 82 +++++++++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 2 + .../render/tileentity/RenderCondenser.java | 81 +++++++++ .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityCondenser.java | 42 +++-- .../machine/TileEntityCondenserPowered.java | 165 ++++++++++++++++++ .../textures/models/machines/condenser.png | Bin 1581 -> 2699 bytes 9 files changed, 361 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderCondenser.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index fc09defc2..2e4a6cda9 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1018,6 +1018,7 @@ public class ModBlocks { public static Block machine_condenser; public static Block machine_tower_small; public static Block machine_tower_large; + public static Block machine_condenser_powered; public static Block machine_electrolyser; @@ -2301,6 +2302,7 @@ public class ModBlocks { machine_condenser = new MachineCondenser(Material.iron).setBlockName("machine_condenser").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":condenser"); machine_tower_small = new MachineTowerSmall(Material.iron).setBlockName("machine_tower_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); machine_tower_large = new MachineTowerLarge(Material.iron).setBlockName("machine_tower_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); + machine_condenser_powered = new MachineCondenserPowered(Material.iron).setBlockName("machine_condenser_powered").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); machine_deuterium_extractor = new MachineDeuteriumExtractor(Material.iron).setBlockName("machine_deuterium_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_deuterium_extractor_side"); machine_deuterium_tower = new DeuteriumTower(Material.iron).setBlockName("machine_deuterium_tower").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); @@ -3332,6 +3334,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_condenser, machine_condenser.getUnlocalizedName()); GameRegistry.registerBlock(machine_tower_small, machine_tower_small.getUnlocalizedName()); GameRegistry.registerBlock(machine_tower_large, machine_tower_large.getUnlocalizedName()); + register(machine_condenser_powered); GameRegistry.registerBlock(machine_deuterium_extractor, machine_deuterium_extractor.getUnlocalizedName()); GameRegistry.registerBlock(machine_deuterium_tower, machine_deuterium_tower.getUnlocalizedName()); GameRegistry.registerBlock(machine_liquefactor, ItemBlockBase.class, machine_liquefactor.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java b/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java new file mode 100644 index 000000000..3fa62d072 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java @@ -0,0 +1,82 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityCondenserPowered; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineCondenserPowered extends BlockDummyable implements ILookOverlay { + + public MachineCondenserPowered(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int meta) { + if(meta >= 12) return new TileEntityCondenserPowered(); + if(meta >= 6) return new TileEntityProxyCombo().power().fluid(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 1, 1, 3, 3}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x + rot.offsetX * 3, y + 1, z + rot.offsetZ * 3); + this.makeExtra(world, x - rot.offsetX * 3, y + 1, z - rot.offsetZ * 3); + this.makeExtra(world, x + dir.offsetX + rot.offsetX, y + 1, z + dir.offsetZ + rot.offsetZ); + this.makeExtra(world, x + dir.offsetX - rot.offsetX, y + 1, z + dir.offsetZ - rot.offsetZ); + this.makeExtra(world, x - dir.offsetX + rot.offsetX, y + 1, z - dir.offsetZ + rot.offsetZ); + this.makeExtra(world, x - dir.offsetX - rot.offsetX, y + 1, z - dir.offsetZ - rot.offsetZ); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityCondenserPowered)) return; + + TileEntityCondenserPowered tower = (TileEntityCondenserPowered) te; + List text = new ArrayList(); + + text.add(BobMathUtil.getShortNumber(tower.power) + "HE / " + BobMathUtil.getShortNumber(tower.maxPower) + "HE"); + + for(int i = 0; i < tower.tanks.length; i++) + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 19ef08ea7..2e295603d 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -255,6 +255,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChungus.class, new RenderChungus()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTowerLarge.class, new RenderLargeTower()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTowerSmall.class, new RenderSmallTower()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCondenserPowered.class, new RenderCondenser()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDeuteriumTower.class, new RenderDeuteriumTower()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticCracker.class, new RenderCatalyticCracker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLiquefactor.class, new RenderLiquefactor()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 18f7b0059..6077a2947 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -108,6 +108,7 @@ public class ResourceManager { //Cooling Tower public static final IModelCustom tower_small = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_small.obj")); public static final IModelCustom tower_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_large.obj")); + public static final IModelCustom condenser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/condenser.obj")); //IGen public static final IModelCustom igen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/igen.obj")); @@ -467,6 +468,7 @@ public class ResourceManager { //Cooling Tower public static final ResourceLocation tower_small_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/tower_small.png"); public static final ResourceLocation tower_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/tower_large.png"); + public static final ResourceLocation condenser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/condenser.png"); //Deuterium Tower public static final ResourceLocation deuterium_tower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/machine_deuterium_tower.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderCondenser.java b/src/main/java/com/hbm/render/tileentity/RenderCondenser.java new file mode 100644 index 000000000..40af1e6dc --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderCondenser.java @@ -0,0 +1,81 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityCondenserPowered; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderCondenser extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata() - 10) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + TileEntityCondenserPowered condenser = (TileEntityCondenserPowered) tileEntity; + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.condenser_tex); + ResourceManager.condenser.renderPart("Condenser"); + + float rot = condenser.lastSpin + (condenser.spin - condenser.lastSpin) * f; + + GL11.glPushMatrix(); + GL11.glTranslated(0,1.5, 0); + GL11.glRotatef(rot, 1, 0, 0); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.condenser.renderPart("Fan1"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0,1.5, 0); + GL11.glRotatef(rot, -1, 0, 0); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.condenser.renderPart("Fan2"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_condenser_powered); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(-1, -1, 0); + GL11.glScaled(2.75, 2.75, 2.75); + } + public void renderCommon() { + GL11.glScaled(0.75, 0.75, 0.75); + GL11.glTranslated(0.5, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.condenser_tex); ResourceManager.condenser.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 36afb0545..3a52058d6 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -299,6 +299,7 @@ public class TileMappings { put(TileEntityCondenser.class, "tileentity_condenser"); put(TileEntityTowerSmall.class, "tileentity_cooling_tower_small"); put(TileEntityTowerLarge.class, "tileentity_cooling_tower_large"); + put(TileEntityCondenserPowered.class, "tileentity_condenser_powered"); put(TileEntityDeuteriumExtractor.class, "tileentity_deuterium_extractor"); put(TileEntityDeuteriumTower.class, "tileentity_deuterium_tower"); put(TileEntityMachineLiquefactor.class, "tileentity_liquefactor"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 8b42674b0..3e4df7177 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -42,35 +42,45 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidA age = 0; } + NBTTagCompound data = new NBTTagCompound(); + this.tanks[0].writeToNBT(data, "0"); + if(this.waterTimer > 0) this.waterTimer--; - + int convert = Math.min(tanks[0].getFill(), tanks[1].getMaxFill() - tanks[1].getFill()); - tanks[0].setFill(tanks[0].getFill() - convert); - - if(convert > 0) - this.waterTimer = 20; - - int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); - - if(TomSaveData.forWorld(worldObj).fire > 1e-5 && light > 7) { // Make both steam and water evaporate during firestorms... - tanks[1].setFill(tanks[1].getFill() - convert); - } else { - tanks[1].setFill(tanks[1].getFill() + convert); + if(extraCondition(convert)) { + tanks[0].setFill(tanks[0].getFill() - convert); + + if(convert > 0) + this.waterTimer = 20; + + int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); + + if(TomSaveData.forWorld(worldObj).fire > 1e-5 && light > 7) { // Make both steam and water evaporate during firestorms... + tanks[1].setFill(tanks[1].getFill() - convert); + } else { + tanks[1].setFill(tanks[1].getFill() + convert); + } + + postConvert(convert); } + this.tanks[1].writeToNBT(data, "1"); + this.subscribeToAllAround(tanks[0].getTankType(), this); this.sendFluidToAll(tanks[1], this); fillFluidInit(tanks[1].getTankType()); - - NBTTagCompound data = new NBTTagCompound(); - this.tanks[0].writeToNBT(data, "0"); - this.tanks[1].writeToNBT(data, "1"); data.setByte("timer", (byte) this.waterTimer); + packExtra(data); INBTPacketReceiver.networkPack(this, data, 150); } } + + public void packExtra(NBTTagCompound data) { } + public boolean extraCondition(int convert) { return true; } + public void postConvert(int convert) { } @Override public void networkUnpack(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java new file mode 100644 index 000000000..7bd58cf0a --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java @@ -0,0 +1,165 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityCondenserPowered extends TileEntityCondenser implements IEnergyUser { + + public long power; + public static final long maxPower = 10_000_000; + public float spin; + public float lastSpin; + + public TileEntityCondenserPowered() { + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 100_000); + tanks[1] = new FluidTank(Fluids.WATER, 100_000); + } + + @Override + public void updateEntity() { + super.updateEntity(); + + if(worldObj.isRemote) { + + this.lastSpin = this.spin; + + if(this.waterTimer > 0) { + this.spin += 30F; + + if(this.spin >= 360F) { + this.spin -= 360F; + this.lastSpin -= 360F; + } + + if(worldObj.getTotalWorldTime() % 4 == 0) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + worldObj.spawnParticle("cloud", xCoord + 0.5 + dir.offsetX * 1.5, yCoord + 1.5, zCoord + 0.5 + dir.offsetZ * 1.5, dir.offsetX * 0.1, 0, dir.offsetZ * 0.1); + worldObj.spawnParticle("cloud", xCoord + 0.5 - dir.offsetX * 1.5, yCoord + 1.5, zCoord + 0.5 - dir.offsetZ * 1.5, dir.offsetX * -0.1, 0, dir.offsetZ * -0.1); + } + } + } + } + + @Override + public void packExtra(NBTTagCompound data) { + data.setLong("power", power); + } + + @Override + public boolean extraCondition(int convert) { + return power >= convert * 10; + } + + @Override + public void postConvert(int convert) { + this.power -= convert * 10; + if(this.power < 0) this.power = 0; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.tanks[0].readFromNBT(nbt, "0"); + this.tanks[1].readFromNBT(nbt, "1"); + this.waterTimer = nbt.getByte("timer"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + tanks[0].readFromNBT(nbt, "water"); + tanks[1].readFromNBT(nbt, "steam"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + tanks[0].writeToNBT(nbt, "water"); + tanks[1].writeToNBT(nbt, "steam"); + } + + @Deprecated @Override public void fillFluidInit(FluidType type) { } + + @Override + public void subscribeToAllAround(FluidType type, TileEntity te) { + for(DirPos pos : getConPos()) { + this.trySubscribe(this.tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + @Override + public void sendFluidToAll(FluidTank tank, TileEntity te) { + for(DirPos pos : getConPos()) { + this.sendFluid(this.tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + public DirPos[] getConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 4, yCoord + 1, zCoord + rot.offsetZ * 4, rot), + new DirPos(xCoord - rot.offsetX * 4, yCoord + 1, zCoord - rot.offsetZ * 4, rot.getOpposite()), + new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX, yCoord + 1, zCoord + dir.offsetZ * 2 - rot.offsetZ, dir), + new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX, yCoord + 1, zCoord + dir.offsetZ * 2 + rot.offsetZ, dir), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord + 1, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord + 1, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()) + }; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 3, + yCoord, + zCoord - 3, + xCoord + 4, + yCoord + 3, + zCoord + 4 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public long getPower() { + return this.power; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getMaxPower() { + return this.maxPower; + } +} diff --git a/src/main/resources/assets/hbm/textures/models/machines/condenser.png b/src/main/resources/assets/hbm/textures/models/machines/condenser.png index b5bbd66b728211045a93347c3917975519de1aa9..cb3573db19150af373a3614189e9c578ffaf3ef9 100644 GIT binary patch literal 2699 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 Date: Fri, 29 Sep 2023 14:18:38 +0200 Subject: [PATCH 049/207] small fixes --- .../java/com/hbm/tileentity/TileMappings.java | 2 ++ .../tileentity/machine/TileEntityITER.java | 2 +- .../TileEntityMachineAssemblerBase.java | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 3a52058d6..3e6c9cc6d 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -397,6 +397,8 @@ public class TileMappings { put(TileEntityDroneCrate.class, "tileentity_drone_crate"); put(TileEntityDroneWaypointRequest.class, "tileentity_drone_waypoint_request"); put(TileEntityDroneDock.class, "tileentity_drone_dock"); + put(TileEntityDroneProvider.class, "tileentity_drone_provider"); + put(TileEntityDroneRequester.class, "tileentity_drone_requester"); } private static void put(Class clazz, String... names) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 9802070ac..f7a078115 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -544,7 +544,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser int b = layout[ly][x][z]; switch(b) { - case 1: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.fusion_conductor); break; + case 1: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.fusion_conductor, 1, 3); break; case 2: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.fusion_center); break; case 3: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.fusion_motor); break; case 4: worldObj.setBlock(xCoord - width + x, yCoord + y - 2, zCoord - width + z, ModBlocks.reinforced_glass); break; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java index b4bcd8648..836b03f1d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java @@ -17,6 +17,7 @@ import api.hbm.energy.IEnergyUser; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { @@ -286,6 +287,24 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa } } } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + if(nbt.hasKey("progress")) this.progress = nbt.getIntArray("progress"); + if(nbt.hasKey("maxProgress")) this.maxProgress = nbt.getIntArray("maxProgress"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setIntArray("progress", progress); + nbt.setIntArray("maxProgress", maxProgress); + } @Override public long getPower() { From ad2174b639d550f43683666b495c8153e801a700 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 29 Sep 2023 23:07:47 +0200 Subject: [PATCH 050/207] =?UTF-8?q?=F0=93=82=A7=F0=93=85=83=F0=93=84=BF?= =?UTF-8?q?=F0=93=8B=B4=F0=93=88=8E=F0=93=83=AD=F0=93=85=93=20CURSE=20OF?= =?UTF-8?q?=20RAH=20=F0=93=85=93=F0=93=86=91=F0=93=85=B1=F0=93=86=93?= =?UTF-8?q?=F0=93=8E=BC=F0=93=85=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hbm/entity/EntityMappings.java | 1 + .../hbm/entity/item/EntityRequestDrone.java | 37 ++++++ .../container/ContainerDroneProvider.java | 33 ------ .../container/ContainerDroneRequester.java | 31 +++++ .../inventory/recipes/AssemblerRecipes.java | 9 ++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ModEventHandler.java | 2 + .../java/com/hbm/main/ResourceManager.java | 1 + .../entity/item/RenderDeliveryDrone.java | 5 +- .../tileentity/network/RequestNetwork.java | 97 +++++++++++++++ .../network/TileEntityDroneDock.java | 7 ++ .../network/TileEntityDroneProvider.java | 13 ++ .../network/TileEntityDroneRequester.java | 53 ++++++++- .../TileEntityDroneWaypointRequest.java | 6 + .../network/TileEntityRequestNetwork.java | 112 +++++++++--------- .../TileEntityRequestNetworkContainer.java | 2 - src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + 18 files changed, 317 insertions(+), 95 deletions(-) create mode 100644 src/main/java/com/hbm/entity/item/EntityRequestDrone.java create mode 100644 src/main/java/com/hbm/tileentity/network/RequestNetwork.java diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 0b8d01653..4b2a6d849 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -175,6 +175,7 @@ public class EntityMappings { addEntity(EntityMovingItem.class, "entity_c_item", 1000); addEntity(EntityMovingPackage.class, "entity_c_package", 1000); addEntity(EntityDeliveryDrone.class, "entity_delivery_drone", 250, false); + addEntity(EntityRequestDrone.class, "entity_request_drone", 250, false); addEntity(EntityCloudTom.class, "entity_moonstone_blast", 1000); addEntity(EntityBeamVortex.class, "entity_vortex_beam", 1000); addEntity(EntityFireworks.class, "entity_firework_ball", 1000); diff --git a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java new file mode 100644 index 000000000..6878f138e --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java @@ -0,0 +1,37 @@ +package com.hbm.entity.item; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class EntityRequestDrone extends EntityDroneBase { + + public ItemStack heldItem; + + public EntityRequestDrone(World world) { + super(world); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + + if(nbt.hasKey("held")) { + NBTTagCompound stack = nbt.getCompoundTag("held"); + this.heldItem = ItemStack.loadItemStackFromNBT(stack); + } + + this.dataWatcher.updateObject(10, nbt.getByte("app")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + + if(heldItem != null) { + NBTTagCompound stack = new NBTTagCompound(); + this.heldItem.writeToNBT(stack); + nbt.setTag("held", stack); + } + + nbt.setByte("app", this.dataWatcher.getWatchableObjectByte(10)); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java index 19fd929ec..7b818dc8d 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java @@ -2,10 +2,8 @@ package com.hbm.inventory.container; import com.hbm.tileentity.network.TileEntityDroneProvider; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; public class ContainerDroneProvider extends ContainerCrateBase { @@ -28,35 +26,4 @@ public class ContainerDroneProvider extends ContainerCrateBase { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); } } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if(var4 != null && var4.getHasStack()) { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if(par2 < 9) return null; //ignore filters - - if(par2 <= crate.getSizeInventory() - 1) { - if(!this.mergeItemStack(var5, crate.getSizeInventory(), this.inventorySlots.size(), true)) { - return null; - } - } else if(!this.mergeItemStack(var5, 9, crate.getSizeInventory(), false)) { - return null; - } - - if(var5.stackSize == 0) { - var4.putStack((ItemStack) null); - } else { - var4.onSlotChanged(); - } - - var4.onPickupFromSlot(p_82846_1_, var5); - } - - return var3; - } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java index c629951d7..d728d69c3 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java @@ -36,6 +36,37 @@ public class ContainerDroneRequester extends ContainerCrateBase { } } + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 < 9) return null; //ignore filters + + if(par2 <= crate.getSizeInventory() - 1) { + if(!this.mergeItemStack(var5, crate.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(var5, 9, crate.getSizeInventory(), false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(p_82846_1_, var5); + } + + return var3; + } + @Override public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 0e6afcdb5..6776c80ac 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -571,6 +571,15 @@ public class AssemblerRecipes { new ComparableStack(ModItems.bolt_compound, 16), new ComparableStack(ModItems.pipes_steel, 3) }, 600); + + makeRecipe(new ComparableStack(ModBlocks.machine_condenser_powered, 1), new AStack[] { + new OreDictStack(STEEL.plateCast(), 16), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), + new OreDictStack(CU.plate528(), 16), + new ComparableStack(ModItems.motor_desh, 3), + new ComparableStack(ModItems.pipes_steel, 4), + new OreDictStack(Fluids.LUBRICANT.getDict(1_000), 4) + }, 600); makeRecipe(new ComparableStack(ModItems.pellet_chlorophyte, 2), new AStack[] { new ComparableStack(ModItems.powder_chlorophyte, 1), diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 2e295603d..ea4100179 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -715,6 +715,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); RenderingRegistry.registerEntityRenderingHandler(EntityTNTPrimedBase.class, new RenderTNTPrimedBase()); RenderingRegistry.registerEntityRenderingHandler(EntityDeliveryDrone.class, new RenderDeliveryDrone()); + RenderingRegistry.registerEntityRenderingHandler(EntityRequestDrone.class, new RenderDeliveryDrone()); RenderingRegistry.registerEntityRenderingHandler(EntityFallingBlockNT.class, new RenderFallingBlockNT()); //mobs RenderingRegistry.registerEntityRenderingHandler(EntityCreeperNuclear.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor.png").setSwellMod(5F)); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 9b99a5f7a..e88e39b82 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -67,6 +67,7 @@ import com.hbm.packet.PlayerInformPacket; import com.hbm.potion.HbmPotion; import com.hbm.saveddata.AuxSavedData; import com.hbm.tileentity.network.RTTYSystem; +import com.hbm.tileentity.network.RequestNetwork; import com.hbm.util.AchievementHandler; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; @@ -1097,6 +1098,7 @@ public class ModEventHandler { if(event.phase == event.phase.START) { RTTYSystem.updateBroadcastQueue(); + RequestNetwork.updateEntries(); } } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 6077a2947..c7a57a2a6 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1374,6 +1374,7 @@ public class ResourceManager { //Drone public static final ResourceLocation delivery_drone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone.png"); public static final ResourceLocation delivery_drone_express_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone_express.png"); + public static final ResourceLocation delivery_drone_request_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone_request.png"); //ISBRHs public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/scaffold.obj")); diff --git a/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java index 4cf9e844c..386235f40 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java +++ b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java @@ -3,6 +3,7 @@ package com.hbm.render.entity.item; import org.lwjgl.opengl.GL11; import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.entity.item.EntityRequestDrone; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; @@ -20,7 +21,9 @@ public class RenderDeliveryDrone extends Render { GL11.glDisable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH); - if(entity.getDataWatcher().getWatchableObjectByte(11) == 1) + if(entity instanceof EntityRequestDrone) { + bindTexture(ResourceManager.delivery_drone_request_tex); + } else if(entity.getDataWatcher().getWatchableObjectByte(11) == 1) bindTexture(ResourceManager.delivery_drone_express_tex); else bindTexture(ResourceManager.delivery_drone_tex); diff --git a/src/main/java/com/hbm/tileentity/network/RequestNetwork.java b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java new file mode 100644 index 000000000..b8578d35d --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java @@ -0,0 +1,97 @@ +package com.hbm.tileentity.network; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; + +public class RequestNetwork { + + private static int timer = 0; + public static HashMap>> activeWaypoints = new HashMap(); + public static final int maxAge = 2_000; + + public static void updateEntries() { + + if(timer < 0) { + timer--; + return; + } + + timer = 20; + + Iterator worldIt = activeWaypoints.entrySet().iterator(); + + // iterate over each dim + while(worldIt.hasNext()) { + Entry>> worldEntry = (Entry) worldIt.next(); + Iterator chunkIt = worldEntry.getValue().entrySet().iterator(); + + // iterate over each chunk + while(chunkIt.hasNext()) { + + Entry> chunkEntry = (Entry) chunkIt.next(); + Iterator pathIt = chunkEntry.getValue().iterator(); + + // iterate over each path node + while(pathIt.hasNext()) { + PathNode node = pathIt.next(); + + // if the lease timestamp is too far back, time out the node + if(node.lease < System.currentTimeMillis() - maxAge) { + pathIt.remove(); + } + } + + // if no more nodes exist, delete the chunk entry + if(chunkEntry.getValue().size() == 0) chunkIt.remove(); + } + + // if no more chunk entries exist, delete the world entry + if(worldEntry.getValue().size() == 0) worldIt.remove(); + + // cleaning up all the entries if the lists are empty ensures that even if a different save is loaded, + // the positions will eventually time out leading to all the old save crap being deleted, preventing a memory leak. + // it's probably an inconsequential memory leak but i'd rather we don't + } + + } + + /** Generic path node, contains nothing but a position and a timestamp */ + public static class PathNode { + public BlockPos pos; + public long lease; + public PathNode(BlockPos pos) { + this.pos = pos; + this.lease = System.currentTimeMillis(); + } + @Override public int hashCode() { return pos.hashCode(); } + @Override public boolean equals(Object o) { return pos.equals(o); } + } + + /** Node created by providers, lists available items */ + public static class OfferNode extends PathNode { + public List offer; + public OfferNode(BlockPos pos, List offer) { + super(pos); + this.offer = offer; + } + } + + /** Node created by requesters, lists requested AStacks */ + public static class RequestNode extends PathNode { + public List request; + public RequestNode(BlockPos pos, List request) { + super(pos); + this.request = request; + } + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java index 12e36938b..0ffc3e884 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java @@ -3,6 +3,8 @@ package com.hbm.tileentity.network; import com.hbm.inventory.container.ContainerDroneDock; import com.hbm.inventory.gui.GUIDroneDock; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -37,4 +39,9 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDroneDock(player.inventory, this); } + + @Override + public PathNode createNode(BlockPos pos) { + return new PathNode(pos); + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java index ab9860d64..83a71dc40 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java @@ -1,8 +1,14 @@ package com.hbm.tileentity.network; +import java.util.ArrayList; +import java.util.List; + import com.hbm.inventory.container.ContainerDroneProvider; import com.hbm.inventory.gui.GUIDroneProvider; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.network.RequestNetwork.OfferNode; +import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -48,4 +54,11 @@ public class TileEntityDroneProvider extends TileEntityRequestNetworkContainer i public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDroneProvider(player.inventory, this); } + + @Override + public PathNode createNode(BlockPos pos) { + List offer = new ArrayList(); + for(ItemStack stack : slots) if(stack != null) offer.add(stack.copy()); + return new OfferNode(pos, offer); + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java index dee3d60d7..a58724d26 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java @@ -1,9 +1,19 @@ package com.hbm.tileentity.network; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.container.ContainerDroneRequester; import com.hbm.inventory.gui.GUIDroneRequester; import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.tileentity.network.RequestNetwork.RequestNode; +import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -11,9 +21,11 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; -public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer implements IGUIProvider { +public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer implements INBTPacketReceiver, IGUIProvider { public ModulePatternMatcher matcher; @@ -27,6 +39,23 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer return "container.droneRequester"; } + @Override + public void updateEntity() { + super.updateEntity(); + + if(!worldObj.isRemote) { + + NBTTagCompound data = new NBTTagCompound(); + this.matcher.writeToNBT(data); + INBTPacketReceiver.networkPack(this, data, 15); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.matcher.readFromNBT(nbt); + } + public boolean matchesFilter(ItemStack stack) { for(int i = 0; i < 9; i++) { @@ -69,4 +98,26 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDroneRequester(player.inventory, this); } + + @Override + public PathNode createNode(BlockPos pos) { + List request = new ArrayList(); + for(int i = 0; i < 9; i++) { + ItemStack filter = slots[i]; + if(filter == null) continue; + String mode = this.matcher.modes[i]; + AStack aStack = null; + + if(ModulePatternMatcher.MODE_EXACT.equals(mode)) { + aStack = new ComparableStack(filter).makeSingular(); + } else if(ModulePatternMatcher.MODE_WILDCARD.equals(mode)) { + aStack = new ComparableStack(filter.getItem(), 1, OreDictionary.WILDCARD_VALUE); + } else { + aStack = new OreDictStack(mode); + } + + request.add(aStack); + } + return new RequestNode(pos, request); + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java index a4135d3b9..e196b17bd 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.network; +import com.hbm.tileentity.network.RequestNetwork.PathNode; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.nbt.NBTTagCompound; @@ -34,4 +35,9 @@ public class TileEntityDroneWaypointRequest extends TileEntityRequestNetwork { nbt.setInteger("height", height); } + + @Override + public PathNode createNode(BlockPos pos) { + return new PathNode(pos); + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java index ad2e4d361..3ccf46d65 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.network; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.Set; +import com.hbm.tileentity.network.RequestNetwork.PathNode; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -24,16 +25,11 @@ import net.minecraft.world.World; * @author hbm * */ -public class TileEntityRequestNetwork extends TileEntity { - - public static HashMap>> activeWaypoints = new HashMap(); - public static HashMap lastActive = new HashMap(); - public static long lastWipe = 0; +public abstract class TileEntityRequestNetwork extends TileEntity { - public Set reachableNodes = new HashSet(); - public Set knownNodes = new HashSet(); + public Set reachableNodes = new HashSet(); + public Set knownNodes = new HashSet(); public static final int maxRange = 24; - public static final int maxAge = 2_000; @Override public void updateEntity() { @@ -42,53 +38,59 @@ public class TileEntityRequestNetwork extends TileEntity { if(worldObj.getTotalWorldTime() % 20 == 0) { BlockPos pos = getCoord(); - push(worldObj, pos); + // push new node + push(worldObj, createNode(pos)); - for(BlockPos known : knownNodes) { + // remove known nodes that no longer exist + // since we can assume a sane number of nodes to exist at any given time, we can run this check in full every second + Iterator it = knownNodes.iterator(); + Set localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 2); // this bit may spiral into multiple nested hashtable lookups but it's limited to only a few chunks so it shouldn't be an issue + while(it.hasNext()) { + PathNode node = it.next(); + if(!localNodes.contains(node)) { + reachableNodes.remove(node); + it.remove(); + } + } + + // draw debug crap + for(PathNode known : knownNodes) { ParticleUtil.spawnDebugLine(worldObj, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, - (known.getX() - pos.getX()) / 2D, (known.getY() - pos.getY()) / 2D, (known.getZ() - pos.getZ()) / 2D, + (known.pos.getX() - pos.getX()) / 2D, (known.pos.getY() - pos.getY()) / 2D, (known.pos.getZ() - pos.getZ()) / 2D, reachableNodes.contains(known) ? 0x00ff00 : 0xff0000); } + //both following checks run the `hasPath` function which is costly, so it only runs one op at a time + //rescan known nodes - if(worldObj.getTotalWorldTime() % 40 == 0 && knownNodes.size() > 0) { + for(PathNode known : knownNodes) { - BlockPos node = (BlockPos) new ArrayList(knownNodes).get(knownNodes.size() > 1 ? worldObj.rand.nextInt(knownNodes.size() - 1) : 0); - - if(node != null) { - - Long timestamp = lastActive.get(node); - - if(timestamp == null || timestamp < System.currentTimeMillis() - maxAge) { - knownNodes.remove(node); - reachableNodes.remove(node); - lastActive.remove(node); - } else if(!hasPath(worldObj, pos, node)) { - reachableNodes.remove(node); - } else { - reachableNodes.add(node); - } + if(!hasPath(worldObj, pos, known.pos)) { + reachableNodes.remove(known); + } else { + reachableNodes.add(known); } + } //discover new nodes - } else { - - Set nodes = getAllLocalNodes(worldObj, pos.getX(), pos.getZ()); - - for(BlockPos node : nodes) { + int newNodeLimit = 5; + for(PathNode node : localNodes) { - if(!knownNodes.contains(node) && !node.equals(pos)) { - knownNodes.add(node); - if(hasPath(worldObj, pos, node)) reachableNodes.add(node); - break; - } + if(!knownNodes.contains(node) && !node.equals(pos)) { + newNodeLimit--; + knownNodes.add(node); + if(hasPath(worldObj, pos, node.pos)) reachableNodes.add(node); } + + if(newNodeLimit <= 0) break; } } } } + public abstract PathNode createNode(BlockPos pos); + public BlockPos getCoord() { return new BlockPos(xCoord, yCoord + 1, zCoord); } @@ -120,26 +122,24 @@ public class TileEntityRequestNetwork extends TileEntity { * @param y * @param z */ - public static void push(World world, BlockPos pos) { + public static void push(World world, PathNode node) { - HashMap> coordMap = activeWaypoints.get(world); + HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); if(coordMap == null) { coordMap = new HashMap(); - activeWaypoints.put(world, coordMap); + RequestNetwork.activeWaypoints.put(world, coordMap); } - ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(pos.getX() >> 4, pos.getZ() >> 4); - Set posList = coordMap.get(chunkPos); + ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(node.pos.getX() >> 4, node.pos.getZ() >> 4); + Set posList = coordMap.get(chunkPos); if(posList == null) { posList = new HashSet(); coordMap.put(chunkPos, posList); } - posList.add(pos); - - lastActive.put(pos, System.currentTimeMillis()); + posList.add(node); } /** @@ -150,28 +150,24 @@ public class TileEntityRequestNetwork extends TileEntity { * @param z * @return */ - public static Set getAllLocalNodes(World world, int x, int z) { + public static Set getAllLocalNodes(World world, int x, int z, int range) { - Set nodes = new HashSet(); + Set nodes = new HashSet(); x >>= 4; z >>= 4; - HashMap> coordMap = activeWaypoints.get(world); + HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); if(coordMap == null) return nodes; - for(int i = -2; i <= 2; i++) { - for(int j = -2; j <= 2; j++) { + for(int i = -range; i <= range; i++) { + for(int j = -range; j <= range; j++) { - Set posList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); + Set nodeList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); - if(posList != null) for(BlockPos node : posList) { - Long timestamp = lastActive.get(node); - - if(timestamp != null && timestamp >= System.currentTimeMillis() - maxAge) { - nodes.add(node); - } + if(nodeList != null) for(PathNode node : nodeList) { + nodes.add(node); } } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java index 4870bf2b4..71fc659f9 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java @@ -111,8 +111,6 @@ public abstract class TileEntityRequestNetworkContainer extends TileEntityReques if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } - public void networkUnpack(NBTTagCompound nbt) { } - @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index c06ee2508..27a103ca0 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4026,6 +4026,7 @@ tile.machine_combine_factory.name=CMB-Stahl Hochofen tile.machine_combustion_engine.name=Industrieller Verbrennungsmotor tile.machine_compressor.name=Kompressor tile.machine_condenser.name=Dampfkondensierer +tile.machine_condenser_powered.name=Hochleistungs-Dampfkondensierer tile.machine_controller.name=Reaktorfernsteuerung tile.machine_converter_he_rf.name=HE zu RF Konverter tile.machine_converter_rf_he.name=RF zu HE Konverter diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 17a91ee2f..06a1b2a17 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4999,6 +4999,7 @@ tile.machine_combine_factory.name=CMB Steel Furnace tile.machine_combustion_engine.name=Industrial Combustion Engine tile.machine_compressor.name=Compressor tile.machine_condenser.name=Steam Condenser +tile.machine_condenser_powered.name=High-Power Steam Condenser tile.machine_controller.name=Reactor Remote Control Block tile.machine_converter_he_rf.name=HE to RF Converter tile.machine_converter_rf_he.name=RF to HE Converter From abb96d8f4b313769b64c0b01a9376bb3dfbb0578 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 30 Sep 2023 19:46:09 +0200 Subject: [PATCH 051/207] stalingrad --- .../hbm/entity/item/EntityDeliveryDrone.java | 62 +------- .../com/hbm/entity/item/EntityDroneBase.java | 66 +++++++++ .../hbm/entity/item/EntityRequestDrone.java | 111 ++++++++++++++ .../tileentity/network/RequestNetwork.java | 14 +- .../network/TileEntityDroneDock.java | 140 +++++++++++++++++- .../network/TileEntityDroneProvider.java | 2 +- .../network/TileEntityDroneRequester.java | 22 +-- .../TileEntityDroneWaypointRequest.java | 2 +- .../network/TileEntityRequestNetwork.java | 21 ++- 9 files changed, 355 insertions(+), 85 deletions(-) diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index eb4b6e603..72782c158 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -5,14 +5,11 @@ import com.hbm.inventory.FluidStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.main.MainRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.Vec3; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; import net.minecraftforge.common.ForgeChunkManager; @@ -23,17 +20,12 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, protected ItemStack[] slots = new ItemStack[this.getSizeInventory()]; public FluidStack fluid; - - public double targetX = -1; - public double targetY = -1; - public double targetZ = -1; private Ticket loaderTicket; public boolean isChunkLoading = false; public EntityDeliveryDrone(World world) { super(world); - this.setSize(1.5F, 2.0F); } @Override @@ -46,40 +38,15 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); return this; } - - public void setTarget(double x, double y, double z) { - this.targetX = x; - this.targetY = y; - this.targetZ = z; - } @Override public void onUpdate() { - super.onUpdate(); if(!worldObj.isRemote) { - - this.motionX = 0; - this.motionY = 0; - this.motionZ = 0; - - if(this.targetY != -1) { - - Vec3 dist = Vec3.createVectorHelper(targetX - posX, targetY - posY, targetZ - posZ); - double speed = getSpeed(); - - if(dist.lengthVector() >= speed) { - dist = dist.normalize(); - this.motionX = dist.xCoord * speed; - this.motionY = dist.yCoord * speed; - this.motionZ = dist.zCoord * speed; - } - } - loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); - - this.moveEntity(motionX, motionY, motionZ); } + + super.onUpdate(); } @Override @@ -89,10 +56,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, @Override protected void writeEntityToNBT(NBTTagCompound nbt) { - - nbt.setDouble("tX", targetX); - nbt.setDouble("tY", targetY); - nbt.setDouble("tZ", targetZ); + super.writeEntityToNBT(nbt); NBTTagList nbttaglist = new NBTTagList(); @@ -112,18 +76,12 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, nbt.setInteger("fluidAmount", fluid.fill); } - nbt.setByte("app", this.dataWatcher.getWatchableObjectByte(10)); nbt.setByte("load", this.dataWatcher.getWatchableObjectByte(11)); } @Override protected void readEntityFromNBT(NBTTagCompound nbt) { - - if(nbt.hasKey("tY")) { - this.targetX = nbt.getDouble("tX"); - this.targetY = nbt.getDouble("tY"); - this.targetZ = nbt.getDouble("tZ"); - } + super.readEntityFromNBT(nbt); NBTTagList nbttaglist = nbt.getTagList("Items", 10); this.slots = new ItemStack[this.getSizeInventory()]; @@ -141,20 +99,8 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, this.fluid = new FluidStack(Fluids.fromName(nbt.getString("fluidType")), nbt.getInteger("fluidAmount")); } - this.dataWatcher.updateObject(10, nbt.getByte("app")); this.dataWatcher.updateObject(11, nbt.getByte("load")); } - - @SideOnly(Side.CLIENT) - public void setPositionAndRotation2(double x, double y, double z, float yaw, float pitch, int theNumberThree) { - this.syncPosX = x; - this.syncPosY = y; - this.syncPosZ = z; - this.turnProgress = theNumberThree; - this.motionX = this.velocityX; - this.motionY = this.velocityY; - this.motionZ = this.velocityZ; - } @Override public ItemStack getStackInSlot(int slot) { diff --git a/src/main/java/com/hbm/entity/item/EntityDroneBase.java b/src/main/java/com/hbm/entity/item/EntityDroneBase.java index 12969f711..c27ab56d1 100644 --- a/src/main/java/com/hbm/entity/item/EntityDroneBase.java +++ b/src/main/java/com/hbm/entity/item/EntityDroneBase.java @@ -4,6 +4,8 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; import net.minecraft.world.World; public abstract class EntityDroneBase extends Entity { @@ -16,8 +18,19 @@ public abstract class EntityDroneBase extends Entity { @SideOnly(Side.CLIENT) protected double velocityY; @SideOnly(Side.CLIENT) protected double velocityZ; + public double targetX = -1; + public double targetY = -1; + public double targetZ = -1; + public EntityDroneBase(World world) { super(world); + this.setSize(1.5F, 2.0F); + } + + public void setTarget(double x, double y, double z) { + this.targetX = x; + this.targetY = y; + this.targetZ = z; } @Override @@ -81,6 +94,26 @@ public abstract class EntityDroneBase extends Entity { worldObj.spawnParticle("smoke", posX - 1.125, posY + 0.75, posZ, 0, -0.2, 0); worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ + 1.125, 0, -0.2, 0); worldObj.spawnParticle("smoke", posX, posY + 0.75, posZ - 1.125, 0, -0.2, 0); + } else { + + this.motionX = 0; + this.motionY = 0; + this.motionZ = 0; + + if(this.targetY != -1) { + + Vec3 dist = Vec3.createVectorHelper(targetX - posX, targetY - posY, targetZ - posZ); + double speed = getSpeed(); + + if(dist.lengthVector() >= speed) { + dist = dist.normalize(); + this.motionX = dist.xCoord * speed; + this.motionY = dist.yCoord * speed; + this.motionZ = dist.zCoord * speed; + } + } + + this.moveEntity(motionX, motionY, motionZ); } } @@ -94,4 +127,37 @@ public abstract class EntityDroneBase extends Entity { this.velocityY = this.motionY = motionY; this.velocityZ = this.motionZ = motionZ; } + + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double x, double y, double z, float yaw, float pitch, int theNumberThree) { + this.syncPosX = x; + this.syncPosY = y; + this.syncPosZ = z; + this.turnProgress = theNumberThree; + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + + nbt.setDouble("tX", targetX); + nbt.setDouble("tY", targetY); + nbt.setDouble("tZ", targetZ); + + nbt.setByte("app", this.dataWatcher.getWatchableObjectByte(10)); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + + if(nbt.hasKey("tY")) { + this.targetX = nbt.getDouble("tX"); + this.targetY = nbt.getDouble("tY"); + this.targetZ = nbt.getDouble("tZ"); + } + + this.dataWatcher.updateObject(10, nbt.getByte("app")); + } } diff --git a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java index 6878f138e..90bd0adce 100644 --- a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java @@ -1,16 +1,127 @@ package com.hbm.entity.item; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemDrone.EnumDroneType; +import com.hbm.tileentity.network.TileEntityDroneDock; +import com.hbm.tileentity.network.TileEntityDroneProvider; +import com.hbm.tileentity.network.TileEntityDroneRequester; +import com.hbm.util.fauxpointtwelve.BlockPos; + import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityRequestDrone extends EntityDroneBase { public ItemStack heldItem; + public List program = new ArrayList(); + + public static enum DroneProgram { + UNLOAD, DOCK + } public EntityRequestDrone(World world) { super(world); } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + if(Vec3.createVectorHelper(motionX, motionY, motionZ).lengthVector() < 0.01) { + if(program.isEmpty()) { + this.setDead(); //self-destruct if no further operations are pending + this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F); + return; + } + + Object next = program.get(0); + program.remove(0); + + if(next instanceof BlockPos) { + BlockPos pos = (BlockPos) next; + this.setTarget(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5); + } else if(next instanceof AStack && heldItem == null) { + + AStack aStack = (AStack) next; + TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + + if(tile instanceof TileEntityDroneProvider) { + TileEntityDroneProvider provider = (TileEntityDroneProvider) tile; + + for(int i = 0; i < provider.slots.length; i++) { + ItemStack stack = provider.slots[i]; + + if(stack != null && aStack.matchesRecipe(stack, true)) { + this.heldItem = stack.copy(); + this.setAppearance(1); + provider.slots[i] = null; + provider.markDirty(); + break; + } + } + } + } else if(next == DroneProgram.UNLOAD && this.heldItem != null) { + + TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + if(tile instanceof TileEntityDroneRequester) { + TileEntityDroneRequester requester = (TileEntityDroneRequester) tile; + + for(int i = 9; i < 18; i++) { + ItemStack stack = requester.slots[i]; + if(stack != null && stack.getItem() == heldItem.getItem() && stack.getItemDamage() == heldItem.getItemDamage()) { + int toTransfer = Math.min(stack.getMaxStackSize() - stack.stackSize, heldItem.stackSize); + requester.slots[i].stackSize += toTransfer; + this.heldItem.stackSize -= toTransfer; + } + } + + if(this.heldItem.stackSize <= 0) this.heldItem = null; + + if(this.heldItem != null) for(int i = 9; i < 18; i++) { + if(requester.slots[i] == null) { + requester.slots[i] = this.heldItem.copy(); + this.heldItem = null; + break; + } + } + + if(this.heldItem == null) { + this.setAppearance(0); + } + + requester.markDirty(); + } + } else if(next == DroneProgram.DOCK) { + + TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + if(tile instanceof TileEntityDroneDock) { + TileEntityDroneDock dock = (TileEntityDroneDock) tile; + + for(int i = 0; i < dock.slots.length; i++) { + if(dock.slots[i] == null) { + this.setDead(); + dock.slots[i] = new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()); + } + } + } + + if(!this.isDead) { + this.setDead(); + this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F); + } + } + } + } + } @Override protected void readEntityFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/network/RequestNetwork.java b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java index b8578d35d..6e01086a0 100644 --- a/src/main/java/com/hbm/tileentity/network/RequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.network; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map.Entry; @@ -47,6 +48,7 @@ public class RequestNetwork { // if the lease timestamp is too far back, time out the node if(node.lease < System.currentTimeMillis() - maxAge) { + node.reachableNodes.clear(); // just to be sure there's no cyclical references happening creating memory leaks pathIt.remove(); } } @@ -69,8 +71,10 @@ public class RequestNetwork { public static class PathNode { public BlockPos pos; public long lease; - public PathNode(BlockPos pos) { + public Set reachableNodes = new HashSet(); + public PathNode(BlockPos pos, Set reachableNodes) { this.pos = pos; + this.reachableNodes = new HashSet(reachableNodes); this.lease = System.currentTimeMillis(); } @Override public int hashCode() { return pos.hashCode(); } @@ -80,8 +84,8 @@ public class RequestNetwork { /** Node created by providers, lists available items */ public static class OfferNode extends PathNode { public List offer; - public OfferNode(BlockPos pos, List offer) { - super(pos); + public OfferNode(BlockPos pos, Set reachableNodes, List offer) { + super(pos, reachableNodes); this.offer = offer; } } @@ -89,8 +93,8 @@ public class RequestNetwork { /** Node created by requesters, lists requested AStacks */ public static class RequestNode extends PathNode { public List request; - public RequestNode(BlockPos pos, List request) { - super(pos); + public RequestNode(BlockPos pos, Set reachableNodes, List request) { + super(pos, reachableNodes); this.request = request; } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java index 0ffc3e884..f190ea216 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java @@ -1,9 +1,21 @@ package com.hbm.tileentity.network; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import com.hbm.entity.item.EntityRequestDrone; +import com.hbm.entity.item.EntityRequestDrone.DroneProgram; +import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.container.ContainerDroneDock; import com.hbm.inventory.gui.GUIDroneDock; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemDrone.EnumDroneType; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.network.RequestNetwork.OfferNode; import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.tileentity.network.RequestNetwork.RequestNode; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.relauncher.Side; @@ -11,10 +23,13 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class TileEntityDroneDock extends TileEntityRequestNetworkContainer implements IGUIProvider { + public static final int pathingDepth = 5; + public TileEntityDroneDock() { super(9); } @@ -27,6 +42,129 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple @Override public void updateEntity() { super.updateEntity(); + + if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 100 == 0 && this.hasDrone()) { + + // grab all nodes in a 5 chunk radius + Set localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 5); + List requests = new ArrayList(); + List offers = new ArrayList(); + + for(PathNode local : localNodes) { + if(local instanceof RequestNode) requests.add((RequestNode) local); + if(local instanceof OfferNode) offers.add((OfferNode) local); + } + + attempt: for(int i = 0; i < 5; i++) { + + // randomize! + Collections.shuffle(requests); + Collections.shuffle(offers); + RequestNode firstRequest = null; + + // simply pick the first request node that has unfulfilled requests + for(RequestNode request : requests) { + if(!request.request.isEmpty()) { + firstRequest = request; + break; + } + } + + if(firstRequest != null) { + + PathNode own = createNode(new BlockPos(xCoord, yCoord + 1, zCoord)); + AStack request = firstRequest.request.get(worldObj.rand.nextInt(firstRequest.request.size())); + + outer: for(OfferNode offer : offers) { + + for(ItemStack stack : offer.offer) { + if(stack != null && request.matchesRecipe(stack, true)) { + if(tryEmbark(own, firstRequest, offer, request)) break attempt; // if the drone can be pathed and spawned, stop doing more attempts + break outer; // if not, simply continue iterating over offer nodes + } + } + } + } + } + } + } + + public boolean tryEmbark(PathNode dock, RequestNode request, OfferNode offer, AStack item) { + + List dockToOffer = generatePath(dock, offer); + if(dockToOffer == null) return false; + List offerToRequest = generatePath(offer, request); + if(offerToRequest == null) return false; + List requestToDock = generatePath(request, dock); + if(requestToDock == null) return false; + + + for(int i = 0; i < this.slots.length; i++) { + ItemStack stack = slots[i]; + if(stack != null && stack.getItem() == ModItems.drone && stack.getItemDamage() == EnumDroneType.REQUEST.ordinal()) { + this.decrStackSize(i, 1); + break; + } + } + + EntityRequestDrone drone = new EntityRequestDrone(worldObj); + drone.setPosition(xCoord + 0.5, yCoord + 1, zCoord + 0.5); + + // write programming + for(PathNode node : dockToOffer) drone.program.add(node); + drone.program.add(offer); + drone.program.add(item); + for(PathNode node : offerToRequest) drone.program.add(node); + drone.program.add(request); + drone.program.add(DroneProgram.UNLOAD); + for(PathNode node : requestToDock) drone.program.add(node); + drone.program.add(dock); + drone.program.add(DroneProgram.DOCK); + + return true; + } + + public List generatePath(PathNode start, PathNode end) { + + List> paths = new ArrayList(); + List init = new ArrayList(); + init.add(start); + paths.add(init); + + // breadth-first search + for(int i = 0; i < pathingDepth; i++) { + + List> newPaths = new ArrayList(); + + for(List oldPath : paths) { + for(PathNode connected : oldPath.get(oldPath.size() - 1).reachableNodes) { + List newPath = new ArrayList(); + newPath.addAll(oldPath); + + if(connected.hashCode() == end.hashCode()) { + newPath.remove(0); // we only want the in-betweens + return newPath; + } + + newPath.add(connected); + newPaths.add(newPath); + } + } + + paths = newPaths; + } + + return null; + } + + public boolean hasDrone() { + + for(int i = 0; i < this.slots.length; i++) { + ItemStack stack = slots[i]; + if(stack != null && stack.getItem() == ModItems.drone && stack.getItemDamage() == EnumDroneType.REQUEST.ordinal()) return true; + } + + return false; } @Override @@ -42,6 +180,6 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple @Override public PathNode createNode(BlockPos pos) { - return new PathNode(pos); + return new PathNode(pos, this.reachableNodes); } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java index 83a71dc40..0b32073e6 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java @@ -59,6 +59,6 @@ public class TileEntityDroneProvider extends TileEntityRequestNetworkContainer i public PathNode createNode(BlockPos pos) { List offer = new ArrayList(); for(ItemStack stack : slots) if(stack != null) offer.add(stack.copy()); - return new OfferNode(pos, offer); + return new OfferNode(pos, this.reachableNodes, offer); } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java index a58724d26..b3a7a942d 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java @@ -56,19 +56,6 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer this.matcher.readFromNBT(nbt); } - public boolean matchesFilter(ItemStack stack) { - - for(int i = 0; i < 9; i++) { - ItemStack filter = slots[i]; - - if(filter != null && this.matcher.isValidForFilter(filter, i, stack)) { - return true; - } - } - - return false; - } - public void nextMode(int i) { this.matcher.nextMode(worldObj, slots[i], i); } @@ -104,6 +91,7 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer List request = new ArrayList(); for(int i = 0; i < 9; i++) { ItemStack filter = slots[i]; + ItemStack stock = slots[i + 9]; if(filter == null) continue; String mode = this.matcher.modes[i]; AStack aStack = null; @@ -112,12 +100,14 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer aStack = new ComparableStack(filter).makeSingular(); } else if(ModulePatternMatcher.MODE_WILDCARD.equals(mode)) { aStack = new ComparableStack(filter.getItem(), 1, OreDictionary.WILDCARD_VALUE); - } else { + } else if(mode != null) { aStack = new OreDictStack(mode); } - request.add(aStack); + if(aStack == null) continue; + + if(stock == null || !this.matcher.isValidForFilter(filter, i, stock)) request.add(aStack); } - return new RequestNode(pos, request); + return new RequestNode(pos, this.reachableNodes, request); } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java index e196b17bd..677078341 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypointRequest.java @@ -38,6 +38,6 @@ public class TileEntityDroneWaypointRequest extends TileEntityRequestNetwork { @Override public PathNode createNode(BlockPos pos) { - return new PathNode(pos); + return new PathNode(pos, this.reachableNodes); } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java index 3ccf46d65..c64efc326 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java @@ -5,10 +5,14 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.network.RequestNetwork.PathNode; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; @@ -45,6 +49,7 @@ public abstract class TileEntityRequestNetwork extends TileEntity { // since we can assume a sane number of nodes to exist at any given time, we can run this check in full every second Iterator it = knownNodes.iterator(); Set localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 2); // this bit may spiral into multiple nested hashtable lookups but it's limited to only a few chunks so it shouldn't be an issue + localNodes.remove(pos); while(it.hasNext()) { PathNode node = it.next(); if(!localNodes.contains(node)) { @@ -60,6 +65,13 @@ public abstract class TileEntityRequestNetwork extends TileEntity { (known.pos.getX() - pos.getX()) / 2D, (known.pos.getY() - pos.getY()) / 2D, (known.pos.getZ() - pos.getZ()) / 2D, reachableNodes.contains(known) ? 0x00ff00 : 0xff0000); } + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", 0x0000ff); + data.setFloat("scale", 1.5F); + data.setString("text", knownNodes.size() + " / " + reachableNodes.size() + " / " + localNodes.size()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); //both following checks run the `hasPath` function which is costly, so it only runs one op at a time @@ -151,8 +163,9 @@ public abstract class TileEntityRequestNetwork extends TileEntity { * @return */ public static Set getAllLocalNodes(World world, int x, int z, int range) { - + Set nodes = new HashSet(); + Set pos = new HashSet(); x >>= 4; z >>= 4; @@ -167,12 +180,14 @@ public abstract class TileEntityRequestNetwork extends TileEntity { Set nodeList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); if(nodeList != null) for(PathNode node : nodeList) { - nodes.add(node); + if(!pos.contains(node.pos)) { + nodes.add(node); + //pos.add(node.pos); + } } } } return nodes; } - } From 743b7a157613fb395c396b85370f2fe176505637 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 30 Sep 2023 21:05:46 +0200 Subject: [PATCH 052/207] two weeks of agony are finally paying off --- .../hbm/entity/item/EntityRequestDrone.java | 173 ++++++++++-------- .../entity/item/RenderDeliveryDrone.java | 4 +- .../tileentity/network/RequestNetwork.java | 19 +- .../network/TileEntityDroneDock.java | 57 +++--- .../network/TileEntityRequestNetwork.java | 25 ++- src/main/java/com/hbm/util/HashedSet.java | 132 +++++++++++++ 6 files changed, 283 insertions(+), 127 deletions(-) create mode 100644 src/main/java/com/hbm/util/HashedSet.java diff --git a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java index 90bd0adce..30d22ab20 100644 --- a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java @@ -21,6 +21,7 @@ public class EntityRequestDrone extends EntityDroneBase { public ItemStack heldItem; public List program = new ArrayList(); + int nextActionTimer = 0; public static enum DroneProgram { UNLOAD, DOCK @@ -37,92 +38,110 @@ public class EntityRequestDrone extends EntityDroneBase { if(!worldObj.isRemote) { if(Vec3.createVectorHelper(motionX, motionY, motionZ).lengthVector() < 0.01) { - if(program.isEmpty()) { - this.setDead(); //self-destruct if no further operations are pending - this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F); - return; - } - Object next = program.get(0); - program.remove(0); - - if(next instanceof BlockPos) { - BlockPos pos = (BlockPos) next; - this.setTarget(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5); - } else if(next instanceof AStack && heldItem == null) { + if(nextActionTimer > 0) { + nextActionTimer--; + } else { + nextActionTimer = 5; - AStack aStack = (AStack) next; - TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); - - if(tile instanceof TileEntityDroneProvider) { - TileEntityDroneProvider provider = (TileEntityDroneProvider) tile; - - for(int i = 0; i < provider.slots.length; i++) { - ItemStack stack = provider.slots[i]; - - if(stack != null && aStack.matchesRecipe(stack, true)) { - this.heldItem = stack.copy(); - this.setAppearance(1); - provider.slots[i] = null; - provider.markDirty(); - break; - } - } - } - } else if(next == DroneProgram.UNLOAD && this.heldItem != null) { - - TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); - if(tile instanceof TileEntityDroneRequester) { - TileEntityDroneRequester requester = (TileEntityDroneRequester) tile; - - for(int i = 9; i < 18; i++) { - ItemStack stack = requester.slots[i]; - if(stack != null && stack.getItem() == heldItem.getItem() && stack.getItemDamage() == heldItem.getItemDamage()) { - int toTransfer = Math.min(stack.getMaxStackSize() - stack.stackSize, heldItem.stackSize); - requester.slots[i].stackSize += toTransfer; - this.heldItem.stackSize -= toTransfer; - } - } - - if(this.heldItem.stackSize <= 0) this.heldItem = null; - - if(this.heldItem != null) for(int i = 9; i < 18; i++) { - if(requester.slots[i] == null) { - requester.slots[i] = this.heldItem.copy(); - this.heldItem = null; - break; - } - } - - if(this.heldItem == null) { - this.setAppearance(0); - } - - requester.markDirty(); - } - } else if(next == DroneProgram.DOCK) { - - TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); - if(tile instanceof TileEntityDroneDock) { - TileEntityDroneDock dock = (TileEntityDroneDock) tile; - - for(int i = 0; i < dock.slots.length; i++) { - if(dock.slots[i] == null) { - this.setDead(); - dock.slots[i] = new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()); - } - } - } - - if(!this.isDead) { - this.setDead(); + if(program.isEmpty()) { + this.setDead(); //self-destruct if no further operations are pending this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F); + return; + } + + Object next = program.get(0); + System.out.println("next action: " + next); + program.remove(0); + + if(next instanceof BlockPos) { + BlockPos pos = (BlockPos) next; + this.setTarget(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5); + System.out.println("targetting"); + } else if(next instanceof AStack && heldItem == null) { + + AStack aStack = (AStack) next; + TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + + if(tile instanceof TileEntityDroneProvider) { + TileEntityDroneProvider provider = (TileEntityDroneProvider) tile; + + for(int i = 0; i < provider.slots.length; i++) { + ItemStack stack = provider.slots[i]; + + if(stack != null && aStack.matchesRecipe(stack, true)) { + this.heldItem = stack.copy(); + this.setAppearance(1); + provider.slots[i] = null; + provider.markDirty(); + break; + } + } + } + System.out.println("loading"); + } else if(next == DroneProgram.UNLOAD && this.heldItem != null) { + + TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + if(tile instanceof TileEntityDroneRequester) { + TileEntityDroneRequester requester = (TileEntityDroneRequester) tile; + + for(int i = 9; i < 18; i++) { + ItemStack stack = requester.slots[i]; + if(stack != null && stack.getItem() == heldItem.getItem() && stack.getItemDamage() == heldItem.getItemDamage()) { + int toTransfer = Math.min(stack.getMaxStackSize() - stack.stackSize, heldItem.stackSize); + requester.slots[i].stackSize += toTransfer; + this.heldItem.stackSize -= toTransfer; + } + } + + if(this.heldItem.stackSize <= 0) this.heldItem = null; + + if(this.heldItem != null) for(int i = 9; i < 18; i++) { + if(requester.slots[i] == null) { + requester.slots[i] = this.heldItem.copy(); + this.heldItem = null; + break; + } + } + + if(this.heldItem == null) { + this.setAppearance(0); + } + + requester.markDirty(); + } + System.out.println("unloading"); + } else if(next == DroneProgram.DOCK) { + + TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + if(tile instanceof TileEntityDroneDock) { + TileEntityDroneDock dock = (TileEntityDroneDock) tile; + + for(int i = 0; i < dock.slots.length; i++) { + if(dock.slots[i] == null) { + this.setDead(); + dock.slots[i] = new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()); + break; + } + } + } + + if(!this.isDead) { + this.setDead(); + this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F); + } + System.out.println("docking"); } } } } } + @Override + public double getSpeed() { + return 0.5D; + } + @Override protected void readEntityFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java index 386235f40..04bbcf027 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java +++ b/src/main/java/com/hbm/render/entity/item/RenderDeliveryDrone.java @@ -2,7 +2,7 @@ package com.hbm.render.entity.item; import org.lwjgl.opengl.GL11; -import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.entity.item.EntityDroneBase; import com.hbm.entity.item.EntityRequestDrone; import com.hbm.main.ResourceManager; @@ -29,7 +29,7 @@ public class RenderDeliveryDrone extends Render { bindTexture(ResourceManager.delivery_drone_tex); ResourceManager.delivery_drone.renderPart("Drone"); - EntityDeliveryDrone drone = (EntityDeliveryDrone) entity; + EntityDroneBase drone = (EntityDroneBase) entity; int style = drone.getAppearance(); if(style == 1) ResourceManager.delivery_drone.renderPart("Crate"); diff --git a/src/main/java/com/hbm/tileentity/network/RequestNetwork.java b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java index 6e01086a0..cb1116004 100644 --- a/src/main/java/com/hbm/tileentity/network/RequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java @@ -1,13 +1,12 @@ package com.hbm.tileentity.network; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map.Entry; -import java.util.Set; import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.util.HashedSet; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.item.ItemStack; @@ -17,7 +16,7 @@ import net.minecraft.world.World; public class RequestNetwork { private static int timer = 0; - public static HashMap>> activeWaypoints = new HashMap(); + public static HashMap>> activeWaypoints = new HashMap(); public static final int maxAge = 2_000; public static void updateEntries() { @@ -33,13 +32,13 @@ public class RequestNetwork { // iterate over each dim while(worldIt.hasNext()) { - Entry>> worldEntry = (Entry) worldIt.next(); + Entry>> worldEntry = (Entry) worldIt.next(); Iterator chunkIt = worldEntry.getValue().entrySet().iterator(); // iterate over each chunk while(chunkIt.hasNext()) { - Entry> chunkEntry = (Entry) chunkIt.next(); + Entry> chunkEntry = (Entry) chunkIt.next(); Iterator pathIt = chunkEntry.getValue().iterator(); // iterate over each path node @@ -71,10 +70,10 @@ public class RequestNetwork { public static class PathNode { public BlockPos pos; public long lease; - public Set reachableNodes = new HashSet(); - public PathNode(BlockPos pos, Set reachableNodes) { + public HashedSet reachableNodes = new HashedSet(); + public PathNode(BlockPos pos, HashedSet reachableNodes) { this.pos = pos; - this.reachableNodes = new HashSet(reachableNodes); + this.reachableNodes = new HashedSet(reachableNodes); this.lease = System.currentTimeMillis(); } @Override public int hashCode() { return pos.hashCode(); } @@ -84,7 +83,7 @@ public class RequestNetwork { /** Node created by providers, lists available items */ public static class OfferNode extends PathNode { public List offer; - public OfferNode(BlockPos pos, Set reachableNodes, List offer) { + public OfferNode(BlockPos pos, HashedSet reachableNodes, List offer) { super(pos, reachableNodes); this.offer = offer; } @@ -93,7 +92,7 @@ public class RequestNetwork { /** Node created by requesters, lists requested AStacks */ public static class RequestNode extends PathNode { public List request; - public RequestNode(BlockPos pos, Set reachableNodes, List request) { + public RequestNode(BlockPos pos, HashedSet reachableNodes, List request) { super(pos, reachableNodes); this.request = request; } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java index f190ea216..3aa212846 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java @@ -3,7 +3,6 @@ package com.hbm.tileentity.network; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Set; import com.hbm.entity.item.EntityRequestDrone; import com.hbm.entity.item.EntityRequestDrone.DroneProgram; @@ -16,6 +15,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.network.RequestNetwork.OfferNode; import com.hbm.tileentity.network.RequestNetwork.PathNode; import com.hbm.tileentity.network.RequestNetwork.RequestNode; +import com.hbm.util.HashedSet; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.relauncher.Side; @@ -46,7 +46,7 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 100 == 0 && this.hasDrone()) { // grab all nodes in a 5 chunk radius - Set localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 5); + HashedSet localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 5); List requests = new ArrayList(); List offers = new ArrayList(); @@ -72,14 +72,14 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple if(firstRequest != null) { - PathNode own = createNode(new BlockPos(xCoord, yCoord + 1, zCoord)); + PathNode own = localNodes.getMap().get(new BlockPos(xCoord, yCoord + 1, zCoord).hashCode()); AStack request = firstRequest.request.get(worldObj.rand.nextInt(firstRequest.request.size())); outer: for(OfferNode offer : offers) { for(ItemStack stack : offer.offer) { if(stack != null && request.matchesRecipe(stack, true)) { - if(tryEmbark(own, firstRequest, offer, request)) break attempt; // if the drone can be pathed and spawned, stop doing more attempts + if(tryEmbark(own, firstRequest, offer, request, localNodes)) break attempt; // if the drone can be pathed and spawned, stop doing more attempts break outer; // if not, simply continue iterating over offer nodes } } @@ -89,13 +89,13 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple } } - public boolean tryEmbark(PathNode dock, RequestNode request, OfferNode offer, AStack item) { - - List dockToOffer = generatePath(dock, offer); + public boolean tryEmbark(PathNode dock, RequestNode request, OfferNode offer, AStack item, HashedSet localNodes) { + + List dockToOffer = generatePath(dock, offer, localNodes); if(dockToOffer == null) return false; - List offerToRequest = generatePath(offer, request); + List offerToRequest = generatePath(offer, request, localNodes); if(offerToRequest == null) return false; - List requestToDock = generatePath(request, dock); + List requestToDock = generatePath(request, dock, localNodes); if(requestToDock == null) return false; @@ -111,20 +111,22 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple drone.setPosition(xCoord + 0.5, yCoord + 1, zCoord + 0.5); // write programming - for(PathNode node : dockToOffer) drone.program.add(node); - drone.program.add(offer); + for(PathNode node : dockToOffer) drone.program.add(node.pos); + drone.program.add(offer.pos); drone.program.add(item); - for(PathNode node : offerToRequest) drone.program.add(node); - drone.program.add(request); + for(PathNode node : offerToRequest) drone.program.add(node.pos); + drone.program.add(request.pos); drone.program.add(DroneProgram.UNLOAD); - for(PathNode node : requestToDock) drone.program.add(node); - drone.program.add(dock); + for(PathNode node : requestToDock) drone.program.add(node.pos); + drone.program.add(dock.pos); drone.program.add(DroneProgram.DOCK); + worldObj.spawnEntityInWorld(drone); + return true; } - public List generatePath(PathNode start, PathNode end) { + public List generatePath(PathNode start, PathNode end, HashedSet localNodes) { List> paths = new ArrayList(); List init = new ArrayList(); @@ -137,17 +139,22 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple List> newPaths = new ArrayList(); for(List oldPath : paths) { - for(PathNode connected : oldPath.get(oldPath.size() - 1).reachableNodes) { - List newPath = new ArrayList(); - newPath.addAll(oldPath); + for(PathNode connectedUnsafe : oldPath.get(oldPath.size() - 1).reachableNodes) { - if(connected.hashCode() == end.hashCode()) { - newPath.remove(0); // we only want the in-betweens - return newPath; + PathNode connectedSafe = localNodes.getMap().get(connectedUnsafe.hashCode()); // lookup to translate potentially outdated nodes into current ones + if(connectedSafe != null) { + + List newPath = new ArrayList(); + newPath.addAll(oldPath); + + if(connectedSafe.hashCode() == end.hashCode()) { + newPath.remove(0); // we only want the in-betweens + return newPath; + } + + newPath.add(connectedSafe); + newPaths.add(newPath); } - - newPath.add(connected); - newPaths.add(newPath); } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java index c64efc326..4e385f5d1 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java @@ -1,13 +1,12 @@ package com.hbm.tileentity.network; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; -import java.util.Set; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.network.RequestNetwork.PathNode; +import com.hbm.util.HashedSet; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -31,8 +30,8 @@ import net.minecraft.world.World; */ public abstract class TileEntityRequestNetwork extends TileEntity { - public Set reachableNodes = new HashSet(); - public Set knownNodes = new HashSet(); + public HashedSet reachableNodes = new HashedSet(); + public HashedSet knownNodes = new HashedSet(); public static final int maxRange = 24; @Override @@ -48,7 +47,7 @@ public abstract class TileEntityRequestNetwork extends TileEntity { // remove known nodes that no longer exist // since we can assume a sane number of nodes to exist at any given time, we can run this check in full every second Iterator it = knownNodes.iterator(); - Set localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 2); // this bit may spiral into multiple nested hashtable lookups but it's limited to only a few chunks so it shouldn't be an issue + HashedSet localNodes = this.getAllLocalNodes(worldObj, xCoord, zCoord, 2); // this bit may spiral into multiple nested hashtable lookups but it's limited to only a few chunks so it shouldn't be an issue localNodes.remove(pos); while(it.hasNext()) { PathNode node = it.next(); @@ -136,7 +135,7 @@ public abstract class TileEntityRequestNetwork extends TileEntity { */ public static void push(World world, PathNode node) { - HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); + HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); if(coordMap == null) { coordMap = new HashMap(); @@ -144,10 +143,10 @@ public abstract class TileEntityRequestNetwork extends TileEntity { } ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(node.pos.getX() >> 4, node.pos.getZ() >> 4); - Set posList = coordMap.get(chunkPos); + HashedSet posList = coordMap.get(chunkPos); if(posList == null) { - posList = new HashSet(); + posList = new HashedSet(); coordMap.put(chunkPos, posList); } @@ -162,22 +161,22 @@ public abstract class TileEntityRequestNetwork extends TileEntity { * @param z * @return */ - public static Set getAllLocalNodes(World world, int x, int z, int range) { + public static HashedSet getAllLocalNodes(World world, int x, int z, int range) { - Set nodes = new HashSet(); - Set pos = new HashSet(); + HashedSet nodes = new HashedSet(); + HashedSet pos = new HashedSet(); x >>= 4; z >>= 4; - HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); + HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); if(coordMap == null) return nodes; for(int i = -range; i <= range; i++) { for(int j = -range; j <= range; j++) { - Set nodeList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); + HashedSet nodeList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); if(nodeList != null) for(PathNode node : nodeList) { if(!pos.contains(node.pos)) { diff --git a/src/main/java/com/hbm/util/HashedSet.java b/src/main/java/com/hbm/util/HashedSet.java new file mode 100644 index 000000000..861862206 --- /dev/null +++ b/src/main/java/com/hbm/util/HashedSet.java @@ -0,0 +1,132 @@ +package com.hbm.util; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map.Entry; +import java.util.Set; + +import org.apache.commons.lang3.NotImplementedException; + +/** + * Through whichever mechanism, HashSets allow for multiple instances with the same hash, even though they already has that hash during instantiation + * How is this possible? I don't know and I don't want to know. + * + * This is a crude recreation using a HashMap and, instead of whichever braindead bullshit HashSet does, this HashMap uses the hashCode() as the key and the object as the value. + * + * @author hbm + * + * @param + */ +public class HashedSet implements Set { + + HashMap map = new HashMap(); + + public static class HashedIterator implements Iterator { + + private Iterator> iterator; + + public HashedIterator(HashedSet set) { + this.iterator = set.map.entrySet().iterator(); + } + + @Override + public boolean hasNext() { + return this.iterator.hasNext(); + } + + @Override + public Object next() { + return this.iterator.next().getValue(); + } + + @Override + public void remove() { + this.iterator.remove(); + } + } + + public HashedSet() { } + + public HashedSet(Set reachableNodes) { + this.addAll(reachableNodes); + } + + public HashMap getMap() { + return this.map; + } + + @Override + public boolean add(Object e) { + boolean contains = this.contains(e); + this.map.put(e.hashCode(), (T) e); + return contains; + } + + @Override + public boolean addAll(Collection c) { + boolean ret = false; + for(Object o : c) if(add(o)) ret = true; + return ret; + } + + @Override + public void clear() { + this.map.clear(); + } + + @Override + public boolean contains(Object o) { + return this.map.containsKey(o.hashCode()); + } + + @Override + public boolean containsAll(Collection c) { + + for(Object o : c) { + if(!this.contains(o)) return false; + } + + return true; + } + + @Override + public boolean isEmpty() { + return this.map.isEmpty(); + } + + @Override + public Iterator iterator() { + return new HashedIterator(this); + } + + @Override + public boolean remove(Object o) { + return false; + } + + @Override + public boolean removeAll(Collection c) { + return false; + } + + @Override + public boolean retainAll(Collection c) { + throw new NotImplementedException("Fuck you"); + } + + @Override + public int size() { + return this.map.size(); + } + + @Override + public Object[] toArray() { + throw new NotImplementedException("Fuck you"); + } + + @Override + public Object[] toArray(Object[] a) { + throw new NotImplementedException("Fuck you"); + } +} From 5e3a9480e1bc4519921cdcc0fa44a06792868090 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 1 Oct 2023 17:33:27 +0200 Subject: [PATCH 053/207] huzzah --- changelog | 94 +++++++----------- gradle.properties | 2 +- src/main/java/com/hbm/config/WorldConfig.java | 8 +- .../com/hbm/entity/item/EntityDroneBase.java | 2 +- .../hbm/entity/item/EntityRequestDrone.java | 77 ++++++++++++-- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 18 ++++ .../machine/TileEntityMachineTurbineGas.java | 2 +- .../machine/storage/TileEntityBarrel.java | 4 +- .../storage/TileEntityMachineFluidTank.java | 4 +- .../tileentity/network/RequestNetwork.java | 18 +++- .../network/TileEntityDroneCrate.java | 8 +- .../network/TileEntityDroneDock.java | 3 +- .../network/TileEntityDroneRequester.java | 12 +++ .../network/TileEntityRequestNetwork.java | 9 +- src/main/java/com/hbm/util/HashedSet.java | 9 +- .../hbm/util/fauxpointtwelve/BlockPos.java | 4 +- src/main/resources/assets/hbm/lang/de_DE.lang | 16 +++ src/main/resources/assets/hbm/lang/en_US.lang | 23 ++++- .../hbm/textures/models/machines/drone.png | Bin 2506 -> 2501 bytes .../models/machines/drone_express.png | Bin 2744 -> 2740 bytes .../models/machines/drone_request.png | Bin 2759 -> 2754 bytes 22 files changed, 226 insertions(+), 89 deletions(-) diff --git a/changelog b/changelog index 03232f545..9afc864be 100644 --- a/changelog +++ b/changelog @@ -1,62 +1,44 @@ ## Added -* Telex - * A basic message system using redstone over radio - * Allows messages to be sent at a rate of 20 characters per second - * Features things like text formatting, printing and the terminal bell -* Ground water pumps - * Come in steam-powered and electric variants - * Faster than their infinite barrel counterpart - * Need to be placed below Y:70 and on solid ground to work - * Compatible floor blocks include all dirt variants and sand, the pump will not work when placed on pure rock -* Schrabidate capacitor - * Can store 50GHE -* Express conveyor belts - * Work like regular single-lane conveyor belts but 3x faster -* Industrial smokestack - * An even larger smokestack, matching the size of the coker unit - * Reduced pollution by 90%, as opposed to the brick smokestack's 75% -* Power gauge - * Like the flow gauge pipe for cable networks - * Shows the total amount of power being transferred within the connected network -* Trenchmaster armor - * A new unique set of armor that is currently unobtainable - * Has new traits like faster reloads, a 33% chance of not using up ammo and step-assist +* Powered condenser + * A large form of the condenser that is 10x faster than the large cooling tower + * Needs 10HE per mB condensed (roughly 5% of the power output from steam, using industrial turbines) + * Allows for more compact setups, setups underground where cooling towers wouldn't fit, and ones with ridiculously high LPS throughput where multiple large cooling towers were necessary +* Transport drones + * Will move in a circular path between transport drone crates, loading and unloading either items or fluids + * Finally allows for automated long-range transport without ridiculously long conveyor belts or impractical pipelines + * Come in 4 variants, slow and express, each can be chunkloading or not + * To create a route, place crates in input and output mode, then add waypoints for avoiding obstacles, get a transport drone linker and click on each waypoint/crate in order, then shift-click to delete the last cached position from the linker (in order to not screw up future links) + * Waypoints can be adjusted in height, right click or shift-click to adjust the offset of the actual waypoint compared to the waypoint block. Make sure to adjust the waypoints before linking. + * Waypoints are unlimited in range, as all they do is tell drones "go to XYZ position", it's just necessary for the previous waypoint to be loaded during the linking process + * If there are no obstacles between the two crates, waypoints are entirely optional. +* Logistic drones + * An automated system that detects supply and demand and sends logistics drones to transport items + * Drone docks will detect logistics waypoints (different from transport waypoints!), providers and requesters in a 11x11 chunk range + * Docks, providers, requesters and waypoints will connect to each other automatically in a 5x5 chunk detection range with a maximum range of 24 blocks + * Logistics waypoints have an offset of 5 blocks which cannot be changed, unlike transport waypoints. The offset's direction obviously changes with the orientation of the waypoint block + * For debugging purposes, the connections are currently visible, this will be cchanged in the future + * Drones have a path depth of only 10 hops, pathfinding cannot go further than 10 waypoints/crates/docks + * Requests are created by requester crates if a request filter is set, and the requested item is not present in its buffer + * Provider offers are created automatically if a provider holds an item + * Docks will spawn a logistics drone if a drone is loaded (it can hold up to 9), the drone will path to the provider, then the requester, then back to the dock where it will try to jump back into its inventory + * A dock will randomly choose a provider-requester pair in its range every 5 seconds, to supply larger logistics networks, use more docks ## Changed * Updated russian localization -* The UAC pistol's UV now looks prettier -* The UAC pistol now fires a burst on right click -* CCGTs can no longer have smoke removed from them, on the count of there not being enough connections anyway. The pollution rate is now equivalent to three small furnaces -* The DFC receiver is now crafted with a block of DNT instead of sellafite corium, on the count of sellafite corium being near impossible to get -* Fireclay now has a third recipe, being craftable from clay, limestone and sand -* A whole clay block can now be combination smelted into a block of bricks -* The pipe clanking sound is now also used when placing regular pipes as opposed to only when pre-defined pipe items are used -* Josh now has a burst fire mode using RMB -* The smokestack's recipe has changed, now requiring a steel grate for catching ashes -* Simplified the decorated cobalt tool recipes, they now only require one cobalt tool and one hot bar of meteorite in an anvil -* Changed the starmetal tool recipes -* Cobalt armor is now crafted with steel armor and cobalt billets, making the armor substantially cheaper -* Sightly increased protection levels for the security armor and cobalt gear -* Cobalt, decorated cobalt and starmetal gear is now a lot more enchantable -* The ashpit now has a NEI handler, showing roughly how ash types are made -* Smokestacks now capture fly ash and are now compatible with ashpits -* Industrial smokestacks can also capture fine soot -* Reduced strings required for making coal filters, filters are now also available in tier 2 anvils -* Fireboxes and heating ovens can now be disassembled in tier 2 anvils, yielding most of the resources used for making them -* Signal beacons now only spawn half as often +* Retextured the groundwater pumps to be more NTM-like and less GTCE-like +* There is now a custom implementation used for falling block entities used by things like impulse grenades, the nuke's shockwave and anvils + * This should fix crashes caused by improper implementation of certain modded blocks not working with the falling block code + * This also makes it so that anvils render properly when falling + * The new falling blocks are a bit more janky and less smooth, most likely because of some hardcoded mojang hack that smoothens out the vanilla one that I couldn't find +* The redcoil capacitor has been reverted to use meta instead of NBT, making it easier to automate with meta-based filters ## Fixed -* Fixed the bomber not spawning if the chunkloading radios is too small -* Fixed a couple spelling mistakes like BFB fuel being called ZFB and the broken ZIRNOX -* Potentially fixed a compat issue where galacticraft moon soil isn't shreddable into NTM moon turf -* Hopefully fixed the disappearing fluid bug once and for all -* Fixed lag caused by the radiation system needlessly loading chunks -* Fixed secret folders giving volatile templates instead of persistent ones -* Fixed the ore dict registry happening in a later loading phase instead of PreInit which should fix some compatibility issues -* Hopefully fixed issue where the tom impact effects will last even when switching worlds -* Fixed logspam caused by custom machine crafting handler -* Fixed issue with the assemblers and chemplants where recipes with larger input requirements would break the input funnel -* Fixed crash caused by reloading when the ammo item is in the last slot -* Power and fluid networks will no longer transfer amounts less or equal than 0, preventing negative values and removing unnecessary operations where nothing would happen anyways -* Fixed bug where damage sources that bypass iframes would deal significantly more damage if the victim has taken a lot of damage prior -* Fixed duplicate balefire shell existing, the one that was usable was not the one that was craftable +* Fixed issue where for certain system locales, the thousand separator would display as an NBS which can't be rendered using mc's font renderer, yielding an ugly unknown glyph +* Fixed critical IO issue where assemblers and chemical plants would ignore side IO restrictions and import/export items from slots that they really shouldn't +* Combination ovens no longer produce soot when not in use +* The power detector now has the connection priority "HIGH", which should fix issues where they don't receive any power in larger networks due to their low network weight +* Fixed power gauge blocks sometimes crashing servers because of improper OC compat, the compat has been removed for the time being +* Fixed blocks with the "Any" ore dict prefix being shreddable, converting things from ore dict groups +* Fixed fusion reactor exploding into un-welded magnets, wasting tons of steel in the process +* Fixed assemblers not saving their power buffer or progress +* Fixed combined cycle gas turbine creating 25x more soot than it's supposed to diff --git a/gradle.properties b/gradle.properties index f918fa348..3bce5673c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4724 +mod_build_number=4739 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 7e389cec0..46add586c 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -26,8 +26,8 @@ public class WorldConfig { public static int cinnebarSpawn = 1; public static int oilcoalSpawn = 128; public static int gassshaleSpawn = 5; - public static int gasbubbleSpawn = 4; - public static int explosivebubbleSpawn = 8; + public static int gasbubbleSpawn = 12; + public static int explosivebubbleSpawn = 0; public static int cobaltSpawn = 2; public static int oilSpawn = 100; public static int bedrockOilSpawn = 200; @@ -133,10 +133,10 @@ public class WorldConfig { rareSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.14_rareEarthSpawnRate", "Amount of rare earth ore veins per chunk", 6); oilcoalSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.15_oilCoalSpawnRate", "Spawns an oily coal vein every nTH chunk", 128); gassshaleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.16_gasShaleSpawnRate", "Amount of oil shale veins per chunk", 5); - gasbubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.17_gasBubbleSpawnRate", "Spawns a gas bubble every nTH chunk", 4); + gasbubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.17_gasBubbleSpawnRate", "Spawns a gas bubble every nTH chunk", 12); cinnebarSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.18_cinnebarSpawnRate", "Amount of cinnebar ore veins per chunk", 1); cobaltSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.18_cobaltSpawnRate", "Amount of cobalt ore veins per chunk", 2); - explosivebubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.19_explosiveBubbleSpawnRate", "Spawns an explosive gas bubble every nTH chunk", 8); + explosivebubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.19_explosiveBubbleSpawnRate", "Spawns an explosive gas bubble every nTH chunk", 0); alexandriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.20_alexandriteSpawnRate", "Spawns an alexandrite vein every nTH chunk", 100); oilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.21_oilSpawnRate", "Spawns an oil bubble every nTH chunk", 100); bedrockOilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.22_bedrockOilSpawnRate", "Spawns a bedrock oil node every nTH chunk", 200); diff --git a/src/main/java/com/hbm/entity/item/EntityDroneBase.java b/src/main/java/com/hbm/entity/item/EntityDroneBase.java index c27ab56d1..5cc0e4e97 100644 --- a/src/main/java/com/hbm/entity/item/EntityDroneBase.java +++ b/src/main/java/com/hbm/entity/item/EntityDroneBase.java @@ -55,7 +55,7 @@ public abstract class EntityDroneBase extends Entity { @Override protected boolean canTriggerWalking() { - return true; + return false; } @Override diff --git a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java index 30d22ab20..0b5294516 100644 --- a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.List; import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemDrone.EnumDroneType; import com.hbm.tileentity.network.TileEntityDroneDock; @@ -11,6 +13,7 @@ import com.hbm.tileentity.network.TileEntityDroneProvider; import com.hbm.tileentity.network.TileEntityDroneRequester; import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -42,7 +45,6 @@ public class EntityRequestDrone extends EntityDroneBase { if(nextActionTimer > 0) { nextActionTimer--; } else { - nextActionTimer = 5; if(program.isEmpty()) { this.setDead(); //self-destruct if no further operations are pending @@ -51,13 +53,11 @@ public class EntityRequestDrone extends EntityDroneBase { } Object next = program.get(0); - System.out.println("next action: " + next); program.remove(0); if(next instanceof BlockPos) { BlockPos pos = (BlockPos) next; this.setTarget(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5); - System.out.println("targetting"); } else if(next instanceof AStack && heldItem == null) { AStack aStack = (AStack) next; @@ -72,13 +72,14 @@ public class EntityRequestDrone extends EntityDroneBase { if(stack != null && aStack.matchesRecipe(stack, true)) { this.heldItem = stack.copy(); this.setAppearance(1); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:item.unpack", 0.5F, 0.75F); provider.slots[i] = null; provider.markDirty(); break; } } } - System.out.println("loading"); + nextActionTimer = 5; } else if(next == DroneProgram.UNLOAD && this.heldItem != null) { TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); @@ -106,11 +107,12 @@ public class EntityRequestDrone extends EntityDroneBase { if(this.heldItem == null) { this.setAppearance(0); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:item.unpack", 0.5F, 0.75F); } requester.markDirty(); } - System.out.println("unloading"); + nextActionTimer = 5; } else if(next == DroneProgram.DOCK) { TileEntity tile = worldObj.getTileEntity((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); @@ -121,6 +123,7 @@ public class EntityRequestDrone extends EntityDroneBase { if(dock.slots[i] == null) { this.setDead(); dock.slots[i] = new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()); + this.worldObj.playSoundEffect(dock.xCoord + 0.5, dock.yCoord + 0.5, dock.zCoord + 0.5, "hbm:block.storageClose", 2.0F, 1.0F); break; } } @@ -130,7 +133,6 @@ public class EntityRequestDrone extends EntityDroneBase { this.setDead(); this.entityDropItem(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), 1F); } - System.out.println("docking"); } } } @@ -144,17 +146,43 @@ public class EntityRequestDrone extends EntityDroneBase { @Override protected void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); if(nbt.hasKey("held")) { NBTTagCompound stack = nbt.getCompoundTag("held"); this.heldItem = ItemStack.loadItemStackFromNBT(stack); } + + nextActionTimer = 5; this.dataWatcher.updateObject(10, nbt.getByte("app")); + + int size = nbt.getInteger("programSize"); + + for(int i = 0; i < size; i++) { + NBTTagCompound data = nbt.getCompoundTag("program" + i); + String pType = data.getString("type"); + + if("pos".equals(pType)) { + int[] pos = data.getIntArray("pos"); + this.program.add(new BlockPos(pos[0], pos[1], pos[2])); + } else if("unload".equals(pType)) { + this.program.add(DroneProgram.UNLOAD); + } else if("dock".equals(pType)) { + this.program.add(DroneProgram.DOCK); + } else if("comp".equals(pType)) { + ComparableStack comp = new ComparableStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getInteger("meta")); + this.program.add(comp); + } else if("dict".equals(pType)) { + OreDictStack dict = new OreDictStack(nbt.getString("dict")); + this.program.add(dict); + } + } } @Override protected void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); if(heldItem != null) { NBTTagCompound stack = new NBTTagCompound(); @@ -163,5 +191,42 @@ public class EntityRequestDrone extends EntityDroneBase { } nbt.setByte("app", this.dataWatcher.getWatchableObjectByte(10)); + + int size = this.program.size(); + nbt.setInteger("programSize", size); + + for(int i = 0; i < size; i++) { + NBTTagCompound data = new NBTTagCompound(); + Object p = this.program.get(i); + + if(p instanceof BlockPos) { + BlockPos pos = (BlockPos) p; + data.setString("type", "pos"); + data.setIntArray("pos", new int[] {pos.getX(), pos.getY(), pos.getZ()}); + } else if(p instanceof AStack) { + + // neither of these wretched fungii works correctly, but so long as the pathing works (which it does), it means that the drone will + // eventually return to the dock and not got lost, and simply retry the task + if(p instanceof ComparableStack) { + ComparableStack comp = (ComparableStack) p; + data.setString("type", "comp"); + data.setInteger("id", Item.getIdFromItem(comp.item)); + data.setInteger("meta", comp.meta); + } else { + OreDictStack dict = (OreDictStack) p; + data.setString("type", "dict"); + data.setString("dict", dict.name); + } + + } else if(p == DroneProgram.UNLOAD) { + data.setString("type", "unload"); + + } else if(p == DroneProgram.DOCK) { + data.setString("type", "dock"); + + } + + nbt.setTag("program" + i, data); + } } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 3df3c0458..26b7c4ac5 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4724)"; + public static final String VERSION = "1.0.27 BETA (4739)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index a45c039a8..936ab410b 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -29,6 +29,7 @@ import com.hbm.items.machine.ItemBattery; import com.hbm.items.special.ItemCircuitStarComponent.CircuitComponentType; import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage; import com.hbm.items.special.ItemPlasticScrap.ScrapType; +import com.hbm.items.tool.ItemDrone.EnumDroneType; import com.hbm.items.tool.ItemGuideBook.BookType; import com.hbm.util.EnchantmentUtil; @@ -993,6 +994,23 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.crane_splitter), new Object[] { "III", "PCP", "III", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', STEEL.ingot(), 'C', ModItems.circuit_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.machine_conveyor_press), new Object[] { "CPC", "CBC", "CCC", 'C', CU.plate(), 'P', ModBlocks.machine_epress, 'B', ModBlocks.conveyor }); + + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { "PPP", "HCH", " B ", 'P', STEEL.plate(), 'H', ModItems.hull_small_steel, 'C', ModItems.circuit_copper, 'B', ModBlocks.crate_steel }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', ModItems.plate_desh, 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', ModItems.plate_desh, 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) }); + addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) }); + addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), new Object[] { "E", "D", 'E', ModItems.circuit_red_copper, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) }); + + addRecipeAuto(new ItemStack(ModItems.drone_linker), new Object[] { "T", "C", 'T', ModBlocks.drone_waypoint, 'C', ModItems.circuit_copper }); + addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint, 4), new Object[] { "G", "T", "C", 'G', KEY_GREEN, 'T', Blocks.redstone_torch, 'C', ModItems.circuit_aluminium }); + addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", 'T', ModBlocks.drone_waypoint, 'C', ModBlocks.crate_steel }); + addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint_request, 4), new Object[] { "G", "T", "C", 'G', KEY_BLUE, 'T', Blocks.redstone_torch, 'C', ModItems.circuit_copper }); + addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', ModItems.circuit_red_copper }); + addRecipeAuto(new ItemStack(ModBlocks.drone_crate_requester), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_YELLOW }); + addRecipeAuto(new ItemStack(ModBlocks.drone_crate_provider), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_ORANGE }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1), new Object[] { ModItems.ingot_chainsteel, ASBESTOS.ingot(), ModItems.gem_alexandrite }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1, 3), new Object[] { DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2) }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 32d1df24d..b506f3f6b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -300,7 +300,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement } double consumption = fuelMaxCons.containsKey(tanks[0].getTankType()) ? fuelMaxCons.get(tanks[0].getTankType()) : 5D; - if(worldObj.getTotalWorldTime() % 20 == 0 && tanks[0].getTankType() != Fluids.OXYHYDROGEN) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, 3F); + if(worldObj.getTotalWorldTime() % 20 == 0 && tanks[0].getTankType() != Fluids.OXYHYDROGEN) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); makePower(consumption, throttle); } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index ac0cd0be4..495f38ca6 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -110,8 +110,10 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc this.sendingBrake = false; age++; - if(age >= 20) + if(age >= 20) { age = 0; + this.markChanged(); + } if((mode == 1 || mode == 2) && (age == 9 || age == 19)) fillFluidInit(tank.getTankType()); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index ec0d5ae57..00486dfda 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -113,8 +113,10 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements if(!hasExploded) { age++; - if(age >= 20) + if(age >= 20) { age = 0; + this.markChanged(); + } this.sendingBrake = true; tank.setFill(TileEntityBarrel.transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); diff --git a/src/main/java/com/hbm/tileentity/network/RequestNetwork.java b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java index cb1116004..8f98a9eb6 100644 --- a/src/main/java/com/hbm/tileentity/network/RequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/RequestNetwork.java @@ -76,8 +76,24 @@ public class RequestNetwork { this.reachableNodes = new HashedSet(reachableNodes); this.lease = System.currentTimeMillis(); } + @Override public int hashCode() { return pos.hashCode(); } - @Override public boolean equals(Object o) { return pos.equals(o); } + @Override public boolean equals(Object toCompare) { + if(this == toCompare) { + return true; + } else if(!(toCompare instanceof PathNode)) { + return false; + } else { + PathNode node = (PathNode) toCompare; + if(this.pos.getX() != node.pos.getX()) { + return false; + } else if(this.pos.getY() != node.pos.getY()) { + return false; + } else { + return this.pos.getZ() == node.pos.getZ(); + } + } + } } /** Node created by providers, lists available items */ diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java index eb530096d..8a304914c 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java @@ -114,6 +114,7 @@ public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIP if(loaded) { this.markDirty(); drone.setAppearance(1); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.unpack", 0.5F, 0.75F); } } @@ -136,7 +137,10 @@ public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIP this.markDirty(); - if(emptied) drone.setAppearance(0); + if(emptied) { + drone.setAppearance(0); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.unpack", 0.5F, 0.75F); + } } protected void loadFluid(EntityDeliveryDrone drone) { @@ -147,6 +151,7 @@ public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIP drone.fluid = new FluidStack(tank.getTankType(), tank.getFill()); this.tank.setFill(0); drone.setAppearance(2); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.unpack", 0.5F, 0.75F); this.markDirty(); } @@ -167,6 +172,7 @@ public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIP tank.setFill(tank.getMaxFill()); drone.fluid.fill = overshoot; } + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.unpack", 0.5F, 0.75F); this.markDirty(); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java index 3aa212846..82b6b93f0 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java @@ -28,7 +28,7 @@ import net.minecraft.world.World; public class TileEntityDroneDock extends TileEntityRequestNetworkContainer implements IGUIProvider { - public static final int pathingDepth = 5; + public static final int pathingDepth = 10; public TileEntityDroneDock() { super(9); @@ -122,6 +122,7 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple drone.program.add(DroneProgram.DOCK); worldObj.spawnEntityInWorld(drone); + this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.storageOpen", 2.0F, 1.0F); return true; } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java index b3a7a942d..75ff11bf5 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java @@ -74,6 +74,18 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer public boolean canExtractItem(int i, ItemStack stack, int j) { return true; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.matcher.readFromNBT(nbt); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + this.matcher.writeToNBT(nbt); + } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java index 4e385f5d1..3e241d394 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java @@ -3,15 +3,11 @@ package com.hbm.tileentity.network; import java.util.HashMap; import java.util.Iterator; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.network.RequestNetwork.PathNode; import com.hbm.util.HashedSet; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; @@ -59,18 +55,19 @@ public abstract class TileEntityRequestNetwork extends TileEntity { // draw debug crap for(PathNode known : knownNodes) { - ParticleUtil.spawnDebugLine(worldObj, + if(reachableNodes.contains(known)) ParticleUtil.spawnDebugLine(worldObj, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, (known.pos.getX() - pos.getX()) / 2D, (known.pos.getY() - pos.getY()) / 2D, (known.pos.getZ() - pos.getZ()) / 2D, reachableNodes.contains(known) ? 0x00ff00 : 0xff0000); } - NBTTagCompound data = new NBTTagCompound(); + /*NBTTagCompound data = new NBTTagCompound(); data.setString("type", "debug"); data.setInteger("color", 0x0000ff); data.setFloat("scale", 1.5F); data.setString("text", knownNodes.size() + " / " + reachableNodes.size() + " / " + localNodes.size()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + */ //both following checks run the `hasPath` function which is costly, so it only runs one op at a time diff --git a/src/main/java/com/hbm/util/HashedSet.java b/src/main/java/com/hbm/util/HashedSet.java index 861862206..cdb13cdee 100644 --- a/src/main/java/com/hbm/util/HashedSet.java +++ b/src/main/java/com/hbm/util/HashedSet.java @@ -9,10 +9,13 @@ import java.util.Set; import org.apache.commons.lang3.NotImplementedException; /** - * Through whichever mechanism, HashSets allow for multiple instances with the same hash, even though they already has that hash during instantiation - * How is this possible? I don't know and I don't want to know. + * A crude implementation of the HashSet with a few key differences: + * - instead of being stored as the key, the objects are stored as values in the underlying HashMap with the hash being the key + * - consequently, things with matching hash are considered the same, skipping the equals check + * - no equals check means that collisions are possible, so be careful + * - the underlying HashMap is accessible, which means that the instances can be grabbed out of the HashedSet if a hash is supplied * - * This is a crude recreation using a HashMap and, instead of whichever braindead bullshit HashSet does, this HashMap uses the hashCode() as the key and the object as the value. + * This sack of crap was only intended for the drone request network code * * @author hbm * diff --git a/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java b/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java index c09a2dcc6..0113b4817 100644 --- a/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java +++ b/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java @@ -69,10 +69,10 @@ public class BlockPos { return this.z; } - /** 1.12 vanilla implementation */ + /** modified 1.12 vanilla implementation */ @Override public int hashCode() { - return (this.getY() + this.getZ() * 31) * 31 + this.getX(); + return (this.getY() + this.getZ() * 27644437) * 27644437 + this.getX(); } @Override diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 27a103ca0..e4131a9d4 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -309,6 +309,10 @@ container.dfcStabilizer=DFC-Stabilisator container.dfc_core=Dunkler Fusionskern container.diFurnace=Hochofen container.diFurnaceRTG=Atomarer Hochofen +container.droneCrate=Transportdronen-Kiste +container.droneDock=Dock +container.droneProvider=Anbieter +container.droneRequester=Abnehmer container.electricFurnace=Elektrischer Ofen container.epress=Hydraulische Presse container.factoryAdvanced=Fortgeschrittene Fabrik @@ -1703,6 +1707,12 @@ item.drillbit_steel_diamond.name=Stahl-Bohrspitze (Diamantbeschichtung) item.drillbit_tcalloy.name=Technetiumstahl-Bohrspitze item.drillbit_tcalloy_diamond.name=Technetiumstahl-Bohrspitze (Diamantbeschichtung) item.drill_titanium.name=Titanbohrer +item.drone.patrol.name=Transportdrone +item.drone.patrol_chunkloading.name=Chunkladende Transportdrone +item.drone.patrol_express.name=Express-Transportdrone +item.drone.patrol_express_chunkloading.name=Chunkladende Express-Transportdrone +item.drone.request.name=Logistikdrone +item.drone_linker.name=Transportdronen-Linker item.ducttape.name=Klebeband item.dust.name=Staub item.dynosphere_base.name=Blanke Dynosphere @@ -3825,6 +3835,12 @@ tile.dfc_stabilizer.name=DFC-Stabilisator tile.dirt_dead.name=Tote Erde tile.dirt_oily.name=Ölige Erde tile.drill_pipe.name=Bohrgestänge +tile.drone_crate.name=Transportdronen-Kiste +tile.drone_crate_provider.name=Logistik-Anbieterkiste +tile.drone_crate_requester.name=Logistik-Abnehmerkiste +tile.drone_dock.name=Logistikdronen-Dock +tile.drone_waypoint.name=Transportdronen-Wegpunkt +tile.drone_waypoint_request.name=Logistikdronen-Wegpunkt tile.door_bunker.name=Bunkertür tile.door_metal.name=Metalltür tile.door_office.name=Bürotür diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 06a1b2a17..be8530bcf 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -666,6 +666,10 @@ container.dfcReceiver=DFC Receiver container.dfcStabilizer=DFC Stabilizer container.diFurnace=Blast Furnace container.diFurnaceRTG=Nuclear Blast Furnace +container.droneCrate=Transport Drone Crate +container.droneDock=Dock +container.droneProvider=Provider +container.droneRequester=Requester container.electricFurnace=Electric Furnace container.epress=Electric Press container.factoryAdvanced=Advanced Factory @@ -2386,6 +2390,9 @@ item.door_bunker.name=Bunker Door item.door_metal.name=Metal Door item.door_office.name=Office Door item.dosimeter.name=Dosimeter +item.drax.name=Terra Drill +item.drax_mk2.name=Hardened Terra Drill +item.drax_mk3.name=Schrabidic Terra Drill item.drillbit_desh.name=Desh Drillbit item.drillbit_desh_diamond.name=Desh Drillbit (Diamond-Tipped) item.drillbit_ferro.name=Ferrouranium Drillbit @@ -2397,9 +2404,12 @@ item.drillbit_steel_diamond.name=Steel Drillbit (Diamond-Tipped) item.drillbit_tcalloy.name=Technetium Steel Drillbit item.drillbit_tcalloy_diamond.name=Technetium Steel Drillbit (Diamond-Tipped) item.drill_titanium.name=Titanium Drill -item.drax.name=Terra Drill -item.drax_mk2.name=Hardened Terra Drill -item.drax_mk3.name=Schrabidic Terra Drill +item.drone.patrol.name=Transport Drone +item.drone.patrol_chunkloading.name=Chunkloading Transport Drone +item.drone.patrol_express.name=Express Transport Drone +item.drone.patrol_express_chunkloading.name=Chunkloading Express Transport Drone +item.drone.request.name=Logistics Drone +item.drone_linker.name=Transport Drone Linker item.ducttape.name=Duct Tape item.dust.name=Dust item.dust.desc=I hate dust! @@ -4794,6 +4804,13 @@ tile.dfc_stabilizer.name=DFC Stabilizer tile.dirt_dead.name=Dead Dirt tile.dirt_oily.name=Oily Dirt tile.drill_pipe.name=Drill Pipe +tile.drone_crate.name=Transport Drone Crate +tile.drone_crate_provider.name=Logistics Provider Crate +tile.drone_crate_requester.name=Logistics Requester Crate +tile.drone_dock.name=Logistics Drone Dock +tile.drone_waypoint.name=Transport Drone Waypoint +tile.drone_waypoint.desc=Waypoint for transport drones$Use a transport drone linker to set the path$Click on each waypoint and crate in sequence to create the path,$then shift-click to clear the saved position$Right-click or shift-click the waypoint to change the waypoint's offset +tile.drone_waypoint_request.name=Logistics Drone Waypoint tile.door_bunker.name=Bunker Door tile.door_metal.name=Metal Door tile.door_office.name=Office Door diff --git a/src/main/resources/assets/hbm/textures/models/machines/drone.png b/src/main/resources/assets/hbm/textures/models/machines/drone.png index 3e55db1657ed91302da4ddcf1b59cd44cc33f628..66c3240ba138bb27124330dc4a9815acad2fc217 100644 GIT binary patch delta 2475 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 delta 2679 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 diff --git a/src/main/resources/assets/hbm/textures/models/machines/drone_request.png b/src/main/resources/assets/hbm/textures/models/machines/drone_request.png index 082c3f67dbc42dde93872c8b8f53b92c1583947b..314d796552671040598bc2720ee04a2f77133696 100644 GIT binary patch delta 2730 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 delta 2735 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 From 1c071dddb7cc1ec615f58d3ec9c5cdb71447221d Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Sun, 1 Oct 2023 19:03:59 +0300 Subject: [PATCH 054/207] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 85417993a..81c9e32a2 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -2050,6 +2050,7 @@ tile.machine_fraction_tower.name=Ð ÐµÐºÑ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½Ð½Ð° tile.machine_orbus.name=ТÑжёлый магнитный контейнер Ð´Ð»Ñ Ð°Ð½Ñ‚Ð¸Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð¸ container.orbus=ТÑжёлый магнитный контейнер Ð´Ð»Ñ Ð°Ð½Ñ‚Ð¸Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð¸ tile.machine_condenser.name=КонденÑатор пара +tile.machine_condenser_powered.name=Мощный конденÑатор пара container.atomicClock=Ðтомные чаÑÑ‹ container.betavoltaic=Бетавольтовый генератор container.bigRTG=Большой РИТЭГ-генератор @@ -2106,6 +2107,24 @@ tile.crane_grabber.desc=Takes items from passing conveyors and places them into tile.crane_splitter.name=Конвейерный разделитель tile.crane_splitter.desc=Splits items and stacks evenly onto two conveyor belts$Is a conveyor belt itself, so it can directly input into an inserter or sorter +container.droneCrate=ПаÑÑивный Ñщик Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² +container.droneDock=Дрон-ÑÑ‚Ð°Ð½Ñ†Ð¸Ñ +container.droneProvider=Ящик ÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² +container.droneRequester=Ящик запроÑа Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² +tile.drone_crate.name=ПаÑÑивный Ñщик Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² +tile.drone_crate_provider.name=Ящик ÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² +tile.drone_crate_requester.name=Ящик запроÑа Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² +tile.drone_dock.name=Дрон-ÑÑ‚Ð°Ð½Ñ†Ð¸Ñ +tile.drone_waypoint.name=ÐŸÑƒÑ‚ÐµÐ²Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² +tile.drone_waypoint.desc=Waypoint for transport drones$Use a transport drone linker to set the path$Click on each waypoint and crate in sequence to create the path,$then shift-click to clear the saved position$Right-click or shift-click the waypoint to change the waypoint's offset +tile.drone_waypoint_request.name=ЛогиÑтичеÑÐºÐ°Ñ Ð¿ÑƒÑ‚ÐµÐ²Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² +item.drone.patrol.name=ТранÑпортный дрон +item.drone.patrol_chunkloading.name=ТранÑпортный дрон (Чанклоадер) +item.drone.patrol_express.name=БыÑтрый транÑпортный дрон +item.drone.patrol_express_chunkloading.name=БыÑтрый транÑпортный дрон (Чанклоадер) +item.drone.request.name=ЛогиÑтичеÑкий дрон +item.drone_linker.name=Соединитель паÑÑивных Ñщиков Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² + container.turretArty=Грег tile.turret_arty.name=ÐртиллерийÑÐºÐ°Ñ Ñ‚ÑƒÑ€ÐµÐ»ÑŒ "Грег" container.heaterFirebox=Топка From 47d645d481bb0487a08f2d54dc42086f47caa195 Mon Sep 17 00:00:00 2001 From: sdddddf80 <2980187979@qq.com> Date: Mon, 2 Oct 2023 20:21:29 +0800 Subject: [PATCH 055/207] A simple tool for generating custom machine multi block structure code Add a simple tool for generating custom machine multi block structure code, as manually filling in these structural codes is really exhausting, especially when the structure is large. --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../com/hbm/blocks/machine/BlockCMAnchor.java | 43 +++++ src/main/java/com/hbm/items/ModItems.java | 5 +- .../com/hbm/items/tool/ItemCMStructure.java | 172 ++++++++++++++++++ src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../items/structure_custommachine.png | Bin 0 -> 170 bytes 6 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java create mode 100644 src/main/java/com/hbm/items/tool/ItemCMStructure.java create mode 100644 src/main/resources/assets/hbm/textures/items/structure_custommachine.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 2e4a6cda9..75c4fd2ae 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -887,6 +887,7 @@ public class ModBlocks { public static Block cm_circuit; public static Block cm_port; public static Block custom_machine; + public static Block cm_anchor; public static Block pwr_fuel; public static Block pwr_control; @@ -2060,6 +2061,7 @@ public class ModBlocks { cm_circuit = new BlockCM(Material.iron, EnumCMCircuit.class, true, true).setBlockName("cm_circuit").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_circuit"); cm_port = new BlockCMPort(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_port").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_port"); custom_machine = new BlockCustomMachine().setBlockName("custom_machine").setCreativeTab(MainRegistry.machineTab).setLightLevel(1F).setHardness(5.0F).setResistance(10.0F); + cm_anchor = new BlockCMAnchor().setBlockName("custom_machine_anchor").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F); pwr_fuel = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_fuel_top").setBlockName("pwr_fuel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_fuel_side"); pwr_control = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_control_top").setBlockName("pwr_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_control_side"); @@ -3418,6 +3420,7 @@ public class ModBlocks { register(cm_tank); register(cm_circuit); register(cm_port); + register(cm_anchor); //PWR register(pwr_fuel); diff --git a/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java b/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java new file mode 100644 index 000000000..bafa683a3 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java @@ -0,0 +1,43 @@ +package com.hbm.blocks.machine; + +import com.hbm.lib.RefStrings; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class BlockCMAnchor extends Block { + @SideOnly(Side.CLIENT) + private IIcon iconFront; + + public BlockCMAnchor() { + super(Material.iron); + } + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":cm_terminal_front"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":cm_terminal_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); + } + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a080abd59..a0d8adc7b 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2213,6 +2213,7 @@ public class ModItems { public static Item structure_pattern; public static Item structure_randomized; public static Item structure_randomly; + public static Item structure_custommachine; public static Item rod_of_discord; @@ -4482,7 +4483,8 @@ public class ModItems { structure_pattern = new ItemStructurePattern().setUnlocalizedName("structure_pattern").setMaxStackSize(1).setCreativeTab(null).setFull3D().setTextureName(RefStrings.MODID + ":structure_pattern"); structure_randomized = new ItemStructureRandomized().setUnlocalizedName("structure_randomized").setMaxStackSize(1).setCreativeTab(null).setFull3D().setTextureName(RefStrings.MODID + ":structure_randomized"); structure_randomly = new ItemStructureRandomly().setUnlocalizedName("structure_randomly").setMaxStackSize(1).setCreativeTab(null).setFull3D().setTextureName(RefStrings.MODID + ":structure_randomly"); - + structure_custommachine = new ItemCMStructure().setUnlocalizedName("structure_custommachine").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":structure_custommachine"); + rod_of_discord = new ItemDiscord().setUnlocalizedName("rod_of_discord").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":rod_of_discord"); nuke_starter_kit = new ItemStarterKit().setUnlocalizedName("nuke_starter_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":nuke_starter_kit"); @@ -7942,6 +7944,7 @@ public class ModItems { GameRegistry.registerItem(structure_pattern, structure_pattern.getUnlocalizedName()); GameRegistry.registerItem(structure_randomized, structure_randomized.getUnlocalizedName()); GameRegistry.registerItem(structure_randomly, structure_randomly.getUnlocalizedName()); + GameRegistry.registerItem(structure_custommachine, structure_custommachine.getUnlocalizedName()); GameRegistry.registerItem(rod_of_discord, rod_of_discord.getUnlocalizedName()); //GameRegistry.registerItem(analyzer, analyzer.getUnlocalizedName()); //GameRegistry.registerItem(remote, remote.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemCMStructure.java b/src/main/java/com/hbm/items/tool/ItemCMStructure.java new file mode 100644 index 000000000..cb72b7d3c --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemCMStructure.java @@ -0,0 +1,172 @@ +package com.hbm.items.tool; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; +import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.common.util.ForgeDirection; + +import java.io.File; +import java.io.FileWriter; +import java.util.ArrayList; +import java.util.List; + +public class ItemCMStructure extends Item implements ILookOverlay { + File file = new File(MainRegistry.configHbmDir, "CMstructureOutput.txt"); + public static BlockPos getAnchor(ItemStack stack) { + + if(!stack.hasTagCompound()) { + return null; + } + + return new BlockPos(stack.stackTagCompound.getInteger("anchorX"), stack.stackTagCompound.getInteger("anchorY"), stack.stackTagCompound.getInteger("anchorZ")); + } + public static void setAnchor(ItemStack stack, int x, int y, int z) { + + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setInteger("anchorX", x); + stack.stackTagCompound.setInteger("anchorY", y); + stack.stackTagCompound.setInteger("anchorZ", z); + } + public static void writeToFile(File config,ItemStack stack,World world){ + int anchorX = stack.stackTagCompound.getInteger("anchorX"); + int anchorY = stack.stackTagCompound.getInteger("anchorY"); + int anchorZ = stack.stackTagCompound.getInteger("anchorZ"); + int x1=stack.stackTagCompound.getInteger("x1"); + int y1=stack.stackTagCompound.getInteger("y1"); + int z1=stack.stackTagCompound.getInteger("z1"); + int x2=stack.stackTagCompound.getInteger("x2"); + int y2=stack.stackTagCompound.getInteger("y2"); + int z2=stack.stackTagCompound.getInteger("z2"); + ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(anchorX,anchorY,anchorZ)); + //ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + int z=z1;z1=z text = new ArrayList(); + + BlockPos anchor = getAnchor(stack); + + if(anchor == null) { + + text.add(EnumChatFormatting.RED + "No Anchor"); + } else { + int anchorX = stack.stackTagCompound.getInteger("anchorX"); + int anchorY = stack.stackTagCompound.getInteger("anchorY"); + int anchorZ = stack.stackTagCompound.getInteger("anchorZ"); + text.add(EnumChatFormatting.GOLD + "Anchor: " + anchorX + " / " + anchorY + " / " + anchorZ); + if(stack.stackTagCompound.hasKey("x1")){ + int x1=stack.stackTagCompound.getInteger("x1"); + int y1=stack.stackTagCompound.getInteger("y1"); + int z1=stack.stackTagCompound.getInteger("z1"); + + text.add(EnumChatFormatting.YELLOW + "Position1: " + x1 + " / " + y1 + " / " + z1); + } + if(stack.stackTagCompound.hasKey("x2")) { + int x2=stack.stackTagCompound.getInteger("x2"); + int y2=stack.stackTagCompound.getInteger("y2"); + int z2=stack.stackTagCompound.getInteger("z2"); + text.add(EnumChatFormatting.YELLOW + "Position2: " + x2 + " / " + y2 + " / " + z2); + } + } + + ILookOverlay.printGeneric(event, this.getItemStackDisplayName(stack), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index be8530bcf..c44050231 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4236,6 +4236,7 @@ item.volcanic_pickaxe.name=Molten Pickaxe item.wand_d.name=Debug Wand item.wand_k.name=Construction Wand item.wand_s.name=Structure Wand +item.structure_custommachine.name=Custom Machine Structure Output Wand item.warhead_buster_large.name=Large Bunker Buster Warhead item.warhead_buster_medium.name=Medium Bunker Buster Warhead item.warhead_buster_small.name=Small Bunker Buster Warhead @@ -4638,6 +4639,7 @@ tile.cluster_depth_titanium.name=Depth Titanium Ore Cluster tile.cluster_depth_tungsten.name=Depth Tungsten Ore Cluster tile.cluster_iron.name=Iron Ore Cluster tile.cluster_titanium.name=Titanium Ore Cluster +tile.custom_machine_anchor.name=Custom Machine Structure Positioning Anchor tile.cm_block.alloy.name=Advanced Alloy Machine Casing tile.cm_block.desh.name=Desh Machine Casing tile.cm_block.steel.name=Steel Machine Casing diff --git a/src/main/resources/assets/hbm/textures/items/structure_custommachine.png b/src/main/resources/assets/hbm/textures/items/structure_custommachine.png new file mode 100644 index 0000000000000000000000000000000000000000..3f95a0a781914aed75fe4978b81787ac55097804 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|QaoK8Lo9la zUI^qmpuod?p=9~Xzy6PNcl8@yKii Date: Mon, 2 Oct 2023 22:06:24 +0200 Subject: [PATCH 056/207] fuck you --- changelog | 45 ++--------- gradle.properties | 2 +- .../java/com/hbm/config/GeneralConfig.java | 4 + .../hbm/entity/item/EntityFallingBlockNT.java | 2 +- .../com/hbm/inventory/OreDictManager.java | 34 +++++---- src/main/java/com/hbm/inventory/OreNames.java | 3 +- .../inventory/material/MaterialShapes.java | 1 + .../java/com/hbm/inventory/material/Mats.java | 20 ++--- .../inventory/recipes/AssemblerRecipes.java | 72 ++++++++++-------- src/main/java/com/hbm/items/ModItems.java | 3 + src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 5 +- .../entity/item/RenderFallingBlockNT.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/items/heavy_component.png | Bin 0 -> 315 bytes 16 files changed, 94 insertions(+), 103 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/heavy_component.png diff --git a/changelog b/changelog index 9afc864be..a98335f00 100644 --- a/changelog +++ b/changelog @@ -1,44 +1,11 @@ ## Added -* Powered condenser - * A large form of the condenser that is 10x faster than the large cooling tower - * Needs 10HE per mB condensed (roughly 5% of the power output from steam, using industrial turbines) - * Allows for more compact setups, setups underground where cooling towers wouldn't fit, and ones with ridiculously high LPS throughput where multiple large cooling towers were necessary -* Transport drones - * Will move in a circular path between transport drone crates, loading and unloading either items or fluids - * Finally allows for automated long-range transport without ridiculously long conveyor belts or impractical pipelines - * Come in 4 variants, slow and express, each can be chunkloading or not - * To create a route, place crates in input and output mode, then add waypoints for avoiding obstacles, get a transport drone linker and click on each waypoint/crate in order, then shift-click to delete the last cached position from the linker (in order to not screw up future links) - * Waypoints can be adjusted in height, right click or shift-click to adjust the offset of the actual waypoint compared to the waypoint block. Make sure to adjust the waypoints before linking. - * Waypoints are unlimited in range, as all they do is tell drones "go to XYZ position", it's just necessary for the previous waypoint to be loaded during the linking process - * If there are no obstacles between the two crates, waypoints are entirely optional. -* Logistic drones - * An automated system that detects supply and demand and sends logistics drones to transport items - * Drone docks will detect logistics waypoints (different from transport waypoints!), providers and requesters in a 11x11 chunk range - * Docks, providers, requesters and waypoints will connect to each other automatically in a 5x5 chunk detection range with a maximum range of 24 blocks - * Logistics waypoints have an offset of 5 blocks which cannot be changed, unlike transport waypoints. The offset's direction obviously changes with the orientation of the waypoint block - * For debugging purposes, the connections are currently visible, this will be cchanged in the future - * Drones have a path depth of only 10 hops, pathfinding cannot go further than 10 waypoints/crates/docks - * Requests are created by requester crates if a request filter is set, and the requested item is not present in its buffer - * Provider offers are created automatically if a provider holds an item - * Docks will spawn a logistics drone if a drone is loaded (it can hold up to 9), the drone will path to the provider, then the requester, then back to the dock where it will try to jump back into its inventory - * A dock will randomly choose a provider-requester pair in its range every 5 seconds, to supply larger logistics networks, use more docks +* Expensive mode + * Horrible new config option that replaces several crafting items in key machine recipes with the all new heavy components + * Heavy components are 256 cast plates combined in an assembler + * ## Changed -* Updated russian localization -* Retextured the groundwater pumps to be more NTM-like and less GTCE-like -* There is now a custom implementation used for falling block entities used by things like impulse grenades, the nuke's shockwave and anvils - * This should fix crashes caused by improper implementation of certain modded blocks not working with the falling block code - * This also makes it so that anvils render properly when falling - * The new falling blocks are a bit more janky and less smooth, most likely because of some hardcoded mojang hack that smoothens out the vanilla one that I couldn't find -* The redcoil capacitor has been reverted to use meta instead of NBT, making it easier to automate with meta-based filters +* Drones are now made from plastic ## Fixed -* Fixed issue where for certain system locales, the thousand separator would display as an NBS which can't be rendered using mc's font renderer, yielding an ugly unknown glyph -* Fixed critical IO issue where assemblers and chemical plants would ignore side IO restrictions and import/export items from slots that they really shouldn't -* Combination ovens no longer produce soot when not in use -* The power detector now has the connection priority "HIGH", which should fix issues where they don't receive any power in larger networks due to their low network weight -* Fixed power gauge blocks sometimes crashing servers because of improper OC compat, the compat has been removed for the time being -* Fixed blocks with the "Any" ore dict prefix being shreddable, converting things from ore dict groups -* Fixed fusion reactor exploding into un-welded magnets, wasting tons of steel in the process -* Fixed assemblers not saving their power buffer or progress -* Fixed combined cycle gas turbine creating 25x more soot than it's supposed to +* Fixed the new falling block implementation crashing on certain blocks \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 3bce5673c..017bb4d71 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4739 +mod_build_number=4740 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 97bdee342..5b279421c 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -33,6 +33,8 @@ public class GeneralConfig { public static boolean enableKeybindOverlap = true; public static int hintPos = 0; + public static boolean enableExpensiveMode = false; + public static boolean enable528 = false; public static boolean enable528ReasimBoilers = true; public static boolean enable528ColtanDeposit = true; @@ -90,6 +92,8 @@ public class GeneralConfig { enableStatReRegistering = config.get(CATEGORY_GENERAL, "1.33_enableStatReRegistering", true, "If enabled, will re-register item crafting/breaking/usage stats in order to fix a forge bug where modded items just won't show up.").getBoolean(true); enableKeybindOverlap = config.get(CATEGORY_GENERAL, "1.34_enableKeybindOverlap", true, "If enabled, will handle keybinds that would otherwise be ignored due to overlapping.").getBoolean(true); + enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false); + final String CATEGORY_528 = CommonConfig.CATEGORY_528; config.addCustomCategoryComment(CATEGORY_528, "CAUTION\n" diff --git a/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java index 483e0dd95..cabc90143 100644 --- a/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java +++ b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java @@ -25,7 +25,7 @@ import net.minecraft.world.World; public class EntityFallingBlockNT extends Entity { private Block fallingBlock; - public int fallingMeta = -1; + private int fallingMeta = -1; public int fallingTicks; public boolean canDrop; private boolean destroyOnLand; diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 68339d68a..5a3169ae0 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -502,8 +502,9 @@ public class OreDictManager { OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_arsenic); for(NTMMaterial mat : Mats.orderedList) { - if(mat.smeltable == SmeltingBehavior.SMELTABLE && mat.shapes.contains(MaterialShapes.CASTPLATE)) { - for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); + if(mat.smeltable == SmeltingBehavior.SMELTABLE) { + if(mat.shapes.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); } } @@ -602,7 +603,7 @@ public class OreDictManager { public static void registerGroups() { ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); ANY_HARDPLASTIC.addPrefix(INGOT, true); - ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(BLOCK, true); + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); ANY_TAR.addPrefix(ANY, false); } @@ -640,19 +641,20 @@ public class OreDictManager { /* * Quick access methods to grab ore names for recipes. */ - public String any() { return ANY + mats[0]; } - public String nugget() { return NUGGET + mats[0]; } - public String tiny() { return TINY + mats[0]; } - public String ingot() { return INGOT + mats[0]; } - public String dustTiny() { return DUSTTINY + mats[0]; } - public String dust() { return DUST + mats[0]; } - public String gem() { return GEM + mats[0]; } - public String crystal() { return CRYSTAL + mats[0]; } - public String plate() { return PLATE + mats[0]; } - public String plateCast() { return PLATECAST + mats[0]; } - public String billet() { return BILLET + mats[0]; } - public String block() { return BLOCK + mats[0]; } - public String ore() { return ORE + mats[0]; } + public String any() { return ANY + mats[0]; } + public String nugget() { return NUGGET + mats[0]; } + public String tiny() { return TINY + mats[0]; } + public String ingot() { return INGOT + mats[0]; } + public String dustTiny() { return DUSTTINY + mats[0]; } + public String dust() { return DUST + mats[0]; } + public String gem() { return GEM + mats[0]; } + public String crystal() { return CRYSTAL + mats[0]; } + public String plate() { return PLATE + mats[0]; } + public String plateCast() { return PLATECAST + mats[0]; } + public String heavyComp() { return HEAVY_COMPONENT + mats[0]; } + public String billet() { return BILLET + mats[0]; } + public String block() { return BLOCK + mats[0]; } + public String ore() { return ORE + mats[0]; } public String[] anys() { return appendToAll(ANY); } public String[] nuggets() { return appendToAll(NUGGET); } public String[] tinys() { return appendToAll(TINY); } diff --git a/src/main/java/com/hbm/inventory/OreNames.java b/src/main/java/com/hbm/inventory/OreNames.java index 91cbb7099..7c2e3a947 100644 --- a/src/main/java/com/hbm/inventory/OreNames.java +++ b/src/main/java/com/hbm/inventory/OreNames.java @@ -19,8 +19,9 @@ public class OreNames { public static final String BLOCK = "block"; public static final String ORE = "ore"; public static final String ORENETHER = "oreNether"; + public static final String HEAVY_COMPONENT = "componentHeavy"; public static final String[] prefixes = new String[] { - ANY, NUGGET, TINY, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER + ANY, NUGGET, TINY, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER, HEAVY_COMPONENT }; } diff --git a/src/main/java/com/hbm/inventory/material/MaterialShapes.java b/src/main/java/com/hbm/inventory/material/MaterialShapes.java index a93ef368a..9b901a520 100644 --- a/src/main/java/com/hbm/inventory/material/MaterialShapes.java +++ b/src/main/java/com/hbm/inventory/material/MaterialShapes.java @@ -22,6 +22,7 @@ public class MaterialShapes { public static final MaterialShapes CASTPLATE = new MaterialShapes(INGOT.quantity * 3, "plateTriple"); public static final MaterialShapes QUART = new MaterialShapes(162); public static final MaterialShapes BLOCK = new MaterialShapes(INGOT.quantity * 9, "block"); + public static final MaterialShapes HEAVY_COMPONENT = new MaterialShapes(CASTPLATE.quantity * 256, "componentHeavy"); public static void registerCompatShapes() { diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index b4adf18aa..e312ff256 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -94,11 +94,11 @@ public class Mats { public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setShapes(NUGGET, BILLET, INGOT, BLOCK); //Base metals - public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setShapes(NUGGET, INGOT); public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setShapes(NUGGET, INGOT, DUST, BLOCK); @@ -112,16 +112,16 @@ public class Mats { public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE); //Alloys - public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, HEAVY_COMPONENT); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, HEAVY_COMPONENT); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 6776c80ac..d136042b1 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -12,6 +12,9 @@ import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.NTMMaterial; import com.hbm.items.ItemAmmoEnums; import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; @@ -142,6 +145,8 @@ public class AssemblerRecipes { */ private static void registerDefaults() { + boolean exp = GeneralConfig.enableExpensiveMode; + makeRecipe(new ComparableStack(ModItems.plate_iron, 2), new AStack[] {new OreDictStack(IRON.ingot(), 3), },30); makeRecipe(new ComparableStack(ModItems.plate_gold, 2), new AStack[] {new OreDictStack(GOLD.ingot(), 3), },30); makeRecipe(new ComparableStack(ModItems.plate_titanium, 2), new AStack[] {new OreDictStack(TI.ingot(), 3), },30); @@ -280,8 +285,8 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 3), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.wire_red_copper, 6), },250); makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.block(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(STEEL.plate(), 16), new OreDictStack(AL.plate(), 6), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_red_copper, 8), },400); makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {new OreDictStack(STEEL.plate(), 24), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); - makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(CU.plate(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); + makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plate(), 24) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); + makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plate528(), 16) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit_copper, 1) }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); @@ -289,11 +294,11 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_drill, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 6), new OreDictStack(STEEL.ingot(), 4), new ComparableStack(ModItems.wire_red_copper, 4), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.motor, 1), new OreDictStack(DURA.ingot(), 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new ComparableStack(ModItems.drill_titanium, 1), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), new OreDictStack(STEEL.plate528(), 16), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), new OreDictStack(DURA.ingot(), 4), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); - makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack(MINGRADE.ingot(), 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); - makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600); + makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), !exp ? new OreDictStack(STEEL.plate528(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), !exp ? new OreDictStack(DURA.ingot(), 4) : new OreDictStack(DESH.heavyComp(), 1), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); + makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {!exp ? new ComparableStack(ModItems.hull_big_steel, 1) : new OreDictStack(STEEL.heavyComp(), 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack(MINGRADE.ingot(), 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); + makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {!exp ? new ComparableStack(ModItems.hull_big_steel, 4) : new OreDictStack(STEEL.heavyComp(), 2), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600); makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate528(), 12), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300); - makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), new OreDictStack(TI.ingot(), 24), new OreDictStack(ALLOY.plate(), 18), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); + makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), !exp ? new OreDictStack(TI.ingot(), 24) : new OreDictStack(TI.heavyComp(), 2), !exp ? new OreDictStack(ALLOY.plate(), 18) : new OreDictStack(ALLOY.heavyComp(), 1), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new ComparableStack(ModItems.coil_advanced_alloy, 5), }, 100); makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.wire_advanced_alloy, 24), },200); makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250); @@ -436,7 +441,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_fensu, 1), new AStack[] { new ComparableStack(ModItems.ingot_electronium, 32), new ComparableStack(ModBlocks.machine_dineutronium_battery, 16), - new OreDictStack(STEEL.block(), 32), + !exp ? new OreDictStack(STEEL.block(), 32) : new OreDictStack(STEEL.heavyComp(), 64), new OreDictStack(DURA.block(), 16), new OreDictStack(STAR.block(), 64), new ComparableStack(ModBlocks.machine_transformer_dnt, 8), @@ -447,8 +452,8 @@ public class AssemblerRecipes { new OreDictStack(FIBER.ingot(), 128) }, 1200); makeRecipe(new ComparableStack(ModBlocks.struct_iter_core, 1), new AStack[] { - new OreDictStack(STEEL.ingot(), 6), - new OreDictStack(W.ingot(), 6), + !exp ? new OreDictStack(STEEL.ingot(), 6) : new OreDictStack(STEEL.heavyComp(), 4), + !exp ? new OreDictStack(W.ingot(), 6) : new OreDictStack(W.heavyComp(), 1), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), @@ -551,7 +556,7 @@ public class AssemblerRecipes { }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_large_turbine, 1), new AStack[] { - new OreDictStack(STEEL.plate528(), 12), + !exp ? new OreDictStack(STEEL.plate528(), 12) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.turbine_titanium, 3), new ComparableStack(ModItems.generator_steel, 1), @@ -561,8 +566,8 @@ public class AssemblerRecipes { }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_chungus, 1), new AStack[] { new ComparableStack(ModItems.hull_big_steel, 6), - new OreDictStack(STEEL.plate528(), 32), - new OreDictStack(TI.plate528(), 12), + !exp ? new OreDictStack(STEEL.plate528(), 32) : new OreDictStack(STEEL.heavyComp(), 3), + !exp ? new OreDictStack(TI.plate528(), 12) : new OreDictStack(TI.heavyComp(), 1), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModItems.turbine_tungsten, 5), new ComparableStack(ModItems.turbine_titanium, 3), @@ -573,9 +578,9 @@ public class AssemblerRecipes { }, 600); makeRecipe(new ComparableStack(ModBlocks.machine_condenser_powered, 1), new AStack[] { - new OreDictStack(STEEL.plateCast(), 16), + !exp ? new OreDictStack(STEEL.plateCast(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), - new OreDictStack(CU.plate528(), 16), + !exp ? new OreDictStack(CU.plate528(), 16) : new OreDictStack(CU.heavyComp(), 3), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.pipes_steel, 4), new OreDictStack(Fluids.LUBRICANT.getDict(1_000), 4) @@ -601,7 +606,7 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.machine_lithium_battery, 3), new ComparableStack(ModBlocks.hadron_coil_neodymium, 8), new ComparableStack(ModItems.wire_advanced_alloy, 96), - new OreDictStack(STEEL.ingot(), 16), + !exp ? new OreDictStack(STEEL.ingot(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new OreDictStack(STEEL.plate528(), 32), new OreDictStack(AL.plate528(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 24), @@ -612,7 +617,7 @@ public class AssemblerRecipes { }, 600); makeRecipe(new ComparableStack(ModBlocks.reactor_zirnox, 1), new AStack[] { - new ComparableStack(ModItems.hull_big_steel, 4), + !exp ? new ComparableStack(ModItems.hull_big_steel, 4) : new OreDictStack(STEEL.heavyComp(), 1), new ComparableStack(ModBlocks.steel_scaffold, 4), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModBlocks.deco_pipe_quad, 8), @@ -902,7 +907,7 @@ public class AssemblerRecipes { new ComparableStack(Blocks.glass, 12), new ComparableStack(ModItems.motor, 2), new OreDictStack(DURA.ingot(), 4), - new OreDictStack(STEEL.plate528(), 8), + !exp ? new OreDictStack(STEEL.plate528(), 8) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(DESH.ingot(), 2), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModItems.pipes_steel, 1), @@ -912,7 +917,7 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.fusion_conductor, 16), new ComparableStack(ModBlocks.machine_lithium_battery, 2), new OreDictStack(STEEL.ingot(), 16), - new OreDictStack(STEEL.plate528(), 24), + !exp ? new OreDictStack(STEEL.plate528(), 24) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.circuit_red_copper, 4), new ComparableStack(ModItems.wire_red_copper, 64), @@ -922,7 +927,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.rbmk_blank, 1), new AStack[] { new ComparableStack(ModBlocks.concrete_asbestos, 4), - new OreDictStack(STEEL.plate528(), 4), + !exp ? new OreDictStack(STEEL.plate528(), 4) : new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(CU.ingot(), 4), new ComparableStack(ModItems.plate_polymer, 4) }, 100); @@ -936,7 +941,7 @@ public class AssemblerRecipes { }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_assemfac, 1), new AStack[] { - new OreDictStack(STEEL.ingot(), 48), + !exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(B.ingot(), 4), new OreDictStack(RUBBER.ingot(), 16), @@ -948,7 +953,7 @@ public class AssemblerRecipes { }, 400); makeRecipe(new ComparableStack(ModBlocks.machine_chemfac, 1), new AStack[] { - new OreDictStack(STEEL.ingot(), 48), + !exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 16), @@ -982,8 +987,8 @@ public class AssemblerRecipes { }, 150); makeRecipe(new ComparableStack(ModBlocks.machine_vacuum_distill, 1), new AStack[] { - new OreDictStack(STEEL.plateCast(), 16), - new OreDictStack(CU.plate528(), 16), + !exp ? new OreDictStack(STEEL.plateCast(), 16) : new OreDictStack(STEEL.heavyComp(), 4), + !exp ? new OreDictStack(CU.plate528(), 16) : new OreDictStack(CU.heavyComp(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.pipes_steel, 1), @@ -991,8 +996,8 @@ public class AssemblerRecipes { new OreDictStack(KEY_CIRCUIT_BISMUTH, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_reformer, 1), new AStack[] { - new OreDictStack(STEEL.plateCast(), 12), - new OreDictStack(CU.plate528(), 8), + !exp ? new OreDictStack(STEEL.plateCast(), 12) : new OreDictStack(STEEL.heavyComp(), 4), + !exp ? new OreDictStack(CU.plate528(), 8) : new OreDictStack(CU.heavyComp(), 2), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.hull_big_steel, 3), @@ -1010,8 +1015,8 @@ public class AssemblerRecipes { }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_electrolyser, 1), new AStack[] { - new OreDictStack(STEEL.plateCast(), 8), - new OreDictStack(CU.plate528(), 16), + !exp ? new OreDictStack(STEEL.plateCast(), 8) : new OreDictStack(STEEL.heavyComp(), 2), + !exp ? new OreDictStack(CU.plate528(), 16) : new OreDictStack(CU.heavyComp(), 1), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.ingot_firebrick, 16), new ComparableStack(ModItems.tank_steel, 3), @@ -1038,7 +1043,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.block_cap_star, 1), new AStack[] { new ComparableStack(ModItems.cap_star, 128) }, 10); if(!GeneralConfig.enable528) { - makeRecipe(new ComparableStack(ModBlocks.machine_hephaestus, 1), new AStack[] { new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(CU.plate(), 24), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModBlocks.glass_quartz, 16) }, 150); + makeRecipe(new ComparableStack(ModBlocks.machine_hephaestus, 1), new AStack[] { new ComparableStack(ModItems.pipes_steel, 1), !exp ? new OreDictStack(STEEL.ingot(), 24) : new OreDictStack(STEEL.heavyComp(), 2), !exp ? new OreDictStack(CU.plate(), 24) : new OreDictStack(CU.heavyComp(), 2), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModBlocks.glass_quartz, 16) }, 150); makeRecipe(new ComparableStack(ModBlocks.machine_radgen, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 6), new ComparableStack(ModItems.wire_magnetized_tungsten, 24), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.reactor_core, 3), new OreDictStack(STAR.ingot(), 1), new OreDictStack("dyeRed", 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_reactor_breeding, 1), new AStack[] {new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)},150); makeRecipe(new ComparableStack(ModBlocks.reactor_research, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.motor_desh, 2), new OreDictStack(B.ingot(), 5), new OreDictStack(PB.plate(), 8), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.circuit_copper, 2), },300); @@ -1143,7 +1148,7 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 2), - new ComparableStack(ModItems.plate_desh, 6), + !exp ? new ComparableStack(ModItems.plate_desh, 6) : new OreDictStack(DESH.heavyComp()), new OreDictStack(NB.ingot(), 8), new ComparableStack(ModItems.tank_steel, 24), new ComparableStack(ModItems.pipes_steel, 2) @@ -1151,7 +1156,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_cracker), new AStack[] { new ComparableStack(ModBlocks.steel_scaffold, 16), - new ComparableStack(ModItems.hull_big_steel, 4), + !exp ? new ComparableStack(ModItems.hull_big_steel, 4) : new OreDictStack(STEEL.heavyComp()), new ComparableStack(ModItems.tank_steel, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(NB.ingot(), 2), @@ -1181,7 +1186,7 @@ public class AssemblerRecipes { }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] { - new OreDictStack(STEEL.ingot(), 12), + !exp ? new OreDictStack(STEEL.ingot(), 12) : new OreDictStack(STEEL.heavyComp()), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(DURA.ingot(), 10), new OreDictStack(RUBBER.ingot(), 4), @@ -1235,6 +1240,11 @@ public class AssemblerRecipes { } } + for(NTMMaterial mat : Mats.orderedList) { + if(mat.shapes.contains(MaterialShapes.CASTPLATE) && mat.shapes.contains(MaterialShapes.HEAVY_COMPONENT)) { + makeRecipe(new ComparableStack(ModItems.heavy_component, 1, mat.id), new AStack[] { new OreDictStack(MaterialShapes.CASTPLATE.name() + mat.names[0], 256) }, 12_000); + } + } /// HIDDEN /// hidden.put(new ComparableStack(ModBlocks.machine_radgen, 1), new HashSet() {{ add(ModItems.journal_pip); }}); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a080abd59..0e9713841 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -777,6 +777,7 @@ public class ModItems { public static Item mold; public static Item scraps; public static Item plate_cast; + public static Item heavy_component; public static Item part_lithium; public static Item part_beryllium; @@ -3255,6 +3256,7 @@ public class ModItems { mold = new ItemMold().setUnlocalizedName("mold").setCreativeTab(MainRegistry.controlTab); scraps = new ItemScraps().aot(Mats.MAT_BISMUTH, "scraps_bismuth").setUnlocalizedName("scraps").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scraps"); plate_cast = new ItemAutogen(MaterialShapes.CASTPLATE).aot(Mats.MAT_BISMUTH, "plate_cast_bismuth").setUnlocalizedName("plate_cast").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_cast"); + heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":heavy_component"); part_lithium = new Item().setUnlocalizedName("part_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_lithium"); part_beryllium = new Item().setUnlocalizedName("part_beryllium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_beryllium"); @@ -5988,6 +5990,7 @@ public class ModItems { //Heavy/Cast Plate GameRegistry.registerItem(plate_cast, plate_cast.getUnlocalizedName()); + GameRegistry.registerItem(heavy_component, heavy_component.getUnlocalizedName()); //Boards GameRegistry.registerItem(board_copper, board_copper.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 26b7c4ac5..da10a8299 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4739)"; + public static final String VERSION = "1.0.27 BETA (4740)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 936ab410b..06b7eef97 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -888,7 +888,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.pwr_heatex, 4), new Object[] { "CSC", "SMS", "CSC", 'C', CU.plateCast(), 'S', STEEL.plate528(), 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.pwr_reflector, 4), new Object[] { "RLR", "LSL", "RLR", 'R', OreDictManager.getReflector(), 'L', PB.plate528(), 'S', STEEL.plateCast() }); addRecipeAuto(new ItemStack(ModBlocks.pwr_casing, 4), new Object[] { "LCL", "CSC", "LCL", 'L', PB.plate528(), 'C', ANY_CONCRETE.any(), 'S', STEEL.plateCast() }); - addRecipeAuto(new ItemStack(ModBlocks.pwr_controller, 1), new Object[] { "CPC", "PSP", "CPC", 'C', ModBlocks.pwr_casing, 'P', ANY_PLASTIC.ingot(), 'S', ModItems.circuit_gold }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_controller, 1), new Object[] { "CPC", "PSP", "CPC", 'C', ModBlocks.pwr_casing, 'P', ANY_PLASTIC.ingot(), 'S', !GeneralConfig.enableExpensiveMode ? ModItems.circuit_gold : STEEL.heavyComp() }); addRecipeAuto(new ItemStack(ModBlocks.pwr_port, 1), new Object[] { "S", "C", "S", 'S', STEEL.plate(), 'C', ModBlocks.pwr_casing }); addRecipeAuto(new ItemStack(ModBlocks.pwr_neutron_source, 1), new Object[] { "LRL", "ZRZ", "LRL", 'L', PB.plate528(), 'R', ModItems.billet_ra226be, 'Z', ZR.plateCast() }); @@ -995,7 +995,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_conveyor_press), new Object[] { "CPC", "CBC", "CCC", 'C', CU.plate(), 'P', ModBlocks.machine_epress, 'B', ModBlocks.conveyor }); - addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { "PPP", "HCH", " B ", 'P', STEEL.plate(), 'H', ModItems.hull_small_steel, 'C', ModItems.circuit_copper, 'B', ModBlocks.crate_steel }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { "PPP", "HCH", " B ", 'P', ANY_PLASTIC.ingot(), 'H', ModItems.hull_small_steel, 'C', ModItems.circuit_copper, 'B', ModBlocks.crate_steel }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', ModItems.plate_desh, 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) }); @@ -1011,6 +1011,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', ModItems.circuit_red_copper }); addRecipeAuto(new ItemStack(ModBlocks.drone_crate_requester), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_YELLOW }); addRecipeAuto(new ItemStack(ModBlocks.drone_crate_provider), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_ORANGE }); + addRecipeAuto(new ItemStack(ModBlocks.drone_dock), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', ModItems.circuit_gold }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1), new Object[] { ModItems.ingot_chainsteel, ASBESTOS.ingot(), ModItems.gem_alexandrite }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1, 3), new Object[] { DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2) }); diff --git a/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java b/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java index d5ed89036..e42ebd0f2 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java +++ b/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java @@ -47,7 +47,7 @@ public class RenderFallingBlockNT extends Render { tessellator.draw(); } else { this.renderBlocks.setRenderBoundsFromBlock(block); - this.renderBlocks.renderBlockSandFalling(block, world, iX, iY, iZ, entity.fallingMeta); + this.renderBlocks.renderBlockSandFalling(block, world, iX, iY, iZ, entity.getDataWatcher().getWatchableObjectInt(11)); } GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index e4131a9d4..dc4dfc8f0 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2038,6 +2038,7 @@ item.heart_booster.name=Herzbooster item.heart_container.name=Herzcontainer item.heart_fab.name=Fab Herz item.heart_piece.name=Herzteil +item.heavy_component.name=Schwere %skomponente item.hev_battery.name=Anzugs-Batterie item.hev_boots.name=HEV Mark IV Stiefel item.hev_plate.name=HEV Mark IV Brustpanzer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index be8530bcf..9a991bf11 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2758,6 +2758,7 @@ item.heart_booster.name=Heart Booster item.heart_container.name=Heart Container item.heart_fab.name=Fab Heart item.heart_piece.name=Heart Piece +item.heavy_component.name=Heavy %s Component item.hev_battery.name=Suit Battery item.hev_boots.name=HEV Mark IV Boots item.hev_plate.name=HEV Mark IV Chestplate diff --git a/src/main/resources/assets/hbm/textures/items/heavy_component.png b/src/main/resources/assets/hbm/textures/items/heavy_component.png new file mode 100644 index 0000000000000000000000000000000000000000..276fb9e48dc6845f48dee6ace42fbd9be56f03d6 GIT binary patch literal 315 zcmV-B0mS}^P)N*wYUH{;1c}hN>z65D~1k0DuqzthERsV49{E0KA{V%d)^2gLPdojw6zv z=NZiWOrWZI90x)O*IH@?0A_}B4%@cX1ixu^&cPT{6R4^ZQ9;AZ7>1!}HpW0iY62nx zGsAmd3`zbx&!Rc$egC=d`{sZo5h?svZtmgxnut^s#ejQTOCo|8GZ{DcnxF-CM< z*Cxn=t@}vfM}oXHzpQljgun0m_52q>{)BnpQ@9}T-dC;pcPsoa`Ub&>wvXH|Yij@i N002ovPDHLkV1kr>g|Ywu literal 0 HcmV?d00001 From d0530d2d7f9d3a5bcd0020e4f3ff82aac07b1cb7 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 3 Oct 2023 15:26:29 +0200 Subject: [PATCH 057/207] fullerite --- src/main/java/com/hbm/inventory/fluid/Fluids.java | 5 ++++- .../inventory/recipes/CrystallizerRecipes.java | 2 ++ .../com/hbm/inventory/recipes/MixerRecipes.java | 2 ++ .../com/hbm/inventory/recipes/SILEXRecipes.java | 7 ++++++- src/main/java/com/hbm/items/ItemEnums.java | 3 ++- src/main/java/com/hbm/items/ModItems.java | 3 +++ src/main/resources/assets/hbm/lang/de_DE.lang | 3 +++ src/main/resources/assets/hbm/lang/en_US.lang | 3 +++ .../assets/hbm/textures/gui/fluids/fullerene.png | Bin 0 -> 712 bytes .../assets/hbm/textures/items/plate_welded.png | Bin 0 -> 429 bytes .../hbm/textures/items/powder_ash.fullerene.png | Bin 0 -> 480 bytes 11 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/fullerene.png create mode 100644 src/main/resources/assets/hbm/textures/items/plate_welded.png create mode 100644 src/main/resources/assets/hbm/textures/items/powder_ash.fullerene.png diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 093030189..83034ba51 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -162,6 +162,7 @@ public class Fluids { public static FluidType THORIUM_SALT; public static FluidType THORIUM_SALT_HOT; public static FluidType THORIUM_SALT_DEPLETED; + public static FluidType FULLERENE; private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); @@ -323,7 +324,8 @@ public class Fluids { SODIUM_HOT = new FluidType("SODIUM_HOT", 0xE2ADC1, 1, 2, 3, EnumSymbol.NONE).setTemp(1200).addTraits(LIQUID); THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, new FT_Corrosive(65)); - THORIUM_SALT_DEPLETED = new FluidType(129, "THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); + THORIUM_SALT_DEPLETED = new FluidType("THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); + FULLERENE = new FluidType(130, "FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE @@ -439,6 +441,7 @@ public class Fluids { metaOrder.add(DEATH); metaOrder.add(WATZ); metaOrder.add(REDMUD); + metaOrder.add(FULLERENE); metaOrder.add(EGG); metaOrder.add(CHOLESTEROL); metaOrder.add(CHLOROCALCITE_SOLUTION); diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 69c7652e1..8f33e422e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -19,6 +19,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumPlantType; import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; @@ -95,6 +96,7 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(Items.dye, 1, 15), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 4), 20), new FluidStack(Fluids.SULFURIC_ACID, 250)); registerRecipe(new ComparableStack(Items.bone), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 16), 20), new FluidStack(Fluids.SULFURIC_ACID, 1_000)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CrystallizerRecipe(new ItemStack(ModItems.powder_cadmium), 100).setReq(10), new FluidStack(Fluids.RADIOSOLVENT, 250)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).setReq(4), new FluidStack(Fluids.XYLENE, 1_000)); registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime)); registerRecipe(EMERALD.dust(), new CrystallizerRecipe(Items.emerald, utilityTime)); diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index dece889df..15bf9a25e 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -20,6 +20,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.machine.ItemFluidIcon; import net.minecraft.init.Blocks; @@ -47,6 +48,7 @@ public class MixerRecipes extends SerializableRecipe { register(Fluids.EGG, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.RADIOSOLVENT, 500)).setSolid(new ComparableStack(Items.egg))); register(Fluids.FISHOIL, new MixerRecipe(100, 50).setSolid(new ComparableStack(Items.fish, 1, OreDictionary.WILDCARD_VALUE))); register(Fluids.SUNFLOWEROIL, new MixerRecipe(100, 50).setSolid(new ComparableStack(Blocks.double_plant, 1, 0))); + register(Fluids.FULLERENE, new MixerRecipe(250, 50).setStack1(new FluidStack(Fluids.RADIOSOLVENT, 500)).setSolid(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.SOOT)))); register(Fluids.SOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500))); register(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust()))); diff --git a/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java b/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java index adb944df5..3b0d908a2 100644 --- a/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java @@ -11,6 +11,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.items.special.ItemWasteLong; import com.hbm.items.special.ItemWasteShort; @@ -31,7 +32,7 @@ public class SILEXRecipes { itemTranslation.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.UF6.getID()), new ComparableStack(ModItems.ingot_uranium)); dictTranslation.put(U.dust(), U.ingot()); - recipes.put(U.ingot(), new SILEXRecipe(900, 100, EnumWavelengths.UV) + recipes.put(U.ingot(), new SILEXRecipe(900, 100, EnumWavelengths.VISIBLE) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 1)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 11)) ); @@ -630,6 +631,10 @@ public class SILEXRecipes { .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_lithium), 10)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.fluorite), 5)) ); + + recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.FULLERENE.getID()), new SILEXRecipe(1_000, 1_000, EnumWavelengths.UV) + .addOut(new WeightedRandomObject(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE), 1)) + ); } public static SILEXRecipe getOutput(ItemStack stack) { diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index f57fde2f9..77f435b48 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -28,7 +28,8 @@ public class ItemEnums { COAL, MISC, FLY, - SOOT + SOOT, + FULLERENE } public static enum EnumBriquetteType { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 0e9713841..275ec153d 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -361,6 +361,7 @@ public class ModItems { public static Item powder_cadmium; public static Item powder_bismuth; public static Item ingot_mud; + public static Item ingot_cft; public static Item ingot_lanthanium; public static Item ingot_actinium; @@ -2677,6 +2678,7 @@ public class ModItems { powder_cadmium = new Item().setUnlocalizedName("powder_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cadmium"); powder_bismuth = new Item().setUnlocalizedName("powder_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bismuth"); ingot_mud = new Item().setUnlocalizedName("ingot_mud").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_mud"); + ingot_cft = new Item().setUnlocalizedName("ingot_cft").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cft"); ore_byproduct = new ItemByproduct().setUnlocalizedName("ore_byproduct").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":byproduct"); @@ -5588,6 +5590,7 @@ public class ModItems { GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName()); GameRegistry.registerItem(ingot_pvc, ingot_pvc.getUnlocalizedName()); GameRegistry.registerItem(ingot_mud, ingot_mud.getUnlocalizedName()); + GameRegistry.registerItem(ingot_cft, ingot_cft.getUnlocalizedName()); GameRegistry.registerItem(ingot_schraranium, ingot_schraranium.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidate, ingot_schrabidate.getUnlocalizedName()); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index dc4dfc8f0..be712bbcc 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -664,6 +664,7 @@ hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Endersaft hbmfluid.fishoil=Fischöl hbmfluid.fracksol=Frackinglösung +hbmfluid.fullerene=Fullerenlösung hbmfluid.gas=Erdgas hbmfluid.gas_coker=Koker-Gas hbmfluid.gasoline=Benzin @@ -2082,6 +2083,7 @@ item.ingot_c4.name=C4-Tafel item.ingot_cadmium.name=Cadmiumbarren item.ingot_calcium.name=Kalziumbarren item.ingot_cdalloy.name=Cadmiumstahlbarren +item.ingot_cft.name=Kristallines Fullerit item.ingot_chainsteel.name=Schwerer Kettenstahl item.ingot_co60.name=Kobalt-60-Barren item.ingot_cobalt.name=Kobaltbarren @@ -2704,6 +2706,7 @@ item.powder_aluminium.name=Aluminiumstaub item.powder_asbestos.name=Asbeststaub item.powder_ash.coal.name=Kohleasche item.powder_ash.fly.name=Flugasche +item.powder_ash.fullerene.name=Fulleren item.powder_ash.misc.name=Asche item.powder_ash.soot.name=Feiner Ruß item.powder_ash.wood.name=Holzasche diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 9a991bf11..507756c68 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1306,6 +1306,7 @@ hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Ender Juice hbmfluid.fishoil=Fish Oil hbmfluid.fracksol=Fracking Solution +hbmfluid.fullerene=Fullerene Solution hbmfluid.gas=Natural Gas hbmfluid.gas_coker=Coker Gas hbmfluid.gasoline=Gasoline @@ -2805,6 +2806,7 @@ item.ingot_c4.name=Bar of Composition C-4 item.ingot_cadmium.name=Cadmium Ingot item.ingot_calcium.name=Calcium Ingot item.ingot_cdalloy.name=Cadmium Steel Ingot +item.ingot_cft.name=Crystalline Fullerite item.ingot_chainsteel.name=Heavy Chainsteel item.ingot_co60.name=Cobalt-60 Ingot item.ingot_cobalt.name=Cobalt Ingot @@ -3509,6 +3511,7 @@ item.powder_asbestos.name=Asbestos Powder item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r item.powder_ash.coal.name=Coal Ash item.powder_ash.fly.name=Fly Ash +item.powder_ash.fullerene.name=Fullerene item.powder_ash.misc.name=Ash item.powder_ash.soot.name=Fine Soot item.powder_ash.wood.name=Wood Ash diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/fullerene.png b/src/main/resources/assets/hbm/textures/gui/fluids/fullerene.png new file mode 100644 index 0000000000000000000000000000000000000000..bcde8c2777f8ecac54056b895a2cc629da5aa279 GIT binary patch literal 712 zcmV;(0yq7MP)L=Kv%kg4UX07DFpeWiYc`t=F-DY9v~4>LfBFCdRaFtZ z2S96muEMg!WZBs=tu^F1`SmqbRk8cyPsZ0RAp{PG10e*w_aK7z9>Kxx#}B%;rR%!M zf9D8I!+fzoM0k37;&eJumLV|}4jZzBlJ@bzrr?o>sSxa|3QkEr6)9~=+ z3*B~$dwausk5Y={cx3j^*Wcf@*4*CSPES$_t}fxN!FL_n7=rhVesTJ9S-C6vd>j)Re;j%M!FE zFA9<*A<43g&~+GN2wlhg`WojP^Z6X-93pb2QZH{npx*5$ih>v;5@VcHj3LGdz+$nW uX&Q_%hzJ0E-&6hdFZ_1^;BYt~BK!|Ubv^mAwEMpR0000<6h;sGUaCkHrU?p%2S2`M)JPn`H}fwj_z6FN1Vu>k z^&LOKph!rQswPEX<|(@GLCJ2id*z)u-#wE%@Q>Adcc7H=!{HEs^?LpG-miD?bUJ0V zS`kGNNs{;^N&H_KJYcOg$K#PWjy1q&f4%d+h|=g?XMkfv#85K1Y( zTrR!$-e+0ni=yyZmc8^IRTPDnQu>c)ZEGz})6g_cJK0)Gzu%`UOAdzvK@eb!;dZ<6 zsg&}w*^D@jNz)X7@p$|LemuuHhY*78c1vB?zqjC=V?LiFgg|S}e!mCkgpDy=E*I|i zJ3$c8lT!N8XaqnMMVwA27K;Uw$)q&`+R5MH-EP+{s;bEI9AgZd%?4{N0LB>V zy8Z#TYm`!YfWcruRaHD2g<<$Ix$_@<4+03okn{OW5Com@OF&mpm-Zh6o`c@O|E0bF Xl$G~fS|wl500000NkvXXu0mjfh4Q|f literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.fullerene.png b/src/main/resources/assets/hbm/textures/items/powder_ash.fullerene.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca1e7f7471228b224705713ac05ec4ba78d1f4 GIT binary patch literal 480 zcmV<60U!Q}P)2L6oSAo@h@<2a4^yTz{SN5gh-;Zp?8utrZv&FXfG6cJ)V<|5UUBSeACNI-k0}&d2qx( znLF?3-LVBd(D41Fqo1yqwPZJRW;D}LV*agZUvPA8VgZds*m9MtC$A9>iaskX%YOyV zrFp$K>7e}v4NuuD`&^t#(R?ekVxrG0Po$$DGcm6ZrX9W)>zwfWh{PjUzQy}@9~m(d zOh$#4CHkWNxGgb$7mucFok^yV0TZjgm)h4lYq<}Y!v-T==h$etjK@<9NrIc*i|tGV zVDXBr>13MYJ$+P)K2fU|VkTR8_MGtWvaQRjPxr`fpUJdkyMeGj{X=turOqEZd$#lE?dKN= WCZ%L$k8NfE0000 Date: Tue, 3 Oct 2023 22:08:06 +0200 Subject: [PATCH 058/207] SILEX tweaks, arc welder model --- .../java/com/hbm/inventory/gui/GUISILEX.java | 5 +- .../tileentity/machine/TileEntitySILEX.java | 18 +- .../assets/hbm/models/machines/arc_welder.obj | 1225 +++++++++++++++++ .../textures/models/machines/arc_welder.png | Bin 0 -> 1024 bytes 4 files changed, 1246 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/machines/arc_welder.obj create mode 100644 src/main/resources/assets/hbm/textures/models/machines/arc_welder.png diff --git a/src/main/java/com/hbm/inventory/gui/GUISILEX.java b/src/main/java/com/hbm/inventory/gui/GUISILEX.java index 8de55b89a..722b59878 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISILEX.java +++ b/src/main/java/com/hbm/inventory/gui/GUISILEX.java @@ -6,6 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerSILEX; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.SILEXRecipes; +import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.lib.RefStrings; import com.hbm.packet.AuxButtonPacket; @@ -18,6 +20,7 @@ import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; public class GUISILEX extends GuiInfoContainer { @@ -85,7 +88,7 @@ public class GUISILEX extends GuiInfoContainer { if(silex.tank.getFill() > 0) { - if(silex.tank.getTankType() == Fluids.ACID || silex.fluidConversion.containsKey(silex.tank.getTankType())) { + if(silex.tank.getTankType() == Fluids.ACID || silex.fluidConversion.containsKey(silex.tank.getTankType()) || SILEXRecipes.getOutput(new ItemStack(ModItems.fluid_icon, 1, silex.tank.getTankType().getID())) != null) { drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 118, 54, 9); } else { drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 109, 54, 9); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java index f89d0660f..454714695 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java @@ -158,10 +158,26 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce if(current != null && current.equals(conv)) { - int toFill = Math.min(10, Math.min(maxFill - currentFill, tank.getFill())); + int toFill = Math.min(50, Math.min(maxFill - currentFill, tank.getFill())); currentFill += toFill; tank.setFill(tank.getFill() - toFill); } + } else { + ComparableStack direct = new ComparableStack(ModItems.fluid_icon, 1, tank.getTankType().getID()); + + if(SILEXRecipes.getOutput(direct.toStack()) != null) { + + if(currentFill == 0) { + current = (ComparableStack) direct.copy(); + } + + if(current != null && current.equals(direct)) { + + int toFill = Math.min(50, Math.min(maxFill - currentFill, tank.getFill())); + currentFill += toFill; + tank.setFill(tank.getFill() - toFill); + } + } } loadDelay++; diff --git a/src/main/resources/assets/hbm/models/machines/arc_welder.obj b/src/main/resources/assets/hbm/models/machines/arc_welder.obj new file mode 100644 index 000000000..cf99681bf --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/arc_welder.obj @@ -0,0 +1,1225 @@ +# Blender v2.79 (sub 0) OBJ File: 'arc_welder.blend' +# www.blender.org +o Plane +v -1.000000 0.000000 1.500000 +v 1.000000 0.000000 1.500000 +v -1.000000 0.000000 -1.500000 +v 1.000000 0.000000 -1.500000 +v -1.000000 0.125000 1.500000 +v 1.000000 0.125000 1.500000 +v -1.000000 0.125000 -1.500000 +v 1.000000 0.125000 -1.500000 +v -1.000000 0.875000 1.500000 +v 1.000000 0.875000 1.500000 +v -1.000000 0.875000 -1.500000 +v 1.000000 0.875000 -1.500000 +v -1.000000 1.000000 1.500000 +v 1.000000 1.000000 1.500000 +v -1.000000 1.000000 -1.500000 +v 1.000000 1.000000 -1.500000 +v -0.875000 0.125000 -1.375000 +v -0.875000 0.125000 1.375000 +v 0.875000 0.125000 1.375000 +v 0.875000 0.125000 -1.375000 +v -0.875000 0.875000 -1.375000 +v -0.875000 0.875000 1.375000 +v 0.875000 0.875000 1.375000 +v 0.875000 0.875000 -1.375000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 1.125000 -0.500000 +v -0.500000 1.125000 0.500000 +v 0.500000 1.125000 0.500000 +v 0.500000 1.125000 -0.500000 +v -0.750000 2.000000 1.125000 +v 0.750000 2.000000 1.125000 +v -0.750000 2.000000 0.875000 +v 0.750000 2.000000 0.875000 +v -0.750000 1.000000 1.125000 +v 0.750000 1.000000 1.125000 +v -0.750000 1.000000 0.875000 +v 0.750000 1.000000 0.875000 +v -0.500000 1.750000 1.125000 +v 0.500000 1.750000 1.125000 +v -0.500000 1.750000 0.875000 +v 0.500000 1.750000 0.875000 +v 0.500000 1.000000 1.125000 +v 0.500000 1.000000 0.875000 +v -0.500000 1.000000 1.125000 +v -0.500000 1.000000 0.875000 +v -0.750000 2.000000 -0.875000 +v 0.750000 2.000000 -0.875000 +v -0.750000 2.000000 -1.125000 +v 0.750000 2.000000 -1.125000 +v -0.750000 1.000000 -0.875000 +v 0.750000 1.000000 -0.875000 +v -0.750000 1.000000 -1.125000 +v 0.750000 1.000000 -1.125000 +v -0.500000 1.750000 -0.875000 +v 0.500000 1.750000 -0.875000 +v -0.500000 1.750000 -1.125000 +v 0.500000 1.750000 -1.125000 +v 0.500000 1.000000 -0.875000 +v 0.500000 1.000000 -1.125000 +v -0.500000 1.000000 -0.875000 +v -0.500000 1.000000 -1.125000 +v -0.250000 1.849455 1.399379 +v -0.250000 2.259031 1.112591 +v -0.250000 1.419272 0.785015 +v -0.250000 1.828848 0.498227 +v 0.250000 1.849455 1.399379 +v 0.250000 2.259031 1.112591 +v 0.250000 1.419272 0.785015 +v 0.250000 1.828848 0.498227 +v -0.187500 1.900652 1.363531 +v -0.187500 2.207834 1.148439 +v 0.187500 2.207834 1.148439 +v 0.187500 1.900652 1.363531 +v -0.187500 1.972349 1.465925 +v -0.187500 2.279531 1.250834 +v 0.187500 2.279531 1.250834 +v 0.187500 1.972349 1.465925 +v -0.125000 1.726454 0.569924 +v -0.125000 1.521666 0.713318 +v 0.125000 1.521666 0.713318 +v 0.125000 1.726454 0.569924 +v -0.125000 1.583060 0.365136 +v -0.125000 1.378272 0.508530 +v 0.125000 1.378272 0.508530 +v 0.125000 1.583060 0.365136 +v -0.062500 1.531863 0.400984 +v -0.062500 1.429469 0.472682 +v 0.062500 1.429469 0.472682 +v 0.062500 1.531863 0.400984 +v 0.000000 1.193878 0.027257 +v 0.250000 1.849455 -1.399379 +v 0.250000 2.259031 -1.112591 +v 0.250000 1.419272 -0.785015 +v 0.250000 1.828848 -0.498227 +v -0.250000 1.849455 -1.399379 +v -0.250000 2.259031 -1.112591 +v -0.250000 1.419272 -0.785015 +v -0.250000 1.828848 -0.498227 +v 0.187500 1.900652 -1.363531 +v 0.187500 2.207834 -1.148439 +v -0.187500 2.207834 -1.148439 +v -0.187500 1.900652 -1.363531 +v 0.187500 1.972349 -1.465925 +v 0.187500 2.279531 -1.250834 +v -0.187500 2.279531 -1.250834 +v -0.187500 1.972349 -1.465925 +v 0.125000 1.726454 -0.569924 +v 0.125000 1.521666 -0.713318 +v -0.125000 1.521666 -0.713318 +v -0.125000 1.726454 -0.569924 +v 0.125000 1.583060 -0.365136 +v 0.125000 1.378272 -0.508530 +v -0.125000 1.378272 -0.508530 +v -0.125000 1.583060 -0.365136 +v 0.062500 1.531863 -0.400984 +v 0.062500 1.429469 -0.472682 +v -0.062500 1.429469 -0.472682 +v -0.062500 1.531863 -0.400984 +v 0.000000 1.193878 -0.027257 +v -0.375000 1.000000 1.062500 +v 0.375000 1.000000 1.062500 +v -0.375000 1.000000 1.437500 +v 0.375000 1.000000 1.437500 +v -0.375000 1.187500 1.437500 +v -0.375000 1.187500 1.062500 +v 0.375000 1.187500 1.062500 +v 0.375000 1.187500 1.437500 +v -0.375000 1.250000 1.375000 +v -0.375000 1.250000 1.125000 +v 0.375000 1.250000 1.125000 +v 0.375000 1.250000 1.375000 +v -0.250000 1.000000 1.343750 +v -0.250000 1.000000 1.281250 +v -0.312500 1.000000 1.343750 +v -0.312500 1.000000 1.281250 +v -0.312500 2.062500 1.343750 +v -0.312500 2.062500 1.281250 +v -0.250000 2.062500 1.343750 +v -0.250000 2.062500 1.281250 +v -0.187500 2.062500 1.343750 +v -0.187500 2.062500 1.281250 +v -0.250000 2.125000 1.343750 +v -0.250000 2.125000 1.281250 +v -0.187500 2.125000 1.343750 +v -0.187500 2.125000 1.281250 +v -0.375000 1.000000 -1.437500 +v 0.375000 1.000000 -1.437500 +v -0.375000 1.000000 -1.062500 +v 0.375000 1.000000 -1.062500 +v -0.375000 1.187500 -1.062500 +v -0.375000 1.187500 -1.437500 +v 0.375000 1.187500 -1.437500 +v 0.375000 1.187500 -1.062500 +v -0.375000 1.250000 -1.125000 +v -0.375000 1.250000 -1.375000 +v 0.375000 1.250000 -1.375000 +v 0.375000 1.250000 -1.125000 +v -0.250000 1.000000 -1.281250 +v -0.250000 1.000000 -1.343750 +v -0.312500 1.000000 -1.281250 +v -0.312500 1.000000 -1.343750 +v -0.312500 2.062500 -1.281250 +v -0.312500 2.062500 -1.343750 +v -0.250000 2.062500 -1.281250 +v -0.250000 2.062500 -1.343750 +v -0.187500 2.062500 -1.281250 +v -0.187500 2.062500 -1.343750 +v -0.250000 2.125000 -1.281250 +v -0.250000 2.125000 -1.343750 +v -0.187500 2.125000 -1.281250 +v -0.187500 2.125000 -1.343750 +v 0.750000 1.250000 0.750000 +v 0.875000 1.250000 0.750000 +v 0.750000 1.250000 -0.750000 +v 0.875000 1.250000 -0.750000 +v 0.750000 1.000000 0.750000 +v 0.875000 1.000000 0.750000 +v 0.750000 1.000000 -0.750000 +v 0.875000 1.000000 -0.750000 +v 0.750000 1.124000 0.625000 +v 0.875000 1.124000 0.625000 +v 0.750000 1.124000 -0.625000 +v 0.875000 1.124000 -0.625000 +v 0.750000 0.999000 0.625000 +v 0.875000 0.999000 0.625000 +v 0.750000 0.999000 -0.625000 +v 0.875000 0.999000 -0.625000 +v -0.875000 1.250000 0.750000 +v -0.750000 1.250000 0.750000 +v -0.875000 1.250000 -0.750000 +v -0.750000 1.250000 -0.750000 +v -0.875000 1.000000 0.750000 +v -0.750000 1.000000 0.750000 +v -0.875000 1.000000 -0.750000 +v -0.750000 1.000000 -0.750000 +v -0.875000 1.124000 0.625000 +v -0.750000 1.124000 0.625000 +v -0.875000 1.124000 -0.625000 +v -0.750000 1.124000 -0.625000 +v -0.875000 0.999000 0.625000 +v -0.750000 0.999000 0.625000 +v -0.875000 0.999000 -0.625000 +v -0.750000 0.999000 -0.625000 +v -0.687500 0.687500 1.500000 +v -0.312500 0.687500 1.500000 +v -0.687500 0.312500 1.500000 +v -0.312500 0.312500 1.500000 +v -0.687500 0.312500 1.375000 +v -0.687500 0.687500 1.375000 +v -0.312500 0.687500 1.375000 +v -0.312500 0.312500 1.375000 +v 0.312500 0.687500 1.500000 +v 0.687500 0.687500 1.500000 +v 0.312500 0.312500 1.500000 +v 0.687500 0.312500 1.500000 +v 0.312500 0.312500 1.375000 +v 0.312500 0.687500 1.375000 +v 0.687500 0.687500 1.375000 +v 0.687500 0.312500 1.375000 +v 0.687500 0.687500 -1.500000 +v 0.312500 0.687500 -1.500000 +v 0.687500 0.312500 -1.500000 +v 0.312500 0.312500 -1.500000 +v 0.687500 0.312500 -1.375000 +v 0.687500 0.687500 -1.375000 +v 0.312500 0.687500 -1.375000 +v 0.312500 0.312500 -1.375000 +v -0.312500 0.687500 -1.500000 +v -0.687500 0.687500 -1.500000 +v -0.312500 0.312500 -1.500000 +v -0.687500 0.312500 -1.500000 +v -0.312500 0.312500 -1.375000 +v -0.312500 0.687500 -1.375000 +v -0.687500 0.687500 -1.375000 +v -0.687500 0.312500 -1.375000 +v 1.000000 0.687500 1.187500 +v 1.000000 0.687500 0.812500 +v 1.000000 0.312500 1.187500 +v 1.000000 0.312500 0.812500 +v 0.875000 0.312500 1.187500 +v 0.875000 0.687500 1.187500 +v 0.875000 0.687500 0.812500 +v 0.875000 0.312500 0.812500 +v 1.000000 0.687500 0.187500 +v 1.000000 0.687500 -0.187500 +v 1.000000 0.312500 0.187500 +v 1.000000 0.312500 -0.187500 +v 0.875000 0.312500 0.187500 +v 0.875000 0.687500 0.187500 +v 0.875000 0.687500 -0.187500 +v 0.875000 0.312500 -0.187500 +v -1.000000 0.687500 -0.187500 +v -1.000000 0.687500 0.187500 +v -1.000000 0.312500 -0.187500 +v -1.000000 0.312500 0.187500 +v -0.875000 0.312500 -0.187500 +v -0.875000 0.687500 -0.187500 +v -0.875000 0.687500 0.187500 +v -0.875000 0.312500 0.187500 +v -1.000000 0.687500 0.812500 +v -1.000000 0.687500 1.187500 +v -1.000000 0.312500 0.812500 +v -1.000000 0.312500 1.187500 +v -0.875000 0.312500 0.812500 +v -0.875000 0.687500 0.812500 +v -0.875000 0.687500 1.187500 +v -0.875000 0.312500 1.187500 +v 1.000000 0.687500 -0.812500 +v 1.000000 0.687500 -1.187500 +v 1.000000 0.312500 -0.812500 +v 1.000000 0.312500 -1.187500 +v 0.875000 0.312500 -0.812500 +v 0.875000 0.687500 -0.812500 +v 0.875000 0.687500 -1.187500 +v 0.875000 0.312500 -1.187500 +v -1.000000 0.687500 -1.187500 +v -1.000000 0.687500 -0.812500 +v -1.000000 0.312500 -1.187500 +v -1.000000 0.312500 -0.812500 +v -0.875000 0.312500 -1.187500 +v -0.875000 0.687500 -1.187500 +v -0.875000 0.687500 -0.812500 +v -0.875000 0.312500 -0.812500 +vt 0.571429 0.000000 +vt -0.000000 0.320000 +vt -0.000000 -0.000000 +vt 0.571429 0.340000 +vt 0.023810 0.360000 +vt 0.000000 0.340000 +vt 0.571429 0.320000 +vt 0.571429 0.320000 +vt 0.000000 0.340000 +vt 0.000000 0.320000 +vt 0.952381 0.320000 +vt 0.952381 0.320000 +vt 0.571429 0.340000 +vt 0.000000 0.500000 +vt 0.547619 0.480000 +vt 0.571429 0.500000 +vt -0.000000 0.520000 +vt 0.571429 0.840000 +vt -0.000000 0.840000 +vt 0.571429 0.500000 +vt -0.000000 0.520000 +vt 0.000000 0.500000 +vt 0.952381 0.500000 +vt 0.571429 0.520000 +vt 0.952381 0.500000 +vt 0.571429 0.520000 +vt 0.547619 0.360000 +vt 0.023810 0.480000 +vt 0.023810 0.360000 +vt 0.952381 0.340000 +vt 0.595238 0.360000 +vt 0.952381 0.340000 +vt 0.595238 0.360000 +vt 0.547619 0.360000 +vt 0.023810 0.480000 +vt 0.928571 0.360000 +vt 0.595238 0.480000 +vt 0.928571 0.360000 +vt 0.595238 0.480000 +vt 0.928571 0.480000 +vt 0.547619 0.480000 +vt 0.928571 0.480000 +vt 0.476190 0.880000 +vt 0.190476 0.920000 +vt 0.190476 0.880000 +vt 0.595238 0.540000 +vt 0.785714 0.700000 +vt 0.595238 0.700000 +vt 0.785714 0.520000 +vt 0.595238 0.520000 +vt 0.595238 0.720000 +vt 0.785714 0.720000 +vt 0.809524 0.700000 +vt 0.785714 0.540000 +vt 0.809524 0.540000 +vt 0.571429 0.540000 +vt 0.571429 0.700000 +vt 0.666667 0.920000 +vt 0.476190 0.920000 +vt -0.000000 0.880000 +vt 0.238095 0.960000 +vt 0.428571 0.840000 +vt 0.428571 1.000000 +vt 0.238095 1.000000 +vt 0.523810 0.960000 +vt 0.666667 1.000000 +vt 0.523810 1.000000 +vt 0.142857 1.000000 +vt -0.000000 0.960000 +vt 0.142857 0.960000 +vt -0.000000 0.920000 +vt 0.142857 0.840000 +vt 0.523810 0.840000 +vt 0.666667 0.880000 +vt 0.476190 0.880000 +vt 0.190476 0.920000 +vt 0.190476 0.880000 +vt 0.666667 0.920000 +vt 0.476190 0.920000 +vt -0.000000 0.880000 +vt 0.238095 0.960000 +vt 0.428571 0.840000 +vt 0.428571 1.000000 +vt 0.238095 1.000000 +vt 0.523810 0.960000 +vt 0.666667 1.000000 +vt 0.523810 1.000000 +vt 0.142857 1.000000 +vt -0.000000 0.960000 +vt 0.142857 0.960000 +vt -0.000000 0.920000 +vt 0.142857 0.840000 +vt 0.523810 0.840000 +vt 0.666667 0.880000 +vt 0.678571 0.240000 +vt 0.821429 0.160000 +vt 0.821429 0.240000 +vt 0.821429 -0.000000 +vt 0.845238 0.060000 +vt 0.821429 0.080000 +vt 0.678571 -0.000000 +vt 0.678571 0.160000 +vt 0.666667 0.090000 +vt 0.678571 0.080000 +vt 0.821429 0.320000 +vt 0.666667 0.150000 +vt 0.642857 0.090000 +vt 0.666667 0.010000 +vt 0.666667 0.230000 +vt 0.666667 0.170000 +vt 0.678571 0.320000 +vt 0.666667 0.250000 +vt 0.571429 0.150000 +vt 0.571429 0.090000 +vt 0.642857 0.070000 +vt 0.642857 0.010000 +vt 0.666667 0.310000 +vt 0.642857 0.250000 +vt 0.642857 0.170000 +vt 0.845238 0.180000 +vt 0.892857 0.220000 +vt 0.845238 0.220000 +vt 0.845238 0.300000 +vt 0.845238 0.140000 +vt 0.892857 0.020000 +vt 0.904762 0.050000 +vt 0.892857 0.060000 +vt 0.845238 0.260000 +vt 0.892857 0.300000 +vt 0.845238 0.100000 +vt 0.892857 0.140000 +vt 0.904762 0.030000 +vt 1.000000 0.040000 +vt 0.904762 0.270000 +vt 1.000000 0.280000 +vt 0.904762 0.290000 +vt 0.904762 0.110000 +vt 1.000000 0.120000 +vt 0.904762 0.130000 +vt 0.904762 0.210000 +vt 0.904762 0.190000 +vt 1.000000 0.200000 +vt 0.892857 0.100000 +vt 0.892857 0.260000 +vt 0.678571 0.240000 +vt 0.821429 0.160000 +vt 0.821429 0.240000 +vt 0.821429 -0.000000 +vt 0.845238 0.060000 +vt 0.821429 0.080000 +vt 0.678571 -0.000000 +vt 0.678571 0.160000 +vt 0.666667 0.090000 +vt 0.678571 0.080000 +vt 0.821429 0.320000 +vt 0.666667 0.150000 +vt 0.642857 0.090000 +vt 0.666667 0.010000 +vt 0.666667 0.230000 +vt 0.666667 0.170000 +vt 0.678571 0.320000 +vt 0.666667 0.250000 +vt 0.571429 0.150000 +vt 0.571429 0.090000 +vt 0.642857 0.070000 +vt 0.642857 0.010000 +vt 0.666667 0.310000 +vt 0.642857 0.250000 +vt 0.642857 0.170000 +vt 0.845238 0.180000 +vt 0.892857 0.220000 +vt 0.845238 0.220000 +vt 0.845238 0.300000 +vt 0.845238 0.140000 +vt 0.892857 0.020000 +vt 0.904762 0.050000 +vt 0.892857 0.060000 +vt 0.845238 0.260000 +vt 0.892857 0.300000 +vt 0.845238 0.100000 +vt 0.892857 0.140000 +vt 0.904762 0.030000 +vt 1.000000 0.040000 +vt 0.904762 0.270000 +vt 1.000000 0.280000 +vt 0.904762 0.290000 +vt 0.904762 0.110000 +vt 1.000000 0.120000 +vt 0.904762 0.130000 +vt 0.904762 0.210000 +vt 0.904762 0.190000 +vt 1.000000 0.200000 +vt 0.892857 0.100000 +vt 0.892857 0.260000 +vt 1.000000 0.500000 +vt 0.988095 0.510000 +vt 0.988095 0.500000 +vt 0.726190 0.720000 +vt 0.797619 0.720000 +vt 0.785714 0.760000 +vt 0.952381 0.500000 +vt 0.964286 0.510000 +vt 0.952381 0.510000 +vt 0.964286 0.320000 +vt 0.952381 0.490000 +vt 0.952381 0.320000 +vt 0.690476 0.760000 +vt 0.726190 0.880000 +vt 0.690476 0.880000 +vt 0.833333 0.880000 +vt 0.797619 0.760000 +vt 0.833333 0.760000 +vt 0.738095 0.880000 +vt 0.785714 0.880000 +vt 0.726190 0.760000 +vt 0.797619 0.880000 +vt 0.976190 0.320000 +vt 0.964286 0.490000 +vt 0.797619 0.920000 +vt 0.988095 0.320000 +vt 0.976190 0.490000 +vt 1.000000 0.320000 +vt 0.988095 0.490000 +vt 0.976190 0.500000 +vt 0.976190 0.510000 +vt 0.952381 0.500000 +vt 0.964286 0.500000 +vt 0.988095 0.500000 +vt 0.726190 0.720000 +vt 0.797619 0.720000 +vt 0.785714 0.760000 +vt 0.690476 0.760000 +vt 0.726190 0.880000 +vt 0.690476 0.880000 +vt 0.833333 0.880000 +vt 0.797619 0.760000 +vt 0.833333 0.760000 +vt 0.738095 0.880000 +vt 0.785714 0.880000 +vt 0.726190 0.760000 +vt 0.797619 0.880000 +vt 0.797619 0.920000 +vt 1.000000 0.500000 +vt 0.988095 0.510000 +vt 0.988095 0.500000 +vt 0.952381 0.500000 +vt 0.964286 0.510000 +vt 0.952381 0.510000 +vt 0.964286 0.320000 +vt 0.952381 0.490000 +vt 0.952381 0.320000 +vt 0.976190 0.320000 +vt 0.964286 0.490000 +vt 0.988095 0.320000 +vt 0.976190 0.490000 +vt 1.000000 0.320000 +vt 0.988095 0.490000 +vt 0.976190 0.500000 +vt 0.976190 0.510000 +vt 0.952381 0.500000 +vt 0.964286 0.500000 +vt 0.988095 0.500000 +vt 0.880952 0.560000 +vt 0.857143 0.800000 +vt 0.857143 0.560000 +vt 0.880952 0.800000 +vt 0.857143 0.840000 +vt 0.880952 0.520000 +vt 0.904762 0.780000 +vt 0.833333 0.580000 +vt 0.928571 0.580000 +vt 0.928571 0.780000 +vt 0.904762 0.540000 +vt 0.928571 0.520000 +vt 0.928571 0.540000 +vt 0.928571 0.820000 +vt 0.904762 0.840000 +vt 0.904762 0.820000 +vt 0.833333 0.820000 +vt 0.880952 0.840000 +vt 0.833333 0.540000 +vt 0.857143 0.520000 +vt 0.880952 0.560000 +vt 0.857143 0.800000 +vt 0.857143 0.560000 +vt 0.880952 0.800000 +vt 0.857143 0.840000 +vt 0.880952 0.520000 +vt 0.904762 0.780000 +vt 0.833333 0.580000 +vt 0.928571 0.580000 +vt 0.928571 0.780000 +vt 0.904762 0.540000 +vt 0.928571 0.520000 +vt 0.928571 0.540000 +vt 0.928571 0.820000 +vt 0.904762 0.840000 +vt 0.904762 0.820000 +vt 0.833333 0.820000 +vt 0.880952 0.840000 +vt 0.833333 0.540000 +vt 0.857143 0.520000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.595238 0.740000 +vt 0.666667 0.800000 +vt 0.595238 0.800000 +vt 0.666667 0.740000 +vt 0.690476 0.800000 +vt 0.571429 0.740000 +vt 0.666667 0.720000 +vt 0.595238 0.820000 +vt 0.952381 0.520000 +vt 0.952381 0.520000 +vt 0.428571 0.960000 +vt 0.238095 0.840000 +vt 0.666667 0.960000 +vt -0.000000 1.000000 +vt -0.000000 0.840000 +vt 0.666667 0.840000 +vt 0.428571 0.960000 +vt 0.238095 0.840000 +vt 0.666667 0.960000 +vt -0.000000 1.000000 +vt -0.000000 0.840000 +vt 0.666667 0.840000 +vt 0.845238 0.020000 +vt 0.642857 0.150000 +vt 0.666667 0.070000 +vt 0.642857 0.310000 +vt 0.642857 0.230000 +vt 0.892857 0.180000 +vt 0.845238 0.020000 +vt 0.642857 0.150000 +vt 0.666667 0.070000 +vt 0.642857 0.310000 +vt 0.642857 0.230000 +vt 0.892857 0.180000 +vt 1.000000 0.510000 +vt 0.797619 0.750000 +vt 0.738095 0.760000 +vt 0.726190 0.750000 +vt 0.797619 0.890000 +vt 0.726190 0.920000 +vt 0.726190 0.890000 +vt 1.000000 0.490000 +vt 0.797619 0.750000 +vt 0.738095 0.760000 +vt 0.726190 0.750000 +vt 0.797619 0.890000 +vt 0.726190 0.920000 +vt 0.726190 0.890000 +vt 1.000000 0.510000 +vt 1.000000 0.490000 +vt 0.904762 0.580000 +vt 0.833333 0.780000 +vt 0.904762 0.520000 +vt 0.928571 0.840000 +vt 0.833333 0.840000 +vt 0.833333 0.520000 +vt 0.904762 0.580000 +vt 0.833333 0.780000 +vt 0.904762 0.520000 +vt 0.928571 0.840000 +vt 0.833333 0.840000 +vt 0.833333 0.520000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vt 0.690476 0.740000 +vt 0.571429 0.800000 +vt 0.595238 0.720000 +vt 0.666667 0.820000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.5736 -0.8192 +vn 0.0000 0.5736 0.8192 +vn 0.0000 -0.8192 0.5736 +vn 0.0000 0.8192 -0.5736 +vn 0.9923 -0.0711 -0.1016 +vn 0.0000 -0.8840 0.4675 +vn 0.0000 0.7417 -0.6708 +vn -0.9923 -0.0711 -0.1016 +vn -0.0000 -0.5736 0.8192 +vn 0.0000 0.5736 -0.8192 +vn 0.0000 -0.8192 -0.5736 +vn 0.0000 0.8192 0.5736 +vn -0.9923 -0.0711 0.1016 +vn 0.0000 -0.8840 -0.4675 +vn 0.0000 0.7417 0.6708 +vn 0.9923 -0.0711 0.1016 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 8/4/2 19/5/2 6/6/2 +f 4/7/3 6/6/3 2/2/3 +f 1/8/4 7/9/4 3/10/4 +f 3/11/5 8/4/5 4/7/5 +f 2/12/6 5/13/6 1/8/6 +f 10/14/1 24/15/1 12/16/1 +f 14/17/2 15/18/2 13/19/2 +f 12/16/3 14/17/3 10/14/3 +f 9/20/4 15/21/4 11/22/4 +f 11/23/5 16/24/5 12/16/5 +f 10/25/6 13/26/6 9/20/6 +f 20/27/3 23/28/3 19/5/3 +f 5/13/2 17/29/2 7/9/2 +f 7/30/2 20/31/2 8/4/2 +f 6/32/2 18/33/2 5/13/2 +f 18/34/4 21/35/4 17/29/4 +f 17/36/5 24/37/5 20/31/5 +f 19/38/6 22/39/6 18/33/6 +f 12/16/1 21/40/1 11/23/1 +f 11/22/1 22/41/1 9/20/1 +f 9/20/1 23/42/1 10/25/1 +f 34/43/2 35/44/2 33/45/2 +f 31/46/2 29/47/2 30/48/2 +f 28/49/3 31/46/3 26/50/3 +f 25/51/4 29/47/4 27/52/4 +f 27/53/5 32/54/5 28/55/5 +f 26/56/6 30/48/6 25/57/6 +f 34/43/3 40/58/3 36/59/3 +f 35/44/4 37/60/4 33/45/4 +f 36/59/5 43/61/5 35/44/5 +f 33/45/6 42/62/6 34/43/6 +f 43/61/1 42/63/1 41/64/1 +f 44/65/4 45/66/4 42/67/4 +f 41/68/3 48/69/3 43/70/3 +f 43/70/5 39/71/5 35/44/5 +f 37/60/6 41/72/6 33/45/6 +f 40/58/5 44/65/5 36/59/5 +f 42/73/6 38/74/6 34/43/6 +f 50/75/2 51/76/2 49/77/2 +f 50/75/3 56/78/3 52/79/3 +f 51/76/4 53/80/4 49/77/4 +f 52/79/5 59/81/5 51/76/5 +f 49/77/6 58/82/6 50/75/6 +f 59/81/1 58/83/1 57/84/1 +f 60/85/4 61/86/4 58/87/4 +f 57/88/3 64/89/3 59/90/3 +f 59/90/5 55/91/5 51/76/5 +f 53/80/6 57/92/6 49/77/6 +f 56/78/5 60/85/5 52/79/5 +f 58/93/6 54/94/6 50/75/6 +f 65/95/4 68/96/4 67/97/4 +f 71/98/7 84/99/7 72/100/7 +f 72/100/3 69/101/3 71/98/3 +f 66/102/8 75/103/8 70/104/8 +f 71/105/9 65/95/9 67/97/9 +f 68/96/10 70/104/10 72/100/10 +f 74/106/10 79/107/10 75/103/10 +f 70/104/8 76/108/8 69/101/8 +f 66/102/8 73/109/8 74/110/8 +f 69/111/8 73/112/8 65/95/8 +f 79/107/8 77/113/8 80/114/8 +f 76/108/3 79/115/3 80/116/3 +f 76/117/9 77/118/9 73/112/9 +f 73/109/4 78/119/4 74/110/4 +f 81/120/4 86/121/4 82/122/4 +f 67/97/7 83/123/7 71/105/7 +f 72/100/7 81/124/7 68/96/7 +f 67/97/7 81/120/7 82/122/7 +f 87/125/7 92/126/7 88/127/7 +f 84/99/3 87/125/3 88/127/3 +f 82/128/9 87/129/9 83/123/9 +f 84/130/10 85/131/10 81/124/10 +f 91/132/11 93/133/11 92/126/11 +f 90/134/12 93/135/12 91/136/12 +f 92/137/13 93/138/13 89/139/13 +f 90/140/14 89/141/14 93/142/14 +f 92/137/7 85/131/7 88/143/7 +f 86/121/7 89/141/7 90/140/7 +f 90/134/7 87/129/7 86/144/7 +f 94/145/3 97/146/3 96/147/3 +f 100/148/15 113/149/15 101/150/15 +f 101/150/4 98/151/4 100/148/4 +f 95/152/16 104/153/16 99/154/16 +f 100/155/17 94/145/17 96/147/17 +f 97/146/18 99/154/18 101/150/18 +f 103/156/18 108/157/18 104/153/18 +f 99/154/16 105/158/16 98/151/16 +f 95/152/16 102/159/16 103/160/16 +f 98/161/16 102/162/16 94/145/16 +f 108/157/16 106/163/16 109/164/16 +f 105/158/4 108/165/4 109/166/4 +f 105/167/17 106/168/17 102/162/17 +f 102/159/3 107/169/3 103/160/3 +f 110/170/3 115/171/3 111/172/3 +f 96/147/15 112/173/15 100/155/15 +f 101/150/15 110/174/15 97/146/15 +f 96/147/15 110/170/15 111/172/15 +f 116/175/15 121/176/15 117/177/15 +f 113/149/4 116/175/4 117/177/4 +f 111/178/17 116/179/17 112/173/17 +f 113/180/18 114/181/18 110/174/18 +f 120/182/19 122/183/19 121/176/19 +f 119/184/20 122/185/20 120/186/20 +f 121/187/21 122/188/21 118/189/21 +f 119/190/22 118/191/22 122/192/22 +f 121/187/15 114/181/15 117/193/15 +f 115/171/15 118/191/15 119/190/15 +f 119/184/15 116/179/15 115/194/15 +f 142/195/1 143/196/1 141/197/1 +f 126/198/3 124/199/3 133/200/3 +f 142/201/5 148/202/5 144/203/5 +f 138/204/5 142/205/5 136/206/5 +f 126/207/6 127/208/6 125/209/6 +f 123/210/5 129/211/5 124/212/5 +f 131/213/2 133/200/2 132/214/2 +f 130/215/23 131/213/23 127/208/23 +f 128/216/24 133/200/24 129/211/24 +f 137/217/4 140/218/4 138/204/4 +f 131/213/4 132/214/4 123/219/4 +f 135/220/6 139/221/6 137/217/6 +f 136/222/3 141/223/3 135/220/3 +f 143/196/6 145/224/6 141/197/6 +f 148/202/2 145/224/2 147/225/2 +f 140/218/5 146/226/5 142/205/5 +f 139/221/25 146/227/25 140/218/25 +f 141/223/6 145/228/6 139/221/6 +f 152/229/3 150/230/3 159/231/3 +f 152/232/6 153/233/6 151/234/6 +f 149/235/5 155/236/5 150/237/5 +f 157/238/2 159/231/2 158/239/2 +f 156/240/23 157/238/23 153/233/23 +f 154/241/24 159/231/24 155/236/24 +f 157/238/4 158/239/4 149/242/4 +f 168/243/1 169/244/1 167/245/1 +f 168/246/5 174/247/5 170/248/5 +f 164/249/5 168/250/5 162/251/5 +f 163/252/4 166/253/4 164/249/4 +f 161/254/6 165/255/6 163/252/6 +f 162/256/3 167/257/3 161/254/3 +f 169/244/6 171/258/6 167/245/6 +f 174/247/2 171/258/2 173/259/2 +f 166/253/5 172/260/5 168/250/5 +f 165/255/25 172/261/25 166/253/25 +f 167/257/6 171/262/6 165/255/6 +f 176/263/2 177/264/2 175/265/2 +f 178/266/5 181/267/5 177/264/5 +f 175/265/6 180/268/6 176/263/6 +f 176/263/3 186/269/3 178/266/3 +f 177/264/4 183/270/4 175/265/4 +f 186/269/1 183/271/1 185/272/1 +f 184/273/5 187/274/5 183/275/5 +f 185/276/6 190/277/6 186/278/6 +f 181/267/4 185/279/4 177/264/4 +f 186/278/3 182/280/3 178/266/3 +f 183/281/4 179/282/4 175/265/4 +f 180/268/3 184/273/3 176/263/3 +f 192/283/2 193/284/2 191/285/2 +f 194/286/5 197/287/5 193/284/5 +f 191/285/6 196/288/6 192/283/6 +f 192/283/3 202/289/3 194/286/3 +f 193/284/4 199/290/4 191/285/4 +f 202/289/1 199/291/1 201/292/1 +f 200/293/5 203/294/5 199/295/5 +f 201/296/6 206/297/6 202/298/6 +f 197/287/4 201/299/4 193/284/4 +f 202/298/3 198/300/3 194/286/3 +f 199/301/4 195/302/4 191/285/4 +f 196/288/3 200/293/3 192/283/3 +f 209/303/6 208/304/6 207/305/6 +f 217/306/6 216/307/6 215/308/6 +f 210/309/3 213/310/3 208/304/3 +f 207/305/4 211/311/4 209/303/4 +f 209/303/1 214/312/1 210/309/1 +f 208/304/2 212/313/2 207/305/2 +f 218/314/3 221/315/3 216/307/3 +f 215/308/4 219/316/4 217/306/4 +f 217/306/1 222/317/1 218/314/1 +f 216/307/2 220/318/2 215/308/2 +f 225/319/5 224/320/5 223/321/5 +f 233/322/5 232/323/5 231/324/5 +f 226/325/4 229/326/4 224/320/4 +f 223/321/3 227/327/3 225/319/3 +f 225/319/1 230/328/1 226/325/1 +f 224/320/2 228/329/2 223/321/2 +f 234/330/4 237/331/4 232/323/4 +f 231/324/3 235/332/3 233/322/3 +f 233/322/1 238/333/1 234/330/1 +f 232/323/2 236/334/2 231/324/2 +f 241/335/3 240/336/3 239/337/3 +f 249/338/3 248/339/3 247/340/3 +f 242/341/5 245/342/5 240/336/5 +f 239/337/6 243/343/6 241/335/6 +f 241/335/1 246/344/1 242/341/1 +f 240/336/2 244/345/2 239/337/2 +f 250/346/5 253/347/5 248/339/5 +f 247/340/6 251/348/6 249/338/6 +f 249/338/1 254/349/1 250/346/1 +f 248/339/2 252/350/2 247/340/2 +f 257/351/4 256/352/4 255/353/4 +f 265/354/4 264/355/4 263/356/4 +f 258/357/6 261/358/6 256/352/6 +f 255/353/5 259/359/5 257/351/5 +f 257/351/1 262/360/1 258/357/1 +f 256/352/2 260/361/2 255/353/2 +f 266/362/6 269/363/6 264/355/6 +f 263/356/5 267/364/5 265/354/5 +f 265/354/1 270/365/1 266/362/1 +f 264/355/2 268/366/2 263/356/2 +f 273/367/3 272/368/3 271/369/3 +f 274/370/5 277/371/5 272/368/5 +f 271/369/6 275/372/6 273/367/6 +f 273/367/1 278/373/1 274/370/1 +f 272/368/2 276/374/2 271/369/2 +f 281/375/4 280/376/4 279/377/4 +f 282/378/6 285/379/6 280/376/6 +f 279/377/5 283/380/5 281/375/5 +f 281/375/1 286/381/1 282/378/1 +f 280/376/2 284/382/2 279/377/2 +f 3/1/1 4/7/1 2/2/1 +f 8/4/2 20/27/2 19/5/2 +f 4/7/3 8/4/3 6/6/3 +f 1/8/4 5/13/4 7/9/4 +f 3/11/5 7/30/5 8/4/5 +f 2/12/6 6/32/6 5/13/6 +f 10/14/1 23/28/1 24/15/1 +f 14/17/2 16/24/2 15/18/2 +f 12/16/3 16/24/3 14/17/3 +f 9/20/4 13/26/4 15/21/4 +f 11/23/5 15/383/5 16/24/5 +f 10/25/6 14/384/6 13/26/6 +f 20/27/3 24/15/3 23/28/3 +f 5/13/2 18/34/2 17/29/2 +f 7/30/2 17/36/2 20/31/2 +f 6/32/2 19/38/2 18/33/2 +f 18/34/4 22/41/4 21/35/4 +f 17/36/5 21/40/5 24/37/5 +f 19/38/6 23/42/6 22/39/6 +f 12/16/1 24/37/1 21/40/1 +f 11/22/1 21/35/1 22/41/1 +f 9/20/1 22/39/1 23/42/1 +f 34/43/2 36/59/2 35/44/2 +f 31/46/2 32/54/2 29/47/2 +f 28/49/3 32/54/3 31/46/3 +f 25/51/4 30/48/4 29/47/4 +f 27/53/5 29/47/5 32/54/5 +f 26/56/6 31/46/6 30/48/6 +f 34/43/3 38/74/3 40/58/3 +f 35/44/4 39/71/4 37/60/4 +f 36/59/5 44/385/5 43/61/5 +f 33/45/6 41/386/6 42/62/6 +f 43/61/1 44/385/1 42/63/1 +f 44/65/4 46/387/4 45/66/4 +f 41/68/3 47/388/3 48/69/3 +f 43/70/5 48/69/5 39/71/5 +f 37/60/6 47/389/6 41/72/6 +f 40/58/5 46/387/5 44/65/5 +f 42/73/6 45/390/6 38/74/6 +f 50/75/2 52/79/2 51/76/2 +f 50/75/3 54/94/3 56/78/3 +f 51/76/4 55/91/4 53/80/4 +f 52/79/5 60/391/5 59/81/5 +f 49/77/6 57/392/6 58/82/6 +f 59/81/1 60/391/1 58/83/1 +f 60/85/4 62/393/4 61/86/4 +f 57/88/3 63/394/3 64/89/3 +f 59/90/5 64/89/5 55/91/5 +f 53/80/6 63/395/6 57/92/6 +f 56/78/5 62/393/5 60/85/5 +f 58/93/6 61/396/6 54/94/6 +f 65/95/4 66/102/4 68/96/4 +f 71/98/7 83/397/7 84/99/7 +f 72/100/3 70/104/3 69/101/3 +f 66/102/8 74/106/8 75/103/8 +f 71/105/9 69/111/9 65/95/9 +f 68/96/10 66/102/10 70/104/10 +f 74/106/10 78/398/10 79/107/10 +f 70/104/8 75/399/8 76/108/8 +f 66/102/8 65/95/8 73/109/8 +f 69/111/8 76/117/8 73/112/8 +f 79/107/8 78/398/8 77/113/8 +f 76/108/3 75/399/3 79/115/3 +f 76/117/9 80/400/9 77/118/9 +f 73/109/4 77/401/4 78/119/4 +f 81/120/4 85/402/4 86/121/4 +f 67/97/7 82/128/7 83/123/7 +f 72/100/7 84/130/7 81/124/7 +f 67/97/7 68/96/7 81/120/7 +f 87/125/7 91/132/7 92/126/7 +f 84/99/3 83/397/3 87/125/3 +f 82/128/9 86/144/9 87/129/9 +f 84/130/10 88/143/10 85/131/10 +f 92/137/7 89/139/7 85/131/7 +f 86/121/7 85/402/7 89/141/7 +f 90/134/7 91/136/7 87/129/7 +f 94/145/3 95/152/3 97/146/3 +f 100/148/15 112/403/15 113/149/15 +f 101/150/4 99/154/4 98/151/4 +f 95/152/16 103/156/16 104/153/16 +f 100/155/17 98/161/17 94/145/17 +f 97/146/18 95/152/18 99/154/18 +f 103/156/18 107/404/18 108/157/18 +f 99/154/16 104/405/16 105/158/16 +f 95/152/16 94/145/16 102/159/16 +f 98/161/16 105/167/16 102/162/16 +f 108/157/16 107/404/16 106/163/16 +f 105/158/4 104/405/4 108/165/4 +f 105/167/17 109/406/17 106/168/17 +f 102/159/3 106/407/3 107/169/3 +f 110/170/3 114/408/3 115/171/3 +f 96/147/15 111/178/15 112/173/15 +f 101/150/15 113/180/15 110/174/15 +f 96/147/15 97/146/15 110/170/15 +f 116/175/15 120/182/15 121/176/15 +f 113/149/4 112/403/4 116/175/4 +f 111/178/17 115/194/17 116/179/17 +f 113/180/18 117/193/18 114/181/18 +f 121/187/15 118/189/15 114/181/15 +f 115/171/15 114/408/15 118/191/15 +f 119/184/15 120/186/15 116/179/15 +f 142/195/1 144/409/1 143/196/1 +f 124/199/3 129/410/3 133/200/3 +f 133/200/3 134/411/3 126/198/3 +f 134/411/3 130/412/3 126/198/3 +f 142/201/5 146/227/5 148/202/5 +f 138/204/5 140/218/5 142/205/5 +f 126/207/6 130/215/6 127/208/6 +f 123/210/5 128/216/5 129/211/5 +f 131/213/2 134/411/2 133/200/2 +f 130/215/23 134/411/23 131/213/23 +f 128/216/24 132/214/24 133/200/24 +f 137/217/4 139/221/4 140/218/4 +f 128/413/4 123/219/4 132/214/4 +f 123/219/4 125/414/4 131/213/4 +f 125/414/4 127/415/4 131/213/4 +f 135/220/6 141/223/6 139/221/6 +f 136/222/3 142/416/3 141/223/3 +f 143/196/6 147/225/6 145/224/6 +f 148/202/2 146/227/2 145/224/2 +f 139/221/25 145/224/25 146/227/25 +f 150/230/3 155/417/3 159/231/3 +f 159/231/3 160/418/3 152/229/3 +f 160/418/3 156/419/3 152/229/3 +f 152/232/6 156/240/6 153/233/6 +f 149/235/5 154/241/5 155/236/5 +f 157/238/2 160/418/2 159/231/2 +f 156/240/23 160/418/23 157/238/23 +f 154/241/24 158/239/24 159/231/24 +f 154/420/4 149/242/4 158/239/4 +f 149/242/4 151/421/4 157/238/4 +f 151/421/4 153/422/4 157/238/4 +f 168/243/1 170/423/1 169/244/1 +f 168/246/5 172/261/5 174/247/5 +f 164/249/5 166/253/5 168/250/5 +f 163/252/4 165/255/4 166/253/4 +f 161/254/6 167/257/6 165/255/6 +f 162/256/3 168/424/3 167/257/3 +f 169/244/6 173/259/6 171/258/6 +f 174/247/2 172/261/2 171/258/2 +f 165/255/25 171/258/25 172/261/25 +f 176/263/2 178/266/2 177/264/2 +f 178/266/5 182/280/5 181/267/5 +f 175/265/6 179/282/6 180/268/6 +f 176/263/3 184/425/3 186/269/3 +f 177/264/4 185/426/4 183/270/4 +f 186/269/1 184/425/1 183/271/1 +f 184/273/5 188/427/5 187/274/5 +f 185/276/6 189/428/6 190/277/6 +f 181/267/4 189/429/4 185/279/4 +f 186/278/3 190/277/3 182/280/3 +f 183/281/4 187/430/4 179/282/4 +f 180/268/3 188/427/3 184/273/3 +f 192/283/2 194/286/2 193/284/2 +f 194/286/5 198/300/5 197/287/5 +f 191/285/6 195/302/6 196/288/6 +f 192/283/3 200/431/3 202/289/3 +f 193/284/4 201/432/4 199/290/4 +f 202/289/1 200/431/1 199/291/1 +f 200/293/5 204/433/5 203/294/5 +f 201/296/6 205/434/6 206/297/6 +f 197/287/4 205/435/4 201/299/4 +f 202/298/3 206/297/3 198/300/3 +f 199/301/4 203/436/4 195/302/4 +f 196/288/3 204/433/3 200/293/3 +f 209/303/6 210/309/6 208/304/6 +f 217/306/6 218/314/6 216/307/6 +f 210/309/3 214/437/3 213/310/3 +f 207/305/4 212/438/4 211/311/4 +f 209/303/1 211/439/1 214/312/1 +f 208/304/2 213/440/2 212/313/2 +f 218/314/3 222/441/3 221/315/3 +f 215/308/4 220/442/4 219/316/4 +f 217/306/1 219/443/1 222/317/1 +f 216/307/2 221/444/2 220/318/2 +f 225/319/5 226/325/5 224/320/5 +f 233/322/5 234/330/5 232/323/5 +f 226/325/4 230/445/4 229/326/4 +f 223/321/3 228/446/3 227/327/3 +f 225/319/1 227/447/1 230/328/1 +f 224/320/2 229/448/2 228/329/2 +f 234/330/4 238/449/4 237/331/4 +f 231/324/3 236/450/3 235/332/3 +f 233/322/1 235/451/1 238/333/1 +f 232/323/2 237/452/2 236/334/2 +f 241/335/3 242/341/3 240/336/3 +f 249/338/3 250/346/3 248/339/3 +f 242/341/5 246/453/5 245/342/5 +f 239/337/6 244/454/6 243/343/6 +f 241/335/1 243/455/1 246/344/1 +f 240/336/2 245/456/2 244/345/2 +f 250/346/5 254/457/5 253/347/5 +f 247/340/6 252/458/6 251/348/6 +f 249/338/1 251/459/1 254/349/1 +f 248/339/2 253/460/2 252/350/2 +f 257/351/4 258/357/4 256/352/4 +f 265/354/4 266/362/4 264/355/4 +f 258/357/6 262/461/6 261/358/6 +f 255/353/5 260/462/5 259/359/5 +f 257/351/1 259/463/1 262/360/1 +f 256/352/2 261/464/2 260/361/2 +f 266/362/6 270/465/6 269/363/6 +f 263/356/5 268/466/5 267/364/5 +f 265/354/1 267/467/1 270/365/1 +f 264/355/2 269/468/2 268/366/2 +f 273/367/3 274/370/3 272/368/3 +f 274/370/5 278/469/5 277/371/5 +f 271/369/6 276/470/6 275/372/6 +f 273/367/1 275/471/1 278/373/1 +f 272/368/2 277/472/2 276/374/2 +f 281/375/4 282/378/4 280/376/4 +f 282/378/6 286/473/6 285/379/6 +f 279/377/5 284/474/5 283/380/5 +f 281/375/1 283/475/1 286/381/1 +f 280/376/2 285/476/2 284/382/2 diff --git a/src/main/resources/assets/hbm/textures/models/machines/arc_welder.png b/src/main/resources/assets/hbm/textures/models/machines/arc_welder.png new file mode 100644 index 0000000000000000000000000000000000000000..d85de397f72547ed4600d83282aa63896a1db313 GIT binary patch literal 1024 zcmeAS@N?(olHy`uVBq!ia0vp^AwZnM!3HEH1jTcJ6icy_X9x!n)NrJ9FfcH0_jGX# zshIP2mSNFt0|8fi8=Ho{1E)M!o?FW|p>VcRZpZ9x?C(mM<9zVbPs1Vn+sFnp&sy_dZYVWL6w4VR`6q8Z+`Qhp6NgMlI<~YZitEn!_UvuT8p76*1n(u6?M@xDwg$*08 z$gJ8b>v~2k`|X?~EDTe1It+~__L%NdmcM%1W7Yd}_LD?*txB?czApBuNooK4j;&5rZ(k(sz8l4GBgc%P z;quFtclY`E`Om#xS2Rt2a?&e?B|o^n3w>oz32r?&4o$Z%^O)EC1}rf6LvmbFPNJys&S^zGOq7nRBg-y=ASAXvtcsZ7$C^J-O`q%weW$-ka~WOx>ZK%ecBd?)7Ho^}e41#5~GhyV_Tkf;#}nQ?UelqHf?Q+?X23UV_fZarbRurR;KYOdZlGhWB`s*HGX ze%aSRzAlfCMaks+-fa-@*&~fDix_XOTfY2-v&4a2QpVvsXLC);IN*2lN@477gPVsZ9QBcP;0GGD z>AT=k$*c+2OLJ#0` zySt)&*@gd3vz9$vqH=b^Yw_PF{8?qCIHu3zJTk?vyY|WV-+Q~(sy6OeBp1=>e0mel zI&J6I*Yq}vUon5ZOyv379dFvX4%cO{-QYjV1JSl-lf0FQ=LUH#p5F_dHpu^COtd#) re$$=?bXAM@d6paeZw*52zvy48aSJ~db?YoJOEY-7`njxgN@xNAZWPwt literal 0 HcmV?d00001 From 89638ae817ddbf5c44b8034f5c0a1007d8c864ea Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 4 Oct 2023 15:26:17 +0200 Subject: [PATCH 059/207] and now for custom fluids --- .../hbm/blocks/generic/BlockBedrockOreTE.java | 2 +- .../hbm/blocks/machine/BlockFluidBarrel.java | 5 +- .../hbm/blocks/machine/DeuteriumTower.java | 3 +- .../hbm/blocks/machine/MachineAutosaw.java | 5 +- .../blocks/machine/MachineBigAssTank9000.java | 5 +- .../machine/MachineCatalyticCracker.java | 5 +- .../hbm/blocks/machine/MachineCondenser.java | 3 +- .../machine/MachineCondenserPowered.java | 3 +- .../machine/MachineDeuteriumExtractor.java | 3 +- .../hbm/blocks/machine/MachineFluidTank.java | 3 +- .../blocks/machine/MachineFrackingTower.java | 3 +- .../blocks/machine/MachineFractionTower.java | 5 +- .../hbm/blocks/machine/MachineHeatBoiler.java | 6 +- .../machine/MachineHeatBoilerIndustrial.java | 6 +- .../hbm/blocks/machine/MachineHephaestus.java | 7 +- .../hbm/blocks/machine/MachineOilWell.java | 3 +- .../com/hbm/blocks/machine/MachineOrbus.java | 5 +- .../com/hbm/blocks/machine/MachinePump.java | 8 +- .../hbm/blocks/machine/MachinePumpjack.java | 3 +- .../hbm/blocks/machine/MachineRefinery.java | 3 +- .../blocks/machine/MachineSteamEngine.java | 4 +- .../hbm/blocks/machine/MachineTowerLarge.java | 3 +- .../hbm/blocks/machine/MachineTowerSmall.java | 3 +- .../hbm/blocks/machine/MachineTurbineGas.java | 11 +- .../hbm/blocks/network/BlockFluidDuct.java | 2 +- .../blocks/network/BlockFluidDuctSolid.java | 2 +- .../com/hbm/blocks/network/FluidDuctBox.java | 2 +- .../blocks/network/FluidDuctBoxExhaust.java | 6 +- .../hbm/blocks/network/FluidDuctGauge.java | 2 +- .../blocks/network/FluidDuctPaintable.java | 2 +- .../hbm/blocks/network/FluidDuctStandard.java | 2 +- .../com/hbm/blocks/network/FluidSwitch.java | 2 +- .../com/hbm/blocks/network/FluidValve.java | 2 +- .../hbm/entity/item/EntityDeliveryDrone.java | 2 +- .../com/hbm/inventory/fluid/FluidType.java | 45 ++++++-- .../java/com/hbm/inventory/fluid/Fluids.java | 103 +++++++++++++++--- .../hbm/inventory/fluid/tank/FluidTank.java | 10 +- .../inventory/fluid/trait/FT_Coolable.java | 2 +- .../inventory/fluid/trait/FT_Heatable.java | 2 +- .../hbm/inventory/gui/GUIMachineSelenium.java | 3 +- .../inventory/gui/GUIMachineTurbineGas.java | 2 +- .../java/com/hbm/inventory/gui/GUIMixer.java | 5 +- .../com/hbm/inventory/gui/GUIScreenFluid.java | 5 +- .../gui/GUIScreenTemplateFolder.java | 3 +- .../com/hbm/items/armor/ArmorFSBFueled.java | 3 +- .../java/com/hbm/items/armor/JetpackBase.java | 5 +- .../com/hbm/items/machine/ItemCanister.java | 2 +- .../items/machine/ItemChemistryTemplate.java | 5 +- .../com/hbm/items/machine/ItemFluidDuct.java | 2 +- .../hbm/items/machine/ItemFluidIDMulti.java | 7 +- .../com/hbm/items/machine/ItemFluidIcon.java | 2 +- .../items/machine/ItemFluidIdentifier.java | 3 +- .../com/hbm/items/machine/ItemFluidTank.java | 2 +- .../com/hbm/items/machine/ItemGasTank.java | 2 +- .../java/com/hbm/items/tool/ItemAnalyzer.java | 2 +- .../com/hbm/items/tool/ItemBlowtorch.java | 7 +- .../hbm/items/tool/ItemToolAbilityFueled.java | 3 +- .../hbm/items/weapon/ItemGunChemthrower.java | 3 +- .../render/tileentity/RenderFluidTank.java | 11 ++ .../machine/rbmk/TileEntityRBMKConsole.java | 10 +- .../hbm/textures/gui/fluids/custom_lava.png | Bin 0 -> 786 bytes .../hbm/textures/gui/fluids/custom_oil.png | Bin 0 -> 545 bytes .../hbm/textures/gui/fluids/custom_toxin.png | Bin 0 -> 702 bytes .../hbm/textures/gui/fluids/custom_water.png | Bin 0 -> 471 bytes 64 files changed, 233 insertions(+), 147 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/custom_lava.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/custom_oil.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/custom_toxin.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/custom_water.png diff --git a/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java index 6d5b525cc..040c22cba 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java @@ -145,7 +145,7 @@ public class BlockBedrockOreTE extends BlockContainer implements ILookOverlay, I text.add("Tier: " + ore.tier); if(ore.acidRequirement != null) { - text.add("Requires: " + ore.acidRequirement.fill + "mB " + I18nUtil.resolveKey(ore.acidRequirement.type.getUnlocalizedName())); + text.add("Requires: " + ore.acidRequirement.fill + "mB " + ore.acidRequirement.type.getLocalizedName()); } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index 7444f30f1..84ad21963 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -12,7 +12,6 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.machine.storage.TileEntityBarrel; -import com.hbm.util.I18nUtil; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -183,9 +182,9 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { - FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); + FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "tank"); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java b/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java index b7530f2d2..85dc20517 100644 --- a/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java +++ b/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -78,7 +77,7 @@ public class DeuteriumTower extends BlockDummyable implements ILookOverlay { text.add((tower.power < tower.getMaxPower() / 20 ? EnumChatFormatting.RED : EnumChatFormatting.GREEN) + "Power: " + BobMathUtil.getShortNumber(tower.power) + "HE"); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tower.tanks[i].getTankType().getLocalizedName() + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java b/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java index 0aeca216d..8e38ba3e7 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; @@ -62,7 +61,7 @@ public class MachineAutosaw extends BlockContainer implements ILookOverlay, IToo if(saw.acceptedFuels.contains(type)) { saw.tank.setTankType(type); saw.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase(Locale.US))).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); return true; } } @@ -84,7 +83,7 @@ public class MachineAutosaw extends BlockContainer implements ILookOverlay, IToo TileEntityMachineAutosaw saw = (TileEntityMachineAutosaw) te; List text = new ArrayList(); - text.add(I18nUtil.resolveKey("hbmfluid." + saw.tank.getTankType().getName().toLowerCase(Locale.US)) + ": " + saw.tank.getFill() + "/" + saw.tank.getMaxFill() + "mB"); + text.add(saw.tank.getTankType().getLocalizedName() + ": " + saw.tank.getFill() + "/" + saw.tank.getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index 54aecbef7..ec8f81136 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -12,7 +12,6 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -117,8 +116,8 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { - FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); + FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "tank"); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java index 247ee608d..c8d9bd49d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -71,7 +70,7 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); cracker.tanks[0].setTankType(type); cracker.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase(Locale.US))).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); return true; } @@ -130,7 +129,7 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver List text = new ArrayList(); for(int i = 0; i < cracker.tanks.length; i++) - text.add((i < 2 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); + text.add((i < 2 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + cracker.tanks[i].getTankType().getLocalizedName() + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCondenser.java b/src/main/java/com/hbm/blocks/machine/MachineCondenser.java index e498acde6..8bbe97b99 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCondenser.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCondenser.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.ILookOverlay; import com.hbm.tileentity.machine.TileEntityCondenser; @@ -39,7 +38,7 @@ public class MachineCondenser extends BlockContainer implements ILookOverlay { List text = new ArrayList(); for(int i = 0; i < condenser.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + condenser.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + condenser.tanks[i].getFill() + "/" + condenser.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET +condenser.tanks[i].getTankType().getLocalizedName() + ": " + condenser.tanks[i].getFill() + "/" + condenser.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java b/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java index 3fa62d072..842c084b7 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -75,7 +74,7 @@ public class MachineCondenserPowered extends BlockDummyable implements ILookOver text.add(BobMathUtil.getShortNumber(tower.power) + "HE / " + BobMathUtil.getShortNumber(tower.maxPower) + "HE"); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tower.tanks[i].getTankType().getLocalizedName() + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java b/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java index a8e0dc586..08c921a35 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.ILookOverlay; import com.hbm.lib.RefStrings; @@ -67,7 +66,7 @@ public class MachineDeuteriumExtractor extends BlockContainer implements ILookOv text.add((extractor.power < extractor.getMaxPower() / 20 ? EnumChatFormatting.RED : EnumChatFormatting.GREEN) + "Power: " + BobMathUtil.getShortNumber(extractor.power) + "HE"); for(int i = 0; i < extractor.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + extractor.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + extractor.tanks[i].getFill() + "/" + extractor.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + extractor.tanks[i].getTankType().getLocalizedName() + ": " + extractor.tanks[i].getFill() + "/" + extractor.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index e24b46847..d639eed45 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -15,7 +15,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; -import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -99,7 +98,7 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "tank"); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java index 9383b3565..7c6281110 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java @@ -13,7 +13,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineFrackingTower; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -113,7 +112,7 @@ public class MachineFrackingTower extends BlockDummyable implements IPersistentI for(int i = 0; i < 2; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "t" + i); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java index af24b1d28..5c60f53df 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -74,7 +73,7 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); frac.tanks[0].setTankType(type); frac.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase(Locale.US))).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); } return true; @@ -116,7 +115,7 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay List text = new ArrayList(); for(int i = 0; i < cracker.tanks.length; i++) - text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); + text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + cracker.tanks[i].getTankType().getLocalizedName() + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java index 522b046a8..66c2396d0 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java @@ -69,7 +69,7 @@ public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, I if(type.hasTrait(FT_Heatable.class) && type.getTrait(FT_Heatable.class).getEfficiency(HeatingType.BOILER) > 0) { boiler.tanks[0].setTankType(type); boiler.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase(Locale.US))).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); } return true; } @@ -176,8 +176,8 @@ public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, I List text = new ArrayList(); text.add(String.format(Locale.US, "%,d", boiler.heat) + "TU"); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", boiler.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[0].getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", boiler.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[1].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + boiler.tanks[0].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + boiler.tanks[1].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[1].getMaxFill()) + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java index 7656c5f06..7869a74bd 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java @@ -64,7 +64,7 @@ public class MachineHeatBoilerIndustrial extends BlockDummyable implements ILook if(type.hasTrait(FT_Heatable.class) && type.getTrait(FT_Heatable.class).getEfficiency(HeatingType.BOILER) > 0) { boiler.tanks[0].setTankType(type); boiler.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase(Locale.US))).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); } return true; } @@ -113,8 +113,8 @@ public class MachineHeatBoilerIndustrial extends BlockDummyable implements ILook List text = new ArrayList(); text.add(String.format(Locale.US, "%,d", boiler.heat) + "TU"); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", boiler.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[0].getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", boiler.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[1].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + boiler.tanks[0].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + boiler.tanks[1].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[1].getMaxFill()) + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java b/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java index 0c583b572..b6a628c78 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java @@ -16,6 +16,9 @@ import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; @@ -82,6 +85,8 @@ public class MachineHephaestus extends BlockDummyable implements ILookOverlay { FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); heatex.input.setTankType(type); heatex.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + return true; } @@ -111,7 +116,7 @@ public class MachineHephaestus extends BlockDummyable implements ILookOverlay { for(int i = 0; i < heatex.getAllTanks().length; i++) { FluidTank tank = heatex.getAllTanks()[i]; - text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tank.getTankType().getName().toLowerCase(Locale.US)) + ": " + tank.getFill() + "/" + tank.getMaxFill() + "mB"); + text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tank.getTankType().getLocalizedName() + ": " + tank.getFill() + "/" + tank.getMaxFill() + "mB"); } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/machine/MachineOilWell.java b/src/main/java/com/hbm/blocks/machine/MachineOilWell.java index bdd36a179..65fc71706 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOilWell.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOilWell.java @@ -12,7 +12,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineOilWell; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -87,7 +86,7 @@ public class MachineOilWell extends BlockDummyable implements IPersistentInfoPro for(int i = 0; i < 2; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "t" + i); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java index b1ddbb028..78ffddd31 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java @@ -11,7 +11,6 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -91,8 +90,8 @@ public class MachineOrbus extends BlockDummyable implements IPersistentInfoProvi @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { - FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); + FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "tank"); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachinePump.java b/src/main/java/com/hbm/blocks/machine/MachinePump.java index a31d2fdc3..1d2198029 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePump.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePump.java @@ -84,15 +84,15 @@ public class MachinePump extends BlockDummyable implements ITooltipProvider, ILo if(te instanceof TileEntityMachinePumpSteam) { TileEntityMachinePumpSteam pump = (TileEntityMachinePumpSteam) te; - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.steam.getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", pump.steam.getFill()) + " / " + String.format(Locale.US, "%,d", pump.steam.getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.lps.getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", pump.lps.getFill()) + " / " + String.format(Locale.US, "%,d", pump.lps.getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.water.getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", pump.water.getFill()) + " / " + String.format(Locale.US, "%,d", pump.water.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + pump.steam.getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", pump.steam.getFill()) + " / " + String.format(Locale.US, "%,d", pump.steam.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + pump.lps.getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", pump.lps.getFill()) + " / " + String.format(Locale.US, "%,d", pump.lps.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + pump.water.getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", pump.water.getFill()) + " / " + String.format(Locale.US, "%,d", pump.water.getMaxFill()) + "mB"); } if(te instanceof TileEntityMachinePumpElectric) { TileEntityMachinePumpElectric pump = (TileEntityMachinePumpElectric) te; text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", pump.power) + " / " + String.format(Locale.US, "%,d", pump.maxPower) + "HE"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(pump.water.getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", pump.water.getFill()) + " / " + String.format(Locale.US, "%,d", pump.water.getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + pump.water.getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", pump.water.getFill()) + " / " + String.format(Locale.US, "%,d", pump.water.getMaxFill()) + "mB"); } if(pos[1] > 70) { diff --git a/src/main/java/com/hbm/blocks/machine/MachinePumpjack.java b/src/main/java/com/hbm/blocks/machine/MachinePumpjack.java index 89169d863..56f05147d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePumpjack.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePumpjack.java @@ -13,7 +13,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachinePumpjack; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -100,7 +99,7 @@ public class MachinePumpjack extends BlockDummyable implements IPersistentInfoPr for(int i = 0; i < 2; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "t" + i); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineRefinery.java b/src/main/java/com/hbm/blocks/machine/MachineRefinery.java index 10fab37d0..4a720413d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineRefinery.java +++ b/src/main/java/com/hbm/blocks/machine/MachineRefinery.java @@ -14,7 +14,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineRefinery; -import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -116,7 +115,7 @@ public class MachineRefinery extends BlockDummyable implements IPersistentInfoPr for(int i = 0; i < 5; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "" + i); - list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java index 384f216e8..b3e1c8cd2 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java @@ -73,8 +73,8 @@ public class MachineSteamEngine extends BlockDummyable implements ILookOverlay, TileEntitySteamEngine engine = (TileEntitySteamEngine) te; List text = new ArrayList(); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", engine.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[0].getMaxFill()) + "mB"); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", engine.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[1].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + engine.tanks[0].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", engine.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + engine.tanks[1].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", engine.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[1].getMaxFill()) + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java b/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java index b15c2dc74..4279cc746 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -78,7 +77,7 @@ public class MachineTowerLarge extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tower.tanks[i].getTankType().getLocalizedName() + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java b/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java index f13cc49df..6b9bc5947 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -75,7 +74,7 @@ public class MachineTowerSmall extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tower.tanks[i].getTankType().getLocalizedName() + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java b/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java index b89931cf7..a17cf0fcc 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java @@ -6,11 +6,9 @@ import com.hbm.util.I18nUtil; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; -import com.hbm.inventory.fluid.Fluids; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -87,17 +85,16 @@ public class MachineTurbineGas extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); if(hitCheck(dir, pos[0], pos[1], pos[2], -1, -1, 0, x, y, z) || hitCheck(dir, pos[0], pos[1], pos[2], 1, -1, 0, x, y, z)) { - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[0].getTankType().getName().toLowerCase(Locale.US))); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[1].getTankType().getName().toLowerCase(Locale.US))); - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(Fluids.SMOKE.getUnlocalizedName())); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + turbine.tanks[0].getTankType().getLocalizedName()); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + turbine.tanks[1].getTankType().getLocalizedName()); } if(hitCheck(dir, pos[0], pos[1], pos[2], -1, 4, 0, x, y, z) || hitCheck(dir, pos[0], pos[1], pos[2], 1, 4, 0, x, y, z)) { - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[2].getTankType().getName().toLowerCase(Locale.US))); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + turbine.tanks[2].getTankType().getLocalizedName()); } if(hitCheck(dir, pos[0], pos[1], pos[2], 0, 5, 1, x, y, z)) { - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[3].getTankType().getName().toLowerCase(Locale.US))); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + turbine.tanks[3].getTankType().getLocalizedName()); } if(hitCheck(dir, pos[0], pos[1], pos[2], 0, -4, 1, x, y, z)) { diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java b/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java index b14fa899e..88e054bfd 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java @@ -97,7 +97,7 @@ public class BlockFluidDuct extends BlockContainer implements ILookOverlay { TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java index 08031fe84..3674da7d1 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java @@ -82,7 +82,7 @@ public class BlockFluidDuctSolid extends BlockContainer implements IBlockMultiPa TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java index 75d01ab6f..f05d3733a 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java @@ -305,7 +305,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" + I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java index 3426cf93e..42a24fe85 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java @@ -78,9 +78,9 @@ public class FluidDuctBoxExhaust extends FluidDuctBox { @Override public void printHook(Pre event, World world, int x, int y, int z) { List text = new ArrayList(); - text.add(I18nUtil.resolveKey(Fluids.SMOKE.getUnlocalizedName())); - text.add(I18nUtil.resolveKey(Fluids.SMOKE_LEADED.getUnlocalizedName())); - text.add(I18nUtil.resolveKey(Fluids.SMOKE_POISON.getUnlocalizedName())); + text.add(Fluids.SMOKE.getLocalizedName()); + text.add(Fluids.SMOKE_LEADED.getLocalizedName()); + text.add(Fluids.SMOKE_POISON.getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 155c42512..8c2106abe 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -96,7 +96,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL TileEntityPipeGauge duct = (TileEntityPipeGauge) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); text.add(String.format(Locale.US, "%,d", duct.deltaTick) + " mB/t"); text.add(String.format(Locale.US, "%,d", duct.deltaLastSecond) + " mB/s"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java index a9415a219..6777195d8 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java @@ -160,7 +160,7 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index 485fbc06b..35d197059 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -201,7 +201,7 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/FluidSwitch.java b/src/main/java/com/hbm/blocks/network/FluidSwitch.java index c564286c0..f4fc8c82d 100644 --- a/src/main/java/com/hbm/blocks/network/FluidSwitch.java +++ b/src/main/java/com/hbm/blocks/network/FluidSwitch.java @@ -82,7 +82,7 @@ public class FluidSwitch extends FluidDuctBase implements ILookOverlay { TileEntityFluidValve duct = (TileEntityFluidValve) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/FluidValve.java b/src/main/java/com/hbm/blocks/network/FluidValve.java index be6c879e5..5a0b3d5b3 100644 --- a/src/main/java/com/hbm/blocks/network/FluidValve.java +++ b/src/main/java/com/hbm/blocks/network/FluidValve.java @@ -82,7 +82,7 @@ public class FluidValve extends FluidDuctBase implements ILookOverlay { TileEntityFluidValve duct = (TileEntityFluidValve) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index 72782c158..531c19d3d 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -72,7 +72,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, nbt.setTag("Items", nbttaglist); if(fluid != null) { - nbt.setString("fluidType", fluid.type.getUnlocalizedName()); + nbt.setString("fluidType", fluid.type.getName()); nbt.setInteger("fluidAmount", fluid.fill); } diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index 390fcfede..d6fa4d759 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -13,6 +13,7 @@ import com.hbm.inventory.fluid.trait.*; import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import com.hbm.lib.RefStrings; import com.hbm.render.util.EnumSymbol; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,21 +32,21 @@ public class FluidType { private int color; //Unlocalized string ID of the fluid private String unlocalized; + //localization override for custom fluids + private String localizedOverride; + private int guiTint = 0xffffff; public int poison; public int flammability; public int reactivity; public EnumSymbol symbol; + public boolean customFluid = false; public static final int ROOM_TEMPERATURE = 20; - public static final double DEFAULT_HEATCAP = 0.01D; - public static final double DEFAULT_COMPRESSION = 1D; // v v v this entire system is a pain in the ass to work with. i'd much rather define state transitions and heat values manually. /** How hot this fluid is. Simple enough. */ public int temperature = ROOM_TEMPERATURE; - /** How much "stuff" there is in one mB. 1mB of water turns into 100mB of steam, therefore steam has a compression of 0.01. Compression is only used for translating fluids into other fluids, heat calculations should ignore this. */ - public double compression = DEFAULT_COMPRESSION; public HashMap containers = new HashMap(); public HashMap, FluidTrait> traits = new HashMap(); @@ -66,6 +67,23 @@ public class FluidType { this.id = Fluids.registerSelf(this); } + public FluidType(String name, int color, int p, int f, int r, EnumSymbol symbol, String texName, int tint, int id, String displayName) { + this.stringId = name; + this.color = color; + this.unlocalized = "hbmfluid." + name.toLowerCase(Locale.US); + this.poison = p; + this.flammability = f; + this.reactivity = r; + this.symbol = symbol; + this.texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/fluids/" + texName + ".png"); + this.guiTint = tint; + this.localizedOverride = displayName; + this.customFluid = true; + + this.id = id; + Fluids.register(this, id); + } + public FluidType(int forcedId, String name, int color, int p, int f, int r, EnumSymbol symbol) { this(name, color, p, f, r, symbol); @@ -79,11 +97,6 @@ public class FluidType { return this; } - public FluidType setCompression(double compression) { - this.compression = compression; - return this; - } - public FluidType addContainers(Object... containers) { for(Object container : containers) this.containers.put(container.getClass(), container); return this; @@ -109,7 +122,7 @@ public class FluidType { public int getID() { return this.id; } - + /** The unique mapping name for this fluid, usually matches the unlocalied name, minus the prefix */ public String getName() { return this.stringId; } @@ -118,12 +131,24 @@ public class FluidType { return this.color; } + public int getTint() { + return this.guiTint; + } + public ResourceLocation getTexture() { return this.texture; } public String getUnlocalizedName() { return this.unlocalized; } + /** Returns the localized override name if present, or otherwise the I18n converted name */ + @SideOnly(Side.CLIENT) public String getLocalizedName() { + return this.localizedOverride != null ? this.localizedOverride : I18nUtil.resolveKey(this.unlocalized); + } + /** Returns the localized override name if present, or otherwise the raw unlocalized name. Used for server-side code that needs ChatComponentTranslation. */ + public String getConditionalName() { + return this.localizedOverride != null ? this.localizedOverride : this.unlocalized; + } public String getDict(int quantity) { return "container" + quantity + this.stringId.replace("_", "").toLowerCase(Locale.US); } diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 83034ba51..5ca1341f6 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -163,9 +163,12 @@ public class Fluids { public static FluidType THORIUM_SALT_HOT; public static FluidType THORIUM_SALT_DEPLETED; public static FluidType FULLERENE; + + public static List customFluids = new ArrayList(); private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); + protected static final List registerOrder = new ArrayList(); protected static final List metaOrder = new ArrayList(); public static final FT_Liquid LIQUID = new FT_Liquid(); @@ -197,10 +200,10 @@ public class Fluids { NONE = new FluidType("NONE", 0x888888, 0, 0, 0, EnumSymbol.NONE); WATER = new FluidType("WATER", 0x3333FF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); - STEAM = new FluidType("STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).setCompression(0.01D).addTraits(GASEOUS); - HOTSTEAM = new FluidType("HOTSTEAM", 0xE7D6D6, 4, 0, 0, EnumSymbol.NONE).setTemp(300).setCompression(0.1D).addTraits(GASEOUS); - SUPERHOTSTEAM = new FluidType("SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450).setCompression(1D).addTraits(GASEOUS); - ULTRAHOTSTEAM = new FluidType("ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600).setCompression(10D).addTraits(GASEOUS); + STEAM = new FluidType("STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).addTraits(GASEOUS); + HOTSTEAM = new FluidType("HOTSTEAM", 0xE7D6D6, 4, 0, 0, EnumSymbol.NONE).setTemp(300).addTraits(GASEOUS); + SUPERHOTSTEAM = new FluidType("SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450).addTraits(GASEOUS); + ULTRAHOTSTEAM = new FluidType("ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(GASEOUS); COOLANT = new FluidType("COOLANT", 0xd8fcff, 1, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); LAVA = new FluidType("LAVA", 0xFF3300, 4, 0, 0, EnumSymbol.NOWATER).setTemp(1200).addTraits(LIQUID, VISCOUS); DEUTERIUM = new FluidType("DEUTERIUM", 0x0000FF, 3, 4, 0, EnumSymbol.NONE).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), GASEOUS); @@ -243,7 +246,7 @@ public class Fluids { WASTEGAS = new FluidType("WASTEGAS", 0xB8B8B8, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON, GASEOUS); GASOLINE = new FluidType("GASOLINE", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2F7747)).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_000_000), LIQUID); COALGAS = new FluidType("COALGAS", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2E155F)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 150_000), LIQUID); - SPENTSTEAM = new FluidType("SPENTSTEAM", 0x445772, 2, 0, 0, EnumSymbol.NONE).setCompression(1D).addTraits(NOCON, GASEOUS); + SPENTSTEAM = new FluidType("SPENTSTEAM", 0x445772, 2, 0, 0, EnumSymbol.NONE).addTraits(NOCON, GASEOUS); FRACKSOL = new FluidType("FRACKSOL", 0x798A6B, 1, 3, 3, EnumSymbol.ACID).addContainers(new CD_Canister(0x4F887F)).addTraits(new FT_Corrosive(15), new FT_Poison(false, 0), LIQUID, VISCOUS); PLASMA_DT = new FluidType("PLASMA_DT", 0xF7AFDE, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3250).addTraits(NOCON, NOID, PLASMA); PLASMA_HD = new FluidType("PLASMA_HD", 0xF0ADF4, 0, 4, 0, EnumSymbol.RADIATION).setTemp(2500).addTraits(NOCON, NOID, PLASMA); @@ -329,6 +332,12 @@ public class Fluids { // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE + + File folder = MainRegistry.configHbmDir; + File customTypes = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTypes.json"); + if(!customTypes.exists()) initDefaultFluids(customTypes); + readCustomFluids(customTypes); + //AND DON'T FORGET THE META DOWN HERE // V V V V V V V V @@ -477,6 +486,8 @@ public class Fluids { metaOrder.add(SMOKE); metaOrder.add(SMOKE_LEADED); metaOrder.add(SMOKE_POISON); + + for(FluidType custom : customFluids) metaOrder.add(custom); CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_CHLORINE, false))); PHOSGENE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 20, HazardClass.GAS_CHLORINE, false))); @@ -619,19 +630,72 @@ public class Fluids { registerCalculatedFuel(SYNGAS, (coalHeat * (1000 /* bucket */ / 100 /* mB per coal */) * flammabilityLow * demandLow * complexityChemplant) * 1.5, 1.25, FuelGrade.GAS); //same as coal oil, +50% bonus registerCalculatedFuel(OXYHYDROGEN, 5_000, 3, FuelGrade.GAS); // whatever - File folder = MainRegistry.configHbmDir; - - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluids.json"); - File template = new File(folder.getAbsolutePath() + File.separatorChar + "_hbmFluids.json"); + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTraits.json"); + File template = new File(folder.getAbsolutePath() + File.separatorChar + "_hbmFluidTraits.json"); if(!config.exists()) { - writeDefault(template); + writeDefaultTraits(template); } else { - readConfig(config); + readTraits(config); } } - private static void writeDefault(File file) { + private static void initDefaultFluids(File file) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(file)); + writer.setIndent(" "); + writer.beginObject(); + + writer.name("CUSTOM_DEMO").beginObject(); + writer.name("name").value("Custom Fluid Demo"); + writer.name("id").value(1000); + writer.name("color").value(0xff0000); + writer.name("tint").value(0xff0000); + writer.name("p").value(1).name("f").value(2).name("r").value(0); + writer.name("symbol").value(EnumSymbol.OXIDIZER.name()); + writer.name("texture").value("custom_water"); + writer.name("temperature").value(20); + writer.endObject(); + + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + private static void readCustomFluids(File file) { + + try { + JsonObject json = gson.fromJson(new FileReader(file), JsonObject.class); + + for(Entry entry : json.entrySet()) { + + JsonObject obj = (JsonObject) entry.getValue(); + + String name = entry.getKey(); + int id = obj.get("id").getAsInt(); + String displayName = obj.get("name").getAsString(); + int color = obj.get("color").getAsInt(); + int tint = obj.get("tint").getAsInt(); + int p = obj.get("p").getAsInt(); + int f = obj.get("f").getAsInt(); + int r = obj.get("r").getAsInt(); + EnumSymbol symbol = EnumSymbol.valueOf(obj.get("symbol").getAsString()); + String texture = obj.get("texture").getAsString(); + int temperature = obj.get("temperature").getAsInt(); + + FluidType type = new FluidType(name, color, p, f, r, symbol, texture, tint, id, displayName).setTemp(temperature); + customFluids.add(type); + } + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + + private static void writeDefaultTraits(File file) { try { JsonWriter writer = new JsonWriter(new FileWriter(file)); @@ -639,7 +703,7 @@ public class Fluids { writer.beginObject(); for(FluidType type : metaOrder) { - writer.name(type.getUnlocalizedName()).beginObject(); + writer.name(type.getName()).beginObject(); for(Entry, FluidTrait> entry : type.traits.entrySet()) { writer.name(FluidTrait.traitNameMap.inverse().get(entry.getKey())).beginObject(); @@ -657,14 +721,14 @@ public class Fluids { } } - private static void readConfig(File config) { + private static void readTraits(File config) { try { JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); for(FluidType type : metaOrder) { - JsonElement element = json.get(type.getUnlocalizedName()); + JsonElement element = json.get(type.getName()); if(element != null) { type.traits.clear(); JsonObject obj = element.getAsJsonObject(); @@ -715,10 +779,17 @@ public class Fluids { protected static int registerSelf(FluidType fluid) { int id = idMapping.size(); idMapping.put(id, fluid); + registerOrder.add(fluid); nameMapping.put(fluid.getName(), fluid); return id; } + protected static void register(FluidType fluid, int id) { + idMapping.put(id, fluid); + registerOrder.add(fluid); + nameMapping.put(fluid.getName(), fluid); + } + public static FluidType fromID(int id) { FluidType fluid = idMapping.get(id); @@ -749,7 +820,7 @@ public class Fluids { FluidType[] all = new FluidType[idMapping.size()]; for(int i = 0; i < all.length; i++) { - FluidType type = nice ? metaOrder.get(i) : idMapping.get(i); + FluidType type = nice ? metaOrder.get(i) : registerOrder.get(i); if(type == null) { throw new IllegalStateException("A severe error has occoured with NTM's fluid system! Fluid of the ID " + i + " has returned NULL in the registry!"); diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index ba720d228..d3c787fd1 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -15,7 +15,6 @@ import com.hbm.packet.TEFluidPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -205,6 +204,12 @@ public class FluidTank { public void renderTank(int x, int y, double z, int width, int height) { GL11.glEnable(GL11.GL_BLEND); + + int color = type.getTint(); + double r = ((color & 0xff0000) >> 16) / 255D; + double g = ((color & 0x00ff00) >> 8) / 255D; + double b = ((color & 0x0000ff) >> 0) / 255D; + GL11.glColor3d(r, g, b); y -= height; @@ -230,6 +235,7 @@ public class FluidTank { tessellator.addVertexWithUV(minX, minY, z, minU, minV); tessellator.draw(); + GL11.glColor3d(1D, 1D, 1D); GL11.glDisable(GL11.GL_BLEND); } @@ -237,7 +243,7 @@ public class FluidTank { if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) { List list = new ArrayList(); - list.add(I18n.format(this.type.getUnlocalizedName())); + list.add(this.type.getLocalizedName()); list.add(fluid + "/" + maxFluid + "mB"); if(this.pressure != 0) { diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java index 0f0404916..1bb6d3574 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java @@ -67,7 +67,7 @@ public class FT_Coolable extends FluidTrait { @Override public void serializeJSON(JsonWriter writer) throws IOException { - writer.name("coolsTo").value(this.coolsTo.getUnlocalizedName()); + writer.name("coolsTo").value(this.coolsTo.getName()); writer.name("amountReq").value(this.amountReq); writer.name("amountProd").value(this.amountProduced); writer.name("heatEnergy").value(this.heatEnergy); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java index 989915a46..c828858b8 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java @@ -87,7 +87,7 @@ public class FT_Heatable extends FluidTrait { for(HeatingStep step : steps) { writer.beginObject(); - writer.name("typeProduced").value(step.typeProduced.getUnlocalizedName()); + writer.name("typeProduced").value(step.typeProduced.getName()); writer.name("amountReq").value(step.amountReq); writer.name("amountProd").value(step.amountProduced); writer.name("heatReq").value(step.heatReq); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java index 20ea31ba8..9c34f199d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSelenium.java @@ -10,7 +10,6 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -45,7 +44,7 @@ public class GUIMachineSelenium extends GuiInfoContainer { long energy = selenium.getHEFromFuel(type); if(energy > 0) - text.add(" " + I18nUtil.resolveKey(type.getUnlocalizedName()) + " (" + BobMathUtil.getShortNumber(energy) + "HE/t)"); + text.add(" " + type.getLocalizedName() + " (" + BobMathUtil.getShortNumber(energy) + "HE/t)"); } text.add(EnumChatFormatting.ITALIC + "(These numbers are base values,"); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java index eefdf12c1..4646f4e88 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java @@ -137,7 +137,7 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { fuels.add(I18nUtil.resolveKey("desc.gui.turbinegas.fuels")); for(FluidType type : Fluids.getInNiceOrder()) { if(type.hasTrait(FT_Combustible.class) && type.getTrait(FT_Combustible.class).getGrade() == FuelGrade.GAS) { - fuels.add(" " + I18nUtil.resolveKey(type.getUnlocalizedName())); + fuels.add(" " + type.getLocalizedName()); } } this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 34 + 16, 16, 16, guiLeft - 8, guiTop + 44 + 16, fuels); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMixer.java b/src/main/java/com/hbm/inventory/gui/GUIMixer.java index 15dd31b72..79f6461d6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMixer.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMixer.java @@ -12,7 +12,6 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineMixer; -import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -47,8 +46,8 @@ public class GUIMixer extends GuiInfoContainer { List label = new ArrayList(); label.add(EnumChatFormatting.YELLOW + "Current recipe (" + (mixer.recipeIndex + 1) + "/" + recipes.length + "):"); MixerRecipe recipe = recipes[mixer.recipeIndex % recipes.length]; - if(recipe.input1 != null) label.add("-" + I18nUtil.resolveKey(recipe.input1.type.getUnlocalizedName())); - if(recipe.input2 != null) label.add("-" + I18nUtil.resolveKey(recipe.input2.type.getUnlocalizedName())); + if(recipe.input1 != null) label.add("-" + recipe.input1.type.getLocalizedName()); + if(recipe.input2 != null) label.add("-" + recipe.input2.type.getLocalizedName()); if(recipe.solidInput != null) label.add("-" + recipe.solidInput.extractForCyclingDisplay(20).getDisplayName()); label.add(EnumChatFormatting.RED + "Click to change!"); this.drawCustomInfoStat(x, y, guiLeft + 62, guiTop + 22, 12, 12, x, y, label); diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java index 7a35749db..a43235cce 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java @@ -14,7 +14,6 @@ import com.hbm.items.machine.ItemFluidIDMulti; import com.hbm.lib.RefStrings; import com.hbm.packet.NBTItemControlPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -111,7 +110,7 @@ public class GUIScreenFluid extends GuiScreen { return; if(guiLeft + 7 + k * 18 <= i && guiLeft + 7 + k * 18 + 18 > i && guiTop + 29 < j && guiTop + 29 + 18 >= j) - func_146283_a(Arrays.asList(new String[] { I18nUtil.resolveKey(this.searchArray[k].getUnlocalizedName()) }), i, j); + func_146283_a(Arrays.asList(new String[] { this.searchArray[k].getLocalizedName() }), i, j); } } @@ -170,7 +169,7 @@ public class GUIScreenFluid extends GuiScreen { String subs = this.search.getText().toLowerCase(Locale.US); for(FluidType type : Fluids.getInNiceOrder()) { - String name = I18nUtil.resolveKey(type.getUnlocalizedName()).toLowerCase(Locale.US); + String name = type.getLocalizedName(); if(name.contains(subs) && !type.hasNoID()) { this.searchArray[next] = type; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index 44a89c104..a563eb732 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -24,7 +24,6 @@ import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.packet.ItemFolderPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -146,7 +145,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { if(stack.getItem() == ModItems.fluid_identifier) { FluidType fluid = Fluids.fromID(stack.getItemDamage()); - if(I18nUtil.resolveKey(fluid.getUnlocalizedName()).toLowerCase(Locale.US).contains(sub)) { + if(fluid.getLocalizedName().contains(sub)) { stacks.add(stack); } } diff --git a/src/main/java/com/hbm/items/armor/ArmorFSBFueled.java b/src/main/java/com/hbm/items/armor/ArmorFSBFueled.java index 4988f6234..deb44ba51 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSBFueled.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSBFueled.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.inventory.fluid.FluidType; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import api.hbm.fluid.IFillableItem; import cpw.mods.fml.relauncher.Side; @@ -83,7 +82,7 @@ public class ArmorFSBFueled extends ArmorFSB implements IFillableItem { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(I18nUtil.resolveKey(this.fuelType.getUnlocalizedName()) + ": " + BobMathUtil.getShortNumber(getFill(stack)) + " / " + BobMathUtil.getShortNumber(getMaxFill(stack))); + list.add(this.fuelType.getLocalizedName() + ": " + BobMathUtil.getShortNumber(getFill(stack)) + " / " + BobMathUtil.getShortNumber(getMaxFill(stack))); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackBase.java b/src/main/java/com/hbm/items/armor/JetpackBase.java index c036d3ad6..204ddd28b 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBase.java +++ b/src/main/java/com/hbm/items/armor/JetpackBase.java @@ -6,7 +6,6 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.inventory.fluid.FluidType; import com.hbm.render.model.ModelJetPack; import com.hbm.util.ArmorUtil; -import com.hbm.util.I18nUtil; import api.hbm.fluid.IFillableItem; import cpw.mods.fml.relauncher.Side; @@ -38,7 +37,7 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey(fuel.getUnlocalizedName()) + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); + list.add(EnumChatFormatting.LIGHT_PURPLE + fuel.getUnlocalizedName() + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); list.add(""); super.addInformation(itemstack, player, list, bool); list.add(EnumChatFormatting.GOLD + "Can be worn on its own!"); @@ -52,7 +51,7 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem if(jetpack == null) return; - list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (" + I18nUtil.resolveKey(fuel.getUnlocalizedName()) + ": " + this.getFuel(jetpack) + "mB / " + this.maxFuel + "mB"); + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (" + fuel.getLocalizedName() + ": " + this.getFuel(jetpack) + "mB / " + this.maxFuel + "mB"); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemCanister.java b/src/main/java/com/hbm/items/machine/ItemCanister.java index b1393db87..fb792f532 100644 --- a/src/main/java/com/hbm/items/machine/ItemCanister.java +++ b/src/main/java/com/hbm/items/machine/ItemCanister.java @@ -40,7 +40,7 @@ public class ItemCanister extends Item { public String getItemStackDisplayName(ItemStack stack) { String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s1 != null) { s = s + " " + s1; diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java index 432141d9d..b063ce516 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java @@ -9,7 +9,6 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.resources.I18n; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -76,7 +75,7 @@ public class ItemChemistryTemplate extends Item { for(int i = 0; i < 2; i++) { if(recipe.outputFluids[i] != null) { int p = recipe.outputFluids[i].pressure; - list.add(recipe.outputFluids[i].fill + "mB " + I18n.format(recipe.outputFluids[i].type.getUnlocalizedName()) + (p != 0 ? (" at " + p + "PU") : "")); + list.add(recipe.outputFluids[i].fill + "mB " + recipe.outputFluids[i].type.getLocalizedName() + (p != 0 ? (" at " + p + "PU") : "")); } } @@ -91,7 +90,7 @@ public class ItemChemistryTemplate extends Item { for(int i = 0; i < 2; i++) { if(recipe.inputFluids[i] != null) { int p = recipe.inputFluids[i].pressure; - list.add(recipe.inputFluids[i].fill + "mB " + I18n.format(recipe.inputFluids[i].type.getUnlocalizedName()) + (p != 0 ? (" at " + p + "PU") : "")); + list.add(recipe.inputFluids[i].fill + "mB " + recipe.inputFluids[i].type.getLocalizedName() + (p != 0 ? (" at " + p + "PU") : "")); } } diff --git a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java index 84fcb8ba1..f98c79735 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java @@ -40,7 +40,7 @@ public class ItemFluidDuct extends Item { public String getItemStackDisplayName(ItemStack stack) { String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s1 != null) { s = s + " " + s1; diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java index 43ad52bcb..e8f44cfa4 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java @@ -20,7 +20,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; @@ -45,7 +44,7 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte setType(stack, secondary, true); setType(stack, primary, false); world.playSoundAtEntity(player, "random.orb", 0.25F, 1.25F); - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.startTranslation(secondary.getUnlocalizedName()).flush(), /*MainRegistry.proxy.ID_DETONATOR*/ 7, 3000), (EntityPlayerMP) player); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.startTranslation(secondary.getConditionalName()).flush(), /*MainRegistry.proxy.ID_DETONATOR*/ 7, 3000), (EntityPlayerMP) player); } if(world.isRemote && player.isSneaking()) { @@ -68,9 +67,9 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".info")); - list.add(" " + I18n.format(getType(stack, true).getUnlocalizedName())); + list.add(" " + getType(stack, true).getLocalizedName()); list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".info2")); - list.add(" " + I18n.format(getType(stack, false).getUnlocalizedName())); + list.add(" " + getType(stack, false).getLocalizedName()); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java index 1e121dd96..358d498d8 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java @@ -82,7 +82,7 @@ public class ItemFluidIcon extends Item { @Override public String getItemStackDisplayName(ItemStack stack) { - String s = (StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s = (StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s != null) { return s; diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java index fcb336edc..d68a24f24 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java @@ -13,7 +13,6 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.client.resources.I18n; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -65,7 +64,7 @@ public class ItemFluidIdentifier extends Item implements IItemFluidIdentifier { list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", I18nUtil.resolveKey(ModItems.template_folder.getUnlocalizedName() + ".name"))); list.add(""); list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".info")); - list.add(" " + I18n.format(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())); + list.add(" " + Fluids.fromID(stack.getItemDamage()).getLocalizedName()); list.add(""); list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".usage0")); list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".usage1")); diff --git a/src/main/java/com/hbm/items/machine/ItemFluidTank.java b/src/main/java/com/hbm/items/machine/ItemFluidTank.java index 437554375..f4c0a3551 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidTank.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidTank.java @@ -48,7 +48,7 @@ public class ItemFluidTank extends Item { public String getItemStackDisplayName(ItemStack stack) { String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s1 != null) { s = s + " " + s1; diff --git a/src/main/java/com/hbm/items/machine/ItemGasTank.java b/src/main/java/com/hbm/items/machine/ItemGasTank.java index 11a20554a..0fe7cf03e 100644 --- a/src/main/java/com/hbm/items/machine/ItemGasTank.java +++ b/src/main/java/com/hbm/items/machine/ItemGasTank.java @@ -42,7 +42,7 @@ public class ItemGasTank extends Item { public String getItemStackDisplayName(ItemStack stack) { String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); if(s1 != null) { s = s + " " + s1; diff --git a/src/main/java/com/hbm/items/tool/ItemAnalyzer.java b/src/main/java/com/hbm/items/tool/ItemAnalyzer.java index ebfdbe208..1076552b1 100644 --- a/src/main/java/com/hbm/items/tool/ItemAnalyzer.java +++ b/src/main/java/com/hbm/items/tool/ItemAnalyzer.java @@ -75,7 +75,7 @@ public class ItemAnalyzer extends Item { if(te instanceof IFluidDuct) { player.addChatMessage(new ChatComponentText( - "Duct Type: " + I18n.format(((IFluidDuct)te).getType().getUnlocalizedName()))); + "Duct Type: " + ((IFluidDuct)te).getType().getLocalizedName())); } if(te instanceof TileEntityPylon) { diff --git a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java index 1e10d8f98..0776efa01 100644 --- a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java +++ b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java @@ -10,7 +10,6 @@ import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; import api.hbm.block.IToolable.ToolType; @@ -70,7 +69,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { initNBT(stack); } - return stack.stackTagCompound.getInteger(type.getUnlocalizedName()); + return stack.stackTagCompound.getInteger(type.getName()); } public int getMaxFill(FluidType type) { @@ -86,7 +85,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { initNBT(stack); } - stack.stackTagCompound.setInteger(type.getUnlocalizedName(), fill); + stack.stackTagCompound.setInteger(type.getName(), fill); } public void initNBT(ItemStack stack) { @@ -200,7 +199,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { @SideOnly(Side.CLIENT) private String getFillGauge(ItemStack stack, FluidType type) { - return I18nUtil.resolveKey(type.getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", this.getFill(stack, type)) + " / " + String.format(Locale.US, "%,d", this.getMaxFill(type)); + return type.getLocalizedName() + ": " + String.format(Locale.US, "%,d", this.getFill(stack, type)) + " / " + String.format(Locale.US, "%,d", this.getMaxFill(type)); } @Override public boolean providesFluid(FluidType type, ItemStack stack) { return false; } diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbilityFueled.java b/src/main/java/com/hbm/items/tool/ItemToolAbilityFueled.java index fd116a9b0..fd749bbd0 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbilityFueled.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbilityFueled.java @@ -4,7 +4,6 @@ import java.util.HashSet; import java.util.List; import com.hbm.inventory.fluid.FluidType; -import com.hbm.util.I18nUtil; import api.hbm.fluid.IFillableItem; import cpw.mods.fml.relauncher.Side; @@ -38,7 +37,7 @@ public class ItemToolAbilityFueled extends ItemToolAbility implements IFillableI list.add(EnumChatFormatting.GOLD + "Fuel: " + this.getFill(stack) + "/" + this.maxFuel + "mB"); for(FluidType type : acceptedFuels) { - list.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(type.getUnlocalizedName())); + list.add(EnumChatFormatting.YELLOW + "- " + type.getLocalizedName()); } super.addInformation(stack, player, list, ext); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java index e58c89eee..80910ce01 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java @@ -20,7 +20,6 @@ import api.hbm.fluid.IFillableItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; @@ -103,7 +102,7 @@ public class ItemGunChemthrower extends ItemGunBase implements IFillableItem { list.add("Ammo: " + getMag(stack) + " / " + mainConfig.ammoCap + "mB"); - list.add("Ammo Type: " + I18n.format(this.getFluidType(stack).getUnlocalizedName())); + list.add("Ammo Type: " + this.getFluidType(stack).getLocalizedName()); int dura = mainConfig.durability - getItemWear(stack); diff --git a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java index 6a6f12176..47b0e405a 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java +++ b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java @@ -56,6 +56,7 @@ public class RenderFluidTank extends TileEntitySpecialRenderer implements IItemR ResourceManager.fluidtank_exploded.renderPart("Tank"); } + GL11.glColor3d(1D, 1D, 1D); GL11.glShadeModel(GL11.GL_FLAT); if(type != null && type != Fluids.NONE) { @@ -80,6 +81,16 @@ public class RenderFluidTank extends TileEntitySpecialRenderer implements IItemR } public String getTextureFromType(FluidType type) { + + if(type.customFluid) { + int color = type.getTint(); + double r = ((color & 0xff0000) >> 16) / 255D; + double g = ((color & 0x00ff00) >> 8) / 255D; + double b = ((color & 0x0000ff) >> 0) / 255D; + GL11.glColor3d(r, g, b); + return "textures/models/tank/tank_NONE.png"; + } + String s = type.getName(); if(type.isAntimatter() || (type.hasTrait(FT_Corrosive.class) && type.getTrait(FT_Corrosive.class).isHighlyCorrosive())) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index 4ce54e100..dce56b111 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -382,7 +382,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon case BOILER: stats.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("rbmk.boiler.water", this.data.getInteger("water"), this.data.getInteger("maxWater"))); stats.add(EnumChatFormatting.WHITE + I18nUtil.resolveKey("rbmk.boiler.steam", this.data.getInteger("steam"), this.data.getInteger("maxSteam"))); - stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.boiler.type", I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("type")).getUnlocalizedName()))); + stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.boiler.type", Fluids.fromID(this.data.getShort("type")).getLocalizedName())); break; case CONTROL: @@ -398,10 +398,10 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon break; case HEATEX: - stats.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey(I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("type")).getUnlocalizedName()) + " " + - this.data.getInteger("water") + "/" + this.data.getInteger("maxWater") + "mB")); - stats.add(EnumChatFormatting.RED + I18nUtil.resolveKey(I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("hottype")).getUnlocalizedName()) + " " + - this.data.getInteger("steam") + "/" + this.data.getInteger("maxSteam") + "mB")); + stats.add(EnumChatFormatting.BLUE + Fluids.fromID(this.data.getShort("type")).getLocalizedName() + " " + + this.data.getInteger("water") + "/" + this.data.getInteger("maxWater") + "mB"); + stats.add(EnumChatFormatting.RED + Fluids.fromID(this.data.getShort("hottype")).getLocalizedName() + " " + + this.data.getInteger("steam") + "/" + this.data.getInteger("maxSteam") + "mB"); break; } diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/custom_lava.png b/src/main/resources/assets/hbm/textures/gui/fluids/custom_lava.png new file mode 100644 index 0000000000000000000000000000000000000000..e849937862e7e61205270f3ce84c02545a57246c GIT binary patch literal 786 zcmV+t1MU2YP)qtS@jY=&*y z*tU&nnz*iuWm)X^dwkzVn5K#6c_^h=tyWAX6Vf!raU2eZ1FcqzZnul;y7c>flv1?Y zZG7Knv)TML2*Z#hN!V_;^!t6XEW@_#qev-*VHo6j4uEA@+~42x{{D^tST2{W*K3NR zpePD-U8i2J6NVu{5HK2zP)Z@C#Bm&Yy&fMQACzT@*ladTr&CPR1V9LZZQFFaU8Iz( zRx6??qN*yE%O$$5lVur`$pk4SLMer=>llWCVHg0k+ij$jD5Z$wn8V?~pFe+SG#Y$; zeew48Mpaehd5&Hb1wsg0B@9m=vqN{O!P{Qmx;X&OnAkYyQ3l8__`hG8Il-zSP9etv$K&*uz> z!($I=nxbhMyWNh@&rj<0I?ZPDIJ0frh%gMP)oNT`UQ!eVaU3%k43JW?SS;9VHdIwb zy-C!d0nAleb8KtU Q4FCWD07*qoM6N<$f)Z129RL6T literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/custom_oil.png b/src/main/resources/assets/hbm/textures/gui/fluids/custom_oil.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2fb1710328171368be62525b3a44b2d0f753c3 GIT binary patch literal 545 zcmV++0^a?JP)(gy+S&IVfUfJPwUTp2RUdaELMeq9BLIEhGtV=siiof* z3nIcW3_LwO5o4s3g7+Th99>Gul!jp-gupnCs4BHqn!viQ0C?{KNGZ|xJ#JYRy!RZB zN9($68?{zK2sr0ZRl2StgkYbDJS;fpY^-%%t$3biLL6?pFnA&_%s+cxu^a|W>SMTD-wYez(w zrpXlA`r0bnq^e5JnXb`oHdK{u+ej%HgMHsE1LHW_Bmjrs-`{(T@juVbIYflp?Ph^_ zd3oV-xfp}j*Vl)I5Q2@>()A#+qD0}bCSEK&^{?6%iqBWnU$uf{qqLgA0cOe8yDV6~d;p5}OXtyAH@?=jZ3W1*eq4IF5Mlx!rEfBROZw$TUqRm~+N8mG*c5=6UAl=Lc1_ jWU4BvYK%%LIOq5S{MSggN^rCb00000NkvXXu0mjfe8vC| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/custom_toxin.png b/src/main/resources/assets/hbm/textures/gui/fluids/custom_toxin.png new file mode 100644 index 0000000000000000000000000000000000000000..997a31214f309d11c82a825c74c7b0350557d6c7 GIT binary patch literal 702 zcmV;v0zv(WP)Sf3bpZVS{!$bLUDxsW_y~Z| zS|fzOImcqLz*sO2mq|L>~=ehF_dMA7>~yoV;GOe!!ke|$HZ}rl#(<} zsp}f8HQsxYB*9vXF$N)opzAuc)~r@5LI_AHsj3R^J+s*iAp}KH;JqKhJ@?V+bUNjE z4nPP2fFwx>A+XtO`1|`K%QB9~BLLIsln??*l2BC@qrUG?Z*Om0US0xVjKNw<+qP(} z$@84=?{B1(+}+)gBnjSowAM@}6Gr>}{ADVUEz{`~fc<_?mSq4q=Z4v4vl%WhnM@dMx7$-3#}q|@a}MVm%jJ@fj}M|K zB2Cl(F>ofgEX)5msj7;;?+GDrb#;YOir3dy%CaO)Q=D^1DUnjrwk@;S46QY3nxd3K zMNu?(t?Qbbn;V>SjK^b~a{~ifYv%Jg0C}F1rYRu=LkELx;eZf=e{&-|sZ-!T(EtDd07*qoM6N<$g24_ykpKVy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/custom_water.png b/src/main/resources/assets/hbm/textures/gui/fluids/custom_water.png new file mode 100644 index 0000000000000000000000000000000000000000..63fdd9ec9d7b81012ab90be47f245a07dd9f2de3 GIT binary patch literal 471 zcmV;|0Vw{7P)|Yo}_ji z*XL8Z-EKegJOcpC462G8%nT8MnU&l*hY$k#z6Su%<#PEUBBYc+L||qxGg3-ODV1Sn zw#)M!Cn6xC(x9s4nTX(=0}-KVnsRwv*Z=PUKvhdYL=ZxNsuno8&diwSx#TG&xQtIk z%K7&}fftkU~3Je!Qz_x8Lv)!O& zS<0#akd^BDz7YL>zu~&B!!QhZJRTUwvEc5y4l%|8C7-X?3nGHHZNIX1U59C!U}kX6 z;dngaa5!Kb#~q~14>Kdih-Fz2LiqXsf5dMRYp$5Nn9F53YLnCrwIfBOsNuc;s!%u9 zO4NB>%NxZQzZ}%7<%T-yyta5s>C0RFv*hM1Uu|jcJwyc4H0@ySAk;kM6`2`r+hQ07 zm>JIJGp^Tb@rm=^qiGt%7y$rn+v0ROK~?d5KB1~u*A@5sedmj8uz%b^DtuJ5u_pik N002ovPDHLkV1k`9({}&> literal 0 HcmV?d00001 From a40dbd882a8fbe7a3f2d0083ff66725f95c6731b Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 5 Oct 2023 22:42:19 +0200 Subject: [PATCH 060/207] arc welder stuff --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../hbm/blocks/machine/MachineArcWelder.java | 32 ++++++++++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 6 ++ .../render/tileentity/RenderArcWelder.java | 57 ++++++++++++++++++ .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityMachineArcWelder.java | 54 +++++++++++++++++ .../gui/processing/gui_arc_welder.png | Bin 0 -> 2952 bytes 8 files changed, 154 insertions(+) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineArcWelder.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderArcWelder.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_arc_welder.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 2e4a6cda9..66d22a2ee 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1036,6 +1036,7 @@ public class ModBlocks { public static Block machine_assembler; public static Block machine_assemfac; + public static Block machine_arc_welder; public static Block machine_chemplant; public static Block machine_chemfac; @@ -2272,6 +2273,7 @@ public class ModBlocks { barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); machine_assemfac = new MachineAssemfac(Material.iron).setBlockName("machine_assemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_arc_welder = new MachineArcWelder(Material.iron).setBlockName("machine_arc_welder").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3319,6 +3321,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_assemfac, machine_assemfac.getUnlocalizedName()); GameRegistry.registerBlock(machine_chemplant, machine_chemplant.getUnlocalizedName()); GameRegistry.registerBlock(machine_chemfac, machine_chemfac.getUnlocalizedName()); + register(machine_arc_welder); register(machine_mixer); register(machine_fluidtank); register(machine_bat9000); diff --git a/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java b/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java new file mode 100644 index 000000000..a728122bc --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java @@ -0,0 +1,32 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineArcWelder; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineArcWelder extends BlockDummyable { + + public MachineArcWelder(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineArcWelder(); + return new TileEntityProxyCombo().inventory().power().fluid(); + } + + @Override + public int[] getDimensions() { + return new int[] {1, 0, 1, 0, 1, 1}; + } + + @Override + public int getOffset() { + return 0; + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index ea4100179..8b4ff3564 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -293,6 +293,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioTelex.class, new RenderTelex()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpSteam.class, new RenderPump()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpElectric.class, new RenderPump()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineArcWelder.class, new RenderArcWelder()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c7a57a2a6..18cf110cc 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -147,6 +147,9 @@ public class ResourceManager { //Mixer public static final IModelCustom mixer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mixer.obj")); + //Arc Welder + public static final IModelCustom arc_welder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/arc_welder.obj")); + //F6 TANKS public static final IModelCustom tank = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/tank.obj")); @@ -513,6 +516,9 @@ public class ResourceManager { //Mixer public static final ResourceLocation mixer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mixer.png"); + + //Welder + public static final ResourceLocation arc_welder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/arc_welder.png"); //F6 TANKS public static final ResourceLocation uf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/UF6Tank.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java b/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java new file mode 100644 index 000000000..f7b1ef53c --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java @@ -0,0 +1,57 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderArcWelder extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glTranslated(-0.5, 0, 0); + + bindTexture(ResourceManager.arc_welder_tex); + ResourceManager.arc_welder.renderAll(); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.radio_telex); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -2, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + GL11.glTranslated(0, 0, -0.5); + bindTexture(ResourceManager.arc_welder_tex); + ResourceManager.arc_welder.renderAll(); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 3e6c9cc6d..d5ef30c31 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -307,6 +307,7 @@ public class TileMappings { put(TileEntityMachineCompressor.class, "tileentity_compressor"); put(TileEntityElectrolyser.class, "tileentity_electrolyser"); put(TileEntityMachineMixer.class, "tileentity_mixer"); + put(TileEntityMachineArcWelder.class, "tileentity_arc_welder"); put(TileEntitySteamEngine.class, "tileentity_steam_engine"); put(TileEntityMachineTurbine.class, "tileentity_turbine"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java new file mode 100644 index 000000000..f2099415d --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -0,0 +1,54 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.tileentity.TileEntityMachineBase; + +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardReceiver; + +public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver { + + public long power; + public long maxPower; + + public FluidTank tank; + + public TileEntityMachineArcWelder() { + super(8); + } + + @Override + public String getName() { + return "container.machineArcWelder"; + } + + @Override + public void updateEntity() { + + } + + @Override + public long getPower() { + return power; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {tank}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tank}; + } +} diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_arc_welder.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_arc_welder.png new file mode 100644 index 0000000000000000000000000000000000000000..14366acc325432628c0d5dd3f694de688a8539d3 GIT binary patch literal 2952 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 literal 0 HcmV?d00001 From 81b6df6962135604ea8be15d872745a0b560f900 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 6 Oct 2023 15:00:43 +0200 Subject: [PATCH 061/207] container fix for custom fluids, arc welder stuff --- .../hbm/inventory/FluidContainerRegistry.java | 11 ++++++----- .../hbm/tileentity/IConditionalInvAccess.java | 17 +++++++++++++++++ .../hbm/tileentity/TileEntityProxyCombo.java | 12 ++++++++++++ .../tileentity/TileEntityProxyInventory.java | 1 + src/main/java/com/hbm/util/HashedSet.java | 10 +++++++++- .../textures/models/machines/arc_welder.png | Bin 1024 -> 1976 bytes 6 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/hbm/tileentity/IConditionalInvAccess.java diff --git a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java index ce1c1977e..f6f3d2971 100644 --- a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java +++ b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java @@ -62,18 +62,19 @@ public class FluidContainerRegistry { for(int i = 1; i < fluids.length; i++) { FluidType type = fluids[i]; + int id = type.getID(); - if(type.getContainer(CD_Canister.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.canister_full, 1, i), new ItemStack(ModItems.canister_empty), Fluids.fromID(i), 1000)); - if(type.getContainer(CD_Gastank.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.gas_full, 1, i), new ItemStack(ModItems.gas_empty), Fluids.fromID(i), 1000)); + if(type.getContainer(CD_Canister.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.canister_full, 1, id), new ItemStack(ModItems.canister_empty), type, 1000)); + if(type.getContainer(CD_Gastank.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.gas_full, 1, id), new ItemStack(ModItems.gas_empty), type, 1000)); if(type.hasNoContainer()) continue; - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_lead_full, 1, i), new ItemStack(ModItems.fluid_tank_lead_empty), Fluids.fromID(i), 1000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_lead_full, 1, id), new ItemStack(ModItems.fluid_tank_lead_empty), type, 1000)); if(type.needsLeadContainer()) continue; - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_full, 1, i), new ItemStack(ModItems.fluid_tank_empty), Fluids.fromID(i), 1000)); - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_barrel_full, 1, i), new ItemStack(ModItems.fluid_barrel_empty), Fluids.fromID(i), 16000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_full, 1, id), new ItemStack(ModItems.fluid_tank_empty), type, 1000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_barrel_full, 1, id), new ItemStack(ModItems.fluid_barrel_empty), type, 16000)); } Compat.registerCompatFluidContainers(); diff --git a/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java b/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java new file mode 100644 index 000000000..9416eb837 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java @@ -0,0 +1,17 @@ +package com.hbm.tileentity; + +import net.minecraft.item.ItemStack; + +/** + * Masks operation such as isItemValidForSlot and getAccessibleSlotsFromSide found in ISidedInveotry + * Intended to be used to return a different result depending on the port, assuming the port detects IConditionalInvAccess + * + * @author hbm + */ +public interface IConditionalInvAccess { + + public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack); + public boolean canInsertItem(int x, int y, int z, int slot, ItemStack stack, int side); + public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side); + public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side); +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index 18d109586..eb4a603e0 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -361,6 +361,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return false; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).isItemValidForSlot(xCoord, yCoord, zCoord, slot, stack); + return ((ISidedInventory)getTile()).isItemValidForSlot(slot, stack); } @@ -374,6 +377,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return new int[0]; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).getAccessibleSlotsFromSide(xCoord, yCoord, zCoord, side); + return ((ISidedInventory)getTile()).getAccessibleSlotsFromSide(side); } @@ -387,6 +393,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return false; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).canInsertItem(xCoord, yCoord, zCoord, i, stack, j); + return ((ISidedInventory)getTile()).canInsertItem(i, stack, j); } @@ -400,6 +409,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return false; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).canExtractItem(xCoord, yCoord, zCoord, i, stack, j); + return ((ISidedInventory)getTile()).canExtractItem(i, stack, j); } diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java b/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java index 9e348c0b4..ce4208ccc 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java @@ -5,6 +5,7 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +@Deprecated public class TileEntityProxyInventory extends TileEntityProxyBase implements ISidedInventory { @Override diff --git a/src/main/java/com/hbm/util/HashedSet.java b/src/main/java/com/hbm/util/HashedSet.java index cdb13cdee..6a45c952b 100644 --- a/src/main/java/com/hbm/util/HashedSet.java +++ b/src/main/java/com/hbm/util/HashedSet.java @@ -105,7 +105,15 @@ public class HashedSet implements Set { @Override public boolean remove(Object o) { - return false; + T obj = this.map.get(o.hashCode()); + boolean rem = false; + + if(obj != null) { + rem = true; + this.map.remove(o.hashCode()); + } + + return rem; } @Override diff --git a/src/main/resources/assets/hbm/textures/models/machines/arc_welder.png b/src/main/resources/assets/hbm/textures/models/machines/arc_welder.png index d85de397f72547ed4600d83282aa63896a1db313..7dc4193e8a25df93e244f20dc88eb776263a0b65 100644 GIT binary patch delta 1947 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
fh_ym`?dW2= z-C6+HY&HOZ)9Hln-wzKD&g-snmLHR1>Hwtp3ilHA2V_%)&zUWBsE6n0=L_Ln$NJ3P zp{+B&!T3&jac=lrvDs`ca_10>bLcG;ZUyG4-EMc0LVsMx`pn*;eSUfh1S#6t-}m@0 z&Y@GYIEVV^tCnEIzGE@W-l3g3GfN#h#3~&+CbM^F%aeB3 znb!{Ie)@iS-k(aQCqRb^Gkb?#>$3x|P4Z9{NO$V&1s&p7Po6I$zvW-NpkoWzhdERj z3Mvc*6@P|;3PVAKp`gN0P+=&jFcegn#jlj48G4mWhk9^rXc*e$0MMatayp$Z_BIVc zhk9sV7Y`llGkb@2`j<(4rT6wh+szK#eU}Mk6TjK1F%w_Ezdw}@O+@3yS{!WqyD(En zl!%!+0NlXf5e7F4kC>|Z1M zFn`7*8Ktgk8zbss1(l%xrM$S(d?{iDj{qQeD?J)}26n9lLmkrqKUFnx^5TB+ZcP7yHOh1sxg)m!1j4lunC% z((x_7gW?Y>!uXv?YQiR3d4SA2G|eH3>_K>m!1i% zvL8A$Nw6O(4Ev!%upjyXVLvnj?1yHC4h@7$&ji>H?J!k8^e@tUMpwpK+RXp}002ov JPDHLkV1hBR)rSB8 From b7028160573aa7d95dd9b6e2b6d6e2c35e271f87 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 8 Oct 2023 18:45:45 +0200 Subject: [PATCH 062/207] finished arc welder, fixes --- changelog | 31 +- gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../com/hbm/blocks/machine/BlockCMAnchor.java | 51 +-- .../hbm/blocks/machine/MachineArcWelder.java | 6 + .../com/hbm/explosion/ExplosionFleija.java | 2 +- .../hbm/explosion/ExplosionNukeAdvanced.java | 64 ---- .../com/hbm/handler/nei/ArcWelderHandler.java | 60 ++++ .../hbm/handler/nei/NEIUniversalHandler.java | 2 + .../com/hbm/inventory/OreDictManager.java | 32 +- src/main/java/com/hbm/inventory/OreNames.java | 1 + .../container/ContainerMachineArcWelder.java | 86 +++++ .../hbm/inventory/fluid/tank/FluidTank.java | 28 +- .../inventory/gui/GUIMachineArcWelder.java | 60 ++++ .../inventory/material/MaterialShapes.java | 1 + .../java/com/hbm/inventory/material/Mats.java | 18 +- .../inventory/recipes/ArcWelderRecipes.java | 200 ++++++++++++ .../inventory/recipes/AssemblerRecipes.java | 39 ++- .../inventory/recipes/anvil/AnvilRecipes.java | 8 + .../recipes/loader/SerializableRecipe.java | 1 + src/main/java/com/hbm/items/ModItems.java | 4 +- src/main/java/com/hbm/lib/HbmWorldGen.java | 10 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 17 + .../java/com/hbm/main/CraftingManager.java | 14 +- src/main/java/com/hbm/main/NEIConfig.java | 1 + .../java/com/hbm/particle/ParticleHadron.java | 16 +- .../render/tileentity/RenderArcWelder.java | 37 ++- .../com/hbm/render/util/RenderDecoItem.java | 3 + .../hbm/tileentity/machine/TileEntityFEL.java | 2 +- .../machine/TileEntityMachineArcWelder.java | 293 +++++++++++++++++- .../machine/TileEntityMachineRTG.java | 2 +- .../network/TileEntityRequestNetwork.java | 2 +- src/main/java/com/hbm/util/ParticleUtil.java | 4 +- .../hbm/util/fauxpointtwelve/BlockPos.java | 10 +- src/main/resources/META-INF/HBM_at.cfg | 3 + src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 3 + .../textures/blocks/cmt_terminal_front.png | Bin 0 -> 425 bytes .../hbm/textures/blocks/cmt_terminal_side.png | Bin 0 -> 448 bytes 40 files changed, 950 insertions(+), 170 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/ArcWelderHandler.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java create mode 100644 src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/cmt_terminal_front.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/cmt_terminal_side.png diff --git a/changelog b/changelog index a98335f00..0cbb2b0e8 100644 --- a/changelog +++ b/changelog @@ -1,11 +1,30 @@ ## Added -* Expensive mode - * Horrible new config option that replaces several crafting items in key machine recipes with the all new heavy components - * Heavy components are 256 cast plates combined in an assembler - * +* Crystalline fullerite + * A late-game crafting material that is currenly only used to make the FEnSU + * Made from extracting fullerene from fine soot using high-performance solvent and a SILEX +* Arc welder + * Similar to an assembler, but without templates + * Can combine up to 3 items and one fluid + * Recipes vary in duration and energy consumption, welding together osmiridium plates requires the output of powerful reactors +* Custom fluids + * A config for adding custom fluid types + * Sets basic stats, color and textures + * Fluid tratis can be applied using the already existing fluid trait config + * The fluid trait config has been renamed to prevent name clashes + * Recommended greyscale textures recommended for the custom fluids are `custom_water`, `custom_lava`, `custom_oil` and `custom_toxin` + * 256k tanks do not have a label for custom fluids, but the tank's color will match the fluid's tint +* Custom machine structure positioning anchor + * Allows automatic generation of custom machine block configurations + * Simply replace the controller of your custom machine mockup with the anchor, then link it to a custom machine structure output wand and select the two diagonal points + * The resulting JSON structure will be saved in the config folder +* Welded plates + * Made from welding together two cast plates in an arc welder + * Now used in many progression-relevant machines, meaning that energy demand now more closely matches the energy production of progression-based generators + * Many recipes have been adjusted to now use cast plates or welded plates ## Changed -* Drones are now made from plastic +* Schrabidium explosions now ignore all blocks at Y:0, not just bedrock. This means that bedrock ores and oil are spared +* Drone waypoint connections only show up if a drone or a logistic block is held ## Fixed -* Fixed the new falling block implementation crashing on certain blocks \ No newline at end of file +* Fixed RTG energy connectors being backwards \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 017bb4d71..069c4d1c8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4740 +mod_build_number=4746 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index b3e1d84bd..ad16c99fd 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2268,7 +2268,7 @@ public class ModBlocks { machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_drill"); + machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_drill"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); drill_pipe = new BlockNoDrop(Material.iron).setBlockName("drill_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":drill_pipe"); machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); diff --git a/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java b/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java index bafa683a3..44f60003b 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java +++ b/src/main/java/com/hbm/blocks/machine/BlockCMAnchor.java @@ -13,31 +13,34 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class BlockCMAnchor extends Block { - @SideOnly(Side.CLIENT) - private IIcon iconFront; + + @SideOnly(Side.CLIENT) + private IIcon iconFront; - public BlockCMAnchor() { - super(Material.iron); - } - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":cm_terminal_front"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":cm_terminal_side"); - } + public BlockCMAnchor() { + super(Material.iron); + } - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); - } - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":cmt_terminal_front"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":cmt_terminal_side"); + } - if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); - if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); - if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); - if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java b/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java index a728122bc..9cc28da0c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java +++ b/src/main/java/com/hbm/blocks/machine/MachineArcWelder.java @@ -5,6 +5,7 @@ import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineArcWelder; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -19,6 +20,11 @@ public class MachineArcWelder extends BlockDummyable { if(meta >= 12) return new TileEntityMachineArcWelder(); return new TileEntityProxyCombo().inventory().power().fluid(); } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } @Override public int[] getDimensions() { diff --git a/src/main/java/com/hbm/explosion/ExplosionFleija.java b/src/main/java/com/hbm/explosion/ExplosionFleija.java index 3ad81f5e2..5a478fe14 100644 --- a/src/main/java/com/hbm/explosion/ExplosionFleija.java +++ b/src/main/java/com/hbm/explosion/ExplosionFleija.java @@ -96,7 +96,7 @@ public class ExplosionFleija dist = (int) Math.sqrt(dist); for (int y = (int)(dist / this.explosionCoefficient2); y > -dist / this.explosionCoefficient; y--) { - if(!(this.worldObj.getBlock(this.posX+x, this.posY+y, this.posZ+z) == Blocks.bedrock && this.posY+y <= 0) && !(this.worldObj.getBlock(this.posX+x, this.posY+y, this.posZ+z) instanceof DecoBlockAlt))this.worldObj.setBlock(this.posX+x, this.posY+y, this.posZ+z, Blocks.air); + if(this.posY + y > 0 && !(this.worldObj.getBlock(this.posX+x, this.posY+y, this.posZ+z) instanceof DecoBlockAlt))this.worldObj.setBlock(this.posX+x, this.posY+y, this.posZ+z, Blocks.air); } } } diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeAdvanced.java b/src/main/java/com/hbm/explosion/ExplosionNukeAdvanced.java index ef07620ee..5893488d5 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeAdvanced.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeAdvanced.java @@ -147,68 +147,4 @@ public class ExplosionNukeAdvanced } } } - - /*public static void mush(World world, double x, double y, double z) - { - double d = (float)x + 0.5F; - double d1 = (float)y + 0.5F; - double d2 = (float)z + 0.5F; - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 15, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2 + 15, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 15, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2 - 15, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 25, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2 + 25, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 25, d1, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1, d2 - 25, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 10, d1, d2 + 10, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 10, d1, d2 - 10, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 10, d1, d2 + 10, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 10, d1, d2 - 10, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 15, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 30, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 45, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 60, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 75, d2, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 15, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2 + 15, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 15, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2 - 15, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 40, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2 + 40, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 40, d1 + 90, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 90, d2 - 40, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 30, d1 + 90, d2 + 30, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 30, d1 + 90, d2 - 30, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 30, d1 + 90, d2 + 30, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 30, d1 + 90, d2 - 30, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 105, d2, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 30, d1 + 105, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 105, d2 + 30, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 30, d1 + 105, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 105, d2 - 30, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 20, d1 + 105, d2 + 20, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 20, d1 + 105, d2 - 20, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 20, d1 + 105, d2 + 20, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 20, d1 + 105, d2 - 20, 0.0D, 0.0D, 0.0D, 100)); - - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d + 10, d1 + 120, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 120, d2 + 10, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d - 10, d1 + 120, d2, 0.0D, 0.0D, 0.0D, 100)); - Minecraft.getMinecraft().effectRenderer.addEffect(new NukeCloudFX(world, d, d1 + 120, d2 - 10, 0.0D, 0.0D, 0.0D, 100)); - }*/ } diff --git a/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java b/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java new file mode 100644 index 000000000..e598840fc --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java @@ -0,0 +1,60 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; +import java.util.Locale; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIMachineArcWelder; +import com.hbm.inventory.recipes.ArcWelderRecipes; +import com.hbm.inventory.recipes.ArcWelderRecipes.ArcWelderRecipe; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.item.ItemStack; + +public class ArcWelderHandler extends NEIUniversalHandler { + + public ArcWelderHandler() { + super("Arc Welder", ModBlocks.machine_arc_welder, ArcWelderRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmArcWelder"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(67, 26, 32, 14), "ntmArcWelder")); + guiGui.add(GUIMachineArcWelder.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } + + @Override + public void drawExtras(int recipe) { + + RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); + Object[] original = (Object[]) rec.originalInputInstance; + ItemStack output = rec.output[0].item; + + outer: for(ArcWelderRecipe arc : ArcWelderRecipes.recipes) { + + //checks do not include the fluid, will break of there's two recipes with identical input and output but with fluids + if(ItemStack.areItemStacksEqual(arc.output, output) && arc.ingredients.length == original.length - (arc.fluid == null ? 0 : 1)) { + + for(int i = 0; i < rec.input.length - (arc.fluid == null ? 0 : 1); i++) { + if(arc.ingredients[i] != original[i]) continue outer; + } + + FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; + String duration = String.format(Locale.US, "%,d", arc.duration) + " ticks"; + String consumption = String.format(Locale.US, "%,d", arc.consumption) + " HE/t"; + int side = 160; + fontRenderer.drawString(duration, side - fontRenderer.getStringWidth(duration), 43, 0x404040); + fontRenderer.drawString(consumption, side - fontRenderer.getStringWidth(consumption), 55, 0x404040); + return; + } + } + } +} diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 3f4fcbe67..0bb53100a 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -56,8 +56,10 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { PositionedStack[] input; PositionedStack[] output; PositionedStack machinePositioned; + Object originalInputInstance; public RecipeSet(ItemStack[][] in, ItemStack[][] out, Object originalInputInstance /* for custom machine lookup */) { + this.originalInputInstance = originalInputInstance; input = new PositionedStack[in.length]; int[][] inPos = NEIUniversalHandler.getInputCoords(in.length); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 5a3169ae0..d62452c94 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -504,6 +504,7 @@ public class OreDictManager { for(NTMMaterial mat : Mats.orderedList) { if(mat.smeltable == SmeltingBehavior.SMELTABLE) { if(mat.shapes.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); if(mat.shapes.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); } } @@ -603,7 +604,7 @@ public class OreDictManager { public static void registerGroups() { ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); ANY_HARDPLASTIC.addPrefix(INGOT, true); - ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(PLATEWELDED, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); ANY_TAR.addPrefix(ANY, false); } @@ -651,6 +652,7 @@ public class OreDictManager { public String crystal() { return CRYSTAL + mats[0]; } public String plate() { return PLATE + mats[0]; } public String plateCast() { return PLATECAST + mats[0]; } + public String plateWelded() { return PLATEWELDED + mats[0]; } public String heavyComp() { return HEAVY_COMPONENT + mats[0]; } public String billet() { return BILLET + mats[0]; } public String block() { return BLOCK + mats[0]; } @@ -892,19 +894,21 @@ public class OreDictManager { return this; } - public String any() { return ANY + groupName; } - public String nugget() { return NUGGET + groupName; } - public String tiny() { return TINY + groupName; } - public String ingot() { return INGOT + groupName; } - public String dustTiny() { return DUSTTINY + groupName; } - public String dust() { return DUST + groupName; } - public String gem() { return GEM + groupName; } - public String crystal() { return CRYSTAL + groupName; } - public String plate() { return PLATE + groupName; } - public String plateCast() { return PLATECAST + groupName; } - public String billet() { return BILLET + groupName; } - public String block() { return BLOCK + groupName; } - public String ore() { return ORE + groupName; } + public String any() { return ANY + groupName; } + public String nugget() { return NUGGET + groupName; } + public String tiny() { return TINY + groupName; } + public String ingot() { return INGOT + groupName; } + public String dustTiny() { return DUSTTINY + groupName; } + public String dust() { return DUST + groupName; } + public String gem() { return GEM + groupName; } + public String crystal() { return CRYSTAL + groupName; } + public String plate() { return PLATE + groupName; } + public String plateCast() { return PLATECAST + groupName; } + public String plateWelded() { return PLATEWELDED + groupName; } + public String heavyComp() { return HEAVY_COMPONENT + groupName; } + public String billet() { return BILLET + groupName; } + public String block() { return BLOCK + groupName; } + public String ore() { return ORE + groupName; } } private static void addReRegistration(String original, String additional) { diff --git a/src/main/java/com/hbm/inventory/OreNames.java b/src/main/java/com/hbm/inventory/OreNames.java index 7c2e3a947..9f4efc4e1 100644 --- a/src/main/java/com/hbm/inventory/OreNames.java +++ b/src/main/java/com/hbm/inventory/OreNames.java @@ -15,6 +15,7 @@ public class OreNames { public static final String CRYSTAL = "crystal"; public static final String PLATE = "plate"; public static final String PLATECAST = "plateTriple"; //cast plates are solid plates made from 3 ingots, turns out that's literally just a GT triple plate + public static final String PLATEWELDED = "plateSextuple"; public static final String BILLET = "billet"; public static final String BLOCK = "block"; public static final String ORE = "ore"; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java new file mode 100644 index 000000000..9c5d516b8 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcWelder.java @@ -0,0 +1,86 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotUpgrade; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.tileentity.machine.TileEntityMachineArcWelder; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineArcWelder extends Container { + + private TileEntityMachineArcWelder welder; + + public ContainerMachineArcWelder(InventoryPlayer playerInv, TileEntityMachineArcWelder tile) { + welder = tile; + + //Inputs + this.addSlotToContainer(new Slot(tile, 0, 17, 36)); + this.addSlotToContainer(new Slot(tile, 1, 35, 36)); + this.addSlotToContainer(new Slot(tile, 2, 53, 36)); + //Output + this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 3, 107, 36)); + //Battery + this.addSlotToContainer(new Slot(tile, 4, 152, 72)); + //Fluid ID + this.addSlotToContainer(new Slot(tile, 5, 17, 63)); + //Upgrades + this.addSlotToContainer(new SlotUpgrade(tile, 6, 89, 63)); + this.addSlotToContainer(new SlotUpgrade(tile, 7, 107, 63)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return welder.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(index); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(index <= 3) { + if(!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(var5, 4, 5, false)) return null; + } else if(var3.getItem() instanceof ItemMachineUpgrade ) { + if(!this.mergeItemStack(var5, 6, 8, false)) return null; + } else { + if(!this.mergeItemStack(var5, 0, 3, false)) return null; + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index d3c787fd1..4294759bb 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -200,8 +200,11 @@ public class FluidTank { * @param width * @param height */ - //TODO: add a directional parameter to allow tanks to grow horizontally public void renderTank(int x, int y, double z, int width, int height) { + renderTank(x, y, z, width, height, 0); + } + + public void renderTank(int x, int y, double z, int width, int height, int orientation) { GL11.glEnable(GL11.GL_BLEND); @@ -218,15 +221,32 @@ public class FluidTank { int i = (fluid * height) / maxFluid; double minX = x; - double maxX = x + width; - double minY = y + (height - i); - double maxY = y + height; + double maxX = x; + double minY = y; + double maxY = y; double minV = 1D - i / 16D; double maxV = 1D; double minU = 0D; double maxU = width / 16D; + if(orientation == 0) { + maxX += width; + minY += height - i; + maxY += height; + } + + if(orientation == 1) { + i = (fluid * width) / maxFluid; + maxX += i; + maxY += height; + + minV = 0; + maxV = height / 16D; + minU = 0D; + maxU = width / 16D; + } + Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); tessellator.addVertexWithUV(minX, maxY, z, minU, maxV); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java new file mode 100644 index 000000000..1e55234b2 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java @@ -0,0 +1,60 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineArcWelder; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineArcWelder; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineArcWelder extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_arc_welder.png"); + private TileEntityMachineArcWelder welder; + + public GUIMachineArcWelder(InventoryPlayer playerInv, TileEntityMachineArcWelder tile) { + super(new ContainerMachineArcWelder(playerInv, tile)); + + this.welder = tile; + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + welder.tank.renderTankInfo(this, x, y, guiLeft + 35, guiTop + 63, 34, 16); + this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, welder.power, welder.maxPower); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.welder.hasCustomInventoryName() ? this.welder.getInventoryName() : I18n.format(this.welder.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 18, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = (int) (welder.power * 52 / welder.maxPower); + drawTexturedModalRect(guiLeft + 152, guiTop + 70 - p, 176, 52 - p, 16, p); + + int i = welder.progress * 33 / welder.processTime; + drawTexturedModalRect(guiLeft + 72, guiTop + 37, 192, 0, i, 14); + + if(welder.power >= welder.consumption) { + drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 52, 9, 12); + } + + welder.tank.renderTank(guiLeft + 35, guiTop + 79, this.zLevel, 34, 16, 1); + } +} diff --git a/src/main/java/com/hbm/inventory/material/MaterialShapes.java b/src/main/java/com/hbm/inventory/material/MaterialShapes.java index 9b901a520..12a1f9a9d 100644 --- a/src/main/java/com/hbm/inventory/material/MaterialShapes.java +++ b/src/main/java/com/hbm/inventory/material/MaterialShapes.java @@ -20,6 +20,7 @@ public class MaterialShapes { public static final MaterialShapes DUST = new MaterialShapes(INGOT.quantity, "dust"); public static final MaterialShapes PLATE = new MaterialShapes(INGOT.quantity, "plate"); public static final MaterialShapes CASTPLATE = new MaterialShapes(INGOT.quantity * 3, "plateTriple"); + public static final MaterialShapes WELDEDPLATE = new MaterialShapes(INGOT.quantity * 6, "plateSextuple"); public static final MaterialShapes QUART = new MaterialShapes(162); public static final MaterialShapes BLOCK = new MaterialShapes(INGOT.quantity * 9, "block"); public static final MaterialShapes HEAVY_COMPONENT = new MaterialShapes(CASTPLATE.quantity * 256, "componentHeavy"); diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index e312ff256..74949b37f 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -54,7 +54,7 @@ public class Mats { public static final NTMMaterial MAT_PETCOKE = make( 1411, PETCOKE) .setConversion(MAT_CARBON, 4, 3); public static final NTMMaterial MAT_LIGCOKE = make( 1412, LIGCOKE) .setConversion(MAT_CARBON, 4, 3); public static final NTMMaterial MAT_GRAPHITE = make( 1420, GRAPHITE) .setConversion(MAT_CARBON, 1, 1); - public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setShapes(CASTPLATE); + public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setShapes(CASTPLATE, WELDEDPLATE); public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(CASTPLATE); public static final NTMMaterial MAT_REDSTONE = makeSmeltable(_VS + 01, REDSTONE, 0xE3260C, 0x700E06, 0xFF1000); public static final NTMMaterial MAT_OBSIDIAN = makeSmeltable(_VS + 02, df("Obsidian"), 0x3D234D); @@ -94,9 +94,9 @@ public class Mats { public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setShapes(NUGGET, BILLET, INGOT, BLOCK); //Base metals - public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); @@ -106,13 +106,13 @@ public class Mats { public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setShapes(NUGGET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK); public static final NTMMaterial MAT_LITHIUM = makeSmeltable(300, LI, 0xFFFFFF, 0x818181, 0xD6D6D6).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST); - public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE); + public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE, WELDEDPLATE); //Alloys - public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(INGOT, DUST, BLOCK); @@ -120,10 +120,10 @@ public class Mats { public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, HEAVY_COMPONENT); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, HEAVY_COMPONENT); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK); public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST); public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK); public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT); diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java new file mode 100644 index 000000000..8591f971c --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -0,0 +1,200 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import static com.hbm.inventory.OreDictManager.*; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; + +import net.minecraft.item.ItemStack; + +public class ArcWelderRecipes extends SerializableRecipe { + + public static List recipes = new ArrayList(); + + @Override + public void registerDefaults() { + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor), 100, 200L, + new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor), 100, 400L, + new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_copper), 100, 1_000L, new FluidStack(Fluids.GAS, 250), + new ComparableStack(ModItems.circuit_aluminium, 1), new OreDictStack(NETHERQUARTZ.dust()), new ComparableStack(ModItems.wire_copper, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_red_copper), 100, 2_500L, new FluidStack(Fluids.PETROLEUM, 250), + new ComparableStack(ModItems.circuit_copper, 1), new OreDictStack(GOLD.dust()), new ComparableStack(ModItems.wire_red_copper, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_gold), 100, 10_000L, new FluidStack(Fluids.UNSATURATEDS, 250), + new ComparableStack(ModItems.circuit_red_copper, 1), new OreDictStack(ANY_PLASTIC.ingot()), new ComparableStack(ModItems.wire_gold, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_schrabidium), 100, 50_000L, new FluidStack(Fluids.SOURGAS, 250), + new ComparableStack(ModItems.circuit_gold, 1), new OreDictStack(DESH.ingot()), new ComparableStack(ModItems.wire_schrabidium, 8))); + + //earlygame welded parts + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_IRON.id), 100, 100L, + new OreDictStack(IRON.plateCast(), 2))); + //high-demand mid-game parts + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_STEEL.id), 100, 500L, + new OreDictStack(STEEL.plateCast(), 2))); + //mid-game, single combustion engine running on LPG + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TITANIUM.id), 600, 50_000L, + new OreDictStack(TI.plateCast(), 2))); + //mid-game PWR + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_ZIRCONIUM.id), 600, 10_000L, + new OreDictStack(ZR.plateCast(), 2))); + //late-game fusion + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TCALLOY.id), 1_200, 1_000_000L, new FluidStack(Fluids.OXYGEN, 1_000), + new OreDictStack(TCALLOY.plateCast(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_CDALLOY.id), 1_200, 1_000_000L, new FluidStack(Fluids.OXYGEN, 1_000), + new OreDictStack(CDALLOY.plateCast(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TUNGSTEN.id), 1_200, 250_000L, new FluidStack(Fluids.OXYGEN, 1_000), + new OreDictStack(W.plateCast(), 2))); + //pre-DFC + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_OSMIRIDIUM.id), 6_000, 20_000_000L, new FluidStack(Fluids.REFORMGAS, 16_000), + new OreDictStack(OSMIRIDIUM.plateCast(), 2))); + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(ArcWelderRecipe recipe : ArcWelderRecipes.recipes) { + + int size = recipe.ingredients.length + (recipe.fluid != null ? 1 : 0); + Object[] array = new Object[size]; + + for(int i = 0; i < recipe.ingredients.length; i++) { + array[i] = recipe.ingredients[i]; + } + + if(recipe.fluid != null) array[size - 1] = ItemFluidIcon.make(recipe.fluid); + + recipes.put(array, recipe.output); + } + + return recipes; + } + + public static ArcWelderRecipe getRecipe(ItemStack... inputs) { + + outer: + for(ArcWelderRecipe recipe : recipes) { + + List recipeList = new ArrayList(); + for(AStack ingredient : recipe.ingredients) recipeList.add(ingredient); + + for(int i = 0; i < inputs.length; i++) { + + ItemStack inputStack = inputs[i]; + + if(inputStack != null) { + + boolean hasMatch = false; + Iterator iterator = recipeList.iterator(); + + while(iterator.hasNext()) { + AStack recipeStack = iterator.next(); + + if(recipeStack.matchesRecipe(inputStack, true) && inputStack.stackSize >= recipeStack.stacksize) { + hasMatch = true; + recipeList.remove(recipeStack); + break; + } + } + + if(!hasMatch) { + continue outer; + } + } + } + + if(recipeList.isEmpty()) return recipe; + } + + return null; + } + + @Override + public String getFileName() { + return "hbmArcWelder.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + AStack[] inputs = this.readAStackArray(obj.get("inputs").getAsJsonArray()); + FluidStack fluid = obj.has("fluid") ? this.readFluidStack(obj.get("fluid").getAsJsonArray()) : null; + ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray()); + int duration = obj.get("duration").getAsInt(); + long consumption = obj.get("consumption").getAsLong(); + + recipes.add(new ArcWelderRecipe(output, duration, consumption, fluid, inputs)); + } + + @Override + public void writeRecipe(Object obj, JsonWriter writer) throws IOException { + ArcWelderRecipe recipe = (ArcWelderRecipe) obj; + + writer.name("inputs").beginArray(); + for(AStack aStack : recipe.ingredients) { + this.writeAStack(aStack, writer); + } + writer.endArray(); + + if(recipe.fluid != null) { + writer.name("fluid"); + this.writeFluidStack(recipe.fluid, writer); + } + + this.writeItemStack(recipe.output, writer); + + writer.name("duration").value(recipe.duration); + writer.name("consumption").value(recipe.consumption); + } + + public static class ArcWelderRecipe { + + public AStack[] ingredients; + public FluidStack fluid; + public ItemStack output; + public int duration; + public long consumption; + + public ArcWelderRecipe(ItemStack output, int duration, long consumption, FluidStack fluid, AStack... ingredients) { + this.ingredients = ingredients; + this.fluid = fluid; + this.output = output; + this.duration = duration; + this.consumption = consumption; + } + + public ArcWelderRecipe(ItemStack output, int duration, long consumption, AStack... ingredients) { + this(output, duration, consumption, null, ingredients); + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index d136042b1..ae318932e 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -274,38 +274,37 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit_copper, 1), }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.coil_tungsten, 4), new ComparableStack(ModItems.circuit_red_copper, 1) }, 300); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate528(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(STEEL.ingot(), 6), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.coil_copper, 4), }, 100); + makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(IRON.plateWelded(), 1), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.coil_copper, 4), }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_selenium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 6), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_small_steel, 9), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.coil_copper, 4), },250); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_grey, 1), new AStack[] {new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(STEEL.plate528(), 4), new ComparableStack(ModItems.wire_red_copper, 4), new OreDictStack(ANY_PLASTIC.ingot(), 3), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_battery, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12), new OreDictStack(MINGRADE.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_battery, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 1), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12), new OreDictStack(MINGRADE.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },200); makeRecipe(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new AStack[] {new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(CO.dust(), 12), new OreDictStack(LI.dust(), 12), new OreDictStack(ALLOY.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },400); makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_battery, 1), new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12), new OreDictStack(SA326.ingot(), 2), new ComparableStack(ModItems.wire_schrabidium, 4), },800); makeRecipe(new ComparableStack(ModBlocks.machine_dineutronium_battery, 1), new AStack[] {new OreDictStack(DNT.ingot(), 24), new ComparableStack(ModItems.powder_spark_mix, 12), new ComparableStack(ModItems.battery_spark_cell_1000, 1), new OreDictStack(CMB.ingot(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 8), },1600); - makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_red_copper, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2), new ComparableStack(ModBlocks.red_wire_coated, 1), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2) },200); makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 3), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.wire_red_copper, 6), },250); - makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.block(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(STEEL.plate(), 16), new OreDictStack(AL.plate(), 6), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_red_copper, 8), },400); + makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2) }, 400); makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plate(), 24) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); - makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plate528(), 16) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); + makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 4) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); + makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit_copper, 1) }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); + makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.hull_big_steel, 4), new OreDictStack(ANY_TAR.any(), 4), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); - makeRecipe(new ComparableStack(ModBlocks.machine_drill, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 6), new OreDictStack(STEEL.ingot(), 4), new ComparableStack(ModItems.wire_red_copper, 4), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.motor, 1), new OreDictStack(DURA.ingot(), 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new ComparableStack(ModItems.drill_titanium, 1), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 3), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); + makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), !exp ? new OreDictStack(STEEL.plate528(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), !exp ? new OreDictStack(DURA.ingot(), 4) : new OreDictStack(DESH.heavyComp(), 1), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {!exp ? new ComparableStack(ModItems.hull_big_steel, 1) : new OreDictStack(STEEL.heavyComp(), 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack(MINGRADE.ingot(), 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {!exp ? new ComparableStack(ModItems.hull_big_steel, 4) : new OreDictStack(STEEL.heavyComp(), 2), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600); makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate528(), 12), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300); - makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), !exp ? new OreDictStack(TI.ingot(), 24) : new OreDictStack(TI.heavyComp(), 2), !exp ? new OreDictStack(ALLOY.plate(), 18) : new OreDictStack(ALLOY.heavyComp(), 1), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); + makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), !exp ? new OreDictStack(TI.ingot(), 24) : new OreDictStack(TI.heavyComp(), 2), !exp ? new OreDictStack(ALLOY.plate(), 18) : new OreDictStack(ALLOY.heavyComp(), 1), new OreDictStack(STEEL.plateWelded(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new ComparableStack(ModItems.coil_advanced_alloy, 5), }, 100); makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.wire_advanced_alloy, 24), },200); makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250); - makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate528(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.magnetron, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), },150); + makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 1), new AStack[] {new OreDictStack(W.plateWelded(), 1), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.magnetron, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200); makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200); - makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateCast()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plate(), 9), }, 100); + makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2), }, 100); makeRecipe(new ComparableStack(ModBlocks.fwatz_hatch, 1), new AStack[] {new OreDictStack(W.ingot(), 6), new OreDictStack(CMB.plate(), 4), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_conductor, 1), new AStack[] {new OreDictStack(CMB.plate(), 2), new ComparableStack(ModItems.coil_magnetized_tungsten, 5), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_computer, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 16), new OreDictStack(DIAMOND.dust(), 6), new OreDictStack(MAGTUNG.dust(), 6), new OreDictStack(DESH.dust(), 4), },300); @@ -441,7 +440,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_fensu, 1), new AStack[] { new ComparableStack(ModItems.ingot_electronium, 32), new ComparableStack(ModBlocks.machine_dineutronium_battery, 16), - !exp ? new OreDictStack(STEEL.block(), 32) : new OreDictStack(STEEL.heavyComp(), 64), + !exp ? new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 64) : new OreDictStack(ANY_RESISTANTALLOY.heavyComp(), 64), new OreDictStack(DURA.block(), 16), new OreDictStack(STAR.block(), 64), new ComparableStack(ModBlocks.machine_transformer_dnt, 8), @@ -449,11 +448,11 @@ public class AssemblerRecipes { new ComparableStack(ModItems.powder_magic, 64), new ComparableStack(ModItems.plate_dineutronium, 24), new ComparableStack(ModItems.ingot_u238m2), - new OreDictStack(FIBER.ingot(), 128) + new ComparableStack(ModItems.ingot_cft, 128) }, 1200); makeRecipe(new ComparableStack(ModBlocks.struct_iter_core, 1), new AStack[] { - !exp ? new OreDictStack(STEEL.ingot(), 6) : new OreDictStack(STEEL.heavyComp(), 4), - !exp ? new OreDictStack(W.ingot(), 6) : new OreDictStack(W.heavyComp(), 1), + !exp ? new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 6) : new OreDictStack(ANY_RESISTANTALLOY.heavyComp(), 2), + !exp ? new OreDictStack(W.plateWelded(), 6) : new OreDictStack(W.heavyComp(), 1), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), @@ -566,7 +565,7 @@ public class AssemblerRecipes { }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_chungus, 1), new AStack[] { new ComparableStack(ModItems.hull_big_steel, 6), - !exp ? new OreDictStack(STEEL.plate528(), 32) : new OreDictStack(STEEL.heavyComp(), 3), + !exp ? new OreDictStack(STEEL.plateWelded(), 16) : new OreDictStack(STEEL.heavyComp(), 3), !exp ? new OreDictStack(TI.plate528(), 12) : new OreDictStack(TI.heavyComp(), 1), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModItems.turbine_tungsten, 5), @@ -578,8 +577,8 @@ public class AssemblerRecipes { }, 600); makeRecipe(new ComparableStack(ModBlocks.machine_condenser_powered, 1), new AStack[] { - !exp ? new OreDictStack(STEEL.plateCast(), 16) : new OreDictStack(STEEL.heavyComp(), 3), - new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), + !exp ? new OreDictStack(STEEL.plateWelded(), 8) : new OreDictStack(STEEL.heavyComp(), 3), + new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 4), !exp ? new OreDictStack(CU.plate528(), 16) : new OreDictStack(CU.heavyComp(), 3), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.pipes_steel, 4), diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 18c3f31e9..281d884e3 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -364,6 +364,14 @@ public class AnvilRecipes { new ComparableStack(ModItems.plate_polymer, 8) }, new AnvilOutput(new ItemStack(ModBlocks.machine_boiler))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(STEEL.plateCast(), 4), + new OreDictStack(W.ingot(), 8), + new ComparableStack(ModBlocks.machine_transformer, 1), + new ComparableStack(ModItems.arc_electrode, 2) + }, new AnvilOutput(new ItemStack(ModBlocks.machine_arc_welder))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(STEEL.plateCast(), 8), diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index cf6ed2490..8149dfaba 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -64,6 +64,7 @@ public abstract class SerializableRecipe { recipeHandlers.add(new CompressorRecipes()); recipeHandlers.add(new ElectrolyserFluidRecipes()); recipeHandlers.add(new ElectrolyserMetalRecipes()); + recipeHandlers.add(new ArcWelderRecipes()); recipeHandlers.add(new MatDistribution()); recipeHandlers.add(new CustomMachineRecipes()); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 14e3d76f4..bf75c0f59 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -778,6 +778,7 @@ public class ModItems { public static Item mold; public static Item scraps; public static Item plate_cast; + public static Item plate_welded; public static Item heavy_component; public static Item part_lithium; @@ -3259,6 +3260,7 @@ public class ModItems { mold = new ItemMold().setUnlocalizedName("mold").setCreativeTab(MainRegistry.controlTab); scraps = new ItemScraps().aot(Mats.MAT_BISMUTH, "scraps_bismuth").setUnlocalizedName("scraps").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scraps"); plate_cast = new ItemAutogen(MaterialShapes.CASTPLATE).aot(Mats.MAT_BISMUTH, "plate_cast_bismuth").setUnlocalizedName("plate_cast").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_cast"); + plate_welded = new ItemAutogen(MaterialShapes.WELDEDPLATE).setUnlocalizedName("plate_welded").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_welded"); heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":heavy_component"); part_lithium = new Item().setUnlocalizedName("part_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_lithium"); @@ -3274,7 +3276,6 @@ public class ModItems { laser_crystal_digamma = new ItemFELCrystal(EnumWavelengths.DRX).setUnlocalizedName("laser_crystal_digamma").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":laser_crystal_digamma"); thermo_element = new Item().setUnlocalizedName("thermo_element").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":thermo_element"); - //limiter = new Item().setUnlocalizedName("limiter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":limiter"); catalytic_converter = new Item().setUnlocalizedName("catalytic_converter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":catalytic_converter"); antiknock = new Item().setUnlocalizedName("antiknock").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":antiknock"); @@ -5995,6 +5996,7 @@ public class ModItems { //Heavy/Cast Plate GameRegistry.registerItem(plate_cast, plate_cast.getUnlocalizedName()); + GameRegistry.registerItem(plate_welded, plate_welded.getUnlocalizedName()); GameRegistry.registerItem(heavy_component, heavy_component.getUnlocalizedName()); //Boards diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index b832541ce..96fc5134f 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -61,6 +61,7 @@ import net.minecraft.world.biome.BiomeGenForest; import net.minecraft.world.biome.BiomeGenJungle; import net.minecraft.world.biome.BiomeGenRiver; import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.gen.ChunkProviderFlat; import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.common.IWorldGenerator; @@ -221,8 +222,15 @@ public class HbmWorldGen implements IWorldGenerator { (new WorldGenMinable(ModBlocks.ore_australium, 50)).generate(world, rand, randPosX, randPosY, randPosZ); } } + + boolean enableDungeons = true; + + if(world.getChunkProvider() instanceof ChunkProviderFlat) { + ChunkProviderFlat provider = (ChunkProviderFlat) world.getChunkProvider(); + enableDungeons = provider.hasDungeons; + } - if(GeneralConfig.enableDungeons && world.provider.isSurfaceWorld()) { + if(GeneralConfig.enableDungeons && world.provider.isSurfaceWorld() && enableDungeons) { if(MobConfig.enableHives && rand.nextInt(MobConfig.hiveSpawn) == 0) { int x = i + rand.nextInt(16) + 8; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index da10a8299..1db22f6d1 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4740)"; + public static final String VERSION = "1.0.27 BETA (4746)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 8b4ff3564..7f4a5edad 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1852,6 +1852,23 @@ public class ClientProxy extends ServerProxy { Minecraft.getMinecraft().effectRenderer.addEffect(text); } + if("debugdrone".equals(type)) { + Item held = player.getHeldItem() == null ? null : player.getHeldItem().getItem(); + + if(held == ModItems.drone || + held == Item.getItemFromBlock(ModBlocks.drone_crate_provider) || + held == Item.getItemFromBlock(ModBlocks.drone_crate_requester) || + held == Item.getItemFromBlock(ModBlocks.drone_dock) || + held == Item.getItemFromBlock(ModBlocks.drone_waypoint_request)) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + int color = data.getInteger("color"); + ParticleDebugLine text = new ParticleDebugLine(world, x, y, z, mX, mY, mZ, color); + Minecraft.getMinecraft().effectRenderer.addEffect(text); + } + } + if("network".equals(type)) { ParticleDebug debug = null; double mX = data.getDouble("mX"); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 06b7eef97..d0815eb79 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -790,10 +790,10 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.ams_catalyst_schrabidium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_dagaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, SA326.dust(), SA326.dust(), SA326.dust(), SA326.dust() }); addShapelessAuto(new ItemStack(ModItems.ams_catalyst_dineutronium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_hagalaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, DNT.dust(), DNT.dust(), DNT.dust(), DNT.dust() }); addRecipeAuto(new ItemStack(ModBlocks.dfc_core, 1), new Object[] { "DLD", "LML", "DLD", 'D', ModItems.ingot_bismuth, 'L', DNT.block(), 'M', KEY_CIRCUIT_BISMUTH }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModBlocks.block_dineutronium, 'L', ModItems.hull_small_steel }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModBlocks.block_dineutronium, 'L', ModItems.hull_small_steel }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateWelded(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', AL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { "IPI", "I I", "IPI", 'I', IRON.plate(), 'P', IRON.ingot() }); addShapelessAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { ModBlocks.barrel_corroded, ANY_TAR.any() }); @@ -882,7 +882,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.rbmk_steam_outlet, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', CU.plate(), 'B', ModItems.tank_steel }); //addRecipeAuto(new ItemStack(ModBlocks.rbmk_heatex, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.ingot(), 'C', CU.plate(), 'B', ModItems.pipes_steel }); - addRecipeAuto(new ItemStack(ModBlocks.pwr_fuel, 4), new Object[] { "LZL", "LZL", "LZL", 'L', PB.plate528(), 'Z', ZR.plateCast() }); + addRecipeAuto(new ItemStack(ModBlocks.pwr_fuel, 4), new Object[] { "LZL", "L L", "LZL", 'L', PB.plate528(), 'Z', ZR.plateWelded() }); addRecipeAuto(new ItemStack(ModBlocks.pwr_control, 4), new Object[] { "SBS", "MBM", "SBS", 'S', STEEL.plate528(), 'B', B.ingot(), 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.pwr_channel, 4), new Object[] { "CPC", "BPB", "CPC", 'C', CU.ingot(), 'P', ModBlocks.deco_pipe_quad, 'B', ANY_PLASTIC.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.pwr_heatex, 4), new Object[] { "CSC", "SMS", "CSC", 'C', CU.plateCast(), 'S', STEEL.plate528(), 'M', ModItems.motor }); @@ -997,9 +997,9 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { "PPP", "HCH", " B ", 'P', ANY_PLASTIC.ingot(), 'H', ModItems.hull_small_steel, 'C', ModItems.circuit_copper, 'B', ModBlocks.crate_steel }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); - addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', ModItems.plate_desh, 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', TI.plateWelded(), 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) }); - addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', ModItems.plate_desh, 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) }); + addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()), new Object[] { " P ", "KDK", " P ", 'P', TI.plateWelded(), 'K', Fluids.KEROSENE.getDict(1_000), 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) }); addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()) }); addShapelessAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()), new Object[] { new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS_CHUNKLOADING.ordinal()) }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.REQUEST.ordinal()), new Object[] { "E", "D", 'E', ModItems.circuit_red_copper, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_EXPRESS.ordinal()) }); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 8f3f93532..dc6b9cc4a 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -76,6 +76,7 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new ElectrolyserFluidHandler()); registerHandler(new ElectrolyserMetalHandler()); registerHandler(new AshpitHandler()); + registerHandler(new ArcWelderHandler()); for(MachineConfiguration conf : CustomMachineConfigJSON.niceList) registerHandlerBypass(new CustomMachineHandler(conf)); diff --git a/src/main/java/com/hbm/particle/ParticleHadron.java b/src/main/java/com/hbm/particle/ParticleHadron.java index 923ca8b58..46b5e3d7c 100644 --- a/src/main/java/com/hbm/particle/ParticleHadron.java +++ b/src/main/java/com/hbm/particle/ParticleHadron.java @@ -6,10 +6,12 @@ import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -50,11 +52,16 @@ public class ParticleHadron extends EntityFX { float scale = (this.particleAge + interp) * 0.15F; tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, this.particleAlpha); + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp; + double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double)interp; + double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; - float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double)interp - interpPosX); - float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double)interp - interpPosY); - float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double)interp - interpPosZ); - + double pX = this.prevPosX + (this.posX - this.prevPosX) * (double) interp - dX; + double pY = this.prevPosY + (this.posY - this.prevPosY) * (double) interp - dY; + double pZ = this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - dZ; + tess.addVertexWithUV((double)(pX - x * scale - tx * scale), (double)(pY - y * scale), (double)(pZ - z * scale - tz * scale), 1, 1); tess.addVertexWithUV((double)(pX - x * scale + tx * scale), (double)(pY + y * scale), (double)(pZ - z * scale + tz * scale), 1, 0); tess.addVertexWithUV((double)(pX + x * scale + tx * scale), (double)(pY + y * scale), (double)(pZ + z * scale + tz * scale), 0, 0); @@ -63,6 +70,7 @@ public class ParticleHadron extends EntityFX { GL11.glPolygonOffset(0.0F, 0.0F); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_LIGHTING); } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java b/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java index f7b1ef53c..e87c1d7e4 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java +++ b/src/main/java/com/hbm/render/tileentity/RenderArcWelder.java @@ -6,14 +6,21 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.util.RenderDecoItem; +import com.hbm.tileentity.machine.TileEntityMachineArcWelder; +import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.client.IItemRenderer; public class RenderArcWelder extends TileEntitySpecialRenderer implements IItemRendererProvider { - + + private RenderItem itemRenderer = new RenderDecoItem(this); + @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { GL11.glPushMatrix(); @@ -33,12 +40,35 @@ public class RenderArcWelder extends TileEntitySpecialRenderer implements IItemR bindTexture(ResourceManager.arc_welder_tex); ResourceManager.arc_welder.renderAll(); + TileEntityMachineArcWelder welder = (TileEntityMachineArcWelder) tile; + if(welder.display != null) { + GL11.glPushMatrix(); + GL11.glTranslated(0.0625D * 2.5D, 1.125D, 0D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glRotatef(-90, 1F, 0F, 0F); + + if(welder.display != null) { + ItemStack stack = welder.display.copy(); + + EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack); + item.getEntityItem().stackSize = 1; + item.hoverStart = 0.0F; + + RenderItem.renderInFrame = true; + GL11.glScaled(1.5, 1.5, 1.5); + this.itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); } @Override public Item getItemForRenderer() { - return Item.getItemFromBlock(ModBlocks.radio_telex); + return Item.getItemFromBlock(ModBlocks.machine_arc_welder); } @Override @@ -46,10 +76,9 @@ public class RenderArcWelder extends TileEntitySpecialRenderer implements IItemR return new ItemRenderBase( ) { public void renderInventory() { GL11.glTranslated(0, -2, 0); - GL11.glScaled(6, 6, 6); + GL11.glScaled(4, 4, 4); } public void renderCommon() { - GL11.glTranslated(0, 0, -0.5); bindTexture(ResourceManager.arc_welder_tex); ResourceManager.arc_welder.renderAll(); }}; diff --git a/src/main/java/com/hbm/render/util/RenderDecoItem.java b/src/main/java/com/hbm/render/util/RenderDecoItem.java index bfca8e9ff..b7e6d2a70 100644 --- a/src/main/java/com/hbm/render/util/RenderDecoItem.java +++ b/src/main/java/com/hbm/render/util/RenderDecoItem.java @@ -1,6 +1,7 @@ package com.hbm.render.util; import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.ItemStack; @@ -9,7 +10,9 @@ import net.minecraft.item.ItemStack; * @author hbm */ public class RenderDecoItem extends RenderItem { + public RenderDecoItem(TileEntitySpecialRenderer render) { + this.setRenderManager(RenderManager.instance); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java index 0fa67c699..40b8b27e3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java @@ -68,7 +68,7 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser, if(!worldObj.isRemote) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - this.trySubscribe(worldObj, xCoord + dir.offsetX * -5, yCoord + 1, zCoord + dir.offsetZ * -5, dir); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -5, yCoord + 1, zCoord + dir.offsetZ * -5, dir.getOpposite()); this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); if(this.isOn && !(this.slots[1] == null)) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index f2099415d..5373ff76c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -1,20 +1,53 @@ package com.hbm.tileentity.machine; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.container.ContainerMachineArcWelder; +import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMachineArcWelder; +import com.hbm.inventory.recipes.ArcWelderRecipes; +import com.hbm.inventory.recipes.ArcWelderRecipes.ArcWelderRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.lib.Library; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IConditionalInvAccess; +import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidStandardReceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver { +public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider { public long power; - public long maxPower; + public long maxPower = 2_000; + public long consumption; + + public int progress; + public int processTime = 1; public FluidTank tank; + public ItemStack display; public TileEntityMachineArcWelder() { super(8); + this.tank = new FluidTank(Fluids.NONE, 24_000); } @Override @@ -25,6 +58,174 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements @Override public void updateEntity() { + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 4, power, maxPower); + this.tank.setType(5, slots); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tank.getTankType() != Fluids.NONE) this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + ArcWelderRecipe recipe = ArcWelderRecipes.getRecipe(slots[0], slots[1], slots[2]); + long intendedMaxPower; + + UpgradeManager.eval(slots, 6, 7); + int redLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int blueLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + + if(recipe != null) { + this.processTime = recipe.duration - (recipe.duration * redLevel / 6) + (recipe.duration * blueLevel / 3); + this.consumption = recipe.consumption + (recipe.consumption * redLevel) - (recipe.consumption * blueLevel / 6); + intendedMaxPower = recipe.consumption * 20; + + if(canProcess(recipe)) { + this.progress++; + this.power -= this.consumption; + + if(progress >= processTime) { + this.progress = 0; + this.consumeItems(recipe); + + if(slots[3] == null) { + slots[3] = recipe.output.copy(); + } else { + slots[3].stackSize += recipe.output.stackSize; + } + + this.markDirty(); + } + + if(worldObj.getTotalWorldTime() % 2 == 0) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + NBTTagCompound dPart = new NBTTagCompound(); + dPart.setString("type", worldObj.getTotalWorldTime() % 20 == 0 ? "tau" : "hadron"); + dPart.setByte("count", (byte) 5); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(dPart, xCoord + 0.5 - dir.offsetX * 0.5, yCoord + 1.25, zCoord + 0.5 - dir.offsetZ * 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 25)); + } + + } else { + this.progress = 0; + } + + } else { + this.progress = 0; + this.consumption = 100; + intendedMaxPower = 2000; + } + + this.maxPower = Math.max(intendedMaxPower, power); + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setLong("maxPower", maxPower); + data.setLong("consumption", consumption); + data.setInteger("progress", progress); + data.setInteger("processTime", processTime); + if(recipe != null) { + data.setInteger("display", Item.getIdFromItem(recipe.output.getItem())); + data.setInteger("displayMeta", recipe.output.getItemDamage()); + } + this.tank.writeToNBT(data, "t"); + this.networkPack(data, 25); + } + } + + public boolean canProcess(ArcWelderRecipe recipe) { + + if(this.power < recipe.consumption) return false; + + if(recipe.fluid != null) { + if(this.tank.getTankType() != recipe.fluid.type) return false; + if(this.tank.getFill() < recipe.fluid.fill) return false; + } + + if(slots[3] != null) { + if(slots[3].getItem() != recipe.output.getItem()) return false; + if(slots[3].getItemDamage() != recipe.output.getItemDamage()) return false; + if(slots[3].stackSize + recipe.output.stackSize > slots[3].getMaxStackSize()) return false; + } + + return true; + } + + public void consumeItems(ArcWelderRecipe recipe) { + + for(AStack aStack : recipe.ingredients) { + + for(int i = 0; i < 3; i++) { + ItemStack stack = slots[i]; + if(aStack.matchesRecipe(stack, true) && stack.stackSize >= aStack.stacksize) { + this.decrStackSize(i, aStack.stacksize); + break; + } + } + } + + if(recipe.fluid != null) { + this.tank.setFill(tank.getFill() - recipe.fluid.fill); + } + } + + protected DirPos[] getConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir), + new DirPos(xCoord + dir.offsetX + rot.offsetX, yCoord, zCoord + dir.offsetZ + rot.offsetZ, dir), + new DirPos(xCoord + dir.offsetX - rot.offsetX, yCoord, zCoord + dir.offsetZ - rot.offsetZ, dir), + new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot), + new DirPos(xCoord - dir.offsetX + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ + rot.offsetZ * 2, rot), + new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), + new DirPos(xCoord - dir.offsetX - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ - rot.offsetZ * 2, rot.getOpposite()) + }; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + this.consumption = nbt.getLong("consumption"); + this.progress = nbt.getInteger("progress"); + this.processTime = nbt.getInteger("processTime"); + + if(nbt.hasKey("display")) { + this.display = new ItemStack(Item.getItemById(nbt.getInteger("display")), 1, nbt.getInteger("displayMeta")); + } else { + this.display = null; + } + + this.tank.readFromNBT(nbt, "t"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + this.progress = nbt.getInteger("progress"); + this.processTime = nbt.getInteger("processTime"); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setLong("maxPower", maxPower); + nbt.setInteger("progress", progress); + nbt.setInteger("processTime", processTime); + tank.writeToNBT(nbt, "t"); } @Override @@ -51,4 +252,92 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + return slot < 3; + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side) { + return slot == 3; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 1, 3 }; + } + + @Override + public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { + return slot < 3; + } + + @Override + public boolean canInsertItem(int x, int y, int z, int slot, ItemStack stack, int side) { + return slot < 3; + } + + @Override + public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side) { + return slot == 3; + } + + @Override + public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side) { + BlockPos pos = new BlockPos(x, y, z); + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + BlockPos core = new BlockPos(xCoord, yCoord, zCoord); + + //Red + if(pos.equals(core.clone().offset(rot)) || pos.equals(core.clone().offset(rot.getOpposite()).offset(dir.getOpposite()))) + return new int[] { 0, 3 }; + + //Yellow + if(pos.equals(core.clone().offset(dir.getOpposite()))) + return new int[] { 1, 3 }; + + //Green + if(pos.equals(core.clone().offset(rot.getOpposite())) || pos.equals(core.clone().offset(rot).offset(dir.getOpposite()))) + return new int[] { 2, 3 }; + + return new int[] { }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerMachineArcWelder(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineArcWelder(player.inventory, this); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index 63f6ec905..4e386f468 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -209,7 +209,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided if(!worldObj.isRemote) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir.getOpposite()); + this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); heat = RTGUtil.updateRTGs(slots, slot_io); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java index 3e241d394..645374a1e 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java @@ -55,7 +55,7 @@ public abstract class TileEntityRequestNetwork extends TileEntity { // draw debug crap for(PathNode known : knownNodes) { - if(reachableNodes.contains(known)) ParticleUtil.spawnDebugLine(worldObj, + if(reachableNodes.contains(known)) ParticleUtil.spawnDroneLine(worldObj, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, (known.pos.getX() - pos.getX()) / 2D, (known.pos.getY() - pos.getY()) / 2D, (known.pos.getZ() - pos.getZ()) / 2D, reachableNodes.contains(known) ? 0x00ff00 : 0xff0000); diff --git a/src/main/java/com/hbm/util/ParticleUtil.java b/src/main/java/com/hbm/util/ParticleUtil.java index f62efba92..45898c14d 100644 --- a/src/main/java/com/hbm/util/ParticleUtil.java +++ b/src/main/java/com/hbm/util/ParticleUtil.java @@ -28,10 +28,10 @@ public class ParticleUtil { } } - public static void spawnDebugLine(World world, double x, double y, double z, double x0, double y0, double z0, int color) { + public static void spawnDroneLine(World world, double x, double y, double z, double x0, double y0, double z0, int color) { NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "debugline"); + data.setString("type", "debugdrone"); data.setDouble("mX", x0); data.setDouble("mY", y0); data.setDouble("mZ", z0); diff --git a/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java b/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java index 0113b4817..4b2c6a1c8 100644 --- a/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java +++ b/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java @@ -7,7 +7,7 @@ import net.minecraftforge.common.util.ForgeDirection; /** * Adjusted code from MC 1.12 (com.minecraft.util.math.BlockPos) */ -public class BlockPos { +public class BlockPos implements Cloneable { private final int x; private final int y; @@ -92,4 +92,12 @@ public class BlockPos { } } } + + @Override + public BlockPos clone() { + try { + return (BlockPos) super.clone(); + } catch(Exception x) { } + return null; + } } diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index ba62b1a85..158e03857 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -25,3 +25,6 @@ public net.minecraft.client.gui.GuiMainMenu field_73975_c # sp # EntityLivingBase public net.minecraft.entity.EntityLivingBase field_82180_bT # previousEquipment + +# ChunkProviderFlat +public net.minecraft.world.gen.ChunkProviderFlat field_82702_h # hasDungeons diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index be712bbcc..b57571485 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -338,6 +338,7 @@ container.keyForge=Schlossertisch container.launchPad=Raketenabschussrampe container.launchTable=Große Startrampe container.leadBox=Sicherheitsbehälter +container.machineArcWelder=Lichtbogenschweißer container.machineBoiler=Ölwärmer container.machineCMB=CMB-Stahl Hochofen container.machineCoal=Verbrennungsgenerator @@ -2697,6 +2698,7 @@ item.plate_saturnite.name=Saturnitplatte item.plate_schrabidium.name=Schrabidiumplatte item.plate_steel.name=Stahlplatte item.plate_titanium.name=Titanplatte +item.plate_welded.name=Geschweißte %splatte item.polaroid.name=Das Polaroid item.pollution_detector.name=Verschmutzungsdetektor item.powder_actinium.name=Actiniumstaub @@ -4014,6 +4016,7 @@ tile.lox_barrel.name=LOX-Fass tile.machine_amgen.name=Umgebungsstrahlungs-Generator tile.machine_arc_furnace_off.name=Lichtbogenofen tile.machine_arc_furnace_on.name=Lichtbogenofen +tile.machine_arc_welder.name=Lichtbogenschweißer tile.machine_armor_table.name=Rüstungsmodifikationstisch tile.machine_ashpit.name=Aschekasten tile.machine_ashpit.desc=Sammelt Asche von Feuerbüchsen und Heizöfen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 1d001cf5d..8cdae49aa 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -696,6 +696,7 @@ container.keyForge=Locksmith Table container.launchPad=Missile Launch Pad container.launchTable=Large Launch Pad container.leadBox=Containment Box +container.machineArcWelder=Arc Welder container.machineBoiler=Oil Heater container.machineCMB=CMB Steel Furnace container.machineCoal=Combustion Generator @@ -3501,6 +3502,7 @@ item.plate_saturnite.name=Saturnite Plate item.plate_schrabidium.name=Schrabidium Plate item.plate_steel.name=Steel Plate item.plate_titanium.name=Titanium Plate +item.plate_welded.name=Welded %s Plate item.polaroid.name=The Polaroid item.pollution_detector.name=Pollution Detector item.powder_actinium.name=Actinium Powder @@ -4990,6 +4992,7 @@ tile.lox_barrel.name=LOX Barrel tile.machine_amgen.name=Ambience Radiation Generator tile.machine_arc_furnace_off.name=Arc Furnace tile.machine_arc_furnace_on.name=Arc Furnace +tile.machine_arc_welder.name=Arc Welder tile.machine_armor_table.name=Armor Modification Table tile.machine_ashpit.name=Ashpit tile.machine_ashpit.desc=Collects ashes from fireboxes and heating ovens diff --git a/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_front.png b/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_front.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf5cdafa4235c84ad39e67e4db42c2308a25195 GIT binary patch literal 425 zcmV;a0apHrP)@~;@`x-J`m*-U^IQC;q#o@PkV~M6 Tg23(600000NkvXXu0mjfim$k; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_side.png b/src/main/resources/assets/hbm/textures/blocks/cmt_terminal_side.png new file mode 100644 index 0000000000000000000000000000000000000000..adb2fdb8a9232535b1756bb84a3556a3a280ebc4 GIT binary patch literal 448 zcmV;x0YCnUP)bn&iKqRLGt+~wbHqJvq_^b*N8Krm|>*@f@ z^4-h;D8&OjPskZ)%rl61a>|ByGiQnMh0$hgGKAJPIXEym zJ9DjG9AK(_8r{UNotYQZ>Hs30S;PrS@$WG7(THjvQ2@n#NXbLh3*&r0TZtJ*Vf+ig zl=?nmD*z<@n7FwqTTf;kEN5vk Date: Sun, 8 Oct 2023 19:53:38 +0300 Subject: [PATCH 063/207] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 81c9e32a2..a150450c1 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1234,6 +1234,7 @@ hbmfluid.thorium_salt=Ð–Ð¸Ð´ÐºÐ°Ñ Ñ‚Ð¾Ñ€Ð¸ÐµÐ²Ð°Ñ Ñоль hbmfluid.thorium_salt_depleted=ÐžÐ±ÐµÐ´Ð½ÐµÐ½Ð½Ð°Ñ Ð¶Ð¸Ð´ÐºÐ°Ñ Ñ‚Ð¾Ñ€Ð¸ÐµÐ²Ð°Ñ Ñоль hbmfluid.thorium_salt_hot=ГорÑÑ‡Ð°Ñ Ð¶Ð¸Ð´ÐºÐ°Ñ Ñ‚Ð¾Ñ€Ð¸ÐµÐ²Ð°Ñ Ñоль hbmfluid.heavywater_hot=ГорÑÑ‡Ð°Ñ Ñ‚ÑÐ¶Ñ‘Ð»Ð°Ñ Ð²Ð¾Ð´Ð° +hbmfluid.fullerene=РаÑтвор фуллерена hbmmat.actinium227=Ðктиний-227 hbmmat.advancedalloy=Продвинутый Ñплав @@ -1784,6 +1785,8 @@ tile.crate_can.name=Ящик Ñ ÐºÐ¾Ð½Ñервами tile.crate_ammo.name=Ящик из звёздного металла tile.crate_jungle.name=Ящик из Ñнаргита tile.marker_structure.name=Маркер Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð±Ð»Ð¾Ñ‡Ð½Ñ‹Ñ… Ñтруктур +item.structure_custommachine.name=Жезл Ð¾Ð±Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ñтомных машин +tile.custom_machine_anchor.name=Якорь Ð´Ð»Ñ ÐºÐ°Ñтомных машин tile.struct_launcher.name=Блок-компонент пуÑковой площадки tile.struct_scaffold.name=ПодмоÑток пуÑковой площадки @@ -2116,7 +2119,7 @@ tile.drone_crate_provider.name=Ящик ÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² tile.drone_crate_requester.name=Ящик запроÑа Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² tile.drone_dock.name=Дрон-ÑÑ‚Ð°Ð½Ñ†Ð¸Ñ tile.drone_waypoint.name=ÐŸÑƒÑ‚ÐµÐ²Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² -tile.drone_waypoint.desc=Waypoint for transport drones$Use a transport drone linker to set the path$Click on each waypoint and crate in sequence to create the path,$then shift-click to clear the saved position$Right-click or shift-click the waypoint to change the waypoint's offset +tile.drone_waypoint.desc=ÐŸÑƒÑ‚ÐµÐ²Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð²$Use a transport drone linker to set the path$Click on each waypoint and crate in sequence to create the path,$then shift-click to clear the saved position$Right-click or shift-click the waypoint to change the waypoint's offset tile.drone_waypoint_request.name=ЛогиÑтичеÑÐºÐ°Ñ Ð¿ÑƒÑ‚ÐµÐ²Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ð´Ð»Ñ Ð´Ñ€Ð¾Ð½Ð¾Ð² item.drone.patrol.name=ТранÑпортный дрон item.drone.patrol_chunkloading.name=ТранÑпортный дрон (Чанклоадер) @@ -2263,6 +2266,8 @@ tile.pump_electric.name=ЭлектричеÑкий наÑÐ¾Ñ Ð´Ð»Ñ Ð³Ñ€ÑƒÐ½Ñ‚ tile.pump_electric.desc=ИÑпользует ÑлектричеÑтво Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ½Ñ‚Ð¾Ð²Ñ‹Ñ… вод$Выкачывает до 10,000мБ/тик$Должно быть размещено ниже Y:70 tile.pump_steam.name=Паровой наÑÐ¾Ñ Ð´Ð»Ñ Ð³Ñ€ÑƒÐ½Ñ‚Ð¾Ð²Ñ‹Ñ… вод tile.pump_steam.desc=ИÑпользует пар Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ½Ñ‚Ð¾Ð²Ñ‹Ñ… вод$Выкачывает до 1000мБ/тик$Должно быть размещено ниже Y:70 +container.machineArcWelder=Дуговой Ñварщик +tile.machine_arc_welder.name=Дуговой Ñварщик tile.cm_block.alloy.name=ÐšÐ¾Ñ€Ð¿ÑƒÑ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹ из продвинутого Ñплава tile.cm_block.desh.name=ÐšÐ¾Ñ€Ð¿ÑƒÑ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹ из деша @@ -2621,6 +2626,8 @@ item.ingot_niobium.name=Ðиобиевый Ñлиток item.ingot_firebrick.name=Шамотный кирпич item.ingot_calcium.name=Кальциевый Ñлиток item.plate_cast.name=Ð›Ð¸Ñ‚Ð°Ñ %s плаÑтина +item.heavy_component.name=ТÑжёлый %s компонент +item.plate_welded.name=Ð¡Ð²Ð°Ñ€ÐµÐ½Ð½Ð°Ñ %s плаÑтина item.ingot_pvc.name=ПВХ item.ingot_pet.name=Металлизированный алюминием бруÑок ПЭТ item.ingot_pc.name=Твердый плаÑтиковый бруÑок @@ -2824,6 +2831,7 @@ item.crystal_trixite.name=КриÑталлизованный трикÑит item.crystal_coal.name=КриÑталлизованный уголь item.crystal_cinnebar.name=КриÑÑ‚Ð°Ð»Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ¸Ð½Ð¾Ð²Ð°Ñ€ÑŒ item.crystal_lapis.name=КриÑтализованный лазурит +item.ingot_cft.name=КриÑталличеÑкий фуллерит item.gem_tantalium.name=ПоликриÑталл тантала item.gem_tantalium.desc='Танталум' item.gem_tantalium.desc.P11=ÐКРТанталий. @@ -2958,6 +2966,7 @@ item.powder_ash.fly.name=Ð›ÐµÑ‚ÑƒÑ‡Ð°Ñ Ð·Ð¾Ð»Ð° item.powder_ash.misc.name=Пепел item.powder_ash.soot.name=ÐœÐµÐ»ÐºÐ°Ñ Ñажа item.powder_ash.wood.name=ДревеÑÐ½Ð°Ñ Ð·Ð¾Ð»Ð° +item.powder_ash.fullerene.name=Фуллерен tile.glass_ash.name=Пепельное Ñтекло tile.fire_digamma.name=ЗатÑÐ¶Ð½Ð°Ñ Ð”Ð¸Ð³Ð°Ð¼Ð¼Ð° tile.balefire.name=Жар-Ð¿Ð»Ð°Ð¼Ñ From 997c4fd75728aec90a524ccf23c2198673bac171 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 8 Oct 2023 19:43:00 +0200 Subject: [PATCH 064/207] shitting bricks --- changelog | 30 ------------------- .../com/hbm/inventory/gui/GUIScreenFluid.java | 2 +- 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/changelog b/changelog index 0cbb2b0e8..e69de29bb 100644 --- a/changelog +++ b/changelog @@ -1,30 +0,0 @@ -## Added -* Crystalline fullerite - * A late-game crafting material that is currenly only used to make the FEnSU - * Made from extracting fullerene from fine soot using high-performance solvent and a SILEX -* Arc welder - * Similar to an assembler, but without templates - * Can combine up to 3 items and one fluid - * Recipes vary in duration and energy consumption, welding together osmiridium plates requires the output of powerful reactors -* Custom fluids - * A config for adding custom fluid types - * Sets basic stats, color and textures - * Fluid tratis can be applied using the already existing fluid trait config - * The fluid trait config has been renamed to prevent name clashes - * Recommended greyscale textures recommended for the custom fluids are `custom_water`, `custom_lava`, `custom_oil` and `custom_toxin` - * 256k tanks do not have a label for custom fluids, but the tank's color will match the fluid's tint -* Custom machine structure positioning anchor - * Allows automatic generation of custom machine block configurations - * Simply replace the controller of your custom machine mockup with the anchor, then link it to a custom machine structure output wand and select the two diagonal points - * The resulting JSON structure will be saved in the config folder -* Welded plates - * Made from welding together two cast plates in an arc welder - * Now used in many progression-relevant machines, meaning that energy demand now more closely matches the energy production of progression-based generators - * Many recipes have been adjusted to now use cast plates or welded plates - -## Changed -* Schrabidium explosions now ignore all blocks at Y:0, not just bedrock. This means that bedrock ores and oil are spared -* Drone waypoint connections only show up if a drone or a logistic block is held - -## Fixed -* Fixed RTG energy connectors being backwards \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java index a43235cce..8d0105f14 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java @@ -169,7 +169,7 @@ public class GUIScreenFluid extends GuiScreen { String subs = this.search.getText().toLowerCase(Locale.US); for(FluidType type : Fluids.getInNiceOrder()) { - String name = type.getLocalizedName(); + String name = type.getLocalizedName().toLowerCase(); if(name.contains(subs) && !type.hasNoID()) { this.searchArray[next] = type; From 2b7ffd6902e7912eb58b8d5c30c462b96216f31b Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 11 Oct 2023 16:51:42 +0200 Subject: [PATCH 065/207] recipe tweaks --- .../inventory/recipes/AssemblerRecipes.java | 8 +- .../com/hbm/items/tool/ItemCMStructure.java | 282 +++++++++--------- .../java/com/hbm/main/CraftingManager.java | 2 +- 3 files changed, 153 insertions(+), 139 deletions(-) diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index ae318932e..87a14154f 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -274,7 +274,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit_copper, 1), }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.coil_tungsten, 4), new ComparableStack(ModItems.circuit_red_copper, 1) }, 300); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate528(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(IRON.plateWelded(), 1), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.coil_copper, 4), }, 100); + makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(STEEL.plateCast(), 1), new ComparableStack(ModItems.coil_copper, 4), }, 60); makeRecipe(new ComparableStack(ModBlocks.machine_selenium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 6), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_small_steel, 9), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.coil_copper, 4), },250); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_grey, 1), new AStack[] {new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(STEEL.plate528(), 4), new ComparableStack(ModItems.wire_red_copper, 4), new OreDictStack(ANY_PLASTIC.ingot(), 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_battery, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 1), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12), new OreDictStack(MINGRADE.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },200); @@ -285,13 +285,13 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 3), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.wire_red_copper, 6), },250); makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2) }, 400); makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 4) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); + makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit_copper, 1) }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.hull_big_steel, 4), new OreDictStack(ANY_TAR.any(), 4), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 3), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); + makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), !exp ? new OreDictStack(STEEL.plate528(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), !exp ? new OreDictStack(DURA.ingot(), 4) : new OreDictStack(DESH.heavyComp(), 1), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {!exp ? new ComparableStack(ModItems.hull_big_steel, 1) : new OreDictStack(STEEL.heavyComp(), 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack(MINGRADE.ingot(), 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); @@ -301,7 +301,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new ComparableStack(ModItems.coil_advanced_alloy, 5), }, 100); makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.wire_advanced_alloy, 24), },200); makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250); - makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 1), new AStack[] {new OreDictStack(W.plateWelded(), 1), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.magnetron, 1) }, 200); + makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 4), new AStack[] {new OreDictStack(W.plateWelded(), 2), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.magnetron, 2) }, 200); makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200); makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200); makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2), }, 100); diff --git a/src/main/java/com/hbm/items/tool/ItemCMStructure.java b/src/main/java/com/hbm/items/tool/ItemCMStructure.java index cb72b7d3c..6bd4cd29c 100644 --- a/src/main/java/com/hbm/items/tool/ItemCMStructure.java +++ b/src/main/java/com/hbm/items/tool/ItemCMStructure.java @@ -1,7 +1,6 @@ package com.hbm.items.tool; import java.io.File; -import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import com.google.gson.stream.JsonWriter; @@ -21,152 +20,167 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.common.util.ForgeDirection; -import java.io.File; -import java.io.FileWriter; import java.util.ArrayList; import java.util.List; -public class ItemCMStructure extends Item implements ILookOverlay { - File file = new File(MainRegistry.configHbmDir, "CMstructureOutput.txt"); - public static BlockPos getAnchor(ItemStack stack) { +public class ItemCMStructure extends Item implements ILookOverlay { + + private static File file = new File(MainRegistry.configHbmDir, "CMstructureOutput.txt"); - if(!stack.hasTagCompound()) { - return null; - } + public static BlockPos getAnchor(ItemStack stack) { - return new BlockPos(stack.stackTagCompound.getInteger("anchorX"), stack.stackTagCompound.getInteger("anchorY"), stack.stackTagCompound.getInteger("anchorZ")); - } - public static void setAnchor(ItemStack stack, int x, int y, int z) { + if(!stack.hasTagCompound()) { + return null; + } - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } + return new BlockPos(stack.stackTagCompound.getInteger("anchorX"), stack.stackTagCompound.getInteger("anchorY"), stack.stackTagCompound.getInteger("anchorZ")); + } - stack.stackTagCompound.setInteger("anchorX", x); - stack.stackTagCompound.setInteger("anchorY", y); - stack.stackTagCompound.setInteger("anchorZ", z); - } - public static void writeToFile(File config,ItemStack stack,World world){ - int anchorX = stack.stackTagCompound.getInteger("anchorX"); - int anchorY = stack.stackTagCompound.getInteger("anchorY"); - int anchorZ = stack.stackTagCompound.getInteger("anchorZ"); - int x1=stack.stackTagCompound.getInteger("x1"); - int y1=stack.stackTagCompound.getInteger("y1"); - int z1=stack.stackTagCompound.getInteger("z1"); - int x2=stack.stackTagCompound.getInteger("x2"); - int y2=stack.stackTagCompound.getInteger("y2"); - int z2=stack.stackTagCompound.getInteger("z2"); - ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(anchorX,anchorY,anchorZ)); - //ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - int z=z1;z1=z text = new ArrayList(); + public static void writeToFile(File config, ItemStack stack, World world) { + int anchorX = stack.stackTagCompound.getInteger("anchorX"); + int anchorY = stack.stackTagCompound.getInteger("anchorY"); + int anchorZ = stack.stackTagCompound.getInteger("anchorZ"); + int x1 = stack.stackTagCompound.getInteger("x1"); + int y1 = stack.stackTagCompound.getInteger("y1"); + int z1 = stack.stackTagCompound.getInteger("z1"); + int x2 = stack.stackTagCompound.getInteger("x2"); + int y2 = stack.stackTagCompound.getInteger("y2"); + int z2 = stack.stackTagCompound.getInteger("z2"); + ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(anchorX, anchorY, anchorZ)); + // ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + int z = z1; + z1 = z < z2 ? z : z2; + z2 = z < z2 ? z2 : z; + int y = y1; + y1 = y < y2 ? y : y2; + y2 = y < y2 ? y2 : y; + int x = x1; + x1 = x < x2 ? x : x2; + x2 = x < x2 ? x2 : x; + if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { + z = x1; + x1 = z1; + z1 = z; + z = x2; + x2 = z2; + z2 = z; + int anchor = anchorX; + anchorX = anchorZ; + anchorZ = anchor; + } + try { + JsonWriter writer = new JsonWriter(new FileWriter(config)); + writer.setIndent(" "); + writer.beginObject(); + writer.name("components").beginArray(); + for(x = x1; x <= x2; x++) { + for(y = y1; y <= y2; y++) { + for(z = z1; z <= z2; z++) { + if(!((x == anchorX && y == anchorY && z == anchorZ) || ((dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) ? world.getBlock(z, y, x) == Blocks.air : world.getBlock(x, y, z) == Blocks.air))) { + writer.beginObject().setIndent(""); + writer.name("block").value("hbm:" + ((dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) ? world.getBlock(z, y, x).getUnlocalizedName() : world.getBlock(x, y, z).getUnlocalizedName())); + writer.name("x").value(x - anchorX); + writer.name("y").value(y - anchorY); + writer.name("z").value((dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) ? anchorZ - z : z - anchorZ); + writer.name("metas").beginArray(); + writer.value(((dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) ? world.getBlockMetadata(z, y, x) : world.getBlockMetadata(x, y, z))); + writer.endArray(); + writer.endObject().setIndent(" "); + } + } + } + } + writer.endArray(); + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } - BlockPos anchor = getAnchor(stack); + } - if(anchor == null) { + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { + Block b = world.getBlock(x, y, z); - text.add(EnumChatFormatting.RED + "No Anchor"); - } else { - int anchorX = stack.stackTagCompound.getInteger("anchorX"); - int anchorY = stack.stackTagCompound.getInteger("anchorY"); - int anchorZ = stack.stackTagCompound.getInteger("anchorZ"); - text.add(EnumChatFormatting.GOLD + "Anchor: " + anchorX + " / " + anchorY + " / " + anchorZ); - if(stack.stackTagCompound.hasKey("x1")){ - int x1=stack.stackTagCompound.getInteger("x1"); - int y1=stack.stackTagCompound.getInteger("y1"); - int z1=stack.stackTagCompound.getInteger("z1"); + if(b == ModBlocks.cm_anchor) { + this.setAnchor(stack, x, y, z); + return true; + } - text.add(EnumChatFormatting.YELLOW + "Position1: " + x1 + " / " + y1 + " / " + z1); - } - if(stack.stackTagCompound.hasKey("x2")) { - int x2=stack.stackTagCompound.getInteger("x2"); - int y2=stack.stackTagCompound.getInteger("y2"); - int z2=stack.stackTagCompound.getInteger("z2"); - text.add(EnumChatFormatting.YELLOW + "Position2: " + x2 + " / " + y2 + " / " + z2); - } - } + if(this.getAnchor(stack) == null) { + return false; + } + if(!stack.stackTagCompound.hasKey("x1")) { + stack.stackTagCompound.setInteger("x1", x); + stack.stackTagCompound.setInteger("y1", y); + stack.stackTagCompound.setInteger("z1", z); + } else if(!stack.stackTagCompound.hasKey("x2")) { + stack.stackTagCompound.setInteger("x2", x); + stack.stackTagCompound.setInteger("y2", y); + stack.stackTagCompound.setInteger("z2", z); + } else { + writeToFile(file, stack, world); + stack.stackTagCompound.removeTag("x1"); + stack.stackTagCompound.removeTag("y1"); + stack.stackTagCompound.removeTag("z1"); + stack.stackTagCompound.removeTag("x2"); + stack.stackTagCompound.removeTag("y2"); + stack.stackTagCompound.removeTag("z2"); + } + return true; + } - ILookOverlay.printGeneric(event, this.getItemStackDisplayName(stack), 0xffff00, 0x404000, text); - } + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + super.addInformation(stack, player, list, ext); + list.add(EnumChatFormatting.YELLOW + "Click Custom Machine Structure Positioning Anchor to"); + list.add(EnumChatFormatting.YELLOW + "Confirm the location of the custom machine core block."); + list.add(EnumChatFormatting.YELLOW + "Output all blocks between Position1 and Position2 with"); + list.add(EnumChatFormatting.YELLOW + "metadata to \"CMstructureOutput.txt\" in hbmConfig."); + } + + @Override + public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { + ItemStack stack = Minecraft.getMinecraft().thePlayer.getHeldItem(); + List text = new ArrayList(); + + BlockPos anchor = getAnchor(stack); + + if(anchor == null) { + + text.add(EnumChatFormatting.RED + "No Anchor"); + } else { + int anchorX = stack.stackTagCompound.getInteger("anchorX"); + int anchorY = stack.stackTagCompound.getInteger("anchorY"); + int anchorZ = stack.stackTagCompound.getInteger("anchorZ"); + text.add(EnumChatFormatting.GOLD + "Anchor: " + anchorX + " / " + anchorY + " / " + anchorZ); + if(stack.stackTagCompound.hasKey("x1")) { + int x1 = stack.stackTagCompound.getInteger("x1"); + int y1 = stack.stackTagCompound.getInteger("y1"); + int z1 = stack.stackTagCompound.getInteger("z1"); + + text.add(EnumChatFormatting.YELLOW + "Position1: " + x1 + " / " + y1 + " / " + z1); + } + if(stack.stackTagCompound.hasKey("x2")) { + int x2 = stack.stackTagCompound.getInteger("x2"); + int y2 = stack.stackTagCompound.getInteger("y2"); + int z2 = stack.stackTagCompound.getInteger("z2"); + text.add(EnumChatFormatting.YELLOW + "Position2: " + x2 + " / " + y2 + " / " + z2); + } + } + + ILookOverlay.printGeneric(event, this.getItemStackDisplayName(stack), 0xffff00, 0x404000, text); + } } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index d0815eb79..624d4ce59 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -318,7 +318,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.anvil_iron, 1), new Object[] { "III", " B ", "III", 'I', IRON.ingot(), 'B', IRON.block() }); addRecipeAuto(new ItemStack(ModBlocks.anvil_lead, 1), new Object[] { "III", " B ", "III", 'I', PB.ingot(), 'B', PB.block() }); addRecipeAuto(new ItemStack(ModBlocks.anvil_murky, 1), new Object[] { "UUU", "UAU", "UUU", 'U', ModItems.undefined, 'A', ModBlocks.anvil_steel }); - addRecipeAuto(new ItemStack(ModBlocks.machine_fraction_tower), new Object[] { "SHS", "SGS", "SHS", 'S', STEEL.plate(), 'H', ModItems.hull_big_steel, 'G', ModBlocks.steel_grate }); + addRecipeAuto(new ItemStack(ModBlocks.machine_fraction_tower), new Object[] { "H", "G", "H", 'H', STEEL.plateWelded(), 'G', ModBlocks.steel_grate }); addRecipeAuto(new ItemStack(ModBlocks.fraction_spacer), new Object[] { "BHB", 'H', ModItems.hull_big_steel, 'B', Blocks.iron_bars }); addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', ModItems.circuit_copper, 'M', ModItems.motor }); From 7e5e2ce1c5e4a4f8dd1c3086b4a1d16f7736527b Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 11 Oct 2023 20:37:23 +0200 Subject: [PATCH 066/207] cyclotron automation yeah --- .../hbm/blocks/machine/MachineCyclotron.java | 6 +- .../machine/TileEntityMachineCyclotron.java | 91 +++++++++++------- .../textures/models/machines/cyclotron.png | Bin 4498 -> 4610 bytes 3 files changed, 59 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachineCyclotron.java b/src/main/java/com/hbm/blocks/machine/MachineCyclotron.java index 285f2f838..6ace99312 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCyclotron.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCyclotron.java @@ -25,7 +25,7 @@ public class MachineCyclotron extends BlockDummyable { return new TileEntityMachineCyclotron(); if(meta >= 6) - return new TileEntityProxyCombo(false, true, true); + return new TileEntityProxyCombo().inventory().power().fluid(); return null; } @@ -93,12 +93,16 @@ public class MachineCyclotron extends BlockDummyable { super.fillSpace(world, x, y, z, dir, o); this.makeExtra(world, x + dir.offsetX * o + 2, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o + 2, y, z + dir.offsetZ * o); this.makeExtra(world, x + dir.offsetX * o + 2, y, z + dir.offsetZ * o - 1); this.makeExtra(world, x + dir.offsetX * o - 2, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o - 2, y, z + dir.offsetZ * o); this.makeExtra(world, x + dir.offsetX * o - 2, y, z + dir.offsetZ * o - 1); this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o + 2); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 2); this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o + 2); this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o - 2); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 2); this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o - 2); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index 0fa7a053f..9d30a9f22 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -1,7 +1,7 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.List; +import java.util.Map.Entry; import com.hbm.config.BombConfig; import com.hbm.entity.effect.EntityBlackHole; @@ -11,6 +11,8 @@ import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionThermo; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerMachineCyclotron; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -22,8 +24,10 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.lib.Library; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IConditionalInvAccess; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; @@ -39,8 +43,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IFluidSource, IFluidAcceptor, IEnergyUser, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IFluidSource, IFluidAcceptor, IEnergyUser, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess { public long power; public static final long maxPower = 100000000; @@ -58,8 +63,6 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public FluidTank coolant; public FluidTank amat; - - public List list = new ArrayList(); public TileEntityMachineCyclotron() { super(16); @@ -408,39 +411,11 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements return 0; } - @Override - public void fillFluidInit(FluidType type) { - - fillFluid(xCoord + 3, yCoord, zCoord + 1, getTact(), type); - fillFluid(xCoord + 3, yCoord, zCoord - 1, getTact(), type); - fillFluid(xCoord - 3, yCoord, zCoord + 1, getTact(), type); - fillFluid(xCoord - 3, yCoord, zCoord - 1, getTact(), type); - - fillFluid(xCoord + 1, yCoord, zCoord + 3, getTact(), type); - fillFluid(xCoord - 1, yCoord, zCoord + 3, getTact(), type); - fillFluid(xCoord + 1, yCoord, zCoord - 3, getTact(), type); - fillFluid(xCoord - 1, yCoord, zCoord - 3, getTact(), type); - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return age >= 0 && age < 10; - } - - @Override - public List getFluidList(FluidType type) { - return list; - } - - @Override - public void clearFluidList(FluidType type) { - list.clear(); - } + @Override public void fillFluidInit(FluidType type) { } + @Override public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { } + @Override public boolean getTact() { return false; } + @Override public List getFluidList(FluidType type) { return null; } + @Override public void clearFluidList(FluidType type) { } @Override public int getMaxFluidFill(FluidType type) { @@ -559,4 +534,46 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineCyclotron(player.inventory, this); } + + @Override + public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { + + if(slot < 3) { + for(Entry, Pair> entry : CyclotronRecipes.recipes.entrySet()) { + if(entry.getKey().getKey().matchesRecipe(stack, true)) return true; + } + } else if(slot < 6) { + + for(Entry, Pair> entry : CyclotronRecipes.recipes.entrySet()) { + if(entry.getKey().getValue().matchesRecipe(stack, true)) return true; + } + } + + return false; + } + + @Override + public boolean canInsertItem(int x, int y, int z, int slot, ItemStack stack, int side) { + return this.isItemValidForSlot(x, y, z, slot, stack); + } + + @Override + public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side) { + return slot >= 6 && slot <= 8; + } + + @Override + public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side) { + + for(int i = 2; i < 6; i++) { + ForgeDirection dir = ForgeDirection.getOrientation(i); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + if(x == xCoord + dir.offsetX * 2 + rot.offsetX && z == zCoord + dir.offsetZ * 2 + rot.offsetZ) return new int[] {0, 3, 6, 7, 8}; + if(x == xCoord + dir.offsetX * 2 && z == zCoord + dir.offsetZ * 2) return new int[] {1, 4, 6, 7, 8}; + if(x == xCoord + dir.offsetX * 2 - rot.offsetX && z == zCoord + dir.offsetZ * 2 - rot.offsetZ) return new int[] {2, 5, 6, 7, 8}; + } + + return new int[] {6, 7, 8}; + } } diff --git a/src/main/resources/assets/hbm/textures/models/machines/cyclotron.png b/src/main/resources/assets/hbm/textures/models/machines/cyclotron.png index b10a0d1db62d5dd2e69f5d677785f3cceb73c7df..6cfaeb00832b88e5a54b050ced51620d432f8e5a 100644 GIT binary patch delta 4600 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 Uu#iVA>;uRTMqLk8p?WX$f0D+iH~;_u delta 4488 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 Date: Thu, 12 Oct 2023 22:23:14 +0200 Subject: [PATCH 067/207] fixes --- .../com/hbm/items/tool/ItemCMStructure.java | 79 +- .../assets/hbm/models/armor/steamsuit.obj | 4358 +++++++++-------- 2 files changed, 2261 insertions(+), 2176 deletions(-) diff --git a/src/main/java/com/hbm/items/tool/ItemCMStructure.java b/src/main/java/com/hbm/items/tool/ItemCMStructure.java index 6bd4cd29c..c7ce6f2d6 100644 --- a/src/main/java/com/hbm/items/tool/ItemCMStructure.java +++ b/src/main/java/com/hbm/items/tool/ItemCMStructure.java @@ -58,46 +58,57 @@ public class ItemCMStructure extends Item implements ILookOverlay { int y2 = stack.stackTagCompound.getInteger("y2"); int z2 = stack.stackTagCompound.getInteger("z2"); ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(anchorX, anchorY, anchorZ)); - // ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - int z = z1; - z1 = z < z2 ? z : z2; - z2 = z < z2 ? z2 : z; - int y = y1; - y1 = y < y2 ? y : y2; - y2 = y < y2 ? y2 : y; - int x = x1; - x1 = x < x2 ? x : x2; - x2 = x < x2 ? x2 : x; - if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { - z = x1; - x1 = z1; - z1 = z; - z = x2; - x2 = z2; - z2 = z; - int anchor = anchorX; - anchorX = anchorZ; - anchorZ = anchor; - } + int minX = Math.min(x1, x2); + int maxX = Math.max(x1, x2); + int minY = Math.min(y1, y2); + int maxY = Math.max(y1, y2); + int minZ = Math.min(z1, z2); + int maxZ = Math.max(z1, z2); + try { JsonWriter writer = new JsonWriter(new FileWriter(config)); writer.setIndent(" "); writer.beginObject(); writer.name("components").beginArray(); - for(x = x1; x <= x2; x++) { - for(y = y1; y <= y2; y++) { - for(z = z1; z <= z2; z++) { - if(!((x == anchorX && y == anchorY && z == anchorZ) || ((dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) ? world.getBlock(z, y, x) == Blocks.air : world.getBlock(x, y, z) == Blocks.air))) { - writer.beginObject().setIndent(""); - writer.name("block").value("hbm:" + ((dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) ? world.getBlock(z, y, x).getUnlocalizedName() : world.getBlock(x, y, z).getUnlocalizedName())); - writer.name("x").value(x - anchorX); - writer.name("y").value(y - anchorY); - writer.name("z").value((dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) ? anchorZ - z : z - anchorZ); - writer.name("metas").beginArray(); - writer.value(((dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) ? world.getBlockMetadata(z, y, x) : world.getBlockMetadata(x, y, z))); - writer.endArray(); - writer.endObject().setIndent(" "); + + for(int x = minX; x <= maxX; x++) { + for(int y = minY; y <= maxY; y++) { + for(int z = minZ; z <= maxZ; z++) { + + int compY = y - anchorY; + int compX = 0; + int compZ = 0; + + if(dir == ForgeDirection.NORTH) { + compX = anchorX - x; + compZ = anchorZ - z; } + if(dir == ForgeDirection.SOUTH) { + compX = x - anchorX; + compZ = z - anchorZ; + } + + if(dir == ForgeDirection.EAST) { + compZ = x - anchorX; + compX = anchorZ - z; + } + if(dir == ForgeDirection.WEST) { + compZ = anchorX - x; + compX = z - anchorZ; + } + + if(x == anchorX && y == anchorY && z == anchorZ) continue; + Block block = world.getBlock(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + if(block == Blocks.air) continue; + + writer.beginObject().setIndent(""); + writer.name("block").value(Block.blockRegistry.getNameForObject(block)); + writer.name("x").value(compX); + writer.name("y").value(compY); + writer.name("z").value(compZ); + writer.name("metas").beginArray().value(meta).endArray(); + writer.endObject().setIndent(" "); } } } diff --git a/src/main/resources/assets/hbm/models/armor/steamsuit.obj b/src/main/resources/assets/hbm/models/armor/steamsuit.obj index 099bfddd6..c36978b0e 100644 --- a/src/main/resources/assets/hbm/models/armor/steamsuit.obj +++ b/src/main/resources/assets/hbm/models/armor/steamsuit.obj @@ -1,5 +1,231 @@ # Blender v2.79 (sub 0) OBJ File: 'steamsuit.blend' # www.blender.org +o RightBoot +v -5.000000 24.500002 3.000000 +v -5.000000 24.500002 -3.000000 +v 1.000000 24.500000 3.000000 +v 1.000000 24.500000 -3.000000 +v -4.000000 24.500002 -4.000000 +v 0.000000 24.500000 -4.000000 +v -0.000001 21.500000 -4.000000 +v -4.000001 21.500002 -4.000000 +v -4.500001 20.500002 2.000000 +v -4.500001 20.500002 -2.000000 +v -5.000001 20.500002 -2.000000 +v -5.000001 20.500002 2.000000 +v -5.000001 20.500002 3.000000 +v -5.000001 20.500002 -3.000000 +v -4.000001 20.500002 3.000000 +v -4.000001 20.500002 -3.000000 +v -4.000001 20.500002 2.500000 +v -4.000001 20.500002 -2.500000 +v -0.000001 20.500000 2.500000 +v -0.000001 20.500000 -2.500000 +v 0.999999 20.500000 -2.000000 +v 0.999999 20.500000 2.000000 +v 0.999999 20.500000 3.000000 +v 0.999999 20.500000 -3.000000 +v 0.499999 20.500000 -2.000000 +v 0.499999 20.500000 2.000000 +v -0.000001 20.500000 3.000000 +v -0.000001 20.500000 -3.000000 +vt -0.000000 0.425926 +vt 0.142857 0.407407 +vt -0.000000 0.407407 +vt 0.250000 0.425926 +vt 0.392857 0.407407 +vt 0.250000 0.407407 +vt 0.500000 0.425926 +vt 0.642857 0.407407 +vt 0.500000 0.407407 +vt 0.750000 0.407407 +vt 0.892857 0.425926 +vt 0.892857 0.407407 +vt 0.642857 0.259259 +vt 0.678571 0.407407 +vt 0.821429 0.407407 +vt 0.428571 0.259259 +vt 0.464286 0.407407 +vt 0.607143 0.407407 +vt 0.178571 0.407407 +vt 0.214286 0.407407 +vt 0.214286 0.259259 +vt 0.250000 0.370370 +vt 0.392857 0.259259 +vt 0.250000 0.259259 +vt 0.392857 0.370370 +vt 0.214286 0.222222 +vt 0.142857 0.425926 +vt 0.392857 0.425926 +vt 0.642857 0.425926 +vt 0.750000 0.425926 +vt 0.857143 0.407407 +vt 0.857143 0.259259 +vt 0.642857 0.407407 +vt 0.428571 0.407407 +vt 0.000000 0.259259 +vt 0.035714 0.407407 +vt -0.000000 0.407407 +vt 0.428571 0.222222 +vt 0.428571 0.000000 +vt 0.214286 -0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -0.7071 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 1.0000 0.0000 +s off +f 26/1/1 21/2/1 22/3/1 +f 20/4/1 16/5/1 28/6/1 +f 10/7/1 12/8/1 11/9/1 +f 15/10/1 19/11/1 27/12/1 +f 1/13/2 15/14/2 27/15/2 +f 2/16/3 11/17/3 12/18/3 +f 21/19/4 24/20/4 4/21/4 +f 7/22/5 5/23/5 6/24/5 +f 7/22/6 28/6/6 16/5/6 +f 4/21/7 7/22/7 6/24/7 +f 8/25/8 2/16/8 5/23/8 +f 4/26/9 6/24/9 5/23/9 +f 26/1/1 25/27/1 21/2/1 +f 20/4/1 18/28/1 16/5/1 +f 10/7/1 9/29/1 12/8/1 +f 15/10/1 17/30/1 19/11/1 +f 23/31/2 3/32/2 27/15/2 +f 3/32/2 1/13/2 27/15/2 +f 1/13/2 13/33/2 15/14/2 +f 13/33/3 1/13/3 12/18/3 +f 1/13/3 2/16/3 12/18/3 +f 2/16/3 14/34/3 11/17/3 +f 4/21/4 3/35/4 22/36/4 +f 3/35/4 23/37/4 22/36/4 +f 22/36/4 21/19/4 4/21/4 +f 7/22/5 8/25/5 5/23/5 +f 14/34/6 8/25/6 16/5/6 +f 8/25/6 7/22/6 16/5/6 +f 7/22/6 24/20/6 28/6/6 +f 4/21/7 24/20/7 7/22/7 +f 8/25/8 14/34/8 2/16/8 +f 5/23/9 2/38/9 4/26/9 +f 2/38/9 1/39/9 4/26/9 +f 1/39/9 3/40/9 4/26/9 +o LeftBoot +v 5.000000 24.499998 3.000000 +v 5.000000 24.499998 -3.000000 +v -1.000000 24.500000 3.000000 +v -1.000000 24.500000 -3.000000 +v 4.000000 24.499998 -4.000000 +v 0.000000 24.500000 -4.000000 +v -0.000001 21.500000 -4.000000 +v 3.999999 21.499998 -4.000000 +v 4.499999 20.499998 2.000000 +v 4.499999 20.499998 -2.000000 +v 4.999999 20.499998 -2.000000 +v 4.999999 20.499998 2.000000 +v 4.999999 20.499998 3.000000 +v 4.999999 20.499998 -3.000000 +v 3.999999 20.499998 3.000000 +v 3.999999 20.499998 -3.000000 +v 3.999999 20.499998 2.500000 +v 3.999999 20.499998 -2.500000 +v -0.000001 20.500000 2.500000 +v -0.000001 20.500000 -2.500000 +v -1.000001 20.500000 -2.000000 +v -1.000001 20.500000 2.000000 +v -1.000001 20.500000 3.000000 +v -1.000001 20.500000 -3.000000 +v -0.500001 20.500000 -2.000000 +v -0.500001 20.500000 2.000000 +v -0.000001 20.500000 3.000000 +v -0.000001 20.500000 -3.000000 +vt 0.142857 0.407407 +vt -0.000000 0.425926 +vt -0.000000 0.407407 +vt 0.392857 0.407407 +vt 0.250000 0.425926 +vt 0.250000 0.407407 +vt 0.642857 0.407407 +vt 0.500000 0.425926 +vt 0.500000 0.407407 +vt 0.892857 0.425926 +vt 0.750000 0.407407 +vt 0.892857 0.407407 +vt 0.678571 0.407407 +vt 0.642857 0.407407 +vt 0.642857 0.259259 +vt 0.464286 0.407407 +vt 0.428571 0.407407 +vt 0.428571 0.259259 +vt 0.214286 0.259259 +vt 0.178571 0.407407 +vt 0.035714 0.407407 +vt 0.392857 0.259259 +vt 0.250000 0.370370 +vt 0.250000 0.259259 +vt 0.214286 0.407407 +vt 0.392857 0.370370 +vt 0.214286 0.222222 +vt 0.214286 -0.000000 +vt 0.428571 0.000000 +vt 0.142857 0.425926 +vt 0.392857 0.425926 +vt 0.642857 0.425926 +vt 0.750000 0.425926 +vt 0.857143 0.259259 +vt 0.821429 0.407407 +vt 0.857143 0.407407 +vt 0.607143 0.407407 +vt -0.000000 0.407407 +vt 0.000000 0.259259 +vt 0.428571 0.222222 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 -0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn 0.0000 1.0000 0.0000 +s off +f 49/41/10 54/42/10 50/43/10 +f 44/44/10 48/45/10 56/46/10 +f 40/47/10 38/48/10 39/49/10 +f 47/50/10 43/51/10 55/52/10 +f 43/53/11 41/54/11 29/55/11 +f 39/56/12 42/57/12 30/58/12 +f 32/59/13 49/60/13 50/61/13 +f 33/62/14 35/63/14 34/64/14 +f 56/46/15 52/65/15 35/63/15 +f 35/63/16 32/59/16 34/64/16 +f 30/58/17 36/66/17 33/62/17 +f 32/67/18 31/68/18 29/69/18 +f 49/41/10 53/70/10 54/42/10 +f 44/44/10 46/71/10 48/45/10 +f 40/47/10 37/72/10 38/48/10 +f 47/50/10 45/73/10 43/51/10 +f 29/55/11 31/74/11 55/75/11 +f 31/74/11 51/76/11 55/75/11 +f 55/75/11 43/53/11 29/55/11 +f 30/58/12 29/55/12 40/77/12 +f 29/55/12 41/54/12 40/77/12 +f 40/77/12 39/56/12 30/58/12 +f 51/78/13 31/79/13 50/61/13 +f 31/79/13 32/59/13 50/61/13 +f 32/59/13 52/65/13 49/60/13 +f 33/62/14 36/66/14 35/63/14 +f 35/63/15 36/66/15 44/44/15 +f 36/66/15 42/57/15 44/44/15 +f 44/44/15 56/46/15 35/63/15 +f 35/63/16 52/65/16 32/59/16 +f 30/58/17 42/57/17 36/66/17 +f 29/69/18 30/80/18 32/67/18 +f 30/80/18 33/62/18 32/67/18 +f 33/62/18 34/64/18 32/67/18 o RightArm v -4.000008 0.000002 -2.500000 v -4.000004 12.000001 -2.500000 @@ -833,451 +1059,443 @@ vn 0.0000 0.7071 -0.7071 vn 0.7071 0.7071 0.0000 vn -0.2425 0.9701 0.0000 s off -f 3/1/1 28/2/1 23/3/1 -f 17/4/2 19/5/2 42/6/2 -f 12/7/3 9/8/3 10/9/3 -f 14/10/4 15/11/4 13/12/4 -f 20/13/5 17/14/5 18/15/5 -f 22/16/4 19/17/4 20/13/4 -f 14/10/3 22/16/3 16/18/3 -f 18/15/6 1/19/6 2/20/6 -f 35/21/7 44/22/7 4/23/7 -f 25/24/6 5/25/6 7/26/6 -f 35/21/1 26/27/1 44/22/1 -f 27/28/1 1/19/1 17/4/1 -f 32/29/4 11/30/4 12/7/4 -f 29/31/6 10/9/6 9/8/6 -f 34/32/3 31/33/3 32/29/3 -f 36/34/6 33/35/6 34/32/6 -f 5/25/5 36/34/5 7/26/5 -f 38/36/5 13/37/5 15/38/5 -f 40/39/4 37/40/4 38/36/4 -f 29/31/3 40/39/3 30/41/3 -f 42/6/8 43/42/8 4/23/8 -f 27/43/5 23/3/5 28/2/5 -f 23/3/6 44/44/6 49/45/6 -f 11/46/1 29/47/1 9/48/1 -f 37/49/1 14/50/1 13/51/1 -f 37/49/9 41/52/9 42/6/9 -f 27/43/4 6/53/4 8/54/4 -f 49/45/3 26/55/3 25/24/3 -f 29/47/10 31/56/10 43/42/10 -f 54/57/4 45/58/4 46/59/4 -f 50/60/1 22/16/1 20/13/1 -f 18/15/1 50/61/1 20/13/1 -f 8/54/5 2/20/5 1/19/5 -f 3/62/1 49/45/1 25/63/1 -f 51/64/1 36/34/1 34/32/1 -f 32/29/1 51/65/1 34/32/1 -f 52/66/1 38/36/1 15/67/1 -f 30/41/1 52/68/1 10/69/1 -f 47/70/11 51/71/11 12/7/11 -f 47/72/12 48/73/12 25/24/12 -f 46/74/13 50/75/13 2/20/13 -f 45/58/14 52/76/14 15/11/14 -f 47/72/15 54/77/15 48/73/15 -f 46/74/5 48/78/5 54/79/5 -f 45/80/3 53/81/3 47/70/3 -f 59/82/5 61/83/5 60/84/5 -f 62/85/1 57/86/1 58/87/1 -f 60/84/8 56/88/8 55/89/8 -f 61/83/4 58/90/4 56/91/4 -f 59/82/6 55/92/6 57/93/6 -f 66/94/6 70/95/6 68/96/6 -f 64/97/4 67/98/4 69/99/4 -f 65/100/8 69/101/8 70/102/8 -f 63/103/1 68/104/1 67/105/1 -f 66/94/5 64/97/5 65/100/5 -f 74/106/6 78/107/6 76/108/6 -f 72/109/4 75/110/4 77/111/4 -f 73/112/8 77/113/8 78/114/8 -f 71/115/1 76/116/1 75/117/1 -f 74/106/5 72/109/5 73/112/5 -f 83/118/5 85/119/5 84/120/5 -f 86/121/1 81/122/1 82/123/1 -f 84/120/8 80/124/8 79/125/8 -f 85/119/4 82/126/4 80/127/4 -f 83/118/6 79/128/6 81/129/6 -f 90/130/6 94/131/6 92/132/6 -f 88/133/4 91/134/4 93/135/4 -f 89/136/8 93/137/8 94/138/8 -f 87/139/1 92/140/1 91/141/1 -f 90/130/5 88/133/5 89/136/5 -f 99/142/5 101/143/5 100/144/5 -f 102/145/1 97/146/1 98/147/1 -f 100/144/8 96/148/8 95/149/8 -f 101/143/4 98/150/4 96/151/4 -f 99/142/6 95/152/6 97/153/6 -f 107/154/5 109/155/5 108/156/5 -f 110/157/1 105/158/1 106/159/1 -f 108/156/8 104/160/8 103/161/8 -f 109/155/4 106/162/4 104/163/4 -f 107/154/6 103/164/6 105/165/6 -f 115/166/5 117/167/5 116/168/5 -f 118/169/1 113/170/1 114/171/1 -f 116/168/8 112/172/8 111/173/8 -f 117/167/4 114/174/4 112/175/4 -f 115/166/6 111/176/6 113/177/6 -f 122/178/6 126/179/6 124/180/6 -f 120/181/4 123/182/4 125/183/4 -f 121/184/8 125/185/8 126/186/8 -f 119/187/1 124/188/1 123/189/1 -f 122/178/5 120/181/5 121/184/5 -f 130/190/6 134/191/6 132/192/6 -f 128/193/4 131/194/4 133/195/4 -f 129/196/8 133/197/8 134/198/8 -f 127/199/1 132/200/1 131/201/1 -f 130/190/5 128/193/5 129/196/5 -f 138/202/6 142/203/6 140/204/6 -f 136/205/4 139/206/4 141/207/4 -f 137/208/8 141/209/8 142/210/8 -f 135/211/1 140/212/1 139/213/1 -f 138/202/5 136/205/5 137/208/5 -f 147/214/5 149/215/5 148/216/5 -f 150/217/1 145/218/1 146/219/1 -f 148/216/8 144/220/8 143/221/8 -f 149/215/4 146/222/4 144/223/4 -f 147/214/6 143/224/6 145/225/6 -f 155/226/3 157/227/3 156/228/3 -f 158/229/1 153/230/1 154/231/1 -f 156/228/8 152/232/8 151/233/8 -f 157/227/6 154/234/6 152/235/6 -f 155/226/4 151/236/4 153/237/4 -f 162/238/4 166/239/4 164/240/4 -f 160/241/6 163/242/6 165/243/6 -f 161/244/8 165/245/8 166/246/8 -f 159/247/1 164/248/1 163/249/1 -f 162/238/3 160/241/3 161/244/3 -f 170/250/4 174/251/4 172/252/4 -f 168/253/6 171/254/6 173/255/6 -f 169/256/8 173/257/8 174/258/8 -f 167/259/1 172/260/1 171/261/1 -f 170/250/3 168/253/3 169/256/3 -f 179/262/3 181/263/3 180/264/3 -f 182/265/1 177/266/1 178/267/1 -f 180/264/8 176/268/8 175/269/8 -f 181/263/6 178/270/6 176/271/6 -f 179/262/4 175/272/4 177/273/4 -f 187/274/3 189/275/3 188/276/3 -f 190/277/1 185/278/1 186/279/1 -f 188/276/8 184/280/8 183/281/8 -f 189/275/6 186/282/6 184/283/6 -f 187/274/4 183/284/4 185/285/4 -f 194/286/4 198/287/4 196/288/4 -f 192/289/6 195/290/6 197/291/6 -f 193/292/8 197/293/8 198/294/8 -f 191/295/1 196/296/1 195/297/1 -f 194/286/3 192/289/3 193/292/3 -f 202/298/4 206/299/4 204/300/4 -f 200/301/6 203/302/6 205/303/6 -f 201/304/8 205/305/8 206/306/8 -f 199/307/1 204/308/1 203/309/1 -f 202/298/3 200/301/3 201/304/3 -f 211/310/3 213/311/3 212/312/3 -f 214/313/1 209/314/1 210/315/1 -f 212/312/8 208/316/8 207/317/8 -f 213/311/6 210/318/6 208/319/6 -f 211/310/4 207/320/4 209/321/4 -f 218/322/3 222/323/3 220/324/3 -f 216/325/5 219/326/5 221/327/5 -f 217/328/8 221/329/8 222/330/8 -f 215/331/1 220/332/1 219/333/1 -f 218/322/6 216/325/6 217/328/6 -f 227/334/6 229/335/6 228/336/6 -f 230/337/1 225/338/1 226/339/1 -f 228/336/8 224/340/8 223/341/8 -f 229/335/5 226/342/5 224/343/5 -f 227/334/3 223/344/3 225/345/3 -f 235/346/6 237/347/6 236/348/6 -f 238/349/1 233/350/1 234/351/1 -f 236/348/8 232/352/8 231/353/8 -f 237/347/5 234/354/5 232/355/5 -f 235/346/3 231/356/3 233/357/3 -f 243/358/6 245/359/6 244/360/6 -f 246/361/1 241/362/1 242/363/1 -f 244/360/8 240/364/8 239/365/8 -f 245/359/5 242/366/5 240/367/5 -f 243/358/3 239/368/3 241/369/3 -f 250/370/3 254/371/3 252/372/3 -f 248/373/5 251/374/5 253/375/5 -f 249/376/8 253/377/8 254/378/8 -f 247/379/1 252/380/1 251/381/1 -f 250/370/6 248/373/6 249/376/6 -f 258/382/3 262/383/3 260/384/3 -f 256/385/5 259/386/5 261/387/5 -f 257/388/8 261/389/8 262/390/8 -f 255/391/1 260/392/1 259/393/1 -f 258/382/6 256/385/6 257/388/6 -f 270/394/3 274/395/3 272/396/3 -f 268/397/5 271/398/5 273/399/5 -f 269/400/8 273/401/8 274/402/8 -f 267/403/1 272/404/1 271/405/1 -f 270/394/6 268/397/6 269/400/6 -f 279/406/6 281/407/6 280/408/6 -f 282/409/1 277/410/1 278/411/1 -f 280/408/8 276/412/8 275/413/8 -f 281/407/5 278/414/5 276/415/5 -f 279/406/3 275/416/3 277/417/3 -f 286/418/3 290/419/3 288/420/3 -f 284/421/5 287/422/5 289/423/5 -f 285/424/8 289/425/8 290/426/8 -f 283/427/1 288/428/1 287/429/1 -f 286/418/6 284/421/6 285/424/6 -f 295/430/6 297/431/6 296/432/6 -f 298/433/1 293/434/1 294/435/1 -f 296/432/8 292/436/8 291/437/8 -f 297/431/5 294/438/5 292/439/5 -f 295/430/3 291/440/3 293/441/3 -f 265/442/8 302/443/8 266/444/8 -f 265/445/6 264/446/6 263/447/6 -f 300/448/4 301/449/4 299/450/4 -f 299/451/1 264/446/1 300/448/1 -f 300/448/3 266/444/3 302/443/3 -f 307/452/6 309/453/6 308/454/6 -f 310/455/1 305/456/1 306/457/1 -f 308/454/8 304/458/8 303/459/8 -f 309/453/5 306/460/5 304/461/5 -f 307/452/3 303/462/3 305/463/3 -f 314/464/3 318/465/3 316/466/3 -f 312/467/5 315/468/5 317/469/5 -f 313/470/8 317/471/8 318/472/8 -f 311/473/1 316/474/1 315/475/1 -f 314/464/6 312/467/6 313/470/6 -f 3/1/1 6/476/1 28/2/1 -f 42/6/2 4/23/2 27/28/2 -f 4/23/2 24/477/2 27/28/2 -f 27/28/2 17/4/2 42/6/2 -f 12/7/3 11/30/3 9/8/3 -f 14/10/4 16/18/4 15/11/4 -f 20/13/5 19/17/5 17/14/5 -f 22/16/4 21/478/4 19/17/4 -f 14/10/3 21/478/3 22/16/3 -f 18/15/6 17/14/6 1/19/6 -f 44/22/7 24/477/7 4/23/7 -f 4/23/7 43/42/7 35/21/7 -f 43/42/7 33/479/7 35/21/7 -f 25/24/6 26/55/6 5/25/6 -f 35/21/1 5/480/1 26/27/1 -f 27/28/1 8/54/1 1/19/1 -f 32/29/4 31/33/4 11/30/4 -f 29/31/6 30/41/6 10/9/6 -f 34/32/3 33/35/3 31/33/3 -f 36/34/6 35/481/6 33/35/6 -f 5/25/5 35/481/5 36/34/5 -f 38/36/5 37/40/5 13/37/5 -f 40/39/4 39/482/4 37/40/4 -f 29/31/3 39/482/3 40/39/3 -f 42/6/8 41/52/8 43/42/8 -f 27/43/5 24/483/5 23/3/5 -f 23/3/6 24/483/6 44/44/6 -f 11/46/1 31/56/1 29/47/1 -f 37/49/1 21/484/1 14/50/1 -f 42/6/9 19/5/9 21/484/9 -f 37/49/9 39/485/9 41/52/9 -f 42/6/9 21/484/9 37/49/9 -f 27/43/4 28/2/4 6/53/4 -f 49/45/3 44/44/3 26/55/3 -f 31/56/10 33/479/10 43/42/10 -f 43/42/10 41/52/10 29/47/10 -f 41/52/10 39/485/10 29/47/10 -f 54/57/4 53/486/4 45/58/4 -f 50/60/1 16/487/1 22/16/1 -f 18/15/1 2/488/1 50/61/1 -f 8/54/5 6/53/5 2/20/5 -f 3/62/1 23/3/1 49/45/1 -f 51/64/1 7/489/1 36/34/1 -f 32/29/1 12/490/1 51/65/1 -f 52/66/1 40/39/1 38/36/1 -f 30/41/1 40/39/1 52/68/1 -f 12/7/11 10/9/11 47/70/11 -f 10/9/11 52/491/11 45/80/11 -f 47/70/11 10/9/11 45/80/11 -f 3/492/12 25/24/12 48/73/12 -f 25/24/12 7/26/12 47/72/12 -f 7/26/12 51/493/12 47/72/12 -f 2/20/13 6/53/13 46/74/13 -f 6/53/13 3/494/13 48/78/13 -f 46/74/13 6/53/13 48/78/13 -f 15/11/14 16/18/14 45/58/14 -f 16/18/14 50/495/14 46/59/14 -f 45/58/14 16/18/14 46/59/14 -f 47/72/15 53/496/15 54/77/15 -f 59/82/5 62/85/5 61/83/5 -f 62/85/1 59/82/1 57/86/1 -f 60/84/8 61/83/8 56/88/8 -f 61/83/4 62/85/4 58/90/4 -f 59/82/6 60/84/6 55/92/6 -f 66/94/6 65/100/6 70/95/6 -f 64/97/4 63/103/4 67/98/4 -f 65/100/8 64/97/8 69/101/8 -f 63/103/1 66/94/1 68/104/1 -f 66/94/5 63/103/5 64/97/5 -f 74/106/6 73/112/6 78/107/6 -f 72/109/4 71/115/4 75/110/4 -f 73/112/8 72/109/8 77/113/8 -f 71/115/1 74/106/1 76/116/1 -f 74/106/5 71/115/5 72/109/5 -f 83/118/5 86/121/5 85/119/5 -f 86/121/1 83/118/1 81/122/1 -f 84/120/8 85/119/8 80/124/8 -f 85/119/4 86/121/4 82/126/4 -f 83/118/6 84/120/6 79/128/6 -f 90/130/6 89/136/6 94/131/6 -f 88/133/4 87/139/4 91/134/4 -f 89/136/8 88/133/8 93/137/8 -f 87/139/1 90/130/1 92/140/1 -f 90/130/5 87/139/5 88/133/5 -f 99/142/5 102/145/5 101/143/5 -f 102/145/1 99/142/1 97/146/1 -f 100/144/8 101/143/8 96/148/8 -f 101/143/4 102/145/4 98/150/4 -f 99/142/6 100/144/6 95/152/6 -f 107/154/5 110/157/5 109/155/5 -f 110/157/1 107/154/1 105/158/1 -f 108/156/8 109/155/8 104/160/8 -f 109/155/4 110/157/4 106/162/4 -f 107/154/6 108/156/6 103/164/6 -f 115/166/5 118/169/5 117/167/5 -f 118/169/1 115/166/1 113/170/1 -f 116/168/8 117/167/8 112/172/8 -f 117/167/4 118/169/4 114/174/4 -f 115/166/6 116/168/6 111/176/6 -f 122/178/6 121/184/6 126/179/6 -f 120/181/4 119/187/4 123/182/4 -f 121/184/8 120/181/8 125/185/8 -f 119/187/1 122/178/1 124/188/1 -f 122/178/5 119/187/5 120/181/5 -f 130/190/6 129/196/6 134/191/6 -f 128/193/4 127/199/4 131/194/4 -f 129/196/8 128/193/8 133/197/8 -f 127/199/1 130/190/1 132/200/1 -f 130/190/5 127/199/5 128/193/5 -f 138/202/6 137/208/6 142/203/6 -f 136/205/4 135/211/4 139/206/4 -f 137/208/8 136/205/8 141/209/8 -f 135/211/1 138/202/1 140/212/1 -f 138/202/5 135/211/5 136/205/5 -f 147/214/5 150/217/5 149/215/5 -f 150/217/1 147/214/1 145/218/1 -f 148/216/8 149/215/8 144/220/8 -f 149/215/4 150/217/4 146/222/4 -f 147/214/6 148/216/6 143/224/6 -f 155/226/3 158/229/3 157/227/3 -f 158/229/1 155/226/1 153/230/1 -f 156/228/8 157/227/8 152/232/8 -f 157/227/6 158/229/6 154/234/6 -f 155/226/4 156/228/4 151/236/4 -f 162/238/4 161/244/4 166/239/4 -f 160/241/6 159/247/6 163/242/6 -f 161/244/8 160/241/8 165/245/8 -f 159/247/1 162/238/1 164/248/1 -f 162/238/3 159/247/3 160/241/3 -f 170/250/4 169/256/4 174/251/4 -f 168/253/6 167/259/6 171/254/6 -f 169/256/8 168/253/8 173/257/8 -f 167/259/1 170/250/1 172/260/1 -f 170/250/3 167/259/3 168/253/3 -f 179/262/3 182/265/3 181/263/3 -f 182/265/1 179/262/1 177/266/1 -f 180/264/8 181/263/8 176/268/8 -f 181/263/6 182/265/6 178/270/6 -f 179/262/4 180/264/4 175/272/4 -f 187/274/3 190/277/3 189/275/3 -f 190/277/1 187/274/1 185/278/1 -f 188/276/8 189/275/8 184/280/8 -f 189/275/6 190/277/6 186/282/6 -f 187/274/4 188/276/4 183/284/4 -f 194/286/4 193/292/4 198/287/4 -f 192/289/6 191/295/6 195/290/6 -f 193/292/8 192/289/8 197/293/8 -f 191/295/1 194/286/1 196/296/1 -f 194/286/3 191/295/3 192/289/3 -f 202/298/4 201/304/4 206/299/4 -f 200/301/6 199/307/6 203/302/6 -f 201/304/8 200/301/8 205/305/8 -f 199/307/1 202/298/1 204/308/1 -f 202/298/3 199/307/3 200/301/3 -f 211/310/3 214/313/3 213/311/3 -f 214/313/1 211/310/1 209/314/1 -f 212/312/8 213/311/8 208/316/8 -f 213/311/6 214/313/6 210/318/6 -f 211/310/4 212/312/4 207/320/4 -f 218/322/3 217/328/3 222/323/3 -f 216/325/5 215/331/5 219/326/5 -f 217/328/8 216/325/8 221/329/8 -f 215/331/1 218/322/1 220/332/1 -f 218/322/6 215/331/6 216/325/6 -f 227/334/6 230/337/6 229/335/6 -f 230/337/1 227/334/1 225/338/1 -f 228/336/8 229/335/8 224/340/8 -f 229/335/5 230/337/5 226/342/5 -f 227/334/3 228/336/3 223/344/3 -f 235/346/6 238/349/6 237/347/6 -f 238/349/1 235/346/1 233/350/1 -f 236/348/8 237/347/8 232/352/8 -f 237/347/5 238/349/5 234/354/5 -f 235/346/3 236/348/3 231/356/3 -f 243/358/6 246/361/6 245/359/6 -f 246/361/1 243/358/1 241/362/1 -f 244/360/8 245/359/8 240/364/8 -f 245/359/5 246/361/5 242/366/5 -f 243/358/3 244/360/3 239/368/3 -f 250/370/3 249/376/3 254/371/3 -f 248/373/5 247/379/5 251/374/5 -f 249/376/8 248/373/8 253/377/8 -f 247/379/1 250/370/1 252/380/1 -f 250/370/6 247/379/6 248/373/6 -f 258/382/3 257/388/3 262/383/3 -f 256/385/5 255/391/5 259/386/5 -f 257/388/8 256/385/8 261/389/8 -f 255/391/1 258/382/1 260/392/1 -f 258/382/6 255/391/6 256/385/6 -f 270/394/3 269/400/3 274/395/3 -f 268/397/5 267/403/5 271/398/5 -f 269/400/8 268/397/8 273/401/8 -f 267/403/1 270/394/1 272/404/1 -f 270/394/6 267/403/6 268/397/6 -f 279/406/6 282/409/6 281/407/6 -f 282/409/1 279/406/1 277/410/1 -f 280/408/8 281/407/8 276/412/8 -f 281/407/5 282/409/5 278/414/5 -f 279/406/3 280/408/3 275/416/3 -f 286/418/3 285/424/3 290/419/3 -f 284/421/5 283/427/5 287/422/5 -f 285/424/8 284/421/8 289/425/8 -f 283/427/1 286/418/1 288/428/1 -f 286/418/6 283/427/6 284/421/6 -f 295/430/6 298/433/6 297/431/6 -f 298/433/1 295/430/1 293/434/1 -f 296/432/8 297/431/8 292/436/8 -f 297/431/5 298/433/5 294/438/5 -f 295/430/3 296/432/3 291/440/3 -f 265/442/8 301/497/8 302/443/8 -f 265/445/6 266/444/6 264/446/6 -f 300/448/4 302/443/4 301/449/4 -f 299/451/1 263/498/1 264/446/1 -f 300/448/3 264/446/3 266/444/3 -f 307/452/6 310/455/6 309/453/6 -f 310/455/1 307/452/1 305/456/1 -f 308/454/8 309/453/8 304/458/8 -f 309/453/5 310/455/5 306/460/5 -f 307/452/3 308/454/3 303/462/3 -f 314/464/3 313/470/3 318/465/3 -f 312/467/5 311/473/5 315/468/5 -f 313/470/8 312/467/8 317/471/8 -f 311/473/1 314/464/1 316/474/1 -f 314/464/6 311/473/6 312/467/6 +f 59/81/19 84/82/19 79/83/19 +f 73/84/20 75/85/20 98/86/20 +f 68/87/21 65/88/21 66/89/21 +f 70/90/22 71/91/22 69/92/22 +f 76/93/23 73/94/23 74/95/23 +f 78/96/22 75/97/22 76/93/22 +f 70/90/21 78/96/21 72/98/21 +f 74/95/24 57/99/24 58/100/24 +f 91/101/25 100/102/25 60/103/25 +f 81/104/24 61/105/24 63/106/24 +f 91/101/19 82/107/19 100/102/19 +f 83/108/19 57/99/19 73/84/19 +f 88/109/22 67/110/22 68/87/22 +f 85/111/24 66/89/24 65/88/24 +f 90/112/21 87/113/21 88/109/21 +f 92/114/24 89/115/24 90/112/24 +f 61/105/23 92/114/23 63/106/23 +f 94/116/23 69/117/23 71/118/23 +f 96/119/22 93/120/22 94/116/22 +f 85/111/21 96/119/21 86/121/21 +f 98/86/26 99/122/26 60/103/26 +f 83/123/23 79/83/23 84/82/23 +f 79/83/24 100/124/24 105/125/24 +f 67/126/19 85/127/19 65/128/19 +f 93/129/19 70/130/19 69/131/19 +f 93/129/27 97/132/27 98/86/27 +f 83/123/22 62/133/22 64/134/22 +f 105/125/21 82/135/21 81/104/21 +f 85/127/28 87/136/28 99/122/28 +f 110/137/22 101/138/22 102/139/22 +f 106/140/19 78/96/19 76/93/19 +f 74/95/19 106/141/19 76/93/19 +f 64/134/23 58/100/23 57/99/23 +f 59/142/19 105/125/19 81/143/19 +f 107/144/19 92/114/19 90/112/19 +f 88/109/19 107/145/19 90/112/19 +f 108/146/19 94/116/19 71/147/19 +f 86/121/19 108/148/19 66/149/19 +f 103/150/29 107/151/29 68/87/29 +f 103/152/30 104/153/30 81/104/30 +f 102/154/31 106/155/31 58/100/31 +f 101/138/32 108/156/32 71/91/32 +f 103/152/33 110/157/33 104/153/33 +f 102/154/23 104/158/23 110/159/23 +f 101/160/21 109/161/21 103/150/21 +f 115/162/23 117/163/23 116/164/23 +f 118/165/19 113/166/19 114/167/19 +f 116/164/26 112/168/26 111/169/26 +f 117/163/22 114/170/22 112/171/22 +f 115/162/24 111/172/24 113/173/24 +f 122/174/24 126/175/24 124/176/24 +f 120/177/22 123/178/22 125/179/22 +f 121/180/26 125/181/26 126/182/26 +f 119/183/19 124/184/19 123/185/19 +f 122/174/23 120/177/23 121/180/23 +f 130/186/24 134/187/24 132/188/24 +f 128/189/22 131/190/22 133/191/22 +f 129/192/26 133/193/26 134/194/26 +f 127/195/19 132/196/19 131/197/19 +f 130/186/23 128/189/23 129/192/23 +f 139/198/23 141/199/23 140/200/23 +f 142/201/19 137/202/19 138/203/19 +f 140/200/26 136/204/26 135/205/26 +f 141/199/22 138/206/22 136/207/22 +f 139/198/24 135/208/24 137/209/24 +f 146/210/24 150/211/24 148/212/24 +f 144/213/22 147/214/22 149/215/22 +f 145/216/26 149/217/26 150/218/26 +f 143/219/19 148/220/19 147/221/19 +f 146/210/23 144/213/23 145/216/23 +f 155/222/23 157/223/23 156/224/23 +f 158/225/19 153/226/19 154/227/19 +f 156/224/26 152/228/26 151/229/26 +f 157/223/22 154/230/22 152/231/22 +f 155/222/24 151/232/24 153/233/24 +f 163/234/23 165/235/23 164/236/23 +f 166/237/19 161/238/19 162/239/19 +f 164/236/26 160/240/26 159/241/26 +f 165/235/22 162/242/22 160/243/22 +f 163/234/24 159/244/24 161/245/24 +f 171/246/23 173/247/23 172/248/23 +f 174/249/19 169/250/19 170/251/19 +f 172/248/26 168/252/26 167/253/26 +f 173/247/22 170/254/22 168/255/22 +f 171/246/24 167/256/24 169/257/24 +f 178/258/24 182/259/24 180/260/24 +f 176/261/22 179/262/22 181/263/22 +f 177/264/26 181/265/26 182/266/26 +f 175/267/19 180/268/19 179/269/19 +f 178/258/23 176/261/23 177/264/23 +f 186/270/24 190/271/24 188/272/24 +f 184/273/22 187/274/22 189/275/22 +f 185/276/26 189/277/26 190/278/26 +f 183/279/19 188/280/19 187/281/19 +f 186/270/23 184/273/23 185/276/23 +f 194/282/24 198/283/24 196/284/24 +f 192/285/22 195/286/22 197/287/22 +f 193/288/26 197/289/26 198/290/26 +f 191/291/19 196/292/19 195/293/19 +f 194/282/23 192/285/23 193/288/23 +f 203/294/23 205/295/23 204/296/23 +f 206/297/19 201/298/19 202/299/19 +f 204/296/26 200/300/26 199/301/26 +f 205/295/22 202/302/22 200/303/22 +f 203/294/24 199/304/24 201/305/24 +f 211/306/21 213/307/21 212/308/21 +f 214/309/19 209/310/19 210/311/19 +f 212/308/26 208/312/26 207/313/26 +f 213/307/24 210/314/24 208/315/24 +f 211/306/22 207/316/22 209/317/22 +f 218/318/22 222/319/22 220/320/22 +f 216/321/24 219/322/24 221/323/24 +f 217/324/26 221/325/26 222/326/26 +f 215/327/19 220/328/19 219/329/19 +f 218/318/21 216/321/21 217/324/21 +f 226/330/22 230/331/22 228/332/22 +f 224/333/24 227/334/24 229/335/24 +f 225/336/26 229/337/26 230/338/26 +f 223/339/19 228/340/19 227/341/19 +f 226/330/21 224/333/21 225/336/21 +f 235/342/21 237/343/21 236/344/21 +f 238/345/19 233/346/19 234/347/19 +f 236/344/26 232/348/26 231/349/26 +f 237/343/24 234/350/24 232/351/24 +f 235/342/22 231/352/22 233/353/22 +f 243/354/21 245/355/21 244/356/21 +f 246/357/19 241/358/19 242/359/19 +f 244/356/26 240/360/26 239/361/26 +f 245/355/24 242/362/24 240/363/24 +f 243/354/22 239/364/22 241/365/22 +f 250/366/22 254/367/22 252/368/22 +f 248/369/24 251/370/24 253/371/24 +f 249/372/26 253/373/26 254/374/26 +f 247/375/19 252/376/19 251/377/19 +f 250/366/21 248/369/21 249/372/21 +f 258/378/22 262/379/22 260/380/22 +f 256/381/24 259/382/24 261/383/24 +f 257/384/26 261/385/26 262/386/26 +f 255/387/19 260/388/19 259/389/19 +f 258/378/21 256/381/21 257/384/21 +f 267/390/21 269/391/21 268/392/21 +f 270/393/19 265/394/19 266/395/19 +f 268/392/26 264/396/26 263/397/26 +f 269/391/24 266/398/24 264/399/24 +f 267/390/22 263/400/22 265/401/22 +f 274/402/21 278/403/21 276/404/21 +f 272/405/23 275/406/23 277/407/23 +f 273/408/26 277/409/26 278/410/26 +f 271/411/19 276/412/19 275/413/19 +f 274/402/24 272/405/24 273/408/24 +f 283/414/24 285/415/24 284/416/24 +f 286/417/19 281/418/19 282/419/19 +f 284/416/26 280/420/26 279/421/26 +f 285/415/23 282/422/23 280/423/23 +f 283/414/21 279/424/21 281/425/21 +f 291/426/24 293/427/24 292/428/24 +f 294/429/19 289/430/19 290/431/19 +f 292/428/26 288/432/26 287/433/26 +f 293/427/23 290/434/23 288/435/23 +f 291/426/21 287/436/21 289/437/21 +f 299/438/24 301/439/24 300/440/24 +f 302/441/19 297/442/19 298/443/19 +f 300/440/26 296/444/26 295/445/26 +f 301/439/23 298/446/23 296/447/23 +f 299/438/21 295/448/21 297/449/21 +f 306/450/21 310/451/21 308/452/21 +f 304/453/23 307/454/23 309/455/23 +f 305/456/26 309/457/26 310/458/26 +f 303/459/19 308/460/19 307/461/19 +f 306/450/24 304/453/24 305/456/24 +f 314/462/21 318/463/21 316/464/21 +f 312/465/23 315/466/23 317/467/23 +f 313/468/26 317/469/26 318/470/26 +f 311/471/19 316/472/19 315/473/19 +f 314/462/24 312/465/24 313/468/24 +f 326/474/21 330/475/21 328/476/21 +f 324/477/23 327/478/23 329/479/23 +f 325/480/26 329/481/26 330/482/26 +f 323/483/19 328/484/19 327/485/19 +f 326/474/24 324/477/24 325/480/24 +f 335/486/24 337/487/24 336/488/24 +f 338/489/19 333/490/19 334/491/19 +f 336/488/26 332/492/26 331/493/26 +f 337/487/23 334/494/23 332/495/23 +f 335/486/21 331/496/21 333/497/21 +f 342/498/21 346/499/21 344/500/21 +f 340/501/23 343/502/23 345/503/23 +f 341/504/26 345/505/26 346/506/26 +f 339/507/19 344/508/19 343/509/19 +f 342/498/24 340/501/24 341/504/24 +f 351/510/24 353/511/24 352/512/24 +f 354/513/19 349/514/19 350/515/19 +f 352/512/26 348/516/26 347/517/26 +f 353/511/23 350/518/23 348/519/23 +f 351/510/21 347/520/21 349/521/21 +f 321/522/26 358/523/26 322/524/26 +f 321/525/24 320/526/24 319/527/24 +f 356/528/22 357/529/22 355/530/22 +f 355/531/19 320/526/19 356/528/19 +f 356/528/21 322/524/21 358/523/21 +f 363/532/24 365/533/24 364/534/24 +f 366/535/19 361/536/19 362/537/19 +f 364/534/26 360/538/26 359/539/26 +f 365/533/23 362/540/23 360/541/23 +f 363/532/21 359/542/21 361/543/21 +f 370/544/21 374/545/21 372/546/21 +f 368/547/23 371/548/23 373/549/23 +f 369/550/26 373/551/26 374/552/26 +f 367/553/19 372/554/19 371/555/19 +f 370/544/24 368/547/24 369/550/24 +f 59/81/19 62/556/19 84/82/19 +f 98/86/20 60/103/20 83/108/20 +f 60/103/20 80/557/20 83/108/20 +f 83/108/20 73/84/20 98/86/20 +f 68/87/21 67/110/21 65/88/21 +f 70/90/22 72/98/22 71/91/22 +f 76/93/23 75/97/23 73/94/23 +f 78/96/22 77/558/22 75/97/22 +f 70/90/21 77/558/21 78/96/21 +f 74/95/24 73/94/24 57/99/24 +f 100/102/25 80/557/25 60/103/25 +f 60/103/25 99/122/25 91/101/25 +f 99/122/25 89/559/25 91/101/25 +f 81/104/24 82/135/24 61/105/24 +f 91/101/19 61/560/19 82/107/19 +f 83/108/19 64/134/19 57/99/19 +f 88/109/22 87/113/22 67/110/22 +f 85/111/24 86/121/24 66/89/24 +f 90/112/21 89/115/21 87/113/21 +f 92/114/24 91/561/24 89/115/24 +f 61/105/23 91/561/23 92/114/23 +f 94/116/23 93/120/23 69/117/23 +f 96/119/22 95/562/22 93/120/22 +f 85/111/21 95/562/21 96/119/21 +f 98/86/26 97/132/26 99/122/26 +f 83/123/23 80/563/23 79/83/23 +f 79/83/24 80/563/24 100/124/24 +f 67/126/19 87/136/19 85/127/19 +f 93/129/19 77/564/19 70/130/19 +f 98/86/27 75/85/27 77/564/27 +f 93/129/27 95/565/27 97/132/27 +f 98/86/27 77/564/27 93/129/27 +f 83/123/22 84/82/22 62/133/22 +f 105/125/21 100/124/21 82/135/21 +f 87/136/28 89/559/28 99/122/28 +f 99/122/28 97/132/28 85/127/28 +f 97/132/28 95/565/28 85/127/28 +f 110/137/22 109/566/22 101/138/22 +f 106/140/19 72/567/19 78/96/19 +f 74/95/19 58/568/19 106/141/19 +f 64/134/23 62/133/23 58/100/23 +f 59/142/19 79/83/19 105/125/19 +f 107/144/19 63/569/19 92/114/19 +f 88/109/19 68/570/19 107/145/19 +f 108/146/19 96/119/19 94/116/19 +f 86/121/19 96/119/19 108/148/19 +f 68/87/29 66/89/29 103/150/29 +f 66/89/29 108/571/29 101/160/29 +f 103/150/29 66/89/29 101/160/29 +f 59/572/30 81/104/30 104/153/30 +f 81/104/30 63/106/30 103/152/30 +f 63/106/30 107/573/30 103/152/30 +f 58/100/31 62/133/31 102/154/31 +f 62/133/31 59/574/31 104/158/31 +f 102/154/31 62/133/31 104/158/31 +f 71/91/32 72/98/32 101/138/32 +f 72/98/32 106/575/32 102/139/32 +f 101/138/32 72/98/32 102/139/32 +f 103/152/33 109/576/33 110/157/33 +f 115/162/23 118/165/23 117/163/23 +f 118/165/19 115/162/19 113/166/19 +f 116/164/26 117/163/26 112/168/26 +f 117/163/22 118/165/22 114/170/22 +f 115/162/24 116/164/24 111/172/24 +f 122/174/24 121/180/24 126/175/24 +f 120/177/22 119/183/22 123/178/22 +f 121/180/26 120/177/26 125/181/26 +f 119/183/19 122/174/19 124/184/19 +f 122/174/23 119/183/23 120/177/23 +f 130/186/24 129/192/24 134/187/24 +f 128/189/22 127/195/22 131/190/22 +f 129/192/26 128/189/26 133/193/26 +f 127/195/19 130/186/19 132/196/19 +f 130/186/23 127/195/23 128/189/23 +f 139/198/23 142/201/23 141/199/23 +f 142/201/19 139/198/19 137/202/19 +f 140/200/26 141/199/26 136/204/26 +f 141/199/22 142/201/22 138/206/22 +f 139/198/24 140/200/24 135/208/24 +f 146/210/24 145/216/24 150/211/24 +f 144/213/22 143/219/22 147/214/22 +f 145/216/26 144/213/26 149/217/26 +f 143/219/19 146/210/19 148/220/19 +f 146/210/23 143/219/23 144/213/23 +f 155/222/23 158/225/23 157/223/23 +f 158/225/19 155/222/19 153/226/19 +f 156/224/26 157/223/26 152/228/26 +f 157/223/22 158/225/22 154/230/22 +f 155/222/24 156/224/24 151/232/24 +f 163/234/23 166/237/23 165/235/23 +f 166/237/19 163/234/19 161/238/19 +f 164/236/26 165/235/26 160/240/26 +f 165/235/22 166/237/22 162/242/22 +f 163/234/24 164/236/24 159/244/24 +f 171/246/23 174/249/23 173/247/23 +f 174/249/19 171/246/19 169/250/19 +f 172/248/26 173/247/26 168/252/26 +f 173/247/22 174/249/22 170/254/22 +f 171/246/24 172/248/24 167/256/24 +f 178/258/24 177/264/24 182/259/24 +f 176/261/22 175/267/22 179/262/22 +f 177/264/26 176/261/26 181/265/26 +f 175/267/19 178/258/19 180/268/19 +f 178/258/23 175/267/23 176/261/23 +f 186/270/24 185/276/24 190/271/24 +f 184/273/22 183/279/22 187/274/22 +f 185/276/26 184/273/26 189/277/26 +f 183/279/19 186/270/19 188/280/19 +f 186/270/23 183/279/23 184/273/23 +f 194/282/24 193/288/24 198/283/24 +f 192/285/22 191/291/22 195/286/22 +f 193/288/26 192/285/26 197/289/26 +f 191/291/19 194/282/19 196/292/19 +f 194/282/23 191/291/23 192/285/23 +f 203/294/23 206/297/23 205/295/23 +f 206/297/19 203/294/19 201/298/19 +f 204/296/26 205/295/26 200/300/26 +f 205/295/22 206/297/22 202/302/22 +f 203/294/24 204/296/24 199/304/24 +f 211/306/21 214/309/21 213/307/21 +f 214/309/19 211/306/19 209/310/19 +f 212/308/26 213/307/26 208/312/26 +f 213/307/24 214/309/24 210/314/24 +f 211/306/22 212/308/22 207/316/22 +f 218/318/22 217/324/22 222/319/22 +f 216/321/24 215/327/24 219/322/24 +f 217/324/26 216/321/26 221/325/26 +f 215/327/19 218/318/19 220/328/19 +f 218/318/21 215/327/21 216/321/21 +f 226/330/22 225/336/22 230/331/22 +f 224/333/24 223/339/24 227/334/24 +f 225/336/26 224/333/26 229/337/26 +f 223/339/19 226/330/19 228/340/19 +f 226/330/21 223/339/21 224/333/21 +f 235/342/21 238/345/21 237/343/21 +f 238/345/19 235/342/19 233/346/19 +f 236/344/26 237/343/26 232/348/26 +f 237/343/24 238/345/24 234/350/24 +f 235/342/22 236/344/22 231/352/22 +f 243/354/21 246/357/21 245/355/21 +f 246/357/19 243/354/19 241/358/19 +f 244/356/26 245/355/26 240/360/26 +f 245/355/24 246/357/24 242/362/24 +f 243/354/22 244/356/22 239/364/22 +f 250/366/22 249/372/22 254/367/22 +f 248/369/24 247/375/24 251/370/24 +f 249/372/26 248/369/26 253/373/26 +f 247/375/19 250/366/19 252/376/19 +f 250/366/21 247/375/21 248/369/21 +f 258/378/22 257/384/22 262/379/22 +f 256/381/24 255/387/24 259/382/24 +f 257/384/26 256/381/26 261/385/26 +f 255/387/19 258/378/19 260/388/19 +f 258/378/21 255/387/21 256/381/21 +f 267/390/21 270/393/21 269/391/21 +f 270/393/19 267/390/19 265/394/19 +f 268/392/26 269/391/26 264/396/26 +f 269/391/24 270/393/24 266/398/24 +f 267/390/22 268/392/22 263/400/22 +f 274/402/21 273/408/21 278/403/21 +f 272/405/23 271/411/23 275/406/23 +f 273/408/26 272/405/26 277/409/26 +f 271/411/19 274/402/19 276/412/19 +f 274/402/24 271/411/24 272/405/24 +f 283/414/24 286/417/24 285/415/24 +f 286/417/19 283/414/19 281/418/19 +f 284/416/26 285/415/26 280/420/26 +f 285/415/23 286/417/23 282/422/23 +f 283/414/21 284/416/21 279/424/21 +f 291/426/24 294/429/24 293/427/24 +f 294/429/19 291/426/19 289/430/19 +f 292/428/26 293/427/26 288/432/26 +f 293/427/23 294/429/23 290/434/23 +f 291/426/21 292/428/21 287/436/21 +f 299/438/24 302/441/24 301/439/24 +f 302/441/19 299/438/19 297/442/19 +f 300/440/26 301/439/26 296/444/26 +f 301/439/23 302/441/23 298/446/23 +f 299/438/21 300/440/21 295/448/21 +f 306/450/21 305/456/21 310/451/21 +f 304/453/23 303/459/23 307/454/23 +f 305/456/26 304/453/26 309/457/26 +f 303/459/19 306/450/19 308/460/19 +f 306/450/24 303/459/24 304/453/24 +f 314/462/21 313/468/21 318/463/21 +f 312/465/23 311/471/23 315/466/23 +f 313/468/26 312/465/26 317/469/26 +f 311/471/19 314/462/19 316/472/19 +f 314/462/24 311/471/24 312/465/24 +f 326/474/21 325/480/21 330/475/21 +f 324/477/23 323/483/23 327/478/23 +f 325/480/26 324/477/26 329/481/26 +f 323/483/19 326/474/19 328/484/19 +f 326/474/24 323/483/24 324/477/24 +f 335/486/24 338/489/24 337/487/24 +f 338/489/19 335/486/19 333/490/19 +f 336/488/26 337/487/26 332/492/26 +f 337/487/23 338/489/23 334/494/23 +f 335/486/21 336/488/21 331/496/21 +f 342/498/21 341/504/21 346/499/21 +f 340/501/23 339/507/23 343/502/23 +f 341/504/26 340/501/26 345/505/26 +f 339/507/19 342/498/19 344/508/19 +f 342/498/24 339/507/24 340/501/24 +f 351/510/24 354/513/24 353/511/24 +f 354/513/19 351/510/19 349/514/19 +f 352/512/26 353/511/26 348/516/26 +f 353/511/23 354/513/23 350/518/23 +f 351/510/21 352/512/21 347/520/21 +f 321/522/26 357/577/26 358/523/26 +f 321/525/24 322/524/24 320/526/24 +f 356/528/22 358/523/22 357/529/22 +f 355/531/19 319/578/19 320/526/19 +f 356/528/21 320/526/21 322/524/21 +f 363/532/24 366/535/24 365/533/24 +f 366/535/19 363/532/19 361/536/19 +f 364/534/26 365/533/26 360/538/26 +f 365/533/23 366/535/23 362/540/23 +f 363/532/21 364/534/21 359/542/21 +f 370/544/21 369/550/21 374/545/21 +f 368/547/23 367/553/23 371/548/23 +f 369/550/26 368/547/26 373/551/26 +f 367/553/19 370/544/19 372/554/19 +f 370/544/24 367/553/24 368/547/24 o RightLeg -v -5.000000 24.500002 3.000000 -v -5.000000 24.500002 -3.000000 -v 1.000000 24.500000 3.000000 -v 1.000000 24.500000 -3.000000 -v -4.000000 24.500002 -4.000000 -v 0.000000 24.500000 -4.000000 v -4.000004 11.000001 -2.000000 v -4.000004 11.000001 2.000000 -v -0.000001 21.500000 -4.000000 -v -4.000001 21.500002 -4.000000 v -4.500004 12.000002 2.000000 v -4.500004 12.000002 -2.000000 v -5.000004 12.000002 -2.000000 @@ -1501,18 +1719,10 @@ vt 0.392857 0.796296 vt 0.392857 0.759259 vt 0.250000 0.759259 vt 0.250000 0.796296 -vt -0.000000 0.425926 -vt 0.142857 0.407407 -vt -0.000000 0.407407 -vt 0.250000 0.425926 -vt 0.392857 0.407407 -vt 0.250000 0.407407 -vt 0.500000 0.425926 -vt 0.642857 0.407407 -vt 0.500000 0.407407 vt 0.750000 0.740741 vt 0.732143 0.425926 vt 0.732143 0.740741 +vt 0.500000 0.425926 vt 0.482143 0.740741 vt 0.500000 0.740741 vt 0.946429 0.425926 @@ -1531,6 +1741,7 @@ vt 0.250000 0.740741 vt 0.392857 0.740741 vt 0.482143 0.425926 vt 0.446429 0.740741 +vt 0.250000 0.425926 vt 0.160714 0.425926 vt 0.160714 0.740741 vt 0.696429 0.740741 @@ -1547,23 +1758,8 @@ vt 1.000000 0.740741 vt 0.410714 0.425926 vt 0.642857 0.425926 vt 0.000000 0.740741 -vt 0.750000 0.407407 -vt 0.892857 0.407407 -vt 0.642857 0.259259 -vt 0.678571 0.407407 -vt 0.821429 0.407407 -vt 0.428571 0.259259 -vt 0.464286 0.407407 -vt 0.607143 0.407407 -vt 0.178571 0.407407 -vt 0.214286 0.407407 -vt 0.214286 0.259259 -vt 0.250000 0.370370 -vt 0.392857 0.259259 -vt 0.250000 0.259259 vt 0.250000 0.981481 vt 0.392857 1.000000 -vt 0.392857 0.370370 vt 0.196429 0.796296 vt 0.214286 0.944444 vt 0.214286 0.796296 @@ -1824,361 +2020,315 @@ vt 0.071429 0.759259 vt 0.017857 0.796296 vt -0.000000 0.759259 vt -0.000000 0.796296 -vt 0.214286 0.222222 vt 0.214286 0.981481 vt 0.428571 0.981481 vt 0.214286 0.759259 vt 0.910714 0.425926 vt 0.232143 0.425926 -vt 0.857143 0.407407 -vt 0.857143 0.259259 -vt 0.642857 0.407407 -vt 0.428571 0.407407 -vt 0.000000 0.259259 -vt 0.035714 0.407407 -vt -0.000000 0.407407 +vt -0.000000 0.425926 vt 0.250000 1.000000 vt 0.196429 0.944444 vt 0.589286 0.740741 vt 0.446429 0.759259 -vt 0.428571 0.222222 -vt 0.428571 0.000000 -vt 0.214286 -0.000000 vn -0.0000 -0.7071 0.7071 vn -0.7071 -0.7071 0.0000 vn -0.0000 -0.7071 -0.7071 -vn 0.0000 -1.0000 0.0000 vn 1.0000 -0.0000 0.0000 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 vn -1.0000 0.0000 0.0000 vn 0.0000 1.0000 0.0000 -vn 0.7071 -0.0000 -0.7071 -vn -0.7071 0.0000 -0.7071 +vn -0.0000 -1.0000 0.0000 vn 0.7071 -0.7071 0.0000 vn 0.0000 0.4472 -0.8944 vn -0.4472 0.0000 -0.8944 vn -0.0000 -0.4472 -0.8944 vn 0.4472 -0.0000 -0.8944 s off -f 335/499/16 326/500/16 369/501/16 -f 331/502/17 334/503/17 325/504/17 -f 336/505/18 348/506/18 370/507/18 -f 366/508/19 361/509/19 362/510/19 -f 360/511/19 356/512/19 368/513/19 -f 350/514/19 352/515/19 351/516/19 -f 337/517/20 355/518/20 335/519/20 -f 350/514/21 331/520/21 330/521/21 -f 363/522/21 347/523/21 343/524/21 -f 339/525/21 357/526/21 337/517/21 -f 352/527/22 329/528/22 332/529/22 -f 348/530/22 364/531/22 344/532/22 -f 358/533/22 340/534/22 338/535/22 -f 351/536/23 334/537/23 331/520/23 -f 360/511/23 348/530/23 340/534/23 -f 344/532/20 361/538/20 341/539/20 -f 333/540/23 352/527/23 332/529/23 -f 347/523/23 359/541/23 339/525/23 -f 362/542/20 343/524/20 342/543/20 -f 335/519/21 353/544/21 333/540/21 -f 341/539/21 365/545/21 345/546/21 -f 354/547/22 336/548/22 334/537/22 -f 366/549/22 342/543/22 346/550/22 -f 356/551/20 338/535/20 336/548/20 -f 349/552/23 330/521/23 329/528/23 -f 365/545/20 346/553/20 345/546/20 -f 355/554/19 359/541/19 367/555/19 -f 319/556/21 355/557/21 367/558/21 -f 320/559/23 351/560/23 352/561/23 -f 361/562/20 364/563/20 322/564/20 -f 327/565/22 323/566/22 324/567/22 -f 327/565/18 368/513/18 356/512/18 -f 347/568/24 337/569/24 335/499/24 -f 338/535/24 348/506/24 336/505/24 -f 322/564/25 327/565/25 324/567/25 -f 328/570/26 320/559/26 323/566/26 -f 345/571/24 342/572/24 341/573/24 -f 330/574/24 332/575/24 329/576/24 -f 369/501/19 325/504/19 370/507/19 -f 370/507/27 341/573/27 342/572/27 -f 383/577/22 385/578/22 384/579/22 -f 375/580/22 377/581/22 376/582/22 -f 377/581/20 374/583/20 372/584/20 -f 375/580/23 371/585/23 373/586/23 -f 378/587/24 373/588/24 374/589/24 -f 376/582/19 372/590/19 371/591/19 -f 385/578/20 382/592/20 380/593/20 -f 383/577/23 379/594/23 381/595/23 -f 386/596/24 381/597/24 382/598/24 -f 384/579/19 380/599/19 379/600/19 -f 389/601/19 393/602/19 394/603/19 -f 387/604/24 392/605/24 391/606/24 -f 390/607/23 394/608/23 392/609/23 -f 388/610/20 391/611/20 393/612/20 -f 397/613/19 401/614/19 402/615/19 -f 395/616/24 400/617/24 399/618/24 -f 398/619/23 402/620/23 400/621/23 -f 396/622/20 399/623/20 401/624/20 -f 398/619/22 396/622/22 397/613/22 -f 390/607/22 388/610/22 389/601/22 -f 405/625/19 404/626/19 403/627/19 -f 414/628/22 412/629/22 413/630/22 -f 413/630/28 411/631/28 408/632/28 -f 412/629/29 406/633/29 411/631/29 -f 410/634/30 404/626/30 406/633/30 -f 411/631/24 407/635/24 408/632/24 -f 414/628/31 408/632/31 404/626/31 -f 411/631/23 405/636/23 409/637/23 -f 408/632/20 403/638/20 404/626/20 -f 427/639/23 429/640/23 428/641/23 -f 419/642/23 421/643/23 420/644/23 -f 421/643/22 418/645/22 416/646/22 -f 419/642/21 415/647/21 417/648/21 -f 422/649/24 417/650/24 418/651/24 -f 420/644/19 416/652/19 415/653/19 -f 429/640/22 426/654/22 424/655/22 -f 427/639/21 423/656/21 425/657/21 -f 430/658/24 425/659/24 426/660/24 -f 428/641/19 424/661/19 423/662/19 -f 443/663/23 445/664/23 444/665/23 -f 435/666/23 437/667/23 436/668/23 -f 437/667/22 434/669/22 432/670/22 -f 435/666/21 431/671/21 433/672/21 -f 438/673/24 433/674/24 434/675/24 -f 436/668/19 432/676/19 431/677/19 -f 445/664/22 442/678/22 440/679/22 -f 443/663/21 439/680/21 441/681/21 -f 446/682/24 441/683/24 442/684/24 -f 444/665/19 440/685/19 439/686/19 -f 449/687/19 453/688/19 454/689/19 -f 447/690/24 452/691/24 451/692/24 -f 450/693/21 454/694/21 452/695/21 -f 448/696/22 451/697/22 453/698/22 -f 457/699/19 461/700/19 462/701/19 -f 455/702/24 460/703/24 459/704/24 -f 458/705/21 462/706/21 460/707/21 -f 456/708/22 459/709/22 461/710/22 -f 458/705/23 456/708/23 457/699/23 -f 450/693/23 448/696/23 449/687/23 -f 465/711/19 469/712/19 470/713/19 -f 463/714/24 468/715/24 467/716/24 -f 466/717/21 470/718/21 468/719/21 -f 464/720/22 467/721/22 469/722/22 -f 473/723/19 477/724/19 478/725/19 -f 471/726/24 476/727/24 475/728/24 -f 474/729/21 478/730/21 476/731/21 -f 472/732/22 475/733/22 477/734/22 -f 474/729/23 472/732/23 473/723/23 -f 466/717/23 464/720/23 465/711/23 -f 491/735/21 493/736/21 492/737/21 -f 483/738/21 485/739/21 484/740/21 -f 485/739/23 482/741/23 480/742/23 -f 483/738/20 479/743/20 481/744/20 -f 486/745/24 481/746/24 482/747/24 -f 484/740/19 480/748/19 479/749/19 -f 493/736/23 490/750/23 488/751/23 -f 491/735/20 487/752/20 489/753/20 -f 494/754/24 489/755/24 490/756/24 -f 492/737/19 488/757/19 487/758/19 -f 507/759/21 509/760/21 508/761/21 -f 499/762/21 501/763/21 500/764/21 -f 501/763/23 498/765/23 496/766/23 -f 499/762/20 495/767/20 497/768/20 -f 502/769/24 497/770/24 498/771/24 -f 500/764/19 496/772/19 495/773/19 -f 509/760/23 506/774/23 504/775/23 -f 507/759/20 503/776/20 505/777/20 -f 510/778/24 505/779/24 506/780/24 -f 508/761/19 504/781/19 503/782/19 -f 513/783/19 517/784/19 518/785/19 -f 511/786/24 516/787/24 515/788/24 -f 514/789/20 518/790/20 516/791/20 -f 512/792/23 515/793/23 517/794/23 -f 521/795/19 525/796/19 526/797/19 -f 519/798/24 524/799/24 523/800/24 -f 522/801/20 526/802/20 524/803/20 -f 520/804/23 523/805/23 525/806/23 -f 522/801/21 520/804/21 521/795/21 -f 514/789/21 512/792/21 513/783/21 -f 529/807/19 533/808/19 534/809/19 -f 527/810/24 532/811/24 531/812/24 -f 530/813/20 534/814/20 532/815/20 -f 528/816/23 531/817/23 533/818/23 -f 537/819/19 541/820/19 542/821/19 -f 535/822/24 540/823/24 539/824/24 -f 538/825/20 542/826/20 540/827/20 -f 536/828/23 539/829/23 541/830/23 -f 538/825/21 536/828/21 537/819/21 -f 530/813/21 528/816/21 529/807/21 -f 322/831/24 324/567/24 323/566/24 -f 369/501/16 343/832/16 347/568/16 -f 335/499/16 333/833/16 326/500/16 -f 369/501/16 347/568/16 335/499/16 -f 325/504/17 326/500/17 332/575/17 -f 326/500/17 333/833/17 332/575/17 -f 332/575/17 331/502/17 325/504/17 -f 348/506/18 344/834/18 370/507/18 -f 370/507/18 325/504/18 336/505/18 -f 325/504/18 334/503/18 336/505/18 -f 366/508/19 365/545/19 361/509/19 -f 360/511/19 358/533/19 356/512/19 -f 350/514/19 349/552/19 352/515/19 -f 337/517/20 357/526/20 355/518/20 -f 350/514/21 351/536/21 331/520/21 -f 363/522/21 367/835/21 347/523/21 -f 339/525/21 359/541/21 357/526/21 -f 352/527/22 349/552/22 329/528/22 -f 348/530/22 368/836/22 364/531/22 -f 358/533/22 360/511/22 340/534/22 -f 351/536/23 354/547/23 334/537/23 -f 360/511/23 368/836/23 348/530/23 -f 344/532/20 364/531/20 361/538/20 -f 333/540/23 353/544/23 352/527/23 -f 347/523/23 367/835/23 359/541/23 -f 362/542/20 363/522/20 343/524/20 -f 335/519/21 355/518/21 353/544/21 -f 341/539/21 361/538/21 365/545/21 -f 354/547/22 356/551/22 336/548/22 -f 366/549/22 362/542/22 342/543/22 -f 356/551/20 358/533/20 338/535/20 -f 349/552/23 350/514/23 330/521/23 -f 365/545/20 366/508/20 346/553/20 -f 355/554/19 357/526/19 359/541/19 -f 363/837/21 321/838/21 367/558/21 -f 321/838/21 319/556/21 367/558/21 -f 319/556/21 353/839/21 355/557/21 -f 353/839/23 319/556/23 352/561/23 -f 319/556/23 320/559/23 352/561/23 -f 320/559/23 354/840/23 351/560/23 -f 322/564/20 321/841/20 362/842/20 -f 321/841/20 363/843/20 362/842/20 -f 362/842/20 361/562/20 322/564/20 -f 327/565/22 328/570/22 323/566/22 -f 354/840/18 328/570/18 356/512/18 -f 328/570/18 327/565/18 356/512/18 -f 327/565/18 364/563/18 368/513/18 -f 347/568/24 339/844/24 337/569/24 -f 338/535/24 340/534/24 348/506/24 -f 322/564/25 364/563/25 327/565/25 -f 328/570/26 354/840/26 320/559/26 -f 345/571/24 346/845/24 342/572/24 -f 330/574/24 331/502/24 332/575/24 -f 369/501/19 326/500/19 325/504/19 -f 343/832/27 369/501/27 342/572/27 -f 369/501/27 370/507/27 342/572/27 -f 370/507/27 344/834/27 341/573/27 -f 383/577/22 386/596/22 385/578/22 -f 375/580/22 378/587/22 377/581/22 -f 377/581/20 378/587/20 374/583/20 -f 375/580/23 376/582/23 371/585/23 -f 378/587/24 375/580/24 373/588/24 -f 376/582/19 377/581/19 372/590/19 -f 385/578/20 386/596/20 382/592/20 -f 383/577/23 384/579/23 379/594/23 -f 386/596/24 383/577/24 381/597/24 -f 384/579/19 385/578/19 380/599/19 -f 389/601/19 388/610/19 393/602/19 -f 387/604/24 390/607/24 392/605/24 -f 390/607/23 389/601/23 394/608/23 -f 388/610/20 387/604/20 391/611/20 -f 397/613/19 396/622/19 401/614/19 -f 395/616/24 398/619/24 400/617/24 -f 398/619/23 397/613/23 402/620/23 -f 396/622/20 395/616/20 399/623/20 -f 398/619/22 395/616/22 396/622/22 -f 390/607/22 387/604/22 388/610/22 -f 405/625/19 406/633/19 404/626/19 -f 414/628/22 410/634/22 412/629/22 -f 413/630/28 412/629/28 411/631/28 -f 412/629/29 410/634/29 406/633/29 -f 410/634/30 414/628/30 404/626/30 -f 411/631/24 409/846/24 407/635/24 -f 414/628/31 413/630/31 408/632/31 -f 411/631/23 406/633/23 405/636/23 -f 408/632/20 407/847/20 403/638/20 -f 427/639/23 430/658/23 429/640/23 -f 419/642/23 422/649/23 421/643/23 -f 421/643/22 422/649/22 418/645/22 -f 419/642/21 420/644/21 415/647/21 -f 422/649/24 419/642/24 417/650/24 -f 420/644/19 421/643/19 416/652/19 -f 429/640/22 430/658/22 426/654/22 -f 427/639/21 428/641/21 423/656/21 -f 430/658/24 427/639/24 425/659/24 -f 428/641/19 429/640/19 424/661/19 -f 443/663/23 446/682/23 445/664/23 -f 435/666/23 438/673/23 437/667/23 -f 437/667/22 438/673/22 434/669/22 -f 435/666/21 436/668/21 431/671/21 -f 438/673/24 435/666/24 433/674/24 -f 436/668/19 437/667/19 432/676/19 -f 445/664/22 446/682/22 442/678/22 -f 443/663/21 444/665/21 439/680/21 -f 446/682/24 443/663/24 441/683/24 -f 444/665/19 445/664/19 440/685/19 -f 449/687/19 448/696/19 453/688/19 -f 447/690/24 450/693/24 452/691/24 -f 450/693/21 449/687/21 454/694/21 -f 448/696/22 447/690/22 451/697/22 -f 457/699/19 456/708/19 461/700/19 -f 455/702/24 458/705/24 460/703/24 -f 458/705/21 457/699/21 462/706/21 -f 456/708/22 455/702/22 459/709/22 -f 458/705/23 455/702/23 456/708/23 -f 450/693/23 447/690/23 448/696/23 -f 465/711/19 464/720/19 469/712/19 -f 463/714/24 466/717/24 468/715/24 -f 466/717/21 465/711/21 470/718/21 -f 464/720/22 463/714/22 467/721/22 -f 473/723/19 472/732/19 477/724/19 -f 471/726/24 474/729/24 476/727/24 -f 474/729/21 473/723/21 478/730/21 -f 472/732/22 471/726/22 475/733/22 -f 474/729/23 471/726/23 472/732/23 -f 466/717/23 463/714/23 464/720/23 -f 491/735/21 494/754/21 493/736/21 -f 483/738/21 486/745/21 485/739/21 -f 485/739/23 486/745/23 482/741/23 -f 483/738/20 484/740/20 479/743/20 -f 486/745/24 483/738/24 481/746/24 -f 484/740/19 485/739/19 480/748/19 -f 493/736/23 494/754/23 490/750/23 -f 491/735/20 492/737/20 487/752/20 -f 494/754/24 491/735/24 489/755/24 -f 492/737/19 493/736/19 488/757/19 -f 507/759/21 510/778/21 509/760/21 -f 499/762/21 502/769/21 501/763/21 -f 501/763/23 502/769/23 498/765/23 -f 499/762/20 500/764/20 495/767/20 -f 502/769/24 499/762/24 497/770/24 -f 500/764/19 501/763/19 496/772/19 -f 509/760/23 510/778/23 506/774/23 -f 507/759/20 508/761/20 503/776/20 -f 510/778/24 507/759/24 505/779/24 -f 508/761/19 509/760/19 504/781/19 -f 513/783/19 512/792/19 517/784/19 -f 511/786/24 514/789/24 516/787/24 -f 514/789/20 513/783/20 518/790/20 -f 512/792/23 511/786/23 515/793/23 -f 521/795/19 520/804/19 525/796/19 -f 519/798/24 522/801/24 524/799/24 -f 522/801/20 521/795/20 526/802/20 -f 520/804/23 519/798/23 523/805/23 -f 522/801/21 519/798/21 520/804/21 -f 514/789/21 511/786/21 512/792/21 -f 529/807/19 528/816/19 533/808/19 -f 527/810/24 530/813/24 532/811/24 -f 530/813/20 529/807/20 534/814/20 -f 528/816/23 527/810/23 531/817/23 -f 537/819/19 536/828/19 541/820/19 -f 535/822/24 538/825/24 540/823/24 -f 538/825/20 537/819/20 542/826/20 -f 536/828/23 535/822/23 539/829/23 -f 538/825/21 535/822/21 536/828/21 -f 530/813/21 527/810/21 528/816/21 -f 323/566/24 320/848/24 322/831/24 -f 320/848/24 319/849/24 322/831/24 -f 319/849/24 321/850/24 322/831/24 +f 383/579/34 376/580/34 417/581/34 +f 379/582/35 382/583/35 375/584/35 +f 384/585/36 396/586/36 418/587/36 +f 385/588/37 403/589/37 383/590/37 +f 398/591/38 379/592/38 378/593/38 +f 411/594/38 395/595/38 391/596/38 +f 387/597/38 405/598/38 385/588/38 +f 400/599/39 377/600/39 380/601/39 +f 396/602/39 412/603/39 392/604/39 +f 406/605/39 388/606/39 386/607/39 +f 399/608/40 382/609/40 379/592/40 +f 408/610/40 396/602/40 388/606/40 +f 392/604/37 409/611/37 389/612/37 +f 381/613/40 400/599/40 380/601/40 +f 395/595/40 407/614/40 387/597/40 +f 410/615/37 391/596/37 390/616/37 +f 383/590/38 401/617/38 381/613/38 +f 389/612/38 413/618/38 393/619/38 +f 402/620/39 384/621/39 382/609/39 +f 414/622/39 390/616/39 394/623/39 +f 404/624/37 386/607/37 384/621/37 +f 397/625/40 378/593/40 377/600/40 +f 413/618/37 394/626/37 393/619/37 +f 395/627/41 385/628/41 383/579/41 +f 386/607/41 396/586/41 384/585/41 +f 393/629/41 390/630/41 389/631/41 +f 378/632/41 380/633/41 377/634/41 +f 417/581/42 375/584/42 418/587/42 +f 418/587/43 389/631/43 390/630/43 +f 431/635/39 433/636/39 432/637/39 +f 423/638/39 425/639/39 424/640/39 +f 425/639/37 422/641/37 420/642/37 +f 423/638/40 419/643/40 421/644/40 +f 426/645/41 421/646/41 422/647/41 +f 424/640/42 420/648/42 419/649/42 +f 433/636/37 430/650/37 428/651/37 +f 431/635/40 427/652/40 429/653/40 +f 434/654/41 429/655/41 430/656/41 +f 432/637/42 428/657/42 427/658/42 +f 437/659/42 441/660/42 442/661/42 +f 435/662/41 440/663/41 439/664/41 +f 438/665/40 442/666/40 440/667/40 +f 436/668/37 439/669/37 441/670/37 +f 445/671/42 449/672/42 450/673/42 +f 443/674/41 448/675/41 447/676/41 +f 446/677/40 450/678/40 448/679/40 +f 444/680/37 447/681/37 449/682/37 +f 446/677/39 444/680/39 445/671/39 +f 438/665/39 436/668/39 437/659/39 +f 453/683/42 452/684/42 451/685/42 +f 462/686/39 460/687/39 461/688/39 +f 461/688/44 459/689/44 456/690/44 +f 460/687/45 454/691/45 459/689/45 +f 458/692/46 452/684/46 454/691/46 +f 459/689/41 455/693/41 456/690/41 +f 462/686/47 456/690/47 452/684/47 +f 459/689/40 453/694/40 457/695/40 +f 456/690/37 451/696/37 452/684/37 +f 475/697/40 477/698/40 476/699/40 +f 467/700/40 469/701/40 468/702/40 +f 469/701/39 466/703/39 464/704/39 +f 467/700/38 463/705/38 465/706/38 +f 470/707/41 465/708/41 466/709/41 +f 468/702/42 464/710/42 463/711/42 +f 477/698/39 474/712/39 472/713/39 +f 475/697/38 471/714/38 473/715/38 +f 478/716/41 473/717/41 474/718/41 +f 476/699/42 472/719/42 471/720/42 +f 491/721/40 493/722/40 492/723/40 +f 483/724/40 485/725/40 484/726/40 +f 485/725/39 482/727/39 480/728/39 +f 483/724/38 479/729/38 481/730/38 +f 486/731/41 481/732/41 482/733/41 +f 484/726/42 480/734/42 479/735/42 +f 493/722/39 490/736/39 488/737/39 +f 491/721/38 487/738/38 489/739/38 +f 494/740/41 489/741/41 490/742/41 +f 492/723/42 488/743/42 487/744/42 +f 497/745/42 501/746/42 502/747/42 +f 495/748/41 500/749/41 499/750/41 +f 498/751/38 502/752/38 500/753/38 +f 496/754/39 499/755/39 501/756/39 +f 505/757/42 509/758/42 510/759/42 +f 503/760/41 508/761/41 507/762/41 +f 506/763/38 510/764/38 508/765/38 +f 504/766/39 507/767/39 509/768/39 +f 506/763/40 504/766/40 505/757/40 +f 498/751/40 496/754/40 497/745/40 +f 513/769/42 517/770/42 518/771/42 +f 511/772/41 516/773/41 515/774/41 +f 514/775/38 518/776/38 516/777/38 +f 512/778/39 515/779/39 517/780/39 +f 521/781/42 525/782/42 526/783/42 +f 519/784/41 524/785/41 523/786/41 +f 522/787/38 526/788/38 524/789/38 +f 520/790/39 523/791/39 525/792/39 +f 522/787/40 520/790/40 521/781/40 +f 514/775/40 512/778/40 513/769/40 +f 539/793/38 541/794/38 540/795/38 +f 531/796/38 533/797/38 532/798/38 +f 533/797/40 530/799/40 528/800/40 +f 531/796/37 527/801/37 529/802/37 +f 534/803/41 529/804/41 530/805/41 +f 532/798/42 528/806/42 527/807/42 +f 541/794/40 538/808/40 536/809/40 +f 539/793/37 535/810/37 537/811/37 +f 542/812/41 537/813/41 538/814/41 +f 540/795/42 536/815/42 535/816/42 +f 555/817/38 557/818/38 556/819/38 +f 547/820/38 549/821/38 548/822/38 +f 549/821/40 546/823/40 544/824/40 +f 547/820/37 543/825/37 545/826/37 +f 550/827/41 545/828/41 546/829/41 +f 548/822/42 544/830/42 543/831/42 +f 557/818/40 554/832/40 552/833/40 +f 555/817/37 551/834/37 553/835/37 +f 558/836/41 553/837/41 554/838/41 +f 556/819/42 552/839/42 551/840/42 +f 561/841/42 565/842/42 566/843/42 +f 559/844/41 564/845/41 563/846/41 +f 562/847/37 566/848/37 564/849/37 +f 560/850/40 563/851/40 565/852/40 +f 569/853/42 573/854/42 574/855/42 +f 567/856/41 572/857/41 571/858/41 +f 570/859/37 574/860/37 572/861/37 +f 568/862/40 571/863/40 573/864/40 +f 570/859/38 568/862/38 569/853/38 +f 562/847/38 560/850/38 561/841/38 +f 577/865/42 581/866/42 582/867/42 +f 575/868/41 580/869/41 579/870/41 +f 578/871/37 582/872/37 580/873/37 +f 576/874/40 579/875/40 581/876/40 +f 585/877/42 589/878/42 590/879/42 +f 583/880/41 588/881/41 587/882/41 +f 586/883/37 590/884/37 588/885/37 +f 584/886/40 587/887/40 589/888/40 +f 586/883/38 584/886/38 585/877/38 +f 578/871/38 576/874/38 577/865/38 +f 417/581/34 391/889/34 395/627/34 +f 383/579/34 381/890/34 376/580/34 +f 417/581/34 395/627/34 383/579/34 +f 375/584/35 376/580/35 380/633/35 +f 376/580/35 381/890/35 380/633/35 +f 380/633/35 379/582/35 375/584/35 +f 396/586/36 392/891/36 418/587/36 +f 418/587/36 375/584/36 384/585/36 +f 375/584/36 382/583/36 384/585/36 +f 385/588/37 405/598/37 403/589/37 +f 398/591/38 399/608/38 379/592/38 +f 411/594/38 415/892/38 395/595/38 +f 387/597/38 407/614/38 405/598/38 +f 400/599/39 397/625/39 377/600/39 +f 396/602/39 416/893/39 412/603/39 +f 406/605/39 408/610/39 388/606/39 +f 399/608/40 402/620/40 382/609/40 +f 408/610/40 416/893/40 396/602/40 +f 392/604/37 412/603/37 409/611/37 +f 381/613/40 401/617/40 400/599/40 +f 395/595/40 415/892/40 407/614/40 +f 410/615/37 411/594/37 391/596/37 +f 383/590/38 403/589/38 401/617/38 +f 389/612/38 409/611/38 413/618/38 +f 402/620/39 404/624/39 384/621/39 +f 414/622/39 410/615/39 390/616/39 +f 404/624/37 406/605/37 386/607/37 +f 397/625/40 398/591/40 378/593/40 +f 413/618/37 414/894/37 394/626/37 +f 395/627/41 387/895/41 385/628/41 +f 386/607/41 388/606/41 396/586/41 +f 393/629/41 394/896/41 390/630/41 +f 378/632/41 379/582/41 380/633/41 +f 417/581/42 376/580/42 375/584/42 +f 391/889/43 417/581/43 390/630/43 +f 417/581/43 418/587/43 390/630/43 +f 418/587/43 392/891/43 389/631/43 +f 431/635/39 434/654/39 433/636/39 +f 423/638/39 426/645/39 425/639/39 +f 425/639/37 426/645/37 422/641/37 +f 423/638/40 424/640/40 419/643/40 +f 426/645/41 423/638/41 421/646/41 +f 424/640/42 425/639/42 420/648/42 +f 433/636/37 434/654/37 430/650/37 +f 431/635/40 432/637/40 427/652/40 +f 434/654/41 431/635/41 429/655/41 +f 432/637/42 433/636/42 428/657/42 +f 437/659/42 436/668/42 441/660/42 +f 435/662/41 438/665/41 440/663/41 +f 438/665/40 437/659/40 442/666/40 +f 436/668/37 435/662/37 439/669/37 +f 445/671/42 444/680/42 449/672/42 +f 443/674/41 446/677/41 448/675/41 +f 446/677/40 445/671/40 450/678/40 +f 444/680/37 443/674/37 447/681/37 +f 446/677/39 443/674/39 444/680/39 +f 438/665/39 435/662/39 436/668/39 +f 453/683/42 454/691/42 452/684/42 +f 462/686/39 458/692/39 460/687/39 +f 461/688/44 460/687/44 459/689/44 +f 460/687/45 458/692/45 454/691/45 +f 458/692/46 462/686/46 452/684/46 +f 459/689/41 457/897/41 455/693/41 +f 462/686/47 461/688/47 456/690/47 +f 459/689/40 454/691/40 453/694/40 +f 456/690/37 455/898/37 451/696/37 +f 475/697/40 478/716/40 477/698/40 +f 467/700/40 470/707/40 469/701/40 +f 469/701/39 470/707/39 466/703/39 +f 467/700/38 468/702/38 463/705/38 +f 470/707/41 467/700/41 465/708/41 +f 468/702/42 469/701/42 464/710/42 +f 477/698/39 478/716/39 474/712/39 +f 475/697/38 476/699/38 471/714/38 +f 478/716/41 475/697/41 473/717/41 +f 476/699/42 477/698/42 472/719/42 +f 491/721/40 494/740/40 493/722/40 +f 483/724/40 486/731/40 485/725/40 +f 485/725/39 486/731/39 482/727/39 +f 483/724/38 484/726/38 479/729/38 +f 486/731/41 483/724/41 481/732/41 +f 484/726/42 485/725/42 480/734/42 +f 493/722/39 494/740/39 490/736/39 +f 491/721/38 492/723/38 487/738/38 +f 494/740/41 491/721/41 489/741/41 +f 492/723/42 493/722/42 488/743/42 +f 497/745/42 496/754/42 501/746/42 +f 495/748/41 498/751/41 500/749/41 +f 498/751/38 497/745/38 502/752/38 +f 496/754/39 495/748/39 499/755/39 +f 505/757/42 504/766/42 509/758/42 +f 503/760/41 506/763/41 508/761/41 +f 506/763/38 505/757/38 510/764/38 +f 504/766/39 503/760/39 507/767/39 +f 506/763/40 503/760/40 504/766/40 +f 498/751/40 495/748/40 496/754/40 +f 513/769/42 512/778/42 517/770/42 +f 511/772/41 514/775/41 516/773/41 +f 514/775/38 513/769/38 518/776/38 +f 512/778/39 511/772/39 515/779/39 +f 521/781/42 520/790/42 525/782/42 +f 519/784/41 522/787/41 524/785/41 +f 522/787/38 521/781/38 526/788/38 +f 520/790/39 519/784/39 523/791/39 +f 522/787/40 519/784/40 520/790/40 +f 514/775/40 511/772/40 512/778/40 +f 539/793/38 542/812/38 541/794/38 +f 531/796/38 534/803/38 533/797/38 +f 533/797/40 534/803/40 530/799/40 +f 531/796/37 532/798/37 527/801/37 +f 534/803/41 531/796/41 529/804/41 +f 532/798/42 533/797/42 528/806/42 +f 541/794/40 542/812/40 538/808/40 +f 539/793/37 540/795/37 535/810/37 +f 542/812/41 539/793/41 537/813/41 +f 540/795/42 541/794/42 536/815/42 +f 555/817/38 558/836/38 557/818/38 +f 547/820/38 550/827/38 549/821/38 +f 549/821/40 550/827/40 546/823/40 +f 547/820/37 548/822/37 543/825/37 +f 550/827/41 547/820/41 545/828/41 +f 548/822/42 549/821/42 544/830/42 +f 557/818/40 558/836/40 554/832/40 +f 555/817/37 556/819/37 551/834/37 +f 558/836/41 555/817/41 553/837/41 +f 556/819/42 557/818/42 552/839/42 +f 561/841/42 560/850/42 565/842/42 +f 559/844/41 562/847/41 564/845/41 +f 562/847/37 561/841/37 566/848/37 +f 560/850/40 559/844/40 563/851/40 +f 569/853/42 568/862/42 573/854/42 +f 567/856/41 570/859/41 572/857/41 +f 570/859/37 569/853/37 574/860/37 +f 568/862/40 567/856/40 571/863/40 +f 570/859/38 567/856/38 568/862/38 +f 562/847/38 559/844/38 560/850/38 +f 577/865/42 576/874/42 581/866/42 +f 575/868/41 578/871/41 580/869/41 +f 578/871/37 577/865/37 582/872/37 +f 576/874/40 575/868/40 579/875/40 +f 585/877/42 584/886/42 589/878/42 +f 583/880/41 586/883/41 588/881/41 +f 586/883/37 585/877/37 590/884/37 +f 584/886/40 583/880/40 587/887/40 +f 586/883/38 583/880/38 584/886/38 +f 578/871/38 575/868/38 576/874/38 o Body v -4.500008 0.000002 -2.500000 v 4.499992 -0.000002 -2.500000 @@ -2822,320 +2972,312 @@ vn 0.0000 -0.9239 0.3827 vn -0.7071 -0.1830 0.6830 vn 0.7071 0.1830 -0.6830 s off -f 545/851/32 571/852/32 583/853/32 -f 543/854/32 576/855/32 581/856/32 -f 543/857/32 567/858/32 555/859/32 -f 544/860/32 572/861/32 552/862/32 -f 544/863/32 568/864/32 579/865/32 -f 545/866/32 564/867/32 560/868/32 -f 547/869/33 549/870/33 548/871/33 -f 552/872/34 553/873/34 551/874/34 -f 555/875/35 558/876/35 556/877/35 -f 560/878/36 561/879/36 559/880/36 -f 561/879/34 563/881/34 559/880/34 -f 560/878/33 566/882/33 562/883/33 -f 555/875/34 569/884/34 557/885/34 -f 558/876/33 568/864/33 556/877/33 -f 552/872/36 574/886/36 554/887/36 -f 553/873/35 571/852/35 551/874/35 -f 549/870/36 576/855/36 548/871/36 -f 547/888/35 578/889/35 550/890/35 -f 577/891/33 581/856/33 576/855/33 -f 572/861/34 580/892/34 574/886/34 -f 575/893/33 586/894/33 578/889/33 -f 573/895/34 583/853/34 571/852/34 -f 565/896/36 585/897/36 563/881/36 -f 564/867/36 584/898/36 566/882/36 -f 567/858/35 582/899/35 569/884/35 -f 580/892/35 568/864/35 570/900/35 -f 588/901/32 589/902/32 587/903/32 -f 593/904/37 591/905/37 592/906/37 -f 546/907/32 563/881/32 585/897/32 -f 546/908/32 575/893/32 547/909/32 -f 548/910/38 588/901/38 587/903/38 -f 555/911/39 556/912/39 590/913/39 -f 552/914/40 551/915/40 589/902/40 -f 560/916/41 559/917/41 587/903/41 -f 596/918/37 573/895/37 553/919/37 -f 566/882/37 596/920/37 562/921/37 -f 578/889/37 595/922/37 550/923/37 -f 595/924/37 565/896/37 561/925/37 -f 597/926/37 577/891/37 549/927/37 -f 574/886/37 598/928/37 554/929/37 -f 598/930/37 570/900/37 558/931/37 -f 569/884/37 597/932/37 557/933/37 -f 592/906/42 595/934/42 561/935/42 -f 593/904/43 596/936/43 553/937/43 -f 591/905/44 594/938/44 558/939/44 -f 591/905/45 597/940/45 549/941/45 -f 599/942/32 602/943/32 600/944/32 -f 601/945/35 604/946/35 602/943/35 -f 603/947/46 606/948/46 604/946/46 -f 599/949/33 603/947/33 601/945/33 -f 604/946/34 600/950/34 602/943/34 -f 607/951/35 610/952/35 608/953/35 -f 625/954/35 623/955/35 624/956/35 -f 617/957/35 615/958/35 616/959/35 -f 611/960/34 615/958/34 613/961/34 -f 613/962/37 618/963/37 614/964/37 -f 612/965/32 616/959/32 611/966/32 -f 614/967/33 617/957/33 612/968/33 -f 619/969/34 623/955/34 621/970/34 -f 621/971/37 626/972/37 622/973/37 -f 620/974/32 624/956/32 619/975/32 -f 622/976/33 625/954/33 620/977/33 -f 641/978/35 639/979/35 640/980/35 -f 633/981/35 631/982/35 632/983/35 -f 627/984/34 631/982/34 629/985/34 -f 629/986/37 634/987/37 630/988/37 -f 628/989/32 632/983/32 627/990/32 -f 630/991/33 633/981/33 628/992/33 -f 635/993/34 639/979/34 637/994/34 -f 637/995/37 642/996/37 638/997/37 -f 636/998/32 640/980/32 635/999/32 -f 638/1000/33 641/978/33 636/1001/33 -f 645/1002/47 650/1003/47 646/1004/47 -f 648/1005/32 643/1006/32 644/1007/32 -f 650/1003/48 647/1008/48 648/1005/48 -f 652/1009/34 646/1010/34 650/1003/34 -f 649/1011/33 645/1012/33 651/1013/33 -f 662/1014/33 660/1015/33 658/1016/33 -f 657/1017/34 659/1018/34 661/1019/34 -f 661/1019/36 663/1020/36 653/1021/36 -f 654/1022/36 666/1023/36 662/1014/36 -f 665/1024/33 670/1025/33 666/1023/33 -f 664/1026/34 667/1027/34 663/1020/34 -f 668/1028/32 664/1026/32 661/1029/32 -f 653/1030/37 667/1031/37 669/1032/37 -f 693/1033/49 691/1034/49 689/1035/49 -f 684/1036/50 685/1037/50 686/1038/50 -f 677/1039/50 678/1040/50 679/1041/50 -f 701/1042/49 696/1043/49 697/1044/49 -f 704/1045/50 705/1046/50 703/1047/50 -f 707/1048/49 709/1049/49 708/1050/49 -f 710/1051/51 705/1052/51 706/1053/51 -f 708/1050/52 704/1045/52 703/1047/52 -f 704/1054/53 710/1051/53 706/1055/53 -f 707/1048/54 703/1056/54 705/1057/54 -f 545/851/32 551/1058/32 571/852/32 -f 543/854/32 548/1059/32 576/855/32 -f 543/857/32 581/856/32 567/858/32 -f 544/860/32 579/865/32 572/861/32 -f 544/863/32 556/1060/32 568/864/32 -f 545/866/32 583/853/32 564/867/32 -f 547/869/33 550/1061/33 549/870/33 -f 552/872/34 554/887/34 553/873/34 -f 555/875/35 557/885/35 558/876/35 -f 560/878/36 562/883/36 561/879/36 -f 561/879/34 565/896/34 563/881/34 -f 560/878/33 564/867/33 566/882/33 -f 555/875/34 567/858/34 569/884/34 -f 558/876/33 570/900/33 568/864/33 -f 552/872/36 572/861/36 574/886/36 -f 553/873/35 573/895/35 571/852/35 -f 549/870/36 577/891/36 576/855/36 -f 547/888/35 575/893/35 578/889/35 -f 577/891/33 582/899/33 581/856/33 -f 572/861/34 579/865/34 580/892/34 -f 575/893/33 585/897/33 586/894/33 -f 573/895/34 584/898/34 583/853/34 -f 565/896/36 586/894/36 585/897/36 -f 564/867/36 583/853/36 584/898/36 -f 567/858/35 581/856/35 582/899/35 -f 580/892/35 579/865/35 568/864/35 -f 588/901/32 590/913/32 589/902/32 -f 593/904/37 594/938/37 591/905/37 -f 546/907/32 559/1062/32 563/881/32 -f 546/908/32 585/897/32 575/893/32 -f 587/903/38 546/1063/38 547/1064/38 -f 548/910/38 543/1065/38 588/901/38 -f 587/903/38 547/1064/38 548/910/38 -f 556/912/39 544/1066/39 590/913/39 -f 590/913/39 588/901/39 555/911/39 -f 588/901/39 543/1067/39 555/911/39 -f 551/915/40 545/1068/40 589/902/40 -f 589/902/40 590/913/40 552/914/40 -f 590/913/40 544/1069/40 552/914/40 -f 559/917/41 546/1070/41 587/903/41 -f 587/903/41 589/902/41 560/916/41 -f 589/902/41 545/1071/41 560/916/41 -f 596/918/37 584/898/37 573/895/37 -f 566/882/37 584/898/37 596/920/37 -f 578/889/37 586/894/37 595/922/37 -f 595/924/37 586/894/37 565/896/37 -f 597/926/37 582/899/37 577/891/37 -f 574/886/37 580/892/37 598/928/37 -f 598/930/37 580/892/37 570/900/37 -f 569/884/37 582/899/37 597/932/37 -f 561/935/42 562/1072/42 592/906/42 -f 562/1072/42 596/1073/42 593/904/42 -f 592/906/42 562/1072/42 593/904/42 -f 553/937/43 554/1074/43 593/904/43 -f 554/1074/43 598/1075/43 594/938/43 -f 593/904/43 554/1074/43 594/938/43 -f 598/1076/44 558/939/44 594/938/44 -f 558/939/44 557/1077/44 591/905/44 -f 557/1077/44 597/1078/44 591/905/44 -f 549/941/45 550/1079/45 591/905/45 -f 550/1079/45 595/1080/45 592/906/45 -f 591/905/45 550/1079/45 592/906/45 -f 599/942/32 601/945/32 602/943/32 -f 601/945/35 603/947/35 604/946/35 -f 603/947/46 605/1081/46 606/948/46 -f 599/949/33 605/1082/33 603/947/33 -f 604/946/34 606/1083/34 600/950/34 -f 607/951/35 609/1084/35 610/952/35 -f 625/954/35 626/972/35 623/955/35 -f 617/957/35 618/963/35 615/958/35 -f 611/960/34 616/959/34 615/958/34 -f 613/962/37 615/958/37 618/963/37 -f 612/965/32 617/957/32 616/959/32 -f 614/967/33 618/963/33 617/957/33 -f 619/969/34 624/956/34 623/955/34 -f 621/971/37 623/955/37 626/972/37 -f 620/974/32 625/954/32 624/956/32 -f 622/976/33 626/972/33 625/954/33 -f 641/978/35 642/996/35 639/979/35 -f 633/981/35 634/987/35 631/982/35 -f 627/984/34 632/983/34 631/982/34 -f 629/986/37 631/982/37 634/987/37 -f 628/989/32 633/981/32 632/983/32 -f 630/991/33 634/987/33 633/981/33 -f 635/993/34 640/980/34 639/979/34 -f 637/995/37 639/979/37 642/996/37 -f 636/998/32 641/978/32 640/980/32 -f 638/1000/33 642/996/33 641/978/33 -f 645/1002/47 649/1011/47 650/1003/47 -f 648/1005/32 647/1008/32 643/1006/32 -f 650/1003/48 649/1011/48 647/1008/48 -f 648/1085/34 644/1086/34 650/1003/34 -f 644/1086/34 652/1009/34 650/1003/34 -f 651/1013/33 643/1087/33 649/1011/33 -f 643/1087/33 647/1088/33 649/1011/33 -f 658/1016/33 656/1089/33 654/1022/33 -f 654/1022/33 662/1014/33 658/1016/33 -f 661/1019/34 653/1021/34 655/1090/34 -f 655/1090/34 657/1017/34 661/1019/34 -f 661/1019/36 664/1026/36 663/1020/36 -f 654/1022/36 665/1024/36 666/1023/36 -f 665/1024/33 669/1091/33 670/1025/33 -f 664/1026/34 668/1028/34 667/1027/34 -f 661/1029/32 662/1092/32 668/1028/32 -f 662/1092/32 666/1023/32 670/1025/32 -f 668/1028/32 662/1092/32 670/1025/32 -f 669/1032/37 665/1093/37 654/1094/37 -f 653/1030/37 663/1095/37 667/1031/37 -f 669/1032/37 654/1094/37 653/1030/37 -f 689/1035/49 687/1096/49 688/1097/49 -f 688/1097/49 694/1098/49 689/1035/49 -f 694/1098/49 693/1033/49 689/1035/49 -f 693/1033/49 692/1099/49 691/1034/49 -f 691/1034/49 690/1100/49 689/1035/49 -f 686/1038/50 671/1101/50 682/1102/50 -f 671/1101/50 680/1103/50 682/1102/50 -f 680/1103/50 681/1104/50 682/1102/50 -f 682/1102/50 683/1105/50 686/1038/50 -f 683/1105/50 684/1036/50 686/1038/50 -f 679/1041/50 672/1106/50 675/1107/50 -f 672/1106/50 673/1108/50 675/1107/50 -f 673/1108/50 674/1109/50 675/1107/50 -f 675/1107/50 676/1110/50 679/1041/50 -f 676/1110/50 677/1039/50 679/1041/50 -f 697/1044/49 698/1111/49 700/1112/49 -f 700/1112/49 702/1113/49 697/1044/49 -f 702/1113/49 701/1042/49 697/1044/49 -f 701/1042/49 695/1114/49 696/1043/49 -f 696/1043/49 699/1115/49 697/1044/49 -f 704/1045/50 706/1116/50 705/1046/50 -f 707/1048/49 710/1051/49 709/1049/49 -f 710/1051/51 707/1048/51 705/1052/51 -f 708/1050/52 709/1049/52 704/1045/52 -f 704/1054/53 709/1049/53 710/1051/53 -f 707/1048/54 708/1050/54 703/1056/54 +f 593/899/48 619/900/48 631/901/48 +f 591/902/48 624/903/48 629/904/48 +f 591/905/48 615/906/48 603/907/48 +f 592/908/48 620/909/48 600/910/48 +f 592/911/48 616/912/48 627/913/48 +f 593/914/48 612/915/48 608/916/48 +f 595/917/49 597/918/49 596/919/49 +f 600/920/50 601/921/50 599/922/50 +f 603/923/51 606/924/51 604/925/51 +f 608/926/52 609/927/52 607/928/52 +f 609/927/50 611/929/50 607/928/50 +f 608/926/49 614/930/49 610/931/49 +f 603/923/50 617/932/50 605/933/50 +f 606/924/49 616/912/49 604/925/49 +f 600/920/52 622/934/52 602/935/52 +f 601/921/51 619/900/51 599/922/51 +f 597/918/52 624/903/52 596/919/52 +f 595/936/51 626/937/51 598/938/51 +f 625/939/49 629/904/49 624/903/49 +f 620/909/50 628/940/50 622/934/50 +f 623/941/49 634/942/49 626/937/49 +f 621/943/50 631/901/50 619/900/50 +f 613/944/52 633/945/52 611/929/52 +f 612/915/52 632/946/52 614/930/52 +f 615/906/51 630/947/51 617/932/51 +f 628/940/51 616/912/51 618/948/51 +f 636/949/48 637/950/48 635/951/48 +f 641/952/53 639/953/53 640/954/53 +f 594/955/48 611/929/48 633/945/48 +f 594/956/48 623/941/48 595/957/48 +f 596/958/54 636/949/54 635/951/54 +f 603/959/55 604/960/55 638/961/55 +f 600/962/56 599/963/56 637/950/56 +f 608/964/57 607/965/57 635/951/57 +f 644/966/53 621/943/53 601/967/53 +f 614/930/53 644/968/53 610/969/53 +f 626/937/53 643/970/53 598/971/53 +f 643/972/53 613/944/53 609/973/53 +f 645/974/53 625/939/53 597/975/53 +f 622/934/53 646/976/53 602/977/53 +f 646/978/53 618/948/53 606/979/53 +f 617/932/53 645/980/53 605/981/53 +f 640/954/58 643/982/58 609/983/58 +f 641/952/59 644/984/59 601/985/59 +f 639/953/60 642/986/60 606/987/60 +f 639/953/61 645/988/61 597/989/61 +f 647/990/48 650/991/48 648/992/48 +f 649/993/51 652/994/51 650/991/51 +f 651/995/62 654/996/62 652/994/62 +f 647/997/49 651/995/49 649/993/49 +f 652/994/50 648/998/50 650/991/50 +f 655/999/51 658/1000/51 656/1001/51 +f 673/1002/51 671/1003/51 672/1004/51 +f 665/1005/51 663/1006/51 664/1007/51 +f 659/1008/50 663/1006/50 661/1009/50 +f 661/1010/53 666/1011/53 662/1012/53 +f 660/1013/48 664/1007/48 659/1014/48 +f 662/1015/49 665/1005/49 660/1016/49 +f 667/1017/50 671/1003/50 669/1018/50 +f 669/1019/53 674/1020/53 670/1021/53 +f 668/1022/48 672/1004/48 667/1023/48 +f 670/1024/49 673/1002/49 668/1025/49 +f 689/1026/51 687/1027/51 688/1028/51 +f 681/1029/51 679/1030/51 680/1031/51 +f 675/1032/50 679/1030/50 677/1033/50 +f 677/1034/53 682/1035/53 678/1036/53 +f 676/1037/48 680/1031/48 675/1038/48 +f 678/1039/49 681/1029/49 676/1040/49 +f 683/1041/50 687/1027/50 685/1042/50 +f 685/1043/53 690/1044/53 686/1045/53 +f 684/1046/48 688/1028/48 683/1047/48 +f 686/1048/49 689/1026/49 684/1049/49 +f 693/1050/63 698/1051/63 694/1052/63 +f 696/1053/48 691/1054/48 692/1055/48 +f 698/1051/64 695/1056/64 696/1053/64 +f 700/1057/50 694/1058/50 698/1051/50 +f 697/1059/49 693/1060/49 699/1061/49 +f 710/1062/49 708/1063/49 706/1064/49 +f 705/1065/50 707/1066/50 709/1067/50 +f 709/1067/52 711/1068/52 701/1069/52 +f 702/1070/52 714/1071/52 710/1062/52 +f 713/1072/49 718/1073/49 714/1071/49 +f 712/1074/50 715/1075/50 711/1068/50 +f 716/1076/48 712/1074/48 709/1077/48 +f 701/1078/53 715/1079/53 717/1080/53 +f 741/1081/65 739/1082/65 737/1083/65 +f 732/1084/66 733/1085/66 734/1086/66 +f 725/1087/66 726/1088/66 727/1089/66 +f 749/1090/65 744/1091/65 745/1092/65 +f 752/1093/66 753/1094/66 751/1095/66 +f 755/1096/65 757/1097/65 756/1098/65 +f 758/1099/67 753/1100/67 754/1101/67 +f 756/1098/68 752/1093/68 751/1095/68 +f 752/1102/69 758/1099/69 754/1103/69 +f 755/1096/70 751/1104/70 753/1105/70 +f 593/899/48 599/1106/48 619/900/48 +f 591/902/48 596/1107/48 624/903/48 +f 591/905/48 629/904/48 615/906/48 +f 592/908/48 627/913/48 620/909/48 +f 592/911/48 604/1108/48 616/912/48 +f 593/914/48 631/901/48 612/915/48 +f 595/917/49 598/1109/49 597/918/49 +f 600/920/50 602/935/50 601/921/50 +f 603/923/51 605/933/51 606/924/51 +f 608/926/52 610/931/52 609/927/52 +f 609/927/50 613/944/50 611/929/50 +f 608/926/49 612/915/49 614/930/49 +f 603/923/50 615/906/50 617/932/50 +f 606/924/49 618/948/49 616/912/49 +f 600/920/52 620/909/52 622/934/52 +f 601/921/51 621/943/51 619/900/51 +f 597/918/52 625/939/52 624/903/52 +f 595/936/51 623/941/51 626/937/51 +f 625/939/49 630/947/49 629/904/49 +f 620/909/50 627/913/50 628/940/50 +f 623/941/49 633/945/49 634/942/49 +f 621/943/50 632/946/50 631/901/50 +f 613/944/52 634/942/52 633/945/52 +f 612/915/52 631/901/52 632/946/52 +f 615/906/51 629/904/51 630/947/51 +f 628/940/51 627/913/51 616/912/51 +f 636/949/48 638/961/48 637/950/48 +f 641/952/53 642/986/53 639/953/53 +f 594/955/48 607/1110/48 611/929/48 +f 594/956/48 633/945/48 623/941/48 +f 635/951/54 594/1111/54 595/1112/54 +f 596/958/54 591/1113/54 636/949/54 +f 635/951/54 595/1112/54 596/958/54 +f 604/960/55 592/1114/55 638/961/55 +f 638/961/55 636/949/55 603/959/55 +f 636/949/55 591/1115/55 603/959/55 +f 599/963/56 593/1116/56 637/950/56 +f 637/950/56 638/961/56 600/962/56 +f 638/961/56 592/1117/56 600/962/56 +f 607/965/57 594/1118/57 635/951/57 +f 635/951/57 637/950/57 608/964/57 +f 637/950/57 593/1119/57 608/964/57 +f 644/966/53 632/946/53 621/943/53 +f 614/930/53 632/946/53 644/968/53 +f 626/937/53 634/942/53 643/970/53 +f 643/972/53 634/942/53 613/944/53 +f 645/974/53 630/947/53 625/939/53 +f 622/934/53 628/940/53 646/976/53 +f 646/978/53 628/940/53 618/948/53 +f 617/932/53 630/947/53 645/980/53 +f 609/983/58 610/1120/58 640/954/58 +f 610/1120/58 644/1121/58 641/952/58 +f 640/954/58 610/1120/58 641/952/58 +f 601/985/59 602/1122/59 641/952/59 +f 602/1122/59 646/1123/59 642/986/59 +f 641/952/59 602/1122/59 642/986/59 +f 646/1124/60 606/987/60 642/986/60 +f 606/987/60 605/1125/60 639/953/60 +f 605/1125/60 645/1126/60 639/953/60 +f 597/989/61 598/1127/61 639/953/61 +f 598/1127/61 643/1128/61 640/954/61 +f 639/953/61 598/1127/61 640/954/61 +f 647/990/48 649/993/48 650/991/48 +f 649/993/51 651/995/51 652/994/51 +f 651/995/62 653/1129/62 654/996/62 +f 647/997/49 653/1130/49 651/995/49 +f 652/994/50 654/1131/50 648/998/50 +f 655/999/51 657/1132/51 658/1000/51 +f 673/1002/51 674/1020/51 671/1003/51 +f 665/1005/51 666/1011/51 663/1006/51 +f 659/1008/50 664/1007/50 663/1006/50 +f 661/1010/53 663/1006/53 666/1011/53 +f 660/1013/48 665/1005/48 664/1007/48 +f 662/1015/49 666/1011/49 665/1005/49 +f 667/1017/50 672/1004/50 671/1003/50 +f 669/1019/53 671/1003/53 674/1020/53 +f 668/1022/48 673/1002/48 672/1004/48 +f 670/1024/49 674/1020/49 673/1002/49 +f 689/1026/51 690/1044/51 687/1027/51 +f 681/1029/51 682/1035/51 679/1030/51 +f 675/1032/50 680/1031/50 679/1030/50 +f 677/1034/53 679/1030/53 682/1035/53 +f 676/1037/48 681/1029/48 680/1031/48 +f 678/1039/49 682/1035/49 681/1029/49 +f 683/1041/50 688/1028/50 687/1027/50 +f 685/1043/53 687/1027/53 690/1044/53 +f 684/1046/48 689/1026/48 688/1028/48 +f 686/1048/49 690/1044/49 689/1026/49 +f 693/1050/63 697/1059/63 698/1051/63 +f 696/1053/48 695/1056/48 691/1054/48 +f 698/1051/64 697/1059/64 695/1056/64 +f 696/1133/50 692/1134/50 698/1051/50 +f 692/1134/50 700/1057/50 698/1051/50 +f 699/1061/49 691/1135/49 697/1059/49 +f 691/1135/49 695/1136/49 697/1059/49 +f 706/1064/49 704/1137/49 702/1070/49 +f 702/1070/49 710/1062/49 706/1064/49 +f 709/1067/50 701/1069/50 703/1138/50 +f 703/1138/50 705/1065/50 709/1067/50 +f 709/1067/52 712/1074/52 711/1068/52 +f 702/1070/52 713/1072/52 714/1071/52 +f 713/1072/49 717/1139/49 718/1073/49 +f 712/1074/50 716/1076/50 715/1075/50 +f 709/1077/48 710/1140/48 716/1076/48 +f 710/1140/48 714/1071/48 718/1073/48 +f 716/1076/48 710/1140/48 718/1073/48 +f 717/1080/53 713/1141/53 702/1142/53 +f 701/1078/53 711/1143/53 715/1079/53 +f 717/1080/53 702/1142/53 701/1078/53 +f 737/1083/65 735/1144/65 736/1145/65 +f 736/1145/65 742/1146/65 737/1083/65 +f 742/1146/65 741/1081/65 737/1083/65 +f 741/1081/65 740/1147/65 739/1082/65 +f 739/1082/65 738/1148/65 737/1083/65 +f 734/1086/66 719/1149/66 730/1150/66 +f 719/1149/66 728/1151/66 730/1150/66 +f 728/1151/66 729/1152/66 730/1150/66 +f 730/1150/66 731/1153/66 734/1086/66 +f 731/1153/66 732/1084/66 734/1086/66 +f 727/1089/66 720/1154/66 723/1155/66 +f 720/1154/66 721/1156/66 723/1155/66 +f 721/1156/66 722/1157/66 723/1155/66 +f 723/1155/66 724/1158/66 727/1089/66 +f 724/1158/66 725/1087/66 727/1089/66 +f 745/1092/65 746/1159/65 748/1160/65 +f 748/1160/65 750/1161/65 745/1092/65 +f 750/1161/65 749/1090/65 745/1092/65 +f 749/1090/65 743/1162/65 744/1091/65 +f 744/1091/65 747/1163/65 745/1092/65 +f 752/1093/66 754/1164/66 753/1094/66 +f 755/1096/65 758/1099/65 757/1097/65 +f 758/1099/67 755/1096/67 753/1100/67 +f 756/1098/68 757/1097/68 752/1093/68 +f 752/1102/69 757/1097/69 758/1099/69 +f 755/1096/70 756/1098/70 751/1104/70 s 1 -f 745/1117/52 748/1118/55 747/1119/55 -f 726/1120/56 727/1121/33 725/1122/56 -f 748/1118/55 749/1123/34 747/1119/55 -f 724/1124/51 725/1122/56 723/1125/51 -f 753/1126/57 784/1127/58 782/1128/57 -f 765/1129/59 781/1130/60 778/1131/59 -f 763/1132/61 781/1133/60 764/1134/60 -f 768/1135/58 783/1136/62 784/1137/58 -f 753/1138/57 780/1139/63 762/1140/63 -f 766/1141/64 783/1142/62 767/1143/62 -f 763/1132/61 780/1144/63 779/1145/61 -f 760/1146/62 776/1147/58 761/1148/58 -f 756/1149/61 772/1150/60 757/1151/60 -f 754/1152/57 769/1153/63 755/1154/63 -f 758/1155/59 774/1156/64 759/1157/64 -f 758/1155/59 772/1158/60 773/1159/59 -f 754/1160/57 776/1161/58 770/1162/57 -f 759/1157/64 775/1163/62 760/1146/62 -f 765/1129/59 777/1164/64 766/1141/64 -f 755/1154/63 771/1165/61 756/1149/61 -f 712/1166/65 713/1167/42 711/1168/65 -f 714/1169/42 715/1170/36 713/1167/42 -f 716/1171/36 717/1172/41 715/1170/36 -f 718/1173/41 719/1174/66 717/1172/41 -f 727/1121/33 730/1175/67 729/1176/67 -f 744/1177/67 745/1117/52 743/1178/67 -f 730/1175/67 731/1179/52 729/1176/67 -f 741/1180/33 744/1177/67 743/1178/67 -f 731/1179/52 734/1181/55 733/1182/55 -f 752/1183/68 722/1184/51 751/1185/68 -f 739/1186/56 742/1187/33 741/1180/33 -f 734/1181/55 735/1188/34 733/1182/55 -f 722/1189/51 740/1190/56 739/1186/56 -f 736/1191/34 737/1192/68 735/1188/34 -f 750/1193/34 751/1185/68 749/1123/34 -f 738/1194/68 723/1195/51 737/1192/68 -f 745/1117/52 746/1196/52 748/1118/55 -f 726/1120/56 728/1197/33 727/1121/33 -f 748/1118/55 750/1193/34 749/1123/34 -f 724/1124/51 726/1120/56 725/1122/56 -f 753/1126/57 768/1135/58 784/1127/58 -f 765/1129/59 764/1134/60 781/1130/60 -f 763/1132/61 779/1198/61 781/1133/60 -f 768/1135/58 767/1143/62 783/1136/62 -f 753/1138/57 782/1199/57 780/1139/63 -f 766/1141/64 777/1200/64 783/1142/62 -f 763/1132/61 762/1140/63 780/1144/63 -f 760/1146/62 775/1201/62 776/1147/58 -f 756/1149/61 771/1202/61 772/1150/60 -f 754/1152/57 770/1203/57 769/1153/63 -f 758/1155/59 773/1204/59 774/1156/64 -f 758/1155/59 757/1151/60 772/1158/60 -f 754/1160/57 761/1148/58 776/1161/58 -f 759/1157/64 774/1205/64 775/1163/62 -f 765/1129/59 778/1206/59 777/1164/64 -f 755/1154/63 769/1207/63 771/1165/61 -f 712/1166/65 714/1169/42 713/1167/42 -f 714/1169/42 716/1171/36 715/1170/36 -f 716/1171/36 718/1173/41 717/1172/41 -f 718/1173/41 720/1208/66 719/1174/66 -f 727/1121/33 728/1197/33 730/1175/67 -f 744/1177/67 746/1196/52 745/1117/52 -f 730/1175/67 732/1209/52 731/1179/52 -f 741/1180/33 742/1187/33 744/1177/67 -f 731/1179/52 732/1209/52 734/1181/55 -f 752/1183/68 721/1210/51 722/1184/51 -f 739/1186/56 740/1190/56 742/1187/33 -f 734/1181/55 736/1191/34 735/1188/34 -f 722/1189/51 721/1211/51 740/1190/56 -f 736/1191/34 738/1194/68 737/1192/68 -f 750/1193/34 752/1183/68 751/1185/68 -f 738/1194/68 724/1212/51 723/1195/51 +f 793/1165/68 796/1166/71 795/1167/71 +f 774/1168/72 775/1169/49 773/1170/72 +f 796/1166/71 797/1171/50 795/1167/71 +f 772/1172/67 773/1170/72 771/1173/67 +f 801/1174/73 832/1175/74 830/1176/73 +f 813/1177/75 829/1178/76 826/1179/75 +f 811/1180/77 829/1181/76 812/1182/76 +f 816/1183/74 831/1184/78 832/1185/74 +f 801/1186/73 828/1187/79 810/1188/79 +f 814/1189/80 831/1190/78 815/1191/78 +f 811/1180/77 828/1192/79 827/1193/77 +f 808/1194/78 824/1195/74 809/1196/74 +f 804/1197/77 820/1198/76 805/1199/76 +f 802/1200/73 817/1201/79 803/1202/79 +f 806/1203/75 822/1204/80 807/1205/80 +f 806/1203/75 820/1206/76 821/1207/75 +f 802/1208/73 824/1209/74 818/1210/73 +f 807/1205/80 823/1211/78 808/1194/78 +f 813/1177/75 825/1212/80 814/1189/80 +f 803/1202/79 819/1213/77 804/1197/77 +f 760/1214/81 761/1215/58 759/1216/81 +f 762/1217/58 763/1218/52 761/1215/58 +f 764/1219/52 765/1220/57 763/1218/52 +f 766/1221/57 767/1222/82 765/1220/57 +f 775/1169/49 778/1223/83 777/1224/83 +f 792/1225/83 793/1165/68 791/1226/83 +f 778/1223/83 779/1227/68 777/1224/83 +f 789/1228/49 792/1225/83 791/1226/83 +f 779/1227/68 782/1229/71 781/1230/71 +f 800/1231/84 770/1232/67 799/1233/84 +f 787/1234/72 790/1235/49 789/1228/49 +f 782/1229/71 783/1236/50 781/1230/71 +f 770/1237/67 788/1238/72 787/1234/72 +f 784/1239/50 785/1240/84 783/1236/50 +f 798/1241/50 799/1233/84 797/1171/50 +f 786/1242/84 771/1243/67 785/1240/84 +f 793/1165/68 794/1244/68 796/1166/71 +f 774/1168/72 776/1245/49 775/1169/49 +f 796/1166/71 798/1241/50 797/1171/50 +f 772/1172/67 774/1168/72 773/1170/72 +f 801/1174/73 816/1183/74 832/1175/74 +f 813/1177/75 812/1182/76 829/1178/76 +f 811/1180/77 827/1246/77 829/1181/76 +f 816/1183/74 815/1191/78 831/1184/78 +f 801/1186/73 830/1247/73 828/1187/79 +f 814/1189/80 825/1248/80 831/1190/78 +f 811/1180/77 810/1188/79 828/1192/79 +f 808/1194/78 823/1249/78 824/1195/74 +f 804/1197/77 819/1250/77 820/1198/76 +f 802/1200/73 818/1251/73 817/1201/79 +f 806/1203/75 821/1252/75 822/1204/80 +f 806/1203/75 805/1199/76 820/1206/76 +f 802/1208/73 809/1196/74 824/1209/74 +f 807/1205/80 822/1253/80 823/1211/78 +f 813/1177/75 826/1254/75 825/1212/80 +f 803/1202/79 817/1255/79 819/1213/77 +f 760/1214/81 762/1217/58 761/1215/58 +f 762/1217/58 764/1219/52 763/1218/52 +f 764/1219/52 766/1221/57 765/1220/57 +f 766/1221/57 768/1256/82 767/1222/82 +f 775/1169/49 776/1245/49 778/1223/83 +f 792/1225/83 794/1244/68 793/1165/68 +f 778/1223/83 780/1257/68 779/1227/68 +f 789/1228/49 790/1235/49 792/1225/83 +f 779/1227/68 780/1257/68 782/1229/71 +f 800/1231/84 769/1258/67 770/1232/67 +f 787/1234/72 788/1238/72 790/1235/49 +f 782/1229/71 784/1239/50 783/1236/50 +f 770/1237/67 769/1259/67 788/1238/72 +f 784/1239/50 786/1242/84 785/1240/84 +f 798/1241/50 800/1231/84 799/1233/84 +f 786/1242/84 772/1260/67 771/1243/67 o LeftLeg -v 5.000000 24.499998 3.000000 -v 5.000000 24.499998 -3.000000 -v -1.000000 24.500000 3.000000 -v -1.000000 24.500000 -3.000000 -v 4.000000 24.499998 -4.000000 -v 0.000000 24.500000 -4.000000 v 3.999996 10.999999 -2.000000 v 3.999996 10.999999 2.000000 -v -0.000001 21.500000 -4.000000 -v 3.999999 21.499998 -4.000000 v 4.499996 11.999998 2.000000 v 4.499996 11.999998 -2.000000 v 4.999996 11.999998 -2.000000 @@ -3358,19 +3500,11 @@ vt 0.428571 0.796296 vt 0.428571 0.944444 vt 0.392857 0.759259 vt 0.250000 0.796296 -vt 0.142857 0.407407 -vt -0.000000 0.425926 -vt -0.000000 0.407407 -vt 0.392857 0.407407 -vt 0.250000 0.425926 -vt 0.250000 0.407407 -vt 0.642857 0.407407 -vt 0.500000 0.425926 -vt 0.500000 0.407407 vt 0.732143 0.425926 vt 0.750000 0.740741 vt 0.732143 0.740741 vt 0.482143 0.740741 +vt 0.500000 0.425926 vt 0.500000 0.740741 vt 0.910714 0.740741 vt 0.946429 0.425926 @@ -3388,6 +3522,7 @@ vt 0.392857 0.425926 vt 0.392857 0.740741 vt 0.446429 0.740741 vt 0.482143 0.425926 +vt 0.250000 0.425926 vt 0.160714 0.425926 vt 0.160714 0.740741 vt 0.696429 0.740741 @@ -3404,24 +3539,8 @@ vt 1.000000 0.740741 vt 0.410714 0.425926 vt 0.642857 0.425926 vt 0.000000 0.740741 -vt 0.750000 0.407407 -vt 0.892857 0.407407 -vt 0.678571 0.407407 -vt 0.642857 0.407407 -vt 0.642857 0.259259 -vt 0.464286 0.407407 -vt 0.428571 0.407407 -vt 0.428571 0.259259 -vt 0.214286 0.259259 -vt 0.178571 0.407407 -vt 0.035714 0.407407 -vt 0.392857 0.259259 -vt 0.250000 0.370370 -vt 0.250000 0.259259 -vt 0.214286 0.407407 vt 0.392857 1.000000 vt 0.250000 0.759259 -vt 0.392857 0.370370 vt 0.214286 0.944444 vt 0.196429 0.796296 vt 0.214286 0.796296 @@ -3682,361 +3801,316 @@ vt 0.071429 0.759259 vt -0.000000 0.759259 vt 0.017857 0.796296 vt -0.000000 0.796296 -vt 0.214286 0.222222 -vt 0.214286 -0.000000 -vt 0.428571 0.000000 vt 0.214286 0.981481 vt 0.392857 0.944444 vt 0.428571 0.981481 vt 0.428571 0.759259 vt 0.910714 0.425926 vt 0.232143 0.425926 -vt 0.857143 0.259259 -vt 0.821429 0.407407 -vt 0.857143 0.407407 -vt 0.607143 0.407407 -vt -0.000000 0.407407 -vt 0.000000 0.259259 +vt -0.000000 0.425926 vt 0.250000 1.000000 vt 0.196429 0.944444 vt 0.589286 0.740741 vt 0.446429 0.759259 -vt 0.428571 0.222222 vn -0.0000 -0.7071 0.7071 vn 0.7071 -0.7071 0.0000 vn -0.0000 -0.7071 -0.7071 -vn 0.0000 -1.0000 0.0000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 vn 1.0000 -0.0000 0.0000 vn 0.0000 1.0000 0.0000 -vn -0.7071 0.0000 -0.7071 -vn 0.7071 -0.0000 -0.7071 +vn -0.0000 -1.0000 0.0000 vn -0.7071 -0.7071 0.0000 vn 0.0000 0.4472 -0.8944 vn 0.4472 -0.0000 -0.8944 vn -0.0000 -0.4472 -0.8944 vn -0.4472 0.0000 -0.8944 s off -f 801/1213/69 813/1214/69 835/1215/69 -f 791/1216/70 797/1217/70 798/1218/70 -f 802/1219/71 791/1216/71 836/1220/71 -f 827/1221/72 832/1222/72 828/1223/72 -f 822/1224/72 826/1225/72 834/1226/72 -f 818/1227/72 816/1228/72 817/1229/72 -f 821/1230/73 803/1231/73 801/1232/73 -f 797/1233/74 816/1228/74 796/1234/74 -f 813/1235/74 829/1236/74 809/1237/74 -f 823/1238/74 805/1239/74 803/1231/74 -f 795/1240/75 818/1241/75 798/1242/75 -f 830/1243/75 814/1244/75 810/1245/75 -f 806/1246/75 824/1247/75 804/1248/75 -f 800/1249/76 817/1250/76 797/1233/76 -f 814/1244/76 826/1225/76 806/1246/76 -f 827/1251/73 810/1245/73 807/1252/73 -f 818/1241/76 799/1253/76 798/1242/76 -f 825/1254/76 813/1235/76 805/1239/76 -f 809/1237/73 828/1255/73 808/1256/73 -f 819/1257/74 801/1232/74 799/1253/74 -f 831/1258/74 807/1252/74 811/1259/74 -f 802/1260/75 820/1261/75 800/1249/75 -f 808/1256/75 832/1262/75 812/1263/75 -f 804/1248/73 822/1264/73 802/1260/73 -f 796/1234/76 815/1265/76 795/1240/76 -f 812/1266/73 831/1258/73 811/1259/73 -f 825/1254/72 821/1267/72 833/1268/72 -f 821/1269/74 819/1270/74 785/1271/74 -f 817/1272/76 820/1273/76 786/1274/76 -f 788/1275/73 827/1276/73 828/1277/73 -f 789/1278/75 793/1279/75 790/1280/75 -f 834/1226/71 830/1281/71 793/1279/71 -f 803/1282/77 813/1214/77 801/1213/77 -f 814/1283/77 804/1248/77 802/1219/77 -f 793/1279/78 788/1275/78 790/1280/78 -f 786/1274/79 794/1284/79 789/1278/79 -f 808/1285/77 811/1286/77 807/1287/77 -f 798/1218/77 796/1288/77 795/1289/77 -f 791/1216/72 835/1215/72 836/1220/72 -f 807/1287/80 810/1290/80 836/1220/80 -f 851/1291/75 849/1292/75 850/1293/75 -f 843/1294/75 841/1295/75 842/1296/75 -f 840/1297/73 843/1294/73 838/1298/73 -f 837/1299/76 841/1295/76 839/1300/76 -f 839/1301/77 844/1302/77 840/1303/77 -f 838/1304/72 842/1296/72 837/1305/72 -f 848/1306/73 851/1291/73 846/1307/73 -f 845/1308/76 849/1292/76 847/1309/76 -f 847/1310/77 852/1311/77 848/1312/77 -f 846/1313/72 850/1293/72 845/1314/72 -f 859/1315/72 855/1316/72 860/1317/72 -f 858/1318/77 853/1319/77 857/1320/77 -f 860/1321/76 856/1322/76 858/1323/76 -f 857/1324/73 854/1325/73 859/1326/73 -f 867/1327/72 863/1328/72 868/1329/72 -f 866/1330/77 861/1331/77 865/1332/77 -f 868/1333/76 864/1334/76 866/1335/76 -f 865/1336/73 862/1337/73 867/1338/73 -f 862/1337/75 864/1334/75 863/1328/75 -f 854/1325/75 856/1322/75 855/1316/75 -f 870/1339/72 871/1340/72 869/1341/72 -f 878/1342/75 880/1343/75 879/1344/75 -f 877/1345/81 879/1344/81 874/1346/81 -f 872/1347/82 878/1342/82 877/1345/82 -f 870/1339/83 876/1348/83 872/1347/83 -f 873/1349/77 877/1345/77 874/1346/77 -f 874/1346/84 880/1343/84 870/1339/84 -f 871/1350/76 877/1345/76 875/1351/76 -f 869/1352/73 874/1346/73 870/1339/73 -f 895/1353/76 893/1354/76 894/1355/76 -f 887/1356/76 885/1357/76 886/1358/76 -f 884/1359/75 887/1356/75 882/1360/75 -f 881/1361/74 885/1357/74 883/1362/74 -f 883/1363/77 888/1364/77 884/1365/77 -f 882/1366/72 886/1358/72 881/1367/72 -f 892/1368/75 895/1353/75 890/1369/75 -f 889/1370/74 893/1354/74 891/1371/74 -f 891/1372/77 896/1373/77 892/1374/77 -f 890/1375/72 894/1355/72 889/1376/72 -f 911/1377/76 909/1378/76 910/1379/76 -f 903/1380/76 901/1381/76 902/1382/76 -f 900/1383/75 903/1380/75 898/1384/75 -f 897/1385/74 901/1381/74 899/1386/74 -f 899/1387/77 904/1388/77 900/1389/77 -f 898/1390/72 902/1382/72 897/1391/72 -f 908/1392/75 911/1377/75 906/1393/75 -f 905/1394/74 909/1378/74 907/1395/74 -f 907/1396/77 912/1397/77 908/1398/77 -f 906/1399/72 910/1379/72 905/1400/72 -f 919/1401/72 915/1402/72 920/1403/72 -f 918/1404/77 913/1405/77 917/1406/77 -f 920/1407/74 916/1408/74 918/1409/74 -f 917/1410/75 914/1411/75 919/1412/75 -f 927/1413/72 923/1414/72 928/1415/72 -f 926/1416/77 921/1417/77 925/1418/77 -f 928/1419/74 924/1420/74 926/1421/74 -f 925/1422/75 922/1423/75 927/1424/75 -f 922/1423/76 924/1420/76 923/1414/76 -f 914/1411/76 916/1408/76 915/1402/76 -f 935/1425/72 931/1426/72 936/1427/72 -f 934/1428/77 929/1429/77 933/1430/77 -f 936/1431/74 932/1432/74 934/1433/74 -f 933/1434/75 930/1435/75 935/1436/75 -f 943/1437/72 939/1438/72 944/1439/72 -f 942/1440/77 937/1441/77 941/1442/77 -f 944/1443/74 940/1444/74 942/1445/74 -f 941/1446/75 938/1447/75 943/1448/75 -f 938/1447/76 940/1444/76 939/1438/76 -f 930/1435/76 932/1432/76 931/1426/76 -f 959/1449/74 957/1450/74 958/1451/74 -f 951/1452/74 949/1453/74 950/1454/74 -f 948/1455/76 951/1452/76 946/1456/76 -f 945/1457/73 949/1453/73 947/1458/73 -f 947/1459/77 952/1460/77 948/1461/77 -f 946/1462/72 950/1454/72 945/1463/72 -f 956/1464/76 959/1449/76 954/1465/76 -f 953/1466/73 957/1450/73 955/1467/73 -f 955/1468/77 960/1469/77 956/1470/77 -f 954/1471/72 958/1451/72 953/1472/72 -f 975/1473/74 973/1474/74 974/1475/74 -f 967/1476/74 965/1477/74 966/1478/74 -f 964/1479/76 967/1476/76 962/1480/76 -f 961/1481/73 965/1477/73 963/1482/73 -f 963/1483/77 968/1484/77 964/1485/77 -f 962/1486/72 966/1478/72 961/1487/72 -f 972/1488/76 975/1473/76 970/1489/76 -f 969/1490/73 973/1474/73 971/1491/73 -f 971/1492/77 976/1493/77 972/1494/77 -f 970/1495/72 974/1475/72 969/1496/72 -f 983/1497/72 979/1498/72 984/1499/72 -f 982/1500/77 977/1501/77 981/1502/77 -f 984/1503/73 980/1504/73 982/1505/73 -f 981/1506/76 978/1507/76 983/1508/76 -f 991/1509/72 987/1510/72 992/1511/72 -f 990/1512/77 985/1513/77 989/1514/77 -f 992/1515/73 988/1516/73 990/1517/73 -f 989/1518/76 986/1519/76 991/1520/76 -f 986/1519/74 988/1516/74 987/1510/74 -f 978/1507/74 980/1504/74 979/1498/74 -f 999/1521/72 995/1522/72 1000/1523/72 -f 998/1524/77 993/1525/77 997/1526/77 -f 1000/1527/73 996/1528/73 998/1529/73 -f 997/1530/76 994/1531/76 999/1532/76 -f 1007/1533/72 1003/1534/72 1008/1535/72 -f 1006/1536/77 1001/1537/77 1005/1538/77 -f 1008/1539/73 1004/1540/73 1006/1541/73 -f 1005/1542/76 1002/1543/76 1007/1544/76 -f 1002/1543/74 1004/1540/74 1003/1534/74 -f 994/1531/74 996/1528/74 995/1522/74 -f 788/1545/77 787/1546/77 785/1547/77 -f 813/1214/69 809/1548/69 835/1215/69 -f 835/1215/69 792/1549/69 801/1213/69 -f 792/1549/69 799/1550/69 801/1213/69 -f 799/1550/70 792/1549/70 798/1218/70 -f 792/1549/70 791/1216/70 798/1218/70 -f 791/1216/70 800/1551/70 797/1217/70 -f 836/1220/71 810/1290/71 814/1283/71 -f 802/1219/71 800/1551/71 791/1216/71 -f 836/1220/71 814/1283/71 802/1219/71 -f 827/1221/72 831/1258/72 832/1222/72 -f 822/1224/72 824/1247/72 826/1225/72 -f 818/1227/72 815/1265/72 816/1228/72 -f 821/1230/73 823/1238/73 803/1231/73 -f 797/1233/74 817/1250/74 816/1228/74 -f 813/1235/74 833/1552/74 829/1236/74 -f 823/1238/74 825/1254/74 805/1239/74 -f 795/1240/75 815/1265/75 818/1241/75 -f 830/1243/75 834/1553/75 814/1244/75 -f 806/1246/75 826/1225/75 824/1247/75 -f 800/1249/76 820/1261/76 817/1250/76 -f 814/1244/76 834/1553/76 826/1225/76 -f 827/1251/73 830/1243/73 810/1245/73 -f 818/1241/76 819/1257/76 799/1253/76 -f 825/1254/76 833/1552/76 813/1235/76 -f 809/1237/73 829/1236/73 828/1255/73 -f 819/1257/74 821/1230/74 801/1232/74 -f 831/1258/74 827/1251/74 807/1252/74 -f 802/1260/75 822/1264/75 820/1261/75 -f 808/1256/75 828/1255/75 832/1262/75 -f 804/1248/73 824/1247/73 822/1264/73 -f 796/1234/76 816/1228/76 815/1265/76 -f 812/1266/73 832/1222/73 831/1258/73 -f 825/1254/72 823/1238/72 821/1267/72 -f 785/1271/74 787/1554/74 833/1555/74 -f 787/1554/74 829/1556/74 833/1555/74 -f 833/1555/74 821/1269/74 785/1271/74 -f 786/1274/76 785/1271/76 818/1557/76 -f 785/1271/76 819/1270/76 818/1557/76 -f 818/1557/76 817/1272/76 786/1274/76 -f 829/1558/73 787/1559/73 828/1277/73 -f 787/1559/73 788/1275/73 828/1277/73 -f 788/1275/73 830/1281/73 827/1276/73 -f 789/1278/75 794/1284/75 793/1279/75 -f 793/1279/71 794/1284/71 822/1224/71 -f 794/1284/71 820/1273/71 822/1224/71 -f 822/1224/71 834/1226/71 793/1279/71 -f 803/1282/77 805/1560/77 813/1214/77 -f 814/1283/77 806/1246/77 804/1248/77 -f 793/1279/78 830/1281/78 788/1275/78 -f 786/1274/79 820/1273/79 794/1284/79 -f 808/1285/77 812/1561/77 811/1286/77 -f 798/1218/77 797/1217/77 796/1288/77 -f 791/1216/72 792/1549/72 835/1215/72 -f 836/1220/80 835/1215/80 808/1285/80 -f 835/1215/80 809/1548/80 808/1285/80 -f 808/1285/80 807/1287/80 836/1220/80 -f 851/1291/75 852/1311/75 849/1292/75 -f 843/1294/75 844/1302/75 841/1295/75 -f 840/1297/73 844/1302/73 843/1294/73 -f 837/1299/76 842/1296/76 841/1295/76 -f 839/1301/77 841/1295/77 844/1302/77 -f 838/1304/72 843/1294/72 842/1296/72 -f 848/1306/73 852/1311/73 851/1291/73 -f 845/1308/76 850/1293/76 849/1292/76 -f 847/1310/77 849/1292/77 852/1311/77 -f 846/1313/72 851/1291/72 850/1293/72 -f 859/1315/72 854/1325/72 855/1316/72 -f 858/1318/77 856/1322/77 853/1319/77 -f 860/1321/76 855/1316/76 856/1322/76 -f 857/1324/73 853/1319/73 854/1325/73 -f 867/1327/72 862/1337/72 863/1328/72 -f 866/1330/77 864/1334/77 861/1331/77 -f 868/1333/76 863/1328/76 864/1334/76 -f 865/1336/73 861/1331/73 862/1337/73 -f 862/1337/75 861/1331/75 864/1334/75 -f 854/1325/75 853/1319/75 856/1322/75 -f 870/1339/72 872/1347/72 871/1340/72 -f 878/1342/75 876/1348/75 880/1343/75 -f 877/1345/81 878/1342/81 879/1344/81 -f 872/1347/82 876/1348/82 878/1342/82 -f 870/1339/83 880/1343/83 876/1348/83 -f 873/1349/77 875/1562/77 877/1345/77 -f 874/1346/84 879/1344/84 880/1343/84 -f 871/1350/76 872/1347/76 877/1345/76 -f 869/1352/73 873/1563/73 874/1346/73 -f 895/1353/76 896/1373/76 893/1354/76 -f 887/1356/76 888/1364/76 885/1357/76 -f 884/1359/75 888/1364/75 887/1356/75 -f 881/1361/74 886/1358/74 885/1357/74 -f 883/1363/77 885/1357/77 888/1364/77 -f 882/1366/72 887/1356/72 886/1358/72 -f 892/1368/75 896/1373/75 895/1353/75 -f 889/1370/74 894/1355/74 893/1354/74 -f 891/1372/77 893/1354/77 896/1373/77 -f 890/1375/72 895/1353/72 894/1355/72 -f 911/1377/76 912/1397/76 909/1378/76 -f 903/1380/76 904/1388/76 901/1381/76 -f 900/1383/75 904/1388/75 903/1380/75 -f 897/1385/74 902/1382/74 901/1381/74 -f 899/1387/77 901/1381/77 904/1388/77 -f 898/1390/72 903/1380/72 902/1382/72 -f 908/1392/75 912/1397/75 911/1377/75 -f 905/1394/74 910/1379/74 909/1378/74 -f 907/1396/77 909/1378/77 912/1397/77 -f 906/1399/72 911/1377/72 910/1379/72 -f 919/1401/72 914/1411/72 915/1402/72 -f 918/1404/77 916/1408/77 913/1405/77 -f 920/1407/74 915/1402/74 916/1408/74 -f 917/1410/75 913/1405/75 914/1411/75 -f 927/1413/72 922/1423/72 923/1414/72 -f 926/1416/77 924/1420/77 921/1417/77 -f 928/1419/74 923/1414/74 924/1420/74 -f 925/1422/75 921/1417/75 922/1423/75 -f 922/1423/76 921/1417/76 924/1420/76 -f 914/1411/76 913/1405/76 916/1408/76 -f 935/1425/72 930/1435/72 931/1426/72 -f 934/1428/77 932/1432/77 929/1429/77 -f 936/1431/74 931/1426/74 932/1432/74 -f 933/1434/75 929/1429/75 930/1435/75 -f 943/1437/72 938/1447/72 939/1438/72 -f 942/1440/77 940/1444/77 937/1441/77 -f 944/1443/74 939/1438/74 940/1444/74 -f 941/1446/75 937/1441/75 938/1447/75 -f 938/1447/76 937/1441/76 940/1444/76 -f 930/1435/76 929/1429/76 932/1432/76 -f 959/1449/74 960/1469/74 957/1450/74 -f 951/1452/74 952/1460/74 949/1453/74 -f 948/1455/76 952/1460/76 951/1452/76 -f 945/1457/73 950/1454/73 949/1453/73 -f 947/1459/77 949/1453/77 952/1460/77 -f 946/1462/72 951/1452/72 950/1454/72 -f 956/1464/76 960/1469/76 959/1449/76 -f 953/1466/73 958/1451/73 957/1450/73 -f 955/1468/77 957/1450/77 960/1469/77 -f 954/1471/72 959/1449/72 958/1451/72 -f 975/1473/74 976/1493/74 973/1474/74 -f 967/1476/74 968/1484/74 965/1477/74 -f 964/1479/76 968/1484/76 967/1476/76 -f 961/1481/73 966/1478/73 965/1477/73 -f 963/1483/77 965/1477/77 968/1484/77 -f 962/1486/72 967/1476/72 966/1478/72 -f 972/1488/76 976/1493/76 975/1473/76 -f 969/1490/73 974/1475/73 973/1474/73 -f 971/1492/77 973/1474/77 976/1493/77 -f 970/1495/72 975/1473/72 974/1475/72 -f 983/1497/72 978/1507/72 979/1498/72 -f 982/1500/77 980/1504/77 977/1501/77 -f 984/1503/73 979/1498/73 980/1504/73 -f 981/1506/76 977/1501/76 978/1507/76 -f 991/1509/72 986/1519/72 987/1510/72 -f 990/1512/77 988/1516/77 985/1513/77 -f 992/1515/73 987/1510/73 988/1516/73 -f 989/1518/76 985/1513/76 986/1519/76 -f 986/1519/74 985/1513/74 988/1516/74 -f 978/1507/74 977/1501/74 980/1504/74 -f 999/1521/72 994/1531/72 995/1522/72 -f 998/1524/77 996/1528/77 993/1525/77 -f 1000/1527/73 995/1522/73 996/1528/73 -f 997/1530/76 993/1525/76 994/1531/76 -f 1007/1533/72 1002/1543/72 1003/1534/72 -f 1006/1536/77 1004/1540/77 1001/1537/77 -f 1008/1539/73 1003/1534/73 1004/1540/73 -f 1005/1542/76 1001/1537/76 1002/1543/76 -f 1002/1543/74 1001/1537/74 1004/1540/74 -f 994/1531/74 993/1525/74 996/1528/74 -f 785/1547/77 786/1564/77 788/1545/77 -f 786/1564/77 789/1278/77 788/1545/77 -f 789/1278/77 790/1280/77 788/1545/77 +f 841/1261/85 853/1262/85 875/1263/85 +f 833/1264/86 837/1265/86 838/1266/86 +f 842/1267/87 833/1264/87 876/1268/87 +f 861/1269/88 843/1270/88 841/1271/88 +f 837/1272/89 856/1273/89 836/1274/89 +f 853/1275/89 869/1276/89 849/1277/89 +f 863/1278/89 845/1279/89 843/1270/89 +f 835/1280/90 858/1281/90 838/1282/90 +f 870/1283/90 854/1284/90 850/1285/90 +f 846/1286/90 864/1287/90 844/1288/90 +f 840/1289/91 857/1290/91 837/1272/91 +f 854/1284/91 866/1291/91 846/1286/91 +f 867/1292/88 850/1285/88 847/1293/88 +f 858/1281/91 839/1294/91 838/1282/91 +f 865/1295/91 853/1275/91 845/1279/91 +f 849/1277/88 868/1296/88 848/1297/88 +f 859/1298/89 841/1271/89 839/1294/89 +f 871/1299/89 847/1293/89 851/1300/89 +f 842/1301/90 860/1302/90 840/1289/90 +f 848/1297/90 872/1303/90 852/1304/90 +f 844/1288/88 862/1305/88 842/1301/88 +f 836/1274/91 855/1306/91 835/1280/91 +f 852/1307/88 871/1299/88 851/1300/88 +f 843/1308/92 853/1262/92 841/1261/92 +f 854/1309/92 844/1288/92 842/1267/92 +f 848/1310/92 851/1311/92 847/1312/92 +f 838/1266/92 836/1313/92 835/1314/92 +f 833/1264/93 875/1263/93 876/1268/93 +f 847/1312/94 850/1315/94 876/1268/94 +f 891/1316/90 889/1317/90 890/1318/90 +f 883/1319/90 881/1320/90 882/1321/90 +f 880/1322/88 883/1319/88 878/1323/88 +f 877/1324/91 881/1320/91 879/1325/91 +f 879/1326/92 884/1327/92 880/1328/92 +f 878/1329/93 882/1321/93 877/1330/93 +f 888/1331/88 891/1316/88 886/1332/88 +f 885/1333/91 889/1317/91 887/1334/91 +f 887/1335/92 892/1336/92 888/1337/92 +f 886/1338/93 890/1318/93 885/1339/93 +f 899/1340/93 895/1341/93 900/1342/93 +f 898/1343/92 893/1344/92 897/1345/92 +f 900/1346/91 896/1347/91 898/1348/91 +f 897/1349/88 894/1350/88 899/1351/88 +f 907/1352/93 903/1353/93 908/1354/93 +f 906/1355/92 901/1356/92 905/1357/92 +f 908/1358/91 904/1359/91 906/1360/91 +f 905/1361/88 902/1362/88 907/1363/88 +f 902/1362/90 904/1359/90 903/1353/90 +f 894/1350/90 896/1347/90 895/1341/90 +f 910/1364/93 911/1365/93 909/1366/93 +f 918/1367/90 920/1368/90 919/1369/90 +f 917/1370/95 919/1369/95 914/1371/95 +f 912/1372/96 918/1367/96 917/1370/96 +f 910/1364/97 916/1373/97 912/1372/97 +f 913/1374/92 917/1370/92 914/1371/92 +f 914/1371/98 920/1368/98 910/1364/98 +f 911/1375/91 917/1370/91 915/1376/91 +f 909/1377/88 914/1371/88 910/1364/88 +f 935/1378/91 933/1379/91 934/1380/91 +f 927/1381/91 925/1382/91 926/1383/91 +f 924/1384/90 927/1381/90 922/1385/90 +f 921/1386/89 925/1382/89 923/1387/89 +f 923/1388/92 928/1389/92 924/1390/92 +f 922/1391/93 926/1383/93 921/1392/93 +f 932/1393/90 935/1378/90 930/1394/90 +f 929/1395/89 933/1379/89 931/1396/89 +f 931/1397/92 936/1398/92 932/1399/92 +f 930/1400/93 934/1380/93 929/1401/93 +f 951/1402/91 949/1403/91 950/1404/91 +f 943/1405/91 941/1406/91 942/1407/91 +f 940/1408/90 943/1405/90 938/1409/90 +f 937/1410/89 941/1406/89 939/1411/89 +f 939/1412/92 944/1413/92 940/1414/92 +f 938/1415/93 942/1407/93 937/1416/93 +f 948/1417/90 951/1402/90 946/1418/90 +f 945/1419/89 949/1403/89 947/1420/89 +f 947/1421/92 952/1422/92 948/1423/92 +f 946/1424/93 950/1404/93 945/1425/93 +f 959/1426/93 955/1427/93 960/1428/93 +f 958/1429/92 953/1430/92 957/1431/92 +f 960/1432/89 956/1433/89 958/1434/89 +f 957/1435/90 954/1436/90 959/1437/90 +f 967/1438/93 963/1439/93 968/1440/93 +f 966/1441/92 961/1442/92 965/1443/92 +f 968/1444/89 964/1445/89 966/1446/89 +f 965/1447/90 962/1448/90 967/1449/90 +f 962/1448/91 964/1445/91 963/1439/91 +f 954/1436/91 956/1433/91 955/1427/91 +f 975/1450/93 971/1451/93 976/1452/93 +f 974/1453/92 969/1454/92 973/1455/92 +f 976/1456/89 972/1457/89 974/1458/89 +f 973/1459/90 970/1460/90 975/1461/90 +f 983/1462/93 979/1463/93 984/1464/93 +f 982/1465/92 977/1466/92 981/1467/92 +f 984/1468/89 980/1469/89 982/1470/89 +f 981/1471/90 978/1472/90 983/1473/90 +f 978/1472/91 980/1469/91 979/1463/91 +f 970/1460/91 972/1457/91 971/1451/91 +f 999/1474/89 997/1475/89 998/1476/89 +f 991/1477/89 989/1478/89 990/1479/89 +f 988/1480/91 991/1477/91 986/1481/91 +f 985/1482/88 989/1478/88 987/1483/88 +f 987/1484/92 992/1485/92 988/1486/92 +f 986/1487/93 990/1479/93 985/1488/93 +f 996/1489/91 999/1474/91 994/1490/91 +f 993/1491/88 997/1475/88 995/1492/88 +f 995/1493/92 1000/1494/92 996/1495/92 +f 994/1496/93 998/1476/93 993/1497/93 +f 1015/1498/89 1013/1499/89 1014/1500/89 +f 1007/1501/89 1005/1502/89 1006/1503/89 +f 1004/1504/91 1007/1501/91 1002/1505/91 +f 1001/1506/88 1005/1502/88 1003/1507/88 +f 1003/1508/92 1008/1509/92 1004/1510/92 +f 1002/1511/93 1006/1503/93 1001/1512/93 +f 1012/1513/91 1015/1498/91 1010/1514/91 +f 1009/1515/88 1013/1499/88 1011/1516/88 +f 1011/1517/92 1016/1518/92 1012/1519/92 +f 1010/1520/93 1014/1500/93 1009/1521/93 +f 1023/1522/93 1019/1523/93 1024/1524/93 +f 1022/1525/92 1017/1526/92 1021/1527/92 +f 1024/1528/88 1020/1529/88 1022/1530/88 +f 1021/1531/91 1018/1532/91 1023/1533/91 +f 1031/1534/93 1027/1535/93 1032/1536/93 +f 1030/1537/92 1025/1538/92 1029/1539/92 +f 1032/1540/88 1028/1541/88 1030/1542/88 +f 1029/1543/91 1026/1544/91 1031/1545/91 +f 1026/1544/89 1028/1541/89 1027/1535/89 +f 1018/1532/89 1020/1529/89 1019/1523/89 +f 1039/1546/93 1035/1547/93 1040/1548/93 +f 1038/1549/92 1033/1550/92 1037/1551/92 +f 1040/1552/88 1036/1553/88 1038/1554/88 +f 1037/1555/91 1034/1556/91 1039/1557/91 +f 1047/1558/93 1043/1559/93 1048/1560/93 +f 1046/1561/92 1041/1562/92 1045/1563/92 +f 1048/1564/88 1044/1565/88 1046/1566/88 +f 1045/1567/91 1042/1568/91 1047/1569/91 +f 1042/1568/89 1044/1565/89 1043/1559/89 +f 1034/1556/89 1036/1553/89 1035/1547/89 +f 853/1262/85 849/1570/85 875/1263/85 +f 875/1263/85 834/1571/85 841/1261/85 +f 834/1571/85 839/1572/85 841/1261/85 +f 839/1572/86 834/1571/86 838/1266/86 +f 834/1571/86 833/1264/86 838/1266/86 +f 833/1264/86 840/1573/86 837/1265/86 +f 876/1268/87 850/1315/87 854/1309/87 +f 842/1267/87 840/1573/87 833/1264/87 +f 876/1268/87 854/1309/87 842/1267/87 +f 861/1269/88 863/1278/88 843/1270/88 +f 837/1272/89 857/1290/89 856/1273/89 +f 853/1275/89 873/1574/89 869/1276/89 +f 863/1278/89 865/1295/89 845/1279/89 +f 835/1280/90 855/1306/90 858/1281/90 +f 870/1283/90 874/1575/90 854/1284/90 +f 846/1286/90 866/1291/90 864/1287/90 +f 840/1289/91 860/1302/91 857/1290/91 +f 854/1284/91 874/1575/91 866/1291/91 +f 867/1292/88 870/1283/88 850/1285/88 +f 858/1281/91 859/1298/91 839/1294/91 +f 865/1295/91 873/1574/91 853/1275/91 +f 849/1277/88 869/1276/88 868/1296/88 +f 859/1298/89 861/1269/89 841/1271/89 +f 871/1299/89 867/1292/89 847/1293/89 +f 842/1301/90 862/1305/90 860/1302/90 +f 848/1297/90 868/1296/90 872/1303/90 +f 844/1288/88 864/1287/88 862/1305/88 +f 836/1274/91 856/1273/91 855/1306/91 +f 852/1307/88 872/1576/88 871/1299/88 +f 843/1308/92 845/1577/92 853/1262/92 +f 854/1309/92 846/1286/92 844/1288/92 +f 848/1310/92 852/1578/92 851/1311/92 +f 838/1266/92 837/1265/92 836/1313/92 +f 833/1264/93 834/1571/93 875/1263/93 +f 876/1268/94 875/1263/94 848/1310/94 +f 875/1263/94 849/1570/94 848/1310/94 +f 848/1310/94 847/1312/94 876/1268/94 +f 891/1316/90 892/1336/90 889/1317/90 +f 883/1319/90 884/1327/90 881/1320/90 +f 880/1322/88 884/1327/88 883/1319/88 +f 877/1324/91 882/1321/91 881/1320/91 +f 879/1326/92 881/1320/92 884/1327/92 +f 878/1329/93 883/1319/93 882/1321/93 +f 888/1331/88 892/1336/88 891/1316/88 +f 885/1333/91 890/1318/91 889/1317/91 +f 887/1335/92 889/1317/92 892/1336/92 +f 886/1338/93 891/1316/93 890/1318/93 +f 899/1340/93 894/1350/93 895/1341/93 +f 898/1343/92 896/1347/92 893/1344/92 +f 900/1346/91 895/1341/91 896/1347/91 +f 897/1349/88 893/1344/88 894/1350/88 +f 907/1352/93 902/1362/93 903/1353/93 +f 906/1355/92 904/1359/92 901/1356/92 +f 908/1358/91 903/1353/91 904/1359/91 +f 905/1361/88 901/1356/88 902/1362/88 +f 902/1362/90 901/1356/90 904/1359/90 +f 894/1350/90 893/1344/90 896/1347/90 +f 910/1364/93 912/1372/93 911/1365/93 +f 918/1367/90 916/1373/90 920/1368/90 +f 917/1370/95 918/1367/95 919/1369/95 +f 912/1372/96 916/1373/96 918/1367/96 +f 910/1364/97 920/1368/97 916/1373/97 +f 913/1374/92 915/1579/92 917/1370/92 +f 914/1371/98 919/1369/98 920/1368/98 +f 911/1375/91 912/1372/91 917/1370/91 +f 909/1377/88 913/1580/88 914/1371/88 +f 935/1378/91 936/1398/91 933/1379/91 +f 927/1381/91 928/1389/91 925/1382/91 +f 924/1384/90 928/1389/90 927/1381/90 +f 921/1386/89 926/1383/89 925/1382/89 +f 923/1388/92 925/1382/92 928/1389/92 +f 922/1391/93 927/1381/93 926/1383/93 +f 932/1393/90 936/1398/90 935/1378/90 +f 929/1395/89 934/1380/89 933/1379/89 +f 931/1397/92 933/1379/92 936/1398/92 +f 930/1400/93 935/1378/93 934/1380/93 +f 951/1402/91 952/1422/91 949/1403/91 +f 943/1405/91 944/1413/91 941/1406/91 +f 940/1408/90 944/1413/90 943/1405/90 +f 937/1410/89 942/1407/89 941/1406/89 +f 939/1412/92 941/1406/92 944/1413/92 +f 938/1415/93 943/1405/93 942/1407/93 +f 948/1417/90 952/1422/90 951/1402/90 +f 945/1419/89 950/1404/89 949/1403/89 +f 947/1421/92 949/1403/92 952/1422/92 +f 946/1424/93 951/1402/93 950/1404/93 +f 959/1426/93 954/1436/93 955/1427/93 +f 958/1429/92 956/1433/92 953/1430/92 +f 960/1432/89 955/1427/89 956/1433/89 +f 957/1435/90 953/1430/90 954/1436/90 +f 967/1438/93 962/1448/93 963/1439/93 +f 966/1441/92 964/1445/92 961/1442/92 +f 968/1444/89 963/1439/89 964/1445/89 +f 965/1447/90 961/1442/90 962/1448/90 +f 962/1448/91 961/1442/91 964/1445/91 +f 954/1436/91 953/1430/91 956/1433/91 +f 975/1450/93 970/1460/93 971/1451/93 +f 974/1453/92 972/1457/92 969/1454/92 +f 976/1456/89 971/1451/89 972/1457/89 +f 973/1459/90 969/1454/90 970/1460/90 +f 983/1462/93 978/1472/93 979/1463/93 +f 982/1465/92 980/1469/92 977/1466/92 +f 984/1468/89 979/1463/89 980/1469/89 +f 981/1471/90 977/1466/90 978/1472/90 +f 978/1472/91 977/1466/91 980/1469/91 +f 970/1460/91 969/1454/91 972/1457/91 +f 999/1474/89 1000/1494/89 997/1475/89 +f 991/1477/89 992/1485/89 989/1478/89 +f 988/1480/91 992/1485/91 991/1477/91 +f 985/1482/88 990/1479/88 989/1478/88 +f 987/1484/92 989/1478/92 992/1485/92 +f 986/1487/93 991/1477/93 990/1479/93 +f 996/1489/91 1000/1494/91 999/1474/91 +f 993/1491/88 998/1476/88 997/1475/88 +f 995/1493/92 997/1475/92 1000/1494/92 +f 994/1496/93 999/1474/93 998/1476/93 +f 1015/1498/89 1016/1518/89 1013/1499/89 +f 1007/1501/89 1008/1509/89 1005/1502/89 +f 1004/1504/91 1008/1509/91 1007/1501/91 +f 1001/1506/88 1006/1503/88 1005/1502/88 +f 1003/1508/92 1005/1502/92 1008/1509/92 +f 1002/1511/93 1007/1501/93 1006/1503/93 +f 1012/1513/91 1016/1518/91 1015/1498/91 +f 1009/1515/88 1014/1500/88 1013/1499/88 +f 1011/1517/92 1013/1499/92 1016/1518/92 +f 1010/1520/93 1015/1498/93 1014/1500/93 +f 1023/1522/93 1018/1532/93 1019/1523/93 +f 1022/1525/92 1020/1529/92 1017/1526/92 +f 1024/1528/88 1019/1523/88 1020/1529/88 +f 1021/1531/91 1017/1526/91 1018/1532/91 +f 1031/1534/93 1026/1544/93 1027/1535/93 +f 1030/1537/92 1028/1541/92 1025/1538/92 +f 1032/1540/88 1027/1535/88 1028/1541/88 +f 1029/1543/91 1025/1538/91 1026/1544/91 +f 1026/1544/89 1025/1538/89 1028/1541/89 +f 1018/1532/89 1017/1526/89 1020/1529/89 +f 1039/1546/93 1034/1556/93 1035/1547/93 +f 1038/1549/92 1036/1553/92 1033/1550/92 +f 1040/1552/88 1035/1547/88 1036/1553/88 +f 1037/1555/91 1033/1550/91 1034/1556/91 +f 1047/1558/93 1042/1568/93 1043/1559/93 +f 1046/1561/92 1044/1565/92 1041/1562/92 +f 1048/1564/88 1043/1559/88 1044/1565/88 +f 1045/1567/91 1041/1562/91 1042/1568/91 +f 1042/1568/89 1041/1562/89 1044/1565/89 +f 1034/1556/89 1033/1550/89 1036/1553/89 o LeftArm v 3.999992 -0.000002 -2.500000 v 3.999996 11.999999 -2.500000 @@ -4870,440 +4944,440 @@ vn 0.0000 0.7071 -0.7071 vn -0.7071 0.7071 0.0000 vn 0.2425 0.9701 0.0000 s off -f 1036/1565/85 1011/1566/85 1031/1567/85 -f 1050/1568/86 1025/1569/86 1035/1570/86 -f 1017/1571/87 1020/1572/87 1018/1573/87 -f 1023/1574/88 1022/1575/88 1021/1576/88 -f 1025/1577/89 1028/1578/89 1026/1579/89 -f 1027/1580/88 1030/1581/88 1028/1578/88 -f 1030/1581/87 1022/1575/87 1024/1582/87 -f 1009/1583/90 1026/1579/90 1010/1584/90 -f 1043/1585/91 1051/1586/91 1012/1587/91 -f 1013/1588/90 1033/1589/90 1015/1590/90 -f 1034/1591/85 1043/1585/85 1052/1592/85 -f 1009/1583/85 1035/1570/85 1025/1569/85 -f 1019/1593/88 1040/1594/88 1020/1572/88 -f 1018/1573/90 1037/1595/90 1017/1571/90 -f 1039/1596/87 1042/1597/87 1040/1594/87 -f 1041/1598/90 1044/1599/90 1042/1597/90 -f 1044/1599/89 1013/1588/89 1015/1590/89 -f 1021/1600/89 1046/1601/89 1023/1602/89 -f 1045/1603/88 1048/1604/88 1046/1601/88 -f 1048/1604/87 1037/1595/87 1038/1605/87 -f 1051/1586/92 1050/1568/92 1012/1587/92 -f 1031/1567/89 1035/1606/89 1036/1565/89 -f 1052/1607/90 1031/1567/90 1057/1608/90 -f 1037/1609/85 1019/1610/85 1017/1611/85 -f 1022/1612/85 1045/1613/85 1021/1614/85 -f 1045/1613/93 1029/1615/93 1050/1568/93 -f 1014/1616/88 1035/1606/88 1016/1617/88 -f 1034/1618/87 1057/1608/87 1033/1589/87 -f 1037/1609/94 1049/1619/94 1051/1586/94 -f 1053/1620/88 1062/1621/88 1054/1622/88 -f 1058/1623/85 1030/1581/85 1024/1624/85 -f 1058/1625/85 1026/1579/85 1028/1578/85 -f 1010/1584/89 1016/1617/89 1009/1583/89 -f 1011/1626/85 1057/1608/85 1031/1567/85 -f 1059/1627/85 1044/1599/85 1015/1628/85 -f 1040/1594/85 1059/1629/85 1020/1630/85 -f 1060/1631/85 1046/1601/85 1048/1604/85 -f 1038/1605/85 1060/1632/85 1048/1604/85 -f 1055/1633/95 1053/1634/95 1018/1573/95 -f 1055/1635/96 1059/1636/96 1015/1590/96 -f 1054/1637/97 1056/1638/97 1014/1616/97 -f 1053/1620/98 1054/1622/98 1024/1582/98 -f 1062/1639/99 1055/1635/99 1056/1640/99 -f 1054/1637/89 1062/1641/89 1056/1638/89 -f 1053/1634/87 1055/1633/87 1061/1642/87 -f 1069/1643/89 1067/1644/89 1068/1645/89 -f 1065/1646/85 1070/1647/85 1066/1648/85 -f 1064/1649/92 1068/1645/92 1063/1650/92 -f 1066/1651/88 1069/1643/88 1064/1652/88 -f 1063/1653/90 1067/1644/90 1065/1654/90 -f 1078/1655/90 1074/1656/90 1076/1657/90 -f 1075/1658/88 1072/1659/88 1077/1660/88 -f 1077/1661/92 1073/1662/92 1078/1663/92 -f 1076/1664/85 1071/1665/85 1075/1666/85 -f 1072/1659/89 1074/1656/89 1073/1662/89 -f 1086/1667/90 1082/1668/90 1084/1669/90 -f 1083/1670/88 1080/1671/88 1085/1672/88 -f 1085/1673/92 1081/1674/92 1086/1675/92 -f 1084/1676/85 1079/1677/85 1083/1678/85 -f 1080/1671/89 1082/1668/89 1081/1674/89 -f 1093/1679/89 1091/1680/89 1092/1681/89 -f 1089/1682/85 1094/1683/85 1090/1684/85 -f 1088/1685/92 1092/1681/92 1087/1686/92 -f 1090/1687/88 1093/1679/88 1088/1688/88 -f 1087/1689/90 1091/1680/90 1089/1690/90 -f 1102/1691/90 1098/1692/90 1100/1693/90 -f 1099/1694/88 1096/1695/88 1101/1696/88 -f 1101/1697/92 1097/1698/92 1102/1699/92 -f 1100/1700/85 1095/1701/85 1099/1702/85 -f 1096/1695/89 1098/1692/89 1097/1698/89 -f 1109/1703/89 1107/1704/89 1108/1705/89 -f 1105/1706/85 1110/1707/85 1106/1708/85 -f 1104/1709/92 1108/1705/92 1103/1710/92 -f 1106/1711/88 1109/1703/88 1104/1712/88 -f 1103/1713/90 1107/1704/90 1105/1714/90 -f 1117/1715/89 1115/1716/89 1116/1717/89 -f 1113/1718/85 1118/1719/85 1114/1720/85 -f 1112/1721/92 1116/1717/92 1111/1722/92 -f 1114/1723/88 1117/1715/88 1112/1724/88 -f 1111/1725/90 1115/1716/90 1113/1726/90 -f 1125/1727/89 1123/1728/89 1124/1729/89 -f 1121/1730/85 1126/1731/85 1122/1732/85 -f 1120/1733/92 1124/1729/92 1119/1734/92 -f 1122/1735/88 1125/1727/88 1120/1736/88 -f 1119/1737/90 1123/1728/90 1121/1738/90 -f 1134/1739/90 1130/1740/90 1132/1741/90 -f 1131/1742/88 1128/1743/88 1133/1744/88 -f 1133/1745/92 1129/1746/92 1134/1747/92 -f 1132/1748/85 1127/1749/85 1131/1750/85 -f 1128/1743/89 1130/1740/89 1129/1746/89 -f 1142/1751/90 1138/1752/90 1140/1753/90 -f 1139/1754/88 1136/1755/88 1141/1756/88 -f 1141/1757/92 1137/1758/92 1142/1759/92 -f 1140/1760/85 1135/1761/85 1139/1762/85 -f 1136/1755/89 1138/1752/89 1137/1758/89 -f 1150/1763/90 1146/1764/90 1148/1765/90 -f 1147/1766/88 1144/1767/88 1149/1768/88 -f 1149/1769/92 1145/1770/92 1150/1771/92 -f 1148/1772/85 1143/1773/85 1147/1774/85 -f 1144/1767/89 1146/1764/89 1145/1770/89 -f 1157/1775/89 1155/1776/89 1156/1777/89 -f 1153/1778/85 1158/1779/85 1154/1780/85 -f 1152/1781/92 1156/1777/92 1151/1782/92 -f 1154/1783/88 1157/1775/88 1152/1784/88 -f 1151/1785/90 1155/1776/90 1153/1786/90 -f 1165/1787/87 1163/1788/87 1164/1789/87 -f 1161/1790/85 1166/1791/85 1162/1792/85 -f 1160/1793/92 1164/1789/92 1159/1794/92 -f 1162/1795/90 1165/1787/90 1160/1796/90 -f 1159/1797/88 1163/1788/88 1161/1798/88 -f 1174/1799/88 1170/1800/88 1172/1801/88 -f 1171/1802/90 1168/1803/90 1173/1804/90 -f 1173/1805/92 1169/1806/92 1174/1807/92 -f 1172/1808/85 1167/1809/85 1171/1810/85 -f 1168/1803/87 1170/1800/87 1169/1806/87 -f 1182/1811/88 1178/1812/88 1180/1813/88 -f 1179/1814/90 1176/1815/90 1181/1816/90 -f 1181/1817/92 1177/1818/92 1182/1819/92 -f 1180/1820/85 1175/1821/85 1179/1822/85 -f 1176/1815/87 1178/1812/87 1177/1818/87 -f 1189/1823/87 1187/1824/87 1188/1825/87 -f 1185/1826/85 1190/1827/85 1186/1828/85 -f 1184/1829/92 1188/1825/92 1183/1830/92 -f 1186/1831/90 1189/1823/90 1184/1832/90 -f 1183/1833/88 1187/1824/88 1185/1834/88 -f 1197/1835/87 1195/1836/87 1196/1837/87 -f 1193/1838/85 1198/1839/85 1194/1840/85 -f 1192/1841/92 1196/1837/92 1191/1842/92 -f 1194/1843/90 1197/1835/90 1192/1844/90 -f 1191/1845/88 1195/1836/88 1193/1846/88 -f 1206/1847/88 1202/1848/88 1204/1849/88 -f 1203/1850/90 1200/1851/90 1205/1852/90 -f 1205/1853/92 1201/1854/92 1206/1855/92 -f 1204/1856/85 1199/1857/85 1203/1858/85 -f 1200/1851/87 1202/1848/87 1201/1854/87 -f 1214/1859/88 1210/1860/88 1212/1861/88 -f 1211/1862/90 1208/1863/90 1213/1864/90 -f 1213/1865/92 1209/1866/92 1214/1867/92 -f 1212/1868/85 1207/1869/85 1211/1870/85 -f 1208/1863/87 1210/1860/87 1209/1866/87 -f 1221/1871/87 1219/1872/87 1220/1873/87 -f 1217/1874/85 1222/1875/85 1218/1876/85 -f 1216/1877/92 1220/1873/92 1215/1878/92 -f 1218/1879/90 1221/1871/90 1216/1880/90 -f 1215/1881/88 1219/1872/88 1217/1882/88 -f 1230/1883/87 1226/1884/87 1228/1885/87 -f 1227/1886/89 1224/1887/89 1229/1888/89 -f 1229/1889/92 1225/1890/92 1230/1891/92 -f 1228/1892/85 1223/1893/85 1227/1894/85 -f 1224/1887/90 1226/1884/90 1225/1890/90 -f 1237/1895/90 1235/1896/90 1236/1897/90 -f 1233/1898/85 1238/1899/85 1234/1900/85 -f 1232/1901/92 1236/1897/92 1231/1902/92 -f 1234/1903/89 1237/1895/89 1232/1904/89 -f 1231/1905/87 1235/1896/87 1233/1906/87 -f 1245/1907/90 1243/1908/90 1244/1909/90 -f 1241/1910/85 1246/1911/85 1242/1912/85 -f 1240/1913/92 1244/1909/92 1239/1914/92 -f 1242/1915/89 1245/1907/89 1240/1916/89 -f 1239/1917/87 1243/1908/87 1241/1918/87 -f 1253/1919/90 1251/1920/90 1252/1921/90 -f 1249/1922/85 1254/1923/85 1250/1924/85 -f 1248/1925/92 1252/1921/92 1247/1926/92 -f 1250/1927/89 1253/1919/89 1248/1928/89 -f 1247/1929/87 1251/1920/87 1249/1930/87 -f 1262/1931/87 1258/1932/87 1260/1933/87 -f 1259/1934/89 1256/1935/89 1261/1936/89 -f 1261/1937/92 1257/1938/92 1262/1939/92 -f 1260/1940/85 1255/1941/85 1259/1942/85 -f 1256/1935/90 1258/1932/90 1257/1938/90 -f 1270/1943/87 1266/1944/87 1268/1945/87 -f 1267/1946/89 1264/1947/89 1269/1948/89 -f 1269/1949/92 1265/1950/92 1270/1951/92 -f 1268/1952/85 1263/1953/85 1267/1954/85 -f 1264/1947/90 1266/1944/90 1265/1950/90 -f 1282/1955/87 1278/1956/87 1280/1957/87 -f 1279/1958/89 1276/1959/89 1281/1960/89 -f 1281/1961/92 1277/1962/92 1282/1963/92 -f 1280/1964/85 1275/1965/85 1279/1966/85 -f 1276/1959/90 1278/1956/90 1277/1962/90 -f 1289/1967/90 1287/1968/90 1288/1969/90 -f 1285/1970/85 1290/1971/85 1286/1972/85 -f 1284/1973/92 1288/1969/92 1283/1974/92 -f 1286/1975/89 1289/1967/89 1284/1976/89 -f 1283/1977/87 1287/1968/87 1285/1978/87 -f 1298/1979/87 1294/1980/87 1296/1981/87 -f 1295/1982/89 1292/1983/89 1297/1984/89 -f 1297/1985/92 1293/1986/92 1298/1987/92 -f 1296/1988/85 1291/1989/85 1295/1990/85 -f 1292/1983/90 1294/1980/90 1293/1986/90 -f 1305/1991/90 1303/1992/90 1304/1993/90 -f 1301/1994/85 1306/1995/85 1302/1996/85 -f 1300/1997/92 1304/1993/92 1299/1998/92 -f 1302/1999/89 1305/1991/89 1300/2000/89 -f 1299/2001/87 1303/1992/87 1301/2002/87 -f 1310/2003/92 1273/2004/92 1274/2005/92 -f 1272/2006/90 1273/2007/90 1271/2008/90 -f 1309/2009/88 1308/2010/88 1307/2011/88 -f 1272/2006/85 1307/2012/85 1308/2010/85 -f 1274/2005/87 1308/2010/87 1310/2003/87 -f 1317/2013/90 1315/2014/90 1316/2015/90 -f 1313/2016/85 1318/2017/85 1314/2018/85 -f 1312/2019/92 1316/2015/92 1311/2020/92 -f 1314/2021/89 1317/2013/89 1312/2022/89 -f 1311/2023/87 1315/2014/87 1313/2024/87 -f 1326/2025/87 1322/2026/87 1324/2027/87 -f 1323/2028/89 1320/2029/89 1325/2030/89 -f 1325/2031/92 1321/2032/92 1326/2033/92 -f 1324/2034/85 1319/2035/85 1323/2036/85 -f 1320/2029/90 1322/2026/90 1321/2032/90 -f 1036/1565/85 1014/2037/85 1011/1566/85 -f 1032/2038/86 1012/1587/86 1035/1570/86 -f 1012/1587/86 1050/1568/86 1035/1570/86 -f 1050/1568/86 1027/2039/86 1025/1569/86 -f 1017/1571/87 1019/1593/87 1020/1572/87 -f 1023/1574/88 1024/1582/88 1022/1575/88 -f 1025/1577/89 1027/1580/89 1028/1578/89 -f 1027/1580/88 1029/2040/88 1030/1581/88 -f 1030/1581/87 1029/2040/87 1022/1575/87 -f 1009/1583/90 1025/1577/90 1026/1579/90 -f 1012/1587/91 1032/2038/91 1052/1592/91 -f 1043/1585/91 1041/2041/91 1051/1586/91 -f 1012/1587/91 1052/1592/91 1043/1585/91 -f 1013/1588/90 1034/1618/90 1033/1589/90 -f 1034/1591/85 1013/2042/85 1043/1585/85 -f 1009/1583/85 1016/1617/85 1035/1570/85 -f 1019/1593/88 1039/1596/88 1040/1594/88 -f 1018/1573/90 1038/1605/90 1037/1595/90 -f 1039/1596/87 1041/1598/87 1042/1597/87 -f 1041/1598/90 1043/2043/90 1044/1599/90 -f 1044/1599/89 1043/2043/89 1013/1588/89 -f 1021/1600/89 1045/1603/89 1046/1601/89 -f 1045/1603/88 1047/2044/88 1048/1604/88 -f 1048/1604/87 1047/2044/87 1037/1595/87 -f 1051/1586/92 1049/1619/92 1050/1568/92 -f 1031/1567/89 1032/2045/89 1035/1606/89 -f 1052/1607/90 1032/2045/90 1031/1567/90 -f 1037/1609/85 1039/2046/85 1019/1610/85 -f 1022/1612/85 1029/1615/85 1045/1613/85 -f 1029/1615/93 1027/2039/93 1050/1568/93 -f 1050/1568/93 1049/1619/93 1045/1613/93 -f 1049/1619/93 1047/2047/93 1045/1613/93 -f 1014/1616/88 1036/1565/88 1035/1606/88 -f 1034/1618/87 1052/1607/87 1057/1608/87 -f 1051/1586/94 1041/2041/94 1039/2046/94 -f 1037/1609/94 1047/2047/94 1049/1619/94 -f 1051/1586/94 1039/2046/94 1037/1609/94 -f 1053/1620/88 1061/2048/88 1062/1621/88 -f 1058/1623/85 1028/1578/85 1030/1581/85 -f 1058/1625/85 1010/2049/85 1026/1579/85 -f 1010/1584/89 1014/1616/89 1016/1617/89 -f 1011/1626/85 1033/2050/85 1057/1608/85 -f 1059/1627/85 1042/1597/85 1044/1599/85 -f 1040/1594/85 1042/1597/85 1059/1629/85 -f 1060/1631/85 1023/2051/85 1046/1601/85 -f 1038/1605/85 1018/2052/85 1060/1632/85 -f 1060/2053/95 1018/1573/95 1053/1634/95 -f 1018/1573/95 1020/1572/95 1055/1633/95 -f 1020/1572/95 1059/2054/95 1055/1633/95 -f 1015/1590/96 1033/1589/96 1055/1635/96 -f 1033/1589/96 1011/2055/96 1056/1640/96 -f 1055/1635/96 1033/1589/96 1056/1640/96 -f 1011/2056/97 1014/1616/97 1056/1638/97 -f 1014/1616/97 1010/1584/97 1054/1637/97 -f 1010/1584/97 1058/2057/97 1054/1637/97 -f 1058/2058/98 1024/1582/98 1054/1622/98 -f 1024/1582/98 1023/1574/98 1053/1620/98 -f 1023/1574/98 1060/2059/98 1053/1620/98 -f 1062/1639/99 1061/2060/99 1055/1635/99 -f 1069/1643/89 1070/1647/89 1067/1644/89 -f 1065/1646/85 1067/1644/85 1070/1647/85 -f 1064/1649/92 1069/1643/92 1068/1645/92 -f 1066/1651/88 1070/1647/88 1069/1643/88 -f 1063/1653/90 1068/1645/90 1067/1644/90 -f 1078/1655/90 1073/1662/90 1074/1656/90 -f 1075/1658/88 1071/1665/88 1072/1659/88 -f 1077/1661/92 1072/1659/92 1073/1662/92 -f 1076/1664/85 1074/1656/85 1071/1665/85 -f 1072/1659/89 1071/1665/89 1074/1656/89 -f 1086/1667/90 1081/1674/90 1082/1668/90 -f 1083/1670/88 1079/1677/88 1080/1671/88 -f 1085/1673/92 1080/1671/92 1081/1674/92 -f 1084/1676/85 1082/1668/85 1079/1677/85 -f 1080/1671/89 1079/1677/89 1082/1668/89 -f 1093/1679/89 1094/1683/89 1091/1680/89 -f 1089/1682/85 1091/1680/85 1094/1683/85 -f 1088/1685/92 1093/1679/92 1092/1681/92 -f 1090/1687/88 1094/1683/88 1093/1679/88 -f 1087/1689/90 1092/1681/90 1091/1680/90 -f 1102/1691/90 1097/1698/90 1098/1692/90 -f 1099/1694/88 1095/1701/88 1096/1695/88 -f 1101/1697/92 1096/1695/92 1097/1698/92 -f 1100/1700/85 1098/1692/85 1095/1701/85 -f 1096/1695/89 1095/1701/89 1098/1692/89 -f 1109/1703/89 1110/1707/89 1107/1704/89 -f 1105/1706/85 1107/1704/85 1110/1707/85 -f 1104/1709/92 1109/1703/92 1108/1705/92 -f 1106/1711/88 1110/1707/88 1109/1703/88 -f 1103/1713/90 1108/1705/90 1107/1704/90 -f 1117/1715/89 1118/1719/89 1115/1716/89 -f 1113/1718/85 1115/1716/85 1118/1719/85 -f 1112/1721/92 1117/1715/92 1116/1717/92 -f 1114/1723/88 1118/1719/88 1117/1715/88 -f 1111/1725/90 1116/1717/90 1115/1716/90 -f 1125/1727/89 1126/1731/89 1123/1728/89 -f 1121/1730/85 1123/1728/85 1126/1731/85 -f 1120/1733/92 1125/1727/92 1124/1729/92 -f 1122/1735/88 1126/1731/88 1125/1727/88 -f 1119/1737/90 1124/1729/90 1123/1728/90 -f 1134/1739/90 1129/1746/90 1130/1740/90 -f 1131/1742/88 1127/1749/88 1128/1743/88 -f 1133/1745/92 1128/1743/92 1129/1746/92 -f 1132/1748/85 1130/1740/85 1127/1749/85 -f 1128/1743/89 1127/1749/89 1130/1740/89 -f 1142/1751/90 1137/1758/90 1138/1752/90 -f 1139/1754/88 1135/1761/88 1136/1755/88 -f 1141/1757/92 1136/1755/92 1137/1758/92 -f 1140/1760/85 1138/1752/85 1135/1761/85 -f 1136/1755/89 1135/1761/89 1138/1752/89 -f 1150/1763/90 1145/1770/90 1146/1764/90 -f 1147/1766/88 1143/1773/88 1144/1767/88 -f 1149/1769/92 1144/1767/92 1145/1770/92 -f 1148/1772/85 1146/1764/85 1143/1773/85 -f 1144/1767/89 1143/1773/89 1146/1764/89 -f 1157/1775/89 1158/1779/89 1155/1776/89 -f 1153/1778/85 1155/1776/85 1158/1779/85 -f 1152/1781/92 1157/1775/92 1156/1777/92 -f 1154/1783/88 1158/1779/88 1157/1775/88 -f 1151/1785/90 1156/1777/90 1155/1776/90 -f 1165/1787/87 1166/1791/87 1163/1788/87 -f 1161/1790/85 1163/1788/85 1166/1791/85 -f 1160/1793/92 1165/1787/92 1164/1789/92 -f 1162/1795/90 1166/1791/90 1165/1787/90 -f 1159/1797/88 1164/1789/88 1163/1788/88 -f 1174/1799/88 1169/1806/88 1170/1800/88 -f 1171/1802/90 1167/1809/90 1168/1803/90 -f 1173/1805/92 1168/1803/92 1169/1806/92 -f 1172/1808/85 1170/1800/85 1167/1809/85 -f 1168/1803/87 1167/1809/87 1170/1800/87 -f 1182/1811/88 1177/1818/88 1178/1812/88 -f 1179/1814/90 1175/1821/90 1176/1815/90 -f 1181/1817/92 1176/1815/92 1177/1818/92 -f 1180/1820/85 1178/1812/85 1175/1821/85 -f 1176/1815/87 1175/1821/87 1178/1812/87 -f 1189/1823/87 1190/1827/87 1187/1824/87 -f 1185/1826/85 1187/1824/85 1190/1827/85 -f 1184/1829/92 1189/1823/92 1188/1825/92 -f 1186/1831/90 1190/1827/90 1189/1823/90 -f 1183/1833/88 1188/1825/88 1187/1824/88 -f 1197/1835/87 1198/1839/87 1195/1836/87 -f 1193/1838/85 1195/1836/85 1198/1839/85 -f 1192/1841/92 1197/1835/92 1196/1837/92 -f 1194/1843/90 1198/1839/90 1197/1835/90 -f 1191/1845/88 1196/1837/88 1195/1836/88 -f 1206/1847/88 1201/1854/88 1202/1848/88 -f 1203/1850/90 1199/1857/90 1200/1851/90 -f 1205/1853/92 1200/1851/92 1201/1854/92 -f 1204/1856/85 1202/1848/85 1199/1857/85 -f 1200/1851/87 1199/1857/87 1202/1848/87 -f 1214/1859/88 1209/1866/88 1210/1860/88 -f 1211/1862/90 1207/1869/90 1208/1863/90 -f 1213/1865/92 1208/1863/92 1209/1866/92 -f 1212/1868/85 1210/1860/85 1207/1869/85 -f 1208/1863/87 1207/1869/87 1210/1860/87 -f 1221/1871/87 1222/1875/87 1219/1872/87 -f 1217/1874/85 1219/1872/85 1222/1875/85 -f 1216/1877/92 1221/1871/92 1220/1873/92 -f 1218/1879/90 1222/1875/90 1221/1871/90 -f 1215/1881/88 1220/1873/88 1219/1872/88 -f 1230/1883/87 1225/1890/87 1226/1884/87 -f 1227/1886/89 1223/1893/89 1224/1887/89 -f 1229/1889/92 1224/1887/92 1225/1890/92 -f 1228/1892/85 1226/1884/85 1223/1893/85 -f 1224/1887/90 1223/1893/90 1226/1884/90 -f 1237/1895/90 1238/1899/90 1235/1896/90 -f 1233/1898/85 1235/1896/85 1238/1899/85 -f 1232/1901/92 1237/1895/92 1236/1897/92 -f 1234/1903/89 1238/1899/89 1237/1895/89 -f 1231/1905/87 1236/1897/87 1235/1896/87 -f 1245/1907/90 1246/1911/90 1243/1908/90 -f 1241/1910/85 1243/1908/85 1246/1911/85 -f 1240/1913/92 1245/1907/92 1244/1909/92 -f 1242/1915/89 1246/1911/89 1245/1907/89 -f 1239/1917/87 1244/1909/87 1243/1908/87 -f 1253/1919/90 1254/1923/90 1251/1920/90 -f 1249/1922/85 1251/1920/85 1254/1923/85 -f 1248/1925/92 1253/1919/92 1252/1921/92 -f 1250/1927/89 1254/1923/89 1253/1919/89 -f 1247/1929/87 1252/1921/87 1251/1920/87 -f 1262/1931/87 1257/1938/87 1258/1932/87 -f 1259/1934/89 1255/1941/89 1256/1935/89 -f 1261/1937/92 1256/1935/92 1257/1938/92 -f 1260/1940/85 1258/1932/85 1255/1941/85 -f 1256/1935/90 1255/1941/90 1258/1932/90 -f 1270/1943/87 1265/1950/87 1266/1944/87 -f 1267/1946/89 1263/1953/89 1264/1947/89 -f 1269/1949/92 1264/1947/92 1265/1950/92 -f 1268/1952/85 1266/1944/85 1263/1953/85 -f 1264/1947/90 1263/1953/90 1266/1944/90 -f 1282/1955/87 1277/1962/87 1278/1956/87 -f 1279/1958/89 1275/1965/89 1276/1959/89 -f 1281/1961/92 1276/1959/92 1277/1962/92 -f 1280/1964/85 1278/1956/85 1275/1965/85 -f 1276/1959/90 1275/1965/90 1278/1956/90 -f 1289/1967/90 1290/1971/90 1287/1968/90 -f 1285/1970/85 1287/1968/85 1290/1971/85 -f 1284/1973/92 1289/1967/92 1288/1969/92 -f 1286/1975/89 1290/1971/89 1289/1967/89 -f 1283/1977/87 1288/1969/87 1287/1968/87 -f 1298/1979/87 1293/1986/87 1294/1980/87 -f 1295/1982/89 1291/1989/89 1292/1983/89 -f 1297/1985/92 1292/1983/92 1293/1986/92 -f 1296/1988/85 1294/1980/85 1291/1989/85 -f 1292/1983/90 1291/1989/90 1294/1980/90 -f 1305/1991/90 1306/1995/90 1303/1992/90 -f 1301/1994/85 1303/1992/85 1306/1995/85 -f 1300/1997/92 1305/1991/92 1304/1993/92 -f 1302/1999/89 1306/1995/89 1305/1991/89 -f 1299/2001/87 1304/1993/87 1303/1992/87 -f 1310/2003/92 1309/2061/92 1273/2004/92 -f 1272/2006/90 1274/2005/90 1273/2007/90 -f 1309/2009/88 1310/2003/88 1308/2010/88 -f 1272/2006/85 1271/2062/85 1307/2012/85 -f 1274/2005/87 1272/2006/87 1308/2010/87 -f 1317/2013/90 1318/2017/90 1315/2014/90 -f 1313/2016/85 1315/2014/85 1318/2017/85 -f 1312/2019/92 1317/2013/92 1316/2015/92 -f 1314/2021/89 1318/2017/89 1317/2013/89 -f 1311/2023/87 1316/2015/87 1315/2014/87 -f 1326/2025/87 1321/2032/87 1322/2026/87 -f 1323/2028/89 1319/2035/89 1320/2029/89 -f 1325/2031/92 1320/2029/92 1321/2032/92 -f 1324/2034/85 1322/2026/85 1319/2035/85 -f 1320/2029/90 1319/2035/90 1322/2026/90 +f 1076/1581/99 1051/1582/99 1071/1583/99 +f 1090/1584/100 1065/1585/100 1075/1586/100 +f 1057/1587/101 1060/1588/101 1058/1589/101 +f 1063/1590/102 1062/1591/102 1061/1592/102 +f 1065/1593/103 1068/1594/103 1066/1595/103 +f 1067/1596/102 1070/1597/102 1068/1594/102 +f 1070/1597/101 1062/1591/101 1064/1598/101 +f 1049/1599/104 1066/1595/104 1050/1600/104 +f 1083/1601/105 1091/1602/105 1052/1603/105 +f 1053/1604/104 1073/1605/104 1055/1606/104 +f 1074/1607/99 1083/1601/99 1092/1608/99 +f 1049/1599/99 1075/1586/99 1065/1585/99 +f 1059/1609/102 1080/1610/102 1060/1588/102 +f 1058/1589/104 1077/1611/104 1057/1587/104 +f 1079/1612/101 1082/1613/101 1080/1610/101 +f 1081/1614/104 1084/1615/104 1082/1613/104 +f 1084/1615/103 1053/1604/103 1055/1606/103 +f 1061/1616/103 1086/1617/103 1063/1618/103 +f 1085/1619/102 1088/1620/102 1086/1617/102 +f 1088/1620/101 1077/1611/101 1078/1621/101 +f 1091/1602/106 1090/1584/106 1052/1603/106 +f 1071/1583/103 1075/1622/103 1076/1581/103 +f 1092/1623/104 1071/1583/104 1097/1624/104 +f 1077/1625/99 1059/1626/99 1057/1627/99 +f 1062/1628/99 1085/1629/99 1061/1630/99 +f 1085/1629/107 1069/1631/107 1090/1584/107 +f 1054/1632/102 1075/1622/102 1056/1633/102 +f 1074/1634/101 1097/1624/101 1073/1605/101 +f 1077/1625/108 1089/1635/108 1091/1602/108 +f 1093/1636/102 1102/1637/102 1094/1638/102 +f 1098/1639/99 1070/1597/99 1064/1640/99 +f 1098/1641/99 1066/1595/99 1068/1594/99 +f 1050/1600/103 1056/1633/103 1049/1599/103 +f 1051/1642/99 1097/1624/99 1071/1583/99 +f 1099/1643/99 1084/1615/99 1055/1644/99 +f 1080/1610/99 1099/1645/99 1060/1646/99 +f 1100/1647/99 1086/1617/99 1088/1620/99 +f 1078/1621/99 1100/1648/99 1088/1620/99 +f 1095/1649/109 1093/1650/109 1058/1589/109 +f 1095/1651/110 1099/1652/110 1055/1606/110 +f 1094/1653/111 1096/1654/111 1054/1632/111 +f 1093/1636/112 1094/1638/112 1064/1598/112 +f 1102/1655/113 1095/1651/113 1096/1656/113 +f 1094/1653/103 1102/1657/103 1096/1654/103 +f 1093/1650/101 1095/1649/101 1101/1658/101 +f 1109/1659/103 1107/1660/103 1108/1661/103 +f 1105/1662/99 1110/1663/99 1106/1664/99 +f 1104/1665/106 1108/1661/106 1103/1666/106 +f 1106/1667/102 1109/1659/102 1104/1668/102 +f 1103/1669/104 1107/1660/104 1105/1670/104 +f 1118/1671/104 1114/1672/104 1116/1673/104 +f 1115/1674/102 1112/1675/102 1117/1676/102 +f 1117/1677/106 1113/1678/106 1118/1679/106 +f 1116/1680/99 1111/1681/99 1115/1682/99 +f 1112/1675/103 1114/1672/103 1113/1678/103 +f 1126/1683/104 1122/1684/104 1124/1685/104 +f 1123/1686/102 1120/1687/102 1125/1688/102 +f 1125/1689/106 1121/1690/106 1126/1691/106 +f 1124/1692/99 1119/1693/99 1123/1694/99 +f 1120/1687/103 1122/1684/103 1121/1690/103 +f 1133/1695/103 1131/1696/103 1132/1697/103 +f 1129/1698/99 1134/1699/99 1130/1700/99 +f 1128/1701/106 1132/1697/106 1127/1702/106 +f 1130/1703/102 1133/1695/102 1128/1704/102 +f 1127/1705/104 1131/1696/104 1129/1706/104 +f 1142/1707/104 1138/1708/104 1140/1709/104 +f 1139/1710/102 1136/1711/102 1141/1712/102 +f 1141/1713/106 1137/1714/106 1142/1715/106 +f 1140/1716/99 1135/1717/99 1139/1718/99 +f 1136/1711/103 1138/1708/103 1137/1714/103 +f 1149/1719/103 1147/1720/103 1148/1721/103 +f 1145/1722/99 1150/1723/99 1146/1724/99 +f 1144/1725/106 1148/1721/106 1143/1726/106 +f 1146/1727/102 1149/1719/102 1144/1728/102 +f 1143/1729/104 1147/1720/104 1145/1730/104 +f 1157/1731/103 1155/1732/103 1156/1733/103 +f 1153/1734/99 1158/1735/99 1154/1736/99 +f 1152/1737/106 1156/1733/106 1151/1738/106 +f 1154/1739/102 1157/1731/102 1152/1740/102 +f 1151/1741/104 1155/1732/104 1153/1742/104 +f 1165/1743/103 1163/1744/103 1164/1745/103 +f 1161/1746/99 1166/1747/99 1162/1748/99 +f 1160/1749/106 1164/1745/106 1159/1750/106 +f 1162/1751/102 1165/1743/102 1160/1752/102 +f 1159/1753/104 1163/1744/104 1161/1754/104 +f 1174/1755/104 1170/1756/104 1172/1757/104 +f 1171/1758/102 1168/1759/102 1173/1760/102 +f 1173/1761/106 1169/1762/106 1174/1763/106 +f 1172/1764/99 1167/1765/99 1171/1766/99 +f 1168/1759/103 1170/1756/103 1169/1762/103 +f 1182/1767/104 1178/1768/104 1180/1769/104 +f 1179/1770/102 1176/1771/102 1181/1772/102 +f 1181/1773/106 1177/1774/106 1182/1775/106 +f 1180/1776/99 1175/1777/99 1179/1778/99 +f 1176/1771/103 1178/1768/103 1177/1774/103 +f 1190/1779/104 1186/1780/104 1188/1781/104 +f 1187/1782/102 1184/1783/102 1189/1784/102 +f 1189/1785/106 1185/1786/106 1190/1787/106 +f 1188/1788/99 1183/1789/99 1187/1790/99 +f 1184/1783/103 1186/1780/103 1185/1786/103 +f 1197/1791/103 1195/1792/103 1196/1793/103 +f 1193/1794/99 1198/1795/99 1194/1796/99 +f 1192/1797/106 1196/1793/106 1191/1798/106 +f 1194/1799/102 1197/1791/102 1192/1800/102 +f 1191/1801/104 1195/1792/104 1193/1802/104 +f 1205/1803/101 1203/1804/101 1204/1805/101 +f 1201/1806/99 1206/1807/99 1202/1808/99 +f 1200/1809/106 1204/1805/106 1199/1810/106 +f 1202/1811/104 1205/1803/104 1200/1812/104 +f 1199/1813/102 1203/1804/102 1201/1814/102 +f 1214/1815/102 1210/1816/102 1212/1817/102 +f 1211/1818/104 1208/1819/104 1213/1820/104 +f 1213/1821/106 1209/1822/106 1214/1823/106 +f 1212/1824/99 1207/1825/99 1211/1826/99 +f 1208/1819/101 1210/1816/101 1209/1822/101 +f 1222/1827/102 1218/1828/102 1220/1829/102 +f 1219/1830/104 1216/1831/104 1221/1832/104 +f 1221/1833/106 1217/1834/106 1222/1835/106 +f 1220/1836/99 1215/1837/99 1219/1838/99 +f 1216/1831/101 1218/1828/101 1217/1834/101 +f 1229/1839/101 1227/1840/101 1228/1841/101 +f 1225/1842/99 1230/1843/99 1226/1844/99 +f 1224/1845/106 1228/1841/106 1223/1846/106 +f 1226/1847/104 1229/1839/104 1224/1848/104 +f 1223/1849/102 1227/1840/102 1225/1850/102 +f 1237/1851/101 1235/1852/101 1236/1853/101 +f 1233/1854/99 1238/1855/99 1234/1856/99 +f 1232/1857/106 1236/1853/106 1231/1858/106 +f 1234/1859/104 1237/1851/104 1232/1860/104 +f 1231/1861/102 1235/1852/102 1233/1862/102 +f 1246/1863/102 1242/1864/102 1244/1865/102 +f 1243/1866/104 1240/1867/104 1245/1868/104 +f 1245/1869/106 1241/1870/106 1246/1871/106 +f 1244/1872/99 1239/1873/99 1243/1874/99 +f 1240/1867/101 1242/1864/101 1241/1870/101 +f 1254/1875/102 1250/1876/102 1252/1877/102 +f 1251/1878/104 1248/1879/104 1253/1880/104 +f 1253/1881/106 1249/1882/106 1254/1883/106 +f 1252/1884/99 1247/1885/99 1251/1886/99 +f 1248/1879/101 1250/1876/101 1249/1882/101 +f 1261/1887/101 1259/1888/101 1260/1889/101 +f 1257/1890/99 1262/1891/99 1258/1892/99 +f 1256/1893/106 1260/1889/106 1255/1894/106 +f 1258/1895/104 1261/1887/104 1256/1896/104 +f 1255/1897/102 1259/1888/102 1257/1898/102 +f 1270/1899/101 1266/1900/101 1268/1901/101 +f 1267/1902/103 1264/1903/103 1269/1904/103 +f 1269/1905/106 1265/1906/106 1270/1907/106 +f 1268/1908/99 1263/1909/99 1267/1910/99 +f 1264/1903/104 1266/1900/104 1265/1906/104 +f 1277/1911/104 1275/1912/104 1276/1913/104 +f 1273/1914/99 1278/1915/99 1274/1916/99 +f 1272/1917/106 1276/1913/106 1271/1918/106 +f 1274/1919/103 1277/1911/103 1272/1920/103 +f 1271/1921/101 1275/1912/101 1273/1922/101 +f 1285/1923/104 1283/1924/104 1284/1925/104 +f 1281/1926/99 1286/1927/99 1282/1928/99 +f 1280/1929/106 1284/1925/106 1279/1930/106 +f 1282/1931/103 1285/1923/103 1280/1932/103 +f 1279/1933/101 1283/1924/101 1281/1934/101 +f 1293/1935/104 1291/1936/104 1292/1937/104 +f 1289/1938/99 1294/1939/99 1290/1940/99 +f 1288/1941/106 1292/1937/106 1287/1942/106 +f 1290/1943/103 1293/1935/103 1288/1944/103 +f 1287/1945/101 1291/1936/101 1289/1946/101 +f 1302/1947/101 1298/1948/101 1300/1949/101 +f 1299/1950/103 1296/1951/103 1301/1952/103 +f 1301/1953/106 1297/1954/106 1302/1955/106 +f 1300/1956/99 1295/1957/99 1299/1958/99 +f 1296/1951/104 1298/1948/104 1297/1954/104 +f 1310/1959/101 1306/1960/101 1308/1961/101 +f 1307/1962/103 1304/1963/103 1309/1964/103 +f 1309/1965/106 1305/1966/106 1310/1967/106 +f 1308/1968/99 1303/1969/99 1307/1970/99 +f 1304/1963/104 1306/1960/104 1305/1966/104 +f 1322/1971/101 1318/1972/101 1320/1973/101 +f 1319/1974/103 1316/1975/103 1321/1976/103 +f 1321/1977/106 1317/1978/106 1322/1979/106 +f 1320/1980/99 1315/1981/99 1319/1982/99 +f 1316/1975/104 1318/1972/104 1317/1978/104 +f 1329/1983/104 1327/1984/104 1328/1985/104 +f 1325/1986/99 1330/1987/99 1326/1988/99 +f 1324/1989/106 1328/1985/106 1323/1990/106 +f 1326/1991/103 1329/1983/103 1324/1992/103 +f 1323/1993/101 1327/1984/101 1325/1994/101 +f 1338/1995/101 1334/1996/101 1336/1997/101 +f 1335/1998/103 1332/1999/103 1337/2000/103 +f 1337/2001/106 1333/2002/106 1338/2003/106 +f 1336/2004/99 1331/2005/99 1335/2006/99 +f 1332/1999/104 1334/1996/104 1333/2002/104 +f 1345/2007/104 1343/2008/104 1344/2009/104 +f 1341/2010/99 1346/2011/99 1342/2012/99 +f 1340/2013/106 1344/2009/106 1339/2014/106 +f 1342/2015/103 1345/2007/103 1340/2016/103 +f 1339/2017/101 1343/2008/101 1341/2018/101 +f 1350/2019/106 1313/2020/106 1314/2021/106 +f 1312/2022/104 1313/2023/104 1311/2024/104 +f 1349/2025/102 1348/2026/102 1347/2027/102 +f 1312/2022/99 1347/2028/99 1348/2026/99 +f 1314/2021/101 1348/2026/101 1350/2019/101 +f 1357/2029/104 1355/2030/104 1356/2031/104 +f 1353/2032/99 1358/2033/99 1354/2034/99 +f 1352/2035/106 1356/2031/106 1351/2036/106 +f 1354/2037/103 1357/2029/103 1352/2038/103 +f 1351/2039/101 1355/2030/101 1353/2040/101 +f 1366/2041/101 1362/2042/101 1364/2043/101 +f 1363/2044/103 1360/2045/103 1365/2046/103 +f 1365/2047/106 1361/2048/106 1366/2049/106 +f 1364/2050/99 1359/2051/99 1363/2052/99 +f 1360/2045/104 1362/2042/104 1361/2048/104 +f 1076/1581/99 1054/2053/99 1051/1582/99 +f 1072/2054/100 1052/1603/100 1075/1586/100 +f 1052/1603/100 1090/1584/100 1075/1586/100 +f 1090/1584/100 1067/2055/100 1065/1585/100 +f 1057/1587/101 1059/1609/101 1060/1588/101 +f 1063/1590/102 1064/1598/102 1062/1591/102 +f 1065/1593/103 1067/1596/103 1068/1594/103 +f 1067/1596/102 1069/2056/102 1070/1597/102 +f 1070/1597/101 1069/2056/101 1062/1591/101 +f 1049/1599/104 1065/1593/104 1066/1595/104 +f 1052/1603/105 1072/2054/105 1092/1608/105 +f 1083/1601/105 1081/2057/105 1091/1602/105 +f 1052/1603/105 1092/1608/105 1083/1601/105 +f 1053/1604/104 1074/1634/104 1073/1605/104 +f 1074/1607/99 1053/2058/99 1083/1601/99 +f 1049/1599/99 1056/1633/99 1075/1586/99 +f 1059/1609/102 1079/1612/102 1080/1610/102 +f 1058/1589/104 1078/1621/104 1077/1611/104 +f 1079/1612/101 1081/1614/101 1082/1613/101 +f 1081/1614/104 1083/2059/104 1084/1615/104 +f 1084/1615/103 1083/2059/103 1053/1604/103 +f 1061/1616/103 1085/1619/103 1086/1617/103 +f 1085/1619/102 1087/2060/102 1088/1620/102 +f 1088/1620/101 1087/2060/101 1077/1611/101 +f 1091/1602/106 1089/1635/106 1090/1584/106 +f 1071/1583/103 1072/2061/103 1075/1622/103 +f 1092/1623/104 1072/2061/104 1071/1583/104 +f 1077/1625/99 1079/2062/99 1059/1626/99 +f 1062/1628/99 1069/1631/99 1085/1629/99 +f 1069/1631/107 1067/2055/107 1090/1584/107 +f 1090/1584/107 1089/1635/107 1085/1629/107 +f 1089/1635/107 1087/2063/107 1085/1629/107 +f 1054/1632/102 1076/1581/102 1075/1622/102 +f 1074/1634/101 1092/1623/101 1097/1624/101 +f 1091/1602/108 1081/2057/108 1079/2062/108 +f 1077/1625/108 1087/2063/108 1089/1635/108 +f 1091/1602/108 1079/2062/108 1077/1625/108 +f 1093/1636/102 1101/2064/102 1102/1637/102 +f 1098/1639/99 1068/1594/99 1070/1597/99 +f 1098/1641/99 1050/2065/99 1066/1595/99 +f 1050/1600/103 1054/1632/103 1056/1633/103 +f 1051/1642/99 1073/2066/99 1097/1624/99 +f 1099/1643/99 1082/1613/99 1084/1615/99 +f 1080/1610/99 1082/1613/99 1099/1645/99 +f 1100/1647/99 1063/2067/99 1086/1617/99 +f 1078/1621/99 1058/2068/99 1100/1648/99 +f 1100/2069/109 1058/1589/109 1093/1650/109 +f 1058/1589/109 1060/1588/109 1095/1649/109 +f 1060/1588/109 1099/2070/109 1095/1649/109 +f 1055/1606/110 1073/1605/110 1095/1651/110 +f 1073/1605/110 1051/2071/110 1096/1656/110 +f 1095/1651/110 1073/1605/110 1096/1656/110 +f 1051/2072/111 1054/1632/111 1096/1654/111 +f 1054/1632/111 1050/1600/111 1094/1653/111 +f 1050/1600/111 1098/2073/111 1094/1653/111 +f 1098/2074/112 1064/1598/112 1094/1638/112 +f 1064/1598/112 1063/1590/112 1093/1636/112 +f 1063/1590/112 1100/2075/112 1093/1636/112 +f 1102/1655/113 1101/2076/113 1095/1651/113 +f 1109/1659/103 1110/1663/103 1107/1660/103 +f 1105/1662/99 1107/1660/99 1110/1663/99 +f 1104/1665/106 1109/1659/106 1108/1661/106 +f 1106/1667/102 1110/1663/102 1109/1659/102 +f 1103/1669/104 1108/1661/104 1107/1660/104 +f 1118/1671/104 1113/1678/104 1114/1672/104 +f 1115/1674/102 1111/1681/102 1112/1675/102 +f 1117/1677/106 1112/1675/106 1113/1678/106 +f 1116/1680/99 1114/1672/99 1111/1681/99 +f 1112/1675/103 1111/1681/103 1114/1672/103 +f 1126/1683/104 1121/1690/104 1122/1684/104 +f 1123/1686/102 1119/1693/102 1120/1687/102 +f 1125/1689/106 1120/1687/106 1121/1690/106 +f 1124/1692/99 1122/1684/99 1119/1693/99 +f 1120/1687/103 1119/1693/103 1122/1684/103 +f 1133/1695/103 1134/1699/103 1131/1696/103 +f 1129/1698/99 1131/1696/99 1134/1699/99 +f 1128/1701/106 1133/1695/106 1132/1697/106 +f 1130/1703/102 1134/1699/102 1133/1695/102 +f 1127/1705/104 1132/1697/104 1131/1696/104 +f 1142/1707/104 1137/1714/104 1138/1708/104 +f 1139/1710/102 1135/1717/102 1136/1711/102 +f 1141/1713/106 1136/1711/106 1137/1714/106 +f 1140/1716/99 1138/1708/99 1135/1717/99 +f 1136/1711/103 1135/1717/103 1138/1708/103 +f 1149/1719/103 1150/1723/103 1147/1720/103 +f 1145/1722/99 1147/1720/99 1150/1723/99 +f 1144/1725/106 1149/1719/106 1148/1721/106 +f 1146/1727/102 1150/1723/102 1149/1719/102 +f 1143/1729/104 1148/1721/104 1147/1720/104 +f 1157/1731/103 1158/1735/103 1155/1732/103 +f 1153/1734/99 1155/1732/99 1158/1735/99 +f 1152/1737/106 1157/1731/106 1156/1733/106 +f 1154/1739/102 1158/1735/102 1157/1731/102 +f 1151/1741/104 1156/1733/104 1155/1732/104 +f 1165/1743/103 1166/1747/103 1163/1744/103 +f 1161/1746/99 1163/1744/99 1166/1747/99 +f 1160/1749/106 1165/1743/106 1164/1745/106 +f 1162/1751/102 1166/1747/102 1165/1743/102 +f 1159/1753/104 1164/1745/104 1163/1744/104 +f 1174/1755/104 1169/1762/104 1170/1756/104 +f 1171/1758/102 1167/1765/102 1168/1759/102 +f 1173/1761/106 1168/1759/106 1169/1762/106 +f 1172/1764/99 1170/1756/99 1167/1765/99 +f 1168/1759/103 1167/1765/103 1170/1756/103 +f 1182/1767/104 1177/1774/104 1178/1768/104 +f 1179/1770/102 1175/1777/102 1176/1771/102 +f 1181/1773/106 1176/1771/106 1177/1774/106 +f 1180/1776/99 1178/1768/99 1175/1777/99 +f 1176/1771/103 1175/1777/103 1178/1768/103 +f 1190/1779/104 1185/1786/104 1186/1780/104 +f 1187/1782/102 1183/1789/102 1184/1783/102 +f 1189/1785/106 1184/1783/106 1185/1786/106 +f 1188/1788/99 1186/1780/99 1183/1789/99 +f 1184/1783/103 1183/1789/103 1186/1780/103 +f 1197/1791/103 1198/1795/103 1195/1792/103 +f 1193/1794/99 1195/1792/99 1198/1795/99 +f 1192/1797/106 1197/1791/106 1196/1793/106 +f 1194/1799/102 1198/1795/102 1197/1791/102 +f 1191/1801/104 1196/1793/104 1195/1792/104 +f 1205/1803/101 1206/1807/101 1203/1804/101 +f 1201/1806/99 1203/1804/99 1206/1807/99 +f 1200/1809/106 1205/1803/106 1204/1805/106 +f 1202/1811/104 1206/1807/104 1205/1803/104 +f 1199/1813/102 1204/1805/102 1203/1804/102 +f 1214/1815/102 1209/1822/102 1210/1816/102 +f 1211/1818/104 1207/1825/104 1208/1819/104 +f 1213/1821/106 1208/1819/106 1209/1822/106 +f 1212/1824/99 1210/1816/99 1207/1825/99 +f 1208/1819/101 1207/1825/101 1210/1816/101 +f 1222/1827/102 1217/1834/102 1218/1828/102 +f 1219/1830/104 1215/1837/104 1216/1831/104 +f 1221/1833/106 1216/1831/106 1217/1834/106 +f 1220/1836/99 1218/1828/99 1215/1837/99 +f 1216/1831/101 1215/1837/101 1218/1828/101 +f 1229/1839/101 1230/1843/101 1227/1840/101 +f 1225/1842/99 1227/1840/99 1230/1843/99 +f 1224/1845/106 1229/1839/106 1228/1841/106 +f 1226/1847/104 1230/1843/104 1229/1839/104 +f 1223/1849/102 1228/1841/102 1227/1840/102 +f 1237/1851/101 1238/1855/101 1235/1852/101 +f 1233/1854/99 1235/1852/99 1238/1855/99 +f 1232/1857/106 1237/1851/106 1236/1853/106 +f 1234/1859/104 1238/1855/104 1237/1851/104 +f 1231/1861/102 1236/1853/102 1235/1852/102 +f 1246/1863/102 1241/1870/102 1242/1864/102 +f 1243/1866/104 1239/1873/104 1240/1867/104 +f 1245/1869/106 1240/1867/106 1241/1870/106 +f 1244/1872/99 1242/1864/99 1239/1873/99 +f 1240/1867/101 1239/1873/101 1242/1864/101 +f 1254/1875/102 1249/1882/102 1250/1876/102 +f 1251/1878/104 1247/1885/104 1248/1879/104 +f 1253/1881/106 1248/1879/106 1249/1882/106 +f 1252/1884/99 1250/1876/99 1247/1885/99 +f 1248/1879/101 1247/1885/101 1250/1876/101 +f 1261/1887/101 1262/1891/101 1259/1888/101 +f 1257/1890/99 1259/1888/99 1262/1891/99 +f 1256/1893/106 1261/1887/106 1260/1889/106 +f 1258/1895/104 1262/1891/104 1261/1887/104 +f 1255/1897/102 1260/1889/102 1259/1888/102 +f 1270/1899/101 1265/1906/101 1266/1900/101 +f 1267/1902/103 1263/1909/103 1264/1903/103 +f 1269/1905/106 1264/1903/106 1265/1906/106 +f 1268/1908/99 1266/1900/99 1263/1909/99 +f 1264/1903/104 1263/1909/104 1266/1900/104 +f 1277/1911/104 1278/1915/104 1275/1912/104 +f 1273/1914/99 1275/1912/99 1278/1915/99 +f 1272/1917/106 1277/1911/106 1276/1913/106 +f 1274/1919/103 1278/1915/103 1277/1911/103 +f 1271/1921/101 1276/1913/101 1275/1912/101 +f 1285/1923/104 1286/1927/104 1283/1924/104 +f 1281/1926/99 1283/1924/99 1286/1927/99 +f 1280/1929/106 1285/1923/106 1284/1925/106 +f 1282/1931/103 1286/1927/103 1285/1923/103 +f 1279/1933/101 1284/1925/101 1283/1924/101 +f 1293/1935/104 1294/1939/104 1291/1936/104 +f 1289/1938/99 1291/1936/99 1294/1939/99 +f 1288/1941/106 1293/1935/106 1292/1937/106 +f 1290/1943/103 1294/1939/103 1293/1935/103 +f 1287/1945/101 1292/1937/101 1291/1936/101 +f 1302/1947/101 1297/1954/101 1298/1948/101 +f 1299/1950/103 1295/1957/103 1296/1951/103 +f 1301/1953/106 1296/1951/106 1297/1954/106 +f 1300/1956/99 1298/1948/99 1295/1957/99 +f 1296/1951/104 1295/1957/104 1298/1948/104 +f 1310/1959/101 1305/1966/101 1306/1960/101 +f 1307/1962/103 1303/1969/103 1304/1963/103 +f 1309/1965/106 1304/1963/106 1305/1966/106 +f 1308/1968/99 1306/1960/99 1303/1969/99 +f 1304/1963/104 1303/1969/104 1306/1960/104 +f 1322/1971/101 1317/1978/101 1318/1972/101 +f 1319/1974/103 1315/1981/103 1316/1975/103 +f 1321/1977/106 1316/1975/106 1317/1978/106 +f 1320/1980/99 1318/1972/99 1315/1981/99 +f 1316/1975/104 1315/1981/104 1318/1972/104 +f 1329/1983/104 1330/1987/104 1327/1984/104 +f 1325/1986/99 1327/1984/99 1330/1987/99 +f 1324/1989/106 1329/1983/106 1328/1985/106 +f 1326/1991/103 1330/1987/103 1329/1983/103 +f 1323/1993/101 1328/1985/101 1327/1984/101 +f 1338/1995/101 1333/2002/101 1334/1996/101 +f 1335/1998/103 1331/2005/103 1332/1999/103 +f 1337/2001/106 1332/1999/106 1333/2002/106 +f 1336/2004/99 1334/1996/99 1331/2005/99 +f 1332/1999/104 1331/2005/104 1334/1996/104 +f 1345/2007/104 1346/2011/104 1343/2008/104 +f 1341/2010/99 1343/2008/99 1346/2011/99 +f 1340/2013/106 1345/2007/106 1344/2009/106 +f 1342/2015/103 1346/2011/103 1345/2007/103 +f 1339/2017/101 1344/2009/101 1343/2008/101 +f 1350/2019/106 1349/2077/106 1313/2020/106 +f 1312/2022/104 1314/2021/104 1313/2023/104 +f 1349/2025/102 1350/2019/102 1348/2026/102 +f 1312/2022/99 1311/2078/99 1347/2028/99 +f 1314/2021/101 1312/2022/101 1348/2026/101 +f 1357/2029/104 1358/2033/104 1355/2030/104 +f 1353/2032/99 1355/2030/99 1358/2033/99 +f 1352/2035/106 1357/2029/106 1356/2031/106 +f 1354/2037/103 1358/2033/103 1357/2029/103 +f 1351/2039/101 1356/2031/101 1355/2030/101 +f 1366/2041/101 1361/2048/101 1362/2042/101 +f 1363/2044/103 1359/2051/103 1360/2045/103 +f 1365/2047/106 1360/2045/106 1361/2048/106 +f 1364/2050/99 1362/2042/99 1359/2051/99 +f 1360/2045/104 1359/2051/104 1362/2042/104 o Head v -4.000008 0.000002 -5.000000 v 3.999992 -0.000002 -5.000000 @@ -5851,248 +5925,248 @@ vn 0.1445 0.9063 -0.3971 vn 0.8917 0.2418 -0.3825 vn -0.3068 -0.0904 -0.9474 s off -f 1328/2063/100 1329/2064/100 1327/2065/100 -f 1331/2066/101 1334/2067/101 1332/2068/101 -f 1335/2069/102 1338/2070/102 1336/2071/102 -f 1340/2072/103 1342/2073/103 1339/2074/103 -f 1343/2075/104 1345/2076/104 1344/2077/104 -f 1349/2078/105 1348/2079/105 1347/2080/105 -f 1327/2065/106 1350/2081/106 1328/2063/106 -f 1350/2082/107 1331/2066/107 1332/2068/107 -f 1332/2068/108 1330/2083/108 1328/2063/108 -f 1350/2084/109 1332/2068/109 1328/2063/109 -f 1336/2071/110 1333/2085/110 1331/2066/110 -f 1349/2086/111 1335/2069/111 1336/2071/111 -f 1349/2087/112 1336/2071/112 1331/2066/112 -f 1339/2088/113 1337/2089/113 1335/2069/113 -f 1347/2090/114 1340/2072/114 1339/2074/114 -f 1347/2091/115 1339/2088/115 1335/2069/115 -f 1341/2092/116 1327/2065/116 1329/2064/116 -f 1348/2093/117 1327/2065/117 1340/2072/117 -f 1333/2085/118 1346/2094/118 1334/2067/118 -f 1346/2095/119 1329/2064/119 1330/2083/119 -f 1334/2067/120 1346/2096/120 1330/2083/120 -f 1337/2089/121 1345/2097/121 1338/2070/121 -f 1338/2070/122 1345/2098/122 1333/2085/122 -f 1341/2092/123 1344/2099/123 1342/2073/123 -f 1342/2100/124 1344/2101/124 1337/2089/124 -f 1341/2092/125 1329/2064/125 1343/2102/125 -f 1353/2103/100 1393/2104/100 1391/2105/100 -f 1352/2106/116 1358/2107/116 1354/2108/116 -f 1353/2103/108 1355/2109/108 1351/2110/108 -f 1356/2111/103 1363/2112/103 1362/2113/103 -f 1364/2114/101 1355/2109/101 1361/2115/101 -f 1360/2116/104 1369/2117/104 1370/2118/104 -f 1352/2106/104 1369/2119/104 1356/2111/104 -f 1366/2120/104 1352/2106/104 1351/2110/104 -f 1368/2121/104 1351/2110/104 1355/2109/104 -f 1368/2122/104 1359/2123/104 1367/2124/104 -f 1361/2115/105 1374/2125/105 1373/2126/105 -f 1353/2103/105 1374/2127/105 1357/2128/105 -f 1354/2108/105 1372/2129/105 1353/2103/105 -f 1376/2130/105 1354/2108/105 1358/2107/105 -f 1376/2131/105 1362/2113/105 1375/2132/105 -f 1367/2133/102 1364/2114/102 1377/2134/102 -f 1361/2135/126 1377/2134/126 1364/2114/126 -f 1360/2116/102 1378/2136/102 1363/2112/102 -f 1378/2136/126 1362/2137/126 1363/2112/126 -f 1387/2138/104 1390/2139/104 1388/2140/104 -f 1381/2141/103 1388/2140/103 1382/2142/103 -f 1390/2139/101 1385/2143/101 1386/2144/101 -f 1385/2143/101 1389/2145/101 1383/2146/101 -f 1381/2141/103 1379/2147/103 1387/2138/103 -f 1379/2147/127 1389/2145/127 1387/2138/127 -f 1386/2144/101 1384/2148/101 1390/2139/101 -f 1382/2142/103 1388/2140/103 1380/2149/103 -f 1390/2139/128 1380/2149/128 1388/2140/128 -f 1391/2105/100 1354/2108/100 1353/2103/100 -f 1398/2150/103 1391/2151/103 1393/2152/103 -f 1396/2153/104 1392/2154/104 1391/2155/104 -f 1395/2156/101 1394/2157/101 1392/2158/101 -f 1397/2159/105 1393/2160/105 1394/2161/105 -f 1352/2106/100 1393/2104/100 1351/2110/100 -f 1354/2108/100 1394/2162/100 1352/2106/100 -f 1398/2150/100 1395/2156/100 1396/2153/100 -f 1429/2163/129 1434/2164/129 1432/2165/129 -f 1465/2166/130 1470/2167/130 1468/2168/130 -f 1477/2169/100 1478/2170/100 1479/2171/100 -f 1480/2172/100 1482/2173/100 1481/2174/100 -f 1472/2175/105 1477/2169/105 1471/2176/105 -f 1475/2177/107 1482/2178/107 1476/2179/107 -f 1474/2180/104 1481/2174/104 1475/2177/104 -f 1471/2176/123 1479/2181/123 1473/2182/123 -f 1476/2183/114 1480/2172/114 1474/2180/114 -f 1473/2184/118 1478/2170/118 1472/2175/118 -f 1328/2063/100 1330/2083/100 1329/2064/100 -f 1331/2066/101 1333/2085/101 1334/2067/101 -f 1335/2069/102 1337/2089/102 1338/2070/102 -f 1340/2072/103 1341/2092/103 1342/2073/103 -f 1343/2075/104 1346/2095/104 1345/2076/104 -f 1349/2078/105 1350/2081/105 1348/2079/105 -f 1327/2065/106 1348/2079/106 1350/2081/106 -f 1350/2082/107 1349/2185/107 1331/2066/107 -f 1332/2068/108 1334/2067/108 1330/2083/108 -f 1336/2071/110 1338/2070/110 1333/2085/110 -f 1349/2086/111 1347/2186/111 1335/2069/111 -f 1339/2088/113 1342/2100/113 1337/2089/113 -f 1347/2090/114 1348/2187/114 1340/2072/114 -f 1341/2092/116 1340/2072/116 1327/2065/116 -f 1333/2085/118 1345/2188/118 1346/2094/118 -f 1346/2095/119 1343/2075/119 1329/2064/119 -f 1337/2089/121 1344/2189/121 1345/2097/121 -f 1341/2092/123 1343/2190/123 1344/2099/123 -f 1353/2103/100 1351/2110/100 1393/2104/100 -f 1352/2106/116 1356/2111/116 1358/2107/116 -f 1353/2103/108 1357/2128/108 1355/2109/108 -f 1362/2113/103 1358/2107/103 1356/2111/103 -f 1356/2111/103 1360/2116/103 1363/2112/103 -f 1359/2123/101 1355/2109/101 1364/2114/101 -f 1355/2109/101 1357/2128/101 1361/2115/101 -f 1360/2116/104 1356/2111/104 1369/2117/104 -f 1352/2106/104 1365/2191/104 1369/2119/104 -f 1366/2120/104 1365/2192/104 1352/2106/104 -f 1368/2121/104 1366/2193/104 1351/2110/104 -f 1368/2122/104 1355/2109/104 1359/2123/104 -f 1361/2115/105 1357/2128/105 1374/2125/105 -f 1353/2103/105 1372/2194/105 1374/2127/105 -f 1354/2108/105 1371/2195/105 1372/2129/105 -f 1376/2130/105 1371/2196/105 1354/2108/105 -f 1376/2131/105 1358/2107/105 1362/2113/105 -f 1367/2133/102 1359/2123/102 1364/2114/102 -f 1361/2135/126 1373/2197/126 1377/2134/126 -f 1360/2116/102 1370/2198/102 1378/2136/102 -f 1378/2136/126 1375/2199/126 1362/2137/126 -f 1387/2138/104 1389/2145/104 1390/2139/104 -f 1381/2141/103 1387/2138/103 1388/2140/103 -f 1390/2139/101 1389/2145/101 1385/2143/101 -f 1379/2147/127 1383/2146/127 1389/2145/127 -f 1390/2139/128 1384/2148/128 1380/2149/128 -f 1391/2105/100 1392/2200/100 1354/2108/100 -f 1398/2150/103 1396/2153/103 1391/2151/103 -f 1396/2153/104 1395/2156/104 1392/2154/104 -f 1395/2156/101 1397/2159/101 1394/2157/101 -f 1397/2159/105 1398/2150/105 1393/2160/105 -f 1352/2106/100 1394/2162/100 1393/2104/100 -f 1354/2108/100 1392/2200/100 1394/2162/100 -f 1398/2150/100 1397/2159/100 1395/2156/100 -f 1425/2201/129 1424/2202/129 1423/2203/129 -f 1423/2203/129 1434/2164/129 1425/2201/129 -f 1434/2164/129 1433/2204/129 1432/2165/129 -f 1425/2201/129 1434/2164/129 1429/2163/129 -f 1432/2165/129 1431/2205/129 1429/2163/129 -f 1431/2205/129 1430/2206/129 1429/2163/129 -f 1429/2163/129 1428/2207/129 1427/2208/129 -f 1427/2208/129 1426/2209/129 1429/2163/129 -f 1426/2209/129 1425/2201/129 1429/2163/129 -f 1461/2210/130 1460/2211/130 1459/2212/130 -f 1459/2212/130 1470/2167/130 1461/2210/130 -f 1470/2167/130 1469/2213/130 1468/2168/130 -f 1461/2210/130 1470/2167/130 1465/2166/130 -f 1468/2168/130 1467/2214/130 1465/2166/130 -f 1467/2214/130 1466/2215/130 1465/2166/130 -f 1465/2166/130 1464/2216/130 1463/2217/130 -f 1463/2217/130 1462/2218/130 1465/2166/130 -f 1462/2218/130 1461/2210/130 1465/2166/130 -f 1472/2175/105 1478/2170/105 1477/2169/105 -f 1475/2177/107 1481/2174/107 1482/2178/107 -f 1474/2180/104 1480/2172/104 1481/2174/104 -f 1471/2176/123 1477/2169/123 1479/2181/123 -f 1476/2183/114 1482/2219/114 1480/2172/114 -f 1473/2184/118 1479/2220/118 1478/2170/118 +f 1368/2079/114 1369/2080/114 1367/2081/114 +f 1371/2082/115 1374/2083/115 1372/2084/115 +f 1375/2085/116 1378/2086/116 1376/2087/116 +f 1380/2088/117 1382/2089/117 1379/2090/117 +f 1383/2091/118 1385/2092/118 1384/2093/118 +f 1389/2094/119 1388/2095/119 1387/2096/119 +f 1367/2081/120 1390/2097/120 1368/2079/120 +f 1390/2098/121 1371/2082/121 1372/2084/121 +f 1372/2084/122 1370/2099/122 1368/2079/122 +f 1390/2100/123 1372/2084/123 1368/2079/123 +f 1376/2087/124 1373/2101/124 1371/2082/124 +f 1389/2102/125 1375/2085/125 1376/2087/125 +f 1389/2103/126 1376/2087/126 1371/2082/126 +f 1379/2104/127 1377/2105/127 1375/2085/127 +f 1387/2106/128 1380/2088/128 1379/2090/128 +f 1387/2107/129 1379/2104/129 1375/2085/129 +f 1381/2108/130 1367/2081/130 1369/2080/130 +f 1388/2109/131 1367/2081/131 1380/2088/131 +f 1373/2101/132 1386/2110/132 1374/2083/132 +f 1386/2111/133 1369/2080/133 1370/2099/133 +f 1374/2083/134 1386/2112/134 1370/2099/134 +f 1377/2105/135 1385/2113/135 1378/2086/135 +f 1378/2086/136 1385/2114/136 1373/2101/136 +f 1381/2108/137 1384/2115/137 1382/2089/137 +f 1382/2116/138 1384/2117/138 1377/2105/138 +f 1381/2108/139 1369/2080/139 1383/2118/139 +f 1393/2119/114 1433/2120/114 1431/2121/114 +f 1392/2122/130 1398/2123/130 1394/2124/130 +f 1393/2119/122 1395/2125/122 1391/2126/122 +f 1396/2127/117 1403/2128/117 1402/2129/117 +f 1404/2130/115 1395/2125/115 1401/2131/115 +f 1400/2132/118 1409/2133/118 1410/2134/118 +f 1392/2122/118 1409/2135/118 1396/2127/118 +f 1406/2136/118 1392/2122/118 1391/2126/118 +f 1408/2137/118 1391/2126/118 1395/2125/118 +f 1408/2138/118 1399/2139/118 1407/2140/118 +f 1401/2131/119 1414/2141/119 1413/2142/119 +f 1393/2119/119 1414/2143/119 1397/2144/119 +f 1394/2124/119 1412/2145/119 1393/2119/119 +f 1416/2146/119 1394/2124/119 1398/2123/119 +f 1416/2147/119 1402/2129/119 1415/2148/119 +f 1407/2149/116 1404/2130/116 1417/2150/116 +f 1401/2151/140 1417/2150/140 1404/2130/140 +f 1400/2132/116 1418/2152/116 1403/2128/116 +f 1418/2152/140 1402/2153/140 1403/2128/140 +f 1427/2154/118 1430/2155/118 1428/2156/118 +f 1421/2157/117 1428/2156/117 1422/2158/117 +f 1430/2155/115 1425/2159/115 1426/2160/115 +f 1425/2159/115 1429/2161/115 1423/2162/115 +f 1421/2157/117 1419/2163/117 1427/2154/117 +f 1419/2163/141 1429/2161/141 1427/2154/141 +f 1426/2160/115 1424/2164/115 1430/2155/115 +f 1422/2158/117 1428/2156/117 1420/2165/117 +f 1430/2155/142 1420/2165/142 1428/2156/142 +f 1431/2121/114 1394/2124/114 1393/2119/114 +f 1438/2166/117 1431/2167/117 1433/2168/117 +f 1436/2169/118 1432/2170/118 1431/2171/118 +f 1435/2172/115 1434/2173/115 1432/2174/115 +f 1437/2175/119 1433/2176/119 1434/2177/119 +f 1392/2122/114 1433/2120/114 1391/2126/114 +f 1394/2124/114 1434/2178/114 1392/2122/114 +f 1438/2166/114 1435/2172/114 1436/2169/114 +f 1469/2179/143 1474/2180/143 1472/2181/143 +f 1505/2182/144 1510/2183/144 1508/2184/144 +f 1517/2185/114 1518/2186/114 1519/2187/114 +f 1520/2188/114 1522/2189/114 1521/2190/114 +f 1512/2191/119 1517/2185/119 1511/2192/119 +f 1515/2193/121 1522/2194/121 1516/2195/121 +f 1514/2196/118 1521/2190/118 1515/2193/118 +f 1511/2192/137 1519/2197/137 1513/2198/137 +f 1516/2199/128 1520/2188/128 1514/2196/128 +f 1513/2200/132 1518/2186/132 1512/2191/132 +f 1368/2079/114 1370/2099/114 1369/2080/114 +f 1371/2082/115 1373/2101/115 1374/2083/115 +f 1375/2085/116 1377/2105/116 1378/2086/116 +f 1380/2088/117 1381/2108/117 1382/2089/117 +f 1383/2091/118 1386/2111/118 1385/2092/118 +f 1389/2094/119 1390/2097/119 1388/2095/119 +f 1367/2081/120 1388/2095/120 1390/2097/120 +f 1390/2098/121 1389/2201/121 1371/2082/121 +f 1372/2084/122 1374/2083/122 1370/2099/122 +f 1376/2087/124 1378/2086/124 1373/2101/124 +f 1389/2102/125 1387/2202/125 1375/2085/125 +f 1379/2104/127 1382/2116/127 1377/2105/127 +f 1387/2106/128 1388/2203/128 1380/2088/128 +f 1381/2108/130 1380/2088/130 1367/2081/130 +f 1373/2101/132 1385/2204/132 1386/2110/132 +f 1386/2111/133 1383/2091/133 1369/2080/133 +f 1377/2105/135 1384/2205/135 1385/2113/135 +f 1381/2108/137 1383/2206/137 1384/2115/137 +f 1393/2119/114 1391/2126/114 1433/2120/114 +f 1392/2122/130 1396/2127/130 1398/2123/130 +f 1393/2119/122 1397/2144/122 1395/2125/122 +f 1402/2129/117 1398/2123/117 1396/2127/117 +f 1396/2127/117 1400/2132/117 1403/2128/117 +f 1399/2139/115 1395/2125/115 1404/2130/115 +f 1395/2125/115 1397/2144/115 1401/2131/115 +f 1400/2132/118 1396/2127/118 1409/2133/118 +f 1392/2122/118 1405/2207/118 1409/2135/118 +f 1406/2136/118 1405/2208/118 1392/2122/118 +f 1408/2137/118 1406/2209/118 1391/2126/118 +f 1408/2138/118 1395/2125/118 1399/2139/118 +f 1401/2131/119 1397/2144/119 1414/2141/119 +f 1393/2119/119 1412/2210/119 1414/2143/119 +f 1394/2124/119 1411/2211/119 1412/2145/119 +f 1416/2146/119 1411/2212/119 1394/2124/119 +f 1416/2147/119 1398/2123/119 1402/2129/119 +f 1407/2149/116 1399/2139/116 1404/2130/116 +f 1401/2151/140 1413/2213/140 1417/2150/140 +f 1400/2132/116 1410/2214/116 1418/2152/116 +f 1418/2152/140 1415/2215/140 1402/2153/140 +f 1427/2154/118 1429/2161/118 1430/2155/118 +f 1421/2157/117 1427/2154/117 1428/2156/117 +f 1430/2155/115 1429/2161/115 1425/2159/115 +f 1419/2163/141 1423/2162/141 1429/2161/141 +f 1430/2155/142 1424/2164/142 1420/2165/142 +f 1431/2121/114 1432/2216/114 1394/2124/114 +f 1438/2166/117 1436/2169/117 1431/2167/117 +f 1436/2169/118 1435/2172/118 1432/2170/118 +f 1435/2172/115 1437/2175/115 1434/2173/115 +f 1437/2175/119 1438/2166/119 1433/2176/119 +f 1392/2122/114 1434/2178/114 1433/2120/114 +f 1394/2124/114 1432/2216/114 1434/2178/114 +f 1438/2166/114 1437/2175/114 1435/2172/114 +f 1465/2217/143 1464/2218/143 1463/2219/143 +f 1463/2219/143 1474/2180/143 1465/2217/143 +f 1474/2180/143 1473/2220/143 1472/2181/143 +f 1465/2217/143 1474/2180/143 1469/2179/143 +f 1472/2181/143 1471/2221/143 1469/2179/143 +f 1471/2221/143 1470/2222/143 1469/2179/143 +f 1469/2179/143 1468/2223/143 1467/2224/143 +f 1467/2224/143 1466/2225/143 1469/2179/143 +f 1466/2225/143 1465/2217/143 1469/2179/143 +f 1501/2226/144 1500/2227/144 1499/2228/144 +f 1499/2228/144 1510/2183/144 1501/2226/144 +f 1510/2183/144 1509/2229/144 1508/2184/144 +f 1501/2226/144 1510/2183/144 1505/2182/144 +f 1508/2184/144 1507/2230/144 1505/2182/144 +f 1507/2230/144 1506/2231/144 1505/2182/144 +f 1505/2182/144 1504/2232/144 1503/2233/144 +f 1503/2233/144 1502/2234/144 1505/2182/144 +f 1502/2234/144 1501/2226/144 1505/2182/144 +f 1512/2191/119 1518/2186/119 1517/2185/119 +f 1515/2193/121 1521/2190/121 1522/2194/121 +f 1514/2196/118 1520/2188/118 1521/2190/118 +f 1511/2192/137 1517/2185/137 1519/2197/137 +f 1516/2199/128 1522/2235/128 1520/2188/128 +f 1513/2200/132 1519/2236/132 1518/2186/132 s 1 -f 1401/2221/131 1414/2222/132 1402/2223/132 -f 1420/2224/133 1409/2225/134 1408/2226/133 -f 1405/2227/135 1418/2228/136 1406/2229/136 -f 1402/2223/132 1415/2230/137 1403/2231/137 -f 1421/2232/134 1410/2233/138 1409/2225/134 -f 1411/2234/139 1400/2235/140 1399/2236/139 -f 1418/2228/136 1407/2237/141 1406/2229/136 -f 1415/2230/137 1404/2238/142 1403/2231/137 -f 1410/2233/138 1411/2234/139 1399/2236/139 -f 1412/2239/140 1401/2221/131 1400/2235/140 -f 1419/2240/141 1408/2226/133 1407/2237/141 -f 1416/2241/142 1405/2242/135 1404/2238/142 -f 1507/2243/143 1520/2244/144 1508/2245/144 -f 1529/2246/145 1518/2247/146 1517/2248/145 -f 1522/2249/147 1511/2250/148 1510/2251/147 -f 1525/2252/149 1514/2253/150 1513/2254/149 -f 1516/2255/151 1529/2246/145 1517/2248/145 -f 1521/2256/152 1510/2251/147 1509/2257/152 -f 1524/2258/153 1513/2259/149 1512/2260/153 -f 1515/2261/154 1528/2262/151 1516/2255/151 -f 1508/2245/144 1521/2256/152 1509/2257/152 -f 1518/2247/146 1519/2263/143 1507/2243/143 -f 1523/2264/148 1512/2260/153 1511/2250/148 -f 1514/2253/150 1527/2265/154 1515/2261/154 -f 1437/2266/155 1450/2267/156 1438/2268/156 -f 1456/2269/157 1445/2270/158 1444/2271/157 -f 1441/2272/159 1454/2273/160 1442/2274/160 -f 1438/2268/156 1451/2275/161 1439/2276/161 -f 1457/2277/158 1446/2278/162 1445/2270/158 -f 1447/2279/163 1436/2280/164 1435/2281/163 -f 1442/2274/160 1455/2282/165 1443/2283/165 -f 1439/2276/161 1452/2284/166 1440/2285/166 -f 1446/2278/162 1447/2279/163 1435/2281/163 -f 1448/2286/164 1437/2266/155 1436/2280/164 -f 1455/2282/165 1444/2271/157 1443/2283/165 -f 1452/2284/166 1441/2287/159 1440/2285/166 -f 1490/2288/167 1503/2289/168 1491/2290/168 -f 1499/2291/169 1488/2292/170 1487/2293/169 -f 1494/2294/171 1495/2295/172 1483/2296/172 -f 1484/2297/173 1497/2298/174 1485/2299/174 -f 1491/2290/168 1504/2300/175 1492/2301/175 -f 1500/2302/170 1489/2303/176 1488/2292/170 -f 1497/2298/174 1486/2304/177 1485/2299/174 -f 1492/2301/175 1505/2305/178 1493/2306/178 -f 1489/2307/176 1502/2308/167 1490/2288/167 -f 1498/2309/177 1487/2293/169 1486/2304/177 -f 1505/2305/178 1494/2294/171 1493/2306/178 -f 1495/2295/172 1484/2297/173 1483/2296/172 -f 1401/2221/131 1413/2310/131 1414/2222/132 -f 1420/2224/133 1421/2232/134 1409/2225/134 -f 1405/2227/135 1417/2311/135 1418/2228/136 -f 1402/2223/132 1414/2222/132 1415/2230/137 -f 1421/2232/134 1422/2312/138 1410/2233/138 -f 1411/2234/139 1412/2239/140 1400/2235/140 -f 1418/2228/136 1419/2240/141 1407/2237/141 -f 1415/2230/137 1416/2241/142 1404/2238/142 -f 1410/2233/138 1422/2312/138 1411/2234/139 -f 1412/2239/140 1413/2310/131 1401/2221/131 -f 1419/2240/141 1420/2224/133 1408/2226/133 -f 1416/2241/142 1417/2313/135 1405/2242/135 -f 1507/2243/143 1519/2263/143 1520/2244/144 -f 1529/2246/145 1530/2314/146 1518/2247/146 -f 1522/2249/147 1523/2264/148 1511/2250/148 -f 1525/2252/149 1526/2315/150 1514/2253/150 -f 1516/2255/151 1528/2262/151 1529/2246/145 -f 1521/2256/152 1522/2249/147 1510/2251/147 -f 1524/2258/153 1525/2316/149 1513/2259/149 -f 1515/2261/154 1527/2265/154 1528/2262/151 -f 1508/2245/144 1520/2244/144 1521/2256/152 -f 1518/2247/146 1530/2314/146 1519/2263/143 -f 1523/2264/148 1524/2258/153 1512/2260/153 -f 1514/2253/150 1526/2315/150 1527/2265/154 -f 1437/2266/155 1449/2317/155 1450/2267/156 -f 1456/2269/157 1457/2277/158 1445/2270/158 -f 1441/2272/159 1453/2318/159 1454/2273/160 -f 1438/2268/156 1450/2267/156 1451/2275/161 -f 1457/2277/158 1458/2319/162 1446/2278/162 -f 1447/2279/163 1448/2286/164 1436/2280/164 -f 1442/2274/160 1454/2273/160 1455/2282/165 -f 1439/2276/161 1451/2275/161 1452/2284/166 -f 1446/2278/162 1458/2319/162 1447/2279/163 -f 1448/2286/164 1449/2317/155 1437/2266/155 -f 1455/2282/165 1456/2269/157 1444/2271/157 -f 1452/2284/166 1453/2320/159 1441/2287/159 -f 1490/2288/167 1502/2308/167 1503/2289/168 -f 1499/2291/169 1500/2302/170 1488/2292/170 -f 1494/2294/171 1506/2321/171 1495/2295/172 -f 1484/2297/173 1496/2322/173 1497/2298/174 -f 1491/2290/168 1503/2289/168 1504/2300/175 -f 1500/2302/170 1501/2323/176 1489/2303/176 -f 1497/2298/174 1498/2309/177 1486/2304/177 -f 1492/2301/175 1504/2300/175 1505/2305/178 -f 1489/2307/176 1501/2324/176 1502/2308/167 -f 1498/2309/177 1499/2291/169 1487/2293/169 -f 1505/2305/178 1506/2321/171 1494/2294/171 -f 1495/2295/172 1496/2322/173 1484/2297/173 +f 1441/2237/145 1454/2238/146 1442/2239/146 +f 1460/2240/147 1449/2241/148 1448/2242/147 +f 1445/2243/149 1458/2244/150 1446/2245/150 +f 1442/2239/146 1455/2246/151 1443/2247/151 +f 1461/2248/148 1450/2249/152 1449/2241/148 +f 1451/2250/153 1440/2251/154 1439/2252/153 +f 1458/2244/150 1447/2253/155 1446/2245/150 +f 1455/2246/151 1444/2254/156 1443/2247/151 +f 1450/2249/152 1451/2250/153 1439/2252/153 +f 1452/2255/154 1441/2237/145 1440/2251/154 +f 1459/2256/155 1448/2242/147 1447/2253/155 +f 1456/2257/156 1445/2258/149 1444/2254/156 +f 1547/2259/157 1560/2260/158 1548/2261/158 +f 1569/2262/159 1558/2263/160 1557/2264/159 +f 1562/2265/161 1551/2266/162 1550/2267/161 +f 1565/2268/163 1554/2269/164 1553/2270/163 +f 1556/2271/165 1569/2262/159 1557/2264/159 +f 1561/2272/166 1550/2267/161 1549/2273/166 +f 1564/2274/167 1553/2275/163 1552/2276/167 +f 1555/2277/168 1568/2278/165 1556/2271/165 +f 1548/2261/158 1561/2272/166 1549/2273/166 +f 1558/2263/160 1559/2279/157 1547/2259/157 +f 1563/2280/162 1552/2276/167 1551/2266/162 +f 1554/2269/164 1567/2281/168 1555/2277/168 +f 1477/2282/169 1490/2283/170 1478/2284/170 +f 1496/2285/171 1485/2286/172 1484/2287/171 +f 1481/2288/173 1494/2289/174 1482/2290/174 +f 1478/2284/170 1491/2291/175 1479/2292/175 +f 1497/2293/172 1486/2294/176 1485/2286/172 +f 1487/2295/177 1476/2296/178 1475/2297/177 +f 1482/2290/174 1495/2298/179 1483/2299/179 +f 1479/2292/175 1492/2300/180 1480/2301/180 +f 1486/2294/176 1487/2295/177 1475/2297/177 +f 1488/2302/178 1477/2282/169 1476/2296/178 +f 1495/2298/179 1484/2287/171 1483/2299/179 +f 1492/2300/180 1481/2303/173 1480/2301/180 +f 1530/2304/181 1543/2305/182 1531/2306/182 +f 1539/2307/183 1528/2308/184 1527/2309/183 +f 1534/2310/185 1535/2311/186 1523/2312/186 +f 1524/2313/187 1537/2314/188 1525/2315/188 +f 1531/2306/182 1544/2316/189 1532/2317/189 +f 1540/2318/184 1529/2319/190 1528/2308/184 +f 1537/2314/188 1526/2320/191 1525/2315/188 +f 1532/2317/189 1545/2321/192 1533/2322/192 +f 1529/2323/190 1542/2324/181 1530/2304/181 +f 1538/2325/191 1527/2309/183 1526/2320/191 +f 1545/2321/192 1534/2310/185 1533/2322/192 +f 1535/2311/186 1524/2313/187 1523/2312/186 +f 1441/2237/145 1453/2326/145 1454/2238/146 +f 1460/2240/147 1461/2248/148 1449/2241/148 +f 1445/2243/149 1457/2327/149 1458/2244/150 +f 1442/2239/146 1454/2238/146 1455/2246/151 +f 1461/2248/148 1462/2328/152 1450/2249/152 +f 1451/2250/153 1452/2255/154 1440/2251/154 +f 1458/2244/150 1459/2256/155 1447/2253/155 +f 1455/2246/151 1456/2257/156 1444/2254/156 +f 1450/2249/152 1462/2328/152 1451/2250/153 +f 1452/2255/154 1453/2326/145 1441/2237/145 +f 1459/2256/155 1460/2240/147 1448/2242/147 +f 1456/2257/156 1457/2329/149 1445/2258/149 +f 1547/2259/157 1559/2279/157 1560/2260/158 +f 1569/2262/159 1570/2330/160 1558/2263/160 +f 1562/2265/161 1563/2280/162 1551/2266/162 +f 1565/2268/163 1566/2331/164 1554/2269/164 +f 1556/2271/165 1568/2278/165 1569/2262/159 +f 1561/2272/166 1562/2265/161 1550/2267/161 +f 1564/2274/167 1565/2332/163 1553/2275/163 +f 1555/2277/168 1567/2281/168 1568/2278/165 +f 1548/2261/158 1560/2260/158 1561/2272/166 +f 1558/2263/160 1570/2330/160 1559/2279/157 +f 1563/2280/162 1564/2274/167 1552/2276/167 +f 1554/2269/164 1566/2331/164 1567/2281/168 +f 1477/2282/169 1489/2333/169 1490/2283/170 +f 1496/2285/171 1497/2293/172 1485/2286/172 +f 1481/2288/173 1493/2334/173 1494/2289/174 +f 1478/2284/170 1490/2283/170 1491/2291/175 +f 1497/2293/172 1498/2335/176 1486/2294/176 +f 1487/2295/177 1488/2302/178 1476/2296/178 +f 1482/2290/174 1494/2289/174 1495/2298/179 +f 1479/2292/175 1491/2291/175 1492/2300/180 +f 1486/2294/176 1498/2335/176 1487/2295/177 +f 1488/2302/178 1489/2333/169 1477/2282/169 +f 1495/2298/179 1496/2285/171 1484/2287/171 +f 1492/2300/180 1493/2336/173 1481/2303/173 +f 1530/2304/181 1542/2324/181 1543/2305/182 +f 1539/2307/183 1540/2318/184 1528/2308/184 +f 1534/2310/185 1546/2337/185 1535/2311/186 +f 1524/2313/187 1536/2338/187 1537/2314/188 +f 1531/2306/182 1543/2305/182 1544/2316/189 +f 1540/2318/184 1541/2339/190 1529/2319/190 +f 1537/2314/188 1538/2325/191 1526/2320/191 +f 1532/2317/189 1544/2316/189 1545/2321/192 +f 1529/2323/190 1541/2340/190 1542/2324/181 +f 1538/2325/191 1539/2307/183 1527/2309/183 +f 1545/2321/192 1546/2337/185 1534/2310/185 +f 1535/2311/186 1536/2338/187 1524/2313/187 From a29dd004775e00e2373783b53f68b7399fb7f11f Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 12 Oct 2023 22:25:42 +0200 Subject: [PATCH 068/207] there is no greater joy than shooting a man in this walmart of a world --- src/main/java/com/hbm/items/tool/ItemCMStructure.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/items/tool/ItemCMStructure.java b/src/main/java/com/hbm/items/tool/ItemCMStructure.java index c7ce6f2d6..6c46decee 100644 --- a/src/main/java/com/hbm/items/tool/ItemCMStructure.java +++ b/src/main/java/com/hbm/items/tool/ItemCMStructure.java @@ -79,20 +79,20 @@ public class ItemCMStructure extends Item implements ILookOverlay { int compX = 0; int compZ = 0; - if(dir == ForgeDirection.NORTH) { + if(dir == ForgeDirection.SOUTH) { compX = anchorX - x; compZ = anchorZ - z; } - if(dir == ForgeDirection.SOUTH) { + if(dir == ForgeDirection.NORTH) { compX = x - anchorX; compZ = z - anchorZ; } - if(dir == ForgeDirection.EAST) { + if(dir == ForgeDirection.WEST) { compZ = x - anchorX; compX = anchorZ - z; } - if(dir == ForgeDirection.WEST) { + if(dir == ForgeDirection.EAST) { compZ = anchorX - x; compX = z - anchorZ; } From e5fdb7cf8d004b9347945adec80b281d5d77f0fa Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 15 Oct 2023 19:25:49 +0200 Subject: [PATCH 069/207] updated localization --- src/main/resources/assets/hbm/lang/zh_CN.lang | 179 ++++++++++++++++-- .../assets/hbm/sounds/block/reactorLoop.ogg | Bin 112164 -> 114673 bytes 2 files changed, 167 insertions(+), 12 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 570c2eb9a..4bd5871e0 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -134,6 +134,7 @@ armor.damageModifier=修正 %s 对 %s 的伤害 armor.dash=给予 %s 冲刺 armor.electricJetpack=离å­å–·å°„背包 armor.explosionImmune=å…疫除爆炸伤害外的一切伤害 +armor.fasterReload=快速装填 armor.fastFall=快速é™è½ armor.fireproof=é˜²ç« armor.fullSetBonus=全套效果: @@ -144,10 +145,12 @@ armor.gravity=é‡åŠ›ä¿®æ­£ %s armor.hardLanding=硬ç€é™† armor.ignoreLimit=防御值ä¸å—防御上é™çš„å½±å“ armor.modifier=伤害修正 %s +armor.moreAmmo=æ›´å¤šå¼¹è¯ armor.nullDamage=å…ç–« %s 伤害 armor.projectileProtection=å…ç–« %s 的弹射物伤害 armor.rocketBoots=ç«ç®­é´ armor.sprintBoost=冲刺辅助加速 +armor.stepSize=步长:%s armor.thermal=热æˆåƒ armor.threshold=伤害阈值 %s armor.vats=敌对生物HUD @@ -310,7 +313,7 @@ book.starter.page18=v?råªæ˜¯ä¸€ä¸ªè¢«å›°åœ¨"传声头åƒ"的§o《一生一次 #book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. #book.rbmk.title16=Meltdown #book.rbmk.page16=§4§lAvoid. -book_lore.author=By %s +book_lore.author=ç”±%s book_lore.test.name=测试 book_lore.test.author=那个家伙 book_lore.test.page.0=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual @@ -377,13 +380,17 @@ book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no go book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters. book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be -book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. +book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. + + book_lore.bf_bomb_3.name=ç§äººç¬”è®° book_lore.bf_bomb_3.author=M. 波特 book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into -book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. +book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. + + book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people... book_lore.bf_bomb_4.name=ç§äººç¬”è®° @@ -574,6 +581,7 @@ chem.SULFURIC_ACID=硫酸生产 chem.TATB=TATBåˆæˆ chem.TEL=å››ä¹™åŸºé“…æ··åˆ chem.TEST=测试 +chem.THORIUM_SALT=é’ç›å¯Œé›† chem.TNT=TNTåˆæˆ chem.UF6=六氟化铀生产 chem.VIT_GAS=æ°”æ€æ ¸åºŸæ–™çŽ»ç’ƒåŒ– @@ -592,6 +600,7 @@ container.amsLimiter=AMS稳能器(装饰) container.anvil=ç § container.arcFurnace=电弧炉 container.armorTable=è£…ç”²æ”¹è£…å° +container.ashpit=å‚¨ç°æ§½ container.assembler=è£…é…æœº container.autocrafter=è‡ªåŠ¨å·¥ä½œå° container.barrel=æ¡¶ @@ -622,6 +631,10 @@ container.dfcReceiver=DFC接收器 container.dfcStabilizer=DFC稳定器 container.diFurnace=高炉 container.diFurnaceRTG=核高炉 +container.droneCrate=è¿è¾“æ— äººæœºåž +container.droneDock=èˆ¹åž +container.droneProvider=æä¾› +container.droneRequester=请求 container.electricFurnace=电炉 container.epress=电动锻压机 container.factoryAdvanced=高级工厂 @@ -872,6 +885,7 @@ desc.item.ammo.neu_fun=* 免家其乿— ç©·ï¼ desc.item.ammo.neu_heavy_metal=* é‡é‡‘属 desc.item.ammo.neu_homing=* 追踪 desc.item.ammo.neu_jolt=* éœ‡è¡ +desc.item.ammo.neu_leadburster=* 附ç€åœ¨è¡¨é¢å¹¶å–·å°„å­å¼¹ desc.item.ammo.neu_less_bouncy=* å¼¹æ€§æ›´å° desc.item.ammo.neu_maskman_flechette=* æ›³å…‰å¼¹ï¼ŒåŒæ—¶å¼•å‘一场贫铀飞镖弹风暴 desc.item.ammo.neu_maskman_meteorite=* é«˜ä¼¤å®³ï¼ŒåŒæ—¶å¬å”¤å°é™¨çŸ³ @@ -949,7 +963,9 @@ desc.item.kitArmor=装甲将被新的装备å–代。 desc.item.kitHaz=装甲将被防护æœå–代。 desc.item.kitPack=çœŸä¾¿å®œï¼ desc.item.kitPool=è¯·åœ¨æ‰“å¼€å‰æ¸…ç©ºèƒŒåŒ…åº“å­˜ï¼ -desc.item.pileRod=§e使用钻孔石墨æ’å…¥$§E使用螺ä¸åˆ€æ‹”出$ +desc.item.pileRod=§e使用钻孔石墨æ’å…¥$§E使用螺ä¸åˆ€æ‹”出$ + + desc.item.rtgDecay=è¡°å˜ä¸ºï¼š%s desc.item.rtgHeat=功率级别:%s desc.item.storage.capacity=å®¹é‡ %s%%s @@ -1053,7 +1069,8 @@ gun.make.MANN=Open Mannå…¬å¸ gun.make.MAXIM=æµ·å‹’å§†Â·é©¬å…‹æ² gun.make.METRO=åœ°é“æžªæ‰‹ gun.make.MWT=MWT原型实验室 -gun.make.NAZI=埃尔ç¦ç‰¹æœºæ¢°åˆ¶é€ åŽ‚ +gun.make.NAWS=Kayarm Industries +gun.make.ERFURT=埃尔ç¦ç‰¹æœºæ¢°åˆ¶é€ åŽ‚ gun.make.NONE=- gun.make.RAYTHEON=å¯¼å¼¹ç³»ç»Ÿå…¬å¸ gun.make.REMINGTON=é›·æ˜Žç™»æ­¦å™¨å…¬å¸ @@ -1076,6 +1093,7 @@ gun.name.benelli=伯奈利M4 Super 90霰弹枪 gun.name.benelliDrum=伯奈利M4 Super 90霰弹枪 (泵动供弹改进型) gun.name.bio=RI No. 2 Mark 1 gun.name.bolter=Manticora Pattern爆弹枪 +gun.name.congoLake=刚果湖水泵动榴弹å‘射器 gun.name.cPython=柯尔特蟒蛇 gun.name.cz53=CZ53 å•兵转轮机枪 gun.name.cz57=CZ57 å¤ä»‡è€…机枪 @@ -1248,6 +1266,7 @@ hbmfluid.heatingoil_vacuum=é‡è´¨ç‡ƒæ²¹ hbmfluid.heavyoil=釿²¹ hbmfluid.heavyoil_vacuum=å‡åދ釿²¹ hbmfluid.heavywater=釿°´ +hbmfluid.heavywater_hot=é«˜æ¸©é‡æ°´ hbmfluid.helium3=æ°¦-3 hbmfluid.helium4=æ°¦-4 hbmfluid.hotcrackoil=热裂化油 @@ -1304,6 +1323,8 @@ hbmfluid.smear=工业油 hbmfluid.smoke=烟雾 hbmfluid.smoke_leaded=å«é“…烟雾 hbmfluid.smoke_poison=有毒烟雾 +hbmfluid.sodium=æ¶²æ€é’  +hbmfluid.sodium_hot=高温液æ€é’  hbmfluid.solvent=有机溶剂 hbmfluid.sourgas=高硫天然气 hbmfluid.spentsteam=低压蒸汽 @@ -1312,6 +1333,9 @@ hbmfluid.sulfuric_acid=ç¡«é…¸ hbmfluid.sunfloweroil=葵花籽油 hbmfluid.superhotsteam=超热蒸汽 hbmfluid.syngas=åˆæˆæ°” +hbmfluid.thorium_salt=æ¶²æ€é’ç› +hbmfluid.thorium_salt_depleted=贫化液æ€é’ç› +hbmfluid.thorium_salt_hot=高温液æ€é’ç› hbmfluid.tritium=æ°š hbmfluid.uf6=六氟化铀 hbmfluid.ultrahotsteam=超浓密蒸汽 @@ -1598,6 +1622,7 @@ item.ammo_grenade_finned.name=40mm榴弹[尾翼稳定] item.ammo_grenade_he.name=40mm榴弹[HE] item.ammo_grenade_incendiary.name=40mm榴弹[燃烧] item.ammo_grenade_kampf.name=40mm战术榴弹 +item.ammo_grenade_leadburster.name=40mm 开路先锋 item.ammo_grenade_nuclear.name=40mm榴弹[æ ¸å­] item.ammo_grenade_phosphorus.name=40mm榴弹[白磷] item.ammo_grenade_sleek.name=40mm榴弹[IF-R&D] @@ -1677,6 +1702,7 @@ item.ams_focus_limiter.desc=é™åˆ¶é¢†åŸŸçš„æœ€é«˜æ€§èƒ½ï¼š$标准冷å´ï¼Œæ— èƒ½ item.ams_lens.name=稳定é€é•œ item.ams_muzzle.name=激活射线å‘å°„æž item.ams_muzzle.desc=...它å¯ä»¥å‘出一æŸèƒ½é‡æŸã€‚ +item.analysis_tool.name=分æžå·¥å…· item.analyzer.name=分æžä»ª item.anchor_remote.name=å¬å›žè®¾å¤‡ item.antiknock.name=四乙基铅抗爆剂 @@ -2311,6 +2337,9 @@ item.door_bunker.name=仓门 item.door_metal.name=金属门 item.door_office.name=办公室门 item.dosimeter.name=剂é‡è®¡ +item.drax.name=采掘钻 +item.drax_mk2.name=强化型采掘钻 +item.drax_mk3.name=Sa326采掘钻 item.drillbit_desh.name=Desh钻头 item.drillbit_desh_diamond.name=Desh钻头(é•¶é’») item.drillbit_ferro.name=é“€é“åˆé‡‘钻头 @@ -2322,9 +2351,12 @@ item.drillbit_steel_diamond.name=钢钻头(é•¶é’») item.drillbit_tcalloy.name=é”钢钻头 item.drillbit_tcalloy_diamond.name=é”钢钻头(é•¶é’») item.drill_titanium.name=钛钻头 -item.drax.name=采掘钻 -item.drax_mk2.name=强化型采掘钻 -item.drax_mk3.name=Sa326采掘钻 +item.drone.patrol.name=è¿è¾“无人机 +item.drone.patrol_chunkloading.name=区å—加载无人机 +item.drone.patrol_express.name=快递无人机 +item.drone.patrol_express_chunkloading.name=区å—加载快递无人机 +item.drone.request.name=ç‰©æµæ— äººæœº +item.drone_linker.name=è¿è¾“无人机链接器 item.ducttape.name=胶带 item.dust.name=ç°å°˜ item.dust.desc=我讨厌ç°å°˜ï¼ @@ -2345,7 +2377,7 @@ item.early_explosive_lenses.desc=8个炸è¯é€é•œçš„组装,带有é“åˆé‡‘推 item.egg_balefire.name=野ç«è›‹ item.egg_balefire.desc=什么样的鸟儿æ‰ä¼šä¸‹å¸¦æœ‰æ”¾å°„性的蛋? item.egg_balefire_shard.name=野ç«è›‹ç¢Žç‰‡ -item.egg_glyphid.name=Glyphid Egg +item.egg_glyphid.name=异虫蛋 item.elec_axe.name=电锯 item.elec_pickaxe.name=冲击钻 item.elec_shovel.name=螺旋钻 @@ -2463,6 +2495,7 @@ item.gear_large.name=大型齿轮 item.gear_large_steel.name=大型钢齿轮 item.geiger_counter.name=手æŒç›–é©è®¡æ•°å™¨ item.gem_alexandrite.name=亚历山大å˜çŸ³ +item.gem_sodalite.name=方钠石 item.gem_tantalium.name=钽晶体 item.gem_tantalium.desc=“钽†item.gem_tantalium.desc.P11=åˆå钽。 @@ -2523,7 +2556,7 @@ item.gun_avenger.name=CZ57å¤ä»‡è€…机枪 item.gun_b92.name=§9B92èƒ½é‡æ‰‹æžªÂ§r item.gun_b92_ammo.name=§9B92能é‡å•元§r item.gun_b93.name=§cB93èƒ½é‡æ‰‹æžªÂ§r -item.gun_benelli.name=Benelli自动喷枪(Drum Mod) +item.gun_benelli.name=伯奈利自动霰弹枪(Drum Mod) item.gun_bf.name=BEL item.gun_bf_ammo.name=Mk.Vå°åž‹AMAT-炮弹 –野ç«åž‹ item.gun_bio_revolver.name=Atlas @@ -2538,6 +2571,8 @@ item.gun_calamity_ammo.name=.50BMGå­å¼¹ item.gun_calamity_dual.name=é©¬éžæžª item.gun_chemthrower.name=化学喷射器 item.gun_coilgun.name=线圈枪 +item.gun_congolake.name=刚果湖 +item.gun_cryocannon.name=低温炮 item.gun_cryolator.name=冻结者 item.gun_cryolator_ammo.name=急冻å•å…ƒ item.gun_dampfmaschine.name=ç»å¯¹ä¸æ˜¯å¼€çŽ©ç¬‘çš„æ­¦å™¨ @@ -2670,6 +2705,7 @@ item.heart_booster.name=心之增强器 item.heart_container.name=心之容器 item.heart_fab.name=å¿ƒè„æŠ—åŽŸç»“åˆå™¨ item.heart_piece.name=心之碎片 +item.heavy_component.name=é‡åž‹%s组件 item.hev_battery.name=套装电池 item.hev_boots.name=HEV Mk.IV é´å­ item.hev_plate.name=HEV Mk.IV 胸甲 @@ -3216,6 +3252,7 @@ item.ore.asbestos=石棉 item.ore.borax=硼砂 item.ore.chlorocalcite=氯方解石 item.ore.copper=铜 +item.ore.fluorite=氟石 item.ore.gold=金 item.ore.iron=é“ item.ore.niobium=铌 @@ -3417,6 +3454,11 @@ item.powder_advanced_alloy.name=高级åˆé‡‘粉 item.powder_aluminium.name=é“粉 item.powder_asbestos.name=石棉粉 item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r +item.powder_ash.coal.name=ç…¤ç° +item.powder_ash.fly.name=飞尘 +item.powder_ash.misc.name=ç°å°˜ +item.powder_ash.soot.name=ç»†çƒŸç° +item.powder_ash.wood.name=æœ¨ç° item.powder_astatine.name=砹粉 item.powder_at209.name=ç ¹-209粉 item.powder_au198.name=金-198粉 @@ -3502,6 +3544,7 @@ item.powder_sawdust.name=锯末 item.powder_schrabidate.name=Saé…¸é“粉 item.powder_schrabidium.name=Sa326粉 item.powder_semtex_mix.name=å¡žå§†æ±€å¡‘èƒ¶ç‚¸è¯æ··åˆç‰© +item.powder_sodium.name=Sodium item.powder_spark_mix.name=Spark闪闪奥术混åˆç‰© item.powder_sr90.name=é”¶-90粉 item.powder_sr90_tiny.name=å°æ’®é”¶-90粉末 @@ -3535,6 +3578,51 @@ item.primer_buckshot.name=鹿弹底ç«[x12] item.protection_charm.name=守护项链 item.prototype_kit.name=原型 套件 item.pudding.name=å¸ƒä¸ +item.pwr_fuel.bfb_am_mix.name=燃料级镅压水堆BFB燃料棒 +item.pwr_fuel.bfb_pu241.name=é’š-241压水堆BFB棒 +item.pwr_fuel.hea242.name=HEA-242 高浓缩度镅-242压水堆燃料棒 +item.pwr_fuel.hen237.name=HEN-237 高浓缩度镎-237压水堆燃料棒 +item.pwr_fuel.hep239.name=HEP-239 高浓缩度钚-239压水堆燃料棒 +item.pwr_fuel.hep241.name=HEP-241 高浓缩度钚-241压水堆燃料棒 +item.pwr_fuel.hes326.name=HES-326 高浓缩度Sa326压水堆燃料棒 +item.pwr_fuel.hes327.name=HES-327 高浓缩度Sa327压水堆燃料棒 +item.pwr_fuel.heu233.name=HEU-233 高浓缩度铀-233压水堆燃料棒 +item.pwr_fuel.heu235.name=HEU-235 高浓缩度铀-235压水堆燃料棒 +item.pwr_fuel.mea.name=MEA 中浓缩度镅压水堆燃料棒 +item.pwr_fuel.men.name=MEN 中浓缩度镎压水堆燃料棒 +item.pwr_fuel.mep.name=MEP 中浓缩度钚压水堆燃料棒 +item.pwr_fuel.meu.name=MEU 中浓缩度铀压水堆燃料棒 +item.pwr_fuel.mox.name=MOX 压水堆燃料棒 +item.pwr_fuel_depleted.bfb_am_mix.name=枯竭燃料级镅压水堆BFB燃料棒 +item.pwr_fuel_depleted.bfb_pu241.name=枯竭钚-241压水堆BFB棒 +item.pwr_fuel_depleted.hea242.name=枯竭 HEA-242 高浓缩度镅-242压水堆燃料棒 +item.pwr_fuel_depleted.hen237.name=枯竭 HEN-237 高浓缩度镎-237压水堆燃料棒 +item.pwr_fuel_depleted.hep239.name=枯竭 HEP-239 高浓缩度钚-239压水堆燃料棒 +item.pwr_fuel_depleted.hep241.name=枯竭 HEP-241 高浓缩度钚-241压水堆燃料棒 +item.pwr_fuel_depleted.hes326.name=枯竭 HES-326 高浓缩度Sa326压水堆燃料棒 +item.pwr_fuel_depleted.hes327.name=枯竭 HES-327 高浓缩度Sa327压水堆燃料棒 +item.pwr_fuel_depleted.heu233.name=枯竭 HEU-233 高浓缩度铀-233压水堆燃料棒 +item.pwr_fuel_depleted.heu235.name=枯竭 HEU-235 高浓缩度铀-235压水堆燃料棒 +item.pwr_fuel_depleted.mea.name=枯竭 MEA 中浓缩度镅压水堆燃料棒 +item.pwr_fuel_depleted.men.name=枯竭 MEN 中浓缩度镎压水堆燃料棒 +item.pwr_fuel_depleted.mep.name=枯竭 MEP 中浓缩度钚压水堆燃料棒 +item.pwr_fuel_depleted.meu.name=枯竭 MEU 中浓缩度铀压水堆燃料棒 +item.pwr_fuel_depleted.mox.name=枯竭 MOX 压水堆燃料棒 +item.pwr_fuel_hot.bfb_am_mix.name=高温 燃料级镅压水堆BFB燃料棒 +item.pwr_fuel_hot.bfb_pu241.name=高温 é’š-241压水堆BFB棒 +item.pwr_fuel_hot.hea242.name=高温 HEA-242 高浓缩度镅-242压水堆燃料棒 +item.pwr_fuel_hot.hen237.name=高温 HEN-237 高浓缩度镎-237压水堆燃料棒 +item.pwr_fuel_hot.hep239.name=高温 HEP-239 高浓缩度钚-239压水堆燃料棒 +item.pwr_fuel_hot.hep241.name=高温 HEP-241 高浓缩度钚-241压水堆燃料棒 +item.pwr_fuel_hot.hes326.name=高温 HES-326 高浓缩度Sa326压水堆燃料棒 +item.pwr_fuel_hot.hes327.name=高温 HES-327 高浓缩度Sa327压水堆燃料棒 +item.pwr_fuel_hot.heu233.name=高温 HEU-233 高浓缩度铀-233压水堆燃料棒 +item.pwr_fuel_hot.heu235.name=高温 HEU-235 高浓缩度铀-235压水堆燃料棒 +item.pwr_fuel_hot.mea.name=高温 MEA 中浓缩度镅压水堆燃料棒 +item.pwr_fuel_hot.men.name=高温 MEN 中浓缩度镎压水堆燃料棒 +item.pwr_fuel_hot.mep.name=高温 MEP 中浓缩度钚压水堆燃料棒 +item.pwr_fuel_hot.meu.name=高温 MEU 中浓缩度铀压水堆燃料棒 +item.pwr_fuel_hot.mox.name=高温 MOX压水堆燃料棒 item.quartz_plutonium.name=æ·±æˆçŸ³è‹± item.radaway.name=消è¾å® item.radaway_flush.name=超级消è¾å® @@ -4031,6 +4119,10 @@ item.titanium_shovel.name=钛锹 item.titanium_sword.name=钛剑 item.toothpicks.name=牙签 item.train.cargo_tram.name=å¹³æ¿è½½è´§ç”µè½¦ +item.trenchmaster_boots.name=Trenchmasterçš„é´å­ +item.trenchmaster_helmet.name=Trenchmaster的头盔 +item.trenchmaster_legs.name=Trenchmaster的护腿 +item.trenchmaster_plate.name=Trenchmaster的胸甲 item.trinitite.name=玻璃石 item.tritium_deuterium_cake.name=氚氘饼 item.tritium_deuterium_cake.desc=䏿˜¯çœŸæ­£çš„蛋糕,而是很棒的$èšå˜ç‡ƒæ–™ï¼ @@ -4465,6 +4557,7 @@ tile.capacitor_bus.desc=电容器的输出方å—$å¯ä»¥è¿žæˆä¸€æ¡ç›´çº¿ tile.capacitor_copper.name=铜电容 tile.capacitor_gold.name=金电容 tile.capacitor_niobium.name=铌电容 +tile.capacitor_schrabidate.name=Saé…¸é“电容器 tile.capacitor_tantalium.name=钽电容 tile.capacitor.desc=输入:顶部$输出:底部,通过电容总线 tile.charge_c4.name=炸è¯åŒ… @@ -4475,6 +4568,9 @@ tile.charger.name=充电站 tile.cheater_virus.name=冻结Ep tile.cheater_virus_seed.name=ä¸ç¨³å®šEp Schrabideå— tile.chimney_brick.name=烟囱 +tile.chimney_brick.desc=使用排气管连接污染机器$å‡å°‘75%的污染排放 +tile.chimney_industrial.name=工业烟囱 +tile.chimney_industrial.desc=使用排气管连接污染机器$å‡å°‘90%的污染排放 tile.chlorine_gas.name=氯气 tile.cluster_aluminium.name=é“矿簇 tile.cluster_copper.name=铜矿簇 @@ -4552,18 +4648,32 @@ tile.concrete_stairs.name=æ··å‡åœŸç“·ç –楼梯 tile.concrete_super.name=überæ··å‡åœŸ tile.concrete_super_broken.name=å‘霉的碎片 tile.conveyor.name=输é€å¸¦ +tile.conveyor.desc=移动掉在上é¢çš„物å“$å¯ä»¥ç”¨èžºä¸åˆ€é¡ºæ—¶é’ˆæ—‹è½¬$用螺ä¸åˆ€æŒ‰ä½Shifté”®å•击以转弯 tile.conveyor_chute.name=输é€å¸¦æ»‘æ§½ +tile.conveyor_chute.desc=å‘下移动物å“$最底部的滑槽将起到普通传é€å¸¦çš„作用 tile.conveyor_double.name=åŒè½¨é“输é€å¸¦ +tile.conveyor_double.desc=移动掉在上é¢çš„物å“$å¯ä»¥ç”¨èžºä¸åˆ€é¡ºæ—¶é’ˆæ—‹è½¬$用螺ä¸åˆ€æŒ‰ä½Shifté”®å•击以转弯 +tile.conveyor_express.name=快速输é€å¸¦ +tile.conveyor_express.desc=快速移动掉在上é¢çš„物å“$å¯ä»¥ç”¨èžºä¸åˆ€é¡ºæ—¶é’ˆæ—‹è½¬$用螺ä¸åˆ€æŒ‰Shift键转弯 tile.conveyor_lift.name=垂直输é€å¸¦ +tile.conveyor_lift.desc=å‘上移动物å“$至少需è¦ä¸¤ä¸ªå—æ‰èƒ½æ­£å¸¸å·¥ä½œ tile.conveyor_triple.name=三轨é“输é€å¸¦ +tile.conveyor_triple.desc=移动掉在上é¢çš„物å“$å¯ä»¥ç”¨èžºä¸åˆ€é¡ºæ—¶é’ˆæ—‹è½¬$用螺ä¸åˆ€æŒ‰ä½Shifté”®å•击以转弯 tile.corium_block.name=堆芯熔èžç‰© tile.crane_boxer.name=输é€å¸¦æ‰“包机 +tile.crane_boxer.desc=å°†å¯é…置数é‡çš„å †å è£…载到沿ç€ä¼ é€å¸¦ç§»åŠ¨çš„ç®±å­ä¸­$用螺ä¸åˆ€å³é”®å•击以设置输入侧$用螺ä¸èµ·å­å¹³ç§»å•击以设置输出侧$å•击两次以设置相åä¾§ tile.crane_extractor.name=输é€å¸¦æå–器 +tile.crane_extractor.desc=从库存中å–出物å“并将其放置在传é€å¸¦ä¸Š$最多有9个带黑白åå•çš„è¿‡æ»¤å™¨æ’æ§½$用螺ä¸åˆ€å³é”®å•击以设置输出侧$手æŒèžºä¸åˆ€æŒ‰ä½Shiftå•击以设置输入侧$å•击两次以设置相åä¾§ tile.crane_grabber.name=输é€å¸¦æŠ“æ–— +tile.crane_grabber.desc=从ç»è¿‡çš„输é€å¸¦ä¸­å–出物å“并将其放入容器$å°†åªä»Žæœ€è¿‘的通é“中å–出物å“$最多有9个带黑白åå•的过滤槽$用螺ä¸åˆ€å³é”®å•击以设置输入侧$用螺ä¸èµ·å­å¹³ç§»å•击以设置输出侧$å•击两次以设置对侧 tile.crane_inserter.name=输é€å¸¦å¯¼å…¥å™¨ +tile.crane_inserter.desc=接å—输é€å¸¦ä¸Šçš„物å“并将其放入容器中$用螺ä¸åˆ€å³é”®å•击以设置输入侧$用螺ä¸åˆ€å•击以设置输出侧$å•击两次以设置相åä¾§ tile.crane_router.name=输é€å¸¦åˆ†æ‹£æœº +tile.crane_router.desc=æ ¹æ®å®šä¹‰çš„æ¡ä»¶å¯¹é¡¹ç›®æŽ’åº$ä¾§é¢å¯ä»¥å®šä¹‰ä¸ºé»‘åå•ã€ç™½å啿ˆ–通é…符$åªæœ‰åœ¨æ²¡æœ‰å…¶ä»–筛选器匹é…的情况下æ‰é€‰æ‹©é€šé…ç¬¦ä¾§é¢ tile.crane_splitter.name=输é€å¸¦åˆ†ç¦»å™¨ +tile.crane_splitter.desc=将物å“分开并å‡åŒ€å †æ”¾åœ¨ä¸¤æ¡ä¼ é€å¸¦ä¸Š$其本身就是一æ¡ä¼ é€å¸¦ï¼Œå› æ­¤å®ƒå¯ä»¥ç›´æŽ¥è¾“入到æ’入器或分拣器中 tile.crane_unboxer.name=输é€å¸¦è§£åŒ…机 +tile.crane_unboxer.desc=接收打包好的物å“并解包$用螺ä¸åˆ€å³é”®å•击以设置输出侧$手æŒèžºä¸åˆ€æŒ‰ä½Shiftå•击以设置输入侧$å•击两次以设置相åä¾§ tile.crashed_bomb.name=å“‘å¼¹ tile.crate.name=补给箱 tile.crate_ammo.name=星辉补给箱 @@ -4586,8 +4696,6 @@ tile.deco_asbestos.name=石棉瓦 tile.deco_beryllium.name=é“è£…é¥°å— tile.deco_computer.ibm_300pl.name=IBM个人电脑300PL tile.deco_emitter.name=Decoå‘光体 -tile.part_emitter.name=Decoç²’å­å‘射器 -tile.piston_inserter.name=æ’入器 tile.deco_lead.name=é“…è£…é¥°å— tile.deco_rbmk.name=RBMKè£…é¥°å— tile.deco_rbmk_smooth.name=平滑RBMKè£…é¥°å— @@ -4637,6 +4745,13 @@ tile.dfc_stabilizer.name=DFC稳定器 tile.dirt_dead.name=泥渣 tile.dirt_oily.name=油泥 tile.drill_pipe.name=é’»æ† +tile.drone_crate.name=è¿è¾“æ— äººæœºåž +tile.drone_crate_provider.name=物æµä¾›åº”ç®± +tile.drone_crate_requester.name=物æµè¯·æ±‚ç®± +tile.drone_dock.name=ç‰©æµæ— äººæœºç å¤´ +tile.drone_waypoint.name=è¿è¾“无人机航路点 +tile.drone_waypoint.desc=è¿è¾“无人机的航路点$使用è¿è¾“无人机链接器设置路径$按顺åºå•击æ¯ä¸ªèˆªè·¯ç‚¹å’Œæ¿æ¡ç®±ä»¥åˆ›å»ºè·¯å¾„,$ç„¶åŽå¹³ç§»å•击以清除ä¿å­˜çš„ä½ç½®$å³é”®å•击或平移å•击航路点以更改航路点的åç§» +tile.drone_waypoint_request.name=ç‰©æµæ— äººæœºèˆªè·¯ç‚¹ tile.door_bunker.name=仓门 tile.door_metal.name=金属门 tile.door_office.name=办公室门 @@ -4659,6 +4774,7 @@ tile.factory_titanium_furnace.name=å·¥åŽ‚ç«¯å£ tile.factory_titanium_hull.name=工厂外壳 tile.fallout.name=è¾å°„å°˜ tile.fan.name=风扇 +tile.fan.desc=使用红石激活$将实体推至最多10个方å—外$用螺ä¸åˆ€å³é”®ç‚¹å‡»å³å¯ç¿»è½¬ tile.fence_metal.name=é“ä¸ç½‘å›´æ  tile.field_disturber.name=高能场干扰机 tile.filing_cabinet.green.name=蒙尘的文件柜 @@ -4800,6 +4916,8 @@ tile.lamp_tritium_blue_off.name=è“è‰²æ°šç¯ tile.lamp_tritium_blue_on.name=è“è‰²æ°šç¯ tile.lamp_tritium_green_off.name=ç»¿è‰²æ°šç¯ tile.lamp_tritium_green_on.name=ç»¿è‰²æ°šç¯ +tile.lantern.name=ç¯ç¬¼ +tile.lantern_behemoth.name=æ—§ç¯ç¬¼ tile.launch_pad.name=导弹å‘å°„å° tile.launch_table.name=大型å‘å°„å° tile.leaves_layer.name=è½å¶ @@ -4808,10 +4926,13 @@ tile.machine_amgen.name=环境è¾å°„å‘电机 tile.machine_arc_furnace_off.name=电弧炉 tile.machine_arc_furnace_on.name=电弧炉 tile.machine_armor_table.name=è£…ç”²æ”¹è£…å° +tile.machine_ashpit.name=å‚¨ç°æ§½ +tile.machine_ashpit.desc=收集æ¥è‡ªç‡ƒçƒ§å®¤å’ŒåŠ çƒ­ç‚‰çš„ç°çƒ¬ tile.machine_assembler.name=è£…é…æœº tile.machine_assemfac.name=装é…厂 tile.machine_autocrafter.name=è‡ªåŠ¨å·¥ä½œå° tile.machine_autosaw.name=自动嗡嗡锯 +tile.machine_autosaw.desc=ç ä¼é™„è¿‘çš„æ¤ç‰©ï¼Œé‡æ–°ç§æ¤æ ‘木$接å—:$-木油$-乙醇$-鱼油$-釿²¹ tile.machine_bat9000.name=巨尻-9000 å‚¨ç½ tile.machine_battery.name=蓄电池 tile.machine_battery_potato.name=马铃薯电池组 @@ -4836,9 +4957,12 @@ tile.machine_combine_factory.name=CMB炼钢炉 tile.machine_combustion_engine.name=工业内燃机 tile.machine_compressor.name=压缩机 tile.machine_condenser.name=蒸汽冷å‡å™¨ +tile.machine_condenser_powered.name=大功率蒸汽冷å‡å™¨ tile.machine_controller.name=ååº”å †é¥æŽ§æ¨¡å— tile.machine_converter_he_rf.name=HE→RF转æ¢å™¨ tile.machine_converter_rf_he.name=RF→HE转æ¢å™¨ +tile.machine_conveyor_press.name=输é€å¸¦é”»åŽ‹æœº +tile.machine_conveyor_press.desc=ä¼ é€å¸¦ä»Žå·¦å‘å³ç§»åЍ$手æŒé”»æ¨¡å³é”®å•击以安装$使用螺ä¸åˆ€ç§»é™¤é”»æ¨¡ tile.machine_crucible.name=å©åŸš tile.machine_crystallizer.name=矿物酸化器 tile.machine_cyclotron.name=回旋加速器 @@ -4925,6 +5049,8 @@ tile.machine_steam_engine.name=蒸汽机 tile.machine_steam_engine.desc=效率:85% tile.machine_stirling.name=斯特林å‘电机 tile.machine_stirling.desc=它将热é‡è½¬åŒ–为能é‡ã€‚这需è¦å¤–部热æº$传热率:T*0.1 TU/T$最大进气é‡ï¼š300 TU/T$效率:50% +tile.machine_stirling_creative.name=创造斯特林å‘动机 +tile.machine_stirling_creative.desc=将热é‡è½¬åŒ–为能é‡ã€‚需è¦å¤–部热æº$传热率:T*0.1 TU/T$æ— é™å¸çƒ­/T$效率:100% tile.machine_stirling_steel.name=é‡åž‹æ–¯ç‰¹æž—å‘电机 tile.machine_stirling_steel.desc=它将热é‡è½¬åŒ–为能é‡ã€‚这需è¦å¤–部热æº$使用更é‡çš„é½¿è½®æ¥æ”¯æŒæ›´é«˜çš„æ¸©åº¦$传热率:T*0.1 TU/T$最大进气é‡ï¼š1500 TU/T$效率:50% tile.machine_storage_drum.name=æ ¸åºŸæ–™å¤„ç†æ¡¶ @@ -5051,11 +5177,14 @@ tile.ore_uranium_scorched.name=烧焦的铀矿石 tile.ore_verticium.name=韦德赛矿石 tile.ore_volcano.name=åœ°çƒ­è£‚ç¼ tile.ore_weidanium.name=é­ä¸¹çŸ¿çŸ³ +tile.part_emitter.name=Decoç²’å­å‘射器 tile.pink_barrel.name=煤油桶 tile.pink_log.name=粉色原木 tile.pink_planks.name=ç²‰è‰²æœ¨æ¿ tile.pink_slab.name=粉色木åŠç – tile.pink_stairs.name=粉色木å°é˜¶ +tile.piston_inserter.name=æ’入器 +tile.piston_inserter.desc=å¯ä»¥ä½¿ç”¨è‡ªåŠ¨åŒ–æŽ¥æ”¶ä¸€ä»¶ç‰©å“$ä½¿ç”¨çº¢çŸ³ï¼Œå®ƒä¼šå°†ç‰©å“æ’入钻孔石墨中$钻孔石墨的物å“都会被推出一格$æ’å…¥å™¨ä¸Žé’»å­”çŸ³å¢¨ä¹‹é—´éœ€è¦æœ‰ä¸€æ ¼ç©ºæ°” tile.plant_dead.name=死亡æ¤ç‰© tile.plant_flower.cd0.name=èŠ¥å­æŸ³ tile.plant_flower.cd1.name=èŠ¥å­æŸ³ @@ -5077,6 +5206,30 @@ tile.pribris.name=RBMK石墨å¼å应堆残骸 tile.pribris_burning.name=燃烧的RBMKå应堆残骸 tile.pribris_digamma.name=å‘黑的RBMKå应堆残骸 tile.pribris_radiating.name=阴燃的RBMKå应堆残骸 +tile.pump_electric.name=电动地下水泵 +tile.pump_electric.desc=用电力抽å–地下水$产水é‡é«˜è¾¾10000mB/t$éœ€è¦æ”¾ç½®åœ¨Y:70以下 +tile.pump_steam.name=蒸汽动力地下水泵 +tile.pump_steam.desc=使用蒸汽抽å–地下水$产水é‡é«˜è¾¾1000mB/t$éœ€è¦æ”¾ç½®åœ¨Y:70以下 +tile.pwr_block.name=PWR压水å应堆 +tile.pwr_casing.name=PWR压力容器 +tile.pwr_casing.desc=需è¦è¦†ç›–å应堆的所有内部零件以形æˆ$ä½ç½®:外壳 +tile.pwr_channel.name=PWR冷å´å‰‚é€šé“ +tile.pwr_channel.desc=传导热é‡ä»¥åŠ çƒ­å†·å´å‰‚$ä½ç½®ï¼šä»»æ„ +tile.pwr_control.name=PWR控制棒 +tile.pwr_control.desc=å…许控制连接的燃料棒$放置:å„燃料棒连线网格之间 +tile.pwr_controller.name=PWR控制器 +tile.pwr_controller.desc=PWR的接入终端$ä½ç½®ï¼šå¤–壳,æ¯ä¸ªå应堆åªè¦ä¸€ä¸ª$å³é”®å•击以组装å应堆 +tile.pwr_fuel.name=PWR燃料棒 +tile.pwr_fuel.desc=增加压水堆燃料容é‡$ä½ç½®ï¼šç½‘格,用于增加å应效率 +tile.pwr_heatex.name=PWRæ¢çƒ­å™¨ +tile.pwr_heatex.desc=将核心热é‡è½¬ç§»åˆ°å¤–壳$ä½ç½®ï¼šä»»æ„ +tile.pwr_neutron_source.name=PWR䏭孿º +tile.pwr_neutron_source.desc=å‘堆芯添加20个中å­é€šé‡$ä½ç½®ï¼šä»»æ„$中å­é€šé‡åªæœ‰åœ¨è¿žæŽ¥æ‰“开时æ‰èƒ½åˆ°è¾¾ç‡ƒæ–™æ£’ +tile.pwr_port.name=PWRæŽ¥å…¥ç«¯å£ +tile.pwr_port.desc=å…许物å“和液体交æ¢$ä½ç½®ï¼šç»„ä»¶ +tile.pwr_reflector.name=PWR中å­å射器 +tile.pwr_reflector.desc=将中å­é€šé‡å射回燃料棒$ä½ç½®ï¼šç½‘格,用于增加å应速率$å¯ä½œä¸ºå¤–å£³ææ–™ +tile.radio_telex.name=Telex Machine tile.radio_torch_counter.name=红石无线项目计数器 tile.radio_torch_counter.desc=平颿ˆ–比较器兼容å—上的标牌$æ ¹æ®åŒ¹é…项目的数é‡å‘å‡ºä¿¡å· tile.radio_torch_receiver.name=æ— çº¿çº¢çŸ³ä¿¡å·æŽ¥æ”¶å™¨ @@ -5121,6 +5274,8 @@ tile.reactor_inserter.name=å应堆燃料æ’入器 tile.red_barrel.name=ç‚¸è¯æ¡¶ tile.red_cable.name=紫铜电线 tile.red_cable_classic.name=紫铜电缆(ç»å…¸åž‹ï¼‰ +tile.red_cable_gauge.name=功率计 +tile.red_cable_gauge.desc=显示æ¯åˆ»åœ¨ç½‘络中æµåŠ¨çš„ç”µåŠ›$的电缆$由储能方å—连接的拆分网络被视为一个共享网络。 tile.red_cable_paintable.name=坿¶‚漆紫铜线 tile.red_connector.name=电力连接器 tile.red_pylon.name=ç”µçº¿æ† diff --git a/src/main/resources/assets/hbm/sounds/block/reactorLoop.ogg b/src/main/resources/assets/hbm/sounds/block/reactorLoop.ogg index 428ddeabbfdcd94c2efc0856475005c552ce8e32..95ac0c523957fcd6518c2fd27926b07d318e5f74 100644 GIT binary patch delta 111314 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Π117_8^RD;$*e&x0z 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 Q44Wd70yY>-k_6=c0ouQoNB{r; delta 108785 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�MBLE+ckwDd**qbr=5L2YXJXu`#^9o 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 From f846b7884d6f109736bebfdc21ad511cabab8d1d Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 16 Oct 2023 16:00:10 +0200 Subject: [PATCH 070/207] plenty of fixes --- changelog | 22 +++++++++++++++++++ .../com/hbm/blocks/bomb/BlockTNTBase.java | 4 ++-- .../com/hbm/handler/EntityEffectHandler.java | 12 +++++++--- .../java/com/hbm/handler/WeaponAbility.java | 2 ++ .../hbm/handler/nei/CustomMachineHandler.java | 4 ++-- .../inventory/container/ContainerLeadBox.java | 1 + .../java/com/hbm/items/armor/JetpackBase.java | 2 +- .../com/hbm/items/tool/ItemToolAbility.java | 2 +- 8 files changed, 40 insertions(+), 9 deletions(-) diff --git a/changelog b/changelog index e69de29bb..1f0e42906 100644 --- a/changelog +++ b/changelog @@ -0,0 +1,22 @@ +## Added + +## Changed +* Updated chinese localization +* Tweaked certain assembler recipes + * Some welded plate requirements have been lowered + * The plasma heater now requires slightly more resources, but yields 4 blocks per operation instead of 1 +* The fractioning tower now requires welded plates, but the total steel cost has been reduced by roughly a third +* The cyclotron now has three automation ports on each side, corresponding with the colors of the three input pairs +* Updated the PWR sound + +## Fixed +* Fixed multi fluid ID's search not behaving correctly +* Fixed jetpack's description using unlocalized fluid names +* Fixed the CM structure wand being broken when used in most directions +* Fixed the custom machine recipe handler using the original references to the output stacks, causing the chance percentage indicator getting stuck on the actual outputs +* Fixed the desh suit's boot models not being separated from the legs +* Fixed dupe caused by defusing TNT-like blocks +* Fixed containment box being able to contain itself when using the number keys, crashing the game +* Fixed a critical game-breaking error where the custom tool's ability toggle is misspelled +* (Hopefully) fixed the vampire ability not firing the onDeath event, causing the target to not drop any items and any death releated events to not happen +* Fixed water creatures vomitting when irradiated, when they logically shouldn't \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java index b6ea8e4eb..680ea9030 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java @@ -145,8 +145,8 @@ public abstract class BlockTNTBase extends BlockFlammable implements IToolable { if(tool == ToolType.DEFUSER) { if(!world.isRemote) { - world.func_147480_a(x, y, z, true); - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + world.func_147480_a(x, y, z, false); + this.dropBlockAsItem(world, x, y, z, 0, 0); } return true; } diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 467318ff7..c38cf5755 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -35,6 +35,7 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -159,7 +160,7 @@ public class EntityEffectHandler { if(HbmLivingProps.getRadiation(entity) > 600) { - if((world.getTotalWorldTime() + r600) % 600 < 20) { + if((world.getTotalWorldTime() + r600) % 600 < 20 && canVomit(entity)) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); nbt.setString("mode", "blood"); @@ -173,7 +174,7 @@ public class EntityEffectHandler { } } - } else if(HbmLivingProps.getRadiation(entity) > 200 && (world.getTotalWorldTime() + r1200) % 1200 < 20) { + } else if(HbmLivingProps.getRadiation(entity) > 200 && (world.getTotalWorldTime() + r1200) % 1200 < 20 && canVomit(entity)) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); @@ -329,7 +330,7 @@ public class EntityEffectHandler { entity.attackEntityFrom(ModDamageSource.mku, 2F); } - if(contagion < 30 * minute && (contagion + entity.getEntityId()) % 200 < 20) { + if(contagion < 30 * minute && (contagion + entity.getEntityId()) % 200 < 20 && canVomit(entity)) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); nbt.setString("mode", "blood"); @@ -633,4 +634,9 @@ public class EntityEffectHandler { props.plinkCooldown--; } } + + private static boolean canVomit(Entity e) { + if(e.isCreatureType(EnumCreatureType.waterCreature, false)) return false; + return true; + } } diff --git a/src/main/java/com/hbm/handler/WeaponAbility.java b/src/main/java/com/hbm/handler/WeaponAbility.java index 60a8ae6b7..919b149a2 100644 --- a/src/main/java/com/hbm/handler/WeaponAbility.java +++ b/src/main/java/com/hbm/handler/WeaponAbility.java @@ -35,6 +35,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; import net.minecraft.util.WeightedRandom; import net.minecraft.world.World; @@ -86,6 +87,7 @@ public abstract class WeaponAbility { EntityLivingBase living = (EntityLivingBase) victim; living.setHealth(living.getHealth() - amount); + if(living.getHealth() <= 0) living.onDeath(DamageSource.magic); player.heal(amount); } } diff --git a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java index 17acd394c..f5a4226d2 100644 --- a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java +++ b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java @@ -63,7 +63,7 @@ public class CustomMachineHandler extends TemplateRecipeHandler { for(int i = 0; i < 3; i++) if(recipe.outputItems.length > i) { Pair pair = recipe.outputItems[i]; - ItemStack out = pair.getKey(); + ItemStack out = pair.getKey().copy(); if(pair.getValue() != 1) { ItemStackUtil.addTooltipToStack(out, EnumChatFormatting.RED + "" + (((int)(pair.getValue() * 1000)) / 10D) + "%"); } @@ -72,7 +72,7 @@ public class CustomMachineHandler extends TemplateRecipeHandler { for(int i = 3; i < 6; i++) if(recipe.outputItems.length > i) { Pair pair = recipe.outputItems[i]; - ItemStack out = pair.getKey(); + ItemStack out = pair.getKey().copy(); if(pair.getValue() != 1) { ItemStackUtil.addTooltipToStack(out, EnumChatFormatting.RED + "" + (((int)(pair.getValue() * 1000)) / 10D) + "%"); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerLeadBox.java b/src/main/java/com/hbm/inventory/container/ContainerLeadBox.java index 2d015033f..3e8a6d0cf 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerLeadBox.java +++ b/src/main/java/com/hbm/inventory/container/ContainerLeadBox.java @@ -66,6 +66,7 @@ public class ContainerLeadBox extends Container { @Override public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { // prevents the player from moving around the currently open box + if(mode == 2 && button == player.inventory.currentItem) return null; if(index == player.inventory.currentItem + 47) return null; return super.slotClick(index, button, mode, player); } diff --git a/src/main/java/com/hbm/items/armor/JetpackBase.java b/src/main/java/com/hbm/items/armor/JetpackBase.java index 204ddd28b..e5701e3d8 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBase.java +++ b/src/main/java/com/hbm/items/armor/JetpackBase.java @@ -37,7 +37,7 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + fuel.getUnlocalizedName() + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); + list.add(EnumChatFormatting.LIGHT_PURPLE + fuel.getLocalizedName() + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); list.add(""); super.addInformation(itemstack, player, list, bool); list.add(EnumChatFormatting.GOLD + "Can be worn on its own!"); diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index f0c4496ad..7fcded778 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -208,7 +208,7 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc } list.add("Right click to cycle through abilities!"); - list.add("Sneak-click to turn abilitty off!"); + list.add("Sneak-click to turn ability off!"); } if(!this.hitAbility.isEmpty()) { From 6ba6f294e212f0049b48bafab825565a68030d11 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 17 Oct 2023 16:22:48 +0200 Subject: [PATCH 071/207] fixed arc welder template file --- changelog | 3 ++- .../java/com/hbm/inventory/recipes/ArcWelderRecipes.java | 1 + src/main/java/com/hbm/main/ModEventHandlerClient.java | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/changelog b/changelog index 1f0e42906..1cda4a909 100644 --- a/changelog +++ b/changelog @@ -19,4 +19,5 @@ * Fixed containment box being able to contain itself when using the number keys, crashing the game * Fixed a critical game-breaking error where the custom tool's ability toggle is misspelled * (Hopefully) fixed the vampire ability not firing the onDeath event, causing the target to not drop any items and any death releated events to not happen -* Fixed water creatures vomitting when irradiated, when they logically shouldn't \ No newline at end of file +* Fixed water creatures vomitting when irradiated, when they logically shouldn't +* Fixed arc welder recipe template file not being generated properly \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 8591f971c..5a6152721 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -171,6 +171,7 @@ public class ArcWelderRecipes extends SerializableRecipe { this.writeFluidStack(recipe.fluid, writer); } + writer.name("output"); this.writeItemStack(recipe.output, writer); writer.name("duration").value(recipe.duration); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 650c36270..7e3226470 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1291,7 +1291,7 @@ public class ModEventHandlerClient { case 0: main.splashText = "Floppenheimer!"; break; case 1: main.splashText = "i should dip my balls in sulfuric acid"; break; case 2: main.splashText = "All answers are popbob!"; break; - case 3: main.splashText = "None shall enter The Orb!"; break; + case 3: main.splashText = "None may enter The Orb!"; break; case 4: main.splashText = "Wacarb was here"; break; case 5: main.splashText = "SpongeBoy me Bob I am overdosing on keramine agagagagaga"; break; case 6: main.splashText = EnumChatFormatting.RED + "I know where you live, " + System.getProperty("user.name"); break; @@ -1300,10 +1300,10 @@ public class ModEventHandlerClient { case 9: main.splashText = "There are bugs under your skin!"; break; case 10: main.splashText = "Fentanyl!"; break; case 11: main.splashText = "Do drugs!"; break; - //case 12: main.splashText = "post this on r/feedthememes for free internet points!"; break; + case 12: main.splashText = "Imagine being scared by splash texts!"; break; } - if(Math.random() < 0.1) main.splashText = "Visit r/feedthebeast if you hate yourself!"; + if(Math.random() < 0.1) main.splashText = "Redditors aren't people!"; } } } From 0563ef2560a3aa910202a3fd3ee33697668f25d8 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 17 Oct 2023 22:01:09 +0200 Subject: [PATCH 072/207] *insert megalovania here* --- .../container/ContainerPlasticBag.java | 80 +++++++++++ .../com/hbm/inventory/gui/GUIPlasticBag.java | 48 +++++++ src/main/java/com/hbm/items/ModItems.java | 3 + .../com/hbm/items/tool/ItemPlasticBag.java | 126 ++++++++++++++++++ .../assets/hbm/models/mobs/plasticbag.obj | 97 ++++++++++++++ .../assets/hbm/textures/entity/plasticbag.png | Bin 0 -> 567 bytes .../textures/gui/storage/gui_plastic_bag.png | Bin 0 -> 2189 bytes .../assets/hbm/textures/items/plastic_bag.png | Bin 0 -> 235 bytes 8 files changed, 354 insertions(+) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIPlasticBag.java create mode 100644 src/main/java/com/hbm/items/tool/ItemPlasticBag.java create mode 100644 src/main/resources/assets/hbm/models/mobs/plasticbag.obj create mode 100644 src/main/resources/assets/hbm/textures/entity/plasticbag.png create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_plastic_bag.png create mode 100644 src/main/resources/assets/hbm/textures/items/plastic_bag.png diff --git a/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java b/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java new file mode 100644 index 000000000..428ec6390 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java @@ -0,0 +1,80 @@ +package com.hbm.inventory.container; + +import com.hbm.items.tool.ItemPlasticBag.InventoryPlasticBag; +import com.hbm.util.InventoryUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerPlasticBag extends Container { + + private InventoryPlasticBag bag; + + public ContainerPlasticBag(InventoryPlayer invPlayer, InventoryPlasticBag bag) { + this.bag = bag; + this.bag.openInventory(); + + this.addSlotToContainer(new Slot(bag, 0, 80, 65)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 134 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 192)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= bag.getSizeInventory() - 1) { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, bag.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, bag.getSizeInventory(), false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(p_82846_1_, var5); + } + + return var3; + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + // prevents the player from moving around the currently open box + if(mode == 2 && button == player.inventory.currentItem) return null; + if(index == player.inventory.currentItem + 47) return null; + return super.slotClick(index, button, mode, player); + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return bag.isUseableByPlayer(player); + } + + @Override + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + this.bag.closeInventory(); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPlasticBag.java b/src/main/java/com/hbm/inventory/gui/GUIPlasticBag.java new file mode 100644 index 000000000..4c3400388 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPlasticBag.java @@ -0,0 +1,48 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPlasticBag; +import com.hbm.items.tool.ItemPlasticBag.InventoryPlasticBag; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class GUIPlasticBag extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_plastic_bag.png"); + private ItemStack firstHeld; + + public GUIPlasticBag(InventoryPlayer invPlayer, InventoryPlasticBag box) { + super(new ContainerPlasticBag(invPlayer, box)); + + this.xSize = 176; + this.ySize = 216; + } + + @Override + public void drawScreen(int x, int y, float interp) { + if(firstHeld == null) { + firstHeld = this.mc.thePlayer.getHeldItem(); + } + + super.drawScreen(x, y, interp); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index bf75c0f59..2a28f99d5 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1207,6 +1207,7 @@ public class ModItems { public static Item debris_element; public static Item containment_box; + public static Item plastic_bag; public static Item test_nuke_igniter; public static Item test_nuke_propellant; @@ -3844,6 +3845,7 @@ public class ModItems { scrap_oil = new Item().setUnlocalizedName("scrap_oil").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scrap_oil"); scrap_nuclear = new Item().setUnlocalizedName("scrap_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scrap_nuclear"); containment_box = new ItemLeadBox().setUnlocalizedName("containment_box").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":containment_box"); + plastic_bag = new ItemPlasticBag().setUnlocalizedName("plastic_bag").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":plastic_bag"); debris_graphite = new Item().setUnlocalizedName("debris_graphite").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":debris_graphite"); debris_metal = new Item().setUnlocalizedName("debris_metal").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":debris_metal"); @@ -6771,6 +6773,7 @@ public class ModItems { GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName()); GameRegistry.registerItem(pollution_detector, pollution_detector.getUnlocalizedName()); GameRegistry.registerItem(containment_box, containment_box.getUnlocalizedName()); + GameRegistry.registerItem(plastic_bag, plastic_bag.getUnlocalizedName()); //Keys and Locks GameRegistry.registerItem(key, key.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemPlasticBag.java b/src/main/java/com/hbm/items/tool/ItemPlasticBag.java new file mode 100644 index 000000000..1d575e314 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemPlasticBag.java @@ -0,0 +1,126 @@ +package com.hbm.items.tool; + +import com.hbm.inventory.container.ContainerPlasticBag; +import com.hbm.inventory.gui.GUIPlasticBag; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.util.ItemStackUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ItemPlasticBag extends Item implements IGUIProvider { + + public ItemPlasticBag() { + this.setMaxStackSize(1); + } + + @Override + public int getMaxItemUseDuration(ItemStack stack) { + return 1; + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + if(!world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); + return stack; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerPlasticBag(player.inventory, new InventoryPlasticBag(player, player.getHeldItem())); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIPlasticBag(player.inventory, new InventoryPlasticBag(player, player.getHeldItem())); + } + + public static class InventoryPlasticBag implements IInventory { + + public final EntityPlayer player; + public final ItemStack bag; + public ItemStack[] slots; + + public InventoryPlasticBag(EntityPlayer player, ItemStack box) { + this.player = player; + this.bag = box; + slots = new ItemStack[this.getSizeInventory()]; + + if(!box.hasTagCompound()) + box.setTagCompound(new NBTTagCompound()); + + ItemStack[] fromNBT = ItemStackUtil.readStacksFromNBT(box, slots.length); + + if(fromNBT != null) { + for(int i = 0; i < slots.length; i++) { + slots[i] = fromNBT[i]; + } + } + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + ItemStack stack = getStackInSlot(slot); + if (stack != null) { + if (stack.stackSize > amount) { + stack = stack.splitStack(amount); + markDirty(); + } else { + setInventorySlotContents(slot, null); + } + } + return stack; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + ItemStack stack = getStackInSlot(slot); + setInventorySlotContents(slot, null); + return stack; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + + if(stack != null) { + stack.stackSize = Math.min(stack.stackSize, this.getInventoryStackLimit()); + } + + slots[slot] = stack; + markDirty(); + } + + @Override + public void markDirty() { + + for(int i = 0; i < getSizeInventory(); ++i) { + if(getStackInSlot(i) != null && getStackInSlot(i).stackSize == 0) { + slots[i] = null; + } + } + + ItemStackUtil.addStacksToNBT(bag, slots); + } + + @Override public int getSizeInventory() { return 1; } + @Override public ItemStack getStackInSlot(int slot) { return slots[slot]; } + @Override public String getInventoryName() { return "container.plasticBag"; } + @Override public boolean hasCustomInventoryName() { return bag.hasDisplayName(); } + @Override public int getInventoryStackLimit() { return 1; } + @Override public boolean isUseableByPlayer(EntityPlayer player) { return true; } + @Override public void openInventory() { } + @Override public void closeInventory() { } + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return true; } + } +} diff --git a/src/main/resources/assets/hbm/models/mobs/plasticbag.obj b/src/main/resources/assets/hbm/models/mobs/plasticbag.obj new file mode 100644 index 000000000..239dd3d8e --- /dev/null +++ b/src/main/resources/assets/hbm/models/mobs/plasticbag.obj @@ -0,0 +1,97 @@ +# Blender v2.79 (sub 0) OBJ File: 'plasticbag.blend' +# www.blender.org +o Cube_Cube.001 +v -0.187500 -0.250000 0.125000 +v -0.187500 0.250000 0.125000 +v -0.187500 -0.250000 -0.125000 +v -0.187500 0.250000 -0.125000 +v 0.187500 -0.250000 0.125000 +v 0.187500 0.250000 0.125000 +v 0.187500 -0.250000 -0.125000 +v 0.187500 0.250000 -0.125000 +v -0.125000 0.250000 0.125000 +v -0.125000 0.250000 -0.125000 +v -0.062500 0.250000 0.125000 +v -0.062500 0.250000 -0.125000 +v -0.125000 0.375000 0.125000 +v -0.125000 0.375000 -0.125000 +v -0.062500 0.375000 0.125000 +v -0.062500 0.375000 -0.125000 +v 0.062500 0.250000 0.125000 +v 0.062500 0.250000 -0.125000 +v 0.125000 0.250000 0.125000 +v 0.125000 0.250000 -0.125000 +v 0.062500 0.375000 0.125000 +v 0.062500 0.375000 -0.125000 +v 0.125000 0.375000 0.125000 +v 0.125000 0.375000 -0.125000 +v -0.062500 0.437500 0.125000 +v -0.062500 0.437500 -0.125000 +v 0.062500 0.437500 0.125000 +v 0.062500 0.437500 -0.125000 +vt 1.000000 1.000000 +vt 0.600000 0.333333 +vt 1.000000 0.333333 +vt 0.600000 1.000000 +vt -0.000000 0.333333 +vt 1.000000 1.000000 +vt 0.600000 0.333333 +vt 1.000000 0.333333 +vt 0.600000 1.000000 +vt -0.000000 0.333333 +vt 0.600000 0.000000 +vt -0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.900000 0.166667 +vt 0.900000 0.000000 +vt 0.700000 0.000000 +vt 0.600000 0.166667 +vt 0.600000 0.000000 +vt 1.000000 0.000000 +vt 0.900000 0.166667 +vt 0.900000 0.000000 +vt 0.700000 0.000000 +vt 0.600000 0.166667 +vt 0.600000 0.000000 +vt 0.700000 0.250000 +vt 0.700000 0.166667 +vt 0.900000 0.250000 +vt 0.700000 0.166667 +vt 0.700000 0.250000 +vt 1.000000 0.166667 +vt 1.000000 0.166667 +vt 0.900000 0.250000 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/2/2 +f 8/6/3 5/7/3 7/8/3 +f 6/9/4 1/10/4 5/7/4 +f 7/11/5 1/10/5 3/12/5 +f 19/13/4 21/14/4 17/15/4 +f 11/16/4 13/17/4 9/18/4 +f 10/19/2 16/20/2 12/21/2 +f 18/22/2 24/23/2 20/24/2 +f 16/20/2 28/25/2 22/26/2 +f 27/27/4 15/28/4 21/14/4 +f 13/17/4 15/28/4 25/29/4 +f 21/14/4 23/30/4 27/27/4 +f 22/26/2 28/25/2 24/23/2 +f 16/20/2 14/31/2 26/32/2 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 8/33/2 7/5/2 +f 8/6/3 6/9/3 5/7/3 +f 6/9/4 2/34/4 1/10/4 +f 7/11/5 5/7/5 1/10/5 +f 19/13/4 23/30/4 21/14/4 +f 11/16/4 15/28/4 13/17/4 +f 10/19/2 14/31/2 16/20/2 +f 18/22/2 22/26/2 24/23/2 +f 16/20/2 26/32/2 28/25/2 +f 27/27/4 25/29/4 15/28/4 diff --git a/src/main/resources/assets/hbm/textures/entity/plasticbag.png b/src/main/resources/assets/hbm/textures/entity/plasticbag.png new file mode 100644 index 0000000000000000000000000000000000000000..079d1ba4f66a64d44d702569b73b2fa6e9c13256 GIT binary patch literal 567 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/plastic_bag.png b/src/main/resources/assets/hbm/textures/items/plastic_bag.png new file mode 100644 index 0000000000000000000000000000000000000000..5074bd9204fa48946e7f614febb22ca10276b597 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfh=VtUmlCqL|%CXzDxe;u-ux#g7XyDnVjGC z?`_}kdZuj)I@K6_HQ>p&)AKqebS%+Z&h-C*_ucgG9}M3GPCmciG4wfKz*&X^$2Pir z&CR)Rr;(RwUSIYX!JCS*O1f-YzAjajKmAg-MUdfuTsF_?epB%USsSMDT>M_8Wc8T$ hqGdbZqT2X2@k5tQA72j469>AM!PC{xWt~$(699^`U912A literal 0 HcmV?d00001 From d2e94af59d58b3d469444344665f5f68c88f780b Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 18 Oct 2023 22:25:19 +0200 Subject: [PATCH 073/207] improved nature documentaries --- .../java/com/hbm/entity/EntityMappings.java | 14 ++ .../com/hbm/entity/mob/EntityPlasticBag.java | 160 ++++++++++++++++++ .../container/ContainerPlasticBag.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../hbm/render/entity/mob/RenderBalls.java | 1 - .../render/entity/mob/RenderPlasticBag.java | 41 +++++ src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + 8 files changed, 221 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/hbm/entity/mob/EntityPlasticBag.java create mode 100644 src/main/java/com/hbm/render/entity/mob/RenderPlasticBag.java diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 4b2a6d849..8e42e0752 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -26,6 +26,7 @@ import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EnumCreatureType; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry; +import net.minecraft.world.biome.BiomeGenBase.TempCategory; public class EntityMappings { @@ -252,10 +253,12 @@ public class EntityMappings { addMob(EntityGlyphidBlaster.class, "entity_glyphid_blaster", 0xD83737, 0xDBB79D); addMob(EntityGlyphidScout.class, "entity_glyphid_scout", 0x273038, 0xB9E36B); addMob(EntityGlyphidNuclear.class, "entity_glyphid_nuclear", 0x267F00, 0xA0A0A0); + addMob(EntityPlasticBag.class, "entity_plastic_bag", 0xd0d0d0, 0x808080); addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperGold.class, 1, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); + addSpawn(EntityPlasticBag.class, 1, 1, 3, EnumCreatureType.waterCreature, getOceanBiomes()); int id = 0; for(Quartet, String, Integer, Boolean> entry : entityMappings) { @@ -300,4 +303,15 @@ public class EntityMappings { spawns.add(new SpawnListEntry(entityClass, weightedProb, min, max)); } } + + public static BiomeGenBase[] getOceanBiomes() { + List biomes = new ArrayList(); + + for(BiomeGenBase biome : BiomeGenBase.getBiomeGenArray()) { + if(biome != null && biome.getTempCategory() == TempCategory.OCEAN) { + biomes.add(biome); + } + } + return biomes.toArray(new BiomeGenBase[0]); + } } diff --git a/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java b/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java new file mode 100644 index 000000000..1ebc591c5 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java @@ -0,0 +1,160 @@ +package com.hbm.entity.mob; + +import com.hbm.entity.item.EntityItemBuoyant; +import com.hbm.items.ModItems; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.passive.EntityWaterMob; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +/** + * Copy-pasted shit from the squid class + * Mojang-certified + * + * @author hbm + */ +public class EntityPlasticBag extends EntityWaterMob { + + public float rotation; + public float prevRotation; + private float randomMotionSpeed; + private float rotationVelocity; + private float randomMotionVecX; + private float randomMotionVecY; + private float randomMotionVecZ; + + public EntityPlasticBag(World world) { + super(world); + this.setSize(0.45F, 0.45F); + this.rotationVelocity = 1.0F / (this.rand.nextFloat() + 1.0F) * 0.2F; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + + if(!worldObj.isRemote) { + this.setDead(); + this.dropItem(ModItems.plastic_bag, 1); + } + + return true; + } + + @Override + public EntityItem entityDropItem(ItemStack stack, float offset) { + if(stack.stackSize != 0 && stack.getItem() != null) { + EntityItemBuoyant entityitem = new EntityItemBuoyant(this.worldObj, this.posX, this.posY + (double) offset, this.posZ, stack); + entityitem.delayBeforeCanPickup = 10; + if(captureDrops) { + capturedDrops.add(entityitem); + } else { + this.worldObj.spawnEntityInWorld(entityitem); + } + return entityitem; + } else { + return null; + } + } + + @Override + protected String getLivingSound() { + return null; + } + + @Override + protected String getHurtSound() { + return null; + } + + @Override + protected String getDeathSound() { + return null; + } + + @Override + protected boolean canTriggerWalking() { + return false; + } + + @Override + public boolean isInWater() { + return this.worldObj.handleMaterialAcceleration(this.boundingBox.expand(0.0D, -0.6D, 0.0D), Material.water, this); + } + + @Override + public void onLivingUpdate() { + super.onLivingUpdate(); + this.prevRotation = this.rotation; + this.rotation += this.rotationVelocity; + + if(this.rotation > ((float) Math.PI * 2F)) { + this.rotation -= ((float) Math.PI * 2F); + + if(this.rand.nextInt(10) == 0) { + this.rotationVelocity = 1.0F / (this.rand.nextFloat() + 1.0F) * 0.2F; + } + } + + if(this.isInWater()) { + float f; + + if(this.rotation < (float) Math.PI) { + f = this.rotation / (float) Math.PI; + + if((double) f > 0.75D) { + this.randomMotionSpeed = 0.1F; + } + } else { + this.randomMotionSpeed *= 0.999F; + } + + if(!this.worldObj.isRemote) { + this.motionX = (double) (this.randomMotionVecX * this.randomMotionSpeed); + this.motionY = (double) (this.randomMotionVecY * this.randomMotionSpeed); + this.motionZ = (double) (this.randomMotionVecZ * this.randomMotionSpeed); + } + + f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.renderYawOffset += (-((float) Math.atan2(this.motionX, this.motionZ)) * 180.0F / (float) Math.PI - this.renderYawOffset) * 0.1F; + this.rotationYaw = this.renderYawOffset; + this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); + } else { + if(!this.worldObj.isRemote) { + this.motionX = 0.0D; + this.motionY -= 0.08D; + this.motionY *= 0.98D; + this.motionZ = 0.0D; + } + } + } + + @Override + public void moveEntityWithHeading(float forward, float strafe) { + this.moveEntity(this.motionX, this.motionY, this.motionZ); + } + + @Override + protected void updateEntityActionState() { + ++this.entityAge; + + if(this.entityAge > 100) { + this.randomMotionVecX = this.randomMotionVecY = this.randomMotionVecZ = 0.0F; + } else if(this.rand.nextInt(50) == 0 || !this.inWater || this.randomMotionVecX == 0.0F && this.randomMotionVecY == 0.0F && this.randomMotionVecZ == 0.0F) { + float f = this.rand.nextFloat() * (float) Math.PI * 2.0F; + this.randomMotionVecX = MathHelper.cos(f) * 0.2F; + this.randomMotionVecY = -0.1F + this.rand.nextFloat() * 0.2F; + this.randomMotionVecZ = MathHelper.sin(f) * 0.2F; + } + + this.despawnEntity(); + } + + @Override + public boolean getCanSpawnHere() { + return this.posY > 45.0D && this.posY < 63.0D && super.getCanSpawnHere(); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java b/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java index 428ec6390..687e53a54 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java +++ b/src/main/java/com/hbm/inventory/container/ContainerPlasticBag.java @@ -63,7 +63,7 @@ public class ContainerPlasticBag extends Container { public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { // prevents the player from moving around the currently open box if(mode == 2 && button == player.inventory.currentItem) return null; - if(index == player.inventory.currentItem + 47) return null; + if(index == player.inventory.currentItem + 28) return null; return super.slotClick(index, button, mode, player); } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 7f4a5edad..1ec9d4a5c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -752,6 +752,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidScout.class, new RenderGlyphid()); RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidNuclear.class, new RenderGlyphidNuclear()); RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); + RenderingRegistry.registerEntityRenderingHandler(EntityPlasticBag.class, new RenderPlasticBag()); //"particles" RenderingRegistry.registerEntityRenderingHandler(EntitySmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.smoke1, ModItems.smoke2, ModItems.smoke3, ModItems.smoke4, ModItems.smoke5, ModItems.smoke6, ModItems.smoke7, ModItems.smoke8 })); RenderingRegistry.registerEntityRenderingHandler(EntityBSmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.b_smoke1, ModItems.b_smoke2, ModItems.b_smoke3, ModItems.b_smoke4, ModItems.b_smoke5, ModItems.b_smoke6, ModItems.b_smoke7, ModItems.b_smoke8 })); diff --git a/src/main/java/com/hbm/render/entity/mob/RenderBalls.java b/src/main/java/com/hbm/render/entity/mob/RenderBalls.java index 2a13025aa..113742e0f 100644 --- a/src/main/java/com/hbm/render/entity/mob/RenderBalls.java +++ b/src/main/java/com/hbm/render/entity/mob/RenderBalls.java @@ -37,5 +37,4 @@ public class RenderBalls extends Render { protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return ResourceManager.universal_bright; } - } diff --git a/src/main/java/com/hbm/render/entity/mob/RenderPlasticBag.java b/src/main/java/com/hbm/render/entity/mob/RenderPlasticBag.java new file mode 100644 index 000000000..2d6a210f4 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderPlasticBag.java @@ -0,0 +1,41 @@ +package com.hbm.render.entity.mob; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderPlasticBag extends Render { + + private static final IModelCustom model = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/plasticbag.obj")); + private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/entity/plasticbag.png"); + + public RenderPlasticBag() { + this.shadowOpaque = 0.0F; + } + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * f1 + 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * f1 - 90, 0.0F, 0.0F, 1.0F); + + this.bindEntityTexture(entity); + model.renderAll(); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return texture; + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index b57571485..a3ef04578 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -537,6 +537,7 @@ entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper entity.entity_mob_phosgene_creeper.name=Phosgen-Creeper entity.entity_mob_tainted_creeper.name=Verseuchter Creeper entity.entity_mob_volatile_creeper.name=Instabiler Creeper +entity.entity_plastic_bag.name=Plastiktüte entity.entity_taint_crab.name=Verseuchte Krabbe entity.entity_tesla_crab.name=Tesla-Krabbe entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime @@ -2672,6 +2673,7 @@ item.plan_c.name=Plan C item.plant_item.mustardwillow.name=Senf-Weidenblatt item.plant_item.rope.name=Seil item.plant_item.tobacco.name=Tabak +item.plastic_bag.name=Plastiktüte item.plate_advanced_alloy.name=Fortgeschrittene Legierungsplatte item.plate_aluminium.name=Aluminiumplatte item.plate_armor_ajr.name=Eisenbeschlagene Panzerplatte diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 8cdae49aa..7dfece34c 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1050,6 +1050,7 @@ entity.entity_mob_nuclear_creeper.name=Nuclear Creeper entity.entity_mob_phosgene_creeper.name=Phosgene Creeper entity.entity_mob_tainted_creeper.name=Tainted Creeper entity.entity_mob_volatile_creeper.name=Volatile Creeper +entity.entity_plastic_bag.name=Plastic Bag entity.entity_taint_crab.name=Taint Crab entity.entity_tesla_crab.name=Tesla Crab entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime @@ -3467,6 +3468,7 @@ item.plan_c.desc=Deadly item.plant_item.mustardwillow.name=Mustard Willow Leaf item.plant_item.rope.name=Rope item.plant_item.tobacco.name=Tobacco +item.plastic_bag.name=Plastic Bag item.plate_advanced_alloy.name=Advanced Alloy Plate item.plate_aluminium.name=Aluminium Plate item.plate_armor_ajr.name=Iron-Shod Armor Plating From 565fea133ea9b569dff39b57f6bdd1f82d5cf2f8 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 18 Oct 2023 22:36:23 +0200 Subject: [PATCH 074/207] biombe dicshonary --- src/main/java/com/hbm/entity/EntityMappings.java | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 8e42e0752..225370ef2 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -26,7 +26,8 @@ import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EnumCreatureType; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry; -import net.minecraft.world.biome.BiomeGenBase.TempCategory; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeDictionary.Type; public class EntityMappings { @@ -258,7 +259,7 @@ public class EntityMappings { addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperGold.class, 1, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); - addSpawn(EntityPlasticBag.class, 1, 1, 3, EnumCreatureType.waterCreature, getOceanBiomes()); + addSpawn(EntityPlasticBag.class, 1, 1, 3, EnumCreatureType.waterCreature, BiomeDictionary.getBiomesForType(Type.OCEAN)); int id = 0; for(Quartet, String, Integer, Boolean> entry : entityMappings) { @@ -303,15 +304,4 @@ public class EntityMappings { spawns.add(new SpawnListEntry(entityClass, weightedProb, min, max)); } } - - public static BiomeGenBase[] getOceanBiomes() { - List biomes = new ArrayList(); - - for(BiomeGenBase biome : BiomeGenBase.getBiomeGenArray()) { - if(biome != null && biome.getTempCategory() == TempCategory.OCEAN) { - biomes.add(biome); - } - } - return biomes.toArray(new BiomeGenBase[0]); - } } From 42d788263778df02ec37a23674b37a8b8eb43792 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 22 Oct 2023 18:17:07 +0200 Subject: [PATCH 075/207] more unfinished crap --- changelog | 4 + gradle.properties | 2 +- .../java/com/hbm/entity/EntityMappings.java | 1 + .../java/com/hbm/entity/mob/EntityPigeon.java | 23 +++ .../com/hbm/entity/mob/EntityPlasticBag.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 2 + .../hbm/render/entity/mob/RenderPigeon.java | 26 +++ .../com/hbm/render/model/ModelPigeon.java | 91 +++++++++++ .../render/tileentity/RendererObjTester.java | 153 +----------------- .../assets/hbm/textures/entity/pigeon.png | Bin 0 -> 419 bytes 11 files changed, 155 insertions(+), 151 deletions(-) create mode 100644 src/main/java/com/hbm/entity/mob/EntityPigeon.java create mode 100644 src/main/java/com/hbm/render/entity/mob/RenderPigeon.java create mode 100644 src/main/java/com/hbm/render/model/ModelPigeon.java create mode 100644 src/main/resources/assets/hbm/textures/entity/pigeon.png diff --git a/changelog b/changelog index 1cda4a909..f42f79ddf 100644 --- a/changelog +++ b/changelog @@ -1,4 +1,8 @@ ## Added +* Plastic bag + * Rarely spawns in water with similar spawn conditions as squids + * Will slowly drift into random directions + * Can be picked up, the resulting item can be used like a backpack that stores one item ## Changed * Updated chinese localization diff --git a/gradle.properties b/gradle.properties index 069c4d1c8..1b073093f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4746 +mod_build_number=4760 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 225370ef2..4c69f8102 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -239,6 +239,7 @@ public class EntityMappings { addMob(EntityMaskMan.class, "entity_mob_mask_man", 0x818572, 0xC7C1B7); addMob(EntityDuck.class, "entity_fucc_a_ducc", 0xd0d0d0, 0xFFBF00); addMob(EntityQuackos.class, "entity_elder_one", 0xd0d0d0, 0xFFBF00); + //addMob(EntityPigeon.class, "entity_pigeon", 0xd0d0d0, 0xFFBF00); addMob(EntityFBI.class, "entity_ntm_fbi", 0x008000, 0x404040); addMob(EntityFBIDrone.class, "entity_ntm_fbi_drone", 0x008000, 0x404040); addMob(EntityRADBeast.class, "entity_ntm_radiation_blaze", 0x303030, 0x008000); diff --git a/src/main/java/com/hbm/entity/mob/EntityPigeon.java b/src/main/java/com/hbm/entity/mob/EntityPigeon.java new file mode 100644 index 000000000..af1ac41e0 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityPigeon.java @@ -0,0 +1,23 @@ +package com.hbm.entity.mob; + +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.world.World; + +public class EntityPigeon extends EntityChicken { + + public EntityPigeon(World p_i1682_1_) { + super(p_i1682_1_); + } + + protected String getLivingSound() { + return null; + } + + protected String getHurtSound() { + return null; + } + + protected String getDeathSound() { + return null; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java b/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java index 1ebc591c5..0c9ecaef4 100644 --- a/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java +++ b/src/main/java/com/hbm/entity/mob/EntityPlasticBag.java @@ -155,6 +155,6 @@ public class EntityPlasticBag extends EntityWaterMob { @Override public boolean getCanSpawnHere() { - return this.posY > 45.0D && this.posY < 63.0D && super.getCanSpawnHere(); + return this.posY > 45.0D && this.posY < 63.0D && this.getRNG().nextInt(10) == 0 && super.getCanSpawnHere(); } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 1db22f6d1..417c9681b 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4746)"; + public static final String VERSION = "1.0.27 BETA (4760)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 1ec9d4a5c..f7e3d1233 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -87,6 +87,7 @@ import com.hbm.render.item.*; import com.hbm.render.item.block.*; import com.hbm.render.item.weapon.*; import com.hbm.render.loader.HmfModelLoader; +import com.hbm.render.model.ModelPigeon; import com.hbm.render.tileentity.*; import com.hbm.render.util.MissilePart; import com.hbm.render.util.RenderInfoSystem; @@ -753,6 +754,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidNuclear.class, new RenderGlyphidNuclear()); RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); RenderingRegistry.registerEntityRenderingHandler(EntityPlasticBag.class, new RenderPlasticBag()); + RenderingRegistry.registerEntityRenderingHandler(EntityPigeon.class, new RenderPigeon(new ModelPigeon(), 0.3F)); //"particles" RenderingRegistry.registerEntityRenderingHandler(EntitySmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.smoke1, ModItems.smoke2, ModItems.smoke3, ModItems.smoke4, ModItems.smoke5, ModItems.smoke6, ModItems.smoke7, ModItems.smoke8 })); RenderingRegistry.registerEntityRenderingHandler(EntityBSmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.b_smoke1, ModItems.b_smoke2, ModItems.b_smoke3, ModItems.b_smoke4, ModItems.b_smoke5, ModItems.b_smoke6, ModItems.b_smoke7, ModItems.b_smoke8 })); diff --git a/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java b/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java new file mode 100644 index 000000000..a825a0b3b --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java @@ -0,0 +1,26 @@ +package com.hbm.render.entity.mob; + +import com.hbm.entity.mob.EntityPigeon; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.entity.RenderChicken; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderPigeon extends RenderChicken { + + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/entity/pigeon.png"); + + public RenderPigeon(ModelBase p_i1252_1_, float p_i1252_2_) { + super(p_i1252_1_, p_i1252_2_); + } + + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityPigeon) entity); + } + + protected ResourceLocation getEntityTexture(EntityPigeon entity) { + return texture; + } +} diff --git a/src/main/java/com/hbm/render/model/ModelPigeon.java b/src/main/java/com/hbm/render/model/ModelPigeon.java new file mode 100644 index 000000000..0f652efa2 --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelPigeon.java @@ -0,0 +1,91 @@ +package com.hbm.render.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; + +public class ModelPigeon extends ModelBase { + + public ModelRenderer head; + public ModelRenderer beak; + public ModelRenderer body; + public ModelRenderer bodyFat; + public ModelRenderer leftLeg; + public ModelRenderer rightLeg; + public ModelRenderer leftWing; + public ModelRenderer rightWing; + public ModelRenderer ass; + public ModelRenderer feathers; + + public ModelPigeon() { + initModel(); + } + + private void initModel() { + + boolean fat = false; + + this.head = new ModelRenderer(this, 0, 0); + this.head.addBox(-2F, -6F, -2F, 4, 6, 4); + this.head.setRotationPoint(0F, 16F, -2F - (fat ? 2F : 0F)); + this.beak = new ModelRenderer(this, 14, 0); + this.beak.addBox(-1F, -4F, -4F, 2, 2, 2); + this.beak.setRotationPoint(0F, 16F, -2F - (fat ? 2F : 0F)); + + this.body = new ModelRenderer(this, 0, 10); + this.body.addBox(-3F, -3F, -4F, 6, 6, 8, 0); + this.body.setRotationPoint(0F, 17F, 0F); + this.bodyFat = new ModelRenderer(this, 0, 10); + this.bodyFat.addBox(-3F, -3F, -4F, 6, 6, 8, 1); + this.bodyFat.setRotationPoint(0F, 17F, 0F); + this.ass = new ModelRenderer(this, 0, 24); + this.ass.addBox(-2F, -2F, -2F, 4, 4, 4); + this.ass.setRotationPoint(0F, 20F, 4F + (fat ? 1F : 0F)); + this.feathers = new ModelRenderer(this, 16, 24); + this.feathers.addBox(-1F, -0.5F, -2F, 2, 1, 4); + this.feathers.setRotationPoint(0F, 21.5F, 7.5F + (fat ? 1F : 0F)); + + this.leftLeg = new ModelRenderer(this, 20, 0); + this.leftLeg.addBox(-1F, 0F, 0F, 2, 4, 2); + this.leftLeg.setRotationPoint(1F, 20F, -1F); + this.rightLeg = new ModelRenderer(this, 20, 0); + this.rightLeg.addBox(-1F, 0F, 0F, 2, 4, 2); + this.rightLeg.setRotationPoint(-1F, 20F, -1F); + + this.leftWing = new ModelRenderer(this, 28, 0); + this.leftWing.addBox(0F, 0F, -3F, 1, 4, 6); + this.leftWing.setRotationPoint(3F + (fat ? 1F : 0F), -2F, 0F); + this.rightWing = new ModelRenderer(this, 28, 10); + this.rightWing.addBox(-1F, 0F, -3F, 1, 4, 6); + this.rightWing.setRotationPoint(-3F - (fat ? 1F : 0F), -2F, 0F); + + this.body.addChild(this.leftWing); + this.body.addChild(this.rightWing); + this.bodyFat.addChild(this.leftWing); + this.bodyFat.addChild(this.rightWing); + } + + public void render(Entity entity, float f0, float f1, float f2, float f3, float f4, float scale) { + //this.initModel(); + this.setRotationAngles(f0, f1, f2, f3, f4, scale, entity); + this.head.render(scale); + this.beak.render(scale); + this.body.render(scale); + this.rightLeg.render(scale); + this.leftLeg.render(scale); + this.ass.render(scale); + this.feathers.render(scale); + } + + public void setRotationAngles(float walkLoop, float legAmplitude, float armSwing, float headYaw, float headPitch, float scale, Entity entity) { + this.head.rotateAngleX = this.beak.rotateAngleX = headPitch / (180F / (float) Math.PI); + this.head.rotateAngleY = this.beak.rotateAngleY = headYaw / (180F / (float) Math.PI); + this.body.rotateAngleX = this.bodyFat.rotateAngleX = this.ass.rotateAngleX = -((float) Math.PI / 4F); + this.feathers.rotateAngleX = -((float) Math.PI / 8F); + this.rightLeg.rotateAngleX = MathHelper.cos(walkLoop * 0.6662F) * 1.4F * legAmplitude; + this.leftLeg.rotateAngleX = MathHelper.cos(walkLoop * 0.6662F + (float) Math.PI) * 1.4F * legAmplitude; + this.rightWing.rotateAngleZ = armSwing; + this.leftWing.rotateAngleZ = -armSwing; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java index eabd2569a..71c074f4c 100644 --- a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java +++ b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java @@ -7,6 +7,7 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import com.hbm.main.ResourceManager; +import com.hbm.render.model.ModelPigeon; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; @@ -15,6 +16,8 @@ import net.minecraft.tileentity.TileEntity; public class RendererObjTester extends TileEntitySpecialRenderer { //private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/TestObj.obj"); + + ModelPigeon pigeon = new ModelPigeon(); @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { @@ -22,155 +25,9 @@ public class RendererObjTester extends TileEntitySpecialRenderer { GL11.glTranslated(x + 0.5, y, z + 0.5); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); - - /*GL11.glTranslated(0, 0, 0.75); - this.bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/horse/dyx.png")); - HorsePronter.reset(); - //HorsePronter.pose(HorsePronter.id_lfl, 0, System.currentTimeMillis() % 360 / 10D, 0); - double r = 60; - HorsePronter.pose(HorsePronter.id_body, 0, -r, 0); - HorsePronter.pose(HorsePronter.id_tail, 0, 45, 90); - HorsePronter.pose(HorsePronter.id_lbl, 0, -90 + r, 35); - HorsePronter.pose(HorsePronter.id_rbl, 0, -90 + r, -35); - HorsePronter.pose(HorsePronter.id_lfl, 0, r - 10, 5); - HorsePronter.pose(HorsePronter.id_rfl, 0, r - 10, -5); - HorsePronter.pose(HorsePronter.id_head, 0, r, 0); - HorsePronter.enableHorn(); - HorsePronter.enableWings(); - HorsePronter.pront(); - ItemStack stack = new ItemStack(ModItems.cigarette); - double scale = 0.25; - GL11.glTranslated(0.02, 1.13, -0.42); - GL11.glScaled(scale, scale, scale); - GL11.glRotated(90, 0, -1, 0); - GL11.glRotated(60, 0, 0, -1); - bindTexture(TextureMap.locationItemsTexture); - IIcon icon = stack.getIconIndex(); - float f14 = icon.getMinU(); - float f15 = icon.getMaxU(); - float f4 = icon.getMinV(); - float f5 = icon.getMaxV(); - ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F);*/ - - double speed = 100D; - double chewing = 200D; - double cy0 = Math.sin(System.currentTimeMillis() / speed % (Math.PI * 2)); - double cy1 = Math.sin(System.currentTimeMillis() / speed % (Math.PI * 2) - Math.PI * 0.5); - double cy2 = Math.sin(System.currentTimeMillis() / speed % (Math.PI * 2) - Math.PI); - double cy3 = Math.sin(System.currentTimeMillis() / speed % (Math.PI * 2) - Math.PI * 0.75); - - double cy4 = Math.sin(System.currentTimeMillis() / chewing % (Math.PI * 2)); - double cy5 = Math.sin(System.currentTimeMillis() / chewing % (Math.PI * 2) - Math.PI * 0.5); - - this.bindTexture(ResourceManager.glyphid_tex); - ResourceManager.glyphid.renderPart("Body"); - ResourceManager.glyphid.renderPart("ArmorFront"); - ResourceManager.glyphid.renderPart("ArmorLeft"); - ResourceManager.glyphid.renderPart("ArmorRight"); - - /// LEFT ARM /// - GL11.glPushMatrix(); - GL11.glTranslated(0.25, 0.625, 0.0625); - GL11.glRotated(10, 0, 1, 0); - GL11.glRotated(35 + cy1 * 20, 1, 0, 0); - GL11.glTranslated(-0.25, -0.625, -0.0625); - ResourceManager.glyphid.renderPart("ArmLeftUpper"); - GL11.glTranslated(0.25, 0.625, 0.4375); - GL11.glRotated(-75 - cy1 * 20 + cy0 * 20, 1, 0, 0); - GL11.glTranslated(-0.25, -0.625, -0.4375); - ResourceManager.glyphid.renderPart("ArmLeftMid"); - GL11.glTranslated(0.25, 0.625, 0.9375); - GL11.glRotated(90 - cy0 * 45, 1, 0, 0); - GL11.glTranslated(-0.25, -0.625, -0.9375); - ResourceManager.glyphid.renderPart("ArmLeftLower"); - ResourceManager.glyphid.renderPart("ArmLeftArmor"); - GL11.glPopMatrix(); - - /// RIGHT ARM /// - GL11.glPushMatrix(); - GL11.glTranslated(-0.25, 0.625, 0.0625); - GL11.glRotated(-10, 0, 1, 0); - GL11.glRotated(35 + cy2 * 20, 1, 0, 0); - GL11.glTranslated(0.25, -0.625, -0.0625); - ResourceManager.glyphid.renderPart("ArmRightUpper"); - GL11.glTranslated(-0.25, 0.625, 0.4375); - GL11.glRotated(-75 - cy2 * 20 + cy3 * 20, 1, 0, 0); - GL11.glTranslated(0.25, -0.625, -0.4375); - ResourceManager.glyphid.renderPart("ArmRightMid"); - GL11.glTranslated(-0.25, 0.625, 0.9375); - GL11.glRotated(90 - cy3 * 45, 1, 0, 0); - GL11.glTranslated(0.25, -0.625, -0.9375); - ResourceManager.glyphid.renderPart("ArmRightLower"); - ResourceManager.glyphid.renderPart("ArmRightArmor"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - - GL11.glTranslated(0, 0.5, 0.25); - GL11.glRotated(cy5 * 15 + 15, 0, 0, 1); - GL11.glTranslated(0, -0.5, -0.25); - - GL11.glPushMatrix(); - GL11.glTranslated(0, 0.5, 0.25); - GL11.glRotated(-7.5 - cy4 * 7.5, 1, 0, 0); - GL11.glTranslated(0, -0.5, -0.25); - ResourceManager.glyphid.renderPart("JawTop"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glTranslated(0, 0.5, 0.25); - GL11.glRotated(7.5 + cy4 * 7.5, 0, 1, 0); - GL11.glRotated(7.5 + cy4 * 7.5, 1, 0, 0); - GL11.glTranslated(0, -0.5, -0.25); - ResourceManager.glyphid.renderPart("JawLeft"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glTranslated(0, 0.5, 0.25); - GL11.glRotated(-7.5 - cy4 * 7.5, 0, 1, 0); - GL11.glRotated(7.5 + cy4 * 7.5, 1, 0, 0); - GL11.glTranslated(0, -0.5, -0.25); - ResourceManager.glyphid.renderPart("JawRight"); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - double steppy = 15; - double bend = 60; - - for(int i = 0; i < 3; i++) { - - double c0 = cy0 * (i == 1 ? -1 : 1); - double c1 = cy1 * (i == 1 ? -1 : 1); - - GL11.glPushMatrix(); - GL11.glTranslated(0, 0.25, 0); - GL11.glRotated(i * 30 - 15 + c0 * 7.5, 0, 1, 0); - GL11.glRotated(steppy + c1 * steppy, 0, 0, 1); - GL11.glTranslated(0, -0.25, 0); - ResourceManager.glyphid.renderPart("LegLeftUpper"); - GL11.glTranslated(0.5625, 0.25, 0); - GL11.glRotated(-bend - c1 * steppy, 0, 0, 1); - GL11.glTranslated(-0.5625, -0.25, 0); - ResourceManager.glyphid.renderPart("LegLeftLower"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glTranslated(0, 0.25, 0); - GL11.glRotated(i * 30 - 45 + c0 * 7.5, 0, 1, 0); - GL11.glRotated(-steppy + c1 * steppy, 0, 0, 1); - GL11.glTranslated(0, -0.25, 0); - ResourceManager.glyphid.renderPart("LegRightUpper"); - GL11.glTranslated(-0.5625, 0.25, 0); - GL11.glRotated(bend - c1 * steppy, 0, 0, 1); - GL11.glTranslated(0.5625, -0.25, 0); - ResourceManager.glyphid.renderPart("LegRightLower"); - GL11.glPopMatrix(); - } - - this.bindTexture(ResourceManager.universal); - GL11.glScaled(0.05, 0.05, 0.05); - ResourceManager.sphere_uv.renderAll(); + bindTexture(ResourceManager.universal); + pigeon.render(null, 0, 0, 0, 0, 0, 0.0625F); GL11.glPopMatrix(); } diff --git a/src/main/resources/assets/hbm/textures/entity/pigeon.png b/src/main/resources/assets/hbm/textures/entity/pigeon.png new file mode 100644 index 0000000000000000000000000000000000000000..b13a2ea56a9f0861cbf3acb4577b0cdbcfa48068 GIT binary patch literal 419 zcmV;U0bKrxP)q~sGELu!vO$0r;L|<@eghZ)Xy3YV^e*sfo<6#kzr@~%UA{bhieKhUG9fc61Ew@T>hI)6S}S{k zm42`N|AOKfU}iHQTmUmQz2!JVJOS%)^%LKnszdP%s0q*xKpT^~+HibVKT>@B(Oy^Q z4`6m6>`_mGSy2<99e_4!0<;6r#_YerTX8`ABp`DCO|s?ZH)EUw!^AG6wF9#7y!If6(`f&m4Ao1P&@-_ z0<;6r#%faYVV{R*c^^o;*M9TcE_zS6`5?45@fUInJMyMbyab9*z&8?CUcc=gp+*1z N002ovPDHLkV1gbnw)+48 literal 0 HcmV?d00001 From 1ba07217ec4e877f1a2afa9572316ebdced79f8a Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 23 Oct 2023 16:55:38 +0200 Subject: [PATCH 076/207] flying rats --- .../java/com/hbm/entity/EntityMappings.java | 2 +- .../java/com/hbm/entity/mob/EntityPigeon.java | 50 ++++++++++++++-- .../com/hbm/entity/mob/IFlyingCreature.java | 10 ++++ .../ai/EntityAIFlutterAroundAimlessly.java | 44 ++++++++++++++ .../mob/ai/EntityAIPanicConditional.java | 56 ++++++++++++++++++ .../entity/mob/ai/EntityAIStartFlying.java | 28 +++++++++ .../hbm/entity/mob/ai/EntityAIStopFlying.java | 27 +++++++++ .../mob/ai/EntityAISwimmingConditional.java | 36 ++++++++++++ .../mob/ai/EntityAIWanderConditional.java | 58 +++++++++++++++++++ .../hbm/render/entity/mob/RenderPigeon.java | 4 +- 10 files changed, 308 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/hbm/entity/mob/IFlyingCreature.java create mode 100644 src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java create mode 100644 src/main/java/com/hbm/entity/mob/ai/EntityAIPanicConditional.java create mode 100644 src/main/java/com/hbm/entity/mob/ai/EntityAIStartFlying.java create mode 100644 src/main/java/com/hbm/entity/mob/ai/EntityAIStopFlying.java create mode 100644 src/main/java/com/hbm/entity/mob/ai/EntityAISwimmingConditional.java create mode 100644 src/main/java/com/hbm/entity/mob/ai/EntityAIWanderConditional.java diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 4c69f8102..0b88e2b9b 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -239,7 +239,7 @@ public class EntityMappings { addMob(EntityMaskMan.class, "entity_mob_mask_man", 0x818572, 0xC7C1B7); addMob(EntityDuck.class, "entity_fucc_a_ducc", 0xd0d0d0, 0xFFBF00); addMob(EntityQuackos.class, "entity_elder_one", 0xd0d0d0, 0xFFBF00); - //addMob(EntityPigeon.class, "entity_pigeon", 0xd0d0d0, 0xFFBF00); + addMob(EntityPigeon.class, "entity_pigeon", 0xd0d0d0, 0xFFBF00); addMob(EntityFBI.class, "entity_ntm_fbi", 0x008000, 0x404040); addMob(EntityFBIDrone.class, "entity_ntm_fbi_drone", 0x008000, 0x404040); addMob(EntityRADBeast.class, "entity_ntm_radiation_blaze", 0x303030, 0x008000); diff --git a/src/main/java/com/hbm/entity/mob/EntityPigeon.java b/src/main/java/com/hbm/entity/mob/EntityPigeon.java index af1ac41e0..0c6253e02 100644 --- a/src/main/java/com/hbm/entity/mob/EntityPigeon.java +++ b/src/main/java/com/hbm/entity/mob/EntityPigeon.java @@ -1,14 +1,56 @@ package com.hbm.entity.mob; -import net.minecraft.entity.passive.EntityChicken; +import java.util.function.Predicate; + +import com.hbm.entity.mob.ai.EntityAIFlutterAroundAimlessly; +import com.hbm.entity.mob.ai.EntityAIStartFlying; +import com.hbm.entity.mob.ai.EntityAIStopFlying; +import com.hbm.entity.mob.ai.EntityAISwimmingConditional; +import com.hbm.entity.mob.ai.EntityAIWanderConditional; + +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAILookIdle; +import net.minecraft.entity.ai.EntityAIWatchClosest; +import net.minecraft.entity.passive.IAnimals; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -public class EntityPigeon extends EntityChicken { +public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAnimals { - public EntityPigeon(World p_i1682_1_) { - super(p_i1682_1_); + public EntityPigeon(World world) { + super(world); + Predicate noFlyCondition = x -> { return ((EntityPigeon) x).getFlyingState() == IFlyingCreature.STATE_WALKING; }; + this.tasks.addTask(0, new EntityAIStartFlying(this, this)); + this.tasks.addTask(0, new EntityAIStopFlying(this, this)); + this.tasks.addTask(1, new EntityAISwimmingConditional(this, noFlyCondition)); + this.tasks.addTask(2, new EntityAIFlutterAroundAimlessly(this, this)); + //this.tasks.addTask(2, new EntityAIPanicConditional(this, 1.4D, noFlyCondition)); + this.tasks.addTask(5, new EntityAIWanderConditional(this, 1.0D, noFlyCondition)); + this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); + this.tasks.addTask(7, new EntityAILookIdle(this)); + } + + @Override + public boolean isAIEnabled() { + return true; } + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(12, Byte.valueOf((byte) 0)); + } + + @Override + public int getFlyingState() { + return this.dataWatcher.getWatchableObjectByte(12); + } + + @Override + public void setFlyingState(int state) { + this.dataWatcher.updateObject(12, (byte) state); + } + protected String getLivingSound() { return null; } diff --git a/src/main/java/com/hbm/entity/mob/IFlyingCreature.java b/src/main/java/com/hbm/entity/mob/IFlyingCreature.java new file mode 100644 index 000000000..68bd8c36c --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/IFlyingCreature.java @@ -0,0 +1,10 @@ +package com.hbm.entity.mob; + +public interface IFlyingCreature { + + public static final int STATE_WALKING = 0; + public static final int STATE_FLYING = 1; + + public int getFlyingState(); + public void setFlyingState(int state); +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java new file mode 100644 index 000000000..98556f3aa --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java @@ -0,0 +1,44 @@ +package com.hbm.entity.mob.ai; + +import com.hbm.entity.mob.IFlyingCreature; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.ai.EntityAIBase; + +public class EntityAIFlutterAroundAimlessly extends EntityAIBase { + + private EntityLivingBase living; + private IFlyingCreature flying; + + public EntityAIFlutterAroundAimlessly(EntityLivingBase living, IFlyingCreature flying) { + this.living = living; + this.flying = flying; + } + + @Override + public boolean shouldExecute() { + return this.flying.getFlyingState() == this.flying.STATE_FLYING; + } + + @Override + public boolean continueExecuting() { + return shouldExecute(); + } + + @Override + public void startExecuting() { + + /*this.living.motionX = this.living.getRNG().nextGaussian() * 0.1; + this.living.motionY = this.living.getRNG().nextGaussian() * 0.1; + this.living.motionZ = this.living.getRNG().nextGaussian() * 0.1;*/ + + this.living.motionX = 0; + this.living.motionY = this.living.getRNG().nextGaussian() * 0.1; + this.living.motionZ = 0; + + if(living.onGround) this.living.motionY = Math.abs(this.living.motionY) + 0.1D; + + this.living.moveForward = 0.5F; + this.living.rotationYaw += this.living.getRNG().nextGaussian() * 0.1; + } +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIPanicConditional.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIPanicConditional.java new file mode 100644 index 000000000..71fa26e4d --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIPanicConditional.java @@ -0,0 +1,56 @@ +package com.hbm.entity.mob.ai; + +import java.util.function.Predicate; + +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.ai.RandomPositionGenerator; +import net.minecraft.util.Vec3; + +public class EntityAIPanicConditional extends EntityAIBase { + + private EntityCreature creature; + private double speed; + private Predicate condition; + private double randPosX; + private double randPosY; + private double randPosZ; + + public EntityAIPanicConditional(EntityCreature creature, double speed, Predicate condition) { + this.creature = creature; + this.speed = speed; + this.condition = condition; + this.setMutexBits(1); + } + + @Override + public boolean shouldExecute() { + + if(!condition.test(creature)) return false; + + if(this.creature.getAITarget() == null && !this.creature.isBurning()) { + return false; + } else { + Vec3 vec3 = RandomPositionGenerator.findRandomTarget(this.creature, 5, 4); + + if(vec3 == null) { + return false; + } else { + this.randPosX = vec3.xCoord; + this.randPosY = vec3.yCoord; + this.randPosZ = vec3.zCoord; + return true; + } + } + } + + @Override + public void startExecuting() { + this.creature.getNavigator().tryMoveToXYZ(this.randPosX, this.randPosY, this.randPosZ, this.speed); + } + + @Override + public boolean continueExecuting() { + return !this.creature.getNavigator().noPath() && condition.test(creature); + } +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIStartFlying.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIStartFlying.java new file mode 100644 index 000000000..2f8ffa66c --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIStartFlying.java @@ -0,0 +1,28 @@ +package com.hbm.entity.mob.ai; + +import com.hbm.entity.mob.IFlyingCreature; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.ai.EntityAIBase; + +public class EntityAIStartFlying extends EntityAIBase { + + private EntityLivingBase living; + private IFlyingCreature flying; + + public EntityAIStartFlying(EntityLivingBase living, IFlyingCreature flying) { + this.living = living; + this.flying = flying; + } + + @Override + public boolean shouldExecute() { + //take off if attacked, on fire or at random (avg 30s) + return this.flying.getFlyingState() == this.flying.STATE_WALKING && (this.living.getAITarget() != null || this.living.isBurning() || this.living.getRNG().nextInt(600) == 0); + } + + @Override + public void startExecuting() { + this.flying.setFlyingState(this.flying.STATE_FLYING); + } +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIStopFlying.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIStopFlying.java new file mode 100644 index 000000000..6f8dadee5 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIStopFlying.java @@ -0,0 +1,27 @@ +package com.hbm.entity.mob.ai; + +import com.hbm.entity.mob.IFlyingCreature; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.ai.EntityAIBase; + +public class EntityAIStopFlying extends EntityAIBase { + + private EntityLivingBase living; + private IFlyingCreature flying; + + public EntityAIStopFlying(EntityLivingBase living, IFlyingCreature flying) { + this.living = living; + this.flying = flying; + } + + @Override + public boolean shouldExecute() { + return this.flying.getFlyingState() == this.flying.STATE_FLYING && this.living.getRNG().nextInt(200) == 0; + } + + @Override + public void startExecuting() { + this.flying.setFlyingState(this.flying.STATE_WALKING); + } +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAISwimmingConditional.java b/src/main/java/com/hbm/entity/mob/ai/EntityAISwimmingConditional.java new file mode 100644 index 000000000..1f2e3c18a --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAISwimmingConditional.java @@ -0,0 +1,36 @@ +package com.hbm.entity.mob.ai; + +import java.util.function.Predicate; + +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.ai.EntityAIBase; + +/** + * Identical to EntityAISwimming, but with an added conditional lambda for maximum reusability. + * + * @author hbm + */ +public class EntityAISwimmingConditional extends EntityAIBase { + + private EntityLiving living; + private Predicate condition; + + public EntityAISwimmingConditional(EntityLiving living, Predicate condition) { + this.living = living; + this.condition = condition; + this.setMutexBits(4); + living.getNavigator().setCanSwim(true); + } + + @Override + public boolean shouldExecute() { + return (this.living.isInWater() || this.living.handleLavaMovement()) && condition.test(living); + } + + @Override + public void updateTask() { + if(this.living.getRNG().nextFloat() < 0.8F) { + this.living.getJumpHelper().setJumping(); + } + } +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIWanderConditional.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIWanderConditional.java new file mode 100644 index 000000000..6132468eb --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIWanderConditional.java @@ -0,0 +1,58 @@ +package com.hbm.entity.mob.ai; + +import java.util.function.Predicate; + +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.ai.RandomPositionGenerator; +import net.minecraft.util.Vec3; + +public class EntityAIWanderConditional extends EntityAIBase { + + private EntityCreature creature; + private double speed; + private Predicate condition; + private double xPosition; + private double yPosition; + private double zPosition; + + public EntityAIWanderConditional(EntityCreature creature, double speed, Predicate condition) { + this.creature = creature; + this.speed = speed; + this.condition = condition; + this.setMutexBits(1); + } + + @Override + public boolean shouldExecute() { + + if(!condition.test(creature)) return false; + + if(this.creature.getAge() >= 100) { + return false; + } else if(this.creature.getRNG().nextInt(120) != 0) { + return false; + } else { + Vec3 vec3 = RandomPositionGenerator.findRandomTarget(this.creature, 10, 7); + + if(vec3 == null) { + return false; + } else { + this.xPosition = vec3.xCoord; + this.yPosition = vec3.yCoord; + this.zPosition = vec3.zCoord; + return true; + } + } + } + + @Override + public boolean continueExecuting() { + return !this.creature.getNavigator().noPath() && condition.test(creature); + } + + @Override + public void startExecuting() { + this.creature.getNavigator().tryMoveToXYZ(this.xPosition, this.yPosition, this.zPosition, this.speed); + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java b/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java index a825a0b3b..0c92d178d 100644 --- a/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java +++ b/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java @@ -4,11 +4,11 @@ import com.hbm.entity.mob.EntityPigeon; import com.hbm.lib.RefStrings; import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderChicken; +import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; -public class RenderPigeon extends RenderChicken { +public class RenderPigeon extends RenderLiving { public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/entity/pigeon.png"); From eb602d27078ab42bfd501039d4eebd26c0618d6e Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 23 Oct 2023 21:23:23 +0200 Subject: [PATCH 077/207] wretched abominations --- changelog | 27 -------- .../java/com/hbm/entity/mob/EntityPigeon.java | 63 +++++++++++++++++- .../ai/EntityAIFlutterAroundAimlessly.java | 9 --- .../hbm/render/entity/mob/RenderPigeon.java | 13 ++++ .../com/hbm/render/model/ModelPigeon.java | 1 - .../assets/hbm/textures/entity/pigeon.png | Bin 419 -> 748 bytes 6 files changed, 75 insertions(+), 38 deletions(-) diff --git a/changelog b/changelog index f42f79ddf..e69de29bb 100644 --- a/changelog +++ b/changelog @@ -1,27 +0,0 @@ -## Added -* Plastic bag - * Rarely spawns in water with similar spawn conditions as squids - * Will slowly drift into random directions - * Can be picked up, the resulting item can be used like a backpack that stores one item - -## Changed -* Updated chinese localization -* Tweaked certain assembler recipes - * Some welded plate requirements have been lowered - * The plasma heater now requires slightly more resources, but yields 4 blocks per operation instead of 1 -* The fractioning tower now requires welded plates, but the total steel cost has been reduced by roughly a third -* The cyclotron now has three automation ports on each side, corresponding with the colors of the three input pairs -* Updated the PWR sound - -## Fixed -* Fixed multi fluid ID's search not behaving correctly -* Fixed jetpack's description using unlocalized fluid names -* Fixed the CM structure wand being broken when used in most directions -* Fixed the custom machine recipe handler using the original references to the output stacks, causing the chance percentage indicator getting stuck on the actual outputs -* Fixed the desh suit's boot models not being separated from the legs -* Fixed dupe caused by defusing TNT-like blocks -* Fixed containment box being able to contain itself when using the number keys, crashing the game -* Fixed a critical game-breaking error where the custom tool's ability toggle is misspelled -* (Hopefully) fixed the vampire ability not firing the onDeath event, causing the target to not drop any items and any death releated events to not happen -* Fixed water creatures vomitting when irradiated, when they logically shouldn't -* Fixed arc welder recipe template file not being generated properly \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/mob/EntityPigeon.java b/src/main/java/com/hbm/entity/mob/EntityPigeon.java index 0c6253e02..9f3ede27e 100644 --- a/src/main/java/com/hbm/entity/mob/EntityPigeon.java +++ b/src/main/java/com/hbm/entity/mob/EntityPigeon.java @@ -16,6 +16,12 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAnimals { + + public float fallTime; + public float dest; + public float prevDest; + public float prevFallTime; + public float offGroundTimer = 1.0F; public EntityPigeon(World world) { super(world); @@ -25,9 +31,10 @@ public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAn this.tasks.addTask(1, new EntityAISwimmingConditional(this, noFlyCondition)); this.tasks.addTask(2, new EntityAIFlutterAroundAimlessly(this, this)); //this.tasks.addTask(2, new EntityAIPanicConditional(this, 1.4D, noFlyCondition)); - this.tasks.addTask(5, new EntityAIWanderConditional(this, 1.0D, noFlyCondition)); + this.tasks.addTask(5, new EntityAIWanderConditional(this, 0.2D, noFlyCondition)); this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); this.tasks.addTask(7, new EntityAILookIdle(this)); + this.setSize(0.5F, 1.0F); } @Override @@ -62,4 +69,58 @@ public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAn protected String getDeathSound() { return null; } + + @Override + protected void updateAITasks() { + super.updateAITasks(); + + if(this.getFlyingState() == this.STATE_FLYING) { + int height = worldObj.getHeightValue((int) Math.floor(posX), (int) Math.floor(posZ)); + + boolean ceil = posY - height > 10; + + this.motionY = this.getRNG().nextGaussian() * 0.05 + (ceil ? 0 : 0.04) + (this.isInWater() ? 0.2 : 0); + + if(onGround) this.motionY = Math.abs(this.motionY) + 0.1D; + + this.moveForward = 1.5F; + if(this.getRNG().nextInt(20) == 0) this.rotationYaw += this.getRNG().nextGaussian() * 30; + } else if(!this.onGround && this.motionY < 0.0D) { + this.motionY *= 0.8D; + } + } + + @Override + public void onLivingUpdate() { + super.onLivingUpdate(); + this.prevFallTime = this.fallTime; + this.prevDest = this.dest; + this.dest = (float) ((double) this.dest + (double) (this.onGround ? -1 : 4) * 0.3D); + + if(this.dest < 0.0F) { + this.dest = 0.0F; + } + + if(this.dest > 1.0F) { + this.dest = 1.0F; + } + + if(!this.onGround && this.offGroundTimer < 1.0F) { + this.offGroundTimer = 1.0F; + } + + this.offGroundTimer = (float) ((double) this.offGroundTimer * 0.9D); + + if(!this.onGround && this.motionY < 0.0D) { + this.motionY *= 0.6D; + } + + this.fallTime += this.offGroundTimer * 2.0F; + } + + @Override public boolean doesEntityNotTriggerPressurePlate() { return true; } + @Override protected boolean canTriggerWalking() { return false; } + + @Override protected void fall(float p_70069_1_) { } + @Override protected void updateFallState(double p_70064_1_, boolean p_70064_3_) { } } diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java index 98556f3aa..d72bc7d4c 100644 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java @@ -31,14 +31,5 @@ public class EntityAIFlutterAroundAimlessly extends EntityAIBase { /*this.living.motionX = this.living.getRNG().nextGaussian() * 0.1; this.living.motionY = this.living.getRNG().nextGaussian() * 0.1; this.living.motionZ = this.living.getRNG().nextGaussian() * 0.1;*/ - - this.living.motionX = 0; - this.living.motionY = this.living.getRNG().nextGaussian() * 0.1; - this.living.motionZ = 0; - - if(living.onGround) this.living.motionY = Math.abs(this.living.motionY) + 0.1D; - - this.living.moveForward = 0.5F; - this.living.rotationYaw += this.living.getRNG().nextGaussian() * 0.1; } } diff --git a/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java b/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java index 0c92d178d..8acc1a550 100644 --- a/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java +++ b/src/main/java/com/hbm/render/entity/mob/RenderPigeon.java @@ -6,6 +6,8 @@ import com.hbm.lib.RefStrings; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; public class RenderPigeon extends RenderLiving { @@ -23,4 +25,15 @@ public class RenderPigeon extends RenderLiving { protected ResourceLocation getEntityTexture(EntityPigeon entity) { return texture; } + + protected float handleRotationFloat(EntityPigeon entity, float interp) { + float f1 = entity.prevFallTime + (entity.fallTime - entity.prevFallTime) * interp; + float f2 = entity.prevDest + (entity.dest - entity.prevDest) * interp; + return (MathHelper.sin(f1) + 1.0F) * f2; + } + + @Override + protected float handleRotationFloat(EntityLivingBase entity, float interp) { + return this.handleRotationFloat((EntityPigeon) entity, interp); + } } diff --git a/src/main/java/com/hbm/render/model/ModelPigeon.java b/src/main/java/com/hbm/render/model/ModelPigeon.java index 0f652efa2..f1e9f70e4 100644 --- a/src/main/java/com/hbm/render/model/ModelPigeon.java +++ b/src/main/java/com/hbm/render/model/ModelPigeon.java @@ -67,7 +67,6 @@ public class ModelPigeon extends ModelBase { } public void render(Entity entity, float f0, float f1, float f2, float f3, float f4, float scale) { - //this.initModel(); this.setRotationAngles(f0, f1, f2, f3, f4, scale, entity); this.head.render(scale); this.beak.render(scale); diff --git a/src/main/resources/assets/hbm/textures/entity/pigeon.png b/src/main/resources/assets/hbm/textures/entity/pigeon.png index b13a2ea56a9f0861cbf3acb4577b0cdbcfa48068..020c3b9b9e9d618abf0df504186112b6e4ee8d62 100644 GIT binary patch delta 709 zcmV;$0y_Pp1MCHmGk*f3Nkl73QgA#i-VTp5SmtN zmvoRUb(Idq?t)OT5Gc4f1SeO!q#c?iiIzwe1^+A(I_nTGcefHG5{!63SH;9O{m|6#kU0jz~SL{0KokGk|RZC=2HLURtk>f*k#P_ z0!b2?B#A6@HwyqrB&Lx_Ohb}HW{e5|xWE09Y}RXJBbH?4l{M422FHcLabdgaIL3Aa zXgh9vb_ySW@qYjiGUmLI^gVrOpPYU^%fG-0fTh$eS8_He2aKue5wynbtYSSg`@g@Q znFY7Aiq1L4<`z6Z4xS%(O$CQ6Pm~FQzOTgkrC2Etzl)u2*uE0GXpFoAdP;$d zl=DVRXKQ+4x$D7S-QTl1kB#en{dZ>wQr8(c@0S~EHg?4P(e7?cv+UA$TAc~Ha?A2_xC_)6jX?sj927eP-M{<1q1a? raH9|+igIe?fbaHMjC>t1@(%b5zdZorc)&!+00000NkvXXu0mjfzr{>f delta 377 zcmV-<0fzqU1)~FyGk*bENklq~sGELu!vO$0r;L|<@eghZ)Xy3YV^e*sfo<6#kzr@~%U4OnjeTrY^O)?=fDg&l8 zKkDz~Mp`R-f|Y)+{r`gE8DM5JAY1@5HNE9HLp%ZNaP<@4ovK6e45$gv4nP}|y4rAj zS3gpG{Lx-l=MP|ZAnZ|3f>}`$pdElVY67$a(8lb)!CP@a{3Pf=Xu50Uzh`x*3`o`a z9;tf&n6~q|d2+Cq1(pky0l6Re3X|0GUV$FPGoU6wI{oNW9m6^V=?ZPq_IYv^Mb Date: Thu, 26 Oct 2023 18:20:15 +0200 Subject: [PATCH 078/207] fat pigeons --- .../java/com/hbm/entity/EntityMappings.java | 2 +- .../java/com/hbm/entity/mob/EntityPigeon.java | 70 ++++++++++++++++- .../hbm/entity/mob/ai/EntityAIEatBread.java | 71 ++++++++++++++++++ .../ai/EntityAIFlutterAroundAimlessly.java | 35 --------- .../mob/ai/EntityAIMaskmanCasualApproach.java | 1 - .../com/hbm/render/model/ModelPigeon.java | 38 +++++++--- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../assets/hbm/textures/entity/pigeon.png | Bin 748 -> 771 bytes 9 files changed, 170 insertions(+), 49 deletions(-) create mode 100644 src/main/java/com/hbm/entity/mob/ai/EntityAIEatBread.java delete mode 100644 src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 0b88e2b9b..2323d4dd6 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -239,7 +239,7 @@ public class EntityMappings { addMob(EntityMaskMan.class, "entity_mob_mask_man", 0x818572, 0xC7C1B7); addMob(EntityDuck.class, "entity_fucc_a_ducc", 0xd0d0d0, 0xFFBF00); addMob(EntityQuackos.class, "entity_elder_one", 0xd0d0d0, 0xFFBF00); - addMob(EntityPigeon.class, "entity_pigeon", 0xd0d0d0, 0xFFBF00); + addMob(EntityPigeon.class, "entity_pigeon", 0xC8C9CD, 0x858894); addMob(EntityFBI.class, "entity_ntm_fbi", 0x008000, 0x404040); addMob(EntityFBIDrone.class, "entity_ntm_fbi_drone", 0x008000, 0x404040); addMob(EntityRADBeast.class, "entity_ntm_radiation_blaze", 0x303030, 0x008000); diff --git a/src/main/java/com/hbm/entity/mob/EntityPigeon.java b/src/main/java/com/hbm/entity/mob/EntityPigeon.java index 9f3ede27e..ec93d403c 100644 --- a/src/main/java/com/hbm/entity/mob/EntityPigeon.java +++ b/src/main/java/com/hbm/entity/mob/EntityPigeon.java @@ -2,17 +2,24 @@ package com.hbm.entity.mob; import java.util.function.Predicate; -import com.hbm.entity.mob.ai.EntityAIFlutterAroundAimlessly; +import com.hbm.entity.mob.ai.EntityAIEatBread; import com.hbm.entity.mob.ai.EntityAIStartFlying; import com.hbm.entity.mob.ai.EntityAIStopFlying; import com.hbm.entity.mob.ai.EntityAISwimmingConditional; import com.hbm.entity.mob.ai.EntityAIWanderConditional; +import net.minecraft.block.Block; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAIWatchClosest; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.passive.IAnimals; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAnimals { @@ -29,14 +36,37 @@ public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAn this.tasks.addTask(0, new EntityAIStartFlying(this, this)); this.tasks.addTask(0, new EntityAIStopFlying(this, this)); this.tasks.addTask(1, new EntityAISwimmingConditional(this, noFlyCondition)); - this.tasks.addTask(2, new EntityAIFlutterAroundAimlessly(this, this)); - //this.tasks.addTask(2, new EntityAIPanicConditional(this, 1.4D, noFlyCondition)); + this.tasks.addTask(2, new EntityAIEatBread(this, 0.4D)); this.tasks.addTask(5, new EntityAIWanderConditional(this, 0.2D, noFlyCondition)); this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); this.tasks.addTask(7, new EntityAILookIdle(this)); this.setSize(0.5F, 1.0F); } + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + + if(amount >= this.getMaxHealth() * 2 && !worldObj.isRemote) { + this.setDead(); + + for(int i = 0; i < 10; i++) { + Vec3 vec = Vec3.createVectorHelper(rand.nextGaussian(), rand.nextGaussian(), rand.nextGaussian()).normalize(); + + EntityItem feather = new EntityItem(worldObj); + feather.setEntityItemStack(new ItemStack(Items.feather)); + feather.setPosition(posX + vec.xCoord, posY + height / 2D + vec.yCoord, posZ + vec.zCoord); + feather.motionX = vec.xCoord * 0.5; + feather.motionY = vec.yCoord * 0.5; + feather.motionZ = vec.zCoord * 0.5; + worldObj.spawnEntityInWorld(feather); + } + + return true; + } + + return super.attackEntityFrom(source, amount); + } + @Override public boolean isAIEnabled() { return true; @@ -46,6 +76,32 @@ public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAn protected void entityInit() { super.entityInit(); this.dataWatcher.addObject(12, Byte.valueOf((byte) 0)); + this.dataWatcher.addObject(13, Byte.valueOf((byte) 0)); + } + + @Override + protected Item getDropItem() { + return Items.feather; + } + + @Override + protected void func_145780_a(int x, int y, int z, Block block) { + this.playSound("mob.chicken.step", 0.15F, 1.0F); + } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + int j = this.rand.nextInt(3) + this.rand.nextInt(1 + looting); + + for(int k = 0; k < j; ++k) { + this.dropItem(Items.feather, 1); + } + + if(this.isBurning()) { + this.dropItem(Items.cooked_chicken, this.isFat() ? 3 : 1); + } else { + this.dropItem(Items.chicken, this.isFat() ? 3 : 1); + } } @Override @@ -58,6 +114,14 @@ public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAn this.dataWatcher.updateObject(12, (byte) state); } + public boolean isFat() { + return this.dataWatcher.getWatchableObjectByte(13) == 1; + } + + public void setFat(boolean fat) { + this.dataWatcher.updateObject(13, (byte) (fat ? 1 : 0)); + } + protected String getLivingSound() { return null; } diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIEatBread.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIEatBread.java new file mode 100644 index 000000000..491179711 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIEatBread.java @@ -0,0 +1,71 @@ +package com.hbm.entity.mob.ai; + +import java.util.List; + +import com.hbm.entity.mob.EntityPigeon; + +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class EntityAIEatBread extends EntityAIBase { + + private EntityPigeon pigeon; + private double speed; + private EntityItem item; + + public EntityAIEatBread(EntityPigeon pigeon, double speed) { + this.pigeon = pigeon; + this.speed = speed; + this.setMutexBits(3); + } + + @Override + public boolean shouldExecute() { + if(pigeon.isFat() || pigeon.getFlyingState() != pigeon.STATE_WALKING) return false; + + List items = pigeon.worldObj.getEntitiesWithinAABB(EntityItem.class, this.pigeon.boundingBox.expand(10, 10, 10)); + + for(EntityItem item : items) { + if(item.getEntityItem().getItem() == Items.bread) { + this.item = item; + return true; + } + } + + return false; + } + + @Override + public boolean continueExecuting() { + return this.item != null && !this.item.isDead && this.shouldExecute(); + } + + @Override + public void updateTask() { + this.pigeon.getLookHelper().setLookPositionWithEntity(this.item, 30.0F, (float) this.pigeon.getVerticalFaceSpeed()); + + if(this.pigeon.getDistanceToEntity(this.item) > 1) { + this.pigeon.getNavigator().tryMoveToEntityLiving(this.item, this.speed); + } else { + + if(this.pigeon.getRNG().nextInt(3) == 0) { + ItemStack stack = this.item.getEntityItem(); + + if(stack.stackSize > 1) { + stack.stackSize--; + EntityItem newItem = new EntityItem(this.pigeon.worldObj); + newItem.setPosition(this.item.posX, this.item.posY, this.item.posZ); + newItem.setEntityItemStack(stack); + this.pigeon.worldObj.spawnEntityInWorld(newItem); + } + + this.item.setDead(); + } + this.pigeon.setFat(true); + this.pigeon.playSound("random.eat", 0.5F + 0.5F * this.pigeon.getRNG().nextInt(2), (this.pigeon.getRNG().nextFloat() - this.pigeon.getRNG().nextFloat()) * 0.2F + 1.0F); + } + } + +} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java deleted file mode 100644 index d72bc7d4c..000000000 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIFlutterAroundAimlessly.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.hbm.entity.mob.ai; - -import com.hbm.entity.mob.IFlyingCreature; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.ai.EntityAIBase; - -public class EntityAIFlutterAroundAimlessly extends EntityAIBase { - - private EntityLivingBase living; - private IFlyingCreature flying; - - public EntityAIFlutterAroundAimlessly(EntityLivingBase living, IFlyingCreature flying) { - this.living = living; - this.flying = flying; - } - - @Override - public boolean shouldExecute() { - return this.flying.getFlyingState() == this.flying.STATE_FLYING; - } - - @Override - public boolean continueExecuting() { - return shouldExecute(); - } - - @Override - public void startExecuting() { - - /*this.living.motionX = this.living.getRNG().nextGaussian() * 0.1; - this.living.motionY = this.living.getRNG().nextGaussian() * 0.1; - this.living.motionZ = this.living.getRNG().nextGaussian() * 0.1;*/ - } -} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanCasualApproach.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanCasualApproach.java index 058f9211c..06ff8e598 100644 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanCasualApproach.java +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanCasualApproach.java @@ -93,7 +93,6 @@ public class EntityAIMaskmanCasualApproach extends EntityAIBase { EntityLivingBase entitylivingbase = this.attacker.getAttackTarget(); this.attacker.getLookHelper().setLookPositionWithEntity(entitylivingbase, 30.0F, 30.0F); double d0 = this.attacker.getDistanceSq(entitylivingbase.posX, entitylivingbase.boundingBox.minY, entitylivingbase.posZ); - double d1 = (double) (this.attacker.width * 2.0F * this.attacker.width * 2.0F + entitylivingbase.width); this.pathTimer--; diff --git a/src/main/java/com/hbm/render/model/ModelPigeon.java b/src/main/java/com/hbm/render/model/ModelPigeon.java index f1e9f70e4..14c4dc3ac 100644 --- a/src/main/java/com/hbm/render/model/ModelPigeon.java +++ b/src/main/java/com/hbm/render/model/ModelPigeon.java @@ -1,5 +1,7 @@ package com.hbm.render.model; +import com.hbm.entity.mob.EntityPigeon; + import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; @@ -24,14 +26,12 @@ public class ModelPigeon extends ModelBase { private void initModel() { - boolean fat = false; - this.head = new ModelRenderer(this, 0, 0); this.head.addBox(-2F, -6F, -2F, 4, 6, 4); - this.head.setRotationPoint(0F, 16F, -2F - (fat ? 2F : 0F)); + this.head.setRotationPoint(0F, 16F, -2F); this.beak = new ModelRenderer(this, 14, 0); this.beak.addBox(-1F, -4F, -4F, 2, 2, 2); - this.beak.setRotationPoint(0F, 16F, -2F - (fat ? 2F : 0F)); + this.beak.setRotationPoint(0F, 16F, -2F); this.body = new ModelRenderer(this, 0, 10); this.body.addBox(-3F, -3F, -4F, 6, 6, 8, 0); @@ -41,10 +41,10 @@ public class ModelPigeon extends ModelBase { this.bodyFat.setRotationPoint(0F, 17F, 0F); this.ass = new ModelRenderer(this, 0, 24); this.ass.addBox(-2F, -2F, -2F, 4, 4, 4); - this.ass.setRotationPoint(0F, 20F, 4F + (fat ? 1F : 0F)); + this.ass.setRotationPoint(0F, 20F, 4F); this.feathers = new ModelRenderer(this, 16, 24); this.feathers.addBox(-1F, -0.5F, -2F, 2, 1, 4); - this.feathers.setRotationPoint(0F, 21.5F, 7.5F + (fat ? 1F : 0F)); + this.feathers.setRotationPoint(0F, 21.5F, 7.5F); this.leftLeg = new ModelRenderer(this, 20, 0); this.leftLeg.addBox(-1F, 0F, 0F, 2, 4, 2); @@ -55,10 +55,10 @@ public class ModelPigeon extends ModelBase { this.leftWing = new ModelRenderer(this, 28, 0); this.leftWing.addBox(0F, 0F, -3F, 1, 4, 6); - this.leftWing.setRotationPoint(3F + (fat ? 1F : 0F), -2F, 0F); + this.leftWing.setRotationPoint(3F, -2F, 0F); this.rightWing = new ModelRenderer(this, 28, 10); this.rightWing.addBox(-1F, 0F, -3F, 1, 4, 6); - this.rightWing.setRotationPoint(-3F - (fat ? 1F : 0F), -2F, 0F); + this.rightWing.setRotationPoint(-3F, -2F, 0F); this.body.addChild(this.leftWing); this.body.addChild(this.rightWing); @@ -70,7 +70,11 @@ public class ModelPigeon extends ModelBase { this.setRotationAngles(f0, f1, f2, f3, f4, scale, entity); this.head.render(scale); this.beak.render(scale); - this.body.render(scale); + if(((EntityPigeon) entity).isFat()) { + this.bodyFat.render(scale); + } else { + this.body.render(scale); + } this.rightLeg.render(scale); this.leftLeg.render(scale); this.ass.render(scale); @@ -86,5 +90,21 @@ public class ModelPigeon extends ModelBase { this.leftLeg.rotateAngleX = MathHelper.cos(walkLoop * 0.6662F + (float) Math.PI) * 1.4F * legAmplitude; this.rightWing.rotateAngleZ = armSwing; this.leftWing.rotateAngleZ = -armSwing; + + if(((EntityPigeon) entity).isFat()) { + this.head.rotationPointZ = -4F; + this.beak.rotationPointZ = -4F; + this.ass.rotationPointZ = 5F; + this.feathers.rotationPointZ = 8.5F; + this.leftWing.rotationPointX = 4F; + this.rightWing.rotationPointX = -4F; + } else { + this.head.rotationPointZ = -2F; + this.beak.rotationPointZ = -2F; + this.ass.rotationPointZ = 4F; + this.feathers.rotationPointZ = 7.5F; + this.leftWing.rotationPointX = 3F; + this.rightWing.rotationPointX = -3F; + } } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a3ef04578..965112337 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -537,6 +537,7 @@ entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper entity.entity_mob_phosgene_creeper.name=Phosgen-Creeper entity.entity_mob_tainted_creeper.name=Verseuchter Creeper entity.entity_mob_volatile_creeper.name=Instabiler Creeper +entity.entity_pigeon.name=Taube entity.entity_plastic_bag.name=Plastiktüte entity.entity_taint_crab.name=Verseuchte Krabbe entity.entity_tesla_crab.name=Tesla-Krabbe diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 7dfece34c..3a45eb795 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1050,6 +1050,7 @@ entity.entity_mob_nuclear_creeper.name=Nuclear Creeper entity.entity_mob_phosgene_creeper.name=Phosgene Creeper entity.entity_mob_tainted_creeper.name=Tainted Creeper entity.entity_mob_volatile_creeper.name=Volatile Creeper +entity.entity_pigeon.name=Pigeon entity.entity_plastic_bag.name=Plastic Bag entity.entity_taint_crab.name=Taint Crab entity.entity_tesla_crab.name=Tesla Crab diff --git a/src/main/resources/assets/hbm/textures/entity/pigeon.png b/src/main/resources/assets/hbm/textures/entity/pigeon.png index 020c3b9b9e9d618abf0df504186112b6e4ee8d62..94ccc073f6a5fef04177fdd1c6f8d6f1994aaf79 100644 GIT binary patch delta 731 zcmV<10wn$H1%n2VG=I8DL_t(&f#q0DXcIvc{#KVNXk&7ju`!4C<|PL&77?i}l?Y0T zLPS$6cq$Yw@t_fR zH|b`x*`GGwDU*5g_PuZ3+xd1lXpmd_!2Tc4r5>y1Zzsk%0Dm|dKCZG`7IK`{7XYN= zBkaxVMNH&{s`C{@BQXX5sZ4T9yJmxLbYbdw5&&@P?gIe8vXHYBNOy0~AHSKTB|m1d z%j^P45}724EP5&i02mt`#@OgEBuQl2ssMn~v-i1)yugiz!Ymyh(al%j_xs@Y`^<)8 z8Kx_svg6v{R(}z2A$b7c7vH{D?aJonhRPs%_CnQ#=gwaO0Gv2>xG6pB8Ue-P*M9?= zxrWQr0`APb1OQwgJc&m`VaSntwg=MIw%hh+R0B6X`?O|X)`Ow=8B-Myjl@`YZx5DU zyu!sRg9!M2s^r(#H}L&O2~Qr*pkfEucRKLjieK#TyMJxKmr5&c$KWdXa*GpS*jI_k zDO2x=n>VgD)T^FVf?b^*@@Fk^oj$%8QpYk==RCd%WsOvs}Yu~3Dv+_?{f^h>4Ux_t} zR3^z)#Ey~ZaY7WCz7pGMXn6waYJr{9^IGW6*1rCMEf4YdOGA;c-l-y}W0+ttwWI-unV_zgqU>zJhgvabLD N002ovPDHLkV1i2!UdR9d delta 708 zcmV;#0z3VK2J8ipG=HN>L_t(&f#sM#XcJK!$G@)x6vXsyd1qn@P1g{MgO=hDnpSI< zbdW4{l@7)3f>5v!D7ZKTCs(_q9hxPHmPi!^|11(Z>kuz@w&e;o)}x!2JA@BSmKBQvc*u3XbI1Wz6mZ zNfMbPi7azB3jjzYrjbZYLy|;hj0ym_zx|SI)@x)VmSp9XHPg5T$A!UhVY})$#&!f~ zJ8pb-3Lk*+0DllN=Dd;gJ$-1OoPIvbzrYEArPM7~ayBRjjH&7ow8rhMVm&kazrUWD z1-G+`&N;^B7Cb)=o*#EjUayc>uXnpffEAA(KCl%5nZ+!dnM;A=!r-;mVR*B7gl0=c zv!$ZdQt|oS0RZn#hfrHpy^uRJgxW5K@h~#-5n!2Dxqq#^t#`!JCy)Ee)q$-9G+1X2Y8JviW)IVu!QSXF|h za+Ud730h6~wp2a6)n2Jw878{Vo29$<`W5z6vzXaeiA)t|K5TX$X(FkrP zZ?GRf>wo92(ROrD=;=OyT)m>}v-WRKlnH{quf+PLSSb*{i=A%Rz7o4=jJyMSN`Z@% z^F~Z(YkFb1>%m{$-?KW8jq82=cV`z<1W+nC5=d!O*H;wLkvy+4J3w&g0Aa`-AUJlw zb^RB$Z;s@74M{I7GfD+eK{(fVS(c&5G89ENjXhQO_dsbBREV04SL9z%WYHJ}1NBaD qqYxsBa%$v&@Ag@Yd>t_I4)_bdJpkf(z(mLZ0000r6NR From 682703eec079a3d82d299b37cde928f25d24c11c Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 27 Oct 2023 14:15:46 +0200 Subject: [PATCH 079/207] tweaks --- changelog | 14 ++++++++++ src/main/java/api/hbm/energy/PowerNet.java | 5 ++++ src/main/java/api/hbm/fluid/PipeNet.java | 5 ++++ .../java/com/hbm/config/GeneralConfig.java | 2 ++ .../java/com/hbm/crafting/ToolRecipes.java | 28 +++++++++---------- .../inventory/material/MatDistribution.java | 4 +-- .../hbm/inventory/recipes/CokerRecipes.java | 2 +- .../com/hbm/items/special/ItemBedrockOre.java | 4 ++- src/main/java/com/hbm/lib/HbmWorldGen.java | 8 +++++- .../com/hbm/world/feature/BedrockOre.java | 11 +++++++- src/main/resources/assets/hbm/lang/de_DE.lang | 2 ++ src/main/resources/assets/hbm/lang/en_US.lang | 2 ++ 12 files changed, 67 insertions(+), 20 deletions(-) diff --git a/changelog b/changelog index e69de29bb..043b6d8a8 100644 --- a/changelog +++ b/changelog @@ -0,0 +1,14 @@ +## Added +* Pigeons + +## Changed +* Changed many tool recipes that exclusively used polymer to now also accept bakelite +* Reduced the value of hematite and malachite blocks in the crucible down to one ingot + * Hematite veins are still giant, so a single vein will still yield many stacks of iron + * Malachite's rebalance was done to be consistent with the bedrock ores which now exist. Malachite veins are now larger to compensate. +* 1000mB of red mud now makes one ingot of iron in the coker +* Doubled coal bedrock ore's coal output to 8 coal +* A new config option now replaces the iron and copper bedrock ores in 528 mode with hematite and malachite + +## Fixed +* Pipe and power networks now force the chunk to be saved on transfer, ensuring that rapid changes in the fluid/energy level aren't lost when the tile entity is unloaded \ No newline at end of file diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index a2165b49b..83c84d33a 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -198,6 +198,11 @@ public class PowerNet implements IPowerNet { long given = (long) Math.floor(fraction * power); totalGiven += (given - con.transferPower(given)); + + if(con instanceof TileEntity) { + TileEntity tile = (TileEntity) con; + tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); + } } power -= totalGiven; diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java index 412af45c5..cab1fd29f 100644 --- a/src/main/java/api/hbm/fluid/PipeNet.java +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -132,6 +132,11 @@ public class PipeNet implements IPipeNet { if(given > 0) { totalGiven += (given - con.transferFluid(type, pressure, given)); + + if(con instanceof TileEntity) { + TileEntity tile = (TileEntity) con; + tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); + } if(trackingInstances != null) { for(int j = 0; j < trackingInstances.size(); j++) { diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 5b279421c..0c39c8180 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -42,6 +42,7 @@ public class GeneralConfig { public static boolean enable528BedrockDeposit = true; public static boolean enable528BedrockSpawn = false; public static boolean enable528BosniaSimulator = true; + public static boolean enable528BedrockReplacement = true; public static int coltanRate = 2; public static int bedrockRate = 50; @@ -108,6 +109,7 @@ public class GeneralConfig { enable528BedrockDeposit = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBedrockDepsoit", "Enables bedrock coltan ores in the coltan deposit. These ores can be drilled to extract infinite coltan, albeit slowly.", true); enable528BedrockSpawn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBedrockSpawning", "Enables the bedrock coltan ores as a rare spawn. These will be rarely found anywhere in the world.", false); enable528BosniaSimulator = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBosniaSimulator", "Enables anti tank mines spawning all over the world.", true); + enable528BedrockReplacement = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528BedrockReplacement", "Replaces certain bedrock ores with ones that require additional processing.", true); coltanRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_oreColtanFrequency", "Determines how many coltan ore veins are to be expected in a chunk. These values do not affect the frequency in deposits, and only apply if random coltan spanwing is enabled.", 2); bedrockRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_bedrockColtanFrequency", "Determines how often (1 in X) bedrock coltan ores spawn. Applies for both the bedrock ores in the coltan deposit (if applicable) and the random bedrock ores (if applicable)", 50); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 9f46fefc4..873b5605d 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -61,12 +61,12 @@ public class ToolRecipes { addShovel( DESH.ingot(), ModItems.desh_shovel); addHoe( DESH.ingot(), ModItems.desh_hoe); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_sword, 1), new Object[] { "RPR", "RPR", " B ", 'P', POLYMER.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_pickaxe, 1), new Object[] { "RDM", " PB", " P ", 'P', POLYMER.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_axe, 1), new Object[] { " DP", "RRM", " PB", 'P', POLYMER.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_shovel, 1), new Object[] { " P", "RRM", " B", 'P', POLYMER.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_sword, 1), new Object[] { "RPR", "RPR", " B ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_pickaxe, 1), new Object[] { "RDM", " PB", " P ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_axe, 1), new Object[] { " DP", "RRM", " PB", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_shovel, 1), new Object[] { " P", "RRM", " B", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.centri_stick, 1), new Object[] { ModItems.centrifuge_element, ModItems.energy_core, KEY_STICK }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.smashing_hammer, 1), new Object[] { "STS", "SPS", " P ", 'S', STEEL.block(), 'T', W.block(), 'P', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.smashing_hammer, 1), new Object[] { "STS", "SPS", " P ", 'S', STEEL.block(), 'T', W.block(), 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.meteorite_sword, 1), new Object[] { " B", "GB ", "SG ", 'B', ModItems.blade_meteorite, 'G', GOLD.plate(), 'S', KEY_STICK }); //Drax @@ -109,18 +109,18 @@ public class ToolRecipes { //Utility CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator, 1), new Object[] { " A", "#B#", "#B#", '#', IRON.plate(), 'A', STEEL.plate(), 'B', ModItems.circuit_red_copper }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_range, 1), new Object[] { "RRD", "PIC", " P", 'P', STEEL.plate(), 'R', Items.redstone, 'C', ModItems.circuit_gold, 'D', ModItems.designator, 'I', STEEL.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_manual, 1), new Object[] { " A", "#C#", "#B#", '#', POLYMER.ingot(), 'A', PB.plate(), 'B', ModItems.circuit_gold, 'C', ModItems.designator }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_manual, 1), new Object[] { " A", "#C#", "#B#", '#', ANY_PLASTIC.ingot(), 'A', PB.plate(), 'B', ModItems.circuit_gold, 'C', ModItems.designator }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_arty_range, 1), new Object[] { "M", "C", "P", 'M', ModItems.magnetron, 'C', ModItems.circuit_gold, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.linker, 1), new Object[] { "I I", "ICI", "GGG", 'I', IRON.plate(), 'G', GOLD.plate(), 'C', ModItems.circuit_gold }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.oil_detector, 1), new Object[] { "W I", "WCI", "PPP", 'W', ModItems.wire_gold, 'I', CU.ingot(), 'C', ModItems.circuit_red_copper, 'P', STEEL.plate528() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.turret_chip, 1), new Object[] { "WWW", "CPC", "WWW", 'W', ModItems.wire_gold, 'P', POLYMER.ingot(), 'C', ModItems.circuit_gold, }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.survey_scanner, 1), new Object[] { "SWS", " G ", "PCP", 'W', ModItems.wire_gold, 'P', POLYMER.ingot(), 'C', ModItems.circuit_gold, 'S', STEEL.plate528(), 'G', GOLD.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.turret_chip, 1), new Object[] { "WWW", "CPC", "WWW", 'W', ModItems.wire_gold, 'P', ANY_PLASTIC.ingot(), 'C', ModItems.circuit_gold, }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.survey_scanner, 1), new Object[] { "SWS", " G ", "PCP", 'W', ModItems.wire_gold, 'P', ANY_PLASTIC.ingot(), 'C', ModItems.circuit_gold, 'S', STEEL.plate528(), 'G', GOLD.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.geiger_counter, 1), new Object[] { "GPP", "WCS", "WBB", 'W', ModItems.wire_gold, 'P', ModItems.plate_polymer, 'C', ModItems.circuit_red_copper, 'G', GOLD.ingot(), 'S', STEEL.plate528(), 'B', ModItems.ingot_beryllium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dosimeter, 1), new Object[] { "WGW", "WCW", "WBW", 'W', KEY_PLANKS, 'G', KEY_ANYPANE, 'C', ModItems.circuit_aluminium, 'B', BE.ingot() }); CraftingManager.addShapelessAuto(new ItemStack(ModBlocks.geiger), new Object[] { ModItems.geiger_counter }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.digamma_diagnostic), new Object[] { ModItems.geiger_counter, PO210.billet(), ASBESTOS.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pollution_detector, 1), new Object[] { "SFS", "SCS", " S ", 'S', STEEL.plate(), 'F', ModItems.filter_coal, 'C', ModItems.circuit_copper }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', POLYMER.ingot(), 'S', STEEL.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', ModItems.bolt_tungsten, 'I', W.ingot(), 'P', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', ANY_RESISTANTALLOY.ingot(), 'R', ModItems.reacher, 'C', ModItems.circuit_aluminium }); @@ -193,11 +193,11 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_axe, 1), new Object[] { "IS", "IB", " I", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_axe }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_shovel, 1), new Object[] { "I", "B", "I", 'I', STAR.ingot(), 'B', ModItems.cobalt_decorated_shovel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_hoe, 1), new Object[] { "IS", " B", " I", 'I', STAR.ingot(), 'S', ModItems.ring_starmetal, 'B', ModItems.cobalt_decorated_hoe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_sword, 1), new Object[] { "I", "W", "S", 'I', SA326.block(), 'W', ModItems.desh_sword, 'S', POLYMER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_pickaxe, 1), new Object[] { "BSB", " W ", " P ", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_pickaxe, 'P', POLYMER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_axe, 1), new Object[] { "BS", "BW", " P", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_axe, 'P', POLYMER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_shovel, 1), new Object[] { "B", "W", "P", 'B', SA326.block(), 'W', ModItems.desh_shovel, 'P', POLYMER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_hoe, 1), new Object[] { "IW", " S", " S", 'I', SA326.ingot(), 'W', ModItems.desh_hoe, 'S', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_sword, 1), new Object[] { "I", "W", "S", 'I', SA326.block(), 'W', ModItems.desh_sword, 'S', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_pickaxe, 1), new Object[] { "BSB", " W ", " P ", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_pickaxe, 'P', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_axe, 1), new Object[] { "BS", "BW", " P", 'B', ModItems.blades_desh, 'S', SA326.block(), 'W', ModItems.desh_axe, 'P', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_shovel, 1), new Object[] { "B", "W", "P", 'B', SA326.block(), 'W', ModItems.desh_shovel, 'P', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_hoe, 1), new Object[] { "IW", " S", " S", 'I', SA326.ingot(), 'W', ModItems.desh_hoe, 'S', ANY_PLASTIC.ingot() }); } } diff --git a/src/main/java/com/hbm/inventory/material/MatDistribution.java b/src/main/java/com/hbm/inventory/material/MatDistribution.java index 5c04519b5..8e6fcebea 100644 --- a/src/main/java/com/hbm/inventory/material/MatDistribution.java +++ b/src/main/java/com/hbm/inventory/material/MatDistribution.java @@ -80,8 +80,8 @@ public class MatDistribution extends SerializableRecipe { registerOre(OreDictManager.CO.ore(), MAT_COBALT, INGOT.q(1), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.REDSTONE.ore(), MAT_REDSTONE, INGOT.q(4), MAT_STONE, QUART.q(1)); - registerOre(OreDictManager.HEMATITE.ore(), MAT_HEMATITE, INGOT.q(4)); - registerOre(OreDictManager.MALACHITE.ore(), MAT_MALACHITE, INGOT.q(4)); + registerOre(OreDictManager.HEMATITE.ore(), MAT_HEMATITE, INGOT.q(1)); + registerOre(OreDictManager.MALACHITE.ore(), MAT_MALACHITE, INGOT.q(1)); registerEntry(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), MAT_FLUX, DUST.q(10)); registerEntry(ModItems.powder_flux, MAT_FLUX, DUST.q(1)); diff --git a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java index 3696d82d4..d6f9cf30d 100644 --- a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -56,7 +56,7 @@ public class CokerRecipes extends SerializableRecipe { registerSFAuto(WOODOIL, 340_000L, new ItemStack(Items.coal, 1, 1), GAS_COKER); registerRecipe(WATZ, 4_000, new ItemStack(ModItems.ingot_mud, 4), null); - registerRecipe(REDMUD, 1_000, new ItemStack(Items.iron_ingot, 2), new FluidStack(MERCURY, 50)); + registerRecipe(REDMUD, 1_000, new ItemStack(Items.iron_ingot, 1), new FluidStack(MERCURY, 50)); registerRecipe(BITUMEN, 16_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_600)); registerRecipe(LUBRICANT, 12_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_200)); registerRecipe(CALCIUM_SOLUTION, 125, new ItemStack(ModItems.powder_calcium), new FluidStack(SPENTSTEAM, 100)); diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOre.java b/src/main/java/com/hbm/items/special/ItemBedrockOre.java index f4362a93f..b3cd0433e 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOre.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOre.java @@ -96,7 +96,9 @@ public class ItemBedrockOre extends ItemEnumMulti { URANIUM("Uranium", 0x868D82, B_LEAD, B_RADIUM, B_POLONIUM), //uranium and its decay products THORIUM("Thorium", 0x7D401D, B_SILICON, B_URANIUM, B_TECHNETIUM), //thorium occours with uraninite and decay products CHLOROCALCITE("Chlorocalcite", 0xCDE036, B_LITHIUM, B_SILICON, B_SILICON), //i guess? - FLUORITE("Fluorite", 0xF6F3E7, B_SILICON, B_LITHIUM, B_ALUMINIUM); //different silicon-bearing gemstones, generic lithium, aluminium from sodium compound trailings + FLUORITE("Fluorite", 0xF6F3E7, B_SILICON, B_LITHIUM, B_ALUMINIUM), //different silicon-bearing gemstones, generic lithium, aluminium from sodium compound trailings + HEMATITE("Hematite", 0xA37B72, B_SULFUR, B_TITANIUM, B_TITANIUM), //titanium, sulfur from pyrite + MALACHITE("Malachite", 0x66B48C, B_SULFUR, B_SULFUR, B_SULFUR); //sulfur sulfur sulfur sulfur public String oreName; public int color; diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 96fc5134f..e233d59d2 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -161,12 +161,18 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper); - DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 10, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 16, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.limestoneSpawn, 12, 25, 30, ModBlocks.stone_resource, EnumStoneType.LIMESTONE.ordinal()); if(rand.nextInt(3) == 0) { WeightedRandomGeneric item = (WeightedRandomGeneric) WeightedRandom.getRandomItem(rand, BedrockOre.weightedOres); BedrockOreDefinition def = item.get(); + + if(GeneralConfig.enable528 && GeneralConfig.enable528BedrockReplacement) { + BedrockOreDefinition replacement = BedrockOre.replacements.get(def.id); + if(replacement != null) def = replacement; + } + int randPosX = i + rand.nextInt(2) + 8; int randPosZ = j + rand.nextInt(2) + 8; BedrockOre.generate(world, randPosX, randPosZ, def.stack, def.acid, def.color, def.tier); diff --git a/src/main/java/com/hbm/world/feature/BedrockOre.java b/src/main/java/com/hbm/world/feature/BedrockOre.java index f20e79039..98bbd0c48 100644 --- a/src/main/java/com/hbm/world/feature/BedrockOre.java +++ b/src/main/java/com/hbm/world/feature/BedrockOre.java @@ -1,6 +1,7 @@ package com.hbm.world.feature; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; @@ -24,6 +25,8 @@ public class BedrockOre { public static List> weightedOres = new ArrayList(); public static List> weightedOresNether = new ArrayList(); + public static HashMap replacements = new HashMap(); + public static void init() { registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.IRON, 1), WorldConfig.bedrockIronSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.COPPER, 1), WorldConfig.bedrockCopperSpawn); @@ -37,13 +40,16 @@ public class BedrockOre { registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.URANIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockUraniumSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.THORIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockThoriumSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.FLUORITE, 1), WorldConfig.bedrockFluoriteSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.coal, 4), 1, 0x202020), WorldConfig.bedrockCoalSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.coal, 8), 1, 0x202020), WorldConfig.bedrockCoalSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(ModItems.niter, 4), 2, 0x808080, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiterSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.redstone, 4), 1, 0xd01010), WorldConfig.bedrockRedstoneSpawn); registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(Items.glowstone_dust, 4), 1, 0xF9FF4D), WorldConfig.bedrockGlowstoneSpawn); registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(ModItems.powder_fire, 4), 1, 0xD7341F), WorldConfig.bedrockPhosphorusSpawn); registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(Items.quartz, 4), 1, 0xF0EFDD), WorldConfig.bedrockQuartzSpawn); + + replacements.put(EnumBedrockOre.IRON.oreName, new BedrockOreDefinition(EnumBedrockOre.HEMATITE, 1)); + replacements.put(EnumBedrockOre.COPPER.oreName, new BedrockOreDefinition(EnumBedrockOre.MALACHITE, 1)); } public static void registerBedrockOre(List list, BedrockOreDefinition def, int weight) { @@ -97,6 +103,7 @@ public class BedrockOre { public static class BedrockOreDefinition { public ItemStack stack; public FluidStack acid; + public String id; public int tier; public int color; @@ -106,6 +113,7 @@ public class BedrockOre { public BedrockOreDefinition(ItemStack stack, int tier, int color, FluidStack acid) { this.stack = stack; + this.id = stack.toString(); this.tier = tier; this.color = color; this.acid = acid; @@ -117,6 +125,7 @@ public class BedrockOre { public BedrockOreDefinition(EnumBedrockOre type, int tier, FluidStack acid) { this.stack = DictFrame.fromOne(ModItems.ore_bedrock, type); + this.id = "ore" + type.oreName; this.color = type.color; this.tier = tier; this.acid = acid; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 965112337..39f98c28e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2553,7 +2553,9 @@ item.ore.chlorocalcite=Chlorokalzit item.ore.copper=Kupfer item.ore.fluorite=Fluorit item.ore.gold=Gold +item.ore.hematite=Hematit item.ore.iron=Eisen +item.ore.malachite=Malachit item.ore.niobium=Niob item.ore.titanium=Titan item.ore.tungsten=Wolfram diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 3a45eb795..85e9a142c 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3312,7 +3312,9 @@ item.ore.chlorocalcite=Chlorocalcite item.ore.copper=Copper item.ore.fluorite=Fluorite item.ore.gold=Gold +item.ore.hematite=Hematite item.ore.iron=Iron +item.ore.malachite=Malachite item.ore.niobium=Niobium item.ore.titanium=Titanium item.ore.tungsten=Tungsten From 505bdbf86372fa63b3a1c2f10423ebfe1f486cf9 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 29 Oct 2023 19:01:17 +0100 Subject: [PATCH 080/207] more half-finished crap --- src/main/java/com/hbm/blocks/ModBlocks.java | 40 +- .../com/hbm/blocks/machine/MachineCoal.java | 238 +--- .../hbm/blocks/machine/MachineWoodBurner.java | 39 + .../com/hbm/blocks/machine/ReactorCore.java | 73 +- .../java/com/hbm/creativetabs/MachineTab.java | 4 +- .../container/ContainerMachineCoal.java | 85 -- .../com/hbm/inventory/gui/GUIMachineCoal.java | 94 -- .../inventory/recipes/AssemblerRecipes.java | 3 +- .../java/com/hbm/lib/HbmChestContents.java | 32 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 6 + .../java/com/hbm/packet/AuxGaugePacket.java | 40 - .../render/tileentity/RenderWoodBurner.java | 61 + .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityMachineCoal.java | 254 +--- .../machine/TileEntityMachineWoodBurner.java | 112 ++ .../world/gen/component/BunkerComponents.java | 16 +- .../hbm/models/machines/wood_burner.obj | 1112 +++++++++++++++++ .../blocks/machine_coal_front_off.png | Bin 377 -> 0 bytes .../blocks/machine_coal_front_off_alt.png | Bin 481 -> 0 bytes .../textures/blocks/machine_coal_front_on.png | Bin 467 -> 0 bytes .../blocks/machine_coal_front_on_alt.png | Bin 526 -> 0 bytes .../hbm/textures/blocks/machine_coal_side.png | Bin 391 -> 0 bytes .../textures/blocks/machine_coal_side_alt.png | Bin 578 -> 0 bytes .../assets/hbm/textures/gui/GUICoal.png | Bin 2248 -> 2440 bytes .../gui/generators/gui_wood_burner.png | Bin 0 -> 3916 bytes .../textures/models/machines/wood_burner.png | Bin 0 -> 9986 bytes 27 files changed, 1388 insertions(+), 823 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineCoal.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineCoal.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderWoodBurner.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java create mode 100644 src/main/resources/assets/hbm/models/machines/wood_burner.obj delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_coal_front_on.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_coal_front_on_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_coal_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_coal_side_alt.png create mode 100644 src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/wood_burner.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index ad16c99fd..b531674dd 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -775,8 +775,9 @@ public class ModBlocks { public static Block capacitor_tantalium; public static Block capacitor_schrabidate; - public static Block machine_coal_off; - public static Block machine_coal_on; + @Deprecated public static Block machine_coal_off; + @Deprecated public static Block machine_coal_on; + public static Block machine_wood_burner; public static Block red_wire_coated; public static Block red_cable; @@ -900,13 +901,13 @@ public class ModBlocks { public static Block pwr_controller; public static Block pwr_block; - public static Block reactor_element; - public static Block reactor_control; - public static Block reactor_hatch; - public static Block reactor_ejector; - public static Block reactor_inserter; - public static Block reactor_conductor; - public static Block reactor_computer; + @Deprecated public static Block reactor_element; + @Deprecated public static Block reactor_control; + @Deprecated public static Block reactor_hatch; + @Deprecated public static Block reactor_ejector; + @Deprecated public static Block reactor_inserter; + @Deprecated public static Block reactor_conductor; + @Deprecated public static Block reactor_computer; public static Block fusion_conductor; public static Block fusion_center; @@ -1933,8 +1934,9 @@ public class ModBlocks { capacitor_tantalium = new MachineCapacitor(Material.iron, 150_000_000L, "tantalium").setBlockName("capacitor_tantalium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); capacitor_schrabidate = new MachineCapacitor(Material.iron, 50_000_000_000L, "schrabidate").setBlockName("capacitor_schrabidate").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); - machine_coal_off = new MachineCoal(false).setBlockName("machine_coal_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_coal_on = new MachineCoal(true).setBlockName("machine_coal_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); + machine_coal_off = new MachineCoal(false).setBlockName("machine_coal_off").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); + machine_coal_on = new MachineCoal(true).setBlockName("machine_coal_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); + machine_wood_burner = new MachineWoodBurner(Material.iron).setBlockName("machine_wood_burner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_diesel = new MachineDiesel().setBlockName("machine_diesel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_combustion_engine = new MachineCombustionEngine().setBlockName("machine_combustion_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2075,20 +2077,19 @@ public class ModBlocks { pwr_controller = new MachinePWRController(Material.iron).setBlockName("pwr_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing_blank"); pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block"); - reactor_element = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_element_top", RefStrings.MODID + ":reactor_element_base").setBlockName("reactor_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_element_side"); - reactor_control = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_control_top").setBlockName("reactor_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_control_side"); - reactor_hatch = new ReactorHatch(Material.iron).setBlockName("reactor_hatch").setHardness(5.0F).setResistance(1000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_ejector = new BlockRotatable(Material.iron).setBlockName("reactor_ejector").setHardness(5.0F).setResistance(1000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_inserter = new BlockRotatable(Material.iron).setBlockName("reactor_inserter").setHardness(5.0F).setResistance(1000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - reactor_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_conductor_top").setBlockName("reactor_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_conductor_side"); - reactor_computer = new ReactorCore(Material.iron).setBlockName("reactor_computer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_computer"); + reactor_element = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_element_top", RefStrings.MODID + ":reactor_element_base").setBlockName("reactor_element").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_element_side"); + reactor_control = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_control_top").setBlockName("reactor_control").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_control_side"); + reactor_hatch = new ReactorHatch(Material.iron).setBlockName("reactor_hatch").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + reactor_ejector = new BlockRotatable(Material.iron).setBlockName("reactor_ejector").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + reactor_inserter = new BlockRotatable(Material.iron).setBlockName("reactor_inserter").setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + reactor_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_conductor_top").setBlockName("reactor_conductor").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_conductor_side"); + reactor_computer = new ReactorCore(Material.iron).setBlockName("reactor_computer").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":reactor_computer"); fusion_conductor = new BlockToolConversionPillar(Material.iron).addVariant("_welded").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_conductor"); fusion_center = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_center_top_alt").setBlockName("fusion_center").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_center_side_alt"); fusion_motor = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_motor_top_alt").setBlockName("fusion_motor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_motor_side_alt"); fusion_heater = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_heater_top").setBlockName("fusion_heater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_heater_side"); fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_hatch"); - //fusion_core = new FusionCore(Material.iron).setBlockName("fusion_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_core_side"); plasma = new BlockPlasma(Material.iron).setBlockName("plasma").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma"); iter = new MachineITER().setBlockName("iter").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":iter"); plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); @@ -3153,6 +3154,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_rtg_furnace_on, machine_rtg_furnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_coal_off, machine_coal_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_coal_on, machine_coal_on.getUnlocalizedName()); + register(machine_wood_burner); register(machine_diesel); register(machine_selenium); register(machine_combustion_engine); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoal.java b/src/main/java/com/hbm/blocks/machine/MachineCoal.java index 5a56ecf5a..4b28a5e94 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCoal.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCoal.java @@ -1,257 +1,21 @@ package com.hbm.blocks.machine; -import java.util.Random; - -import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineCoal; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - +@Deprecated public class MachineCoal extends BlockContainer { - private final Random field_149933_a = new Random(); - private final boolean isActive; - private static boolean keepInventory; - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - public MachineCoal(boolean blockState) { super(Material.iron); - isActive = blockState; } - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_coal_front_on" : ":machine_coal_front_off")); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_coal_side"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(ModBlocks.machine_coal_off); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - this.setDefaultDirection(world, x, y, z); - } - - private void setDefaultDirection(World world, int x, int y, int z) { - if(!world.isRemote) - { - Block block1 = world.getBlock(x, y, z - 1); - Block block2 = world.getBlock(x, y, z + 1); - Block block3 = world.getBlock(x - 1, y, z); - Block block4 = world.getBlock(x + 1, y, z); - - byte b0 = 3; - - if(block1.func_149730_j() && !block2.func_149730_j()) - { - b0 = 3; - } - if(block2.func_149730_j() && !block1.func_149730_j()) - { - b0 = 2; - } - if(block3.func_149730_j() && !block4.func_149730_j()) - { - b0 = 5; - } - if(block4.func_149730_j() && !block3.func_149730_j()) - { - b0 = 4; - } - - world.setBlockMetadataWithNotify(x, y, z, b0, 2); - } - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) - { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - if(i == 1) - { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 2) - { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 3) - { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } - - if(itemStack.hasDisplayName()) - { - ((TileEntityMachineCoal)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { - return true; - } else if(!player.isSneaking()) - { - TileEntityMachineCoal entity = (TileEntityMachineCoal) world.getTileEntity(x, y, z); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } - } - @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityMachineCoal(); } - - public static void updateBlockState(boolean isProcessing, World world, int x, int y, int z) { - int i = world.getBlockMetadata(x, y, z); - TileEntity entity = world.getTileEntity(x, y, z); - keepInventory = true; - - if(isProcessing) - { - world.setBlock(x, y, z, ModBlocks.machine_coal_on); - }else{ - world.setBlock(x, y, z, ModBlocks.machine_coal_off); - } - - keepInventory = false; - world.setBlockMetadataWithNotify(x, y, z, i, 2); - - if(entity != null) { - entity.validate(); - world.setTileEntity(x, y, z, entity); - } - } - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - TileEntityMachineCoal tileentityfurnace = (TileEntityMachineCoal)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } - - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World p_149734_1_, int x, int y, int z, Random rand) - { - if (isActive) - { - int l = p_149734_1_.getBlockMetadata(x, y, z); - float f = x + 0.5F; - float f1 = y + 0.0F + rand.nextFloat() * 6.0F / 16.0F; - float f2 = z + 0.5F; - float f3 = 0.52F; - float f4 = rand.nextFloat() * 0.6F - 0.3F; - - if (l == 4) - { - p_149734_1_.spawnParticle("smoke", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - } - else if (l == 5) - { - p_149734_1_.spawnParticle("smoke", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); - } - else if (l == 2) - { - p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); - } - else if (l == 3) - { - p_149734_1_.spawnParticle("smoke", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); - p_149734_1_.spawnParticle("flame", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); - } - } - } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java b/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java new file mode 100644 index 000000000..acc5658a2 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java @@ -0,0 +1,39 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineWoodBurner extends BlockDummyable { + + public MachineWoodBurner(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineWoodBurner(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); + return new TileEntityProxyCombo().inventory(); + } + + @Override + public int[] getDimensions() { + return new int[] {1, 0, 1, 0, 1, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/ReactorCore.java b/src/main/java/com/hbm/blocks/machine/ReactorCore.java index 2475ec52f..847ece06f 100644 --- a/src/main/java/com/hbm/blocks/machine/ReactorCore.java +++ b/src/main/java/com/hbm/blocks/machine/ReactorCore.java @@ -2,13 +2,8 @@ package com.hbm.blocks.machine; import java.util.Random; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; -import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -23,72 +18,6 @@ public class ReactorCore extends BlockContainer { @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineReactorLarge(); + return null; } - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - TileEntityMachineReactorLarge tileentityfurnace = (TileEntityMachineReactorLarge)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } - - /*@Override - public void onBlockDestroyedByExplosion(World p_149723_1_, int p_149723_2_, int p_149723_3_, int p_149723_4_, Explosion p_149723_5_) - { - if (!p_149723_1_.isRemote) - { - TileEntityMachineReactorLarge entity = (TileEntityMachineReactorLarge) p_149723_1_.getTileEntity(p_149723_2_, p_149723_3_, p_149723_4_); - if(entity != null && entity.isLoaded) - { - entity.explode(); - } - } - }*/ - } diff --git a/src/main/java/com/hbm/creativetabs/MachineTab.java b/src/main/java/com/hbm/creativetabs/MachineTab.java index 13f3c934f..a24abc8a6 100644 --- a/src/main/java/com/hbm/creativetabs/MachineTab.java +++ b/src/main/java/com/hbm/creativetabs/MachineTab.java @@ -15,8 +15,8 @@ public class MachineTab extends CreativeTabs { @Override public Item getTabIconItem() { - if(ModBlocks.reactor_element != null) - return Item.getItemFromBlock(ModBlocks.reactor_element); + if(ModBlocks.pwr_controller != null) + return Item.getItemFromBlock(ModBlocks.pwr_controller); return Items.iron_pickaxe; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCoal.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCoal.java deleted file mode 100644 index 1060bdaec..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCoal.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.inventory.SlotTakeOnly; -import com.hbm.tileentity.machine.TileEntityMachineCoal; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerMachineCoal extends Container { - - private TileEntityMachineCoal diFurnace; - - public ContainerMachineCoal(InventoryPlayer invPlayer, TileEntityMachineCoal tedf) { - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 44, 53 - 36)); - this.addSlotToContainer(new Slot(tedf, 1, 80, 53)); - this.addSlotToContainer(new Slot(tedf, 2, 116, 53)); - this.addSlotToContainer(new SlotTakeOnly(tedf, 3, 44, 53)); - - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); - } - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if (par2 <= 3) { - if (!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) - { - return null; - } - } - else if (!this.mergeItemStack(var5, 1, 2, false)) - { - if (!this.mergeItemStack(var5, 0, 1, false)) - if (!this.mergeItemStack(var5, 2, 3, false)) - return null; - } - - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCoal.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCoal.java deleted file mode 100644 index 24b1cf2ae..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCoal.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.hbm.inventory.gui; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerMachineCoal; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineCoal; - -public class GUIMachineCoal extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/GUICoal.png"); - private TileEntityMachineCoal diFurnace; - - public GUIMachineCoal(InventoryPlayer invPlayer, TileEntityMachineCoal tedf) { - super(new ContainerMachineCoal(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 166; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - diFurnace.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 69 - 52, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 69 - 52, 16, 52, diFurnace.power, diFurnace.maxPower); - - String[] text = new String[] { "Power generation rate:", - " 25 HE/t", - " 500 HE/s", - "Accepts all furnace fuels.", - "(All fuels burn half as long in this generator", - "as in a regular furnace)" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); - - String[] text1 = new String[] { "Water consumption rate:", - " 1 mB/t", - " 20 mB/s", - "(Consumption rate is constant)" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1); - - if(diFurnace.tank.getFill() <= 0) { - - String[] text2 = new String[] { "Error: Water is required for", - "the generator to function properly!" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 32, 16, 16, guiLeft - 8, guiTop + 36 + 16 + 32, text2); - } - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 79, guiTop + 34, 18, 18, mouseX, mouseY, new String[] { String.valueOf((int)(Math.ceil((double)diFurnace.burnTime / 20D))) + "s"}); - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - //It's as horrifying as it is functional. - if(diFurnace.isInvalid() && diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord) instanceof TileEntityMachineCoal) - diFurnace = (TileEntityMachineCoal) diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord); - - if(diFurnace.power > 0) { - int i = (int)diFurnace.getPowerScaled(52); - drawTexturedModalRect(guiLeft + 152, guiTop + 69 - i, 176, 52 - i, 16, i); - } - - if(diFurnace.burnTime > 0) - { - drawTexturedModalRect(guiLeft + 79, guiTop + 34, 208, 0, 18, 18); - } - - if(diFurnace.tank.getFill() <= 0) - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 32, 16, 16, 6); - - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); - - diFurnace.tank.renderTank(guiLeft + 8, guiTop + 69, this.zLevel, 16, 52); - } -} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 87a14154f..18fc47acd 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -1169,8 +1169,7 @@ public class AssemblerRecipes { new OreDictStack(ANY_TAR.any(), 8), new ComparableStack(ModItems.catalyst_clay, 4), new ComparableStack(ModItems.coil_tungsten, 8), - new ComparableStack(ModItems.tank_steel, 2), - new ComparableStack(ModItems.inf_water_mk2, 2) + new ComparableStack(ModItems.tank_steel, 2) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_solidifier), new AStack[] { diff --git a/src/main/java/com/hbm/lib/HbmChestContents.java b/src/main/java/com/hbm/lib/HbmChestContents.java index 433b089e1..812a66848 100644 --- a/src/main/java/com/hbm/lib/HbmChestContents.java +++ b/src/main/java/com/hbm/lib/HbmChestContents.java @@ -245,7 +245,7 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.powder_niobium, 0, 1, 1, 1), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.fusion_conductor), 0, 2, 4, 5), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.fusion_heater), 0, 1, 3, 5), - new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.reactor_element), 0, 1, 2, 5), + new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.pwr_fuel), 0, 1, 2, 5), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.block_tungsten), 0, 3, 8, 5), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.red_wire_coated), 0, 4, 8, 5), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.red_cable), 0, 8, 16, 5) }; @@ -418,26 +418,16 @@ public class HbmChestContents { String key; int pages; switch(rand.nextInt(10)) { - case 0: - key = "resignation_note"; pages = 3; break; - case 1: - key = "memo_stocks"; pages = 1; break; - case 2: - key = "memo_schrab_gsa"; pages = 2; break; - case 3: - key = "memo_schrab_rd"; pages = 4; break; - case 4: - key = "memo_schrab_nuke"; pages = 3; break; - case 5: - key = "bf_bomb_1"; pages = 4; break; - case 6: - key = "bf_bomb_2"; pages = 6; break; - case 7: - key = "bf_bomb_3"; pages = 6; break; - case 8: - key = "bf_bomb_4"; pages = 5; break; - case 9: - key = "bf_bomb_5"; pages = 9; break; + case 0: key = "resignation_note"; pages = 3; break; + case 1: key = "memo_stocks"; pages = 1; break; + case 2: key = "memo_schrab_gsa"; pages = 2; break; + case 3: key = "memo_schrab_rd"; pages = 4; break; + case 4: key = "memo_schrab_nuke"; pages = 3; break; + case 5: key = "bf_bomb_1"; pages = 4; break; + case 6: key = "bf_bomb_2"; pages = 6; break; + case 7: key = "bf_bomb_3"; pages = 6; break; + case 8: key = "bf_bomb_4"; pages = 5; break; + case 9: key = "bf_bomb_5"; pages = 9; break; default: return null; } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index f7e3d1233..4ccab463c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -295,6 +295,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpSteam.class, new RenderPump()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpElectric.class, new RenderPump()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineArcWelder.class, new RenderArcWelder()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineWoodBurner.class, new RenderWoodBurner()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 18cf110cc..26fa2963a 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -110,6 +110,9 @@ public class ResourceManager { public static final IModelCustom tower_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_large.obj")); public static final IModelCustom condenser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/condenser.obj")); + //Wood burner + public static final IModelCustom wood_burner = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/wood_burner.obj")); + //IGen public static final IModelCustom igen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/igen.obj")); @@ -476,6 +479,9 @@ public class ResourceManager { //Deuterium Tower public static final ResourceLocation deuterium_tower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/machine_deuterium_tower.png"); + //Wood Burner + public static final ResourceLocation wood_burner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/wood_burner.png"); + //IGen public static final ResourceLocation igen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/igen.png"); public static final ResourceLocation igen_rotor = new ResourceLocation(RefStrings.MODID, "textures/models/machines/igen_rotor.png"); diff --git a/src/main/java/com/hbm/packet/AuxGaugePacket.java b/src/main/java/com/hbm/packet/AuxGaugePacket.java index 299dee72f..1a9e99d5d 100644 --- a/src/main/java/com/hbm/packet/AuxGaugePacket.java +++ b/src/main/java/com/hbm/packet/AuxGaugePacket.java @@ -13,11 +13,6 @@ import com.hbm.tileentity.machine.TileEntityAMSLimiter; import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; import com.hbm.tileentity.machine.TileEntityMachineBoiler; import com.hbm.tileentity.machine.TileEntityMachineBoilerElectric; -import com.hbm.tileentity.machine.TileEntityMachineCoal; -import com.hbm.tileentity.machine.TileEntityMachineDiesel; -import com.hbm.tileentity.machine.TileEntityMachineElectricFurnace; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; -import com.hbm.tileentity.machine.TileEntityMachineReactorLarge.ReactorFuelType; import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; import cpw.mods.fml.common.network.simpleimpl.IMessage; @@ -113,11 +108,6 @@ public class AuxGaugePacket implements IMessage { if(m.id == 1) selenium.powerCap = m.value; } - if (te instanceof TileEntityMachineDiesel) { - TileEntityMachineDiesel selenium = (TileEntityMachineDiesel)te; - - selenium.powerCap = m.value; - } if (te instanceof TileEntityBomber) { TileEntityBomber bomber = (TileEntityBomber)te; @@ -136,18 +126,6 @@ public class AuxGaugePacket implements IMessage { if(m.id == 1) boiler.burnTime = m.value; } - if (te instanceof TileEntityMachineCoal) { - TileEntityMachineCoal coalgen = (TileEntityMachineCoal)te; - - if(m.id == 0) - coalgen.burnTime = m.value; - } - if (te instanceof TileEntityMachineElectricFurnace) { - TileEntityMachineElectricFurnace furn = (TileEntityMachineElectricFurnace)te; - - if(m.id == 0) - furn.progress = m.value; - } if (te instanceof TileEntityMachineArcFurnace) { TileEntityMachineArcFurnace furn = (TileEntityMachineArcFurnace)te; @@ -165,24 +143,6 @@ public class AuxGaugePacket implements IMessage { nuke.primed = m.value == 1; } - if (te instanceof TileEntityMachineReactorLarge) { - TileEntityMachineReactorLarge reactor = (TileEntityMachineReactorLarge)te; - - if(m.id == 0) - reactor.rods = m.value; - if(m.id == 1) - reactor.coreHeat = m.value; - if(m.id == 2) - reactor.hullHeat = m.value; - if(m.id == 3) - reactor.size = m.value; - if(m.id == 4) - reactor.fuel = m.value; - if(m.id == 5) - reactor.waste = m.value; - if(m.id == 6) - reactor.type = ReactorFuelType.getEnum(m.value); - } if (te instanceof TileEntityCompactLauncher) { TileEntityCompactLauncher launcher = (TileEntityCompactLauncher)te; diff --git a/src/main/java/com/hbm/render/tileentity/RenderWoodBurner.java b/src/main/java/com/hbm/render/tileentity/RenderWoodBurner.java new file mode 100644 index 000000000..14362d898 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderWoodBurner.java @@ -0,0 +1,61 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderWoodBurner extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glTranslated(-0.5, 0, -0.5); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.wood_burner_tex); + ResourceManager.wood_burner.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_wood_burner); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(3.5, 3.5, 3.5); + } + public void renderCommon() { + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.wood_burner_tex); + ResourceManager.wood_burner.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index d5ef30c31..4e0500c15 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -67,6 +67,7 @@ public class TileMappings { put(TileEntityMachineBattery.class, "tileentity_battery"); put(TileEntityCapacitor.class, "tileentity_capacitor"); put(TileEntityMachineCoal.class, "tileentity_coal"); + put(TileEntityMachineWoodBurner.class, "tileentity_wood_burner"); put(TileEntityRedBarrel.class, "tileentity_barrel"); put(TileEntityYellowBarrel.class, "tileentity_nukebarrel"); put(TileEntityLaunchPad.class, "tileentity_launch1"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java index b13e35d18..c616c9afc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java @@ -1,265 +1,33 @@ package com.hbm.tileentity.machine; -import java.io.IOException; +import com.hbm.blocks.ModBlocks; +import com.hbm.tileentity.TileEntityMachineBase; -import com.google.gson.JsonObject; -import com.google.gson.stream.JsonWriter; -import com.hbm.blocks.machine.MachineCoal; -import com.hbm.handler.pollution.PollutionHandler; -import com.hbm.handler.pollution.PollutionHandler.PollutionType; -import com.hbm.inventory.FluidContainerRegistry; -import com.hbm.inventory.container.ContainerMachineCoal; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIMachineCoal; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; -import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachinePolluting; - -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardTransceiver; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.inventory.Container; +import net.minecraft.entity.item.EntityItem; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntityFurnace; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCoal extends TileEntityMachinePolluting implements ISidedInventory, IEnergyGenerator, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider { - - public long power; - public int burnTime; - public static final long maxPower = 100000; - public FluidTank tank; - - private static final int[] slots_top = new int[] {1}; - private static final int[] slots_bottom = new int[] {0, 2}; - private static final int[] slots_side = new int[] {0, 2}; - - /* CONFIGURABLE CONSTANTS */ - public static int waterCap = 5000; - public static int genRate = 25; - public static double fuelMod = 0.5D; +@Deprecated +public class TileEntityMachineCoal extends TileEntityMachineBase implements ISidedInventory { public TileEntityMachineCoal() { - super(4, 50); - tank = new FluidTank(Fluids.WATER, waterCap, 0); + super(4); } @Override public String getName() { return "container.machineCoal"; } - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) { - if(i == 0) - if(FluidContainerRegistry.getFluidContent(stack, Fluids.WATER) > 0) - return true; - if(i == 2) - if(stack.getItem() instanceof IBatteryItem) - return true; - if(i == 1) - if(TileEntityFurnace.getItemBurnTime(stack) > 0) - return true; - - return false; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - - this.power = nbt.getLong("powerTime"); - tank.readFromNBT(nbt, "water"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("powerTime", power); - tank.writeToNBT(nbt, "water"); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - if(i == 0) - if(itemStack.getItem() == Items.bucket || itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty) - return true; - if(i == 2) - if (itemStack.getItem() instanceof IBatteryItem && ((IBatteryItem)itemStack.getItem()).getCharge(itemStack) == ((IBatteryItem)itemStack.getItem()).getMaxCharge()) - return true; - - return false; - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } @Override public void updateEntity() { if(!worldObj.isRemote) { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - } - - this.subscribeToAllAround(Fluids.WATER, this); - - //Water - tank.loadTank(0, 3, slots); - - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - - //Battery Item - power = Library.chargeItemsFromTE(slots, 2, power, maxPower); - - boolean trigger = true; - - if(isItemValid() && this.burnTime == 0) { - trigger = false; - } - - if(trigger) { - MachineCoal.updateBlockState(this.burnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); - } - - generate(); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("burnTime", burnTime); - tank.writeToNBT(data, "tank"); - this.networkPack(data, 15); + worldObj.setBlockToAir(xCoord, yCoord, zCoord); + EntityItem drop = new EntityItem(worldObj); + drop.setEntityItemStack(new ItemStack(ModBlocks.machine_wood_burner)); + drop.setPosition(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + worldObj.spawnEntityInWorld(drop); } } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - this.power = nbt.getLong("power"); - this.burnTime = nbt.getInteger("burnTime"); - this.tank.readFromNBT(nbt, "tank"); - } - - public void generate() { - - if(slots[1] != null && TileEntityFurnace.getItemBurnTime(slots[1]) > 0 && burnTime <= 0) - { - burnTime = (int) (TileEntityFurnace.getItemBurnTime(slots[1]) * fuelMod); - slots[1].stackSize -= 1; - if(slots[1].stackSize == 0) - { - if(slots[1].getItem().getContainerItem() != null) - slots[1] = new ItemStack(slots[1].getItem().getContainerItem()); - else - slots[1] = null; - } - } - - if(burnTime > 0) { - burnTime--; - - if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); - - if(tank.getFill() > 0) { - tank.setFill(tank.getFill() - 1); - - power += genRate; - - if(power > maxPower) - power = maxPower; - } - } - } - - public boolean isItemValid() { - - if(slots[1] != null && TileEntityFurnace.getItemBurnTime(slots[1]) > 0) { - return true; - } - - return false; - } - - @Override - public long getPower() { - return power; - } - - @Override - public void setPower(long i) { - this.power = i; - } - - @Override - public long getMaxPower() { - return this.maxPower; - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[] {tank}; - } - - @Override - public FluidTank[] getSendingTanks() { - return this.getSmokeTanks(); - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] { tank }; - } - - @Override - public String getConfigName() { - return "combustiongen"; - } - - @Override - public void readIfPresent(JsonObject obj) { - waterCap = IConfigurableMachine.grab(obj, "I:waterCapacity", waterCap); - genRate = IConfigurableMachine.grab(obj, "I:powerGen", genRate); - fuelMod = IConfigurableMachine.grab(obj, "D:burnTimeMod", fuelMod); - } - - @Override - public void writeConfig(JsonWriter writer) throws IOException { - writer.name("I:waterCapacity").value(waterCap); - writer.name("I:powerGen").value(genRate); - writer.name("D:burnTimeMod").value(fuelMod); - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineCoal(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineCoal(player.inventory, this); - } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java new file mode 100644 index 000000000..57c6bf6c1 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -0,0 +1,112 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.module.ModuleBurnTime; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachinePolluting; + +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IGUIProvider { + + public long power; + public static final long maxPower = 100_000; + public int burnTime; + public int maxBurnTime; + public boolean liquidBurn = false; + public boolean isOn = false; + + public FluidTank tank; + + public static ModuleBurnTime burnModule = new ModuleBurnTime().setLogTimeMod(3).setWoodTimeMod(2); + + public int ashLevelWood; + public int ashLevelCoal; + public int ashLevelMisc; + + public TileEntityMachineWoodBurner() { + super(6, 60); + this.tank = new FluidTank(Fluids.WOODOIL, 16_000); + } + + @Override + public String getName() { + return "container.machineWoodBurner"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(!liquidBurn) { + + if(this.burnTime <= 0) { + + if(slots[0] != null) { + int burn = this.burnModule.getBurnTime(slots[0]); + if(burn > 0) { + this.maxBurnTime = burn; + this.decrStackSize(0, 1); + this.markChanged(); + } + } + + } else if(this.power < this.maxPower){ + this.burnTime--; + this.power += 100; + if(power > maxPower) this.power = this.maxPower; + } + + } else { + + if(this.power < this.maxPower && tank.getFill() > 0) { + FT_Flammable trait = tank.getTankType().getTrait(FT_Flammable.class); + + if(trait != null) { + this.power += trait.getHeatEnergy() / 2L; + tank.setFill(tank.getFill() - 1); + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + this.networkPack(data, 25); + } + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return null; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {tank, smoke, smoke_leaded, smoke_poison}; + } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tank}; + } +} diff --git a/src/main/java/com/hbm/world/gen/component/BunkerComponents.java b/src/main/java/com/hbm/world/gen/component/BunkerComponents.java index acb8481c3..286687203 100644 --- a/src/main/java/com/hbm/world/gen/component/BunkerComponents.java +++ b/src/main/java/com/hbm/world/gen/component/BunkerComponents.java @@ -802,9 +802,9 @@ public class BunkerComponents { default: fillWithBlocks(world, box, 6, 1, 1, 6, 3, 1, ModBlocks.deco_pipe_framed_rusted); for(int i = 7; i <= 9; i += 2) { - placeBlockAtCurrentPosition(world, ModBlocks.machine_coal_off, decoMetaN, i, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_electric_furnace_off, decoMetaN, i, 1, 1, box); placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 2, i, 2, 1, box); - placeBlockAtCurrentPosition(world, ModBlocks.machine_coal_off, decoMetaN, i, 3, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_electric_furnace_off, decoMetaN, i, 3, 1, box); } placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 8, 1, 1, box); placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 2, 1, box); @@ -853,18 +853,18 @@ public class BunkerComponents { fillWithBlocks(world, box, i, 3, 2, i, 3, 4, ModBlocks.deco_lead); } placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 1, 4, box); - placeBlockAtCurrentPosition(world, ModBlocks.reactor_computer, 0, 8, 2, 4, box); + placeBlockAtCurrentPosition(world, Blocks.redstone_lamp, 0, 8, 2, 4, box); placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 3, 4, box); placeLever(world, box, 3, rand.nextBoolean(), 8, 2, 5); - placeBlockAtCurrentPosition(world, ModBlocks.reactor_element, 0, 8, 1, 3, box); - placeBlockAtCurrentPosition(world, ModBlocks.reactor_control, 0, 8, 2, 3, box); - placeBlockAtCurrentPosition(world, ModBlocks.reactor_element, 0, 8, 3, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_fuel, 0, 8, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_control, 0, 8, 2, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_fuel, 0, 8, 3, 3, box); placeBlockAtCurrentPosition(world, ModBlocks.block_copper, 0, 8, 1, 2, box); placeBlockAtCurrentPosition(world, ModBlocks.block_lead, 0, 8, 2, 2, box); placeBlockAtCurrentPosition(world, ModBlocks.block_copper, 0, 8, 3, 2, box); - placeBlockAtCurrentPosition(world, ModBlocks.reactor_conductor, 0, 8, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_channel, 0, 8, 1, 1, box); placeBlockAtCurrentPosition(world, ModBlocks.machine_turbine, 0, 8, 2, 1, box); - placeBlockAtCurrentPosition(world, ModBlocks.reactor_conductor, 0, 8, 3, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.pwr_channel, 0, 8, 3, 1, box); fillWithBlocks(world, box, 9, 1, 1, 9, 3, 1, ModBlocks.deco_steel); placeBlockAtCurrentPosition(world, ModBlocks.steel_grate, 7, 10, 1, 1, box); placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 10, 2, 1, box); diff --git a/src/main/resources/assets/hbm/models/machines/wood_burner.obj b/src/main/resources/assets/hbm/models/machines/wood_burner.obj new file mode 100644 index 000000000..9d9085591 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/wood_burner.obj @@ -0,0 +1,1112 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o Cylinder +v -0.292386 1.031250 0.845970 +v -0.465753 1.031250 0.917385 +v -0.465753 0.968750 0.917385 +v -0.292386 0.968750 0.845970 +v -0.187500 0.687500 0.937500 +v -0.187500 0.625000 1.000000 +v 0.187500 0.625000 1.000000 +v 0.187500 0.687500 0.937500 +v 0.163320 0.625000 0.875000 +v 0.000000 0.788320 0.875000 +v -0.163321 0.625000 0.875000 +v 0.000000 0.461679 0.875000 +v -0.438154 3.562500 -0.500000 +v -0.500000 3.562500 -0.561846 +v -0.561846 3.562500 -0.500000 +v -0.500000 3.562500 -0.438154 +v 0.687500 0.875000 -0.625000 +v 0.687500 0.875000 -0.250000 +v 0.687500 0.687500 -0.250000 +v 0.687500 0.000000 -0.250000 +v 0.687500 0.000000 -0.625000 +v -0.687500 0.000000 -0.250000 +v 0.562500 0.687500 -0.250000 +v -0.562500 0.687500 -0.250000 +v -0.687500 0.687500 -0.250000 +v -0.297517 0.484684 0.750000 +v -0.362222 0.372612 0.750000 +v 0.000000 0.275555 0.750000 +v 0.000000 0.404965 0.750000 +v -0.297518 1.515315 -0.812500 +v 0.297517 1.515316 -0.812500 +v 0.595035 1.000000 -0.812500 +v -0.297517 0.484685 -0.812500 +v -0.595035 1.000000 0.750000 +v -0.515316 1.297517 0.750000 +v -0.627388 1.362222 0.750000 +v -0.724444 1.000000 0.750000 +v -0.627387 0.637778 0.750000 +v -0.515315 0.702482 0.750000 +v -0.187500 0.687500 -0.625000 +v -0.187500 0.687500 -1.000000 +v -0.312500 0.687500 -1.000000 +v -0.562500 0.687500 -0.625000 +v -0.297518 1.515315 0.750000 +v -0.362223 1.627387 0.750000 +v 0.000000 0.404965 -0.750000 +v 0.000000 0.275556 -0.750000 +v -0.362222 0.372613 -0.750000 +v -0.297517 0.484685 -0.750000 +v 0.000000 1.595035 -0.750000 +v 0.000000 1.724445 -0.750000 +v 0.362222 1.627387 -0.750000 +v 0.297517 1.515316 -0.750000 +v -0.595035 1.000000 -0.750000 +v -0.515315 0.702482 -0.750000 +v -0.627387 0.637778 -0.750000 +v -0.724444 1.000000 -0.750000 +v -0.627388 1.362222 -0.750000 +v -0.515316 1.297517 -0.750000 +v -0.297518 1.515315 -0.750000 +v -0.362223 1.627387 -0.750000 +v 0.595035 1.000000 0.750000 +v 0.724444 1.000000 0.750000 +v 0.627387 1.362222 0.750000 +v 0.515315 1.297517 0.750000 +v -0.115485 0.740485 0.875000 +v -0.115485 0.740485 0.812500 +v -0.163321 0.625000 0.812500 +v 0.312500 1.156250 0.799556 +v 0.356694 1.156250 0.843750 +v 0.356694 1.031250 0.843750 +v 0.312500 1.031250 0.799556 +v 0.687500 0.875000 0.250000 +v 0.687500 0.875000 0.625000 +v 0.687500 -0.000000 0.625000 +v 0.687500 -0.000000 0.250000 +v 0.000000 1.430084 0.875000 +v 0.000000 1.430084 0.937500 +v 0.044194 1.385889 0.937500 +v 0.044194 1.385889 0.875000 +v -0.312500 1.187500 0.875000 +v -0.312500 1.187500 0.812500 +v -0.312500 0.812500 0.812500 +v -0.312500 0.812500 0.875000 +v 0.687500 0.687500 -1.000000 +v 0.687500 0.687500 -0.750000 +v 0.687500 0.000000 -0.750000 +v 0.687500 0.000000 -1.000000 +v 0.515315 0.702482 -0.750000 +v 0.627387 0.637778 -0.750000 +v 0.362222 0.372613 -0.750000 +v 0.297518 0.484685 -0.750000 +v 0.297517 1.515315 0.750000 +v 0.362222 1.627387 0.750000 +v 0.000000 1.724444 0.750000 +v 0.000000 1.595035 0.750000 +v 0.515315 0.702482 0.750000 +v 0.627387 0.637778 0.750000 +v 0.297518 0.484685 0.750000 +v 0.362222 0.372613 0.750000 +v 0.595035 1.000000 -0.750000 +v 0.724444 1.000000 -0.750000 +v -0.515316 1.297517 0.812500 +v -0.515315 0.702482 0.812500 +v 0.000000 0.404965 0.812500 +v 0.515315 1.297517 0.812500 +v 0.515315 1.297518 -0.750000 +v 0.627387 1.362222 -0.750000 +v -0.687500 0.875000 0.625000 +v -0.687500 -0.000000 0.625000 +v 0.312500 1.156250 0.887944 +v 0.268306 1.156250 0.843750 +v 0.268306 1.031250 0.843750 +v 0.312500 1.031250 0.887944 +v -0.044194 1.385889 0.875000 +v -0.044194 1.385889 0.937500 +v -0.187500 0.687500 0.875000 +v 0.187500 0.687500 0.875000 +v 0.250000 1.479639 0.875000 +v -0.250000 1.479639 0.875000 +v -0.250000 1.292139 0.875000 +v 0.250000 1.292139 0.875000 +v -0.687500 0.875000 -0.250000 +v -0.562500 0.875000 -0.250000 +v 0.562500 0.000000 -0.625000 +v 0.562500 0.687500 -0.625000 +v 0.562500 0.875000 -0.625000 +v -0.687500 0.000000 -1.000000 +v -0.687500 0.687500 -1.000000 +v 0.187500 0.687500 -1.000000 +v 0.312500 0.687500 -1.000000 +v 0.187500 0.750000 -0.937500 +v 0.187500 0.687500 -0.625000 +v -0.543732 3.937500 -0.456268 +v -0.561846 3.937500 -0.500000 +v -0.595671 3.937500 -0.500000 +v -0.567650 3.937500 -0.432350 +v 0.562500 0.875000 -0.250000 +v -0.687500 0.875000 0.250000 +v -0.687500 -0.000000 0.250000 +v 0.250000 1.479639 0.812500 +v 0.250000 1.292139 0.812500 +v 0.187500 0.750000 -0.625000 +v -0.187500 0.750000 -0.937500 +v -0.187500 0.750000 -0.625000 +v 0.115485 0.509515 0.875000 +v 0.115485 0.509515 0.812500 +v 0.163320 0.625000 0.812500 +v 0.312500 1.187500 0.812500 +v 0.312500 1.187500 0.875000 +v 0.312500 0.812500 0.875000 +v 0.312500 0.812500 0.812500 +v -0.115485 0.509515 0.875000 +v -0.115485 0.509515 0.812500 +v 0.000000 0.461679 0.812500 +v -0.489558 1.031250 0.859596 +v -0.316191 1.031250 0.788181 +v -0.316191 0.968750 0.788181 +v -0.489558 0.968750 0.859596 +v 0.000000 0.788320 0.812500 +v 0.115485 0.740485 0.875000 +v 0.115485 0.740485 0.812500 +v 0.000000 1.341695 0.875000 +v 0.000000 1.341695 0.937500 +v 0.312500 0.968750 0.887944 +v 0.268306 0.968750 0.843750 +v 0.268306 0.843750 0.843750 +v 0.312500 0.843750 0.887944 +v -0.187500 -0.000000 1.000000 +v 0.187500 -0.000000 1.000000 +v -0.687500 0.000000 -0.625000 +v -0.562500 0.000000 -0.625000 +v -0.687500 0.875000 -0.625000 +v -0.562500 0.875000 -0.625000 +v 0.356694 0.843750 0.843750 +v 0.312500 0.843750 0.799556 +v -0.250000 1.479639 0.812500 +v -0.250000 1.292139 0.812500 +v 0.187500 -0.000000 0.875000 +v -0.187500 -0.000000 0.875000 +v 0.312500 0.968750 0.799556 +v 0.356694 0.968750 0.843750 +v -0.567650 3.875000 -0.432350 +v -0.595671 3.875000 -0.500000 +v -0.663320 3.875000 -0.500000 +v -0.615485 3.875000 -0.384515 +v -0.500000 3.875000 -0.336680 +v -0.500000 3.875000 -0.404329 +v -0.384515 3.875000 -0.384515 +v -0.432350 3.875000 -0.432350 +v -0.543732 3.937500 -0.543732 +v -0.500000 3.937500 -0.561846 +v -0.500000 3.937500 -0.595671 +v -0.567650 3.937500 -0.567650 +v -0.336680 3.875000 -0.500000 +v -0.404329 3.875000 -0.500000 +v -0.500000 3.875000 -0.595671 +v -0.432350 3.875000 -0.567650 +v -0.384515 3.875000 -0.615485 +v -0.500000 3.875000 -0.663320 +v -0.456268 3.937500 -0.456268 +v -0.500000 3.937500 -0.438154 +v -0.500000 3.937500 -0.404329 +v -0.432350 3.937500 -0.432350 +v -0.567650 3.875000 -0.567650 +v -0.615485 3.875000 -0.615485 +v -0.456268 3.937500 -0.543732 +v -0.438154 3.937500 -0.500000 +v -0.404329 3.937500 -0.500000 +v -0.432350 3.937500 -0.567650 +v -0.687500 0.687500 -0.750000 +v -0.687500 0.000000 -0.750000 +v 0.297517 1.515315 0.812500 +v 0.000000 1.595035 0.812500 +v -0.297518 1.515315 0.812500 +v -0.595035 1.000000 0.812500 +v -0.297517 0.484684 0.812500 +v 0.297518 0.484685 0.812500 +v 0.515315 0.702482 0.812500 +v 0.595035 1.000000 0.812500 +v 0.000000 1.595035 -0.812500 +v 0.515315 1.297518 -0.812500 +v 0.515315 0.702482 -0.812500 +v 0.297518 0.484685 -0.812500 +v 0.000000 0.404965 -0.812500 +v -0.515315 0.702482 -0.812500 +v -0.595035 1.000000 -0.812500 +v -0.515316 1.297517 -0.812500 +v -0.456268 3.562500 -0.543732 +v -0.543732 3.562500 -0.543732 +v -0.543732 3.562500 -0.456268 +v -0.456268 3.562500 -0.456268 +v -0.336680 1.000000 -0.500000 +v -0.384515 1.000000 -0.615485 +v -0.384515 1.000000 -0.384515 +v -0.500000 1.000000 -0.336680 +v -0.663320 1.000000 -0.500000 +v -0.615485 1.000000 -0.384515 +v -0.500000 1.000000 -0.663320 +v -0.615485 1.000000 -0.615485 +vt 0.151724 0.294872 +vt 0.172414 0.282051 +vt 0.172414 0.294872 +vt 0.358621 0.294872 +vt 0.400000 0.307692 +vt 0.358621 0.307692 +vt 0.141623 0.191624 +vt 0.141623 0.128949 +vt 0.158480 0.160287 +vt 0.131269 0.551147 +vt 0.130943 0.526053 +vt 0.137855 0.538297 +vt 0.972414 0.358974 +vt 0.896552 0.358974 +vt 0.896552 0.282051 +vt 0.882759 0.500000 +vt 0.758621 0.500000 +vt 0.468966 1.000000 +vt 0.503448 0.974359 +vt 0.496552 1.000000 +vt 0.608602 0.714253 +vt 0.510620 0.609091 +vt 0.608602 0.503929 +vt 0.344828 1.000000 +vt 0.379310 0.974359 +vt 0.372414 1.000000 +vt 0.386207 1.000000 +vt 0.420690 0.974359 +vt 0.413793 1.000000 +vt 0.324138 0.641026 +vt 0.337931 0.564103 +vt 0.365517 0.641026 +vt 0.303448 1.000000 +vt 0.337931 0.974359 +vt 0.331034 1.000000 +vt 0.503448 0.666667 +vt 0.468966 0.641026 +vt 0.496552 0.641026 +vt 0.255172 0.666667 +vt 0.220690 0.641026 +vt 0.248276 0.641026 +vt 0.386207 0.641026 +vt 0.420690 0.666667 +vt 0.379310 0.666667 +vt 0.344828 0.641026 +vt 0.372414 0.641026 +vt 0.303448 0.641026 +vt 0.337931 0.666667 +vt 0.296552 0.666667 +vt 0.131034 0.974359 +vt 0.165517 1.000000 +vt 0.137931 1.000000 +vt 0.462069 0.666667 +vt 0.427586 0.641026 +vt 0.455172 0.641026 +vt 0.193103 0.217949 +vt 0.206897 0.205128 +vt 0.206897 0.217949 +vt 0.289655 0.256410 +vt 0.296552 0.230769 +vt 0.296552 0.256410 +vt 0.993103 0.807692 +vt 0.896552 0.730769 +vt 0.993103 0.730769 +vt 0.131034 0.320513 +vt 0.137931 0.333333 +vt 0.131034 0.333333 +vt 0.179310 0.320513 +vt 0.186207 0.243590 +vt 0.186207 0.320513 +vt 0.200000 0.564103 +vt 0.227586 0.423077 +vt 0.227586 0.564103 +vt 0.089655 0.666667 +vt 0.055172 0.641026 +vt 0.082759 0.641026 +vt 0.213793 0.974359 +vt 0.248276 1.000000 +vt 0.220690 1.000000 +vt 0.089655 0.974359 +vt 0.124138 1.000000 +vt 0.096552 1.000000 +vt 0.048276 0.666667 +vt 0.013793 0.641026 +vt 0.041379 0.641026 +vt 0.055172 1.000000 +vt 0.082759 1.000000 +vt 0.013793 1.000000 +vt 0.048276 0.974359 +vt 0.041379 1.000000 +vt 0.262069 0.641026 +vt 0.427586 1.000000 +vt 0.462069 0.974359 +vt 0.455172 1.000000 +vt 0.124138 0.641026 +vt 0.096552 0.641026 +vt 0.520523 0.805999 +vt 0.631502 0.925110 +vt 0.520523 0.925110 +vt 0.172414 0.974359 +vt 0.206897 1.000000 +vt 0.179310 1.000000 +vt 0.255172 0.974359 +vt 0.289655 1.000000 +vt 0.262069 1.000000 +vt 0.179310 0.641026 +vt 0.213793 0.666667 +vt 0.172414 0.666667 +vt 0.744828 0.987179 +vt 0.896552 0.807692 +vt 0.896552 0.987179 +vt 0.275862 0.256410 +vt 0.282759 0.230769 +vt 0.282759 0.256410 +vt 0.124138 0.320513 +vt 0.131034 0.307692 +vt 0.400000 0.320513 +vt 0.358621 0.320513 +vt 0.137931 0.397436 +vt 0.193103 0.358974 +vt 0.193103 0.397436 +vt 0.744828 0.500000 +vt 0.758621 0.538462 +vt 0.744828 0.538462 +vt 0.882759 0.282051 +vt 0.882759 0.141026 +vt 0.137931 0.641026 +vt 0.165517 0.641026 +vt 0.413793 0.307692 +vt 0.406897 0.307692 +vt 0.400000 0.294872 +vt 0.282759 0.564103 +vt 0.268966 0.564103 +vt 0.434483 0.576923 +vt 0.427586 0.641026 +vt 0.427586 0.564103 +vt 0.044010 0.634626 +vt 0.037931 0.628205 +vt 0.044828 0.628205 +vt 0.268966 0.256410 +vt 0.275862 0.230769 +vt 0.896552 0.538462 +vt 0.896552 0.500000 +vt 0.648276 0.730769 +vt 0.744828 0.807692 +vt 0.648276 0.807692 +vt 0.200000 0.358974 +vt 0.200000 0.397436 +vt 0.475862 0.641026 +vt 0.434483 0.641026 +vt 0.227586 0.615385 +vt 0.475862 0.576923 +vt 0.482759 0.641026 +vt 0.137931 0.217949 +vt 0.151724 0.205128 +vt 0.151724 0.217949 +vt 0.255172 0.320513 +vt 0.262069 0.243590 +vt 0.262069 0.320513 +vt 0.220690 0.217949 +vt 0.234483 0.205128 +vt 0.234483 0.217949 +vt 0.255172 0.243590 +vt 0.186207 0.230769 +vt 0.255172 0.230769 +vt 0.172414 0.307692 +vt 0.151724 0.320513 +vt 0.151724 0.307692 +vt 0.179310 0.217949 +vt 0.193103 0.205128 +vt 0.200000 0.423077 +vt 0.186207 0.564103 +vt 0.186207 0.423077 +vt 0.744828 0.730769 +vt 0.165517 0.205128 +vt 0.165517 0.217949 +vt 0.137931 0.307692 +vt 0.131034 0.294872 +vt 0.137931 0.294872 +vt 0.137931 0.320513 +vt 0.144828 0.307692 +vt 0.144828 0.320513 +vt 0.275862 0.320513 +vt 0.282759 0.294872 +vt 0.282759 0.320513 +vt 0.400000 0.166667 +vt 0.758621 0.282051 +vt 0.668966 0.358974 +vt 0.648276 0.282051 +vt 0.744828 0.282051 +vt 0.144828 0.294872 +vt 0.151724 0.282051 +vt 0.275862 0.217949 +vt 0.282759 0.217949 +vt 0.289655 0.230769 +vt 0.744828 0.102564 +vt 0.758621 0.102564 +vt 0.758621 0.141026 +vt 0.275862 0.269231 +vt 0.282759 0.269231 +vt 0.275862 0.282051 +vt 0.282759 0.282051 +vt 0.131034 0.397436 +vt 0.137931 0.358974 +vt 0.358621 0.141026 +vt 0.400000 0.141026 +vt 0.255172 0.333333 +vt 0.186207 0.333333 +vt 0.413793 0.166667 +vt 0.193103 0.410256 +vt 0.137931 0.410256 +vt 0.896552 0.551282 +vt 0.744828 0.551282 +vt 0.275862 0.333333 +vt 0.282759 0.333333 +vt 0.151724 0.269231 +vt 0.172414 0.269231 +vt 0.124138 0.217949 +vt 0.137931 0.205128 +vt 0.137931 0.346154 +vt 0.193103 0.346154 +vt 0.044828 0.615385 +vt 0.034483 0.602564 +vt 0.048276 0.602564 +vt 0.051724 0.615385 +vt 0.062069 0.602564 +vt 0.058621 0.615385 +vt 0.072414 0.615385 +vt 0.065517 0.615385 +vt 0.016435 0.634626 +vt 0.010345 0.628205 +vt 0.017241 0.628205 +vt 0.079310 0.615385 +vt 0.089655 0.602564 +vt 0.086207 0.615385 +vt 0.025002 0.634626 +vt 0.031034 0.628205 +vt 0.030223 0.634626 +vt 0.106897 0.615385 +vt 0.117241 0.602564 +vt 0.113793 0.615385 +vt 0.071585 0.634626 +vt 0.065517 0.628205 +vt 0.072414 0.628205 +vt 0.179310 0.205128 +vt 0.434483 0.564103 +vt 0.475862 0.564103 +vt 0.100000 0.615385 +vt 0.093103 0.615385 +vt 0.017241 0.615385 +vt 0.006897 0.602564 +vt 0.020690 0.602564 +vt 0.024138 0.615385 +vt 0.031034 0.615385 +vt 0.099160 0.634626 +vt 0.093103 0.628205 +vt 0.100000 0.628205 +vt 0.107726 0.634626 +vt 0.113793 0.628205 +vt 0.112947 0.634626 +vt 0.052577 0.634626 +vt 0.058621 0.628205 +vt 0.057798 0.634626 +vt 0.080151 0.634626 +vt 0.086207 0.628205 +vt 0.085373 0.634626 +vt 0.220690 0.205128 +vt 0.420690 0.564103 +vt 0.406897 0.423077 +vt 0.420690 0.423077 +vt 0.289655 0.320513 +vt 0.296552 0.294872 +vt 0.296552 0.320513 +vt 0.303448 0.307692 +vt 0.344828 0.166667 +vt 0.344828 0.307692 +vt 0.268966 0.320513 +vt 0.275862 0.294872 +vt 0.289655 0.294872 +vt 0.608049 0.968708 +vt 0.576012 0.984666 +vt 0.543975 0.968708 +vt 0.511939 0.865555 +vt 0.543975 0.762401 +vt 0.576012 0.746443 +vt 0.608049 0.762401 +vt 0.631502 0.805999 +vt 0.640086 0.865555 +vt 0.575941 0.730521 +vt 0.543281 0.714253 +vt 0.519371 0.669806 +vt 0.519371 0.548376 +vt 0.543281 0.503929 +vt 0.575941 0.487661 +vt 0.632511 0.548376 +vt 0.641262 0.609091 +vt 0.632511 0.669806 +vt 0.351724 0.307692 +vt 0.282759 0.641026 +vt 0.379310 0.564103 +vt 0.379310 0.423077 +vt 0.379310 0.615385 +vt 0.241379 0.641026 +vt 0.482759 0.564103 +vt 0.153543 0.182446 +vt 0.129703 0.182446 +vt 0.124765 0.160287 +vt 0.129703 0.138128 +vt 0.153543 0.138128 +vt 0.135994 0.547258 +vt 0.126448 0.547686 +vt 0.124356 0.538902 +vt 0.126218 0.529942 +vt 0.135763 0.529514 +vt 0.227586 0.371795 +vt 0.241379 0.346154 +vt 0.993103 0.282051 +vt 0.993103 0.358974 +vt 0.744828 0.358974 +vt 0.324138 0.564103 +vt 0.296552 0.974359 +vt 0.413793 0.641026 +vt 0.331034 0.641026 +vt 0.179310 0.243590 +vt 0.006897 0.666667 +vt 0.006897 0.974359 +vt 0.289655 0.641026 +vt 0.131034 0.666667 +vt 0.206897 0.641026 +vt 0.124138 0.307692 +vt 0.882759 0.102564 +vt 0.896552 0.102564 +vt 0.038789 0.634626 +vt 0.268966 0.230769 +vt 0.882759 0.538462 +vt 0.172414 0.320513 +vt 0.358621 0.166667 +vt 0.648276 0.358974 +vt 0.144828 0.282051 +vt 0.131034 0.358974 +vt 0.124138 0.205128 +vt 0.037931 0.615385 +vt 0.075862 0.602564 +vt 0.011214 0.634626 +vt 0.024138 0.628205 +vt 0.103448 0.602564 +vt 0.066364 0.634626 +vt 0.010345 0.615385 +vt 0.093939 0.634626 +vt 0.106897 0.628205 +vt 0.051724 0.628205 +vt 0.079310 0.628205 +vt 0.406897 0.564103 +vt 0.303448 0.166667 +vt 0.268966 0.294872 +vt 0.365517 0.346154 +vt 0.379310 0.371795 +vt 0.103448 0.012821 +vt 0.372414 0.051282 +vt 0.337931 0.038462 +vt 0.372414 0.038462 +vt 0.131034 0.012821 +vt 0.165517 0.025641 +vt 0.131034 0.025641 +vt 0.158621 0.564103 +vt 0.165517 0.641026 +vt 0.158621 0.641026 +vt 0.406897 0.051282 +vt 0.406897 0.038462 +vt 0.200000 0.051282 +vt 0.165517 0.038462 +vt 0.200000 0.038462 +vt 0.089655 0.012821 +vt 0.137931 0.564103 +vt 0.144828 0.641026 +vt 0.137931 0.641026 +vt 0.234483 0.051282 +vt 0.234483 0.038462 +vt 0.165517 0.564103 +vt 0.172414 0.641026 +vt 0.151724 0.564103 +vt 0.151724 0.641026 +vt 0.124138 0.564103 +vt 0.131034 0.641026 +vt 0.124138 0.641026 +vt 0.441379 0.012821 +vt 0.475862 0.025641 +vt 0.441379 0.025641 +vt 0.075862 0.012821 +vt 0.268966 0.012821 +vt 0.303448 0.025641 +vt 0.268966 0.025641 +vt 0.048276 0.012821 +vt 0.475862 0.012821 +vt 0.510345 0.025641 +vt 0.165517 0.051282 +vt 0.131034 0.038462 +vt 0.544828 0.051282 +vt 0.510345 0.038462 +vt 0.544828 0.038462 +vt 0.200000 0.012821 +vt 0.234483 0.025641 +vt 0.200000 0.025641 +vt 0.406897 0.012821 +vt 0.406897 0.025641 +vt 0.172414 0.564103 +vt 0.179310 0.641026 +vt 0.510345 0.012821 +vt 0.544828 0.025641 +vt 0.372414 0.012821 +vt 0.372414 0.025641 +vt 0.131034 0.564103 +vt 0.144828 0.564103 +vt 0.303448 0.012821 +vt 0.337931 0.025641 +vt 0.337931 0.012821 +vt 0.234483 0.012821 +vt 0.117241 0.012821 +vt 0.337931 0.051282 +vt 0.303448 0.038462 +vt 0.268966 0.051282 +vt 0.268966 0.038462 +vt 0.062069 0.012821 +vt 0.510345 0.051282 +vt 0.475862 0.038462 +vt 0.441379 0.051282 +vt 0.441379 0.038462 +vt 0.475862 0.051282 +vt 0.020690 0.012821 +vt 0.034483 0.012821 +vt 0.165517 0.012821 +vt 0.303448 0.051282 +vt 0.131034 0.051282 +vt 0.179310 0.564103 +vt 0.544828 0.012821 +vt 0.006897 0.012821 +vn 0.3809 0.0000 0.9246 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9239 0.3827 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.7071 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.3809 0.0000 -0.9246 +vn -0.3827 0.9239 0.0000 +vn 0.7071 -0.0000 0.7071 +vn 0.9239 0.3827 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.9246 0.0000 0.3809 +vn 0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.9239 -0.3827 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 -0.0000 +vn 0.5000 -0.8660 -0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.8660 -0.5000 -0.0000 +vn 0.8660 0.5000 0.0000 +s off +f 2/1/1 4/2/1 1/3/1 +f 6/4/2 8/5/2 5/6/2 +f 10/7/3 12/8/3 9/9/3 +f 14/10/4 16/11/4 13/12/4 +f 19/13/5 20/14/5 21/15/5 +f 20/14/3 23/16/3 24/17/3 +f 26/18/3 28/19/3 29/20/3 +f 30/21/6 32/22/6 33/23/6 +f 35/24/3 37/25/3 34/26/3 +f 34/27/3 38/28/3 39/29/3 +f 40/30/4 42/31/4 43/32/4 +f 44/33/3 36/34/3 35/35/3 +f 47/36/6 49/37/6 46/38/6 +f 51/39/6 53/40/6 50/41/6 +f 54/42/6 56/43/6 57/44/6 +f 57/44/6 59/45/6 54/46/6 +f 60/47/6 58/48/6 61/49/6 +f 63/50/3 65/51/3 62/52/3 +f 48/53/6 55/54/6 49/55/6 +f 66/56/7 68/57/7 11/58/7 +f 70/59/8 72/60/8 69/61/8 +f 74/62/5 76/63/5 73/64/5 +f 78/65/9 80/66/9 77/67/9 +f 82/68/10 84/69/10 81/70/10 +f 86/71/5 88/72/5 85/73/5 +f 90/74/6 92/75/6 89/76/6 +f 94/77/3 96/78/3 93/79/3 +f 98/80/3 62/81/3 97/82/3 +f 91/83/6 46/84/6 92/85/6 +f 99/86/3 98/80/3 97/87/3 +f 29/88/3 100/89/3 99/90/3 +f 50/91/6 61/49/6 51/39/6 +f 39/92/3 27/93/3 26/94/3 +f 101/95/6 90/74/6 89/96/6 +f 104/97/3 106/98/3 103/99/3 +f 64/100/3 93/101/3 65/102/3 +f 95/103/3 44/104/3 96/105/3 +f 107/106/6 52/107/6 108/108/6 +f 109/109/3 75/110/3 74/111/3 +f 112/112/11 114/113/11 111/114/11 +f 77/115/12 116/116/12 78/65/12 +f 5/6/4 118/117/4 117/118/4 +f 120/119/3 122/120/3 119/121/3 +f 25/122/3 124/123/3 123/124/3 +f 21/15/6 125/125/6 126/126/6 +f 108/108/6 101/127/6 107/128/6 +f 118/129/5 8/130/5 7/131/5 +f 130/132/6 131/133/6 88/72/6 +f 132/134/5 133/135/5 130/136/5 +f 134/137/4 136/138/4 137/139/4 +f 69/140/13 113/141/13 112/112/13 +f 18/142/3 23/16/3 19/143/3 +f 139/144/10 110/145/10 109/146/10 +f 119/121/5 142/147/5 141/148/5 +f 132/134/4 145/149/4 143/150/4 +f 86/151/4 85/73/4 131/133/4 +f 144/152/10 40/153/10 145/149/10 +f 146/154/14 148/155/14 9/156/14 +f 150/157/5 152/158/5 149/159/5 +f 153/160/15 155/161/15 12/162/15 +f 151/163/16 83/164/16 152/165/16 +f 157/166/17 159/167/17 156/168/17 +f 10/169/18 67/170/18 66/56/18 +f 87/171/19 126/172/19 125/173/19 +f 75/110/16 140/174/16 76/63/16 +f 9/156/20 162/175/20 161/176/20 +f 164/177/21 115/178/21 163/179/21 +f 79/180/22 163/181/22 80/182/22 +f 166/183/11 168/184/11 165/185/11 +f 6/4/3 170/186/3 7/131/3 +f 172/187/16 125/125/16 20/14/16 +f 25/188/10 173/189/10 171/190/10 +f 156/191/23 3/192/23 2/1/23 +f 79/180/3 116/116/3 164/177/3 +f 114/113/16 72/193/16 71/194/16 +f 111/114/19 71/195/19 70/59/19 +f 173/196/6 174/197/6 43/198/6 +f 69/199/4 111/114/4 70/200/4 +f 168/184/16 176/201/16 175/202/16 +f 177/203/10 121/204/10 120/119/10 +f 170/186/16 180/205/16 179/206/16 +f 81/70/4 149/207/4 82/208/4 +f 179/209/5 7/131/5 170/186/5 +f 120/119/4 141/210/4 177/211/4 +f 73/212/6 140/174/6 139/213/6 +f 181/214/4 165/185/4 182/215/4 +f 4/2/16 159/216/16 158/217/16 +f 81/70/3 151/163/3 150/157/3 +f 12/218/24 147/219/24 146/154/24 +f 122/120/16 178/220/16 142/221/16 +f 183/222/4 185/223/4 186/224/4 +f 183/225/4 187/226/4 188/227/4 +f 187/226/4 190/228/4 188/229/4 +f 191/230/4 193/231/4 194/232/4 +f 190/233/4 195/234/4 196/235/4 +f 191/236/4 136/237/4 135/238/4 +f 198/239/4 200/240/4 197/241/4 +f 201/242/4 203/243/4 204/244/4 +f 161/176/25 160/245/25 10/169/25 +f 144/152/26 130/246/26 41/247/26 +f 195/234/4 198/248/4 196/249/4 +f 205/250/4 200/251/4 206/252/4 +f 205/253/4 185/223/4 184/254/4 +f 207/255/4 209/256/4 210/257/4 +f 207/258/4 193/259/4 192/260/4 +f 134/261/4 203/262/4 202/263/4 +f 201/264/4 209/265/4 208/266/4 +f 2/1/4 157/166/4 156/168/4 +f 11/58/27 154/267/27 153/160/27 +f 43/268/11 212/269/11 172/270/11 +f 182/271/8 176/272/8 181/273/8 +f 118/274/6 180/275/6 117/276/6 +f 181/277/13 167/278/13 166/183/13 +f 165/185/19 175/279/19 182/271/19 +f 106/98/3 213/280/3 103/99/3 +f 213/280/3 214/281/3 103/99/3 +f 214/281/3 215/282/3 103/99/3 +f 103/99/3 216/283/3 104/97/3 +f 104/97/3 217/284/3 105/285/3 +f 105/285/3 218/286/3 219/287/3 +f 219/287/3 220/288/3 105/285/3 +f 220/288/3 106/98/3 105/285/3 +f 30/21/6 221/289/6 31/290/6 +f 31/290/6 222/291/6 32/22/6 +f 32/22/6 223/292/6 224/293/6 +f 224/293/6 225/294/6 32/22/6 +f 225/294/6 33/23/6 32/22/6 +f 33/23/6 226/295/6 227/296/6 +f 227/296/6 228/297/6 33/23/6 +f 228/297/6 30/21/6 33/23/6 +f 6/4/10 5/298/10 117/276/10 +f 180/275/10 6/4/10 117/276/10 +f 133/299/4 131/133/4 130/132/4 +f 132/134/5 143/150/5 133/135/5 +f 212/269/10 129/300/10 128/301/10 +f 42/31/4 129/300/4 211/302/4 +f 211/302/4 43/32/4 42/31/4 +f 126/303/4 86/151/4 131/133/4 +f 144/152/10 41/304/10 40/153/10 +f 9/9/3 161/305/3 10/7/3 +f 10/7/3 66/306/3 11/307/3 +f 11/307/3 153/308/3 12/8/3 +f 12/8/3 146/309/3 9/9/3 +f 13/12/4 229/310/4 14/10/4 +f 14/10/4 230/311/4 15/312/4 +f 15/312/4 231/313/4 16/11/4 +f 16/11/4 232/314/4 13/12/4 +f 88/72/16 87/315/16 125/316/16 +f 2/1/1 3/192/1 4/2/1 +f 6/4/2 7/131/2 8/5/2 +f 10/7/3 11/307/3 12/8/3 +f 14/10/4 15/312/4 16/11/4 +f 21/15/5 17/317/5 19/13/5 +f 17/317/5 18/318/5 19/13/5 +f 25/122/3 22/319/3 24/17/3 +f 22/319/3 20/14/3 24/17/3 +f 20/14/3 19/143/3 23/16/3 +f 26/18/3 27/93/3 28/19/3 +f 30/21/6 31/290/6 32/22/6 +f 35/24/3 36/34/3 37/25/3 +f 34/27/3 37/25/3 38/28/3 +f 40/30/4 41/320/4 42/31/4 +f 44/33/3 45/321/3 36/34/3 +f 47/36/6 48/53/6 49/37/6 +f 51/39/6 52/107/6 53/40/6 +f 54/42/6 55/322/6 56/43/6 +f 57/44/6 58/48/6 59/45/6 +f 60/47/6 59/323/6 58/48/6 +f 63/50/3 64/100/3 65/51/3 +f 48/53/6 56/43/6 55/54/6 +f 66/56/7 67/170/7 68/57/7 +f 70/59/8 71/195/8 72/60/8 +f 74/62/5 75/110/5 76/63/5 +f 78/65/9 79/180/9 80/66/9 +f 82/68/10 83/324/10 84/69/10 +f 86/71/5 87/171/5 88/72/5 +f 90/74/6 91/83/6 92/75/6 +f 94/77/3 95/103/3 96/78/3 +f 98/80/3 63/50/3 62/81/3 +f 91/83/6 47/325/6 46/84/6 +f 99/86/3 100/89/3 98/80/3 +f 29/88/3 28/326/3 100/89/3 +f 50/91/6 60/327/6 61/49/6 +f 39/92/3 38/28/3 27/93/3 +f 101/95/6 102/328/6 90/74/6 +f 104/97/3 105/285/3 106/98/3 +f 64/100/3 94/77/3 93/101/3 +f 95/103/3 45/321/3 44/104/3 +f 107/106/6 53/329/6 52/107/6 +f 109/109/3 110/145/3 75/110/3 +f 112/112/11 113/141/11 114/113/11 +f 77/115/12 115/330/12 116/116/12 +f 5/6/4 8/5/4 118/117/4 +f 120/119/3 121/204/3 122/120/3 +f 25/122/3 24/17/3 124/123/3 +f 127/331/6 17/332/6 126/126/6 +f 17/332/6 21/15/6 126/126/6 +f 108/108/6 102/328/6 101/127/6 +f 88/72/6 128/301/6 41/320/6 +f 128/301/6 129/300/6 42/31/6 +f 42/31/6 41/320/6 128/301/6 +f 41/320/6 130/132/6 88/72/6 +f 131/133/6 85/73/6 88/72/6 +f 134/137/4 135/333/4 136/138/4 +f 69/140/13 72/334/13 113/141/13 +f 18/142/3 138/335/3 23/16/3 +f 139/144/10 140/174/10 110/145/10 +f 119/121/5 122/120/5 142/147/5 +f 132/134/4 144/152/4 145/149/4 +f 146/154/14 147/219/14 148/155/14 +f 150/157/5 151/163/5 152/158/5 +f 153/160/15 154/267/15 155/161/15 +f 151/163/16 84/69/16 83/164/16 +f 157/166/17 158/336/17 159/167/17 +f 10/169/18 160/245/18 67/170/18 +f 87/171/19 86/71/19 126/172/19 +f 75/110/16 110/145/16 140/174/16 +f 9/156/20 148/155/20 162/175/20 +f 164/177/21 116/116/21 115/178/21 +f 79/180/22 164/177/22 163/181/22 +f 166/183/11 167/278/11 168/184/11 +f 6/4/3 169/337/3 170/186/3 +f 125/125/16 21/15/16 20/14/16 +f 20/14/16 22/319/16 172/187/16 +f 22/319/16 171/190/16 172/187/16 +f 171/190/10 22/319/10 25/188/10 +f 25/188/10 123/338/10 173/189/10 +f 156/191/23 159/339/23 3/192/23 +f 79/180/3 78/65/3 116/116/3 +f 114/113/16 113/141/16 72/193/16 +f 111/114/19 114/113/19 71/195/19 +f 172/187/6 171/190/6 43/198/6 +f 171/190/6 173/196/6 43/198/6 +f 69/199/4 112/112/4 111/114/4 +f 168/184/16 167/278/16 176/201/16 +f 177/203/10 178/340/10 121/204/10 +f 170/186/16 169/337/16 180/205/16 +f 81/70/4 150/157/4 149/207/4 +f 179/209/5 118/129/5 7/131/5 +f 120/119/4 119/121/4 141/210/4 +f 73/212/6 76/63/6 140/174/6 +f 181/214/4 166/183/4 165/185/4 +f 4/2/16 3/192/16 159/216/16 +f 81/70/3 84/69/3 151/163/3 +f 12/218/24 155/341/24 147/219/24 +f 122/120/16 121/204/16 178/220/16 +f 183/222/4 184/342/4 185/223/4 +f 183/225/4 186/224/4 187/226/4 +f 187/226/4 189/343/4 190/228/4 +f 191/230/4 192/344/4 193/231/4 +f 190/233/4 189/343/4 195/234/4 +f 191/236/4 194/345/4 136/237/4 +f 198/239/4 199/346/4 200/240/4 +f 201/242/4 202/347/4 203/243/4 +f 161/176/25 162/175/25 160/245/25 +f 144/152/26 132/134/26 130/246/26 +f 195/234/4 199/346/4 198/248/4 +f 205/250/4 197/348/4 200/251/4 +f 205/253/4 206/252/4 185/223/4 +f 207/255/4 208/349/4 209/256/4 +f 207/258/4 210/350/4 193/259/4 +f 134/261/4 137/351/4 203/262/4 +f 201/264/4 204/352/4 209/265/4 +f 2/1/4 1/3/4 157/166/4 +f 11/58/27 68/57/27 154/267/27 +f 43/268/11 211/353/11 212/269/11 +f 182/271/8 175/279/8 176/272/8 +f 118/274/6 179/354/6 180/275/6 +f 181/277/13 176/355/13 167/278/13 +f 165/185/19 168/184/19 175/279/19 +f 180/275/10 169/337/10 6/4/10 +f 133/299/4 126/303/4 131/133/4 +f 212/269/10 211/353/10 129/300/10 +f 125/316/16 172/356/16 128/301/16 +f 172/356/16 212/357/16 128/301/16 +f 128/301/16 88/72/16 125/316/16 +s 1 +f 95/103/4 61/49/28 45/321/28 +f 36/34/29 57/44/10 37/25/10 +f 195/234/5 234/358/8 199/346/8 +f 94/77/30 51/39/4 95/103/4 +f 27/93/31 47/36/16 28/19/16 +f 100/89/32 47/325/16 91/83/32 +f 215/359/28 96/360/4 44/361/28 +f 225/362/16 92/363/32 46/364/16 +f 231/365/8 135/366/5 134/367/8 +f 103/368/29 44/361/28 35/369/29 +f 204/244/19 188/229/3 190/228/19 +f 219/370/33 99/371/32 97/372/33 +f 37/25/10 56/43/34 38/28/34 +f 203/262/3 183/225/11 188/227/3 +f 189/343/19 233/373/5 195/234/5 +f 13/374/10 201/375/13 208/376/10 +f 220/377/5 97/372/33 62/378/5 +f 15/379/5 191/380/19 135/366/5 +f 137/139/11 184/342/10 183/222/11 +f 16/381/6 134/367/8 202/382/6 +f 136/237/10 205/253/13 184/254/10 +f 98/80/33 102/328/5 63/50/5 +f 36/34/29 61/49/28 58/48/29 +f 14/383/3 207/384/11 192/385/3 +f 227/386/10 55/387/34 54/388/10 +f 187/226/3 235/389/19 189/343/19 +f 222/390/35 53/391/30 107/392/35 +f 185/223/10 238/393/11 186/224/11 +f 226/394/34 49/395/31 55/387/34 +f 193/259/6 198/239/8 197/241/6 +f 218/396/32 29/397/16 99/371/32 +f 105/398/16 26/399/31 29/400/16 +f 223/401/33 101/402/5 89/403/33 +f 228/404/29 54/388/10 59/405/29 +f 230/406/19 192/407/3 191/380/19 +f 33/408/31 46/409/16 49/395/31 +f 30/410/28 59/405/29 60/411/28 +f 38/28/34 48/53/31 27/93/31 +f 63/50/5 108/108/35 64/100/35 +f 229/412/11 208/376/10 207/384/11 +f 209/265/5 190/233/19 196/235/5 +f 232/413/13 202/382/6 201/375/13 +f 31/414/30 50/415/4 53/391/30 +f 221/416/4 60/411/28 50/415/4 +f 210/257/8 196/249/5 198/248/8 +f 32/417/5 107/392/35 101/402/5 +f 199/346/8 239/418/6 200/240/6 +f 214/419/4 93/420/30 96/360/4 +f 106/421/35 62/378/5 65/422/35 +f 194/232/13 197/348/6 205/250/13 +f 98/80/33 91/83/32 90/74/33 +f 64/100/35 52/107/30 94/77/30 +f 186/224/11 236/423/3 187/226/3 +f 217/424/31 39/425/34 26/399/31 +f 216/426/10 35/369/29 34/427/10 +f 104/428/34 34/427/10 39/425/34 +f 200/251/6 240/429/13 206/252/13 +f 206/252/13 237/430/10 185/223/10 +f 224/431/32 89/403/33 92/363/32 +f 213/432/30 65/422/35 93/420/30 +f 95/103/4 51/39/4 61/49/28 +f 36/34/29 58/48/29 57/44/10 +f 195/234/5 233/373/5 234/358/8 +f 94/77/30 52/107/30 51/39/4 +f 27/93/31 48/53/31 47/36/16 +f 100/89/32 28/326/16 47/325/16 +f 215/359/28 214/419/4 96/360/4 +f 225/362/16 224/431/32 92/363/32 +f 231/365/8 15/379/5 135/366/5 +f 103/368/29 215/359/28 44/361/28 +f 204/244/19 203/243/3 188/229/3 +f 219/370/33 218/396/32 99/371/32 +f 37/25/10 57/44/10 56/43/34 +f 203/262/3 137/351/11 183/225/11 +f 189/343/19 235/389/19 233/373/5 +f 13/374/10 232/413/13 201/375/13 +f 220/377/5 219/370/33 97/372/33 +f 15/379/5 230/406/19 191/380/19 +f 137/139/11 136/138/10 184/342/10 +f 16/381/6 231/365/8 134/367/8 +f 136/237/10 194/345/13 205/253/13 +f 98/80/33 90/74/33 102/328/5 +f 36/34/29 45/321/28 61/49/28 +f 14/383/3 229/412/11 207/384/11 +f 227/386/10 226/394/34 55/387/34 +f 187/226/3 236/423/3 235/389/19 +f 222/390/35 31/414/30 53/391/30 +f 185/223/10 237/430/10 238/393/11 +f 226/394/34 33/408/31 49/395/31 +f 193/259/6 210/350/8 198/239/8 +f 218/396/32 105/433/16 29/397/16 +f 105/398/16 217/424/31 26/399/31 +f 223/401/33 32/417/5 101/402/5 +f 228/404/29 227/386/10 54/388/10 +f 230/406/19 14/434/3 192/407/3 +f 33/408/31 225/435/16 46/409/16 +f 30/410/28 228/404/29 59/405/29 +f 38/28/34 56/43/34 48/53/31 +f 63/50/5 102/328/5 108/108/35 +f 229/412/11 13/374/10 208/376/10 +f 209/265/5 204/352/19 190/233/19 +f 232/413/13 16/381/6 202/382/6 +f 31/414/30 221/416/4 50/415/4 +f 221/416/4 30/410/28 60/411/28 +f 210/257/8 209/256/5 196/249/5 +f 32/417/5 222/390/35 107/392/35 +f 199/346/8 234/358/8 239/418/6 +f 214/419/4 213/432/30 93/420/30 +f 106/421/35 220/377/5 62/378/5 +f 194/232/13 193/231/6 197/348/6 +f 98/80/33 100/89/32 91/83/32 +f 64/100/35 108/108/35 52/107/30 +f 186/224/11 238/393/11 236/423/3 +f 217/424/31 104/428/34 39/425/34 +f 216/426/10 103/368/29 35/369/29 +f 104/428/34 216/426/10 34/427/10 +f 200/251/6 239/436/6 240/429/13 +f 206/252/13 240/429/13 237/430/10 +f 224/431/32 223/401/33 89/403/33 +f 213/432/30 106/421/35 65/422/35 diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off.png b/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off.png deleted file mode 100644 index 88988d8af67e019acc56be8329a53ccea32d0412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmV-<0fzpGP)-9XgQ`MA5)}9GY-65h)LP#K+#S2!?qgSy`OVBg z64Nxn-BAEQL_iXc#{(o6OlqxARm}5@&1M64$MJZCs-o745(&{^7>19t1Hk2SS-eY7 zYz6!lEw-#L&gV1SJt?-uODQR8FwO#IhSTW;5y^zm!pzb-Rn2B*_R^qbvHlm<4zxIT zhqRy;yzabqC&!9P<2b_1mJ0v66C<``bzS!wq1Fl!ftf)>aJ$|9b)fJ2Ws|nsw`2gg z-|xwSBucCLe!s_dyImy2q6O~xeC9YLmo^>_hZL`rlIOo7x3L9<1FD*=NajAQ3jn|m X2dvZUp8KPL00000NkvXXu0mjfLqDcI diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_coal_front_off_alt.png deleted file mode 100644 index 696252554b8666ec49b19ea6b2437502ac7ce1d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481 zcmV<70UrK|P)cO5QRS{hC~qp5()}RB;J6U3c=e_!gJ7XLx)6#WMe13 zY!Ss;R=;*v|45cE@|-i5GvaVKL~AYoV?|LQt+mv3jrX1`%Md~kV@$g-2Jbz2o)bbK z#+U%Qu0skT(x=U4^C#wykB7-K{!^{4Q^ z1AFh0wXLq8smNgGm1va&2`+ZL_$ug(CM%LV5gZQJ%B)>@jT0idpHilTUP5JC__ zAj>jhj96<^v~AlWfiw%tgQ XmvREZB$KC$00000NkvXXu0mjf#+Py?Fw@Oo3AvJ|9I}t$*5#dqPToEDH4^<_l)RHP*&vBGe zFtb~Oh+saSKb$He?akd05w6!O5kUq>DIp@9&u2vBj)|F}s+3ZgOeRDGi^T#}#mvaH zpiVd*j}LbT*lad;_f#p41^i!(bMwEzdc7th8pUz*oO2VkGHwmro#k>#N~sl8E!@3X zr>bq3yZ0K5SwsXXhK06CV+Y205z#jg5pwdu0f+zL4@D0RXbfS7ZRlh zQ&3!(X0T9ZTCidmilY=y%$~pXE0`G*?dg4e3SNI5pab@B0#+TI_OJrz;QP-FFZmPI zXZ}W=nC*JFzDluNH&Rdkw4 zD{KaLz}tXT9GLw!KCKr&ReQ{(pYk>;-f_bi&OLk- zF@{d3gL96_WWwcgq1Wr7thMy}eUc<$JRY;(@BhlaTCErkhg`2$(ljNo){G z9!1pdtExgNMOl^}RBMf@s){sCJ@f0~06Sm{M_|5#;}+%sJNWYbv)6`FiXe(2ilRVk z&Fj|#M`~wwzy3Sl;X%K>y&M1bLp5Bne59!1lp-)39zDlm>L(YAk>dqBT`CK7=~n7R*Pl(%*LhxY9o26-`+pH19dz91g5h8U=5cF Q_y7O^07*qoM6N<$f)H8iQUCw| diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_coal_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_coal_side.png deleted file mode 100644 index ae621d7a011e1cbff85e53d60c431588b2811da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmV;20eJq2P)V4e5Jlg3mJTUgfr5rhq{s;A-6!HS&je= z5(TV1DbP3GC5&X*;~9Pb`Tn-qY{JYar4SJ)%#3HDUNfW9!QDwI)h69*Z(|q+a?W>v zh+wf;Jbl&7YOR!lnQ=TGi3mD?loDn}-}ksX06AxXnzwhW)e3hf=S*j26~NtDE|-St59ac97VD_tR#Pmm&2u94fM&LL9d z2nGbmD%`lU3tRST$0Ws{6q{vi1PF|{7Oj7B50wU*^_NeF?W zC{Rj~Qp&e6h7bZ}SrTI;rIY~Cdf-rh2uPSGI*X0sVh)9~={z-qOkD2g{!UtV7Fd$ZZFSS+}^ zyQAy69>5rbF$U)x#+Y}NF|g8;$pmXHB0}4?hzKbqKL7lN2vij)1>Zk@0bsx1^ZfkG z;c)0x5D}KkB~8;%*EMxr12CP!#l@T$Bb!Z|?R8xjm`;13}XLO>rK9pSx4M0k37!Z`6t!Xb+m0uN{Rh`|Ih9Z@|IMARtl%gmKy!Ux%2AkFz?|si;G#X)yA*Do&F>l>Kf7nFtJzDGRgMOWV0S{I?-b2x} Q$N&HU07*qoM6N<$g8NAY+yDRo diff --git a/src/main/resources/assets/hbm/textures/gui/GUICoal.png b/src/main/resources/assets/hbm/textures/gui/GUICoal.png index 55baf1719066d2d805572548980d7e03c588d940..64a2c1bff1cbf57daff5d131268ce502d7c66d53 100644 GIT binary patch delta 2163 zcmZ9NdpHyR7so%_*re~IFD2I%UF2I7xkMQ$rQ9NX$z{qVbDU{{% zBk^ctT_I)mL#oQ`(o#&eCAxBh|M5hU z@Msb~XMiAGo*Au+oJgcDug+33LZXB|=4f;cH(Y-;R6?RV@x(FNgiXoSMctE0!f5}| z%1&;>0a`ZAW1o& zPH1u1;=dYsB?Ku~@WIz2Ws@<96Hto|Ni=HVQG-=f#}dhU%4l7ob5lECb-bXOus(NH z2M>V~u@sYU27a8M8ufDVV+?fSOnIefCL zWSi##8>VZ7u=O!o%Z;g(48A(hFF?)h3!0!3s4)o(pHg-*8{qwOL3lI7R-z9c+U9G3 zOnG;cN^idB=VKtJRZEDg0GjpQ{L*-EDGc!NV3VNuM}&!oX5>kTP>HhDGtT8jz!Wk# zeC&>C#t4}L!f!0ASqT|bzRRcbZYy>KF3bs&Khu8&y1V;g7#O0Xcm4JT+tVogy_`^! zh1dt`KD)!r?yMb&oj1`kyVUIuE=a*u+5u`)Pj*LSZfsXncoCr+0@cF7l&4GW;TrB4wiCuRF51!Znr zKq!Bg;!k(mR38Q_ammTm5j1T`W|`0!+)@IbTBngj+Cvy)pi<3h(8q^w(#@;xyNb96 z4GwWbf;=->Mog{xZLxS=7!x^3vOuH#nz_8n&UA^a@icvRcp2QPg+B&6;)@}vSy@vS zM3(#=A5lUfRG#GyJMvq+jxivx!re?KE+z+GhGE7M#LaM2xCX8Ane@#UJVZ9p^3$Y| zGS$d=fz!Z#W7}5geD0n>HFVk;X0{voQ*N`dQn)j-vO1{&oU^7w0*)$>Gn4veilr)7 zG^}=VLAq6kfVd3mUO<%VB1e36l}q87XOQGfx3q+jzyQW9y(N)w%@TM;l(+(9vK=K9 zj798iPIWL_O`O))+4Z1j3m5j4jDp-+GS(&HV>Uvdha zuV}B+JxSfs@_@7j$k~H_y}<=^VA1nj^J2$fL$$PdZ@C~A>|0TB@zA<01|?4nyo8&4 zo`-{M46Z`J{}~aX9qd(RBah)4W-&>dC~x%z_&>v4N6x4QJDdwJ8d3uP2^Hw-76 zp%dbzx!5-+dlUU=>FLR;QSJIcvl9pz3dFfU>Re!lL!S!N zxkmdWF&x>}d|eVsQanUlS6(yhZ@~%NE&W-HnGp{IrE1R^J)mKorA4a@lOFFTa=*u6 lxEFBJ#6@1fmWr!#hzoc0 zOSmIIH)#%O+?arxAg_=@?pz!YS1Cm5ULb(eM0tTA#dT+cDI`+-ze~+5xvSsj0|;mS z@n~<&`R?p*hqJwOXPTfJdh2#|9 z(+#~|Z<=Ny@a3E1ZcN8LN;*FsGaipqnvGb$oaFr!^zFMJioWj<*7m?;GC9U}KyBye z=jrw9*XiQoVw%1@KKAC!J$v&heSVkHfB*F7`E%dC`(f?zvp1j8=<@q?c6N4*&0O+m z@qx}y=lpV#_kUB+`lnpY#2-04O&Cm=E)RT)v$D?BlLFzxv($Z8w($ua`pMm;?abw%Vb8dA#3GG1n=jl!m{5yY~FY@4lZudhx&0g1C_5 zBmn5Pmdpc~5A7GP0{r-&+do|2jS6mGUq4kij3_UAHf?9!=Z>Xv@BQ(opLV|f>-X=M z9{>Dyd1y1dx+?l5qkg}i_4kLvp)WlhP~-nzE&4WK7gYwpY6maU65GEl$YuN(=~c@G^X0J0pk2C&-sN25{YNTBL6(CqK)b}MUa-R`^ z`2urCnFlcAOF3k#Qv)y!c&pBT7huvW*$J6PSpU~uI>USxeKAN zz*OKYovH!A8m9nR8oM#b&u`zZj|LvNv$M0cJHBpu?C4)mOKuF(RcZiq+rA?J^97cu z0Ti_9e($qU!QxThD4?LK8h~lQJAbJG&~2NB@s9GfRR%!SdHl8xA8j7MrlWt=^F{#$ zd^yqKGZeowQ10LBx~fjSsZdCUudV{*Py=X?j(z~<0c24FC~VWvezgEdLFNHuF%O`S zeb48e{}*B&Ko;`=4nV=LK}G;s)BppH* zx6dhn4!@>THGrxciPo{}W~2MEJuUFhUzzNip>s8W+yy|ZZZ^6v+e4SB0YG36q6Xl; z0M%Cak$po-Evx|y27`2deqQUnvk&#II|J`}J&M^a(iZoJ+oq9HOKSjiLZHqEc=mea z54(FOvP&y#0R4WySO{!8J%5N~wx1UFmHk3W2d)9^bD6462&@ik7p)F=BipnOw(XbE zXcT^bMRM>Oz&=CHx*?E~B3G4t_d7APvIel|>guZ2b!i`3*xx~G0CjHe`TY6wd1u}= zDWz@^OQCB&C2zhu8jXszMKcas1K8*0o@S&SPpSPbeA};e^8ixP`DEcxT2}+;_xrUw zf7NM#BM|J?x_JPd`X*WjYzs-@NJPx&3FB#_kIMw4ala2OE>^1_>sxo!j>&$B>ZaWry(oXB!u_91&)RQm=E0aJ62Q{n+q@C8cLvwbn2n20pMWAw=0zhB_00I*L5ZKNl zpjCmj(}s3dR|TdVs{(7M_3bE5H^(WH@dguKnDaxRe`nB`gUlJRe|Xos{)tf z6aWGf01%h}pi^eUf66#XDfN22-gG=3+qn?TYy{9dJv}|@hQK})0Lxh2fzzXG1?*4f p2a`bwFOyISAd^rD2^io3`aiidCvWEDn|}ZR002ovPDHLkV1f+O$@l;O diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png new file mode 100644 index 0000000000000000000000000000000000000000..9189989e73dd9c2c65d0373e2d531c2bce8a384a GIT binary patch literal 3916 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 DTb>Lc literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/wood_burner.png b/src/main/resources/assets/hbm/textures/models/machines/wood_burner.png new file mode 100644 index 0000000000000000000000000000000000000000..282ac5a5fa4976a06ce9efc74b6933b5317575c6 GIT binary patch literal 9986 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 M07*qoM6N<$f`Ljxod5s; literal 0 HcmV?d00001 From a44f31279be834eb3de5792cf77cd2f2e7bf9aa2 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 30 Oct 2023 21:13:35 +0100 Subject: [PATCH 081/207] wood burner GUI --- .../container/ContainerMachineWoodBurner.java | 103 ++++++++++++++++++ .../inventory/gui/GUIMachineWoodBurner.java | 79 ++++++++++++++ .../inventory/recipes/ArcWelderRecipes.java | 4 +- .../machine/TileEntityMachineWoodBurner.java | 40 ++++++- .../gui/generators/gui_wood_burner.png | Bin 3916 -> 6686 bytes .../gui/generators/gui_wood_burner_alt.png | Bin 0 -> 4612 bytes 6 files changed, 221 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java create mode 100644 src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner_alt.png diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java new file mode 100644 index 000000000..9814bb422 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java @@ -0,0 +1,103 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntityFurnace; + +public class ContainerMachineWoodBurner extends Container { + + protected TileEntityMachineWoodBurner burner; + + public ContainerMachineWoodBurner(InventoryPlayer invPlayer, TileEntityMachineWoodBurner burner) { + this.burner = burner; + this.burner.openInventory(); + + //Fuel + this.addSlotToContainer(new Slot(burner, 0, 26, 18)); + //Ashes + this.addSlotToContainer(new SlotTakeOnly(burner, 1, 26, 54)); + //Fluid ID + this.addSlotToContainer(new Slot(burner, 2, 98, 54)); + //Fluid Container + this.addSlotToContainer(new Slot(burner, 3, 98, 18)); + this.addSlotToContainer(new SlotTakeOnly(burner, 4, 98, 36)); + //Battery + this.addSlotToContainer(new Slot(burner, 5, 143, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack originalStack = slot.getStack(); + stack = originalStack.copy(); + + if(index <= 5) { + if(!this.mergeItemStack(originalStack, 6, this.inventorySlots.size(), true)) { + return null; + } + + slot.onSlotChange(originalStack, stack); + + } else { + + if(stack.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(originalStack, 5, 6, false)) { + return null; + } + } else if(stack.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(originalStack, 2, 3, false)) { + return null; + } + } else if(TileEntityFurnace.isItemFuel(stack)) { + if(!this.mergeItemStack(originalStack, 2, 3, false)) { + return null; + } + } else { + if(!this.mergeItemStack(originalStack, 3, 4, false)) { + return null; + } + } + } + + if(originalStack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return burner.isUseableByPlayer(player); + } + + @Override + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + this.burner.closeInventory(); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java new file mode 100644 index 000000000..8395bef67 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java @@ -0,0 +1,79 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineWoodBurner; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineWoodBurner extends GuiInfoContainer { + + private TileEntityMachineWoodBurner burner; + private final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/generators/gui_wood_burner_alt.png"); + + public GUIMachineWoodBurner(InventoryPlayer invPlayer, TileEntityMachineWoodBurner tedf) { + super(new ContainerMachineWoodBurner(invPlayer, tedf)); + burner = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 143, guiTop + 18, 16, 34, burner.power, burner.maxPower); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 53 <= x && guiLeft + 53 + 16 > x && guiTop + 17 < y && guiTop + 17 + 15 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("toggle", false); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, burner.xCoord, burner.yCoord, burner.zCoord)); + } + + if(guiLeft + 46 <= x && guiLeft + 46 + 30 > x && guiTop + 37 < y && guiTop + 37 + 14 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("switch", false); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, burner.xCoord, burner.yCoord, burner.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.burner.hasCustomInventoryName() ? this.burner.getInventoryName() : I18n.format(this.burner.getInventoryName()); + + this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(burner.liquidBurn) { + drawTexturedModalRect(guiLeft + 16, guiTop + 17, 176, 52, 60, 54); + drawTexturedModalRect(guiLeft + 79, guiTop + 17, 176, 106, 36, 54); + } + + if(burner.isOn) { + drawTexturedModalRect(guiLeft + 53, guiTop + 17, 196, 0, 16, 15); + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 5a6152721..5aea7661e 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -30,9 +30,9 @@ public class ArcWelderRecipes extends SerializableRecipe { @Override public void registerDefaults() { - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor), 100, 200L, + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 200L, new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor), 100, 400L, + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_copper), 100, 1_000L, new FluidStack(Fluids.GAS, 250), diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 57c6bf6c1..3fb872181 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -1,8 +1,11 @@ package com.hbm.tileentity.machine; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerMachineWoodBurner; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.gui.GUIMachineWoodBurner; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachinePolluting; @@ -16,7 +19,7 @@ import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IControlReceiver, IGUIProvider { public long power; public static final long maxPower = 100_000; @@ -80,19 +83,50 @@ public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting impl } NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setInteger("burnTime", burnTime); + data.setInteger("maxBurnTime", maxBurnTime); + data.setBoolean("isOn", isOn); + data.setBoolean("liquidBurn", liquidBurn); this.networkPack(data, 25); } } + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.burnTime = nbt.getInteger("burnTime"); + this.maxBurnTime = nbt.getInteger("maxBurnTime"); + this.isOn = nbt.getBoolean("isOn"); + this.liquidBurn = nbt.getBoolean("liquidBurn"); + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("toggle")) { + this.isOn = !this.isOn; + this.markChanged(); + } + if(data.hasKey("switch")) { + this.liquidBurn = !this.liquidBurn; + this.markChanged(); + } + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; + return new ContainerMachineWoodBurner(player.inventory, this); } @Override @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; + return new GUIMachineWoodBurner(player.inventory, this); } @Override diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png index 9189989e73dd9c2c65d0373e2d531c2bce8a384a..08d2f02dd8a08663d42bf8afe3ed4277541d1675 100644 GIT binary patch literal 6686 zcmd5>`6HD7w|~!!jASd6olhmQ3&~Ckl@gMDOIZ^d`!*&jYkZKUY(+@+Y}qoBCVPyr zYbH#Dv5&!6?&E&%{Ri$(_xa^{=2_nF^FHtMdY$t+6K!aq$I8sd3;05Iqh z2ACM3lQrst6LezmzI?-k2|7ZU9!3GcOSo}W$0Q(=GTGWFBFo)zTD+$Y{%vF-3LpLLR+v-0~^)}PFXkUhdMlcZ155>b(|$0~81(MFAw zJwGzV^)!pi_2=g#AXXh`6X@6oXG!K7P3#t>i8N2YPFtrVJ6><2LBwh2KUv4gwAcQ> z0*TJXUWL=BP`;4!$c2ry<)xVblY@y>fA@pa6iN$vonLP}>tNTLI!kQXz3~0}_n$6` zUfXMqW;mi}o6Ha;Q_Wwd8X=!_^KocemVxKALDDAuccieNz0F_M$ z+2B*ymXxk9@p*O=)sWNct=S|cCGQKw8szmG9`I0u1Rp$j@NQWln!fiZ!?VJZs3|2Y zJ8s&*uk7&*t$ys-v4ExeSugtLV?CX>6gA)zwz)rGY}Ss9lRV%BA52y>b9ou8k(iVe z?vm0{7+`*W`7QE+nGB783GM9ctTqr#byiLZyMJG2uijkhbWUHe$}K(BFS4+WWgD~o z$I0V5q`P){_~0@GNaRGa3o(FOckV=vp_uZHh*TBt8vQvB9$t9;HlfX^e!}xJozk9f z^K+L5OP9r)hKQh3gjaaL*9OfR$uv5p2fb%*Zaz0UD$Mld$jY^R_$>oJ8^)1)`<*lI z8w_5poWPjap|>4d*jsDf(m{4>vWSS;oC4!`tm)TNDa_fczGwGZf%d!YY2kyYM*roH z%WZQU?gu$72VZs5fE&lptKJTvKFsEZ>Bt!*IHf(2zm*_n3zt3%pbGsHYwH~+zdUQ!k7v8NX?@(J_bMs zBE36dm(T+F#vQ|z8wdn=F4Nrz`?3sIC+u0MX8lslK)8v>of(RCAR~Fe^@wSZeZ3I> z-@sdOY=lW*bWI5-h)h zlGM~gpN|QjZ1m4FF48vQa`*6n1HZ+Qr#`Bz*NgxlxDjegF2BQA%gnm8=&;BS8Emae zL_L8uryt{RE<<2yPh8|%K?Xmu4!}*SELfr$-$j#;rEHU)96i-JNG?yqB)8 zKM&$_T+jLam~J9YqElwQ$0?rP-ke>2S=!?%mj4bD@h-girPtup57o?OnjgJtcX zkNH?je5%dp4@){*8wwn3X=gEExS{JZ#~CCB94qZLH#v$&7=&Gcqc&o7slqNcLxPckXxTymI zk_L6GPmCNNp0`9P{OTs!1;Buu{KcVrz3;9>O4VruZHNQXpPmext_fQrJG&lT0ILbY z1P-XzkatT>@u%d}C#X3ZXOPxE{kZLw*J(b| zt5lf!goG)}EGjy$M`y(3?9PapTU#%Vm1lg3NIV|K{eid}kNDRUaqc$hcZ+4|yc333 z8cF($8#^yXtL?*HVgi$Ua088rC58zol=H}s21H*B-#_cuT9HQEp+`%DFo*4hFry+L zNAKgkE<=gb3q@D%yA~BIiAc%FjCu5-G16JMGhg;uS#@Z#u5eFSTztGkNXWzn3%O1f z8&_LjdV3!D**lbVsF4Q)b$Xm%+!kwhSafWW0qXU1d$^N{is+BrzCox)2 zkr*G<$AQgDg~HgFkjY~GdHbJyTf7@E>?7S%brDewy*q5*lO9D(bf+&8j-%XYw2g#!g#wShL5KHt=aO}*Mz6}G;cMVY7q~v-*Iplwf?;{( zWAAvl)mloov0NOZ3aJNh{1CuIM<1m+_cPQ^J2O`%LI!=*idB%c&(ye1f8Dg(61H&$ zV6Qf_T{BX5T$dj&zsILAI*m)vp!geZ^)h_}q_`i-v!bFr6)9Cqtr5tPD(8ekv%FAR z#3s*-iLIqmPV6o1%V*LQq;a=(MdX{uDE?g3SN4$8aQEmPe|;PKgU}K!7n#hrOF~#% z%vJyVF`KVH2;8)o49^rcH+kZW!&UN~kiY8gq%rQU{BHZ~yKoY$ z?;|RA=lb*9EGsH2qc?ATTVQ!}&MwDDqvFvF|o-hLf8@hNOO_P#Sj5z6vPO3#gp z-p8NeC@3fh={vHrL*u`iH564ImdP@B#i1g0bRnCl6 z{~!(2*hs(IB4308?2tG%l3jQTTIxu>cj1zEP&gFBt9veTg{G#ah7u`KcK(#H=LEt% zF6JX8Wn~}z*|H~>E-8#H&rajy=maGtrfxKutc^j#%vN?g)ye(efzd@!rB!h@RdSm81}~D{SWNg3;lU|&8i!Q=48a@!1aQi zLE$sqOdAXkQvX^2FYirc934!3yP*j_;UL!0XlC%jGaqJiRh9r>Ujp7fS7&CU9&|I! zu*|}@I7c-xXY}Hqq2fGrMS^}8uw%FQHgp|Jr$I#G zbN7Q<7Mp68fs1Q%xHxTTvT=(P!5$*0S80A#GlzEXMXvZrb8y{~g37fw{i?dvrOi-y z`^NaGX6ZKD(tI-`J~~TdK1IM3#`Gd3V{-rSGA%sK-Fr(x{Mers9`Wk$IG@u26_TU` z3;$_SYs8n@ob2rHFZq>2QtrRf*9qozu8rr9$sIXo8vQYw^@!isvRvFhS?RUxZ%5r7 zzB=%g^Dv3R^FqGMq}djJX&=&zVJ*I(nx}%s$riEZ@bMv3gv~lAKhgZou8T>jS z&gh(*f`z~FmSu2^(MMUa^R011PoP@5&5L-yYCI>Wfcz;PRzGPyIWh4Ke@Cm-3RmV{ zU$k)TXNUI5lPA4aNIFVPQ8{hQa9tJNs~!w0*lpKsmY~8Cv!-J|AD|4h#X^Bj0XUXy zagAM#$web%ivwbZf|SW66}B6PbwTDj%JYNK%?kI6#bsi>hG@05YDd*~&1u3X^Zpdp z&W`+miU1v&?FP&|{}d-NtEtJd)WN~w@~|q3PG@6B2D5Q++gOc~_2GO1@drD(brwrL zpKcyKr`)=09ogafz2pa-bz$eW2fDN8NpYw6661Sz0qsJ({B79+K~@(0B#Hl8z!izU-2hR5r~`KpTdc-OAoC^Q{DRUnqYn4E@S+TFZoBE(uCl%ROZ z9)&uQa=oE7uJ6RY!M0fG(oG2?%PZBamsMl zGM$`e*YN8_uJrHZf9TGo)=O@zw+syY@)w3K(p1#`4gY>PBOWQT@o`F4My9iBGKuy+ z@!5SaS1AG|;OqmP*F{bjNrh$+m>(L97|kaGNRc1hwo7(L-EM`YL)lnP9&AKg7+^2I zv$y(Nh0K=7iba{&ZTXz1DyE7g}&idsPrXVddP|`=5MFSM}FmK{*n7d)MC( za6M7DxAnY8IdR^nnJ$WaZb{s$v}j91*4Sl0n$hZsK(ZT_4?m#gcct7@Q@gVp8Cx8p zxvchDk7w}(+&ko%Eh!D`@g;Tb?GQb=aIkdp!=Ib6CFSLL1h>E8HN@op$_Kce6O-jO zjVE1fFUKR^UguQdtv$2u)E11I!-~SPi+<*{E0ZYy*{fZ zW{}AFH-l2a53BhviDdLR;Nk^&goI2p4r(k*%Wvqk zvA}J|Vk?7HnN?0~w>0uZI&4Y|{34@N6!}=Gd(buohkgh;kmtAT7dU!7+TMS&+_V_d zPVGl|(i= z*}VjSXw(nAzZ>@^j?8s24GEbX%EuGmTqU)aIOp_)wPhu=u=?O86NLCNvqnvfUV;$y zcO8?E6?nzu(YHTU;yH}u@MQt7coOFkbH^#70J&vo62O;CD&V$PW+Rn{?LC^oT?2RE z+G4%l!{=>{i%gL6Jn4!|FIqeA9QWSa@rC&Q5*r)>ol$*mQH%Gifp|=KPtR>&#ToD9 z8n1ykWlc8qxc z2>h*iWw4_8iDjzQ{bLvh(c}(u+j8d%yqdy>5ipE+D-Vb|5qEeYr3MS5H4?XfwRR+n zJt22;r?#Qg)7J4h`-A=}54$&Iu+aTb3MtF~S8Ix-nK@h6sx_N)(Tm7B*!cn5pueKy zzS&{>fpITiw)-jO2(v)u3WshamQ$=sPi`&~6UbyoNRd{LKL%JxjX}8aO|X$Y8Jl|a zdMEk9pV`?nDIXy_PL~qge%mb*>#S$1at^F%`=`Qol9xg$J<6+-{>1wS`+FlJBLG0M zr9m?lQc>M~eT~1$a(ICFz!>G?{(6d8iP>1$V0hF1JE|`Ug$B z@JZnHcR+L)r+)o#qC?v`LuLl;bd$ph@)tG+AC>>@4BVp*3oajQ{KcndWUQy4N)ByW z`fFe=PbLiGI@J@*N)@f31g%|jC$jv&?<7S zsQnO}LkGKyf9hQ2mxXT&9N$qNXFtmrfqAlQwacv6$QQC~Zm z9xAheD6`0%sVP>@+F0UdRg6dV#A5Wfh{IUy5f@Frds@xwv6HT}^MeP7LW3-0&x6+~(y2Kb!KSy5oot_F zgN%9KalUoJ5C@w<+2DhSK?~9$yQ{d=@mQV94hK$k{~&oGf{RyYBQ3F`f7bNo>!*3` zY`8)c5_?K^UZU>9mV<%zD+u*dE;txOyiG2jeoagWd?ZL1WU1yqa{T7%BZ2_evMp@2 zTHQO#N6MV!;a)yICO!L{dJxD0ZU1aMs>?_$o0PR}imGz%o0?A0sx8@il76BaXh%YI-!8HU{WR)+HgdC}9WuaodTX^b5#zs{Ya;RcS936=EC42`Io`7LMNN$o)G;)i zn|=4<1w`q3ONcGvsUAjze`65!<5Fn7wQi9K^UUX+r-u*6k#EJB$QfS=Mg+YOrI)MZ{G=xipw)LBRxGYTkNz)8NoK^d&|JiMwW4Y}1y3Bk= z&HVOIbHRnf!jZw4D_^oWf!9|6yIA6JxsOn6#wxbw(!q)0d&&5w=bYx=20p-%;dG2- zRVIdv8m;|`I|4=M8*7VV!pG$j&3xnYwcNJfAqQX7(#m;LSD&KyM+yO|;8mGA;(EQz zw_5L;+NUb4kSn}Z)diTYzOrWlSC2yP|6ebqPdkX5VIn z6f%;17uhCTVq_SS5~?4>i|PIkH1h@mXJ+bGJ33hPV?vThuzmwSA_A>Lq6rQXD#&S!Jsl$}zMme!^!9eYOCA3>G)z}Sju<OMx{GbGNZtG7i*xT&@9Lio3J6n8y}AE$@G}74PB+{+ zqUKniMD$EUZ?K8M#1C%qz^cNt<$>wUcgbUuGXs)a@(O^0IYw-){7Oc%+~+y!Bh##J zm$-w(;!$6Ru3UC3#6Wg_``S|#4EA2KnaH>o4PicyLGUh=W zFsKIlFB|Y=!Vv}z0r_HBR%UDKDow~Gd<7qllKgHyPV_e*UY z69uB?18VZG@?`e{o1dfy*C@yw#tC_iQ{o)~!Z15^`HFl|P@f7)G4PfA_ z4K}f=PZ&=*`c*wwu|&+Yy2Sip31|~u(@~q-?K3wVq-Hzz+Mg1@#k?@AAMBo(=oy;w zvn1qYeR7t+naeetUlXX|iga~#ts;b{(OFa5HHnvZyoR4WAlCZ^aFTzK|KEH zeMGX6&*OcNtfCm?WgSVC#umIg&H%cEf0Hh9?cR*2F8PVk`1hSdKL$0M=^iCHe~)4z z{chCWVnG-h4Ip-1o1kP3dm^$mtm8BV**WQn5O#C5=IRBzNm7t(mKcr_?QrFZJ8);{ zzAno#os--`LUo!ryC6`(#npOJyIJ0kLF71h}vBgeIr>+K-2glHcUkR+)IbQ3H0*45;!#XP_X z=$<@TXP=b5QvT`N=;P3^awm4=SF7oEIj%dS22d@X)zqYd{PXUs6i%ioul~zwY2bNA zal)%IL2~XhxZu@?XX_^lZrL3?*&Iq?jNKtJ-!1>uZHJR5#?5MHSt4vwBS6w?5t z>08EHP>?wO^0Ss0R@ijRKgiB+vxlI^r^XxnWAEv?Jng$*(z8Q(ibJvGd%@Y_Ozzh| z;$s4)#{YcQ=aJDr@f#WXlI`=)Aw!k%wsj*N{UBjVaMGq$Y8(PddBr}M&-Dc5Guf-!NIQ0&4qe&cUxhNm-fJIm8M} zAv{1H)bxy#f{q@gl^~K8IR27G z`jfN=A>)5pZI=i7ZKg6M2g7#-nvajxh4_Vr4sW`J?K59n_zQ9KVw@Dt_8iXIEF$C= z`v9m(S#*GIQIIrQ1xQQT8u=&?l^gTsxNJ;xbacQkALI?a;p&hRWrEKnmQ}mCI#t^N zsq$7Vl!+i7f0OOJ)1B<=!^K0sM(73xt2K^#GzgKPK@u$5xev5Aa9+{Ptw`=8QiWAlYx|_orOyxu%0?nN^cYFS)rbtc%Ty7XM zm&O9G>v``+*{#cBX5?0W^emJ0b#bwv_+CRW{BDZGQaswmS0-D&E(}#j>!pxLq}s`x z_9;!aLa4jv&!Es3X5{%pIQ2K?7iH&D((rt$s;UWFb<%f0!I3tIaO@4rHV4#U&MPT3 zZ;sWJJ)jZgB&8GN(Y5%WKfMp@P<39%P*=ws+e3v8fHbkp4t8e5s!>zWGO0)qkS(59 z#UUHiP9dPvp1Gi=$d5vhoVu2NBq~WD`mW(t*jKUGjEq2Vs$wH z)wSe>|0#DXe}=oDL-@6_tA%!zcGPzNP-6tt^KsHQC!RtNu^ecN z(+gaj(nj+%TA8HBUdV4X1&T)NX6XKgI};NVA6ke}CVX;2L{@%zTU_k%fT36be^QIa z2&->11(th5G3qid28xU>TwrQ1qSFT9A)})?W2CFTvLE05#jc^?r<6_saEzBh=oAVjwPI<+4wc%qF zu=G-QRq>v_O230C3SP`>$3mLrTz5r{aY2m6#>Tis?n)amJSV&_2h5HKoefVyN$Y@q#czWfO=A~Zix}A@}KEwb^RWM@ewxu zHJ6o|`PAB3jpn2C63sn4C^($ip&m6kqmzk6#J%CERR2Q%TL2g}%L7Z-{F*gIf!Y@V z(}q}VSN)A*-*UJRtLP>Gw^0cF42J8<9T3{6<2wQIt3gfFNb%3*%Bc_6P zC<)ci2YCNj;85~EO?z+>ggq|#a0vLF`QmxZPznmh%W`0zXnPu+n6-6S6rjZS^r^iP zUv_4Jm3x+V2^I6(Ta-eTnvuSB1eu!$kiDFtNY2~ESp_Kcl@=a79P9wq@>2P}5k;_w zV^29IUw<%%p5mgM8gvMOsPpvA+o;yB|E(ZQ$n~2Jyq1s}35QUeJy+*?o47U1%+?PB zmz_~-vYv3YU7P-15SLHN=uz^7Lnkn|8|Xq9e7@259rFwrKT1%;4LYbjfuQs*7eoP9 z?GxB~l=DcR435{k)9xz7GHZ!iQ7uTjy6Y=yxbuEmeFw5Hxvu}x?+rSnH zb1zHs0ROkX%W`d!CR2@Q#C|TI`TaQ&CGN`u1Vy3#?Rib#h~1M&5gzy-m-$V3rwVfY zz7N;A#Ow=3jJIqq6AxWpGB!dE{;U4Kv~;%6qped0xo&=McjcKGTN)Ld!bkiE DTb>Lc diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner_alt.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..51c355b507d9946206c2ee4404f4fbec2740838d GIT binary patch literal 4612 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 DTYPrE literal 0 HcmV?d00001 From ad7032c74de8e010fa7f182b7cb1423500d2ee41 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 31 Oct 2023 15:30:01 +0100 Subject: [PATCH 082/207] leftovers from last week's shit buffet --- .../inventory/gui/GUIMachineArcWelder.java | 2 +- .../inventory/gui/GUIMachineWoodBurner.java | 7 +++++ .../machine/TileEntityMachineArcWelder.java | 4 +-- .../machine/TileEntityMachineWoodBurner.java | 24 ++++++++++-------- .../hbm/textures/blocks/stone_keyhole.png | Bin 0 -> 455 bytes .../gui/generators/gui_wood_burner_alt.png | Bin 4612 -> 4685 bytes .../assets/hbm/textures/items/key.png | Bin 220 -> 219 bytes .../assets/hbm/textures/items/key_red.png | Bin 231 -> 261 bytes 8 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_keyhole.png diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java index 1e55234b2..e37e7cf05 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java @@ -29,7 +29,7 @@ public class GUIMachineArcWelder extends GuiInfoContainer { super.drawScreen(x, y, interp); welder.tank.renderTankInfo(this, x, y, guiLeft + 35, guiTop + 63, 34, 16); - this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, welder.power, welder.maxPower); + this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, welder.getPower(), welder.getMaxPower()); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java index 8395bef67..b591c8c48 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java @@ -32,6 +32,8 @@ public class GUIMachineWoodBurner extends GuiInfoContainer { public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 143, guiTop + 18, 16, 34, burner.power, burner.maxPower); + + if(burner.liquidBurn) burner.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 70, guiTop + 28, 34, 52); } @Override @@ -75,5 +77,10 @@ public class GUIMachineWoodBurner extends GuiInfoContainer { if(burner.isOn) { drawTexturedModalRect(guiLeft + 53, guiTop + 17, 196, 0, 16, 15); } + + int p = (int) (burner.power * 34 / burner.maxPower); + drawTexturedModalRect(guiLeft + 143, guiTop + 52 - p, 176, 52 - p, 16, p); + + if(burner.liquidBurn) burner.tank.renderTank(guiLeft + 70, guiTop + 80, this.zLevel, 34, 52); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 5373ff76c..669e4c71a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -60,7 +60,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements if(!worldObj.isRemote) { - this.power = Library.chargeTEFromItems(slots, 4, power, maxPower); + this.power = Library.chargeTEFromItems(slots, 4, this.getPower(), this.getMaxPower()); this.tank.setType(5, slots); if(worldObj.getTotalWorldTime() % 20 == 0) { @@ -230,7 +230,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements @Override public long getPower() { - return power; + return Math.max(Math.min(power, maxPower), 0); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 3fb872181..f0524ac55 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -1,16 +1,19 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerMachineWoodBurner; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.gui.GUIMachineWoodBurner; +import com.hbm.lib.Library; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.tileentity.TileEntityMachineBase; -import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -19,7 +22,7 @@ import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IControlReceiver, IGUIProvider { +public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IGUIProvider { public long power; public static final long maxPower = 100_000; @@ -37,7 +40,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting impl public int ashLevelMisc; public TileEntityMachineWoodBurner() { - super(6, 60); + super(6); this.tank = new FluidTank(Fluids.WOODOIL, 16_000); } @@ -51,6 +54,10 @@ public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting impl if(!worldObj.isRemote) { + this.tank.setType(2, slots); + this.tank.loadTank(3, 4, slots); + this.power = Library.chargeItemsFromTE(slots, 5, power, maxPower); + if(!liquidBurn) { if(this.burnTime <= 0) { @@ -68,6 +75,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting impl this.burnTime--; this.power += 100; if(power > maxPower) this.power = this.maxPower; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); } } else { @@ -78,6 +86,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting impl if(trait != null) { this.power += trait.getHeatEnergy() / 2L; tank.setFill(tank.getFill() - 1); + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); } } } @@ -131,12 +140,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting impl @Override public FluidTank[] getAllTanks() { - return new FluidTank[] {tank, smoke, smoke_leaded, smoke_poison}; - } - - @Override - public FluidTank[] getSendingTanks() { - return this.getSmokeTanks(); + return new FluidTank[] {tank}; } @Override diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_keyhole.png b/src/main/resources/assets/hbm/textures/blocks/stone_keyhole.png new file mode 100644 index 0000000000000000000000000000000000000000..394785a63409548bc65a99b4d8ce9627d17faa29 GIT binary patch literal 455 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 a&(h&Tc19~&T~yxN&&0^wu>8FH-TwkbMw)s6 literal 4612 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 DTYPrE diff --git a/src/main/resources/assets/hbm/textures/items/key.png b/src/main/resources/assets/hbm/textures/items/key.png index 403bbd9fc50be8995281136c6bbccdb0d0823315..593227c1c3c37851c3c56e416cd0339a12b9016b 100644 GIT binary patch delta 175 zcmV;g08szj0owtPG=GvwL_t(Ijm?m;4aFb~MDH^Jg;!t?k3iv$8i|n@g0<*e(~=7G zBaui@bp5J9;yme#ja!uoO4GK0{}6`-dcmT_IML`?`MFS`{_*( zLg+h^-#?hYLswPVCVKFl_(;002ovPDHLkV1gJXP00WN delta 176 zcmV;h08jth0o(zQG=GyxL_t(Ijm?mu5d|R(ME7Gs&;)&?fCwA{O>uZyq65Hk3g+Jo zcQc^wDFpkH4e%M5xjX0jZcdCxDFwAw>`JD<7;_{M01!gxtu<(^k2is}b_R&3pWX!C z`@SRjy@_(pP)b2ci5TPZ@1tNqM14pGPqJ4DGtVmjwZuAdM=2?Vl+v79Yu#D^M6{f~ e1vB4je1{8LKTUZ454vms0000F6!u^P21rGP z1X2dD7ywspOo5Dy6oQ>9SAE&Kr+@e1ZzM%!q^L}&FSf(DXvReo3fTeAcOOkE91;Ns zLpv)T_kLg2Zs)xW2Lj5CI_By%Ralr(s2OO<`Cp&mIRrNnF7 p%2Xn1S^&hvbOwTBw_;Sab>Q>29l Date: Wed, 1 Nov 2023 22:13:35 +0100 Subject: [PATCH 083/207] none may enter the orb --- .../container/ContainerMachineWoodBurner.java | 2 +- .../inventory/gui/GUIMachineWoodBurner.java | 29 +++++++++ .../machine/TileEntityFireboxBase.java | 2 +- .../machine/TileEntityMachineWoodBurner.java | 60 +++++++++++++++++-- 4 files changed, 87 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java index 9814bb422..73684e642 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java @@ -70,7 +70,7 @@ public class ContainerMachineWoodBurner extends Container { return null; } } else if(TileEntityFurnace.isItemFuel(stack)) { - if(!this.mergeItemStack(originalStack, 2, 3, false)) { + if(!this.mergeItemStack(originalStack, 0, 1, false)) { return null; } } else { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java index b591c8c48..fbf3f19cc 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java @@ -1,5 +1,8 @@ package com.hbm.inventory.gui; +import java.util.Arrays; +import java.util.List; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineWoodBurner; @@ -12,7 +15,9 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; public class GUIMachineWoodBurner extends GuiInfoContainer { @@ -32,8 +37,27 @@ public class GUIMachineWoodBurner extends GuiInfoContainer { public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 143, guiTop + 18, 16, 34, burner.power, burner.maxPower); + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(0); + if(this.isMouseOverSlot(slot, mouseX, mouseY) && !slot.getHasStack()) { + List bonuses = burner.burnModule.getDesc(); + if(!bonuses.isEmpty()) { + this.func_146283_a(bonuses, mouseX, mouseY); + } + } + } if(burner.liquidBurn) burner.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 70, guiTop + 28, 34, 52); + + if(!burner.liquidBurn && guiLeft + 16 <= mouseX && guiLeft + 16 + 8 > mouseX && guiTop + 17 < mouseY && guiTop + 17 + 54 >= mouseY) { + func_146283_a(Arrays.asList(new String[] { (burner.burnTime / 20) + "s" }), mouseX, mouseY); + } + + if(guiLeft + 53 <= mouseX && guiLeft + 53 + 16 > mouseX && guiTop + 17 < mouseY && guiTop + 17 + 15 >= mouseY) { + func_146283_a(Arrays.asList(new String[] { burner.isOn ? EnumChatFormatting.GREEN + "ON" : EnumChatFormatting.RED + "OFF" }), mouseX, mouseY); + } } @Override @@ -81,6 +105,11 @@ public class GUIMachineWoodBurner extends GuiInfoContainer { int p = (int) (burner.power * 34 / burner.maxPower); drawTexturedModalRect(guiLeft + 143, guiTop + 52 - p, 176, 52 - p, 16, p); + if(burner.maxBurnTime > 0 && !burner.liquidBurn) { + int b = (int) (burner.burnTime * 52 / burner.maxBurnTime); + drawTexturedModalRect(guiLeft + 17, guiTop + 70 - b, 192, 52 - b, 4, b); + } + if(burner.liquidBurn) burner.tank.renderTank(guiLeft + 70, guiTop + 80, this.zLevel, 34, 52); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java index be4b8c82b..5a52abb70 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java @@ -151,7 +151,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i } } - public EnumAshType getAshFromFuel(ItemStack stack) { + public static EnumAshType getAshFromFuel(ItemStack stack) { List names = ItemStackUtil.getOreDictNames(stack); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index f0524ac55..ac93421ca 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -3,11 +3,14 @@ package com.hbm.tileentity.machine; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.container.ContainerMachineWoodBurner; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.gui.GUIMachineWoodBurner; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.lib.Library; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; @@ -19,8 +22,10 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IGUIProvider { @@ -33,7 +38,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement public FluidTank tank; - public static ModuleBurnTime burnModule = new ModuleBurnTime().setLogTimeMod(3).setWoodTimeMod(2); + public static ModuleBurnTime burnModule = new ModuleBurnTime().setLogTimeMod(4).setWoodTimeMod(2); public int ashLevelWood; public int ashLevelCoal; @@ -65,13 +70,22 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement if(slots[0] != null) { int burn = this.burnModule.getBurnTime(slots[0]); if(burn > 0) { - this.maxBurnTime = burn; + EnumAshType type = TileEntityFireboxBase.getAshFromFuel(slots[0]); + if(type == EnumAshType.WOOD) ashLevelWood += burn; + if(type == EnumAshType.COAL) ashLevelCoal += burn; + if(type == EnumAshType.MISC) ashLevelMisc += burn; + int threshold = 2000; + if(processAsh(ashLevelWood, EnumAshType.WOOD, threshold)) ashLevelWood -= threshold; + if(processAsh(ashLevelCoal, EnumAshType.COAL, threshold)) ashLevelCoal -= threshold; + if(processAsh(ashLevelMisc, EnumAshType.MISC, threshold)) ashLevelMisc -= threshold; + + this.maxBurnTime = this.burnTime = burn; this.decrStackSize(0, 1); this.markChanged(); } } - } else if(this.power < this.maxPower){ + } else if(this.power < this.maxPower && isOn){ this.burnTime--; this.power += 100; if(power > maxPower) this.power = this.maxPower; @@ -80,7 +94,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement } else { - if(this.power < this.maxPower && tank.getFill() > 0) { + if(this.power < this.maxPower && tank.getFill() > 0 && isOn) { FT_Flammable trait = tank.getTankType().getTrait(FT_Flammable.class); if(trait != null) { @@ -98,6 +112,13 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement data.setBoolean("isOn", isOn); data.setBoolean("liquidBurn", liquidBurn); this.networkPack(data, 25); + } else { + + if(this.isOn && ((!this.liquidBurn && this.burnTime > 0) || (this.liquidBurn && this.tank.getTankType().hasTrait(FT_Flammable.class) && tank.getFill() > 0))) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + worldObj.spawnParticle("smoke", xCoord + 0.5 - dir.offsetX + rot.offsetX, yCoord + 4, zCoord + 0.5 - dir.offsetZ + rot.offsetZ, 0, 0.05, 0); + } } } @@ -109,6 +130,22 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement this.isOn = nbt.getBoolean("isOn"); this.liquidBurn = nbt.getBoolean("liquidBurn"); } + + protected boolean processAsh(int level, EnumAshType type, int threshold) { + + if(level >= threshold) { + if(slots[1] == null) { + slots[1] = DictFrame.fromOne(ModItems.powder_ash, type); + ashLevelWood -= threshold; + return true; + } else if(slots[1].stackSize < slots[1].getMaxStackSize() && slots[1].getItem() == ModItems.powder_ash && slots[1].getItemDamage() == type.ordinal()) { + slots[1].stackSize++; + return true; + } + } + + return false; + } @Override public void receiveControl(NBTTagCompound data) { @@ -138,6 +175,21 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement return new GUIMachineWoodBurner(player.inventory, this); } + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 0, 1 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return i == 0 && burnModule.getBurnTime(itemStack) > 0; + } + + @Override + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { + return slot == 1; + } + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {tank}; From ba61cc42a83626b866d4f96808f539b953bbebcc Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 2 Nov 2023 14:12:39 +0100 Subject: [PATCH 084/207] quick gordon, the mcgriddle is still on the menu! --- changelog | 16 +++++ .../hbm/blocks/machine/MachineIGenerator.java | 2 + .../com/hbm/commands/CommandRadiation.java | 33 ++++++++++ .../radiation/ChunkRadiationHandler.java | 1 + .../radiation/ChunkRadiationHandler3D.java | 9 +++ .../radiation/ChunkRadiationHandlerBlank.java | 22 ++----- .../radiation/ChunkRadiationHandlerNT.java | 12 ++++ .../ChunkRadiationHandlerSimple.java | 9 +++ .../com/hbm/inventory/OreDictManager.java | 3 + src/main/java/com/hbm/inventory/OreNames.java | 3 +- .../inventory/material/MaterialShapes.java | 1 + .../java/com/hbm/inventory/material/Mats.java | 16 ++--- .../hbm/inventory/recipes/MagicRecipes.java | 18 ++++-- .../inventory/recipes/anvil/AnvilRecipes.java | 2 + src/main/java/com/hbm/items/ModItems.java | 3 + .../java/com/hbm/items/machine/ItemMold.java | 4 +- .../java/com/hbm/main/CraftingManager.java | 13 ++++ .../tileentity/machine/TileEntityHadron.java | 10 ++- .../machine/TileEntityMachineIGenerator.java | 3 + .../machine/TileEntityMachineWoodBurner.java | 59 +++++++++++++++++- src/main/resources/assets/hbm/lang/de_DE.lang | 4 ++ src/main/resources/assets/hbm/lang/en_US.lang | 4 ++ .../hbm/textures/items/mold_wire_dense.png | Bin 0 -> 443 bytes .../hbm/textures/items/mold_wires_dense.png | Bin 0 -> 447 bytes .../assets/hbm/textures/items/wire_dense.png | Bin 0 -> 371 bytes .../hbm/textures/models/machines/igen.png | Bin 2701 -> 2817 bytes 26 files changed, 214 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/hbm/commands/CommandRadiation.java create mode 100644 src/main/resources/assets/hbm/textures/items/mold_wire_dense.png create mode 100644 src/main/resources/assets/hbm/textures/items/mold_wires_dense.png create mode 100644 src/main/resources/assets/hbm/textures/items/wire_dense.png diff --git a/changelog b/changelog index 043b6d8a8..562b40a8f 100644 --- a/changelog +++ b/changelog @@ -1,5 +1,20 @@ ## Added * Pigeons +* Wood burner + * Replaces the old combustion generator + * A larger machine, has higher efficiency when burning logs or planks + * Collects ashes at the same rate as ashpits + * Also has an option to burn flammable liquids at 50% efficiency +* `/ntmrad` + * `set` operator can change the radiation amount in the current chunk + * `clear` operator will remove the radiation data from all loaded chunks +* Dense wires + * Can be made in a crucible + * Material cost is equivalent to 1 ingot + * For ease of mass-production, 9-fold molds are also available + * Used to craft hadron magnets, reducing crafting complexity be removing annoying upgrade recipes which make automation more complicated and needlessly inflate the amount of materials required for a magnet tier that isn't even the one that's being made +* Neodymium os now a valid crucible material +* Particle accelerators will now evenly distribute items using IO if both inputs are equal, making the antischrabidium recipe a lot easier to automate ## Changed * Changed many tool recipes that exclusively used polymer to now also accept bakelite @@ -9,6 +24,7 @@ * 1000mB of red mud now makes one ingot of iron in the coker * Doubled coal bedrock ore's coal output to 8 coal * A new config option now replaces the iron and copper bedrock ores in 528 mode with hematite and malachite +* the industrial generator now has three additional ports on its underside, meaning it is now a lot easier to properly automate all necessary IO ## Fixed * Pipe and power networks now force the chunk to be saved on transfer, ensuring that rapid changes in the fluid/energy level aren't lost when the tile entity is unloaded \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/machine/MachineIGenerator.java b/src/main/java/com/hbm/blocks/machine/MachineIGenerator.java index 8c00aeffb..5f3de0132 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineIGenerator.java +++ b/src/main/java/com/hbm/blocks/machine/MachineIGenerator.java @@ -72,6 +72,8 @@ public class MachineIGenerator extends BlockDummyable { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); this.makeExtra(world, x + dir.offsetX * (o - 3), y, z + dir.offsetZ * (o - 3)); + this.makeExtra(world, x + dir.offsetX * (o - 2), y, z + dir.offsetZ * (o - 2)); + this.makeExtra(world, x + dir.offsetX * (o - 1), y, z + dir.offsetZ * (o - 1)); this.makeExtra(world, x + dir.offsetX * (o + 2), y, z + dir.offsetZ * (o + 2)); } diff --git a/src/main/java/com/hbm/commands/CommandRadiation.java b/src/main/java/com/hbm/commands/CommandRadiation.java new file mode 100644 index 000000000..436d7bcc4 --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandRadiation.java @@ -0,0 +1,33 @@ +package com.hbm.commands; + +import com.hbm.handler.radiation.ChunkRadiationManager; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; + +public class CommandRadiation extends CommandBase { + + @Override + public String getCommandName() { + return "ntmrad"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/ntmrad "; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if(args.length == 1 && "clear".equals(args[0])) { + ChunkRadiationManager.proxy.clearSystem(sender.getEntityWorld()); + } + + if(args.length == 2 && "set".equals(args[0])) { + float amount = (float) this.parseDoubleBounded(sender, args[1], 0D, 100_000D); + ChunkRadiationManager.proxy.setRadiation(sender.getEntityWorld(), sender.getPlayerCoordinates().posX, sender.getPlayerCoordinates().posY, sender.getPlayerCoordinates().posZ, amount); + } + } + +} diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler.java index 6e53a8838..f351d2a27 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler.java @@ -17,6 +17,7 @@ public abstract class ChunkRadiationHandler { public abstract void setRadiation(World world, int x, int y, int z, float rad); public abstract void incrementRad(World world, int x, int y, int z, float rad); public abstract void decrementRad(World world, int x, int y, int z, float rad); + public abstract void clearSystem(World world); /* * Proxy'd event handlers diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java index 5c81a416e..30066a91e 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java @@ -109,6 +109,15 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { } } + @Override + public void clearSystem(World world) { + ThreeDimRadiationPerWorld radWorld = perWorld.get(world); + + if(radWorld != null) { + radWorld.radiation.clear(); + } + } + @Override public void receiveWorldLoad(WorldEvent.Load event) { if(!event.world.isRemote) diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerBlank.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerBlank.java index c28a69348..76cc31af0 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerBlank.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerBlank.java @@ -4,20 +4,10 @@ import net.minecraft.world.World; public class ChunkRadiationHandlerBlank extends ChunkRadiationHandler { - @Override - public float getRadiation(World world, int x, int y, int z) { - return 0; - } - - @Override - public void setRadiation(World world, int x, int y, int z, float rad) { } - - @Override - public void incrementRad(World world, int x, int y, int z, float rad) { } - - @Override - public void decrementRad(World world, int x, int y, int z, float rad) { } - - @Override - public void updateSystem() { } + @Override public float getRadiation(World world, int x, int y, int z) { return 0; } + @Override public void setRadiation(World world, int x, int y, int z, float rad) { } + @Override public void incrementRad(World world, int x, int y, int z, float rad) { } + @Override public void decrementRad(World world, int x, int y, int z, float rad) { } + @Override public void updateSystem() { } + @Override public void clearSystem(World world) { } } diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerNT.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerNT.java index c95c180d5..50144d6aa 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerNT.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerNT.java @@ -38,6 +38,18 @@ public class ChunkRadiationHandlerNT extends ChunkRadiationHandler { private static HashMap worldMap = new HashMap(); + @Override + public void clearSystem(World world) { + WorldRadiationData radWorld = worldMap.get(world); + + if(radWorld != null) { + radWorld.data.clear(); + radWorld.activePockets.clear(); + radWorld.dirtyChunks.clear(); + radWorld.dirtyChunks2.clear(); + } + } + @Override public void incrementRad(World world, int x, int y, int z, float rad) { if(!world.blockExists(x, y, z)) { diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java index 72ab84887..161dd5522 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java @@ -116,6 +116,15 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { } } + @Override + public void clearSystem(World world) { + SimpleRadiationPerWorld radWorld = perWorld.get(world); + + if(radWorld != null) { + radWorld.radiation.clear(); + } + } + @Override public void receiveWorldLoad(WorldEvent.Load event) { if(!event.world.isRemote) diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index d62452c94..4bf6ef68c 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -506,6 +506,7 @@ public class OreDictManager { if(mat.shapes.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); if(mat.shapes.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); if(mat.shapes.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); + if(mat.shapes.contains(MaterialShapes.DENSEWIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.DENSEWIRE.name() + name, new ItemStack(ModItems.wire_dense, 1, mat.id)); } } @@ -654,6 +655,7 @@ public class OreDictManager { public String plateCast() { return PLATECAST + mats[0]; } public String plateWelded() { return PLATEWELDED + mats[0]; } public String heavyComp() { return HEAVY_COMPONENT + mats[0]; } + public String wireDense() { return WIREDENSE + mats[0]; } public String billet() { return BILLET + mats[0]; } public String block() { return BLOCK + mats[0]; } public String ore() { return ORE + mats[0]; } @@ -906,6 +908,7 @@ public class OreDictManager { public String plateCast() { return PLATECAST + groupName; } public String plateWelded() { return PLATEWELDED + groupName; } public String heavyComp() { return HEAVY_COMPONENT + groupName; } + public String wireDense() { return WIREDENSE + groupName; } public String billet() { return BILLET + groupName; } public String block() { return BLOCK + groupName; } public String ore() { return ORE + groupName; } diff --git a/src/main/java/com/hbm/inventory/OreNames.java b/src/main/java/com/hbm/inventory/OreNames.java index 9f4efc4e1..4f1584d60 100644 --- a/src/main/java/com/hbm/inventory/OreNames.java +++ b/src/main/java/com/hbm/inventory/OreNames.java @@ -16,6 +16,7 @@ public class OreNames { public static final String PLATE = "plate"; public static final String PLATECAST = "plateTriple"; //cast plates are solid plates made from 3 ingots, turns out that's literally just a GT triple plate public static final String PLATEWELDED = "plateSextuple"; + public static final String WIREDENSE = "wireDense"; public static final String BILLET = "billet"; public static final String BLOCK = "block"; public static final String ORE = "ore"; @@ -23,6 +24,6 @@ public class OreNames { public static final String HEAVY_COMPONENT = "componentHeavy"; public static final String[] prefixes = new String[] { - ANY, NUGGET, TINY, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER, HEAVY_COMPONENT + ANY, NUGGET, TINY, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER, HEAVY_COMPONENT, WIREDENSE }; } diff --git a/src/main/java/com/hbm/inventory/material/MaterialShapes.java b/src/main/java/com/hbm/inventory/material/MaterialShapes.java index 12a1f9a9d..df72f9da9 100644 --- a/src/main/java/com/hbm/inventory/material/MaterialShapes.java +++ b/src/main/java/com/hbm/inventory/material/MaterialShapes.java @@ -18,6 +18,7 @@ public class MaterialShapes { public static final MaterialShapes GEM = new MaterialShapes(INGOT.quantity, "gem"); public static final MaterialShapes CRYSTAL = new MaterialShapes(INGOT.quantity, "crystal"); public static final MaterialShapes DUST = new MaterialShapes(INGOT.quantity, "dust"); + public static final MaterialShapes DENSEWIRE = new MaterialShapes(INGOT.quantity, "wireDense"); public static final MaterialShapes PLATE = new MaterialShapes(INGOT.quantity, "plate"); public static final MaterialShapes CASTPLATE = new MaterialShapes(INGOT.quantity * 3, "plateTriple"); public static final MaterialShapes WELDEDPLATE = new MaterialShapes(INGOT.quantity * 6, "plateSextuple"); diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 74949b37f..d3613fac6 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -55,7 +55,7 @@ public class Mats { public static final NTMMaterial MAT_LIGCOKE = make( 1412, LIGCOKE) .setConversion(MAT_CARBON, 4, 3); public static final NTMMaterial MAT_GRAPHITE = make( 1420, GRAPHITE) .setConversion(MAT_CARBON, 1, 1); public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setShapes(CASTPLATE, WELDEDPLATE); - public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(CASTPLATE); + public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(DENSEWIRE, CASTPLATE); public static final NTMMaterial MAT_REDSTONE = makeSmeltable(_VS + 01, REDSTONE, 0xE3260C, 0x700E06, 0xFF1000); public static final NTMMaterial MAT_OBSIDIAN = makeSmeltable(_VS + 02, df("Obsidian"), 0x3D234D); public static final NTMMaterial MAT_HEMATITE = makeAdditive( 2601, HEMATITE, 0xDFB7AE, 0x5F372E, 0x6E463D); @@ -87,21 +87,22 @@ public class Mats { public static final NTMMaterial MAT_CO60 = makeSmeltable(2760, CO60, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, BILLET, INGOT, DUST); public static final NTMMaterial MAT_AU198 = makeSmeltable(7998, AU198, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(NUGGET, BILLET, INGOT, DUST); public static final NTMMaterial MAT_PB209 = makeSmeltable(8209, PB209, 0x7B535D).setShapes(NUGGET, BILLET, INGOT, DUST); - public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setShapes(NUGGET, WIRE, BILLET, INGOT, DUST, PLATE, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setShapes(NUGGET, WIRE, BILLET, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK); public static final NTMMaterial MAT_SOLINIUM = makeSmeltable(12627, SA327, 0xA2E6E0, 0x00433D, 0x72B6B0).setShapes(NUGGET, BILLET, INGOT, BLOCK); - public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_SCHRARANIUM = makeSmeltable(12601, SRN, 0x2B3227, 0x2B3227, 0x24AFAC).setShapes(INGOT, BLOCK); public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setShapes(NUGGET, BILLET, INGOT, BLOCK); //Base metals public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setShapes(NUGGET, INGOT); public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setShapes(NUGGET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_NEODYMIUM = makeSmeltable(6000, ND, 0xE6E6B6, 0x1C1C00, 0x8F8F5F).setShapes(NUGGET, DUSTTINY, INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setShapes(NUGGET, DUSTTINY, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setShapes(NUGGET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK); @@ -114,16 +115,17 @@ public class Mats { //Alloys public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT); public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT); - public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK); + public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST); public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK); public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT); diff --git a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java index 39fc4c54b..0c4e12f45 100644 --- a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -41,7 +42,7 @@ public class MagicRecipes { public static void register() { recipes.add(new MagicRecipe(new ItemStack(ModItems.ingot_u238m2), new ComparableStack(ModItems.ingot_u238m2, 1, 1), new ComparableStack(ModItems.ingot_u238m2, 1, 2), new ComparableStack(ModItems.ingot_u238m2, 1, 3))); recipes.add(new MagicRecipe(new ItemStack(ModItems.rod_of_discord), new ComparableStack(Items.ender_pearl), new ComparableStack(Items.blaze_rod), new ComparableStack(ModItems.nugget_euphemium))); - recipes.add(new MagicRecipe(new ItemStack(ModItems.balefire_and_steel), new OreDictStack("ingotSteel"), new ComparableStack(ModItems.egg_balefire_shard))); + recipes.add(new MagicRecipe(new ItemStack(ModItems.balefire_and_steel), new OreDictStack(STEEL.ingot()), new ComparableStack(ModItems.egg_balefire_shard))); recipes.add(new MagicRecipe(new ItemStack(ModItems.mysteryshovel), new ComparableStack(Items.iron_shovel), new ComparableStack(Items.bone), new ComparableStack(ModItems.ingot_starmetal), new ComparableStack(ModItems.ducttape))); recipes.add(new MagicRecipe(new ItemStack(ModItems.ingot_electronium), new ComparableStack(ModItems.pellet_charged), new ComparableStack(ModItems.pellet_charged), new ComparableStack(ModItems.ingot_dineutronium), new ComparableStack(ModItems.ingot_dineutronium))); @@ -83,13 +84,19 @@ public class MagicRecipes { new ComparableStack(ModBlocks.hadron_coil_chlorophyte), new ComparableStack(ModItems.powder_dineutronium), new ComparableStack(ModItems.plate_desh), - new OreDictStack("dustGold"))); + new OreDictStack(GOLD.dust()))); + + recipes.add(new MagicRecipe(new ItemStack(ModBlocks.hadron_coil_mese), + new ComparableStack(ModBlocks.hadron_coil_chlorophyte), + new OreDictStack(DNT.wireDense()), + new OreDictStack(W.wireDense()), + new OreDictStack(GOLD.wireDense()))); recipes.add(new MagicRecipe(new ItemStack(ModItems.gun_darter), - new OreDictStack("plateSteel"), - new OreDictStack("plateSteel"), + new OreDictStack(STEEL.plate()), + new OreDictStack(STEEL.plate()), new ComparableStack(ModItems.ingot_polymer), - new OreDictStack("plateGold"))); + new OreDictStack(GOLD.plate()))); recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_dart, 4, ItemAmmoEnums.AmmoDart.NUCLEAR.ordinal()), new ComparableStack(ModItems.plate_polymer), @@ -109,7 +116,6 @@ public class MagicRecipes { public MagicRecipe(ItemStack out, AStack... in) { this.out = out; this.in = Arrays.asList(in); - //Collections.sort(this.in); } public boolean matches(List comps) { diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 281d884e3..778b17be4 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -126,6 +126,8 @@ public class AnvilRecipes { smithingRecipes.add(new AnvilSmithingMold(16, new ComparableStack(ModItems.casing_9), new ItemStack[] {new ItemStack(ModItems.casing_9)})); smithingRecipes.add(new AnvilSmithingMold(17, new ComparableStack(ModItems.casing_50), new ItemStack[] {new ItemStack(ModItems.casing_50)})); smithingRecipes.add(new AnvilSmithingMold(18, new ComparableStack(ModItems.casing_buckshot), new ItemStack[] {new ItemStack(ModItems.casing_buckshot)})); + smithingRecipes.add(new AnvilSmithingMold(20, new OreDictStack(ALLOY.wireDense(), 1), new OreDictStack("wireDense", 1))); + smithingRecipes.add(new AnvilSmithingMold(21, new OreDictStack(ALLOY.wireDense(), 9), new OreDictStack("wireDense", 9))); smithingRecipes.add(new AnvilSmithingCyanideRecipe()); smithingRecipes.add(new AnvilSmithingRenameRecipe()); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 2a28f99d5..4609fed6d 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -780,6 +780,7 @@ public class ModItems { public static Item plate_cast; public static Item plate_welded; public static Item heavy_component; + public static Item wire_dense; public static Item part_lithium; public static Item part_beryllium; @@ -3263,6 +3264,7 @@ public class ModItems { plate_cast = new ItemAutogen(MaterialShapes.CASTPLATE).aot(Mats.MAT_BISMUTH, "plate_cast_bismuth").setUnlocalizedName("plate_cast").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_cast"); plate_welded = new ItemAutogen(MaterialShapes.WELDEDPLATE).setUnlocalizedName("plate_welded").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_welded"); heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":heavy_component"); + wire_dense = new ItemAutogen(MaterialShapes.DENSEWIRE).setUnlocalizedName("wire_dense").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_dense"); part_lithium = new Item().setUnlocalizedName("part_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_lithium"); part_beryllium = new Item().setUnlocalizedName("part_beryllium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_beryllium"); @@ -6028,6 +6030,7 @@ public class ModItems { GameRegistry.registerItem(wire_gold, wire_gold.getUnlocalizedName()); GameRegistry.registerItem(wire_schrabidium, wire_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(wire_magnetized_tungsten, wire_magnetized_tungsten.getUnlocalizedName()); + GameRegistry.registerItem(wire_dense, wire_dense.getUnlocalizedName()); //Parts GameRegistry.registerItem(coil_copper, coil_copper.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemMold.java b/src/main/java/com/hbm/items/machine/ItemMold.java index 6da8ca650..78e5a8ff1 100644 --- a/src/main/java/com/hbm/items/machine/ItemMold.java +++ b/src/main/java/com/hbm/items/machine/ItemMold.java @@ -46,8 +46,9 @@ public class ItemMold extends Item { registerMold(new MoldShape( 2, S, "ingot", MaterialShapes.INGOT)); registerMold(new MoldShape( 3, S, "plate", MaterialShapes.PLATE)); registerMold(new MoldWire( 4, S, "wire")); - + registerMold(new MoldShape( 19, S, "plate_cast", MaterialShapes.CASTPLATE)); + registerMold(new MoldShape( 20, S, "wire_dense", MaterialShapes.DENSEWIRE)); registerMold(new MoldMulti( 5, S, "blade", MaterialShapes.INGOT.q(3), Mats.MAT_TITANIUM, new ItemStack(ModItems.blade_titanium), @@ -76,6 +77,7 @@ public class ItemMold extends Item { registerMold(new MoldShape( 10, L, "ingots", MaterialShapes.INGOT, 9)); registerMold(new MoldShape( 11, L, "plates", MaterialShapes.PLATE, 9)); + registerMold(new MoldShape( 21, L, "wires_dense", MaterialShapes.DENSEWIRE, 9)); registerMold(new MoldBlock( 12, L, "block", MaterialShapes.BLOCK)); registerMold(new MoldSingle( 13, L, "pipes", new ItemStack(ModItems.pipes_steel), Mats.MAT_STEEL, MaterialShapes.BLOCK.q(3))); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 624d4ce59..4c7e39863 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -825,14 +825,27 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mech_key, 1), new Object[] { "MCM", "MKM", "MMM", 'M', ModItems.ingot_meteorite_forged, 'C', ModItems.coin_maskman, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.spawn_ufo, 1), new Object[] { "MMM", "DCD", "MMM", 'M', ModItems.ingot_meteorite, 'D', DNT.ingot(), 'C', ModItems.coin_worm }); + addRecipeAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), new Object[] { "WWW", "W W", "WWW", 'W', ModItems.wire_advanced_alloy }); + addRecipeAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), new Object[] { "WWW", "W W", "WWW", 'W', ModItems.wire_gold }); + addRecipeAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_TUNGSTEN.id), new Object[] { "WWW", "W W", "WWW", 'W', ModItems.wire_tungsten }); + addRecipeAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_MAGTUNG.id), new Object[] { "WWW", "W W", "WWW", 'W', ModItems.wire_magnetized_tungsten }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ModItems.wire_advanced_alloy, 'C', ModBlocks.fusion_conductor }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WW", "WW", 'W', ALLOY.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "PGP", "PCP", "PGP", 'G', GOLD.dust(), 'C', ModBlocks.hadron_coil_alloy, 'P', IRON.plate() }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "WG", "GW", 'W', ALLOY.wireDense(), 'G', GOLD.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "G", "C", "G", 'G', ND.dust(), 'C', ModBlocks.hadron_coil_gold }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "WG", "GW", 'W', ND.wireDense(), 'G', GOLD.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_magtung, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ModItems.wire_magnetized_tungsten, 'C', ModBlocks.fwatz_conductor }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_magtung, 1), new Object[] { "WW", "WW", 'W', MAGTUNG.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ModItems.wire_schrabidium, 'C', ModBlocks.hadron_coil_magtung }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WS", "SW", 'W', MAGTUNG.wireDense(), 'S', SA326.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { " S ", "SCS", " S ", 'S', SBD.dust(), 'C', ModBlocks.hadron_coil_schrabidium }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { "WS", "SW", 'W', SBD.wireDense(), 'S', SA326.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SNS", "SCS", "SNS", 'S', STAR.ingot(), 'N', ModBlocks.hadron_coil_neodymium, 'C', ModBlocks.hadron_coil_schrabidate }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SW", "WS", 'W', SBD.wireDense(), 'S', STAR.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TCT", "TST", "TCT", 'T', ModItems.coil_tungsten, 'C', ModItems.powder_chlorophyte, 'S', ModBlocks.hadron_coil_starmetal }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TC", "CT", 'T', W.wireDense(), 'C', ModItems.powder_chlorophyte }); addRecipeAuto(new ItemStack(ModBlocks.hadron_diode, 1), new Object[] { "CIC", "ISI", "CIC", 'C', ModBlocks.hadron_coil_alloy, 'I', STEEL.ingot(), 'S', ModItems.circuit_gold }); addRecipeAuto(new ItemStack(ModBlocks.hadron_plating, 16), new Object[] { "CC", "CC", 'C', STEEL.plateCast()}); addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_blue, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLUE }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 0c87a90b0..4eab1dba4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -81,7 +81,15 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - return i == 0 || i == 1; + if(i != 0 && i != 1) return false; + + //makes sure that equal items like the antimatter capsules are spread out evenly + if(slots[0] != null && slots[1] != null && slots[0].getItem() == slots[1].getItem() && slots[0].getItemDamage() == slots[1].getItemDamage()) { + if(i == 0) return slots[1].stackSize - slots[0].stackSize >= 0; + if(i == 1) return slots[0].stackSize - slots[1].stackSize >= 0; + } + + return true; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index f980ca60b..141c16d38 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -124,6 +124,9 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); return new DirPos[] { new DirPos(xCoord + dir.offsetX * -4, yCoord, zCoord + dir.offsetZ * -4, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * -2, yCoord - 1, zCoord + dir.offsetZ * -2, ForgeDirection.DOWN), + new DirPos(xCoord + dir.offsetX * -1, yCoord - 1, zCoord + dir.offsetZ * -1, ForgeDirection.DOWN), + new DirPos(xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN), new DirPos(xCoord + dir.offsetX * 3, yCoord, zCoord + dir.offsetZ * 3, dir), }; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index ac93421ca..a818bb0ef 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -15,7 +15,9 @@ import com.hbm.lib.Library; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.DirPos; +import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -24,10 +26,11 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IGUIProvider { +public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IEnergyGenerator, IGUIProvider { public long power; public static final long maxPower = 100_000; @@ -63,6 +66,11 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement this.tank.loadTank(3, 4, slots); this.power = Library.chargeItemsFromTE(slots, 5, power, maxPower); + for(DirPos pos : getConPos()) { + if(power > 0) this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(worldObj.getTotalWorldTime() % 20 == 0) this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + if(!liquidBurn) { if(this.burnTime <= 0) { @@ -121,6 +129,15 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement } } } + + private DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + return new DirPos[] { + new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetX, dir.getOpposite()) + }; + } @Override public void networkUnpack(NBTTagCompound nbt) { @@ -190,6 +207,21 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement return slot == 1; } + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {tank}; @@ -199,4 +231,29 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 6, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 39f98c28e..2d4834860 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -809,6 +809,7 @@ hbmmat.magnetizedtungsten=Magnetisierter Wolfram hbmmat.malachite=Malachit hbmmat.meteoriciron=Meteoriteneisen hbmmat.mingrade=Minecraft-Kupfer +hbmmat.neodymium=Neodym hbmmat.neptunium237=Neptunium-237 hbmmat.niobium=Niob hbmmat.obsidian=Obsidian @@ -3394,6 +3395,7 @@ item.wings_murk.name=Trübe Flügel item.wire_advanced_alloy.name=Supraleiter item.wire_aluminium.name=Aluminiumdraht item.wire_copper.name=Kupferdraht +item.wire_dense.name=Dichter %sdraht item.wire_gold.name=Golddraht item.wire_magnetized_tungsten.name=4000K Hochtemperaturensupraleiter item.wire_red_copper.name=Roter Kupferdraht @@ -3468,6 +3470,8 @@ shape.plate=Platte shape.plateTriple=Gussplatte shape.stamp=Stempel shape.wire=Draht +shape.wireDense=Dichter Draht +shape.wiresDense=Dichte Drähte soundCategory.ntmMachines=NTM Maschinen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 85e9a142c..eb2348566 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1459,6 +1459,7 @@ hbmmat.magnetizedtungsten=Magnetized Tungsten hbmmat.malachite=Malachite hbmmat.meteoriciron=Meteoric Iron hbmmat.mingrade=Minecraft Grade Copper +hbmmat.neodymium=Neodymium hbmmat.neptunium237=Neptunium-237 hbmmat.niobium=Niobium hbmmat.obsidian=Obsidian @@ -4322,6 +4323,7 @@ item.wings_murk.name=Murky Wings item.wire_advanced_alloy.name=Super Conductor item.wire_aluminium.name=Aluminium Wire item.wire_copper.name=Copper Wire +item.wire_dense.name=Dense %s Wire item.wire_gold.name=Gold Wire item.wire_magnetized_tungsten.name=4000K High Temperature Super Conductor item.wire_red_copper.name=Red Copper Wire @@ -4409,6 +4411,8 @@ shape.plate=Plate shape.plateTriple=Cast Plate shape.stamp=Press Stamp shape.wire=Wire +shape.wireDense=Dense Wire +shape.wiresDense=Dense Wires soundCategory.ntmMachines=NTM Machines diff --git a/src/main/resources/assets/hbm/textures/items/mold_wire_dense.png b/src/main/resources/assets/hbm/textures/items/mold_wire_dense.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc03fe36a90ce82e41bd5db58cfe79b0f037fff GIT binary patch literal 443 zcmV;s0Yv_ZP)S6otRcq)m3AAQapPQiKLXSKSq)(ic$h1-kD`_y*!m zguZ}JAh>a7S0Xe}M36$kRV<~DpH9X_NzBwz5zlHk_s*Gf?;Pv;>_j`Z#B&{HQ4C<5 zbL8B5&30_bB%E_Od_rkWzkS3coEHs)VSv)w5bL*(Si~uxQGyL{`!vF@*QiQ~x7UF8 zR~B(<@QG4|z}4e3y_OGvC@bepi#TO44DjnUgU{jDYwR90R|1~vunFt7&$}G}(kwH0 zF^giPWo;BGU!INwMjs&+Aq)}WxeiKes#0zhDWf6;Nv2E(>vL{Hnq^eQ>Oleg&p}T9 z#Q|VC_-%;*ky-*jf5C?D5fY`iyMJKx5f&N9;YyoKYbwHsjyXcUhxN-vvt|9vf#*8( zT0ZC9PO*n_Q=S2!a8RyWHy5XR63&U#lKti(Nv4Vg0lWn-xY8z4OI&HQ(>S0iB-3%g lXOv*|+s9^R|A30H_yR9xu^Vulr3nB4002ovPDHLkV1mwszWe|H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/mold_wires_dense.png b/src/main/resources/assets/hbm/textures/items/mold_wires_dense.png new file mode 100644 index 0000000000000000000000000000000000000000..4c4df12b9f00943cedb19e0bfc253690630a0f77 GIT binary patch literal 447 zcmV;w0YLtVP)xQ_KoAgHZ@Krrcku3WcjV>iA!Z_lQfF9m4*&}1)KaY+ z6PZY1J1&-tW8(#onFQN$vjmw**mwbKB$^F3(^lMvm?jR!6Hr1B#&PC#O@+B|vU_T} zrsD4MG^rq8X1mqM&NWKWGdeJbqk;|q{jP!e%u0Ts)ER8J&@~nPu7R?Zbw3IVaq{~7 z7%#s$2IEQP$L7M>)32Kf?yt_19w>DN+i^h&sVvnTj-YGmp8jD?6NEMQATtT=R^upy z6r)Z>@W4+HY{$jhyH)7)UkJLU;`X8m9z?q-q+>f4VLr3KgY6#3O!{{UeiWi6(CR51 zix9;z1VXY!Dr{mH$GAB=fgkQ(s6q&$={U6hxm<#1$+{RO!-(ijJ1loPZPLAUQ!!kct9YL_-BV zT`DBYS8&5tM%ZMv+SN{l#`DJyW8lAZzu(ugEZ5Lq1C8V8WrQ1EmIZ4q0CimpH#|*~ zS7?j@;C8zSfD=HT=RBWJ0M6$#`{BOtKN6Q^xxQX65dlaksj7-B%RYw3aby?0YfT)- z-+Ep_7&gXuxIYpor4E6xG$cJ7Vv;0>3$!P2R35=JO&DX)TBDSrZCi{n%=3KMIs95D zfHX}-(=@9?-s8XD@9kq#tO*OD^h{#pGM5xG z_hRT`wW2j1Y8e$}u00spTz-3=UccXezrTLx^*ZOg&Uu~lIiJgUzdxVrZZ5~T>!wWY%(6DY#Y!2=>`S0H!_0Bmb@z@R;13ui}MFYfkM2Y)XP zx_ZFMJbJ?Rk-k>_j`lo@Q#l9q{wm4yy=5`y{-c?m^P8uR?2akl?N0IAKk(Ei&Mx04 z$eWm_y?1gl0Im2VD89NVs%p+1>+-V9fTMTKLN_|hnDgLkgd6ENX_gjcsayKaxyh5MK9X!Q<9hDHr(5pGI6sVICRHR$;ur{^RMg?Y{ z*H1jt_;HrkV$be~Tddf@)>LbgK`WS=1se5COc1K6_Td^z>ry~^DiT5CWK@SlB!Qbk}#IEEUqB3u=MaTMLP4cbc2b?jr0x3bxjCT;hz%#!NN5r zWtpq%XX6^_Crt)!Mf(HJi;uPU#a6r0lzsSPWbJrKwJbr;BnItg&hNN$aIA#UM=+WzDd zVDvzhY`eZ62#q}0f}B)ctN*>YelYQYP`GcuIWc_5g4v#_1f==hWOQ^o@TLnI7llrQ z6&~ZZ54`b1Hm&Nf-5!0uQl}gxM#jq`W11P zMJN*{6OVw?`D*)(z6ok0Bxd1j4(r29U(u}FrZ3keVK;AYTodU;!By4OQ#(6bTD;RI zN}Goc7p+5?uvg`{$?SOZpG++AxDzW^IV*|0FjgCHS4CHgERrn!P{w$M(Q8+%a2_D zkoIRnTi(jAo1eVTANWz0RHO6Lu``PdCUYLHU`<@c@=o5T&*>4DCfz5e=i;JA z^7Iu4k9|iscqI`C+U{{mx7!(+j3?xKUNzeL>&PcG5IYirU2hJ-R>d-3iNAEfv_Mii zGnIbIqx*7{L03PgcQ#kDEZFr{dus>KwjOJR=a0O>r6S?pBIMY%UeISnu+-cZx7^8C zyNXMeK0ZF&QSo}B|G}WA2CRk$=>%NXW?;?W{ZrHlxI$Z9L51L1wS9BuaW($@*Y&KC zkQmX5gEj*5=5Xf8d+`EcJXh|Sv2%&sTQRqJb~uW4TcO&1T-+x|jNHSuP9W?XSZ?{* zI&X;wl(@!Ul)-YXn|>{xH+Wj?ft!QzN010xpan}pk^oi2Z7e4uUCAU6r^o^+=&|p| z7S~)c!g9VyD_P9BN%nTRKVr!CXd>{S2r8ZVt1e3d^cHMRtodxcaw7jC!aW~(zsP(- zg@ zNq(yA_~aevtpWF`k&@E7S&s07CZ2rjc#V<6PQJTssjN(L%A)HY1gZI*iZnPMXw&iDw# zh{UyJWbTXcnVC!qB|19#t4(�R$$?^pJXXrTp8cFJC&0FCLLe?q1S#s>mw+b9X)z zm3w^&ywF1?($D9cA+2k6hR58zQsP z&5exXm-7_E$Aect&pFAekZvCdzoU{C`eYsF)6e50Qj<%GRvh=dC)t&vGAf0sV6yts5T437R{OaP) zq;8xV6t{9=uOQ8z2JQLL4@0j$>I0R8elL`=gMTMs$C8rwL2jvTxhKKkj3N4C0(T_M z@AVVE#WaG|{}_vGLg|>`CHW;^l4|~e6UqAjT=tLN zT^6tVPO;8+Xu(17vC&xBrxZ{AfB6D4UP$P2tsAOom0vN536JCy8%E)q_&O{QyuPKy z%qX5lz$vjCR5``X!M(LV=_3b<>>9oM;ywIZ6ASk@>3|HSKu82Y{0Sa6=L@Hn;-Y@| zWuMNwXsyNe)R;@)8wmG*Z!VRPUYHM_YfNkX4_i6*|EAqTa}OgBQYaKj0<2)5(&1_s zMy;e+PpJOJDqB&zaA(g}#CNzn{gmV7?QNgbr|Vrah+!VBosKb+p1%UmNDa_f6YUNT z4tDmNUJ+k~Rfe?eetaa$Ck?ynrsb2-H)6Hx7u)p)M>L-rsLspG-^yR&$&sp*BaBr~ z)T|F*zY7IF3uA+-H4xW=zlSB;8Ur6!knnfUXYU||4Ew<#&-)WG&!Iq``0Q&U6;`Nr zg7g|)R-k~ifaTxg&AKFm)viw zcAqUUx%Hp09!I|EGt_|@qV3MDgB-*#q#p|eeg1x!(?&<($%V1R)DC$abwe}^fA9ur z4T;#hV{jh{aMO^m(v)Z3VjpazJt~7j;ddrDy+{^s-{Nnq>Ii0CG%x2CZ|>}rT|r#q zyXG_=68*(XejChc&=Y*Ij!Ev@ZpkKDM^e$KjbUfb=M7jSRf_1y$I0YW+F7vy57LF7 zRn4b9!{d8rMEdhp8Y3ZQZm7QDlW|=%Le8Dd5Bi~!aNOv!H>sAn8qE8ntgP%6hvWWy z_bf!(CQ@}nrZOBE#h2pDByCnsW+R}IOHkU2t9F6A@QzK%V+NCYTbAFt0y9dAp!OME zY5BHM+}G%GB-~ahC6cNMx7AJ=!To9RqvT!C;b=I-tr6=wfuX5yFTfqGEIO(KE>x5L zA4QmUvTel{Ia){%N3dDq3upPB_|$3kU{P+NlDBE!hD4_CgtV`Bvt4>O(;8yBp0za} suRI)Ew3hU^o=H%7d|<;eQk=A=k)h#2f&~kgBsDGIaKr^uYv)h?HzAHXZ~y=R literal 2701 zcmb7GX;f2L5`KgyBoH7N#TJPKkVQwZjerQv5(pp>S`g4q(*m|c49F^r$R1Q^1p!f* zpzN!W#U_T;fHXQpB0|^&V$d{A2r4@P!qQLY*UbEyd(ORe>fE|jb?bazo%+rBM|%Z1 zRXG3v6dX*I#RML(-FiT6Tq=-y=u8=~Q!5n{{(KAYI_O zVp^80`Y36oZzu9X^izaSrLInXi1&?^3?f(9Bb=U|?Vpt-whOq=EB1P{iL;hU#fG;F zXPOyI=5D4Q*9SMB-xBVqgYKKD^V0J2&L%l^zpooM&f{ z9)14Vc=yBOS{zo?V!1L$L%mD}zuPqLRcdfZ2)A-FgJ7tYH6WYYTB8gHl6qEl@YiCd z`yk(ME*-mleN}p5V&VnK!=ogk1+yj;OPDNOReY~A8G|;&3zD$Y`M(V2bRP7NtVF0{ zK!*}sWoyh{FtM?Z>OHsmuuO7ev%{X~6@Nz7_w*N&shmBJVH3hrp%KPr&lvBDcx`P} zpW~u4iSpE~4_dmEjl$>d<_6At1&VnwgCTE^91*trN{R#tdEJxJ89S0*MK#aHY%g9N zefP;(T(IW~teD$kGOUn=`aerwLFl*Jd89N#GQk5g1sRMRZ>?a4nFO=NQO$V%!KsWCkB zo|^Rq^1XGq1$#(TTU|{)jMg=bFG)wxTk9*j{FAA%((|6g+9Wt0 zFk0E{;mo4h^3=k=zTKYSJT*H|!^K;}AAmp-v-}&L!hE5PlbypeuS^sj1DS_~1=GFxhiYP;0>rC=?%UYWt*kozT zqREF^x|SRw=cZr6Wsg}QJ5Zy*rlmfIcs|*2Z>A}sHRuZJEl~m_|kRO z&28IU1#UoQ|B!~OU8$n7@Ng2!hYAMXLb2-M14)h$iqSwc8^SgYg84V~KyNrNL?TPo z(y%&)MehRh$RaBpJ-8`npj`vKT1)%msMHNC^hgbt$hW7+e|HOC!acb!%`W%Cca%Fx zu<`BMF?xAGCRwEC$I{F|U~hQnSfQ-ocM+=Pq7$#^xs1c|PzL1`zpbfoi#D(2Ml1Kb zX7_jC@c3R*xuOr1>ixEEBWKSJ8ZaWrM&OhxFoS<|rWt46N8A%RxCRC>ZA!R$b&t%Z za=JK9{NG6`E;co*$y!H|9o%qp_q=R!S&dD3>Pbw9O$|!<_ogewP*k@^jKd?jKWDoW zF}79b2!bS_554z=AFWdAc_6>l=`Ol0*6xAw`Py<;(1urA9ENTKQUU7)wlOZ;jp+$W z-C#c}j~dWu@$3wFekH*XRRsC$f_xr1bO{!D?#U1hxSBoL_FRunrdEX;HZzcaR{j%F zH^3G0is-eUU6w~Re5kkBPmVe4-g2?J=ctoaws=|#olv)+3X`P)_chH-SL;IApam~* z_}$3JTwGgob8%J{`fSVI@CGJxk{L(w7;hA7p}{v(S05|6GTXKUPlv?1F_LA0wQ3fF zaZFQll*dbp&4-G8QZ3+Di-Kq+=Z@)V%Ev{rPS$VY3~g6?_Zg=*V12-;c&z0(ROmpO zw+6hK7kJs`7ZPbcf2Eh* z$CnlF1&ry8)lc(UBKy=;7IgbR>gfCCAgGuNP?Zq*7`fJ|bgvDBZ}@>-y!6a6b!xay z%FZ9m!0t{{G@-RUQU;EHA&tY&DYRnQp~wV?4^KHDMeHP2kNJHrj(gW2Ec?N!XD+mj z1%IKD5A1SksWKo?Rga)q`8oAo{trt07eoGk)$^$lCcU$4z~$w2TPz%VpmAQd)ZLIL-3X_J!JC^9sRTYwAS#e9E&4WjyHmR0O(k2$#>bLv;#q>#>v zOntgi1~gzaz?xc3$yGR7V{1?h;r%PuK!`LpI>1UJnR<4AM{(z%a*R3UeDQM1;aW-X zY)HqzaAMnTBV>oenC8A)A4;pg5k-@K?z-ncl)t3j_V@QE5W-?(KX>QqS%;;@ZiCnm z{q`%y@=mzA=4N6;Ag_2jj5sqhlW8gFVvYrHYh6U^ytEgV>M!ex-s!e&5XZ*G-unyY zO$I&~swuiQuqprk-`6Ilr5wcxkF_fAJ<==_wSx98q7-6sW3NL}|yEZ!C zDJFYn6czy183F0TEs3+_^jkJUi?pgu_lOAsi)4-eG`vSc$D zNP3cEhKrjeeyCMiZx0S{M=_2F3min_@D3a19b2+)O0+@{mt$uY1=$ltXe(eqy}>bK z#yuy*H#u;;5l)m6GTnvQH_AaU}Zl1Zgh7K_ze5*Vrg Date: Thu, 2 Nov 2023 14:52:04 +0100 Subject: [PATCH 085/207] this either fixes post impact mob spawning or destroys everything --- changelog | 6 +++--- .../com/hbm/main/ModEventHandlerImpact.java | 17 ++++++++--------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/changelog b/changelog index 562b40a8f..6f1c1771c 100644 --- a/changelog +++ b/changelog @@ -13,8 +13,6 @@ * Material cost is equivalent to 1 ingot * For ease of mass-production, 9-fold molds are also available * Used to craft hadron magnets, reducing crafting complexity be removing annoying upgrade recipes which make automation more complicated and needlessly inflate the amount of materials required for a magnet tier that isn't even the one that's being made -* Neodymium os now a valid crucible material -* Particle accelerators will now evenly distribute items using IO if both inputs are equal, making the antischrabidium recipe a lot easier to automate ## Changed * Changed many tool recipes that exclusively used polymer to now also accept bakelite @@ -25,6 +23,8 @@ * Doubled coal bedrock ore's coal output to 8 coal * A new config option now replaces the iron and copper bedrock ores in 528 mode with hematite and malachite * the industrial generator now has three additional ports on its underside, meaning it is now a lot easier to properly automate all necessary IO +* Neodymium is now a valid crucible material +* Particle accelerators will now evenly distribute items using IO if both inputs are equal, making the antischrabidium recipe a lot easier to automate ## Fixed -* Pipe and power networks now force the chunk to be saved on transfer, ensuring that rapid changes in the fluid/energy level aren't lost when the tile entity is unloaded \ No newline at end of file +* Pipe and power networks now force the chunk to be saved on transfer, ensuring that rapid changes in the fluid/energy level aren't lost when the tile entity is unloaded diff --git a/src/main/java/com/hbm/main/ModEventHandlerImpact.java b/src/main/java/com/hbm/main/ModEventHandlerImpact.java index 27529784c..d371296af 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerImpact.java +++ b/src/main/java/com/hbm/main/ModEventHandlerImpact.java @@ -31,7 +31,7 @@ import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.storage.ExtendedBlockStorage; import net.minecraftforge.common.DimensionManager; -import net.minecraftforge.event.entity.EntityJoinWorldEvent; +import net.minecraftforge.event.entity.living.LivingSpawnEvent.CheckSpawn; import net.minecraftforge.event.terraingen.BiomeEvent; import net.minecraftforge.event.terraingen.DecorateBiomeEvent; import net.minecraftforge.event.terraingen.PopulateChunkEvent; @@ -100,22 +100,21 @@ public class ModEventHandlerImpact { }*/ @SubscribeEvent - public void extinction(EntityJoinWorldEvent event) { + public void extinction(CheckSpawn event) { TomSaveData data = TomSaveData.forWorld(event.world); if(data.impact) { - if(!(event.entity instanceof EntityPlayer) && event.entity instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) event.entity; + if(!(event.entityLiving instanceof EntityPlayer) && event.entityLiving instanceof EntityLivingBase) { if(event.world.provider.dimensionId == 0) { - if(event.entity.height >= 0.85f || event.entity.width >= 0.85f && event.entity.ticksExisted < 20 && !(event.entity instanceof EntityWaterMob) && !living.isChild()) { - event.setCanceled(true); + if(event.entityLiving.height >= 0.85F || event.entityLiving.width >= 0.85F && !(event.entity instanceof EntityWaterMob) && !event.entityLiving.isChild()) { + event.setResult(Result.DENY); } } - if(event.entity instanceof EntityWaterMob && event.entity.ticksExisted < 20) { + if(event.entityLiving instanceof EntityWaterMob) { Random rand = new Random(); - if(rand.nextInt(9) != 0) { - event.setCanceled(true); + if(rand.nextInt(5) != 0) { + event.setResult(Result.DENY); } } } From ca9d8e74e0a52a5844a5c105ae5ace8111c348aa Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 4 Nov 2023 23:31:20 +0100 Subject: [PATCH 086/207] i wonder if the sky people like me --- changelog | 3 + .../blocks/generic/BlockLanternBehemoth.java | 10 ++- .../hbm/blocks/machine/MachineWoodBurner.java | 21 +++++- .../java/com/hbm/extprop/HbmPlayerProps.java | 4 ++ .../HazardTransformerRadiationContainer.java | 17 ++++- .../inventory/gui/GUIMachineWoodBurner.java | 4 +- .../java/com/hbm/items/tool/ItemWandD.java | 12 ++-- .../java/com/hbm/main/CraftingManager.java | 3 +- src/main/java/com/hbm/main/MainRegistry.java | 5 +- .../com/hbm/main/ModEventHandlerImpact.java | 16 +++++ .../deco/TileEntityLanternBehemoth.java | 17 ++++- .../machine/TileEntityMachineRadar.java | 37 ++++------- .../machine/TileEntityMachineWoodBurner.java | 57 +++++++++++++++- .../storage/TileEntityMachineBattery.java | 61 +++++++++++++----- .../storage/TileEntityMachineFENSU.java | 6 +- src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 3 + .../models/machines/strand_caster.png | Bin 0 -> 10757 bytes 18 files changed, 218 insertions(+), 61 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/machines/strand_caster.png diff --git a/changelog b/changelog index 6f1c1771c..f25cb1cf0 100644 --- a/changelog +++ b/changelog @@ -25,6 +25,9 @@ * the industrial generator now has three additional ports on its underside, meaning it is now a lot easier to properly automate all necessary IO * Neodymium is now a valid crucible material * Particle accelerators will now evenly distribute items using IO if both inputs are equal, making the antischrabidium recipe a lot easier to automate +* Due to multiple complaints regarding the plastic bag's ability to contain radiation, plastic bags now *double* the radiation of the item they contain +* The post impact spawning restrictions have changed, meaning that spawning things with spawn eggs is no longer broken. Due to technical limitations, this means that post impact, no mobs will spawn as part of world gen, only via random spawns. +* All energy storage blocks now have a fixed transfer limit of 5% of their capacity per tick, reducing the impact of ping-ponging considerably ## Fixed * Pipe and power networks now force the chunk to be saved on transfer, ensuring that rapid changes in the fluid/energy level aren't lost when the tile entity is unloaded diff --git a/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java b/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java index b90c1ad44..843a7c7b7 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java +++ b/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java @@ -4,6 +4,7 @@ import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; +import com.hbm.extprop.HbmPlayerProps; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.deco.TileEntityLanternBehemoth; @@ -48,7 +49,14 @@ public class BlockLanternBehemoth extends BlockDummyable implements IToolable, I public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { if(tool != ToolType.TORCH) return false; - return IRepairable.tryRepairMultiblock(world, x, y, z, this, player); + boolean didRepair = IRepairable.tryRepairMultiblock(world, x, y, z, this, player); + + if(didRepair) { + HbmPlayerProps data = HbmPlayerProps.getData(player); + data.reputation++; + } + + return didRepair; } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java b/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java index acc5658a2..246fb20b0 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java +++ b/src/main/java/com/hbm/blocks/machine/MachineWoodBurner.java @@ -1,15 +1,20 @@ package com.hbm.blocks.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class MachineWoodBurner extends BlockDummyable { +public class MachineWoodBurner extends BlockDummyable implements ITooltipProvider { public MachineWoodBurner(Material mat) { super(mat); @@ -36,4 +41,18 @@ public class MachineWoodBurner extends BlockDummyable { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { return this.standardOpenBehavior(world, x, y, z, player, 0); } + + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX + rot.offsetX, y, z - dir.offsetZ + rot.offsetZ); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/extprop/HbmPlayerProps.java b/src/main/java/com/hbm/extprop/HbmPlayerProps.java index 46d4c4a95..f51905229 100644 --- a/src/main/java/com/hbm/extprop/HbmPlayerProps.java +++ b/src/main/java/com/hbm/extprop/HbmPlayerProps.java @@ -41,6 +41,8 @@ public class HbmPlayerProps implements IExtendedEntityProperties { public int lastDamage = 0; public static final float shieldCap = 100; + public int reputation; + public HbmPlayerProps(EntityPlayer player) { this.player = player; } @@ -157,6 +159,7 @@ public class HbmPlayerProps implements IExtendedEntityProperties { props.setFloat("maxShield", maxShield); props.setBoolean("enableBackpack", enableBackpack); props.setBoolean("enableHUD", enableHUD); + props.setInteger("reputation", reputation); nbt.setTag("HbmPlayerProps", props); } @@ -172,6 +175,7 @@ public class HbmPlayerProps implements IExtendedEntityProperties { this.maxShield = props.getFloat("maxShield"); this.enableBackpack = props.getBoolean("enableBackpack"); this.enableHUD = props.getBoolean("enableHUD"); + this.reputation = props.getInteger("reputation"); } } } diff --git a/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java index f91e4e51f..a60d2ff38 100644 --- a/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java +++ b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java @@ -23,8 +23,9 @@ public class HazardTransformerRadiationContainer extends HazardTransformerBase { boolean isCrate = Block.getBlockFromItem(stack.getItem()) instanceof BlockStorageCrate; boolean isBox = stack.getItem() == ModItems.containment_box; + boolean isBag = stack.getItem() == ModItems.plastic_bag; - if(!isCrate && !isBox) return; + if(!isCrate && !isBox && !isBag) return; if(!stack.hasTagCompound()) return; float radiation = 0; @@ -54,6 +55,20 @@ public class HazardTransformerRadiationContainer extends HazardTransformerBase { radiation = (float) BobMathUtil.squirt(radiation); } + if(isBag) { + + ItemStack[] fromNBT = ItemStackUtil.readStacksFromNBT(stack, 1); + if(fromNBT == null) return; + + for(ItemStack held : fromNBT) { + if(held != null) { + radiation += HazardSystem.getHazardLevelFromStack(held, HazardRegistry.RADIATION) * held.stackSize; + } + } + + radiation *= 2F; + } + if(radiation > 0) { entries.add(new HazardEntry(HazardRegistry.RADIATION, radiation)); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java index fbf3f19cc..977f11d20 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java @@ -49,7 +49,7 @@ public class GUIMachineWoodBurner extends GuiInfoContainer { } } - if(burner.liquidBurn) burner.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 70, guiTop + 28, 34, 52); + if(burner.liquidBurn) burner.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 18, 16, 52); if(!burner.liquidBurn && guiLeft + 16 <= mouseX && guiLeft + 16 + 8 > mouseX && guiTop + 17 < mouseY && guiTop + 17 + 54 >= mouseY) { func_146283_a(Arrays.asList(new String[] { (burner.burnTime / 20) + "s" }), mouseX, mouseY); @@ -110,6 +110,6 @@ public class GUIMachineWoodBurner extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 17, guiTop + 70 - b, 192, 52 - b, 4, b); } - if(burner.liquidBurn) burner.tank.renderTank(guiLeft + 70, guiTop + 80, this.zLevel, 34, 52); + if(burner.liquidBurn) burner.tank.renderTank(guiLeft + 80, guiTop + 70, this.zLevel, 16, 52); } } diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 88a0522c8..2c76d2e96 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.lib.Library; +import com.hbm.saveddata.TomSaveData; import com.hbm.util.TrackerUtil; import net.minecraft.entity.player.EntityPlayer; @@ -41,11 +42,11 @@ public class ItemWandD extends Item { TimeAnalyzer.endCount(); TimeAnalyzer.dump();*/ - /*TomSaveData data = TomSaveData.forWorld(world); - data.impact = false; + TomSaveData data = TomSaveData.forWorld(world); + data.impact = true; data.fire = 0F; data.dust = 0F; - data.markDirty();*/ + data.markDirty(); /*EntityTomBlast tom = new EntityTomBlast(world); tom.posX = pos.blockX; @@ -54,16 +55,17 @@ public class ItemWandD extends Item { tom.destructionRange = 600; world.spawnEntityInWorld(tom);*/ - EntityNukeTorex torex = new EntityNukeTorex(world); + /*EntityNukeTorex torex = new EntityNukeTorex(world); torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); torex.setScale(1.5F); torex.setType(1); world.spawnEntityInWorld(torex); + TrackerUtil.setTrackingRange(world, torex, 1000);*/ + /*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker(); IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); EntityTrackerEntry entry = (EntityTrackerEntry) map.lookup(torex.getEntityId()); entry.blocksDistanceThreshold = 1000;*/ - TrackerUtil.setTrackingRange(world, torex, 1000); //world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, 150, pos.blockX, pos.blockY + 1, pos.blockZ)); //DungeonToolbox.generateBedrockOreWithChance(world, world.rand, pos.blockX, pos.blockZ, EnumBedrockOre.TITANIUM, new FluidStack(Fluids.SULFURIC_ACID, 500), 2, 1); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 4c7e39863..e7ee854ca 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -292,7 +292,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.capacitor_niobium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', RUBBER.ingot(), 'C', NB.block(), 'W', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.capacitor_tantalium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', TA.block(), 'W', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.capacitor_schrabidate, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', SBD.block(), 'W', STEEL.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace }); + //addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace }); + addRecipeAuto(new ItemStack(ModBlocks.machine_wood_burner, 1), new Object[] { "PPP", "CSC", "IFI" , 'P', STEEL.plate528(), 'C', ModItems.coil_copper, 'S', ModItems.hull_small_steel, 'I', IRON.ingot(), 'F', Blocks.furnace}); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', STEEL.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_electric_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', DESH.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', ModBlocks.machine_electric_furnace_off }); addRecipeAuto(new ItemStack(ModBlocks.machine_turbine, 1), new Object[] { "SMS", "PTP", "SMS", 'S', STEEL.ingot(), 'T', ModItems.turbine_titanium, 'M', ModItems.coil_copper, 'P', ANY_PLASTIC.ingot() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 9dc506768..8d392574b 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -5,9 +5,7 @@ import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockToolConversion; -import com.hbm.commands.CommandDebugChunkLoad; -import com.hbm.commands.CommandReloadRecipes; -import com.hbm.commands.CommandSatellites; +import com.hbm.commands.*; import com.hbm.config.*; import com.hbm.crafting.RodRecipes; import com.hbm.creativetabs.*; @@ -924,6 +922,7 @@ public class MainRegistry { event.registerServerCommand(new CommandReloadRecipes()); event.registerServerCommand(new CommandDebugChunkLoad()); event.registerServerCommand(new CommandSatellites()); + event.registerServerCommand(new CommandRadiation()); } @EventHandler diff --git a/src/main/java/com/hbm/main/ModEventHandlerImpact.java b/src/main/java/com/hbm/main/ModEventHandlerImpact.java index d371296af..7f178531f 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerImpact.java +++ b/src/main/java/com/hbm/main/ModEventHandlerImpact.java @@ -35,6 +35,7 @@ import net.minecraftforge.event.entity.living.LivingSpawnEvent.CheckSpawn; import net.minecraftforge.event.terraingen.BiomeEvent; import net.minecraftforge.event.terraingen.DecorateBiomeEvent; import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate; import net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType; import net.minecraftforge.event.world.WorldEvent; @@ -109,17 +110,32 @@ public class ModEventHandlerImpact { if(event.world.provider.dimensionId == 0) { if(event.entityLiving.height >= 0.85F || event.entityLiving.width >= 0.85F && !(event.entity instanceof EntityWaterMob) && !event.entityLiving.isChild()) { event.setResult(Result.DENY); + event.entityLiving.setDead(); } } if(event.entityLiving instanceof EntityWaterMob) { Random rand = new Random(); if(rand.nextInt(5) != 0) { event.setResult(Result.DENY); + event.entityLiving.setDead(); } } } } } + + @SubscribeEvent + public void onPopulate(Populate event) { + + if(event.type == Populate.EventType.ANIMALS) { + + TomSaveData data = TomSaveData.forWorld(event.world); + + if(data.impact) { + event.setResult(Result.DENY); + } + } + } @SubscribeEvent(priority = EventPriority.LOWEST) public void onLoad(WorldEvent.Load event) { diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java index ca5731bb2..3a4b8a49e 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.entity.missile.EntityBobmazon; +import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.OreDictManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -15,6 +16,7 @@ import com.hbm.tileentity.IRepairable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -39,6 +41,9 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR if(comTimer == 100) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornFarDual", 10000F, 1F); if(comTimer == 0) { + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord - 10, yCoord - 10, zCoord - 10, xCoord + 11, yCoord + 11, zCoord + 11)); + EntityPlayer first = players.isEmpty() ? null : players.get(0); + boolean bonus = first == null ? false : (HbmPlayerProps.getData(first).reputation >= 10); EntityBobmazon shuttle = new EntityBobmazon(worldObj); shuttle.posX = xCoord + 0.5 + worldObj.rand.nextGaussian() * 10; shuttle.posY = 300; @@ -48,7 +53,7 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR new ItemStack(ModItems.circuit_copper, 4 + worldObj.rand.nextInt(2)), new ItemStack(ModItems.circuit_red_copper, 2 + worldObj.rand.nextInt(3)), new ItemStack(ModItems.circuit_gold, 1 + worldObj.rand.nextInt(2)), - worldObj.rand.nextInt(3) == 0 ? new ItemStack(ModItems.gem_alexandrite) : new ItemStack(Items.diamond, 6 + worldObj.rand.nextInt(6)), + bonus ? new ItemStack(ModItems.gem_alexandrite) : new ItemStack(Items.diamond, 6 + worldObj.rand.nextInt(6)), new ItemStack(Blocks.red_flower)); shuttle.payload = payload; @@ -64,6 +69,16 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR INBTPacketReceiver.networkPack(this, data, 250); } } + + @Override + public void invalidate() { + super.invalidate(); + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord - 50, yCoord - 50, zCoord - 50, xCoord + 51, yCoord + 51, zCoord + 51)); + for(EntityPlayer player : players) { + HbmPlayerProps props = HbmPlayerProps.getData(player); + if(props.reputation > -10) props.reputation--; + } + } @Override public void networkUnpack(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java index 074ce8f29..e543f4fd5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java @@ -34,7 +34,7 @@ import li.cil.oc.api.network.SimpleComponent; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityMachineRadar extends TileEntityTickingBase implements IEnergyUser, IGUIProvider, SimpleComponent { - public List entList = new ArrayList(); + public List detectedEntities = new ArrayList(); public List nearbyMissiles = new ArrayList(); int pingTimer = 0; int lastPower; @@ -61,8 +61,7 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn @Override public void updateEntity() { - if(this.yCoord < WeaponConfig.radarAltitude) - return; + if(this.yCoord < WeaponConfig.radarAltitude) return; if(!worldObj.isRemote) { @@ -71,17 +70,13 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn nearbyMissiles.clear(); if(power > 0) { - allocateMissiles(); - power -= 500; - if(power < 0) - power = 0; + if(power < 0) power = 0; } - if(this.lastPower != getRedPower()) - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); + if(this.lastPower != getRedPower()) worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); sendMissileData(); lastPower = getRedPower(); @@ -96,12 +91,8 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn } } } else { - prevRotation = rotation; - - if(power > 0) { - rotation += 5F; - } + if(power > 0) rotation += 5F; if(rotation >= 360) { rotation -= 360F; @@ -123,7 +114,7 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn private void allocateMissiles() { nearbyMissiles.clear(); - entList.clear(); + detectedEntities.clear(); jammed = false; List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - WeaponConfig.radarRange, 0, zCoord + 0.5 - WeaponConfig.radarRange, xCoord + 0.5 + WeaponConfig.radarRange, 5000, zCoord + 0.5 + WeaponConfig.radarRange)); @@ -136,27 +127,27 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { this.jammed = true; nearbyMissiles.clear(); - entList.clear(); + detectedEntities.clear(); return; } if(e instanceof EntityPlayer && this.scanPlayers) { nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, RadarTargetType.PLAYER.ordinal(), (int)e.posY }); - entList.add(e); + detectedEntities.add(e); } if(e instanceof IRadarDetectable && this.scanMissiles) { nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, ((IRadarDetectable)e).getTargetType().ordinal(), (int)e.posY }); if(!this.smartMode || e.motionY <= 0) - entList.add(e); + detectedEntities.add(e); } } } public int getRedPower() { - if(!entList.isEmpty()) { + if(!detectedEntities.isEmpty()) { /// PROXIMITY /// if(redMode) { @@ -165,9 +156,9 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn int power = 0; - for(int i = 0; i < entList.size(); i++) { + for(int i = 0; i < detectedEntities.size(); i++) { - Entity e = entList.get(i); + Entity e = detectedEntities.get(i); double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2)); int p = 15 - (int)Math.floor(dist / maxRange * 15); @@ -315,8 +306,8 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn public Object[] getEntities(Context context, Arguments args) { //fuck fuck fuck if(!jammed) { List list = new ArrayList(); - list.add(entList.size()); // small header of how many entities in the list - for (Entity e : entList) { + list.add(detectedEntities.size()); // small header of how many entities in the list + for (Entity e : detectedEntities) { list.add(e.posX); // positions list.add(e.posY); list.add(e.posZ); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index a818bb0ef..287c0c592 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -5,6 +5,7 @@ import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.container.ContainerMachineWoodBurner; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; @@ -40,6 +41,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement public boolean isOn = false; public FluidTank tank; + public int millis = 0; public static ModuleBurnTime burnModule = new ModuleBurnTime().setLogTimeMod(4).setWoodTimeMod(2); @@ -106,19 +108,32 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement FT_Flammable trait = tank.getTankType().getTrait(FT_Flammable.class); if(trait != null) { - this.power += trait.getHeatEnergy() / 2L; - tank.setFill(tank.getFill() - 1); - if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); + + if(millis <= 900) { + this.tank.setFill(tank.getFill() - 1); + this.millis += 100; + } + + int toBurn = Math.min(millis, 5); + + if(toBurn > 0) { + this.power += trait.getHeatEnergy() * toBurn / 4_000L; + this.millis -= toBurn; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); + } } } } + if(this.power > this.maxPower) this.power = this.maxPower; + NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); data.setInteger("burnTime", burnTime); data.setInteger("maxBurnTime", maxBurnTime); data.setBoolean("isOn", isOn); data.setBoolean("liquidBurn", liquidBurn); + tank.writeToNBT(data, "t"); this.networkPack(data, 25); } else { @@ -146,6 +161,30 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement this.maxBurnTime = nbt.getInteger("maxBurnTime"); this.isOn = nbt.getBoolean("isOn"); this.liquidBurn = nbt.getBoolean("liquidBurn"); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.burnTime = nbt.getInteger("burnTime"); + this.maxBurnTime = nbt.getInteger("maxBurnTime"); + this.isOn = nbt.getBoolean("isOn"); + this.liquidBurn = nbt.getBoolean("liquidBurn"); + tank.readFromNBT(nbt, "t"); + this.millis = nbt.getInteger("millis"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + nbt.setLong("power", power); + nbt.setInteger("burnTime", burnTime); + nbt.setInteger("maxBurnTime", maxBurnTime); + nbt.setBoolean("isOn", isOn); + nbt.setBoolean("liquidBurn", liquidBurn); + tank.writeToNBT(nbt, "t"); + nbt.setInteger("millis", millis); } protected boolean processAsh(int level, EnumAshType type, int threshold) { @@ -222,6 +261,18 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement return maxPower; } + @Override + public boolean canConnect(ForgeDirection dir) { + ForgeDirection rot = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + return dir == rot.getOpposite(); + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + ForgeDirection rot = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + return dir == rot.getOpposite(); + } + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {tank}; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 38371ad7f..dc6a60f44 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.storage; import api.hbm.energy.*; import com.hbm.blocks.machine.MachineBattery; +import com.hbm.config.GeneralConfig; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; import com.hbm.lib.Library; @@ -36,6 +37,8 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I public long[] log = new long[20]; public long delta = 0; public long power = 0; + public long prevPowerState = 0; + public int pingPongTicks = 0; //0: input only //1: buffer @@ -180,8 +183,23 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I this.log[i - 1] = this.log[i]; } + if(GeneralConfig.enable528) { + long threshold = this.getMaxPower() / 3; + if(Math.abs(prevPower - power) > threshold && Math.abs(prevPower - prevPowerState) > threshold) { + this.pingPongTicks++; + if(this.pingPongTicks > 10) { + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); + worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 10F, false, false); + } + } else { + if(this.pingPongTicks > 0) this.pingPongTicks--; + } + } + this.log[19] = avg; + prevPowerState = power; + NBTTagCompound nbt = new NBTTagCompound(); nbt.setLong("power", avg); nbt.setLong("delta", delta); @@ -237,7 +255,9 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I if(x instanceof PowerNet) PowerNet.trackingInstances.add((PowerNet) x); }); - this.power = PowerNet.fairTransfer(con, this.power); + long toSend = Math.min(this.power, this.getMaxTransfer()); + long powerRemaining = this.power - toSend; + this.power = PowerNet.fairTransfer(con, toSend) + powerRemaining; } //resubscribe to buffered nets, if necessary @@ -246,7 +266,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I } } - protected void transmitPower() { + @Deprecated protected void transmitPower() { short mode = (short) this.getRelevantMode(); @@ -298,7 +318,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I } public long getMaxTransfer() { - return this.getMaxPower(); + return this.getMaxPower() / 20; } @Override @@ -342,24 +362,29 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I */ @Override public long transferPower(long power) { - - int mode = this.getRelevantMode(); - if(mode == mode_output || mode == mode_none) { - return power; + long overshoot = 0; + + // if power exceeds our transfer limit, truncate + if(power > getMaxTransfer()) { + overshoot += power - getMaxTransfer(); + power = getMaxTransfer(); } - this.power += power; + // this check is in essence the same as the default implementation, but re-arranged to never overflow the int64 range + // if the remaining power exceeds the power cap, truncate again + long freespace = this.getMaxPower() - this.getPower(); + + if(freespace < power) { + overshoot += power - freespace; + power = freespace; + } + + // what remains is sure to not exceed the transfer limit and the power cap (and therefore the int64 range) + this.setPower(this.getPower() + power); this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); - if(this.power > this.getMaxPower()) { - - long overshoot = this.power - this.getMaxPower(); - this.power = this.getMaxPower(); - return overshoot; - } - - return 0; + return overshoot; } @Override @@ -371,7 +396,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I return 0; } - return Math.max(getMaxPower() - getPower(), 0); + return Math.min(Math.max(getMaxPower() - getPower(), 0), this.getMaxTransfer()); } @Override @@ -411,6 +436,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I public void writeNBT(NBTTagCompound nbt) { NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); + data.setLong("prevPowerState", prevPowerState); data.setShort("redLow", redLow); data.setShort("redHigh", redHigh); data.setInteger("priority", this.priority.ordinal()); @@ -421,6 +447,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I public void readNBT(NBTTagCompound nbt) { NBTTagCompound data = nbt.getCompoundTag(NBT_PERSISTENT_KEY); this.power = data.getLong("power"); + this.prevPowerState = data.getLong("prevPowerState"); this.redLow = data.getShort("redLow"); this.redHigh = data.getShort("redHigh"); this.priority = ConnectionPriority.values()[data.getInteger("priority")]; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java index 188b919e6..3ece44aca 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java @@ -35,7 +35,7 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower()); ////////////////////////////////////////////////////////////////////// - this.transmitPower(); + this.transmitPowerFairly(); ////////////////////////////////////////////////////////////////////// byte comp = this.getComparatorPower(); @@ -142,8 +142,8 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { } @Override - public long getTransferWeight() { - return Math.min(Math.max(this.getMaxPower() - getPower(), 0), maxTransfer); + public long getMaxTransfer() { + return maxTransfer; } public float getSpeed() { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 2d4834860..7008cea84 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -360,6 +360,7 @@ container.machineSILEX=SILEX container.machineSolidifier=Verfestiger container.machineTurbine=Dampfturbine container.machineTurbofan=Turbofan +container.machineWoodBurner=Brennholzgenerator container.machine_schrabidium_transmutator=Schrabidium-Transmutationsgerät container.massStorage=Speicher container.microwave=Mikrowelle @@ -4167,6 +4168,8 @@ tile.machine_turbofan.name=Turbofan tile.machine_uf6_tank.name=Uranhexafluorid-Tank tile.machine_vacuum_distill.name=Vakuumraffinerie tile.machine_waste_drum.name=Abklingbecken-Trommel +tile.machine_wood_burner.name=Brennholzgenerator +tile.machine_wood_burner.desc=Erzeugt 100HE/t aus Items$Sammelt Asche$Kann 1mB/s Flüssigkeiten mit 25%% Effizienz verbrennen tile.machine_well.name=Ölbohrturm tile.machine_zirnox.name=ZIRNOX Atomreaktor tile.marker_structure.name=Multiblock-Strukturvorlage diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index eb2348566..780df69c2 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -718,6 +718,7 @@ container.machineSILEX=SILEX container.machineSolidifier=Solidifier container.machineTurbine=Steam Turbine container.machineTurbofan=Turbofan +container.machineWoodBurner=Wood-Burner container.machine_schrabidium_transmutator=Schrabidium Transmutation Device container.massStorage=Storage container.microwave=Microwave @@ -5146,6 +5147,8 @@ tile.machine_turbofan.name=Turbofan tile.machine_uf6_tank.name=Uranium Hexafluoride Tank tile.machine_vacuum_distill.name=Vacuum Refinery tile.machine_waste_drum.name=Spent Fuel Pool Drum +tile.machine_wood_burner.name=Wood-Burning Generator +tile.machine_wood_burner.desc=Generates 100HE/t when burning items$Collects ashes$Can burn fluids at 25%% efficiency at 1mB/s tile.machine_well.name=Oil Derrick tile.machine_zirnox.name=ZIRNOX Nuclear Reactor tile.marker_structure.name=Multiblock Structure Marker diff --git a/src/main/resources/assets/hbm/textures/models/machines/strand_caster.png b/src/main/resources/assets/hbm/textures/models/machines/strand_caster.png new file mode 100644 index 0000000000000000000000000000000000000000..96f371d955cc5574f5b8e5748c1a9dadcd2c0dde GIT binary patch literal 10757 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
  • Date: Sun, 5 Nov 2023 22:07:07 +0100 Subject: [PATCH 087/207] birb --- changelog | 15 ++++- gradle.properties | 2 +- .../com/hbm/blocks/machine/FWatzHatch.java | 8 ++- .../com/hbm/commands/CommandRadiation.java | 8 +++ .../java/com/hbm/entity/EntityMappings.java | 1 + .../java/com/hbm/entity/mob/EntityPigeon.java | 36 ++++++++++ .../entity/projectile/EntityBulletBaseNT.java | 21 +++++- .../vanillant/standard/BlockMutatorFire.java | 23 +++++++ .../standard/BlockProcessorNoDamage.java | 62 ++++++++++++++++++ .../standard/EntityProcessorStandard.java | 8 ++- .../standard/ExplosionEffectStandard.java | 2 +- .../com/hbm/inventory/OreDictManager.java | 1 + .../java/com/hbm/inventory/material/Mats.java | 2 +- .../inventory/recipes/ArcWelderRecipes.java | 8 +++ .../inventory/recipes/AssemblerRecipes.java | 2 +- .../inventory/recipes/anvil/AnvilRecipes.java | 7 +- .../hbm/items/armor/ArmorTrenchmaster.java | 19 ++++++ src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 7 +- .../machine/TileEntityMachineWoodBurner.java | 1 + .../textures/items/coil_advanced_alloy.png | Bin 297 -> 286 bytes .../assets/hbm/textures/items/coil_copper.png | Bin 310 -> 288 bytes .../assets/hbm/textures/items/coil_gold.png | Bin 278 -> 272 bytes .../items/coil_magnetized_tungsten.png | Bin 295 -> 255 bytes .../hbm/textures/items/swordTemplate.png | Bin 270 -> 0 bytes 25 files changed, 215 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorFire.java create mode 100644 src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorNoDamage.java delete mode 100644 src/main/resources/assets/hbm/textures/items/swordTemplate.png diff --git a/changelog b/changelog index f25cb1cf0..e45b07ed7 100644 --- a/changelog +++ b/changelog @@ -1,15 +1,23 @@ ## Added * Pigeons + * Spawn on plains in large flocks + * Will alternate between walking on the ground and flying around aimlessly + * When on the ground, they can eat dropped bread (the item has a 33% of being used up) + * Fat pigeons will spawn droppings when flying, these droppings will fertilize the ground below them + * When hit with damage equivalent to twice their health or higher, pigeons will explode, dropping 10 feathers + * when killed otherwise, they only drop a few feathers and sometimes raw chicken * Wood burner * Replaces the old combustion generator * A larger machine, has higher efficiency when burning logs or planks * Collects ashes at the same rate as ashpits * Also has an option to burn flammable liquids at 50% efficiency + * Will automatically shut off if the energy buffer is full * `/ntmrad` * `set` operator can change the radiation amount in the current chunk * `clear` operator will remove the radiation data from all loaded chunks * Dense wires * Can be made in a crucible + * Alloy and gold ones can also be made using the arc welder * Material cost is equivalent to 1 ingot * For ease of mass-production, 9-fold molds are also available * Used to craft hadron magnets, reducing crafting complexity be removing annoying upgrade recipes which make automation more complicated and needlessly inflate the amount of materials required for a magnet tier that isn't even the one that's being made @@ -23,11 +31,16 @@ * Doubled coal bedrock ore's coal output to 8 coal * A new config option now replaces the iron and copper bedrock ores in 528 mode with hematite and malachite * the industrial generator now has three additional ports on its underside, meaning it is now a lot easier to properly automate all necessary IO -* Neodymium is now a valid crucible material +* Neodymium and DNT are now valid crucible materials * Particle accelerators will now evenly distribute items using IO if both inputs are equal, making the antischrabidium recipe a lot easier to automate * Due to multiple complaints regarding the plastic bag's ability to contain radiation, plastic bags now *double* the radiation of the item they contain * The post impact spawning restrictions have changed, meaning that spawning things with spawn eggs is no longer broken. Due to technical limitations, this means that post impact, no mobs will spawn as part of world gen, only via random spawns. * All energy storage blocks now have a fixed transfer limit of 5% of their capacity per tick, reducing the impact of ping-ponging considerably +* Trenchmaster armor no longer takes damage from self-inflicted explosions, knockback is still applied though +* The combination oven no longer needs blaze powder to be made, instead it uses welded copper plates. Welded copper needs 1kHE/t to make, twice as much as welded steel. +* The steam engine now only needs 4 copper coils instead of 8 ## Fixed * Pipe and power networks now force the chunk to be saved on transfer, ensuring that rapid changes in the fluid/energy level aren't lost when the tile entity is unloaded +* Fixed Fwatz access hatch not visually connecting to cables +* Fixed most projectiles creating explosions with the projectile itself as the attacker instead of the player that fired that projectile diff --git a/gradle.properties b/gradle.properties index 1b073093f..243fd6690 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4760 +mod_build_number=4774 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/machine/FWatzHatch.java b/src/main/java/com/hbm/blocks/machine/FWatzHatch.java index 5b3df59dd..69a7e5871 100644 --- a/src/main/java/com/hbm/blocks/machine/FWatzHatch.java +++ b/src/main/java/com/hbm/blocks/machine/FWatzHatch.java @@ -8,6 +8,7 @@ import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityFWatzCore; +import api.hbm.energy.IEnergyConnectorBlock; import api.hbm.fluid.IFluidConnectorBlock; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -26,7 +27,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class FWatzHatch extends Block implements IFluidConnectorBlock { +public class FWatzHatch extends Block implements IEnergyConnectorBlock, IFluidConnectorBlock { @SideOnly(Side.CLIENT) private IIcon iconFront; @@ -158,4 +159,9 @@ public class FWatzHatch extends Block implements IFluidConnectorBlock { public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { return type == Fluids.AMAT || type == Fluids.ASCHRAB; } + + @Override + public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + return true; + } } diff --git a/src/main/java/com/hbm/commands/CommandRadiation.java b/src/main/java/com/hbm/commands/CommandRadiation.java index 436d7bcc4..90b4476d3 100644 --- a/src/main/java/com/hbm/commands/CommandRadiation.java +++ b/src/main/java/com/hbm/commands/CommandRadiation.java @@ -4,6 +4,8 @@ import com.hbm.handler.radiation.ChunkRadiationManager; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; public class CommandRadiation extends CommandBase { @@ -22,12 +24,18 @@ public class CommandRadiation extends CommandBase { if(args.length == 1 && "clear".equals(args[0])) { ChunkRadiationManager.proxy.clearSystem(sender.getEntityWorld()); + sender.addChatMessage(new ChatComponentText("Cleared radiation data!")); + return; } if(args.length == 2 && "set".equals(args[0])) { float amount = (float) this.parseDoubleBounded(sender, args[1], 0D, 100_000D); ChunkRadiationManager.proxy.setRadiation(sender.getEntityWorld(), sender.getPlayerCoordinates().posX, sender.getPlayerCoordinates().posY, sender.getPlayerCoordinates().posZ, amount); + sender.addChatMessage(new ChatComponentText("Radiation set.")); + return; } + + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + getCommandUsage(sender))); } } diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 2323d4dd6..c0e61d016 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -261,6 +261,7 @@ public class EntityMappings { addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperGold.class, 1, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityPlasticBag.class, 1, 1, 3, EnumCreatureType.waterCreature, BiomeDictionary.getBiomesForType(Type.OCEAN)); + addSpawn(EntityPigeon.class, 1, 5, 10, EnumCreatureType.creature, BiomeDictionary.getBiomesForType(Type.PLAINS)); int id = 0; for(Quartet, String, Integer, Boolean> entry : entityMappings) { diff --git a/src/main/java/com/hbm/entity/mob/EntityPigeon.java b/src/main/java/com/hbm/entity/mob/EntityPigeon.java index ec93d403c..ad6d203fc 100644 --- a/src/main/java/com/hbm/entity/mob/EntityPigeon.java +++ b/src/main/java/com/hbm/entity/mob/EntityPigeon.java @@ -7,7 +7,11 @@ import com.hbm.entity.mob.ai.EntityAIStartFlying; import com.hbm.entity.mob.ai.EntityAIStopFlying; import com.hbm.entity.mob.ai.EntityAISwimmingConditional; import com.hbm.entity.mob.ai.EntityAIWanderConditional; +import com.hbm.items.tool.ItemFertilizer; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.ai.EntityAILookIdle; @@ -15,12 +19,16 @@ import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.passive.IAnimals; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.util.FakePlayerFactory; public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAnimals { @@ -149,6 +157,34 @@ public class EntityPigeon extends EntityCreature implements IFlyingCreature, IAn this.moveForward = 1.5F; if(this.getRNG().nextInt(20) == 0) this.rotationYaw += this.getRNG().nextGaussian() * 30; + + if(this.isFat() && this.getRNG().nextInt(50) == 0) { + + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "sweat"); + nbt.setInteger("count", 3); + nbt.setInteger("block", Block.getIdFromBlock(Blocks.wool)); + nbt.setInteger("entity", getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(dimension, posX, posY, posZ, 50)); + + int x = (int) Math.floor(posX); + int y = (int) Math.floor(posY) - 1; + int z = (int) Math.floor(posZ); + EntityPlayer player = FakePlayerFactory.getMinecraft((WorldServer)worldObj); + + for(int i = 0; i < 25; i++) { + + if(ItemFertilizer.fertilize(worldObj, x, y - i, z, player, true)) { + worldObj.playAuxSFX(2005, x, y - i, z, 0); + break; + } + } + + if(this.getRNG().nextInt(10) == 0) { + this.setFat(false); + } + } + } else if(!this.onGround && this.motionY < 0.0D) { this.motionY *= 0.8D; } diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java index 1a34a8823..d8ee0f4f3 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java @@ -13,6 +13,14 @@ import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockMutatorFire; +import com.hbm.explosion.vanillant.standard.BlockProcessorNoDamage; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; @@ -414,8 +422,17 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet if(config.jolt > 0 && !worldObj.isRemote) ExplosionLarge.jolt(worldObj, posX, posY, posZ, config.jolt, 150, 0.25); - if(config.explosive > 0 && !worldObj.isRemote) - worldObj.newExplosion(this, posX, posY, posZ, config.explosive, config.incendiary > 0, config.blockDamage); + if(config.explosive > 0 && !worldObj.isRemote) { + //worldObj.newExplosion(this.thrower, posX, posY, posZ, config.explosive, config.incendiary > 0, config.blockDamage); + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, config.explosive, this.thrower); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + if(config.blockDamage) vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(config.incendiary > 0 ? new BlockMutatorFire() : null)); + else vnt.setBlockProcessor(new BlockProcessorNoDamage().withBlockEffect(config.incendiary > 0 ? new BlockMutatorFire() : null)); + vnt.setEntityProcessor(new EntityProcessorStandard().allowSelfDamage()); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode(); + } if(config.shrapnel > 0 && !worldObj.isRemote) ExplosionLarge.spawnShrapnels(worldObj, posX, posY, posZ, config.shrapnel); diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorFire.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorFire.java new file mode 100644 index 000000000..8cc03caa9 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorFire.java @@ -0,0 +1,23 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockMutator; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; + +public class BlockMutatorFire implements IBlockMutator { + + @Override public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { } + + @Override + public void mutatePost(ExplosionVNT explosion, int x, int y, int z) { + + Block block = explosion.world.getBlock(x, y, z); + Block block1 = explosion.world.getBlock(x, y - 1, z); + if(block.getMaterial() == Material.air && block1.func_149730_j() && explosion.world.rand.nextInt(3) == 0) { + explosion.world.setBlock(x, y, z, Blocks.fire); + } + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorNoDamage.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorNoDamage.java new file mode 100644 index 000000000..40332a9d8 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorNoDamage.java @@ -0,0 +1,62 @@ +package com.hbm.explosion.vanillant.standard; + +import java.util.HashSet; +import java.util.Iterator; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockMutator; +import com.hbm.explosion.vanillant.interfaces.IBlockProcessor; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public class BlockProcessorNoDamage implements IBlockProcessor { + + protected IBlockMutator convert; + + public BlockProcessorNoDamage() { } + + public BlockProcessorNoDamage withBlockEffect(IBlockMutator convert) { + this.convert = convert; + return this; + } + + @Override + public void process(ExplosionVNT explosion, World world, double x, double y, double z, HashSet affectedBlocks) { + + Iterator iterator = affectedBlocks.iterator(); + + while(iterator.hasNext()) { + ChunkPosition chunkposition = (ChunkPosition) iterator.next(); + int blockX = chunkposition.chunkPosX; + int blockY = chunkposition.chunkPosY; + int blockZ = chunkposition.chunkPosZ; + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() != Material.air) { + if(this.convert != null) this.convert.mutatePre(explosion, block, world.getBlockMetadata(blockX, blockY, blockZ), blockX, blockY, blockZ); + } + } + + + if(this.convert != null) { + iterator = affectedBlocks.iterator(); + + while(iterator.hasNext()) { + ChunkPosition chunkposition = (ChunkPosition) iterator.next(); + int blockX = chunkposition.chunkPosX; + int blockY = chunkposition.chunkPosY; + int blockZ = chunkposition.chunkPosZ; + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() == Material.air) { + this.convert.mutatePost(explosion, blockX, blockY, blockZ); + } + } + } + + affectedBlocks.clear(); //tricks the standard SFX to not do the block damage particles + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java index 626887245..ba9a66cad 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java @@ -21,6 +21,7 @@ public class EntityProcessorStandard implements IEntityProcessor { protected IEntityRangeMutator range; protected ICustomDamageHandler damage; + protected boolean allowSelfDamage = false; @Override public HashMap process(ExplosionVNT explosion, World world, double x, double y, double z, float size) { @@ -40,7 +41,7 @@ public class EntityProcessorStandard implements IEntityProcessor { double minZ = z - (double) size - 1.0D; double maxZ = z + (double) size + 1.0D; - List list = world.getEntitiesWithinAABBExcludingEntity(explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ)); + List list = world.getEntitiesWithinAABBExcludingEntity(allowSelfDamage ? null : explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ)); ForgeEventFactory.onExplosionDetonate(world, explosion.compat, list, size); Vec3 vec3 = Vec3.createVectorHelper(x, y, z); @@ -101,4 +102,9 @@ public class EntityProcessorStandard implements IEntityProcessor { this.damage = damage; return this; } + + public EntityProcessorStandard allowSelfDamage() { + this.allowSelfDamage = true; + return this; + } } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java index 1ffb85b24..79b5b6966 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java @@ -30,7 +30,7 @@ public class ExplosionEffectStandard implements IExplosionSFX { if(size >= 2.0F) { world.spawnParticle("hugeexplosion", x, y, z, 1.0D, 0.0D, 0.0D); } else { - world.spawnParticle("largeexplode", x, z, z, 1.0D, 0.0D, 0.0D); + world.spawnParticle("largeexplode", x, y, z, 1.0D, 0.0D, 0.0D); } int count = affectedBlocks.size(); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 4bf6ef68c..4ac445aa0 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -580,6 +580,7 @@ public class OreDictManager { OreDictionary.registerOre("dyeGray", fromOne(powder_ash, EnumAshType.MISC)); OreDictionary.registerOre("dyeBrown", fromOne(powder_ash, EnumAshType.FLY)); OreDictionary.registerOre("dyeBlack", fromOne(powder_ash, EnumAshType.SOOT)); + OreDictionary.registerOre("dyeMagenta", fromOne(powder_ash, EnumAshType.FULLERENE)); OreDictionary.registerOre("dye", new ItemStack(powder_ash, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre("blockGlass", glass_boron); diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index d3613fac6..9526c475f 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -95,7 +95,7 @@ public class Mats { //Base metals public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 5aea7661e..d8214f5e3 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -35,6 +35,11 @@ public class ArcWelderRecipes extends SerializableRecipe { recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, + new ComparableStack(ModItems.wire_advanced_alloy, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), 100, 10_000L, + new ComparableStack(ModItems.wire_gold, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_copper), 100, 1_000L, new FluidStack(Fluids.GAS, 250), new ComparableStack(ModItems.circuit_aluminium, 1), new OreDictStack(NETHERQUARTZ.dust()), new ComparableStack(ModItems.wire_copper, 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_red_copper), 100, 2_500L, new FluidStack(Fluids.PETROLEUM, 250), @@ -50,6 +55,9 @@ public class ArcWelderRecipes extends SerializableRecipe { //high-demand mid-game parts recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_STEEL.id), 100, 500L, new OreDictStack(STEEL.plateCast(), 2))); + //literally just the combination oven + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_COPPER.id), 200, 1_000L, + new OreDictStack(CU.plateCast(), 2))); //mid-game, single combustion engine running on LPG recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TITANIUM.id), 600, 50_000L, new OreDictStack(TI.plateCast(), 2))); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 18fc47acd..b76505159 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -227,7 +227,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.pellet_cluster, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new ComparableStack(Blocks.tnt, 1), }, 50); makeRecipe(new ComparableStack(ModItems.pellet_buckshot, 1), new AStack[] {new OreDictStack(PB.nugget(), 6), }, 50); makeRecipe(new ComparableStack(ModItems.australium_iii, 1), new AStack[] {new ComparableStack(ModItems.nugget_australium, 6), new OreDictStack(STEEL.ingot(), 1), new OreDictStack(STEEL.plate(), 6), new OreDictStack(CU.plate(), 2), new ComparableStack(ModItems.wire_copper, 6), },150); - makeRecipe(new ComparableStack(ModItems.magnetron, 1), new AStack[] {new OreDictStack(ALLOY.ingot(), 1), new OreDictStack(ALLOY.plate(), 2), new ComparableStack(ModItems.wire_tungsten, 1), new ComparableStack(ModItems.coil_tungsten, 1), },100); + makeRecipe(new ComparableStack(ModItems.magnetron, 1), new AStack[] {new OreDictStack(ALLOY.plate(), 3), new ComparableStack(ModItems.wire_tungsten, 1), new ComparableStack(ModItems.coil_tungsten, 1), },100); makeRecipe(new ComparableStack(ModItems.pellet_schrabidium, 1), new AStack[] {new OreDictStack(SA326.ingot(), 5), new OreDictStack(IRON.plate(), 2), }, 200); makeRecipe(new ComparableStack(ModItems.pellet_hes, 1), new AStack[] {new ComparableStack(ModItems.ingot_hes, 5), new OreDictStack(IRON.plate(), 2), }, 200); makeRecipe(new ComparableStack(ModItems.pellet_mes, 1), new AStack[] {new ComparableStack(ModItems.ingot_schrabidium_fuel, 5), new OreDictStack(IRON.plate(), 2), }, 200); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 778b17be4..18e76b6a0 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -311,9 +311,8 @@ public class AnvilRecipes { new AStack[] { new ComparableStack(Blocks.stonebrick, 8), new OreDictStack(KEY_LOG, 16), - new OreDictStack(CU.ingot(), 8), - new OreDictStack(KEY_BRICK, 16), - new ComparableStack(Items.blaze_powder, 4) + new OreDictStack(CU.plateWelded(), 2), + new OreDictStack(KEY_BRICK, 16) }, new AnvilOutput(new ItemStack(ModBlocks.furnace_combination))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( @@ -339,7 +338,7 @@ public class AnvilRecipes { new ComparableStack(ModBlocks.reinforced_stone, 16), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.hull_small_steel, 2), - new ComparableStack(ModItems.coil_copper, 8), + new ComparableStack(ModItems.coil_copper, 4), new ComparableStack(ModItems.gear_large, 1) }, new AnvilOutput(new ItemStack(ModBlocks.machine_steam_engine))).setTier(2)); diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java index ec497410c..582b44179 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -14,6 +14,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; public class ArmorTrenchmaster extends ArmorFSB { @@ -45,6 +46,24 @@ public class ArmorTrenchmaster extends ArmorFSB { list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fasterReload")); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.moreAmmo")); } + + @Override + public void handleHurt(LivingHurtEvent event) { + + EntityLivingBase e = event.entityLiving; + + if(e instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) e; + + if(ArmorFSB.hasFSBArmor(player)) { + + if(event.source.isExplosion() && event.source.getSourceOfDamage() == player) { + event.ammount = 0; + return; + } + } + } + } @Override public void handleAttack(LivingAttackEvent event) { diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 417c9681b..7b15658d8 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4760)"; + public static final String VERSION = "1.0.27 BETA (4774)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index e7ee854ca..d54d2267f 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -293,7 +293,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.capacitor_tantalium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', TA.block(), 'W', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.capacitor_schrabidate, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', SBD.block(), 'W', STEEL.ingot() }); //addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace }); - addRecipeAuto(new ItemStack(ModBlocks.machine_wood_burner, 1), new Object[] { "PPP", "CSC", "IFI" , 'P', STEEL.plate528(), 'C', ModItems.coil_copper, 'S', ModItems.hull_small_steel, 'I', IRON.ingot(), 'F', Blocks.furnace}); + addRecipeAuto(new ItemStack(ModBlocks.machine_wood_burner, 1), new Object[] { "PPP", "CFC", "I I" , 'P', STEEL.plate528(), 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'F', Blocks.furnace}); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', STEEL.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_electric_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', DESH.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', ModBlocks.machine_electric_furnace_off }); addRecipeAuto(new ItemStack(ModBlocks.machine_turbine, 1), new Object[] { "SMS", "PTP", "SMS", 'S', STEEL.ingot(), 'T', ModItems.turbine_titanium, 'M', ModItems.coil_copper, 'P', ANY_PLASTIC.ingot() }); @@ -825,11 +825,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mech_key, 1), new Object[] { "MCM", "MKM", "MMM", 'M', ModItems.ingot_meteorite_forged, 'C', ModItems.coin_maskman, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.spawn_ufo, 1), new Object[] { "MMM", "DCD", "MMM", 'M', ModItems.ingot_meteorite, 'D', DNT.ingot(), 'C', ModItems.coin_worm }); - - addRecipeAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), new Object[] { "WWW", "W W", "WWW", 'W', ModItems.wire_advanced_alloy }); - addRecipeAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), new Object[] { "WWW", "W W", "WWW", 'W', ModItems.wire_gold }); - addRecipeAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_TUNGSTEN.id), new Object[] { "WWW", "W W", "WWW", 'W', ModItems.wire_tungsten }); - addRecipeAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_MAGTUNG.id), new Object[] { "WWW", "W W", "WWW", 'W', ModItems.wire_magnetized_tungsten }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ModItems.wire_advanced_alloy, 'C', ModBlocks.fusion_conductor }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WW", "WW", 'W', ALLOY.wireDense() }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 287c0c592..202dbe5ba 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -178,6 +178,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement @Override public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); nbt.setLong("power", power); nbt.setInteger("burnTime", burnTime); nbt.setInteger("maxBurnTime", maxBurnTime); diff --git a/src/main/resources/assets/hbm/textures/items/coil_advanced_alloy.png b/src/main/resources/assets/hbm/textures/items/coil_advanced_alloy.png index 291ff9f9f1fc810cec1167d3ca896dc5d24057d2..aa44989b0fa350eae5228fbfda702f52702277fc 100644 GIT binary patch delta 257 zcmV+c0sj7}0-gepC4X~5NmK|32nc)#WQYI&0M$uEK~y-6t&_10!Y~j;Ur;7UPfwX` z(z&Me0#po;l!!8ABq*~$7P!*X^sI0c$c__8fWS$XY~TIw=d%p|3g?_I(WPE2A~@&t zu-SxU1<5;uP+*MFtgb1W0xp-nU?;OCA!$Lq_A{b*9{T+bc#N)UF?#_wSIN?6+00000NkvXX Hu0mjf<(6=u delta 269 zcmV+o0rLKy0;vL!C4Xl@O+f$vv5yPX88`!*$xkayu4M|Amw@qw70Gr=5DK8K}=3bNHpdf(FttK`UAb`xZ zCfRfW0c_?b(50mc0?2H4r{*VYP?+M5AB%SrHaP80-yqrB!2{RLP=Bz2nYy#2xN!=007rXL_t(IjjfZt4Z<)GMxRl3@CFEG zprE8B3wRD1dgg#0cafk7qDX%oUV$aExO#Tp)5J=E9(0GsC~~#*4j115eA^3W>YHIo>lSFN-L z)(}t6;WI#V64!MNe&G<27Ni%@b&?;p6h(oE;G7%ucL079cjE?4lA5b0$_G3E0000< KMNUMnLSTZh&~l^z delta 283 zcmV+$0p$Lm0=5E>B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%heMHD!e|WdHyGr%6OX zR5(wilED=MArM39!VYZ0#=O`FO~~1UMbOZ=gPRcC1=hER4}SwBc{vcw>=Ybw&datH z%qUBY(Naq0ABHn|8n%~#jV%CI15sLX}6AlPa^N}X)1p>r8 zYtkGX1gLq`ghK-Y#N2CAO+O$&&DsRIvUEX!n0dEqzQO^GY1#2(@lN58HNeqt?{E8t h2_AxZ^Y|YYJ`^D^!__A8NYMZQ002ovPDHLkV1iI8b3*_C diff --git a/src/main/resources/assets/hbm/textures/items/coil_gold.png b/src/main/resources/assets/hbm/textures/items/coil_gold.png index 6d22668a37fb6c6b7a103d23b5ce5cb567a3dd66..849d394ac5392c565ce2e2347541dec3506520de 100644 GIT binary patch delta 228 zcmVg4o9(I93}r!I&7ufoXQ;a6p?)iJuziA4l!tu8Lh`f?T%3?><4w9L?l z7Fuas_h5i8*3(MMjJkVQaCIkPdcJZyv;Ww4K`#( z;YUwOiKNhU*7({JLon5o|0ywZ?ht`(m~E&VMxD7q0s#B!40ylWa#|+i2>MFugC@^& kvMihYcYx;EPX_nn3DJbnrZ-q+S^xk507*qoM6N<$f>a@C?EnA( diff --git a/src/main/resources/assets/hbm/textures/items/coil_magnetized_tungsten.png b/src/main/resources/assets/hbm/textures/items/coil_magnetized_tungsten.png index 149d1c432ebf127688b21fe4ca262e8b8e9f1e34..2118d79ff57561120e01e97a76ade83c882849c2 100644 GIT binary patch delta 226 zcmV<803H9Q0{;P!C4X~5NmK|32nc)#WQYI&0Jcd)K~y-6y;HFb!yphmBG15B9^toe zZ83yfiXS0Uq;!dEI+pk}fWW~HLQzgag4f@1j}G8haL&mH?~%y+z9*4#eT7OJA`)iC zVl58ubHj68Rg>9(EY`|wjA*U9olNE7@E)&iLkQvQM6R4n=UYNaPGU&}#mFrImF$i< zDIv2lg3dSj7~!8z0K_0&Am30ran4mucLG(2LI@xt#Kh*F)*G~(2mmm1F2>|`r?dhQ c4Sl>O-W!sYa(r;eRsaA107*qoM6N<$f^86Br~m)} delta 267 zcmV+m0rdX=0jC0xC4Xl@O+f$vv5yPu(dVDpMYUYkouA1+#LL4>EDT Ry#N3J07*qoL0#LT=By}Z;C1rt33 zJ=4@yqg0@pdQTU}5DWjgJ)A-Z6gZfF|Mw4Wc0a7Rtu)Qj>5;0^{7n9(lO?qT4*mYh z*q(0Q)}^zC_vsP6HIHS=LK0)IUpQ8WeOyoZ&97bQHqG20?Y8om8oleVec_YYH0|XXqq#knMR#k<7FIh4+^_>Wg~8L+ K&t;ucLK6V5OkhF) From 71919796779e3c4891d8bdc374035653e7524e7a Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:25:08 +0300 Subject: [PATCH 088/207] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index a150450c1..a8749d0b1 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -455,6 +455,8 @@ shape.plate=ПлаÑтина shape.plateTriple=Ð›Ð¸Ñ‚Ð°Ñ Ð¿Ð»Ð°Ñтина shape.quart=Четверть блока shape.block=Блок +shape.wireDense=Плотный провод +shape.wiresDense=Плотные провода foundry.noCast=Ð›Ð¸Ñ‚ÐµÐ¹Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° не уÑтановлена! foundry.filter=Фильтр: %s foundry.inverted=Инвертирован редÑтоуном @@ -1329,6 +1331,7 @@ hbmmat.cdalloy=ÐšÐ°Ð´Ð¼Ð¸ÐµÐ²Ð°Ñ Ñталь hbmmat.cadmium=Кадмий hbmmat.watzmud=ТокÑичные отходы hbmmat.zirconium=Цирконий +hbmmat.neodymium=Ðеодим crucible.aa=ПроизводÑтво продвинутого Ñплава crucible.ferro=ПроизводÑтво ферроуранового Ñплава @@ -2268,6 +2271,9 @@ tile.pump_steam.name=Паровой наÑÐ¾Ñ Ð´Ð»Ñ Ð³Ñ€ÑƒÐ½Ñ‚Ð¾Ð²Ñ‹Ñ… вод tile.pump_steam.desc=ИÑпользует пар Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ½Ñ‚Ð¾Ð²Ñ‹Ñ… вод$Выкачывает до 1000мБ/тик$Должно быть размещено ниже Y:70 container.machineArcWelder=Дуговой Ñварщик tile.machine_arc_welder.name=Дуговой Ñварщик +container.machineWoodBurner=Генератор на дровах +tile.machine_wood_burner.name=Генератор на дровах +tile.machine_wood_burner.desc=Генерирует 100HE/тик$Собирает золу$Может Ñжигать жидкоÑти Ñ 25%% ÑффективноÑтью за 1мБ/Ñ tile.cm_block.alloy.name=ÐšÐ¾Ñ€Ð¿ÑƒÑ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹ из продвинутого Ñплава tile.cm_block.desh.name=ÐšÐ¾Ñ€Ð¿ÑƒÑ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹ из деша @@ -2855,6 +2861,7 @@ item.wire_aluminium.name=Ðлюминиевый провод item.wire_copper.name=Медный провод item.wire_gold.name=Золотой провод item.wire_schrabidium.name=Шрабидиевый провод +item.wire_dense.name=Плотный %s провод item.circuit_raw.name=Сборка проÑтой микроÑхемы item.circuit_bismuth_raw.name=Сборка универÑального чипÑета item.circuit_arsenic_raw.name=Сборка гибкой микроÑхемы @@ -3126,7 +3133,9 @@ item.ore.chlorocalcite=Ð¥Ð»Ð¾Ñ€ÐºÐ°Ð»ÑŒÑ†Ð¸Ñ‚Ð¾Ð²Ð°Ñ item.ore.copper=ÐœÐµÐ´Ð½Ð°Ñ item.ore.fluorite=Ð¤Ð»ÑŽÐ¾Ñ€Ð¸Ñ‚Ð½Ð°Ñ item.ore.gold=Ð—Ð¾Ð»Ð¾Ñ‚Ð°Ñ +item.ore.hematite=Ð“ÐµÐ¼Ð°Ñ‚Ð¸Ñ‚Ð¾Ð²Ð°Ñ item.ore.iron=Ð–ÐµÐ»ÐµÐ·Ð½Ð°Ñ +item.ore.malachite=ÐœÐ°Ð»Ð°Ñ…Ð¸Ñ‚Ð¾Ð²Ð°Ñ item.ore.niobium=ÐÐ¸Ð¾Ð±Ð¸ÐµÐ²Ð°Ñ item.ore.titanium=Ð¢Ð¸Ñ‚Ð°Ð½Ð¾Ð²Ð°Ñ item.ore.tungsten=Ð’Ð¾Ð»ÑŒÑ„Ñ€Ð°Ð¼Ð¾Ð²Ð°Ñ @@ -4743,6 +4752,8 @@ entity.hbm.entity_ntm_ufo.name=МарÑианÑкий корабль вторж entity.entity_ntm_dtrooper.name=Тёмный Ñолдат entity.entity_mob_gold_creeper.name=Золотой крипер entity.entity_mob_volatile_creeper.name=Возгораемый крипер +entity.entity_plastic_bag.name=ПлаÑтиковый пакетик +entity.entity_pigeon.name=Голубь eye.respond.no=§c"Ðет" eye.respond.nothing=...Оно не отвечает @@ -4752,6 +4763,7 @@ eye.speakTo.join="Я бы хотел Ñтать единым" eye.speakTo.remember="Ты помнишь кто ты?" eye.speakTo=Ð’Ñ‹ говорите Оку: §o%s +item.plastic_bag.name=ПлаÑтиковый пакетик item.cap_aluminium.name=Ðлюминиевый колпачок item.hull_small_steel.name=ÐÐµÐ±Ð¾Ð»ÑŒÑˆÐ°Ñ ÑÑ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ° item.hull_small_aluminium.name=ÐÐµÐ±Ð¾Ð»ÑŒÑˆÐ°Ñ Ð°Ð»ÑŽÐ¼Ð¸Ð½Ð¸ÐµÐ²Ð°Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ° From 5d8704e150299bbda223546543817a72c039f82e Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 6 Nov 2023 16:43:44 +0100 Subject: [PATCH 089/207] ow --- changelog | 48 ++---------------- src/main/java/api/hbm/energy/IEnergyUser.java | 10 ++-- .../java/com/hbm/inventory/gui/GUIHadron.java | 10 ++-- .../tileentity/machine/TileEntityHadron.java | 31 +++++++---- .../machine/TileEntityMachineWoodBurner.java | 16 ++---- src/main/resources/assets/hbm/lang/de_DE.lang | 3 +- src/main/resources/assets/hbm/lang/en_US.lang | 3 +- .../hbm/textures/gui/machine/gui_hadron.png | Bin 7673 -> 7726 bytes .../hbm/textures/models/machines/fel.png | Bin 3729 -> 4568 bytes 9 files changed, 46 insertions(+), 75 deletions(-) diff --git a/changelog b/changelog index e45b07ed7..818c3edaa 100644 --- a/changelog +++ b/changelog @@ -1,46 +1,8 @@ -## Added -* Pigeons - * Spawn on plains in large flocks - * Will alternate between walking on the ground and flying around aimlessly - * When on the ground, they can eat dropped bread (the item has a 33% of being used up) - * Fat pigeons will spawn droppings when flying, these droppings will fertilize the ground below them - * When hit with damage equivalent to twice their health or higher, pigeons will explode, dropping 10 feathers - * when killed otherwise, they only drop a few feathers and sometimes raw chicken -* Wood burner - * Replaces the old combustion generator - * A larger machine, has higher efficiency when burning logs or planks - * Collects ashes at the same rate as ashpits - * Also has an option to burn flammable liquids at 50% efficiency - * Will automatically shut off if the energy buffer is full -* `/ntmrad` - * `set` operator can change the radiation amount in the current chunk - * `clear` operator will remove the radiation data from all loaded chunks -* Dense wires - * Can be made in a crucible - * Alloy and gold ones can also be made using the arc welder - * Material cost is equivalent to 1 ingot - * For ease of mass-production, 9-fold molds are also available - * Used to craft hadron magnets, reducing crafting complexity be removing annoying upgrade recipes which make automation more complicated and needlessly inflate the amount of materials required for a magnet tier that isn't even the one that's being made - ## Changed -* Changed many tool recipes that exclusively used polymer to now also accept bakelite -* Reduced the value of hematite and malachite blocks in the crucible down to one ingot - * Hematite veins are still giant, so a single vein will still yield many stacks of iron - * Malachite's rebalance was done to be consistent with the bedrock ores which now exist. Malachite veins are now larger to compensate. -* 1000mB of red mud now makes one ingot of iron in the coker -* Doubled coal bedrock ore's coal output to 8 coal -* A new config option now replaces the iron and copper bedrock ores in 528 mode with hematite and malachite -* the industrial generator now has three additional ports on its underside, meaning it is now a lot easier to properly automate all necessary IO -* Neodymium and DNT are now valid crucible materials -* Particle accelerators will now evenly distribute items using IO if both inputs are equal, making the antischrabidium recipe a lot easier to automate -* Due to multiple complaints regarding the plastic bag's ability to contain radiation, plastic bags now *double* the radiation of the item they contain -* The post impact spawning restrictions have changed, meaning that spawning things with spawn eggs is no longer broken. Due to technical limitations, this means that post impact, no mobs will spawn as part of world gen, only via random spawns. -* All energy storage blocks now have a fixed transfer limit of 5% of their capacity per tick, reducing the impact of ping-ponging considerably -* Trenchmaster armor no longer takes damage from self-inflicted explosions, knockback is still applied though -* The combination oven no longer needs blaze powder to be made, instead it uses welded copper plates. Welded copper needs 1kHE/t to make, twice as much as welded steel. -* The steam engine now only needs 4 copper coils instead of 8 +* The wood-burning generator now burns 40mB/s instead of 1mB/s +* Buffed the wood-burning generator's efficiency for fluids from 25% to 50% +* The particle accelerator now has a new IO mode called single mode, which only allows one item per slot ## Fixed -* Pipe and power networks now force the chunk to be saved on transfer, ensuring that rapid changes in the fluid/energy level aren't lost when the tile entity is unloaded -* Fixed Fwatz access hatch not visually connecting to cables -* Fixed most projectiles creating explosions with the projectile itself as the attacker instead of the player that fired that projectile +* Fixed wood-burning generator being 100x more efficient than it's supposed to be +* Fixed arc welders eating infinite energy \ No newline at end of file diff --git a/src/main/java/api/hbm/energy/IEnergyUser.java b/src/main/java/api/hbm/energy/IEnergyUser.java index a4a0a4ed5..4ca8e369a 100644 --- a/src/main/java/api/hbm/energy/IEnergyUser.java +++ b/src/main/java/api/hbm/energy/IEnergyUser.java @@ -28,15 +28,17 @@ public interface IEnergyUser extends IEnergyConnector { @Override public default long transferPower(long power) { - this.setPower(this.getPower() + power); - - if(this.getPower() > this.getMaxPower()) { + if(this.getPower() + power > this.getMaxPower()) { - long overshoot = this.getPower() - this.getMaxPower(); + long overshoot = this.getPower() + power - this.getMaxPower(); this.setPower(this.getMaxPower()); return overshoot; } + if(this.getPower() + power < 0) return 0; //safeguard for negative energy or overflows + + this.setPower(this.getPower() + power); + return 0; } diff --git a/src/main/java/com/hbm/inventory/gui/GUIHadron.java b/src/main/java/com/hbm/inventory/gui/GUIHadron.java index 959d93d7c..b39db1804 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHadron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHadron.java @@ -40,8 +40,10 @@ public class GUIHadron extends GuiInfoContainer { this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 62, guiTop + 108, 70, 16, hadron.power, hadron.maxPower); - if(hadron.hopperMode) + if(hadron.ioMode == 1) this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 142, guiTop + 89, 18, 18, mouseX, mouseY, I18nUtil.resolveKeyArray("hadron.hopper1")); + else if(hadron.ioMode == 2) + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 142, guiTop + 89, 18, 18, mouseX, mouseY, I18nUtil.resolveKeyArray("hadron.hopper2")); else this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 142, guiTop + 89, 18, 18, mouseX, mouseY, I18nUtil.resolveKeyArray("hadron.hopper0")); @@ -105,9 +107,9 @@ public class GUIHadron extends GuiInfoContainer { if(hadron.analysisOnly) drawTexturedModalRect(guiLeft + 142, guiTop + 107, 206, 18, 18, 18); - - if(hadron.hopperMode) - drawTexturedModalRect(guiLeft + 142, guiTop + 89, 206, 36, 18, 18); + + if(hadron.ioMode == hadron.MODE_HOPPER) drawTexturedModalRect(guiLeft + 142, guiTop + 89, 206, 36, 18, 18); + if(hadron.ioMode == hadron.MODE_SINGLE) drawTexturedModalRect(guiLeft + 142, guiTop + 89, 224, 36, 18, 18); if(hadron.state == EnumHadronState.SUCCESS) { drawTexturedModalRect(guiLeft + 73, guiTop + 29, 176, 0, 30, 30); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 4eab1dba4..fed73cb60 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -43,7 +43,10 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs public boolean isOn = false; public boolean analysisOnly = false; - public boolean hopperMode = false; + public int ioMode = 0; + public static final int MODE_DEFAULT = 0; + public static final int MODE_HOPPER = 1; + public static final int MODE_SINGLE = 2; private int delay; public EnumHadronState state = EnumHadronState.IDLE; @@ -71,8 +74,8 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs @Override public int[] getAccessibleSlotsFromSide(int side) { - return access; - } + return access; + } @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { @@ -83,6 +86,10 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs public boolean isItemValidForSlot(int i, ItemStack itemStack) { if(i != 0 && i != 1) return false; + if(this.ioMode == MODE_SINGLE) { + return slots[i] == null; + } + //makes sure that equal items like the antimatter capsules are spread out evenly if(slots[0] != null && slots[1] != null && slots[0].getItem() == slots[1].getItem() && slots[0].getItemDamage() == slots[1].getItemDamage()) { if(i == 0) return slots[1].stackSize - slots[0].stackSize >= 0; @@ -102,7 +109,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs if(delay <= 0 && this.isOn && particles.size() < maxParticles && slots[0] != null && slots[1] != null && power >= maxPower * 0.75) { - if(!hopperMode || (slots[0].stackSize > 1 && slots[1].stackSize > 1)) { + if(ioMode != MODE_HOPPER || (slots[0].stackSize > 1 && slots[1].stackSize > 1)) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); particles.add(new Particle(slots[0], slots[1], dir, xCoord, yCoord, zCoord)); this.decrStackSize(0, 1); @@ -131,7 +138,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs data.setBoolean("isOn", isOn); data.setLong("power", power); data.setBoolean("analysis", analysisOnly); - data.setBoolean("hopperMode", hopperMode); + data.setInteger("ioMode", ioMode); data.setByte("state", (byte) state.ordinal()); data.setBoolean("stat_success", stat_success); @@ -189,7 +196,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs this.isOn = data.getBoolean("isOn"); this.power = data.getLong("power"); this.analysisOnly = data.getBoolean("analysis"); - this.hopperMode = data.getBoolean("hopperMode"); + this.ioMode = data.getInteger("ioMode"); this.state = EnumHadronState.values()[data.getByte("state")]; this.stat_success = data.getBoolean("stat_success"); @@ -207,8 +214,12 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs this.isOn = !this.isOn; if(meta == 1) this.analysisOnly = !this.analysisOnly; - if(meta == 2) - this.hopperMode = !this.hopperMode; + if(meta == 2) { + this.ioMode++; + if(ioMode > 2) ioMode = 0; + } + + this.markChanged(); } private void drawPower() { @@ -262,7 +273,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs this.isOn = nbt.getBoolean("isOn"); this.power = nbt.getLong("power"); this.analysisOnly = nbt.getBoolean("analysis"); - this.hopperMode = nbt.getBoolean("hopperMode"); + this.ioMode = nbt.getInteger("ioMode"); } @Override @@ -272,7 +283,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs nbt.setBoolean("isOn", isOn); nbt.setLong("power", power); nbt.setBoolean("analysis", analysisOnly); - nbt.setBoolean("hopperMode", hopperMode); + nbt.setInteger("ioMode", ioMode); } public int getPowerScaled(int i) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 202dbe5ba..42510532f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -41,7 +41,6 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement public boolean isOn = false; public FluidTank tank; - public int millis = 0; public static ModuleBurnTime burnModule = new ModuleBurnTime().setLogTimeMod(4).setWoodTimeMod(2); @@ -109,17 +108,12 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement if(trait != null) { - if(millis <= 900) { - this.tank.setFill(tank.getFill() - 1); - this.millis += 100; - } - - int toBurn = Math.min(millis, 5); + int toBurn = Math.min(tank.getFill(), 2); if(toBurn > 0) { - this.power += trait.getHeatEnergy() * toBurn / 4_000L; - this.millis -= toBurn; - if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); + this.power += trait.getHeatEnergy() * toBurn / 2_000L; + this.tank.setFill(this.tank.getFill() - toBurn); + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * toBurn / 2F); } } } @@ -173,7 +167,6 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement this.isOn = nbt.getBoolean("isOn"); this.liquidBurn = nbt.getBoolean("liquidBurn"); tank.readFromNBT(nbt, "t"); - this.millis = nbt.getInteger("millis"); } @Override @@ -185,7 +178,6 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement nbt.setBoolean("isOn", isOn); nbt.setBoolean("liquidBurn", liquidBurn); tank.writeToNBT(nbt, "t"); - nbt.setInteger("millis", millis); } protected boolean processAsh(int level, EnumAshType type, int threshold) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 7008cea84..b38691e89 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -591,6 +591,7 @@ hadron.error_diode_collision=Fehler 0x08 [DC] hadron.error_branching_turn=Fehler 0x09 [BT] hadron.hopper0=§eNormalmodus:$Alle Items werden beschleunigt. hadron.hopper1=§eTrichtermodus:$Ein Item bleibt immer übrig. +hadron.hopper1=§eEinzelmodus:$Erlaubt nur ein Item pro Slot. hadron.idle=Leerlauf hadron.modeCircular=§eRingbeschleuniger:$Magnete bilden eine Schleife.$Schaltet mehr Rezepte frei. hadron.modeLine=§eLinearbeschleuniger:$Beschleuniger ended mit Analysekammer.$Weniger Rezepte. @@ -4169,7 +4170,7 @@ tile.machine_uf6_tank.name=Uranhexafluorid-Tank tile.machine_vacuum_distill.name=Vakuumraffinerie tile.machine_waste_drum.name=Abklingbecken-Trommel tile.machine_wood_burner.name=Brennholzgenerator -tile.machine_wood_burner.desc=Erzeugt 100HE/t aus Items$Sammelt Asche$Kann 1mB/s Flüssigkeiten mit 25%% Effizienz verbrennen +tile.machine_wood_burner.desc=Erzeugt 100HE/t aus Items$Sammelt Asche$Kann 40mB/s Flüssigkeiten mit 50%% Effizienz verbrennen tile.machine_well.name=Ölbohrturm tile.machine_zirnox.name=ZIRNOX Atomreaktor tile.marker_structure.name=Multiblock-Strukturvorlage diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 780df69c2..80ed6e7a1 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1232,6 +1232,7 @@ hadron.error_diode_collision=Error 0x08 [DC] hadron.error_branching_turn=Error 0x09 [BT] hadron.hopper0=§eNormal Mode:$All items will be used. hadron.hopper1=§eHopper Mode:$One item will always remain. +hadron.hopper2=§eSingle Mode:$Only allows one item per slot. hadron.idle=Idle hadron.modeCircular=§eCircular Accelerator Mode:$Magnets must loop back into core.$Unlocks more recipes. hadron.modeLine=§eLinear Accelerator Mode:$Accelerator ends with analysis chamber.$Fewer Recipes. @@ -5148,7 +5149,7 @@ tile.machine_uf6_tank.name=Uranium Hexafluoride Tank tile.machine_vacuum_distill.name=Vacuum Refinery tile.machine_waste_drum.name=Spent Fuel Pool Drum tile.machine_wood_burner.name=Wood-Burning Generator -tile.machine_wood_burner.desc=Generates 100HE/t when burning items$Collects ashes$Can burn fluids at 25%% efficiency at 1mB/s +tile.machine_wood_burner.desc=Generates 100HE/t when burning items$Collects ashes$Can burn fluids at 50%% efficiency at 40mB/s tile.machine_well.name=Oil Derrick tile.machine_zirnox.name=ZIRNOX Nuclear Reactor tile.marker_structure.name=Multiblock Structure Marker diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_hadron.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_hadron.png index 9c5334115f2d5ce35a0cbd9f21c8b5b0ad860715..956ddeecc17547d58fad70e6a47d293a45980a59 100644 GIT binary patch literal 7726 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 diff --git a/src/main/resources/assets/hbm/textures/models/machines/fel.png b/src/main/resources/assets/hbm/textures/models/machines/fel.png index d3e0ed9442719d27d95206fc41de2349aba40937..c0830a7c427f8b3c5e3ba1ea477623b83d5ac5b3 100644 GIT binary patch literal 4568 zcmcgw2Uk;D(+&_Np!8mpCPgW7QCjFBbV%sEH-%6I5)2(_k$yo0q)3etTIkZH3Zj%q z7eTl*DN2VR@W%JP-(UF7TIcMw&zYGud*+$h&psGKm=+B+Cp7>7pwZEW8k5Ft()}8A zo%E#BiKHM6zyOGjDTs81f?N{-0ESc@sG4bT-cG(l3ylagu%NeVb+&imtRvYg#9F?}zejtR=uwPAp_fa^Zm z30#6BDFV-!Ztuo@)XWjJVboOC9G>cR89Ef7{G(3F=wvHVB}|G#YlJfL@AQuNDFz%Y4lX z;LDU0{1P6fFUn|_%d0&>Ne<%2=T2^!Ge^}=FhSy6sG0;B{XOs=fq}6A-ui16GD>`| za>y5!Hzeq@nea`#P)5EoU=KY7uFvg{d`1PMXps)o+fXD*aMJg*Xa)u;-Nm6mic51pCfuzE8xRbzNvb&o+=;mge?5(Cj7-7oNCn+Tf&PYCw z1^}oIdt5=9S}-Ns48i8QO)9=#d_`XoF!~LpY^Dx@N!zp5-`Ds0e{H#FST20KSwiQ2 z&a}2p7A^Yf-?fqtoW9X+3Tk9c0CJFbBq^8tpA{)0mQ82}R!=Q@gaWu~-uIn7j7j@G zvr?Ndpq(t~@tG`(5meTI4i(P%*HDMHzFHc{0Al74`^DtOwbIO-=r;C>Lv(Cv!5zNz z(wFobf3-3igKTP*9Jl!WJZz4Sc5{{5er`kceir-1?0e5^ipBOav?^@*VqDBOfXO>AG8NTgBg|?4g>l71U5FI z30h+W41MZrEEC^tHMlTDG5Y^e@X)F+!H{NCwZaU%mR)hl9p`yukXyI;D95K+;YC+) zP|ze!f#;xz`!KK~0oi7EA}B{jnuVn>F~$jJXwMZAL+TGi3}z4OwVUT(>>#;(fn0!? z+zY{CR0qw`Y;GyXqpZ&=jZ^I7xo(Z(_?8wC6cTyw%x2hFLwN*Ux`WC~8{Zb{&CnSx zwYx|5fuR7VK^T>SB(y{h?4TIL4@W&m2RX7#%^DC|p^t!-T!pytkL^XK>2&osmGbZP zh`qT;7i2Me_?8cUIv^Wkj*}kxC}B`DUEhQoj<+HO+>8%+d3@2_|ElZk>SghM4zuxt z?mH{fkfSjjGiMc<2t??})$hfc2N9k=J`w>DliRzy$3L0Ldl)N4GU@hC9%lt_ZkjT* z60x{=$o=P%!0KMfu&xoXqJU2ap1Nl!% zeKwFOU();ur8u2Xq5}X5D@Ok!aWFL8|Lak)23f%y!qTv{~(8 zVD4=M0s+hGrGoC);RfDPF^_pq2aeV@l=uqhrjcOFvUjj}NzP9nyuV>3ru2jf%Iil{ zy{)kO4-*RDtCXP7HMVoU%l0S&v*K`eOZj4KQ8kWHDpM{}Pqc+NJ zrVL96#DnvtbZ3WzciD5oH`8D7mi56eS6AQKy0BP|v!HXGuVyNxad&U0HuisQ;0XAG z>-%5BfRR5WTO*8i2>CEpii%!<-_`Q^^5|$DMdvBqZ6vtN*VKLTV+FqeM}V||cLjAN z_-(F9_67+WD}n5r+9B&kUtd|E|WLT86Ksqa$3@I;*5+zmTbuOR5ewS29IVY4gk@6;z{qk=Gp z@tV(BUSmz%w6#GZcufVOAw%O0fZW;4j}HfD*|A`rq+8}e7Uj@;M_@3*s4+~LRIDOl zOv1|_*c)Xj-V9xNz{?F?r*#GlBDQDnZ{1J!_v;>nCA2^|+3FC}3!SP@tP2m1Z|{QL&8Z9;bZa{KTBsZ>-t ziPV4M6AAbhk6Xc9JPlr3UFTKD2wxqE{lNnXML+x9Ogi`PIzqK^AioYte~OV5G`b3!ma>Wq`eTJA z9wX77g)S8@6#y{#}Q)8o{BF{|gnk{K_GBV+M;EB zSDpUlqvB)F?+sYy$VYWoG8QOD4BTG(b@OhSQfP^T%bNP4A6z~AE*z`YW1zKSy@7k7 zZ8??CU-DHWpL`f}UGP*`jgVJy_;GUS6V@@d=)qc{7EnofCutaA ze2d%6@WDmot)k)3Yz@x!&4-Sy7hlFYW)c$m&8C*bGEh$4yD<0rhce*k{wGcIQ2AjbR@&D4@?_8 z@VPFvD^K$Gy5DSBi?`d?anAZQk9#(jU+TYFSg<=pD~alELe_s|Y&}#^PzYnP%l0kN zS-05{^1|V8#q&GEV&mmHi9ta@X4y&xxw7t8A(@(t%p9l3rK2n6)T~x2tJ%Q37g)cBYET=gT z=lP#%3>6pO9Uju+86cV_ZB#Y{^BH>MxH*Fv5lfQcNUC|6t-+XoN|A7E8BenBtkDVi z;|wb<8D5{2BrKs)r6VOx=T9ZRrgSdbJ65xd(FY;+Bj`o&)MO)#nV)&SPx)#U>0$VVOLb${Dv^i7@Xyd#y!d3@M#Nq|zn`Drt*R$gHZIRiH)Ieb1p1RsQDt;I9`&8Ano$L*NDGgR6|c|8Qo zVo-Rp8B~(O=bDB0hBacWCHpdT6trCPD!qvO@EVHi7Rj>%g7um^1u(ZwWZRQ~fPf_w zvv`i6=Sg5L^ZkYJ;knM$*jP+KAw3(2hy)JJnSnw)^0F*%+{<+@sC6Y8e?2ld;&;{b zA12%#ZFl~xBxEqa0mot#J9gLU+oq@Bgq-oE_t&bT%x3TFR9;WVxw-+Jd!qjnTzrXBmK9oRc(Xr(62lc9t9t^0qV@c`q zpZ(p-gFEGbbBQ&qXB-fBa#HWx-~W7kXPT&gyVa5T*;y8yuwwqe_v144 z6=Cwo_=5XcJ~t)Ww(H&&L}V4*@#zWunA#Dk1OTf!QwTsGBB=J3xqy(TV7CR@#*++H zsi6qc0c$O|vfv_?M}bnPeYL%xo4w<(n-(BFe;bti1~4rykCL3B?6vk zkZ|>NUyA8PqQ$$*?rHl_X`PeZ)}sYXDoRDv&FFr9lt z>fS66hJr2|I@7mWMAztGXS$$0(!ncD$fONRm>b8)JQAiA5cbEAATHGZaE-m*K-ZR( z6RcP{UNftsqfdi`<%yot&1AJAkX>-tHsDJo)Yl9qD`{Bs^tYOFKI76pp1k8g;x-s+-glw7 zzDB;~#5AKU*tr~w%}8nKzAGjs#_YLO01na>BX@)fDzD^Y3C&G#9Gy#L{Iy7U)~Nx+ z_C3kP_ASSAIaIYJ7{c8{ni?S-Db?RIUhVY|hFr&p7LeRXLIKRGbh>jb9)6Sea-|eY zko*JdKZV|2OQV;oPYT*fkBpdy)VHT#Jn2Oe37uZO$Ld{+YfJf9rukZ#zzJVg(ntU0 gaPmSUg5o9lL{{3@UZ4w#^s5G-qXC0fLmZ?319I_xt9Zd2i-!ckVa0celH@yBB8!*Jh&Ur3U~2Ou9N656N_s+&|D> zC66q+;gn=T*X14D1G{JzX%@_^5N;@KPzCm!L0Jssh@+1>^u&i9v$}o2(JAhRXdmL(>Q~hAq6PS{q5VSmBO=C zZeIU$Mjf}$#hSph5y7-U-MFs}UYLnsz4qSsv_G0OBtg_vIltK{PhFxyO^;4VIi}(> zyte`gkeN)LrxSX<$c8-0cR`((Y;z&QP@u?zr!$k7NQ@1E9TsHLSr3Rz*)_sOBB-eK zV>SO5hS5jd^E~VZpMlQX0II3VdHKK5DUN%z-)sn;p<+T^3+%`>_VJ` z95`9Fw<4Q8Tko1itR@um@8rLTI^mi<8;AJ+#{73N{~h`N8%Pd{O0L0+9_osSs7OgU zj5e_o?}r&-!N#}KswGftSb@`5D8mfBB4PcaYyF&@S7>RksMXAls^qv0{A0Lw5sq}z zU)!uX0=9Q_EO&S7-44^o7aFs)xVwVKQ(0kkOr|A7aO8-rrW)UK8AqKpr2dLDrix;_ z)2;lKYbj|MZ!}yIV;7Awq{Dsmv*gS(GuEj~H1+s`6Xi^JCGIyT&C4_pYDt2Y8DU+8 zs2Wd-_@-y%E`sw%Ri+Y6<)FiEg%qsAfibOeT9y6-Cu3pOEN5mL#LPVpD=VulB~hwK zZLF}la$Vj{n*}F0Ce>(0byS&ydPt>$w{-SEv&QRjK+{t^+~JqV~P2t4$SVD4K88la$8K6cbvH@h)PU)qx2{Q zhqL9fs1a6;Mk%0&o5#-Csjo=4Sk>3n#TFF-k=!RaE1~AZx(8+X^CUZEPII@@sL!L> zKL>iQJkq&b{fzY%mr@_wtiO^&h(^=MRxbdxqh@eV?PYxPJSrCxTWv2D_6~UXEmqSqT2P`cO}4f4`O; z?7$mPCiWBB*6;i!*Vu4-A5oc6)N8?KKL`eH<9s0ikgd-^oworsTFGaPnX*ZFQPr_tr6U~Qd=Zg9wl5Yh1AG1&meL}HDYWSP#8o9ZX0tRLdpoxUf)C~h zyO_}33_N%SS{2DYZg5furGF58dkbz+w(hW_CDBH2g#9EWBs3rU)%OEsN4_}#pq-cT zXg^f8-lJ5YhB9}%;vmknG|*?Aa&8X!T)7qKO%PBDfDWza=Hy7fcd6e$sj83P%Bjn}IrCIv{L?4! z7)7+HUTvToO4} zxUp}|tt6?@M&Qr>@c*j~HGoa4tiNp-cT&SSy`#y(giTH}fASN$iPU2XS>TgDRD)#& z7Rc)J9J6d~5L&Q8jj|jGhYCZgY|8lL+!;gGRz%Vyq`=edSJhxwhUUx#A$ z5$(mdT8T#b1K+~%K=Y%z!)}Jm$K(H0t?$GyFFPTp>)3jFdPLKE4j);9JY?n5d8cQB_8=!_QY@#9}mwm8-x@F^UasQ^wBDez(_m^qH9i1mgVEwJ7!YXyP6J1O?8d zt6OB&p(1A!RL;28I2(&I&g-M{Yc8a4bpTQ2_V zJVh50B!33J+Z!JtcL&x?KNa$&hWYx`RL&i3MMWXPFta6!TKfmQofW)wAjQ|YOfpbG ztWe=2mX=sHb&T}d-Dwp`Q;y(}5T!TfzQ?gj3RxLy$I@2!i@CxzAiDn zeOIR@^voWenaOq9+xB$!YUh zHei3YMw619&Pya5tSa++jIUl&qNV&wN1qLB_Z=M608l?#)k0KdH{8?kLz&fHXqaZ1 z8MK!}kVp)YDo(90V)CxIL?AXwQScx+`NR(<*D_{T0T_eNpFfjRoXxBKgWl#NeEfsoxI+;h zxIOY(pzO=R3(HljW9fW!3+=`oB@Sd>&OLvL4dIj zR_@Cz)MD^E+1F>G%$mk$hj*j{*b;4wO1xk6@QuE{zLjc$OBd7*XL}vwoSfm2d1*@# zz0^}X>%IWNjg+&0U%Bm&UkilziiX9HKUZEs0Sp3xz?OHV$xi!eZghjTi<0c*Sy@?c z@A;8y=AX}G0O6B6?Mq9ArYmF5WDe>Z)2S;)pJilaquY*>c*wJ|#!Ifbeq@hBF`mx#B{Wekc# zF~GofMMBng%eA*6L^`6Qpsbipm!DuFiBn*M>Uk;4l#8?%DVT-aCq0}1-(QZdLd_bwibJuD3S#eXXmlZ;=9mtl5r zaQIWp1+nc}rF9SZjsEB&Ui1*WA>7*hlp$S4i{bD=L5iHYzyEPL%jiltZBO@Ul=T$; zaii=@Mt?}5l%0@ne49N{Gd8lku>i~sMmQOtC%>3>f5Bh3a0-d3A6r}8`C9oGN!XwG z<&oHFhppQn@|<{VHno?OxpMF4g}OVdhgy0Fcjo&!>^n^bg$f+1bT7E`@Dq+zxym^q zJnnb7kZzam-w!TmstWLxhBT@+iGLdo6O}Ex-iUqkx)7JV=HR7BY5_WVs2r%jj$Y6R zv==6uiCz)vDZLa&4?B8H z)pZ2AlvW)TYjRpe$YE7l^ewl8L0)P`w66jhrDLBYUVv-WAOnSwd(-_eaR&b2P$XB5 z@q-=4gWO0)dh!`&WaoS&R9-NWb;}5xRqspmEqCpVg$g~ga~yQt9BcsO5H3&m4o$zi zsC*8dX`5Z_hib&9j=y??GMmN$*c?5{MvIpe{Kj-{VlSq}VE$2D0-8`&RfTBW-rOwX zrcp~Emud8bbtTh0Z&~5q80zq;t2P|4haHN9Xf(|f;q1(o0j6^m0UH1MyU8yG1w14> z!jHZ%pa=^Bgt(j@+kMdnuvaD0y;l+MlKMYn*(aYx|IcgkWmjALnnUm>g!&x#fgKL| pF0_%XG!s+#7kH+zk}knZ8qW(wIb`|+dGa3 Date: Mon, 6 Nov 2023 18:52:24 +0100 Subject: [PATCH 090/207] Auto stash before merge of "master" and "origin/master" --- changelog | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/changelog b/changelog index 818c3edaa..a8ce84de8 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,4 @@ +<<<<<<< Updated upstream ## Changed * The wood-burning generator now burns 40mB/s instead of 1mB/s * Buffed the wood-burning generator's efficiency for fluids from 25% to 50% @@ -5,4 +6,6 @@ ## Fixed * Fixed wood-burning generator being 100x more efficient than it's supposed to be -* Fixed arc welders eating infinite energy \ No newline at end of file +* Fixed arc welders eating infinite energy +======= +>>>>>>> Stashed changes From 973b7eb4b009f1bb93dcc8e0dc80e77ee88f9980 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 6 Nov 2023 18:54:24 +0100 Subject: [PATCH 091/207] you fucking asshole how about you cut that shit out --- changelog | 3 --- 1 file changed, 3 deletions(-) diff --git a/changelog b/changelog index a8ce84de8..2d60a4c6d 100644 --- a/changelog +++ b/changelog @@ -1,4 +1,3 @@ -<<<<<<< Updated upstream ## Changed * The wood-burning generator now burns 40mB/s instead of 1mB/s * Buffed the wood-burning generator's efficiency for fluids from 25% to 50% @@ -7,5 +6,3 @@ ## Fixed * Fixed wood-burning generator being 100x more efficient than it's supposed to be * Fixed arc welders eating infinite energy -======= ->>>>>>> Stashed changes From 2090ac553dc3507a565bf5e8f8bf816e4e93c71b Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 6 Nov 2023 19:05:44 +0100 Subject: [PATCH 092/207] abracadabra --- changelog | 5 ++- gradle.properties | 2 +- .../inventory/material/MatDistribution.java | 40 +++++++++++-------- src/main/java/com/hbm/lib/RefStrings.java | 2 +- 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/changelog b/changelog index 2d60a4c6d..0a724fc8b 100644 --- a/changelog +++ b/changelog @@ -1,8 +1,11 @@ ## Changed +* Updated russian localization * The wood-burning generator now burns 40mB/s instead of 1mB/s * Buffed the wood-burning generator's efficiency for fluids from 25% to 50% * The particle accelerator now has a new IO mode called single mode, which only allows one item per slot +* Added some color variance to the FEL's shell ## Fixed * Fixed wood-burning generator being 100x more efficient than it's supposed to be -* Fixed arc welders eating infinite energy +* Fixed arc welders eating infinite surplus energy +* Fixed small wires not being crucible smeltable diff --git a/gradle.properties b/gradle.properties index 243fd6690..5d374e4ff 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4774 +mod_build_number=4775 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/inventory/material/MatDistribution.java b/src/main/java/com/hbm/inventory/material/MatDistribution.java index 8e6fcebea..dd55dc119 100644 --- a/src/main/java/com/hbm/inventory/material/MatDistribution.java +++ b/src/main/java/com/hbm/inventory/material/MatDistribution.java @@ -45,22 +45,30 @@ public class MatDistribution extends SerializableRecipe { registerEntry(Items.minecart, MAT_IRON, INGOT.q(5)); //castables - registerEntry(ModItems.blade_titanium, MAT_TITANIUM, INGOT.q(2)); - registerEntry(ModItems.blade_tungsten, MAT_TUNGSTEN, INGOT.q(2)); - registerEntry(ModItems.blades_steel, MAT_STEEL, INGOT.q(4)); - registerEntry(ModItems.blades_titanium, MAT_TITANIUM, INGOT.q(4)); - registerEntry(ModItems.blades_advanced_alloy, MAT_ALLOY, INGOT.q(4)); - registerEntry(ModItems.stamp_stone_flat, MAT_STONE, INGOT.q(3)); - registerEntry(ModItems.stamp_iron_flat, MAT_IRON, INGOT.q(3)); - registerEntry(ModItems.stamp_steel_flat, MAT_STEEL, INGOT.q(3)); - registerEntry(ModItems.stamp_titanium_flat, MAT_TITANIUM, INGOT.q(3)); - registerEntry(ModItems.stamp_obsidian_flat, MAT_OBSIDIAN, INGOT.q(3)); - registerEntry(ModItems.hull_small_steel, MAT_STEEL, INGOT.q(2)); - registerEntry(ModItems.hull_small_aluminium, MAT_ALUMINIUM, INGOT.q(2)); - registerEntry(ModItems.hull_big_steel, MAT_STEEL, INGOT.q(6)); - registerEntry(ModItems.hull_big_aluminium, MAT_ALUMINIUM, INGOT.q(6)); - registerEntry(ModItems.hull_big_titanium, MAT_TITANIUM, INGOT.q(6)); - registerEntry(ModItems.pipes_steel, MAT_STEEL, BLOCK.q(3)); + registerEntry(ModItems.blade_titanium, MAT_TITANIUM, INGOT.q(2)); + registerEntry(ModItems.blade_tungsten, MAT_TUNGSTEN, INGOT.q(2)); + registerEntry(ModItems.blades_steel, MAT_STEEL, INGOT.q(4)); + registerEntry(ModItems.blades_titanium, MAT_TITANIUM, INGOT.q(4)); + registerEntry(ModItems.blades_advanced_alloy, MAT_ALLOY, INGOT.q(4)); + registerEntry(ModItems.stamp_stone_flat, MAT_STONE, INGOT.q(3)); + registerEntry(ModItems.stamp_iron_flat, MAT_IRON, INGOT.q(3)); + registerEntry(ModItems.stamp_steel_flat, MAT_STEEL, INGOT.q(3)); + registerEntry(ModItems.stamp_titanium_flat, MAT_TITANIUM, INGOT.q(3)); + registerEntry(ModItems.stamp_obsidian_flat, MAT_OBSIDIAN, INGOT.q(3)); + registerEntry(ModItems.hull_small_steel, MAT_STEEL, INGOT.q(2)); + registerEntry(ModItems.hull_small_aluminium, MAT_ALUMINIUM, INGOT.q(2)); + registerEntry(ModItems.hull_big_steel, MAT_STEEL, INGOT.q(6)); + registerEntry(ModItems.hull_big_aluminium, MAT_ALUMINIUM, INGOT.q(6)); + registerEntry(ModItems.hull_big_titanium, MAT_TITANIUM, INGOT.q(6)); + registerEntry(ModItems.pipes_steel, MAT_STEEL, BLOCK.q(3)); + registerEntry(ModItems.wire_aluminium, MAT_ALUMINIUM, WIRE.q(1)); + registerEntry(ModItems.wire_copper, MAT_COPPER, WIRE.q(1)); + registerEntry(ModItems.wire_red_copper, MAT_MINGRADE, WIRE.q(1)); + registerEntry(ModItems.wire_tungsten, MAT_TUNGSTEN, WIRE.q(1)); + registerEntry(ModItems.wire_gold, MAT_GOLD, WIRE.q(1)); + registerEntry(ModItems.wire_advanced_alloy, MAT_ALLOY, WIRE.q(1)); + registerEntry(ModItems.wire_magnetized_tungsten, MAT_MAGTUNG, WIRE.q(1)); + registerEntry(ModItems.wire_schrabidium, MAT_SCHRABIDIUM, WIRE.q(1)); //actual ores if(!Compat.isModLoaded(Compat.MOD_GT6)) { diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 7b15658d8..0c18a2d38 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4774)"; + public static final String VERSION = "1.0.27 BETA (4775)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version From 1e43e00b33faf7b66d6abc27d64d4b0634212b04 Mon Sep 17 00:00:00 2001 From: JameH2 <75378928+JameH2@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:02:08 -0700 Subject: [PATCH 093/207] ribbit --- .../hbm/blocks/machine/BlockFluidBarrel.java | 17 +++++++- .../hbm/blocks/machine/MachineFluidTank.java | 31 +++++++++++++- .../hbm/blocks/network/FluidDuctStandard.java | 40 +++++++++++++++++++ 3 files changed, 85 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index 84ad21963..a6e745479 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -27,6 +27,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.stats.StatList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -71,7 +74,19 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; - } else { + } else if(player.isSneaking()){ + TileEntityBarrel mileEntity = (TileEntityBarrel) world.getTileEntity(x, y, z); + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, x, y, z, player.getHeldItem()); + + mileEntity.tank.setTankType(type); + mileEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + return true; + + }else { return false; } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index d639eed45..32274741c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -7,9 +7,11 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.entity.projectile.EntityBombletZeta; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; @@ -27,6 +29,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.Explosion; import net.minecraft.world.World; @@ -61,7 +66,8 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP if(world.isRemote) { return true; - } else if(!player.isSneaking()) { + } + else if(!player.isSneaking()) { int[] pos = this.findCore(world, x, y, z); if(pos == null) @@ -74,9 +80,30 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); } return true; - } else { + } + else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(tank != null) { + if(tank.hasExploded) return false; + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + tank.tank.setTankType(type); + tank.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + return true; + }else { return true; } + } @Override diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index 35d197059..7a6ab966b 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -5,8 +5,10 @@ import java.util.List; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.test.TestPipe; import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityPipeBaseNT; @@ -14,15 +16,18 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; @@ -70,7 +75,42 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo public int damageDropped(int meta) { return rectify(meta); } + /* + @Override + @SideOnly(Side.CLIENT) + public Item getItem(World world, int x, int y, int z) { + Block block = world.getBlock(x, y, z); // Get the block at the specified coordinates + int blockMetadata = world.getBlockMetadata(x, y, z); // Get the metadata of the block at the specified coordinates + TileEntity tileEntity = world.getTileEntity(x, y, z); // Get the tile entity at the specified coordinates + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) tileEntity; + + // Get the metadata (FluidType) from the pipe + FluidType fluidType = pipe.getType(); + int metadata = fluidType.getID(); + + // Create an ItemStack with the item and metadata + ItemStack itemStack = new ItemStack(ModItems.fluid_duct, 1, metadata); + System.out.println(metadata); + System.out.println(itemStack); + + return new ItemStack(ModItems.fluid_duct, 1, metadata).getItem(); + } + */ + + @Override + @SideOnly(Side.CLIENT) + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + if (tileEntity instanceof TileEntityPipeBaseNT) { + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) tileEntity; + FluidType fluidType = pipe.getType(); + int retadata = fluidType.getID(); //florf + + return new ItemStack(ModItems.fluid_duct, 1, retadata); + } + return super.getPickBlock(target, world, x, y, z, player); + } @Override public int getRenderType() { return TestPipe.renderID; From 1fd672f167f85ab681fb4741b746be8d951de9c0 Mon Sep 17 00:00:00 2001 From: JameH2 <75378928+JameH2@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:17:45 -0700 Subject: [PATCH 094/207] wow i cant believe you forgot these kill yours --- .../hbm/blocks/machine/BlockFluidBarrel.java | 2 ++ .../blocks/machine/MachineBigAssTank9000.java | 27 ++++++++++++++++++- .../com/hbm/blocks/machine/MachineOrbus.java | 27 ++++++++++++++++++- 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index a6e745479..41ab8cba8 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -7,8 +7,10 @@ import java.util.Random; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.machine.storage.TileEntityBarrel; diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index ec8f81136..e0a494ede 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -6,12 +6,15 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; +import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -19,6 +22,9 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -87,7 +93,26 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); //we can do this because nobody is stopping me from doing this return true; - } else { + } else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityMachineBAT9000 trialEntity = (TileEntityMachineBAT9000) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(trialEntity != null) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + trialEntity.tank.setTankType(type); + trialEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + + return true; + }else { return true; } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java index 78ffddd31..902c24672 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java @@ -5,11 +5,14 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -18,6 +21,9 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -60,7 +66,26 @@ public class MachineOrbus extends BlockDummyable implements IPersistentInfoProvi FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); return true; - } else { + } else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityMachineOrbus kyleEntity = (TileEntityMachineOrbus) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(kyleEntity != null) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + kyleEntity.tank.setTankType(type); + kyleEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + + return true; + } else { return true; } } From a5c49f6d64971650466aef5d731ed53c2dcac660 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 7 Nov 2023 15:59:04 +0100 Subject: [PATCH 095/207] flixes --- changelog | 12 ++---------- .../com/hbm/handler/nei/CustomMachineHandler.java | 4 ++-- .../java/com/hbm/items/special/ItemBedrockOre.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- 5 files changed, 7 insertions(+), 15 deletions(-) diff --git a/changelog b/changelog index 0a724fc8b..54fd44341 100644 --- a/changelog +++ b/changelog @@ -1,11 +1,3 @@ -## Changed -* Updated russian localization -* The wood-burning generator now burns 40mB/s instead of 1mB/s -* Buffed the wood-burning generator's efficiency for fluids from 25% to 50% -* The particle accelerator now has a new IO mode called single mode, which only allows one item per slot -* Added some color variance to the FEL's shell - ## Fixed -* Fixed wood-burning generator being 100x more efficient than it's supposed to be -* Fixed arc welders eating infinite surplus energy -* Fixed small wires not being crucible smeltable +* Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer +* Fixed custom machine NEI slots going out of bounds after the third slot \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java index f5a4226d2..844af6e60 100644 --- a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java +++ b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java @@ -57,7 +57,7 @@ public class CustomMachineHandler extends TemplateRecipeHandler { for(int i = 0; i < 3; i++) if(recipe.inputFluids.length > i) inputs.add(new PositionedStack(ItemFluidIcon.make(recipe.inputFluids[i]), 12 + i * 18, 6)); for(int i = 0; i < 3; i++) if(recipe.inputItems.length > i) inputs.add(new PositionedStack(recipe.inputItems[i].extractForNEI(), 12 + i * 18, 24)); - for(int i = 3; i < 6; i++) if(recipe.inputItems.length > i) inputs.add(new PositionedStack(recipe.inputItems[i].extractForNEI(), 12 + i * 18, 42)); + for(int i = 3; i < 6; i++) if(recipe.inputItems.length > i) inputs.add(new PositionedStack(recipe.inputItems[i].extractForNEI(), 12 + (i - 3) * 18, 42)); for(int i = 0; i < 3; i++) if(recipe.outputFluids.length > i) outputs.add(new PositionedStack(ItemFluidIcon.make(recipe.outputFluids[i]), 102 + i * 18, 6)); @@ -76,7 +76,7 @@ public class CustomMachineHandler extends TemplateRecipeHandler { if(pair.getValue() != 1) { ItemStackUtil.addTooltipToStack(out, EnumChatFormatting.RED + "" + (((int)(pair.getValue() * 1000)) / 10D) + "%"); } - outputs.add(new PositionedStack(out, 102 + i * 18, 42)); + outputs.add(new PositionedStack(out, 102 + (i - 3) * 18, 42)); } this.machine = new PositionedStack(new ItemStack(ModBlocks.custom_machine, 1, 100 + CustomMachineConfigJSON.niceList.indexOf(conf)), 75, 42); diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOre.java b/src/main/java/com/hbm/items/special/ItemBedrockOre.java index b3cd0433e..ca2ad4853 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOre.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOre.java @@ -94,7 +94,7 @@ public class ItemBedrockOre extends ItemEnumMulti { TUNGSTEN("Tungsten", 0x2C293C, B_LEAD, B_IRON, B_BISMUTH), //ferberite has iron, raspite has lead, russelite is bismuth tungsten GOLD("Gold", 0xF9D738, B_LEAD, B_COPPER, B_BISMUTH), //occurs with copper, lead and rare bismuthide URANIUM("Uranium", 0x868D82, B_LEAD, B_RADIUM, B_POLONIUM), //uranium and its decay products - THORIUM("Thorium", 0x7D401D, B_SILICON, B_URANIUM, B_TECHNETIUM), //thorium occours with uraninite and decay products + THORIUM("Thorium232", 0x7D401D, B_SILICON, B_URANIUM, B_TECHNETIUM), //thorium occours with uraninite and decay products CHLOROCALCITE("Chlorocalcite", 0xCDE036, B_LITHIUM, B_SILICON, B_SILICON), //i guess? FLUORITE("Fluorite", 0xF6F3E7, B_SILICON, B_LITHIUM, B_ALUMINIUM), //different silicon-bearing gemstones, generic lithium, aluminium from sodium compound trailings HEMATITE("Hematite", 0xA37B72, B_SULFUR, B_TITANIUM, B_TITANIUM), //titanium, sulfur from pyrite diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index b38691e89..770d3d540 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2562,7 +2562,7 @@ item.ore.malachite=Malachit item.ore.niobium=Niob item.ore.titanium=Titan item.ore.tungsten=Wolfram -item.ore.thorium=Thorium +item.ore.thorium232=Thorium item.ore.uranium=Uran item.ore_bedrock.name=Bedrock-%serz item.ore_byproduct.b_aluminium.name=Kristallines Aluminiumfragment diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 80ed6e7a1..19cb1bd86 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3321,7 +3321,7 @@ item.ore.malachite=Malachite item.ore.niobium=Niobium item.ore.titanium=Titanium item.ore.tungsten=Tungsten -item.ore.thorium=Thorium +item.ore.thorium232=Thorium item.ore.uranium=Uranium item.ore_bedrock.name=%s Bedrock Ore item.ore_byproduct.b_aluminium.name=Crystalline Aluminium Fragment From fe152fb6762becf06b7f64581a8710e2c19a9172 Mon Sep 17 00:00:00 2001 From: sdddddf80 <2980187979@qq.com> Date: Wed, 8 Nov 2023 16:23:28 +0800 Subject: [PATCH 096/207] Transferred a bunch of text to lang file Transferred a bunch of text to lang file(not all) --- .../java/com/hbm/blocks/ITooltipProvider.java | 5 +- .../hbm/blocks/machine/BlockFluidBarrel.java | 53 +- .../hbm/blocks/machine/BlockHadronCooler.java | 5 +- .../hbm/blocks/machine/MachineCapacitor.java | 5 +- .../hbm/blocks/machine/MachineGasFlare.java | 11 +- .../com/hbm/blocks/network/PylonLarge.java | 6 +- .../com/hbm/blocks/network/PylonRedWire.java | 5 +- .../com/hbm/blocks/network/Substation.java | 5 +- .../hbm/handler/nei/CustomMachineHandler.java | 3 +- .../com/hbm/inventory/fluid/FluidType.java | 5 +- .../inventory/fluid/trait/FT_Combustible.java | 17 +- .../inventory/fluid/trait/FT_Coolable.java | 5 +- .../inventory/fluid/trait/FT_Corrosive.java | 5 +- .../inventory/fluid/trait/FT_Flammable.java | 5 +- .../inventory/fluid/trait/FT_Heatable.java | 5 +- .../fluid/trait/FT_PWRModerator.java | 5 +- .../hbm/inventory/fluid/trait/FT_Poison.java | 3 +- .../hbm/inventory/fluid/trait/FT_Toxin.java | 2 +- .../fluid/trait/FT_VentRadiation.java | 3 +- .../fluid/trait/FluidTraitSimple.java | 19 +- .../java/com/hbm/items/armor/ArmorDNT.java | 2 +- .../com/hbm/items/armor/ArmorFSBPowered.java | 3 +- .../com/hbm/items/armor/ItemArmorMod.java | 2 +- .../java/com/hbm/items/armor/ItemModAuto.java | 3 +- .../com/hbm/items/armor/ItemModBandaid.java | 5 +- .../com/hbm/items/armor/ItemModBathwater.java | 5 +- .../com/hbm/items/armor/ItemModCharm.java | 12 +- .../com/hbm/items/armor/ItemModCladding.java | 5 +- .../com/hbm/items/armor/ItemModDefuser.java | 5 +- .../com/hbm/items/armor/ItemModGasmask.java | 6 +- .../com/hbm/items/armor/ItemModHealth.java | 7 +- .../java/com/hbm/items/armor/ItemModInk.java | 7 +- .../com/hbm/items/armor/ItemModInsert.java | 21 +- .../java/com/hbm/items/armor/ItemModIron.java | 5 +- .../com/hbm/items/armor/ItemModKnife.java | 8 +- .../java/com/hbm/items/armor/ItemModLens.java | 5 +- .../com/hbm/items/armor/ItemModLodestone.java | 7 +- .../java/com/hbm/items/armor/ItemModMilk.java | 5 +- .../hbm/items/armor/ItemModMorningGlory.java | 5 +- .../com/hbm/items/armor/ItemModObsidian.java | 5 +- .../java/com/hbm/items/armor/ItemModPads.java | 9 +- .../com/hbm/items/armor/ItemModPolish.java | 5 +- .../com/hbm/items/armor/ItemModQuartz.java | 5 +- .../com/hbm/items/armor/ItemModRevive.java | 19 +- .../com/hbm/items/armor/ItemModSensor.java | 7 +- .../com/hbm/items/armor/ItemModSerum.java | 5 +- .../com/hbm/items/armor/ItemModServos.java | 17 +- .../com/hbm/items/armor/ItemModShackles.java | 11 +- .../com/hbm/items/armor/ItemModTesla.java | 5 +- .../com/hbm/items/armor/ItemModTwoKick.java | 7 +- .../java/com/hbm/items/armor/ItemModV1.java | 5 +- .../java/com/hbm/items/armor/ItemModWD40.java | 5 +- .../java/com/hbm/items/armor/JetpackBase.java | 3 +- .../com/hbm/items/armor/JetpackBooster.java | 7 +- .../com/hbm/items/armor/JetpackBreak.java | 6 +- .../com/hbm/items/armor/JetpackRegular.java | 3 +- .../hbm/items/armor/JetpackVectorized.java | 5 +- .../hbm/items/block/ItemBlockBlastInfo.java | 3 +- .../com/hbm/items/block/ItemBlockLore.java | 27 +- .../hbm/items/block/ItemCustomMachine.java | 3 +- .../java/com/hbm/items/bomb/ItemFleija.java | 5 +- .../hbm/items/bomb/ItemMissileShuttle.java | 10 +- src/main/java/com/hbm/items/bomb/ItemN2.java | 6 +- .../hbm/items/bomb/ItemPrototypeBlock.java | 7 +- .../java/com/hbm/items/bomb/ItemSolinium.java | 5 +- .../java/com/hbm/items/food/ItemLemon.java | 52 +- .../com/hbm/items/food/ItemTemFlakes.java | 7 +- .../com/hbm/items/machine/ItemBattery.java | 9 +- .../hbm/items/machine/ItemMachineUpgrade.java | 162 +- .../com/hbm/items/machine/ItemPWRFuel.java | 8 +- .../com/hbm/items/machine/ItemPlateFuel.java | 7 +- .../com/hbm/items/machine/ItemRBMKPellet.java | 15 +- .../com/hbm/items/machine/ItemRBMKRod.java | 18 +- .../com/hbm/items/machine/ItemWatzPellet.java | 19 +- .../com/hbm/items/special/ItemAMSCore.java | 44 +- .../com/hbm/items/special/ItemGlitch.java | 75 +- .../java/com/hbm/items/special/ItemRag.java | 5 +- .../java/com/hbm/items/special/ItemSoyuz.java | 9 +- .../com/hbm/items/tool/ItemAnchorRemote.java | 7 +- .../com/hbm/items/tool/ItemCMStructure.java | 7 +- .../com/hbm/items/tool/ItemDetonator.java | 13 +- src/main/java/com/hbm/items/tool/ItemMS.java | 3 +- .../hbm/items/tool/ItemSwordMeteorite.java | 49 +- .../java/com/hbm/items/tool/ItemWand.java | 13 +- .../java/com/hbm/items/tool/ItemWandS.java | 7 +- .../com/hbm/items/tool/WeaponSpecial.java | 45 +- .../com/hbm/main/ModEventHandlerClient.java | 20 +- .../java/com/hbm/util/function/Function.java | 11 +- src/main/resources/assets/hbm/lang/en_US.lang | 174 ++ src/main/resources/assets/hbm/lang/zh_CN.lang | 1593 ++++++++++------- 90 files changed, 1613 insertions(+), 1244 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ITooltipProvider.java b/src/main/java/com/hbm/blocks/ITooltipProvider.java index e959db070..4ca8d3678 100644 --- a/src/main/java/com/hbm/blocks/ITooltipProvider.java +++ b/src/main/java/com/hbm/blocks/ITooltipProvider.java @@ -21,9 +21,8 @@ public interface ITooltipProvider { if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray(((Block)this).getUnlocalizedName() + ".desc")) list.add(EnumChatFormatting.YELLOW + s); } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index 84ad21963..4acf88e73 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -13,6 +13,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.machine.storage.TileEntityBarrel; +import com.hbm.util.I18nUtil; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.Block; @@ -191,47 +192,47 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { if(this == ModBlocks.barrel_plastic) { - list.add(EnumChatFormatting.AQUA + "Capacity: 12,000mB"); - list.add(EnumChatFormatting.YELLOW + "Cannot store hot fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","12,000")); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[1]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[4]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); } if(this == ModBlocks.barrel_corroded) { - list.add(EnumChatFormatting.AQUA + "Capacity: 6,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); - list.add(EnumChatFormatting.RED + "Leaky"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","6,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("trait.tile.barrel.leak")); } if(this == ModBlocks.barrel_iron) { - list.add(EnumChatFormatting.AQUA + "Capacity: 8,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids properly"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","8,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[3]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); } if(this == ModBlocks.barrel_steel) { - list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store highly corrosive fluids properly"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","16,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[1]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[2]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); } if(this == ModBlocks.barrel_antimatter) { - list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); - list.add(EnumChatFormatting.GREEN + "Can store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","16,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[0]); } if(this == ModBlocks.barrel_tcalloy) { - list.add(EnumChatFormatting.AQUA + "Capacity: 24,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","24,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); } } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java index a242772e2..c2c220ff8 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java +++ b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java @@ -59,9 +59,8 @@ public class BlockHadronCooler extends BlockMulti implements ITooltipProvider { if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray(this.getUnlocalizedName(stack) + ".desc")) list.add(EnumChatFormatting.YELLOW + s); } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java index be083f6e3..e55f4844b 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -113,9 +113,8 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray("tile.capacitor.desc")) list.add(EnumChatFormatting.YELLOW + s); } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java b/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java index 4567cf760..db5bd32f5 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java +++ b/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java @@ -7,6 +7,7 @@ import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineGasFlare; +import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -61,13 +62,7 @@ public class MachineGasFlare extends BlockDummyable implements ITooltipProvider @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - - list.add(EnumChatFormatting.GOLD + "Can burn fluids and vent gasses"); - list.add(EnumChatFormatting.GOLD + "Burns up to " + EnumChatFormatting.RED + "10mB/t"); - list.add(EnumChatFormatting.GOLD + "Vents up to " + EnumChatFormatting.RED + "50mB/t"); - list.add(""); - list.add(EnumChatFormatting.YELLOW + "Fuel efficiency:"); - list.add(EnumChatFormatting.YELLOW + "-Flammable Gasses: " + EnumChatFormatting.RED + "50%"); - list.add(EnumChatFormatting.YELLOW + "-Flammable Liquids: " + EnumChatFormatting.RED + "10%"); + for(String s : I18nUtil.resolveKeyArray("tile.machine_flare.desc")) + list.add(EnumChatFormatting.GOLD + s); } } diff --git a/src/main/java/com/hbm/blocks/network/PylonLarge.java b/src/main/java/com/hbm/blocks/network/PylonLarge.java index 395b27dd1..65605d4d3 100644 --- a/src/main/java/com/hbm/blocks/network/PylonLarge.java +++ b/src/main/java/com/hbm/blocks/network/PylonLarge.java @@ -7,6 +7,7 @@ import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntityPylonLarge; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -33,9 +34,8 @@ public class PylonLarge extends BlockDummyable implements ITooltipProvider { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Quadruple"); - list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "100m"); - list.add(EnumChatFormatting.GOLD + "This pylon requires a substation!"); + for(String s : I18nUtil.resolveKeyArray("tile.red_pylon_large.desc")) + list.add(EnumChatFormatting.GOLD + s); } @Override diff --git a/src/main/java/com/hbm/blocks/network/PylonRedWire.java b/src/main/java/com/hbm/blocks/network/PylonRedWire.java index 79a44f541..9b9d8750b 100644 --- a/src/main/java/com/hbm/blocks/network/PylonRedWire.java +++ b/src/main/java/com/hbm/blocks/network/PylonRedWire.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.tileentity.network.TileEntityPylon; +import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -24,7 +25,7 @@ public class PylonRedWire extends PylonBase { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Single"); - list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "25m"); + for(String s : I18nUtil.resolveKeyArray("tile.red_pylon.desc")) + list.add(EnumChatFormatting.GOLD + s); } } diff --git a/src/main/java/com/hbm/blocks/network/Substation.java b/src/main/java/com/hbm/blocks/network/Substation.java index 7499992fd..4f61cf58d 100644 --- a/src/main/java/com/hbm/blocks/network/Substation.java +++ b/src/main/java/com/hbm/blocks/network/Substation.java @@ -8,6 +8,7 @@ import com.hbm.tileentity.TileEntityProxyConductor; import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntitySubstation; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -37,8 +38,8 @@ public class Substation extends BlockDummyable implements ITooltipProvider { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Quadruple"); - list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "20m"); + for(String s : I18nUtil.resolveKeyArray("tile.substation.desc")) + list.add(EnumChatFormatting.GOLD + s); } @Override diff --git a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java index 844af6e60..659289307 100644 --- a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java +++ b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java @@ -14,6 +14,7 @@ import com.hbm.inventory.recipes.CustomMachineRecipes; import com.hbm.inventory.recipes.CustomMachineRecipes.CustomMachineRecipe; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.Tuple.Pair; @@ -104,7 +105,7 @@ public class CustomMachineHandler extends TemplateRecipeHandler { @Override public String getRecipeName() { - return conf.localizedName; + return (I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name").startsWith("tile.cm_")) ? conf.localizedName : I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name"); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index d6fa4d759..e6015725b 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -218,9 +218,8 @@ public class FluidType { info.addAll(hidden); } else { - info.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + info.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java index a297d40ca..9d566e0fb 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java @@ -7,6 +7,7 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Combustible extends FluidTrait { @@ -25,11 +26,11 @@ public class FT_Combustible extends FluidTrait { public void addInfo(List info) { super.addInfo(info); - info.add(EnumChatFormatting.GOLD + "[Combustible]"); + info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible","","")[0]); if(combustionEnergy > 0) { - info.add(EnumChatFormatting.GOLD + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(combustionEnergy) + "HE " + EnumChatFormatting.GOLD + "per bucket"); - info.add(EnumChatFormatting.GOLD + "Fuel grade: " + EnumChatFormatting.RED + this.fuelGrade.getGrade()); + info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible",BobMathUtil.getShortNumber(combustionEnergy),"")[1]); + info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible","",this.fuelGrade.getGrade())[2]); } } @@ -42,11 +43,11 @@ public class FT_Combustible extends FluidTrait { } public static enum FuelGrade { - LOW("Low"), //heating and industrial oil < star engine, iGen - MEDIUM("Medium"), //petroil < diesel generator - HIGH("High"), //diesel, gasoline < HP engine - AERO("Aviation"), //kerosene and other light aviation fuels < turbofan - GAS("Gaseous"); //fuel gasses like NG, PG and syngas < gas turbine + LOW(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[0]), //heating and industrial oil < star engine, iGen + MEDIUM(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[1]), //petroil < diesel generator + HIGH(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[2]), //diesel, gasoline < HP engine + AERO(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[3]), //kerosene and other light aviation fuels < turbofan + GAS(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[4]); //fuel gasses like NG, PG and syngas < gas turbine private String grade; diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java index 1bb6d3574..a0aae7d54 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java @@ -10,6 +10,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Coolable extends FluidTrait { @@ -42,14 +43,14 @@ public class FT_Coolable extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.AQUA + "Thermal capacity: " + heatEnergy + " TU"); + info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable",heatEnergy,"")[0]); for(CoolingType type : CoolingType.values()) { double eff = getEfficiency(type); if(eff > 0) { info.add(EnumChatFormatting.AQUA + "[" + type.name + "]"); - info.add(EnumChatFormatting.AQUA + "Efficiency: " + ((int) (eff * 100D)) + "%"); + info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable","",((int) (eff * 100D)))[1]); } } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java index 2a459e25c..8387b0e23 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java @@ -6,6 +6,7 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Corrosive extends FluidTrait { @@ -31,9 +32,9 @@ public class FT_Corrosive extends FluidTrait { public void addInfo(List info) { if(isHighlyCorrosive()) - info.add(EnumChatFormatting.GOLD + "[Strongly Corrosive]"); + info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Corrosive")[0]); else - info.add(EnumChatFormatting.YELLOW + "[Corrosive]"); + info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("hbmfluid.Trait.Corrosive")[1]); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java index 82e309ef9..e2f35ff3c 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java @@ -7,6 +7,7 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Flammable extends FluidTrait { @@ -28,10 +29,10 @@ public class FT_Flammable extends FluidTrait { public void addInfo(List info) { super.addInfo(info); - info.add(EnumChatFormatting.YELLOW + "[Flammable]"); + info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("hbmfluid.Trait.Flammable","")[0]); if(energy > 0) - info.add(EnumChatFormatting.YELLOW + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(energy) + "TU " + EnumChatFormatting.YELLOW + "per bucket"); + info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("hbmfluid.Trait.Flammable",BobMathUtil.getShortNumber(energy))[1]); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java index c828858b8..7ce3ee4fc 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java @@ -6,6 +6,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; import java.io.IOException; @@ -42,14 +43,14 @@ public class FT_Heatable extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.AQUA + "Thermal capacity: " + this.getFirstStep().heatReq + " TU"); + info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable",this.getFirstStep().heatReq,"")[0]); for(HeatingType type : HeatingType.values()) { double eff = getEfficiency(type); if(eff > 0) { info.add(EnumChatFormatting.AQUA + "[" + type.name + "]"); - info.add(EnumChatFormatting.AQUA + "Efficiency: " + ((int) (eff * 100D)) + "%"); + info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable","",((int) (eff * 100D)))[1]); } } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java index 65386405a..3e5aad50c 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java @@ -6,6 +6,7 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_PWRModerator extends FluidTrait { @@ -22,13 +23,13 @@ public class FT_PWRModerator extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.BLUE + "[PWR Flux Multiplier]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("hbmfluid.Trait.PWRModerator","","")[0]); } @Override public void addInfoHidden(List info) { int mult = (int) (multiplier * 100 - 100); - info.add(EnumChatFormatting.BLUE + "Core flux " + (mult >= 0 ? "+" : "") + mult + "%"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("hbmfluid.Trait.PWRModerator",(mult >= 0 ? "+" : ""),mult)[1]); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java index 335c182cb..39d31bc25 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java @@ -6,6 +6,7 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; @Deprecated //use FT_Toxin instead @@ -31,7 +32,7 @@ public class FT_Poison extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.GREEN + "[Toxic Fumes]"); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("hbmfluid.Trait.Poison")); } @Override public void serializeJSON(JsonWriter writer) throws IOException { diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java index fe814219e..b7234584c 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java @@ -31,7 +31,7 @@ public class FT_Toxin extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.LIGHT_PURPLE + "[Toxin]"); + info.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("hbmfluid.Trait.Toxin")); for(ToxinEntry entry : entries) { entry.addInfo(info); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java index 516ef0e81..ef090d9d9 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java @@ -8,6 +8,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; @@ -32,7 +33,7 @@ public class FT_VentRadiation extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.YELLOW + "[Radioactive]"); + info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hbmfluid.Trait.VentRadiation")); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java index d282cea42..19e2c5369 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java @@ -2,63 +2,64 @@ package com.hbm.inventory.fluid.trait; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FluidTraitSimple { public static class FT_Gaseous extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Gaseous]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Gaseous")); } } /** gaseous at room temperature, for cryogenic hydrogen for example */ public static class FT_Gaseous_ART extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Gaseous at Room Temperature]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Gaseous_ART")); } } public static class FT_Liquid extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Liquid]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Liquid")); } } /** to viscous to be sprayed/turned into a mist */ public static class FT_Viscous extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Viscous]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Viscous")); } } public static class FT_Plasma extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.LIGHT_PURPLE + "[Plasma]"); + info.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Plasma")); } } public static class FT_Amat extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.DARK_RED + "[Antimatter]"); + info.add(EnumChatFormatting.DARK_RED + I18nUtil.resolveKey("hbmfluid.TraitSimple.Amat")); } } public static class FT_LeadContainer extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.DARK_RED + "[Requires hazardous material tank to hold]"); + info.add(EnumChatFormatting.DARK_RED + I18nUtil.resolveKey("hbmfluid.TraitSimple.LeadContainer")); } } public static class FT_Delicious extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.DARK_GREEN + "[Delicious]"); + info.add(EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKey("hbmfluid.TraitSimple.Delicious")); } } public static class FT_Leaded extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Leaded Fuel]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Leaded")); } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index 068ae49f1..37e4d6bc3 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -173,7 +173,7 @@ public class ArmorDNT extends ArmorFSBPowered { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(maxPower)); + list.add(I18nUtil.resolveKey("armor.charge",BobMathUtil.getShortNumber(getCharge(stack)),BobMathUtil.getShortNumber(maxPower))); list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java index 139df77fe..c5ab83d19 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.util.BobMathUtil; import api.hbm.energy.IBatteryItem; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -31,7 +32,7 @@ public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(maxPower)); + list.add(I18nUtil.resolveKey("armor.charge",BobMathUtil.getShortNumber(getCharge(stack)),BobMathUtil.getShortNumber(maxPower))); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/ItemArmorMod.java b/src/main/java/com/hbm/items/armor/ItemArmorMod.java index 505028648..fac21dec9 100644 --- a/src/main/java/com/hbm/items/armor/ItemArmorMod.java +++ b/src/main/java/com/hbm/items/armor/ItemArmorMod.java @@ -53,7 +53,7 @@ public class ItemArmorMod extends Item { if(boots) list.add(" " + I18nUtil.resolveKey("armorMod.boots")); } - list.add(EnumChatFormatting.DARK_PURPLE + "Slot:"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("armorMod.slot")); switch(this.type) { case ArmorModHandler.helmet_only: list.add(" " + I18nUtil.resolveKey("armorMod.type.helmet")); break; diff --git a/src/main/java/com/hbm/items/armor/ItemModAuto.java b/src/main/java/com/hbm/items/armor/ItemModAuto.java index 4dd232198..7b64bd4e6 100644 --- a/src/main/java/com/hbm/items/armor/ItemModAuto.java +++ b/src/main/java/com/hbm/items/armor/ItemModAuto.java @@ -6,6 +6,7 @@ import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; import com.hbm.potion.HbmPotion; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -21,7 +22,7 @@ public class ItemModAuto extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.BLUE + "Imported from Japsterdam."); + list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("armorMod.mod.auto")); list.add(""); super.addInformation(stack, player, list, bool); diff --git a/src/main/java/com/hbm/items/armor/ItemModBandaid.java b/src/main/java/com/hbm/items/armor/ItemModBandaid.java index c04751443..7705f9cfb 100644 --- a/src/main/java/com/hbm/items/armor/ItemModBandaid.java +++ b/src/main/java/com/hbm/items/armor/ItemModBandaid.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -18,14 +19,14 @@ public class ItemModBandaid extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.RED + "3% chance for full heal when damaged"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.bandaid")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (3% chance for full heal)"); + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.bandaid")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModBathwater.java b/src/main/java/com/hbm/items/armor/ItemModBathwater.java index c0d077197..595e381c1 100644 --- a/src/main/java/com/hbm/items/armor/ItemModBathwater.java +++ b/src/main/java/com/hbm/items/armor/ItemModBathwater.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -29,7 +30,7 @@ public class ItemModBathwater extends ItemArmorMod { if(this == ModItems.bathwater_mk2) color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.GREEN : EnumChatFormatting.YELLOW); - list.add(color + "Inflicts poison on the attacker"); + list.add(color + I18nUtil.resolveKeyArray("armorMod.mod.bathwater")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @@ -42,7 +43,7 @@ public class ItemModBathwater extends ItemArmorMod { if(this == ModItems.bathwater_mk2) color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.GREEN : EnumChatFormatting.YELLOW); - list.add(color + " " + stack.getDisplayName() + " (Poisons attackers)"); + list.add(color + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.bathwater")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModCharm.java b/src/main/java/com/hbm/items/armor/ItemModCharm.java index 2d68ff328..a8c52707c 100644 --- a/src/main/java/com/hbm/items/armor/ItemModCharm.java +++ b/src/main/java/com/hbm/items/armor/ItemModCharm.java @@ -6,6 +6,7 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -20,16 +21,15 @@ public class ItemModCharm extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.AQUA + "You feel blessed."); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("armorMod.mod.charm")); if(this == ModItems.protection_charm) { - list.add(EnumChatFormatting.AQUA + "Diverts meteors away from the player."); - list.add(EnumChatFormatting.AQUA + "Meteors no longer destroy blocks."); - list.add(EnumChatFormatting.AQUA + "Halves broadcaster damage"); + for(String s : I18nUtil.resolveKeyArray( "armorMod.mod.charm.protection")) + list.add(s); } if(this == ModItems.meteor_charm) { - list.add(EnumChatFormatting.AQUA + "Disables meteorite spawning."); - list.add(EnumChatFormatting.AQUA + "Negates broadcaster damage"); + for(String s : I18nUtil.resolveKeyArray( "armorMod.mod.charm.meteor")) + list.add(s); } super.addInformation(stack, player, list, bool); diff --git a/src/main/java/com/hbm/items/armor/ItemModCladding.java b/src/main/java/com/hbm/items/armor/ItemModCladding.java index a71b8cb28..18d1f5e24 100644 --- a/src/main/java/com/hbm/items/armor/ItemModCladding.java +++ b/src/main/java/com/hbm/items/armor/ItemModCladding.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.armor.ItemArmorMod; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -20,13 +21,13 @@ public class ItemModCladding extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + "+" + rad + " rad-resistance"); + list.add(EnumChatFormatting.YELLOW + "+" + rad + I18nUtil.resolveKeyArray("armorMod.mod.cladding")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (+" + rad + " radiation resistence)"); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (+" + rad + I18nUtil.resolveKeyArray("armorMod.mod.cladding")[1]); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModDefuser.java b/src/main/java/com/hbm/items/armor/ItemModDefuser.java index 48eb2afe9..d540f9f55 100644 --- a/src/main/java/com/hbm/items/armor/ItemModDefuser.java +++ b/src/main/java/com/hbm/items/armor/ItemModDefuser.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAICreeperSwell; import net.minecraft.entity.ai.EntityAITasks.EntityAITaskEntry; @@ -25,14 +26,14 @@ public class ItemModDefuser extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + "Defuses nearby creepers"); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.defuser")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (Defuses creepers)"); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.defuser")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModGasmask.java b/src/main/java/com/hbm/items/armor/ItemModGasmask.java index 7c8fd77f6..62b04a129 100644 --- a/src/main/java/com/hbm/items/armor/ItemModGasmask.java +++ b/src/main/java/com/hbm/items/armor/ItemModGasmask.java @@ -40,7 +40,7 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.GREEN + "Gas protection"); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("armorMod.mod.gasmask")[0]); list.add(""); super.addInformation(stack, player, list, bool); @@ -50,7 +50,7 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { List haz = getBlacklist(stack, player); if(!haz.isEmpty()) { - list.add(EnumChatFormatting.RED + "Will never protect against:"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.gasmask")[1]); for(HazardClass clazz : haz) { list.add(EnumChatFormatting.DARK_RED + " -" + I18nUtil.resolveKey(clazz.lang)); @@ -61,7 +61,7 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.GREEN + " " + stack.getDisplayName() + " (gas protection)"); + list.add(EnumChatFormatting.GREEN + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.gasmask")[2]); ArmorUtil.addGasMaskTooltip(stack, MainRegistry.proxy.me(), list, false); } diff --git a/src/main/java/com/hbm/items/armor/ItemModHealth.java b/src/main/java/com/hbm/items/armor/ItemModHealth.java index 6e757153a..5f3e59fe9 100644 --- a/src/main/java/com/hbm/items/armor/ItemModHealth.java +++ b/src/main/java/com/hbm/items/armor/ItemModHealth.java @@ -6,6 +6,7 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -27,11 +28,11 @@ public class ItemModHealth extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.RED : EnumChatFormatting.LIGHT_PURPLE); - list.add(color + "+" + (Math.round(health * 10 / 2) * 0.1) + " health"); + list.add(color + "+" + (Math.round(health * 10 / 2) * 0.1) + I18nUtil.resolveKeyArray("armorMod.mod.health")[0]); list.add(""); if(this == ModItems.black_diamond) { - list.add(EnumChatFormatting.DARK_GRAY + "Nostalgia"); + list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.health")[1]); list.add(""); } @@ -43,7 +44,7 @@ public class ItemModHealth extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.RED : EnumChatFormatting.LIGHT_PURPLE); - list.add(color + " " + stack.getDisplayName() + " (+" + (Math.round(health * 10 / 2) * 0.1) + " health)"); + list.add(color + " " + stack.getDisplayName() + " (+" + (Math.round(health * 10 / 2) * 0.1) + I18nUtil.resolveKeyArray("armorMod.mod.health")[0]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModInk.java b/src/main/java/com/hbm/items/armor/ItemModInk.java index f8604c8f2..88da55114 100644 --- a/src/main/java/com/hbm/items/armor/ItemModInk.java +++ b/src/main/java/com/hbm/items/armor/ItemModInk.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -19,15 +20,15 @@ public class ItemModInk extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + "10% chance to nullify damage"); - list.add(EnumChatFormatting.LIGHT_PURPLE + "Flowers!"); + list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Ink")[0]); + list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Ink")[1]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + " (10% chance to nullify damage)"); + list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Ink")[2]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModInsert.java b/src/main/java/com/hbm/items/armor/ItemModInsert.java index a8f114c95..ae539765d 100644 --- a/src/main/java/com/hbm/items/armor/ItemModInsert.java +++ b/src/main/java/com/hbm/items/armor/ItemModInsert.java @@ -8,6 +8,7 @@ import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -37,18 +38,18 @@ public class ItemModInsert extends ItemArmorMod { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(damageMod != 1F) - list.add(EnumChatFormatting.RED + (damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + "% damage"); + list.add(EnumChatFormatting.RED + (damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[0]); if(projectileMod != 1F) - list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - projectileMod) * 100) + "% projectile damage"); + list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - projectileMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[1]); if(explosionMod != 1F) - list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - explosionMod) * 100) + "% explosion damage"); + list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - explosionMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[2]); if(speed != 1F) - list.add(EnumChatFormatting.BLUE + "-" + Math.round((1F - speed) * 100) + "% speed"); + list.add(EnumChatFormatting.BLUE + "-" + Math.round((1F - speed) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[3]); if(this == ModItems.insert_polonium) list.add(EnumChatFormatting.DARK_RED + "+100 RAD/s"); - list.add((stack.getMaxDamage() - stack.getItemDamage()) + "/" + stack.getMaxDamage() + "HP"); + list.add((stack.getMaxDamage() - stack.getItemDamage()) + "/" + stack.getMaxDamage() + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[4]); list.add(""); super.addInformation(stack, player, list, bool); @@ -60,20 +61,20 @@ public class ItemModInsert extends ItemArmorMod { List desc = new ArrayList(); if(damageMod != 1F) - desc.add((damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + "% dmg"); + desc.add((damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[0]); if(projectileMod != 1F) - desc.add("-" + Math.round((1F - projectileMod) * 100) + "% proj"); + desc.add("-" + Math.round((1F - projectileMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[1]); if(explosionMod != 1F) - desc.add("-" + Math.round((1F - explosionMod) * 100) + "% exp"); + desc.add("-" + Math.round((1F - explosionMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[2]); if(explosionMod != 1F) - desc.add("-" + Math.round((1F - speed) * 100) + "% speed"); + desc.add("-" + Math.round((1F - speed) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[3]); if(this == ModItems.insert_polonium) desc.add("+100 RAD/s"); String join = String.join(" / ", desc); - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (" + join + " / " + (stack.getMaxDamage() - stack.getItemDamage()) + "HP)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (" + join + " / " + (stack.getMaxDamage() - stack.getItemDamage()) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[4] + ")"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModIron.java b/src/main/java/com/hbm/items/armor/ItemModIron.java index 99b7fc753..17b9aa4e8 100644 --- a/src/main/java/com/hbm/items/armor/ItemModIron.java +++ b/src/main/java/com/hbm/items/armor/ItemModIron.java @@ -5,6 +5,7 @@ import java.util.List; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -20,14 +21,14 @@ public class ItemModIron extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.WHITE + "+0.5 knockback resistance"); + list.add(EnumChatFormatting.WHITE + I18nUtil.resolveKeyArray("armorMod.mod.Iron")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + " (+0.5 knockback resistence)"); + list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Iron")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModKnife.java b/src/main/java/com/hbm/items/armor/ItemModKnife.java index 9d61d7e2e..9742a2af4 100644 --- a/src/main/java/com/hbm/items/armor/ItemModKnife.java +++ b/src/main/java/com/hbm/items/armor/ItemModKnife.java @@ -8,6 +8,7 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -29,11 +30,8 @@ public class ItemModKnife extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add(EnumChatFormatting.RED + "Pain."); - list.add(""); - list.add(EnumChatFormatting.RED + "Hurts, doesn't it?"); - + for(String s : I18nUtil.resolveKeyArray("armorMod.mod.Knife")) + list.add(EnumChatFormatting.RED + s); list.add(""); super.addInformation(stack, player, list, bool); } diff --git a/src/main/java/com/hbm/items/armor/ItemModLens.java b/src/main/java/com/hbm/items/armor/ItemModLens.java index a9df9cfff..68e27a3a4 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLens.java +++ b/src/main/java/com/hbm/items/armor/ItemModLens.java @@ -11,6 +11,7 @@ import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteScanner; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -30,7 +31,7 @@ public class ItemModLens extends ItemArmorMod implements ISatChip { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.AQUA + "Satellite Frequency: " + this.getFreq(itemstack)); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("armorMod.mod.Lens")[0] + this.getFreq(itemstack)); list.add(""); super.addInformation(itemstack, player, list, bool); @@ -38,7 +39,7 @@ public class ItemModLens extends ItemArmorMod implements ISatChip { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.AQUA + " " + stack.getDisplayName() + " (Freq: " + getFreq(stack) + ")"); + list.add(EnumChatFormatting.AQUA + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Lens",getFreq(stack))[1] ); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModLodestone.java b/src/main/java/com/hbm/items/armor/ItemModLodestone.java index 9939244b7..ae7c4039a 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLodestone.java +++ b/src/main/java/com/hbm/items/armor/ItemModLodestone.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -23,15 +24,15 @@ public class ItemModLodestone extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.DARK_GRAY + "Attracts nearby items"); - list.add(EnumChatFormatting.DARK_GRAY + "Item attraction range: " + range); + list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.Lodestone")[0]); + list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.Lodestone",range)[1]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + " (Magnetic range: " + range + ")"); + list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Lodestone",range)[2] ); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModMilk.java b/src/main/java/com/hbm/items/armor/ItemModMilk.java index 1985c6b17..455d449b8 100644 --- a/src/main/java/com/hbm/items/armor/ItemModMilk.java +++ b/src/main/java/com/hbm/items/armor/ItemModMilk.java @@ -8,6 +8,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.potion.HbmPotion; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -24,14 +25,14 @@ public class ItemModMilk extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.WHITE + "Removes bad potion effects"); + list.add(EnumChatFormatting.WHITE + I18nUtil.resolveKeyArray("armorMod.mod.Milk")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + " (Removes bad potion effects)"); + list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Milk")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java b/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java index b33bbfa30..625db4ef3 100644 --- a/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java +++ b/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -21,14 +22,14 @@ public class ItemModMorningGlory extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + "5% chance to apply resistance when hit, wither immunity"); + list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.MorningGlory")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + " (5% for resistance, wither immunity)"); + list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.MorningGlory")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModObsidian.java b/src/main/java/com/hbm/items/armor/ItemModObsidian.java index 2227c1dd1..16b5726a8 100644 --- a/src/main/java/com/hbm/items/armor/ItemModObsidian.java +++ b/src/main/java/com/hbm/items/armor/ItemModObsidian.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -16,13 +17,13 @@ public class ItemModObsidian extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.DARK_PURPLE + "Makes dropped armor indestructible"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Obsidian")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Item indestructible)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Obsidian")[1]); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModPads.java b/src/main/java/com/hbm/items/armor/ItemModPads.java index 9e7d62556..39234d5d2 100644 --- a/src/main/java/com/hbm/items/armor/ItemModPads.java +++ b/src/main/java/com/hbm/items/armor/ItemModPads.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -25,10 +26,10 @@ public class ItemModPads extends ItemArmorMod { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(damageMod != 1F) - list.add(EnumChatFormatting.RED + "-" + Math.round((1F - damageMod) * 100) + "% fall damage"); + list.add(EnumChatFormatting.RED + "-" + Math.round((1F - damageMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[0]); if(this == ModItems.pads_static) - list.add(EnumChatFormatting.DARK_PURPLE + "Passively charges electric armor when walking"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[1]); list.add(""); super.addInformation(itemstack, player, list, bool); @@ -38,9 +39,9 @@ public class ItemModPads extends ItemArmorMod { public void addDesc(List list, ItemStack stack, ItemStack armor) { if(this == ModItems.pads_static) - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + "% fall dmg / passive charge)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[2]); else - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + "% fall dmg)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[0]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModPolish.java b/src/main/java/com/hbm/items/armor/ItemModPolish.java index b35e13480..96c803442 100644 --- a/src/main/java/com/hbm/items/armor/ItemModPolish.java +++ b/src/main/java/com/hbm/items/armor/ItemModPolish.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -18,14 +19,14 @@ public class ItemModPolish extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.BLUE + "5% chance to nullify damage"); + list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("armorMod.mod.Polish")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + " (5% chance to nullify damage)"); + list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Polish")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModQuartz.java b/src/main/java/com/hbm/items/armor/ItemModQuartz.java index 9179681b2..90bcf6833 100644 --- a/src/main/java/com/hbm/items/armor/ItemModQuartz.java +++ b/src/main/java/com/hbm/items/armor/ItemModQuartz.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -19,14 +20,14 @@ public class ItemModQuartz extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.DARK_GRAY + "Taking damage removes 10 RAD"); + list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.Quartz")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + " (-10 RAD when hit)"); + list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Quartz")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModRevive.java b/src/main/java/com/hbm/items/armor/ItemModRevive.java index 57519ed89..055017430 100644 --- a/src/main/java/com/hbm/items/armor/ItemModRevive.java +++ b/src/main/java/com/hbm/items/armor/ItemModRevive.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -20,23 +21,19 @@ public class ItemModRevive extends ItemArmorMod { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.scrumpy) { - list.add(EnumChatFormatting.GOLD + "But how did you survive?"); - list.add(EnumChatFormatting.RED + "I was drunk."); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("armorMod.mod.Revive.scrumpy")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.Revive.scrumpy")[1]); } if(this == ModItems.wild_p) { - list.add(EnumChatFormatting.DARK_GRAY + "Explosive " + EnumChatFormatting.RED + "Reactive " + EnumChatFormatting.DARK_GRAY + "Plot " + EnumChatFormatting.RED + "Armor"); + list.add(I18nUtil.resolveKey("armorMod.mod.Revive.wild_p")); } if(this == ModItems.fabsols_vodka) { - list.add(EnumChatFormatting.ITALIC + "In the news:"); - list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "Man literally too angry to die."); - list.add(""); - list.add(EnumChatFormatting.ITALIC + "\"I ain't got time to die\" says local"); - list.add(EnumChatFormatting.ITALIC + "man after ripping the physical manifestation"); - list.add(EnumChatFormatting.ITALIC + "of disaster itself in half."); + for(String s : I18nUtil.resolveKeyArray("armorMod.mod.Revive.fabsols_vodka")) + list.add(EnumChatFormatting.ITALIC + s); } list.add(""); - list.add(EnumChatFormatting.GOLD + "" + (stack.getMaxDamage() - stack.getItemDamage()) + " revives left"); + list.add(EnumChatFormatting.GOLD + "" + (stack.getMaxDamage() - stack.getItemDamage()) + I18nUtil.resolveKey("armorMod.mod.Revive")); list.add(""); super.addInformation(stack, player, list, bool); } @@ -44,6 +41,6 @@ public class ItemModRevive extends ItemArmorMod { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (" + (stack.getMaxDamage() - stack.getItemDamage()) + " revives left)"); + list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (" + (stack.getMaxDamage() - stack.getItemDamage()) + I18nUtil.resolveKey("armorMod.mod.Revive") + ")"); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModSensor.java b/src/main/java/com/hbm/items/armor/ItemModSensor.java index cfdec7ff9..4ab0619d2 100644 --- a/src/main/java/com/hbm/items/armor/ItemModSensor.java +++ b/src/main/java/com/hbm/items/armor/ItemModSensor.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -22,15 +23,15 @@ public class ItemModSensor extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + "Beeps near hazardous gasses"); - list.add(EnumChatFormatting.YELLOW + "Works in the inventory or when applied to armor"); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.Sensor")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.Sensor")[1]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (Detects gasses)"); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Sensor")[2]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModSerum.java b/src/main/java/com/hbm/items/armor/ItemModSerum.java index 29988e37b..3d9d91049 100644 --- a/src/main/java/com/hbm/items/armor/ItemModSerum.java +++ b/src/main/java/com/hbm/items/armor/ItemModSerum.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -20,14 +21,14 @@ public class ItemModSerum extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.GREEN + "Cures poison and gives strength"); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("armorMod.mod.Serum")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + " (replaces poison with strength)"); + list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Serum")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModServos.java b/src/main/java/com/hbm/items/armor/ItemModServos.java index cb07d46f3..a014d2305 100644 --- a/src/main/java/com/hbm/items/armor/ItemModServos.java +++ b/src/main/java/com/hbm/items/armor/ItemModServos.java @@ -6,6 +6,7 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -26,12 +27,12 @@ public class ItemModServos extends ItemArmorMod { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste I / Damage +50%"); - list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed +25% / Jump II"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[0]); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[1]); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste III / Damage +150%"); - list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed +50% / Jump III"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[0]); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[1]); } list.add(""); @@ -46,20 +47,20 @@ public class ItemModServos extends ItemArmorMod { if(item.armorType == 1) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste I / Damage +50%)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[2]); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste III / Damage +150%)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[2]); } } if(item.armorType == 2) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed +25% / Jump II)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[3]); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed +50% / Jump III)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[3]); } } } diff --git a/src/main/java/com/hbm/items/armor/ItemModShackles.java b/src/main/java/com/hbm/items/armor/ItemModShackles.java index 306dd3c2a..aad9cfcce 100644 --- a/src/main/java/com/hbm/items/armor/ItemModShackles.java +++ b/src/main/java/com/hbm/items/armor/ItemModShackles.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -17,12 +18,12 @@ public class ItemModShackles extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.RED + "You will speak when I ask you to."); - list.add(EnumChatFormatting.RED + "You will eat when I tell you to."); - list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "You will die when I allow you to."); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[1]); + list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[2]); list.add(""); - list.add(EnumChatFormatting.GOLD + "∞ revives left"); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[3]); list.add(""); super.addInformation(stack, player, list, bool); } @@ -30,6 +31,6 @@ public class ItemModShackles extends ItemArmorMod { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (∞ revives left)"); + list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[4]); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModTesla.java b/src/main/java/com/hbm/items/armor/ItemModTesla.java index b09a37770..cfddd60ea 100644 --- a/src/main/java/com/hbm/items/armor/ItemModTesla.java +++ b/src/main/java/com/hbm/items/armor/ItemModTesla.java @@ -7,6 +7,7 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.render.model.ModelBackTesla; import com.hbm.tileentity.machine.TileEntityTesla; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; @@ -30,14 +31,14 @@ public class ItemModTesla extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + "Zaps nearby entities (requires full electric set)"); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.Tesla")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @SideOnly(Side.CLIENT) public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + stack.getDisplayName() + " (zaps nearby entities)"); + list.add(EnumChatFormatting.YELLOW + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Tesla")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModTwoKick.java b/src/main/java/com/hbm/items/armor/ItemModTwoKick.java index a93ab9574..f647e509f 100644 --- a/src/main/java/com/hbm/items/armor/ItemModTwoKick.java +++ b/src/main/java/com/hbm/items/armor/ItemModTwoKick.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -17,14 +18,14 @@ public class ItemModTwoKick extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.ITALIC + "\"I've had worse\""); - list.add(EnumChatFormatting.YELLOW + "Punches fire 12 gauge shells"); + list.add(EnumChatFormatting.ITALIC + I18nUtil.resolveKeyArray("armorMod.mod.TwoKick")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.TwoKick")[1]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (Shotgun punches)"); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.TwoKick")[2]); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModV1.java b/src/main/java/com/hbm/items/armor/ItemModV1.java index bb5d8a3a6..e7e67f8d3 100644 --- a/src/main/java/com/hbm/items/armor/ItemModV1.java +++ b/src/main/java/com/hbm/items/armor/ItemModV1.java @@ -7,6 +7,7 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.interfaces.IArmorModDash; +import com.hbm.util.I18nUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -31,14 +32,14 @@ public class ItemModV1 extends ItemArmorMod implements IArmorModDash { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.RED + "BLOOD IS FUEL"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.V1")[0]); list.add(""); super.addInformation(stack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (BLOOD IS FUEL)"); + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.V1")[1]); } public int getDashes() { diff --git a/src/main/java/com/hbm/items/armor/ItemModWD40.java b/src/main/java/com/hbm/items/armor/ItemModWD40.java index b01f48217..ace751d25 100644 --- a/src/main/java/com/hbm/items/armor/ItemModWD40.java +++ b/src/main/java/com/hbm/items/armor/ItemModWD40.java @@ -6,6 +6,7 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -27,7 +28,7 @@ public class ItemModWD40 extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.BLUE : EnumChatFormatting.YELLOW); - list.add(color + "Highly reduces damage taken by armor, +2 HP"); + list.add(color + I18nUtil.resolveKeyArray("armorMod.mod.WD40")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @@ -37,7 +38,7 @@ public class ItemModWD40 extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.BLUE : EnumChatFormatting.YELLOW); - list.add(color + " " + stack.getDisplayName() + " (-80% armor wear / +2 HP)"); + list.add(color + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.WD40")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/JetpackBase.java b/src/main/java/com/hbm/items/armor/JetpackBase.java index e5701e3d8..ff96db4cc 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBase.java +++ b/src/main/java/com/hbm/items/armor/JetpackBase.java @@ -8,6 +8,7 @@ import com.hbm.render.model.ModelJetPack; import com.hbm.util.ArmorUtil; import api.hbm.fluid.IFillableItem; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; @@ -40,7 +41,7 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem list.add(EnumChatFormatting.LIGHT_PURPLE + fuel.getLocalizedName() + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); list.add(""); super.addInformation(itemstack, player, list, bool); - list.add(EnumChatFormatting.GOLD + "Can be worn on its own!"); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("item.jetpack.desc")); } @Override diff --git a/src/main/java/com/hbm/items/armor/JetpackBooster.java b/src/main/java/com/hbm/items/armor/JetpackBooster.java index 09b90947b..a7a0084ec 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBooster.java +++ b/src/main/java/com/hbm/items/armor/JetpackBooster.java @@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -14,6 +15,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -67,9 +69,8 @@ public class JetpackBooster extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - - list.add("High-powered vectorized jetpack."); - list.add("Highly increased fuel consumption."); + for(String s : I18nUtil.resolveKeyArray("item.jetpack_boost.desc")) + list.add(s); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackBreak.java b/src/main/java/com/hbm/items/armor/JetpackBreak.java index 340fd2f09..92da43169 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBreak.java +++ b/src/main/java/com/hbm/items/armor/JetpackBreak.java @@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -77,9 +78,8 @@ public class JetpackBreak extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add("Regular jetpack that will automatically hover mid-air."); - list.add("Sneaking will stop hover mode."); - list.add("Hover mode will consume less fuel and increase air-mobility."); + for(String s : I18nUtil.resolveKeyArray("item.jetpack_break.desc")) + list.add(s); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackRegular.java b/src/main/java/com/hbm/items/armor/JetpackRegular.java index cbf04933b..5c3da193b 100644 --- a/src/main/java/com/hbm/items/armor/JetpackRegular.java +++ b/src/main/java/com/hbm/items/armor/JetpackRegular.java @@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -56,7 +57,7 @@ public class JetpackRegular extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add("Regular jetpack for simple upwards momentum."); + list.add(I18nUtil.resolveKey("item.jetpack_fly.desc")); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackVectorized.java b/src/main/java/com/hbm/items/armor/JetpackVectorized.java index d95312f80..d878a4d6d 100644 --- a/src/main/java/com/hbm/items/armor/JetpackVectorized.java +++ b/src/main/java/com/hbm/items/armor/JetpackVectorized.java @@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -68,8 +69,8 @@ public class JetpackVectorized extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add("High-mobility jetpack."); - list.add("Higher fuel consumption."); + for(String s : I18nUtil.resolveKeyArray("item.jetpack_vector.desc")) + list.add(s); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java b/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java index 4ded08d51..a278ad15d 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java +++ b/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java @@ -2,6 +2,7 @@ package com.hbm.items.block; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -25,6 +26,6 @@ public class ItemBlockBlastInfo extends ItemBlockBase { if(block == null) return; - list.add(EnumChatFormatting.GOLD + "Blast Resistance: " + block.getExplosionResistance(null)); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("desc.block.blastinfo", block.getExplosionResistance(null))); } } diff --git a/src/main/java/com/hbm/items/block/ItemBlockLore.java b/src/main/java/com/hbm/items/block/ItemBlockLore.java index 6d26836e0..24d86b52c 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockLore.java +++ b/src/main/java/com/hbm/items/block/ItemBlockLore.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.RedBarrel; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; @@ -21,35 +22,21 @@ public class ItemBlockLore extends ItemBlockBase { super.addInformation(itemstack, player, list, bool); if(this.field_150939_a instanceof RedBarrel) { - list.add("Static fluid barrel"); + list.add(I18nUtil.resolveKey("tile.red_barrel.desc")); } if(this.field_150939_a == ModBlocks.meteor_battery) { - list.add("Provides infinite charge to tesla coils"); + list.add(I18nUtil.resolveKey("tile.meteor_battery.desc")); } if(this.field_150939_a == ModBlocks.ore_oil) { - list.add("You weren't supposed to mine that."); - list.add("Come on, get a derrick you doofus."); + for(String s : I18nUtil.resolveKeyArray("tile.ore_oil.desc")) + list.add(s); } if(this.field_150939_a == ModBlocks.gravel_diamond) { - list.add("There is some kind of joke here,"); - list.add("but I can't quite tell what it is."); - list.add(""); - list.add("Update, 2020-07-04:"); - list.add("We deny any implications of a joke on"); - list.add("the basis that it was so severely unfunny"); - list.add("that people started stabbing their eyes out."); - list.add(""); - list.add("Update, 2020-17-04:"); - list.add("As it turns out, \"Diamond Gravel\" was"); - list.add("never really a thing, rendering what might"); - list.add("have been a joke as totally nonsensical."); - list.add("We apologize for getting your hopes up with"); - list.add("this non-joke that hasn't been made."); - list.add(""); - list.add("i added an item for a joke that isn't even here, what am i, stupid? can't even tell the difference between gravel and a gavel, how did i not forget how to breathe yet?"); + for(String s : I18nUtil.resolveKeyArray("tile.gravel_diamond.desc")) + list.add(s); } } diff --git a/src/main/java/com/hbm/items/block/ItemCustomMachine.java b/src/main/java/com/hbm/items/block/ItemCustomMachine.java index 61b1cf00c..b1c1199ad 100644 --- a/src/main/java/com/hbm/items/block/ItemCustomMachine.java +++ b/src/main/java/com/hbm/items/block/ItemCustomMachine.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.config.CustomMachineConfigJSON; import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -37,7 +38,7 @@ public class ItemCustomMachine extends ItemBlock { MachineConfiguration conf = CustomMachineConfigJSON.niceList.get(id); if(conf != null) { - return conf.localizedName; + return (I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name").startsWith("tile.cm_")) ? conf.localizedName : I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name"); } } diff --git a/src/main/java/com/hbm/items/bomb/ItemFleija.java b/src/main/java/com/hbm/items/bomb/ItemFleija.java index d9424f67e..0ef739264 100644 --- a/src/main/java/com/hbm/items/bomb/ItemFleija.java +++ b/src/main/java/com/hbm/items/bomb/ItemFleija.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; @@ -14,8 +15,8 @@ public class ItemFleija extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Used in:"); - list.add("F.L.E.I.J.A."); + for(String s : I18nUtil.resolveKeyArray( "tile.nuke_fleija.desc")) + list.add(s); super.addInformation(itemstack, player, list, bool); } diff --git a/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java b/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java index edbcbc693..707be6ba1 100644 --- a/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java +++ b/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java @@ -2,6 +2,7 @@ package com.hbm.items.bomb; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -10,12 +11,7 @@ public class ItemMissileShuttle extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Tonite, on bo''om gear:"); - list.add("James huffs leaded gasoline and"); - list.add("goes insane, Richard spends the"); - list.add("entire budget on a broken .PNG,"); - list.add("And I forget to set the infinite"); - list.add("Water tanks on our RBMK to flow"); - list.add("out, blowing up our entire base"); + for(String s : I18nUtil.resolveKeyArray( "item.missile_shuttle.desc")) + list.add(s); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/items/bomb/ItemN2.java b/src/main/java/com/hbm/items/bomb/ItemN2.java index c837fee78..f1a5ce766 100644 --- a/src/main/java/com/hbm/items/bomb/ItemN2.java +++ b/src/main/java/com/hbm/items/bomb/ItemN2.java @@ -2,17 +2,19 @@ package com.hbm.items.bomb; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; public class ItemN2 extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Used in:"); - list.add("N² Mine"); + for(String s : I18nUtil.resolveKeyArray( "tile.nuke_n2.desc")) + list.add(s); } } diff --git a/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java b/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java index 6335866f3..53a79c575 100644 --- a/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java +++ b/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java @@ -2,6 +2,7 @@ package com.hbm.items.bomb; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; @@ -16,10 +17,8 @@ public class ItemPrototypeBlock extends ItemBlock { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("It didn't have to be like this."); - list.add(""); - list.add("You monster."); - + for(String s : I18nUtil.resolveKeyArray( "tile.nuke_prototype.desc")) + list.add(s); /*list.add("In memory of Euphemia."); list.add(""); list.add("Rest in spaghetti, never forgetti.");*/ diff --git a/src/main/java/com/hbm/items/bomb/ItemSolinium.java b/src/main/java/com/hbm/items/bomb/ItemSolinium.java index a04321ecb..01776fa26 100644 --- a/src/main/java/com/hbm/items/bomb/ItemSolinium.java +++ b/src/main/java/com/hbm/items/bomb/ItemSolinium.java @@ -2,6 +2,7 @@ package com.hbm.items.bomb; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -11,8 +12,8 @@ public class ItemSolinium extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Used in:"); - list.add("Solinium Bomb"); + for(String s : I18nUtil.resolveKeyArray( "tile.nuke_solinium.desc")) + list.add(s); super.addInformation(itemstack, player, list, bool); } } diff --git a/src/main/java/com/hbm/items/food/ItemLemon.java b/src/main/java/com/hbm/items/food/ItemLemon.java index 25bb74a9e..b2d332c51 100644 --- a/src/main/java/com/hbm/items/food/ItemLemon.java +++ b/src/main/java/com/hbm/items/food/ItemLemon.java @@ -6,6 +6,7 @@ import com.hbm.items.ModItems; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; @@ -30,72 +31,57 @@ public class ItemLemon extends ItemFood { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.lemon) { - list.add("Eh, good enough."); + list.add(I18nUtil.resolveKey("item.lemon.desc")); } if(this == ModItems.definitelyfood) { - list.add("A'right, I got sick and tired of"); - list.add("having to go out, kill things just"); - list.add("to get food and not die, so here is "); - list.add("my absolutely genius solution:"); - list.add(""); - list.add("Have some edible dirt."); + for(String s : I18nUtil.resolveKeyArray("item.definitelyfood.desc")) + list.add(s); } if(this == ModItems.med_ipecac) { - list.add("Bitter juice that will cause your stomach"); - list.add("to forcefully eject its contents."); + for(String s : I18nUtil.resolveKeyArray("item.med_ipecac.desc")) + list.add(s); } if(this == ModItems.med_ptsd) { - list.add("This isn't even PTSD mediaction, it's just"); - list.add("Ipecac in a different bottle!"); + for(String s : I18nUtil.resolveKeyArray("item.med_ptsd.desc")) + list.add(s); } if(this == ModItems.med_schizophrenia) { - list.add("Makes the voices go away. Just for a while."); - list.add(""); - list.add("..."); - list.add("Better not take it."); - } - - if(this == ModItems.med_schizophrenia) { - list.add("Makes the voices go away. Just for a while."); - list.add(""); - list.add("..."); - list.add("Better not take it."); + for(String s : I18nUtil.resolveKeyArray("item.med_schiziphrenia.desc")) + list.add(s); } if(this == ModItems.loops) { - list.add("Brøther, may I have some lööps?"); + list.add(I18nUtil.resolveKey("item.loops.desc")); } if(this == ModItems.loop_stew) { - list.add("A very, very healthy breakfast."); + list.add(I18nUtil.resolveKey("item.loop_stew.desc")); } if(this == ModItems.twinkie) { - list.add("Expired 600 years ago!"); + list.add(I18nUtil.resolveKey("item.twinkie.desc")); } if(this == ModItems.pudding) { - list.add("What if he did?"); - list.add("What if he didn't?"); - list.add("What if the world was made of pudding?"); + for(String s : I18nUtil.resolveKeyArray("item.pudding.desc")) + list.add(s); } if(this == ModItems.ingot_semtex) { - list.add("Semtex H Plastic Explosive"); - list.add("Performant explosive for many applications."); - list.add("Edible"); + for(String s : I18nUtil.resolveKeyArray("item.ingot_semtex.desc")) + list.add(s); } if(this == ModItems.peas) { - list.add("He accepts your offering."); + list.add(I18nUtil.resolveKey("item.peas.desc")); } if(this == ModItems.quesadilla) { - list.add("That's what a 50 year old yeast infection does to you."); + list.add(I18nUtil.resolveKey("item.cheese_quesadilla.desc")); } } diff --git a/src/main/java/com/hbm/items/food/ItemTemFlakes.java b/src/main/java/com/hbm/items/food/ItemTemFlakes.java index d6eee715b..b0435244d 100644 --- a/src/main/java/com/hbm/items/food/ItemTemFlakes.java +++ b/src/main/java/com/hbm/items/food/ItemTemFlakes.java @@ -2,6 +2,7 @@ package com.hbm.items.food; import java.util.List; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.creativetab.CreativeTabs; @@ -39,15 +40,15 @@ public class ItemTemFlakes extends ItemFood { { if(itemstack.getItemDamage() == 0) { - list.add("Heals 2HP DISCOUNT FOOD OF TEM!!!"); + list.add(I18nUtil.resolveKeyArray("item.tem_flakes.desc")[0]); } if(itemstack.getItemDamage() == 1) { - list.add("Heals 2HP food of tem"); + list.add(I18nUtil.resolveKeyArray("item.tem_flakes.desc")[1]); } if(itemstack.getItemDamage() == 2) { - list.add("Heals food of tem (expensiv)"); + list.add(I18nUtil.resolveKeyArray("item.tem_flakes.desc")[2]); } } diff --git a/src/main/java/com/hbm/items/machine/ItemBattery.java b/src/main/java/com/hbm/items/machine/ItemBattery.java index 4f0fda9a7..3de7fd67b 100644 --- a/src/main/java/com/hbm/items/machine/ItemBattery.java +++ b/src/main/java/com/hbm/items/machine/ItemBattery.java @@ -6,6 +6,7 @@ import com.hbm.items.ModItems; import com.hbm.util.BobMathUtil; import api.hbm.energy.IBatteryItem; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.creativetab.CreativeTabs; @@ -34,14 +35,14 @@ public class ItemBattery extends Item implements IBatteryItem { charge = getCharge(itemstack); if(itemstack.getItem() != ModItems.fusion_core && itemstack.getItem() != ModItems.energy_core) { - list.add("Energy stored: " + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE"); + list.add(I18nUtil.resolveKey("desc.item.battery.charge",BobMathUtil.getShortNumber(charge),BobMathUtil.getShortNumber(maxCharge))); } else { String charge1 = BobMathUtil.getShortNumber((charge * 100) / this.maxCharge); - list.add("Charge: " + charge1 + "%"); + list.add(I18nUtil.resolveKey("desc.item.battery.chargePerc", charge1)); list.add("(" + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE)"); } - list.add("Charge rate: " + BobMathUtil.getShortNumber(chargeRate) + "HE/t"); - list.add("Discharge rate: " + BobMathUtil.getShortNumber(dischargeRate) + "HE/t"); + list.add(I18nUtil.resolveKey("desc.item.battery.chargeRate",BobMathUtil.getShortNumber(chargeRate))); + list.add(I18nUtil.resolveKey("desc.item.battery.dischargeRate",BobMathUtil.getShortNumber(dischargeRate))); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java index 1a04a4649..5fb6e7a76 100644 --- a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java +++ b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -33,132 +34,131 @@ public class ItemMachineUpgrade extends Item { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this.type == UpgradeType.SPEED) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Delay -" + (15 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Laser Miner:"); - list.add("Delay ÷" + (1 + this.tier) + " / Consumption +" + (625 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Electric Furnace:"); - list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (50 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Assembly Machine:"); - list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Chemical Plant:"); - list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Oil Wells:"); - list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (25 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Crystallizer:"); - list.add("Delay -" + (20 * this.tier) + "% / Consumption +" + (1000 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Cyclotron:"); - list.add("Speed x" + (1 + this.tier)); - list.add(EnumChatFormatting.RED + "Flare Stack:"); - list.add("Speed x" + (1 + this.tier)); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Damage +" + (0.25 * (double)this.tier) + "dmg/t"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(15 * this.tier),(300 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[1]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","",(1 + this.tier),(625 * this.tier),"","","","")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[2]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(25 * this.tier),(50 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[3]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(25 * this.tier),(300 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[4]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(25 * this.tier),(300 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[5]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","",(25 * this.tier),(25 * this.tier),"","")[2]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[6]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(20 * this.tier),(1000 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[7]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","","","",(1 + this.tier),"")[3]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[8]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","","","",(1 + this.tier),"")[3]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","","","","",(0.25 * (double)this.tier))[4]); } if(this.type == UpgradeType.EFFECT) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Radius +" + this.tier + "m / Consumption +" + (80 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Crystallizer:"); - list.add("+" + (5 * this.tier) + "% chance of not consuming an item / Acid consumption +" + (1000 * this.tier) + "mB"); - list.add(EnumChatFormatting.RED + "Cyclotron:"); - list.add("-" + (100 - 100 / (this.tier + 1)) + "% chance of incrementing overheat counter"); - list.add(EnumChatFormatting.RED + "Flare Stack:"); - list.add("+" + (100 * this.tier / 3) + "% power production"); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Range +" + (3 * this.tier) + "m"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect",this.tier,(80 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[6]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","",(5 * this.tier),(1000 * this.tier),"","","")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[7]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","","","",(100 - 100 / (this.tier + 1)),"","")[2]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[8]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","","","","",(100 * this.tier / 3),"")[3]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","","","","","",(3 * this.tier))[4]); } if(this.type == UpgradeType.POWER) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Electric Furnace:"); - list.add("Consumption -" + (15 * this.tier) + "HE/t / Delay +" + (10 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Assembly Machine:"); - list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Chemical Plant:"); - list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Oil Wells:"); - list.add("Consumption -" + (25 * this.tier) + "% / Delay +" + (10 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Cyclotron:"); - list.add("Consumption -" + (100 * this.tier) + "kHE/t"); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Consumption -" + (150 * this.tier) + "HE/t"); - list.add("Consumption when firing -" + (1500 * this.tier) + "HE/t"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(30 * this.tier),(5 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[2]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(15 * this.tier),(10 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[3]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(30 * this.tier),(5 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[4]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(30 * this.tier),(5 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[5]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","",(25 * this.tier),(10 * this.tier),"","","")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[7]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","","","",(100 * this.tier),"","")[2]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","","","","",(150 * this.tier),"")[3]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","","","","","",(1500 * this.tier))[4]); } if(this == ModItems.upgrade_fortune_1) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Fortune +1 / Delay +15"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.fortune","1","15")); } if(this == ModItems.upgrade_fortune_2) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Fortune +2 / Delay +30"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.fortune","2","30")); } if(this == ModItems.upgrade_fortune_3) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Fortune +3 / Delay +45"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.fortune","3","45")); } if(this.type == UpgradeType.AFTERBURN) { - list.add(EnumChatFormatting.RED + "Turbofan:"); - list.add("Production x" + (this.tier + 1) + " / Consumption x" + (this.tier + 2)); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Afterburn +" + (this.tier * 3) + "s"); - list.add(EnumChatFormatting.RED + "Oil Wells:"); - list.add("Burn " + (this.tier * 10) + "mB of gas for " + (this.tier * 50) + "HE/t"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[10]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.afterburn",(this.tier + 1),(this.tier + 2),"","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.afterburn","","",(this.tier * 3),"","")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[5]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.afterburn","","","",(this.tier * 10),(this.tier * 50))[2]); } if(this == ModItems.upgrade_radius) { - list.add(EnumChatFormatting.RED + "Forcefield Range Upgrade"); - list.add("Radius +16 / Consumption +500"); - list.add("Stacks to 16"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[11]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield","16","500")[0]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield")[2]); } if(this == ModItems.upgrade_health) { - list.add(EnumChatFormatting.RED + "Forcefield Health Upgrade"); - list.add("Max. Health +50 / Consumption +250"); - list.add("Stacks to 16"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[12]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield","50","250")[1]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield")[2]); } if(this == ModItems.upgrade_smelter) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("Smelts blocks. Easy enough."); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.smelter")); } if(this == ModItems.upgrade_shredder) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("Crunches ores"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.shredder")); } if(this == ModItems.upgrade_centrifuge) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("Hopefully self-explanatory"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.centrifuge")); } if(this == ModItems.upgrade_crystallizer) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("Your new best friend"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.crystallizer")); } if(this == ModItems.upgrade_screm) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("It's like in Super Mario where all blocks are"); - list.add("actually Toads, but here it's Half-Life scientists"); - list.add("and they scream. A lot."); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + for(String s : I18nUtil.resolveKeyArray("desc.item.upgrade.screm")) + list.add(s); } if(this == ModItems.upgrade_nullifier) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("50% chance to override worthless items with /dev/zero"); - list.add("50% chance to move worthless items to /dev/null"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + for(String s : I18nUtil.resolveKeyArray("desc.item.upgrade.nullifier")) + list.add(s); } if(this == ModItems.upgrade_gc_speed) { - list.add(EnumChatFormatting.RED + "Gas Centrifuge Upgrade"); - list.add("Allows for total isotopic separation of HEUF6"); - list.add(EnumChatFormatting.YELLOW + "also your centrifuge goes sicko mode"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[14]); + for(String s : I18nUtil.resolveKeyArray("desc.item.upgrade.gc_speed")) + list.add(s); } } diff --git a/src/main/java/com/hbm/items/machine/ItemPWRFuel.java b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java index db802776a..70bd64d81 100644 --- a/src/main/java/com/hbm/items/machine/ItemPWRFuel.java +++ b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.items.ItemEnumMulti; import com.hbm.util.EnumUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.function.Function; import com.hbm.util.function.Function.FunctionLogarithmic; import com.hbm.util.function.Function.FunctionSqrt; @@ -55,10 +56,7 @@ public class ItemPWRFuel extends ItemEnumMulti { EnumPWRFuel num = EnumUtil.grabEnumSafely(EnumPWRFuel.class, stack.getItemDamage()); String color = EnumChatFormatting.GOLD + ""; - String reset = EnumChatFormatting.RESET + ""; - - list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); - list.add(color + "Reacton function: " + reset + num.function.getLabelForFuel()); - list.add(color + "Fuel type: " + reset + num.function.getDangerFromFuel()); + for(String s : I18nUtil.resolveKeyArray("trait.pwr_fuel" , num.heatEmission, num.function.getLabelForFuel(), num.function.getDangerFromFuel())) + list.add(color + s); } } diff --git a/src/main/java/com/hbm/items/machine/ItemPlateFuel.java b/src/main/java/com/hbm/items/machine/ItemPlateFuel.java index f30978de9..6f76853b2 100644 --- a/src/main/java/com/hbm/items/machine/ItemPlateFuel.java +++ b/src/main/java/com/hbm/items/machine/ItemPlateFuel.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -27,10 +28,8 @@ public class ItemPlateFuel extends ItemFuelRod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add(EnumChatFormatting.YELLOW + "[Research Reactor Plate Fuel]"); - list.add(EnumChatFormatting.DARK_AQUA + " " + getFunctionDesc()); - list.add(EnumChatFormatting.DARK_AQUA + " Yield of " + BobMathUtil.getShortNumber(lifeTime) + " events"); + for(String s : I18nUtil.resolveKeyArray("trait.platefuel", getFunctionDesc(), BobMathUtil.getShortNumber(lifeTime))) + list.add(EnumChatFormatting.YELLOW + s); super.addInformation(itemstack, player, list, bool); } diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java b/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java index e50dbcd66..09f5a359a 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.items.special.ItemNuclearWaste; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -77,20 +78,20 @@ public class ItemRBMKPellet extends ItemNuclearWaste { super.addInformation(stack, player, list, bool); list.add(EnumChatFormatting.ITALIC + this.fullName); - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "Pellet for recycling"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[0]); int meta = rectify(stack.getItemDamage()); switch(meta % 5) { - case 0: list.add(EnumChatFormatting.GOLD + "Brand New"); break; - case 1: list.add(EnumChatFormatting.YELLOW + "Barely Depleted"); break; - case 2: list.add(EnumChatFormatting.GREEN + "Moderately Depleted"); break; - case 3: list.add(EnumChatFormatting.DARK_GREEN + "Highly Depleted"); break; - case 4: list.add(EnumChatFormatting.DARK_GRAY + "Fully Depleted"); break; + case 0: list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[1]); break; + case 1: list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[2]); break; + case 2: list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[3]); break; + case 3: list.add(EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[4]); break; + case 4: list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[5]); break; } if(hasXenon(meta)) - list.add(EnumChatFormatting.DARK_PURPLE + "High Xenon Poison"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[6]); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index 960a84874..9808cf170 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -223,15 +223,15 @@ public class ItemRBMKRod extends Item { } public static enum EnumBurnFunc { - PASSIVE(EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"), //const, no reactivity - LOG_TEN(EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"), //log10(x + 1) * reactivity * 50 - PLATEU(EnumChatFormatting.GREEN + "SAFE / EULER"), //(1 - e^(-x/25)) * reactivity * 100 - ARCH(EnumChatFormatting.RED + "DANGEROUS / NEGATIVE-QUADRATIC"), //x-(x²/1000) * reactivity - SIGMOID(EnumChatFormatting.GREEN + "SAFE / SIGMOID"), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 ! - SQUARE_ROOT(EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"), //sqrt(x) * 10 * reactivity - LINEAR(EnumChatFormatting.RED + "DANGEROUS / LINEAR"), //x * reactivity - QUADRATIC(EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"), //x^2 / 100 * reactivity - EXPERIMENTAL(EnumChatFormatting.RED + "EXPERIMENTAL / SINE SLOPE"); //x * (sin(x) + 1) + PASSIVE(EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[0]), //const, no reactivity + LOG_TEN(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[1]), //log10(x + 1) * reactivity * 50 + PLATEU(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[2]), //(1 - e^(-x/25)) * reactivity * 100 + ARCH(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[3]), //x-(x²/1000) * reactivity + SIGMOID(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[4]), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 ! + SQUARE_ROOT(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[5]), //sqrt(x) * 10 * reactivity + LINEAR(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[6]), //x * reactivity + QUADRATIC(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[7]), //x^2 / 100 * reactivity + EXPERIMENTAL(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[8]); //x * (sin(x) + 1) public String title = ""; diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index be5e0ad7f..73971bb41 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -9,6 +9,7 @@ import com.hbm.main.MainRegistry; import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; import com.hbm.render.icon.TextureAtlasSpriteMutatable; import com.hbm.util.EnumUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.function.Function; import com.hbm.util.function.Function.*; @@ -127,23 +128,23 @@ public class ItemWatzPellet extends ItemEnumMulti { if(this != ModItems.watz_pellet) return; EnumWatzType num = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - - list.add(EnumChatFormatting.GREEN + "Depletion: " + String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D) + "%"); + + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.watz_pellet", String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D))); String color = EnumChatFormatting.GOLD + ""; String reset = EnumChatFormatting.RESET + ""; if(num.passive > 0){ - list.add(color + "Base fission rate: " + reset + num.passive); - list.add(EnumChatFormatting.RED + "Self-igniting!"); + list.add(color + I18nUtil.resolveKeyArray("trait.watz_pellet.passive")[0] + reset + num.passive); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.watz_pellet.passive")[1]); } - if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); + if(num.heatEmission > 0) list.add(color + I18nUtil.resolveKey("trait.watz_pellet.heatEmission") + reset + num.heatEmission + " TU"); if(num.burnFunc != null) { - list.add(color + "Reacton function: " + reset + num.burnFunc.getLabelForFuel()); - list.add(color + "Fuel type: " + reset + num.burnFunc.getDangerFromFuel()); + list.add(color + I18nUtil.resolveKeyArray("trait.watz_pellet.burnFunc")[0] + reset + num.burnFunc.getLabelForFuel()); + list.add(color + I18nUtil.resolveKeyArray("trait.watz_pellet.burnFunc")[1] + reset + num.burnFunc.getDangerFromFuel()); } - if(num.heatDiv != null) list.add(color + "Thermal multiplier: " + reset + num.heatDiv.getLabelForFuel() + " TUâ»Â¹"); - if(num.absorbFunc != null) list.add(color + "Flux capture: " + reset + num.absorbFunc.getLabelForFuel()); + if(num.heatDiv != null) list.add(color + I18nUtil.resolveKey("trait.watz_pellet.heatDiv") + reset + num.heatDiv.getLabelForFuel() + " TUâ»Â¹"); + if(num.absorbFunc != null) list.add(color + I18nUtil.resolveKey("trait.watz_pellet.absorbFunc") + reset + num.absorbFunc.getLabelForFuel()); } @Override diff --git a/src/main/java/com/hbm/items/special/ItemAMSCore.java b/src/main/java/com/hbm/items/special/ItemAMSCore.java index 6a4fb569f..68c12677f 100644 --- a/src/main/java/com/hbm/items/special/ItemAMSCore.java +++ b/src/main/java/com/hbm/items/special/ItemAMSCore.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -28,51 +29,26 @@ public class ItemAMSCore extends Item { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if (this == ModItems.ams_core_sing) { - list.add("A modified undefined state of spacetime"); - list.add("used to aid in inter-gluon fusion and"); - list.add("spacetime annihilation. Yes, this destroys"); - list.add("the universe itself, slowly but steadily,"); - list.add("but at least you can power your toaster with"); - list.add("this, so it's all good."); + for(String s : I18nUtil.resolveKeyArray("item.ams_core_sing.desc")) + list.add(s); } if (this == ModItems.ams_core_wormhole) { - list.add("A cloud of billions of nano-wormholes which"); - list.add("deliberately fail at tunneling matter from"); - list.add("another dimension, rather it converts all"); - list.add("that matter into pure energy. That means"); - list.add("you're actively contributing to the destruction"); - list.add("of another dimension, sucking it dry like a"); - list.add("juicebox."); - list.add("That dimension probably sucked, anyways. I"); - list.add("bet it was full of wasps or some crap, man,"); - list.add("I hate these things."); + for(String s : I18nUtil.resolveKeyArray("item.ams_core_wormhole.desc")) + list.add(s); } if (this == ModItems.ams_core_eyeofharmony) { - list.add("A star collapsing in on itself, mere nanoseconds"); - list.add("away from being turned into a black hole,"); - list.add("frozen in time. If I didn't know better I"); - list.add("would say this is some deep space magic"); - list.add("bullcrap some guy made up to sound intellectual."); - list.add("Probably Steve from accounting. You still owe me"); - list.add("ten bucks."); + for(String s : I18nUtil.resolveKeyArray("item.ams_core_eyeofharmony.desc")) + list.add(s); } if (this == ModItems.ams_core_thingy) { if(MainRegistry.polaroidID == 11) { - list.add("Yeah I'm not even gonna question that one."); + list.add(I18nUtil.resolveKey("item.ams_core_thingy_hide.desc")); } else { - list.add("..."); - list.add("..."); - list.add("...am I even holding this right?"); - list.add("It's a small metal thing. I dunno where it's from"); - list.add("or what it does, maybe they found it on a"); - list.add("junkyard and sold it as some kind of antique"); - list.add("artifact. If it weren't for the fact that I can"); - list.add("actually stuff this into some great big laser"); - list.add("reactor thing, I'd probably bring it back to where"); - list.add("it belongs. In the trash."); + for(String s : I18nUtil.resolveKeyArray("item.ams_core_thingy.desc")) + list.add(s); } } } diff --git a/src/main/java/com/hbm/items/special/ItemGlitch.java b/src/main/java/com/hbm/items/special/ItemGlitch.java index 9942c4754..f44dab7ec 100644 --- a/src/main/java/com/hbm/items/special/ItemGlitch.java +++ b/src/main/java/com/hbm/items/special/ItemGlitch.java @@ -13,6 +13,7 @@ import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import api.hbm.energy.IBatteryItem; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; @@ -39,10 +40,10 @@ public class ItemGlitch extends Item implements IBatteryItem { if(!world.isRemote) switch(itemRand.nextInt(31)) { case 0: - player.addChatMessage(new ChatComponentText("Sorry nothing.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[0])); break; case 1: - player.addChatMessage(new ChatComponentText("Prometheus was punished by the gods by giving the gift of knowledge to man. He was cast into the bowels of the earth and pecked by birds.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[1])); break; case 2: player.attackEntityFrom(ModDamageSource.radiation, 1000); @@ -66,7 +67,7 @@ public class ItemGlitch extends Item implements IBatteryItem { break; case 8: player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_container, 10)); - player.addChatMessage(new ChatComponentText("Oh, and by the way: The polaroid shifts reality. Things can be different if the polaroid is broken.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[2])); break; case 9: player.inventory.addItemStackToInventory(new ItemStack(ModItems.nuke_advanced_kit, 1)); @@ -94,7 +95,7 @@ public class ItemGlitch extends Item implements IBatteryItem { player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_pip)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.bottle_sparkle)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.geiger_counter)); - player.addChatMessage(new ChatComponentText("Have some free stuff. You'll need it for that one cryptic achievement.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[3])); break; case 14: player.inventory.dropAllItems(); @@ -105,43 +106,43 @@ public class ItemGlitch extends Item implements IBatteryItem { player.inventory.addItemStackToInventory(new ItemStack(Blocks.dirt, 64)); break; case 16: - player.addChatMessage(new ChatComponentText("v yvxr lbhe nggvghqr!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[4])); break; case 17: - player.addChatMessage(new ChatComponentText("89% of magic tricks are not magic. Technically, they are sorcery.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[5])); break; case 18: player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_lever_action)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge, 12)); - player.addChatMessage(new ChatComponentText("Here ya go.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[6])); break; case 19: - player.addChatMessage(new ChatComponentText("Ë")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[7])); break; case 20: - player.addChatMessage(new ChatComponentText("Good day, I am text")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[8])); break; case 21: player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_nuclear)); - player.addChatMessage(new ChatComponentText("73616d706c652074657874!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[9])); break; case 22: - player.addChatMessage(new ChatComponentText("Budget cuts, no effect for you.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[10])); break; case 23: - player.addChatMessage(new ChatComponentText("oof")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[11])); break; case 24: player.addPotionEffect(new PotionEffect(Potion.resistance.id, 60 * 20, 9)); - player.addChatMessage(new ChatComponentText("Tank!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[12])); break; case 25: player.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 60 * 20, 9)); - player.addChatMessage(new ChatComponentText("More devastating than a falling boxcar!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[13])); break; case 26: player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 60 * 20, 9)); - player.addChatMessage(new ChatComponentText("Ha!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[14])); break; case 27: EntityVortex vortex = new EntityVortex(world, 2.5F); @@ -156,15 +157,15 @@ public class ItemGlitch extends Item implements IBatteryItem { mirv.posY = player.posY + 100; mirv.posZ = player.posZ; world.spawnEntityInWorld(mirv); - player.addChatMessage(new ChatComponentText("Watch your head!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[15])); break; case 29: ExplosionLarge.spawnBurst(world, player.posX, player.posY, player.posZ, 27, 3); - player.addChatMessage(new ChatComponentText("Bam!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[16])); break; case 30: player.inventory.addItemStackToInventory(new ItemStack(ModItems.plate_saturnite)); - player.addChatMessage(new ChatComponentText("It's dangerous to go alone, take this!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[17])); break; } @@ -176,62 +177,62 @@ public class ItemGlitch extends Item implements IBatteryItem { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("It's a gamble!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[0]); list.add(""); switch(MainRegistry.polaroidID) { case 1: - list.add("Click-click-click!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[1]); break; case 2: - list.add("Creek!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[2]); break; case 3: - list.add("Bzzzt!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[3]); break; case 4: - list.add("TS staring off into space."); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[4]); break; case 5: - list.add("BANG!!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[5]); break; case 6: - list.add("Woop!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[6]); break; case 7: - list.add("Poow!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[7]); break; case 8: - list.add("Pft!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[8]); break; case 9: - list.add("GF fgnevat bss vagb fcnpr."); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[9]); break; case 10: - list.add("Backup memory #8 on 1.44 million bytes."); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[10]); break; case 11: - list.add("PTANG!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[11]); break; case 12: - list.add("Bzzt-zrrt!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[12]); break; case 13: - list.add("Clang, click-brrthththrtrtrtrtrtr!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[13]); break; case 14: - list.add("KABLAM!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[14]); break; case 15: - list.add("PLENG!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[15]); break; case 16: - list.add("Wheeeeeeee-"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[16]); break; case 17: - list.add("Thump."); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[17]); break; case 18: - list.add("BANG! Choo-chooo! B A N G ! ! !"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[18]); break; } } diff --git a/src/main/java/com/hbm/items/special/ItemRag.java b/src/main/java/com/hbm/items/special/ItemRag.java index bb883f6eb..f94b5ba49 100644 --- a/src/main/java/com/hbm/items/special/ItemRag.java +++ b/src/main/java/com/hbm/items/special/ItemRag.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -39,7 +40,7 @@ public class ItemRag extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Drop into water to make damp cloth."); - list.add("Right-click to urinate on the cloth."); + for(String s : I18nUtil.resolveKeyArray("item.rag.desc")) + list.add(s); } } diff --git a/src/main/java/com/hbm/items/special/ItemSoyuz.java b/src/main/java/com/hbm/items/special/ItemSoyuz.java index 7644a0880..adfe591cd 100644 --- a/src/main/java/com/hbm/items/special/ItemSoyuz.java +++ b/src/main/java/com/hbm/items/special/ItemSoyuz.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -50,12 +51,12 @@ public class ItemSoyuz extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add("Skin:"); + list.add(I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[0]); switch(stack.getItemDamage()) { - case 0: list.add(EnumChatFormatting.GOLD + "Original"); break; - case 1: list.add(EnumChatFormatting.BLUE + "Luna Space Center"); break; - case 2: list.add(EnumChatFormatting.GREEN + "Post War"); break; + case 0: list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[1]); break; + case 1: list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[2]); break; + case 2: list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[3]); break; } } diff --git a/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java b/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java index 9fb384f23..927ae5165 100644 --- a/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java +++ b/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java @@ -7,6 +7,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -27,14 +28,14 @@ public class ItemAnchorRemote extends ItemBattery { charge = getCharge(itemstack); if(itemstack.getItem() != ModItems.fusion_core && itemstack.getItem() != ModItems.energy_core) { - list.add("Energy stored: " + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE"); + list.add(I18nUtil.resolveKey("desc.item.battery.charge",BobMathUtil.getShortNumber(charge),BobMathUtil.getShortNumber(maxCharge))); } else { String charge1 = BobMathUtil.getShortNumber((charge * 100) / this.maxCharge); - list.add("Charge: " + charge1 + "%"); + list.add(I18nUtil.resolveKey("desc.item.battery.chargePerc", charge1)); list.add("(" + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE)"); } - list.add("Charge rate: " + BobMathUtil.getShortNumber(chargeRate) + "HE/t"); + list.add(I18nUtil.resolveKey("desc.item.battery.chargeRate",BobMathUtil.getShortNumber(chargeRate))); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemCMStructure.java b/src/main/java/com/hbm/items/tool/ItemCMStructure.java index 6c46decee..415076832 100644 --- a/src/main/java/com/hbm/items/tool/ItemCMStructure.java +++ b/src/main/java/com/hbm/items/tool/ItemCMStructure.java @@ -7,6 +7,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; @@ -156,10 +157,8 @@ public class ItemCMStructure extends Item implements ILookOverlay { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { super.addInformation(stack, player, list, ext); - list.add(EnumChatFormatting.YELLOW + "Click Custom Machine Structure Positioning Anchor to"); - list.add(EnumChatFormatting.YELLOW + "Confirm the location of the custom machine core block."); - list.add(EnumChatFormatting.YELLOW + "Output all blocks between Position1 and Position2 with"); - list.add(EnumChatFormatting.YELLOW + "metadata to \"CMstructureOutput.txt\" in hbmConfig."); + for(String s : I18nUtil.resolveKeyArray("item.structure_custommachine.desc")) + list.add(EnumChatFormatting.YELLOW + s); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemDetonator.java b/src/main/java/com/hbm/items/tool/ItemDetonator.java index 201f60c5a..c34742f75 100644 --- a/src/main/java/com/hbm/items/tool/ItemDetonator.java +++ b/src/main/java/com/hbm/items/tool/ItemDetonator.java @@ -2,6 +2,7 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.util.I18nUtil; import org.apache.logging.log4j.Level; import com.hbm.config.GeneralConfig; @@ -21,12 +22,12 @@ public class ItemDetonator extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Shift right-click to set position,"); - list.add("right-click to detonate!"); + for(String s : I18nUtil.resolveKeyArray("item.detonator.desc")) + list.add(s); if(itemstack.getTagCompound() == null) { - list.add(EnumChatFormatting.RED + "No position set!"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("item.detonator.pos.desc")[0]); } else { - list.add(EnumChatFormatting.YELLOW + "Linked to " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z")); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("item.detonator.pos.desc" , itemstack.stackTagCompound.getInteger("x") , itemstack.stackTagCompound.getInteger("y") , itemstack.stackTagCompound.getInteger("z"))[1]); } } @@ -45,7 +46,7 @@ public class ItemDetonator extends Item { player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) .next("] ").color(EnumChatFormatting.DARK_AQUA) - .next("Position set!").color(EnumChatFormatting.GREEN).flush()); + .next(I18nUtil.resolveKeyArray("desc.item.detonator")[0]).color(EnumChatFormatting.GREEN).flush()); } world.playSoundAtEntity(player, "hbm:item.techBoop", 2.0F, 1.0F); @@ -64,7 +65,7 @@ public class ItemDetonator extends Item { player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) .next("] ").color(EnumChatFormatting.DARK_AQUA) - .next("No position set!").color(EnumChatFormatting.RED).flush()); + .next(I18nUtil.resolveKeyArray("desc.item.detonator")[1]).color(EnumChatFormatting.RED).flush()); } } else { int x = stack.stackTagCompound.getInteger("x"); diff --git a/src/main/java/com/hbm/items/tool/ItemMS.java b/src/main/java/com/hbm/items/tool/ItemMS.java index 77495a356..bcb3b7c7f 100644 --- a/src/main/java/com/hbm/items/tool/ItemMS.java +++ b/src/main/java/com/hbm/items/tool/ItemMS.java @@ -7,6 +7,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -18,7 +19,7 @@ public class ItemMS extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Lost but not forgotten"); + list.add(I18nUtil.resolveKey("item.mysteryshovel.desc")); } public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float a, float b, float c) diff --git a/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java b/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java index eefbae55d..bf8b970b3 100644 --- a/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java +++ b/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -26,63 +27,63 @@ public class ItemSwordMeteorite extends ItemSwordAbility { super.addInformation(stack, player, list, ext); if(this == ModItems.meteorite_sword) { - list.add(EnumChatFormatting.ITALIC + "Forged from a fallen star"); - list.add(EnumChatFormatting.ITALIC + "Sharper than most terrestrial blades"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_seared) { - list.add(EnumChatFormatting.ITALIC + "Fire strengthens the blade"); - list.add(EnumChatFormatting.ITALIC + "Making it even more powerful"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_seared.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_reforged) { - list.add(EnumChatFormatting.ITALIC + "The sword has been reforged"); - list.add(EnumChatFormatting.ITALIC + "To rectify past imperfections"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_reforged.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_hardened) { - list.add(EnumChatFormatting.ITALIC + "Extremely high pressure has been used"); - list.add(EnumChatFormatting.ITALIC + "To harden the blade further"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_hardened.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_alloyed) { - list.add(EnumChatFormatting.ITALIC + "Cobalt fills the fissures"); - list.add(EnumChatFormatting.ITALIC + "Strengthening the sword"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_alloyed.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_machined) { - list.add(EnumChatFormatting.ITALIC + "Advanced machinery was used"); - list.add(EnumChatFormatting.ITALIC + "To refine the blade even more"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_machined.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_treated) { - list.add(EnumChatFormatting.ITALIC + "Chemicals have been applied"); - list.add(EnumChatFormatting.ITALIC + "Making the sword more powerful"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_treated.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_etched) { - list.add(EnumChatFormatting.ITALIC + "Acids clean the material"); - list.add(EnumChatFormatting.ITALIC + "To make this the perfect sword"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_etched.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_bred) { - list.add(EnumChatFormatting.ITALIC + "Immense heat and radiation"); - list.add(EnumChatFormatting.ITALIC + "Compress the material"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_bred.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_irradiated) { - list.add(EnumChatFormatting.ITALIC + "The power of the Atom"); - list.add(EnumChatFormatting.ITALIC + "Gives the sword might"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_irradiated.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_fused) { - list.add(EnumChatFormatting.ITALIC + "This blade has met"); - list.add(EnumChatFormatting.ITALIC + "With the forces of the stars"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_fused.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_baleful) { - list.add(EnumChatFormatting.ITALIC + "This sword has met temperatures"); - list.add(EnumChatFormatting.ITALIC + "Far beyond what normal material can endure"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_baleful.desc")) + list.add(EnumChatFormatting.ITALIC + s); } /* diff --git a/src/main/java/com/hbm/items/tool/ItemWand.java b/src/main/java/com/hbm/items/tool/ItemWand.java index 9bb6dc6ca..d3a532941 100644 --- a/src/main/java/com/hbm/items/tool/ItemWand.java +++ b/src/main/java/com/hbm/items/tool/ItemWand.java @@ -2,6 +2,7 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -15,22 +16,20 @@ public class ItemWand extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Creative-only item"); - list.add("\"Destruction brings creation\""); - list.add("(Set positions with right click,"); - list.add("set block with shift-right click!)"); + for(String s : I18nUtil.resolveKeyArray( "item.wand_k.desc")) + list.add(s); if(itemstack.stackTagCompound != null && !(itemstack.stackTagCompound.getInteger("x") == 0 && itemstack.stackTagCompound.getInteger("y") == 0 && itemstack.stackTagCompound.getInteger("z") == 0)) { - list.add("Pos: " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z")); + list.add(I18nUtil.resolveKey("item.wand_k.pos" , itemstack.stackTagCompound.getInteger("x") , itemstack.stackTagCompound.getInteger("y") , itemstack.stackTagCompound.getInteger("z"))); } else { - list.add("Positions not set!"); + list.add(I18nUtil.resolveKey("item.wand_k.null")); } if(itemstack.stackTagCompound != null) - list.add("Block saved: " + Block.getBlockById(itemstack.stackTagCompound.getInteger("block")).getUnlocalizedName()); + list.add(I18nUtil.resolveKey("item.wand_k.block" , Block.getBlockById(itemstack.stackTagCompound.getInteger("block")).getUnlocalizedName())); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemWandS.java b/src/main/java/com/hbm/items/tool/ItemWandS.java index ea7ba07fa..f2985ac02 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandS.java +++ b/src/main/java/com/hbm/items/tool/ItemWandS.java @@ -3,6 +3,7 @@ package com.hbm.items.tool; import java.util.List; import java.util.Random; +import com.hbm.util.I18nUtil; import com.hbm.world.machine.FWatz; import com.hbm.world.machine.NuclearReactor; import com.hbm.world.machine.Watz; @@ -19,10 +20,8 @@ public class ItemWandS extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Creative-only item"); - list.add("\"Instant structures for everyone!\""); - list.add("(Cycle with shift-right click,"); - list.add("spawn structures with right click!)"); + for(String s : I18nUtil.resolveKeyArray( "item.wand_s.desc")) + list.add(s); if(itemstack.stackTagCompound != null) { switch(itemstack.stackTagCompound.getInteger("building")) diff --git a/src/main/java/com/hbm/items/tool/WeaponSpecial.java b/src/main/java/com/hbm/items/tool/WeaponSpecial.java index c59daa016..ca10cc59a 100644 --- a/src/main/java/com/hbm/items/tool/WeaponSpecial.java +++ b/src/main/java/com/hbm/items/tool/WeaponSpecial.java @@ -12,6 +12,7 @@ import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorUtil; +import com.hbm.util.I18nUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -249,58 +250,52 @@ public class WeaponSpecial extends ItemSword { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.schrabidium_hammer) { - list.add("Even though it says \"+1000000000"); - list.add("damage\", it's actually \"onehit anything\""); + for(String s : I18nUtil.resolveKeyArray("item.schrabidium_hammer.desc")) + list.add(s); } if(this == ModItems.ullapool_caber) { - list.add("High-yield Scottish face removal."); - list.add("A sober person would throw it..."); + for(String s : I18nUtil.resolveKeyArray("item.ullapool_caber.desc")) + list.add(s); } if(this == ModItems.bottle_opener) { - list.add("My very own bottle opener."); - list.add("Use with caution!"); + for(String s : I18nUtil.resolveKeyArray("item.bottle_opener.desc")) + list.add(s); } if(this == ModItems.shimmer_sledge) { if(MainRegistry.polaroidID == 11) { - list.add("shimmer no"); - list.add("drop that hammer"); - list.add("you're going to hurt somebody"); - list.add("shimmer no"); - list.add("shimmer pls"); + for(String s : I18nUtil.resolveKeyArray("item.shimmer_sledge.desc.hide")) + list.add(s); } else { - list.add("Breaks everything, even portals."); + list.add(I18nUtil.resolveKey("item.shimmer_sledge.desc")); } } if(this == ModItems.shimmer_axe) { if(MainRegistry.polaroidID == 11) { - list.add("shim's toolbox does an e-x-p-a-n-d"); + list.add(I18nUtil.resolveKey("item.shimmer_axe.desc.hide")); } else { - list.add("Timber!"); + list.add(I18nUtil.resolveKey("item.shimmer_axe.desc")); } } if(this == ModItems.wrench) { - list.add("Mechanic Richard"); + list.add(I18nUtil.resolveKey("item.wrench.desc")); } if(this == ModItems.wrench_flipped) { - list.add("Wrench 2: The Wrenchening"); + list.add(I18nUtil.resolveKey("item.wrench_flipped.desc")); } if(this == ModItems.memespoon) { - list.add(EnumChatFormatting.DARK_GRAY + "Level 10 Shovel"); - list.add(EnumChatFormatting.AQUA + "Deals crits while the wielder is rocket jumping"); - list.add(EnumChatFormatting.RED + "20% slower firing speed"); - list.add(EnumChatFormatting.RED + "No random critical hits"); + for(String s : I18nUtil.resolveKeyArray("item.memespoon.desc")) + list.add(s); } if(this == ModItems.wood_gavel) { - list.add("Thunk!"); + list.add(I18nUtil.resolveKey("item.wood_gavel.desc")); } if(this == ModItems.lead_gavel) { - list.add("You are hereby sentenced to lead poisoning."); + list.add(I18nUtil.resolveKey("item.lead_gavel.desc")); } if(this == ModItems.diamond_gavel) { - list.add("The joke! It makes sense now!!"); - list.add(""); - list.add(EnumChatFormatting.BLUE + "Deals as much damage as it needs to."); + for(String s : I18nUtil.resolveKeyArray("item.diamond_gavel.desc")) + list.add(s); } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 7e3226470..dc43341b9 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -717,9 +717,8 @@ public class ModEventHandlerClient { } } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display protection info"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + I18nUtil.resolveKey("tooltip.show" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } @@ -733,13 +732,12 @@ public class ModEventHandlerClient { if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && !(Minecraft.getMinecraft().currentScreen instanceof GUIArmorTable)) { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display installed armor mods"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + I18nUtil.resolveKey("tooltip.armormodsshow" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT" )); } else { - list.add(EnumChatFormatting.YELLOW + "Mods:"); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("tooltip.armormods")); ItemStack[] mods = ArmorModHandler.pryMods(stack); @@ -760,12 +758,12 @@ public class ModEventHandlerClient { List names = ItemStackUtil.getOreDictNames(stack); if(names.size() > 0) { - list.add(EnumChatFormatting.BLUE + "Ore Dict:"); + list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("tooltip.oredict")); for(String s : names) { list.add(EnumChatFormatting.AQUA + " -" + s); } } else { - list.add(EnumChatFormatting.RED + "No Ore Dict data!"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("tooltip.oredict.null")); } } @@ -786,10 +784,10 @@ public class ModEventHandlerClient { list.add(""); if(entry.entry == EnumEntryType.ADD) - list.add(EnumChatFormatting.GOLD + "Adds " + entry.value + " to the custom nuke stage " + entry.type); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("tooltip.customnuke",entry.value,entry.type)); if(entry.entry == EnumEntryType.MULT) - list.add(EnumChatFormatting.GOLD + "Adds multiplier " + entry.value + " to the custom nuke stage " + entry.type); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("tooltip.customnukemultiplier",entry.value ,entry.type)); } try { diff --git a/src/main/java/com/hbm/util/function/Function.java b/src/main/java/com/hbm/util/function/Function.java index 9dd32272c..0e82a7f07 100644 --- a/src/main/java/com/hbm/util/function/Function.java +++ b/src/main/java/com/hbm/util/function/Function.java @@ -4,6 +4,7 @@ import java.util.Locale; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; /** @@ -50,21 +51,21 @@ public abstract class Function { public FunctionLogarithmic(double level) { super(level); this.withOff(1D); } @Override public double effonix(double x) { return Math.log10(getX(x)) * level; } @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format(Locale.US, "%,.1f", this.level); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[1]; } } public static class FunctionPassive extends FunctionSingleArg { public FunctionPassive(double level) { super(level); } @Override public double effonix(double x) { return this.level; } @Override public String getLabelForFuel() { return "" + String.format(Locale.US, "%,.1f", this.level); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[0]; } } public static class FunctionSqrt extends FunctionSingleArg { public FunctionSqrt(double level) { super(level); } @Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; } @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format(Locale.US, "%,.3f", this.level); } //not entirely correct but good enough - @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[5]; } } public static class FunctionSqrtFalling extends FunctionSqrt { @@ -78,7 +79,7 @@ public abstract class Function { public FunctionLinear(double level) { super(level); } @Override public double effonix(double x) { return getX(x) * this.level; } @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format(Locale.US, "%,.1f", this.level); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[6]; } } public static class FunctionQuadratic extends FunctionDoubleArg { @@ -86,6 +87,6 @@ public abstract class Function { public FunctionQuadratic(double level, double vOff) { super(level, vOff); } @Override public double effonix(double x) { return getX(x) * getX(x) * this.level + this.vOff; } @Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format(Locale.US, "%,.1f", this.level) + (vOff != 0 ? (" + " + String.format(Locale.US, "%,.1f", vOff)) : ""); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[7]; } } } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 19cb1bd86..696c95c96 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -131,6 +131,7 @@ achievement.ZIRNOXBoom=CIRNOX armor.blastProtection=Damage modifier of %s against explosions armor.cap=Hard damage cap of %s +armor.charge=Charge: %s / %s armor.damageModifier=Damage modifier of %s against %s armor.dash=Grants %s dashes armor.electricJetpack=Ion Jetpack @@ -164,6 +165,42 @@ armorMod.chestplates=Chestplates armorMod.helmets=Helmets armorMod.insertHere=Insert armor to modify... armorMod.leggings=Leggings +armorMod.slot=Slot: +armorMod.mod.auto=Imported from Japsterdam. +armorMod.mod.bandaid=3%% chance for full heal when damaged$ (3%% chance for full heal) +armorMod.mod.bathwater=Inflicts poison on the attacker$ (Poisons attackers) +armorMod.mod.charm=You feel blessed. +armorMod.mod.charm.protection=Diverts meteors away from the player.$Meteors no longer destroy blocks.$Halves broadcaster damage +armorMod.mod.charm.meteor=Disables meteorite spawning.$Negates broadcaster damage +armorMod.mod.cladding= rad-resistance$ radiation resistence) +armorMod.mod.defuser=Defuses nearby creepers$ (Defuses creepers) +armorMod.mod.gasmask=Gas protection$Will never protect against:$ (gas protection) +armorMod.mod.health= health$Nostalgia +armorMod.mod.Ink=10%% chance to nullify damage$Flowers!$ (10%% chance to nullify damage) +armorMod.mod.Insert=%% damage$%% projectile damage$%% explosion damage$%% speed$HP +armorMod.mod.Iron=+0.5 knockback resistance$ (+0.5 knockback resistence) +armorMod.mod.Knife=Pain.$ $Hurts, doesn't it? +armorMod.mod.Lens=Satellite Frequency: $ (Freq: %%d) +armorMod.mod.Lodestone=Attracts nearby items$Item attraction range: %%d$ (Magnetic range: %%d) +armorMod.mod.Milk=Removes bad potion effects$ (Removes bad potion effects) +armorMod.mod.MorningGlory=5%% chance to apply resistance when hit, wither immunity$ (5%% for resistance, wither immunity) +armorMod.mod.Obsidian=Makes dropped armor indestructible$ (Item indestructible) +armorMod.mod.Pads=%% fall damage$Passively charges electric armor when walking$%% fall dmg / passive charge) +armorMod.mod.Polish=5%% chance to nullify damage$ (5%% chance to nullify damage) +armorMod.mod.Quartz=Taking damage removes 10 RAD$ (-10 RAD when hit) +armorMod.mod.Revive= revives left +armorMod.mod.Revive.scrumpy=But how did you survive?$I was drunk. +armorMod.mod.Revive.wild_p=§8Explosive §cReactive "§8Plot §cArmor +armorMod.mod.Revive.fabsols_vodka=In the news:$§c§lMan literally too angry to die.$ $§o"I ain't got time to die" says local$man after ripping the physical manifestation$of disaster itself in half. +armorMod.mod.Sensor=Beeps near hazardous gasses$Works in the inventory or when applied to armor$ (Detects gasses) +armorMod.mod.Serum=Cures poison and gives strength$ (replaces poison with strength) +armorMod.mod.Servos=Chestplate: Haste I / Damage +50%%$Leggings: Speed +25%% / Jump II$ (Haste I / Damage +50%%)$ (Speed +25%% / Jump II) +armorMod.mod.Servos.desh=Chestplate: Haste III / Damage +150%%$Leggings: Speed +50%% / Jump III$ (Haste III / Damage +150%%)$ (Speed +50%% / Jump III) +armorMod.mod.Shackles=You will speak when I ask you to.$You will eat when I tell you to.$You will die when I allow you to.$∞ revives left$ (∞ revives left) +armorMod.mod.Tesla=Zaps nearby entities (requires full electric set)$ (zaps nearby entities) +armorMod.mod.TwoKick="I've had worse"$ (Shotgun punches) +armorMod.mod.V1=BLOOD IS FUEL$ (BLOOD IS FUEL) +armorMod.mod.WD40=Highly reduces damage taken by armor, +2 HP$ (-80%% armor wear / +2 HP) armorMod.type.boots=Boots armorMod.type.chestplate=Chestplate armorMod.type.cladding=Cladding @@ -866,6 +903,7 @@ death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. death.attack.teleporter=%1$s was teleported into nothingness. +desc.block.blastinfo=Blast Resistance: %s desc.gui.assembler.warning=§cError:§r This machine requires an assembly template! desc.gui.chemplant.warning=§cError:§r This machine requires an chemistry template! desc.gui.gasCent.enrichment=§2Enrichment§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. @@ -980,6 +1018,7 @@ desc.item.battery.charge=Charge: %s / %sHE desc.item.battery.chargePerc=Charge: %s%% desc.item.battery.chargeRate=Charge rate: %sHE/tick desc.item.battery.dischargeRate=Discharge rate: %sHE/tick +desc.item.detonator=Position set!$No position set! desc.item.durability=Durability: %s desc.item.grenade.fuse=Fuse: %s desc.item.grenade.fuseImpact=Impact @@ -1022,6 +1061,20 @@ desc.misc.noPos=No position set! desc.misc.pos=Set pos to: %s, %s, %s desc.misc.posSet=Position set! desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum +desc.item.upgrade.machine=Mining Drill:§r$Laser Miner:$Electric Furnace:§r$Assembly Machine:§r$Chemical Plant:§r$Oil Wells:§r$Crystallizer:§r$Cyclotron:§r$Flare Stack:§r$Maxwell:§r$Turbofan:§r$Forcefield Range Upgrade§r$Forcefield Health Upgrade§r$Mining Laser Upgrade§r$Gas Centrifuge Upgrade§r$ +desc.item.upgrade.speed=Delay -%s%% / Consumption +%sHE/t$Delay ÷%s / Consumption +%sHE/t$Delay -%s%% / Consumption +%s%%$Speed x%s$Damage +%sdmg/t +desc.item.upgrade.effect=Radius +%sm / Consumption +%sHE/t$+%s%% chance of not consuming an item / Acid consumption +%smB$-%s%% chance of incrementing overheat counter$+%s%% power production$Range +%sm +desc.item.upgrade.power=Consumption -%sHE/t / Delay +%s%%$Consumption -%s%% / Delay +%s%%$Consumption -%skHE/t$Consumption -%sHE/t$Consumption when firing -%sHE/t +desc.item.upgrade.fortune=Fortune +%s / Delay +%s +desc.item.upgrade.afterburn=Production x%s / Consumption x%s$Afterburn +%ss$Burn %smB of gas for %sHE/t +desc.item.upgrade.forcefield=Radius +16 / Consumption +500$Max. Health +50 / Consumption +250$Stacks to 16 +desc.item.upgrade.smelter=Smelts blocks. Easy enough. +desc.item.upgrade.shredder=Crunches ores +desc.item.upgrade.centrifuge=Hopefully self-explanatory +desc.item.upgrade.crystallizer=Your new best friend +desc.item.upgrade.screm=It's like in Super Mario where all blocks are$actually Toads, but here it's Half-Life scientists$and they scream. A lot. +desc.item.upgrade.nullifier=50%% chance to override worthless items with /dev/zero$50%% chance to move worthless items to /dev/null +desc.item.upgrade.gc_speed=Allows for total isotopic separation of HEUF6$§ealso your centrifuge goes sicko mode desc.item.zirnoxBreedingRod=§2[ZIRNOX Breeding Rod]$§ePlace next to fuel rods to breed$§eLasts %d ticks desc.item.zirnoxRod=§a[ZIRNOX Fuel Rod]$§eGenerates %1$d heat per tick$§eLasts %2$d ticks @@ -1403,6 +1456,26 @@ hbmfluid.woodoil=Wood Oil hbmfluid.xenon=Xenon Gas hbmfluid.xpjuice=Experience Juice hbmfluid.xylene=BTX + +hbmfluid.Trait.Combustible=[Combustible]$Provides §c%sHE §6per bucket$Fuel grade: §c%s +hbmfluid.Trait.Combustible.FuelGrade=Low$Medium$High$Aviation$Gaseous +hbmfluid.Trait.Coolable=Thermal capacity: %s TU$Efficiency: %s%% +hbmfluid.Trait.Corrosive=[Strongly Corrosive]$[Corrosive] +hbmfluid.Trait.Flammable=[Flammable]$Provides §c%sTU §eper bucket +hbmfluid.Trait.Poison=[Toxic Fumes] +hbmfluid.Trait.PWRModerator=[PWR Flux Multiplier]$"Core flux %s%s%% +hbmfluid.Trait.Toxin=[Toxin] +hbmfluid.Trait.VentRadiation=[Radioactive] +hbmfluid.TraitSimple.Amat=[Antimatter] +hbmfluid.TraitSimple.Delicious=[Delicious] +hbmfluid.TraitSimple.Gaseous=[Gaseous] +hbmfluid.TraitSimple.Gaseous_ART=[Gaseous at Room Temperature] +hbmfluid.TraitSimple.LeadContainer=[Requires hazardous material tank to hold] +hbmfluid.TraitSimple.Leaded=[Leaded Fuel] +hbmfluid.TraitSimple.Liquid=[Liquid] +hbmfluid.TraitSimple.Plasma=[Plasma] +hbmfluid.TraitSimple.Viscous=[Viscous] + hbmpseudofluid.none=Empty hbmpseudofluid.heuf6=Highly Enriched UF6 hbmpseudofluid.meuf6=Medium Enriched UF6 @@ -1751,9 +1824,14 @@ item.ams_catalyst_strontium.name=Strontium Reaction Catalyst item.ams_catalyst_thorium.name=Thorium Reaction Catalyst item.ams_catalyst_tungsten.name=Tungsten Reaction Catalyst item.ams_core_eyeofharmony.name=Eye of Harmony (AMS/DFC Core) +item.ams_core_eyeofharmony.desc=A star collapsing in on itself, mere nanoseconds$away from being turned into a black hole,$frozen in time. If I didn't know better I$would say this is some deep space magic$bullcrap some guy made up to sound intellectual.$Probably Steve from accounting. You still owe me$ten bucks. item.ams_core_sing.name=Vibrant Singularity (AMS/DFC Core) +item.ams_core_sing.desc=A modified undefined state of spacetime$used to aid in inter-gluon fusion and$spacetime annihilation. Yes, this destroys$the universe itself, slowly but steadily,$but at least you can power your toaster with$this, so it's all good. item.ams_core_thingy.name=Thingy (AMS/DFC Core) +item.ams_core_thingy.desc=...$"...$...am I even holding this right?$It's a small metal thing. I dunno where it's from$or what it does, maybe they found it on a$junkyard and sold it as some kind of antique$artifact. If it weren't for the fact that I can$actually stuff this into some great big laser$reactor thing, I'd probably bring it back to where$it belongs. In the trash. +item.ams_core_thingy_hide.desc=Yeah I'm not even gonna question that one. item.ams_core_wormhole.name=Tiny Wormhole (AMS/DFC Core) +item.ams_core_wormhole.desc=A cloud of billions of nano-wormholes which$deliberately fail at tunneling matter from$another dimension, rather it converts all$that matter into pure energy. That means$you're actively contributing to the destruction$of another dimension, sucking it dry like a$juicebox.$That dimension probably sucked, anyways. I$bet it was full of wasps or some crap, man,$I hate these things. item.ams_focus_blank.name=Blank Stabilizer Focus item.ams_focus_booster.name=Boosting Stabilizer Focus item.ams_focus_booster.desc=Weaker restriction field and core energy injection:$More heat generation, extra energy. @@ -1964,6 +2042,7 @@ item.bottle_empty.name=Empty Bomb-Shaped Bottle item.bottle_mercury.name=Bottle of Mercury item.bottle_nuka.name=Bottle of Nuka Cola item.bottle_opener.name=Hbm's Own Self-Made Bottle Opener +item.bottle_opener.desc=My very own bottle opener.$Use with caution! item.bottle_quantum.name=Bottle of Nuka Cola Quantum item.bottle_rad.name=Bottle of S~Cola RAD item.bottle_sparkle.name=Bottle of S~Cola @@ -2118,6 +2197,7 @@ item.centrifuge_tower.name=Centrifuge Tower item.chainsaw.name=Chainsaw item.cheese.name=Cheese item.cheese_quesadilla.name=Cheese Quesadilla +item.cheese_quesadilla.desc=That's what a 50 year old yeast infection does to you. item.chemical_dye.black.name=Chemical Dye (Black) item.chemical_dye.blue.name=Chemical Dye (Blue) item.chemical_dye.brown.name=Chemical Dye (Brown) @@ -2360,6 +2440,7 @@ item.debris_graphite.name=Hot Graphite Chunk item.debris_metal.name=Broken Metal Bar item.debris_shrapnel.name=Walkway Shrapnel item.definitelyfood.name=TotallyNotDirt-Brand MRE +item.definitelyfood.desc=A'right, I got sick and tired of$having to go out, kill things just$to get food and not die, so here is $my absolutely genius solution:$ $Have some edible dirt. item.defuser.name=High-Tech Bomb Defusing Device item.defuser_gold.name=Golden Wire Cutter item.demon_core_closed.name=Closed Demon Core @@ -2374,12 +2455,15 @@ item.designator_arty_range.name=Long Range Artillery Remote item.designator_manual.name=Manual Target Designator item.designator_range.name=Long Range Target Designator item.detonator.name=Detonator +item.detonator.desc=Shift right-click to set position,$right-click to detonate! +item.detonator.pos.desc=No position set!$Linked to %s, %s, %s item.detonator_de.name=Dead Man's Explosive item.detonator_deadman.name=Dead Man's Detonator item.detonator_laser.name=Laser Detonator item.detonator_multi.name=Multi Detonator item.deuterium_filter.name=Deuterium Filter item.diamond_gavel.name=Diamond Gavel +item.diamond_gavel.desc=The joke! It makes sense now!!$ $§9Deals as much damage as it needs to. item.dieselsuit_boots.name=Diesel-Powered High Heels item.dieselsuit_helmet.name=Diesel-Powered Head-Mounted Environmental Sensor item.dieselsuit_legs.name=Diesel-Powered Leg Servos @@ -2563,6 +2647,8 @@ item.gem_volcanic.name=Volcanic Gem item.generator_front.name=Generator Front item.generator_steel.name=Generator Body item.glitch.name=Glitch +item.glitch.desc=It's a gamble!$Click-click-click!$Creek!$Bzzzt!$TS staring off into space.$BANG!!$Woop!$Poow!$Pft!$GF fgnevat bss vagb fcnpr.$Backup memory #8 on 1.44 million bytes.$PTANG!$Bzzt-zrrt!$Clang, click-brrthththrtrtrtrtrtr!$KABLAM!$PLENG!$Wheeeeeeee-$Thump.$BANG! Choo-chooo! B A N G ! ! ! +item.glitch.message=Sorry nothing.$Prometheus was punished by the gods by giving the gift of knowledge to man. He was cast into the bowels of the earth and pecked by birds.$Oh, and by the way: The polaroid shifts reality. Things can be different if the polaroid is broken.$Have some free stuff. You'll need it for that one cryptic achievement.$v yvxr lbhe nggvghqr!$89%% of magic tricks are not magic. Technically, they are sorcery.$Here ya go.$Ë$Good day, I am text$73616d706c652074657874!$Budget cuts, no effect for you.$oof$Tank!$More devastating than a falling boxcar!$Ha!$Watch your head!$Bam!$t's dangerous to go alone, take this! item.glowing_stew.name=Glowing Mushroom Stew item.glyphid_meat.name=Glyphid Meat item.glyphid_meat_grilled.name=Grilled Glyphid Meat @@ -2875,6 +2961,7 @@ item.ingot_schrabidium_fuel.name=Ingot of Schrabidium Fuel item.ingot_schraranium.name=Schraranium Ingot item.ingot_schraranium.desc=Made from uranium in a schrabidium transmutator item.ingot_semtex.name=Bar of Semtex +item.ingot_semtex.desc=Semtex H Plastic Explosive$Performant explosive for many applications.$Edible item.ingot_smore.name=S'more Ingot item.ingot_solinium.name=Solinium Ingot item.ingot_sr90.name=Strontium-90 Ingot @@ -2920,11 +3007,16 @@ item.iv_xp.name=Experience Bag item.iv_xp_empty.name=Empty Experience Bag item.jackt.name=Damn Stylish Ballistic Jacket item.jackt2.name=Damn Stylish Ballistic Jacket 2: Tokyo Drift +item.jetpack.desc=Can be worn on its own! item.jetpack_boost.name=Boostpack +item.jetpack_boost.desc=High-powered vectorized jetpack.$Highly increased fuel consumption. item.jetpack_break.name=Builder's Jetpack +item.jetpack_break.desc=Regular jetpack that will automatically hover mid-air.$Sneaking will stop hover mode.$Hover mode will consume less fuel and increase air-mobility. item.jetpack_fly.name=Jetpack +item.jetpack_fly.desc=Regular jetpack for simple upwards momentum. item.jetpack_tank.name=Jetpack Reserve Fuel Tank item.jetpack_vector.name=Vectored Jetpack +item.jetpack_vector.desc=High-mobility jetpack.$Higher fuel consumption. item.journal_bj.name=Whiskey Drenched Notebook item.journal_pip.name=Survivalist's Journal item.journal_silver.name=Contractor's Notes @@ -2946,7 +3038,9 @@ item.laser_crystal_digamma.name=Digamma Laser Crystal item.laser_crystal_dnt.desc=Dineutronium-Spark Fermion Supercrystal item.laser_crystal_dnt.name=Spark Laser Crystal item.lead_gavel.name=Leaden Gavel +item.lead_gavel.desc=You are hereby sentenced to lead poisoning. item.lemon.name="Lemon" +item.lemon.desc=Eh, good enough. item.letter.name=Express Mail item.levitation_unit.name=Gravity Manipulator item.lignite.name=Lignite @@ -2959,7 +3053,9 @@ item.liquidator_plate.name=Liquidator Suit Chestplate item.lithium.name=Lithium Cube item.lodestone.name=Lodestone item.loop_stew.name=IT Breakfast +item.loop_stew.desc=A very, very healthy breakfast. item.loops.name=Lööps +item.loops.desc=Brøther, may I have some lööps? item.loot_10.name=Size 10 Missile Loot Crate item.loot_15.name=Size 15 Missile Loot Crate item.loot_misc.name=General Missile Loot Crate @@ -2986,28 +3082,44 @@ item.mechanism_rifle_2.name=Advanced Rifle Mechanism item.mechanism_special.name=High-Tech Weapon Mechanism item.med_bag.name=Doctor's Bag item.med_ipecac.name=Ipecac Syrup +item.med_ipecac.desc=Bitter juice that will cause your stomach$to forcefully eject its contents. item.med_ptsd.name=PTSD Medication +item.med_ptsd.desc=This isn't even PTSD mediaction, it's just$Ipecac in a different bottle! item.med_schiziphrenia.name=Schizophrenia Medication +item.med_schiziphrenia.desc=Makes the voices go away. Just for a while.$ $...$Better not take it. item.medal_liquidator.name=Liquidator Medal item.meltdown_tool.name=Dyatlov Instant Meltdown Applicator item.memespoon.name=§eMarket Gardener +item.memespoon.desc=§8Level 10 Shovel$§bDeals crits while the wielder is rocket jumping$§c20%% slower firing speed$§cNo random critical hits item.memory.name=item.null.name item.mese_gavel.name=Mese Gavel item.mese_pickaxe.name=Mese Pickaxe item.meteor_charm.name=Meteor Charm item.meteor_remote.name=Meteorite Remote item.meteorite_sword.name=Meteorite Sword +item.meteorite_sword.desc=Forged from a fallen star$Sharper than most terrestrial blades item.meteorite_sword_seared.name=Meteorite Sword (Seared) +item.meteorite_sword_seared.desc=Fire strengthens the blade$Making it even more powerful item.meteorite_sword_reforged.name=Meteorite Sword (Reforged) +item.meteorite_sword_reforged.desc=The sword has been reforged$To rectify past imperfections item.meteorite_sword_hardened.name=Meteorite Sword (Hardened) +item.meteorite_sword_hardened.desc=Extremely high pressure has been used$To harden the blade further item.meteorite_sword_alloyed.name=Meteorite Sword (Alloyed) +item.meteorite_sword_alloyed.desc=Cobalt fills the fissures$Strengthening the sword item.meteorite_sword_machined.name=Meteorite Sword (Machined) +item.meteorite_sword_machined.desc=Advanced machinery was used$To refine the blade even more item.meteorite_sword_treated.name=Meteorite Sword (Treated) +item.meteorite_sword_treated.desc=Chemicals have been applied$Making the sword more powerful item.meteorite_sword_etched.name=Meteorite Sword (Etched) +item.meteorite_sword_etched.desc=Acids clean the material$To make this the perfect sword item.meteorite_sword_bred.name=Meteorite Sword (Bred) +item.meteorite_sword_bred.desc=Immense heat and radiation$Compress the material item.meteorite_sword_irradiated.name=Meteorite Sword (Irradiated) +item.meteorite_sword_irradiated.desc=The power of the Atom$Gives the sword might item.meteorite_sword_fused.name=Meteorite Sword (Fused) +item.meteorite_sword_fused.desc=This blade has met$With the forces of the stars item.meteorite_sword_baleful.name=Meteorite Sword (Baleful) +item.meteorite_sword_baleful.desc=This sword has met temperatures$Far beyond what normal material can endure item.mike_cooling_unit.name=Deuterium Cooling Unit item.mike_core.name=Uranium Coated Deuterium Tank item.mike_deut.name=Deuterium Tank @@ -3042,6 +3154,7 @@ item.missile_nuclear_cluster.name=Thermonuclear Missile item.missile_rain.name=Bomblet Rain item.missile_schrabidium.name=Schrabidium Missile item.missile_shuttle.name=Reliant Robin Space Shuttle +item.missile_shuttle.desc=Tonite, on bo''om gear:$James huffs leaded gasoline and$goes insane, Richard spends the$entire budget on a broken .PNG,$And I forget to set the infinite$Water tanks on our RBMK to flow$out, blowing up our entire base item.missile_skin_camo.name=Missile Skin: Camo item.missile_skin_color.desc=I can't find my missile anymore! item.missile_skin_desert.name=Missile Skin: Desert Camo @@ -3061,6 +3174,7 @@ item.missile_skin_soviet_glory.desc=уÑлуга перевода недоÑту item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it. item.missile_soyuz.name=Soyuz-FG +item.missile_soyuz.desc=Skin:$Original$Luna Space Center$Post War item.missile_soyuz_lander.name=Orbital Module item.missile_soyuz_lander.desc=Doubles as a crappy lander! item.missile_strong.name=Strong HE Missile @@ -3207,6 +3321,7 @@ item.multitool_miner.name=Power Fist (Extracting Mining Laser) item.multitool_silk.name=Power Fist (Silk Touch Claw) item.multitool_sky.name=Power Fist (Crack the Sky) item.mysteryshovel.name=Brittle Spade +item.mysteryshovel.desc=Lost but not forgotten item.n2_charge.name=Large Explosive Charge item.neutrino_lens.name=Neutrino Lens item.neutron_reflector.name=Neutron Reflector @@ -3388,6 +3503,7 @@ item.particle_strange.name=Strange Quark Capsule item.particle_tachyon.name=Tachyon Capsule item.parts_legendary.name=Legendary Parts item.peas.name=Peas +item.peas.desc=He accepts your offering. item.pedestal_steel.name=Steel Pedestal item.pellet_advanced.name=Advanced Watz Performance Improver item.pellet_antimatter.name=Antimatter Cluster @@ -3644,6 +3760,7 @@ item.primer_buckshot.name=Buckshot Primer (x12) item.protection_charm.name=Charm of Protection item.prototype_kit.name=Prototype Kit item.pudding.name=Pudding +item.pudding.desc=What if he did?$What if he didn't?$What if the world was made of pudding? item.pwr_fuel.bfb_am_mix.name=Fuel Grade Americium PWR BFB Rod item.pwr_fuel.bfb_pu241.name=Plutonium-241 PWR BFB Rod item.pwr_fuel.hea242.name=HEA-242 PWR Fuel Rod @@ -3696,6 +3813,7 @@ item.radaway_strong.name=Strong RadAway item.radx.name=Rad-X item.radx.desc=Increases radiation resistance by 0.2 (37%%) for 3 minutes item.rag.name=Cloth +item.rag.desc=Drop into water to make damp cloth.$Right-click to urinate on the cloth. item.rag_damp.name=Damp Cloth item.rag_piss.name=Piss-Soaked Rag item.rbmk_fuel_balefire.name=Balefire RBMK Fuel Rod @@ -4002,6 +4120,7 @@ item.schnitzel_vegan.name=Vegan Schnitzel item.schrabidium_axe.name=Schrabidium Axe item.schrabidium_boots.name=Schrabidium Boots item.schrabidium_hammer.name=Schrabidium Hammer +item.schrabidium_hammer.desc=Even though it says "+1000000000"$damage", it's actually "onehit anything" item.schrabidium_helmet.name=Schrabidium Helmet item.schrabidium_hoe.name=Schrabidium Hoe item.schrabidium_legs.name=Schrabidium Leggings @@ -4030,10 +4149,14 @@ item.servo_set.name=Servo Set item.servo_set_desh.name=Desh Servo Set item.shackles.name=Shackles item.shimmer_axe.name=Shimmer Axe +item.shimmer_axe.desc=Timber! +item.shimmer_axe.desc.hide=shim's toolbox does an e-x-p-a-n-d item.shimmer_axe_head.name=Heavy Axe Head item.shimmer_handle.name=Reinforced Polymer Handle item.shimmer_head.name=Heavy Hammer Head item.shimmer_sledge.name=Shimmer Sledge +item.shimmer_sledge.desc=Breaks everything, even portals. +item.shimmer_sledge.desc.hide=shimmer no$drop that hammer$you're going to hurt somebody$shimmer no$shimmer pls item.singularity.name=Singularity item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity item.singularity_micro.name=Micro Singularity @@ -4155,6 +4278,7 @@ item.tank_waste_7.name=Mud Container item.tank_waste_8.name=Mud Container item.telepad.name=Telepad item.tem_flakes.name=Tem Flakes +item.tem_flakes.desc=Heals 2HP DISCOUNT FOOD OF TEM!!!$Heals 2HP food of tem$Heals food of tem (expensiv) item.template_folder.name=Machine Template Folder item.template_folder.desc=Machine Templates: Paper + Dye$Fluid IDs: Iron Plate + Dye$Press Stamps: Flat Stamp$Siren Tracks: Insulator + Steel Plate item.test_nuke_igniter.name=Igniter @@ -4208,7 +4332,9 @@ item.turret_rocket_ammo.name=Rocket Turret 2x4 Ammunition item.turret_spitfire_ammo.name=AA-Shell item.turret_tau_ammo.name=Tau Turret Uranium Ammo item.twinkie.name=Twinkie +item.twinkie.desc=Expired 600 years ago! item.ullapool_caber.name=Ullapool Caber +item.ullapool_caber.desc=High-yield Scottish face removal.$A sober person would throw it... item.undefined.name=Undefined item.upgrade_5g.name=5G Radiation Emitter Upgrade item.upgrade_afterburn_1.name=Afterburner Upgrade Mk.I @@ -4249,8 +4375,14 @@ item.v1.name=V1 item.volcanic_pickaxe.name=Molten Pickaxe item.wand_d.name=Debug Wand item.wand_k.name=Construction Wand +item.wand_k.block=Block saved: %s +item.wand_k.desc=Creative-only item$"Destruction brings creation"$(Set positions with right click,$set block with shift-right click!) +item.wand_k.null=Positions not set! +item.wand_k.pos=Pos: %s, %s, %s item.wand_s.name=Structure Wand +item.wand_s.desc=Creative-only item$"Instant structures for everyone!"$(Cycle with shift-right click,$spawn structures with right click!) item.structure_custommachine.name=Custom Machine Structure Output Wand +item.structure_custommachine.desc=Click Custom Machine Structure Positioning Anchor to$Confirm the location of the custom machine core block.$Output all blocks between Position1 and Position2 with$metadata to \"CMstructureOutput.txt\" in hbmConfig. item.warhead_buster_large.name=Large Bunker Buster Warhead item.warhead_buster_medium.name=Medium Bunker Buster Warhead item.warhead_buster_small.name=Small Bunker Buster Warhead @@ -4333,9 +4465,12 @@ item.wire_schrabidium.name=Schrabidium Wire item.wire_tungsten.name=Tungsten Wire item.wiring_red_copper.name=Cable Drum item.wood_gavel.name=Wooden Gavel +item.wood_gavel.desc=Thunk! item.wrench.name=Pipe Wrench +item.wrench.desc=Mechanic Richard item.wrench_archineer.name=Archineer's Wrench item.wrench_flipped.name=Blade on a Wrench +item.wrench_flipped.desc=Wrench 2: The Wrenchening item.xanax.name=NAXA Anti-Digamma Medication item.xanax.desc=Removes 500mDRX item.zirconium_legs.name=Zirconium Pants @@ -4681,6 +4816,7 @@ tile.cm_tank.alloy.name=Advanced Alloy Tank tile.cm_tank.desh.name=Desh Tank tile.cm_tank.steel.name=Steel Tank tile.cm_tank.tcalloy.name=Technetium Steel Tank +tile.cm_paperPress.name=Paper Press tile.cmb_brick.name=CMB Steel Tile tile.cmb_brick_reinforced.name=Reinforced CMB Bricks tile.compact_launcher.name=Compact Launch Pad @@ -4934,6 +5070,7 @@ tile.gneiss_brick.name=Schist Brick tile.gneiss_chiseled.name=Chiseled Schist tile.gneiss_tile.name=Schist Tile tile.gravel_diamond.name=Diamond Gravel +tile.gravel_diamond.desc=There is some kind of joke here,$but I can't quite tell what it is.$ $Update, 2020-07-04:$We deny any implications of a joke on$the basis that it was so severely unfunny$that people started stabbing their eyes out.$$Update, 2020-17-04:$As it turns out, "Diamond Gravel" was$never really a thing, rendering what might$have been a joke as totally nonsensical.$We apologize for getting your hopes up with$this non-joke that hasn't been made.$$i added an item for a joke that isn't even here, what am i, stupid? can't even tell the difference between gravel and a gavel, how did i not forget how to breathe yet? tile.gravel_obsidian.name=Crushed Obsidian tile.hadron_access.name=Particle Accelerator Access Terminal tile.hadron_analysis.name=Particle Accelerator Analysis Chamber Wall @@ -5064,6 +5201,7 @@ tile.machine_excavator.name=Large Mining Drill tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU tile.machine_flare.name=Flare Stack +tile.machine_flare.desc=Can burn fluids and vent gasses$Burns up to §c10mB/t$Vents up to §c50mB/t$ $§eFuel efficiency:$§e-Flammable Gasses: §c50%%$§e-Flammable Liquids: §c10%% tile.machine_fluidtank.name=Tank tile.machine_forcefield.name=Forcefield Emitter tile.machine_fraction_tower.name=Fractioning Tower @@ -5155,6 +5293,7 @@ tile.machine_zirnox.name=ZIRNOX Nuclear Reactor tile.marker_structure.name=Multiblock Structure Marker tile.mass_storage.name=Mass Storage Unit tile.meteor_battery.name=Starmetal Static Electricity Generator +tile.meteor_battery.desc=Provides infinite charge to tesla coils tile.meteor_brick.name=Meteor Bricks tile.meteor_brick_chiseled.name=Chiseled Meteor Bricks tile.meteor_brick_cracked.name=Cracked Meteor Bricks @@ -5174,14 +5313,18 @@ tile.ntm_dirt.name=Dirt tile.nuke_boy.name=Little Boy tile.nuke_custom.name=Custom Nuke tile.nuke_fleija.name=F.L.E.I.J.A. +tile.nuke_fleija.desc=Used in:$F.L.E.I.J.A. tile.nuke_fstbmb.name=Balefire Bomb tile.nuke_gadget.name=The Gadget tile.nuke_man.name=Fat Man tile.nuke_mike.name=Ivy Mike tile.nuke_n2.name=N² Mine +tile.nuke_n2.desc=Used in:$N² Mine tile.nuke_n45.name=N45 Naval Mine tile.nuke_prototype.name=The Prototype +tile.nuke_prototype.desc=It didn't have to be like this.$ $You monster. tile.nuke_solinium.name=The Blue Rinse +tile.nuke_solinium.desc=Used in:$Solinium Bomb tile.nuke_tsar.name=Tsar Bomba tile.oil_duct.name=Oil Pipe tile.oil_duct_solid.name=Coated Oil Pipe @@ -5240,6 +5383,7 @@ tile.ore_nether_uranium.name=Nether Uranium Ore tile.ore_nether_uranium_scorched.name=Scorched Nether Uranium Ore tile.ore_niter.name=Niter Ore tile.ore_oil.name=Oil Deposit +tile.ore_oil.desc=You weren't supposed to mine that.$Come on, get a derrick you doofus. tile.ore_oil_empty.name=Empty Oil Deposit tile.ore_oil_sand.name=Tar Sand tile.ore_random.name=%s Ore @@ -5353,6 +5497,7 @@ tile.reactor_element.name=Reactor Chamber tile.reactor_hatch.name=Reactor Access Hatch tile.reactor_inserter.name=Reactor Fuel Inserter tile.red_barrel.name=Explosive Barrel +tile.red_barrel.desc=Static fluid barrel tile.red_cable.name=Red Copper Cable tile.red_cable_classic.name=Red Copper Cable (Classic) tile.red_cable_gauge.name=Power Gauge @@ -5360,7 +5505,9 @@ tile.red_cable_gauge.desc=Cable that displays how much power$moves within the ne tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole +tile.red_pylon.desc=Connection Type: §eSingle$Connection Range: §e25m tile.red_pylon_large.name=Large Electricity Pylon +tile.red_pylon_large.desc=Connection Type: §eQuadruple$Connection Range: §e100m$This pylon requires a substation! tile.red_wire_coated.name=Coated Red Copper Cable tile.reinforced_brick.name=Reinforced Stone tile.reinforced_brick_stairs.name=Reinforced Stone Stairs @@ -5445,6 +5592,7 @@ tile.struct_scaffold.name=Launch Pad Scaffold Block tile.struct_soyuz_core.name=Soyuz Launcher Core Component tile.struct_watz_core.name=Watz Powerplant Core Component tile.substation.name=Substation +tile.substation.desc=Connection Type: §eQuadruple$Connection Range: §e20m tile.sulfuric_acid_block.name=Sulfuric Acid tile.taint.name=Taint tile.taint_barrel.name=IMP Residue Barrel @@ -5527,6 +5675,10 @@ trait.hydro=Hydroreactive trait.radioactive=Radioactive trait.radResistance=Radiation resistance: %s +trait.platefuel=[Research Reactor Plate Fuel]$§3 %s$§3 Yield of %s events +trait.pwr_fuel=Heat per flux: §r%s TU$Reacton function: §r%s$Fuel type: §r%s + +trait.rbmk.BurnFunc=SAFE / PASSIVE$MEDIUM / LOGARITHMIC$SAFE / EULER$DANGEROUS / NEGATIVE-QUADRATIC$SAFE / SIGMOID$MEDIUM / SQUARE ROOT$DANGEROUS / LINEAR$DANGEROUS / QUADRATIC$EXPERIMENTAL / SINE SLOPE trait.rbmk.coreTemp=Core temp: %s trait.rbmk.depletion=Depletion: %s trait.rbmk.diffusion=Diffusion: %s @@ -5563,8 +5715,21 @@ trait.rbmx.xenon=Lead poison: %s trait.rbmx.xenonBurn=Lead destruction function: %s trait.rbmx.xenonGen=Lead creation function: %s +trait.rbmk_pellet=Pellet for recycling$Brand New$Barely Depleted$Moderately Depleted$Highly Depleted$Fully Depleted$High Xenon Poison +trait.watz_pellet=Depletion: %s%% +trait.watz_pellet.passive=Base fission rate: $Self-igniting! +trait.watz_pellet.heatEmission=Heat per flux: +trait.watz_pellet.burnFunc=Reacton function: $Fuel type: +trait.watz_pellet.heatDiv=Thermal multiplier: +trait.watz_pellet.absorbFunc=Flux capture: + trait.tile.cluster=Drops only when broken by a player trait.tile.depth=Can only be destroyed by explosions +trait.tile.barrel.capacity=Capacity: %smB +trait.tile.barrel.hot=Can store hot fluids$Cannot store hot fluids +trait.tile.barrel.corrosive=Can store highly corrosive fluids$Can store corrosive fluids$Cannot store highly corrosive fluids properly$Cannot store corrosive fluids properly$Cannot store corrosive fluids +trait.tile.barrel.antimatter=Can store antimatter$Cannot store antimatter +trait.tile.barrel.leak=Leaky tool.ability.centrifuge=Auto-Centrifuge tool.ability.crystallizer=Auto-Crystallizer @@ -5578,6 +5743,15 @@ tool.ability.shredder=Auto-Shredder tool.ability.silktouch=Silk Touch tool.ability.smelter=Auto-Smelter +tooltip.armormods=Mods: +tooltip.armormodsshow=Hold < %s §8§o> to display installed armor mods§r +tooltip.block=Hold < %s §8§o> to display more info§r +tooltip.customnuke=Adds %s to the custom nuke stage %s +tooltip.customnukemultiplier=Adds multiplier %s to the custom nuke stage %s +tooltip.oredict=Ore Dict: +tooltip.oredict.null=No Ore Dict data! +tooltip.show=Hold < %s §8§o> to display protection info§r + turret.animals=Target Passive: %s turret.arty.artillery=§eArtillery Mode$Grace: 250m$Range: 3,000m turret.arty.cannon=§eCannon Mode$Grace: 32m$Range: 250m diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 4bd5871e0..7610a1c62 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -52,13 +52,13 @@ achievement.fiend2=残å¿2:æ›´æ®‹å¿ achievement.fiend=æ®‹å¿ achievement.freytag.desc=英勇的救生员 achievement.freytag=弗雷塔格 -achievement.fusion.desc=æ°˜æ ¸ã€æµ·å«ä¸€ä¸Žèƒ½é‡çš„舞蹈。 -achievement.fusion=èšåˆ -achievement.gasCent.desc=è´«é“€è®¨åŽŒä»–ï¼ -achievement.gasCent=é“¾å¼ +achievement.fusion.desc=氘核, 氚核和能é‡ä¹‹èˆž. +achievement.fusion=热核èšå˜å应 +achievement.gasCent.desc=æœªæµ“ç¼©çš„é“€è®¨åŽŒä»–ï¼ +achievement.gasCent=æ‹‰é“¾å¼ achievement.goFish.desc=航海åå­—æž¶ achievement.goFish=去钓鱼 -achievement.hidden.desc=使用一节å è½çš„è½¦åŽ¢æ€æ­»ä¸€åªæ±¡æŸ“苦力怕 +achievement.hidden.desc=使用一节å è½çš„è½¦åŽ¢æ€æ­»ä¸€åªæ±¡æŸ“爬行者 achievement.hidden=éšè—目录 achievement.horizonsBonus.desc=说实è¯ï¼Œä½ åˆ°åº•怎么了 achievement.horizonsBonus=åœ°å¹³çº¿ï¼ @@ -72,14 +72,14 @@ achievement.inferno.desc=â€œæŠŠå®ƒå˜æˆç°çƒ¬ï¼è¿™è¿˜ä¸å¤Ÿï¼æŠ•更多的炸 achievement.inferno=食人行动 achievement.manhattan.desc=1945å¹´8月6æ—¥ 8:15 achievement.manhattan=曼哈顿计划 -achievement.meltdown.desc=你走了这么远,怎么能把事情æžç ¸ï¼Ÿ -achievement.meltdown=快速éžè®¡åˆ’æ‹†å¸ -achievement.no9.desc=“我希望我开采的铅能被用在你的油漆里†-achievement.no9=æ—§æ•°å­—9 -achievement.omega12.desc=è§£å†³åœ¨è¿™ä¸ªå¯æ€œçš„æ˜Ÿçƒä¸Šç»§ç»­ç”Ÿå­˜çš„问题 -achievement.omega12=欧米茄-12ç²’å­åŠ é€Ÿå™¨ -achievement.polymer.desc=美味ã€ç¾Žå‘³çš„微塑料。 -achievement.polymer=特氟隆 +achievement.meltdown.desc=你都走到了这一步,怎么还能把事情æžç ¸? +achievement.meltdown="快速"æ‹†å¸ +achievement.no9.desc="我希望我开采的铅能被用于你的绘画" +achievement.no9=è€ä¹å· +achievement.omega12.desc=解决在这个è’凉的的星çƒä¸Šç»§ç»­ç”Ÿå­˜çš„问题. +achievement.omega12=欧米伽-12å·ç²’å­åŠ é€Ÿå™¨ +achievement.polymer.desc=美味,美味的微塑料. +achievement.polymer=特氟隆 èšå››æ°Ÿä¹™çƒ¯ achievement.potato.desc=ä½ å±…ç„¶æ…æˆ‘ï¼ä½ æ€Žâ€”å–”å“¦å“¦å“¦å“¦å“¦ï¼ achievement.potato=æµæ°“AI achievement.radDeath.desc=居里夫人开创了放射性ç†è®ºã€æ”¾å°„性治疗和放射性死亡。。。。 @@ -124,30 +124,32 @@ achievement.watzBoom.desc=下次记得把毒泥浆容器清空 achievement.watzBoom=ä»¤äººåŽŒæ¶ achievement.watz.desc=å¯èƒ½åŒ…括Fólkvangr弗尔克范格场 achievement.watz=126å·å…ƒç´ çš„åŠ›é‡ -achievement.witchtaunter.desc=é‚£äº›å¤æ€ªçš„ç”Ÿç‰©å¯¹ä½ æ¯«æ— å…´è¶£ï¼ -achievement.witchtaunter=巫婆陶æ©ç‰¹ -achievement.ZIRNOXBoom.desc=处ç†, 看,满地是残骸碎片 -achievement.ZIRNOXBoom=锆诺克斯 -armor.blastProtection=修正 %s 的爆炸伤害 -armor.cap=ä¼¤å®³ä¸Šé™ %s -armor.damageModifier=修正 %s 对 %s 的伤害 -armor.dash=给予 %s 冲刺 -armor.electricJetpack=离å­å–·å°„背包 +achievement.witchtaunter.desc=那些怪胎什么都没å‘现! +achievement.witchtaunter=女巫陶æ©ç‰¹ +achievement.ZIRNOXBoom.desc=处ç†, é地都是, 残骸碎片 +achievement.ZIRNOXBoom=CIRNOX + +armor.blastProtection=åªå—%s的爆炸伤害 +armor.cap=ç¡¬ä¼¤ä¸Šé™ %s +armor.charge=电é‡: %s / %s +armor.damageModifier=åªå—%sçš„%s伤害 +armor.dash=æä¾› %s 次冲刺 +armor.electricJetpack=ç­‰ç¦»å­æŽ¨è¿›å™¨ armor.explosionImmune=å…疫除爆炸伤害外的一切伤害 armor.fasterReload=快速装填 armor.fastFall=快速é™è½ armor.fireproof=é˜²ç« -armor.fullSetBonus=全套效果: -armor.geigerHUD=ç›–é©è®¡æ•°å™¨HUD -armor.geigerSound=ç›–é©è®¡æ•°å™¨è­¦æŠ¥ -armor.glider=滑翔 -armor.gravity=é‡åŠ›ä¿®æ­£ %s -armor.hardLanding=硬ç€é™† -armor.ignoreLimit=防御值ä¸å—防御上é™çš„å½±å“ -armor.modifier=伤害修正 %s +armor.fullSetBonus=完整套装增益: +armor.geigerHUD=内置盖格计数器 +armor.geigerSound=å¬è§‰å¼ç›–é©è®¡æ•°å™¨ +armor.glider=按下潜行以滑翔 +armor.gravity=é‡åŠ›æ•ˆæžœè°ƒæ•´ä¸º%s +armor.hardLanding=å åœ°AOE伤害 +armor.ignoreLimit=防御值ä¸å—防御值上é™çš„å½±å“ +armor.modifier=åªå—%s的一般伤害 armor.moreAmmo=æ›´å¤šå¼¹è¯ -armor.nullDamage=å…ç–« %s 伤害 -armor.projectileProtection=å…ç–« %s 的弹射物伤害 +armor.nullDamage=å…疫所有的%s伤害 +armor.projectileProtection=åªå—%s的弹射物伤害 armor.rocketBoots=ç«ç®­é´ armor.sprintBoost=冲刺辅助加速 armor.stepSize=步长:%s @@ -162,8 +164,44 @@ armorMod.chestplates=胸甲 armorMod.helmets=头盔 armorMod.insertHere=æ’入装甲以改装。。。 armorMod.leggings=护腿 -armorMod.type.boots=é´å­ -armorMod.type.chestplate=胸甲 +armorMod.slot=æ§½ä½: +armorMod.mod.auto=从日本进å£. +armorMod.mod.bandaid=3%% 的几率让你å—到伤害时HP回满$ (3%% 的几率HP回满) +armorMod.mod.bathwater=使攻击者中毒$ (让攻击者中毒) +armorMod.mod.charm=你感å—到了ç¥ç¦. +armorMod.mod.charm.protection=使陨石å移以远离玩家.$陨石ä¸å†ç ´åæ–¹å—.$å°†è…化广播的伤害å‡åŠ +armorMod.mod.charm.meteor=ç¦æ­¢é™¨çŸ³ç”Ÿæˆ.$无视è…化广播的伤害 +armorMod.mod.cladding= è¾å°„抗性$ è¾å°„抗性) +armorMod.mod.defuser=拆除附近爬行者引信$ (拆除爬行者引信) +armorMod.mod.gasmask=有毒气体防护$ç»å¯¹ä¸ä¼šæä¾›çš„å±å®³é˜²æŠ¤:$ (有毒气体防护) +armorMod.mod.health= 生命值$怀旧 +armorMod.mod.Ink=10%% 的几率å…疫伤害$花朵的护佑!$ (10%% 的几率å…疫伤害) +armorMod.mod.Insert=%% 伤害$%% 弹射物伤害$%% 爆炸伤害$%% 移动速度$è€ä¹… +armorMod.mod.Iron=+0.5 抗击退性$ (+0.5 抗击退性) +armorMod.mod.Knife=痛苦.$ $很疼, 䏿˜¯å—? +armorMod.mod.Lens=嫿˜Ÿé¢‘é“: $ (频é“: %%d) +armorMod.mod.Lodestone=å¸å¼•附近的掉è½ç‰©$掉è½ç‰©å¸å¼•范围: %%d$ (ç£åŠ›èŒƒå›´: %%d) +armorMod.mod.Milk=ç§»é™¤è´Ÿé¢æ•ˆæžœ$ (ç§»é™¤è´Ÿé¢æ•ˆæžœ) +armorMod.mod.MorningGlory=5%% 的几率在被击中时得到抗性æå‡æ•ˆæžœ, å…疫凋零效果$ (5%% 的几率得到抗性æå‡æ•ˆæžœ, å…疫凋零效果) +armorMod.mod.Obsidian=使掉è½çš„盔甲åšä¸å¯æ‘§$ (使掉è½çš„盔甲åšä¸å¯æ‘§) +armorMod.mod.Pads=%% æ‘”è½ä¼¤å®³$行走时å¯ä¸ºç›”甲充电$%% æ‘”è½ä¼¤å®³ / 行走时å¯ä¸ºç›”甲充电) +armorMod.mod.Polish=5%% 的几率å…疫伤害$ (5%% 的几率å…疫伤害) +armorMod.mod.Quartz=æ¯å—一次å—到伤害将移除 10 RAD$ (æ¯å—一次å—到伤害将移除10 RAD) +armorMod.mod.Revive= æ¡é¢å¤–生命 +armorMod.mod.Revive.scrumpy=但,但你是怎么活下æ¥çš„?$我当时å–醉了. +armorMod.mod.Revive.wild_p=§8爆炸 §cå应 §8局部 §c装甲 +armorMod.mod.Revive.fabsols_vodka=æ–°é—»:$§c§l一男å­åœ¨æžåº¦æ„¤æ€’çš„æƒ…å†µä¸‹æ‹’ç»æ­»äº¡.$ $§o"我没这功夫去死" 该å当地$ç”·å­åœ¨æŠŠç¾éš¾æœ¬èº«åœ¨ç‰©ç†å±‚é¢ä¸Šçš„体现$æ’•æˆä¸¤åŠåŽå¦‚是说é“. +armorMod.mod.Sensor=有å±é™©æ°”体在附近时å‘出蜂鸣音$在背包中或装é…于装甲时工作$ (检测气体) +armorMod.mod.Serum=解除中毒效果并替æ¢ä¸ºåЛ釿•ˆæžœ$ (解除中毒效果并替æ¢ä¸ºåЛ釿•ˆæžœ) +armorMod.mod.Servos=装é…于胸甲时: 给予 急迫 I / 伤害 +50%%$装é…于护腿时: 移动速度 +25%% / 给予 跳跃æå‡ II$ (给予 急迫 I / 伤害 +50%%)$ (移动速度 +25%% / 给予 跳跃æå‡p II) +armorMod.mod.Servos.desh=装é…于胸甲时: 给予 急迫 III / 伤害 +150%%$装é…于护腿时: 移动速度d +50%% / 给予 跳跃æå‡ III$ (给予 急迫 III / 伤害e +150%%)$ (移动速度 +50%% / 给予 跳跃æå‡ III) +armorMod.mod.Shackles=æˆ‘è®©ä½ è¯´è¯æ—¶,ä½ æ‰èƒ½è¯´è¯.$æˆ‘è®©ä½ åƒæ—¶,ä½ æ‰èƒ½åƒ.$我让你死时,ä½ æ‰èƒ½æ­».$∞ æ¡é¢å¤–生命$ (∞ æ¡é¢å¤–生命) +armorMod.mod.Tesla=电击附近的生物 (需è¦å…¨å¥—电动套装)$ (电击附近的生物) +armorMod.mod.TwoKick="我还有更糟的"$ (Shotgun punches) +armorMod.mod.V1=é²œè¡€å³æ˜¯ç‡ƒæ–™$ (é²œè¡€å³æ˜¯ç‡ƒæ–™) +armorMod.mod.WD40=-80%%对盔甲的è€ä¹…æŸè€—度, +2 生命值$ (-80%% 对盔甲的è€ä¹…æŸè€—度 / +2 生命值) +armorMod.type.boots=é´å­é…ä»¶ +armorMod.type.chestplate=胸甲é…ä»¶ armorMod.type.cladding=覆层 armorMod.type.helmet=头盔 armorMod.type.insert=æ’æ¿ @@ -205,11 +243,12 @@ book.error.page5=§l错误类型:§r "错误_错误区段" §læè¿°:§r ç²’å­ book.error.title6=错误 0x06 [分æžå®¤è¿‡é•¿] book.error.page6=§l错误类型:§r "错误_分æžå®¤è¿‡é•¿" §læè¿°:§r ç²’å­å·²é€šè¿‡ä¸‰ä¸ªä»¥ä¸Šæ‰€éœ€çš„æœ‰æ•ˆåˆ†æžå®¤æ®µã€‚ §lä¿®å¤æ–¹å¼:§r ç¡®ä¿çŽ¯å½¢åŠ é€Ÿå™¨çš„åˆ†æžå®¤é•¿åº¦æ­£å¥½ä¸º3个方å—, 直线加速器的分æžå®¤é•¿åº¦è‡³å°‘为2个方å—。 è¿˜è¦æ£€æŸ¥ç²’å­æ˜¯å¦æœªé€šè¿‡åˆ†æ”¯æˆ– 环形加速器中的多个分æžå®¤ã€‚ book.error.title7=错误 0x07 [分æžå®¤è¿‡çŸ­] -book.error.page7=§l错误类型:§r "错误_分æžå®¤è¿‡çŸ­" §læè¿°:§r ç²’å­å·²ç¦»å¼€åˆ†æžå®¤ï¼Œå°½ç®¡ä¸ç¬¦åˆé•¿åº¦è¦æ±‚。 §lä¿®å¤æ–¹å¼:§r ç¡®ä¿çŽ¯å½¢åŠ é€Ÿå™¨ä¸Šçš„åˆ†æžå®¤æ­£å¥½æœ‰3个方å—长。 æœ‰æ•ˆçš„åˆ†æžæ®µæ²¡æœ‰çº¿åœˆï¼Œé•€å±‚完全由分æžå®¤å£/窗组æˆã€‚ 带有线圈的分æžå®¤è¢«è§†ä¸ºè§„则段。 -book.error.title8=错误 0x08 [二æžç®¡æ–¹å‘错误] -book.error.page8=§l错误类型:§r "错误_二æžç®¡æ–¹å‘错误" §læè¿°:§r 该粒å­ä¸Žè‚–特基粒å­äºŒæžç®¡çš„éžè¾“入侧碰撞。§lä¿®å¤æ–¹å¼:§r 检查二æžç®¡çš„é…ç½®æ˜¯å¦æ­£ç¡®ã€‚ ç²’å­åªèƒ½ä»Žå¸¦æœ‰ç»¿è‰²å‘内箭头的侧é¢è¿›å…¥äºŒæžç®¡ã€‚ -book.error.title9=错误 0x09 [多处分支] -book.error.page9=§l错误类型:§r "错误_多处分支" §læè¿°:§r ç²’å­åˆ°è¾¾å…·æœ‰å¤šä¸ªå‡ºå£çš„转弯处。§lä¿®å¤æ–¹å¼:§r 如果你的对撞机是正常的,检查所有需è¦çš„线圈是å¦éƒ½å­˜åœ¨ï¼ˆå³çº¿åœˆä¸­æ²¡æœ‰ç¼ºæ¼ï¼‰ã€‚å¦‚æžœè½¬å¼¯å¤„æ‰“ç®—è¿›è¡Œåˆ†æ”¯ï¼Œåˆ™éœ€è¦æ­£ç¡®æ”¾ç½®çš„肖特基粒å­äºŒæžç®¡ã€‚ +book.error.page7=§l错误åç§°:§r "错误_分æžå®¤è¿‡çŸ­" §l说明:§r ç²’å­ç¦»å¼€äº†åˆ†æžå®¤,尽管分æžå®¤ä¸ç¬¦åˆé•¿åº¦è¦æ±‚. §l解决方法:§r ç¡®ä¿çŽ¯åž‹åŠ é€Ÿå™¨ä¸Šçš„åˆ†æžå®¤æ­£å¥½æœ‰3格长. 有效的分æžå®¤éƒ¨åˆ†æ²¡æœ‰çº¿åœˆ, 镀层完全由分æžå®¤å£/窗组æˆ. 带有线圈的分æžå®¤ä¼šè¢«è§†ä¸ºæ™®é€šåŠ é€Ÿéƒ¨åˆ†. +book.error.title8=错误 0x08 [ç²’å­ä¸Žè‚–特基粒å­äºŒæžç®¡ç¢°æ’ž] +book.error.page8=§l错误åç§°:§r "错误_ç²’å­ä¸Žè‚–特基粒å­äºŒæžç®¡ç¢°æ’ž" §l说明:§r 该粒å­ä¸Žè‚–特基粒å­äºŒæžç®¡çš„éžè¾“入侧碰撞. §l解决方法:§r 检查二æžç®¡çš„æ–¹å‘é…ç½®æ˜¯å¦æ­£ç¡®. ç²’å­åªèƒ½ä»Žå¸¦æœ‰ç»¿è‰²å‘内箭头的侧é¢è¿›å…¥äºŒæžç®¡. +book.error.title9=错误 0x09 [转弯处分岔] +book.error.page9=§l错误åç§°:§r "错误_转弯处分岔" §l说明:§r ç²’å­å·²åˆ°è¾¾å…·æœ‰å¤šä¸ªå‡ºå£çš„转弯处. §l解决方法:§r 如果你的æ‹å¼¯å¤„是正常的, 检查所有需è¦çš„线圈是å¦éƒ½å­˜åœ¨(å³çº¿åœˆå±‚中没有孔). 如果转弯处打算进行分支, åˆ™éœ€è¦æ­£ç¡®é…置的肖特基粒å­äºŒæžç®¡. + book.rbmk.cover=$我的第一个$RBMK石墨å¼å应堆:$建造一个$å应堆$的基础知识 book.rbmk.title1=ä»‹ç» book.rbmk.page1=§lRBMK石墨å¼å应堆§r是一个完全模å—化的核å应堆. 与大多数其他å应堆ä¸åŒçš„æ˜¯, 该å应堆没有"多方å—结构核心"和尺寸上的é™åˆ¶, 而å应堆的性能和效率仅å–决于你是如何建造它的, 以åŠå„个组件如何相互作用. @@ -221,15 +260,15 @@ book.rbmk.title4=控制棒 book.rbmk.page4=å应堆中的 §l控制棒§r å°†å‡å°‘中å­é€šè¿‡å®ƒçš„æ•°é‡. 完全æ’入时, 它会阻挡所有中å­; 当æ’å…¥ä¸€åŠæ—¶, 它åªä¼šé˜»æŒ¡ä¸€åŠä¸­å­. 控制棒用于调节å应堆的活跃状æ€å’Œä½¿å…¶å…³é—­. book.rbmk.title5=控制棒 - 使用 book.rbmk.title5.scale=0.9 -book.rbmk.page5=å½“å‰æŽ§åˆ¶æ£’æ’入的程度将显示在GUI的中心. 边的彩色按钮将把控制棒添加到ä¸åŒçš„颜色组中, 这对于在 §lRBMK石墨å¼å应堆§r 控制å°ä¸Šå¿«é€Ÿé€‰æ‹©å±å¹•上ä¸åŒåŒºåŸŸçš„æŽ§åˆ¶æ£’éžå¸¸æœ‰ç”¨. å³ä¾§çš„æŒ‰é’®å…è®¸æ‚¨ä»¥æ¯æ¬¡25%çš„å¢žé‡æ‰‹åЍæ’å…¥. +book.rbmk.page5=å½“å‰æŽ§åˆ¶æ£’æ’入的程度将显示在GUI的中心. 边的彩色按钮将把控制棒添加到ä¸åŒçš„颜色组中, 这对于在 §lRBMK石墨å¼å应堆§r 控制å°ä¸Šå¿«é€Ÿé€‰æ‹©å±å¹•上ä¸åŒåŒºåŸŸçš„æŽ§åˆ¶æ£’éžå¸¸æœ‰ç”¨. å³ä¾§çš„æŒ‰é’®å…è®¸æ‚¨ä»¥æ¯æ¬¡25%%çš„å¢žé‡æ‰‹åЍæ’å…¥. book.rbmk.title6=自动控制棒 book.rbmk.page6=§L自动控制棒§r 与常规控制棒几乎相åŒ, 但它们ä¸èƒ½æ‰‹åŠ¨è°ƒæ•´, 而是根æ®å½“剿¸©åº¦æ¥è°ƒæ•´æŽ§åˆ¶æ£’æ’入的程度. 使用哪ç§åŠŸèƒ½, 在多少的温度æ’入多少的深度必须被事先设定好. book.rbmk.title7=è’¸æ±½ç®¡é“ book.rbmk.page7=å应堆中的 §l蒸汽管é“§r 是唯一能有效é™ä½Žå应堆热水平的组件. 如果一个蒸汽管é“组件的沸点高于其设定的蒸汽类型的沸点, 那么它将试图消耗尽å¯èƒ½å¤šçš„æ°´ 并产生尽å¯èƒ½å¤šçš„蒸汽æ¥å†·å´åˆ°æ²¸ç‚¹ä»¥ä¸‹. book.rbmk.title8=碳化钨中å­å射器 -book.rbmk.page8=å应堆中的 §l碳化钨中å­å射器§r 将阻止中å­çš„通过, 相å,中å­å°†è¢«å射回它们æ¥è‡ªçš„燃料棒上. è¿™å¯¹äºŽä½¿ç”¨ä¸­å­æ˜¯æœ‰ç”¨çš„, å¦åˆ™è¿™äº›ä¸­å­ä¸€æ—¦ç¦»å¼€å应堆就会被浪费掉. +book.rbmk.page8=å应堆中的 §l碳化钨中å­å射器§r 将阻止中å­çš„通过, 相å, 中å­å°†è¢«å射回它们æ¥è‡ªçš„燃料棒上. è¿™å¯¹äºŽä½¿ç”¨ä¸­å­æ˜¯æœ‰ç”¨çš„, å¦åˆ™è¿™äº›ä¸­å­ä¸€æ—¦ç¦»å¼€å应堆就会被浪费掉. book.rbmk.title9=硼中å­å¸æ”¶å™¨ -book.rbmk.page9=§l硼中å­å¸æ”¶å™¨Â§r åªæ˜¯é˜»æŒ¡ä¸­å­. è¢«å¸æ”¶çš„中å­ä¸ä¼šäº§ç”Ÿçƒ­é‡ï¼Œä¼šè¢«æœ‰æ•ˆåœ°å¸æ”¶. 这有助于防止燃料棒å‘生过度å应从而超出临界值. +book.rbmk.page9=§l硼中å­å¸æ”¶å™¨Â§r åªæ˜¯é˜»æŒ¡ä¸­å­. è¢«å¸æ”¶çš„中å­ä¸ä¼šäº§ç”Ÿçƒ­é‡, ä¼šè¢«æœ‰æ•ˆåœ°å¸æ”¶. 这有助于防止燃料棒å‘生过度å应从而超出临界值. book.rbmk.title10=石墨慢化剂 book.rbmk.page10=§l石墨慢化剂§r 把穿过它的快中å­è½¬æ¢æˆæ…¢ä¸­å­. 大多数核燃料å应释放出快中å­, 而引起裂å˜éœ€è¦æ…¢ä¸­å­, 所以强烈建议使用慢化剂. book.rbmk.title11=结构柱 @@ -237,180 +276,164 @@ book.rbmk.page11=§l结构柱§r 坹䏭孿²¡æœ‰ä»»ä½•å½±å“也没有任何特 book.rbmk.title12=æŽ§åˆ¶å° book.rbmk.page12=§lRBMK石墨å¼å应堆控制å°Â§r å…许你远程控制å应堆. 使用 §lRBMK石墨å¼å应堆连接装置记录å应堆§r ç„¶åŽæ½œè¡Œå³å‡»æŽ§åˆ¶å°å°±èƒ½æŠŠå应堆和控制å°è¿žæŽ¥èµ·æ¥. 一个控制å°åªèƒ½æŽ§åˆ¶15x15个组件, 对于大型å应堆å¯ä»¥ä½¿ç”¨å¤šä¸ªæŽ§åˆ¶å°. book.rbmk.title13=控制å°çš„使用 -book.rbmk.page13=å•击å±å¹•ä¸Šçš„ç»„ä»¶å°†é€‰æ‹©æˆ–å–æ¶ˆé€‰æ‹©å®ƒä»¬. 使用彩色按钮,å¯ä»¥å¿«é€Ÿé€‰æ‹©è¯¥é¢œè‰²ç»„中的所有控制棒. 按钮“Aâ€å°†é€‰æ‹©æ‰€æœ‰æŽ§åˆ¶æ£’, “Xâ€å°†å–消选择所有控制棒. +book.rbmk.page13=å•击å±å¹•ä¸Šçš„ç»„ä»¶å°†é€‰æ‹©æˆ–å–æ¶ˆé€‰æ‹©å®ƒä»¬. 使用彩色按钮, å¯ä»¥å¿«é€Ÿé€‰æ‹©è¯¥é¢œè‰²ç»„中的所有控制棒. 按钮“Aâ€å°†é€‰æ‹©æ‰€æœ‰æŽ§åˆ¶æ£’, “Xâ€å°†å–消选择所有控制棒. book.rbmk.page14=在绿色框中输入一个介于0å’Œ100之间的数字, ç„¶åŽæŒ‰ä¸‹æ—边的按钮, 将所有选定的控制棒拔出程度设置到该ä½ç½®. 按钮“AZ-5â€å°†ä½¿æ‰€æœ‰æŽ§åˆ¶æ£’完全æ’å…¥. book.rbmk.title15=核燃料 book.rbmk.page15= §l核燃料§r çš„å应å–决于许多因素. ä¸»è¦æ˜¯ §l核燃料强度§r, §l氙中毒程度§r 和接收到的 §l䏭孿•°é‡Â§r. 氙元素会在核燃料的中å­å«é‡è¾ƒä½Žæ—¶ç§¯èšèµ·æ¥, 并在正常è¿è¡Œæ—¶ç‡ƒçƒ§æ®†å°½. 中å­çš„æ•ˆçއå–决于其类型, 大多数核燃料 §l用慢中å­è½°å‡»æ¥è£‚å˜æ•ˆæžœæœ€å¥½Â§r. book.rbmk.title16=ç†”æ¯ book.rbmk.page16=§4§lå°½é‡é¿å…å‘生, ä½ ä¸ä¼šæƒ³è®©è¿™æ ·ä¸€åœºæ ¸ç¾éš¾å‘生在你的存档或æœåŠ¡å™¨é‡Œçš„. -book.starter.cover=é‡å»º$社会的实业家$æŒ‡å— + +book.starter.cover=é‡å»ºå·¥ä¸šç¤¾ä¼šçš„$一本实业家$çš„æŒ‡å— book.starter.title1=ä»‹ç» -book.starter.page1=如果你正在读这篇文章,很å¯èƒ½ç¤¾ä¼šå·²ç»å› è¿™æ ·æˆ– 那样的方å¼å®Œå…¨å´©æºƒäº†ã€‚政府ã€å›½å®¶å’Œæƒå¨æ˜¯è¿‡åŽ»çš„æ¦‚å¿µï¼Œ ä»¥åŠæ–‡æ˜Žç”Ÿæ´»çš„æ‰€æœ‰ä¾¿åˆ©è®¾æ–½ã€‚因此,本指å—å°† å‘Šè¯‰æ‚¨å¦‚ä½•é€šè¿‡é‡æ–°åˆ›é€ è¿‡åŽ»çš„è¡Œä¸šå’ŒæŠ€æœ¯ æ¥æ”¹å–„自己的生活,从而改å˜è¿™ç§çŠ¶å†µã€‚ -book.starter.title2=ç…¤å’ŒèŠ¥å­æ°” -book.starter.page2=虽然无法预测世界末日åŽçš„实际状æ€ï¼Œ 但目å‰å½¢å¼çš„æˆ˜äº‰å’Œå·¥ä¸šä¸å¤ªå¯èƒ½æ²¡æœ‰ç»“æŸã€‚ ä¸ºäº†ä¿æŠ¤è‡ªå·±çš„è‚ºéƒ¨ï¼Œä¸€ç§æœ‰æ•ˆä¸”廉价的方法是 在§L布§r上å°ä¾¿ï¼Œåˆ¶ä½œä¸€ä¸ªÂ§L防毒é¢å…·Â§r, 以使你å…å—ç…¤å°˜æˆ–èŠ¥å­æ°”的伤害. -book.starter.title3=é“砧和锻压机 -book.starter.page3=开始工业振兴的精髓是§l砧§r和§lç«åŠ›é”»åŽ‹æœºÂ§r. é“ç §å°†å…è®¸æ‚¨æ‰‹åŠ¨ç»„åˆæ—©æœŸæœºæ¢°ï¼Œå¦‚组装机, 而ç«åŠ›é”»åŽ‹æœºå°†å…许您制作 无法用é“ç §åˆ¶ä½œçš„æ¿æã€ç”µçº¿å’Œç”µè·¯. +book.starter.page1=如果你读到这篇文章, 那么很有å¯èƒ½ç¤¾ä¼šå·²ç»ä»¥è¿™æ ·æˆ–那样的方å¼å®Œå…¨å´©æºƒäº†. 政府,国家和æƒå¨å·²ç»æ˜¯è¿‡åŽ»çš„æ¦‚å¿µâ€”â€”ä»¥åŠæ–‡æ˜Žç”Ÿæ´» 的所有便利设施. å› æ­¤,本指å—å°†å‘Šè¯‰ä½ å¦‚ä½•é€šè¿‡é‡æ–°åˆ›é€ è¿‡åŽ»çš„è¡Œä¸šå’Œ 科学技术 æ¥æ”¹å–„你自己的生活. +book.starter.title2=ç…¤å°˜ä¸ŽèŠ¥å­æ°” +book.starter.page2=虽然ä¸å¯èƒ½é¢„测世界在åŽä¸–界末日时代的实际状æ€, 但目å‰å½¢å¼çš„æˆ˜äº‰å’Œå·¥ä¸šæ´»åЍä¸å¤ªå¯èƒ½æ²¡æœ‰ç»“æŸ. ä¸ºäº†ä¿æŠ¤è‡ªå·±çš„è‚ºéƒ¨, ä¸€ç§æœ‰æ•ˆä¸”廉价的方法是在一些 §l布料§r上å°ä¾¿æ¥åˆ¶ä½œä¸€ä¸ª §l战壕版粗制防护é¢ç½©Â§r, ä»¥ä¿æŠ¤ä½ å…å—ç…¤å°˜æˆ–èŠ¥å­æ°”的伤害, 以防你é‡åˆ°å…¶ä¸­ä»»ä½•ä¸€ç§æƒ…况. +book.starter.title3=砧与锻压机 +book.starter.page3=开始你的工业振兴的核心是一个§lEåˆå‰æœŸçš„æœºæ¢°, 如组装机, 而ç«åŠ›é”»åŽ‹æœºå°†å…è®¸æ‚¨åˆ¶ä½œæ— æ³•ç”¨ç §é”¤å‡»åœ¨ä¸€èµ·çš„æ¿æ, 金属线和电路. book.starter.title4=æ¨¡æ¿ -book.starter.page4=ä¸ºäº†å°†é‡‘å±žå†²åŽ‹æˆæœ‰ç”¨çš„ 形状ã€ç»„装机械和执行 化学å应,您需è¦åˆ›å»º 一个§Læœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹Â§r, 以创建å³ä¾§æ˜¾ç¤ºçš„ å„ç§é”»æ¨¡ä»¥åŠé…方。 -book.starter.title5=废墟探索 -book.starter.page5=æ ¹æ®æœ€åˆçš„世界末日事件对世界现有结构的影å“程度, 有å¯èƒ½ç›´æŽ¥ä»Žä¸­æŠ¢æ•‘å‡ºè®¸å¤šæœ‰ç”¨çš„ææ–™å’Œæœºå™¨ã€‚ é’¢é“等金属åˆé‡‘ã€ç”µè·¯ç­‰éƒ¨ä»¶ï¼Œç”šè‡³æ ¸ç”µç«™çš„ è£‚å˜ææ–™éƒ½å¯èƒ½åœ¨ç­‰ç€ä½ ã€‚ 然而,è¦å°å¿ƒæŸäº›åºŸå¢Ÿï¼Œå› ä¸ºé‚£é‡Œå¯èƒ½æ½œä¼ç€è¿‡åº¦çš„å±é™©ï¼Œ å°±åƒè‰ä¸›ä¸­çš„蛇一样; 等待ç€ç”¨è¾å°„ã€é™·é˜±æˆ–æ— æ³•å½¢å®¹çš„ææ€–袭击你... +book.starter.page4=ä¸ºäº†å°†é‡‘å±žå†²åŽ‹æˆæœ‰ç”¨çš„ 形状,ç»„è£…æˆæœºå™¨å¹¶è¿›è¡ŒåŒ– å­¦å应,您需è¦åˆ›å»ºä¸€ä¸ª §læœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹Â§ræ¥åˆ¶é€ å³ 侧显示的å„ç§å†²åŽ‹å’Œæ¨¡æ¿. +book.starter.title5=æ‹¾è’ +book.starter.page5=æ ¹æ®æœ€åˆçš„世界末日事件对世界现有建筑的破å程度, 你有å¯èƒ½ç›´æŽ¥ä»Žä¸­å›žæ”¶è®¸å¤šæœ‰ç”¨çš„ææ–™å’Œæœºå™¨. é’¢é“等金属åˆé‡‘, 电路等零件, 甚至核电站的å¯è£‚å˜ç‰©è´¨éƒ½å¯èƒ½åœ¨ç­‰ç€ä½ . 然而, è¦å°å¿ƒæŸäº›åºŸå¢Ÿ, 因为那里å¯èƒ½æ½œä¼ç€è¿‡åº¦çš„å±é™©, å°±åƒè‰ä¸›ä¸­çš„蛇一样; ç­‰ç€ç”¨è¾å°„, é™·é˜±æˆ–å…¶ä»–æ— æ³•å½¢å®¹çš„ææ€–袭击你... book.starter.title6=早期机械 -book.starter.page6a=您应首先装é…çš„ä¸¤å°æœºå™¨æ˜¯Â§l高炉§r和§lè£…é…æœºÂ§r. å‰è€…å…许您制造åˆé‡‘,如§L钢§rã€Â§l工业级铜§r和§l高级åˆé‡‘§rï¼› 你需è¦å°†è¿™äº›é‡‘属用于机器的机身〠电路的布线ã€é«˜çº§ç”µç£é“ç­‰. -book.starter.page6b=汇编程åºå°†ç”¨äºŽåˆ›å»ºæœ¬æŒ‡å—中æè¿°çš„几乎所有其他机器. 您需è¦ä¸€ä¸ªç”µæºï¼Œå¦‚§Lç«åŠ›Â§r§Lå‘电机§r或§L太阳能锅炉§r. -book.starter.page7a=§l粉碎机§r以åŠä¸€å¯¹ç²‰ç¢Žæœºåˆ€ç‰‡å°†ä¼šéžå¸¸æœ‰ç”¨ï¼Œ 能将大多数矿石粉碎æˆå¯ç†”ç‚¼çš„ç²‰æœ«ï¼Œä½¿å…¶äº§é‡æé«˜ä¸€å€. 这些粉末对于开始为å„ç§æœºå™¨åˆ¶ä½œç”µè·¯ä¹Ÿè‡³å…³é‡è¦ï¼Œ 例如§l增强电路§r和§l超频电路§r。 -book.starter.page7b=使用您的新机器,您å¯ä»¥åˆ›å»ºÂ§L化工厂§r, ç”¨äºŽåˆæˆæ›´å¥½çš„ç”µè·¯ã€æ··å‡åœŸæˆ–进行石化产å“加工等。 +book.starter.page6a=æ‚¨åº”è¯¥é¦–å…ˆç»„è£…çš„ä¸¤å°æœºå™¨æ˜¯Â§l高炉§r 和§lè£…é…æœºÂ§r. å‰è€…å°†å…许您制造åˆé‡‘, 如§l钢§r, §l紫铜§r, 和§l高级åˆé‡‘§r; 你需è¦å°†è¿™äº›é‡‘属用于机器的机身, 电路的布线, 先进的电ç£é“等等. +book.starter.page6b=è£…é…æœºå°†ç”¨äºŽåˆ¶é€ æœ¬æŒ‡å—中æè¿°çš„几乎所有其他机器. 您需è¦ä¸€ä¸ªç”µæº, 如§lç«åŠ›Â§r§lå‘电机§r或§l太阳能锅炉§r. +book.starter.page7a=§l粉碎机§r以åŠä¸€å¯¹ç²‰ç¢Žæœºåˆ€ç‰‡å°†éžå¸¸æœ‰ç”¨, å¯ä»¥é€šè¿‡ç²‰ç¢Žæˆå¯å†¶ç‚¼çš„粉末, å°†å¤§å¤šæ•°çŸ¿çŸ³çš„äº§é‡æé«˜ä¸€å€. è¿™äº›ç²‰æœ«å¯¹äºŽå¼€å§‹ä¸ºåˆæˆå„ç§æœºå™¨è€Œåˆ¶é€ çš„电路 也至关é‡è¦,例如§l增强§r和§l超频§r电路. +book.starter.page7b=使用您的新机器, 您å¯ä»¥ç»„装出§l化工装置§r, ç”¨äºŽåˆæˆæ›´å¥½çš„电路, æ··å‡åœŸ, 石化产å“ç­‰. book.starter.title8=黑金 -book.starter.page8a=使用§l石油§l储层§r§l探测仪§r, 您å¯ä»¥é€šè¿‡æµ‹é‡ä¸€ä¸ªåŒºåŸŸ æ¥å‘现地下的油岩以 放置§l石油钻机§r或 §l钻油塔§ræ¥å¼€é‡‡ è®°ä½,石油储备会éšç€æ—¶é—´ 的推移而耗尽 +book.starter.page8a=使用§l石油§l储层§r§l探测仪§r, 您å¯ä»¥é€šè¿‡æµ‹é‡ä¸€ä¸ªåŒºåŸŸ æ¥å‘现地下石油沉积物以 放置§læ¢å¼æŠ½æ²¹æœºÂ§r或 §l石油钻井塔§r. è®°ä½,石油储备会éšç€æ—¶é—´ 的推移而耗尽. book.starter.page8b=在§l炼油厂§r中æç‚¼å’Œåˆ†ç¦»çŸ³æ²¹ æˆåˆ†ä¹‹å‰,你必须在§l锅炉§r中将 石油加热至300°C. -book.starter.title9=çŸ³æ²¹åŒ–å·¥äº§å“ -book.starter.page9=使用§l化工厂§r, §l分é¦Â§r§l塔§r和§l催化裂化§r§l塔§r, ä½ å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“. §l催化裂化§r§l塔§r, å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“。 例如:§lèšåˆç‰©Â§r或§l电木§r, è€ç”¨åˆæŸ”性的塑料; §lDesh§r, 一ç§éžå¸¸è€ç”¨å’Œè€çƒ­çš„稀土金属åˆé‡‘; §l固体燃料§r, å¯ç‡ƒçƒ§èŽ·å–能é‡; 甚至是§l液体燃料§r, 比如§l汽油§r, §l柴油§r, §l煤油§r等等。 -book.starter.title10=先进的机械 -book.starter.page10=通过一套æˆç†Ÿçš„石油加工系统,您å¯ä»¥åˆ¶é€ Â§l离心机§r, 这将使矿石的产é‡å¢žåР䏉å€; §l矿物§l结晶机§rå°† 矿石结晶åŽ,产é‡å°†è¿›ä¸€æ­¥æé«˜; 以åŠÂ§lSILEXåŒä½ç´ æ¿€å…‰åˆ†ç¦»å®¤+§lFEL§r, 这两个现代工程的奇迹å¯ä»¥è½»æ¾åœ°åˆ†ç¦»ææ–™çš„åŒä½ç´ . ä½ éœ€è¦æ›´å¤šçš„èƒ½é‡æ¥é©±åŠ¨è¿™äº›; å¯é€šè¿‡Â§l柴油å‘电机§r,§l工业å‘电机§r, 甚至核ååº”å †ç­‰æ¥æºèŽ·å–æ›´å¤šçš„能é‡ã€‚ -book.starter.title11=特殊地层 -book.starter.page11=在你行走的地é¢ä¹‹ä¸‹ï¼Œæœ‰å‡ ä¸ª 自然形æˆçš„§l岩层§r,或者说特殊的 矿层和岩层。 §l片岩地层§r是è“色的å«é”‚层, 其中有铀ã€é“ã€é“œã€çŸ³æ£‰å’Œå…¶ä»–矿石 å¯ä¾›ä½ ä½¿ç”¨ã€‚ §læ·±æ¿å²©å±‚§r嫿œ‰å¤§é‡ç¨€æœ‰çŸ¿ç‰©, 如§l锆§rã€Â§l硼§r和§l朱砂§r等, 但你需è¦ç‚¸è¯æ‰èƒ½é‡‡é›† +book.starter.title9=石油化工 +book.starter.page9=使用§l化工厂§r, §l分é¦Â§r§l塔§r和§l催化裂化§r§l塔§r, ä½ å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“. §l催化裂化§r§l塔§r, å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“. 例如:§lèšåˆç‰©Â§r或§l电木§r, è€ç”¨åˆæŸ”性的塑料; §l德什§r, 一ç§éžå¸¸è€ç”¨å’Œè€çƒ­çš„稀土金属åˆé‡‘; §l固体燃料§r, å¯ç‡ƒçƒ§èŽ·å–能é‡; 甚至是§l液体燃料§r, 比如§l汽油§r, §l柴油§r, §l煤油§r等等. +book.starter.title10=高级机械 +book.starter.page10=通过一套æˆç†Ÿçš„石油加工系统,您å¯ä»¥åˆ¶é€ Â§l离心机§r, 这将使矿石的产é‡å¢žåР䏉å€; §l矿物§l结晶机§rå°† 矿石结晶åŽ,产é‡å°†è¿›ä¸€æ­¥æé«˜; 以åŠÂ§lSILEXåŒä½ç´ æ¿€å…‰åˆ†ç¦»å®¤+§lFEL§r, 这两个现代工程的奇迹å¯ä»¥è½»æ¾åœ°åˆ†ç¦»ææ–™çš„åŒä½ç´ . ä½ éœ€è¦æ›´å¤šçš„èƒ½é‡æ¥é©±åŠ¨è¿™äº›; å¯é€šè¿‡Â§l柴油å‘电机§r,§l工业å‘电机§r, 甚至核ååº”å †ç­‰æ¥æºèŽ·å–æ›´å¤šçš„能é‡. +book.starter.title11=特殊岩层 +book.starter.page11=在你行走的地é¢ä¹‹ä¸‹ï¼Œæœ‰å‡ ä¸ªè‡ª ç„¶å½¢æˆçš„§l岩层§r,或者说特殊的矿 层和岩层. §l片岩地层§r是è“色的å«é”‚层,填充 有铀,é“,铜,石棉和其他矿石å¯ä¾› 你自己使用. §læ·±æ¿å²©å±‚§r嫿œ‰å¤§é‡ç¨€æœ‰çŸ¿ç‰©, 如§l锆§r和§l硼§r,但 需è¦ç‚¸è¯æ‰èƒ½é‡‡é›†. book.starter.title12=è¾å°„ -book.starter.page12a=本书其余部分将讨论与è¾å°„有关的问题。 为了您和他人的安全,我将æä¾›ä¸€äº›å»ºè®®ä»¥è¯´æ˜Žå¦‚ä½•ç¼“è§£å’Œå¤„ç†æš´éœ²äºŽæ­¤çš„风险。 -book.starter.page12b=充分暴露在è¾å°„中会导致身体伤害. 第一步是预防; 一定è¦é™åˆ¶æŽ¥è§¦ï¼Œå¹¶ç©¿æˆ´é˜²æŠ¤è£…备,如§l防è¾å°„套装§r, æˆ–åœ¨è¡£æœæˆ–盔甲上加装§l防è¾å°„覆层/涂料§r; 你也å¯ä»¥æœç”¨Â§lRad-X防è¾å°„è¯Â§ræ¥é™åˆ¶ä½ çš„è¾å°„é‡. 多äºäº†çŽ°ä»£åŒ»å­¦ï¼Œç¬¬äºŒæ­¥å¯ä»¥åœ¨å¿…è¦æ—¶ç§»é™¤; 例如,§l玩家§l去污器§r将缓慢å‡å°‘èº«ä½“å¸æ”¶çš„è¾å°„. §l消è¾å®Â§r还å¯ä»¥ç”¨ä½œæš´éœ²åŽé¢„防,快速有效地逆转 电离è¾å°„对身体造æˆçš„æŸå®³ã€‚ +book.starter.page12a=§o本书其余部分将讨论与§oè¾å°„有关的问题. 为了您和其他人的安全,我将æä¾›Â§oä¸€äº›å»ºè®®ä»¥è¯´æ˜Žå¦‚ä½•ç¼“è§£å’Œå¤„ç†æš´éœ²äºŽæ­¤çš„风险.§r +book.starter.page12b=充分暴露在è¾å°„中会导致身体伤害. 第一步是预防; 一定è¦é™åˆ¶æŽ¥è§¦ï¼Œå¹¶ç©¿æˆ´é˜²æŠ¤è£…备,如§l防è¾å°„套装§r, æˆ–åœ¨è¡£æœæˆ–盔甲上加装§l防è¾å°„覆层/涂料§r; 你也å¯ä»¥æœç”¨Â§lRad-X防è¾å°„è¯Â§ræ¥é™åˆ¶ä½ çš„è¾å°„é‡. 多äºäº†çŽ°ä»£åŒ»å­¦ï¼Œç¬¬äºŒæ­¥å¯ä»¥åœ¨å¿…è¦æ—¶ç§»é™¤; 例如,§l玩家§l去污器§r将缓慢å‡å°‘èº«ä½“å¸æ”¶çš„è¾å°„. §l消è¾å®Â§r还å¯ä»¥ç”¨ä½œæš´éœ²åŽé¢„防,快速有效地逆转 电离è¾å°„对身体造æˆçš„æŸå®³. book.starter.title13=铀浓缩 -book.starter.page13=æ ¸å应堆的燃料有几个简å•的选择; 例如,§l天然铀§r或§lé’燃料§r。 然而, 如果你寻找更强力的东西,你å¯ä»¥è®¾ç½®ä¸¤å°Â§l气体离心机§r 的浓缩级è”,用剩余的§lé“€-238§r生产§l铀燃料§r. 你必须将天然铀转化为§l黄饼§rï¼Œç„¶åŽæ˜¯Â§l六氟化§l铀§r. +book.starter.page13=æ ¸å应堆的燃料有几个简å•的选择; 例如,§l天然铀§r或§lé’燃料§r. 然而, 如果你寻找更强力的东西,你å¯ä»¥è®¾ç½®ä¸¤å°Â§l气体离心机§r 的浓缩级è”,用剩余的§lé“€-238§r生产§l铀燃料§r. 你必须将天然铀转化为§l黄饼§rï¼Œç„¶åŽæ˜¯Â§l六氟化§l铀§r. book.starter.title14=èŠåŠ å“¥å应堆 -book.starter.page14=或者,您å¯ä»¥ä½¿ç”¨Â§lèŠåŠ å“¥å应堆§r从天然铀中增殖出 §lå应堆级钚§rï¼Œè¿™æ˜¯ä¸€ç§æ›´å¼ºå¤§çš„燃料. 通过堆å çŸ³å¢¨å—并在其中钻孔,您å¯ä»¥å°†ç‡ƒæ–™æ£’æ’入钚 å’Œä¸­å­æºæ£’,例如§lé•­226-é“䏭孿ºÂ§r,以开始å应. ç¡®ä¿æµ‹è¯•你的设计;为防止过热, å¯èƒ½éœ€è¦éš”开或é™åˆ¶çŸ³å¢¨å—的数é‡ã€‚ +book.starter.page14=或者,您å¯ä»¥ä½¿ç”¨Â§lèŠåŠ å“¥å应堆§r从天然铀中增殖出 §lå应堆级钚§rï¼Œè¿™æ˜¯ä¸€ç§æ›´å¼ºå¤§çš„燃料. 通过堆å çŸ³å¢¨å—并在其中钻孔,您å¯ä»¥å°†ç‡ƒæ–™æ£’æ’入钚 å’Œä¸­å­æºæ£’,例如§lé•­226-é“䏭孿ºÂ§r,以开始å应. ç¡®ä¿æµ‹è¯•你的设计;为防止过热, å¯èƒ½éœ€è¦éš”开或é™åˆ¶çŸ³å¢¨å—的数é‡. book.starter.title15=ZIRNOX锆诺克斯 -book.starter.page15=最终,你å¯ä»¥åˆ¶é€ ä½ çš„第一个§o真正§rçš„èƒ½æºæ¥æº: §lZIRNOX§ræ ¸å应堆. ä¸Žå…¶ä»–èƒ½é‡æºç›¸æ¯”,核ååº”å †éœ€è¦æ›´å¤šçš„准备; é¦–å…ˆï¼Œä½ éœ€è¦æœ‰ä¸€ä¸ªå¼ºæ‚的水æºï¼Œæ¯”如§lé‡åž‹Â§læ— é™æ°´ç½Â§r. è¦ä»Žå应堆堆芯中排出热é‡å¹¶å°†æ°´ç…®æ²¸æˆè’¸æ±½, 你需è¦è¶³å¤Ÿçš„§l二氧化碳§r. ä½ åªéœ€è¦è¶³å¤Ÿçš„压力, ä¸è¦è®©åŽ‹åŠ›Â§o太§r大! 你还需è¦ä¸‰ä¸ªè’¸æ±½æ¶¡è½®æœºæ¥åˆ©ç”¨äº§ç”Ÿçš„蒸汽æ¥åˆ¶é€ èƒ½é‡; §l蒸汽§l轮机§r或§l大型工业§l汽轮机§r将是最佳的. 最åŽï¼Œéœ€è¦ä¸€ä¸ªÂ§l冷å‡å™¨Â§r或§l冷å´å¡”§ræ¥å°†æ®‹ä½™è’¸æ±½å†·å‡æˆæ°´, 在这个冷å´å›žè·¯ä¸­å¯ä»¥å°†å…¶æŽ’空或回收。 +book.starter.page15=最终,你å¯ä»¥åˆ¶é€ ä½ çš„第一个§o真正§rçš„èƒ½æºæ¥æº: §lZIRNOX§ræ ¸å应堆. ä¸Žå…¶ä»–èƒ½é‡æºç›¸æ¯”,核ååº”å †éœ€è¦æ›´å¤šçš„准备; é¦–å…ˆï¼Œä½ éœ€è¦æœ‰ä¸€ä¸ªå¼ºæ‚的水æºï¼Œæ¯”如§lé‡åž‹Â§læ— é™æ°´ç½Â§r. è¦ä»Žå应堆堆芯中排出热é‡å¹¶å°†æ°´ç…®æ²¸æˆè’¸æ±½, 你需è¦è¶³å¤Ÿçš„§l二氧化碳§r. ä½ åªéœ€è¦è¶³å¤Ÿçš„压力, ä¸è¦è®©åŽ‹åŠ›Â§o太§r大! 你还需è¦ä¸‰ä¸ªè’¸æ±½æ¶¡è½®æœºæ¥åˆ©ç”¨äº§ç”Ÿçš„蒸汽æ¥åˆ¶é€ èƒ½é‡; §l蒸汽§l轮机§r或§l大型工业§l汽轮机§r将是最佳的. 最åŽï¼Œéœ€è¦ä¸€ä¸ªÂ§l冷å‡å™¨Â§r或§l冷å´å¡”§ræ¥å°†æ®‹ä½™è’¸æ±½å†·å‡æˆæ°´, 在这个冷å´å›žè·¯ä¸­å¯ä»¥å°†å…¶æŽ’空或回收. book.starter.title16=结论 book.starter.page16=如果你已ç»èµ°åˆ°äº†è¿™ä¸€æ­¥ï¼Œä½ å·²ç»èµ°åœ¨é‡å»ºæ–‡æ˜Žå¤§é“上了. ä½ å·²ç»æˆåŠŸåœ°ç”¨æ ¸èƒ½, çŸ³æ²¹åŒ–å·¥ç­‰é‡æ–°åˆ¶é€ äº†ä¸–界末日å‰çš„那些先进机器. 我ä¸çŸ¥é“你将如何利用这些新å‘现的科技, 但我个人希望你利用这些优势是为了自己和他人的利益 - 或者至少是为了自å«. å†è§! book.starter.title18=关于作者 -book.starter.page18=v?råªæ˜¯ä¸€ä¸ªè¢«å›°åœ¨"传声头åƒ"的§o《一生一次》§r中的 ç°è‰²è™šç©ºä¸­å¤ªä¹…的人. 有一次, ä»–å‘现了一扇工作室的门, 但令他沮丧的是, ä»–å‘现那是一个纸æ¿å‰ªå‡ºæ¥çš„ -#book.rbmk.cover=HOW 2 RBMK:$The Basics$of Reactor$Construction -#book.rbmk.title1=Introduction -#book.rbmk.page1=The §lRBMK§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. -#book.rbmk.title2=Heat -#book.rbmk.page2=As the reactor operates, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a §lsteam channel§r which cools the reactor and produces steam. -#book.rbmk.title3=Fuel Rod -#book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the §lfuel§r used. -#book.rbmk.title4=Control Rod -#book.rbmk.page4=The §lcontrol rod§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. -#book.rbmk.title5=Control Rod - Usage -#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the §lRBMK console§r. The buttons on the right allow for manual insertion in increments of 25%%. -#book.rbmk.title6=Automatic Control Rod -#book.rbmk.page6=§lAutomatic control rods§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. -#book.rbmk.title7=Steam Channel -#book.rbmk.page7=The §lsteam channel§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. -#book.rbmk.title8=Neutron Reflector -#book.rbmk.page8=The §lneutron reflector§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. -#book.rbmk.title9=Neutron Absorber -#book.rbmk.page9=The §lneutron absorber§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. -#book.rbmk.title10=Graphite Moderator -#book.rbmk.page10=The §lgraphite moderator§r will convert fast neutrons passing through it into slow neutrons. Most fuels fission into fast neutrons while needing slow neutrons to split, so using moderators is strongly recommended. -#book.rbmk.title11=Structural Column -#book.rbmk.page11=The §lstructural column§r will not interfere with neutrons, nor does it have special uses. It is recommended to fill the reactor with structural columns where no other parts will be, because structural columns are capable of transporting heat. -#book.rbmk.title12=Console -#book.rbmk.page12=The §lRBMK console§r lets you control the reactor from afar. Using the §lRBMK§r §lconsole linking device§r on an RBMK part and then the console will link the reactor to the console. The console can only manage 15x15 parts, for larger reactors you might want to use multiple consoles. -#book.rbmk.title13=Console Usage -#book.rbmk.page13=Clicking on the parts will select and deselect them. Using the colored buttons, you can quickly select all control rods of that color group. Button 'A' will select all control rods, 'X' will deselect all. -#book.rbmk.page14=Entering a number 0-100 in the green box and then hitting the button next to it will set all selected control rods to this position. Button 'AZ-5' will cause all control rods to fully insert. -#book.rbmk.title15=Fuel -#book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. -#book.rbmk.title16=Meltdown -#book.rbmk.page16=§4§lAvoid. -book_lore.author=ç”±%s +book.starter.page18=væråªæ˜¯ä¸€ä¸ªè¢«å›°åœ¨"传声头åƒ"的§o《一生一次》§r中的 ç°è‰²è™šç©ºä¸­å¤ªä¹…的人. 有一次, ä»–å‘现了一扇工作室的门, 但令他沮丧的是, ä»–å‘现那是一个纸æ¿å‰ªå‡ºæ¥çš„. + + +book_lore.author= %s è‘— book_lore.test.name=测试 book_lore.test.author=那个家伙 -book_lore.test.page.0=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual -book_lore.test.page.1=>你好,在我开始之å‰ï¼Œè®©æˆ‘æ¾„æ¸…æˆ‘ä¸æ˜¯åŒæ€§æ‹ã€‚>åšæˆ‘>今天晚上>18>和我最好的朋å‹å’Œæˆ‘的父æ¯å‡ºåŽ»çŽ©äº†å‡ å¤©>æˆ‘ä»¬å·²ç»æ˜¯æœ€å¥½çš„æœ‹å‹ä¸€å¹´äº†>å–äº†ç‚¹é…’ï¼ŒçŽ©äº†å¾ˆå¤šç”µå­æ¸¸æˆï¼Œè¿˜ç‚¹äº†ä¸€ä»½æŠ«è¨>我们玩得很开心>在晚上的æŸä¸ªæ—¶å€™ï¼Œæ¯”如9点左å³ï¼Œä»–开了一个éžå¸¸æœ‰è¶£çš„玩笑,我ä¸è®°å¾—了,但我知é“这让我们俩都笑得很厉害>æ²¡æœ‰æˆ‘æƒ³æˆ‘ç”¨å³æ‰‹æ‘¸äº†æ‘¸ä»–é‚£åŠå·æ›²çš„黑å‘,然åŽå«ä»–一个有趣的男孩>他脸红了>我æ„识到我很慌张>我们有点亲密>çªç„¶ä»–å»äº†æˆ‘,出于æŸç§åŽŸå› æˆ‘åˆå»äº†ä»–>我们åšçˆ±>拥抱在一起ç¡ç€äº†>åŠå¤œé†’æ¥æ—¶ï¼Œä»–的头贴在我的胸部和颈部>æ„Ÿè§‰å¾ˆå¥½ï¼Œä½†æˆ‘ä¸æ˜¯åŒæ€§æ‹ -book_lore.test.page.2=他在我怀里ç¡ç€æ—¶ï¼Œæˆ‘正在打字。我怎么æ‰èƒ½è®©æˆ‘最好的朋å‹å¤±æœ›å‘¢ï¼Ÿæˆ‘䏿ƒ³æˆä¸º[编辑]/b/ -book_lore.test.page.3=3 +book_lore.test.page.0=>在我开始之å‰,请å…许我 æ¾„æ¸…æˆ‘ä¸æ˜¯åŒæ€§æ‹. >åšæˆ‘ >今晚 >18点 >è¶æˆ‘的父æ¯èµ°äº†å‡ å¤©ï¼Œå’Œæˆ‘最好 的朋å‹ä¸€èµ·å‡ºåŽ»çŽ© >æˆ‘ä»¬å·²ç»æ˜¯ä¸€å¹´çš„好朋å‹äº† >å–äº†ç‚¹é…’ï¼ŒçŽ©äº†å¾ˆå¤šç”µå­æ¸¸æˆï¼Œ 还点了一个比è¨é¥¼ >我们玩得很开心 >在晚上的æŸä¸ªæ—¶åˆ»ï¼Œæ¯”如9点 å·¦å³ï¼Œä»–开了一个éžå¸¸æœ‰è¶£çš„ 玩笑,我ä¸è®°å¾—了, 但我知é“这让我们都笑得很开心 > 我ä¸å‡æ€ç´¢åœ°ç”¨å³æ‰‹ +book_lore.test.page.1=拂过他åŠå·æ›²çš„黑å‘, 说他真是一个有趣的男孩 >他脸红了 >我æ„识到我很慌乱 >我们有点太亲近了 >çªç„¶ä»–å»äº†æˆ‘,出于æŸç§åŽŸå›  我回å»äº†ä»– >我们åšçˆ±äº† >拥抱在一起ç¡ç€äº† >åŠå¤œé†’æ¥ï¼Œä»–的头紧贴在我的 胸å£å’Œè„–å­ä¸Š >这感觉很好, ä½†æˆ‘ä»æ˜¯ä¸ªé’¢é“ç›´ç”· +book_lore.test.page.2=我在他在我怀里ç¡ç€çš„æ—¶å€™ 写了这个. 我怎么能让我最好的 朋å‹å¤±æœ›å‘¢? 我å¯ä¸æƒ³æˆä¸ºä¸€ä¸ª [弱智] /b/ +book_lore.test.page.3=4 book_lore.test.page.4=4 + book_lore.book_iodine.name=笔记 book_lore.book_iodine.author=戴夫 -book_lore.book_iodine.page.0=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: -book_lore.book_iodine.page.1=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: -book_lore.book_iodine.page.2=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious. +book_lore.book_iodine.page.0=好å§ï¼Œä½ ä¸ä¼šç›¸ä¿¡çš„, 但自从两周å‰ç¦»å¼€åŽï¼Œè¿™ä½è€äººç»ˆäºŽå†æ¬¡å‡ºçŽ°äº†ã€‚æ›´ä»¤äººæƒŠè®¶çš„æ˜¯ï¼Œä»–ç«Ÿç„¶å†³å®šæŠŠä»–ä»¬åœ¨å³¡è°·é‡Œçš„æ‰€ä½œæ‰€ä¸ºæ³„éœ²å‡ºåŽ»: +book_lore.book_iodine.page.1=显然,研å‘部门的白痴们å‘现了一ç§ä¸»è¦æ˜¯æ— æœºçš„化åˆç‰©, 很åƒè‡ªç„¶ç•Œä¸­çš„æ¯’ç´ , 但è¦è®°ä½ï¼šæ¿’æ­»çš„ç»†èƒžä¼šç¹æ®–毒素并通过皮肤排出, 产生一ç§å…·æœ‰é«˜åº¦ä¼ æŸ“性的气溶胶. +book_lore.book_iodine.page.2=å°±åƒç—…毒一样, 但䏿˜¯ç—…毒. 它的æˆåˆ†å¾ˆå¥‡æ€ª, ä½ å¯ä»¥æŠŠå®ƒæ”¾åœ¨ä»»ä½•家用瓶å­é‡Œï¼Œä½†ä½ å¿…须把顺åºå¼„对. åšå£«å‘Šè¯‰æˆ‘ç¬¬ä¸€ç§æˆåˆ†æ˜¯ç²‰æœ«çŠ¶çš„ç¢˜æ™¶ä½“ï¼Œè¦æ”¾è¿›æ§½ %d + book_lore.book_phosphorous.name=笔记 book_lore.book_phosphorous.author=戴夫 -book_lore.book_phosphorous.page.0=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second -book_lore.book_phosphorous.page.1=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second +book_lore.book_phosphorous.page.0=å˜¿ï¼Œåˆæ˜¯æˆ‘. 我想你收到了我最åŽçš„备忘录,åšå£«å¯¹æ­¤ä¸å¤ªé«˜å…´. 我得动作快点, ç ”å‘部门的笨蛋们现在åˆåœ¨æŠ±æ€¨äº†, å¯èƒ½æ˜¯å› ä¸ºé’±, åˆä¸€æ¬¡. 无论如何, é£Žå‘æ ‡åšå£«å‘çŽ°ç¬¬äºŒç§ +book_lore.book_phosphorous.page.1=æˆåˆ†æ˜¯çº¢ç£·, 必须将其混入 %d槽中 + book_lore.book_dust.name=笔记 book_lore.book_dust.author=戴夫 -book_lore.book_dust.page.0=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not -book_lore.book_dust.page.1=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not -book_lore.book_dust.page.2=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most +book_lore.book_dust.page.0=当åšå£«å‘现研å‘人员ä¿ç•™äº†å‰©ä¸‹çš„一个样本时,他大å‘雷霆, 大喊大å«è¯´è¿™æ˜¯ä¸¥é‡çš„ç–忽,简直是世界末日的剧本. 我告诉他冷é™ä¸€åˆ†é’Ÿ, ç´§å¼ èµ·æ¥å¯¹ä»–的血压没有好处, å¹¶ +book_lore.book_dust.page.1=䏿˜¯è¯´ä»–还剩下很多血. 一个研å‘部的白痴在上周的通告中é€éœ²äº†æ›´å¤šä¿¡æ¯, 他们称他们那å®è´æ··åˆç‰© \"MKU\" ,鬼知é“è¿™æ˜¯å•¥æ„æ€, å®ƒå«æœ‰è´§çœŸä»·å®žçš„家用棉绒. 你能相信å—? 这是他们 +book_lore.book_dust.page.2=最å±é™©çš„呿˜Žä¹‹ä¸€è€Œå®ƒå«æœ‰ç°å°˜. 奇怪的是,他们还æåˆ°å®ƒä¼šè¿›å…¥æ§½ %d + book_lore.book_mercury.name=笔记 book_lore.book_mercury.author=戴夫 -book_lore.book_mercury.page.0=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being -book_lore.book_mercury.page.1=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being +book_lore.book_mercury.page.0=好å§ï¼Œè¿™å°±è¯´å¾—通了. ä¸åŒ…括呕å的血液部分, 毒ç†å­¦æŠ¥å‘Šè¡¨æ˜Žå…¶ä¸»è¦ç±»ä¼¼äºŽæ±žä¸­æ¯’. 为什么? å› ä¸ºæˆ‘ä»¬çš„å°æ··åˆç‰©ä¹Ÿå«æœ‰æ±ž! æˆ‘åªæ˜¯æƒ³çŸ¥é“当这些东西 +book_lore.book_mercury.page.1=被身体å¤åˆ¶æ—¶ï¼Œå®ƒä»¬ä»Žå“ªæ¥? ä¸ç®¡æ€Žæ ·ï¼Œæ°´é“¶è¦è¿›å…¥æ§½ %d + book_lore.book_flower.name=笔记 book_lore.book_flower.author=戴夫 -book_lore.book_flower.page.0=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, -book_lore.book_flower.page.1=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, +book_lore.book_flower.page.0=还记得我在第一份备忘录中æåˆ°çš„化åˆç‰©å¤§å¤šæ˜¯æ— æœºçš„å—? 好å§ï¼Œä½ çŒœæ€Žä¹ˆç€, 那个è€å®¶ä¼™åˆ†äº«äº†ç¬¬å››ç§é…æ–™: 牵牛花, 花的一属. 就是喇å­èб! å¯èƒ½æ˜¯å› ä¸ºå®ƒçš„ç¡«å«é‡ä½Ž, ä¸ç®¡æ˜¯ä»€ä¹ˆæƒ…况, +book_lore.book_flower.page.1=其他花就是ä¸èµ·ä½œç”¨. ç‰µç‰›èŠ±è¦æ”¾å…¥æ§½ %d + book_lore.book_syringe.name=笔记 book_lore.book_syringe.author=戴夫 -book_lore.book_syringe.page.0=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal -book_lore.book_syringe.page.1=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal +book_lore.book_syringe.page.0=我第五æ¡ç•™è¨€çš„一个å°é™„录, 显然你必须把这些å«MKU的东西放在一个容器里. ç ”å‘人员使用的是从医疗机构购买的普通金属注射器. 我猜是多余的, 他们有æˆåƒä¸Šä¸‡çš„针头. +book_lore.book_syringe.page.1=é‡‘å±žæ³¨å°„å™¨è¦æ”¾å…¥æ§½ %d + book_lore.resignation_note.name=辞èŒä¿¡ book_lore.resignation_note.author=科斯马 -book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and -book_lore.resignation_note.page.1=管ç†å±‚昨天åˆå¯¹æˆ‘们的部门进行è£å‘˜äº†ã€‚é‚£ç¾¤ç™½ç—´è¦æ€ªåªèƒ½æ€ªä»–们自己,我都ä¸çŸ¥é“他们在那场惨败åŽè¿˜åœ¨æœŸå¾…什么。到底是è°ä»–妈泄露了那ç§ç¨‹åº¦çš„ä¿¡æ¯ï¼Ÿ -book_lore.resignation_note.page.2=我们æŸå¤±äº†å‡ ç™¾ä¸‡ï¼Œè€Œä¸”现在失业的还是爷。è€å­å¸Œæœ›ä½ ä»¬è¿™å¸®æ··è›‹æœ€åŽèƒ½ä»Žä½ ä»¬çš„一堆问题中学到点教训然åŽç»™çˆ·æ»šåŽ»è‡ªé—­ã€‚ -book_lore.memo_stocks.name=å…¬å¸å†…部备忘录 -book_lore.memo_stocks.page.0=投资者关系 - $ $ 最新季度报告æä¾›çš„æ•°æ®å­˜åœ¨ä¸€äº›æ˜Žæ˜¾å·®å¼‚。财务部门åšå‡ºä¸€äº›è°ƒæ•´æ˜¯è°¨æ…Žçš„,所以ä¸å¿…有任何担忧。 +book_lore.resignation_note.page.0=管ç†å±‚昨天åˆç¼©å‡äº†æˆ‘们的 部门.那帮白痴åªèƒ½æ€ªè‡ªå·±, 我ä¸çŸ¥é“ä»–ä»¬åœ¨é‚£åœºæƒ¨è´¥åŽ è¿˜åœ¨æœŸå¾…ä»€ä¹ˆ. åˆ°åº•æ˜¯è°æ³„露了这ç§ä¿¡æ¯? 我们æŸå¤±äº†æ•°ç™¾ä¸‡ +book_lore.resignation_note.page.1=现在è€å­å¤±ä¸šäº†. æˆ‘æ˜¯é‚£ä¸ªè¢«è¦æ±‚辞èŒçš„人. 我希望你们这帮混蛋们终于 从自己的错误中å¸å–点教训, 把那根æ£å­ä»Žå±è‚¡é‡Œæ‹¿å‡ºæ¥. +book_lore.resignation_note.page.2=我星期五ä¸ä¼šå›žæ¥çš„. å‘工资就行了. + +book_lore.memo_stocks.name=内部备忘录 +book_lore.memo_stocks.page.0=投资者关系部 - $ $ 最新季度报告中æä¾›çš„æ•°æ® 存在一些明显的差异. 让财务部门进行一些调整是 è°¨æ…Žçš„åšæ³•, 所以ä¸ç”¨æœ‰ä»»ä½•顾虑. + book_lore.memo_schrab_gsa.name=内部备忘录 -book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum -book_lore.memo_schrab_gsa.page.1=åˆåŒç®¡ç†è®°å½• - 法务部在与美国国防部åŽå‹¤å±€çš„谈判中å–得了çªç ´ã€‚他们批准了450亿的è”邦采购æœåŠ¡æ€»ç½²æŠ•èµ„èµ„é‡‘ç”¨äºŽå¼‚å˜é‡‘属的采购与研究。 +book_lore.memo_schrab_gsa.page.0=åˆåŒç®¡ç†éƒ¨ - $ $ 法律部与DLAå–得了çªç ´. 他们授予我们450亿GSA计划, 用于进一步采购和研究saralloy. æ ¹æ®ç›®å‰çš„估计 +book_lore.memo_schrab_gsa.page.1=相关业务的利润至少为 40%%, æ›´ä¸ç”¨è¯´æœªæ¥åˆåŒçš„å¯èƒ½æ€§äº†. 由于ä¿å¯†æ€§è´¨ï¼Œæ‰€æœ‰è´¢åŠ¡è¯æ® 都应ä¿å¯†. + book_lore.memo_schrab_rd.name=内部备忘录 -book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. -book_lore.memo_schrab_rd.page.1=ç ”å‘ - ç›®å‰æˆ‘们主è¦ç”Ÿäº§æ–¹æ³•是使用新型粒å­åŠ é€Ÿå™¨ã€‚ç„¶è€Œï¼Œä¸Žäº§å‡ºé‡ç›¸æ¯”ï¼Œèƒ½æºæˆæœ¬é«˜å¾—惊人。 -book_lore.memo_schrab_rd.page.2=然而,Schrabaueråšå£«å‘现了一ç§å…¨æ–°çš„ç›¸äº’ä½œç”¨â€”â€”æš‚ç§°ä¸ºâ€œå¥‡å¼‚è½»å­æŒ¯è¡â€â€”—该作用å¯ä»¥æ˜¾è‘—é™ä½Žç”Ÿäº§æˆæœ¬ã€‚é€šè¿‡ä¸€ä¸ªç›®å‰æœªè¢«å®Œå…¨ç†è§£çš„的过程,æä¾›çš„电å­è¢«ä¸€ç§å¥‡ç‰¹çš„“魔力â€è½¬åŒ–为æžé«˜èƒ½é‡çš„å…‰å­ã€‚ -book_lore.memo_schrab_rd.page.3=这是许多已明确的粒å­è½¬æ¢å®šå¾‹çš„æžç«¯ä¾‹å¤–ã€‚ä½†åˆæ­¥å®žéªŒè¯æ˜Žï¼Œè¿™äº›è´¨å­å…ˆè½¬å˜ä¸ºä¸Šä¸‹å¤¸å…‹ï¼Œæœ€ç»ˆå½¢æˆäº†å¼‚å˜é‡‘属。奇怪的是,原型机中需è¦é’¨ä¸Žå°‘é‡å¼‚å˜é‡‘属åˆé‡‘化所得到的åˆé‡‘。 +book_lore.memo_schrab_rd.page.0=研究与开å‘部 - $ $ 我们生产saralloyçš„ä¸»è¦æ–¹æ³•是 使用新型粒å­åŠ é€Ÿå™¨. 然而, 与产é‡ç›¸æ¯”ï¼Œèƒ½æºæˆæœ¬è¿‡é«˜. +book_lore.memo_schrab_rd.page.1=然而,Schrabaueråšå£«å‘现 äº†ä¸€ç§æ–°çš„相互作用, 称为 "å¥‡å¼‚è½»å­æŒ¯è¡",å¯ä»¥ 显著é™ä½Žæˆæœ¬. 通过一个ä¸å®Œ 全被ç†è§£çš„过程, 所æä¾›çš„电 å­é€šè¿‡ä¸€ç§ +book_lore.memo_schrab_rd.page.2=奇特的作用被转化为æžé«˜èƒ½ é‡çš„å…‰å­. è¿™æ˜¯è®¸å¤šæ—¢å®šç²’å­ è½¬åŒ–å®šå¾‹çš„æžç«¯ä¾‹å¤–, ä½†åˆæ­¥ å®žéªŒè¯æ˜Žï¼Œè¿™äº›è´¨å­è½¬å˜ä¸º 上下夸克,最终形æˆäº† saralloy. +book_lore.memo_schrab_rd.page.3=奇怪的是,原型需è¦é’¨åˆé‡‘ 和少é‡çš„ saralloy. 此外, 需è¦ä¸€ä¸ªç‰¹æ®Šçš„ç”µå®¹å™¨æ¥ æŠµæ¶ˆå‰©ä½™çš„æ­£ç”µè·. + book_lore.memo_schrab_nuke.name=研究报告 book_lore.memo_schrab_nuke.author=Schrabaueråšå£« -book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. -book_lore.memo_schrab_nuke.page.1=æœ€è¿‘çš„è°ƒæŸ¥ä½¿æˆ‘ä»¬äº†è§£äº†æ ¸çˆ†ç‚¸å¯¹ææ–™é€ æˆçš„å½±å“。多äºå¤–界给我们的赠款,我们*æ„外地*æµ‹è¯•äº†é“€ç›´æŽ¥åˆæˆå¼‚å˜é‡‘属的ç†è®ºã€‚ -book_lore.memo_schrab_nuke.page.2=è€Œæ­¤å‰æˆ‘们åªåœ¨å›žæ—‹åŠ é€Ÿå™¨ä¸­åˆ¶ä½œå‡ºå¼‚å˜é‡‘属。但这次,我们在对Everwerpençš„åœ°ä¸‹æ‹æ‘„中,在该地点的铀矿石中å‘现了微é‡çš„异å˜é‡‘属。其附近所有的纯金属铀则都å‘生了裂å˜ã€‚ +book_lore.memo_schrab_nuke.page.0=我们最近的调查使我们了 è§£äº†æ ¸çˆ†ç‚¸å¯¹ææ–™çš„å½±å“. 感谢给我们的赠款, 我们 *æ„外地* 测试了 æˆ‘ä»¬ä»Žé“€ç›´æŽ¥åˆæˆ saralloyçš„ç†è®º. +book_lore.memo_schrab_nuke.page.1=以å‰åªæœ‰æˆ‘们的回旋加速 器真正创造了saralloy. 然而,在我们在埃弗沃彭 çš„åœ°ä¸‹æ‹æ‘„中,在现场的 铀矿中å‘现了微é‡çš„saralloy. 附近所有纯金属铀都å‘生了 裂å˜. +book_lore.memo_schrab_nuke.page.2=因此,如果有足够多的铀 矿石集中在炸è¯å‘¨å›´ï¼Œ 甚至å¯èƒ½æ˜¯ä¸€æžšå¯Œå«å¯è£‚ å˜ææ–™çš„è„弹,人们å¯ä»¥ ç†è®ºä¸Šåˆ¶é€ å‡ºè¶³å¤Ÿå¤šçš„ saralloyæ¥äººå·¥æ”¶é›†. + book_lore.bf_bomb_1.name=ç§äººç¬”è®° book_lore.bf_bomb_1.author=M. 波特 -book_lore.bf_bomb_1.page.0=Took long enough, but my transfer was accepted. Those new grads were already hard to handle, let alone all the unprofessionalism of the lead. $ Not all good news - this lab was withholding further detail, and I didn't need more chaos over another magic new discovery. -book_lore.bf_bomb_1.page.1=Of course that was the case. The alumni had their doubts (surprising, considering how bright-eyed they were), but my only... competent? colleague actually got his hands on the primer hand-out. Must have more connections than I thought. His memo is discouraging: -book_lore.bf_bomb_1.page.2=apparently, there's yet ANOTHER miracle material that they prodded out of some concoction of antimatter and a fringe isotope. The brochure calls it "SWIRLMAT" - hell if I know - and that's it. No wonder they wanted a theoretical physicist, -book_lore.bf_bomb_1.page.3=they don't even know what it is yet. Either way, practically any job would be better than my old position, so I can't complain much about sketchiness. +book_lore.bf_bomb_1.page.0=花了足够长的时间, 但我的转会被接å—了. 那些应届毕业生已ç»å¾ˆéš¾åº”付了, æ›´ä¸ç”¨è¯´é‚£äº›ä¸ä¸“业的领导了. $ è¿™è¿˜ä¸æ˜¯æ‰€æœ‰çš„å¥½æ¶ˆæ¯ - 这个实验室éšçž’了更多的细节, 我ä¸éœ€è¦åœ¨å¦ä¸€ä¸ªç¥žå¥‡çš„æ–°å‘现上碰到更多的混乱. +book_lore.bf_bomb_1.page.1=当然是这样. 毕业生们有他们的疑虑 (考虑到他们的眼ç›å¤šä¹ˆçº¯çœŸï¼ŒçœŸæ˜¯ä»¤äººæƒŠè®¶), 但我唯一... 有能力的? åŒäº‹å®žé™…上拿到了项目介ç»èµ„æ–™. 一定比我想象的有更多的关系. 他的备忘录令人沮丧: +book_lore.bf_bomb_1.page.2=显然, 他们从å物质和边缘åŒä½ç´ çš„æ··åˆç‰©ä¸­åˆå‘现了 å¦ ä¸€ ç§ ç¥žå¥‡çš„ç‰©è´¨. å°å†Œå­ä¸Šç§°ä¹‹ä¸º "SWIRLMAT" - é¬¼çŸ¥é“æ˜¯å•¥ - 就这样. 难怪他们想è¦ä¸€ä¸ªç†è®ºç‰©ç†å­¦å®¶, +book_lore.bf_bomb_1.page.3=他们甚至还ä¸çŸ¥é“它是什么. ä¸ç®¡æ€Žæ ·, 实际上任何一份工作都会比我以å‰çš„èŒä½å¥½, 我ä¸èƒ½å¯¹è¿™äº›ç²—糙之处抱怨太多. + book_lore.bf_bomb_2.name=ç§äººç¬”è®° book_lore.bf_bomb_2.author=M. 波特 -book_lore.bf_bomb_2.page.0=Despite the absence of information in that primer, I still had some hope they knew a bit more. Not at all. Every other senior researcher has a blind faith in this material; their propositions were practically biblical. I was near speechless. -book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no goddamn sense - it is completely unlike any other substance I've seen before. Its appearance was near frightening, a literal mass of swirling colors, with darker lines permeating through the neon green surface. -book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters. -book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy -book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be -book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. - - +book_lore.bf_bomb_2.page.0=尽管项目介ç»èµ„料中缺ä¹ä¿¡æ¯, ä½†æˆ‘ä»æŠ±ç€ä»–们或许了解更多的希望. 完全相åï¼ æ¯ä¸€ä½è€ç ”ç©¶å‘˜éƒ½å¯¹è¿™ç§ææ–™æŠ±æœ‰ç›²ç›®çš„ä¿¡å¿µ; 他们的主张跟圣ç»ä¼¼çš„. 我几乎无言以对. +book_lore.bf_bomb_2.page.1=但我甚至ä¸èƒ½è´£æ€ªä»–们. Swirlmat 完全ä¸åˆå¸¸ç† - 它与我以å‰è§è¿‡çš„任何其他物质都完全ä¸åŒ. å®ƒçš„å¤–è§‚å‡ ä¹Žä»¤äººææƒ§, 一团漩涡般的色彩, æ·±è‰²çš„çº¿æ¡æ¸—é€åˆ°éœ“虹绿的表é¢. +book_lore.bf_bomb_2.page.2=更糟糕的是, 这个东西是一ç§èƒ½é‡æº. 我们的样本的存在è¿å了ALARAåˆç†æœ€ä½Žå‰‚é‡åŽŸåˆ™: 实验室在它到达时被清场了, 唯一一个足够勇敢的人 (Dr. Melfyn) ç©¿ç€a级å±é™©é˜²æŠ¤æœ,åªä¸ºäº†æŠŠå®ƒæŠ¬20ç±³. +book_lore.bf_bomb_2.page.3=ç»éªŒæ•°æ®ä¹Ÿå¥½ä¸åˆ°å“ªé‡ŒåŽ», 为我们正在用它è¾å°„çš„èƒ½é‡æ‰“破热力学第一定律. 在那东西附近的任何地方 - 甚至是一米厚的铅åŽé¢ - éƒ½æ˜¯å¯æ€•çš„. 光谱分æžç»“æŸåŽï¼Œæˆ‘们迅速跑出了房间 +book_lore.bf_bomb_2.page.4=而且我们并没有从中得到什么新的东西. 科学团队中的那些白痴, 天啊, 在这一切之åŽç”šè‡³æ²¡æœ‰äº§ç”Ÿä¸€ä¸åŠ¨æ‘‡. å在那里进行这些"讨论" 坿€•çš„; 首席研究员中的一ä½åŠåŠå­ç”šè‡³æ‰¬è¨€è¯´æµ‹è¯•ç¦ä»¤å°†è¢«å–消, 这样我们就å¯èƒ½ +book_lore.bf_bomb_2.page.5=在未æ¥å‡ å‘¨å†…用这鬼玩æ„制造出炸弹, 哪个脑袋正常的人会去干这事? 真è§é¬¼, ä¸€ä¸ªç†æ™ºçš„助手 (Andrew) 给它起了个绰å·"balefire" - 因为相比之下,在ç«è‘¬æŸ´å †ä¸Šçƒ§æ­»æ›´å¥½å—. + book_lore.bf_bomb_3.name=ç§äººç¬”è®° book_lore.bf_bomb_3.author=M. 波特 -book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze -book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some -book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into -book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. - - -book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through -book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people... +book_lore.bf_bomb_3.page.0=我和团队å–得了一些çªç ´. ä¸»è¦æ˜¯é åˆ†ç¦» - 将我自己与那些神ç»å…®å…®çš„人隔离开æ¥è®©åœ¨è¿™é‡Œå·¥ä½œå˜å¾—更容易å¿å—. 虽然我们ä»ç„¶ä¸çŸ¥é“balefire的实际性质 (很难分æžä¼š +book_lore.bf_bomb_3.page.1=炸烂设备的样å“) ä½†äº‹å®žè¯æ˜Žå®ƒä¸Žå…¶ä»–ç‰©è´¨çš„ç›¸äº’ä½œç”¨æ˜¯å¯Œæœ‰æˆæ•ˆçš„. 值得注æ„的是, ä»–ä»¬åˆæˆäº†ä¸€ç§"æ°”æ€" å½¢å¼: 在所有人中, Andrew, 告诉我,这实际上是一ç§èƒ¶ä½“, 由悬浮在æŸç§æƒ°æ€§æ°”体中的微å°balefireé¢—ç²’ç»„æˆ +book_lore.bf_bomb_3.page.2=æ¯ä¸ªç²’å­éƒ½å……满被带正电的电离气体的'气泡'包裹, 阻止其沉é™. è°èƒ½æƒ³åˆ°è‡´å‘½çš„伽马射线有好处? åæ­£ä¸æ˜¯æˆ‘. $ 我选择ä¸åŽ»æƒ³ä»–ä»¬æ˜¯å¦‚ä½•å°†æ ·æœ¬è½¬åŒ–ä¸ºé¢—ç²’çš„ +book_lore.bf_bomb_3.page.3=, 但我ä¸èƒ½ä½Žä¼°è¿™ç§æ°”æ€balefire的效用 - 它使实验更加安全. $ 说到安全, 首席研究员 (ä»¥ä¸€ç§æ— è§†å®‰å…¨çš„行为) åšå‡ºäº†ä¸€ä¸ªå‡ ä¹Žè®©ä»–大åƒä¸€æƒŠçš„å‘现. +book_lore.bf_bomb_3.page.4=他决定让我们新胶体的一个细胞与一些éžå¸¸æ˜‚贵的å物质直接相互作用æ¥â€œæŽ¨è¿›â€å®žéªŒ: 由此产生的爆炸将它所在的桌å­å˜æˆäº†ä¸€å—è¾å°„漂白的渣å­, 在顶部雕刻出一个近乎完美的åŠçƒ +book_lore.bf_bomb_3.page.5=, 并给予头部å¥åº·å‰‚é‡çš„ARS. 我想我们现在知é“如何让它爆炸了, 但天哪, 有些人... + book_lore.bf_bomb_4.name=ç§äººç¬”è®° book_lore.bf_bomb_4.author=M. 波特 -book_lore.bf_bomb_4.page.0=I just can't escape my old work. They're the only place that's hiring despite all this godforsaken turmoil, but I'm not going back into that hole. $ They only tempted me because I need out, fast. Remember that atmospheric testing treaty we withdrew from a week ago? -book_lore.bf_bomb_4.page.1=Well, the dipshit in charge of our lab got something right for once. The denunciation came with a flurry of new "scientists" joining, just so we could weaponize balefire. The lack of critical thought here is honestly baffling - bless him, Andrew even jumped ship the -book_lore.bf_bomb_4.page.2=second the first fucking BOMB DESIGN was drafted. That ass Melfyn looked so happy with his little mechanism - perhaps he got brainworms from carrying that sample? - which involved some stupid shit using the solidified, base balefire and an HV -book_lore.bf_bomb_4.page.3=battery. $ Apparently, the form matters for energy output and activation method or whatever, kind of like uranium versus plutonium in regular nukes, but the end result is an initial shock starting the explosion. I find it funny, hilarious even. -book_lore.bf_bomb_4.page.4=All of them place such emphasis on the activation; they ignore the actual mechanism of it all because they don't have a single clue how it works! It may as well be magic at this point, and yet they're still trying to twist and bend it - just for more weapons of war. +book_lore.bf_bomb_4.page.0=我就是逃é¿ä¸äº†ä»¥å‰çš„工作. 他们是唯一一个在ç»åŽ†äº†è¿™åœºæ··ä¹±ä¹‹åŽä»åœ¨æ‹›è˜çš„地方, 但我ä¸ä¼šå†å›žåˆ°é‚£ä¸ªå‘里了. $ ä»–ä»¬åªæ˜¯è¯±æƒ‘我,因为我需è¦å‡ºåŽ»ï¼Œè¦å¾ˆå¿«å‡ºåŽ». 还记得我们一周å‰é€€å‡ºçš„大气试验æ¡çº¦å—? +book_lore.bf_bomb_4.page.1=好å§, 我们实验室的负责人这一次åšå¯¹äº†. è°´è´£éšç€ä¸€æ‰¹æ–°çš„ "科学家"的加入而æ¥, åªæ˜¯ä¸ºäº†è®©æˆ‘们å¯ä»¥å°†balefire武器化. è¿™é‡Œç¼ºä¹æ‰¹åˆ¤æ€§æ€ç»´ç¡®å®žä»¤äººå›°æƒ‘ - ç¥ç¦ä»–,安德é²ç”šè‡³åœ¨ç¬¬ä¸€ä¸ªè¯¥æ­»çš„ +book_lore.bf_bomb_4.page.2=炸 å¼¹ 设 计 èµ·è‰çš„第二天就跳槽了. 那个混蛋Melfyn看起æ¥å¯¹ä»–的那些å°çŽ©æ„å¾ˆæ»¡æ„ - 也许他æºå¸¦æ ·æœ¬æ—¶è„‘å­é‡Œè¿›äº†å•¥ä¸œè¥¿? - 其中包括一些愚蠢的垃圾,使用固化的 +book_lore.bf_bomb_4.page.3=基础balefire和高压电池. $ 显然,这ç§å½¢å¼å¯¹èƒ½é‡è¾“出和激活方法或其他什么都很é‡è¦, 有点åƒå¸¸è§„核武器中的铀与钚, 但最终结果是引å‘爆炸的åˆå§‹å†²å‡». 我觉得它很有趣, 甚至很æžç¬‘. +book_lore.bf_bomb_4.page.4=所有这些都强调激活; 他们忽略了这一切的实际机制,因为他们根本ä¸çŸ¥é“它是如何工作的! 在这一点上,这å¯èƒ½å¾ˆç¥žå¥‡, 但他们ä»åœ¨è¯•图扭转和弯曲它 - åªæ˜¯ä¸ºäº†èŽ·å¾—æ›´å¤šçš„æˆ˜äº‰æ­¦å™¨. + book_lore.bf_bomb_5.name=ç§äººç¬”è®° book_lore.bf_bomb_5.author=M. 波特 -book_lore.bf_bomb_5.page.0=I just... can't come to grips with it, even days after. It was a foregone conclusion, really, with how flippant the science team was with safety. $ $ Doctor Melfyn, M.S., is gone. Dead, maybe. I saw it happen before my own eyes, in their test chamber. -book_lore.bf_bomb_5.page.1=We had just gotten another batch of pure balefire, and he had recovered electrical equipment and an energy source to test his proposal. I don't know what caused it (was the power on? had he begun too soon?), but it seemingly progressed in agonizingly slow motion, -book_lore.bf_bomb_5.page.2=as the green-tinted light consumed the table, the battery, and Dr. Melfyn standing only a meter away. Even when the table had degraded into a pool of broiling metal on the floor, he did not burn. I don't know what I saw in his eyes... $ $ Terror, or awe -book_lore.bf_bomb_5.page.3=over his continued survival, maybe? Whatever our "miracle" material was, it didn't care. With a bright blaze of light, he disappeared in the next moment. Was he evaporated? incinerated? annihilated? sent to fucking hell itself, I don't know anymore! -book_lore.bf_bomb_5.page.4=The head researcher sickens me. Said we could be more careful, keep trucking, whatever other morale-improving filth he spewed. That dipshit won't ever figure out that playing with fire will get you burned. $ I didn't bother -book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hills. Not like it matters, anyway; considering the lack of calls, and the mushroom cloud that rose over my (now former) workplace, they've either blown everything up or entered full-on military jurisdiction. -book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows! -book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back -book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself... +book_lore.bf_bomb_5.page.0=æˆ‘åªæ˜¯... å³ä½¿å‡ å¤©åŽä¹Ÿæ— æ³•应对. 事实上, 科学团队对安全问题的轻率æ€åº¦å·²æˆå®šå±€. $ $ Doctor Melfyn, M.S., ä¸åœ¨äº†. 也许死了. 我亲眼目ç¹äº†è¿™ä¸€åˆ‡, 在他们的试验室里. +book_lore.bf_bomb_5.page.1=我们刚刚得到了å¦ä¸€æ‰¹çº¯balefire, ä»–å·²ç»æ‰¾åˆ°äº†ç”µæ°”è®¾å¤‡å’Œèƒ½æºæ¥æµ‹è¯•ä»–çš„æè®®. 我ä¸çŸ¥é“是什么原因造æˆçš„ (电æºå¼€äº†? 他开始得太早了?), 但它似乎以令人痛苦的慢动作进行, +book_lore.bf_bomb_5.page.2=绿色的光芒åžå™¬äº†æ¡Œå­, 电池, Dr. Melfyn就站在一米外. å³ä½¿æ¡Œå­å·²ç»åŒ–æˆåœ°æ¿ä¸Šçš„一池ç¼çƒ­çš„金属, 他也没有被烧伤. ä¸çŸ¥é“我从他的眼ç›é‡Œçœ‹åˆ°äº†ä»€ä¹ˆ... $ $ 也许是对他继续生存 +book_lore.bf_bomb_5.page.3=çš„ææƒ§ï¼Œæˆ–者敬ç•? ä¸ç®¡æˆ‘ä»¬çš„â€œå¥‡è¿¹â€ææ–™æ˜¯ä»€ä¹ˆ, 它都ä¸åœ¨ä¹Ž. éšç€ä¸€é“明亮的光, 他在下一刻消失了. ä»–è’¸å‘了å—? 烧æˆç°çƒ¬äº†? 完全湮ç­äº†? 被é€è¿›ä»–妈的地狱了? 我å†ä¹Ÿä¸ä¼šçŸ¥é“了! +book_lore.bf_bomb_5.page.4=首席研究员让我æ¶å¿ƒ. 他说我们å¯ä»¥æ›´åŠ å°å¿ƒ, 继续用å¡è½¦è¿è¾“, 或者其他什么能æé«˜å£«æ°”çš„å±è¯. 那个混蛋永远ä¸ä¼šæ˜Žç™½çŽ©ç«ç»ˆä¼šè‡ªç„š. $ æˆ‘æ²¡æœ‰è¾žèŒ +book_lore.bf_bomb_5.page.5=, æˆ‘åªæ˜¯æŠ“起我的那点破烂往山上跑. 无论如何,现在这些都ä¸é‡è¦äº†; 考虑到没有电è¯, 加上我 (现在是以å‰çš„了) 工作场所上空å‡èµ·çš„蘑è‡äº‘, 他们è¦ä¹ˆç‚¸æ¯äº†ä¸€åˆ‡è¦ä¹ˆå®Œå…¨è¿›å…¥äº†å†›äº‹ç®¡è¾–模å¼. +book_lore.bf_bomb_5.page.6=解剖和 æ´» 体 è§£ 剖 之间有一个é‡è¦çš„区别, è¿™ä¸€ç‚¹åœ¨ä»–ä»¬èº«ä¸Šæ˜¾ç„¶å·²ç»æ¶ˆå¤±äº†. 们å¯ä»¥éšå¿ƒæ‰€æ¬²åœ°è§£å‰–金属或原å­, ä½†æ’•è£‚ã€æ´»ä½“解剖现实本身åªä¼šä»¥æ›´å¤šçš„Dr. Melfyns而告终. è°çŸ¥é“å‘¢! +book_lore.bf_bomb_5.page.7=毕竟政府想把这些玩æ„装进炸弹里, 也许我们会看到更多的战争, 数百万人å¬å¤©ç”±å‘½. 他们ä¸èƒ½æ°¸è¿œéšçž’这件事. $ $ 我ä¸åœ¨ä¹Ž. å†ä¹Ÿä¸äº†. 求你了, 上å¸, 让我回到 +book_lore.bf_bomb_5.page.8=实际的科学上æ¥. $ $ 妈的, Mae, ä¿æŒå†·é™... + book_lore.beacon.name=ä¿¡å·ä¿¡æ ‡è¯´æ˜Žä¹¦ book_lore.beacon.author=Flim Flam工业 book_lore.beacon.page.0=感谢您购买Mk.2照明信å·ä¿¡æ ‡ï¼ˆç‰ˆæœ¬1.3)ï¼è¿™æœ¬å°å†Œå­å°†ç®€è¦ä»‹ç»ä¿¡æ ‡çš„æ“ä½œåŠå…¶å†…部工作原ç†ã€‚ @@ -594,10 +617,11 @@ commands.satellite.not_a_satellite=æŒæœ‰çš„物å“䏿˜¯å«æ˜Ÿï¼ commands.satellite.satellite_descended=嫿˜ŸæˆåŠŸé™è½ã€‚ commands.satellite.satellite_orbited=嫿˜Ÿå‘射。 commands.satellite.should_be_run_as_player=此命令应该由玩家è¿è¡Œï¼ -container.amsBase=AMS基座(装饰) -container.amsEmitter=AMSå‘å°„æž(装饰) -container.amsLimiter=AMS稳能器(装饰) -container.anvil=ç § + +container.amsBase=AMS基座 [装饰] +container.amsEmitter=AMSæ¿€å‘装置 [装饰] +container.amsLimiter=AMS稳定力场å‘生装置 [装饰] +container.anvil=%s 级砧 container.arcFurnace=电弧炉 container.armorTable=è£…ç”²æ”¹è£…å° container.ashpit=å‚¨ç°æ§½ @@ -659,9 +683,10 @@ container.heaterOven=加热炉 container.iGenerator=工业å‘电机 container.keyForge=é”匠桌 container.launchPad=导弹å‘å°„å° -container.launchTable=大型å‘å°„å° -container.leadBox=安全盒 -container.machineBoiler=锅炉 +container.launchTable=大型导弹å‘å°„å° +container.leadBox=安全箱 +container.machineArcWelder=弧焊机 +container.machineBoiler=原油加热器 container.machineCMB=CMB炼钢炉 container.machineCoal=ç«åŠ›å‘电机 container.machineCoker=焦化装置 @@ -681,9 +706,9 @@ container.machineShredder=粉碎机 container.machineSILEX=激光åŒä½ç´ åˆ†ç¦»å®¤ container.machineSolidifier=固化机 container.machineTurbine=汽轮机 -container.machineTurbofan=涡扇å‘动机 -container.machine_schrabidium_transmutator=Sa326嬗å˜è£…ç½® -container.massStorage=存储 +container.machineTurbofan=涡扇å‘电机 +container.machine_schrabidium_transmutator=Sa326异å˜é“€é‡‘属嬗å˜è£…ç½® +container.massStorage=存储器 container.microwave=微波炉 container.miningDrill=自动采矿钻机 container.miningLaser=采矿激光 @@ -765,97 +790,100 @@ crucible.hematite=赤é“çŸ¿ç‚¼é“ crucible.hss=高速钢生产 crucible.malachite=孔雀石炼铜 crucible.redcopper=紫铜生产 -crucible.steel=é’¢é“生产 -crucible.steelMeteoric=陨é“炼钢 -crucible.steelPig=生é“炼钢 -crucible.steelWrought=é”»é“炼钢 -crucible.tcalloy=é”é’¢åˆé‡‘生产 -death.attack.acid=%1$s 掉进了酸里 -death.attack.acidPlayer=%1$s 被 %2$s 溶解 -death.attack.ams=%1$s æ²æµ´åœ¨å°šæœªè¢«äººç±»ç§‘学命å的致命粒å­ä¸­ -death.attack.amsCore=%1$s 在奇点之ç«ä¸­è’¸å‘ -death.attack.asbestos=%1$s现在有æƒèŽ·å¾—ç»æµŽè¡¥å¿ -death.attack.bang=%1$s 被炸æˆå°å—碎片 -death.attack.blackhole=%1$s 粉身碎骨 -death.attack.blender=%1$s 被切æˆå°å— -death.attack.boat=%1$s 被船撞了 -death.attack.boil=%1$s被%2$s活活煮沸 -death.attack.boxcar=%1$s 被一节å è½çš„车厢撞死了...å¥½å§ -death.attack.broadcast=%1$s 的大脑èžåŒ–了 -death.attack.building=%1$s 被从天而é™çš„建筑砸中了 -death.attack.cheater=%1$s 的肠å­å˜æˆäº†ç‡•麦(???) -death.attack.chopperBullet=%1$s 被 %2$s å± æ€ -death.attack.cloud=%1$s åƒå†°æ£’一样在太阳下èžåŒ– -death.attack.cmb=%1$s 被 %2$s æžå¾—å˜¶å˜¶ä½œå“ -death.attack.digamma=%1$s è¸å…¥æ·±æ¸Š -death.attack.electricity=%1$s 被电死 -death.attack.electrified=%1$s 被 %2$s 电死 -death.attack.euthanized=%1$s 被 %2$s 安乿­» -death.attack.euthanizedSelf2=%1$s 获得了达尔文奖 -death.attack.euthanizedSelf=%1$s æŠŠè‡ªå·±å®‰ä¹æ­»äº†ï¼Œå¯çœŸå‚» -death.attack.exhaust=%1$s 被ç«ç®­çƒ¤æˆäº†ç¾Šè‚‰ä¸² -death.attack.flamethrower=%1$s 被 %2$s ç«åŒ– -death.attack.flamethrower.item=%1$s 被 %2$s 使用 %3$s ç«åŒ– -death.attack.ice=%1$s 被 %2$s åšæˆäº†å†°æ£’ -death.attack.laser=%1$s 被 %2$s å˜æˆäº†ç°çƒ¬ -death.attack.laser.item=%1$s 被 %2$s 使用 %3$s å˜æˆç°çƒ¬ -death.attack.lead=%1$s 死于铅中毒 -death.attack.lunar=%1$s 忘记了给é‡è¦å™¨å®˜å……电 -death.attack.meteorite=%1$s 被æ¥è‡ªå¤–太空的陨石击中 -death.attack.microwave=%1s 因微波è¾å°„爆炸 -death.attack.mku=%1$s æ­»äºŽä¸æ˜ŽåŽŸå›  -death.attack.monoxide=%1$s忘了æ¢ä¸€æ°§åŒ–碳探测器的电池 -death.attack.mudPoisoning=%1$s 死于毒泥浆中 -death.attack.nuclearBlast=%1$s 被核爆炸飞 -death.attack.overdose=%1$s ä¸Šç˜¾å¹¶çª’æ¯ -death.attack.pc=%1$s åœ¨ç²‰çº¢è‰²çš„äº‘ä¸­å˜æˆäº†ä¸€ä¸ªæ°´å‘ -death.attack.plasma=%1$s 被 %2$s 烧死 -death.attack.radiation=%1$s 死于è¾å°„ -death.attack.revolverBullet=%1$s 被 %2$s 用 %3$s 击中头部 -death.attack.revolverBullet.item=%1$s 被 %2$s 使用 %3$s 爆头 -death.attack.rubble=%1$s 被碎片压æ‰äº† -death.attack.shrapnel=%1$s 被榴弹碎片炸得åƒç–®ç™¾å­” -death.attack.spikes=%1$s被刺穿了 -death.attack.subAtomic1=%1$s 的原å­å·²è¢« %2$s 销æ¯. -death.attack.subAtomic2=%1$s 因为被 %2$s 篡改了实际速度,导致QPU没有对准 -death.attack.subAtomic3=由于 %2$s,1$s çš„å差下é™åˆ°1%以下 -death.attack.subAtomic4=%1$s 因为 %2$s 被零除了 -death.attack.subAtomic5=%1$s 因为 %2$s 无效了 -death.attack.suicide=%1$s 打爆了自己的头 -death.attack.taint=%1$s æ­»äºŽæ¶æ€§è‚¿ç˜¤ -death.attack.tau=%1$s 被 %2$s 用带负电è·çš„é™¶å­å°„ç©¿ -death.attack.tauBlast=%1$s 对XVL1456充能时间过长,被炸æˆç¢Žç‰‡ -death.attack.teleporter=%1$s 被传é€åˆ°è™šç©º -desc.gui.assembler.warning=§c错误:§r此机器需è¦è£…é…æœºæ¨¡æ¿ï¼ -desc.gui.chemplant.warning=§c错误:§r此机器需è¦åŒ–工厂模æ¿ï¼ -desc.gui.gasCent.enrichment=§2浓缩§r$浓缩铀需è¦ä¸²è”$两个离心机串è”将离心出$铀燃料,四个离心机串è”$将完全分离出铀235。 -desc.gui.gasCent.output=§6æµä½“输é€Â§r$æµä½“å¯é€šè¿‡è¾“出端å£è¾“é€è‡³å¦ä¸€å°ç¦»å¿ƒæœº$进行进一步处ç†ã€‚ -desc.gui.nukeBoy.desc=§1需è¦:§r$ * 中å­å±è”½ç½©$ * é“€-235弹头$ * 次临界铀-235æ ‡é¶$ * 炸è¯$ * 点ç«å™¨ -desc.gui.nukeGadget.desc=§1需è¦:§r$ * 4个 åˆä»£$ 炸è¯é€é•œé˜µåˆ—$ * 钚核心$ * 线路 -desc.gui.nukeMan.desc=§1需è¦:§r$ * 4个 åˆä»£$ 炸è¯é€é•œé˜µåˆ—$ * 钚核心$ * 点ç«å™¨ -desc.gui.nukeMike.desc=§1需è¦:§r$ * 4个 炸è¯é€é•œé˜µåˆ—$ * 钚核心$ * 氘冷å´è£…ç½®$ * é“€æ¶‚å±‚æ°˜ç½ * æ°˜ç½ -desc.gui.nukeTsar.desc=§1需è¦:§r$ * 4个 炸è¯é€é•œé˜µåˆ—$ * 钚核心$§9å¯é€‰:§r$ * 沙皇炸弹核心 -desc.gui.radiolysis.desc=§9说明§r$该RTG比其他RTG更高效,并且$é…备了一个用于$裂解和ç­èŒçš„è¾è§£å®¤ã€‚ -desc.gui.rtgBFurnace.desc=处ç†$金-198需è¦è‡³å°‘15热é‡ã€‚此外,热é‡è¶Šå¤šï¼Œè¿è¡Œé€Ÿåº¦è¶Šå¿«$金-198å¯èƒ½ä¼šè¡°å˜ä¸ºæ°´é“¶ -desc.gui.rtg.heat=§e当å‰çƒ­ç­‰çº§ï¼š%s -desc.gui.rtg.pellets=接å—çš„é¶ä¸¸ï¼š +crucible.steel=钢生产 +crucible.steelMeteoric=陨é“->é’¢ 生产 +crucible.steelPig=生é“->é’¢ 生产 +crucible.steelWrought=é”»é“->é’¢ 生产 +crucible.tcalloy=é”-é’¢åˆé‡‘生产 + +death.attack.acid=%1$s 掉进了酸里. +death.attack.acidPlayer=%1$s 被 %2$s 溶解了. +death.attack.ams=%1$s æ²æµ´åœ¨å°šæœªè¢«äººç±»ç§‘学命å的致命粒å­ä¸­. +death.attack.amsCore=%1$s 在高能奇点之ç«ä¸­è’¸å‘. +death.attack.asbestos=%1$s 现在有æƒèŽ·å¾—ç»æµŽè¡¥å¿. +death.attack.bang=%1$s 被炸æˆä¸€å£å¤§å°ç¢Žç‰‡. +death.attack.blackhole=%1$s 被黑洞拉æˆäº†æ„大利é¢. +death.attack.blender=%1$s 被切割æˆäº†å¾ˆå°çš„,以Byte计数的å•ä½. +death.attack.boat=%1$s 被船砸æ‰äº†. +death.attack.boil=%1$s 被 %2$s 活生生煮沸了. +death.attack.boxcar=%1$s 被一节å è½çš„车厢砸æ‰äº†...好å§. +death.attack.broadcast=%1$s 的大脑èžåŒ–了. +death.attack.building=%1$s 被从天而é™çš„建筑砸中了. +death.attack.cheater=%1$s 的内è„å˜æˆäº†ç‡•麦(???). +death.attack.chopperBullet=%1$s 被 %2$s å± æ€. +death.attack.cloud=%1$s åƒåœ¨å¤ªé˜³ä¸‹çš„冰棒一样èžåŒ–. +death.attack.cmb=%1$s 被 %2$s 电的焦脆. +death.attack.digamma=%1$s åœ¨è¿½æ±‚çœŸç†æ—¶æ­¥å…¥äº†æ·±æ¸Š. +death.attack.electricity=%1$s 被电死. +death.attack.electrified=%1$s 被 %2$s 电死. +death.attack.euthanized=%1$s 被 %2$s 安乿­». +death.attack.euthanizedSelf2=%1$s 获得了达尔文奖. +death.attack.euthanizedSelf=%1$s æŠŠè‡ªå·±å®‰ä¹æ­»äº†, 真鸡儿丢人. +death.attack.exhaust=%1$s 被ç«ç®­çƒ¤æˆäº†ç¾Šè‚‰ä¸². +death.attack.flamethrower=%1$s 被 %2$s ç«åŒ–. +death.attack.flamethrower.item=%1$s 被 %2$s 用 %3$sç«åŒ–. +death.attack.ice=%1$s 被 %2$s 冻æˆäº†å†°æ£’. +death.attack.laser=%1$s 被 %2$s å˜æˆäº†ç°çƒ¬. +death.attack.laser.item=%1$s 被 %2$s 用 %3$s å˜æˆäº†ç°çƒ¬. +death.attack.lead=%1$s 死于铅中毒. +death.attack.lunar=%1$s 忘了给他的é‡è¦å™¨å®˜ç»´æŒç³»ç»Ÿå……电. +death.attack.meteorite=%1$s 被æ¥è‡ªå¤–太空的陨石击中,ä»–å¯ä»¥åŽ»ä¹°å½©ç¥¨äº†. +death.attack.microwave=%1$s 被过é‡å¾®æ³¢è¾å°„而爆炸了. +death.attack.mku=%1$s 死于ä¸çŸ¥å的原因. +death.attack.monoxide=%1$s 忘了给一氧化碳探测器æ¢ç”µæ± . +death.attack.mudPoisoning=%1$s 死于毒泥浆中. +death.attack.nuclearBlast=%1$s 被核爆冲击波炸飞. +death.attack.overdose=%1$s æœè¯è¿‡é‡åŽçª’æ¯äº†. +death.attack.pc=%1$s åœ¨ç²‰çº¢è‰²çš„äº‘ä¸­å˜æˆäº†ä¸€æ»©æ°´. +death.attack.plasma=%1$s 被 %2$s 献祭了. +death.attack.radiation=%1$s 死于è¾å°„. +death.attack.revolverBullet=%1$s 被 %2$s 爆头. +death.attack.revolverBullet.item=%1$s 被 %2$s 用 %3$s 爆头. +death.attack.rubble=%1$s 被挤压æˆäº†ç¢Žç‰‡. +death.attack.shrapnel=%1$s 被榴弹碎片炸得åƒç–®ç™¾å­”. +death.attack.spikes=%1$s 被刺了个é€å¿ƒå‡‰. +death.attack.subAtomic1=%1$s 的原å­è¢« %2$s æ‘§æ¯. +death.attack.subAtomic2=%1$s 因为被 %2$s 篡改了实际速度, 导致QPU没有对准. +death.attack.subAtomic3=由于 %2$s, 1$s çš„å差下é™åˆ°1%以下. +death.attack.subAtomic4=%1$s 因为 %2$s 被零除了. +death.attack.subAtomic5=%1$s 因为 %2$s 无效了. +death.attack.suicide=%1$s 打爆了自己的头. +death.attack.taint=%1$s æ­»äºŽæ¶æ€§è‚¿ç˜¤. +death.attack.tau=%1$s 被 %2$s 用带负电è·çš„é™¶å­æ‰“å¾—åƒç–®ç™¾å­”. +death.attack.tauBlast=%1$s 对XVL1456充能时间过长, 被炸æˆç¢Žç‰‡. +death.attack.teleporter=%1$s 被传é€åˆ°è™šç©º. + +desc.block.blastinfo=æ–¹å—æŠ—çˆ†æ€§: %s +desc.gui.assembler.warning=§c错误:§r 错误:æ­¤è£…é…æœºéœ€è¦ç»„装机模æ¿! +desc.gui.chemplant.warning=§c错误:§r 此化工装置需è¦åŒ–学酿–¹æ¨¡æ¿! +desc.gui.gasCent.enrichment=§2浓缩§r$铀浓缩需è¦å¤šä¸ªç¦»å¿ƒæœºä¸²è”.$两个离心串è”$将仅分离出铀238,$四个离心串è”将完全分离六氟化铀. +desc.gui.gasCent.output=§6æµä½“传输§r$液体å¯ä»¥é€šè¿‡è¾“出端å£è½¬ç§»åˆ°$å¦ä¸€å°ç¦»å¿ƒæœºè¿›è¡Œè¿›ä¸€æ­¥å¤„ç†. +desc.gui.nukeBoy.desc=§1需è¦ç»„ä»¶:§r$ * 中å­å±è”½ç½©$ * é“€235弹头$ * 次临界铀235æ ‡é¶$ * 炸è¯$ * 点ç«å™¨ +desc.gui.nukeGadget.desc=§1需è¦ç»„ä»¶:§r$ * 4 个åˆä»£é«˜èƒ½$ 内爆炸è¯é˜µåˆ—$ * 大型钚核心$ * 线路 +desc.gui.nukeMan.desc=§1需è¦ç»„ä»¶:§r$ * 4 个åˆä»£é«˜èƒ½$ 内爆炸è¯é˜µåˆ—$ * 钚核心$ * 炸弹点ç«è£…ç½® +desc.gui.nukeMike.desc=§1需è¦ç»„ä»¶:§r$ * 4 个高能内爆炸è¯é˜µåˆ—$ * 钚核心$ * 氘冷å´è£…ç½®$ * 铀涂层氘ç½$ * æ°˜ç½ +desc.gui.nukeTsar.desc=§1需è¦ç»„ä»¶:§r$ * 4 个高能内爆炸è¯é˜µåˆ—$ * 钚核心$§9å¯é€‰:§r$ * 沙皇炸弹核心 +desc.gui.radiolysis.desc=§9说明§r$è¿™ç§RTG比其他RTG效率更高, $é…æœ‰ä¸€ä¸ªè¾è§£å®¤,$用于裂解和ç­èŒ. +desc.gui.rtgBFurnace.desc=需è¦è‡³å°‘15çº§çƒ­é‡æ¥è¿›è¡ŒåŠ å·¥$热é‡è¶Šå¤š,è¿è¡Œé€Ÿåº¦è¶Šå¿«$超过最大速度åŽå¤šä½™çš„热é‡ä¸ä¼šäº§ç”Ÿä»»ä½•å½±å“$短åŠè¡°æœŸçš„é¶ä¸¸å¯èƒ½ä¼šè¡°å˜ +desc.gui.rtg.heat=§e当å‰çƒ­é‡çº§åˆ«: %s +desc.gui.rtg.pellets=坿ޥå—çš„é¶ä¸¸: desc.gui.rtg.pelletHeat=%s (%s 热é‡) -desc.gui.rtg.pelletPower=%s (%s HE/刻) -desc.gui.template=§9模æ¿Â§r$模æ¿å¯ç”±$æœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹åˆ¶ä½œã€‚ -desc.gui.turbinegas.automode=§2è‡ªåŠ¨æ¶¡è½®æœºèŠ‚æµæ¨¡å¼Â§r$通过å•击“AUTOâ€æŒ‰é’®ï¼Œæ¶¡è½®æœº$将根æ®ç½‘络所需的功率自动调整å‘电é‡$ -desc.gui.turbinegas.fuels=§6坿ޥå—的燃料:§r -desc.gui.turbinegas.warning=§c燃油或润滑油液ä½ä½Žï¼Â§r -desc.gui.upgrade=§l坿ޥå—çš„å‡çº§ï¼šÂ§r -desc.gui.upgrade.afterburner=*§d加力燃烧§r:堆å è‡³3级 -desc.gui.upgrade.effectiveness=*§a效率§r:堆å è‡³3级 -desc.gui.upgrade.overdrive=*§7超速§r:堆å è‡³3级 -desc.gui.upgrade.power=*§1节能§r:堆å è‡³3级 -desc.gui.upgrade.speed=*§4速度§r:堆å è‡³3级 -desc.gui.zirnox.coolant=§3冷å´å‰‚§r$CO2将热é‡ä»Žå †èŠ¯è½¬ç§»åˆ°æ°´ä¸­$è¿™ä¼šä»¤å®ƒå˜æˆæˆè¶…热蒸汽$冷å´å’Œè’¸æ±½ç”Ÿäº§çš„æ•ˆçއå–决于压力。 -desc.gui.zirnox.pressure=§6压力§r$排放二氧化碳å¯ä»¥é™ä½ŽåŽ‹åŠ›$ç„¶è€Œï¼ŒåŽ‹åŠ›è¿‡ä½Žï¼Œå†·å´æ•ˆçŽ‡å’Œè’¸æ±½äº§é‡å°†é™ä½Ž$å°å¿ƒç†”æ¯ï¼ -desc.gui.zirnox.warning1=§c错误:§rå应堆正常è¿è¡Œéœ€è¦æ°´ï¼ -desc.gui.zirnox.warning2=§c错误:§r二氧化碳是å应堆正常è¿è¡Œæ‰€å¿…éœ€çš„ï¼ -desc.item.ammo.con_accuracy2=- 精度大幅é™ä½Ž +desc.gui.rtg.pelletPower=%s (%s HE/tick) +desc.gui.template=§9模æ¿Â§r$å¯ä»¥ä½¿ç”¨æœºå™¨æ¨¡æ¿$文件夹制作模æ¿. +desc.gui.turbinegas.automode=§2ç‡ƒæ±½è½®æœºè‡ªåŠ¨èŠ‚æµæ¨¡å¼Â§r$通过点击 "AUTO" 按钮, 燃汽轮机$将根æ®ç”µç½‘所需功率$自动调整å‘ç”µé‡ +desc.gui.turbinegas.fuels=§6坿ޥå—的燃气:§r$ +desc.gui.turbinegas.warning=§c燃油或润滑油液ä½ä½Ž!§r +desc.gui.upgrade=§l坿ޥå—çš„å‡çº§:§r +desc.gui.upgrade.afterburner= * §d加力燃烧§r: 最高为3级 +desc.gui.upgrade.effectiveness= * §a效率§r: 最高为3级 +desc.gui.upgrade.overdrive= * §7超频§r: 最高为3级 +desc.gui.upgrade.power= * §1节能§r: 最高为3级 +desc.gui.upgrade.speed= * §4速度§r: 最高为3级 +desc.gui.zirnox.coolant=§3冷å´Â§r$二氧化碳将热é‡ä»Žå应堆核心转移到水中.$这会把水加热æˆè’¸æ±½. $冷å´å’Œè’¸æ±½ç”Ÿäº§çš„$效率å–决于压力大å°. +desc.gui.zirnox.pressure=§6压力§r$å¯ä»¥é€šè¿‡å‡å°‘å应堆中的CO2釿¥é™ä½ŽåŽ‹åŠ›.$但是, 压力过低, 冷崿•ˆçŽ‡å’Œ$蒸汽产é‡ä¼šé™ä½Ž.$å°å¿ƒç†”æ¯! +desc.gui.zirnox.warning1=§c错误:§r å应堆正常è¿è¡Œ$éœ€è¦æ°´! +desc.gui.zirnox.warning2=§c错误:§r å应堆正常è¿è¡Œ$需è¦äºŒæ°§åŒ–碳! +desc.item.ammo.con_accuracy2=- 精确度大大é™ä½Ž desc.item.ammo.con_damage=- 伤害大幅é™ä½Ž desc.item.ammo.con_heavy_wear=- å¤§å¹…å¢žåŠ ç£¨æŸ desc.item.ammo.con_ling_fire=- 没有ç«ç„° @@ -880,27 +908,27 @@ desc.item.ammo.neu_boat=* 船 desc.item.ammo.neu_boxcar=* 车厢 desc.item.ammo.neu_building=* 建筑物 desc.item.ammo.neu_chlorophyte=* å¶ç»¿ -desc.item.ammo.neu_eraser=* 用于消除é‡å¤§é”™è¯¯ -desc.item.ammo.neu_fun=* 免家其乿— ç©·ï¼ -desc.item.ammo.neu_heavy_metal=* é‡é‡‘属 -desc.item.ammo.neu_homing=* 追踪 -desc.item.ammo.neu_jolt=* éœ‡è¡ +desc.item.ammo.neu_eraser=* 为了消除一些大麻烦 +desc.item.ammo.neu_fun=* 和你的核è°å®¶åº­ä¸€èµ·å¿«ä¹çš„æ¥æ”¾çƒŸèŠ±çŽ©è€å§! +desc.item.ammo.neu_heavy_metal=* å«é‡é‡‘属 +desc.item.ammo.neu_homing=* 自动追踪目标 +desc.item.ammo.neu_jolt=* 颠簸 desc.item.ammo.neu_leadburster=* 附ç€åœ¨è¡¨é¢å¹¶å–·å°„å­å¼¹ -desc.item.ammo.neu_less_bouncy=* å¼¹æ€§æ›´å° -desc.item.ammo.neu_maskman_flechette=* æ›³å…‰å¼¹ï¼ŒåŒæ—¶å¼•å‘一场贫铀飞镖弹风暴 -desc.item.ammo.neu_maskman_meteorite=* é«˜ä¼¤å®³ï¼ŒåŒæ—¶å¬å”¤å°é™¨çŸ³ -desc.item.ammo.neu_more_bouncy=* é¢å¤–弹性 -desc.item.ammo.neu_no_bounce=* 没有弹性 -desc.item.ammo.neu_no_con=* 没有缺点 -desc.item.ammo.neu_starmetal=* 星辉金属 -desc.item.ammo.neu_tracer=* 示踪剂 -desc.item.ammo.neu_uhh=* Uhhh -desc.item.ammo.neu_warcrime1=* 从技术上æ¥è®²è§¦çŠ¯äº†æˆ˜äº‰ç½ª -desc.item.ammo.neu_warcrime2=* 一å‘è§¦çŠ¯ä¸¤æ¡æˆ˜äº‰ç½ªï¼ -desc.item.ammo.pro_accurate1=+ æå‡ç²¾åº¦ -desc.item.ammo.pro_accurate2=+ 近乎完美的精度 -desc.item.ammo.pro_balefire=+ é‡Žç« -desc.item.ammo.pro_bomb_count=+ 炸弹数é‡å¢žåŠ  +desc.item.ammo.neu_less_bouncy=* 霰弹更少 +desc.item.ammo.neu_maskman_flechette=* å‘射一个能å¬å”¤å‡ºä¸€åœºé“€æ¶‚层镖弹碎片风暴的示踪剂 +desc.item.ammo.neu_maskman_meteorite=* å‘射高伤害的å­å¼¹å¹¶å¬å”¤ä¸€é¢—å°é™¨çŸ³ +desc.item.ammo.neu_more_bouncy=* 更多霰弹 +desc.item.ammo.neu_no_bounce=* éžéœ°å¼¹ +desc.item.ammo.neu_no_con=* 没有任何负é¢ä½œç”¨ lol +desc.item.ammo.neu_starmetal=* 嫿˜Ÿè¾‰é‡‘属 +desc.item.ammo.neu_tracer=* 曳光弹 +desc.item.ammo.neu_uhh=* 啊哈 +desc.item.ammo.neu_warcrime1=* 从技术上讲使用它是犯了战争罪 +desc.item.ammo.neu_warcrime2=* 一颗å­å¼¹çŠ¯ä¸‹ä¸¤æ¡æˆ˜äº‰ç½ª! +desc.item.ammo.pro_accurate1=+ 准确性æé«˜ +desc.item.ammo.pro_accurate2=+ 近乎完美的精确度 +desc.item.ammo.pro_balefire=+ B.F.é‡Žç« +desc.item.ammo.pro_bomb_count=+ å¢žåŠ ç‚¸å¼¹æ•°é‡ desc.item.ammo.pro_caustic=+ è…蚀性 desc.item.ammo.pro_chainsaw=+ 电锯 desc.item.ammo.pro_chlorine=+ 氯气 @@ -935,18 +963,19 @@ desc.item.ammo.pro_stunning=+ 眩晕 desc.item.ammo.pro_toxic=+ 剧毒 desc.item.ammo.pro_wear=+ å‡å°‘ç£¨æŸ desc.item.ammo.pro_withering=+ 凋零 -desc.item.armorMod.display=æ˜¾ç¤ºå·²å®‰è£…çš„è£…ç”²æ¨¡å— -desc.item.battery.charge=储能: %s / %sHE -desc.item.battery.chargePerc=储能: %s%% -desc.item.battery.chargeRate=充电效率: %sHE/刻 -desc.item.battery.dischargeRate=放电效率: %sHE/刻 -desc.item.durability=è€ä¹…: %s -desc.item.grenade.fuse=引信: %s -desc.item.grenade.fuseImpact=碰炸 -desc.item.grenade.fuseInstant=çž¬å‘ -desc.item.gun.ammo=å¼¹è¯ %s -desc.item.gun.ammoBelt=从背包中使用 -desc.item.gun.ammoEnergy=能耗; %sHE æ¯å‘ +desc.item.armorMod.display=æ¥æ˜¾ç¤ºè¯¥ç›”甲上所安装的é…件的效果 +desc.item.battery.charge=电é‡: %s / %sHE +desc.item.battery.chargePerc=电é‡: %s%% +desc.item.battery.chargeRate=充电速率: %sHE/tick +desc.item.battery.dischargeRate=放电速率: %sHE/tick +desc.item.detonator=已设置引爆ä½ç½®!$未设置引爆ä½ç½®! +desc.item.durability=è€ä¹…度: %s +desc.item.grenade.fuse=引爆延时: %s +desc.item.grenade.fuseImpact=接触爆炸 +desc.item.grenade.fuseInstant=å³çˆ† +desc.item.gun.ammo=å¼¹è¯é‡ %s +desc.item.gun.ammoBelt=自动从背包中装填 +desc.item.gun.ammoEnergy=能é‡; %sHE æ¯å‘ desc.item.gun.ammoEnergyAlt=%sHE æ¯å‘ desc.item.gun.ammoMag=%s / %s desc.item.gun.ammoType=å¼¹è¯ç±»åž‹: %s @@ -956,18 +985,16 @@ desc.item.gun.damageAlt=伤害: %s desc.item.gun.lore=查看深入的知识 desc.item.gun.loreFunc=查看深入功能 desc.item.gun.manufacturer=制造商: %s -desc.item.gun.name=åç§°: %s -desc.item.gun.pellets=弹丸数:%s-%s -desc.item.gun.penetration=装甲穿é€å€¼: %s -desc.item.kitArmor=装甲将被新的装备å–代。 -desc.item.kitHaz=装甲将被防护æœå–代。 -desc.item.kitPack=çœŸä¾¿å®œï¼ -desc.item.kitPool=è¯·åœ¨æ‰“å¼€å‰æ¸…ç©ºèƒŒåŒ…åº“å­˜ï¼ -desc.item.pileRod=§e使用钻孔石墨æ’å…¥$§E使用螺ä¸åˆ€æ‹”出$ - - -desc.item.rtgDecay=è¡°å˜ä¸ºï¼š%s -desc.item.rtgHeat=功率级别:%s +desc.item.gun.name=枪械åç§°: %s +desc.item.gun.pellets=弹丸: %s - %s +desc.item.gun.penetration=护甲穿é€å€¼: %s +desc.item.kitArmor=现穿的护甲将被新护甲å–代. +desc.item.kitHaz=防护æœå°†å–代现穿的护甲. +desc.item.kitPack=真便宜! +desc.item.kitPool=è¯·åœ¨æ‰“å¼€å‰æ¸…空你的背包! +desc.item.pileRod=§e用于æ’入钻削过的石墨$§e使用螺ä¸åˆ€ç¿˜å‡º$ +desc.item.rtgDecay=è¡°å˜ä¸º: %s +desc.item.rtgHeat=热é‡çº§åˆ«: %s desc.item.storage.capacity=å®¹é‡ %s%%s desc.item.storage.proscons=查看利弊列表 desc.misc.357=.357 é©¬æ ¼å— @@ -980,18 +1007,34 @@ desc.misc.lore=§n-- 知识 -- desc.misc.lshift=§8æŒ‰ä½ <§e§oå·¦SHIFT§8§o> %s desc.misc.luna=§o20x155mm Lunatic desc.misc.meltPoint=熔点: §c%s -desc.misc.noPos=未设置ä½ç½®ï¼ -desc.misc.pos=å°†ä½ç½®è®¾ç½®ä¸ºï¼š%s,%s,%s -desc.misc.posSet=ä½ç½®å·²è®¾ç½®ï¼ +desc.misc.noPos=未设置触å‘ä½ç½®! +desc.misc.pos=设置触å‘ä½ç½®ä¸º : %s, %s, %s +desc.misc.posSet=触å‘ä½ç½®å·²è®¾ç½®! desc.item.wasteCooling=在ä¹ç‡ƒæ–™æ± ä¸­å†·å´ -desc.item.zirnoxBreedingRod=§2[ZIRNOX增殖棒]$§e放在燃料棒æ—边增殖$§eæŒç»­ %d 刻 -desc.item.zirnoxRod=§a[ZIRNOX燃料棒]$§eæ¯åˆ»äº§ç”Ÿ %1$d 热é‡$§eæŒç»­ %2$d 刻 -digamma.playerDigamma=玩家F-迪伽马è¾ç…§æ°´å¹³: -digamma.playerHealth=玩家所å—F-迪伽马è¾ç…§å½±å“: -digamma.playerRes=玩家F-迪伽马防护水平: -digamma.title=玩家F-迪伽马è¾å°„自检器 -entity.entity_cyber_crab.name=èµ›åšèžƒèŸ¹ -entity.entity_elder_one.name=上å¤é¸­ç¥ž +desc.item.upgrade.machine=采矿钻机:§r$自动激光采矿钻机:$电炉:§r$è£…é…æœº:§r$化工厂:§r$油井:§r$矿物结晶机:§r$回旋加速器:§r$废气燃烧塔:§r$高能微波炮塔:§r$涡扇å‘电机:§r$力场范围å‡çº§Â§r$力场能é‡å‡çº§Â§r$采矿激光å‡çº§Â§r$气体离心机å‡çº§Â§r$ +desc.item.upgrade.speed=耗时 -%s%% / è€—ç”µé‡ +%sHE/t$耗时 ÷%s / è€—ç”µé‡ +%sHE/t$耗时 -%s%% / è€—ç”µé‡ +%s%%$对撞速度 x%s$伤害 +%sdmg/t +desc.item.upgrade.effect=åŠå¾„ +%sm / è€—ç”µé‡ +%sHE/t$+%s%% çš„å‡ çŽ‡ä¸æ¶ˆè€—ç‰©å“ / é…¸æ¶ˆè€—é‡ +%smB$-%s%% 的几率延长加速器过热缓冲时间$+%s%% å‘电é‡$攻击范围 +%sm +desc.item.upgrade.power=è€—ç”µé‡ -%sHE/t / 耗时 +%s%%$è€—ç”µé‡ -%s%% / 耗时 +%s%%$è€—ç”µé‡ -%skHE/t$è€—ç”µé‡ -%sHE/t$啿¬¡å¼€ç«è€—电 -%sHE/t +desc.item.upgrade.fortune=å¹¸è¿ +%s / 耗时 +%s +desc.item.upgrade.afterburn=å‘ç”µé‡ x%s / 燃料消耗 x%s$加力燃烧 +%ss$燃烧%smB燃气产生%sHE/t +desc.item.upgrade.forcefield=åŠå¾„ +16 / 耗电 +500$æœ€å¤§èƒ½é‡ +50 / 耗电 +250$最多堆å 16个 +desc.item.upgrade.smelter=èžåŒ–æ–¹å—.够简å•了. +desc.item.upgrade.shredder=自动粉碎矿石 +desc.item.upgrade.centrifuge=其作用ä¸è¨€è‡ªæ˜Ž +desc.item.upgrade.crystallizer=你新的最好的朋å‹:) +desc.item.upgrade.screm=å°±åƒåœ¨ã€Šè¶…级马里奥》里,所有的方å—都是蟾èœ$ä½†åœ¨è¿™é‡Œæ˜¯åŠæ¡å‘½çš„科学家.$他们在尖å«.很多尖å«. +desc.item.upgrade.nullifier=有50%%的几率用/dev/zero覆盖无用物å“$有50%%的几率将无用物å“移到/dev/null +desc.item.upgrade.gc_speed=å…许对六氟化铀进行全åŒä½ç´ åˆ†ç¦»$§eç¦»å¿ƒæœºä¹Ÿä¼šè¿›å…¥ç—…æ€æ¨¡å¼ +desc.item.zirnoxBreedingRod=§2[ZIRNOX锆诺克斯å应堆增殖棒]$§e放在燃料棒æ—边以增殖$§eæŒç»­ %d ticks +desc.item.zirnoxRod=§a[ZIRNOX锆诺克斯å应堆燃料棒]$§e产生 %1$d çƒ­é‡æ¯tick$§eæŒç»­ %2$d ticks + +digamma.playerDigamma=玩家Ϝ迪伽马è¾ç…§æ°´å¹³: +digamma.playerHealth=玩家所å—Ϝ迪伽马è¾ç…§å½±å“: +digamma.playerRes=玩家Ϝ迪伽马防护水平: +digamma.title=玩家Ϝ迪伽马è¾å°„自检器 + +entity.entity_cyber_crab.name=机械螃蟹 +entity.entity_elder_one.name=Quackoså¤è€è€… entity.entity_fucc_a_ducc.name=é¸­å­ entity.entity_glyphid.name=异虫 entity.entity_glyphid_behemoth.name=巨兽异虫 @@ -1011,20 +1054,24 @@ entity.entity_mob_nuclear_creeper.name=核爆爬行者 entity.entity_mob_phosgene_creeper.name=光气爬行者 entity.entity_mob_tainted_creeper.name=污染爬行者 entity.entity_mob_volatile_creeper.name=ä¸ç¨³å®šçˆ¬è¡Œè€… -entity.entity_taint_crab.name=污染螃蟹 -entity.entity_tesla_crab.name=ç£æš´èžƒèŸ¹ -entity.hbm.entity_balls_o_tron.name=机械蠕虫 -entity.hbm.entity_balls_o_tron_seg.name=机械蠕虫 +entity.entity_plastic_bag.name=塑料袋 +entity.entity_taint_crab.name=è…化机械螃蟹 +entity.entity_tesla_crab.name=ç£æš´æœºæ¢°èžƒèŸ¹ +entity.hbm.entity_balls_o_tron.name=世-界-æ¯-ç­-者 O-TRON +entity.hbm.entity_balls_o_tron_seg.name=世-界-æ¯-ç­-者 O-TRON 躯干 entity.hbm.entity_bullet.name=å­å¼¹ entity.hbm.entity_rocket.name=ç«ç®­å¼¹ -entity.hbm.entity_schrabnel.name=Schrabnel +entity.hbm.entity_schrabnel.name=弹片 + excavator.crusher=粉碎开关 excavator.drill=挖掘开关 excavator.silktouch=精准采集开关 excavator.veinminer=è¿žé”æŒ–矿开关 excavator.walling=填充开关 -flare.ignition=点ç«è£…ç½® -flare.valve=æµé‡é˜€ + +flare.ignition=点ç«å¼€å…³ +flare.valve=燃气阀门 + fluid.acid_fluid=é…¸ fluid.corium_fluid=堆芯熔èžç‰© fluid.mud_fluid=毒泥 @@ -1069,7 +1116,7 @@ gun.make.MANN=Open Mannå…¬å¸ gun.make.MAXIM=æµ·å‹’å§†Â·é©¬å…‹æ² gun.make.METRO=åœ°é“æžªæ‰‹ gun.make.MWT=MWT原型实验室 -gun.make.NAWS=Kayarm Industries +gun.make.NAWS=Kayarm工业 gun.make.ERFURT=埃尔ç¦ç‰¹æœºæ¢°åˆ¶é€ åŽ‚ gun.make.NONE=- gun.make.RAYTHEON=å¯¼å¼¹ç³»ç»Ÿå…¬å¸ @@ -1082,74 +1129,75 @@ gun.make.SACO=è¨ç§‘防å«å†›æ¢° gun.make.TULSKY=图拉武器厂 gun.make.UAC=è”åˆå®‡å®™èˆªç©ºå…¬å¸ gun.make.UNKNOWN=??? -gun.make.WESTTEK=WestTek研究设施 -gun.make.WGW=å¨å»‰Â·å¤æ–¯ç‰¹æ´›å¤«Â·ç»´å°”å…‹ -gun.make.WINCHESTER=æ¸©å½»æ–¯ç‰¹é€Ÿå°„æ­¦å™¨å…¬å¸ -gun.make.WINCHESTER_BIGMT=温彻斯特速射武器公å¸/大型MT -gun.name.ar15_50=AR-15 .50BMGåž‹ -gun.name.baeAR=英国制å¼çªå‡»æ­¥æžª -gun.name.bel=野ç«è›‹å‘射器 -gun.name.benelli=伯奈利M4 Super 90霰弹枪 -gun.name.benelliDrum=伯奈利M4 Super 90霰弹枪 (泵动供弹改进型) +gun.make.WESTTEK=西部科技 +gun.make.WGW=å¨å»‰Â·å¤æ–¯ç‰¹æ´›å¤«Â·æ²ƒå…‹ +gun.make.WINCHESTER=温彻斯特连å‘è½»æ­¦å™¨å…¬å¸ +gun.make.WINCHESTER_BIGMT=温彻斯特连å‘è½»æ­¦å™¨å…¬å¸ / 巨山研å‘中心 + +gun.name.ar15_50=AR-15 .50 BMG æ¨¡å¼ +gun.name.baeAR=ä¸åˆ—颠标准型çªå‡»æ­¥æžª +gun.name.bel=B.F.野ç«è›‹å¼¹å°„器 +gun.name.benelli=è´å†…利M4 Super 90霰弹枪 +gun.name.benelliDrum=è´å†…利M4 Super 90霰弹枪(弹鼓) gun.name.bio=RI No. 2 Mark 1 gun.name.bolter=Manticora Pattern爆弹枪 gun.name.congoLake=刚果湖水泵动榴弹å‘射器 gun.name.cPython=柯尔特蟒蛇 -gun.name.cz53=CZ53 å•兵转轮机枪 -gun.name.cz57=CZ57 å¤ä»‡è€…机枪 -gun.name.dart=针枪 -gun.name.deagle=ä»¥è‰²åˆ—å†›äº‹å·¥ä¸šå…¬å¸æ²™æ¼ ä¹‹é¹° -gun.name.emp=EMP投射器 -gun.name.extinguisher=PROTEXç­ç«å™¨6kg -gun.name.ffiV=FFI Viper -gun.name.ffiVInox=FFI Viper Inox -gun.name.ffiVLead=FFI Viper Lead -gun.name.ffiVN1=FFI Viper N1 -gun.name.ffiVN2=FFI Viper N2 -gun.name.ffiVUltra=FFI Viper Ultra -gun.name.ffivBling=FFI Viper Bling -gun.name.ffivSatur=FFI Viper D-25A -gun.name.g36=HK G36çªå‡»æ­¥æžª -gun.name.gPistol=HK69A1 手æŒå•呿¦´å¼¹å‘射器 -gun.name.gustav=å¡å°”Â·å¤æ–¯å¡”夫M1æ— åŽå力炮 -gun.name.ifHorseshoe=IF-18 è¹„é“ -gun.name.ifPit=IF-18 è¹„é“ Bottomless Pit -gun.name.ifScope=IF-18 è¹„é“ Scoped -gun.name.ifStorm=IF-18 è¹„é“ é“¶è‰²é£Žæš´ -gun.name.ifVanity=IF-18 è¹„é“ Vanity -gun.name.karl=M1 å¡å°”Â·å¤æ–¯å¡”夫 -gun.name.ks23=KS-23霰弹枪 -gun.name.lacunae=Auntie Lacunae -gun.name.lasetDet=éœæ™®ç»´å°”激光雷管 -gun.name.lunaAR=1986 Bishamontenå¼çªå‡»æ­¥æžª -gun.name.lunaGun=1978 RÄhula type Standard Issue Sidearm (Revision 2) -gun.name.lunaHLR=1944嫦娥å¼è½»æœºæžª -gun.name.lunaShotty=1978å¹´å…³ç¾½å¼æ•£å¼¹æžªï¼ˆç¬¬1次修订) -gun.name.lunaSMG=1956 Änanda type Submachine Gun -gun.name.lunaSniper=1915åŽç¾¿å¼åå™¨ææ­¥æžª +gun.name.cz53=CZ53å•å…µç«ç¥žç‚® +gun.name.cz57=CZ57å¤ä»‡ç«ç¥žç‚® +gun.name.dart=气动射针枪 +gun.name.deagle=IMI沙漠之鹰 +gun.name.emp=EMPç£æš´æ­¥æžª +gun.name.extinguisher=PROTEX6kgç­ç«å™¨ +gun.name.ffiV=普通左轮手枪 +gun.name.ffiVInox=强化左轮手枪 +gun.name.ffiVLead=æ ¸å­å·¦è½®æ‰‹æžª +gun.name.ffiVN1=梦魇左轮手枪(åˆä»£) +gun.name.ffiVN2=梦魇左轮手枪(黑暗) +gun.name.ffiVUltra=Sa326元素左轮手枪 +gun.name.ffivBling=黄金左轮手枪 +gun.name.ffivSatur=土星金属手枪 +gun.name.g36=黑克勒 & 科赫 G36çªå‡»æ­¥æžª +gun.name.gPistol=HK69榴弹手枪 +gun.name.gustav=M1å¡å°”Â·å¤æ–¯å¡”夫无åŽåº§åŠ›æ­¥æžª +gun.name.ifHorseshoe=IF-18蹄é“军工诺åŽå…‹ +gun.name.ifPit=IF-18蹄é“军工红钥匙左轮手枪 +gun.name.ifScope=å°çš®çš„IF-18蹄é“军工左轮手枪 +gun.name.ifStorm=IF-18蹄é“军工银色风暴 +gun.name.ifVanity=黑æ°å…‹çš„IF-18蹄é“军工五å‘装左轮枪 +gun.name.karl=M1å¡å°”ç«ç®­ç­’ +gun.name.ks23=è¨ç¼ªå°”-23大å£å¾„霰弹枪 +gun.name.lacunae=CZ33地狱ç«ç¥ž +gun.name.lasetDet=éœæ™®ç»´å°”激光引爆器 +gun.name.lunaAR=1986-â€æ¯˜æ²™é—¨å¤©â€œå¼çªå‡»æ­¥æžª +gun.name.lunaGun=1978-â€æ¯—çº½å¤©â€œå¼æ ‡é…è‡ªå«æ­¦å™¨ (2改型) +gun.name.lunaHLR=1944-“嫦娥â€å¼è½»æœºæžª +gun.name.lunaShotty=1978-â€å…³ç¾½â€œå¼éœ°å¼¹æžª (1改型) +gun.name.lunaSMG=1956-â€é˜¿éš¾ç­”“å¼å†²é”‹æžª +gun.name.lunaSniper=1915 “åŽç¾¿â€ å¼å物质æ¥å¤æžª gun.name.lunaTWR=时间扭曲步枪 -gun.name.m2=M2å¼å‹ƒæœ—å®å¤§å£å¾„釿œºæžª -gun.name.m42=M-42战术核弹å‘射器 -gun.name.m42MIRV=M-42实验MIRV -gun.name.m60=7.62毫米å£å¾„M60机枪 +gun.name.m2=.50å£å¾„å‹ƒæœ—å®æœºæžª, M2, HB +gun.name.m42=M-42战术核弹射器 +gun.name.m42MIRV=M-42 核弹弹射器"è¯•éªŒæ€§å­æ¯å¼¹å¤´ +gun.name.m60= 7.62 mmå£å¾„机枪, M60 gun.name.maxim=é©¬å…‹æ²æœºæžª -gun.name.maximDouble=åŒé‡é©¬å…‹æ²æœºæžª -gun.name.mg3=MG-42通用机枪 -gun.name.mp40=MP40冲锋枪 -gun.name.nerf=æŸäº›æ— è‰¯è®°è€…眼中的大规模æ€ä¼¤æ€§æ­¦å™¨ -gun.name.osipr=守望标准型脉冲步枪 -gun.name.panz=åå¦å…‹ç«ç®­æ¥å¤æžª 54 -gun.name.quadro=OpenQuadro便æºå¼å¯¼å¼¹å‘射器 +gun.name.maximDouble=åŒç®¡é©¬å…‹æ²æœºæžª +gun.name.mg3=通用MG3机枪 - .50 æ¨¡å¼ +gun.name.mp40=Mp40冲锋枪 +gun.name.nerf=设计者未知的NERFå‘射器 +gun.name.osipr=看守者暗能é‡è„‰å†²æ­¥æžª +gun.name.panz=å¦å…‹æ€æ‰‹54 +gun.name.quadro=å››è”装制导便æºå¼ç”µè§†åˆ¶å¯¼å¯¼å¼¹å‘射器 gun.name.remington870=雷明顿870 -gun.name.revolverCursed=ä¸åˆ—颠标准问题电动手枪 -gun.name.sauer=ç»å°”猎枪 -gun.name.spas12=弗兰基SPAS-12å¼12å·éœ°å¼¹æžª -gun.name.spiw=H&R SPIW -gun.name.stinger=FIM-92毒刺便æºå¼é˜²ç©ºç³»ç»Ÿ -gun.name.stingerOneSky=The One Sky 毒刺便æºå¼é˜²ç©ºç³»ç»Ÿ +gun.name.revolverCursed=被诅咒的ä¸åˆ—颠标准å‘行版左轮手枪 +gun.name.sauer=æ–¯å¦.索尔的è¨ç¼ªå°”-23霰 +gun.name.spas12= +gun.name.spiw=H&R弗莱切特镖 +gun.name.stinger=FIM-92“毒刺â€ä¾¿æºå¼é˜²ç©ºå¯¼å¼¹ +gun.name.stingerOneSky=天马防空导弹 gun.name.supershotty=åŒç®¡æˆ˜æ–—霰弹枪 -gun.name.tau=XVL1456 é™¶å­åŠ å†œç‚® -gun.name.tommy9=M1A1冲锋枪9毫米型 +gun.name.tau=XVL1456 è´Ÿé™¶å­åŠ å†œç‚®åŽŸåž‹ +gun.name.tommy9=9mmå£å¾„M1A1冲锋枪 gun.name.tommy=M1A1冲锋枪 gun.name.topaz=é‡åž‹ç«ç„°ç‡ƒçƒ§å™¨ gun.name.uacCarbine=UAC-41å¡å®¾æžª @@ -1249,14 +1297,15 @@ hbmfluid.death=锇酸溶液 hbmfluid.deuterium=æ°˜ hbmfluid.diesel=柴油 hbmfluid.diesel_crack=裂化柴油 -hbmfluid.diesel_crack_reform=高辛烷值裂化柴油 +hbmfluid.diesel_crack_reform=高辛烷值裂解柴油 hbmfluid.diesel_reform=高辛烷值柴油 hbmfluid.egg=蛋溶解液 hbmfluid.estradiol=雌二醇溶液 hbmfluid.ethanol=乙醇 -hbmfluid.enderjuice=æœ«å½±æžœæ± +hbmfluid.enderjuice=末影液 hbmfluid.fishoil=鱼油 hbmfluid.fracksol=压裂液 +hbmfluid.fullerene=富勒烯溶液 hbmfluid.gas=天然气 hbmfluid.gas_coker=焦化气 hbmfluid.gasoline=å«é“…汽油基油 @@ -1312,7 +1361,7 @@ hbmfluid.potassium_chloride=氯化钾溶液 hbmfluid.puf6=六氟化钚 hbmfluid.radiosolvent=高性能溶剂 hbmfluid.reclaimed=å†ç”Ÿæ²¹ -hbmfluid.redmud=红色泥浆 +hbmfluid.redmud=红泥浆 hbmfluid.reformate=釿•´æ²¹ hbmfluid.reformgas=釿•´æ°” hbmfluid.salient=绿色液体 @@ -1331,7 +1380,7 @@ hbmfluid.spentsteam=低压蒸汽 hbmfluid.steam=蒸汽 hbmfluid.sulfuric_acid=ç¡«é…¸ hbmfluid.sunfloweroil=葵花籽油 -hbmfluid.superhotsteam=超热蒸汽 +hbmfluid.superhotsteam=超热浓蒸汽 hbmfluid.syngas=åˆæˆæ°” hbmfluid.thorium_salt=æ¶²æ€é’ç› hbmfluid.thorium_salt_depleted=贫化液æ€é’ç› @@ -1347,7 +1396,27 @@ hbmfluid.watz=毒泥浆 hbmfluid.woodoil=木油 hbmfluid.xenon=氙气 hbmfluid.xpjuice=ç»éªŒæ± -hbmfluid.xylene=轻质芳烃(BTX) +hbmfluid.xylene=BTX苯-甲苯-二甲苯混åˆç‰© + +hbmfluid.Trait.Combustible=[å¯ç‡ƒçƒ§å‘电]$产生 §c%sHE §6æ¯æ¡¶$燃料等级: §c%s +hbmfluid.Trait.Combustible.FuelGrade=低$中$高$航空级$æ°”æ€ +hbmfluid.Trait.Coolable=热容é‡: %s TU$导热效率: %s%% +hbmfluid.Trait.Corrosive=[强è…蚀性]$[è…蚀性] +hbmfluid.Trait.Flammable=[å¯ç‡ƒçƒ§äº§çƒ­]$产生 §c%sTU §eæ¯æ¡¶ +hbmfluid.Trait.Poison=[有毒气体] +hbmfluid.Trait.PWRModerator=[PWR中å­é€šé‡å€å¢ž]$核心中å­é€šé‡ %s%s%% +hbmfluid.Trait.Toxin=[毒素] +hbmfluid.Trait.VentRadiation=[放射性] +hbmfluid.TraitSimple.Amat=[å物质] +hbmfluid.TraitSimple.Delicious=[美味] +hbmfluid.TraitSimple.Gaseous=[气体] +hbmfluid.TraitSimple.Gaseous_ART=[室温下为气体] +hbmfluid.TraitSimple.LeadContainer=[需è¦ç”¨å±é™©å“ç½å®¹çº³] +hbmfluid.TraitSimple.Leaded=[å«é“…燃料] +hbmfluid.TraitSimple.Liquid=[液体] +hbmfluid.TraitSimple.Plasma=[等离å­ä½“] +hbmfluid.TraitSimple.Viscous=[粘性] + hbmpseudofluid.none=空 hbmpseudofluid.heuf6=高浓缩六氟化铀 hbmpseudofluid.meuf6=中浓缩六氟化铀 @@ -1527,12 +1596,12 @@ item.ammo_4gauge_explosive.name=23mm榴弹 item.ammo_4gauge_flechette.name=4å·ç®­éœ°å¼¹ item.ammo_4gauge_flechette_phosphorus.name=4å·ç®­éœ°å¼¹[白磷] item.ammo_4gauge_kampf.name=23mmç«ç®­å¼¹ -item.ammo_4gauge_semtex.name=23mmé‡‡çŸ¿å¼¹è¯ -item.ammo_4gauge_sleek.name=4å·é¹¿å¼¹[IF-R&D] -item.ammo_4gauge_slug.name=å››å·å®žå¿ƒç‹¬å¤´å¼¹ -item.ammo_4gauge_titan.name=4å·Quacker鹿弹 -item.ammo_4gauge_vampire.name=4å·æœ¨ç­¾å¼¹ -item.ammo_4gauge_void.name=4å·ç”µç¦»ç²’å­å¼¹ +item.ammo_4gauge_semtex.name=23mm挖掘榴弹 +item.ammo_4gauge_sleek.name=4å£å¾„鹿弹[IF-R&D] +item.ammo_4gauge_slug.name=å››å£å¾„实心独头弹 +item.ammo_4gauge_titan.name=å››å£å¾„æ³°å¦æ€æ‰‹å¼¹ +item.ammo_4gauge_vampire.name=4å£å¾„åå¸è¡€é¬¼æœ¨æ¡©éœ°å¼¹ +item.ammo_4gauge_void.name=4å£å¾„电离å­éœ°å¼¹ item.ammo_50ae.name=.50AEå­å¼¹ item.ammo_50ae_ap.name=.50AEå­å¼¹[AP] item.ammo_50ae_chlorophyte.name=.50AEå­å¼¹[å¶ç»¿] @@ -1551,17 +1620,17 @@ item.ammo_50bmg_phosphorus.name=.50BMGå­å¼¹[白磷] item.ammo_50bmg_sleek.name=.50BMGå­å¼¹[IF-R&D] item.ammo_50bmg_star.name=.50BMGå­å¼¹[星辉] item.ammo_556.name=5.56mmå­å¼¹ -item.ammo_556_ap.name=5.56mmå­å¼¹[AP] -item.ammo_556_chlorophyte.name=5.56mmå­å¼¹[å¶ç»¿] -item.ammo_556_du.name=5.56mmå­å¼¹[è´«é“€] -item.ammo_556_flechette.name=5.56mm弗莱彻å­å¼¹ -item.ammo_556_flechette_chlorophyte.name=5.56mm弗莱彻å­å¼¹[å¶ç»¿] -item.ammo_556_flechette_du.name=5.56mm弗莱彻å­å¼¹ [贫铀穿甲] -item.ammo_556_flechette_incendiary.name=5.56mm弗莱彻å­å¼¹ [燃烧] -item.ammo_556_flechette_phosphorus.name=5.56mm弗莱彻å­å¼¹ [白磷穿甲] -item.ammo_556_flechette_sleek.name=5.56mm弗莱彻å­å¼¹[IF-R&D] +item.ammo_556_ap.name=5.56mmå­å¼¹[穿甲弹] +item.ammo_556_chlorophyte.name=5.56mmå¼¹è¯[绿藻] +item.ammo_556_du.name=5.56mmå­å¼¹[贫铀涂层] +item.ammo_556_flechette.name=5.56mm镖形弹 +item.ammo_556_flechette_chlorophyte.name=5.56mm镖形弹弹è¯[绿藻] +item.ammo_556_flechette_du.name=5.56mm镖形弹 [贫铀涂层] +item.ammo_556_flechette_incendiary.name=5.56mm镖形弹 [燃烧] +item.ammo_556_flechette_phosphorus.name=5.56mm镖形弹 [白磷弹] +item.ammo_556_flechette_sleek.name=5.56mm镖形弹[IF-R&D] item.ammo_556_k.name=5.56mm空包弹 -item.ammo_556_phosphorus.name=5.56mmå­å¼¹[白磷] +item.ammo_556_phosphorus.name=5.56mmå­å¼¹[白磷弹] item.ammo_556_sleek.name=5.56mmå­å¼¹[IF-R&D] item.ammo_556_star.name=5.56mmå­å¼¹ [星辉] item.ammo_556_tracer.name=5.56mm å­å¼¹[曳光弹] @@ -1601,13 +1670,13 @@ item.ammo_coilgun.name=钨制线圈枪å­å¼¹ item.ammo_coilgun_du.name=é“€é“åˆé‡‘制线圈枪å­å¼¹ item.ammo_coilgun_rubber.name=橡胶制线圈枪å­å¼¹ item.ammo_container.name=万能弹è¯ç›’ -item.ammo_dart.name=塑料镖[凋零] -item.ammo_dart_nerf.name=NERF 飞镖 -item.ammo_dart_nuclear.name=塑料镖[定时炸è¯] -item.ammo_dgk.name=åŒè”守门员近防系统200å‘å¼¹è¯ -item.ammo_fireext.name=ç­ç«å™¨ æ°´ç½ -item.ammo_fireext_foam.name=ç­ç«å™¨ æ³¡æ²«ç½ -item.ammo_fireext_sand.name=ç­ç«å™¨ ç¡¼ç ‚ç½ +item.ammo_dart.name=塑料飞镖 [凋零] +item.ammo_dart_nerf.name=NERF飞镖 +item.ammo_dart_nuclear.name=塑料飞镖 [定时爆炸] +item.ammo_dgk.name=200å‘åŒç®¡è¿‘防炮"éœåŽå¾·"å¼¹è¯ç®± +item.ammo_fireext.name=ç­ç«å™¨æ°´ç½ +item.ammo_fireext_foam.name=ç­ç«å™¨æ³¡æ²«ç½ +item.ammo_fireext_sand.name=ç­ç«å™¨ç¡¼ç ‚ç½ item.ammo_folly.name=é“¶å¼¹ item.ammo_folly_du.name=é“¶å¼¹[è´«é“€, ä¸çˆ†ç‚¸] item.ammo_folly_nuclear.name=é“¶å¼¹[æ ¸å­] @@ -1615,7 +1684,7 @@ item.ammo_fuel.name=æŸ´æ²¹ç½ item.ammo_fuel_gas.name=æ¯’æ°”ç½ item.ammo_fuel_napalm.name=å‡å›ºæ±½æ²¹ç½ item.ammo_fuel_phosphorus.name=ç™½ç£·ç½ -item.ammo_fuel_vaporizer.name=æ±½åŒ–ç½ +item.ammo_fuel_vaporizer.name=æŒ¥å‘æ€§ç‡ƒæ–™ç½ item.ammo_grenade.name=40mm榴弹 item.ammo_grenade_concussion.name=40mm榴弹[震è¡] item.ammo_grenade_finned.name=40mm榴弹[尾翼稳定] @@ -1649,8 +1718,8 @@ item.ammo_nuke_barrel.name=å°åž‹æ ¸åºŸæ–™æ¡¶ item.ammo_nuke_high.name=迷你核弹 (高当é‡) item.ammo_nuke_low.name=迷你核弹 (低当é‡) item.ammo_nuke_pumpkin.name=å—瓜炸弹 -item.ammo_nuke_safe.name=迷你核弹 (安全) -item.ammo_nuke_tots.name=迷你核弹 (幼体) +item.ammo_nuke_safe.name=迷你核弹 (安全) +item.ammo_nuke_tots.name=迷你核弹 (å°åž‹æ•£å°„弹丸) item.ammo_rocket.name=84mmç«ç®­å¼¹ item.ammo_rocket_canister.name=84mm ç«ç®­å¼¹[榴霰弹] item.ammo_rocket_digamma.name=§4å½’ 零§r @@ -1663,7 +1732,7 @@ item.ammo_rocket_phosphorus.name=84mmç«ç®­å¼¹[白磷] item.ammo_rocket_rpc.name=84mmç«ç®­å¼¹[飞行电锯] item.ammo_rocket_shrapnel.name=84mmç«ç®­å¼¹[破片] item.ammo_rocket_sleek.name=84mmç«ç®­å¼¹[IF-R&D] -item.ammo_rocket_toxic.name=84mmç«ç®­å¼¹[化学] +item.ammo_rocket_toxic.name=84mmç«ç®­å¼¹[化学毒气] item.ammo_shell.name=240mm炮弹 item.ammo_shell_apfsds_du.name=240mm 贫铀尾翼稳定脱壳穿甲弹 item.ammo_shell_apfsds_t.name=240mm 钨心尾翼稳定脱壳穿甲弹 @@ -1691,9 +1760,14 @@ item.ams_catalyst_strontium.name=é”¶å应催化剂 item.ams_catalyst_thorium.name=é’å应催化剂 item.ams_catalyst_tungsten.name=é’¨å应催化剂 item.ams_core_eyeofharmony.name=å’Œè°ä¹‹çœ¼[AMS/DFC核心] +item.ams_core_eyeofharmony.desc=ä¸€é¢—æ’æ˜Ÿè‡ªè¡Œå´©å¡Œ,$ä»…ä»…å‡ çº³ç§’å°±å˜æˆäº†é»‘æ´ž,$被时间冻结了.$如果我ä¸äº†è§£ç›¸å…³é¢†åŸŸçš„è¯,$我会说这是æŸä¸ªäººç¼–出æ¥çš„一些$关于深空魔法的故作高深的鬼è¯.$你还欠我åå—é’±. item.ams_core_sing.name=活跃奇点[AMS/DFC核心] -item.ams_core_thingy.name=Thingy[AMS/DFC核心] +item.ams_core_sing.desc=一ç§è¢«ä¿®æ­£çš„ã€æœªå®šä¹‰çš„æ—¶ç©ºçжæ€$用于å助胶å­é—´èšå˜å’Œæ—¶ç©ºæ¹®ç­.$是的,这会缓慢而稳定地摧æ¯$宇宙本身结构,但至少你å¯ä»¥ç”¨å®ƒç»™ä½ çš„$烤é¢åŒ…机供电$所以一切都安好. +item.ams_core_thingy.name=暮光闪闪的皇冠[AMS/DFC核心] +item.ams_core_thingy.desc=...$...$...我还拿ç€è¿™ä¸ªå—?$这是个å°é‡‘属制å“.$我ä¸çŸ¥é“它是从哪里æ¥çš„,也ä¸çŸ¥é“它是干什么的,$也许他们是在垃圾场å‘现的,$ç„¶åŽæŠŠå®ƒå½“ä½œæŸç§å¤è‘£è‰ºæœ¯å“喿މ.$äº‹å®žä¸Šå¦‚æžœä¸æ˜¯å› ä¸ºæˆ‘å¯ä»¥æŠŠå®ƒå¡žè¿›ä¸€ä¸ªå·¨å¤§çš„æ¿€å…‰å应堆里,$我å¯èƒ½ä¼šæŠŠå®ƒæ‰”回到它属于的地方$----垃圾桶. +item.ams_core_thingy_hide.desc=是的,我甚至ä¸ä¼šè´¨ç–‘这个. item.ams_core_wormhole.name=微型虫洞[AMS/DFC核心] +item.ams_core_wormhole.desc=æ•°å亿个纳米虫洞云无法主动从$å¦ä¸€ä¸ªç»´åº¦èŽ·å–物质$而是将所有物质转化为$纯能é‡.è¿™æ„味ç€$你正在积æžåœ°ç ´åå¦ä¸€ä¸ª$维度,åƒå¸ä¸€ç›’æžœæ±$一样å¸å¹²å®ƒ.$无论如何,这个维度å¯èƒ½å¾ˆç³Ÿç³•.$我敢打赌里é¢å…¨æ˜¯é»„蜂或是别的什么垃圾,伙计,$而我讨厌这些东西. item.ams_focus_blank.name=空白稳定器焦点 item.ams_focus_booster.name=较弱的约æŸåœºå’Œæ ¸å¿ƒèƒ½é‡æ³¨å…¥ï¼š$更多的热é‡äº§ç”Ÿï¼Œæ›´å¤šçš„能é‡ã€‚ item.ams_focus_booster.desc=较弱的约æŸåœºå’Œæ ¸å¿ƒèƒ½é‡æ³¨å…¥ï¼š$更多的热é‡äº§ç”Ÿï¼Œæ›´å¤šçš„能é‡ã€‚ @@ -1874,7 +1948,7 @@ item.blade_meteorite.name=陨石刀 item.blade_titanium.name=钛扇片 item.blade_tungsten.name=钨强化扇片 item.blades_advanced_alloy.name=高级åˆé‡‘刀片 -item.blades_desh.name=Desh制刀片 +item.blades_desh.name=德什制刀片 item.blades_steel.name=钢制刀片 item.blades_titanium.name=钛制刀片 item.blowtorch.name=å–·ç¯ @@ -1904,6 +1978,7 @@ item.bottle_empty.name=空å¯ä¹ç“¶ item.bottle_mercury.name=一瓶水银 item.bottle_nuka.name=æ ¸å­å¯ä¹ item.bottle_opener.name=Hbm自制开瓶器 +item.bottle_opener.desc=我自己的开瓶器.$谨慎使用! item.bottle_quantum.name=é‡å­æ ¸å­å¯ä¹ item.bottle_rad.name=è¾å°„S~æ ¸å­å¯ä¹ item.bottle_sparkle.name=S~æ ¸å­å¯ä¹ @@ -2013,7 +2088,7 @@ item.canned_yogurt.desc=å¯èƒ½å掉了,但管它呢 item.canteen_13.name=Vault13水壶 item.canteen_fab.name=æžå“ä¼ç‰¹åŠ  item.canteen_vodka.name=ä¼ç‰¹åŠ  -item.cap_fritz.name=弗里茨瓶盖 +item.cap_fritz.name=Fritz弗里茨å¯ä¹ç“¶ç›– item.cap_korl.name=Korlç“¶ç›– item.cap_nuka.name=æ ¸å­å¯ä¹ç“¶ç›– item.cap_quantum.name=樱桃味核å­å¯ä¹ç“¶ç›– @@ -2057,25 +2132,26 @@ item.centrifuge_element.name=离心元件 item.centrifuge_tower.name=离心塔 item.chainsaw.name=链锯 item.cheese.name=奶酪 -item.cheese_quesadilla.name=奶酪油炸玉米粉饼 -item.chemical_dye.black.name=化学染料(黑色) -item.chemical_dye.blue.name=化学染料(è“色) -item.chemical_dye.brown.name=化学染料(棕色) -item.chemical_dye.cyan.name=化学染料(é’色) -item.chemical_dye.gray.name=化学染料(ç°è‰²ï¼‰ -item.chemical_dye.green.name=化学染料(绿色) -item.chemical_dye.lightblue.name=化学染料(浅è“色) -item.chemical_dye.lime.name=化学染料(石ç°ï¼‰ -item.chemical_dye.magenta.name=化学染料(å“红色) -item.chemical_dye.orange.name=化学染料(橙色) -item.chemical_dye.pink.name=化学染料(粉色) -item.chemical_dye.purple.name=化学染料(紫色) -item.chemical_dye.red.name=化学染料(红色) -item.chemical_dye.silver.name=化学染料(浅ç°è‰²ï¼‰ -item.chemical_dye.white.name=化学染料(白色) -item.chemical_dye.yellow.name=化学染料(黄色) -item.chemistry_set.name=实验室玻璃器皿 -item.chemistry_set_boron.name=实验室玻璃器皿(硼玻璃) +item.cheese_quesadilla.name=墨西哥奶酪饼 +item.cheese_quesadilla.desc=这就是50å¹´ä»½çš„é…µæ¯æ„ŸæŸ“对你的影å“. +item.chemical_dye.black.name=化学染料 (黑色) +item.chemical_dye.blue.name=化学染料 (è“色) +item.chemical_dye.brown.name=化学染料 (棕色) +item.chemical_dye.cyan.name=化学染料 (é’色) +item.chemical_dye.gray.name=化学染料 (ç°è‰²) +item.chemical_dye.green.name=化学染料 (绿色) +item.chemical_dye.lightblue.name=化学染料 (æµ…è“色) +item.chemical_dye.lime.name=化学染料 (石ç°è‰²) +item.chemical_dye.magenta.name=化学染料 (洋红色) +item.chemical_dye.orange.name=化学染料 (橙色) +item.chemical_dye.pink.name=化学染料 (粉色) +item.chemical_dye.purple.name=化学染料 (紫色) +item.chemical_dye.red.name=化学染料 (红色) +item.chemical_dye.silver.name=化学染料 (æµ…ç°è‰²) +item.chemical_dye.white.name=化学染料 (白色) +item.chemical_dye.yellow.name=化学染料 (黄色) +item.chemistry_set.name=化学玻璃仪器 +item.chemistry_set_boron.name=化学玻璃仪器(硼玻璃) item.chemistry_template.name=化工厂模æ¿: item.chernobylsign.name=è¾å°„警告标志战斧 item.chlorine_pinwheel.name=氯气转轮 @@ -2300,6 +2376,7 @@ item.debris_graphite.name=çƒ­çŸ³å¢¨å— item.debris_metal.name=断裂金属棒 item.debris_shrapnel.name=èµ°é“碎片 item.definitelyfood.name=完全ä¸è„牌军粮 +item.definitelyfood.desc=是的,$我厌倦了ä¸å¾—ä¸å¤–出$为了找东西åƒè€Œä¸è‡³äºŽé¥¿æ­»,$所以这就是我天æ‰èˆ¬çš„解决的方案:$ $åƒç‚¹å¯é£Ÿç”¨çš„æ³¥åœŸ. item.defuser.name=高科技拆弹装置 item.defuser_gold.name=黄金剪线钳 item.demon_core_closed.name=å°é—­çš„æ¶é­”æ ¸å¿ƒ @@ -2314,13 +2391,16 @@ item.designator_arty_range.name=远程ç«ç‚®é¥æŽ§å™¨ item.designator_manual.name=手动目标指示器 item.designator_range.name=远程目标指示器 item.detonator.name=起爆器 +item.detonator.desc=Shiftå³å‡»æ¥è®¾ç½®è§¦å‘ä½ç½®,$å³å‡»æ¥è§¦å‘! +item.detonator.pos.desc=未设置触å‘ä½ç½®!$连接到: %s, %s, %s item.detonator_de.name=死亡炸弹 item.detonator_deadman.name=死亡雷管 item.detonator_laser.name=激光起爆器 item.detonator_multi.name=多å‘起爆器 item.deuterium_filter.name=氘过滤器 item.diamond_gavel.name=钻石槌 -item.dieselsuit_boots.name=柴油动力高跟鞋 +item.diamond_gavel.desc=那个关于钻石沙砾的笑è¯! 它现在终于讲得通了!!$ $§9能造æˆå°½å¯èƒ½å¤šçš„伤害. +item.dieselsuit_boots.name=æŸ´æ²¹åŠ¨åŠ›è£…ç”²é´ item.dieselsuit_helmet.name=柴油动力头戴å¼çŽ¯å¢ƒä¼ æ„Ÿå™¨ item.dieselsuit_legs.name=柴油动力腿部伺æœç³»ç»Ÿ item.dieselsuit_plate.name=柴油动力控制器 @@ -2389,17 +2469,17 @@ item.envsuit_boots.name=M1TTY环ä¿å¥—装é´å­ item.envsuit_helmet.name=M1TTY环ä¿å¥—装头盔 item.envsuit_legs.name=M1TTY环ä¿å¥—装护腿 item.envsuit_plate.name=M1TTY环ä¿å¥—装胸甲 -item.euphemium_boots.name=Epé´å­ -item.euphemium_capacitor.name=Ep电容 -item.euphemium_capacitor.desc=å…许被动分散累积的正能é‡ã€‚ -item.euphemium_helmet.name=Ep头盔 -item.euphemium_kit.name=Ep工具箱 -item.euphemium_legs.name=Ep护腿 -item.euphemium_plate.name=Ep胸甲 -item.euphemium_stopper.name=Ep-阻滞者 -item.explosive_lenses.name=炸è¯é€é•œé˜µåˆ— -item.explosive_lenses.desc=8个PBX炸è¯ç»„装的阵列,带有一个薄的$é“æŽ¨è¿›å™¨ã€ç¡¬é“外壳和$å°åž‹æ¡¥ä¸é›·ç®¡ã€‚ -item.fabsols_vodka.name=Fabsolä¼ç‰¹åŠ  +item.euphemium_boots.name=Ep元素é´å­ +item.euphemium_capacitor.name=Ep元素电容器 +item.euphemium_capacitor.desc=å…许被动分散累积的正能é‡. +item.euphemium_helmet.name=Ep元素头盔 +item.euphemium_kit.name=Ep元素工具箱 +item.euphemium_legs.name=Ep元素护腿 +item.euphemium_plate.name=Ep元素胸甲 +item.euphemium_stopper.name=Ep元素-阻滞者 +item.explosive_lenses.name=高能内爆炸è¯é˜µåˆ— +item.explosive_lenses.desc=ç”±8个PBXèšåˆç‰©ç²˜ç»“炸è¯è£…é…而æˆï¼Œå¸¦æœ‰ä¸€ä¸ªè–„åž‹é“æŽ¨è¿›å™¨, $硬é“外壳和å°åž‹æ¡¥ä¸å¼é›·ç®¡. +item.fabsols_vodka.name=Fabsolçš„ä¼ç‰¹åŠ  item.factory_core_advanced.name=高级工厂能æºç»„ä»¶ item.factory_core_titanium.name=工厂能æºç»„ä»¶ item.fallout.name=一堆è¾å°„å°˜ @@ -2442,8 +2522,8 @@ item.fluid_identifier_multi.info=通用æµä½“识别ç ï¼š item.fluid_identifier_multi.info2=次è¦ç±»åž‹ï¼š item.fluid_tank_empty.name=空通用æµä½“ç½ item.fluid_tank_full.name=通用æµä½“ç½: -item.fluid_tank_lead_empty.name=空å±é™©å“ç½ -item.fluid_tank_lead_full.name=å±é™©å“ç½ï¼š +item.fluid_tank_lead_empty.name=空的å±é™©å“æµä½“ç½ +item.fluid_tank_lead_full.name=å±é™©å“æµä½“ç½: item.fluorite.name=氟石粉 item.flywheel_beryllium.name=é“制飞轮 item.fmn.name=æ°Ÿç¡è¥¿æ³®ç‰‡ @@ -2472,7 +2552,7 @@ item.fusion_shield_chlorophyte.name=å¶ç»¿é‡‘属èšå˜å应堆覆层 item.fusion_shield_desh.name=Deshèšå˜å应堆覆层 item.fusion_shield_tungsten.name=é’¨èšå˜å应堆覆层 item.fusion_shield_vaporwave.name=蒸汽波å应堆覆层 -item.gadget_core.name=钚核心 +item.gadget_core.name=大型钚核心 item.gadget_explosive.name=ç‚¸è¯ item.gadget_kit.name=å°çŽ©æ„ å¥—ä»¶ item.gadget_wireing.name=线路 @@ -2556,7 +2636,7 @@ item.gun_avenger.name=CZ57å¤ä»‡è€…机枪 item.gun_b92.name=§9B92èƒ½é‡æ‰‹æžªÂ§r item.gun_b92_ammo.name=§9B92能é‡å•元§r item.gun_b93.name=§cB93èƒ½é‡æ‰‹æžªÂ§r -item.gun_benelli.name=伯奈利自动霰弹枪(Drum Mod) +item.gun_benelli.name=伯奈利自动霰弹枪(弹鼓) item.gun_bf.name=BEL item.gun_bf_ammo.name=Mk.Vå°åž‹AMAT-炮弹 –野ç«åž‹ item.gun_bio_revolver.name=Atlas @@ -2609,8 +2689,8 @@ item.gun_lever_action.name=é©¬è…¿æ æ†å¼éœ°å¼¹æžª[原版] item.gun_lever_action_ammo.name=12x74 鹿弹 item.gun_lever_action_dark.name=é©¬è…¿æ æ†å¼éœ°å¼¹æžª[黑暗] item.gun_lever_action_sonata.name=自æ€éœ°å¼¹ -item.gun_lever_action_sonata_2.name=§cSonata的麦克风§r -item.gun_lunatic_marksman.name=Lunatic狙击步枪 +item.gun_lever_action_sonata_2.name=§cå¥é¸£çš„麦克风§r +item.gun_lunatic_marksman.name=月都科技狙击步枪 item.gun_m2.name=勃朗å®M2HBåž‹é‡æœºæžª item.gun_minigun.name=CZ53机枪 item.gun_mirv.name=M42核弹å‘射器 "试验型MIRV" @@ -2671,9 +2751,9 @@ item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 鹿弹 item.gun_uzi.name=Uzi冲锋枪 item.gun_uzi_ammo.name=.22LRå­å¼¹ -item.gun_uzi_saturnite.name=土星Uzi冲锋枪 -item.gun_uzi_saturnite_silencer.name=带消音器的土星Uzi冲锋枪 -item.gun_uzi_silencer.name=带消音器的Uzi冲锋枪 +item.gun_uzi_saturnite.name=土星金属Uzi +item.gun_uzi_saturnite_silencer.name=带消音器的土星金属Uzi +item.gun_uzi_silencer.name=带消音器的Uzi item.gun_xvl1456.name=XVL1456é™¶å­åŠ å†œç‚®åŽŸåž‹æœº item.gun_xvl1456_ammo.name=贫化铀235å­å¼¹ item.gun_zomg.name=奇点能湮ç­å°„线“ZOMG炮†@@ -2751,8 +2831,9 @@ item.ingot_boron.name=硼锭 item.ingot_c4.name=一å—C-4 item.ingot_cadmium.name=镉锭 item.ingot_calcium.name=钙锭 -item.ingot_cdalloy.name=镉钢锭 -item.ingot_chainsteel.name=é‡é“¾é’¢ +item.ingot_cdalloy.name=镉钢åˆé‡‘é”­ +item.ingot_cft.name=结晶富勒烯 +item.ingot_chainsteel.name=沉é‡é“¾é’¢ item.ingot_co60.name=é’´-60é”­ item.ingot_cobalt.name=é’´é”­ item.ingot_combine_steel.name=CMB钢锭 @@ -2808,14 +2889,15 @@ item.ingot_red_copper.name=紫铜锭 item.ingot_reiium.name=é›·æ©é”­ item.ingot_rubber.name=橡胶锭 item.ingot_saturnite.name=土星锭 -item.ingot_schrabidate.name=Saé…¸é“é”­ -item.ingot_schrabidium.name=Sa326é”­ -item.ingot_schrabidium_fuel.name=Sa326燃料锭 -item.ingot_schraranium.name=低丰度Sa326é”­ -item.ingot_schraranium.desc=在Sa326嬗å˜å™¨ä¸­ç”±é“€åˆ¶æˆ -item.ingot_semtex.name=塞姆汀塑胶炸è¯å— -item.ingot_smore.name=S'more é”­ -item.ingot_solinium.name=Sa327é”­ +item.ingot_schrabidate.name=Sa326元素酸化é“é”­ +item.ingot_schrabidium.name=Sa326异å˜é“€é‡‘属锭 +item.ingot_schrabidium_fuel.name=Sa326异å˜é“€é‡‘属燃料锭 +item.ingot_schraranium.name=低丰度Sa326异å˜é“€é‡‘属锭 +item.ingot_schraranium.desc=在Sa326异å˜é“€é‡‘属嬗å˜å™¨ä¸­ç”±é“€é”­å¬—å˜è€Œæ¥ +item.ingot_semtex.name=å¡žå§†æ±€å¡‘èƒ¶ç‚¸è¯ +item.ingot_semtex.desc=塞姆汀H塑料炸è¯$适用于多ç§åº”用的明星炸è¯.$å¯é£Ÿç”¨ +item.ingot_smore.name=S'more饼干 +item.ingot_solinium.name=Sa327索林锭 item.ingot_sr90.name=é”¶-90é”­ item.ingot_starmetal.name=§9星辉锭§r item.ingot_steel.name=钢锭 @@ -2859,12 +2941,17 @@ item.iv_xp.name=ç»éªŒåŒ… item.iv_xp_empty.name=空的ç»éªŒåŒ… item.jackt.name=时尚防弹夹克 item.jackt2.name=时尚防弹夹克2:东京漂移 -item.jetpack_boost.name=弹跳背包 -item.jetpack_break.name=缓é™èƒŒåŒ… +item.jetpack.desc=本身å¯å•独穿戴! +item.jetpack_boost.name=强力喷气背包 +item.jetpack_boost.desc=拥有强劲动力的矢é‡å–·æ°”背包.$燃油消耗é‡å¤§å¹…增加. +item.jetpack_break.name=建筑工喷气背包 +item.jetpack_break.desc=å¯ä»¥è®©ä½ åœ¨ç©ºä¸­è‡ªåŠ¨æ‚¬åœçš„常规动力喷气背包.$æ½œè¡Œå°†å…³é—­æ‚¬åœæ¨¡å¼.$æ‚¬åœæ¨¡å¼å°†æ¶ˆè€—更少的燃料并增加你的空中机动性. item.jetpack_fly.name=喷气背包 +item.jetpack_fly.desc=常规动力喷气背包,æä¾›ç®€å•的上å‡åŠ¨åŠ›. item.jetpack_tank.name=å–·æ°”èƒŒåŒ…å¤‡ç”¨ç‡ƒæ–™ç½ item.jetpack_vector.name=矢é‡å–·æ°”背包 -item.journal_bj.name=被å¨å£«å¿Œæµ¸é€çš„笔记本 +item.jetpack_vector.desc=超高机动性喷气背包.$更高的燃料消耗率. +item.journal_bj.name=被å¨å£«å¿Œæ³¡æ¹¿é€çš„笔记本 item.journal_pip.name=生存主义者日记 item.journal_silver.name=承包商注释 item.key.name=钥匙 @@ -2885,7 +2972,9 @@ item.laser_crystal_digamma.name=Digamma迪伽马激光晶体 item.laser_crystal_dnt.desc=åŒèšæ€ä¸­å­-Spark费米å­è¶…晶体 item.laser_crystal_dnt.name=Spark激光晶体 item.lead_gavel.name=é“…æ§Œ +item.lead_gavel.desc=你被判决为铅中毒. item.lemon.name="柠檬" +item.lemon.desc=嗯,ä¸é”™. item.letter.name=å¿«æ·é‚®ä»¶ item.levitation_unit.name=é‡åŠ›æŽ§åˆ¶å™¨ item.lignite.name=è¤ç…¤ @@ -2898,7 +2987,9 @@ item.liquidator_plate.name=核废土清é“夫套装胸甲 item.lithium.name=锂锭 item.lodestone.name=ç£çŸ³ item.loop_stew.name=程åºçŒ¿ä¸“å±žæ—©é¤ +item.loop_stew.desc=一份éžå¸¸éžå¸¸éžå¸¸å¥åº·çš„æ—©é¤. item.loops.name=五彩麦圈 +item.loops.desc=bro,我能拿你一些麦圈å—? item.loot_10.name=10å·å¯¼å¼¹æˆ˜åˆ©ç®± item.loot_15.name=15å·å¯¼å¼¹æˆ˜åˆ©ç®± item.loot_misc.name=普通导弹战利箱 @@ -2925,28 +3016,44 @@ item.mechanism_rifle_2.name=先进步枪机构 item.mechanism_special.name=高科技武器机构 item.med_bag.name=医疗包 item.med_ipecac.name=åæ ¹é…Šå‚¬å剂 +item.med_ipecac.desc=苦涩的果æ±ä¼šä½¿ä½ çš„胃$强行排出里é¢çš„东西. item.med_ptsd.name=PTSD治疗è¯ç‰© +item.med_ptsd.desc=è¿™æ ¹æœ¬ä¸æ˜¯PTSD治疗è¯ç‰©,$åªæ˜¯æ¢äº†ä¸ªç“¶å­è£…çš„åæ ¹é…Š! item.med_schiziphrenia.name=抗精神分裂症è¯ç‰© +item.med_schiziphrenia.desc=求求了,让那声音消失,就一会儿.$ $...$最好ä¸è¦æœç”¨. item.medal_liquidator.name=核废土清é“夫勋章 item.meltdown_tool.name=达洛夫快速熔æ¯è£…ç½® -item.memespoon.name=§eeèŠ±å›­å›­ä¸ +item.memespoon.name=§eèŠ±å›­å›­ä¸ +item.memespoon.desc=§810级铲å­$§bæŒç”¨è€…在ç«ç®­è·³è·ƒæ—¶å¯é€ æˆæš´å‡»$§cå‡ç¼“ 20%% å¼€ç«é€Ÿåº¦$§cæ²¡æœ‰éšæœºçš„æš´å‡» item.memory.name=item.null.name item.mese_gavel.name=Meseæ§Œ item.mese_pickaxe.name=Meseé• item.meteor_charm.name=陨石项链 item.meteor_remote.name=陨石å¬å”¤å™¨ item.meteorite_sword.name=陨石剑 -item.meteorite_sword_seared.name=陨石剑(烧焦) -item.meteorite_sword_reforged.name=陨石剑(é‡é“¸) -item.meteorite_sword_hardened.name=陨石剑(硬化) -item.meteorite_sword_alloyed.name=陨石剑(åˆé‡‘) -item.meteorite_sword_machined.name=陨石剑(机械加工) -item.meteorite_sword_treated.name=陨石剑(精制) -item.meteorite_sword_etched.name=陨石剑(刻蚀) -item.meteorite_sword_bred.name=陨石剑(增殖) -item.meteorite_sword_irradiated.name=陨石剑(è¾ç…§) -item.meteorite_sword_fused.name=陨石剑(熔èž) -item.meteorite_sword_baleful.name=陨石剑(凶æ¶) +item.meteorite_sword.desc=由一颗å è½ä¹‹æ˜Ÿé”»é€ è€Œæˆ$比大多数地çƒä¸Šçš„刀刃锋利 +item.meteorite_sword_seared.name=陨石剑 (炽热) +item.meteorite_sword_seared.desc=ç«ç„°å¢žå¼ºäº†åˆ€åˆƒ$让它更加强大 +item.meteorite_sword_reforged.name=陨石剑 (é‡é“¸) +item.meteorite_sword_reforged.desc=这把剑已ç»è¢«é‡é“¸äº†$以改正过去的缺陷 +item.meteorite_sword_hardened.name=陨石剑 (硬化) +item.meteorite_sword_hardened.desc=æžé«˜çš„压力让$刀刃进一步的硬化了 +item.meteorite_sword_alloyed.name=陨石剑 (åˆé‡‘化) +item.meteorite_sword_alloyed.desc==钴元素填充剑身上的裂ç¼$进一步加强了这把剑 +item.meteorite_sword_machined.name=陨石剑 (机械加工) +item.meteorite_sword_machined.desc=使用了先进的机械æ¥$进一步改进刀刃 +item.meteorite_sword_treated.name=陨石剑 (治疗) +item.meteorite_sword_treated.desc=化学物质的应用使$这把剑更加强大 +item.meteorite_sword_etched.name=陨石剑 (蚀刻) +item.meteorite_sword_etched.desc=é…¸æ¸…æ´—äº†åŽŸææ–™,$打造出了这把完美的剑 +item.meteorite_sword_bred.name=陨石剑 (增殖) +item.meteorite_sword_bred.desc=巨大的热é‡å’Œè¾å°„$åŽ‹ç¼©äº†è¿™æŠŠå‰‘çš„ææ–™ +item.meteorite_sword_irradiated.name=陨石剑 (è¾ç…§å¤„ç†) +item.meteorite_sword_irradiated.desc=原å­çš„力é‡$èµ‹äºˆäº†è¿™æŠŠå‰‘æ–°çš„åŠ›é‡ +item.meteorite_sword_fused.name=陨石剑 (熔èž) +item.meteorite_sword_fused.desc=è¿™æŠŠå‰‘å·²ç»æ²æµ´è¿‡äº†$æ¥è‡ªæ˜Ÿæ˜Ÿçš„远å¤åŠ›é‡ +item.meteorite_sword_baleful.name=陨石剑 (B.F野ç«çƒ§ç‚¼å¤„ç†) +item.meteorite_sword_baleful.desc=这把剑在远远超过$æ­£å¸¸ææ–™æ‰€èƒ½æ‰¿å—çš„æ¸©åº¦ä¸‹è¢«é”»é€ å‡ºæ¥ item.mike_cooling_unit.name=氘冷å´è£…ç½® item.mike_core.name=é“€æ¶‚å±‚æ°˜ç½ item.mike_deut.name=æ°˜ç½ @@ -2981,6 +3088,7 @@ item.missile_nuclear_cluster.name=热核导弹 item.missile_rain.name=炸弹雨 item.missile_schrabidium.name=Sa326导弹 item.missile_shuttle.name=万金罗宾航天飞机 +item.missile_shuttle.desc=今夜, 在bo''om gear真人秀上:$Jameså¸å«é“…汽油å¸å—¨äº†,$Richard把整个项目的预算都花在了$一张æŸåçš„PNG色图文件上,$而我忘记了打开RBMKå应堆的$水循环系统,ç­‰å应过æ¥,$整个基地都被炸飞了. item.missile_skin_camo.name=导弹外壳:迷彩 item.missile_skin_color.desc=我å†ä¹Ÿæ‰¾ä¸åˆ°æˆ‘çš„å¯¼å¼¹äº†ï¼ item.missile_skin_desert.name=导弹外壳:沙漠迷彩 @@ -3000,6 +3108,7 @@ item.missile_skin_soviet_glory.desc=уÑлуга перевода недоÑту item.missile_skin_soviet_stank.name=导弹外壳:è‹ç»´åŸƒä¸æœ½ item.missile_skin_soviet_stank.desc=这个真的很有60年代的味é“。 item.missile_soyuz.name=è”盟-FGè¿è½½ç«ç®­ +item.missile_soyuz.desc=Skin:$Original$Luna Space Center$Post War item.missile_soyuz_lander.name=è”盟å·è½¨é“舱 item.missile_soyuz_lander.desc=劣质ç€é™†å™¨ï¼ item.missile_strong.name=强化型高爆导弹 @@ -3010,8 +3119,8 @@ item.mold_base.name=毛å¯é“¸é€ æ¨¡å…· item.mold.name=铸造模具 item.morning_glory.name=牵牛花 item.motor.name=马达 -item.motor_bismuth.name=铋马达 -item.motor_desh.name=Desh马达 +item.motor_bismuth.name=铋制马达 +item.motor_desh.name=德什制马达 item.mp_c_1.name=1级导弹制导芯片 item.mp_c_2.name=2级导弹制导芯片 item.mp_c_3.name=3级导弹制导芯片 @@ -3146,6 +3255,7 @@ item.multitool_miner.name=动力拳套[采矿激光] item.multitool_silk.name=动力拳套[精准采集] item.multitool_sky.name=动力拳套[划破天际] item.mysteryshovel.name=易碎锹 +item.mysteryshovel.desc=å¤±åŽ»äº†å´æ²¡æœ‰è¢«å¿˜è®° item.n2_charge.name=å¤§åž‹ç‚¸è¯ item.neutrino_lens.name=中å­é€é•œ item.neutron_reflector.name=中å­åå°„æ¿ @@ -3260,31 +3370,31 @@ item.ore.titanium=é’› item.ore.tungsten=é’¨ item.ore.thorium=é’ item.ore.uranium=é“€ -item.ore_bedrock.name=基岩%s矿 -item.ore_byproduct.b_aluminium.name=铿™¶ä½“碎片 -item.ore_byproduct.b_bismuth.name=铋晶体碎片 -item.ore_byproduct.b_calcium.name=钙晶体碎片 -item.ore_byproduct.b_copper.name=铜晶体碎片 -item.ore_byproduct.b_iron.name=铿™¶ä½“碎片 -item.ore_byproduct.b_lead.name=铅晶体碎片 -item.ore_byproduct.b_lithium.name=锂晶体碎片 -item.ore_byproduct.b_polonium.name=钋晶体碎片 -item.ore_byproduct.b_radium.name=镭晶体碎片 -item.ore_byproduct.b_silicon.name=硅晶体碎片 -item.ore_byproduct.b_sulfur.name=硫晶体碎片 -item.ore_byproduct.b_technetium.name=锿™¶ä½“碎片 -item.ore_byproduct.b_titanium.name=钛晶体碎片 -item.ore_byproduct.b_uranium.name=铀晶体碎片 -item.ore_centrifuged.name=离心%s矿 -item.ore_cleaned.name=清æ´%s矿 -item.ore_deepcleaned.name=深清æ´%s矿 -item.ore_enriched.name=富集%s矿 -item.ore_nitrated.name=ç¡åŒ–%s矿 -item.ore_nitrocrystalline.name=亚ç¡åŸºç»“æ™¶%s矿 -item.ore_purified.name=净化%s矿 -item.ore_radcleaned.name=ç»è¾å°„清æ´çš„%s矿 -item.ore_seared.name=ç¼çƒ­çš„%s矿 -item.ore_separated.name=分离的%s矿 +item.ore_bedrock.name=%s 基岩矿粉 +item.ore_byproduct.b_aluminium.name=结晶é“碎片 +item.ore_byproduct.b_bismuth.name=结晶铋碎片 +item.ore_byproduct.b_calcium.name=结晶钙碎片 +item.ore_byproduct.b_copper.name=结晶铜碎片 +item.ore_byproduct.b_iron.name=结晶é“碎片 +item.ore_byproduct.b_lead.name=结晶铅碎片 +item.ore_byproduct.b_lithium.name=结晶锂碎片 +item.ore_byproduct.b_polonium.name=结晶钋碎片 +item.ore_byproduct.b_radium.name=结晶镭碎片 +item.ore_byproduct.b_silicon.name=结晶硅碎片 +item.ore_byproduct.b_sulfur.name=结晶硫碎片 +item.ore_byproduct.b_technetium.name=结晶é”碎片 +item.ore_byproduct.b_titanium.name=结晶钛碎片 +item.ore_byproduct.b_uranium.name=结晶铀碎片 +item.ore_centrifuged.name=离心 %s 基岩矿粉 +item.ore_cleaned.name=洗净 %s 基岩矿粉 +item.ore_deepcleaned.name=æ·±åº¦æ¸…æ´ %s 基岩矿粉 +item.ore_enriched.name=富集 %s 基岩矿粉 +item.ore_nitrated.name=ç¡åŒ– %s 基岩矿粉 +item.ore_nitrocrystalline.name=ç¡åŒ–结晶 %s 基岩矿粉 +item.ore_purified.name=纯化 %s 基岩矿粉 +item.ore_radcleaned.name=è¾ç…§æ¸…æ´ %s 基岩矿粉 +item.ore_seared.name=ç¼çƒ§ %s 基岩矿粉 +item.ore_separated.name=分离æçº¯ %s 基岩矿粉 item.overfuse.name=奇异螺ä¸åˆ€ item.overfuse.desc=说啥? item.oxy_mask.name=æ°§æ°”é¢ç½© @@ -3325,6 +3435,7 @@ item.particle_strange.name=奇夸克胶囊 item.particle_tachyon.name=超光速粒å­å¯†å°èƒ¶å›Š item.parts_legendary.name=传奇零件 item.peas.name=豌豆 +item.peas.desc=他接å—了你的贡å“. item.pedestal_steel.name=钢底座 item.pellet_advanced.name=高级Watz性能增强剂 item.pellet_antimatter.name=å物质团 @@ -3411,6 +3522,7 @@ item.plan_c.desc=致死 item.plant_item.mustardwillow.name=èŠ¥å­æŸ³å¶ item.plant_item.rope.name=麻绳 item.plant_item.tobacco.name=çƒŸå¶ +item.plastic_bag.name=塑料袋 item.plate_advanced_alloy.name=高级åˆé‡‘æ¿ item.plate_aluminium.name=铿¿ item.plate_armor_ajr.name=é“çš®è£…ç”²æ¿ @@ -3446,6 +3558,7 @@ item.plate_saturnite.name=åœŸæ˜Ÿæ¿ item.plate_schrabidium.name=Sa326æ¿ item.plate_steel.name=é’¢æ¿ item.plate_titanium.name=é’›æ¿ +item.plate_welded.name=焊接的%sæ¿ item.polaroid.name=å光片 item.pollution_detector.name=污染探测器 item.powder_actinium.name=锕粉 @@ -3456,6 +3569,7 @@ item.powder_asbestos.name=石棉粉 item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r item.powder_ash.coal.name=ç…¤ç° item.powder_ash.fly.name=飞尘 +item.powder_ash.fullerene.name=富勒烯 item.powder_ash.misc.name=ç°å°˜ item.powder_ash.soot.name=ç»†çƒŸç° item.powder_ash.wood.name=æœ¨ç° @@ -3476,7 +3590,7 @@ item.powder_caesium.name=铯粉 item.powder_calcium.name=钙粉 item.powder_cerium.name=铈粉 item.powder_cerium_tiny.name=å°æ’®é“ˆç²‰ -item.powder_chlorocalcite.name=氯方解石 +item.powder_chlorocalcite.name=氯方解石粉 item.powder_chlorophyte.name=å¶ç»¿ç²‰ item.powder_cloud.name=云粉末 item.powder_co60.name=é’´-60粉 @@ -3498,8 +3612,8 @@ item.powder_diamond.name=钻石粉 item.powder_dineutronium.name=åŒèšä¸­å­æ€ç´ ç²‰ item.powder_dura_steel.name=高速钢粉 item.powder_emerald.name=绿å®çŸ³ç²‰ -item.powder_euphemium.name=Ep粉 -item.powder_euphemium.desc=粉红色$å°èµ·æ¥åƒè‰èŽ“ã€‚ +item.powder_euphemium.name=Ep元素粉 +item.powder_euphemium.desc=粉色的粉末..$å°èµ·æ¥åƒè‰èŽ“. item.powder_fertilizer.name=工业肥料 item.powder_fire.name=ç«ç„°ç²‰ item.powder_fire.desc=ç”¨äºŽå¤šç”¨é€”ç‚¸å¼¹ï¼šç‡ƒçƒ§å¼¹å¾ˆæœ‰è¶£ï¼ @@ -3578,6 +3692,7 @@ item.primer_buckshot.name=鹿弹底ç«[x12] item.protection_charm.name=守护项链 item.prototype_kit.name=原型 套件 item.pudding.name=å¸ƒä¸ +item.pudding.desc=如果他åšäº†å‘¢?$如果他没有呢?$如果这个世界是布ä¸åšçš„å‘¢? item.pwr_fuel.bfb_am_mix.name=燃料级镅压水堆BFB燃料棒 item.pwr_fuel.bfb_pu241.name=é’š-241压水堆BFB棒 item.pwr_fuel.hea242.name=HEA-242 高浓缩度镅-242压水堆燃料棒 @@ -3628,44 +3743,45 @@ item.radaway.name=消è¾å® item.radaway_flush.name=超级消è¾å® item.radaway_strong.name=强效消è¾å® item.radx.name=防è¾å°„è¯ -item.radx.desc=在3分钟内增加0.2(37%)的抗è¾å°„能力 -item.rag.name=布 -item.rag_damp.name=湿布 -item.rag_piss.name=沾有尿的布 -item.rbmk_fuel_balefire.name=RBMKå应堆野ç«ç‡ƒæ–™æ£’ -item.rbmk_fuel_balefire_gold.name=RBMKå应堆激活æ€é‡‘-198燃料棒 -item.rbmk_fuel_drx.name=§cRBMKå应堆F迪伽马粒å­ç‡ƒæ–™æ£’§r -item.rbmk_fuel_empty.name=空 RBMKå应堆燃料棒 -item.rbmk_fuel_flashlead.name=RBMKå应堆闪光铅燃料棒 -item.rbmk_fuel_hea241.name=HEA-241 RBMKå应堆高浓缩度镅-241燃料棒 -item.rbmk_fuel_hea242.name=HEA-242 RBMKå应堆高浓缩度镅-242燃料棒 -item.rbmk_fuel_heaus.name=HEAus RBMKå应堆高浓缩度奥斯燃料棒 -item.rbmk_fuel_hen.name=HEN RBMKå应堆高浓缩度镎燃料棒 -item.rbmk_fuel_hes.name=HES RBMKå应堆高浓缩度Sa326燃料棒 -item.rbmk_fuel_hep.name=HEP-239 RBMKå应堆高浓缩度钚-239燃料棒 -item.rbmk_fuel_hep241.name=HEP-241 RBMKå应堆高浓缩度钚-241燃料棒 -item.rbmk_fuel_heu233.name=HEU-233 RBMKå应堆高浓缩度铀-233燃料棒 -item.rbmk_fuel_heu235.name=HEU-235 RBMKå应堆高浓缩度铀-235燃料棒 -item.rbmk_fuel_lea.name=LEA RBMKå应堆低浓缩度镅-242燃料棒 -item.rbmk_fuel_leaus.name=LEAus RBMKå应堆低浓缩度奥斯燃料棒 -item.rbmk_fuel_lep.name=LEP RBMKå应堆低浓缩度钚-239燃料棒 -item.rbmk_fuel_les.name=LES RBMKå应堆低浓缩度Sa326燃料棒 -item.rbmk_fuel_mea.name=MEA RBMKå应堆中浓缩度镅-242燃料棒 -item.rbmk_fuel_men.name=MEN RBMKå应堆中浓缩度镎-237燃料棒 -item.rbmk_fuel_mep.name=MEP RBMKå应堆中浓缩度钚-239燃料棒 -item.rbmk_fuel_mes.name=MES RBMK中浓缩度Sa326燃料棒 -item.rbmk_fuel_meu.name=MEU RBMK中浓缩度铀-235燃料棒 -item.rbmk_fuel_mox.name=MOX RBMKå应堆燃料棒 -item.rbmk_fuel_po210be.name=é’‹210-é“ RBMKååº”å †ä¸­å­æº -item.rbmk_fuel_pu238be.name=é’š238-é“ RBMKååº”å †ä¸­å­æº -item.rbmk_fuel_ra226be.name=é•­226-é“ RBMKååº”å †ä¸­å­æº -item.rbmk_fuel_thmeu.name=ThMEU RBMKå应堆中浓缩度铀-233导å‘é’燃料棒 -item.rbmk_fuel_ueu.name=NU RBMKå应堆未浓缩铀燃料棒 -item.rbmk_fuel_zfb_am_mix.name=ZFB 燃料级镅RBMKå应堆燃料棒 -item.rbmk_fuel_zfb_bismuth.name=ZFB é“‹RBMKå应堆燃料棒 -item.rbmk_fuel_zfb_pu241.name=ZFB é’š-241RBMKå应堆燃料棒 -item.rbmk_lid.name=RBMKå应堆覆盖层 -item.rbmk_lid_glass.name=RBMKå应堆玻璃覆盖层 +item.radx.desc=增加0.2(37%%)的抗è¾å°„能力,æŒç»­3分钟 +item.rag.name=破布 +item.rag.desc=ä¸¢è¿›æ°´ä¸­åˆæˆæ¹¿ç ´å¸ƒ.$å³å‡»å°¿åœ¨ç ´å¸ƒä¸Š. +item.rag_damp.name=湿破布 +item.rag_piss.name=尿湿润的破布 +item.rbmk_fuel_balefire.name=RBMK石墨å¼å应堆野ç«ç‡ƒæ–™æ£’ +item.rbmk_fuel_balefire_gold.name=激活æ€é‡‘-198 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_drx.name=§cÏœè¿ªä¼½é©¬ç²’å­ RBMK石墨å¼å应堆燃料棒§r +item.rbmk_fuel_empty.name=空 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_flashlead.name=激活æ€é“… RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hea241.name=HEA-241 高浓缩度镅-241 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hea242.name=HEA-242 高浓缩度镅-242 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_heaus.name=HEAus 高浓缩度奥金 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hen.name=HEN 高浓缩度镎-237 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hes.name=HES 高浓缩度Sa-326 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hep.name=HEP-239 高浓缩度钚-239 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hep241.name=HEP-241 高浓缩度钚-241 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_heu233.name=HEU-233 高浓缩度铀-233 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_heu235.name=HEU-235 高浓缩度铀-235 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_lea.name=LEA 低浓缩度镅-242 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_leaus.name=LEAus 低浓缩度奥金 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_lep.name=LEP 低浓缩度钚-239 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_les.name=LES 低浓缩度Sa-326 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_mea.name=MEA 中浓缩度镅-242 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_men.name=MEN 中浓缩度镎-237 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_mep.name=MEP 中浓缩度钚-239 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_mes.name=MES 中浓缩度Sa-326 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_meu.name=MEU 中浓缩度铀-235 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_mox.name=MOX é’š-铀混åˆRBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_po210be.name=é’‹210-é“RBMK石墨å¼ååº”å †ä¸­å­æº +item.rbmk_fuel_pu238be.name=é’š238-é“RBMK石墨å¼ååº”å †ä¸­å­æº +item.rbmk_fuel_ra226be.name=é•­226-é“RBMK石墨å¼ååº”å †ä¸­å­æº +item.rbmk_fuel_thmeu.name=ThMEU 中浓缩度铀-235导å‘é’ RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_ueu.name=NU 未浓缩铀 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_zfb_am_mix.name=ZFB 锆混åˆå应堆级镅快速增殖å¼RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_zfb_bismuth.name=ZFB 锆混åˆé“‹å¿«é€Ÿå¢žæ®–å¼RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_zfb_pu241.name=ZFB 锆混åˆé’š-241快速增殖å¼RBMK石墨å¼å应堆燃料棒 +item.rbmk_lid.name=RBMK石墨å¼å应堆覆盖层 +item.rbmk_lid_glass.name=RBMK石墨å¼å应堆玻璃覆盖层 item.rbmk_pellet_balefire.name=野ç«ç‡ƒæ–™èŠ¯å— item.rbmk_pellet_balefire_gold.name=激活æ€é‡‘-198ç‡ƒæ–™èŠ¯å— item.rbmk_pellet_drx.name=§cF迪伽马粒å­ç‡ƒæ–™èНå—§r @@ -3816,16 +3932,16 @@ item.rod_lithium.name=锂棒 item.rod_mox_fuel.name=æ ¸å应堆 MOX燃料棒 item.rod_mox_fuel_depleted.name=æ ¸å应堆 枯竭MOX燃料棒 item.rod_neptunium.name=镎燃料棒 -item.rod_of_discord.name=æ··æ²Œä¼ é€æ– +item.rod_of_discord.name=æ··æ²Œä¼ é€æ³•æ– item.rod_plutonium.name=钚棒 -item.rod_plutonium_fuel.name=æ ¸å应堆 钚燃料棒 -item.rod_plutonium_fuel_depleted.name=æ ¸å应堆 枯竭钚燃料棒 -item.rod_polonium.name=钋棒 -item.rod_pu238.name=é’š-238燃料棒 -item.rod_pu239.name=é’š-239燃料棒 -item.rod_pu240.name=é’š-240燃料棒 -item.rod_quad_balefire.name=å››è”野ç«ç‡ƒæ–™æ£’ -item.rod_quad_balefire_blazing.name=炽热的四è”野ç«ç‡ƒæ–™æ£’ +item.rod_plutonium_fuel.name=钚燃料棒 +item.rod_plutonium_fuel_depleted.name=枯竭钚燃料棒 +item.rod_polonium.name=é’‹-210棒 +item.rod_pu238.name=é’š238燃料棒 +item.rod_pu239.name=é’š239燃料棒 +item.rod_pu240.name=é’š240燃料棒 +item.rod_quad_balefire.name=å››è”BF燃料棒 +item.rod_quad_balefire_blazing.name=炽热的四è”BF燃料棒 item.rod_quad_coolant.name=å››è”燃料棒[冷崿¶²] item.rod_quad_euphemium.name=枯竭的四è”Sa326燃料棒 item.rod_quad_lead.name=å››è”铅棒 @@ -3933,16 +4049,18 @@ item.sat_resonator.name=Xæ™¶ä½“å…±æŒ¯å«æ˜Ÿ item.sat_scanner.name=ç»˜æµ‹å’Œèµ„æºæŽ¢æµ‹å«æ˜Ÿ item.sawblade.name=锯片 item.schnitzel_vegan.name=“素â€è‚‰æŽ’ -item.schrabidium_axe.name=Sa326æ–§ -item.schrabidium_boots.name=Sa326é´å­ -item.schrabidium_hammer.name=Sa326锤 -item.schrabidium_helmet.name=Sa326头盔 -item.schrabidium_hoe.name=Sa326锄 -item.schrabidium_legs.name=Sa326护腿 -item.schrabidium_pickaxe.name=Sa326é• -item.schrabidium_plate.name=Sa326胸甲 -item.schrabidium_shovel.name=Sa326锹 -item.schrabidium_sword.name=Sa326剑 + +item.schrabidium_axe.name=Sa326异å˜é“€é‡‘属斧 +item.schrabidium_boots.name=Sa326异å˜é“€é‡‘属é´å­ +item.schrabidium_hammer.name=Sa326异å˜é“€é‡‘属锤 +item.schrabidium_hammer.desc=尽管上é¢å†™ç€ "+1000000000"$的伤害", 但它实际上是 "一击必æ€ä»»ä½•东西" +item.schrabidium_helmet.name=Sa326异å˜é“€é‡‘属头盔 +item.schrabidium_hoe.name=Sa326异å˜é“€é‡‘属锄 +item.schrabidium_legs.name=Sa326异å˜é“€é‡‘属护腿 +item.schrabidium_pickaxe.name=Sa326异å˜é“€é‡‘å±žé• +item.schrabidium_plate.name=Sa326异å˜é“€é‡‘属胸甲 +item.schrabidium_shovel.name=Sa326异å˜é“€é‡‘属锹 +item.schrabidium_sword.name=Sa326异å˜é“€é‡‘属剑 item.scrap.name=废料 item.scrap_nuclear.name=放射性废料 item.scrap_oil.name=油性废料 @@ -3964,10 +4082,14 @@ item.servo_set.name=伺æœè£…ç½® item.servo_set_desh.name=Desh伺æœè£…ç½® item.shackles.name=æž·é” item.shimmer_axe.name=闪耀斧 +item.shimmer_axe.desc=木æ! +item.shimmer_axe.desc.hide=shim的工具箱得到了 扩-展 item.shimmer_axe_head.name=é‡åž‹æ–§å¤´ item.shimmer_handle.name=强化èšåˆç‰©æ‰‹æŸ„ item.shimmer_head.name=é‡åž‹é”¤å¤´ item.shimmer_sledge.name=闪耀锤 +item.shimmer_sledge.desc=å¯ä»¥ç ´å一切东西,甚至包括传é€é—¨æ–¹å—. +item.shimmer_sledge.desc.hide=shimmer别$放下那把锤å­$你会伤到别人的$shimmer别$shimmer求你了 item.singularity.name=奇点 item.singularity_counter_resonant.name=å¯æŽ§åæŒ¯è°å¥‡ç‚¹ item.singularity_micro.name=微型奇点 @@ -4055,7 +4177,7 @@ item.steel_shovel.name=钢锹 item.steel_sword.name=钢剑 item.stick_c4.name=C-4ç‚¸è¯æ£’ item.stick_dynamite.name=ç‚¸è¯æ£’ -item.stick_dynamite_fishing.name=æ•é±¼ç‚¸è¯æ£’ +item.stick_dynamite_fishing.name=ç‚¸é±¼ç”¨ç‚¸è¯æ£’ item.stick_semtex.name=å¡žå§†æ±€å¡‘èƒ¶ç‚¸è¯æ£’ item.stick_tnt.name=TNT棒 item.stopsign.name=åœè½¦æ ‡å¿—战斧 @@ -4089,6 +4211,7 @@ item.tank_waste_7.name=泥浆容器 item.tank_waste_8.name=泥浆容器 item.telepad.name=ä¼ é€éƒ¨ä»¶ item.tem_flakes.name=Tem薄片 +item.tem_flakes.desc=能回å¤ä¸€é¢—心的廉价Tem薄片!!!$能回å¤ä¸€é¢—心的Tem薄片$能回å¤ç”Ÿå‘½å€¼çš„Tem薄片(昂贵) item.template_folder.name=æœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹ item.template_folder.desc=机器模æ¿ï¼šçº¸å¼ +染料$æµä½“识别ç ï¼šé“æ¿+染料$锻模:空白锻模 $警报声轨:ç»ç¼˜ä½“+é’¢æ¿ item.test_nuke_igniter.name=点ç«å™¨ @@ -4119,10 +4242,10 @@ item.titanium_shovel.name=钛锹 item.titanium_sword.name=钛剑 item.toothpicks.name=牙签 item.train.cargo_tram.name=å¹³æ¿è½½è´§ç”µè½¦ -item.trenchmaster_boots.name=Trenchmasterçš„é´å­ -item.trenchmaster_helmet.name=Trenchmaster的头盔 -item.trenchmaster_legs.name=Trenchmaster的护腿 -item.trenchmaster_plate.name=Trenchmaster的胸甲 +item.trenchmaster_boots.name=战术大师的é´å­ +item.trenchmaster_helmet.name=战术大师的头盔 +item.trenchmaster_legs.name=战术大师的护腿 +item.trenchmaster_plate.name=战术大师的胸甲 item.trinitite.name=玻璃石 item.tritium_deuterium_cake.name=氚氘饼 item.tritium_deuterium_cake.desc=䏿˜¯çœŸæ­£çš„蛋糕,而是很棒的$èšå˜ç‡ƒæ–™ï¼ @@ -4142,7 +4265,9 @@ item.turret_rocket_ammo.name=ç«ç®­ç‚®å¡”å¼¹è¯ item.turret_spitfire_ammo.name=防空炮弹 item.turret_tau_ammo.name=é™¶å­ç‚®å¡”é“€å¼¹è¯ item.twinkie.name=å°è›‹ç³• +item.twinkie.desc=600å¹´å‰å°±è¿‡æœŸäº†! item.ullapool_caber.name=é˜¿å‹’æµ¦é•¿æœ¨æ† +item.ullapool_caber.desc=è‹æ ¼å…°å¼é«˜æ•ˆé¢éƒ¨åˆ‡é™¤æœ¯.$一个清醒的人会扔掉它... item.undefined.name=å½¢æ€æœªå®šä¹‰ç‰©è´¨ item.upgrade_5g.name=5Gè¾å°„å‘射器å‡çº§ item.upgrade_afterburn_1.name=一级粉色机器å‡çº§ @@ -4183,7 +4308,14 @@ item.v1.name=V1 item.volcanic_pickaxe.name=ç†”å²©é• item.wand_d.name=è°ƒè¯•é­”æ– item.wand_k.name=å»ºç­‘é­”æ– +item.wand_k.block=ä¿å­˜çš„æ–¹å—: %s +item.wand_k.desc=创造模å¼ä¸“有物å“$"æ¯ç­å¾€å¾€å¸¦æ¥åˆ›é€ "$(å³å‡»ä»¥é€‰æ‹©ç‚¹,$shiftå³å‡»é€‰æ‹©æ”¾ç½®æ–¹å—ç§ç±»!) +item.wand_k.null=未选择ä½ç½®! +item.wand_k.pos=åæ ‡: %s, %s, %s item.wand_s.name=ç»“æž„é­”æ– +item.wand_s.desc=创造模å¼ä¸“有物å“$"æ¯ä¸ªäººéƒ½èƒ½ä½¿ç”¨çš„快速建造多方å—结构的工具!"$(shiftå³å‡»ä»¥åˆ‡æ¢åˆ°ä¸‹ä¸€ç»“æž„,$å³å‡»ä»¥ç”Ÿæˆç»“æž„!) +item.structure_custommachine.name=è‡ªå®šä¹‰æœºå™¨ç»“æž„è¾“å‡ºæ– +item.structure_custommachine.desc=点击自定义机器结构定ä½é”šä»¥ç¡®è®¤$自定义机器核心å—çš„ä½ç½®.$å°†Position1å’ŒPosition2之间所有方å—$以åŠå…¶metadataæ•°æ®ä¸€èµ·è¾“出到hbmConfig下的"CMstructureOutput.txt". item.warhead_buster_large.name=大型掩体破å弹头 item.warhead_buster_medium.name=中型掩体破å弹头 item.warhead_buster_small.name=å°åž‹æŽ©ä½“ç ´å弹头 @@ -4265,22 +4397,27 @@ item.wire_schrabidium.name=Sa326线 item.wire_tungsten.name=钨线 item.wiring_red_copper.name=ç”µç¼†å· item.wood_gavel.name=木槌 +item.wood_gavel.desc=ç °ç °! item.wrench.name=ç®¡é“æ‰³æ‰‹ -item.wrench_archineer.name=Archineer扳手 +item.wrench.desc=æœºæ¢°å¸ˆç†æŸ¥å¾· +item.wrench_archineer.name=Archineer的扳手 item.wrench_flipped.name=刺刀扳手 -item.xanax.name=NAXA 抗迪伽马è¯ç‰© -item.xanax.desc=移除500mDRX迪伽马è¾å°„ +item.wrench_flipped.desc=扳手2:扳手 +item.xanax.name=NAXA 抗Ϝ迪伽马è¾å°„è¯ç‰© +item.xanax.desc=移除500mDRX的Ϝ迪伽马è¾å°„ item.zirconium_legs.name=锆质护腿 -itemGroup.tabBlocks=HBM çŸ¿çŸ³å’Œæ–¹å— -itemGroup.tabConsumable=HBM 食物和装备 -itemGroup.tabControl=HBM 机器项目和燃料 -itemGroup.tabMachine=HBM 机器 -itemGroup.tabMissile=HBM å¯¼å¼¹å’Œå«æ˜Ÿ -itemGroup.tabNuke=HBM 炸弹 -itemGroup.tabParts=HBM 资æºå’Œé›¶ä»¶ -itemGroup.tabTemplate=HBM æ¨¡æ¿ -itemGroup.tabTest=HBM的核科技mod测试项[S166ã€Bismarckã€nukesteveè”åˆæ±‰åŒ–] -itemGroup.tabWeapon=HBM 武器和炮塔 + +itemGroup.tabBlocks=æ ¸æŠ€æœ¯çŸ¿çŸ³å’Œæ–¹å— +itemGroup.tabConsumable=核技术食物和装备 +itemGroup.tabControl=核技术机器项目和燃料 +itemGroup.tabMachine=核技术机器 +itemGroup.tabMissile=æ ¸æŠ€æœ¯å¯¼å¼¹å’Œå«æ˜Ÿ +itemGroup.tabNuke=核技术炸弹 +itemGroup.tabParts=核技术资æºå’Œé›¶ä»¶ +itemGroup.tabTemplate=æ ¸æŠ€æœ¯æ¨¡æ¿ +itemGroup.tabTest=HBM的核科技mod测试项[S166, Bismarck, nukesteveè”åˆæ±‰åŒ–] +itemGroup.tabWeapon=核技术武器和炮塔 + potion.hbm_bang=! ! ! potion.hbm_death=é‡åº¦çªå˜ potion.hbm_lead=铅中毒 @@ -4384,8 +4521,8 @@ tile.basalt_fluorite.name=å¯Œå«æ°ŸçŸ³çš„玄武岩 tile.basalt_gem.name=富å«å®çŸ³çš„玄武岩 tile.basalt_polished.name=抛光玄武岩 tile.basalt_smooth.name=平滑玄武岩 -tile.basalt_sulfur.name=富å«ç¡«çš„玄武岩 -tile.basalt_tiles.name=玄武岩砖 +tile.basalt_sulfur.name=富硫玄武岩 +tile.basalt_tiles.name=玄武岩瓦 tile.blast_door.name=防爆闸门 tile.block_actinium.name=é”•å— tile.block_advanced_alloy.name=高级åˆé‡‘å— @@ -4396,16 +4533,16 @@ tile.block_bakelite.name=ç”µæœ¨å— tile.block_beryllium.name=é“å— tile.block_bismuth.name=é“‹å— tile.block_boron.name=ç¡¼å— -tile.block_c4.name=C-4å— +tile.block_c4.name=C-4炸è¯å— tile.block_cadmium.name=é•‰å— -tile.block_cap_fritz.name=å¼—é‡ŒèŒ¨ç“¶ç›–æ–¹å— -tile.block_cap_korl.name=Korlç“¶ç›–æ–¹å— -tile.block_cap_nuka.name=æ ¸å­å¯ä¹ç“¶ç›–æ–¹å— -tile.block_cap_quantum.name=樱桃味核å­å¯ä¹ç“¶ç›–æ–¹å— -tile.block_cap_rad.name=è¾å°„ S~æ ¸å­å¯ä¹ç“¶ç›–æ–¹å— -tile.block_cap_sparkle.name=æ ¸å­å¯ä¹ç“¶ç›–æ–¹å— -tile.block_cap_star.name=å¤•é˜³æ²™å£«æ˜Ÿæ˜Ÿç“¶ç›–æ–¹å— -tile.block_cap_sunset.name=å¤•é˜³æ²™å£«ç“¶ç›–æ–¹å— +tile.block_cap_fritz.name=Fritz弗里茨å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_korl.name=Korlåº“å°”å‹’ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_nuka.name=æ ¸å­å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_quantum.name=樱桃味é‡å­æ ¸å­å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_rad.name=è¾å°„S~闪闪å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_sparkle.name=S~闪闪å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_star.name=å¤•é˜³æ²™å£«æ˜Ÿæ˜Ÿç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_sunset.name=å¤•é˜³æ²™å£«ç“¶ç›–åŽ‹ç¼©å— tile.block_cdalloy.name=é•‰é’¢å— tile.block_cobalt.name=é’´å— tile.block_coke.coal.name=ç…¤ç„¦ç‚­å— @@ -4568,9 +4705,9 @@ tile.charger.name=充电站 tile.cheater_virus.name=冻结Ep tile.cheater_virus_seed.name=ä¸ç¨³å®šEp Schrabideå— tile.chimney_brick.name=烟囱 -tile.chimney_brick.desc=使用排气管连接污染机器$å‡å°‘75%的污染排放 +tile.chimney_brick.desc=使用排气管连接污染机器$å‡å°‘75%%的污染排放 tile.chimney_industrial.name=工业烟囱 -tile.chimney_industrial.desc=使用排气管连接污染机器$å‡å°‘90%的污染排放 +tile.chimney_industrial.desc=使用排气管连接污染机器$å‡å°‘90%%的污染排放 tile.chlorine_gas.name=氯气 tile.cluster_aluminium.name=é“矿簇 tile.cluster_copper.name=铜矿簇 @@ -4579,6 +4716,7 @@ tile.cluster_depth_titanium.name=深层钛矿簇 tile.cluster_depth_tungsten.name=深层钨矿簇 tile.cluster_iron.name=é“矿簇 tile.cluster_titanium.name=钛矿簇 +tile.custom_machine_anchor.name=自定义机器结构定ä½é”š tile.cm_block.alloy.name=高级åˆé‡‘机器外壳 tile.cm_block.desh.name=Desh机器外壳 tile.cm_block.steel.name=钢制机器外壳 @@ -4603,6 +4741,7 @@ tile.cm_tank.alloy.name=高级åˆé‡‘å‚¨ç½ tile.cm_tank.desh.name=Deshå‚¨ç½ tile.cm_tank.steel.name=é’¢åˆ¶å‚¨ç½ tile.cm_tank.tcalloy.name=é”é’¢å‚¨ç½ +tile.cm_paperPress.name=压纸机 tile.cmb_brick.name=CMBé’¢ç“¦å— tile.cmb_brick_reinforced.name=加固CMBé’¢ç –å— tile.compact_launcher.name=紧凑型å‘å°„å° @@ -4630,22 +4769,22 @@ tile.concrete_colored.red.name=红色混å‡åœŸ tile.concrete_colored.silver.name=æ·¡ç°è‰²æ··å‡åœŸ tile.concrete_colored.white.name=白色混å‡åœŸ tile.concrete_colored.yellow.name=黄色混å‡åœŸ -tile.concrete_colored_ext.hazard.name=建筑商指定混å‡åœŸ-å±é™©åœ°å¸¦ -tile.concrete_colored_ext.indigo.name=建筑商指定混å‡åœŸ-æ·±é›è“ -tile.concrete_colored_ext.machine.name=建筑商指定混å‡åœŸ-工业风 -tile.concrete_colored_ext.machine_stripe.name=建筑商指定混å‡åœŸ-工业æ¡çº¹ -tile.concrete_colored_ext.pink.name=建筑商指定混å‡åœŸ-猛男粉 -tile.concrete_colored_ext.purple.name=建筑商指定混å‡åœŸ-神秘紫 +tile.concrete_colored_ext.hazard.name=建筑玩家首选混å‡åœŸ - 警示æ¡çº¹ +tile.concrete_colored_ext.indigo.name=建筑玩家首选混å‡åœŸ - æ·±é›è‰² +tile.concrete_colored_ext.machine.name=建筑玩家首选混å‡åœŸ - 工业风 +tile.concrete_colored_ext.machine_stripe.name=建筑玩家首选混å‡åœŸ - 工业æ¡çº¹ +tile.concrete_colored_ext.pink.name=建筑玩家首选混å‡åœŸ - 猛男粉 +tile.concrete_colored_ext.purple.name=建筑玩家首选混å‡åœŸ - 神秘紫 tile.concrete_pillar.name=钢筋混å‡åœŸæŸ± -tile.concrete_slab.concrete.name=æ··å‡åœŸç“·ç –æ¿ -tile.concrete_slab.concrete_asbestos.name=石棉混å‡åœŸæ¿ -tile.concrete_slab.concrete_smooth.name=æ··å‡åœŸæ¿ -tile.concrete_slab.ducrete.name=高密度贫铀混å‡åœŸç“·ç –æ¿ -tile.concrete_slab.ducrete_smooth.name=高密度贫铀混å‡åœŸæ¿ +tile.concrete_slab.concrete.name=æ··å‡åœŸç“·ç –å°é˜¶ +tile.concrete_slab.concrete_asbestos.name=石棉夹层混å‡åœŸå°é˜¶ +tile.concrete_slab.concrete_smooth.name=æ··å‡åœŸå°é˜¶ +tile.concrete_slab.ducrete.name=贫铀高密度混å‡åœŸç“¦å°é˜¶ +tile.concrete_slab.ducrete_smooth.name=贫铀高密度混å‡åœŸç –å°é˜¶ tile.concrete_smooth.name=æ··å‡åœŸ tile.concrete_smooth_stairs.name=æ··å‡åœŸæ¥¼æ¢¯ -tile.concrete_stairs.name=æ··å‡åœŸç“·ç –楼梯 -tile.concrete_super.name=überæ··å‡åœŸ +tile.concrete_stairs.name=æ··å‡åœŸç“¦æ¥¼æ¢¯ +tile.concrete_super.name=Überæ··å‡åœŸ tile.concrete_super_broken.name=å‘霉的碎片 tile.conveyor.name=输é€å¸¦ tile.conveyor.desc=移动掉在上é¢çš„物å“$å¯ä»¥ç”¨èžºä¸åˆ€é¡ºæ—¶é’ˆæ—‹è½¬$用螺ä¸åˆ€æŒ‰ä½Shifté”®å•击以转弯 @@ -4695,7 +4834,7 @@ tile.deco_aluminium.name=é“è£…é¥°å— tile.deco_asbestos.name=石棉瓦 tile.deco_beryllium.name=é“è£…é¥°å— tile.deco_computer.ibm_300pl.name=IBM个人电脑300PL -tile.deco_emitter.name=Decoå‘光体 +tile.deco_emitter.name=装饰性激光å‘射器 tile.deco_lead.name=é“…è£…é¥°å— tile.deco_rbmk.name=RBMKè£…é¥°å— tile.deco_rbmk_smooth.name=平滑RBMKè£…é¥°å— @@ -4755,10 +4894,10 @@ tile.drone_waypoint_request.name=ç‰©æµæ— äººæœºèˆªè·¯ç‚¹ tile.door_bunker.name=仓门 tile.door_metal.name=金属门 tile.door_office.name=办公室门 -tile.ducrete.name=高密度贫铀混å‡åœŸç“·ç – -tile.ducrete_stairs.name=高密度贫铀混å‡åœŸç“·ç –楼梯 -tile.ducrete_smooth.name=高密度贫铀混å‡åœŸ -tile.ducrete_smooth_stairs.name=高密度贫铀混å‡åœŸæ¥¼æ¢¯ +tile.ducrete.name=贫铀高密度混å‡åœŸç“¦ +tile.ducrete_stairs.name=贫铀高密度混å‡åœŸç“¦æ¥¼æ¢¯ +tile.ducrete_smooth.name=贫铀高密度混å‡åœŸ +tile.ducrete_smooth_stairs.name=贫铀高密度混å‡åœŸå°é˜¶ tile.dummy_block.name=è™šæ‹Ÿæ–¹å— tile.dummy_port.name=虚拟方å—[电力接å£] tile.dungeon_chain.name=金属链 @@ -4779,7 +4918,7 @@ tile.fence_metal.name=é“ä¸ç½‘å›´æ  tile.field_disturber.name=高能场干扰机 tile.filing_cabinet.green.name=蒙尘的文件柜 tile.filing_cabinet.steel.name=钢制文件柜 -tile.fire_digamma.name=挥之ä¸åŽ»çš„è¿ªä¼½é©¬ä¹‹ç« +tile.fire_digamma.name=挥之ä¸åŽ»çš„è¿ªä¼½çŽ›ä¹‹ç« tile.fire_door.name=防ç«é—¨ tile.fireworks.name=烟花箱 tile.fireworks.charges=已充能: %s @@ -4799,13 +4938,13 @@ tile.fluid_duct_solid.name=带涂层的通用æµä½“导管 tile.fluid_switch.name=红石æµä½“阀 tile.fluid_valve.name=æµä½“阀 tile.foam_layer.name=泡沫层 -tile.foundry_basin.name=铸造盘 -tile.foundry_channel.name=é“¸é€ æµ‡é“ -tile.foundry_tank.name=铸造池 -tile.foundry_mold.name=浅铸造池 -tile.foundry_outlet.name=æµ‡ç­‘å‡ºå£ -tile.foundry_slagtap.name=ç‚‰æ¸£å‡ºå£ -tile.fraction_spacer.name=分é¦å¡”分隔器 +tile.foundry_basin.name=浇筑盆 +tile.foundry_channel.name=æµ‡ç­‘é“ +tile.foundry_tank.name=储液池 +tile.foundry_mold.name=浅浇筑盆 +tile.foundry_outlet.name=æµ‡ç­‘å£ +tile.foundry_slagtap.name=é“¸é€ å‡ºæ¸£å£ +tile.fraction_spacer.name=分é¦å¡”分离器 tile.frozen_dirt.name=冰冻土 tile.frozen_grass.name=å†°å†»è‰ tile.frozen_log.name=冰冻原木 @@ -4856,6 +4995,7 @@ tile.gneiss_brick.name=页岩砖 tile.gneiss_chiseled.name=錾制页岩砖 tile.gneiss_tile.name=页岩瓷砖 tile.gravel_diamond.name=钻石砂砾 +tile.gravel_diamond.desc=这里有个笑è¯,$但我ä¸å¤ªæ¸…楚它是什么.$ $上传日期, 2020-07-04:$我们å¦è®¤ä¸€ä¸ªç¬‘è¯çš„任何å«ä¹‰,$å› ä¸ºå®ƒæ˜¯å¦‚æ­¤çš„ä»¤äººä¸æ„‰å¿«,$以至于让人们觉得眼ç›åˆºç—›.$$上传日期, 2020-17-04:$äº‹å®žè¯æ˜Ž,“粉碎钻石â€ä»Žæ¥å°±ä¸æ˜¯ä¸€ä¸ªçœŸæ­£çš„东西,$它让原本å¯èƒ½æ˜¯ä¸ªç¬‘è¯$的东西å˜å¾—毫无æ„义.$ tile.gravel_obsidian.name=碎黑曜石 tile.hadron_access.name=ç²’å­åŠ é€Ÿå™¨æŽ¥å…¥ç»ˆç«¯ tile.hadron_analysis.name=ç²’å­åŠ é€Ÿå™¨åˆ†æžå®¤å£ @@ -4872,32 +5012,32 @@ tile.hadron_coil_starmetal.name=密集星辉线圈 tile.hadron_cooler.name=ç²’å­åŠ é€Ÿå™¨å†·å´è£…ç½® tile.hadron_cooler.desc=冷å´åŠŸçŽ‡ï¼š10$过冷阈值:10$冷å´åŠ æˆï¼š+10%%$过冷惩罚:-25%% tile.hadron_cooler_mk2.name=ç²’å­åŠ é€Ÿå™¨å†·å´è£…ç½®-回文特制 -tile.hadron_cooler_mk2.desc=冷å´åŠŸçŽ‡ï¼š5$效率功能:2-(冷å´-15)2/225$最高惩罚:-90%% -tile.hadron_core.name=ç²’å­åŠ é€Ÿå™¨æ ¸å¿ƒç»„ä»¶ -tile.hadron_diode.name=肖基特二æžç®¡ -tile.hadron_plating.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ -tile.hadron_plating_black.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (黑) -tile.hadron_plating_blue.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (è“) -tile.hadron_plating_glass.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (窗å£) -tile.hadron_plating_striped.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚(低温å±é™©) -tile.hadron_plating_voltz.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (VOLTZ) -tile.hadron_plating_yellow.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚(Yello染料) -tile.hadron_power.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£ -tile.hadron_power_10m.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(10MHE) -tile.hadron_power_100m.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(100MHE) -tile.hadron_power_1g.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(1GHE) -tile.hadron_power_10g.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(10GHE) +tile.hadron_cooler_mk2.desc=冷å´åŠŸçŽ‡ï¼š5$效率函数:2-(冷å´åŠŸçŽ‡-15)²/225$最高惩罚:-90%% +tile.hadron_core.name=ç²’å­åŠ é€Ÿå™¨æ ¸å¿ƒéƒ¨ä»¶ +tile.hadron_diode.name=肖特基粒å­äºŒæžç®¡ +tile.hadron_plating.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ +tile.hadron_plating_black.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (黑色) +tile.hadron_plating_blue.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (è“色) +tile.hadron_plating_glass.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (窗å£) +tile.hadron_plating_striped.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (炫酷的警示æ¡çº¹) +tile.hadron_plating_voltz.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (VOLTZ) +tile.hadron_plating_yellow.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (黄色) +tile.hadron_power.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (1MHE) +tile.hadron_power_10m.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (10MHE) +tile.hadron_power_100m.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (100MHE) +tile.hadron_power_1g.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (1GHE) +tile.hadron_power_10g.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (10GHE) tile.hazmat.name=防è¾å°„å¸ƒå— tile.heater_electric.name=电加热器 -tile.heater_electric.desc=利用电能产生热é‡$以85%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡$å¯ä½¿ç”¨èžºä¸åˆ€è¿›è¡Œé…置。 +tile.heater_electric.desc=使用电能æ¥äº§ç”Ÿçƒ­é‡.$å¯ä»¥85%%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡.$å¯ç”¨èžºä¸åˆ€é…置效率. tile.heater_firebox.name=燃烧室 tile.heater_firebox.desc=燃烧固体燃料以产生热é‡ã€‚ tile.heater_heatex.name=æ¢çƒ­åŠ çƒ­å™¨ tile.heater_heatex.desc=从热æµä½“中产生热é‡ã€‚ tile.heater_oilburner.name=æµä½“燃烧器 tile.heater_oilburner.desc=燃烧å¯ç‡ƒæ¶²ä½“产生热é‡ã€‚ -tile.heater_oven.name=加热炉 -tile.heater_oven.desc=燃烧固体燃料以产生热é‡$以50%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡ã€‚ +tile.heater_oven.name=加热 +tile.heater_oven.desc=燃烧固体燃料以产生热é‡.$å¯ä»¥85%%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡. tile.hev_battery.name=盔甲电池 tile.impact_dirt.name=烧焦的泥土 tile.iter.name=èšå˜å应堆 @@ -4925,6 +5065,7 @@ tile.lox_barrel.name=液氧桶 tile.machine_amgen.name=环境è¾å°„å‘电机 tile.machine_arc_furnace_off.name=电弧炉 tile.machine_arc_furnace_on.name=电弧炉 +tile.machine_arc_welder.name=弧焊机 tile.machine_armor_table.name=è£…ç”²æ”¹è£…å° tile.machine_ashpit.name=å‚¨ç°æ§½ tile.machine_ashpit.desc=收集æ¥è‡ªç‡ƒçƒ§å®¤å’ŒåŠ çƒ­ç‚‰çš„ç°çƒ¬ @@ -4984,7 +5125,8 @@ tile.machine_epress.name=电动锻压机 tile.machine_excavator.name=大型采矿钻机 tile.machine_fel.name=FELè‡ªç”±ç”µå­æ¿€å…‰å™¨ tile.machine_fensu.name=FEnSU飞轮储能系统 -tile.machine_flare.name=高架ç«ç‚¬ +tile.machine_flare.name=废气燃烧塔 +tile.machine_flare.desc=å¯ç‡ƒçƒ§æ¶²ä½“和排出气体$燃烧速率 §c10mB/t$排放速率 §c50mB/t$ $§e燃料效率:$§e-易燃气体: §c50%%$§e-易燃液体: §c10%% tile.machine_fluidtank.name=å‚¨ç½ tile.machine_forcefield.name=力场å‘生器 tile.machine_fraction_tower.name=分é¦å¡” @@ -5050,7 +5192,7 @@ tile.machine_steam_engine.desc=效率:85% tile.machine_stirling.name=斯特林å‘电机 tile.machine_stirling.desc=它将热é‡è½¬åŒ–为能é‡ã€‚这需è¦å¤–部热æº$传热率:T*0.1 TU/T$最大进气é‡ï¼š300 TU/T$效率:50% tile.machine_stirling_creative.name=创造斯特林å‘动机 -tile.machine_stirling_creative.desc=将热é‡è½¬åŒ–为能é‡ã€‚需è¦å¤–部热æº$传热率:T*0.1 TU/T$æ— é™å¸çƒ­/T$效率:100% +tile.machine_stirling_creative.desc=将热é‡è½¬åŒ–为能é‡ã€‚需è¦å¤–部热æº$传热率:T*0.1 TU/T$æ— é™å¸çƒ­/T$效率:100%% tile.machine_stirling_steel.name=é‡åž‹æ–¯ç‰¹æž—å‘电机 tile.machine_stirling_steel.desc=它将热é‡è½¬åŒ–为能é‡ã€‚这需è¦å¤–部热æº$使用更é‡çš„é½¿è½®æ¥æ”¯æŒæ›´é«˜çš„æ¸©åº¦$传热率:T*0.1 TU/T$最大进气é‡ï¼š1500 TU/T$效率:50% tile.machine_storage_drum.name=æ ¸åºŸæ–™å¤„ç†æ¡¶ @@ -5074,6 +5216,7 @@ tile.machine_zirnox.name=锆诺克斯核å应堆 tile.marker_structure.name=多方å—结构信标 tile.mass_storage.name=大规模存储å•å…ƒ tile.meteor_battery.name=星辉é™ç”µå‘生器 +tile.meteor_battery.desc=为特斯拉线圈æä¾›æ— é™ç”µèƒ½ tile.meteor_brick.name=陨石砖 tile.meteor_brick_chiseled.name=錾制陨石砖 tile.meteor_brick_cracked.name=裂纹陨石砖 @@ -5093,14 +5236,18 @@ tile.ntm_dirt.name=泥土 tile.nuke_boy.name=å°ç”·å­© tile.nuke_custom.name=自定义核弹 tile.nuke_fleija.name=F.L.E.I.J.A. +tile.nuke_fleija.desc=适用于:$F.L.E.I.J.A. tile.nuke_fstbmb.name=BF炸弹 tile.nuke_gadget.name=å°çŽ©æ„ tile.nuke_man.name=èƒ–å­ tile.nuke_mike.name=常é’藤迈克 -tile.nuke_n2.name=N2炸弹 +tile.nuke_n2.name=N²炸弹 +tile.nuke_n2.desc=适用于:$N²炸弹 tile.nuke_n45.name=N45æ°´é›· tile.nuke_prototype.name=原型 +tile.nuke_prototype.desc=本ä¸å¿…如此的.$ $你这个怪物. tile.nuke_solinium.name=è”šè“æ´—礼 +tile.nuke_solinium.desc=适用于:$è”šè“æ´—礼 tile.nuke_tsar.name=沙皇炸弹 tile.oil_duct.name=输油管 tile.oil_duct_solid.name=粗输油管 @@ -5159,6 +5306,7 @@ tile.ore_nether_uranium.name=下界铀矿石 tile.ore_nether_uranium_scorched.name=烧焦的下界铀矿石 tile.ore_niter.name=ç¡çŸ³çŸ¿çŸ³ tile.ore_oil.name=油岩 +tile.ore_oil.desc=ä½ ä¸è¯¥æŠŠå®ƒæŒ–出æ¥çš„..$æ¥å§,去拿个井架,你这个笨蛋. tile.ore_oil_empty.name=空油岩 tile.ore_oil_sand.name=æ²¥é’ç ‚ tile.ore_random.name=%s 矿 @@ -5177,7 +5325,7 @@ tile.ore_uranium_scorched.name=烧焦的铀矿石 tile.ore_verticium.name=韦德赛矿石 tile.ore_volcano.name=åœ°çƒ­è£‚ç¼ tile.ore_weidanium.name=é­ä¸¹çŸ¿çŸ³ -tile.part_emitter.name=Decoç²’å­å‘射器 +tile.part_emitter.name=装饰性粒å­ç”Ÿæˆå™¨ tile.pink_barrel.name=煤油桶 tile.pink_log.name=粉色原木 tile.pink_planks.name=ç²‰è‰²æœ¨æ¿ @@ -5229,13 +5377,13 @@ tile.pwr_port.name=PWRæŽ¥å…¥ç«¯å£ tile.pwr_port.desc=å…许物å“和液体交æ¢$ä½ç½®ï¼šç»„ä»¶ tile.pwr_reflector.name=PWR中å­å射器 tile.pwr_reflector.desc=将中å­é€šé‡å射回燃料棒$ä½ç½®ï¼šç½‘格,用于增加å应速率$å¯ä½œä¸ºå¤–å£³ææ–™ -tile.radio_telex.name=Telex Machine -tile.radio_torch_counter.name=红石无线项目计数器 -tile.radio_torch_counter.desc=平颿ˆ–比较器兼容å—上的标牌$æ ¹æ®åŒ¹é…项目的数é‡å‘å‡ºä¿¡å· -tile.radio_torch_receiver.name=æ— çº¿çº¢çŸ³ä¿¡å·æŽ¥æ”¶å™¨ -tile.radio_torch_receiver.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–与比较器兼容的方å—上放置 -tile.radio_torch_sender.name=无线红石信å·å‘射器 -tile.radio_torch_sender.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–比较器兼容的方å—上放置$读å–çº¢çŸ³ä¿¡å·æˆ–比较器输入 +tile.radio_telex.name=电报机 +tile.radio_torch_counter.name=红石无线物å“计数器 +tile.radio_torch_counter.desc=平颿ˆ–比较器兼容å—上的标牌$æ ¹æ®åŒ¹é…物å“的数é‡å‘å‡ºä¿¡å· +tile.radio_torch_receiver.name=çº¢çŸ³æ— çº¿ä¿¡å·æŽ¥æ”¶å™¨ +tile.radio_torch_receiver.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–与比较器兼容的å—上放置 +tile.radio_torch_sender.name=红石无线信å·å‘é€å™¨ +tile.radio_torch_sender.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–与比较器兼容的å—上放置$读å–çº¢çŸ³ä¿¡å·æˆ–比较器输入 tile.radiobox.name=无线怪物清除箱 tile.radiorec.name=åæŽ‰çš„æ”¶éŸ³æœº tile.rail_booster.name=é«˜é€ŸåŠ¨åŠ›è½¨é“ @@ -5272,6 +5420,7 @@ tile.reactor_element.name=å应堆室 tile.reactor_hatch.name=ååº”å †ç«¯å£ tile.reactor_inserter.name=å应堆燃料æ’入器 tile.red_barrel.name=ç‚¸è¯æ¡¶ +tile.red_barrel.desc=陿€æµä½“æ¡¶ tile.red_cable.name=紫铜电线 tile.red_cable_classic.name=紫铜电缆(ç»å…¸åž‹ï¼‰ tile.red_cable_gauge.name=功率计 @@ -5279,13 +5428,15 @@ tile.red_cable_gauge.desc=显示æ¯åˆ»åœ¨ç½‘络中æµåŠ¨çš„ç”µåŠ›$的电缆$ç”± tile.red_cable_paintable.name=坿¶‚漆紫铜线 tile.red_connector.name=电力连接器 tile.red_pylon.name=ç”µçº¿æ† +tile.red_pylon.desc=连接类型: §eå•通é“$连接范围: §e25m tile.red_pylon_large.name=大型输电塔 +tile.red_pylon_large.desc=连接类型: §e四通é“$连接范围: §e100m$这个输电塔需è¦é…åˆå˜ç”µå™¨ä½¿ç”¨! tile.red_wire_coated.name=密å°ç´«é“œç”µç¼† tile.reinforced_brick.name=强化石头 tile.reinforced_brick_stairs.name=钢筋石楼梯 tile.reinforced_ducrete.name=加固高密度贫铀混å‡åœŸ tile.reinforced_glass.name=强化玻璃 -tile.reinforced_glass_pane.name=强化玻璃窗 +tile.reinforced_glass_pane.name=å¼ºåŒ–çŽ»ç’ƒæ¿ tile.reinforced_lamp_off.name=å¼ºåŒ–çº¢çŸ³ç¯ tile.reinforced_lamp_on.name=å¼ºåŒ–çº¢çŸ³ç¯ tile.reinforced_light.name=强化è¤çŸ³ @@ -5349,7 +5500,7 @@ tile.stone_depth.name=深层岩石 tile.stone_depth_nether.name=下界深层岩石 tile.stone_gneiss.name=石墨页岩 tile.stone_porous.name=多孔石 -tile.stone_resource.asbestos.name=温石棉 +tile.stone_resource.asbestos.name=蛇纹石石棉 tile.stone_resource.bauxite.name=é“土矿 tile.stone_resource.hematite.name=赤é“矿 tile.stone_resource.limestone.name=石ç°çŸ³ @@ -5362,8 +5513,9 @@ tile.struct_launcher_core_large.name=å‘å°„å°æ ¸å¿ƒç»„ä»¶ tile.struct_plasma_core.name=等离å­åŠ çƒ­å™¨æ ¸å¿ƒç»„ä»¶ tile.struct_scaffold.name=å‘å°„å°éª¨æž¶ tile.struct_soyuz_core.name=è”盟å·å‘射器核心组件 -tile.struct_watz_core.name=Watzå‘电厂核心组件 -tile.substation.name=å˜ç”µç«™ +tile.struct_watz_core.name=Watz瓦茨电厂核心组件 +tile.substation.name=å˜ç”µå™¨ +tile.substation.desc=连接类型: §e四通é“$连接范围: §e20m tile.sulfuric_acid_block.name=ç¡«é…¸ tile.taint.name=è…è´¨ tile.taint_barrel.name=IMP残渣桶 @@ -5388,10 +5540,10 @@ tile.turret_flamer.name=å–·ç«ç‚®å¡” tile.turret_friendly.name=轻机枪炮塔“å‹å¥½å…ˆç”Ÿâ€ tile.turret_fritz.name=é‡åž‹ç«ç„°å–·å°„器炮塔“弗里茨†tile.turret_heavy.name=é‡åž‹æœºæžªç‚®å¡” -tile.turret_himars.name=ç«ç®­ç‚®å¡”“亨利†-tile.turret_howard.name=åŒè”守门员近防系统“éœåŽå¾·â€ -tile.turret_howard_damaged.name=CIWSåŒè”守门员近防系统 "玛士撒拉" -tile.turret_jeremy.name=é‡ç‚®ç‚®å¡”“æ°é‡Œç±³â€ +tile.turret_himars.name=远程ç«ç®­å¼¹ç‚®å¡”"亨利" +tile.turret_howard.name=åŒç®¡è¿‘防炮"éœåŽå¾·" +tile.turret_howard_damaged.name=åŒç®¡è¿‘防炮 "玛土撒拉" +tile.turret_jeremy.name=é‡ç‚®ç‚®å°"æ°ç±³é‡Œ" tile.turret_light.name=轻型机枪炮塔 tile.turret_maxwell.name=高能微波炮塔 "麦克斯韦" tile.turret_rocket.name=ç«ç®­ç‚®å¡” @@ -5406,8 +5558,8 @@ tile.vent_chlorine.name=æ°¯æ°”æŽ’æ°”å£ tile.vent_chlorine_seal.name=氯气容器 tile.vent_cloud.name=äº‘æŽ’æ°”å£ tile.vent_pink_cloud.name=ç²‰è‰²äº‘æŽ’æ°”å£ -tile.vinyl_tile.large.name=大型乙烯基瓷砖 -tile.vinyl_tile.small.name=å°åž‹ä¹™çƒ¯åŸºç“·ç – +tile.vinyl_tile.large.name=大å—乙烯基瓷砖 +tile.vinyl_tile.small.name=å°å—乙烯基瓷砖 tile.vitrified_barrel.name=玻璃化核废料桶 tile.volcanic_lava_block.name=ç«å±±ç†”岩 tile.volcano_core.name=ç«å±±æ ¸å¿ƒ @@ -5444,6 +5596,11 @@ trait.hot=自燃/高温 trait.hydro=与水å应 trait.radioactive=放射性 trait.radResistance=è¾å°„抗性: %s + +trait.platefuel=[研究å应堆堆æ¿å¼ç‡ƒæ–™]$§3 %s$§3 %s事件的收益率 +trait.pwr_fuel=æ¯é€šé‡çƒ­é‡: §r%s TU$å应函数: §r%s$燃料类型: §r%s + +trait.rbmk.BurnFunc=安全 / 被动$中等 / 对数方程$安全 / 欧拉方程$å±é™© / 负二次方程$安全 / S型饱和函数$中等 / 平方根函数$å±é™© / 线性函数$å±é™© / 二次函数$实验性 / 正弦斜率函数 trait.rbmk.coreTemp=核心温度: %s trait.rbmk.depletion=燃料消耗: %s trait.rbmk.diffusion=扩散度: %s @@ -5478,8 +5635,23 @@ trait.rbmx.splitsWith=接å—: %s trait.rbmx.xenon=铅元素堆积程度: %s trait.rbmx.xenonBurn=铅元素寂ç­å‡½æ•°: %s trait.rbmx.xenonGen=铅元素产生函数: %s + +trait.rbmk_pellet=å¯å›žæ”¶èНå—$全新的$å°‘é‡è¡°å˜$中度衰å˜$高度衰å˜$完全衰å˜$大釿°™å…ƒç´ å †ç§¯ +trait.watz_pellet=消耗: %s%% +trait.watz_pellet.passive=基本裂å˜çއ: $自燃! +trait.watz_pellet.heatEmission=æ¯ä¸­å­é€šé‡äº§ç”Ÿçƒ­é‡: +trait.watz_pellet.burnFunc=å应函数: $燃料类型: +trait.watz_pellet.heatDiv=热å€å¢žç³»æ•°: +trait.watz_pellet.absorbFunc=中å­é€šé‡æ•获: + trait.tile.cluster=åªæœ‰åœ¨è¢«çŽ©å®¶ç ´åæ—¶æ‰ä¼šæŽ‰è½ trait.tile.depth=åªèƒ½è¢«çˆ†ç‚¸ç ´å +trait.tile.barrel.capacity=容é‡: %smB +trait.tile.barrel.hot=å¯ä»¥å‚¨å­˜çƒ­çš„æ¶²ä½“$ä¸èƒ½å‚¨å­˜çƒ­çš„æ¶²ä½“ +trait.tile.barrel.corrosive=å¯ä»¥å‚¨å­˜å¼ºè…蚀性液体$å¯ä»¥å‚¨å­˜è…蚀性液体$ä¸èƒ½é•¿æœŸåœ°å‚¨å­˜å¼ºè…蚀性液体$ä¸èƒ½é•¿æœŸåœ°å‚¨å­˜è…蚀性液体$ä¸èƒ½å‚¨å­˜è…蚀性液体 +trait.tile.barrel.antimatter=å¯ä»¥å‚¨å­˜å物质类物质$ä¸èƒ½å‚¨å­˜å物质类物质 +trait.tile.barrel.leak=泄露 + tool.ability.centrifuge=自动离心 tool.ability.crystallizer=自动结晶 tool.ability.explosion=爆破 @@ -5491,16 +5663,27 @@ tool.ability.recursion=è¿žé”æŒ–矿 tool.ability.shredder=自动粉碎 tool.ability.silktouch=精准采集 tool.ability.smelter=自动熔炼 -turret.animals=被动目标:%s -turret.arty.artillery=§eç«ç‚®æ¨¡å¼$最低射程: 250m$最大射程: 3,000m -turret.arty.cannon=§e炮塔模å¼$最低射程: 32m$射程: 250m -turret.arty.manual=§e手动模å¼$射程: 3,000m -turret.machines=以机械为目标: %s -turret.mobs=以怪物为目标: %s -turret.none=æ—  -turret.off=å…³ -turret.on=å¼€ -turret.players=以玩家为目标:%s + +tooltip.armormods=附件: +tooltip.armormodsshow=æŒ‰ä½ < %s §8§o> æ¥æ˜¾ç¤ºè¯¥ç›”甲上所安装的é…件的效果§r +tooltip.block=æŒ‰ä½ < %s §8§o>以显示更多信æ¯Â§r +tooltip.customnuke=增加 %s 给自定义核弹 %s 阶段 +tooltip.customnukemultiplier=å¢žåŠ å€æ•° %s 给自定义核弹 %s 阶段 +tooltip.oredict=矿物辞典: +tooltip.oredict.null=无矿物辞典数æ®! +tooltip.show=æŒ‰ä½ < %s §8§o> æ¥æ˜¾ç¤ºæ‰€èƒ½æä¾›çš„防护的信æ¯Â§r + +turret.animals=攻击中立生物: %s +turret.arty.artillery=§eé‡ç‚®æ¨¡å¼$宽度: 250m$范围: 3,000m +turret.arty.cannon=§e加农炮模å¼$宽度: 32m$范围: 250m +turret.arty.manual=§e手动模å¼$范围: 3,000m +turret.machines=攻击机器: %s +turret.mobs=攻击敌对生物: %s +turret.none=无白åå• +turret.off=OFF +turret.on=ON +turret.players=攻击玩家: %s + wavelengths.name.ir=红外线 wavelengths.name.visible=å¯è§å…‰ wavelengths.name.uv=紫外线 @@ -5526,7 +5709,41 @@ weapon.elecGun.glass_cannon.ir=红外线 weapon.elecGun.glass_cannon.visible=å¯è§å…‰ weapon.elecGun.glass_cannon.uv=紫外线 weapon.elecGun.glass_cannon.xray=X射线 -weapon.elecGun.glass_cannon.gamma=伽马射线 -hadron.error=错误! -container.reactor=增殖å应堆 -death.attack.subAtomic=%1$s 的原å­è¢« %2$s æ‘§æ¯ \ No newline at end of file +weapon.elecGun.glass_cannon.gamma=γ射线 + +#book_lore.insanity_1.author=Fergusonåšå£« +#book_lore.insanity_1.name=撕裂的书页 +#book_lore.insanity_1.page.1=8月6æ—¥$ $几个月,ä¸ï¼Œå‡ å¹´æ¥ï¼Œ 为了与投资者角力和è¿è¥ 北åŠçƒæœ€å¤§çš„能æºå¸‚场而 讨价还价,终于有了回报. +#book_lore.insanity_1.page.2=虽然我们ä¸èƒ½å®Œå…¨ç¡®å®š 我们到底å‘现了什么—— 考虑到我们在粒å­ä¸Šè¿›è¡Œäº† åƒå…†ä¼ç‰¹çš„碰撞,而这些 ç²’å­çš„记录ä»ç„¶å¾ˆå·®â€”— 但结果å†ä»¤äººå…´å¥‹ä¸è¿‡äº†. +#book_lore.insanity_1.page.3=我们还没有为我们å‘现的 这东西找到一个å字, 也ä¸ç¡®å®šæˆ‘们是å¦åœ¨å¯»æ‰¾ ä¸€ç§æ–°çš„ç²’å­ï¼Œ 一个通å‘å¦ä¸€ä¸ªç»´åº¦çš„虫洞, 或者撒旦的肛门, 但我相信我们的公关人员 å¯ä»¥æƒ³å‡ºä¸€äº›åŠžæ³•. +#book_lore.insanity_2.author=Fergusonåšå£« +#book_lore.insanity_2.name=撕裂的书页 +#book_lore.insanity_2.page.1=8月8æ—¥$ $过去几天,我们一直将 “The Thing†(是的,我们现在就是 这么称呼这玩æ„的) ä¿æŒåœ¨ç£éš”离状æ€ã€‚ 光谱测试最终æžå了 我们的光谱仪,但我们 设法获得了一些有用的数æ®. +#book_lore.insanity_2.page.2=首先,这东西åƒåœ£è¯žæ ‘ 一样å‘光,你能想到的 æ¯ç§æ³¢é•¿çš„è¾å°„å…‰å­éƒ½è¢« 强大的红外日冕所包围。 逻辑上的结论是, 用肉眼看它很å¯èƒ½ä¼šæ€æ­»ä½ ã€‚ +#book_lore.insanity_2.page.3=这就引出了一个问题: 这么å°çš„ç²’å­æ€Žä¹ˆèƒ½è¾å°„ 出如此巨大的能é‡ï¼Ÿ ä½ éšè—了些什么,å°å®¶ä¼™ï¼Ÿ +#book_lore.insanity_3.author=Fergusonåšå£« +#book_lore.insanity_3.name=撕裂的书页 +#book_lore.insanity_3.page.1=8月22æ—¥ $ $ 我已ç»å¥½å‡ å¤©æ²¡ç¡å¥½äº†ã€‚ 医生说他什么毛病都找ä¸åˆ°ã€‚ 现在我正在æœç”¨å„ç§è¯ç‰©ï¼Œ 但头痛åªä¼šåŠ é‡ã€‚ 实验室工作人员怀疑这 å¯èƒ½æ˜¯ä¸¤å‘¨å‰çš„äº‹ä»¶é€ æˆ çš„æ±¡æŸ“. +#book_lore.insanity_3.page.2=医生说ä¸å¤ªå¯èƒ½ï¼Œ 这症状和急性放射病ä¸åŒã€‚ å¦‚æžœè¿™ç§æƒ…况æŒç»­ä¸‹åŽ»ï¼Œ 我å¯èƒ½éœ€è¦ä¼‘æ¯ä¸€æ®µæ—¶é—´ã€‚ 实验人员推测, 如果约æŸç£åœºä¸‹é™ï¼Œ 整个综åˆä½“å»ºç­‘ç¾¤å°±ä¼šå˜æˆ 蘑è‡äº‘. +#book_lore.insanity_3.page.3=我ä¸çŸ¥é“行政部门如何 ä¿æŒå†·é™ï¼Œä½†æˆ‘没有被 æ”¯ä»˜è¶³å¤Ÿçš„è–ªæ°´æ¥æµªè´¹æ—¶é—´. +#book_lore.insanity_4.author=Fergusonåšå£« +#book_lore.insanity_4.name=撕裂的书页 +#book_lore.insanity_4.page.1=8月28æ—¥ $ $ 他们拒ç»äº†æˆ‘的请å‡è¯·æ±‚, 过去几天我一直在努力。 头痛越æ¥è¶Šä¸¥é‡äº†ã€‚ æˆ‘ä¹Ÿä¸æ˜¯å”¯ä¸€æœ‰è¿™ç§æ„Ÿ 觉的人。一些实验室的人员 也有类似的情况. +#book_lore.insanity_4.page.2=The Thing终于离开了综åˆä½“ -真tm棒。 昨天有几套西装è¿è¿‡æ¥ï¼Œ 天知é“在哪里。 一å实验室人员扎å¡é‡Œè¯´ï¼Œ 他们å¯èƒ½æ­£åœ¨æŠŠå¯†å°è£…ç½® 埋在沙漠里, +#book_lore.insanity_4.page.3=慢慢地试图让The Thing 远离文明æ¥â€œè™Žå¤´è›‡å°¾ 地结æŸâ€ã€‚è¦æˆ‘说我们应 把它射å‘太空。 ä¸ç”¨è¯´ï¼Œæˆ‘们的投资者 暂时削å‡äº†æ‰€æœ‰èµ„金。 我应该开始找å¦ä¸€ä»½å·¥ä½œäº†. +#book_lore.insanity_5.author=Fergusonåšå£« +#book_lore.insanity_5.name=撕裂的书页 +#book_lore.insanity_5.page.1=9月11æ—¥ $ $ 我正在åå¤åšä¸€åœºå™©æ¢¦ã€‚ 我在一å—空地上走æ¥èµ°åŽ»ï¼Œ 到处都是这些人, ç©¿ç€æ©¡èƒ¶æœå’Œé•¿ç€ç•¸å½¢çš„脸。 总是一样的噩梦, +#book_lore.insanity_5.page.2=和我最近交谈过的一个实验 室的åŒäº‹ä¹Ÿåšäº†åŒæ ·çš„æ¢¦ã€‚ ä¸Žæ­¤åŒæ—¶ï¼Œæˆ‘çš„å·¥ä½œå·²ç» ç›¸å½“æž¯ç‡¥äº†ï¼ŒåŠ é€Ÿå™¨å·²ç» å…³é—­ï¼Œæ‰€æœ‰æ­£åœ¨è¿›è¡Œçš„ é¡¹ç›®éƒ½åœæ­¢äº†ï¼Œæˆ‘们的 预算也在慢慢å‡å°‘. +#book_lore.insanity_5.page.3=有æŸç§ä¸œè¥¿åœ¨å‘Šè¯‰æˆ‘ The Thing还在æŸå¤„。 我能感觉到. +#book_lore.insanity_6.author=Fergusonåšå£« +#book_lore.insanity_6.name=撕裂的书页 +#book_lore.insanity_6.page.1=10月3æ—¥ $ $ 一åŠçš„å·¥ä½œäººå‘˜å·²ç»æ­»äº¡ï¼Œ 其余大部分在ICU。 我的病情在过去几周里 没有改å˜ï¼Œæ— è®ºæ˜¯å¥½æ˜¯å. +#book_lore.insanity_6.page.2=然而,现实开始å˜å¾—è¶Šæ¥è¶Š ä¸çœŸå®žã€‚ 有时我会在夜晚仰望天空, å¹»æƒ³ç€æˆ‘ä»¬åœ¨å‡ ä¸ªæ˜ŸæœŸå‰ å‘现的东西. +#book_lore.insanity_6.page.3=我们的分光计åå‡ºçš„åŒæ · ç¿çƒ‚的深红光泽。 我的医生说这是由这起事件 引起的精神错乱和压力, 也许他是对的, 但è¯ç‰©æ ¹æœ¬ä¸èµ·ä½œç”¨. +#book_lore.insanity_7.author=Fergusonåšå£« +#book_lore.insanity_7.name=撕裂的书页 +#book_lore.insanity_7.page.1=12月12æ—¥ $ $ 我已ç»å¤±ä¸šäº†ï¼Œä½†è€å®žè¯´ï¼Œ 我对此有些感激。 我以å‰çš„å·¥ä½œåœºæ‰€å·²ç» ä»˜ä¹‹ä¸€ç‚¬äº† ——他们这么说的. +#book_lore.insanity_7.page.2=å—部几英里处的地震观测站 连续几天记录到æŒç»­ä¸æ–­çš„ 地震,而其他任何人都ä¸ä¼š 注æ„到沙漠深处. +#book_lore.insanity_7.page.3=我的结论是,这个地方被 诅咒了,让æ¯ä¸ªäººéƒ½æ„Ÿåˆ°æ¶å¿ƒï¼Œ ç„¶åŽåƒåŸƒå¾·åŠ Â·çˆ±ä¼¦Â·å¡ ï¼ˆEdgar Allan Poe)的故事 一样å å…¥åœ°ç‹±ã€‚ 谢天谢地. + From 0d37bfe8fc6b1bf9ad92f58ea1b13551ed7b569d Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 11 Nov 2023 14:07:19 +0100 Subject: [PATCH 097/207] texture sheet --- .../models/machines/exposure_chamber.png | Bin 0 -> 2278 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png diff --git a/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png b/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png new file mode 100644 index 0000000000000000000000000000000000000000..ac26fc0796689144dd48af558deddc8cb19c1bea GIT binary patch literal 2278 zcmbtWYg7{076#NLD>aqO(lRGaNpUJ6%n7pOI*M8t`AR1%)5*fPB7{?2#Kl|w%6 zYxFkg0RVtC9zVMI0sugyrauB+p{Z9-AsL!Ro3!5p57v|m;ILl-0C0han=3vxUoNgq z6+Sl8{ZKTl`?|LQafufrw<0hc{N4?RBKa+}fAK<*uAT^3Zy6CH$?xr$hD{sFa!&Z~ z@Xzwgu!TjS787YerLR@QY2~ra5y*TSTuNF9YX~k#7fNF)2?q(6bNK9(czO^n z0$0mf#WNp>d0?IM&J?Zn?@2diKc9<0p@R9=P{S;m)&nErzJPL-r0H_EGJji?-l06j z(cBnfbsRj(a_UqNZ+ugW7V^PY-{{Te%z7VQguM9mO1i9hW6lb-2wI zk!1^fgW4iqvsXH*;km*rK}}&d7!$%lsa6w-!`k9IDb&IaONlL`Ft4+hPIwfIXY`fM zihZeeywfsik1Z5)xF;n1Nl||U40^;crX5`WXsQhdaiwI3x_I$%)~=L;xAuDTad%5s z6ohW<494#d@O-hd{?mGl!=*-!|62HaZQ-ddjP*_1St{m>^JuX_>Wj#l_sN4~Fmhc{ zR-y6P0c%M>hHsM3E${YV{JM&a)*9czwVAj+-+Y%s+)ze*%*eYq7AQ*3H z|7->5_)4UueF^7QsG!QJ(vdRJR9b$Oz;5JNpULg3Cj^Pb0yV`c29;9#}qb84jqM zd}QR4WU@USdwW~dd-xDm5&!niyr5O~oo?i}fThG8Dn`8Xmj<$Qt^6^GOz)R?cQ zW`)G|Y2NO0-E%kD!>!IxD+z~g`PK-AyLgMil|*+}5QKNcQPQZVKMcW_`g2OL$RS5u zi}la6IB2&=GFb0j^(wN~SV=)s=WHd~W-Qw|BXYACh7kFB&SnZ9H4S8@I733(+ETH7 zO@XGFV@^DUV~H~HC+|di*LCS+oLxUR?Sn!natKV_vW4ga$avVqF?pwuN>}Y>adrfn zLatj@6_9a2u9uEGB)B+wCD0wBfgxVeOD?6C=)rJ}$+Qw%5c5p*@{E>EL`y5w$+(M$mh4V;@Mb9N{B-@+evD4TPKfBiI|KJt z^>or{A~C)fwFgGJO>mU#O=ES*bZ1+IC}&e*S%# zs#zzMC1zDKZ+WD|DRTNIgQJwwxjiL81$)pc;qlcF4Y*1}a!nor@;kW9T#`>5k6Psx zryO5El`hD!()oweyuJm)L-*_`R3Aa%zT2=!o!pEKTC3VM=X*v9O+GN(|K=C_k##Mw zNQWaL)D}u^Pj3LKfYVXK96WrIBmcDOLO!XTWYd!UY`*Qva=9yjT^pNvd zyg1>_jO_SZ`66?Dn0mg2P^JoP-1`Ncu6$EIkTca8H0Nx8o4&mz z^5mZ8%I``uP-r}9LAgUj@R1?Pqn=24@AdRUuUc(yXzkT+rc|XXB-@(vF(sukewf<+^C8_^MQvQD{7YsP@5$kU-3Hq9k O3%~>8 Date: Sun, 12 Nov 2023 21:11:38 +0100 Subject: [PATCH 098/207] radar rewrite, first attempt --- .../java/api/hbm/entity/IRadarDetectable.java | 3 +- .../api/hbm/entity/IRadarDetectableNT.java | 22 + src/main/java/api/hbm/entity/RadarEntry.java | 35 + .../machine/TileEntityMachineRadarNT.java | 105 + .../hbm/models/machines/exposure_chamber.obj | 4253 +++++++++++++++++ .../hbm/textures/gui/machine/gui_radar_nt.png | Bin 0 -> 21545 bytes .../models/machines/exposure_chamber.png | Bin 2278 -> 6849 bytes 7 files changed, 4417 insertions(+), 1 deletion(-) create mode 100644 src/main/java/api/hbm/entity/IRadarDetectableNT.java create mode 100644 src/main/java/api/hbm/entity/RadarEntry.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java create mode 100644 src/main/resources/assets/hbm/models/machines/exposure_chamber.obj create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png diff --git a/src/main/java/api/hbm/entity/IRadarDetectable.java b/src/main/java/api/hbm/entity/IRadarDetectable.java index f89fc99d4..0c3700b99 100644 --- a/src/main/java/api/hbm/entity/IRadarDetectable.java +++ b/src/main/java/api/hbm/entity/IRadarDetectable.java @@ -1,5 +1,6 @@ package api.hbm.entity; +@Deprecated //Use IRadarDetectableNT instead, old interface will still work though public interface IRadarDetectable { public static enum RadarTargetType { @@ -15,7 +16,7 @@ public interface IRadarDetectable { MISSILE_20("Size 20 Custom Missile"), //size 20 custom missiles MISSILE_AB("Anti-Ballistic Missile"), //anti ballistic missile PLAYER("Player"), //airborne players - ARTILLERY("Artillery Shell"); //airborne players + ARTILLERY("Artillery Shell"); //artillery shells public String name; diff --git a/src/main/java/api/hbm/entity/IRadarDetectableNT.java b/src/main/java/api/hbm/entity/IRadarDetectableNT.java new file mode 100644 index 000000000..83c4bf503 --- /dev/null +++ b/src/main/java/api/hbm/entity/IRadarDetectableNT.java @@ -0,0 +1,22 @@ +package api.hbm.entity; + +public interface IRadarDetectableNT { + + public static final int TIER0 = 0; + public static final int TIER1 = 1; + public static final int TIER2 = 2; + public static final int TIER3 = 3; + public static final int TIER4 = 4; + public static final int TIER10 = 5; + public static final int TIER10_15 = 6; + public static final int TIER15 = 7; + public static final int TIER15_20 = 8; + public static final int TIER20 = 9; + public static final int TIER_AB = 10; + public static final int PLAYER = 11; + public static final int ARTY = 12; + + public String getUnlocalizedName(); + public int getBlipLevel(); + public boolean canBeSeenBy(Object radar); +} diff --git a/src/main/java/api/hbm/entity/RadarEntry.java b/src/main/java/api/hbm/entity/RadarEntry.java new file mode 100644 index 000000000..540ec925b --- /dev/null +++ b/src/main/java/api/hbm/entity/RadarEntry.java @@ -0,0 +1,35 @@ +package api.hbm.entity; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; + +public class RadarEntry { + + public String unlocalizedName; + public int blipLevel; + public int posX; + public int posY; + public int posZ; + public int dim; + + public RadarEntry(String name, int level, int x, int y, int z, int dim) { + this.unlocalizedName = name; + this.blipLevel = level; + this.posX = x; + this.posY = y; + this.posZ = z; + this.dim = dim; + } + + public RadarEntry(IRadarDetectableNT detectable, Entity entity) { + this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension); + } + + public RadarEntry(IRadarDetectable detectable, Entity entity) { + this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension); + } + + public RadarEntry(EntityPlayer player) { + this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java new file mode 100644 index 000000000..db8f40435 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -0,0 +1,105 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Pair; + +import api.hbm.entity.IRadarDetectable; +import api.hbm.entity.IRadarDetectableNT; +import api.hbm.entity.RadarEntry; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.WorldServer; + +/** + * Now with SmЯtâ„¢ lag-free entity detection! + * @author hbm + */ +public class TileEntityMachineRadarNT extends TileEntityMachineBase { + + public boolean scanMissiles = true; + public boolean scanPlayers = true; + public boolean smartMode = true; + public boolean redMode = true; + + public boolean jammed = false; + + public TileEntityMachineRadarNT() { + super(1); + } + + @Override + public String getName() { + return ""; + } + + @Override + public void updateEntity() { + + } + + //List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry + //The converters coming first have the highest priority + public static List, RadarEntry>> converters = new ArrayList(); + public static List classes = new ArrayList(); + public static List matchingEntities = new ArrayList(); + + /** + * Iterates over every entity in the world and add them to the matchingEntities list if the class is in the detectable list + * From this compiled list, radars can easily grab the required entities since we can assume that the total amount of detectable entities is comparatively low + */ + public static void updateSystem() { + matchingEntities.clear(); + + for(WorldServer world : Minecraft.getMinecraft().getIntegratedServer().worldServers) { + for(Object entity : world.loadedEntityList) { + for(Class clazz : classes) { + if(clazz.isAssignableFrom(entity.getClass())) { + matchingEntities.add((Entity) entity); + break; + } + } + } + } + } + + /** Registers a class that if an entity inherits that class, it is picked up by the system */ + public static void registerEntityClasses() { + classes.add(IRadarDetectableNT.class); + classes.add(IRadarDetectable.class); + classes.add(EntityPlayer.class); + } + + /** Registers converters. Converters are used to go over the list of detected entities and turn them into a RadarEntry using the entity instance and the radar's instance. */ + public static void registerConverters() { + //IRadarDetectableNT + converters.add(x -> { + Entity e = x.getKey(); + if(e instanceof IRadarDetectableNT) { + IRadarDetectableNT detectable = (IRadarDetectableNT) e; + if(detectable.canBeSeenBy(x.getValue())) return new RadarEntry(detectable, e); + } + return null; + }); + //IRadarDetectable, Legacy + converters.add(x -> { + Entity e = x.getKey(); + if(e instanceof IRadarDetectable) { + return new RadarEntry((IRadarDetectable) e, e); + } + return null; + }); + //Players + converters.add(x -> { + Entity e = x.getKey(); + if(e instanceof EntityPlayer) { + return new RadarEntry((EntityPlayer) e); + } + return null; + }); + } +} diff --git a/src/main/resources/assets/hbm/models/machines/exposure_chamber.obj b/src/main/resources/assets/hbm/models/machines/exposure_chamber.obj new file mode 100644 index 000000000..ac6d44aa7 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/exposure_chamber.obj @@ -0,0 +1,4253 @@ +# Blender v2.79 (sub 0) OBJ File: 'exposure_chamber.blend' +# www.blender.org +o Magnets +v 1.961571 0.500000 0.292636 +v 1.961571 0.500000 -0.292635 +v 1.225981 0.500000 0.243863 +v 1.225982 0.500000 -0.243863 +v 1.961571 1.250000 0.292636 +v 1.225981 1.250000 0.243863 +v 1.961571 1.250000 -0.292635 +v 1.225982 1.250000 -0.243863 +v 1.225982 4.500000 -0.243863 +v 1.961571 4.500000 -0.292635 +v 1.225981 4.500000 0.243863 +v 1.961571 4.500000 0.292636 +v 1.225982 3.750000 -0.243863 +v 1.225981 3.750000 0.243863 +v 1.961571 3.750000 -0.292635 +v 1.961571 3.750000 0.292636 +v -1.961571 0.500000 -0.292636 +v -1.961571 0.500000 0.292636 +v -1.225981 0.500000 -0.243863 +v -1.225983 0.500000 0.243863 +v -1.961571 1.250000 -0.292636 +v -1.225981 1.250000 -0.243863 +v -1.961571 1.250000 0.292636 +v -1.225983 1.250000 0.243863 +v -1.225983 4.500000 0.243863 +v -1.961571 4.500000 0.292636 +v -1.225981 4.500000 -0.243863 +v -1.961571 4.500000 -0.292636 +v -1.225983 3.750000 0.243863 +v -1.225981 3.750000 -0.243863 +v -1.961571 3.750000 0.292636 +v -1.961571 3.750000 -0.292636 +v 0.292635 0.500000 -1.961571 +v -0.292636 0.500000 -1.961571 +v 0.243863 0.500000 -1.225981 +v -0.243863 0.500000 -1.225982 +v 0.292635 1.250000 -1.961571 +v 0.243863 1.250000 -1.225981 +v -0.292636 1.250000 -1.961571 +v -0.243863 1.250000 -1.225982 +v -0.243863 4.500000 -1.225982 +v -0.292636 4.500000 -1.961571 +v 0.243863 4.500000 -1.225981 +v 0.292635 4.500000 -1.961571 +v -0.243863 3.750000 -1.225982 +v 0.243863 3.750000 -1.225981 +v -0.292636 3.750000 -1.961571 +v 0.292635 3.750000 -1.961571 +v -0.292636 0.500000 1.961571 +v 0.292635 0.500000 1.961571 +v -0.243863 0.500000 1.225981 +v 0.243863 0.500000 1.225982 +v -0.292636 1.250000 1.961571 +v -0.243863 1.250000 1.225981 +v 0.292635 1.250000 1.961571 +v 0.243863 1.250000 1.225982 +v 0.243863 4.500000 1.225982 +v 0.292635 4.500000 1.961571 +v -0.243863 4.500000 1.225981 +v -0.292636 4.500000 1.961571 +v 0.243863 3.750000 1.225982 +v -0.243863 3.750000 1.225981 +v 0.292635 3.750000 1.961571 +v -0.292636 3.750000 1.961571 +v 1.593965 0.500000 -1.180115 +v 1.180116 0.500000 -1.593965 +v 1.039336 0.500000 -0.694462 +v 0.694463 0.500000 -1.039337 +v 1.593965 1.250000 -1.180115 +v 1.039336 1.250000 -0.694462 +v 1.180116 1.250000 -1.593965 +v 0.694463 1.250000 -1.039337 +v 0.694463 4.500000 -1.039337 +v 1.180116 4.500000 -1.593965 +v 1.039336 4.500000 -0.694462 +v 1.593965 4.500000 -1.180115 +v 0.694463 3.750000 -1.039337 +v 1.039336 3.750000 -0.694462 +v 1.180116 3.750000 -1.593965 +v 1.593965 3.750000 -1.180115 +v -1.593966 0.500000 1.180115 +v -1.180116 0.500000 1.593965 +v -1.039337 0.500000 0.694462 +v -0.694464 0.500000 1.039337 +v -1.593966 1.250000 1.180115 +v -1.039337 1.250000 0.694462 +v -1.180116 1.250000 1.593965 +v -0.694464 1.250000 1.039337 +v -0.694464 4.500000 1.039337 +v -1.180116 4.500000 1.593965 +v -1.039337 4.500000 0.694462 +v -1.593966 4.500000 1.180115 +v -0.694464 3.750000 1.039337 +v -1.039337 3.750000 0.694462 +v -1.180116 3.750000 1.593965 +v -1.593966 3.750000 1.180115 +v -1.180116 0.500000 -1.593965 +v -1.593966 0.500000 -1.180115 +v -0.694463 0.500000 -1.039337 +v -1.039337 0.500000 -0.694463 +v -1.180116 1.250000 -1.593965 +v -0.694463 1.250000 -1.039337 +v -1.593966 1.250000 -1.180115 +v -1.039337 1.250000 -0.694463 +v -1.039337 4.500000 -0.694463 +v -1.593966 4.500000 -1.180115 +v -0.694463 4.500000 -1.039337 +v -1.180116 4.500000 -1.593965 +v -1.039337 3.750000 -0.694463 +v -0.694463 3.750000 -1.039337 +v -1.593966 3.750000 -1.180115 +v -1.180116 3.750000 -1.593965 +v 1.180115 0.500000 1.593965 +v 1.593965 0.500000 1.180115 +v 0.694462 0.500000 1.039337 +v 1.039337 0.500000 0.694463 +v 1.180115 1.250000 1.593965 +v 0.694462 1.250000 1.039337 +v 1.593965 1.250000 1.180115 +v 1.039337 1.250000 0.694463 +v 1.039337 4.500000 0.694463 +v 1.593965 4.500000 1.180115 +v 0.694462 4.500000 1.039337 +v 1.180115 4.500000 1.593965 +v 1.039337 3.750000 0.694463 +v 0.694462 3.750000 1.039337 +v 1.593965 3.750000 1.180115 +v 1.180115 3.750000 1.593965 +v 1.021021 0.500000 -1.700268 +v 0.480301 0.500000 -1.924242 +v 0.694463 0.500000 -1.039336 +v 0.243863 0.500000 -1.225982 +v 1.021021 1.250000 -1.700268 +v 0.694463 1.250000 -1.039336 +v 0.480301 1.250000 -1.924242 +v 0.243863 1.250000 -1.225982 +v 0.243863 4.500000 -1.225982 +v 0.480301 4.500000 -1.924242 +v 0.694463 4.500000 -1.039336 +v 1.021021 4.500000 -1.700268 +v 0.243863 3.750000 -1.225982 +v 0.694463 3.750000 -1.039336 +v 0.480301 3.750000 -1.924242 +v 1.021021 3.750000 -1.700268 +v -1.021021 0.500000 1.700269 +v -0.480301 0.500000 1.924242 +v -0.694463 0.500000 1.039336 +v -0.243863 0.500000 1.225982 +v -1.021021 1.250000 1.700269 +v -0.694463 1.250000 1.039336 +v -0.480301 1.250000 1.924242 +v -0.243863 1.250000 1.225982 +v -0.243863 4.500000 1.225982 +v -0.480301 4.500000 1.924242 +v -0.694463 4.500000 1.039336 +v -1.021021 4.500000 1.700269 +v -0.243863 3.750000 1.225982 +v -0.694463 3.750000 1.039336 +v -0.480301 3.750000 1.924242 +v -1.021021 3.750000 1.700269 +v -1.700269 0.500000 -1.021021 +v -1.924242 0.500000 -0.480300 +v -1.039337 0.500000 -0.694463 +v -1.225983 0.500000 -0.243863 +v -1.700269 1.250000 -1.021021 +v -1.039337 1.250000 -0.694463 +v -1.924242 1.250000 -0.480300 +v -1.225983 1.250000 -0.243863 +v -1.225983 4.500000 -0.243863 +v -1.924242 4.500000 -0.480300 +v -1.039337 4.500000 -0.694463 +v -1.700269 4.500000 -1.021021 +v -1.225983 3.750000 -0.243863 +v -1.039337 3.750000 -0.694463 +v -1.924242 3.750000 -0.480300 +v -1.700269 3.750000 -1.021021 +v 1.700268 0.500000 1.021021 +v 1.924242 0.500000 0.480300 +v 1.039336 0.500000 0.694463 +v 1.225982 0.500000 0.243863 +v 1.700268 1.250000 1.021021 +v 1.039336 1.250000 0.694463 +v 1.924242 1.250000 0.480300 +v 1.225982 1.250000 0.243863 +v 1.225982 4.500000 0.243863 +v 1.924242 4.500000 0.480300 +v 1.039336 4.500000 0.694463 +v 1.700268 4.500000 1.021021 +v 1.225982 3.750000 0.243863 +v 1.039336 3.750000 0.694463 +v 1.924242 3.750000 0.480300 +v 1.700268 3.750000 1.021021 +v -0.480301 0.500000 -1.924242 +v -1.021021 0.500000 -1.700269 +v -0.243863 0.500000 -1.225981 +v -0.694464 0.500000 -1.039337 +v -0.480301 1.250000 -1.924242 +v -0.243863 1.250000 -1.225981 +v -1.021021 1.250000 -1.700269 +v -0.694464 1.250000 -1.039337 +v -0.694464 4.500000 -1.039337 +v -1.021021 4.500000 -1.700269 +v -0.243863 4.500000 -1.225981 +v -0.480301 4.500000 -1.924242 +v -0.694464 3.750000 -1.039337 +v -0.243863 3.750000 -1.225981 +v -1.021021 3.750000 -1.700269 +v -0.480301 3.750000 -1.924242 +v 0.480300 0.500000 1.924242 +v 1.021021 0.500000 1.700268 +v 0.243862 0.500000 1.225981 +v 0.694463 0.500000 1.039337 +v 0.480300 1.250000 1.924242 +v 0.243862 1.250000 1.225981 +v 1.021021 1.250000 1.700268 +v 0.694463 1.250000 1.039337 +v 0.694463 4.500000 1.039337 +v 1.021021 4.500000 1.700268 +v 0.243862 4.500000 1.225981 +v 0.480300 4.500000 1.924242 +v 0.694463 3.750000 1.039337 +v 0.243862 3.750000 1.225981 +v 1.021021 3.750000 1.700268 +v 0.480300 3.750000 1.924242 +v -1.924242 0.500000 0.480301 +v -1.700269 0.500000 1.021021 +v -1.225981 0.500000 0.243863 +v -1.039337 0.500000 0.694463 +v -1.924242 1.250000 0.480301 +v -1.225981 1.250000 0.243863 +v -1.700269 1.250000 1.021021 +v -1.039337 1.250000 0.694463 +v -1.039337 4.500000 0.694463 +v -1.700269 4.500000 1.021021 +v -1.225981 4.500000 0.243863 +v -1.924242 4.500000 0.480301 +v -1.039337 3.750000 0.694463 +v -1.225981 3.750000 0.243863 +v -1.700269 3.750000 1.021021 +v -1.924242 3.750000 0.480301 +v 1.924242 0.500000 -0.480301 +v 1.700268 0.500000 -1.021021 +v 1.225981 0.500000 -0.243863 +v 1.039337 0.500000 -0.694463 +v 1.924242 1.250000 -0.480301 +v 1.225981 1.250000 -0.243863 +v 1.700268 1.250000 -1.021021 +v 1.039337 1.250000 -0.694463 +v 1.039337 4.500000 -0.694463 +v 1.700268 4.500000 -1.021021 +v 1.225981 4.500000 -0.243863 +v 1.924242 4.500000 -0.480301 +v 1.039337 3.750000 -0.694463 +v 1.225981 3.750000 -0.243863 +v 1.700268 3.750000 -1.021021 +v 1.924242 3.750000 -0.480301 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vn 0.0000 1.0000 0.0000 +vn -0.0662 0.0000 0.9978 +vn -0.0662 0.0000 -0.9978 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0662 0.0000 -0.9978 +vn 0.0662 0.0000 0.9978 +vn -1.0000 0.0000 0.0000 +vn 0.9978 0.0000 0.0662 +vn -0.9978 0.0000 0.0662 +vn 0.0000 0.0000 -1.0000 +vn -0.9978 0.0000 -0.0662 +vn 0.9978 0.0000 -0.0662 +vn 0.0000 0.0000 1.0000 +vn 0.6588 0.0000 0.7523 +vn -0.7523 0.0000 -0.6588 +vn 0.7071 0.0000 -0.7071 +vn -0.6588 0.0000 -0.7523 +vn 0.7523 0.0000 0.6588 +vn -0.7071 0.0000 0.7071 +vn 0.7523 0.0000 -0.6588 +vn -0.6588 0.0000 0.7523 +vn -0.7071 0.0000 -0.7071 +vn -0.7523 0.0000 0.6588 +vn 0.6588 0.0000 -0.7523 +vn 0.7071 0.0000 0.7071 +vn 0.8965 0.0000 0.4430 +vn -0.9472 0.0000 -0.3207 +vn 0.3827 0.0000 -0.9239 +vn -0.8965 0.0000 -0.4430 +vn 0.9472 0.0000 0.3207 +vn -0.3827 0.0000 0.9239 +vn 0.4430 0.0000 -0.8965 +vn -0.3207 0.0000 0.9472 +vn -0.9239 0.0000 -0.3827 +vn -0.4430 0.0000 0.8965 +vn 0.3207 0.0000 -0.9472 +vn 0.9239 0.0000 0.3827 +vn 0.9472 0.0000 -0.3207 +vn -0.8965 0.0000 0.4430 +vn -0.3827 0.0000 -0.9239 +vn -0.9472 0.0000 0.3207 +vn 0.8965 0.0000 -0.4430 +vn 0.3827 0.0000 0.9239 +vn -0.3207 0.0000 -0.9472 +vn 0.4430 0.0000 0.8965 +vn -0.9239 0.0000 0.3827 +vn 0.3207 0.0000 0.9472 +vn -0.4430 0.0000 -0.8965 +vn 0.9239 0.0000 -0.3827 +s off +f 5/1/1 8/2/1 6/3/1 +f 1/4/2 6/5/2 3/6/2 +f 4/7/3 7/8/3 2/9/3 +f 2/9/4 5/1/4 1/4/4 +f 15/10/4 12/11/4 16/12/4 +f 13/13/3 10/14/3 15/10/3 +f 16/12/2 11/15/2 14/16/2 +f 16/12/5 13/17/5 15/10/5 +f 21/18/1 24/19/1 22/20/1 +f 17/21/6 22/22/6 19/23/6 +f 20/24/7 23/25/7 18/26/7 +f 18/26/8 21/18/8 17/21/8 +f 31/27/8 28/28/8 32/29/8 +f 29/30/7 26/31/7 31/27/7 +f 32/29/6 27/32/6 30/33/6 +f 32/29/5 29/34/5 31/27/5 +f 37/35/1 40/36/1 38/37/1 +f 33/38/9 38/39/9 35/40/9 +f 36/41/10 39/42/10 34/43/10 +f 34/43/11 37/35/11 33/38/11 +f 47/44/11 44/45/11 48/46/11 +f 45/47/10 42/48/10 47/44/10 +f 48/46/9 43/49/9 46/50/9 +f 48/46/5 45/51/5 47/44/5 +f 53/52/1 56/53/1 54/54/1 +f 49/55/12 54/56/12 51/57/12 +f 52/58/13 55/59/13 50/60/13 +f 50/60/14 53/52/14 49/55/14 +f 63/61/14 60/62/14 64/63/14 +f 61/64/13 58/65/13 63/61/13 +f 64/63/12 59/66/12 62/67/12 +f 64/63/5 61/68/5 63/61/5 +f 69/69/1 72/70/1 70/71/1 +f 65/72/15 70/73/15 67/74/15 +f 68/75/16 71/76/16 66/77/16 +f 66/77/17 69/69/17 65/72/17 +f 79/78/17 76/79/17 80/80/17 +f 77/81/16 74/82/16 79/78/16 +f 80/80/15 75/83/15 78/84/15 +f 80/80/5 77/85/5 79/78/5 +f 85/86/1 88/87/1 86/88/1 +f 81/89/18 86/90/18 83/91/18 +f 84/92/19 87/93/19 82/94/19 +f 82/94/20 85/86/20 81/89/20 +f 95/95/20 92/96/20 96/97/20 +f 93/98/19 90/99/19 95/95/19 +f 96/97/18 91/100/18 94/101/18 +f 96/97/5 93/102/5 95/95/5 +f 101/103/1 104/104/1 102/105/1 +f 97/106/21 102/107/21 99/108/21 +f 100/109/22 103/110/22 98/111/22 +f 98/111/23 101/103/23 97/106/23 +f 111/112/23 108/113/23 112/114/23 +f 109/115/22 106/116/22 111/112/22 +f 112/114/21 107/117/21 110/118/21 +f 112/114/5 109/119/5 111/112/5 +f 117/120/1 120/121/1 118/122/1 +f 113/123/24 118/124/24 115/125/24 +f 116/126/25 119/127/25 114/128/25 +f 114/128/26 117/120/26 113/123/26 +f 127/129/26 124/130/26 128/131/26 +f 125/132/25 122/133/25 127/129/25 +f 128/131/24 123/134/24 126/135/24 +f 128/131/5 125/136/5 127/129/5 +f 133/137/1 136/138/1 134/139/1 +f 129/140/27 134/141/27 131/142/27 +f 132/143/28 135/144/28 130/145/28 +f 130/145/29 133/137/29 129/140/29 +f 143/146/29 140/147/29 144/148/29 +f 141/149/28 138/150/28 143/146/28 +f 144/148/27 139/151/27 142/152/27 +f 144/148/5 141/153/5 143/146/5 +f 149/154/1 152/155/1 150/156/1 +f 145/157/30 150/158/30 147/159/30 +f 148/160/31 151/161/31 146/162/31 +f 146/162/32 149/154/32 145/157/32 +f 159/163/32 156/164/32 160/165/32 +f 157/166/31 154/167/31 159/163/31 +f 160/165/30 155/168/30 158/169/30 +f 160/165/5 157/170/5 159/163/5 +f 165/171/1 168/172/1 166/173/1 +f 161/174/33 166/175/33 163/176/33 +f 164/177/34 167/178/34 162/179/34 +f 162/179/35 165/171/35 161/174/35 +f 175/180/35 172/181/35 176/182/35 +f 173/183/34 170/184/34 175/180/34 +f 176/182/33 171/185/33 174/186/33 +f 176/182/5 173/187/5 175/180/5 +f 181/188/1 184/189/1 182/190/1 +f 177/191/36 182/192/36 179/193/36 +f 180/194/37 183/195/37 178/196/37 +f 178/196/38 181/188/38 177/191/38 +f 191/197/38 188/198/38 192/199/38 +f 189/200/37 186/201/37 191/197/37 +f 192/199/36 187/202/36 190/203/36 +f 192/199/5 189/204/5 191/197/5 +f 197/205/1 200/206/1 198/207/1 +f 193/208/39 198/209/39 195/210/39 +f 196/211/40 199/212/40 194/213/40 +f 194/213/41 197/205/41 193/208/41 +f 207/214/41 204/215/41 208/216/41 +f 205/217/40 202/218/40 207/214/40 +f 208/216/39 203/219/39 206/220/39 +f 208/216/5 205/221/5 207/214/5 +f 213/222/1 216/223/1 214/224/1 +f 209/225/42 214/226/42 211/227/42 +f 212/228/43 215/229/43 210/230/43 +f 210/230/44 213/222/44 209/225/44 +f 223/231/44 220/232/44 224/233/44 +f 221/234/43 218/235/43 223/231/43 +f 224/233/42 219/236/42 222/237/42 +f 224/233/5 221/238/5 223/231/5 +f 229/239/1 232/240/1 230/241/1 +f 225/242/45 230/243/45 227/244/45 +f 228/245/46 231/246/46 226/247/46 +f 226/247/47 229/239/47 225/242/47 +f 239/248/47 236/249/47 240/250/47 +f 237/251/46 234/252/46 239/248/46 +f 240/250/45 235/253/45 238/254/45 +f 240/250/5 237/255/5 239/248/5 +f 245/256/1 248/257/1 246/258/1 +f 241/259/48 246/260/48 243/261/48 +f 244/262/49 247/263/49 242/264/49 +f 242/264/50 245/256/50 241/259/50 +f 255/265/50 252/266/50 256/267/50 +f 253/268/49 250/269/49 255/265/49 +f 256/267/48 251/270/48 254/271/48 +f 256/267/5 253/272/5 255/265/5 +f 5/1/1 7/8/1 8/2/1 +f 1/4/2 5/1/2 6/5/2 +f 4/7/3 8/273/3 7/8/3 +f 2/9/4 7/8/4 5/1/4 +f 15/10/4 10/14/4 12/11/4 +f 13/13/3 9/274/3 10/14/3 +f 16/12/2 12/11/2 11/15/2 +f 16/12/5 14/275/5 13/17/5 +f 21/18/1 23/25/1 24/19/1 +f 17/21/6 21/18/6 22/22/6 +f 20/24/7 24/276/7 23/25/7 +f 18/26/8 23/25/8 21/18/8 +f 31/27/8 26/31/8 28/28/8 +f 29/30/7 25/277/7 26/31/7 +f 32/29/6 28/28/6 27/32/6 +f 32/29/5 30/278/5 29/34/5 +f 37/35/1 39/42/1 40/36/1 +f 33/38/9 37/35/9 38/39/9 +f 36/41/10 40/279/10 39/42/10 +f 34/43/11 39/42/11 37/35/11 +f 47/44/11 42/48/11 44/45/11 +f 45/47/10 41/280/10 42/48/10 +f 48/46/9 44/45/9 43/49/9 +f 48/46/5 46/281/5 45/51/5 +f 53/52/1 55/59/1 56/53/1 +f 49/55/12 53/52/12 54/56/12 +f 52/58/13 56/282/13 55/59/13 +f 50/60/14 55/59/14 53/52/14 +f 63/61/14 58/65/14 60/62/14 +f 61/64/13 57/283/13 58/65/13 +f 64/63/12 60/62/12 59/66/12 +f 64/63/5 62/284/5 61/68/5 +f 69/69/1 71/76/1 72/70/1 +f 65/72/15 69/69/15 70/73/15 +f 68/75/16 72/285/16 71/76/16 +f 66/77/17 71/76/17 69/69/17 +f 79/78/17 74/82/17 76/79/17 +f 77/81/16 73/286/16 74/82/16 +f 80/80/15 76/79/15 75/83/15 +f 80/80/5 78/287/5 77/85/5 +f 85/86/1 87/93/1 88/87/1 +f 81/89/18 85/86/18 86/90/18 +f 84/92/19 88/288/19 87/93/19 +f 82/94/20 87/93/20 85/86/20 +f 95/95/20 90/99/20 92/96/20 +f 93/98/19 89/289/19 90/99/19 +f 96/97/18 92/96/18 91/100/18 +f 96/97/5 94/290/5 93/102/5 +f 101/103/1 103/110/1 104/104/1 +f 97/106/21 101/103/21 102/107/21 +f 100/109/22 104/291/22 103/110/22 +f 98/111/23 103/110/23 101/103/23 +f 111/112/23 106/116/23 108/113/23 +f 109/115/22 105/292/22 106/116/22 +f 112/114/21 108/113/21 107/117/21 +f 112/114/5 110/293/5 109/119/5 +f 117/120/1 119/127/1 120/121/1 +f 113/123/24 117/120/24 118/124/24 +f 116/126/25 120/294/25 119/127/25 +f 114/128/26 119/127/26 117/120/26 +f 127/129/26 122/133/26 124/130/26 +f 125/132/25 121/295/25 122/133/25 +f 128/131/24 124/130/24 123/134/24 +f 128/131/5 126/296/5 125/136/5 +f 133/137/1 135/144/1 136/138/1 +f 129/140/27 133/137/27 134/141/27 +f 132/143/28 136/297/28 135/144/28 +f 130/145/29 135/144/29 133/137/29 +f 143/146/29 138/150/29 140/147/29 +f 141/149/28 137/298/28 138/150/28 +f 144/148/27 140/147/27 139/151/27 +f 144/148/5 142/299/5 141/153/5 +f 149/154/1 151/161/1 152/155/1 +f 145/157/30 149/154/30 150/158/30 +f 148/160/31 152/300/31 151/161/31 +f 146/162/32 151/161/32 149/154/32 +f 159/163/32 154/167/32 156/164/32 +f 157/166/31 153/301/31 154/167/31 +f 160/165/30 156/164/30 155/168/30 +f 160/165/5 158/302/5 157/170/5 +f 165/171/1 167/178/1 168/172/1 +f 161/174/33 165/171/33 166/175/33 +f 164/177/34 168/303/34 167/178/34 +f 162/179/35 167/178/35 165/171/35 +f 175/180/35 170/184/35 172/181/35 +f 173/183/34 169/304/34 170/184/34 +f 176/182/33 172/181/33 171/185/33 +f 176/182/5 174/305/5 173/187/5 +f 181/188/1 183/195/1 184/189/1 +f 177/191/36 181/188/36 182/192/36 +f 180/194/37 184/306/37 183/195/37 +f 178/196/38 183/195/38 181/188/38 +f 191/197/38 186/201/38 188/198/38 +f 189/200/37 185/307/37 186/201/37 +f 192/199/36 188/198/36 187/202/36 +f 192/199/5 190/308/5 189/204/5 +f 197/205/1 199/212/1 200/206/1 +f 193/208/39 197/205/39 198/209/39 +f 196/211/40 200/309/40 199/212/40 +f 194/213/41 199/212/41 197/205/41 +f 207/214/41 202/218/41 204/215/41 +f 205/217/40 201/310/40 202/218/40 +f 208/216/39 204/215/39 203/219/39 +f 208/216/5 206/311/5 205/221/5 +f 213/222/1 215/229/1 216/223/1 +f 209/225/42 213/222/42 214/226/42 +f 212/228/43 216/312/43 215/229/43 +f 210/230/44 215/229/44 213/222/44 +f 223/231/44 218/235/44 220/232/44 +f 221/234/43 217/313/43 218/235/43 +f 224/233/42 220/232/42 219/236/42 +f 224/233/5 222/314/5 221/238/5 +f 229/239/1 231/246/1 232/240/1 +f 225/242/45 229/239/45 230/243/45 +f 228/245/46 232/315/46 231/246/46 +f 226/247/47 231/246/47 229/239/47 +f 239/248/47 234/252/47 236/249/47 +f 237/251/46 233/316/46 234/252/46 +f 240/250/45 236/249/45 235/253/45 +f 240/250/5 238/317/5 237/255/5 +f 245/256/1 247/263/1 248/257/1 +f 241/259/48 245/256/48 246/260/48 +f 244/262/49 248/318/49 247/263/49 +f 242/264/50 247/263/50 245/256/50 +f 255/265/50 250/269/50 252/266/50 +f 253/268/49 249/319/49 250/269/49 +f 256/267/48 252/266/48 251/270/48 +f 256/267/5 254/320/5 253/272/5 +o Core +v 0.000000 2.250000 -0.000000 +v 0.180900 2.388196 0.131430 +v -0.069097 2.388196 0.212660 +v -0.223606 2.388196 -0.000000 +v -0.069097 2.388196 -0.212660 +v 0.180900 2.388196 -0.131430 +v 0.069096 2.611804 0.212660 +v -0.180901 2.611804 0.131430 +v -0.180901 2.611804 -0.131430 +v 0.069096 2.611804 -0.212660 +v 0.223606 2.611804 -0.000000 +v 0.000000 2.750000 -0.000000 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vt 0.525641 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.525641 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vn 0.1876 -0.7947 0.5774 +vn 0.6071 -0.7947 0.0000 +vn -0.4911 -0.7947 0.3568 +vn -0.4911 -0.7947 -0.3568 +vn 0.1876 -0.7947 -0.5774 +vn 0.9822 -0.1876 0.0000 +vn 0.3035 -0.1876 0.9342 +vn -0.7946 -0.1876 0.5774 +vn -0.7946 -0.1876 -0.5774 +vn 0.3035 -0.1876 -0.9342 +vn 0.7946 0.1876 0.5774 +vn -0.3035 0.1876 0.9342 +vn -0.9822 0.1876 0.0000 +vn -0.3035 0.1876 -0.9342 +vn 0.7946 0.1876 -0.5774 +vn 0.4911 0.7947 0.3568 +vn -0.1876 0.7947 0.5774 +vn -0.6071 0.7947 0.0000 +vn -0.1876 0.7947 -0.5774 +vn 0.4911 0.7947 -0.3568 +s off +f 257/321/51 258/322/51 259/323/51 +f 258/322/52 257/324/52 262/325/52 +f 257/321/53 259/326/53 260/327/53 +f 257/324/54 260/328/54 261/329/54 +f 257/324/55 261/330/55 262/331/55 +f 258/322/56 262/332/56 267/333/56 +f 259/326/57 258/334/57 263/335/57 +f 260/328/58 259/326/58 264/336/58 +f 261/329/59 260/327/59 265/337/59 +f 262/325/60 261/329/60 266/338/60 +f 258/334/61 267/333/61 263/339/61 +f 259/323/62 263/335/62 264/340/62 +f 260/328/63 264/340/63 265/341/63 +f 261/330/64 265/342/64 266/338/64 +f 262/325/65 266/343/65 267/344/65 +f 263/339/66 267/344/66 268/345/66 +f 264/346/67 263/339/67 268/347/67 +f 265/337/68 264/340/68 268/347/68 +f 266/343/69 265/341/69 268/345/69 +f 267/333/70 266/343/70 268/347/70 +o Chamber +v 0.000000 0.000000 -2.500000 +v -0.956709 0.000000 -2.309699 +v -1.767767 0.000000 -1.767767 +v -2.309699 0.000000 -0.956709 +v -2.500000 0.000000 0.000000 +v -2.309699 0.000000 0.956709 +v -1.767767 0.000000 1.767767 +v -0.956709 0.000000 2.309699 +v 0.000000 0.000000 2.500000 +v 0.956708 0.000000 2.309699 +v 1.767767 0.000000 1.767768 +v 2.309699 0.000000 0.956709 +v 2.500000 0.000000 -0.000000 +v 2.309698 0.000000 -0.956709 +v 1.767766 0.000000 -1.767768 +v 0.956707 0.000000 -2.309699 +v 0.000000 0.500000 -2.500000 +v -0.956709 0.500000 -2.309699 +v -1.767767 0.500000 -1.767767 +v -2.309699 0.500000 -0.956709 +v -2.500000 0.500000 0.000000 +v -2.309699 0.500000 0.956709 +v -1.767767 0.500000 1.767767 +v -0.956709 0.500000 2.309699 +v 0.000000 0.500000 2.500000 +v 0.956708 0.500000 2.309699 +v 1.767767 0.500000 1.767768 +v 2.309699 0.500000 0.956709 +v 2.500000 0.500000 -0.000000 +v 2.309698 0.500000 -0.956709 +v 1.767766 0.500000 -1.767768 +v 0.956707 0.500000 -2.309699 +v 0.000000 0.500000 -2.250000 +v -0.861038 0.500000 -2.078729 +v -1.590990 0.500000 -1.590990 +v -2.078729 0.500000 -0.861038 +v -2.250000 0.500000 0.000000 +v -2.078729 0.500000 0.861038 +v -1.590990 0.500000 1.590990 +v -0.861038 0.500000 2.078729 +v -0.000001 0.500000 2.250000 +v 0.861037 0.500000 2.078729 +v 1.590990 0.500000 1.590991 +v 2.078729 0.500000 0.861038 +v 2.250000 0.500000 0.000000 +v 2.078729 0.500000 -0.861038 +v 1.590990 0.500000 -1.590991 +v 0.861036 0.500000 -2.078730 +v 0.000000 4.500000 -2.250000 +v -0.861038 4.500000 -2.078729 +v -1.590990 4.500000 -1.590990 +v -2.078729 4.500000 -0.861038 +v -2.250000 4.500000 0.000000 +v -2.078729 4.500000 0.861038 +v -1.590990 4.500000 1.590990 +v -0.861038 4.500000 2.078729 +v -0.000001 4.500000 2.250000 +v 0.861037 4.500000 2.078729 +v 1.590990 4.500000 1.590991 +v 2.078729 4.500000 0.861038 +v 2.250000 4.500000 0.000000 +v 2.078729 4.500000 -0.861038 +v 1.590990 4.500000 -1.590991 +v 0.861036 4.500000 -2.078730 +v 1.767767 0.375000 1.944544 +v 1.944544 0.375000 1.767767 +v 1.767767 4.625000 1.944544 +v 1.944544 4.625000 1.767767 +v 1.944544 4.625000 2.121320 +v 1.944544 0.375000 2.121320 +v 2.121320 0.375000 1.944544 +v 2.121320 4.625000 1.944544 +v 1.944544 4.875000 1.767767 +v 1.767767 4.875000 1.944544 +v 1.767767 0.125000 1.944544 +v 1.944544 0.125000 1.767767 +v 1.590990 0.375000 1.767767 +v 1.767767 0.375000 1.590990 +v 1.767767 4.625000 1.590990 +v 1.590990 4.625000 1.767767 +v 1.767767 4.875000 1.590990 +v 1.590990 4.875000 1.767767 +v 1.590990 0.125000 1.767767 +v 1.767767 0.125000 1.590990 +v 1.944544 0.375000 -1.767767 +v 1.767767 0.375000 -1.944544 +v 1.944544 4.625000 -1.767767 +v 1.767767 4.625000 -1.944544 +v 2.121321 4.625000 -1.944544 +v 2.121321 0.375000 -1.944544 +v 1.944544 0.375000 -2.121320 +v 1.944544 4.625000 -2.121320 +v 1.767767 4.875000 -1.944544 +v 1.944544 4.875000 -1.767767 +v 1.944544 0.125000 -1.767767 +v 1.767767 0.125000 -1.944544 +v 1.767767 0.375000 -1.590990 +v 1.590990 0.375000 -1.767767 +v 1.590990 4.625000 -1.767767 +v 1.767767 4.625000 -1.590990 +v 1.590990 4.875000 -1.767767 +v 1.767767 4.875000 -1.590990 +v 1.767767 0.125000 -1.590990 +v 1.590990 0.125000 -1.767767 +v -1.767767 0.375000 -1.944544 +v -1.944544 0.375000 -1.767767 +v -1.767767 4.625000 -1.944544 +v -1.944544 4.625000 -1.767767 +v -1.944544 4.625000 -2.121320 +v -1.944544 0.375000 -2.121320 +v -2.121321 0.375000 -1.944544 +v -2.121321 4.625000 -1.944544 +v -1.944544 4.875000 -1.767767 +v -1.767767 4.875000 -1.944544 +v -1.767767 0.125000 -1.944544 +v -1.944544 0.125000 -1.767767 +v -1.590990 0.375000 -1.767767 +v -1.767767 0.375000 -1.590990 +v -1.767767 4.625000 -1.590990 +v -1.590990 4.625000 -1.767767 +v -1.767767 4.875000 -1.590990 +v -1.590990 4.875000 -1.767767 +v -1.590990 0.125000 -1.767767 +v -1.767767 0.125000 -1.590990 +v -1.944544 0.375000 1.767767 +v -1.767767 0.375000 1.944544 +v -1.944544 4.625000 1.767767 +v -1.767767 4.625000 1.944544 +v -2.121320 4.625000 1.944544 +v -2.121320 0.375000 1.944544 +v -1.944544 0.375000 2.121320 +v -1.944544 4.625000 2.121320 +v -1.767767 4.875000 1.944544 +v -1.944544 4.875000 1.767767 +v -1.944544 0.125000 1.767767 +v -1.767767 0.125000 1.944544 +v -1.767767 0.375000 1.590990 +v -1.590990 0.375000 1.767767 +v -1.590990 4.625000 1.767767 +v -1.767767 4.625000 1.590990 +v -1.590990 4.875000 1.767767 +v -1.767767 4.875000 1.590990 +v -1.767767 0.125000 1.590990 +v -1.590990 0.125000 1.767767 +v 0.000000 0.500000 -1.500000 +v -0.574025 0.500000 -1.385819 +v -1.060660 0.500000 -1.060660 +v -1.385819 0.500000 -0.574025 +v -1.500000 0.500000 0.000000 +v -1.385819 0.500000 0.574025 +v -1.060660 0.500000 1.060660 +v -0.574025 0.500000 1.385819 +v 0.000000 0.500000 1.500000 +v 0.574024 0.500000 1.385819 +v 1.060659 0.500000 1.060660 +v 1.385819 0.500000 0.574025 +v 1.500000 0.500000 -0.000000 +v 1.385819 0.500000 -0.574025 +v 1.060659 0.500000 -1.060660 +v 0.574024 0.500000 -1.385820 +v 0.000000 1.500000 -1.500000 +v -0.574025 1.500000 -1.385819 +v -1.060660 1.500000 -1.060660 +v -1.385819 1.500000 -0.574025 +v -1.500000 1.500000 0.000000 +v -1.385819 1.500000 0.574025 +v -1.060660 1.500000 1.060660 +v -0.574025 1.500000 1.385819 +v 0.000000 1.500000 1.500000 +v 0.574024 1.500000 1.385819 +v 1.060659 1.500000 1.060660 +v 1.385819 1.500000 0.574025 +v 1.500000 1.500000 -0.000000 +v 1.385819 1.500000 -0.574025 +v 1.060659 1.500000 -1.060660 +v 0.574024 1.500000 -1.385820 +v 0.000000 3.500000 -1.500000 +v -0.574025 3.500000 -1.385819 +v -1.060660 3.500000 -1.060660 +v -1.385819 3.500000 -0.574025 +v -1.500000 3.500000 0.000000 +v -1.385819 3.500000 0.574025 +v -1.060660 3.500000 1.060660 +v -0.574025 3.500000 1.385819 +v 0.000000 3.500000 1.500000 +v 0.574024 3.500000 1.385819 +v 1.060659 3.500000 1.060660 +v 1.385819 3.500000 0.574025 +v 1.500000 3.500000 -0.000000 +v 1.385819 3.500000 -0.574025 +v 1.060659 3.500000 -1.060660 +v 0.574024 3.500000 -1.385820 +v 0.000000 4.500000 -1.500000 +v -0.574025 4.500000 -1.385819 +v -1.060660 4.500000 -1.060660 +v -1.385819 4.500000 -0.574025 +v -1.500000 4.500000 0.000000 +v -1.385819 4.500000 0.574025 +v -1.060660 4.500000 1.060660 +v -0.574025 4.500000 1.385819 +v 0.000000 4.500000 1.500000 +v 0.574024 4.500000 1.385819 +v 1.060659 4.500000 1.060660 +v 1.385819 4.500000 0.574025 +v 1.500000 4.500000 -0.000000 +v 1.385819 4.500000 -0.574025 +v 1.060659 4.500000 -1.060660 +v 0.574024 4.500000 -1.385820 +v 0.000000 1.500000 -1.000000 +v -0.382684 1.500000 -0.923880 +v -0.707107 1.500000 -0.707107 +v -0.923880 1.500000 -0.382683 +v -1.000000 1.500000 0.000000 +v -0.923880 1.500000 0.382683 +v -0.707107 1.500000 0.707107 +v -0.382684 1.500000 0.923880 +v 0.000000 1.500000 1.000000 +v 0.382683 1.500000 0.923880 +v 0.707107 1.500000 0.707107 +v 0.923880 1.500000 0.382684 +v 1.000000 1.500000 -0.000000 +v 0.923880 1.500000 -0.382684 +v 0.707107 1.500000 -0.707107 +v 0.382683 1.500000 -0.923880 +v 0.000000 1.750000 -1.000000 +v -0.382684 1.750000 -0.923880 +v -0.707107 1.750000 -0.707107 +v -0.923880 1.750000 -0.382683 +v -1.000000 1.750000 0.000000 +v -0.923880 1.750000 0.382683 +v -0.707107 1.750000 0.707107 +v -0.382684 1.750000 0.923880 +v 0.000000 1.750000 1.000000 +v 0.382683 1.750000 0.923880 +v 0.707107 1.750000 0.707107 +v 0.923880 1.750000 0.382684 +v 1.000000 1.750000 -0.000000 +v 0.923880 1.750000 -0.382684 +v 0.707107 1.750000 -0.707107 +v 0.382683 1.750000 -0.923880 +v 0.000000 3.250000 -1.000000 +v -0.382684 3.250000 -0.923880 +v -0.707107 3.250000 -0.707107 +v -0.923880 3.250000 -0.382683 +v -1.000000 3.250000 0.000000 +v -0.923880 3.250000 0.382683 +v -0.707107 3.250000 0.707107 +v -0.382684 3.250000 0.923880 +v 0.000000 3.250000 1.000000 +v 0.382683 3.250000 0.923880 +v 0.707107 3.250000 0.707107 +v 0.923880 3.250000 0.382684 +v 1.000000 3.250000 -0.000000 +v 0.923880 3.250000 -0.382684 +v 0.707107 3.250000 -0.707107 +v 0.382683 3.250000 -0.923880 +v 0.000000 3.500000 -1.000000 +v -0.382684 3.500000 -0.923880 +v -0.707107 3.500000 -0.707107 +v -0.923880 3.500000 -0.382683 +v -1.000000 3.500000 0.000000 +v -0.923880 3.500000 0.382683 +v -0.707107 3.500000 0.707107 +v -0.382684 3.500000 0.923880 +v 0.000000 3.500000 1.000000 +v 0.382683 3.500000 0.923880 +v 0.707107 3.500000 0.707107 +v 0.923880 3.500000 0.382684 +v 1.000000 3.500000 -0.000000 +v 0.923880 3.500000 -0.382684 +v 0.707107 3.500000 -0.707107 +v 0.382683 3.500000 -0.923880 +v 0.972271 1.500000 0.972272 +v 0.795495 1.500000 0.795495 +v 0.795495 1.500000 -0.795495 +v 0.795495 2.000000 0.795495 +v 0.972271 1.500000 -0.972272 +v 0.795495 3.000000 0.795495 +v 0.972271 3.500000 0.972272 +v 0.795495 3.500000 0.795495 +v 0.265164 2.000000 0.265165 +v 0.265164 3.000000 0.265165 +v 0.795495 2.000000 -0.795495 +v 0.795495 3.000000 -0.795495 +v 0.972271 3.500000 -0.972272 +v 0.795495 3.500000 -0.795495 +v 0.265164 2.000000 -0.265165 +v 0.265164 3.000000 -0.265165 +v -0.972272 1.500000 -0.972272 +v -0.795495 1.500000 -0.795495 +v -0.795495 1.500000 0.795495 +v -0.795495 2.000000 -0.795495 +v -0.972272 1.500000 0.972272 +v -0.795495 3.000000 -0.795495 +v -0.972272 3.500000 -0.972272 +v -0.795495 3.500000 -0.795495 +v -0.265165 2.000000 -0.265165 +v -0.265165 3.000000 -0.265165 +v -0.795495 2.000000 0.795495 +v -0.795495 3.000000 0.795495 +v -0.972272 3.500000 0.972272 +v -0.795495 3.500000 0.795495 +v -0.265165 2.000000 0.265165 +v -0.265165 3.000000 0.265165 +v 0.000000 3.000000 -1.000000 +v -0.353554 2.853553 -1.000000 +v -0.500000 2.500000 -1.000000 +v -0.353554 2.146447 -1.000000 +v 0.000000 2.000000 -1.000000 +v 0.353553 2.146447 -1.000000 +v 0.500000 2.500000 -1.000000 +v 0.353553 2.853553 -1.000000 +v 0.000000 3.000000 -6.500000 +v -0.353554 2.853553 -6.500000 +v -0.500000 2.500000 -6.500000 +v -0.353554 2.146447 -6.500000 +v 0.000000 2.000000 -6.500000 +v 0.353553 2.146447 -6.500000 +v 0.500000 2.500000 -6.500000 +v 0.353553 2.853553 -6.500000 +v 0.000000 2.875000 -1.000000 +v -0.265165 2.765165 -1.000000 +v -0.375000 2.500000 -1.000000 +v -0.265165 2.234835 -1.000000 +v 0.000000 2.125000 -1.000000 +v 0.265164 2.234835 -1.000000 +v 0.375000 2.500000 -1.000000 +v 0.265164 2.765165 -1.000000 +v -0.265165 2.765165 -0.500000 +v 0.000000 2.875000 -0.500000 +v -0.375000 2.500000 -0.500000 +v -0.265165 2.234835 -0.500000 +v 0.000000 2.125000 -0.500000 +v 0.265164 2.234835 -0.500000 +v 0.375000 2.500000 -0.500000 +v 0.265164 2.765165 -0.500000 +v -1.000000 0.000000 -6.500000 +v 1.000000 0.000000 -6.500000 +v -1.000000 0.000000 -8.500000 +v 1.000000 0.000000 -8.500000 +v -1.000000 2.500000 -8.500000 +v -1.000000 3.500000 -6.500000 +v 1.000000 3.500000 -6.500000 +v 1.000000 2.500000 -8.500000 +v -0.250000 0.000000 -3.250000 +v 0.250000 0.000000 -3.250000 +v -0.250000 0.000000 -3.750000 +v 0.250000 0.000000 -3.750000 +v -0.250000 0.125000 -3.750000 +v -0.250000 0.125000 -3.250000 +v 0.250000 0.125000 -3.250000 +v 0.250000 0.125000 -3.750000 +v -0.125000 0.125000 -3.625000 +v -0.125000 0.125000 -3.375000 +v 0.125000 0.125000 -3.375000 +v 0.125000 0.125000 -3.625000 +v -0.125000 1.750000 -3.625000 +v -0.125000 1.750000 -3.375000 +v 0.125000 1.750000 -3.375000 +v 0.125000 1.750000 -3.625000 +v -0.750000 2.500000 -6.750000 +v 0.750000 2.500000 -6.750000 +v -0.750000 2.500000 -8.250000 +v 0.750000 2.500000 -8.250000 +v -0.750000 3.500000 -8.250000 +v -0.750000 3.500000 -6.750000 +v 0.750000 3.500000 -6.750000 +v 0.750000 3.500000 -8.250000 +v 1.000000 0.000000 -6.500000 +v 1.500000 0.000000 -6.500000 +v 1.000000 0.000000 -8.500000 +v 1.500000 0.000000 -8.500000 +v 1.000000 1.500000 -8.500000 +v 1.000000 1.500000 -6.500000 +v 1.500000 1.000000 -6.500000 +v 1.500000 1.000000 -8.500000 +v -1.500000 0.000000 -6.500000 +v -1.000000 0.000000 -6.500000 +v -1.500000 0.000000 -8.500000 +v -1.000000 0.000000 -8.500000 +v -1.500000 1.000000 -8.500000 +v -1.500000 1.000000 -6.500000 +v -1.000000 1.500000 -6.500000 +v -1.000000 1.500000 -8.500000 +v 0.353553 2.853553 -2.375000 +v 0.500000 2.500000 -2.375000 +v 0.353553 2.146447 -2.375000 +v 0.000000 2.000000 -2.375000 +v -0.353554 2.146447 -2.375000 +v -0.500000 2.500000 -2.375000 +v -0.353554 2.853553 -2.375000 +v 0.000000 3.000000 -2.375000 +v 0.530330 3.030330 -2.125000 +v 0.750000 2.500000 -2.125000 +v 0.530330 1.969670 -2.125000 +v 0.000000 1.750000 -2.125000 +v -0.530331 1.969670 -2.125000 +v -0.750000 2.500000 -2.125000 +v -0.530331 3.030330 -2.125000 +v 0.000000 3.250000 -2.125000 +v 0.707107 3.207107 -2.375000 +v 1.000000 2.500000 -2.375000 +v 0.707107 1.792893 -2.375000 +v 0.000000 1.500000 -2.375000 +v -0.707107 1.792893 -2.375000 +v -1.000000 2.500000 -2.375000 +v -0.707107 3.207107 -2.375000 +v 0.000000 3.500000 -2.375000 +v 0.000000 3.500000 -2.625000 +v -0.707107 3.207107 -2.625000 +v -1.000000 2.500000 -2.625000 +v -0.707107 1.792893 -2.625000 +v 0.000000 1.500000 -2.625000 +v 0.707107 1.792893 -2.625000 +v 1.000000 2.500000 -2.625000 +v 0.707107 3.207107 -2.625000 +v 0.353553 2.853553 -2.625000 +v 0.500000 2.500000 -2.625000 +v 0.353553 2.146447 -2.625000 +v 0.000000 2.000000 -2.625000 +v -0.353554 2.146447 -2.625000 +v -0.500000 2.500000 -2.625000 +v -0.353554 2.853553 -2.625000 +v 0.000000 3.000000 -2.625000 +v 0.530330 3.030330 -2.875000 +v 0.750000 2.500000 -2.875000 +v 0.530330 1.969670 -2.875000 +v 0.000000 1.750000 -2.875000 +v -0.530331 1.969670 -2.875000 +v -0.750000 2.500000 -2.875000 +v -0.530331 3.030330 -2.875000 +v 0.000000 3.250000 -2.875000 +v -0.062500 3.750000 -2.562500 +v 0.062500 3.750000 -2.562500 +v -0.062500 3.750000 -7.437500 +v 0.062500 3.750000 -7.437500 +v -0.062500 3.625000 -7.437500 +v -0.062500 3.625000 -2.562500 +v 0.062500 3.625000 -2.562500 +v 0.062500 3.625000 -7.437500 +v 0.062500 3.625000 -3.437500 +v -0.062500 3.625000 -3.437500 +v -0.062500 3.625000 -2.437500 +v 0.062500 3.625000 -2.437500 +v 0.062500 3.625000 -3.562500 +v -0.062500 3.625000 -3.562500 +v 0.062500 3.625000 -7.562500 +v -0.062500 3.625000 -7.562500 +v -0.062500 3.437500 -2.562500 +v 0.062500 3.437500 -2.562500 +v 0.062500 3.500000 -7.437500 +v -0.062500 3.500000 -7.437500 +v -0.062500 3.437500 -2.437500 +v 0.062500 3.437500 -2.437500 +v 0.062500 3.500000 -7.562500 +v -0.062500 3.500000 -7.562500 +v -0.062500 3.437500 -3.562500 +v 0.062500 3.437500 -3.562500 +v -0.062500 3.437500 -3.437500 +v 0.062500 3.437500 -3.437500 +v 0.062500 3.625000 -4.437500 +v -0.062500 3.625000 -4.437500 +v 0.062500 3.625000 -4.562500 +v -0.062500 3.625000 -4.562500 +v -0.062500 3.437500 -4.562500 +v 0.062500 3.437500 -4.562500 +v -0.062500 3.437500 -4.437500 +v 0.062500 3.437500 -4.437500 +v 0.062500 3.625000 -5.437500 +v -0.062500 3.625000 -5.437500 +v 0.062500 3.625000 -5.562500 +v -0.062500 3.625000 -5.562500 +v -0.062500 3.437500 -5.562500 +v 0.062500 3.437500 -5.562500 +v -0.062500 3.437500 -5.437500 +v 0.062500 3.437500 -5.437500 +v 0.353553 2.853553 -3.375000 +v 0.500000 2.500000 -3.375000 +v 0.353553 2.146447 -3.375000 +v 0.000000 2.000000 -3.375000 +v -0.353554 2.146447 -3.375000 +v -0.500000 2.500000 -3.375000 +v -0.353554 2.853553 -3.375000 +v 0.000000 3.000000 -3.375000 +v 0.530330 3.030330 -3.125000 +v 0.750000 2.500000 -3.125000 +v 0.530330 1.969670 -3.125000 +v 0.000000 1.750000 -3.125000 +v -0.530331 1.969670 -3.125000 +v -0.750000 2.500000 -3.125000 +v -0.530331 3.030330 -3.125000 +v 0.000000 3.250000 -3.125000 +v 0.707107 3.207107 -3.375000 +v 1.000000 2.500000 -3.375000 +v 0.707107 1.792893 -3.375000 +v 0.000000 1.500000 -3.375000 +v -0.707107 1.792893 -3.375000 +v -1.000000 2.500000 -3.375000 +v -0.707107 3.207107 -3.375000 +v 0.000000 3.500000 -3.375000 +v 0.000000 3.500000 -3.625000 +v -0.707107 3.207107 -3.625000 +v -1.000000 2.500000 -3.625000 +v -0.707107 1.792893 -3.625000 +v 0.000000 1.500000 -3.625000 +v 0.707107 1.792893 -3.625000 +v 1.000000 2.500000 -3.625000 +v 0.707107 3.207107 -3.625000 +v 0.353553 2.853553 -3.625000 +v 0.500000 2.500000 -3.625000 +v 0.353553 2.146447 -3.625000 +v 0.000000 2.000000 -3.625000 +v -0.353554 2.146447 -3.625000 +v -0.500000 2.500000 -3.625000 +v -0.353554 2.853553 -3.625000 +v 0.000000 3.000000 -3.625000 +v 0.530330 3.030330 -3.875000 +v 0.750000 2.500000 -3.875000 +v 0.530330 1.969670 -3.875000 +v 0.000000 1.750000 -3.875000 +v -0.530331 1.969670 -3.875000 +v -0.750000 2.500000 -3.875000 +v -0.530331 3.030330 -3.875000 +v 0.000000 3.250000 -3.875000 +v 0.353553 2.853553 -4.375000 +v 0.500000 2.500000 -4.375000 +v 0.353553 2.146447 -4.375000 +v 0.000000 2.000000 -4.375000 +v -0.353554 2.146447 -4.375000 +v -0.500000 2.500000 -4.375000 +v -0.353554 2.853553 -4.375000 +v 0.000000 3.000000 -4.375000 +v 0.530330 3.030330 -4.125000 +v 0.750000 2.500000 -4.125000 +v 0.530330 1.969670 -4.125000 +v 0.000000 1.750000 -4.125000 +v -0.530331 1.969670 -4.125000 +v -0.750000 2.500000 -4.125000 +v -0.530331 3.030330 -4.125000 +v 0.000000 3.250000 -4.125000 +v 0.707107 3.207107 -4.375000 +v 1.000000 2.500000 -4.375000 +v 0.707107 1.792893 -4.375000 +v 0.000000 1.500000 -4.375000 +v -0.707107 1.792893 -4.375000 +v -1.000000 2.500000 -4.375000 +v -0.707107 3.207107 -4.375000 +v 0.000000 3.500000 -4.375000 +v 0.000000 3.500000 -4.625000 +v -0.707107 3.207107 -4.625000 +v -1.000000 2.500000 -4.625000 +v -0.707107 1.792893 -4.625000 +v 0.000000 1.500000 -4.625000 +v 0.707107 1.792893 -4.625000 +v 1.000000 2.500000 -4.625000 +v 0.707107 3.207107 -4.625000 +v 0.353553 2.853553 -4.625000 +v 0.500000 2.500000 -4.625000 +v 0.353553 2.146447 -4.625000 +v 0.000000 2.000000 -4.625000 +v -0.353554 2.146447 -4.625000 +v -0.500000 2.500000 -4.625000 +v -0.353554 2.853553 -4.625000 +v 0.000000 3.000000 -4.625000 +v 0.530330 3.030330 -4.875000 +v 0.750000 2.500000 -4.875000 +v 0.530330 1.969670 -4.875000 +v 0.000000 1.750000 -4.875000 +v -0.530331 1.969670 -4.875000 +v -0.750000 2.500000 -4.875000 +v -0.530331 3.030330 -4.875000 +v 0.000000 3.250000 -4.875000 +v 0.353553 2.853553 -5.375000 +v 0.500000 2.500000 -5.375000 +v 0.353553 2.146447 -5.375000 +v 0.000000 2.000000 -5.375000 +v -0.353554 2.146447 -5.375000 +v -0.500000 2.500000 -5.375000 +v -0.353554 2.853553 -5.375000 +v 0.000000 3.000000 -5.375000 +v 0.530330 3.030330 -5.125000 +v 0.750000 2.500000 -5.125000 +v 0.530330 1.969670 -5.125000 +v 0.000000 1.750000 -5.125000 +v -0.530331 1.969670 -5.125000 +v -0.750000 2.500000 -5.125000 +v -0.530331 3.030330 -5.125000 +v 0.000000 3.250000 -5.125000 +v 0.707107 3.207107 -5.375000 +v 1.000000 2.500000 -5.375000 +v 0.707107 1.792893 -5.375000 +v 0.000000 1.500000 -5.375000 +v -0.707107 1.792893 -5.375000 +v -1.000000 2.500000 -5.375000 +v -0.707107 3.207107 -5.375000 +v 0.000000 3.500000 -5.375000 +v 0.000000 3.500000 -5.625000 +v -0.707107 3.207107 -5.625000 +v -1.000000 2.500000 -5.625000 +v -0.707107 1.792893 -5.625000 +v 0.000000 1.500000 -5.625000 +v 0.707107 1.792893 -5.625000 +v 1.000000 2.500000 -5.625000 +v 0.707107 3.207107 -5.625000 +v 0.353553 2.853553 -5.625000 +v 0.500000 2.500000 -5.625000 +v 0.353553 2.146447 -5.625000 +v 0.000000 2.000000 -5.625000 +v -0.353554 2.146447 -5.625000 +v -0.500000 2.500000 -5.625000 +v -0.353554 2.853553 -5.625000 +v 0.000000 3.000000 -5.625000 +v 0.530330 3.030330 -5.875000 +v 0.750000 2.500000 -5.875000 +v 0.530330 1.969670 -5.875000 +v 0.000000 1.750000 -5.875000 +v -0.530331 1.969670 -5.875000 +v -0.750000 2.500000 -5.875000 +v -0.530331 3.030330 -5.875000 +v 0.000000 3.250000 -5.875000 +v 0.353553 2.853553 -6.375000 +v 0.500000 2.500000 -6.375000 +v 0.353553 2.146447 -6.375000 +v 0.000000 2.000000 -6.375000 +v -0.353554 2.146447 -6.375000 +v -0.500000 2.500000 -6.375000 +v -0.353554 2.853553 -6.375000 +v 0.000000 3.000000 -6.375000 +v 0.530330 3.030330 -6.125000 +v 0.750000 2.500000 -6.125000 +v 0.530330 1.969670 -6.125000 +v 0.000000 1.750000 -6.125000 +v -0.530331 1.969670 -6.125000 +v -0.750000 2.500000 -6.125000 +v -0.530331 3.030330 -6.125000 +v 0.000000 3.250000 -6.125000 +v 0.707107 3.207107 -6.375000 +v 1.000000 2.500000 -6.375000 +v 0.707107 1.792893 -6.375000 +v 0.000000 1.500000 -6.375000 +v -0.707107 1.792893 -6.375000 +v -1.000000 2.500000 -6.375000 +v -0.707107 3.207107 -6.375000 +v 0.000000 3.500000 -6.375000 +v 0.000000 3.500000 -6.500000 +v -0.707107 3.207107 -6.500000 +v -1.000000 2.500000 -6.500000 +v -0.707107 1.792893 -6.500000 +v 0.000000 1.500000 -6.500000 +v 0.707107 1.792893 -6.500000 +v 1.000000 2.500000 -6.500000 +v 0.707107 3.207107 -6.500000 +v -0.250000 0.000000 -5.250000 +v 0.250000 0.000000 -5.250000 +v -0.250000 0.000000 -5.750000 +v 0.250000 0.000000 -5.750000 +v -0.250000 0.125000 -5.750000 +v -0.250000 0.125000 -5.250000 +v 0.250000 0.125000 -5.250000 +v 0.250000 0.125000 -5.750000 +v -0.125000 0.125000 -5.625000 +v -0.125000 0.125000 -5.375000 +v 0.125000 0.125000 -5.375000 +v 0.125000 0.125000 -5.625000 +v -0.125000 1.750000 -5.625000 +v -0.125000 1.750000 -5.375000 +v 0.125000 1.750000 -5.375000 +v 0.125000 1.750000 -5.625000 +v 0.000000 4.500000 -2.500000 +v -0.956709 4.500000 -2.309699 +v -1.767767 4.500000 -1.767767 +v -2.309699 4.500000 -0.956709 +v -2.500000 4.500000 0.000000 +v -2.309699 4.500000 0.956709 +v -1.767767 4.500000 1.767767 +v -0.956709 4.500000 2.309699 +v 0.000000 4.500000 2.500000 +v 0.956708 4.500000 2.309699 +v 1.767767 4.500000 1.767768 +v 2.309699 4.500000 0.956709 +v 2.500000 4.500000 -0.000000 +v 2.309698 4.500000 -0.956709 +v 1.767766 4.500000 -1.767768 +v 0.956707 4.500000 -2.309699 +v 0.000000 5.000000 -2.500000 +v -0.956709 5.000000 -2.309699 +v -1.767767 5.000000 -1.767767 +v -2.309699 5.000000 -0.956709 +v -2.500000 5.000000 0.000000 +v -2.309699 5.000000 0.956709 +v -1.767767 5.000000 1.767767 +v -0.956709 5.000000 2.309699 +v 0.000000 5.000000 2.500000 +v 0.956708 5.000000 2.309699 +v 1.767767 5.000000 1.767768 +v 2.309699 5.000000 0.956709 +v 2.500000 5.000000 -0.000000 +v 2.309698 5.000000 -0.956709 +v 1.767766 5.000000 -1.767768 +v 0.956707 5.000000 -2.309699 +v 1.250000 2.562500 -2.562500 +v 1.250000 2.437500 -2.562500 +v 1.250000 2.562500 -7.437500 +v 1.250000 2.437500 -7.437500 +v 1.125000 2.562500 -7.437500 +v 1.125000 2.562500 -2.562500 +v 1.125000 2.437500 -2.562500 +v 1.125000 2.437500 -7.437500 +v 1.125000 2.437500 -3.437500 +v 1.125000 2.562500 -3.437500 +v 1.125000 2.562500 -2.437500 +v 1.125000 2.437500 -2.437500 +v 1.125000 2.437500 -3.562500 +v 1.125000 2.562500 -3.562500 +v 1.125000 2.437500 -7.562500 +v 1.125000 2.562500 -7.562500 +v 0.937500 2.562500 -2.562500 +v 0.937500 2.437500 -2.562500 +v 1.000000 2.437500 -7.437500 +v 1.000000 2.562500 -7.437500 +v 0.937500 2.562500 -2.437500 +v 0.937500 2.437500 -2.437500 +v 1.000000 2.437500 -7.562500 +v 1.000000 2.562500 -7.562500 +v 0.937500 2.562500 -3.562500 +v 0.937500 2.437500 -3.562500 +v 0.937500 2.562500 -3.437500 +v 0.937500 2.437500 -3.437500 +v 1.125000 2.437500 -4.437500 +v 1.125000 2.562500 -4.437500 +v 1.125000 2.437500 -4.562500 +v 1.125000 2.562500 -4.562500 +v 0.937500 2.562500 -4.562500 +v 0.937500 2.437500 -4.562500 +v 0.937500 2.562500 -4.437500 +v 0.937500 2.437500 -4.437500 +v 1.125000 2.437500 -5.437500 +v 1.125000 2.562500 -5.437500 +v 1.125000 2.437500 -5.562500 +v 1.125000 2.562500 -5.562500 +v 0.937500 2.562500 -5.562500 +v 0.937500 2.437500 -5.562500 +v 0.937500 2.562500 -5.437500 +v 0.937500 2.437500 -5.437500 +v -1.250000 2.437500 -2.562500 +v -1.250000 2.562500 -2.562500 +v -1.250000 2.437500 -7.437500 +v -1.250000 2.562500 -7.437500 +v -1.125000 2.437500 -7.437500 +v -1.125000 2.437500 -2.562500 +v -1.125000 2.562500 -2.562500 +v -1.125000 2.562500 -7.437500 +v -1.125000 2.562500 -3.437500 +v -1.125000 2.437500 -3.437500 +v -1.125000 2.437500 -2.437500 +v -1.125000 2.562500 -2.437500 +v -1.125000 2.562500 -3.562500 +v -1.125000 2.437500 -3.562500 +v -1.125000 2.562500 -7.562500 +v -1.125000 2.437500 -7.562500 +v -0.937500 2.437500 -2.562500 +v -0.937500 2.562500 -2.562500 +v -1.000000 2.562500 -7.437500 +v -1.000000 2.437500 -7.437500 +v -0.937500 2.437500 -2.437500 +v -0.937500 2.562500 -2.437500 +v -1.000000 2.562500 -7.562500 +v -1.000000 2.437500 -7.562500 +v -0.937500 2.437500 -3.562500 +v -0.937500 2.562500 -3.562500 +v -0.937500 2.437500 -3.437500 +v -0.937500 2.562500 -3.437500 +v -1.125000 2.562500 -4.437500 +v -1.125000 2.437500 -4.437500 +v -1.125000 2.562500 -4.562500 +v -1.125000 2.437500 -4.562500 +v -0.937500 2.437500 -4.562500 +v -0.937500 2.562500 -4.562500 +v -0.937500 2.437500 -4.437500 +v -0.937500 2.562500 -4.437500 +v -1.125000 2.562500 -5.437500 +v -1.125000 2.437500 -5.437500 +v -1.125000 2.562500 -5.562500 +v -1.125000 2.437500 -5.562500 +v -0.937500 2.437500 -5.562500 +v -0.937500 2.562500 -5.562500 +v -0.937500 2.437500 -5.437500 +v -0.937500 2.562500 -5.437500 +vt 0.218809 0.299422 +vt 0.037601 0.299422 +vt 0.037602 0.051455 +vt 0.000072 0.561403 +vt 0.128205 0.386064 +vt 0.256338 0.561404 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.298246 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.512821 0.280702 +vt 0.525641 0.298246 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.269231 0.350877 +vt 0.256410 0.333333 +vt 0.512821 0.350877 +vt 0.525641 0.350877 +vt 0.256410 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.298246 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.525641 0.298246 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.512821 0.280702 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.256410 0.350877 +vt 0.256410 0.333333 +vt 0.525641 0.350877 +vt 0.512821 0.350877 +vt 0.256410 0.298246 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.512821 0.298246 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.512821 0.280702 +vt 0.525641 0.298246 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.269231 0.350877 +vt 0.256410 0.333333 +vt 0.512821 0.350877 +vt 0.525641 0.350877 +vt 0.256410 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.525641 0.298246 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.512821 0.280702 +vt 0.512821 0.298246 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.256410 0.350877 +vt 0.256410 0.333333 +vt 0.525641 0.350877 +vt 0.512821 0.350877 +vt 0.256410 0.298246 +vt 0.387590 0.487157 +vt 0.387590 0.635650 +vt 0.279077 0.635650 +vt 0.410064 0.561404 +vt 0.333333 0.666404 +vt 0.256603 0.561404 +vt 0.410509 0.543860 +vt 0.461538 0.474030 +vt 0.512568 0.543860 +vt 0.425455 0.593237 +vt 0.425455 0.494482 +vt 0.497622 0.494482 +vt 0.512821 0.614035 +vt 0.525641 0.578947 +vt 0.525641 0.614035 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.525641 0.578947 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.512821 0.614035 +vt 0.525641 0.614035 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.512821 0.614035 +vt 0.525641 0.578947 +vt 0.525641 0.614035 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.525641 0.578947 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.512821 0.614035 +vt 0.525641 0.614035 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.032051 0.868421 +vt 0.025641 0.846491 +vt 0.032051 0.842105 +vt 0.032051 0.815789 +vt 0.025641 0.837719 +vt 0.025641 0.820175 +vt 0.032051 0.763158 +vt 0.025641 0.785088 +vt 0.025641 0.767544 +vt 0.032051 0.947368 +vt 0.025641 0.925439 +vt 0.032051 0.921053 +vt 0.032051 0.894737 +vt 0.025641 0.872807 +vt 0.025641 0.793860 +vt 0.032051 0.789474 +vt 0.025641 0.741228 +vt 0.032051 0.736842 +vt 0.025641 0.916667 +vt 0.025641 0.899123 +vt 0.333333 0.789452 +vt 0.314118 0.763158 +vt 0.333333 0.736863 +vt 0.717949 0.614035 +vt 0.615385 0.473684 +vt 0.717949 0.473684 +vt 0.615385 0.929825 +vt 0.717949 0.789474 +vt 0.717949 0.929825 +vt 0.512821 0.614035 +vt 0.615385 0.789474 +vt 0.512821 0.859649 +vt 0.820513 0.614035 +vt 0.615385 0.614035 +vt 0.410256 0.859649 +vt 0.410256 0.614035 +vt 0.903846 0.280702 +vt 0.878205 0.315789 +vt 0.878205 0.280702 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.878205 0.324561 +vt 0.903846 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.871795 0.877193 +vt 0.948718 0.771930 +vt 0.948718 0.877193 +vt 0.948718 0.701754 +vt 0.871795 0.771930 +vt 0.871795 0.701754 +vt 0.871795 0.947368 +vt 0.948718 0.947368 +vt 0.820513 0.771930 +vt 0.820513 0.877193 +vt 1.000000 0.877193 +vt 1.000000 0.771930 +vt 0.442308 0.859649 +vt 0.339744 0.894737 +vt 0.339744 0.859649 +vt 0.339744 0.964912 +vt 0.442308 1.000000 +vt 0.339744 1.000000 +vt 0.442308 0.894737 +vt 0.467949 0.894737 +vt 0.442308 0.964912 +vt 0.314103 0.894737 +vt 0.314103 1.000000 +vt 0.339744 0.894737 +vt 0.442308 0.859649 +vt 0.442308 0.894737 +vt 0.442308 1.000000 +vt 0.339744 0.964912 +vt 0.442308 0.964912 +vt 0.314103 0.894737 +vt 0.314103 1.000000 +vt 0.467949 0.894737 +vt 0.541667 0.298246 +vt 0.791667 0.307018 +vt 0.541667 0.307018 +vt 0.791667 0.280702 +vt 0.541667 0.289474 +vt 0.541667 0.280702 +vt 0.791667 0.315789 +vt 0.798077 0.315789 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.791667 0.289474 +vt 0.791667 0.298246 +vt 0.541667 0.315789 +vt 0.798077 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.315789 +vt 0.535256 0.289474 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.798077 0.280702 +vt 0.804487 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.804487 0.315789 +vt 0.798077 0.315789 +vt 0.798077 0.298246 +vt 0.804487 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.804487 0.298246 +vt 0.525641 0.298246 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.903846 0.280702 +vt 0.878205 0.315789 +vt 0.878205 0.280702 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.878205 0.324561 +vt 0.903846 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.218809 0.299422 +vt 0.037601 0.299422 +vt 0.037602 0.051455 +vt 0.000072 0.561403 +vt 0.128205 0.386064 +vt 0.256338 0.561404 +vt 0.541667 0.298246 +vt 0.791667 0.307018 +vt 0.541667 0.307018 +vt 0.791667 0.280702 +vt 0.541667 0.289474 +vt 0.541667 0.280702 +vt 0.791667 0.315789 +vt 0.798077 0.315789 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.791667 0.289474 +vt 0.791667 0.298246 +vt 0.541667 0.315789 +vt 0.798077 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.315789 +vt 0.535256 0.289474 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.798077 0.280702 +vt 0.804487 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.804487 0.315789 +vt 0.798077 0.315789 +vt 0.798077 0.298246 +vt 0.804487 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.804487 0.298246 +vt 0.525641 0.298246 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.541667 0.298246 +vt 0.791667 0.307018 +vt 0.541667 0.307018 +vt 0.791667 0.280702 +vt 0.541667 0.289474 +vt 0.541667 0.280702 +vt 0.791667 0.315789 +vt 0.798077 0.315789 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.791667 0.289474 +vt 0.791667 0.298246 +vt 0.541667 0.315789 +vt 0.798077 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.315789 +vt 0.535256 0.289474 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.798077 0.280702 +vt 0.804487 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.804487 0.315789 +vt 0.798077 0.315789 +vt 0.798077 0.298246 +vt 0.804487 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.804487 0.298246 +vt 0.525641 0.298246 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.218809 0.051455 +vt 0.246584 0.108339 +vt 0.256338 0.175439 +vt 0.246584 0.242538 +vt 0.177239 0.337431 +vt 0.128205 0.350778 +vt 0.079171 0.337431 +vt 0.009826 0.242538 +vt 0.000072 0.175438 +vt 0.009826 0.108339 +vt 0.079171 0.013446 +vt 0.128205 0.000099 +vt 0.177239 0.013446 +vt 0.246584 0.628503 +vt 0.218809 0.685387 +vt 0.177240 0.723396 +vt 0.128205 0.736743 +vt 0.079171 0.723396 +vt 0.037602 0.685387 +vt 0.009826 0.628503 +vt 0.009826 0.494304 +vt 0.037602 0.437420 +vt 0.079171 0.399411 +vt 0.177239 0.399411 +vt 0.218809 0.437420 +vt 0.246585 0.494304 +vt 0.525641 0.280702 +vt 0.256410 0.350877 +vt 0.525641 0.280702 +vt 0.269231 0.350877 +vt 0.525641 0.280702 +vt 0.256410 0.350877 +vt 0.525641 0.280702 +vt 0.269231 0.350877 +vt 0.404223 0.521222 +vt 0.410064 0.561404 +vt 0.404223 0.601585 +vt 0.362697 0.658411 +vt 0.333333 0.666404 +vt 0.303970 0.658411 +vt 0.262443 0.601585 +vt 0.256603 0.561404 +vt 0.262443 0.521222 +vt 0.279077 0.487157 +vt 0.303970 0.464396 +vt 0.333333 0.456403 +vt 0.362697 0.464396 +vt 0.404223 0.601585 +vt 0.387590 0.635650 +vt 0.362697 0.658411 +vt 0.303970 0.658411 +vt 0.279077 0.635650 +vt 0.262443 0.601585 +vt 0.262443 0.521222 +vt 0.279077 0.487157 +vt 0.303970 0.464396 +vt 0.333333 0.456404 +vt 0.362697 0.464396 +vt 0.387590 0.487158 +vt 0.404223 0.521222 +vt 0.508684 0.570583 +vt 0.497622 0.593237 +vt 0.481067 0.608374 +vt 0.461538 0.613690 +vt 0.442010 0.608374 +vt 0.425455 0.593237 +vt 0.414393 0.570582 +vt 0.414393 0.517137 +vt 0.425455 0.494482 +vt 0.442010 0.479345 +vt 0.481067 0.479345 +vt 0.497622 0.494482 +vt 0.508684 0.517137 +vt 0.508684 0.517137 +vt 0.512568 0.543860 +vt 0.508684 0.570583 +vt 0.497622 0.593237 +vt 0.481067 0.608374 +vt 0.461538 0.613690 +vt 0.442010 0.608374 +vt 0.414393 0.570583 +vt 0.410509 0.543860 +vt 0.414393 0.517137 +vt 0.442010 0.479345 +vt 0.461538 0.474030 +vt 0.481067 0.479345 +vt 0.564103 0.508772 +vt 0.564103 0.508772 +vt 0.564103 0.508772 +vt 0.564103 0.508772 +vt 0.025641 0.864035 +vt 0.025641 0.942982 +vt 0.025641 0.890351 +vt 0.025641 0.811404 +vt 0.025641 0.758772 +vt 0.319746 0.781751 +vt 0.319746 0.744565 +vt 0.346920 0.744565 +vt 0.352549 0.763158 +vt 0.346921 0.781751 +vt 0.820513 0.859649 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.467949 1.000000 +vt 0.339744 0.859649 +vt 0.339744 1.000000 +vt 0.467949 1.000000 +vt 0.525641 0.315789 +vt 0.804487 0.280702 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.218809 0.051455 +vt 0.246584 0.108339 +vt 0.256338 0.175439 +vt 0.246584 0.242538 +vt 0.177239 0.337431 +vt 0.128205 0.350778 +vt 0.079171 0.337431 +vt 0.009826 0.242538 +vt 0.000072 0.175438 +vt 0.009826 0.108339 +vt 0.079171 0.013446 +vt 0.128205 0.000099 +vt 0.177239 0.013446 +vt 0.246584 0.628503 +vt 0.218809 0.685387 +vt 0.177240 0.723396 +vt 0.128205 0.736743 +vt 0.079171 0.723396 +vt 0.037602 0.685387 +vt 0.009826 0.628503 +vt 0.009826 0.494304 +vt 0.037602 0.437420 +vt 0.079171 0.399411 +vt 0.177239 0.399411 +vt 0.218809 0.437420 +vt 0.246585 0.494304 +vt 0.525641 0.315789 +vt 0.804487 0.280702 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.804487 0.280702 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.512821 0.350877 +vt 0.461538 0.385965 +vt 0.461538 0.350877 +vt 0.153846 0.350877 +vt 0.102564 0.385965 +vt 0.102564 0.350877 +vt 0.564103 0.350877 +vt 0.512821 0.385965 +vt 0.205128 0.350877 +vt 0.153846 0.385965 +vt 0.666667 0.350877 +vt 0.615385 0.385965 +vt 0.615385 0.350877 +vt 0.564103 0.385965 +vt 0.256410 0.350877 +vt 0.205128 0.385965 +vt 0.717949 0.350877 +vt 0.666667 0.385965 +vt 0.307692 0.350877 +vt 0.256410 0.385965 +vt 0.769231 0.350877 +vt 0.717949 0.385965 +vt 0.358974 0.350877 +vt 0.307692 0.385965 +vt 0.820513 0.350877 +vt 0.769231 0.385965 +vt 0.410256 0.350877 +vt 0.358974 0.385965 +vt 0.051282 0.350877 +vt 0.000000 0.385965 +vt 0.000000 0.350877 +vt 0.410256 0.385965 +vt 0.051282 0.385965 +vt 0.705128 0.000000 +vt 0.660256 0.280702 +vt 0.660256 0.000000 +vt 0.391026 0.000000 +vt 0.346154 0.280702 +vt 0.346154 0.000000 +vt 0.750000 0.000000 +vt 0.705128 0.280702 +vt 0.435897 0.000000 +vt 0.391026 0.280702 +vt 0.839744 -0.000000 +vt 0.794872 0.280702 +vt 0.794872 0.000000 +vt 0.750000 0.280702 +vt 0.480769 0.000000 +vt 0.435897 0.280702 +vt 0.884615 -0.000000 +vt 0.839744 0.280702 +vt 0.525641 0.000000 +vt 0.480769 0.280702 +vt 0.929487 -0.000000 +vt 0.884615 0.280702 +vt 0.570513 0.000000 +vt 0.525641 0.280702 +vt 0.974359 -0.000000 +vt 0.929487 0.280702 +vt 0.615385 0.000000 +vt 0.570513 0.280702 +vt 0.301282 0.000000 +vt 0.256410 0.280702 +vt 0.256410 0.000000 +vt 0.615385 0.280702 +vt 0.301282 0.280702 +vt 0.544872 0.385965 +vt 0.516026 0.456140 +vt 0.516026 0.385965 +vt 0.342949 0.385965 +vt 0.314103 0.456140 +vt 0.314103 0.385965 +vt 0.573718 0.385965 +vt 0.544872 0.456140 +vt 0.371795 0.385965 +vt 0.342949 0.456140 +vt 0.631410 0.385965 +vt 0.602564 0.456140 +vt 0.602564 0.385965 +vt 0.573718 0.456140 +vt 0.400641 0.385965 +vt 0.371795 0.456140 +vt 0.660256 0.385965 +vt 0.631410 0.456140 +vt 0.429487 0.385965 +vt 0.400641 0.456140 +vt 0.689103 0.385965 +vt 0.660256 0.456140 +vt 0.458333 0.385965 +vt 0.429487 0.456140 +vt 0.717949 0.385965 +vt 0.689103 0.456140 +vt 0.487179 0.385965 +vt 0.458333 0.456140 +vt 0.285256 0.385965 +vt 0.256410 0.456140 +vt 0.256410 0.385965 +vt 0.487179 0.456140 +vt 0.285256 0.456140 +vt 0.429487 0.456140 +vt 0.458333 0.385965 +vt 0.458333 0.456140 +vt 0.631410 0.456140 +vt 0.660256 0.385965 +vt 0.660256 0.456140 +vt 0.400641 0.456140 +vt 0.429487 0.385965 +vt 0.602564 0.456140 +vt 0.631410 0.385965 +vt 0.342949 0.456140 +vt 0.371795 0.385965 +vt 0.371795 0.456140 +vt 0.400641 0.385965 +vt 0.573718 0.456140 +vt 0.602564 0.385965 +vt 0.314103 0.456140 +vt 0.342949 0.385965 +vt 0.544872 0.456140 +vt 0.573718 0.385965 +vt 0.285256 0.456140 +vt 0.314103 0.385965 +vt 0.516026 0.456140 +vt 0.544872 0.385965 +vt 0.256410 0.456140 +vt 0.285256 0.385965 +vt 0.487179 0.456140 +vt 0.516026 0.385965 +vt 0.689103 0.456140 +vt 0.717949 0.385965 +vt 0.717949 0.456140 +vt 0.487179 0.385965 +vt 0.689103 0.385965 +vt 0.544872 0.456140 +vt 0.525641 0.473684 +vt 0.525641 0.456140 +vt 0.717949 0.456140 +vt 0.698718 0.473684 +vt 0.698718 0.456140 +vt 0.564103 0.456140 +vt 0.544872 0.473684 +vt 0.429487 0.456140 +vt 0.410256 0.473684 +vt 0.410256 0.456140 +vt 0.583333 0.456140 +vt 0.564103 0.473684 +vt 0.448718 0.456140 +vt 0.429487 0.473684 +vt 0.602564 0.456140 +vt 0.583333 0.473684 +vt 0.467949 0.456140 +vt 0.448718 0.473684 +vt 0.621795 0.456140 +vt 0.602564 0.473684 +vt 0.487179 0.456140 +vt 0.467949 0.473684 +vt 0.660256 0.456140 +vt 0.641026 0.473684 +vt 0.641026 0.456140 +vt 0.621795 0.473684 +vt 0.506410 0.456140 +vt 0.487179 0.473684 +vt 0.679487 0.456140 +vt 0.660256 0.473684 +vt 0.506410 0.473684 +vt 0.679487 0.473684 +vt 0.583333 0.473684 +vt 0.602564 0.456140 +vt 0.602564 0.473684 +vt 0.410256 0.473684 +vt 0.429487 0.456140 +vt 0.429487 0.473684 +vt 0.564103 0.473684 +vt 0.583333 0.456140 +vt 0.698718 0.473684 +vt 0.717949 0.456140 +vt 0.717949 0.473684 +vt 0.544872 0.473684 +vt 0.564103 0.456140 +vt 0.679487 0.473684 +vt 0.698718 0.456140 +vt 0.525641 0.473684 +vt 0.544872 0.456140 +vt 0.660256 0.473684 +vt 0.679487 0.456140 +vt 0.506410 0.473684 +vt 0.525641 0.456140 +vt 0.641026 0.473684 +vt 0.660256 0.456140 +vt 0.467949 0.473684 +vt 0.487179 0.456140 +vt 0.487179 0.473684 +vt 0.506410 0.456140 +vt 0.621795 0.473684 +vt 0.641026 0.456140 +vt 0.448718 0.473684 +vt 0.467949 0.456140 +vt 0.621795 0.456140 +vt 0.448718 0.456140 +vt 0.314103 0.842105 +vt 0.314103 0.815789 +vt 0.314103 0.763158 +vt 0.314103 0.921053 +vt 0.314103 0.868421 +vt 0.314103 0.789474 +vt 0.314103 0.736842 +vt 0.314103 0.894737 +vt 0.000000 0.820175 +vt 0.000000 0.767544 +vt 0.000000 0.925439 +vt 0.000000 0.872807 +vt 0.000000 0.793860 +vt -0.000000 0.741228 +vt 0.000000 0.899123 +vt 0.000000 0.846491 +vt 0.993590 0.451754 +vt 0.974359 0.482456 +vt 0.974359 0.447368 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.993590 0.293860 +vt 0.974359 0.324561 +vt 0.974359 0.289474 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.974359 0.500000 +vt 0.993590 0.530702 +vt 0.974359 0.535088 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.377193 +vt 0.923077 0.324561 +vt 0.942308 0.701754 +vt 0.923077 0.640351 +vt 0.974359 0.447368 +vt 0.993590 0.478070 +vt 0.974359 0.482456 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.974359 0.289474 +vt 0.993590 0.320175 +vt 0.974359 0.324561 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.974359 0.500000 +vt 0.993590 0.530702 +vt 0.974359 0.535088 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.482456 +vt 0.903846 0.451754 +vt 0.923077 0.447368 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.324561 +vt 0.993590 0.451754 +vt 0.974359 0.482456 +vt 0.974359 0.447368 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.993590 0.293860 +vt 0.974359 0.324561 +vt 0.974359 0.289474 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.974359 0.500000 +vt 0.993590 0.530702 +vt 0.974359 0.535088 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.324561 +vt 0.903846 0.293860 +vt 0.923077 0.289474 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.377193 +vt 0.923077 0.482456 +vt 0.974359 0.447368 +vt 0.993590 0.478070 +vt 0.974359 0.482456 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.974359 0.289474 +vt 0.993590 0.320175 +vt 0.974359 0.324561 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.993590 0.504386 +vt 0.974359 0.535088 +vt 0.974359 0.500000 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.640351 +vt 0.903846 0.609649 +vt 0.923077 0.605263 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.324561 +vt 0.923077 0.482456 +vt 0.948718 0.543860 +vt 0.942308 0.491228 +vt 0.948718 0.491228 +vt 0.948718 0.596491 +vt 0.942308 0.543860 +vt 0.948718 0.649123 +vt 0.942308 0.596491 +vt 0.948718 0.701754 +vt 0.942308 0.649123 +vt 0.948718 0.333333 +vt 0.942308 0.280702 +vt 0.948718 0.280702 +vt 0.948718 0.385965 +vt 0.942308 0.333333 +vt 0.948718 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.377193 +vt 0.923077 0.640351 +vt 0.923077 0.482456 +vt 0.512821 0.350877 +vt 0.461538 0.385965 +vt 0.461538 0.350877 +vt 0.153846 0.350877 +vt 0.102564 0.385965 +vt 0.102564 0.350877 +vt 0.564103 0.350877 +vt 0.512821 0.385965 +vt 0.205128 0.350877 +vt 0.153846 0.385965 +vt 0.666667 0.350877 +vt 0.615385 0.385965 +vt 0.615385 0.350877 +vt 0.564103 0.385965 +vt 0.256410 0.350877 +vt 0.205128 0.385965 +vt 0.717949 0.350877 +vt 0.666667 0.385965 +vt 0.307692 0.350877 +vt 0.256410 0.385965 +vt 0.769231 0.350877 +vt 0.717949 0.385965 +vt 0.358974 0.350877 +vt 0.307692 0.385965 +vt 0.820513 0.350877 +vt 0.769231 0.385965 +vt 0.410256 0.350877 +vt 0.358974 0.385965 +vt 0.051282 0.350877 +vt 0.000000 0.385965 +vt 0.000000 0.350877 +vt 0.410256 0.385965 +vt 0.051282 0.385965 +vt 0.820513 0.385965 +vt 0.974359 0.280702 +vt 0.717949 0.456140 +vt 0.256410 0.385965 +vt 0.717949 0.473684 +vt 0.410256 0.456140 +vt 0.314103 0.947368 +vt 0.000000 0.837719 +vt 0.000000 0.785088 +vt 0.000000 0.942982 +vt 0.000000 0.890351 +vt 0.000000 0.811404 +vt 0.000000 0.758772 +vt 0.000000 0.916667 +vt 0.000000 0.864035 +vt 0.993590 0.478070 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.320175 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.504386 +vt 0.903846 0.583333 +vt 0.903846 0.688596 +vt 0.903846 0.425439 +vt 0.923077 0.482456 +vt 0.923077 0.535088 +vt 0.993590 0.451754 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.293860 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.504386 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.923077 0.640351 +vt 0.903846 0.688596 +vt 0.923077 0.377193 +vt 0.903846 0.425439 +vt 0.903846 0.478070 +vt 0.923077 0.535088 +vt 0.993590 0.478070 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.320175 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.504386 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.923077 0.640351 +vt 0.903846 0.688596 +vt 0.903846 0.320175 +vt 0.903846 0.425439 +vt 0.923077 0.535088 +vt 0.993590 0.451754 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.293860 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.530702 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.903846 0.635965 +vt 0.903846 0.688596 +vt 0.923077 0.377193 +vt 0.903846 0.425439 +vt 0.923077 0.535088 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.903846 0.688596 +vt 0.923077 0.324561 +vt 0.903846 0.425439 +vt 0.923077 0.535088 +vt 0.820513 0.385965 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.5000 -0.7071 0.5000 +vn 0.5000 0.7071 0.5000 +vn 0.5000 -0.7071 -0.5000 +vn 0.5000 0.7071 -0.5000 +vn -0.5000 -0.7071 -0.5000 +vn -0.5000 0.7071 -0.5000 +vn -0.5000 -0.7071 0.5000 +vn -0.5000 0.7071 0.5000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.8944 -0.4472 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.9239 0.0000 -0.3827 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn -0.9239 0.0000 0.3827 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.5000 -0.5000 -0.7071 +vn -0.0000 -0.7071 -0.7071 +vn -0.5000 0.5000 -0.7071 +vn 0.5000 0.5000 -0.7071 +vn 0.5000 -0.5000 -0.7071 +vn 0.5000 -0.5000 0.7071 +vn 0.5000 0.5000 0.7071 +vn -0.5000 0.5000 0.7071 +vn -0.5000 -0.5000 0.7071 +vn -0.0000 -0.7071 0.7071 +s off +f 283/348/71 279/349/71 275/350/71 +f 293/351/72 297/352/72 285/353/72 +f 335/354/73 334/355/73 333/356/73 +f 339/357/74 337/358/74 338/359/74 +f 336/360/75 339/357/75 334/355/75 +f 333/361/76 337/358/76 335/362/76 +f 340/363/75 336/360/75 341/364/75 +f 334/355/75 339/357/75 344/365/75 +f 339/357/77 343/366/77 344/367/77 +f 335/362/76 337/358/76 342/368/76 +f 343/366/71 352/369/71 344/367/71 +f 342/370/76 348/371/76 335/372/76 +f 338/359/76 333/361/76 343/373/76 +f 359/374/75 357/375/75 358/376/75 +f 355/377/76 354/378/76 353/379/76 +f 333/380/76 351/381/76 343/366/76 +f 336/382/75 349/383/75 341/384/75 +f 344/367/75 346/385/75 334/386/75 +f 335/387/71 347/388/71 336/382/71 +f 333/389/72 346/385/72 345/390/72 +f 342/370/72 349/383/72 350/391/72 +f 340/363/78 342/370/78 337/358/78 +f 356/392/73 359/374/73 354/378/73 +f 353/393/74 357/375/74 355/394/74 +f 360/395/73 356/392/73 361/396/73 +f 354/378/73 359/374/73 364/397/73 +f 359/374/79 363/398/79 364/399/79 +f 355/394/74 357/375/74 362/400/74 +f 364/399/71 371/401/71 372/402/71 +f 362/403/74 368/404/74 355/405/74 +f 358/376/74 353/393/74 363/406/74 +f 353/407/74 371/401/74 363/398/74 +f 356/408/73 369/409/73 361/410/73 +f 364/399/73 366/411/73 354/412/73 +f 356/408/71 368/413/71 367/414/71 +f 354/412/72 365/415/72 353/416/72 +f 361/410/72 370/417/72 362/403/72 +f 360/395/80 362/403/80 357/375/80 +f 375/418/74 374/419/74 373/420/74 +f 379/421/73 377/422/73 378/423/73 +f 376/424/76 379/421/76 374/419/76 +f 373/425/75 377/422/75 375/426/75 +f 380/427/76 376/424/76 381/428/76 +f 374/419/76 379/421/76 384/429/76 +f 378/423/81 384/430/81 379/421/81 +f 375/426/75 377/422/75 382/431/75 +f 383/432/71 392/433/71 384/430/71 +f 382/434/75 388/435/75 375/436/75 +f 378/423/75 373/425/75 383/437/75 +f 399/438/76 397/439/76 398/440/76 +f 395/441/75 394/442/75 393/443/75 +f 373/444/75 391/445/75 383/432/75 +f 376/446/76 389/447/76 381/448/76 +f 384/430/76 386/449/76 374/450/76 +f 375/451/71 387/452/71 376/446/71 +f 373/453/72 386/449/72 385/454/72 +f 382/434/72 389/447/72 390/455/72 +f 377/422/82 381/448/82 382/434/82 +f 396/456/74 399/438/74 394/442/74 +f 393/457/73 397/439/73 395/458/73 +f 400/459/74 396/456/74 401/460/74 +f 394/442/74 399/438/74 404/461/74 +f 398/440/83 404/462/83 399/438/83 +f 395/458/73 397/439/73 402/463/73 +f 404/462/71 411/464/71 412/465/71 +f 402/466/73 408/467/73 395/468/73 +f 398/440/73 393/457/73 403/469/73 +f 393/470/73 411/464/73 403/471/73 +f 396/472/74 409/473/74 401/474/74 +f 404/462/74 406/475/74 394/476/74 +f 396/472/71 408/477/71 407/478/71 +f 394/476/72 405/479/72 393/480/72 +f 401/474/72 410/481/72 402/466/72 +f 400/459/84 402/466/84 397/439/84 +f 447/482/71 459/483/71 455/484/71 +f 429/485/72 433/486/72 437/487/72 +f 501/488/72 505/489/72 493/490/72 +f 519/491/71 515/492/71 511/493/71 +f 553/494/73 552/495/73 554/496/73 +f 544/497/75 550/498/75 546/499/75 +f 551/500/73 556/501/73 552/495/73 +f 551/500/73 545/502/73 543/503/73 +f 547/504/75 546/499/75 548/505/75 +f 544/497/75 541/506/75 542/507/75 +f 569/508/74 568/509/74 570/510/74 +f 560/511/76 566/512/76 562/513/76 +f 567/514/74 572/515/74 568/509/74 +f 567/514/74 561/516/74 559/517/74 +f 563/518/76 562/513/76 564/519/76 +f 560/511/76 557/520/76 558/521/76 +f 574/522/85 589/523/85 573/524/85 +f 580/525/85 589/526/85 596/527/85 +f 578/528/85 595/529/85 594/530/85 +f 577/531/85 592/532/85 576/533/85 +f 575/534/85 590/535/85 574/522/85 +f 580/525/85 595/536/85 579/537/85 +f 578/528/85 593/538/85 577/539/85 +f 575/534/85 592/540/85 591/541/85 +f 598/542/85 599/543/85 601/544/85 +f 607/545/71 606/546/71 605/547/71 +f 611/548/86 609/549/86 610/550/86 +f 606/551/87 612/552/87 611/553/87 +f 605/554/88 609/549/88 607/545/88 +f 607/545/89 612/552/89 608/555/89 +f 606/551/85 610/556/85 605/557/85 +f 615/558/71 614/559/71 613/560/71 +f 620/561/72 623/562/72 619/563/72 +f 616/564/87 619/563/87 614/559/87 +f 613/565/88 617/566/88 615/567/88 +f 615/568/89 620/569/89 616/570/89 +f 614/571/85 618/572/85 613/573/85 +f 621/574/89 628/575/89 624/576/89 +f 618/577/72 621/578/72 617/566/72 +f 617/579/72 624/576/72 620/569/72 +f 619/580/72 622/581/72 618/572/72 +f 623/582/85 626/583/85 622/581/85 +f 624/584/87 627/585/87 623/562/87 +f 622/586/88 625/587/88 621/578/88 +f 635/588/72 633/589/72 634/590/72 +f 631/591/89 636/592/89 632/593/89 +f 630/594/85 634/590/85 629/595/85 +f 632/596/87 635/588/87 630/597/87 +f 629/598/88 633/589/88 631/599/88 +f 639/600/71 638/601/71 637/602/71 +f 643/603/90 641/604/90 642/605/90 +f 640/606/87 643/603/87 638/601/87 +f 639/607/89 644/608/89 640/606/89 +f 637/609/85 643/603/85 642/610/85 +f 647/611/71 646/612/71 645/613/71 +f 651/614/91 649/615/91 650/616/91 +f 648/617/89 649/615/89 652/618/89 +f 646/619/85 650/616/85 645/613/85 +f 645/613/88 649/615/88 647/611/88 +f 702/620/72 703/621/72 701/622/72 +f 705/623/71 707/624/71 706/625/71 +f 705/626/88 703/621/88 716/627/88 +f 707/628/89 717/629/89 706/630/89 +f 702/620/87 708/631/87 704/632/87 +f 703/621/88 706/633/88 701/622/88 +f 704/632/92 716/634/92 703/621/92 +f 714/635/88 727/636/88 710/637/88 +f 701/622/88 706/633/88 711/638/88 +f 707/624/87 702/620/87 712/639/87 +f 713/640/89 725/641/89 714/642/89 +f 705/643/85 719/644/85 708/645/85 +f 709/646/87 726/647/87 713/640/87 +f 704/632/87 708/631/87 715/648/87 +f 701/622/93 712/649/93 702/620/93 +f 712/649/87 718/650/87 707/628/87 +f 716/634/88 720/651/88 705/652/88 +f 715/653/89 724/654/89 716/634/89 +f 706/655/88 721/656/88 711/657/88 +f 708/645/87 723/658/87 715/653/87 +f 711/657/85 722/659/85 712/649/85 +f 710/637/85 728/660/85 709/646/85 +f 732/661/88 735/662/88 730/663/88 +f 731/664/89 733/665/89 732/666/89 +f 729/667/87 734/668/87 731/664/87 +f 730/663/85 736/669/85 729/667/85 +f 740/670/88 743/671/88 738/672/88 +f 739/673/89 741/674/89 740/675/89 +f 737/676/87 742/677/87 739/673/87 +f 738/672/85 744/678/85 737/676/85 +f 923/679/71 922/680/71 921/681/71 +f 928/682/72 931/683/72 927/684/72 +f 924/685/87 927/684/87 922/680/87 +f 921/686/88 925/687/88 923/688/88 +f 923/689/89 928/690/89 924/691/89 +f 922/692/85 926/693/85 921/694/85 +f 929/695/89 936/696/89 932/697/89 +f 926/698/72 929/699/72 925/687/72 +f 925/700/72 932/697/72 928/690/72 +f 927/701/72 930/702/72 926/693/72 +f 931/703/85 934/704/85 930/702/85 +f 932/705/87 935/706/87 931/683/87 +f 930/707/88 933/708/88 929/699/88 +f 951/709/71 947/710/71 943/711/71 +f 961/712/72 965/713/72 953/714/72 +f 970/715/87 971/716/87 969/717/87 +f 973/718/88 975/719/88 974/720/88 +f 973/721/72 971/716/72 984/722/72 +f 975/723/89 985/724/89 974/725/89 +f 970/715/71 976/726/71 972/727/71 +f 971/716/72 974/728/72 969/717/72 +f 972/727/75 984/729/75 971/716/75 +f 982/730/72 995/731/72 978/732/72 +f 969/717/72 974/728/72 979/733/72 +f 975/719/71 970/715/71 980/734/71 +f 981/735/89 993/736/89 982/737/89 +f 973/738/85 987/739/85 976/740/85 +f 977/741/71 994/742/71 981/735/71 +f 972/727/71 976/726/71 983/743/71 +f 969/717/74 980/744/74 970/715/74 +f 980/744/71 986/745/71 975/723/71 +f 984/729/72 988/746/72 973/747/72 +f 983/748/89 992/749/89 984/729/89 +f 974/750/72 989/751/72 979/752/72 +f 976/740/71 991/753/71 983/748/71 +f 979/752/85 990/754/85 980/744/85 +f 978/732/85 996/755/85 977/741/85 +f 1000/756/72 1003/757/72 998/758/72 +f 999/759/89 1001/760/89 1000/761/89 +f 997/762/71 1002/763/71 999/759/71 +f 998/758/85 1004/764/85 997/762/85 +f 1008/765/72 1011/766/72 1006/767/72 +f 1007/768/89 1009/769/89 1008/770/89 +f 1005/771/71 1010/772/71 1007/768/71 +f 1006/767/85 1012/773/85 1005/771/85 +f 1014/774/88 1015/775/88 1013/776/88 +f 1017/777/87 1019/778/87 1018/779/87 +f 1017/780/71 1015/775/71 1028/781/71 +f 1019/782/89 1029/783/89 1018/784/89 +f 1014/774/72 1020/785/72 1016/786/72 +f 1015/775/71 1018/787/71 1013/776/71 +f 1016/786/73 1028/788/73 1015/775/73 +f 1026/789/71 1039/790/71 1022/791/71 +f 1013/776/71 1018/787/71 1023/792/71 +f 1019/778/72 1014/774/72 1024/793/72 +f 1025/794/89 1037/795/89 1026/796/89 +f 1017/797/85 1031/798/85 1020/799/85 +f 1021/800/72 1038/801/72 1025/794/72 +f 1016/786/72 1020/785/72 1027/802/72 +f 1013/776/76 1024/803/76 1014/774/76 +f 1024/803/72 1030/804/72 1019/782/72 +f 1028/788/71 1032/805/71 1017/806/71 +f 1027/807/89 1036/808/89 1028/788/89 +f 1018/809/71 1033/810/71 1023/811/71 +f 1020/799/72 1035/812/72 1027/807/72 +f 1023/811/85 1034/813/85 1024/803/85 +f 1022/791/85 1040/814/85 1021/800/85 +f 1044/815/71 1047/816/71 1042/817/71 +f 1043/818/89 1045/819/89 1044/820/89 +f 1041/821/72 1046/822/72 1043/818/72 +f 1042/817/85 1048/823/85 1041/821/85 +f 1052/824/71 1055/825/71 1050/826/71 +f 1051/827/89 1053/828/89 1052/829/89 +f 1049/830/72 1054/831/72 1051/827/72 +f 1050/826/85 1056/832/85 1049/830/85 +f 271/833/71 270/834/71 269/835/71 +f 269/835/71 284/836/71 271/833/71 +f 284/836/71 283/348/71 271/833/71 +f 283/348/71 282/837/71 279/349/71 +f 282/837/71 281/838/71 279/349/71 +f 281/838/71 280/839/71 279/349/71 +f 279/349/71 278/840/71 275/350/71 +f 278/840/71 277/841/71 275/350/71 +f 277/841/71 276/842/71 275/350/71 +f 275/350/71 274/843/71 273/844/71 +f 273/844/71 272/845/71 271/833/71 +f 275/350/71 273/844/71 271/833/71 +f 271/833/71 283/348/71 275/350/71 +f 285/353/72 286/846/72 287/847/72 +f 287/847/72 288/848/72 289/849/72 +f 289/849/72 290/850/72 291/851/72 +f 291/851/72 292/852/72 293/351/72 +f 293/351/72 294/853/72 297/352/72 +f 294/853/72 295/854/72 297/352/72 +f 295/854/72 296/855/72 297/352/72 +f 297/352/72 298/856/72 285/353/72 +f 298/856/72 299/857/72 285/353/72 +f 299/857/72 300/858/72 285/353/72 +f 285/353/72 287/847/72 289/849/72 +f 289/849/72 291/851/72 293/351/72 +f 285/353/72 289/849/72 293/351/72 +f 335/354/73 336/360/73 334/355/73 +f 339/357/74 340/363/74 337/358/74 +f 336/360/75 340/363/75 339/357/75 +f 333/361/76 338/359/76 337/358/76 +f 339/357/77 338/359/77 343/366/77 +f 343/366/71 351/381/71 352/369/71 +f 342/370/76 350/391/76 348/371/76 +f 359/374/75 360/395/75 357/375/75 +f 355/377/76 356/392/76 354/378/76 +f 333/380/76 345/859/76 351/381/76 +f 336/382/75 347/388/75 349/383/75 +f 344/367/75 352/369/75 346/385/75 +f 335/387/71 348/860/71 347/388/71 +f 333/389/72 334/386/72 346/385/72 +f 342/370/72 341/384/72 349/383/72 +f 340/363/78 341/384/78 342/370/78 +f 356/392/73 360/395/73 359/374/73 +f 353/393/74 358/376/74 357/375/74 +f 359/374/79 358/376/79 363/398/79 +f 364/399/71 363/398/71 371/401/71 +f 362/403/74 370/417/74 368/404/74 +f 353/407/74 365/861/74 371/401/74 +f 356/408/73 367/414/73 369/409/73 +f 364/399/73 372/402/73 366/411/73 +f 356/408/71 355/862/71 368/413/71 +f 354/412/72 366/411/72 365/415/72 +f 361/410/72 369/409/72 370/417/72 +f 360/395/80 361/410/80 362/403/80 +f 375/418/74 376/424/74 374/419/74 +f 379/421/73 380/427/73 377/422/73 +f 376/424/76 380/427/76 379/421/76 +f 373/425/75 378/423/75 377/422/75 +f 378/423/81 383/432/81 384/430/81 +f 383/432/71 391/445/71 392/433/71 +f 382/434/75 390/455/75 388/435/75 +f 399/438/76 400/459/76 397/439/76 +f 395/441/75 396/456/75 394/442/75 +f 373/444/75 385/863/75 391/445/75 +f 376/446/76 387/452/76 389/447/76 +f 384/430/76 392/433/76 386/449/76 +f 375/451/71 388/864/71 387/452/71 +f 373/453/72 374/450/72 386/449/72 +f 382/434/72 381/448/72 389/447/72 +f 377/422/82 380/427/82 381/448/82 +f 396/456/74 400/459/74 399/438/74 +f 393/457/73 398/440/73 397/439/73 +f 398/440/83 403/471/83 404/462/83 +f 404/462/71 403/471/71 411/464/71 +f 402/466/73 410/481/73 408/467/73 +f 393/470/73 405/865/73 411/464/73 +f 396/472/74 407/478/74 409/473/74 +f 404/462/74 412/465/74 406/475/74 +f 396/472/71 395/866/71 408/477/71 +f 394/476/72 406/475/72 405/479/72 +f 401/474/72 409/473/72 410/481/72 +f 400/459/84 401/474/84 402/466/84 +f 447/482/71 446/867/71 459/483/71 +f 446/867/71 445/868/71 459/483/71 +f 445/868/71 460/869/71 459/483/71 +f 459/483/71 458/870/71 457/871/71 +f 457/871/71 456/872/71 455/484/71 +f 455/484/71 454/873/71 453/874/71 +f 453/874/71 452/875/71 455/484/71 +f 452/875/71 451/876/71 455/484/71 +f 451/876/71 450/877/71 449/878/71 +f 449/878/71 448/879/71 447/482/71 +f 459/483/71 457/871/71 455/484/71 +f 451/876/71 449/878/71 455/484/71 +f 449/878/71 447/482/71 455/484/71 +f 429/485/72 430/880/72 433/486/72 +f 430/880/72 431/881/72 433/486/72 +f 431/881/72 432/882/72 433/486/72 +f 433/486/72 434/883/72 435/884/72 +f 435/884/72 436/885/72 433/486/72 +f 436/885/72 437/487/72 433/486/72 +f 437/487/72 438/886/72 439/887/72 +f 439/887/72 440/888/72 441/889/72 +f 441/889/72 442/890/72 443/891/72 +f 443/891/72 444/892/72 429/485/72 +f 437/487/72 439/887/72 429/485/72 +f 439/887/72 441/889/72 429/485/72 +f 441/889/72 443/891/72 429/485/72 +f 493/490/72 494/893/72 495/894/72 +f 495/894/72 496/895/72 497/896/72 +f 497/896/72 498/897/72 499/898/72 +f 499/898/72 500/899/72 501/488/72 +f 501/488/72 502/900/72 505/489/72 +f 502/900/72 503/901/72 505/489/72 +f 503/901/72 504/902/72 505/489/72 +f 505/489/72 506/903/72 507/904/72 +f 507/904/72 508/905/72 505/489/72 +f 508/905/72 493/490/72 505/489/72 +f 493/490/72 495/894/72 497/896/72 +f 497/896/72 499/898/72 493/490/72 +f 499/898/72 501/488/72 493/490/72 +f 511/493/71 510/906/71 509/907/71 +f 509/907/71 524/908/71 511/493/71 +f 524/908/71 523/909/71 511/493/71 +f 523/909/71 522/910/71 521/911/71 +f 521/911/71 520/912/71 519/491/71 +f 519/491/71 518/913/71 515/492/71 +f 518/913/71 517/914/71 515/492/71 +f 517/914/71 516/915/71 515/492/71 +f 515/492/71 514/916/71 513/917/71 +f 513/917/71 512/918/71 511/493/71 +f 523/909/71 521/911/71 511/493/71 +f 521/911/71 519/491/71 511/493/71 +f 515/492/71 513/917/71 511/493/71 +f 547/504/75 541/506/75 544/497/75 +f 544/497/75 549/919/75 550/498/75 +f 546/499/75 547/504/75 544/497/75 +f 553/494/73 545/502/73 551/500/73 +f 551/500/73 555/920/73 556/501/73 +f 552/495/73 553/494/73 551/500/73 +f 563/518/76 557/520/76 560/511/76 +f 560/511/76 565/921/76 566/512/76 +f 562/513/76 563/518/76 560/511/76 +f 569/508/74 561/516/74 567/514/74 +f 567/514/74 571/922/74 572/515/74 +f 568/509/74 569/508/74 567/514/74 +f 574/522/85 590/923/85 589/523/85 +f 580/525/85 573/524/85 589/526/85 +f 578/528/85 579/537/85 595/529/85 +f 577/531/85 593/924/85 592/532/85 +f 575/534/85 591/925/85 590/535/85 +f 580/525/85 596/926/85 595/536/85 +f 578/528/85 594/927/85 593/538/85 +f 575/534/85 576/533/85 592/540/85 +f 598/542/85 597/928/85 599/543/85 +f 599/543/85 600/929/85 601/544/85 +f 601/544/85 602/930/85 603/931/85 +f 603/931/85 604/932/85 601/544/85 +f 604/932/85 598/542/85 601/544/85 +f 607/545/71 608/555/71 606/546/71 +f 611/548/86 612/552/86 609/549/86 +f 606/551/87 608/555/87 612/552/87 +f 605/554/88 610/933/88 609/549/88 +f 607/545/89 609/549/89 612/552/89 +f 606/551/85 611/553/85 610/556/85 +f 615/558/71 616/564/71 614/559/71 +f 620/561/72 624/584/72 623/562/72 +f 616/564/87 620/561/87 619/563/87 +f 613/565/88 618/577/88 617/566/88 +f 615/568/89 617/579/89 620/569/89 +f 614/571/85 619/580/85 618/572/85 +f 621/574/89 625/934/89 628/575/89 +f 618/577/72 622/586/72 621/578/72 +f 617/579/72 621/574/72 624/576/72 +f 619/580/72 623/582/72 622/581/72 +f 623/582/85 627/935/85 626/583/85 +f 624/584/87 628/936/87 627/585/87 +f 622/586/88 626/937/88 625/587/88 +f 635/588/72 636/592/72 633/589/72 +f 631/591/89 633/589/89 636/592/89 +f 630/594/85 635/588/85 634/590/85 +f 632/596/87 636/592/87 635/588/87 +f 629/598/88 634/590/88 633/589/88 +f 639/600/71 640/606/71 638/601/71 +f 643/603/90 644/608/90 641/604/90 +f 640/606/87 644/608/87 643/603/87 +f 639/607/89 641/938/89 644/608/89 +f 637/609/85 638/601/85 643/603/85 +f 647/611/71 648/939/71 646/612/71 +f 651/614/91 652/940/91 649/615/91 +f 648/617/89 647/611/89 649/615/89 +f 646/619/85 651/941/85 650/616/85 +f 645/613/88 650/616/88 649/615/88 +f 702/620/72 704/632/72 703/621/72 +f 705/623/71 708/631/71 707/624/71 +f 707/628/89 718/650/89 717/629/89 +f 702/620/87 707/624/87 708/631/87 +f 703/621/88 705/626/88 706/633/88 +f 704/632/92 715/653/92 716/634/92 +f 714/635/88 725/942/88 727/636/88 +f 713/640/89 726/647/89 725/641/89 +f 705/643/85 720/943/85 719/644/85 +f 709/646/87 728/660/87 726/647/87 +f 701/622/93 711/657/93 712/649/93 +f 712/649/87 722/659/87 718/650/87 +f 716/634/88 724/654/88 720/651/88 +f 715/653/89 723/658/89 724/654/89 +f 706/655/88 717/944/88 721/656/88 +f 708/645/87 719/644/87 723/658/87 +f 711/657/85 721/656/85 722/659/85 +f 710/637/85 727/636/85 728/660/85 +f 732/661/88 733/945/88 735/662/88 +f 731/664/89 734/668/89 733/665/89 +f 729/667/87 736/669/87 734/668/87 +f 730/663/85 735/662/85 736/669/85 +f 740/670/88 741/946/88 743/671/88 +f 739/673/89 742/677/89 741/674/89 +f 737/676/87 744/678/87 742/677/87 +f 738/672/85 743/671/85 744/678/85 +f 923/679/71 924/685/71 922/680/71 +f 928/682/72 932/705/72 931/683/72 +f 924/685/87 928/682/87 927/684/87 +f 921/686/88 926/698/88 925/687/88 +f 923/689/89 925/700/89 928/690/89 +f 922/692/85 927/701/85 926/693/85 +f 929/695/89 933/947/89 936/696/89 +f 926/698/72 930/707/72 929/699/72 +f 925/700/72 929/695/72 932/697/72 +f 927/701/72 931/703/72 930/702/72 +f 931/703/85 935/948/85 934/704/85 +f 932/705/87 936/949/87 935/706/87 +f 930/707/88 934/950/88 933/708/88 +f 939/951/71 938/952/71 937/953/71 +f 937/953/71 952/954/71 939/951/71 +f 952/954/71 951/709/71 939/951/71 +f 951/709/71 950/955/71 947/710/71 +f 950/955/71 949/956/71 947/710/71 +f 949/956/71 948/957/71 947/710/71 +f 947/710/71 946/958/71 943/711/71 +f 946/958/71 945/959/71 943/711/71 +f 945/959/71 944/960/71 943/711/71 +f 943/711/71 942/961/71 941/962/71 +f 941/962/71 940/963/71 939/951/71 +f 943/711/71 941/962/71 939/951/71 +f 939/951/71 951/709/71 943/711/71 +f 953/714/72 954/964/72 955/965/72 +f 955/965/72 956/966/72 957/967/72 +f 957/967/72 958/968/72 959/969/72 +f 959/969/72 960/970/72 961/712/72 +f 961/712/72 962/971/72 965/713/72 +f 962/971/72 963/972/72 965/713/72 +f 963/972/72 964/973/72 965/713/72 +f 965/713/72 966/974/72 953/714/72 +f 966/974/72 967/975/72 953/714/72 +f 967/975/72 968/976/72 953/714/72 +f 953/714/72 955/965/72 957/967/72 +f 957/967/72 959/969/72 961/712/72 +f 953/714/72 957/967/72 961/712/72 +f 970/715/87 972/727/87 971/716/87 +f 973/718/88 976/726/88 975/719/88 +f 975/723/89 986/745/89 985/724/89 +f 970/715/71 975/719/71 976/726/71 +f 971/716/72 973/721/72 974/728/72 +f 972/727/75 983/748/75 984/729/75 +f 982/730/72 993/977/72 995/731/72 +f 981/735/89 994/742/89 993/736/89 +f 973/738/85 988/978/85 987/739/85 +f 977/741/71 996/755/71 994/742/71 +f 969/717/74 979/752/74 980/744/74 +f 980/744/71 990/754/71 986/745/71 +f 984/729/72 992/749/72 988/746/72 +f 983/748/89 991/753/89 992/749/89 +f 974/750/72 985/979/72 989/751/72 +f 976/740/71 987/739/71 991/753/71 +f 979/752/85 989/751/85 990/754/85 +f 978/732/85 995/731/85 996/755/85 +f 1000/756/72 1001/980/72 1003/757/72 +f 999/759/89 1002/763/89 1001/760/89 +f 997/762/71 1004/764/71 1002/763/71 +f 998/758/85 1003/757/85 1004/764/85 +f 1008/765/72 1009/981/72 1011/766/72 +f 1007/768/89 1010/772/89 1009/769/89 +f 1005/771/71 1012/773/71 1010/772/71 +f 1006/767/85 1011/766/85 1012/773/85 +f 1014/774/88 1016/786/88 1015/775/88 +f 1017/777/87 1020/785/87 1019/778/87 +f 1019/782/89 1030/804/89 1029/783/89 +f 1014/774/72 1019/778/72 1020/785/72 +f 1015/775/71 1017/780/71 1018/787/71 +f 1016/786/73 1027/807/73 1028/788/73 +f 1026/789/71 1037/982/71 1039/790/71 +f 1025/794/89 1038/801/89 1037/795/89 +f 1017/797/85 1032/983/85 1031/798/85 +f 1021/800/72 1040/814/72 1038/801/72 +f 1013/776/76 1023/811/76 1024/803/76 +f 1024/803/72 1034/813/72 1030/804/72 +f 1028/788/71 1036/808/71 1032/805/71 +f 1027/807/89 1035/812/89 1036/808/89 +f 1018/809/71 1029/984/71 1033/810/71 +f 1020/799/72 1031/798/72 1035/812/72 +f 1023/811/85 1033/810/85 1034/813/85 +f 1022/791/85 1039/790/85 1040/814/85 +f 1044/815/71 1045/985/71 1047/816/71 +f 1043/818/89 1046/822/89 1045/819/89 +f 1041/821/72 1048/823/72 1046/822/72 +f 1042/817/85 1047/816/85 1048/823/85 +f 1052/824/71 1053/986/71 1055/825/71 +f 1051/827/89 1054/831/89 1053/828/89 +f 1049/830/72 1056/832/72 1054/831/72 +f 1050/826/85 1055/825/85 1056/832/85 +s 1 +f 283/987/75 298/988/94 282/989/94 +f 276/990/95 291/991/76 275/992/76 +f 284/993/96 299/994/75 283/987/75 +f 277/995/85 292/996/95 276/990/95 +f 270/997/97 285/998/89 269/999/89 +f 269/999/89 300/1000/96 284/993/96 +f 278/1001/98 293/1002/85 277/995/85 +f 271/1003/73 286/1004/97 270/997/97 +f 279/1005/74 294/1006/98 278/1001/98 +f 272/1007/99 287/1008/73 271/1003/73 +f 280/1009/100 295/1010/74 279/1005/74 +f 273/1011/88 288/1012/99 272/1007/99 +f 281/1013/87 296/1014/100 280/1009/100 +f 274/1015/101 289/1016/88 273/1017/88 +f 282/989/94 297/1018/87 281/1013/87 +f 275/992/76 290/1019/101 274/1015/101 +f 315/1020/75 330/1021/94 314/1022/94 +f 308/1023/95 323/1024/76 307/1025/76 +f 316/1026/96 331/1027/75 315/1020/75 +f 309/1028/85 324/1029/95 308/1023/95 +f 302/1030/97 317/1031/89 301/1032/89 +f 301/1032/89 332/1033/96 316/1026/96 +f 310/1034/98 325/1035/85 309/1028/85 +f 303/1036/73 318/1037/97 302/1030/97 +f 311/1038/74 326/1039/98 310/1034/98 +f 304/1040/99 319/1041/73 303/1036/73 +f 312/1042/100 327/1043/74 311/1038/74 +f 305/1044/88 320/1045/99 304/1040/99 +f 313/1046/87 328/1047/100 312/1042/100 +f 306/1048/101 321/1049/88 305/1050/88 +f 314/1022/94 329/1051/87 313/1046/87 +f 307/1025/76 322/1052/101 306/1048/101 +f 427/1053/75 442/1054/94 426/1055/94 +f 420/1056/95 435/1057/76 419/1058/76 +f 428/1059/96 443/1060/75 427/1053/75 +f 421/1061/85 436/1062/95 420/1056/95 +f 414/1063/97 429/1064/89 413/1065/89 +f 413/1065/89 444/1066/96 428/1059/96 +f 422/1067/98 437/1068/85 421/1061/85 +f 415/1069/73 430/1070/97 414/1063/97 +f 423/1071/74 438/1072/98 422/1067/98 +f 416/1073/99 431/1074/73 415/1069/73 +f 424/1075/100 439/1076/74 423/1071/74 +f 417/1077/88 432/1078/99 416/1073/99 +f 425/1079/87 440/1080/100 424/1075/100 +f 418/1081/101 433/1082/88 417/1083/88 +f 426/1055/94 441/1084/87 425/1079/87 +f 419/1058/76 434/1085/101 418/1081/101 +f 459/1086/75 474/1087/94 458/1088/94 +f 452/1089/95 467/1090/76 451/1091/76 +f 460/1092/96 475/1093/75 459/1086/75 +f 453/1094/85 468/1095/95 452/1089/95 +f 446/1096/97 461/1097/89 445/1098/89 +f 445/1098/89 476/1099/96 460/1092/96 +f 454/1100/98 469/1101/85 453/1094/85 +f 447/1102/73 462/1103/97 446/1096/97 +f 455/1104/74 470/1105/98 454/1100/98 +f 448/1106/99 463/1107/73 447/1102/73 +f 456/1108/100 471/1109/74 455/1104/74 +f 449/1110/88 464/1111/99 448/1106/99 +f 457/1112/87 472/1113/100 456/1108/100 +f 450/1114/101 465/1115/88 449/1116/88 +f 458/1088/94 473/1117/87 457/1112/87 +f 451/1091/76 466/1118/101 450/1114/101 +f 488/1119/100 503/1120/74 487/1121/74 +f 481/1122/88 496/1123/99 480/1124/99 +f 489/1125/87 504/1126/100 488/1119/100 +f 482/1127/101 497/1128/88 481/1129/88 +f 490/1130/94 505/1131/87 489/1125/87 +f 483/1132/76 498/1133/101 482/1127/101 +f 491/1134/75 506/1135/94 490/1130/94 +f 484/1136/95 499/1137/76 483/1132/76 +f 492/1138/96 507/1139/75 491/1134/75 +f 485/1140/85 500/1141/95 484/1136/95 +f 478/1142/97 493/1143/89 477/1144/89 +f 477/1144/89 508/1145/96 492/1138/96 +f 486/1146/98 501/1147/85 485/1140/85 +f 479/1148/73 494/1149/97 478/1142/97 +f 487/1121/74 502/1150/98 486/1146/98 +f 480/1124/99 495/1151/73 479/1148/73 +f 520/1152/100 535/1153/74 519/1154/74 +f 513/1155/88 528/1156/99 512/1157/99 +f 521/1158/87 536/1159/100 520/1152/100 +f 514/1160/101 529/1161/88 513/1162/88 +f 522/1163/94 537/1164/87 521/1158/87 +f 515/1165/76 530/1166/101 514/1160/101 +f 523/1167/75 538/1168/94 522/1163/94 +f 516/1169/95 531/1170/76 515/1165/76 +f 524/1171/96 539/1172/75 523/1167/75 +f 517/1173/85 532/1174/95 516/1169/95 +f 510/1175/97 525/1176/89 509/1177/89 +f 509/1177/89 540/1178/96 524/1171/96 +f 518/1179/98 533/1180/85 517/1173/85 +f 511/1181/73 526/1182/97 510/1175/97 +f 519/1154/74 534/1183/98 518/1179/98 +f 512/1157/99 527/1184/73 511/1181/73 +f 581/1185/72 574/522/91 573/524/72 +f 588/1186/90 573/524/72 580/525/90 +f 586/1187/102 579/537/87 578/528/102 +f 584/1188/103 577/531/71 576/533/103 +f 582/1189/91 575/534/88 574/522/91 +f 587/1190/87 580/525/90 579/537/87 +f 585/1191/71 578/528/102 577/539/71 +f 583/1192/88 576/533/103 575/534/88 +f 589/526/72 604/1193/90 596/527/90 +f 595/529/87 602/1194/102 594/530/102 +f 593/924/71 600/1195/103 592/532/103 +f 591/925/88 597/1196/91 590/535/91 +f 596/926/90 603/1197/87 595/536/87 +f 594/927/102 601/1198/71 593/538/71 +f 592/540/103 599/1199/88 591/541/88 +f 590/923/91 598/1200/72 589/523/72 +f 685/1201/104 700/1202/105 693/1203/104 +f 686/1204/73 693/1205/104 694/1206/73 +f 695/1207/106 686/1208/73 694/1209/73 +f 688/1210/92 695/1211/106 696/1212/92 +f 689/1213/107 696/1214/92 697/1215/107 +f 698/1216/75 689/1217/107 697/1218/107 +f 691/1219/108 698/1220/75 699/1221/108 +f 700/1222/105 691/1223/108 699/1224/108 +f 678/1225/91 676/1226/72 677/1227/72 +f 679/1228/88 675/1229/91 678/1225/91 +f 680/1230/103 674/1231/88 679/1228/88 +f 681/1232/71 673/1233/103 680/1230/103 +f 682/1234/102 672/1235/71 681/1236/71 +f 683/1237/87 671/1238/102 682/1234/102 +f 684/1239/90 670/1240/87 683/1237/87 +f 677/1227/72 669/1241/90 684/1239/90 +f 666/1242/74 659/1243/109 667/1244/109 +f 666/1245/74 657/1246/110 658/1247/74 +f 664/1248/93 657/1249/110 665/1250/110 +f 664/1251/93 655/1252/111 656/1253/93 +f 663/1254/111 654/1255/76 655/1256/111 +f 661/1257/112 654/1258/76 662/1259/76 +f 661/1260/112 660/1261/113 653/1262/112 +f 668/1263/113 659/1264/109 660/1265/113 +f 671/1238/109 662/1266/74 663/1254/109 +f 672/1235/113 663/1267/109 664/1251/113 +f 672/1268/113 665/1250/112 673/1233/112 +f 674/1231/76 665/1269/112 666/1245/76 +f 674/1231/76 667/1244/111 675/1229/111 +f 675/1229/111 668/1263/93 676/1226/93 +f 676/1226/93 661/1260/110 669/1241/110 +f 669/1241/110 662/1259/74 670/1240/74 +f 694/1206/75 684/1239/107 683/1237/75 +f 693/1203/107 677/1227/92 684/1239/107 +f 700/1222/92 678/1225/106 677/1227/92 +f 699/1221/106 679/1228/73 678/1225/106 +f 679/1228/73 697/1218/104 680/1230/104 +f 680/1230/104 696/1214/105 681/1232/105 +f 696/1212/105 682/1234/108 681/1236/105 +f 682/1234/108 694/1209/75 683/1237/75 +f 785/1270/104 784/1271/105 792/1272/105 +f 778/1273/73 785/1274/104 786/1275/73 +f 787/1276/106 778/1277/73 786/1278/73 +f 788/1279/92 779/1280/106 787/1281/106 +f 781/1282/107 788/1283/92 789/1284/107 +f 790/1285/75 781/1286/107 789/1287/107 +f 783/1288/108 790/1289/75 791/1290/108 +f 792/1291/105 783/1292/108 791/1293/108 +f 770/1294/91 768/1295/72 769/1296/72 +f 771/1297/88 767/1298/91 770/1294/91 +f 772/1299/103 766/1300/88 771/1297/88 +f 773/1301/71 765/1302/103 772/1299/103 +f 774/1303/102 764/1304/71 773/1305/71 +f 775/1306/87 763/1307/102 774/1303/102 +f 776/1308/90 762/1309/87 775/1306/87 +f 769/1296/72 761/1310/90 776/1308/90 +f 758/1311/74 751/1312/109 759/1313/109 +f 758/1314/74 749/1315/110 750/1316/74 +f 756/1317/93 749/1318/110 757/1319/110 +f 756/1320/93 747/1321/111 748/1322/93 +f 755/1323/111 746/1324/76 747/1325/111 +f 753/1326/112 746/1327/76 754/1328/76 +f 760/1329/113 745/1330/112 753/1331/112 +f 760/1332/113 751/1333/109 752/1334/113 +f 762/1309/74 755/1323/109 763/1307/109 +f 764/1304/113 755/1335/109 756/1320/113 +f 765/1302/112 756/1317/113 757/1319/112 +f 765/1302/112 758/1314/76 766/1300/76 +f 766/1300/76 759/1313/111 767/1298/111 +f 767/1298/111 760/1332/93 768/1295/93 +f 768/1295/93 753/1331/110 761/1310/110 +f 761/1310/110 754/1328/74 762/1309/74 +f 786/1275/75 776/1308/107 775/1306/75 +f 785/1270/107 769/1296/92 776/1308/107 +f 792/1291/92 770/1294/106 769/1296/92 +f 791/1290/106 771/1297/73 770/1294/106 +f 771/1297/73 789/1287/104 772/1299/104 +f 772/1299/104 788/1283/105 773/1301/105 +f 773/1305/105 787/1281/108 774/1303/108 +f 774/1303/108 786/1278/75 775/1306/75 +f 825/1336/104 840/1337/105 833/1338/104 +f 826/1339/73 833/1340/104 834/1341/73 +f 835/1342/106 826/1343/73 834/1344/73 +f 828/1345/92 835/1346/106 836/1347/92 +f 829/1348/107 836/1349/92 837/1350/107 +f 838/1351/75 829/1352/107 837/1353/107 +f 831/1354/108 838/1355/75 839/1356/108 +f 840/1357/105 831/1358/108 839/1359/108 +f 818/1360/91 816/1361/72 817/1362/72 +f 819/1363/88 815/1364/91 818/1360/91 +f 820/1365/103 814/1366/88 819/1363/88 +f 821/1367/71 813/1368/103 820/1365/103 +f 822/1369/102 812/1370/71 821/1371/71 +f 823/1372/87 811/1373/102 822/1369/102 +f 824/1374/90 810/1375/87 823/1372/87 +f 817/1362/72 809/1376/90 824/1374/90 +f 806/1377/74 799/1378/109 807/1379/109 +f 806/1380/74 797/1381/110 798/1382/74 +f 804/1383/93 797/1384/110 805/1385/110 +f 803/1386/111 796/1387/93 804/1388/93 +f 803/1389/111 794/1390/76 795/1391/111 +f 801/1392/112 794/1393/76 802/1394/76 +f 801/1395/112 800/1396/113 793/1397/112 +f 808/1398/113 799/1399/109 800/1400/113 +f 811/1373/109 802/1401/74 803/1389/109 +f 811/1373/109 804/1388/113 812/1370/113 +f 813/1368/112 804/1383/113 805/1385/112 +f 813/1368/112 806/1380/76 814/1366/76 +f 814/1366/76 807/1379/111 815/1364/111 +f 815/1364/111 808/1398/93 816/1361/93 +f 809/1376/110 808/1402/93 801/1395/110 +f 809/1376/110 802/1394/74 810/1375/74 +f 834/1341/75 824/1374/107 823/1372/75 +f 833/1338/107 817/1362/92 824/1374/107 +f 840/1357/92 818/1360/106 817/1362/92 +f 839/1356/106 819/1363/73 818/1360/106 +f 819/1363/73 837/1353/104 820/1365/104 +f 820/1365/104 836/1349/105 821/1367/105 +f 836/1347/105 822/1369/108 821/1371/105 +f 822/1369/108 834/1344/75 823/1372/75 +f 881/1403/104 880/1404/105 888/1405/105 +f 874/1406/73 881/1407/104 882/1408/73 +f 883/1409/106 874/1410/73 882/1411/73 +f 884/1412/92 875/1413/106 883/1414/106 +f 877/1415/107 884/1416/92 885/1417/107 +f 886/1418/75 877/1419/107 885/1420/107 +f 879/1421/108 886/1422/75 887/1423/108 +f 880/1424/105 887/1425/108 888/1426/105 +f 866/1427/91 864/1428/72 865/1429/72 +f 867/1430/88 863/1431/91 866/1427/91 +f 868/1432/103 862/1433/88 867/1430/88 +f 869/1434/71 861/1435/103 868/1432/103 +f 870/1436/102 860/1437/71 869/1438/71 +f 871/1439/87 859/1440/102 870/1436/102 +f 872/1441/90 858/1442/87 871/1439/87 +f 865/1429/72 857/1443/90 872/1441/90 +f 854/1444/74 847/1445/109 855/1446/109 +f 853/1447/110 846/1448/74 854/1449/74 +f 852/1450/93 845/1451/110 853/1452/110 +f 852/1453/93 843/1454/111 844/1455/93 +f 851/1456/111 842/1457/76 843/1458/111 +f 849/1459/112 842/1460/76 850/1461/76 +f 849/1462/112 848/1463/113 841/1464/112 +f 856/1465/113 847/1466/109 848/1467/113 +f 858/1442/74 851/1456/109 859/1440/109 +f 860/1437/113 851/1468/109 852/1453/113 +f 861/1435/112 852/1450/113 853/1452/112 +f 861/1435/112 854/1449/76 862/1433/76 +f 862/1433/76 855/1446/111 863/1431/111 +f 863/1431/111 856/1465/93 864/1428/93 +f 857/1443/110 856/1469/93 849/1462/110 +f 857/1443/110 850/1461/74 858/1442/74 +f 882/1408/75 872/1441/107 871/1439/75 +f 881/1403/107 865/1429/92 872/1441/107 +f 888/1426/92 866/1427/106 865/1429/92 +f 887/1423/106 867/1430/73 866/1427/106 +f 867/1430/73 885/1420/104 868/1432/104 +f 868/1432/104 884/1416/105 869/1434/105 +f 884/1412/105 870/1436/108 869/1438/105 +f 870/1436/108 882/1411/75 871/1439/75 +f 914/1470/91 912/1471/72 913/1472/72 +f 915/1473/88 911/1474/91 914/1470/91 +f 916/1475/103 910/1476/88 915/1473/88 +f 917/1477/71 909/1478/103 916/1475/103 +f 918/1479/102 908/1480/71 917/1481/71 +f 919/1482/87 907/1483/102 918/1479/102 +f 920/1484/90 906/1485/87 919/1482/87 +f 913/1472/72 905/1486/90 920/1484/90 +f 902/1487/74 895/1488/109 903/1489/109 +f 902/1490/74 893/1491/110 894/1492/74 +f 900/1493/93 893/1494/110 901/1495/110 +f 900/1496/93 891/1497/111 892/1498/93 +f 899/1499/111 890/1500/76 891/1501/111 +f 897/1502/112 890/1503/76 898/1504/76 +f 897/1505/112 896/1506/113 889/1507/112 +f 904/1508/113 895/1509/109 896/1510/113 +f 907/1483/109 898/1511/74 899/1499/109 +f 907/1483/109 900/1496/113 908/1480/113 +f 909/1478/112 900/1493/113 901/1495/112 +f 910/1476/76 901/1512/112 902/1490/76 +f 911/1474/111 902/1487/76 903/1489/111 +f 911/1474/111 904/1508/93 912/1471/93 +f 905/1486/110 904/1513/93 897/1505/110 +f 905/1486/110 898/1504/74 906/1485/74 +f 951/1514/75 966/1515/94 950/1516/94 +f 944/1517/95 959/1518/76 943/1519/76 +f 952/1520/96 967/1521/75 951/1514/75 +f 945/1522/85 960/1523/95 944/1517/95 +f 938/1524/97 953/1525/89 937/1526/89 +f 937/1526/89 968/1527/96 952/1520/96 +f 946/1528/98 961/1529/85 945/1522/85 +f 939/1530/73 954/1531/97 938/1524/97 +f 947/1532/74 962/1533/98 946/1528/98 +f 940/1534/99 955/1535/73 939/1530/73 +f 948/1536/100 963/1537/74 947/1532/74 +f 941/1538/88 956/1539/99 940/1534/99 +f 949/1540/87 964/1541/100 948/1536/100 +f 942/1542/101 957/1543/88 941/1544/88 +f 950/1516/94 965/1545/87 949/1540/87 +f 943/1519/76 958/1546/101 942/1542/101 +f 283/987/75 299/994/75 298/988/94 +f 276/990/95 292/996/95 291/991/76 +f 284/993/96 300/1000/96 299/994/75 +f 277/995/85 293/1002/85 292/996/95 +f 270/997/97 286/1004/97 285/998/89 +f 269/999/89 285/998/89 300/1000/96 +f 278/1001/98 294/1006/98 293/1002/85 +f 271/1003/73 287/1008/73 286/1004/97 +f 279/1005/74 295/1010/74 294/1006/98 +f 272/1007/99 288/1012/99 287/1008/73 +f 280/1009/100 296/1014/100 295/1010/74 +f 273/1011/88 289/1547/88 288/1012/99 +f 281/1013/87 297/1018/87 296/1014/100 +f 274/1015/101 290/1019/101 289/1016/88 +f 282/989/94 298/988/94 297/1018/87 +f 275/992/76 291/991/76 290/1019/101 +f 315/1020/75 331/1027/75 330/1021/94 +f 308/1023/95 324/1029/95 323/1024/76 +f 316/1026/96 332/1033/96 331/1027/75 +f 309/1028/85 325/1035/85 324/1029/95 +f 302/1030/97 318/1037/97 317/1031/89 +f 301/1032/89 317/1031/89 332/1033/96 +f 310/1034/98 326/1039/98 325/1035/85 +f 303/1036/73 319/1041/73 318/1037/97 +f 311/1038/74 327/1043/74 326/1039/98 +f 304/1040/99 320/1045/99 319/1041/73 +f 312/1042/100 328/1047/100 327/1043/74 +f 305/1044/88 321/1548/88 320/1045/99 +f 313/1046/87 329/1051/87 328/1047/100 +f 306/1048/101 322/1052/101 321/1049/88 +f 314/1022/94 330/1021/94 329/1051/87 +f 307/1025/76 323/1024/76 322/1052/101 +f 427/1053/75 443/1060/75 442/1054/94 +f 420/1056/95 436/1062/95 435/1057/76 +f 428/1059/96 444/1066/96 443/1060/75 +f 421/1061/85 437/1068/85 436/1062/95 +f 414/1063/97 430/1070/97 429/1064/89 +f 413/1065/89 429/1064/89 444/1066/96 +f 422/1067/98 438/1072/98 437/1068/85 +f 415/1069/73 431/1074/73 430/1070/97 +f 423/1071/74 439/1076/74 438/1072/98 +f 416/1073/99 432/1078/99 431/1074/73 +f 424/1075/100 440/1080/100 439/1076/74 +f 417/1077/88 433/1549/88 432/1078/99 +f 425/1079/87 441/1084/87 440/1080/100 +f 418/1081/101 434/1085/101 433/1082/88 +f 426/1055/94 442/1054/94 441/1084/87 +f 419/1058/76 435/1057/76 434/1085/101 +f 459/1086/75 475/1093/75 474/1087/94 +f 452/1089/95 468/1095/95 467/1090/76 +f 460/1092/96 476/1099/96 475/1093/75 +f 453/1094/85 469/1101/85 468/1095/95 +f 446/1096/97 462/1103/97 461/1097/89 +f 445/1098/89 461/1097/89 476/1099/96 +f 454/1100/98 470/1105/98 469/1101/85 +f 447/1102/73 463/1107/73 462/1103/97 +f 455/1104/74 471/1109/74 470/1105/98 +f 448/1106/99 464/1111/99 463/1107/73 +f 456/1108/100 472/1113/100 471/1109/74 +f 449/1110/88 465/1550/88 464/1111/99 +f 457/1112/87 473/1117/87 472/1113/100 +f 450/1114/101 466/1118/101 465/1115/88 +f 458/1088/94 474/1087/94 473/1117/87 +f 451/1091/76 467/1090/76 466/1118/101 +f 488/1119/100 504/1126/100 503/1120/74 +f 481/1122/88 497/1551/88 496/1123/99 +f 489/1125/87 505/1131/87 504/1126/100 +f 482/1127/101 498/1133/101 497/1128/88 +f 490/1130/94 506/1135/94 505/1131/87 +f 483/1132/76 499/1137/76 498/1133/101 +f 491/1134/75 507/1139/75 506/1135/94 +f 484/1136/95 500/1141/95 499/1137/76 +f 492/1138/96 508/1145/96 507/1139/75 +f 485/1140/85 501/1147/85 500/1141/95 +f 478/1142/97 494/1149/97 493/1143/89 +f 477/1144/89 493/1143/89 508/1145/96 +f 486/1146/98 502/1150/98 501/1147/85 +f 479/1148/73 495/1151/73 494/1149/97 +f 487/1121/74 503/1120/74 502/1150/98 +f 480/1124/99 496/1123/99 495/1151/73 +f 520/1152/100 536/1159/100 535/1153/74 +f 513/1155/88 529/1552/88 528/1156/99 +f 521/1158/87 537/1164/87 536/1159/100 +f 514/1160/101 530/1166/101 529/1161/88 +f 522/1163/94 538/1168/94 537/1164/87 +f 515/1165/76 531/1170/76 530/1166/101 +f 523/1167/75 539/1172/75 538/1168/94 +f 516/1169/95 532/1174/95 531/1170/76 +f 524/1171/96 540/1178/96 539/1172/75 +f 517/1173/85 533/1180/85 532/1174/95 +f 510/1175/97 526/1182/97 525/1176/89 +f 509/1177/89 525/1176/89 540/1178/96 +f 518/1179/98 534/1183/98 533/1180/85 +f 511/1181/73 527/1184/73 526/1182/97 +f 519/1154/74 535/1153/74 534/1183/98 +f 512/1157/99 528/1156/99 527/1184/73 +f 581/1185/72 582/1189/91 574/522/91 +f 588/1186/90 581/1185/72 573/524/72 +f 586/1187/102 587/1190/87 579/537/87 +f 584/1188/103 585/1553/71 577/531/71 +f 582/1189/91 583/1192/88 575/534/88 +f 587/1190/87 588/1186/90 580/525/90 +f 585/1191/71 586/1187/102 578/528/102 +f 583/1192/88 584/1188/103 576/533/103 +f 589/526/72 598/1554/72 604/1193/90 +f 595/529/87 603/1555/87 602/1194/102 +f 593/924/71 601/1556/71 600/1195/103 +f 591/925/88 599/1557/88 597/1196/91 +f 596/926/90 604/1558/90 603/1197/87 +f 594/927/102 602/1559/102 601/1198/71 +f 592/540/103 600/1560/103 599/1199/88 +f 590/923/91 597/1561/91 598/1200/72 +f 685/1201/104 692/1562/105 700/1202/105 +f 686/1204/73 685/1563/104 693/1205/104 +f 695/1207/106 687/1564/106 686/1208/73 +f 688/1210/92 687/1565/106 695/1211/106 +f 689/1213/107 688/1566/92 696/1214/92 +f 698/1216/75 690/1567/75 689/1217/107 +f 691/1219/108 690/1568/75 698/1220/75 +f 700/1222/105 692/1569/105 691/1223/108 +f 678/1225/91 675/1229/91 676/1226/72 +f 679/1228/88 674/1231/88 675/1229/91 +f 680/1230/103 673/1233/103 674/1231/88 +f 681/1232/71 672/1268/71 673/1233/103 +f 682/1234/102 671/1238/102 672/1235/71 +f 683/1237/87 670/1240/87 671/1238/102 +f 684/1239/90 669/1241/90 670/1240/87 +f 677/1227/72 676/1226/72 669/1241/90 +f 666/1242/74 658/1570/74 659/1243/109 +f 666/1245/74 665/1269/110 657/1246/110 +f 664/1248/93 656/1571/93 657/1249/110 +f 664/1251/93 663/1267/111 655/1252/111 +f 663/1254/111 662/1266/76 654/1255/76 +f 661/1257/112 653/1572/112 654/1258/76 +f 661/1260/112 668/1573/113 660/1261/113 +f 668/1263/113 667/1574/109 659/1264/109 +f 671/1238/109 670/1240/74 662/1266/74 +f 672/1235/113 671/1238/109 663/1267/109 +f 672/1268/113 664/1248/113 665/1250/112 +f 674/1231/76 673/1233/112 665/1269/112 +f 674/1231/76 666/1242/76 667/1244/111 +f 675/1229/111 667/1574/111 668/1263/93 +f 676/1226/93 668/1573/93 661/1260/110 +f 669/1241/110 661/1257/110 662/1259/74 +f 694/1206/75 693/1205/107 684/1239/107 +f 693/1203/107 700/1202/92 677/1227/92 +f 700/1222/92 699/1224/106 678/1225/106 +f 699/1221/106 698/1220/73 679/1228/73 +f 679/1228/73 698/1216/73 697/1218/104 +f 680/1230/104 697/1215/104 696/1214/105 +f 696/1212/105 695/1211/108 682/1234/108 +f 682/1234/108 695/1207/108 694/1209/75 +f 785/1270/104 777/1575/104 784/1271/105 +f 778/1273/73 777/1576/104 785/1274/104 +f 787/1276/106 779/1577/106 778/1277/73 +f 788/1279/92 780/1578/92 779/1280/106 +f 781/1282/107 780/1579/92 788/1283/92 +f 790/1285/75 782/1580/75 781/1286/107 +f 783/1288/108 782/1581/75 790/1289/75 +f 792/1291/105 784/1582/105 783/1292/108 +f 770/1294/91 767/1298/91 768/1295/72 +f 771/1297/88 766/1300/88 767/1298/91 +f 772/1299/103 765/1302/103 766/1300/88 +f 773/1301/71 764/1583/71 765/1302/103 +f 774/1303/102 763/1307/102 764/1304/71 +f 775/1306/87 762/1309/87 763/1307/102 +f 776/1308/90 761/1310/90 762/1309/87 +f 769/1296/72 768/1295/72 761/1310/90 +f 758/1311/74 750/1584/74 751/1312/109 +f 758/1314/74 757/1585/110 749/1315/110 +f 756/1317/93 748/1586/93 749/1318/110 +f 756/1320/93 755/1335/111 747/1321/111 +f 755/1323/111 754/1587/76 746/1324/76 +f 753/1326/112 745/1588/112 746/1327/76 +f 760/1329/113 752/1589/113 745/1330/112 +f 760/1332/113 759/1590/109 751/1333/109 +f 762/1309/74 754/1587/74 755/1323/109 +f 764/1304/113 763/1307/109 755/1335/109 +f 765/1302/112 764/1583/113 756/1317/113 +f 765/1302/112 757/1585/112 758/1314/76 +f 766/1300/76 758/1311/76 759/1313/111 +f 767/1298/111 759/1590/111 760/1332/93 +f 768/1295/93 760/1329/93 753/1331/110 +f 761/1310/110 753/1326/110 754/1328/74 +f 786/1275/75 785/1274/107 776/1308/107 +f 785/1270/107 792/1272/92 769/1296/92 +f 792/1291/92 791/1293/106 770/1294/106 +f 791/1290/106 790/1289/73 771/1297/73 +f 771/1297/73 790/1285/73 789/1287/104 +f 772/1299/104 789/1284/104 788/1283/105 +f 773/1305/105 788/1279/105 787/1281/108 +f 774/1303/108 787/1276/108 786/1278/75 +f 825/1336/104 832/1591/105 840/1337/105 +f 826/1339/73 825/1592/104 833/1340/104 +f 835/1342/106 827/1593/106 826/1343/73 +f 828/1345/92 827/1594/106 835/1346/106 +f 829/1348/107 828/1595/92 836/1349/92 +f 838/1351/75 830/1596/75 829/1352/107 +f 831/1354/108 830/1597/75 838/1355/75 +f 840/1357/105 832/1598/105 831/1358/108 +f 818/1360/91 815/1364/91 816/1361/72 +f 819/1363/88 814/1366/88 815/1364/91 +f 820/1365/103 813/1368/103 814/1366/88 +f 821/1367/71 812/1599/71 813/1368/103 +f 822/1369/102 811/1373/102 812/1370/71 +f 823/1372/87 810/1375/87 811/1373/102 +f 824/1374/90 809/1376/90 810/1375/87 +f 817/1362/72 816/1361/72 809/1376/90 +f 806/1377/74 798/1600/74 799/1378/109 +f 806/1380/74 805/1601/110 797/1381/110 +f 804/1383/93 796/1602/93 797/1384/110 +f 803/1386/111 795/1603/111 796/1387/93 +f 803/1389/111 802/1401/76 794/1390/76 +f 801/1392/112 793/1604/112 794/1393/76 +f 801/1395/112 808/1402/113 800/1396/113 +f 808/1398/113 807/1605/109 799/1399/109 +f 811/1373/109 810/1375/74 802/1401/74 +f 811/1373/109 803/1386/109 804/1388/113 +f 813/1368/112 812/1599/113 804/1383/113 +f 813/1368/112 805/1601/112 806/1380/76 +f 814/1366/76 806/1377/76 807/1379/111 +f 815/1364/111 807/1605/111 808/1398/93 +f 809/1376/110 816/1361/93 808/1402/93 +f 809/1376/110 801/1392/110 802/1394/74 +f 834/1341/75 833/1340/107 824/1374/107 +f 833/1338/107 840/1337/92 817/1362/92 +f 840/1357/92 839/1359/106 818/1360/106 +f 839/1356/106 838/1355/73 819/1363/73 +f 819/1363/73 838/1351/73 837/1353/104 +f 820/1365/104 837/1350/104 836/1349/105 +f 836/1347/105 835/1346/108 822/1369/108 +f 822/1369/108 835/1342/108 834/1344/75 +f 881/1403/104 873/1606/104 880/1404/105 +f 874/1406/73 873/1607/104 881/1407/104 +f 883/1409/106 875/1608/106 874/1410/73 +f 884/1412/92 876/1609/92 875/1413/106 +f 877/1415/107 876/1610/92 884/1416/92 +f 886/1418/75 878/1611/75 877/1419/107 +f 879/1421/108 878/1612/75 886/1422/75 +f 880/1424/105 879/1613/108 887/1425/108 +f 866/1427/91 863/1431/91 864/1428/72 +f 867/1430/88 862/1433/88 863/1431/91 +f 868/1432/103 861/1435/103 862/1433/88 +f 869/1434/71 860/1614/71 861/1435/103 +f 870/1436/102 859/1440/102 860/1437/71 +f 871/1439/87 858/1442/87 859/1440/102 +f 872/1441/90 857/1443/90 858/1442/87 +f 865/1429/72 864/1428/72 857/1443/90 +f 854/1444/74 846/1615/74 847/1445/109 +f 853/1447/110 845/1616/110 846/1448/74 +f 852/1450/93 844/1617/93 845/1451/110 +f 852/1453/93 851/1468/111 843/1454/111 +f 851/1456/111 850/1618/76 842/1457/76 +f 849/1459/112 841/1619/112 842/1460/76 +f 849/1462/112 856/1469/113 848/1463/113 +f 856/1465/113 855/1620/109 847/1466/109 +f 858/1442/74 850/1618/74 851/1456/109 +f 860/1437/113 859/1440/109 851/1468/109 +f 861/1435/112 860/1614/113 852/1450/113 +f 861/1435/112 853/1447/112 854/1449/76 +f 862/1433/76 854/1444/76 855/1446/111 +f 863/1431/111 855/1620/111 856/1465/93 +f 857/1443/110 864/1428/93 856/1469/93 +f 857/1443/110 849/1459/110 850/1461/74 +f 882/1408/75 881/1407/107 872/1441/107 +f 881/1403/107 888/1405/92 865/1429/92 +f 888/1426/92 887/1425/106 866/1427/106 +f 887/1423/106 886/1422/73 867/1430/73 +f 867/1430/73 886/1418/73 885/1420/104 +f 868/1432/104 885/1417/104 884/1416/105 +f 884/1412/105 883/1414/108 870/1436/108 +f 870/1436/108 883/1409/108 882/1411/75 +f 914/1470/91 911/1474/91 912/1471/72 +f 915/1473/88 910/1476/88 911/1474/91 +f 916/1475/103 909/1478/103 910/1476/88 +f 917/1477/71 908/1621/71 909/1478/103 +f 918/1479/102 907/1483/102 908/1480/71 +f 919/1482/87 906/1485/87 907/1483/102 +f 920/1484/90 905/1486/90 906/1485/87 +f 913/1472/72 912/1471/72 905/1486/90 +f 902/1487/74 894/1622/74 895/1488/109 +f 902/1490/74 901/1512/110 893/1491/110 +f 900/1493/93 892/1623/93 893/1494/110 +f 900/1496/93 899/1624/111 891/1497/111 +f 899/1499/111 898/1511/76 890/1500/76 +f 897/1502/112 889/1625/112 890/1503/76 +f 897/1505/112 904/1513/113 896/1506/113 +f 904/1508/113 903/1626/109 895/1509/109 +f 907/1483/109 906/1485/74 898/1511/74 +f 907/1483/109 899/1624/109 900/1496/113 +f 909/1478/112 908/1621/113 900/1493/113 +f 910/1476/76 909/1478/112 901/1512/112 +f 911/1474/111 910/1476/76 902/1487/76 +f 911/1474/111 903/1626/111 904/1508/93 +f 905/1486/110 912/1471/93 904/1513/93 +f 905/1486/110 897/1502/110 898/1504/74 +f 951/1514/75 967/1521/75 966/1515/94 +f 944/1517/95 960/1523/95 959/1518/76 +f 952/1520/96 968/1527/96 967/1521/75 +f 945/1522/85 961/1529/85 960/1523/95 +f 938/1524/97 954/1531/97 953/1525/89 +f 937/1526/89 953/1525/89 968/1527/96 +f 946/1528/98 962/1533/98 961/1529/85 +f 939/1530/73 955/1535/73 954/1531/97 +f 947/1532/74 963/1537/74 962/1533/98 +f 940/1534/99 956/1539/99 955/1535/73 +f 948/1536/100 964/1541/100 963/1537/74 +f 941/1538/88 957/1627/88 956/1539/99 +f 949/1540/87 965/1545/87 964/1541/100 +f 942/1542/101 958/1546/101 957/1543/88 +f 950/1516/94 966/1515/94 965/1545/87 +f 943/1519/76 959/1518/76 958/1546/101 diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png new file mode 100644 index 0000000000000000000000000000000000000000..a6a4d174537830640fd06b4a553852c4a2643991 GIT binary patch literal 21545 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 Rp_}MOTI#xL#i~{z{{^P-o(}*3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png b/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png index ac26fc0796689144dd48af558deddc8cb19c1bea..658fb024b1d57bd2e1e39110a54e026912e434fb 100644 GIT binary patch literal 6849 zcma)BXH-*NmktO4F@hi<9i#|`PUuPzX*O!;^`%RVprI2mA|Ta5@1PO_66qpcr9%)A zLMKXx(0d8Y<^9&0S@UZqKhC}P)V=q4&a?MEi80XAxlG4F2LgdE-_zAJ0)Z$Lf%jQj zFi=8v6kh=kDnE^Ta9ZFOLhBR_0&xV~)4T%@$XcBY^<>^pr`f=*T4-2H@~k@ydq8&c z%?01{lT*^#xcw9uhp?q$;r}l`37!|jo7xA&lw>}jcV<%-ZgyhT97|740cS`9UiHyto+_f z`VMO*a3o#f86U|$-4w+QDK^@6%}8@TiX;B+vK!&CA{6H8-D=dEW$9YEkY}|;T{rMU zSBRk_FD_xcX?SCvduVy6Bl+<}Ap*8;G1%;jgKUfK@u*ErCK<6nd{d_(EVv`uAtdha@q_poTCz|t+ z@j@1Hr)9W2h$Ul2x<8?{L2&C5Sdn+Lf;-EsH5tP!h88GjaR>*B?&IhqR6pvvc;xaG zx_i1G;H2g%3{!{6Gi}$RMpdeUf@etNM`w%n8Mc?qShV2K9lD|Gf@OZgf0y(<2fvA)XO z2;`sHEhSwealvAGtn!6$3O(k@Tq_0;8y6Q9sH(R10?78bE9O;0uI{y%PFnFKnJ{{Z zw;QB-<0NNx{r#JYb*GL%?M6Cpw)FGyKXNig3Y>W#;qSetj#?Mt76}iGnA@J9M{J&? z!4&68xA$cAV_ADwyd)boDBC-#=LH7bn8#~+tTUAAgtPAbRrxSW$EE!sXW;quW>O zA$pSjJ@URn6moLt-`4H(mSF$cPR5R_C;E0P_bVZK4_8-LqqPg$rw82NqB^(8dRkMw z%=`(J3krJd6RBZx(Im~~rKXDwr=zzf`iWa!SFBPjz)=sJ53QkZSI27?;7sr>@*Tr2 zdjSQVZJ${fl6|5kB2ybNjxrP1$X5>8_N1#2o4KS`AAZ4qdd(Z$VF^F$E?yOr*@o_t z@4%2=Rs6YwY zG2KCeYmbeT3u~Uv-sdmmo|sCIMP}iEjsYiqq9c_W4&qS8n69i=FVzyKD!(2)X-8}| z_yPR(;V_$%MLRy0&h{%x+QSh2sv0xv8U!xdR|i$`&=Fpq#u;GnoohP~z3iT0q(rv# zSXU_7-*JR7*IC@%K#ApPunJEWAy?laR?~^}C1A!h@*6fXN#nB8Xr>Z+5JfLx8qdQJ ze3j0&!H*G`zWwo6b#)Ki+*|+*jJ^!eGV#~xdC=#eQDJ>~^kY+Jn`t;ee4-W#ZoyDPsETTdIi(Q6w-8~iipF}K! zzZzBC9WG!pDgV@WQ?u|98*j7i&#k)sA~8{l9ljk+Ox2pVj&YyT%8q)G2;E+pd9;(! z9YOwURZikq{m3uy8Si(N>Ts?Cn0p*Q{PMgdh4V(Dt+`?-xp z&fWm}{4u>%rO|PB#k>(qa+W*#F|2-y42Rn$dXe-JZ)o#k*Lj^X=VK#fjvYCbtyZ;vC^2+2hLeBPFFyk;TJNj6{z9f>BFu(CdVXw^Rn z%A>Bmw(i-|xe=e`rEy8n(^59!F0Z^sN_GEebwfBLp&CQw*80(C=AAPtg~vW~MjEV~ zng)BejdC->uo~%B*sL{RI9gYUDwo-~b6zr6^v5E_ajk0)ER)8A*1$DwS;ywY}^ z`xWB^Qi2TAxa2hROjw84O}hR0zs(+{Z!xY%RevS42DF*(SvR`W>-+tjWX)`EdL7hR z5hpyw)83SPNesOm;dJ*jCfBj&Z?w3NR*z09e@%nj^t|S_Lzz1Jqc}FZ_6~VuQDc@u zE3S8;FGMwBqRhX4=O%5R%J5Q;_&T|Z)_Xb_@dUqeNV2MH!8{KAsNcFfP#(wYhZwKq zKRc~J<9K8Nx&}_V5>D;7Y}f(-uOL-PX#%^==9aUk`h4B6hnWB6`vJR>RlcIz5cA+$ zzf$I`A`kuukHsIdA`E+tx(##{TdOY$~UQmKzVKP!l6 zdtoZ6E-14cHC*s!gKcq3RPeKf($QwLbWa0ofO{Nq53OJG&%v)G=gZFd^v~q&2ie=I zQ1JyKiirJH>h+E?rawbbRvSZh9*N&G@ggnhm$WnMQVFv2C{6CVtd`CX*CA({P;H6J zEFtQebL~0=YrVvRNZQEdjcrNfyzB%SzntVe3||z$jy9v#@Nvy7TCFR&jfG!kp1RRj zoJoksEj98mYqfUm@(yOi0O#@KCHv$Ftj4qWcbvTDm%gBS=MPHMR$fy>7CoyLvGqeBOVoDVF5co)?r`mx+>y6q0-t)#G!DLOKzh*4rx6TJ7hJ0tdJ7oA-sC6dzr4r z?Bm@Pas4NYkc68??{0wjpIon5n~51zrFg?{RfwI-|9rd zCy(!o8*)85BVOf?0Yx`hI2Ic?o`NtT_JbehpGQo})cY)b)WWl81;Ue3*ZS>R_Kc{s zT~AZbm|N8pEZ40Vz6LQ+s|2{v%#nmV42#{JXp|c#(^6+hfq=P2=PXToa)w^V8EPQA zhVOLV&KXZQD0Q4Rs^orR@1rq()(m+NFyWB-`w z&c|q%bR_cbo20+d-BB-yODJ^Qg$5{1mj*6T*SqkI_K-HGDwYH`m+$hhth8wp>-MY3 zypnF=B+4*E&my{0|~1@m`St#SOkiO`LB=FJ6vzd7VCdf&T67Qn$7`JV46HQ zct(mQu&XfTg!$*B;<=3r`@@<$)ERNafOn<0YI1rU>#PrULCn(OqAqP&R-YX|n0wcn z?(u+Py8(l80qZ0ie)>+mge6bgLF)lS;#U{!fEe?m`$O5rbE*o^zW`J8O(gg+ZEQD^ zPkhU}iM=Y!0Pj8jqh_lGr~t6{-z8OGGUGC5gxuj+>uXqZEgGgDWc0W&hOvMCE^)yl z7qvVq`JxUrJ$`yv#r&qK%;w{ivAes(K_5A+KjJMlFAS!*6{1HO*5seNUVV0QLVkP? ztCbCp^)S;hP#}18PXymLam~lV($cL?w|GyXpK!@&)@pIxMyEFpvr-mp8%yc`v@ZuG4nB zBG4>L`5V`~WB)Y?vUauOEY+quy3;O2ES}|ED+`(;0i*kG_TaOt4Wtm3N)t=|4Yx#c z9qi!z6kgL!Dn)N1Nad2y*ZQ-+Q)K*lVgc|on|speMy zb_DC>Yy|0n!osBHojRk~xdIDz1s=JPb>F(?s!2(OD-TYS$z+yn0b+Ul@bu%+FLqF^Dd=onM`jC6P^)=#tU&H+N>C2a3G0Q3uSMuge z2YY8o96J{yH7iV!A7pH7oR*Q%ZQ--O*sTLc*@Ja7M5@HCbaZHxm6hX~kB^SJD|}Q7 zz*k|4Od8i)z4|ib+Si5kbHolBOCNo*?Im{l1x*_X2MzCai{jW;{%$IQ@|v4@6K`+n zPK7G&+RO>KO99pn?4GFo9dlUz)ZQKh`ut=@Ti~sz6R%#V*;weICiA8e^z*wYdsh`ciT{aI%-fQwVXyJ|vTRZk#sgK;QbhO5+27Z?ov zm~=g{xB3GhR&VFTTK#&{o5YAj3|?a2ZsX|6d}OHMJ=#dwIX5paEffmX{#D~SXOuB? za(1Vb5G5rEByZQ5Il_4YXJ5xrNcL0%+A0SV%cHh@es6Q`GrZRYutB9-Fh4_(QFK9Q zzDu?1Ap#qUXkcSV02VO^cR&(CO2;To%m01t{t>%L>|{Uh!$_S1^aTVAi5LV2_28Tl z$a7Wy?o~ys?2+}goxf#{^IUwIK0%z1`qjNb3&`6tyCcREK)S9-wuzqc(v4d2C?_@D z;;a3!v6qOtP}HooRNvi%5rp_n5BcKVo24e;HK8nby%P$Qc(!LN7X+;BGAr?kquc+z=LKq>rKi`P?R_%AFmM2OonDYH<@*1HBHie-bG}RKA3kgjJWX9WGVU5(sph zvw(cqvDw-8o57_`zPYzD*dk<>$KoD!=0`#jSU$)`5H1B3DE!!`LgiGRF%I^NA{Hzz}mp^pw;TA+R11LnQR(^VV z%Fzy90CgRrkxNBY+yZdO|GnaPt+RQ6=C6~pGVoo{Fq@*GeVb9Tr5s3kw}Os4{`S=x z(AEIF*l=Qbj*IB6Ef01s;GA{GI-h$i%K!a1hXinrH3JW;A$a=Z0=k5mV#Aw3!NIW^ z{(tXZKR&5HA)7q&Ae6B<=)qe)G-3WA*fQn4zUAMIdKFZ7s1l+!-M@dlPqy`~mvrwV z6798IB>4F^for5xIdml_1O8JJ23d_cUxEdQ?D*-#&Sh)af}%^Z)6&%a{S|K9xbf;p zx;bin;rK8N)zoan|0wo~*Bi$8&S(kmZ-3`$GaL+h{FLx7y| zX8q$obfJx7n^BDx&VDXvLm9;e&AvD8M z>m%HqA)&YTK;bq?uzjs;eRi$|t=*RSzD)L6uEo~Am6^P)ZhG&duTC;ufrjMnHR%To zzAUO-c2YD7svk`O`M^|Y%P_r##i`)+xkJCMr9ph6--lnkI-fpsXX$TB|5ho|&n^3> zMf8zSfBujFG>=*pU=$0siTlFcN>1PfW3jtX+|trx97BY43q*pimwHhwvC?!=iGz&| zV^QZT)c?;#O{J(_Vn{a-we@L|cFz^(TX>qFdEjuAEwYfrZXGW5Maje6y_?n-2?m4R zK~I|AhY9>T1hAajErE74dw-IVkrBt28k(@Yvf@`$YpD}i^83)w{f0xwY7>Tp)zWNA z_G!^`K?u=BeYfSMWE`~*7d3QrEF?s!Ys$Mfs)G3WYo%Hk4eh1Ri*iVrrgxwC61;|h zSmIP#`Iv%I_&iRrmhD=*apb(Ud?ekH?B?tHYl!TMGSqBN?`h0FZ9^R2u8$=2kFRuq z%nE$W}7$W1Gn8TR6#5Lro1iRuqWP9UUK2Ow6sEPYjEk(!4V&;r2>Z&2Mz*wSW$EET^=x z5|;gh%i_cr(E2>C0s^o9t9aR@`t0wIi=dXH-4!pwwaR$ByG;#=ti+u=xrgk~hU@hb zvFc6Xb9)PO$C;ht5QND$2}~MHguD+N0#3DgLIq*&m}|S{CmQ*y6o*hm1&SIF-T1{f^yBa~91Swq*ChwCtemU%!boC2lFt{L8 zUFrEEsovgq_Jw!~Qi2t8yUX%>32VK2X) zq4CZL)dl9;B-={&WBFWi|3WAP3BL!hrO0Qt|GOCZNr>W*2o-Rh{JpgfM%L%uTstX6 z7l%r1dIRq~ZpcQ>ECn7x1?{9zuHdH_6Da_2_KX95mADIN8#{huS{~uph&3$}) zl)2~~iz^-+WY$fL%gM|0bI}*p))LdUVV2u2MRAvd=(0-ugj*jdvi$K z9SjI1yPpJX!!M9~21Z8Gwlgpam7L>`9zFzt059)X!@`csZC_ofMXru<6cI*$)@mNb zTYH<@LDWf^qw%XGJbE#JENg402Aphn50CAmE74ff;NW^kaEFW{;2FUGU6{(e)5Qq^ nenhGzxznfbS~Rxn?1I_5(yYlI$zQ;KQlNWUdYWY#_Rs$dVDPKS literal 2278 zcmbtWYg7{076#NLD>aqO(lRGaNpUJ6%n7pOI*M8t`AR1%)5*fPB7{?2#Kl|w%6 zYxFkg0RVtC9zVMI0sugyrauB+p{Z9-AsL!Ro3!5p57v|m;ILl-0C0han=3vxUoNgq z6+Sl8{ZKTl`?|LQafufrw<0hc{N4?RBKa+}fAK<*uAT^3Zy6CH$?xr$hD{sFa!&Z~ z@Xzwgu!TjS787YerLR@QY2~ra5y*TSTuNF9YX~k#7fNF)2?q(6bNK9(czO^n z0$0mf#WNp>d0?IM&J?Zn?@2diKc9<0p@R9=P{S;m)&nErzJPL-r0H_EGJji?-l06j z(cBnfbsRj(a_UqNZ+ugW7V^PY-{{Te%z7VQguM9mO1i9hW6lb-2wI zk!1^fgW4iqvsXH*;km*rK}}&d7!$%lsa6w-!`k9IDb&IaONlL`Ft4+hPIwfIXY`fM zihZeeywfsik1Z5)xF;n1Nl||U40^;crX5`WXsQhdaiwI3x_I$%)~=L;xAuDTad%5s z6ohW<494#d@O-hd{?mGl!=*-!|62HaZQ-ddjP*_1St{m>^JuX_>Wj#l_sN4~Fmhc{ zR-y6P0c%M>hHsM3E${YV{JM&a)*9czwVAj+-+Y%s+)ze*%*eYq7AQ*3H z|7->5_)4UueF^7QsG!QJ(vdRJR9b$Oz;5JNpULg3Cj^Pb0yV`c29;9#}qb84jqM zd}QR4WU@USdwW~dd-xDm5&!niyr5O~oo?i}fThG8Dn`8Xmj<$Qt^6^GOz)R?cQ zW`)G|Y2NO0-E%kD!>!IxD+z~g`PK-AyLgMil|*+}5QKNcQPQZVKMcW_`g2OL$RS5u zi}la6IB2&=GFb0j^(wN~SV=)s=WHd~W-Qw|BXYACh7kFB&SnZ9H4S8@I733(+ETH7 zO@XGFV@^DUV~H~HC+|di*LCS+oLxUR?Sn!natKV_vW4ga$avVqF?pwuN>}Y>adrfn zLatj@6_9a2u9uEGB)B+wCD0wBfgxVeOD?6C=)rJ}$+Qw%5c5p*@{E>EL`y5w$+(M$mh4V;@Mb9N{B-@+evD4TPKfBiI|KJt z^>or{A~C)fwFgGJO>mU#O=ES*bZ1+IC}&e*S%# zs#zzMC1zDKZ+WD|DRTNIgQJwwxjiL81$)pc;qlcF4Y*1}a!nor@;kW9T#`>5k6Psx zryO5El`hD!()oweyuJm)L-*_`R3Aa%zT2=!o!pEKTC3VM=X*v9O+GN(|K=C_k##Mw zNQWaL)D}u^Pj3LKfYVXK96WrIBmcDOLO!XTWYd!UY`*Qva=9yjT^pNvd zyg1>_jO_SZ`66?Dn0mg2P^JoP-1`Ncu6$EIkTca8H0Nx8o4&mz z^5mZ8%I``uP-r}9LAgUj@R1?Pqn=24@AdRUuUc(yXzkT+rc|XXB-@(vF(sukewf<+^C8_^MQvQD{7YsP@5$kU-3Hq9k O3%~>8 Date: Mon, 13 Nov 2023 16:08:36 +0100 Subject: [PATCH 099/207] more radar crap --- changelog | 3 + src/main/java/api/hbm/entity/RadarEntry.java | 22 +++ .../inventory/recipes/ReformingRecipes.java | 10 ++ src/main/java/com/hbm/packet/BufPacket.java | 56 ++++++++ src/main/java/com/hbm/packet/NBTPacket.java | 2 + .../java/com/hbm/packet/PacketDispatcher.java | 15 +- .../com/hbm/packet/TEAssemblerPacket.java | 62 -------- .../hbm/packet/TERadarDestructorPacket.java | 62 -------- .../hbm/tileentity/IBufPacketReceiver.java | 9 ++ .../hbm/tileentity/TileEntityMachineBase.java | 34 ++--- .../java/com/hbm/tileentity/TileMappings.java | 3 + .../machine/TileEntityMachineRadarNT.java | 133 ++++++++++++++++-- 12 files changed, 250 insertions(+), 161 deletions(-) create mode 100644 src/main/java/com/hbm/packet/BufPacket.java delete mode 100644 src/main/java/com/hbm/packet/TEAssemblerPacket.java delete mode 100644 src/main/java/com/hbm/packet/TERadarDestructorPacket.java create mode 100644 src/main/java/com/hbm/tileentity/IBufPacketReceiver.java diff --git a/changelog b/changelog index 54fd44341..e03539fb7 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +## Changed +* Light oil and cracked light oil can now be refomred into large quantities of aromatic hydrocarbons a well as some reformate gas + ## Fixed * Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer * Fixed custom machine NEI slots going out of bounds after the third slot \ No newline at end of file diff --git a/src/main/java/api/hbm/entity/RadarEntry.java b/src/main/java/api/hbm/entity/RadarEntry.java index 540ec925b..56bb41df4 100644 --- a/src/main/java/api/hbm/entity/RadarEntry.java +++ b/src/main/java/api/hbm/entity/RadarEntry.java @@ -1,5 +1,7 @@ package api.hbm.entity; +import cpw.mods.fml.common.network.ByteBufUtils; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -12,6 +14,8 @@ public class RadarEntry { public int posZ; public int dim; + public RadarEntry() { } //blank ctor for packets + public RadarEntry(String name, int level, int x, int y, int z, int dim) { this.unlocalizedName = name; this.blipLevel = level; @@ -32,4 +36,22 @@ public class RadarEntry { public RadarEntry(EntityPlayer player) { this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension); } + + public void fromBytes(ByteBuf buf) { + this.unlocalizedName = ByteBufUtils.readUTF8String(buf); + this.blipLevel = buf.readShort(); + this.posX = buf.readInt(); + this.posY = buf.readInt(); + this.posZ = buf.readInt(); + this.dim = buf.readShort(); + } + + public void toBytes(ByteBuf buf) { + ByteBufUtils.writeUTF8String(buf, this.unlocalizedName); + buf.writeShort(this.blipLevel); + buf.writeInt(this.posX); + buf.writeInt(this.posY); + buf.writeInt(this.posZ); + buf.writeShort(this.dim); + } } diff --git a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java index 238e5bca9..168fbe902 100644 --- a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java @@ -32,6 +32,16 @@ public class ReformingRecipes extends SerializableRecipe { new FluidStack(Fluids.AROMATICS, 10), new FluidStack(Fluids.HYDROGEN, 5) )); + recipes.put(Fluids.LIGHTOIL, new Triplet( + new FluidStack(Fluids.AROMATICS, 50), + new FluidStack(Fluids.REFORMGAS, 10), + new FluidStack(Fluids.HYDROGEN, 15) + )); + recipes.put(Fluids.LIGHTOIL_CRACK, new Triplet( + new FluidStack(Fluids.AROMATICS, 50), + new FluidStack(Fluids.REFORMGAS, 5), + new FluidStack(Fluids.HYDROGEN, 20) + )); recipes.put(Fluids.PETROLEUM, new Triplet( new FluidStack(Fluids.UNSATURATEDS, 85), new FluidStack(Fluids.REFORMGAS, 10), diff --git a/src/main/java/com/hbm/packet/BufPacket.java b/src/main/java/com/hbm/packet/BufPacket.java new file mode 100644 index 000000000..b2a158ef8 --- /dev/null +++ b/src/main/java/com/hbm/packet/BufPacket.java @@ -0,0 +1,56 @@ +package com.hbm.packet; + +import com.hbm.tileentity.IBufPacketReceiver; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class BufPacket implements IMessage { + + int x; + int y; + int z; + IBufPacketReceiver rec; + ByteBuf buf; + + public BufPacket() { } + + public BufPacket(int x, int y, int z, IBufPacketReceiver rec) { + this.x = x; + this.y = y; + this.z = z; + this.rec = rec; + } + + @Override + public void fromBytes(ByteBuf buf) { + this.buf = buf; + } + + @Override + public void toBytes(ByteBuf buf) { + this.rec.serialize(buf); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(BufPacket m, MessageContext ctx) { + + if(Minecraft.getMinecraft().theWorld == null) + return null; + + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if(te instanceof IBufPacketReceiver) { + ((IBufPacketReceiver) te).deserialize(m.buf); + } + + return null; + } + } +} diff --git a/src/main/java/com/hbm/packet/NBTPacket.java b/src/main/java/com/hbm/packet/NBTPacket.java index 80645347d..3bd5afbcb 100644 --- a/src/main/java/com/hbm/packet/NBTPacket.java +++ b/src/main/java/com/hbm/packet/NBTPacket.java @@ -14,6 +14,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.tileentity.TileEntity; + +@Deprecated // rest in peace sweet little prince public class NBTPacket implements IMessage { PacketBuffer buffer; diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 3d94f2d10..d56e9407a 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -21,8 +21,6 @@ public class PacketDispatcher { wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, i++, Side.CLIENT); //Mining drill torque for sounds wrapper.registerMessage(TEDrillSoundPacket.Handler.class, TEDrillSoundPacket.class, i++, Side.CLIENT); - //Assembler cog rotation for rendering - wrapper.registerMessage(TEAssemblerPacket.Handler.class, TEAssemblerPacket.class, i++, Side.CLIENT); //Missile type for rendering wrapper.registerMessage(TEMissilePacket.Handler.class, TEMissilePacket.class, i++, Side.CLIENT); //Fluid packet for GUI @@ -33,16 +31,12 @@ public class PacketDispatcher { wrapper.registerMessage(ItemFolderPacket.Handler.class, ItemFolderPacket.class, i++, Side.SERVER); //Electricity gauge for GUI rendering wrapper.registerMessage(AuxElectricityPacket.Handler.class, AuxElectricityPacket.class, i++, Side.CLIENT); - //Universal package for machine gauges and states - wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //Siren packet for looped sounds wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); //Signals server to change ItemStacks wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); //Siren packet for looped sounds wrapper.registerMessage(TERadarPacket.Handler.class, TERadarPacket.class, i++, Side.CLIENT); - //Siren packet for looped sounds - wrapper.registerMessage(TERadarDestructorPacket.Handler.class, TERadarDestructorPacket.class, i++, Side.CLIENT); //Signals server to perform orbital strike, among other things wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); //Universal package for sending small info packs back to server @@ -57,7 +51,7 @@ public class PacketDispatcher { wrapper.registerMessage(ExtPropPacket.Handler.class, ExtPropPacket.class, i++, Side.CLIENT); //Entity sound packet that keeps client and server separated wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT); - //Entity sound packet that keeps client and server separated + //Packet for force fields wrapper.registerMessage(TEFFPacket.Handler.class, TEFFPacket.class, i++, Side.CLIENT); //Sends button information for ItemGunBase wrapper.registerMessage(GunButtonPacket.Handler.class, GunButtonPacket.class, i++, Side.SERVER); @@ -67,8 +61,6 @@ public class PacketDispatcher { wrapper.registerMessage(ItemBobmazonPacket.Handler.class, ItemBobmazonPacket.class, i++, Side.SERVER); //Packet to send missile multipart information to TEs wrapper.registerMessage(TEMissileMultipartPacket.Handler.class, TEMissileMultipartPacket.class, i++, Side.CLIENT); - //Packet to send NBT data to tile entities - wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //Aux Particle Packet, New Technology: like the APP but with NBT wrapper.registerMessage(AuxParticlePacketNT.Handler.class, AuxParticlePacketNT.class, i++, Side.CLIENT); //Signals server to do coord based satellite stuff @@ -97,6 +89,11 @@ public class PacketDispatcher { wrapper.registerMessage(PermaSyncPacket.Handler.class, PermaSyncPacket.class, i++, Side.CLIENT); //Syncs biome information for single positions or entire chunks wrapper.registerMessage(BiomeSyncPacket.Handler.class, BiomeSyncPacket.class, i++, Side.CLIENT); + + //Tile sync + wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //The horrid one + wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //The convenient but laggy one + wrapper.registerMessage(BufPacket.Handler.class, BufPacket.class, i++, Side.CLIENT); //The not-so-convenient but not laggy one } } diff --git a/src/main/java/com/hbm/packet/TEAssemblerPacket.java b/src/main/java/com/hbm/packet/TEAssemblerPacket.java deleted file mode 100644 index fddaeedcb..000000000 --- a/src/main/java/com/hbm/packet/TEAssemblerPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineAssembler; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEAssemblerPacket implements IMessage { - - int x; - int y; - int z; - boolean progress; - - public TEAssemblerPacket() - { - - } - - public TEAssemblerPacket(int x, int y, int z, boolean bool) - { - this.x = x; - this.y = y; - this.z = z; - this.progress = bool; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - progress = buf.readBoolean(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeBoolean(progress); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEAssemblerPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineAssembler) { - - TileEntityMachineAssembler gen = (TileEntityMachineAssembler) te; - gen.isProgressing = m.progress; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TERadarDestructorPacket.java b/src/main/java/com/hbm/packet/TERadarDestructorPacket.java deleted file mode 100644 index 4b5a14763..000000000 --- a/src/main/java/com/hbm/packet/TERadarDestructorPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineRadar; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TERadarDestructorPacket implements IMessage { - - int x; - int y; - int z; - - public TERadarDestructorPacket() { - - } - - public TERadarDestructorPacket(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(TERadarDestructorPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - try { - if (te != null && te instanceof TileEntityMachineRadar) { - - TileEntityMachineRadar radar = (TileEntityMachineRadar) te; - radar.nearbyMissiles.clear(); - } - } catch (Exception x) { - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java new file mode 100644 index 000000000..4250d6edd --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java @@ -0,0 +1,9 @@ +package com.hbm.tileentity; + +import io.netty.buffer.ByteBuf; + +public interface IBufPacketReceiver { + + public void serialize(ByteBuf buf); + public void deserialize(ByteBuf buf); +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index 996a216b9..f90a124e2 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -2,10 +2,12 @@ package com.hbm.tileentity; import com.hbm.blocks.ModBlocks; import com.hbm.packet.AuxGaugePacket; +import com.hbm.packet.BufPacket; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -14,7 +16,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver { +public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver, IBufPacketReceiver { public ItemStack slots[]; @@ -147,23 +149,23 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme @Override public abstract void updateEntity(); - @Deprecated - public void updateGauge(int val, int id, int range) { - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + @Deprecated public void updateGauge(int val, int id, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + @Deprecated public void processGauge(int val, int id) { } + + @Deprecated public void networkPack(NBTTagCompound nbt, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + @Deprecated public void networkUnpack(NBTTagCompound nbt) { } + + /** Sends a sync packet that uses ByteBuf for efficient information-cramming */ + public void networkPackNT(int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } - @Deprecated - public void processGauge(int val, int id) { } - - public void networkPack(NBTTagCompound nbt, int range) { - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - - public void networkUnpack(NBTTagCompound nbt) { } + @Override public void serialize(ByteBuf buf) { } + @Override public void deserialize(ByteBuf buf) { } @Deprecated public void handleButtonPacket(int value, int meta) { } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 4e0500c15..2cf953045 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -231,6 +231,9 @@ public class TileMappings { putMachines(); putPile(); putRBMK(); + + TileEntityMachineRadarNT.registerEntityClasses(); + TileEntityMachineRadarNT.registerConverters(); } private static void putBombs() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index db8f40435..e9d80203b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -1,25 +1,33 @@ package com.hbm.tileentity.machine; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.function.Function; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.extprop.HbmLivingProps; +import com.hbm.lib.Library; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Pair; import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.RadarEntry; +import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.WorldServer; /** - * Now with SmЯtâ„¢ lag-free entity detection! + * Now with SmЯtâ„¢ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase { +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IConfigurableMachine { public boolean scanMissiles = true; public boolean scanPlayers = true; @@ -28,6 +36,42 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase { public boolean jammed = false; + public float prevRotation; + public float rotation; + + public long power = 0; + + public static int maxPower = 100_000; + public static int consumption = 500; + public static int radarRange = 1_000; + public static int radarBuffer = 30; + public static int radarAltitude = 55; + + public List entries = new ArrayList(); + + @Override + public String getConfigName() { + return "radar"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower); + consumption = IConfigurableMachine.grab(obj, "L:consumption", consumption); + radarRange = IConfigurableMachine.grab(obj, "I:radarRange", radarRange); + radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer); + radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:powerCap").value(maxPower); + writer.name("L:consumption").value(consumption); + writer.name("I:radarRange").value(radarRange); + writer.name("I:radarBuffer").value(radarBuffer); + writer.name("I:radarAltitude").value(radarAltitude); + } + public TileEntityMachineRadarNT() { super(1); } @@ -40,10 +84,81 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase { @Override public void updateEntity() { + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + this.jammed = false; + allocateTargets(); + + this.networkPackNT(25); + } } - //List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry - //The converters coming first have the highest priority + protected void allocateTargets() { + this.entries.clear(); + + if(this.yCoord < radarAltitude) return; + if(this.power <= consumption) return; + this.power -= consumption; + + int scan = this.scanRange(); + + for(Entity e : matchingEntities) { + + if(e.dimension == worldObj.provider.dimensionId && Math.abs(e.posX - (xCoord + 0.5)) <= scan && Math.abs(e.posZ - (zCoord + 0.5)) <= scan && e.posY - yCoord < radarBuffer) { + + if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { + this.jammed = true; + entries.clear(); + return; + } + + for(Function, RadarEntry> converter : converters) { + + RadarEntry entry = converter.apply(new Pair(e, this)); + if(entry != null) { + this.entries.add(entry); + break; + } + } + } + } + } + + protected int scanRange() { + return radarRange; + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeLong(this.power); + buf.writeBoolean(this.scanMissiles); + buf.writeBoolean(this.scanPlayers); + buf.writeBoolean(this.smartMode); + buf.writeBoolean(this.redMode); + buf.writeBoolean(this.jammed); + buf.writeInt(entries.size()); + for(RadarEntry entry : entries) entry.toBytes(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + this.power = buf.readLong(); + this.scanMissiles = buf.readBoolean(); + this.scanPlayers = buf.readBoolean(); + this.smartMode = buf.readBoolean(); + this.redMode = buf.readBoolean(); + this.jammed = buf.readBoolean(); + int count = buf.readInt(); + for(int i = 0; i < count; i++) { + RadarEntry entry = new RadarEntry(); + entry.fromBytes(buf); + this.entries.add(entry); + } + } + + /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry + The converters coming first have the highest priority */ public static List, RadarEntry>> converters = new ArrayList(); public static List classes = new ArrayList(); public static List matchingEntities = new ArrayList(); @@ -87,18 +202,12 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase { }); //IRadarDetectable, Legacy converters.add(x -> { - Entity e = x.getKey(); - if(e instanceof IRadarDetectable) { - return new RadarEntry((IRadarDetectable) e, e); - } + if(x.getKey() instanceof IRadarDetectable) return new RadarEntry((IRadarDetectable) x.getKey(), x.getKey()); return null; }); //Players converters.add(x -> { - Entity e = x.getKey(); - if(e instanceof EntityPlayer) { - return new RadarEntry((EntityPlayer) e); - } + if(x.getKey() instanceof EntityPlayer) return new RadarEntry((EntityPlayer) x.getKey()); return null; }); } From 15ceba150118509732c072be39ba93e85b25be49 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 14 Nov 2023 15:22:35 +0100 Subject: [PATCH 100/207] even more radar stuff --- .../hbm/inventory/gui/GUIMachineRadarNT.java | 63 ++++++++++++++++++ .../machine/TileEntityCustomMachine.java | 14 ++-- .../machine/TileEntityMachineRadarNT.java | 52 ++++++++++++++- .../hbm/textures/gui/machine/gui_radar_nt.png | Bin 21545 -> 21661 bytes 4 files changed, 120 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java new file mode 100644 index 000000000..3c91249bf --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -0,0 +1,63 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineRadarNT extends GuiScreen { + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_nt.png"); + + protected TileEntityMachineRadarNT radar; + protected int xSize = 216; + protected int ySize = 234; + protected int guiLeft; + protected int guiTop; + + public GUIMachineRadarNT(TileEntityMachineRadarNT tile) { + this.radar = tile; + } + + @Override + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + private void drawGuiContainerForegroundLayer(int x, int y) { + if(checkClick(x, y, -10, 88, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectMissiles")), x, y); + if(checkClick(x, y, -10, 98, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectShells")), x, y); + if(checkClick(x, y, -10, 108, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectPlayers")), x, y); + if(checkClick(x, y, -10, 118, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.smartMode")), x, y); + if(checkClick(x, y, -10, 128, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.redMode")), x, y); + if(checkClick(x, y, -10, 138, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.showMap")), x, y); + } + + private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } + + protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { + return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java index 4803e6e38..9c906623d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java @@ -185,7 +185,7 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF /** Only accepts inputs in a fixed order, saves a ton of performance because there's no permutations to check for */ public CustomMachineRecipe getMatchingRecipe() { - List recipes = CustomMachineRecipes.recipes.get(this.machineType); + List recipes = CustomMachineRecipes.recipes.get(this.config.recipeKey); if(recipes == null || recipes.isEmpty()) return null; outer: @@ -391,11 +391,11 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF for(int i = 0; i < outputTanks.length; i++) outputTanks[i].readFromNBT(nbt, "o" + i); this.matcher.readFromNBT(nbt); - } - - int index = nbt.getInteger("cachedIndex"); - if(index != -1) { - this.cachedRecipe = CustomMachineRecipes.recipes.get(this.machineType).get(index); + + int index = nbt.getInteger("cachedIndex"); + if(index != -1) { + this.cachedRecipe = CustomMachineRecipes.recipes.get(this.config.recipeKey).get(index); + } } } @@ -417,7 +417,7 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF this.matcher.writeToNBT(nbt); if(this.cachedRecipe != null) { - int index = CustomMachineRecipes.recipes.get(this.machineType).indexOf(this.cachedRecipe); + int index = CustomMachineRecipes.recipes.get(this.config.recipeKey).indexOf(this.cachedRecipe); nbt.setInteger("cachedIndex", index); } else { nbt.setInteger("cachedIndex", -1); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index e9d80203b..d5911b2a2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -8,31 +8,41 @@ import java.util.function.Function; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.extprop.HbmLivingProps; +import com.hbm.inventory.gui.GUIMachineRadarNT; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Pair; import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.RadarEntry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; import net.minecraft.world.WorldServer; /** * Now with SmЯtâ„¢ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IConfigurableMachine { - +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine { + public boolean scanMissiles = true; + public boolean scanShells = true; public boolean scanPlayers = true; public boolean smartMode = true; public boolean redMode = true; + public boolean showMap = false; public boolean jammed = false; @@ -133,9 +143,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public void serialize(ByteBuf buf) { buf.writeLong(this.power); buf.writeBoolean(this.scanMissiles); + buf.writeBoolean(this.scanShells); buf.writeBoolean(this.scanPlayers); buf.writeBoolean(this.smartMode); buf.writeBoolean(this.redMode); + buf.writeBoolean(this.showMap); buf.writeBoolean(this.jammed); buf.writeInt(entries.size()); for(RadarEntry entry : entries) entry.toBytes(buf); @@ -145,9 +157,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public void deserialize(ByteBuf buf) { this.power = buf.readLong(); this.scanMissiles = buf.readBoolean(); + this.scanShells = buf.readBoolean(); this.scanPlayers = buf.readBoolean(); this.smartMode = buf.readBoolean(); this.redMode = buf.readBoolean(); + this.showMap = buf.readBoolean(); this.jammed = buf.readBoolean(); int count = buf.readInt(); for(int i = 0; i < count; i++) { @@ -157,6 +171,40 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } } + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineRadarNT(this); + } + /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry The converters coming first have the highest priority */ public static List, RadarEntry>> converters = new ArrayList(); diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png index a6a4d174537830640fd06b4a553852c4a2643991..690e1b5f5fa1706b4b2f8aa6a7daad7435912487 100644 GIT binary patch literal 21661 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 F?0>iMUBUnW literal 21545 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 Rp_}MOTI#xL#i~{z{{^P-o(}*3 From c5f30afab0661a6a0435f5faefcbb2528e21c730 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 14 Nov 2023 18:17:03 -0600 Subject: [PATCH 101/207] first commit on new shit --- .../machine/TileEntityPWRController.java | 42 +++++++++++++++++++ .../machine/rbmk/TileEntityRBMKStorage.java | 37 +--------------- 2 files changed, 43 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 8d1568b2d..952dac8bd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -25,8 +25,12 @@ import com.hbm.util.EnumUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -37,6 +41,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IFluidStandardTransceiver { public FluidTank[] tanks; @@ -502,6 +507,43 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG } } + + public String getComponentName() { + return "ntm_pwr_control"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {coreHeat, hullHeat}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFlux(Context context, Arguments args) { + return new Object[] {flux}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getLevel(Context context, Arguments args) { + return new Object[] {rodTarget}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {coreHeat, hullHeat, flux, rodTarget}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setLevel(Context context, Arguments args) { + rodTarget = MathHelper.clamp_int(args.checkInteger(0), 0, 100); + this.markChanged(); + return new Object[] {true}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerPWR(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java index baa22c2c3..a670b6c09 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -4,21 +4,15 @@ import com.hbm.inventory.container.ContainerRBMKStorage; import com.hbm.inventory.gui.GUIRBMKStorage; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; -import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable, SimpleComponent { +public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable { public TileEntityRBMKStorage() { super(12); @@ -91,35 +85,6 @@ public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements slots[0] = null; } - @Override - public String getComponentName() { - return "rbmk_storage_rod"; - } - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getCoordinates(Context context, Arguments args) { - return new Object[] {xCoord, yCoord, zCoord}; - } - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getHeat(Context context, Arguments args) { - return new Object[] {heat}; - } - - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getStored(Context context, Arguments args) { - return new Object[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11]}; - } - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11], xCoord, yCoord, zCoord}; - } - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKStorage(player.inventory, this); From 17044d558b260e92731ca3f1e5647714b05da57e Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 14 Nov 2023 19:18:43 -0600 Subject: [PATCH 102/207] back at it again with the OC compat Now including: Optimizations Turbine Compat Compat handler for general functions other compat --- .../java/com/hbm/handler/CompatHandler.java | 31 +++++++++++++++ .../tileentity/machine/TileEntityChungus.java | 33 +++++++++++++++- .../machine/TileEntityCoreEmitter.java | 7 +--- .../machine/TileEntityCoreStabilizer.java | 7 +--- .../TileEntityMachineLargeTurbine.java | 39 ++++++++++++++++++- .../machine/TileEntityMachineTurbine.java | 33 +++++++++++++++- .../machine/TileEntityMicrowave.java | 19 ++++++++- .../machine/TileEntityReactorControl.java | 39 +++++-------------- .../machine/TileEntityReactorResearch.java | 8 +--- .../machine/rbmk/TileEntityRBMKBoiler.java | 16 ++------ .../machine/storage/TileEntityBarrel.java | 8 ++-- .../storage/TileEntityMachineBattery.java | 4 +- .../storage/TileEntityMachineFluidTank.java | 8 ++-- 13 files changed, 177 insertions(+), 75 deletions(-) create mode 100644 src/main/java/com/hbm/handler/CompatHandler.java diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java new file mode 100644 index 000000000..07d7fd20a --- /dev/null +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -0,0 +1,31 @@ +package com.hbm.handler; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; + + +/** + * General handler for OpenComputers compatibility. + *

    + * Mostly just functions used across many TEs. + */ +public class CompatHandler { + public static Object[] steamTypeToInt(FluidType type) { + if(type == Fluids.STEAM) {return new Object[] {0};} + else if(type == Fluids.HOTSTEAM) {return new Object[] {1};} + else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};} + return new Object[] {3}; + } + public static FluidType intToSteamType(int arg) { + switch(arg) { + default: + return Fluids.STEAM; + case(1): + return Fluids.HOTSTEAM; + case(2): + return Fluids.SUPERHOTSTEAM; + case(3): + return Fluids.ULTRAHOTSTEAM; + } + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 4a0226d96..e1dcddcf8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.fluid.FluidType; @@ -22,15 +23,20 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver, IFluidStandardTransceiver { +public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent { public long power; public static final long maxPower = 100000000000L; @@ -275,6 +281,31 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc this.power = power; } + @Override + public String getComponentName() { + return "ntm_large_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return CompatHandler.steamTypeToInt(tanks[1].getTankType()); + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setType(Context context, Arguments args) { + tanks[1].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + return new Object[] {true}; + } + + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index f19f9e586..9516a8246 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -315,12 +315,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); - if (newOutput > 100) { - newOutput = 100; - } else if (newOutput < 0) { - newOutput = 0; - } - watts = newOutput; + watts = MathHelper.clamp_int(newOutput, 0, 100); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 74673c332..3d7990286 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -209,12 +209,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); - if (newOutput > 100) { - newOutput = 100; - } else if (newOutput < 0) { - newOutput = 0; - } - watts = newOutput; + watts = MathHelper.clamp_int(newOutput, 0, 100); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 5f37053e9..fc22fe394 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -21,8 +22,13 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -32,7 +38,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 100000000; @@ -280,6 +287,36 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme return new FluidTank[] {tanks[0]}; } + @Override + public String getComponentName() { + return "ntm_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return CompatHandler.steamTypeToInt(tanks[1].getTankType()); + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setType(Context context, Arguments args) { + tanks[1].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + return new Object[] {true}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineLargeTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index eb4d3f731..a2857822a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -22,9 +23,14 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -35,7 +41,8 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider, SimpleComponent { private ItemStack slots[]; @@ -376,6 +383,30 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS return tanks; } + @Override + public String getComponentName() { + return "ntm_small_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return CompatHandler.steamTypeToInt(tanks[1].getTankType()); + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setType(Context context, Arguments args) { + tanks[1].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + return new Object[] {true}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index 6b5846286..5253e4aec 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -7,8 +7,13 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -19,7 +24,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 50000; @@ -209,6 +215,17 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg nbt.setInteger("speed", speed); } + @Override + public String getComponentName() { + return "microwave"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] test(Context context, Arguments args) { + return new Object[] {"This is a testing device for everything OC."}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMicrowave(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 67c70eded..8d55eb799 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -272,36 +272,15 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I @Optional.Method(modid = "OpenComputers") public Object[] setParams(Context context, Arguments args) { //i hate my life int newFunction = args.checkInteger(0); - double newMaxheat = args.checkDouble(1); - double newMinheat = args.checkDouble(2); - double newMaxlevel = args.checkDouble(3)/100.0; - double newMinlevel = args.checkDouble(4)/100.0; - if (newFunction > 2) { //no more out of bounds for you (and yes there's integer values for functions, sue me) - newFunction = 0; - } else if (newFunction < 0) { - newFunction = 0; - } - if (newMaxheat < 0.0) { - newMaxheat = 0.0; - } - if (newMinheat < 0.0) { - newMinheat = 0.0; - } - if (newMaxlevel < 0.0) { - newMaxlevel = 0.0; - } else if (newMaxlevel > 1.0) { - newMaxlevel = 1.0; - } - if (newMinlevel < 0.0) { - newMinlevel = 0.0; - } else if (newMinlevel > 1.0) { - newMinlevel = 1.0; - } - function = RodFunction.values()[newFunction]; - heatUpper = newMaxheat; - heatLower = newMinheat; - levelUpper = newMaxlevel; - levelLower = newMinlevel; + double newMaxHeat = args.checkDouble(1); + double newMinHeat = args.checkDouble(2); + double newMaxLevel = args.checkDouble(3)/100.0; + double newMinLevel = args.checkDouble(4)/100.0; + function = RodFunction.values()[MathHelper.clamp_int(newFunction, 0, 2)]; + heatUpper = MathHelper.clamp_double(newMaxHeat, 0, 9999); + heatLower = MathHelper.clamp_double(newMinHeat, 0, 9999); + levelUpper = MathHelper.clamp_double(newMaxLevel, 0, 1); + levelLower = MathHelper.clamp_double(newMinLevel, 0, 1); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index 3e17bf1e0..89809cf60 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -31,6 +31,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -425,12 +426,7 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; - if (newLevel > 1.0) { - newLevel = 1.0; - } else if (newLevel < 0.0) { - newLevel = 0.0; - } - targetLevel = newLevel; + targetLevel = MathHelper.clamp_double(newLevel, 0, 100.0); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 44baadde9..f025f1114 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -5,6 +5,7 @@ import api.hbm.fluid.IFluidUser; import api.hbm.fluid.IPipeNet; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; @@ -369,25 +370,14 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - FluidType type = steam.getTankType(); - Object type_1; - if(type == Fluids.STEAM) {type_1 = "0";} - else if(type == Fluids.HOTSTEAM) {type_1 = "1";} - else if(type == Fluids.SUPERHOTSTEAM) {type_1 = "2";} - else if(type == Fluids.ULTRAHOTSTEAM) {type_1 = "3";} - else {type_1 = "Unknown Error";} + int type_1 = (int) CompatHandler.steamTypeToInt(steam.getTankType())[0]; return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord}; } @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getSteamType(Context context, Arguments args) { - FluidType type = steam.getTankType(); - if(type == Fluids.STEAM) {return new Object[] {0};} - else if(type == Fluids.HOTSTEAM) {return new Object[] {1};} - else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};} - else if(type == Fluids.ULTRAHOTSTEAM) {return new Object[] {3};} - else {return new Object[] {"Unknown Error"};} + return CompatHandler.steamTypeToInt(steam.getTankType()); } @Callback(direct = true, limit = 16) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 495f38ca6..66ea25fcb 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -393,25 +393,25 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc return "ntm_fluid_tank"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluidStored(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getMaxStored(Context context, Arguments args) { return new Object[] {tank.getMaxFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { return new Object[] {tank.getTankType().getName()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index dc6a60f44..c27670d37 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -420,13 +420,13 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I return "ntm_energy_storage"; //ok if someone else can figure out how to do this that'd be nice (change the component name based on the type of storage block) } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 00486dfda..7e6d91be2 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -473,25 +473,25 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements return "ntm_tank"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluidStored(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getMaxStored(Context context, Arguments args) { return new Object[] {tank.getMaxFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { return new Object[] {tank.getTankType().getName()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; From 2f2f389e90c04c3beefd95ee34e049531a609b55 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 14 Nov 2023 19:41:10 -0600 Subject: [PATCH 103/207] Gas turbine compat!!! --- .../machine/TileEntityMachineTurbineGas.java | 80 ++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index b506f3f6b..efb36937f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -22,18 +22,25 @@ import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 1000000L; @@ -546,6 +553,77 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement return dir != ForgeDirection.DOWN; } + @Override + public String getComponentName() { + return "ntm_gas_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return new Object[] {tanks[0].getTankType().getName()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPower(Context context, Arguments args) { + return new Object[] {power}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getThrottle(Context context, Arguments args) { + return new Object[] {throttle}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getState(Context context, Arguments args) { + return new Object[] {state}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getAuto(Context context, Arguments args) { + return new Object[] {autoMode}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setThrottle(Context context, Arguments args) { + powerSliderPos = MathHelper.clamp_int(args.checkInteger(0) / 100 * 60, 0 , 60); + return new Object[] {true}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setAuto(Context context, Arguments args) { + autoMode = args.checkBoolean(0); + return new Object[] {true}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + + return new Object[] {throttle, state, + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill()}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineTurbineGas(player.inventory, this); From 4451e80db9c5bfea1ab9a64cb12a631d0d0b5a2e Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 14 Nov 2023 21:30:48 -0600 Subject: [PATCH 104/207] Large update to direct calls and limits for pulling values. --- .../hbm/blocks/network/FluidDuctGauge.java | 6 +-- .../machine/TileEntityCoreEmitter.java | 14 +++---- .../machine/TileEntityCoreInjector.java | 6 +-- .../machine/TileEntityCoreReceiver.java | 6 +-- .../machine/TileEntityCoreStabilizer.java | 10 ++--- .../tileentity/machine/TileEntityGeiger.java | 2 +- .../machine/TileEntityMachineRadar.java | 6 +-- .../machine/TileEntityReactorControl.java | 8 ++-- .../machine/TileEntityReactorResearch.java | 12 +++--- .../machine/TileEntityReactorZirnox.java | 16 ++++---- .../machine/rbmk/TileEntityCraneConsole.java | 4 +- .../machine/rbmk/TileEntityRBMKBoiler.java | 40 ++++++------------- .../machine/rbmk/TileEntityRBMKControl.java | 20 ++++------ .../rbmk/TileEntityRBMKControlManual.java | 2 +- .../machine/rbmk/TileEntityRBMKCooler.java | 10 ++--- .../machine/rbmk/TileEntityRBMKHeater.java | 18 ++++----- .../machine/rbmk/TileEntityRBMKOutgasser.java | 12 +++--- .../machine/rbmk/TileEntityRBMKRod.java | 20 +++++----- 18 files changed, 96 insertions(+), 116 deletions(-) diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 8c2106abe..9c17a38c0 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -156,19 +156,19 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL return "ntm_fluid_gauge"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTransfer(Context context, Arguments args) { return new Object[] {deltaTick, deltaSecond}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { return new Object[] {getType().getName()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {deltaTick, deltaSecond, getType().getName(), xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 9516a8246..92a83d81b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -274,44 +274,44 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return "dfc_emitter"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower(), tank.getFill(), watts, isOn}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isActive(Context context, Arguments args) { return new Object[] {isOn}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { isOn = args.checkBoolean(0); return new Object[] {}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index bd2366acc..b0fb0c484 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -199,19 +199,19 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl return "dfc_injector"; } - @Callback(direct = true, limit = 2) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFuel(Context context, Arguments args) { return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTypes(Context context, Arguments args) { return new Object[] {tanks[0].getTankType().getName(), tanks[1].getTankType().getName()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {tanks[0].getFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getTankType().getName()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index 4a9adbebc..c3fbf28d6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -191,19 +191,19 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn return "dfc_receiver"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {joules, getPower()}; //literally only doing this for the consistency between components } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {joules, getPower(), tank.getFill()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 3d7990286..6e6413032 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -172,19 +172,19 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return "dfc_stabilizer"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDurability(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() == ModItems.ams_lens && ItemLens.getLensDamage(slots[0]) < ((ItemLens)ModItems.ams_lens).maxDamage) { @@ -193,7 +193,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object lens_damage_buf; @@ -205,7 +205,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {power, maxPower, watts, lens_damage_buf}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java index ac7bddef0..4c43bf5fc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -68,7 +68,7 @@ public class TileEntityGeiger extends TileEntity implements SimpleComponent { return "ntm_geiger"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getRads(Context context, Arguments args) { return new Object[] {check()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java index e543f4fd5..805e7c35c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java @@ -289,19 +289,19 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn return "ntm_radar"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isJammed(Context context, Arguments args) { return new Object[] {jammed}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEntities(Context context, Arguments args) { //fuck fuck fuck if(!jammed) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 8d55eb799..63ea4818e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -256,19 +256,19 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I return "reactor_control"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isLinked(Context context, Arguments args) { return new Object[] {isLinked}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getReactor(Context context, Arguments args) { return new Object[] {getDisplayData()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setParams(Context context, Arguments args) { //i hate my life int newFunction = args.checkInteger(0); @@ -284,7 +284,7 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I return new Object[] {}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getParams(Context context, Arguments args) { return new Object[] {function.ordinal(), heatUpper, heatLower, levelUpper, levelLower}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index 89809cf60..29d3d4266 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -392,37 +392,37 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements return "research_reactor"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTemp(Context context, Arguments args) { // or getHeat, whatever. return new Object[] {heat}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { return new Object[] {level * 100}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { return new Object[] {targetLevel}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFlux(Context context, Arguments args) { return new Object[] {totalFlux}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, level, targetLevel, totalFlux}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index c605f96d6..43536fedb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -545,49 +545,49 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF return "zirnox_reactor"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTemp(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getPressure(Context context, Arguments args) { return new Object[] {pressure}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getWater(Context context, Arguments args) { return new Object[] {water.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCarbonDioxide(Context context, Arguments args) { return new Object[] {carbonDioxide.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isActive(Context context, Arguments args) { return new Object[] {isOn}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, pressure, water.getFill(), steam.getFill(), carbonDioxide.getFill(), isOn}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { isOn = args.checkBoolean(0); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index f6e81933f..75097cd48 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -378,7 +378,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"Crane not found"}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { @@ -387,7 +387,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index f025f1114..dba203483 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -332,76 +332,60 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I public String getComponentName() { return "rbmk_boiler"; } - - @Callback(direct = true, limit = 16) + + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteamMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getWater(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getWaterMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { int type_1 = (int) CompatHandler.steamTypeToInt(steam.getTankType())[0]; return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteamType(Context context, Arguments args) { return CompatHandler.steamTypeToInt(steam.getTankType()); } - @Callback(direct = true, limit = 16) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setSteamType(Context context, Arguments args) { int type = args.checkInteger(0); - if(type > 3) { - type = 3; - } else if(type < 0) { - type = 0; - } - if(type == 0) { - steam.setTankType(Fluids.STEAM); - return new Object[] {true}; - } else if(type == 1) { - steam.setTankType(Fluids.HOTSTEAM); - return new Object[] {true}; - } else if(type == 2) { - steam.setTankType(Fluids.SUPERHOTSTEAM); - return new Object[] {true}; - } else { - steam.setTankType(Fluids.ULTRAHOTSTEAM); - return new Object[] {true}; - } + steam.setTankType(CompatHandler.intToSteamType(type)); + return new Object[] {true}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index 945638b7e..076e5afc6 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -9,6 +9,7 @@ import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent { @@ -126,46 +127,41 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im return "rbmk_control_rod"; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { return new Object[] {getMult() * 100}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { return new Object[] {targetLevel * 100}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, getMult() * 100, targetLevel * 100, xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; - if (newLevel > 1.0) { - newLevel = 1.0; - } else if (newLevel < 0.0) { - newLevel = 0.0; - } - targetLevel = newLevel; + targetLevel = MathHelper.clamp_double(newLevel, 0, 1); return new Object[] {}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index f22e00b47..1afb0cc8d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -133,7 +133,7 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement return data; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getColor(Context context, Arguments args) { return new Object[] {this.color}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index 8c15cd8d7..715eba42f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -149,31 +149,31 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc return "rbmk_cooler"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[]{heat}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryo(Context context, Arguments args) { return new Object[]{tank.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryoMax(Context context, Arguments args) { return new Object[]{tank.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[]{heat, tank.getFill(), tank.getMaxFill(), xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index e9699b87f..38436e799 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -280,54 +280,54 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I return "rbmk_heater"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFill(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFillMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getExport(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getExportMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFillType(Context context, Arguments args) { return new Object[] {feed.getTankType().getName()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getExportType(Context context, Arguments args) { return new Object[] {steam.getTankType().getName()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getName(), steam.getTankType().getName(), xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index 8dbaa6360..1b74e6e92 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -226,37 +226,37 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return "rbmk_outgasser"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGas(Context context, Arguments args) { return new Object[] {gas.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGasMax(Context context, Arguments args) { return new Object[] {gas.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGasType(Context context, Arguments args) { return new Object[] {gas.getTankType().getID()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getProgress(Context context, Arguments args) { return new Object[] {progress}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 2a432b5d7..d22b5ae13 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -389,25 +389,25 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return "rbmk_fuel_rod"; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluxSlow(Context context, Arguments args) { return new Object[] {fluxSlow}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluxFast(Context context, Arguments args) { return new Object[] {fluxFast}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -416,7 +416,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -425,7 +425,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoreHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -434,7 +434,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSkinHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -443,7 +443,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object OC_enrich_buf; @@ -464,13 +464,13 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {heat, OC_hull_buf, OC_core_buf, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getModerated(Context context, Arguments args) { return new Object[] {((RBMKRod)this.getBlockType()).moderated}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; From fb176ef6338badea2f90b85c7daeaf01b99b9b33 Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Sun, 26 Nov 2023 21:07:24 +0300 Subject: [PATCH 105/207] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index a8749d0b1..1a1d85a8d 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1434,10 +1434,29 @@ hadron.noresult_wrong_mode=Ðеверный режим! hadron.stats=Предыдущие результаты: hadron.stats_coord=Ошибка: %s / %s / %s hadron.stats_momentum=УÑкорение: %s + radar.detectMissiles=Обнаружение ракет radar.detectPlayers=Обнаружение игроков radar.smartMode=Умный режим$Выход редÑтоуна игнорирует воÑходÑщие ракеты radar.redMode=Режим краÑного камнÑ$Включён: Сигнал редÑтоуна базируетÑÑ Ð½Ð° дальноÑти$Выключен: Сигнал редÑтоуна базируетÑÑ Ð½Ð° уровне +radar.clearMap=ОчиÑтить карту +radar.detectShells=Обнаружение ÑнарÑдов +radar.showMap=Показать карту +radar.toggleGui=Переключить Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ + +radar.target.abm=ÐнтибаллиÑтичеÑÐºÐ°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° +radar.target.custom10=Ракета 10 размера +radar.target.custom1015=Ракета 10/15 размера +radar.target.custom15=Ракета 15 размера +radar.target.custom1520=Ракета 15/20 размера +radar.target.custom20=Ракета 20 размера +radar.target.doomsday=Ракета Ñудного Ð´Ð½Ñ +radar.target.shuttle=КоÑмичеÑкий шаттл Reliant Robin +radar.target.tier0=Ракета 0-го ÑƒÑ€Ð¾Ð²Ð½Ñ +radar.target.tier1=Ракета 1-го ÑƒÑ€Ð¾Ð²Ð½Ñ +radar.target.tier2=Ракета 2-го ÑƒÑ€Ð¾Ð²Ð½Ñ +radar.target.tier3=Ракета 3-го ÑƒÑ€Ð¾Ð²Ð½Ñ +radar.target.tier4=Ракета 4-го ÑƒÑ€Ð¾Ð²Ð½Ñ chem.TEST=ТеÑÑ‚ chem.FP_HEAVYOIL=Переработка Ñ‚Ñжелой нефти @@ -2585,6 +2604,8 @@ item.ingot_gh336.name=Слиток гиорÑиÑ-336 item.ingot_gh336.desc=Коллега Сиборгиума. item.niter.name=Селитра +item.nitra.name=Ðитра +item.nitra_small.name=Кучка нитры item.ingot_copper.name=Слиток промышленной меди item.ingot_red_copper.name=Слиток краÑной меди item.ingot_tungsten.name=Вольфрамовый Ñлиток @@ -2696,6 +2717,7 @@ item.plate_paa.name=ПлаÑтина Ñплава PaA item.ingot_dura_steel.name=Ð’Ñ‹ÑокоÑкороÑÑ‚Ð½Ð°Ñ Ñталь item.ingot_polymer.name=Полимер item.ingot_rubber.name=Резина +item.ingot_biorubber.name=БруÑок латекÑа item.ingot_polonium.name=Слиток полониÑ-210 item.bolt_dura_steel.name=Ð’Ñ‹ÑокоÑкороÑтной Ñтальной Ñтержень item.pipes_steel.name=Стальные трубы @@ -3139,7 +3161,7 @@ item.ore.malachite=ÐœÐ°Ð»Ð°Ñ…Ð¸Ñ‚Ð¾Ð²Ð°Ñ item.ore.niobium=ÐÐ¸Ð¾Ð±Ð¸ÐµÐ²Ð°Ñ item.ore.titanium=Ð¢Ð¸Ñ‚Ð°Ð½Ð¾Ð²Ð°Ñ item.ore.tungsten=Ð’Ð¾Ð»ÑŒÑ„Ñ€Ð°Ð¼Ð¾Ð²Ð°Ñ -item.ore.thorium=Ð¢Ð¾Ñ€Ð¸ÐµÐ²Ð°Ñ +item.ore.thorium232=Ð¢Ð¾Ñ€Ð¸ÐµÐ²Ð°Ñ item.ore.uranium=Ð£Ñ€Ð°Ð½Ð¾Ð²Ð°Ñ item.ore_bedrock.name=%s Ð±ÐµÐ´Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð° item.ore_centrifuged.name=Ð¦ÐµÐ½Ñ‚Ñ€Ð¸Ñ„ÑƒÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ %s Ð±ÐµÐ´Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð° @@ -4598,6 +4620,7 @@ item.ball_dynamite.name=Динамит item.ball_tnt.name=ТÐТ item.ball_tatb.name=TATB item.ball_fireclay.name=Ð¨Ð°Ð¼Ð¾Ñ‚Ð½Ð°Ñ Ð³Ð»Ð¸Ð½Ð° +item.ball_resin.name=Ð›Ð°Ñ‚ÐµÐºÑ item.plate_kevlar.name=Кевларо-керамичеÑкий ÑоÑтав item.weaponized_starblaster_cell.name=§cÐ¡Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÑнергетичеÑÐºÐ°Ñ Ñчейка Звездного блаÑтера§r @@ -4888,7 +4911,7 @@ item.designator_arty_range.name=ÐртиллерийÑкий целеуказа item.missile_assembly.name=Сборка малой ракеты item.assembly_nuke.name=Оболочка Ñдерного минизарÑда item.missile_generic.name=ФугаÑÐ½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° -item.missile_anti_ballistic.name=ÐнтибаллиÑтичеÑÐºÐ°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° (WIP) +item.missile_anti_ballistic.name=ÐнтибаллиÑтичеÑÐºÐ°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° item.missile_incendiary.name=Ð—Ð°Ð¶Ð¸Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° item.missile_cluster.name=КлаÑÑ‚ÐµÑ€Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° item.missile_buster.name=ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ð±ÑƒÐ½ÐºÐµÑ€Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° From d0d8f2c285057eff34a3a9964c5d45159395491e Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 11 Nov 2023 14:07:19 +0100 Subject: [PATCH 106/207] texture sheet --- .../models/machines/exposure_chamber.png | Bin 0 -> 2278 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png diff --git a/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png b/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png new file mode 100644 index 0000000000000000000000000000000000000000..ac26fc0796689144dd48af558deddc8cb19c1bea GIT binary patch literal 2278 zcmbtWYg7{076#NLD>aqO(lRGaNpUJ6%n7pOI*M8t`AR1%)5*fPB7{?2#Kl|w%6 zYxFkg0RVtC9zVMI0sugyrauB+p{Z9-AsL!Ro3!5p57v|m;ILl-0C0han=3vxUoNgq z6+Sl8{ZKTl`?|LQafufrw<0hc{N4?RBKa+}fAK<*uAT^3Zy6CH$?xr$hD{sFa!&Z~ z@Xzwgu!TjS787YerLR@QY2~ra5y*TSTuNF9YX~k#7fNF)2?q(6bNK9(czO^n z0$0mf#WNp>d0?IM&J?Zn?@2diKc9<0p@R9=P{S;m)&nErzJPL-r0H_EGJji?-l06j z(cBnfbsRj(a_UqNZ+ugW7V^PY-{{Te%z7VQguM9mO1i9hW6lb-2wI zk!1^fgW4iqvsXH*;km*rK}}&d7!$%lsa6w-!`k9IDb&IaONlL`Ft4+hPIwfIXY`fM zihZeeywfsik1Z5)xF;n1Nl||U40^;crX5`WXsQhdaiwI3x_I$%)~=L;xAuDTad%5s z6ohW<494#d@O-hd{?mGl!=*-!|62HaZQ-ddjP*_1St{m>^JuX_>Wj#l_sN4~Fmhc{ zR-y6P0c%M>hHsM3E${YV{JM&a)*9czwVAj+-+Y%s+)ze*%*eYq7AQ*3H z|7->5_)4UueF^7QsG!QJ(vdRJR9b$Oz;5JNpULg3Cj^Pb0yV`c29;9#}qb84jqM zd}QR4WU@USdwW~dd-xDm5&!niyr5O~oo?i}fThG8Dn`8Xmj<$Qt^6^GOz)R?cQ zW`)G|Y2NO0-E%kD!>!IxD+z~g`PK-AyLgMil|*+}5QKNcQPQZVKMcW_`g2OL$RS5u zi}la6IB2&=GFb0j^(wN~SV=)s=WHd~W-Qw|BXYACh7kFB&SnZ9H4S8@I733(+ETH7 zO@XGFV@^DUV~H~HC+|di*LCS+oLxUR?Sn!natKV_vW4ga$avVqF?pwuN>}Y>adrfn zLatj@6_9a2u9uEGB)B+wCD0wBfgxVeOD?6C=)rJ}$+Qw%5c5p*@{E>EL`y5w$+(M$mh4V;@Mb9N{B-@+evD4TPKfBiI|KJt z^>or{A~C)fwFgGJO>mU#O=ES*bZ1+IC}&e*S%# zs#zzMC1zDKZ+WD|DRTNIgQJwwxjiL81$)pc;qlcF4Y*1}a!nor@;kW9T#`>5k6Psx zryO5El`hD!()oweyuJm)L-*_`R3Aa%zT2=!o!pEKTC3VM=X*v9O+GN(|K=C_k##Mw zNQWaL)D}u^Pj3LKfYVXK96WrIBmcDOLO!XTWYd!UY`*Qva=9yjT^pNvd zyg1>_jO_SZ`66?Dn0mg2P^JoP-1`Ncu6$EIkTca8H0Nx8o4&mz z^5mZ8%I``uP-r}9LAgUj@R1?Pqn=24@AdRUuUc(yXzkT+rc|XXB-@(vF(sukewf<+^C8_^MQvQD{7YsP@5$kU-3Hq9k O3%~>8 Date: Sun, 12 Nov 2023 21:11:38 +0100 Subject: [PATCH 107/207] radar rewrite, first attempt --- .../java/api/hbm/entity/IRadarDetectable.java | 3 +- .../api/hbm/entity/IRadarDetectableNT.java | 22 + src/main/java/api/hbm/entity/RadarEntry.java | 35 + .../machine/TileEntityMachineRadarNT.java | 105 + .../hbm/models/machines/exposure_chamber.obj | 4253 +++++++++++++++++ .../hbm/textures/gui/machine/gui_radar_nt.png | Bin 0 -> 21545 bytes .../models/machines/exposure_chamber.png | Bin 2278 -> 6849 bytes 7 files changed, 4417 insertions(+), 1 deletion(-) create mode 100644 src/main/java/api/hbm/entity/IRadarDetectableNT.java create mode 100644 src/main/java/api/hbm/entity/RadarEntry.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java create mode 100644 src/main/resources/assets/hbm/models/machines/exposure_chamber.obj create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png diff --git a/src/main/java/api/hbm/entity/IRadarDetectable.java b/src/main/java/api/hbm/entity/IRadarDetectable.java index f89fc99d4..0c3700b99 100644 --- a/src/main/java/api/hbm/entity/IRadarDetectable.java +++ b/src/main/java/api/hbm/entity/IRadarDetectable.java @@ -1,5 +1,6 @@ package api.hbm.entity; +@Deprecated //Use IRadarDetectableNT instead, old interface will still work though public interface IRadarDetectable { public static enum RadarTargetType { @@ -15,7 +16,7 @@ public interface IRadarDetectable { MISSILE_20("Size 20 Custom Missile"), //size 20 custom missiles MISSILE_AB("Anti-Ballistic Missile"), //anti ballistic missile PLAYER("Player"), //airborne players - ARTILLERY("Artillery Shell"); //airborne players + ARTILLERY("Artillery Shell"); //artillery shells public String name; diff --git a/src/main/java/api/hbm/entity/IRadarDetectableNT.java b/src/main/java/api/hbm/entity/IRadarDetectableNT.java new file mode 100644 index 000000000..83c4bf503 --- /dev/null +++ b/src/main/java/api/hbm/entity/IRadarDetectableNT.java @@ -0,0 +1,22 @@ +package api.hbm.entity; + +public interface IRadarDetectableNT { + + public static final int TIER0 = 0; + public static final int TIER1 = 1; + public static final int TIER2 = 2; + public static final int TIER3 = 3; + public static final int TIER4 = 4; + public static final int TIER10 = 5; + public static final int TIER10_15 = 6; + public static final int TIER15 = 7; + public static final int TIER15_20 = 8; + public static final int TIER20 = 9; + public static final int TIER_AB = 10; + public static final int PLAYER = 11; + public static final int ARTY = 12; + + public String getUnlocalizedName(); + public int getBlipLevel(); + public boolean canBeSeenBy(Object radar); +} diff --git a/src/main/java/api/hbm/entity/RadarEntry.java b/src/main/java/api/hbm/entity/RadarEntry.java new file mode 100644 index 000000000..540ec925b --- /dev/null +++ b/src/main/java/api/hbm/entity/RadarEntry.java @@ -0,0 +1,35 @@ +package api.hbm.entity; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; + +public class RadarEntry { + + public String unlocalizedName; + public int blipLevel; + public int posX; + public int posY; + public int posZ; + public int dim; + + public RadarEntry(String name, int level, int x, int y, int z, int dim) { + this.unlocalizedName = name; + this.blipLevel = level; + this.posX = x; + this.posY = y; + this.posZ = z; + this.dim = dim; + } + + public RadarEntry(IRadarDetectableNT detectable, Entity entity) { + this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension); + } + + public RadarEntry(IRadarDetectable detectable, Entity entity) { + this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension); + } + + public RadarEntry(EntityPlayer player) { + this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java new file mode 100644 index 000000000..db8f40435 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -0,0 +1,105 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Pair; + +import api.hbm.entity.IRadarDetectable; +import api.hbm.entity.IRadarDetectableNT; +import api.hbm.entity.RadarEntry; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.WorldServer; + +/** + * Now with SmЯtâ„¢ lag-free entity detection! + * @author hbm + */ +public class TileEntityMachineRadarNT extends TileEntityMachineBase { + + public boolean scanMissiles = true; + public boolean scanPlayers = true; + public boolean smartMode = true; + public boolean redMode = true; + + public boolean jammed = false; + + public TileEntityMachineRadarNT() { + super(1); + } + + @Override + public String getName() { + return ""; + } + + @Override + public void updateEntity() { + + } + + //List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry + //The converters coming first have the highest priority + public static List, RadarEntry>> converters = new ArrayList(); + public static List classes = new ArrayList(); + public static List matchingEntities = new ArrayList(); + + /** + * Iterates over every entity in the world and add them to the matchingEntities list if the class is in the detectable list + * From this compiled list, radars can easily grab the required entities since we can assume that the total amount of detectable entities is comparatively low + */ + public static void updateSystem() { + matchingEntities.clear(); + + for(WorldServer world : Minecraft.getMinecraft().getIntegratedServer().worldServers) { + for(Object entity : world.loadedEntityList) { + for(Class clazz : classes) { + if(clazz.isAssignableFrom(entity.getClass())) { + matchingEntities.add((Entity) entity); + break; + } + } + } + } + } + + /** Registers a class that if an entity inherits that class, it is picked up by the system */ + public static void registerEntityClasses() { + classes.add(IRadarDetectableNT.class); + classes.add(IRadarDetectable.class); + classes.add(EntityPlayer.class); + } + + /** Registers converters. Converters are used to go over the list of detected entities and turn them into a RadarEntry using the entity instance and the radar's instance. */ + public static void registerConverters() { + //IRadarDetectableNT + converters.add(x -> { + Entity e = x.getKey(); + if(e instanceof IRadarDetectableNT) { + IRadarDetectableNT detectable = (IRadarDetectableNT) e; + if(detectable.canBeSeenBy(x.getValue())) return new RadarEntry(detectable, e); + } + return null; + }); + //IRadarDetectable, Legacy + converters.add(x -> { + Entity e = x.getKey(); + if(e instanceof IRadarDetectable) { + return new RadarEntry((IRadarDetectable) e, e); + } + return null; + }); + //Players + converters.add(x -> { + Entity e = x.getKey(); + if(e instanceof EntityPlayer) { + return new RadarEntry((EntityPlayer) e); + } + return null; + }); + } +} diff --git a/src/main/resources/assets/hbm/models/machines/exposure_chamber.obj b/src/main/resources/assets/hbm/models/machines/exposure_chamber.obj new file mode 100644 index 000000000..ac6d44aa7 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/exposure_chamber.obj @@ -0,0 +1,4253 @@ +# Blender v2.79 (sub 0) OBJ File: 'exposure_chamber.blend' +# www.blender.org +o Magnets +v 1.961571 0.500000 0.292636 +v 1.961571 0.500000 -0.292635 +v 1.225981 0.500000 0.243863 +v 1.225982 0.500000 -0.243863 +v 1.961571 1.250000 0.292636 +v 1.225981 1.250000 0.243863 +v 1.961571 1.250000 -0.292635 +v 1.225982 1.250000 -0.243863 +v 1.225982 4.500000 -0.243863 +v 1.961571 4.500000 -0.292635 +v 1.225981 4.500000 0.243863 +v 1.961571 4.500000 0.292636 +v 1.225982 3.750000 -0.243863 +v 1.225981 3.750000 0.243863 +v 1.961571 3.750000 -0.292635 +v 1.961571 3.750000 0.292636 +v -1.961571 0.500000 -0.292636 +v -1.961571 0.500000 0.292636 +v -1.225981 0.500000 -0.243863 +v -1.225983 0.500000 0.243863 +v -1.961571 1.250000 -0.292636 +v -1.225981 1.250000 -0.243863 +v -1.961571 1.250000 0.292636 +v -1.225983 1.250000 0.243863 +v -1.225983 4.500000 0.243863 +v -1.961571 4.500000 0.292636 +v -1.225981 4.500000 -0.243863 +v -1.961571 4.500000 -0.292636 +v -1.225983 3.750000 0.243863 +v -1.225981 3.750000 -0.243863 +v -1.961571 3.750000 0.292636 +v -1.961571 3.750000 -0.292636 +v 0.292635 0.500000 -1.961571 +v -0.292636 0.500000 -1.961571 +v 0.243863 0.500000 -1.225981 +v -0.243863 0.500000 -1.225982 +v 0.292635 1.250000 -1.961571 +v 0.243863 1.250000 -1.225981 +v -0.292636 1.250000 -1.961571 +v -0.243863 1.250000 -1.225982 +v -0.243863 4.500000 -1.225982 +v -0.292636 4.500000 -1.961571 +v 0.243863 4.500000 -1.225981 +v 0.292635 4.500000 -1.961571 +v -0.243863 3.750000 -1.225982 +v 0.243863 3.750000 -1.225981 +v -0.292636 3.750000 -1.961571 +v 0.292635 3.750000 -1.961571 +v -0.292636 0.500000 1.961571 +v 0.292635 0.500000 1.961571 +v -0.243863 0.500000 1.225981 +v 0.243863 0.500000 1.225982 +v -0.292636 1.250000 1.961571 +v -0.243863 1.250000 1.225981 +v 0.292635 1.250000 1.961571 +v 0.243863 1.250000 1.225982 +v 0.243863 4.500000 1.225982 +v 0.292635 4.500000 1.961571 +v -0.243863 4.500000 1.225981 +v -0.292636 4.500000 1.961571 +v 0.243863 3.750000 1.225982 +v -0.243863 3.750000 1.225981 +v 0.292635 3.750000 1.961571 +v -0.292636 3.750000 1.961571 +v 1.593965 0.500000 -1.180115 +v 1.180116 0.500000 -1.593965 +v 1.039336 0.500000 -0.694462 +v 0.694463 0.500000 -1.039337 +v 1.593965 1.250000 -1.180115 +v 1.039336 1.250000 -0.694462 +v 1.180116 1.250000 -1.593965 +v 0.694463 1.250000 -1.039337 +v 0.694463 4.500000 -1.039337 +v 1.180116 4.500000 -1.593965 +v 1.039336 4.500000 -0.694462 +v 1.593965 4.500000 -1.180115 +v 0.694463 3.750000 -1.039337 +v 1.039336 3.750000 -0.694462 +v 1.180116 3.750000 -1.593965 +v 1.593965 3.750000 -1.180115 +v -1.593966 0.500000 1.180115 +v -1.180116 0.500000 1.593965 +v -1.039337 0.500000 0.694462 +v -0.694464 0.500000 1.039337 +v -1.593966 1.250000 1.180115 +v -1.039337 1.250000 0.694462 +v -1.180116 1.250000 1.593965 +v -0.694464 1.250000 1.039337 +v -0.694464 4.500000 1.039337 +v -1.180116 4.500000 1.593965 +v -1.039337 4.500000 0.694462 +v -1.593966 4.500000 1.180115 +v -0.694464 3.750000 1.039337 +v -1.039337 3.750000 0.694462 +v -1.180116 3.750000 1.593965 +v -1.593966 3.750000 1.180115 +v -1.180116 0.500000 -1.593965 +v -1.593966 0.500000 -1.180115 +v -0.694463 0.500000 -1.039337 +v -1.039337 0.500000 -0.694463 +v -1.180116 1.250000 -1.593965 +v -0.694463 1.250000 -1.039337 +v -1.593966 1.250000 -1.180115 +v -1.039337 1.250000 -0.694463 +v -1.039337 4.500000 -0.694463 +v -1.593966 4.500000 -1.180115 +v -0.694463 4.500000 -1.039337 +v -1.180116 4.500000 -1.593965 +v -1.039337 3.750000 -0.694463 +v -0.694463 3.750000 -1.039337 +v -1.593966 3.750000 -1.180115 +v -1.180116 3.750000 -1.593965 +v 1.180115 0.500000 1.593965 +v 1.593965 0.500000 1.180115 +v 0.694462 0.500000 1.039337 +v 1.039337 0.500000 0.694463 +v 1.180115 1.250000 1.593965 +v 0.694462 1.250000 1.039337 +v 1.593965 1.250000 1.180115 +v 1.039337 1.250000 0.694463 +v 1.039337 4.500000 0.694463 +v 1.593965 4.500000 1.180115 +v 0.694462 4.500000 1.039337 +v 1.180115 4.500000 1.593965 +v 1.039337 3.750000 0.694463 +v 0.694462 3.750000 1.039337 +v 1.593965 3.750000 1.180115 +v 1.180115 3.750000 1.593965 +v 1.021021 0.500000 -1.700268 +v 0.480301 0.500000 -1.924242 +v 0.694463 0.500000 -1.039336 +v 0.243863 0.500000 -1.225982 +v 1.021021 1.250000 -1.700268 +v 0.694463 1.250000 -1.039336 +v 0.480301 1.250000 -1.924242 +v 0.243863 1.250000 -1.225982 +v 0.243863 4.500000 -1.225982 +v 0.480301 4.500000 -1.924242 +v 0.694463 4.500000 -1.039336 +v 1.021021 4.500000 -1.700268 +v 0.243863 3.750000 -1.225982 +v 0.694463 3.750000 -1.039336 +v 0.480301 3.750000 -1.924242 +v 1.021021 3.750000 -1.700268 +v -1.021021 0.500000 1.700269 +v -0.480301 0.500000 1.924242 +v -0.694463 0.500000 1.039336 +v -0.243863 0.500000 1.225982 +v -1.021021 1.250000 1.700269 +v -0.694463 1.250000 1.039336 +v -0.480301 1.250000 1.924242 +v -0.243863 1.250000 1.225982 +v -0.243863 4.500000 1.225982 +v -0.480301 4.500000 1.924242 +v -0.694463 4.500000 1.039336 +v -1.021021 4.500000 1.700269 +v -0.243863 3.750000 1.225982 +v -0.694463 3.750000 1.039336 +v -0.480301 3.750000 1.924242 +v -1.021021 3.750000 1.700269 +v -1.700269 0.500000 -1.021021 +v -1.924242 0.500000 -0.480300 +v -1.039337 0.500000 -0.694463 +v -1.225983 0.500000 -0.243863 +v -1.700269 1.250000 -1.021021 +v -1.039337 1.250000 -0.694463 +v -1.924242 1.250000 -0.480300 +v -1.225983 1.250000 -0.243863 +v -1.225983 4.500000 -0.243863 +v -1.924242 4.500000 -0.480300 +v -1.039337 4.500000 -0.694463 +v -1.700269 4.500000 -1.021021 +v -1.225983 3.750000 -0.243863 +v -1.039337 3.750000 -0.694463 +v -1.924242 3.750000 -0.480300 +v -1.700269 3.750000 -1.021021 +v 1.700268 0.500000 1.021021 +v 1.924242 0.500000 0.480300 +v 1.039336 0.500000 0.694463 +v 1.225982 0.500000 0.243863 +v 1.700268 1.250000 1.021021 +v 1.039336 1.250000 0.694463 +v 1.924242 1.250000 0.480300 +v 1.225982 1.250000 0.243863 +v 1.225982 4.500000 0.243863 +v 1.924242 4.500000 0.480300 +v 1.039336 4.500000 0.694463 +v 1.700268 4.500000 1.021021 +v 1.225982 3.750000 0.243863 +v 1.039336 3.750000 0.694463 +v 1.924242 3.750000 0.480300 +v 1.700268 3.750000 1.021021 +v -0.480301 0.500000 -1.924242 +v -1.021021 0.500000 -1.700269 +v -0.243863 0.500000 -1.225981 +v -0.694464 0.500000 -1.039337 +v -0.480301 1.250000 -1.924242 +v -0.243863 1.250000 -1.225981 +v -1.021021 1.250000 -1.700269 +v -0.694464 1.250000 -1.039337 +v -0.694464 4.500000 -1.039337 +v -1.021021 4.500000 -1.700269 +v -0.243863 4.500000 -1.225981 +v -0.480301 4.500000 -1.924242 +v -0.694464 3.750000 -1.039337 +v -0.243863 3.750000 -1.225981 +v -1.021021 3.750000 -1.700269 +v -0.480301 3.750000 -1.924242 +v 0.480300 0.500000 1.924242 +v 1.021021 0.500000 1.700268 +v 0.243862 0.500000 1.225981 +v 0.694463 0.500000 1.039337 +v 0.480300 1.250000 1.924242 +v 0.243862 1.250000 1.225981 +v 1.021021 1.250000 1.700268 +v 0.694463 1.250000 1.039337 +v 0.694463 4.500000 1.039337 +v 1.021021 4.500000 1.700268 +v 0.243862 4.500000 1.225981 +v 0.480300 4.500000 1.924242 +v 0.694463 3.750000 1.039337 +v 0.243862 3.750000 1.225981 +v 1.021021 3.750000 1.700268 +v 0.480300 3.750000 1.924242 +v -1.924242 0.500000 0.480301 +v -1.700269 0.500000 1.021021 +v -1.225981 0.500000 0.243863 +v -1.039337 0.500000 0.694463 +v -1.924242 1.250000 0.480301 +v -1.225981 1.250000 0.243863 +v -1.700269 1.250000 1.021021 +v -1.039337 1.250000 0.694463 +v -1.039337 4.500000 0.694463 +v -1.700269 4.500000 1.021021 +v -1.225981 4.500000 0.243863 +v -1.924242 4.500000 0.480301 +v -1.039337 3.750000 0.694463 +v -1.225981 3.750000 0.243863 +v -1.700269 3.750000 1.021021 +v -1.924242 3.750000 0.480301 +v 1.924242 0.500000 -0.480301 +v 1.700268 0.500000 -1.021021 +v 1.225981 0.500000 -0.243863 +v 1.039337 0.500000 -0.694463 +v 1.924242 1.250000 -0.480301 +v 1.225981 1.250000 -0.243863 +v 1.700268 1.250000 -1.021021 +v 1.039337 1.250000 -0.694463 +v 1.039337 4.500000 -0.694463 +v 1.700268 4.500000 -1.021021 +v 1.225981 4.500000 -0.243863 +v 1.924242 4.500000 -0.480301 +v 1.039337 3.750000 -0.694463 +v 1.225981 3.750000 -0.243863 +v 1.700268 3.750000 -1.021021 +v 1.924242 3.750000 -0.480301 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.756410 0.491228 +vt 0.782051 0.543860 +vt 0.759615 0.543860 +vt 0.756410 0.438596 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.785256 0.438596 +vt 0.785256 0.438596 +vt 0.756410 0.491228 +vt 0.756410 0.438596 +vt 0.823718 0.438596 +vt 0.785256 0.491228 +vt 0.717949 0.491228 +vt 0.717949 0.438596 +vt 0.782051 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vt 0.823718 0.491228 +vt 0.823718 0.491228 +vt 0.759615 0.385965 +vn 0.0000 1.0000 0.0000 +vn -0.0662 0.0000 0.9978 +vn -0.0662 0.0000 -0.9978 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0662 0.0000 -0.9978 +vn 0.0662 0.0000 0.9978 +vn -1.0000 0.0000 0.0000 +vn 0.9978 0.0000 0.0662 +vn -0.9978 0.0000 0.0662 +vn 0.0000 0.0000 -1.0000 +vn -0.9978 0.0000 -0.0662 +vn 0.9978 0.0000 -0.0662 +vn 0.0000 0.0000 1.0000 +vn 0.6588 0.0000 0.7523 +vn -0.7523 0.0000 -0.6588 +vn 0.7071 0.0000 -0.7071 +vn -0.6588 0.0000 -0.7523 +vn 0.7523 0.0000 0.6588 +vn -0.7071 0.0000 0.7071 +vn 0.7523 0.0000 -0.6588 +vn -0.6588 0.0000 0.7523 +vn -0.7071 0.0000 -0.7071 +vn -0.7523 0.0000 0.6588 +vn 0.6588 0.0000 -0.7523 +vn 0.7071 0.0000 0.7071 +vn 0.8965 0.0000 0.4430 +vn -0.9472 0.0000 -0.3207 +vn 0.3827 0.0000 -0.9239 +vn -0.8965 0.0000 -0.4430 +vn 0.9472 0.0000 0.3207 +vn -0.3827 0.0000 0.9239 +vn 0.4430 0.0000 -0.8965 +vn -0.3207 0.0000 0.9472 +vn -0.9239 0.0000 -0.3827 +vn -0.4430 0.0000 0.8965 +vn 0.3207 0.0000 -0.9472 +vn 0.9239 0.0000 0.3827 +vn 0.9472 0.0000 -0.3207 +vn -0.8965 0.0000 0.4430 +vn -0.3827 0.0000 -0.9239 +vn -0.9472 0.0000 0.3207 +vn 0.8965 0.0000 -0.4430 +vn 0.3827 0.0000 0.9239 +vn -0.3207 0.0000 -0.9472 +vn 0.4430 0.0000 0.8965 +vn -0.9239 0.0000 0.3827 +vn 0.3207 0.0000 0.9472 +vn -0.4430 0.0000 -0.8965 +vn 0.9239 0.0000 -0.3827 +s off +f 5/1/1 8/2/1 6/3/1 +f 1/4/2 6/5/2 3/6/2 +f 4/7/3 7/8/3 2/9/3 +f 2/9/4 5/1/4 1/4/4 +f 15/10/4 12/11/4 16/12/4 +f 13/13/3 10/14/3 15/10/3 +f 16/12/2 11/15/2 14/16/2 +f 16/12/5 13/17/5 15/10/5 +f 21/18/1 24/19/1 22/20/1 +f 17/21/6 22/22/6 19/23/6 +f 20/24/7 23/25/7 18/26/7 +f 18/26/8 21/18/8 17/21/8 +f 31/27/8 28/28/8 32/29/8 +f 29/30/7 26/31/7 31/27/7 +f 32/29/6 27/32/6 30/33/6 +f 32/29/5 29/34/5 31/27/5 +f 37/35/1 40/36/1 38/37/1 +f 33/38/9 38/39/9 35/40/9 +f 36/41/10 39/42/10 34/43/10 +f 34/43/11 37/35/11 33/38/11 +f 47/44/11 44/45/11 48/46/11 +f 45/47/10 42/48/10 47/44/10 +f 48/46/9 43/49/9 46/50/9 +f 48/46/5 45/51/5 47/44/5 +f 53/52/1 56/53/1 54/54/1 +f 49/55/12 54/56/12 51/57/12 +f 52/58/13 55/59/13 50/60/13 +f 50/60/14 53/52/14 49/55/14 +f 63/61/14 60/62/14 64/63/14 +f 61/64/13 58/65/13 63/61/13 +f 64/63/12 59/66/12 62/67/12 +f 64/63/5 61/68/5 63/61/5 +f 69/69/1 72/70/1 70/71/1 +f 65/72/15 70/73/15 67/74/15 +f 68/75/16 71/76/16 66/77/16 +f 66/77/17 69/69/17 65/72/17 +f 79/78/17 76/79/17 80/80/17 +f 77/81/16 74/82/16 79/78/16 +f 80/80/15 75/83/15 78/84/15 +f 80/80/5 77/85/5 79/78/5 +f 85/86/1 88/87/1 86/88/1 +f 81/89/18 86/90/18 83/91/18 +f 84/92/19 87/93/19 82/94/19 +f 82/94/20 85/86/20 81/89/20 +f 95/95/20 92/96/20 96/97/20 +f 93/98/19 90/99/19 95/95/19 +f 96/97/18 91/100/18 94/101/18 +f 96/97/5 93/102/5 95/95/5 +f 101/103/1 104/104/1 102/105/1 +f 97/106/21 102/107/21 99/108/21 +f 100/109/22 103/110/22 98/111/22 +f 98/111/23 101/103/23 97/106/23 +f 111/112/23 108/113/23 112/114/23 +f 109/115/22 106/116/22 111/112/22 +f 112/114/21 107/117/21 110/118/21 +f 112/114/5 109/119/5 111/112/5 +f 117/120/1 120/121/1 118/122/1 +f 113/123/24 118/124/24 115/125/24 +f 116/126/25 119/127/25 114/128/25 +f 114/128/26 117/120/26 113/123/26 +f 127/129/26 124/130/26 128/131/26 +f 125/132/25 122/133/25 127/129/25 +f 128/131/24 123/134/24 126/135/24 +f 128/131/5 125/136/5 127/129/5 +f 133/137/1 136/138/1 134/139/1 +f 129/140/27 134/141/27 131/142/27 +f 132/143/28 135/144/28 130/145/28 +f 130/145/29 133/137/29 129/140/29 +f 143/146/29 140/147/29 144/148/29 +f 141/149/28 138/150/28 143/146/28 +f 144/148/27 139/151/27 142/152/27 +f 144/148/5 141/153/5 143/146/5 +f 149/154/1 152/155/1 150/156/1 +f 145/157/30 150/158/30 147/159/30 +f 148/160/31 151/161/31 146/162/31 +f 146/162/32 149/154/32 145/157/32 +f 159/163/32 156/164/32 160/165/32 +f 157/166/31 154/167/31 159/163/31 +f 160/165/30 155/168/30 158/169/30 +f 160/165/5 157/170/5 159/163/5 +f 165/171/1 168/172/1 166/173/1 +f 161/174/33 166/175/33 163/176/33 +f 164/177/34 167/178/34 162/179/34 +f 162/179/35 165/171/35 161/174/35 +f 175/180/35 172/181/35 176/182/35 +f 173/183/34 170/184/34 175/180/34 +f 176/182/33 171/185/33 174/186/33 +f 176/182/5 173/187/5 175/180/5 +f 181/188/1 184/189/1 182/190/1 +f 177/191/36 182/192/36 179/193/36 +f 180/194/37 183/195/37 178/196/37 +f 178/196/38 181/188/38 177/191/38 +f 191/197/38 188/198/38 192/199/38 +f 189/200/37 186/201/37 191/197/37 +f 192/199/36 187/202/36 190/203/36 +f 192/199/5 189/204/5 191/197/5 +f 197/205/1 200/206/1 198/207/1 +f 193/208/39 198/209/39 195/210/39 +f 196/211/40 199/212/40 194/213/40 +f 194/213/41 197/205/41 193/208/41 +f 207/214/41 204/215/41 208/216/41 +f 205/217/40 202/218/40 207/214/40 +f 208/216/39 203/219/39 206/220/39 +f 208/216/5 205/221/5 207/214/5 +f 213/222/1 216/223/1 214/224/1 +f 209/225/42 214/226/42 211/227/42 +f 212/228/43 215/229/43 210/230/43 +f 210/230/44 213/222/44 209/225/44 +f 223/231/44 220/232/44 224/233/44 +f 221/234/43 218/235/43 223/231/43 +f 224/233/42 219/236/42 222/237/42 +f 224/233/5 221/238/5 223/231/5 +f 229/239/1 232/240/1 230/241/1 +f 225/242/45 230/243/45 227/244/45 +f 228/245/46 231/246/46 226/247/46 +f 226/247/47 229/239/47 225/242/47 +f 239/248/47 236/249/47 240/250/47 +f 237/251/46 234/252/46 239/248/46 +f 240/250/45 235/253/45 238/254/45 +f 240/250/5 237/255/5 239/248/5 +f 245/256/1 248/257/1 246/258/1 +f 241/259/48 246/260/48 243/261/48 +f 244/262/49 247/263/49 242/264/49 +f 242/264/50 245/256/50 241/259/50 +f 255/265/50 252/266/50 256/267/50 +f 253/268/49 250/269/49 255/265/49 +f 256/267/48 251/270/48 254/271/48 +f 256/267/5 253/272/5 255/265/5 +f 5/1/1 7/8/1 8/2/1 +f 1/4/2 5/1/2 6/5/2 +f 4/7/3 8/273/3 7/8/3 +f 2/9/4 7/8/4 5/1/4 +f 15/10/4 10/14/4 12/11/4 +f 13/13/3 9/274/3 10/14/3 +f 16/12/2 12/11/2 11/15/2 +f 16/12/5 14/275/5 13/17/5 +f 21/18/1 23/25/1 24/19/1 +f 17/21/6 21/18/6 22/22/6 +f 20/24/7 24/276/7 23/25/7 +f 18/26/8 23/25/8 21/18/8 +f 31/27/8 26/31/8 28/28/8 +f 29/30/7 25/277/7 26/31/7 +f 32/29/6 28/28/6 27/32/6 +f 32/29/5 30/278/5 29/34/5 +f 37/35/1 39/42/1 40/36/1 +f 33/38/9 37/35/9 38/39/9 +f 36/41/10 40/279/10 39/42/10 +f 34/43/11 39/42/11 37/35/11 +f 47/44/11 42/48/11 44/45/11 +f 45/47/10 41/280/10 42/48/10 +f 48/46/9 44/45/9 43/49/9 +f 48/46/5 46/281/5 45/51/5 +f 53/52/1 55/59/1 56/53/1 +f 49/55/12 53/52/12 54/56/12 +f 52/58/13 56/282/13 55/59/13 +f 50/60/14 55/59/14 53/52/14 +f 63/61/14 58/65/14 60/62/14 +f 61/64/13 57/283/13 58/65/13 +f 64/63/12 60/62/12 59/66/12 +f 64/63/5 62/284/5 61/68/5 +f 69/69/1 71/76/1 72/70/1 +f 65/72/15 69/69/15 70/73/15 +f 68/75/16 72/285/16 71/76/16 +f 66/77/17 71/76/17 69/69/17 +f 79/78/17 74/82/17 76/79/17 +f 77/81/16 73/286/16 74/82/16 +f 80/80/15 76/79/15 75/83/15 +f 80/80/5 78/287/5 77/85/5 +f 85/86/1 87/93/1 88/87/1 +f 81/89/18 85/86/18 86/90/18 +f 84/92/19 88/288/19 87/93/19 +f 82/94/20 87/93/20 85/86/20 +f 95/95/20 90/99/20 92/96/20 +f 93/98/19 89/289/19 90/99/19 +f 96/97/18 92/96/18 91/100/18 +f 96/97/5 94/290/5 93/102/5 +f 101/103/1 103/110/1 104/104/1 +f 97/106/21 101/103/21 102/107/21 +f 100/109/22 104/291/22 103/110/22 +f 98/111/23 103/110/23 101/103/23 +f 111/112/23 106/116/23 108/113/23 +f 109/115/22 105/292/22 106/116/22 +f 112/114/21 108/113/21 107/117/21 +f 112/114/5 110/293/5 109/119/5 +f 117/120/1 119/127/1 120/121/1 +f 113/123/24 117/120/24 118/124/24 +f 116/126/25 120/294/25 119/127/25 +f 114/128/26 119/127/26 117/120/26 +f 127/129/26 122/133/26 124/130/26 +f 125/132/25 121/295/25 122/133/25 +f 128/131/24 124/130/24 123/134/24 +f 128/131/5 126/296/5 125/136/5 +f 133/137/1 135/144/1 136/138/1 +f 129/140/27 133/137/27 134/141/27 +f 132/143/28 136/297/28 135/144/28 +f 130/145/29 135/144/29 133/137/29 +f 143/146/29 138/150/29 140/147/29 +f 141/149/28 137/298/28 138/150/28 +f 144/148/27 140/147/27 139/151/27 +f 144/148/5 142/299/5 141/153/5 +f 149/154/1 151/161/1 152/155/1 +f 145/157/30 149/154/30 150/158/30 +f 148/160/31 152/300/31 151/161/31 +f 146/162/32 151/161/32 149/154/32 +f 159/163/32 154/167/32 156/164/32 +f 157/166/31 153/301/31 154/167/31 +f 160/165/30 156/164/30 155/168/30 +f 160/165/5 158/302/5 157/170/5 +f 165/171/1 167/178/1 168/172/1 +f 161/174/33 165/171/33 166/175/33 +f 164/177/34 168/303/34 167/178/34 +f 162/179/35 167/178/35 165/171/35 +f 175/180/35 170/184/35 172/181/35 +f 173/183/34 169/304/34 170/184/34 +f 176/182/33 172/181/33 171/185/33 +f 176/182/5 174/305/5 173/187/5 +f 181/188/1 183/195/1 184/189/1 +f 177/191/36 181/188/36 182/192/36 +f 180/194/37 184/306/37 183/195/37 +f 178/196/38 183/195/38 181/188/38 +f 191/197/38 186/201/38 188/198/38 +f 189/200/37 185/307/37 186/201/37 +f 192/199/36 188/198/36 187/202/36 +f 192/199/5 190/308/5 189/204/5 +f 197/205/1 199/212/1 200/206/1 +f 193/208/39 197/205/39 198/209/39 +f 196/211/40 200/309/40 199/212/40 +f 194/213/41 199/212/41 197/205/41 +f 207/214/41 202/218/41 204/215/41 +f 205/217/40 201/310/40 202/218/40 +f 208/216/39 204/215/39 203/219/39 +f 208/216/5 206/311/5 205/221/5 +f 213/222/1 215/229/1 216/223/1 +f 209/225/42 213/222/42 214/226/42 +f 212/228/43 216/312/43 215/229/43 +f 210/230/44 215/229/44 213/222/44 +f 223/231/44 218/235/44 220/232/44 +f 221/234/43 217/313/43 218/235/43 +f 224/233/42 220/232/42 219/236/42 +f 224/233/5 222/314/5 221/238/5 +f 229/239/1 231/246/1 232/240/1 +f 225/242/45 229/239/45 230/243/45 +f 228/245/46 232/315/46 231/246/46 +f 226/247/47 231/246/47 229/239/47 +f 239/248/47 234/252/47 236/249/47 +f 237/251/46 233/316/46 234/252/46 +f 240/250/45 236/249/45 235/253/45 +f 240/250/5 238/317/5 237/255/5 +f 245/256/1 247/263/1 248/257/1 +f 241/259/48 245/256/48 246/260/48 +f 244/262/49 248/318/49 247/263/49 +f 242/264/50 247/263/50 245/256/50 +f 255/265/50 250/269/50 252/266/50 +f 253/268/49 249/319/49 250/269/49 +f 256/267/48 252/266/48 251/270/48 +f 256/267/5 254/320/5 253/272/5 +o Core +v 0.000000 2.250000 -0.000000 +v 0.180900 2.388196 0.131430 +v -0.069097 2.388196 0.212660 +v -0.223606 2.388196 -0.000000 +v -0.069097 2.388196 -0.212660 +v 0.180900 2.388196 -0.131430 +v 0.069096 2.611804 0.212660 +v -0.180901 2.611804 0.131430 +v -0.180901 2.611804 -0.131430 +v 0.069096 2.611804 -0.212660 +v 0.223606 2.611804 -0.000000 +v 0.000000 2.750000 -0.000000 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.538462 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vt 0.525641 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.525641 0.491228 +vt 0.525641 0.491228 +vt 0.532051 0.473684 +vt 0.538462 0.491228 +vt 0.538462 0.491228 +vt 0.532051 0.473684 +vn 0.1876 -0.7947 0.5774 +vn 0.6071 -0.7947 0.0000 +vn -0.4911 -0.7947 0.3568 +vn -0.4911 -0.7947 -0.3568 +vn 0.1876 -0.7947 -0.5774 +vn 0.9822 -0.1876 0.0000 +vn 0.3035 -0.1876 0.9342 +vn -0.7946 -0.1876 0.5774 +vn -0.7946 -0.1876 -0.5774 +vn 0.3035 -0.1876 -0.9342 +vn 0.7946 0.1876 0.5774 +vn -0.3035 0.1876 0.9342 +vn -0.9822 0.1876 0.0000 +vn -0.3035 0.1876 -0.9342 +vn 0.7946 0.1876 -0.5774 +vn 0.4911 0.7947 0.3568 +vn -0.1876 0.7947 0.5774 +vn -0.6071 0.7947 0.0000 +vn -0.1876 0.7947 -0.5774 +vn 0.4911 0.7947 -0.3568 +s off +f 257/321/51 258/322/51 259/323/51 +f 258/322/52 257/324/52 262/325/52 +f 257/321/53 259/326/53 260/327/53 +f 257/324/54 260/328/54 261/329/54 +f 257/324/55 261/330/55 262/331/55 +f 258/322/56 262/332/56 267/333/56 +f 259/326/57 258/334/57 263/335/57 +f 260/328/58 259/326/58 264/336/58 +f 261/329/59 260/327/59 265/337/59 +f 262/325/60 261/329/60 266/338/60 +f 258/334/61 267/333/61 263/339/61 +f 259/323/62 263/335/62 264/340/62 +f 260/328/63 264/340/63 265/341/63 +f 261/330/64 265/342/64 266/338/64 +f 262/325/65 266/343/65 267/344/65 +f 263/339/66 267/344/66 268/345/66 +f 264/346/67 263/339/67 268/347/67 +f 265/337/68 264/340/68 268/347/68 +f 266/343/69 265/341/69 268/345/69 +f 267/333/70 266/343/70 268/347/70 +o Chamber +v 0.000000 0.000000 -2.500000 +v -0.956709 0.000000 -2.309699 +v -1.767767 0.000000 -1.767767 +v -2.309699 0.000000 -0.956709 +v -2.500000 0.000000 0.000000 +v -2.309699 0.000000 0.956709 +v -1.767767 0.000000 1.767767 +v -0.956709 0.000000 2.309699 +v 0.000000 0.000000 2.500000 +v 0.956708 0.000000 2.309699 +v 1.767767 0.000000 1.767768 +v 2.309699 0.000000 0.956709 +v 2.500000 0.000000 -0.000000 +v 2.309698 0.000000 -0.956709 +v 1.767766 0.000000 -1.767768 +v 0.956707 0.000000 -2.309699 +v 0.000000 0.500000 -2.500000 +v -0.956709 0.500000 -2.309699 +v -1.767767 0.500000 -1.767767 +v -2.309699 0.500000 -0.956709 +v -2.500000 0.500000 0.000000 +v -2.309699 0.500000 0.956709 +v -1.767767 0.500000 1.767767 +v -0.956709 0.500000 2.309699 +v 0.000000 0.500000 2.500000 +v 0.956708 0.500000 2.309699 +v 1.767767 0.500000 1.767768 +v 2.309699 0.500000 0.956709 +v 2.500000 0.500000 -0.000000 +v 2.309698 0.500000 -0.956709 +v 1.767766 0.500000 -1.767768 +v 0.956707 0.500000 -2.309699 +v 0.000000 0.500000 -2.250000 +v -0.861038 0.500000 -2.078729 +v -1.590990 0.500000 -1.590990 +v -2.078729 0.500000 -0.861038 +v -2.250000 0.500000 0.000000 +v -2.078729 0.500000 0.861038 +v -1.590990 0.500000 1.590990 +v -0.861038 0.500000 2.078729 +v -0.000001 0.500000 2.250000 +v 0.861037 0.500000 2.078729 +v 1.590990 0.500000 1.590991 +v 2.078729 0.500000 0.861038 +v 2.250000 0.500000 0.000000 +v 2.078729 0.500000 -0.861038 +v 1.590990 0.500000 -1.590991 +v 0.861036 0.500000 -2.078730 +v 0.000000 4.500000 -2.250000 +v -0.861038 4.500000 -2.078729 +v -1.590990 4.500000 -1.590990 +v -2.078729 4.500000 -0.861038 +v -2.250000 4.500000 0.000000 +v -2.078729 4.500000 0.861038 +v -1.590990 4.500000 1.590990 +v -0.861038 4.500000 2.078729 +v -0.000001 4.500000 2.250000 +v 0.861037 4.500000 2.078729 +v 1.590990 4.500000 1.590991 +v 2.078729 4.500000 0.861038 +v 2.250000 4.500000 0.000000 +v 2.078729 4.500000 -0.861038 +v 1.590990 4.500000 -1.590991 +v 0.861036 4.500000 -2.078730 +v 1.767767 0.375000 1.944544 +v 1.944544 0.375000 1.767767 +v 1.767767 4.625000 1.944544 +v 1.944544 4.625000 1.767767 +v 1.944544 4.625000 2.121320 +v 1.944544 0.375000 2.121320 +v 2.121320 0.375000 1.944544 +v 2.121320 4.625000 1.944544 +v 1.944544 4.875000 1.767767 +v 1.767767 4.875000 1.944544 +v 1.767767 0.125000 1.944544 +v 1.944544 0.125000 1.767767 +v 1.590990 0.375000 1.767767 +v 1.767767 0.375000 1.590990 +v 1.767767 4.625000 1.590990 +v 1.590990 4.625000 1.767767 +v 1.767767 4.875000 1.590990 +v 1.590990 4.875000 1.767767 +v 1.590990 0.125000 1.767767 +v 1.767767 0.125000 1.590990 +v 1.944544 0.375000 -1.767767 +v 1.767767 0.375000 -1.944544 +v 1.944544 4.625000 -1.767767 +v 1.767767 4.625000 -1.944544 +v 2.121321 4.625000 -1.944544 +v 2.121321 0.375000 -1.944544 +v 1.944544 0.375000 -2.121320 +v 1.944544 4.625000 -2.121320 +v 1.767767 4.875000 -1.944544 +v 1.944544 4.875000 -1.767767 +v 1.944544 0.125000 -1.767767 +v 1.767767 0.125000 -1.944544 +v 1.767767 0.375000 -1.590990 +v 1.590990 0.375000 -1.767767 +v 1.590990 4.625000 -1.767767 +v 1.767767 4.625000 -1.590990 +v 1.590990 4.875000 -1.767767 +v 1.767767 4.875000 -1.590990 +v 1.767767 0.125000 -1.590990 +v 1.590990 0.125000 -1.767767 +v -1.767767 0.375000 -1.944544 +v -1.944544 0.375000 -1.767767 +v -1.767767 4.625000 -1.944544 +v -1.944544 4.625000 -1.767767 +v -1.944544 4.625000 -2.121320 +v -1.944544 0.375000 -2.121320 +v -2.121321 0.375000 -1.944544 +v -2.121321 4.625000 -1.944544 +v -1.944544 4.875000 -1.767767 +v -1.767767 4.875000 -1.944544 +v -1.767767 0.125000 -1.944544 +v -1.944544 0.125000 -1.767767 +v -1.590990 0.375000 -1.767767 +v -1.767767 0.375000 -1.590990 +v -1.767767 4.625000 -1.590990 +v -1.590990 4.625000 -1.767767 +v -1.767767 4.875000 -1.590990 +v -1.590990 4.875000 -1.767767 +v -1.590990 0.125000 -1.767767 +v -1.767767 0.125000 -1.590990 +v -1.944544 0.375000 1.767767 +v -1.767767 0.375000 1.944544 +v -1.944544 4.625000 1.767767 +v -1.767767 4.625000 1.944544 +v -2.121320 4.625000 1.944544 +v -2.121320 0.375000 1.944544 +v -1.944544 0.375000 2.121320 +v -1.944544 4.625000 2.121320 +v -1.767767 4.875000 1.944544 +v -1.944544 4.875000 1.767767 +v -1.944544 0.125000 1.767767 +v -1.767767 0.125000 1.944544 +v -1.767767 0.375000 1.590990 +v -1.590990 0.375000 1.767767 +v -1.590990 4.625000 1.767767 +v -1.767767 4.625000 1.590990 +v -1.590990 4.875000 1.767767 +v -1.767767 4.875000 1.590990 +v -1.767767 0.125000 1.590990 +v -1.590990 0.125000 1.767767 +v 0.000000 0.500000 -1.500000 +v -0.574025 0.500000 -1.385819 +v -1.060660 0.500000 -1.060660 +v -1.385819 0.500000 -0.574025 +v -1.500000 0.500000 0.000000 +v -1.385819 0.500000 0.574025 +v -1.060660 0.500000 1.060660 +v -0.574025 0.500000 1.385819 +v 0.000000 0.500000 1.500000 +v 0.574024 0.500000 1.385819 +v 1.060659 0.500000 1.060660 +v 1.385819 0.500000 0.574025 +v 1.500000 0.500000 -0.000000 +v 1.385819 0.500000 -0.574025 +v 1.060659 0.500000 -1.060660 +v 0.574024 0.500000 -1.385820 +v 0.000000 1.500000 -1.500000 +v -0.574025 1.500000 -1.385819 +v -1.060660 1.500000 -1.060660 +v -1.385819 1.500000 -0.574025 +v -1.500000 1.500000 0.000000 +v -1.385819 1.500000 0.574025 +v -1.060660 1.500000 1.060660 +v -0.574025 1.500000 1.385819 +v 0.000000 1.500000 1.500000 +v 0.574024 1.500000 1.385819 +v 1.060659 1.500000 1.060660 +v 1.385819 1.500000 0.574025 +v 1.500000 1.500000 -0.000000 +v 1.385819 1.500000 -0.574025 +v 1.060659 1.500000 -1.060660 +v 0.574024 1.500000 -1.385820 +v 0.000000 3.500000 -1.500000 +v -0.574025 3.500000 -1.385819 +v -1.060660 3.500000 -1.060660 +v -1.385819 3.500000 -0.574025 +v -1.500000 3.500000 0.000000 +v -1.385819 3.500000 0.574025 +v -1.060660 3.500000 1.060660 +v -0.574025 3.500000 1.385819 +v 0.000000 3.500000 1.500000 +v 0.574024 3.500000 1.385819 +v 1.060659 3.500000 1.060660 +v 1.385819 3.500000 0.574025 +v 1.500000 3.500000 -0.000000 +v 1.385819 3.500000 -0.574025 +v 1.060659 3.500000 -1.060660 +v 0.574024 3.500000 -1.385820 +v 0.000000 4.500000 -1.500000 +v -0.574025 4.500000 -1.385819 +v -1.060660 4.500000 -1.060660 +v -1.385819 4.500000 -0.574025 +v -1.500000 4.500000 0.000000 +v -1.385819 4.500000 0.574025 +v -1.060660 4.500000 1.060660 +v -0.574025 4.500000 1.385819 +v 0.000000 4.500000 1.500000 +v 0.574024 4.500000 1.385819 +v 1.060659 4.500000 1.060660 +v 1.385819 4.500000 0.574025 +v 1.500000 4.500000 -0.000000 +v 1.385819 4.500000 -0.574025 +v 1.060659 4.500000 -1.060660 +v 0.574024 4.500000 -1.385820 +v 0.000000 1.500000 -1.000000 +v -0.382684 1.500000 -0.923880 +v -0.707107 1.500000 -0.707107 +v -0.923880 1.500000 -0.382683 +v -1.000000 1.500000 0.000000 +v -0.923880 1.500000 0.382683 +v -0.707107 1.500000 0.707107 +v -0.382684 1.500000 0.923880 +v 0.000000 1.500000 1.000000 +v 0.382683 1.500000 0.923880 +v 0.707107 1.500000 0.707107 +v 0.923880 1.500000 0.382684 +v 1.000000 1.500000 -0.000000 +v 0.923880 1.500000 -0.382684 +v 0.707107 1.500000 -0.707107 +v 0.382683 1.500000 -0.923880 +v 0.000000 1.750000 -1.000000 +v -0.382684 1.750000 -0.923880 +v -0.707107 1.750000 -0.707107 +v -0.923880 1.750000 -0.382683 +v -1.000000 1.750000 0.000000 +v -0.923880 1.750000 0.382683 +v -0.707107 1.750000 0.707107 +v -0.382684 1.750000 0.923880 +v 0.000000 1.750000 1.000000 +v 0.382683 1.750000 0.923880 +v 0.707107 1.750000 0.707107 +v 0.923880 1.750000 0.382684 +v 1.000000 1.750000 -0.000000 +v 0.923880 1.750000 -0.382684 +v 0.707107 1.750000 -0.707107 +v 0.382683 1.750000 -0.923880 +v 0.000000 3.250000 -1.000000 +v -0.382684 3.250000 -0.923880 +v -0.707107 3.250000 -0.707107 +v -0.923880 3.250000 -0.382683 +v -1.000000 3.250000 0.000000 +v -0.923880 3.250000 0.382683 +v -0.707107 3.250000 0.707107 +v -0.382684 3.250000 0.923880 +v 0.000000 3.250000 1.000000 +v 0.382683 3.250000 0.923880 +v 0.707107 3.250000 0.707107 +v 0.923880 3.250000 0.382684 +v 1.000000 3.250000 -0.000000 +v 0.923880 3.250000 -0.382684 +v 0.707107 3.250000 -0.707107 +v 0.382683 3.250000 -0.923880 +v 0.000000 3.500000 -1.000000 +v -0.382684 3.500000 -0.923880 +v -0.707107 3.500000 -0.707107 +v -0.923880 3.500000 -0.382683 +v -1.000000 3.500000 0.000000 +v -0.923880 3.500000 0.382683 +v -0.707107 3.500000 0.707107 +v -0.382684 3.500000 0.923880 +v 0.000000 3.500000 1.000000 +v 0.382683 3.500000 0.923880 +v 0.707107 3.500000 0.707107 +v 0.923880 3.500000 0.382684 +v 1.000000 3.500000 -0.000000 +v 0.923880 3.500000 -0.382684 +v 0.707107 3.500000 -0.707107 +v 0.382683 3.500000 -0.923880 +v 0.972271 1.500000 0.972272 +v 0.795495 1.500000 0.795495 +v 0.795495 1.500000 -0.795495 +v 0.795495 2.000000 0.795495 +v 0.972271 1.500000 -0.972272 +v 0.795495 3.000000 0.795495 +v 0.972271 3.500000 0.972272 +v 0.795495 3.500000 0.795495 +v 0.265164 2.000000 0.265165 +v 0.265164 3.000000 0.265165 +v 0.795495 2.000000 -0.795495 +v 0.795495 3.000000 -0.795495 +v 0.972271 3.500000 -0.972272 +v 0.795495 3.500000 -0.795495 +v 0.265164 2.000000 -0.265165 +v 0.265164 3.000000 -0.265165 +v -0.972272 1.500000 -0.972272 +v -0.795495 1.500000 -0.795495 +v -0.795495 1.500000 0.795495 +v -0.795495 2.000000 -0.795495 +v -0.972272 1.500000 0.972272 +v -0.795495 3.000000 -0.795495 +v -0.972272 3.500000 -0.972272 +v -0.795495 3.500000 -0.795495 +v -0.265165 2.000000 -0.265165 +v -0.265165 3.000000 -0.265165 +v -0.795495 2.000000 0.795495 +v -0.795495 3.000000 0.795495 +v -0.972272 3.500000 0.972272 +v -0.795495 3.500000 0.795495 +v -0.265165 2.000000 0.265165 +v -0.265165 3.000000 0.265165 +v 0.000000 3.000000 -1.000000 +v -0.353554 2.853553 -1.000000 +v -0.500000 2.500000 -1.000000 +v -0.353554 2.146447 -1.000000 +v 0.000000 2.000000 -1.000000 +v 0.353553 2.146447 -1.000000 +v 0.500000 2.500000 -1.000000 +v 0.353553 2.853553 -1.000000 +v 0.000000 3.000000 -6.500000 +v -0.353554 2.853553 -6.500000 +v -0.500000 2.500000 -6.500000 +v -0.353554 2.146447 -6.500000 +v 0.000000 2.000000 -6.500000 +v 0.353553 2.146447 -6.500000 +v 0.500000 2.500000 -6.500000 +v 0.353553 2.853553 -6.500000 +v 0.000000 2.875000 -1.000000 +v -0.265165 2.765165 -1.000000 +v -0.375000 2.500000 -1.000000 +v -0.265165 2.234835 -1.000000 +v 0.000000 2.125000 -1.000000 +v 0.265164 2.234835 -1.000000 +v 0.375000 2.500000 -1.000000 +v 0.265164 2.765165 -1.000000 +v -0.265165 2.765165 -0.500000 +v 0.000000 2.875000 -0.500000 +v -0.375000 2.500000 -0.500000 +v -0.265165 2.234835 -0.500000 +v 0.000000 2.125000 -0.500000 +v 0.265164 2.234835 -0.500000 +v 0.375000 2.500000 -0.500000 +v 0.265164 2.765165 -0.500000 +v -1.000000 0.000000 -6.500000 +v 1.000000 0.000000 -6.500000 +v -1.000000 0.000000 -8.500000 +v 1.000000 0.000000 -8.500000 +v -1.000000 2.500000 -8.500000 +v -1.000000 3.500000 -6.500000 +v 1.000000 3.500000 -6.500000 +v 1.000000 2.500000 -8.500000 +v -0.250000 0.000000 -3.250000 +v 0.250000 0.000000 -3.250000 +v -0.250000 0.000000 -3.750000 +v 0.250000 0.000000 -3.750000 +v -0.250000 0.125000 -3.750000 +v -0.250000 0.125000 -3.250000 +v 0.250000 0.125000 -3.250000 +v 0.250000 0.125000 -3.750000 +v -0.125000 0.125000 -3.625000 +v -0.125000 0.125000 -3.375000 +v 0.125000 0.125000 -3.375000 +v 0.125000 0.125000 -3.625000 +v -0.125000 1.750000 -3.625000 +v -0.125000 1.750000 -3.375000 +v 0.125000 1.750000 -3.375000 +v 0.125000 1.750000 -3.625000 +v -0.750000 2.500000 -6.750000 +v 0.750000 2.500000 -6.750000 +v -0.750000 2.500000 -8.250000 +v 0.750000 2.500000 -8.250000 +v -0.750000 3.500000 -8.250000 +v -0.750000 3.500000 -6.750000 +v 0.750000 3.500000 -6.750000 +v 0.750000 3.500000 -8.250000 +v 1.000000 0.000000 -6.500000 +v 1.500000 0.000000 -6.500000 +v 1.000000 0.000000 -8.500000 +v 1.500000 0.000000 -8.500000 +v 1.000000 1.500000 -8.500000 +v 1.000000 1.500000 -6.500000 +v 1.500000 1.000000 -6.500000 +v 1.500000 1.000000 -8.500000 +v -1.500000 0.000000 -6.500000 +v -1.000000 0.000000 -6.500000 +v -1.500000 0.000000 -8.500000 +v -1.000000 0.000000 -8.500000 +v -1.500000 1.000000 -8.500000 +v -1.500000 1.000000 -6.500000 +v -1.000000 1.500000 -6.500000 +v -1.000000 1.500000 -8.500000 +v 0.353553 2.853553 -2.375000 +v 0.500000 2.500000 -2.375000 +v 0.353553 2.146447 -2.375000 +v 0.000000 2.000000 -2.375000 +v -0.353554 2.146447 -2.375000 +v -0.500000 2.500000 -2.375000 +v -0.353554 2.853553 -2.375000 +v 0.000000 3.000000 -2.375000 +v 0.530330 3.030330 -2.125000 +v 0.750000 2.500000 -2.125000 +v 0.530330 1.969670 -2.125000 +v 0.000000 1.750000 -2.125000 +v -0.530331 1.969670 -2.125000 +v -0.750000 2.500000 -2.125000 +v -0.530331 3.030330 -2.125000 +v 0.000000 3.250000 -2.125000 +v 0.707107 3.207107 -2.375000 +v 1.000000 2.500000 -2.375000 +v 0.707107 1.792893 -2.375000 +v 0.000000 1.500000 -2.375000 +v -0.707107 1.792893 -2.375000 +v -1.000000 2.500000 -2.375000 +v -0.707107 3.207107 -2.375000 +v 0.000000 3.500000 -2.375000 +v 0.000000 3.500000 -2.625000 +v -0.707107 3.207107 -2.625000 +v -1.000000 2.500000 -2.625000 +v -0.707107 1.792893 -2.625000 +v 0.000000 1.500000 -2.625000 +v 0.707107 1.792893 -2.625000 +v 1.000000 2.500000 -2.625000 +v 0.707107 3.207107 -2.625000 +v 0.353553 2.853553 -2.625000 +v 0.500000 2.500000 -2.625000 +v 0.353553 2.146447 -2.625000 +v 0.000000 2.000000 -2.625000 +v -0.353554 2.146447 -2.625000 +v -0.500000 2.500000 -2.625000 +v -0.353554 2.853553 -2.625000 +v 0.000000 3.000000 -2.625000 +v 0.530330 3.030330 -2.875000 +v 0.750000 2.500000 -2.875000 +v 0.530330 1.969670 -2.875000 +v 0.000000 1.750000 -2.875000 +v -0.530331 1.969670 -2.875000 +v -0.750000 2.500000 -2.875000 +v -0.530331 3.030330 -2.875000 +v 0.000000 3.250000 -2.875000 +v -0.062500 3.750000 -2.562500 +v 0.062500 3.750000 -2.562500 +v -0.062500 3.750000 -7.437500 +v 0.062500 3.750000 -7.437500 +v -0.062500 3.625000 -7.437500 +v -0.062500 3.625000 -2.562500 +v 0.062500 3.625000 -2.562500 +v 0.062500 3.625000 -7.437500 +v 0.062500 3.625000 -3.437500 +v -0.062500 3.625000 -3.437500 +v -0.062500 3.625000 -2.437500 +v 0.062500 3.625000 -2.437500 +v 0.062500 3.625000 -3.562500 +v -0.062500 3.625000 -3.562500 +v 0.062500 3.625000 -7.562500 +v -0.062500 3.625000 -7.562500 +v -0.062500 3.437500 -2.562500 +v 0.062500 3.437500 -2.562500 +v 0.062500 3.500000 -7.437500 +v -0.062500 3.500000 -7.437500 +v -0.062500 3.437500 -2.437500 +v 0.062500 3.437500 -2.437500 +v 0.062500 3.500000 -7.562500 +v -0.062500 3.500000 -7.562500 +v -0.062500 3.437500 -3.562500 +v 0.062500 3.437500 -3.562500 +v -0.062500 3.437500 -3.437500 +v 0.062500 3.437500 -3.437500 +v 0.062500 3.625000 -4.437500 +v -0.062500 3.625000 -4.437500 +v 0.062500 3.625000 -4.562500 +v -0.062500 3.625000 -4.562500 +v -0.062500 3.437500 -4.562500 +v 0.062500 3.437500 -4.562500 +v -0.062500 3.437500 -4.437500 +v 0.062500 3.437500 -4.437500 +v 0.062500 3.625000 -5.437500 +v -0.062500 3.625000 -5.437500 +v 0.062500 3.625000 -5.562500 +v -0.062500 3.625000 -5.562500 +v -0.062500 3.437500 -5.562500 +v 0.062500 3.437500 -5.562500 +v -0.062500 3.437500 -5.437500 +v 0.062500 3.437500 -5.437500 +v 0.353553 2.853553 -3.375000 +v 0.500000 2.500000 -3.375000 +v 0.353553 2.146447 -3.375000 +v 0.000000 2.000000 -3.375000 +v -0.353554 2.146447 -3.375000 +v -0.500000 2.500000 -3.375000 +v -0.353554 2.853553 -3.375000 +v 0.000000 3.000000 -3.375000 +v 0.530330 3.030330 -3.125000 +v 0.750000 2.500000 -3.125000 +v 0.530330 1.969670 -3.125000 +v 0.000000 1.750000 -3.125000 +v -0.530331 1.969670 -3.125000 +v -0.750000 2.500000 -3.125000 +v -0.530331 3.030330 -3.125000 +v 0.000000 3.250000 -3.125000 +v 0.707107 3.207107 -3.375000 +v 1.000000 2.500000 -3.375000 +v 0.707107 1.792893 -3.375000 +v 0.000000 1.500000 -3.375000 +v -0.707107 1.792893 -3.375000 +v -1.000000 2.500000 -3.375000 +v -0.707107 3.207107 -3.375000 +v 0.000000 3.500000 -3.375000 +v 0.000000 3.500000 -3.625000 +v -0.707107 3.207107 -3.625000 +v -1.000000 2.500000 -3.625000 +v -0.707107 1.792893 -3.625000 +v 0.000000 1.500000 -3.625000 +v 0.707107 1.792893 -3.625000 +v 1.000000 2.500000 -3.625000 +v 0.707107 3.207107 -3.625000 +v 0.353553 2.853553 -3.625000 +v 0.500000 2.500000 -3.625000 +v 0.353553 2.146447 -3.625000 +v 0.000000 2.000000 -3.625000 +v -0.353554 2.146447 -3.625000 +v -0.500000 2.500000 -3.625000 +v -0.353554 2.853553 -3.625000 +v 0.000000 3.000000 -3.625000 +v 0.530330 3.030330 -3.875000 +v 0.750000 2.500000 -3.875000 +v 0.530330 1.969670 -3.875000 +v 0.000000 1.750000 -3.875000 +v -0.530331 1.969670 -3.875000 +v -0.750000 2.500000 -3.875000 +v -0.530331 3.030330 -3.875000 +v 0.000000 3.250000 -3.875000 +v 0.353553 2.853553 -4.375000 +v 0.500000 2.500000 -4.375000 +v 0.353553 2.146447 -4.375000 +v 0.000000 2.000000 -4.375000 +v -0.353554 2.146447 -4.375000 +v -0.500000 2.500000 -4.375000 +v -0.353554 2.853553 -4.375000 +v 0.000000 3.000000 -4.375000 +v 0.530330 3.030330 -4.125000 +v 0.750000 2.500000 -4.125000 +v 0.530330 1.969670 -4.125000 +v 0.000000 1.750000 -4.125000 +v -0.530331 1.969670 -4.125000 +v -0.750000 2.500000 -4.125000 +v -0.530331 3.030330 -4.125000 +v 0.000000 3.250000 -4.125000 +v 0.707107 3.207107 -4.375000 +v 1.000000 2.500000 -4.375000 +v 0.707107 1.792893 -4.375000 +v 0.000000 1.500000 -4.375000 +v -0.707107 1.792893 -4.375000 +v -1.000000 2.500000 -4.375000 +v -0.707107 3.207107 -4.375000 +v 0.000000 3.500000 -4.375000 +v 0.000000 3.500000 -4.625000 +v -0.707107 3.207107 -4.625000 +v -1.000000 2.500000 -4.625000 +v -0.707107 1.792893 -4.625000 +v 0.000000 1.500000 -4.625000 +v 0.707107 1.792893 -4.625000 +v 1.000000 2.500000 -4.625000 +v 0.707107 3.207107 -4.625000 +v 0.353553 2.853553 -4.625000 +v 0.500000 2.500000 -4.625000 +v 0.353553 2.146447 -4.625000 +v 0.000000 2.000000 -4.625000 +v -0.353554 2.146447 -4.625000 +v -0.500000 2.500000 -4.625000 +v -0.353554 2.853553 -4.625000 +v 0.000000 3.000000 -4.625000 +v 0.530330 3.030330 -4.875000 +v 0.750000 2.500000 -4.875000 +v 0.530330 1.969670 -4.875000 +v 0.000000 1.750000 -4.875000 +v -0.530331 1.969670 -4.875000 +v -0.750000 2.500000 -4.875000 +v -0.530331 3.030330 -4.875000 +v 0.000000 3.250000 -4.875000 +v 0.353553 2.853553 -5.375000 +v 0.500000 2.500000 -5.375000 +v 0.353553 2.146447 -5.375000 +v 0.000000 2.000000 -5.375000 +v -0.353554 2.146447 -5.375000 +v -0.500000 2.500000 -5.375000 +v -0.353554 2.853553 -5.375000 +v 0.000000 3.000000 -5.375000 +v 0.530330 3.030330 -5.125000 +v 0.750000 2.500000 -5.125000 +v 0.530330 1.969670 -5.125000 +v 0.000000 1.750000 -5.125000 +v -0.530331 1.969670 -5.125000 +v -0.750000 2.500000 -5.125000 +v -0.530331 3.030330 -5.125000 +v 0.000000 3.250000 -5.125000 +v 0.707107 3.207107 -5.375000 +v 1.000000 2.500000 -5.375000 +v 0.707107 1.792893 -5.375000 +v 0.000000 1.500000 -5.375000 +v -0.707107 1.792893 -5.375000 +v -1.000000 2.500000 -5.375000 +v -0.707107 3.207107 -5.375000 +v 0.000000 3.500000 -5.375000 +v 0.000000 3.500000 -5.625000 +v -0.707107 3.207107 -5.625000 +v -1.000000 2.500000 -5.625000 +v -0.707107 1.792893 -5.625000 +v 0.000000 1.500000 -5.625000 +v 0.707107 1.792893 -5.625000 +v 1.000000 2.500000 -5.625000 +v 0.707107 3.207107 -5.625000 +v 0.353553 2.853553 -5.625000 +v 0.500000 2.500000 -5.625000 +v 0.353553 2.146447 -5.625000 +v 0.000000 2.000000 -5.625000 +v -0.353554 2.146447 -5.625000 +v -0.500000 2.500000 -5.625000 +v -0.353554 2.853553 -5.625000 +v 0.000000 3.000000 -5.625000 +v 0.530330 3.030330 -5.875000 +v 0.750000 2.500000 -5.875000 +v 0.530330 1.969670 -5.875000 +v 0.000000 1.750000 -5.875000 +v -0.530331 1.969670 -5.875000 +v -0.750000 2.500000 -5.875000 +v -0.530331 3.030330 -5.875000 +v 0.000000 3.250000 -5.875000 +v 0.353553 2.853553 -6.375000 +v 0.500000 2.500000 -6.375000 +v 0.353553 2.146447 -6.375000 +v 0.000000 2.000000 -6.375000 +v -0.353554 2.146447 -6.375000 +v -0.500000 2.500000 -6.375000 +v -0.353554 2.853553 -6.375000 +v 0.000000 3.000000 -6.375000 +v 0.530330 3.030330 -6.125000 +v 0.750000 2.500000 -6.125000 +v 0.530330 1.969670 -6.125000 +v 0.000000 1.750000 -6.125000 +v -0.530331 1.969670 -6.125000 +v -0.750000 2.500000 -6.125000 +v -0.530331 3.030330 -6.125000 +v 0.000000 3.250000 -6.125000 +v 0.707107 3.207107 -6.375000 +v 1.000000 2.500000 -6.375000 +v 0.707107 1.792893 -6.375000 +v 0.000000 1.500000 -6.375000 +v -0.707107 1.792893 -6.375000 +v -1.000000 2.500000 -6.375000 +v -0.707107 3.207107 -6.375000 +v 0.000000 3.500000 -6.375000 +v 0.000000 3.500000 -6.500000 +v -0.707107 3.207107 -6.500000 +v -1.000000 2.500000 -6.500000 +v -0.707107 1.792893 -6.500000 +v 0.000000 1.500000 -6.500000 +v 0.707107 1.792893 -6.500000 +v 1.000000 2.500000 -6.500000 +v 0.707107 3.207107 -6.500000 +v -0.250000 0.000000 -5.250000 +v 0.250000 0.000000 -5.250000 +v -0.250000 0.000000 -5.750000 +v 0.250000 0.000000 -5.750000 +v -0.250000 0.125000 -5.750000 +v -0.250000 0.125000 -5.250000 +v 0.250000 0.125000 -5.250000 +v 0.250000 0.125000 -5.750000 +v -0.125000 0.125000 -5.625000 +v -0.125000 0.125000 -5.375000 +v 0.125000 0.125000 -5.375000 +v 0.125000 0.125000 -5.625000 +v -0.125000 1.750000 -5.625000 +v -0.125000 1.750000 -5.375000 +v 0.125000 1.750000 -5.375000 +v 0.125000 1.750000 -5.625000 +v 0.000000 4.500000 -2.500000 +v -0.956709 4.500000 -2.309699 +v -1.767767 4.500000 -1.767767 +v -2.309699 4.500000 -0.956709 +v -2.500000 4.500000 0.000000 +v -2.309699 4.500000 0.956709 +v -1.767767 4.500000 1.767767 +v -0.956709 4.500000 2.309699 +v 0.000000 4.500000 2.500000 +v 0.956708 4.500000 2.309699 +v 1.767767 4.500000 1.767768 +v 2.309699 4.500000 0.956709 +v 2.500000 4.500000 -0.000000 +v 2.309698 4.500000 -0.956709 +v 1.767766 4.500000 -1.767768 +v 0.956707 4.500000 -2.309699 +v 0.000000 5.000000 -2.500000 +v -0.956709 5.000000 -2.309699 +v -1.767767 5.000000 -1.767767 +v -2.309699 5.000000 -0.956709 +v -2.500000 5.000000 0.000000 +v -2.309699 5.000000 0.956709 +v -1.767767 5.000000 1.767767 +v -0.956709 5.000000 2.309699 +v 0.000000 5.000000 2.500000 +v 0.956708 5.000000 2.309699 +v 1.767767 5.000000 1.767768 +v 2.309699 5.000000 0.956709 +v 2.500000 5.000000 -0.000000 +v 2.309698 5.000000 -0.956709 +v 1.767766 5.000000 -1.767768 +v 0.956707 5.000000 -2.309699 +v 1.250000 2.562500 -2.562500 +v 1.250000 2.437500 -2.562500 +v 1.250000 2.562500 -7.437500 +v 1.250000 2.437500 -7.437500 +v 1.125000 2.562500 -7.437500 +v 1.125000 2.562500 -2.562500 +v 1.125000 2.437500 -2.562500 +v 1.125000 2.437500 -7.437500 +v 1.125000 2.437500 -3.437500 +v 1.125000 2.562500 -3.437500 +v 1.125000 2.562500 -2.437500 +v 1.125000 2.437500 -2.437500 +v 1.125000 2.437500 -3.562500 +v 1.125000 2.562500 -3.562500 +v 1.125000 2.437500 -7.562500 +v 1.125000 2.562500 -7.562500 +v 0.937500 2.562500 -2.562500 +v 0.937500 2.437500 -2.562500 +v 1.000000 2.437500 -7.437500 +v 1.000000 2.562500 -7.437500 +v 0.937500 2.562500 -2.437500 +v 0.937500 2.437500 -2.437500 +v 1.000000 2.437500 -7.562500 +v 1.000000 2.562500 -7.562500 +v 0.937500 2.562500 -3.562500 +v 0.937500 2.437500 -3.562500 +v 0.937500 2.562500 -3.437500 +v 0.937500 2.437500 -3.437500 +v 1.125000 2.437500 -4.437500 +v 1.125000 2.562500 -4.437500 +v 1.125000 2.437500 -4.562500 +v 1.125000 2.562500 -4.562500 +v 0.937500 2.562500 -4.562500 +v 0.937500 2.437500 -4.562500 +v 0.937500 2.562500 -4.437500 +v 0.937500 2.437500 -4.437500 +v 1.125000 2.437500 -5.437500 +v 1.125000 2.562500 -5.437500 +v 1.125000 2.437500 -5.562500 +v 1.125000 2.562500 -5.562500 +v 0.937500 2.562500 -5.562500 +v 0.937500 2.437500 -5.562500 +v 0.937500 2.562500 -5.437500 +v 0.937500 2.437500 -5.437500 +v -1.250000 2.437500 -2.562500 +v -1.250000 2.562500 -2.562500 +v -1.250000 2.437500 -7.437500 +v -1.250000 2.562500 -7.437500 +v -1.125000 2.437500 -7.437500 +v -1.125000 2.437500 -2.562500 +v -1.125000 2.562500 -2.562500 +v -1.125000 2.562500 -7.437500 +v -1.125000 2.562500 -3.437500 +v -1.125000 2.437500 -3.437500 +v -1.125000 2.437500 -2.437500 +v -1.125000 2.562500 -2.437500 +v -1.125000 2.562500 -3.562500 +v -1.125000 2.437500 -3.562500 +v -1.125000 2.562500 -7.562500 +v -1.125000 2.437500 -7.562500 +v -0.937500 2.437500 -2.562500 +v -0.937500 2.562500 -2.562500 +v -1.000000 2.562500 -7.437500 +v -1.000000 2.437500 -7.437500 +v -0.937500 2.437500 -2.437500 +v -0.937500 2.562500 -2.437500 +v -1.000000 2.562500 -7.562500 +v -1.000000 2.437500 -7.562500 +v -0.937500 2.437500 -3.562500 +v -0.937500 2.562500 -3.562500 +v -0.937500 2.437500 -3.437500 +v -0.937500 2.562500 -3.437500 +v -1.125000 2.562500 -4.437500 +v -1.125000 2.437500 -4.437500 +v -1.125000 2.562500 -4.562500 +v -1.125000 2.437500 -4.562500 +v -0.937500 2.437500 -4.562500 +v -0.937500 2.562500 -4.562500 +v -0.937500 2.437500 -4.437500 +v -0.937500 2.562500 -4.437500 +v -1.125000 2.562500 -5.437500 +v -1.125000 2.437500 -5.437500 +v -1.125000 2.562500 -5.562500 +v -1.125000 2.437500 -5.562500 +v -0.937500 2.437500 -5.562500 +v -0.937500 2.562500 -5.562500 +v -0.937500 2.437500 -5.437500 +v -0.937500 2.562500 -5.437500 +vt 0.218809 0.299422 +vt 0.037601 0.299422 +vt 0.037602 0.051455 +vt 0.000072 0.561403 +vt 0.128205 0.386064 +vt 0.256338 0.561404 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.298246 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.512821 0.280702 +vt 0.525641 0.298246 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.269231 0.350877 +vt 0.256410 0.333333 +vt 0.512821 0.350877 +vt 0.525641 0.350877 +vt 0.256410 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.298246 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.525641 0.298246 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.512821 0.280702 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.256410 0.350877 +vt 0.256410 0.333333 +vt 0.525641 0.350877 +vt 0.512821 0.350877 +vt 0.256410 0.298246 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.512821 0.298246 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.500000 0.315789 +vt 0.282051 0.298246 +vt 0.500000 0.298246 +vt 0.282051 0.350877 +vt 0.500000 0.333333 +vt 0.500000 0.350877 +vt 0.512821 0.280702 +vt 0.525641 0.298246 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.269231 0.350877 +vt 0.256410 0.333333 +vt 0.512821 0.350877 +vt 0.525641 0.350877 +vt 0.256410 0.298246 +vt 0.282051 0.333333 +vt 0.500000 0.280702 +vt 0.282051 0.280702 +vt 0.282051 0.315789 +vt 0.269231 0.333333 +vt 0.512821 0.333333 +vt 0.512821 0.315789 +vt 0.269231 0.280702 +vt 0.525641 0.298246 +vt 0.525641 0.315789 +vt 0.269231 0.298246 +vt 0.256410 0.280702 +vt 0.269231 0.280702 +vt 0.512821 0.280702 +vt 0.512821 0.280702 +vt 0.512821 0.298246 +vt 0.269231 0.333333 +vt 0.256410 0.315789 +vt 0.269231 0.315789 +vt 0.525641 0.333333 +vt 0.512821 0.333333 +vt 0.256410 0.350877 +vt 0.256410 0.333333 +vt 0.525641 0.350877 +vt 0.512821 0.350877 +vt 0.256410 0.298246 +vt 0.387590 0.487157 +vt 0.387590 0.635650 +vt 0.279077 0.635650 +vt 0.410064 0.561404 +vt 0.333333 0.666404 +vt 0.256603 0.561404 +vt 0.410509 0.543860 +vt 0.461538 0.474030 +vt 0.512568 0.543860 +vt 0.425455 0.593237 +vt 0.425455 0.494482 +vt 0.497622 0.494482 +vt 0.512821 0.614035 +vt 0.525641 0.578947 +vt 0.525641 0.614035 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.525641 0.578947 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.512821 0.614035 +vt 0.525641 0.614035 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.512821 0.614035 +vt 0.525641 0.578947 +vt 0.525641 0.614035 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.525641 0.578947 +vt 0.525641 0.508772 +vt 0.564103 0.578947 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.512821 0.614035 +vt 0.525641 0.614035 +vt 0.512821 0.473684 +vt 0.525641 0.473684 +vt 0.032051 0.868421 +vt 0.025641 0.846491 +vt 0.032051 0.842105 +vt 0.032051 0.815789 +vt 0.025641 0.837719 +vt 0.025641 0.820175 +vt 0.032051 0.763158 +vt 0.025641 0.785088 +vt 0.025641 0.767544 +vt 0.032051 0.947368 +vt 0.025641 0.925439 +vt 0.032051 0.921053 +vt 0.032051 0.894737 +vt 0.025641 0.872807 +vt 0.025641 0.793860 +vt 0.032051 0.789474 +vt 0.025641 0.741228 +vt 0.032051 0.736842 +vt 0.025641 0.916667 +vt 0.025641 0.899123 +vt 0.333333 0.789452 +vt 0.314118 0.763158 +vt 0.333333 0.736863 +vt 0.717949 0.614035 +vt 0.615385 0.473684 +vt 0.717949 0.473684 +vt 0.615385 0.929825 +vt 0.717949 0.789474 +vt 0.717949 0.929825 +vt 0.512821 0.614035 +vt 0.615385 0.789474 +vt 0.512821 0.859649 +vt 0.820513 0.614035 +vt 0.615385 0.614035 +vt 0.410256 0.859649 +vt 0.410256 0.614035 +vt 0.903846 0.280702 +vt 0.878205 0.315789 +vt 0.878205 0.280702 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.878205 0.324561 +vt 0.903846 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.871795 0.877193 +vt 0.948718 0.771930 +vt 0.948718 0.877193 +vt 0.948718 0.701754 +vt 0.871795 0.771930 +vt 0.871795 0.701754 +vt 0.871795 0.947368 +vt 0.948718 0.947368 +vt 0.820513 0.771930 +vt 0.820513 0.877193 +vt 1.000000 0.877193 +vt 1.000000 0.771930 +vt 0.442308 0.859649 +vt 0.339744 0.894737 +vt 0.339744 0.859649 +vt 0.339744 0.964912 +vt 0.442308 1.000000 +vt 0.339744 1.000000 +vt 0.442308 0.894737 +vt 0.467949 0.894737 +vt 0.442308 0.964912 +vt 0.314103 0.894737 +vt 0.314103 1.000000 +vt 0.339744 0.894737 +vt 0.442308 0.859649 +vt 0.442308 0.894737 +vt 0.442308 1.000000 +vt 0.339744 0.964912 +vt 0.442308 0.964912 +vt 0.314103 0.894737 +vt 0.314103 1.000000 +vt 0.467949 0.894737 +vt 0.541667 0.298246 +vt 0.791667 0.307018 +vt 0.541667 0.307018 +vt 0.791667 0.280702 +vt 0.541667 0.289474 +vt 0.541667 0.280702 +vt 0.791667 0.315789 +vt 0.798077 0.315789 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.791667 0.289474 +vt 0.791667 0.298246 +vt 0.541667 0.315789 +vt 0.798077 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.315789 +vt 0.535256 0.289474 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.798077 0.280702 +vt 0.804487 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.804487 0.315789 +vt 0.798077 0.315789 +vt 0.798077 0.298246 +vt 0.804487 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.804487 0.298246 +vt 0.525641 0.298246 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.903846 0.280702 +vt 0.878205 0.315789 +vt 0.878205 0.280702 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.878205 0.324561 +vt 0.903846 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.903846 0.315789 +vt 0.878205 0.324561 +vt 0.878205 0.315789 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.903846 0.324561 +vt 0.903846 0.324561 +vt 0.884615 0.333333 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.897436 0.333333 +vt 0.884615 0.447368 +vt 0.218809 0.299422 +vt 0.037601 0.299422 +vt 0.037602 0.051455 +vt 0.000072 0.561403 +vt 0.128205 0.386064 +vt 0.256338 0.561404 +vt 0.541667 0.298246 +vt 0.791667 0.307018 +vt 0.541667 0.307018 +vt 0.791667 0.280702 +vt 0.541667 0.289474 +vt 0.541667 0.280702 +vt 0.791667 0.315789 +vt 0.798077 0.315789 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.791667 0.289474 +vt 0.791667 0.298246 +vt 0.541667 0.315789 +vt 0.798077 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.315789 +vt 0.535256 0.289474 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.798077 0.280702 +vt 0.804487 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.804487 0.315789 +vt 0.798077 0.315789 +vt 0.798077 0.298246 +vt 0.804487 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.804487 0.298246 +vt 0.525641 0.298246 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.541667 0.298246 +vt 0.791667 0.307018 +vt 0.541667 0.307018 +vt 0.791667 0.280702 +vt 0.541667 0.289474 +vt 0.541667 0.280702 +vt 0.791667 0.315789 +vt 0.798077 0.315789 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.791667 0.289474 +vt 0.791667 0.298246 +vt 0.541667 0.315789 +vt 0.798077 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.315789 +vt 0.535256 0.289474 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.798077 0.280702 +vt 0.804487 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.798077 0.289474 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.804487 0.315789 +vt 0.798077 0.315789 +vt 0.798077 0.298246 +vt 0.804487 0.307018 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.804487 0.298246 +vt 0.525641 0.298246 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.535256 0.315789 +vt 0.525641 0.307018 +vt 0.535256 0.307018 +vt 0.535256 0.289474 +vt 0.525641 0.280702 +vt 0.535256 0.280702 +vt 0.535256 0.298246 +vt 0.525641 0.289474 +vt 0.525641 0.298246 +vt 0.218809 0.051455 +vt 0.246584 0.108339 +vt 0.256338 0.175439 +vt 0.246584 0.242538 +vt 0.177239 0.337431 +vt 0.128205 0.350778 +vt 0.079171 0.337431 +vt 0.009826 0.242538 +vt 0.000072 0.175438 +vt 0.009826 0.108339 +vt 0.079171 0.013446 +vt 0.128205 0.000099 +vt 0.177239 0.013446 +vt 0.246584 0.628503 +vt 0.218809 0.685387 +vt 0.177240 0.723396 +vt 0.128205 0.736743 +vt 0.079171 0.723396 +vt 0.037602 0.685387 +vt 0.009826 0.628503 +vt 0.009826 0.494304 +vt 0.037602 0.437420 +vt 0.079171 0.399411 +vt 0.177239 0.399411 +vt 0.218809 0.437420 +vt 0.246585 0.494304 +vt 0.525641 0.280702 +vt 0.256410 0.350877 +vt 0.525641 0.280702 +vt 0.269231 0.350877 +vt 0.525641 0.280702 +vt 0.256410 0.350877 +vt 0.525641 0.280702 +vt 0.269231 0.350877 +vt 0.404223 0.521222 +vt 0.410064 0.561404 +vt 0.404223 0.601585 +vt 0.362697 0.658411 +vt 0.333333 0.666404 +vt 0.303970 0.658411 +vt 0.262443 0.601585 +vt 0.256603 0.561404 +vt 0.262443 0.521222 +vt 0.279077 0.487157 +vt 0.303970 0.464396 +vt 0.333333 0.456403 +vt 0.362697 0.464396 +vt 0.404223 0.601585 +vt 0.387590 0.635650 +vt 0.362697 0.658411 +vt 0.303970 0.658411 +vt 0.279077 0.635650 +vt 0.262443 0.601585 +vt 0.262443 0.521222 +vt 0.279077 0.487157 +vt 0.303970 0.464396 +vt 0.333333 0.456404 +vt 0.362697 0.464396 +vt 0.387590 0.487158 +vt 0.404223 0.521222 +vt 0.508684 0.570583 +vt 0.497622 0.593237 +vt 0.481067 0.608374 +vt 0.461538 0.613690 +vt 0.442010 0.608374 +vt 0.425455 0.593237 +vt 0.414393 0.570582 +vt 0.414393 0.517137 +vt 0.425455 0.494482 +vt 0.442010 0.479345 +vt 0.481067 0.479345 +vt 0.497622 0.494482 +vt 0.508684 0.517137 +vt 0.508684 0.517137 +vt 0.512568 0.543860 +vt 0.508684 0.570583 +vt 0.497622 0.593237 +vt 0.481067 0.608374 +vt 0.461538 0.613690 +vt 0.442010 0.608374 +vt 0.414393 0.570583 +vt 0.410509 0.543860 +vt 0.414393 0.517137 +vt 0.442010 0.479345 +vt 0.461538 0.474030 +vt 0.481067 0.479345 +vt 0.564103 0.508772 +vt 0.564103 0.508772 +vt 0.564103 0.508772 +vt 0.564103 0.508772 +vt 0.025641 0.864035 +vt 0.025641 0.942982 +vt 0.025641 0.890351 +vt 0.025641 0.811404 +vt 0.025641 0.758772 +vt 0.319746 0.781751 +vt 0.319746 0.744565 +vt 0.346920 0.744565 +vt 0.352549 0.763158 +vt 0.346921 0.781751 +vt 0.820513 0.859649 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.467949 1.000000 +vt 0.339744 0.859649 +vt 0.339744 1.000000 +vt 0.467949 1.000000 +vt 0.525641 0.315789 +vt 0.804487 0.280702 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.897436 0.447368 +vt 0.218809 0.051455 +vt 0.246584 0.108339 +vt 0.256338 0.175439 +vt 0.246584 0.242538 +vt 0.177239 0.337431 +vt 0.128205 0.350778 +vt 0.079171 0.337431 +vt 0.009826 0.242538 +vt 0.000072 0.175438 +vt 0.009826 0.108339 +vt 0.079171 0.013446 +vt 0.128205 0.000099 +vt 0.177239 0.013446 +vt 0.246584 0.628503 +vt 0.218809 0.685387 +vt 0.177240 0.723396 +vt 0.128205 0.736743 +vt 0.079171 0.723396 +vt 0.037602 0.685387 +vt 0.009826 0.628503 +vt 0.009826 0.494304 +vt 0.037602 0.437420 +vt 0.079171 0.399411 +vt 0.177239 0.399411 +vt 0.218809 0.437420 +vt 0.246585 0.494304 +vt 0.525641 0.315789 +vt 0.804487 0.280702 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.804487 0.280702 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.525641 0.315789 +vt 0.512821 0.350877 +vt 0.461538 0.385965 +vt 0.461538 0.350877 +vt 0.153846 0.350877 +vt 0.102564 0.385965 +vt 0.102564 0.350877 +vt 0.564103 0.350877 +vt 0.512821 0.385965 +vt 0.205128 0.350877 +vt 0.153846 0.385965 +vt 0.666667 0.350877 +vt 0.615385 0.385965 +vt 0.615385 0.350877 +vt 0.564103 0.385965 +vt 0.256410 0.350877 +vt 0.205128 0.385965 +vt 0.717949 0.350877 +vt 0.666667 0.385965 +vt 0.307692 0.350877 +vt 0.256410 0.385965 +vt 0.769231 0.350877 +vt 0.717949 0.385965 +vt 0.358974 0.350877 +vt 0.307692 0.385965 +vt 0.820513 0.350877 +vt 0.769231 0.385965 +vt 0.410256 0.350877 +vt 0.358974 0.385965 +vt 0.051282 0.350877 +vt 0.000000 0.385965 +vt 0.000000 0.350877 +vt 0.410256 0.385965 +vt 0.051282 0.385965 +vt 0.705128 0.000000 +vt 0.660256 0.280702 +vt 0.660256 0.000000 +vt 0.391026 0.000000 +vt 0.346154 0.280702 +vt 0.346154 0.000000 +vt 0.750000 0.000000 +vt 0.705128 0.280702 +vt 0.435897 0.000000 +vt 0.391026 0.280702 +vt 0.839744 -0.000000 +vt 0.794872 0.280702 +vt 0.794872 0.000000 +vt 0.750000 0.280702 +vt 0.480769 0.000000 +vt 0.435897 0.280702 +vt 0.884615 -0.000000 +vt 0.839744 0.280702 +vt 0.525641 0.000000 +vt 0.480769 0.280702 +vt 0.929487 -0.000000 +vt 0.884615 0.280702 +vt 0.570513 0.000000 +vt 0.525641 0.280702 +vt 0.974359 -0.000000 +vt 0.929487 0.280702 +vt 0.615385 0.000000 +vt 0.570513 0.280702 +vt 0.301282 0.000000 +vt 0.256410 0.280702 +vt 0.256410 0.000000 +vt 0.615385 0.280702 +vt 0.301282 0.280702 +vt 0.544872 0.385965 +vt 0.516026 0.456140 +vt 0.516026 0.385965 +vt 0.342949 0.385965 +vt 0.314103 0.456140 +vt 0.314103 0.385965 +vt 0.573718 0.385965 +vt 0.544872 0.456140 +vt 0.371795 0.385965 +vt 0.342949 0.456140 +vt 0.631410 0.385965 +vt 0.602564 0.456140 +vt 0.602564 0.385965 +vt 0.573718 0.456140 +vt 0.400641 0.385965 +vt 0.371795 0.456140 +vt 0.660256 0.385965 +vt 0.631410 0.456140 +vt 0.429487 0.385965 +vt 0.400641 0.456140 +vt 0.689103 0.385965 +vt 0.660256 0.456140 +vt 0.458333 0.385965 +vt 0.429487 0.456140 +vt 0.717949 0.385965 +vt 0.689103 0.456140 +vt 0.487179 0.385965 +vt 0.458333 0.456140 +vt 0.285256 0.385965 +vt 0.256410 0.456140 +vt 0.256410 0.385965 +vt 0.487179 0.456140 +vt 0.285256 0.456140 +vt 0.429487 0.456140 +vt 0.458333 0.385965 +vt 0.458333 0.456140 +vt 0.631410 0.456140 +vt 0.660256 0.385965 +vt 0.660256 0.456140 +vt 0.400641 0.456140 +vt 0.429487 0.385965 +vt 0.602564 0.456140 +vt 0.631410 0.385965 +vt 0.342949 0.456140 +vt 0.371795 0.385965 +vt 0.371795 0.456140 +vt 0.400641 0.385965 +vt 0.573718 0.456140 +vt 0.602564 0.385965 +vt 0.314103 0.456140 +vt 0.342949 0.385965 +vt 0.544872 0.456140 +vt 0.573718 0.385965 +vt 0.285256 0.456140 +vt 0.314103 0.385965 +vt 0.516026 0.456140 +vt 0.544872 0.385965 +vt 0.256410 0.456140 +vt 0.285256 0.385965 +vt 0.487179 0.456140 +vt 0.516026 0.385965 +vt 0.689103 0.456140 +vt 0.717949 0.385965 +vt 0.717949 0.456140 +vt 0.487179 0.385965 +vt 0.689103 0.385965 +vt 0.544872 0.456140 +vt 0.525641 0.473684 +vt 0.525641 0.456140 +vt 0.717949 0.456140 +vt 0.698718 0.473684 +vt 0.698718 0.456140 +vt 0.564103 0.456140 +vt 0.544872 0.473684 +vt 0.429487 0.456140 +vt 0.410256 0.473684 +vt 0.410256 0.456140 +vt 0.583333 0.456140 +vt 0.564103 0.473684 +vt 0.448718 0.456140 +vt 0.429487 0.473684 +vt 0.602564 0.456140 +vt 0.583333 0.473684 +vt 0.467949 0.456140 +vt 0.448718 0.473684 +vt 0.621795 0.456140 +vt 0.602564 0.473684 +vt 0.487179 0.456140 +vt 0.467949 0.473684 +vt 0.660256 0.456140 +vt 0.641026 0.473684 +vt 0.641026 0.456140 +vt 0.621795 0.473684 +vt 0.506410 0.456140 +vt 0.487179 0.473684 +vt 0.679487 0.456140 +vt 0.660256 0.473684 +vt 0.506410 0.473684 +vt 0.679487 0.473684 +vt 0.583333 0.473684 +vt 0.602564 0.456140 +vt 0.602564 0.473684 +vt 0.410256 0.473684 +vt 0.429487 0.456140 +vt 0.429487 0.473684 +vt 0.564103 0.473684 +vt 0.583333 0.456140 +vt 0.698718 0.473684 +vt 0.717949 0.456140 +vt 0.717949 0.473684 +vt 0.544872 0.473684 +vt 0.564103 0.456140 +vt 0.679487 0.473684 +vt 0.698718 0.456140 +vt 0.525641 0.473684 +vt 0.544872 0.456140 +vt 0.660256 0.473684 +vt 0.679487 0.456140 +vt 0.506410 0.473684 +vt 0.525641 0.456140 +vt 0.641026 0.473684 +vt 0.660256 0.456140 +vt 0.467949 0.473684 +vt 0.487179 0.456140 +vt 0.487179 0.473684 +vt 0.506410 0.456140 +vt 0.621795 0.473684 +vt 0.641026 0.456140 +vt 0.448718 0.473684 +vt 0.467949 0.456140 +vt 0.621795 0.456140 +vt 0.448718 0.456140 +vt 0.314103 0.842105 +vt 0.314103 0.815789 +vt 0.314103 0.763158 +vt 0.314103 0.921053 +vt 0.314103 0.868421 +vt 0.314103 0.789474 +vt 0.314103 0.736842 +vt 0.314103 0.894737 +vt 0.000000 0.820175 +vt 0.000000 0.767544 +vt 0.000000 0.925439 +vt 0.000000 0.872807 +vt 0.000000 0.793860 +vt -0.000000 0.741228 +vt 0.000000 0.899123 +vt 0.000000 0.846491 +vt 0.993590 0.451754 +vt 0.974359 0.482456 +vt 0.974359 0.447368 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.993590 0.293860 +vt 0.974359 0.324561 +vt 0.974359 0.289474 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.974359 0.500000 +vt 0.993590 0.530702 +vt 0.974359 0.535088 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.377193 +vt 0.923077 0.324561 +vt 0.942308 0.701754 +vt 0.923077 0.640351 +vt 0.974359 0.447368 +vt 0.993590 0.478070 +vt 0.974359 0.482456 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.974359 0.289474 +vt 0.993590 0.320175 +vt 0.974359 0.324561 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.974359 0.500000 +vt 0.993590 0.530702 +vt 0.974359 0.535088 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.482456 +vt 0.903846 0.451754 +vt 0.923077 0.447368 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.324561 +vt 0.993590 0.451754 +vt 0.974359 0.482456 +vt 0.974359 0.447368 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.993590 0.293860 +vt 0.974359 0.324561 +vt 0.974359 0.289474 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.974359 0.500000 +vt 0.993590 0.530702 +vt 0.974359 0.535088 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.324561 +vt 0.903846 0.293860 +vt 0.923077 0.289474 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.377193 +vt 0.923077 0.482456 +vt 0.974359 0.447368 +vt 0.993590 0.478070 +vt 0.974359 0.482456 +vt 0.993590 0.399123 +vt 0.974359 0.429825 +vt 0.974359 0.394737 +vt 0.974359 0.342105 +vt 0.993590 0.372807 +vt 0.974359 0.377193 +vt 0.974359 0.289474 +vt 0.993590 0.320175 +vt 0.974359 0.324561 +vt 0.993590 0.662281 +vt 0.974359 0.692982 +vt 0.974359 0.657895 +vt 0.974359 0.605263 +vt 0.993590 0.635965 +vt 0.974359 0.640351 +vt 0.993590 0.557018 +vt 0.974359 0.587719 +vt 0.974359 0.552632 +vt 0.993590 0.504386 +vt 0.974359 0.535088 +vt 0.974359 0.500000 +vt 0.955128 0.543860 +vt 0.942308 0.491228 +vt 0.955128 0.491228 +vt 0.955128 0.596491 +vt 0.942308 0.543860 +vt 0.955128 0.649123 +vt 0.942308 0.596491 +vt 0.955128 0.701754 +vt 0.942308 0.649123 +vt 0.955128 0.333333 +vt 0.942308 0.280702 +vt 0.955128 0.280702 +vt 0.955128 0.385965 +vt 0.942308 0.333333 +vt 0.955128 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.640351 +vt 0.903846 0.609649 +vt 0.923077 0.605263 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.324561 +vt 0.923077 0.482456 +vt 0.948718 0.543860 +vt 0.942308 0.491228 +vt 0.948718 0.491228 +vt 0.948718 0.596491 +vt 0.942308 0.543860 +vt 0.948718 0.649123 +vt 0.942308 0.596491 +vt 0.948718 0.701754 +vt 0.942308 0.649123 +vt 0.948718 0.333333 +vt 0.942308 0.280702 +vt 0.948718 0.280702 +vt 0.948718 0.385965 +vt 0.942308 0.333333 +vt 0.948718 0.438596 +vt 0.942308 0.385965 +vt 0.942308 0.438596 +vt 0.923077 0.587719 +vt 0.903846 0.557018 +vt 0.923077 0.552632 +vt 0.923077 0.605263 +vt 0.903846 0.635965 +vt 0.903846 0.609649 +vt 0.923077 0.692982 +vt 0.903846 0.662281 +vt 0.923077 0.657895 +vt 0.923077 0.289474 +vt 0.903846 0.320175 +vt 0.903846 0.293860 +vt 0.923077 0.342105 +vt 0.903846 0.372807 +vt 0.903846 0.346491 +vt 0.923077 0.429825 +vt 0.903846 0.399123 +vt 0.923077 0.394737 +vt 0.923077 0.447368 +vt 0.903846 0.478070 +vt 0.903846 0.451754 +vt 0.923077 0.500000 +vt 0.903846 0.530702 +vt 0.903846 0.504386 +vt 0.923077 0.377193 +vt 0.923077 0.640351 +vt 0.923077 0.482456 +vt 0.512821 0.350877 +vt 0.461538 0.385965 +vt 0.461538 0.350877 +vt 0.153846 0.350877 +vt 0.102564 0.385965 +vt 0.102564 0.350877 +vt 0.564103 0.350877 +vt 0.512821 0.385965 +vt 0.205128 0.350877 +vt 0.153846 0.385965 +vt 0.666667 0.350877 +vt 0.615385 0.385965 +vt 0.615385 0.350877 +vt 0.564103 0.385965 +vt 0.256410 0.350877 +vt 0.205128 0.385965 +vt 0.717949 0.350877 +vt 0.666667 0.385965 +vt 0.307692 0.350877 +vt 0.256410 0.385965 +vt 0.769231 0.350877 +vt 0.717949 0.385965 +vt 0.358974 0.350877 +vt 0.307692 0.385965 +vt 0.820513 0.350877 +vt 0.769231 0.385965 +vt 0.410256 0.350877 +vt 0.358974 0.385965 +vt 0.051282 0.350877 +vt 0.000000 0.385965 +vt 0.000000 0.350877 +vt 0.410256 0.385965 +vt 0.051282 0.385965 +vt 0.820513 0.385965 +vt 0.974359 0.280702 +vt 0.717949 0.456140 +vt 0.256410 0.385965 +vt 0.717949 0.473684 +vt 0.410256 0.456140 +vt 0.314103 0.947368 +vt 0.000000 0.837719 +vt 0.000000 0.785088 +vt 0.000000 0.942982 +vt 0.000000 0.890351 +vt 0.000000 0.811404 +vt 0.000000 0.758772 +vt 0.000000 0.916667 +vt 0.000000 0.864035 +vt 0.993590 0.478070 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.320175 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.504386 +vt 0.903846 0.583333 +vt 0.903846 0.688596 +vt 0.903846 0.425439 +vt 0.923077 0.482456 +vt 0.923077 0.535088 +vt 0.993590 0.451754 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.293860 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.504386 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.923077 0.640351 +vt 0.903846 0.688596 +vt 0.923077 0.377193 +vt 0.903846 0.425439 +vt 0.903846 0.478070 +vt 0.923077 0.535088 +vt 0.993590 0.478070 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.320175 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.504386 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.923077 0.640351 +vt 0.903846 0.688596 +vt 0.903846 0.320175 +vt 0.903846 0.425439 +vt 0.923077 0.535088 +vt 0.993590 0.451754 +vt 0.993590 0.425439 +vt 0.993590 0.346491 +vt 0.993590 0.293860 +vt 0.993590 0.688596 +vt 0.993590 0.609649 +vt 0.993590 0.583333 +vt 0.993590 0.530702 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.903846 0.635965 +vt 0.903846 0.688596 +vt 0.923077 0.377193 +vt 0.903846 0.425439 +vt 0.923077 0.535088 +vt 0.942308 0.701754 +vt 0.903846 0.583333 +vt 0.903846 0.688596 +vt 0.923077 0.324561 +vt 0.903846 0.425439 +vt 0.923077 0.535088 +vt 0.820513 0.385965 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.5000 -0.7071 0.5000 +vn 0.5000 0.7071 0.5000 +vn 0.5000 -0.7071 -0.5000 +vn 0.5000 0.7071 -0.5000 +vn -0.5000 -0.7071 -0.5000 +vn -0.5000 0.7071 -0.5000 +vn -0.5000 -0.7071 0.5000 +vn -0.5000 0.7071 0.5000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.8944 -0.4472 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.9239 0.0000 -0.3827 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn -0.9239 0.0000 0.3827 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.5000 -0.5000 -0.7071 +vn -0.0000 -0.7071 -0.7071 +vn -0.5000 0.5000 -0.7071 +vn 0.5000 0.5000 -0.7071 +vn 0.5000 -0.5000 -0.7071 +vn 0.5000 -0.5000 0.7071 +vn 0.5000 0.5000 0.7071 +vn -0.5000 0.5000 0.7071 +vn -0.5000 -0.5000 0.7071 +vn -0.0000 -0.7071 0.7071 +s off +f 283/348/71 279/349/71 275/350/71 +f 293/351/72 297/352/72 285/353/72 +f 335/354/73 334/355/73 333/356/73 +f 339/357/74 337/358/74 338/359/74 +f 336/360/75 339/357/75 334/355/75 +f 333/361/76 337/358/76 335/362/76 +f 340/363/75 336/360/75 341/364/75 +f 334/355/75 339/357/75 344/365/75 +f 339/357/77 343/366/77 344/367/77 +f 335/362/76 337/358/76 342/368/76 +f 343/366/71 352/369/71 344/367/71 +f 342/370/76 348/371/76 335/372/76 +f 338/359/76 333/361/76 343/373/76 +f 359/374/75 357/375/75 358/376/75 +f 355/377/76 354/378/76 353/379/76 +f 333/380/76 351/381/76 343/366/76 +f 336/382/75 349/383/75 341/384/75 +f 344/367/75 346/385/75 334/386/75 +f 335/387/71 347/388/71 336/382/71 +f 333/389/72 346/385/72 345/390/72 +f 342/370/72 349/383/72 350/391/72 +f 340/363/78 342/370/78 337/358/78 +f 356/392/73 359/374/73 354/378/73 +f 353/393/74 357/375/74 355/394/74 +f 360/395/73 356/392/73 361/396/73 +f 354/378/73 359/374/73 364/397/73 +f 359/374/79 363/398/79 364/399/79 +f 355/394/74 357/375/74 362/400/74 +f 364/399/71 371/401/71 372/402/71 +f 362/403/74 368/404/74 355/405/74 +f 358/376/74 353/393/74 363/406/74 +f 353/407/74 371/401/74 363/398/74 +f 356/408/73 369/409/73 361/410/73 +f 364/399/73 366/411/73 354/412/73 +f 356/408/71 368/413/71 367/414/71 +f 354/412/72 365/415/72 353/416/72 +f 361/410/72 370/417/72 362/403/72 +f 360/395/80 362/403/80 357/375/80 +f 375/418/74 374/419/74 373/420/74 +f 379/421/73 377/422/73 378/423/73 +f 376/424/76 379/421/76 374/419/76 +f 373/425/75 377/422/75 375/426/75 +f 380/427/76 376/424/76 381/428/76 +f 374/419/76 379/421/76 384/429/76 +f 378/423/81 384/430/81 379/421/81 +f 375/426/75 377/422/75 382/431/75 +f 383/432/71 392/433/71 384/430/71 +f 382/434/75 388/435/75 375/436/75 +f 378/423/75 373/425/75 383/437/75 +f 399/438/76 397/439/76 398/440/76 +f 395/441/75 394/442/75 393/443/75 +f 373/444/75 391/445/75 383/432/75 +f 376/446/76 389/447/76 381/448/76 +f 384/430/76 386/449/76 374/450/76 +f 375/451/71 387/452/71 376/446/71 +f 373/453/72 386/449/72 385/454/72 +f 382/434/72 389/447/72 390/455/72 +f 377/422/82 381/448/82 382/434/82 +f 396/456/74 399/438/74 394/442/74 +f 393/457/73 397/439/73 395/458/73 +f 400/459/74 396/456/74 401/460/74 +f 394/442/74 399/438/74 404/461/74 +f 398/440/83 404/462/83 399/438/83 +f 395/458/73 397/439/73 402/463/73 +f 404/462/71 411/464/71 412/465/71 +f 402/466/73 408/467/73 395/468/73 +f 398/440/73 393/457/73 403/469/73 +f 393/470/73 411/464/73 403/471/73 +f 396/472/74 409/473/74 401/474/74 +f 404/462/74 406/475/74 394/476/74 +f 396/472/71 408/477/71 407/478/71 +f 394/476/72 405/479/72 393/480/72 +f 401/474/72 410/481/72 402/466/72 +f 400/459/84 402/466/84 397/439/84 +f 447/482/71 459/483/71 455/484/71 +f 429/485/72 433/486/72 437/487/72 +f 501/488/72 505/489/72 493/490/72 +f 519/491/71 515/492/71 511/493/71 +f 553/494/73 552/495/73 554/496/73 +f 544/497/75 550/498/75 546/499/75 +f 551/500/73 556/501/73 552/495/73 +f 551/500/73 545/502/73 543/503/73 +f 547/504/75 546/499/75 548/505/75 +f 544/497/75 541/506/75 542/507/75 +f 569/508/74 568/509/74 570/510/74 +f 560/511/76 566/512/76 562/513/76 +f 567/514/74 572/515/74 568/509/74 +f 567/514/74 561/516/74 559/517/74 +f 563/518/76 562/513/76 564/519/76 +f 560/511/76 557/520/76 558/521/76 +f 574/522/85 589/523/85 573/524/85 +f 580/525/85 589/526/85 596/527/85 +f 578/528/85 595/529/85 594/530/85 +f 577/531/85 592/532/85 576/533/85 +f 575/534/85 590/535/85 574/522/85 +f 580/525/85 595/536/85 579/537/85 +f 578/528/85 593/538/85 577/539/85 +f 575/534/85 592/540/85 591/541/85 +f 598/542/85 599/543/85 601/544/85 +f 607/545/71 606/546/71 605/547/71 +f 611/548/86 609/549/86 610/550/86 +f 606/551/87 612/552/87 611/553/87 +f 605/554/88 609/549/88 607/545/88 +f 607/545/89 612/552/89 608/555/89 +f 606/551/85 610/556/85 605/557/85 +f 615/558/71 614/559/71 613/560/71 +f 620/561/72 623/562/72 619/563/72 +f 616/564/87 619/563/87 614/559/87 +f 613/565/88 617/566/88 615/567/88 +f 615/568/89 620/569/89 616/570/89 +f 614/571/85 618/572/85 613/573/85 +f 621/574/89 628/575/89 624/576/89 +f 618/577/72 621/578/72 617/566/72 +f 617/579/72 624/576/72 620/569/72 +f 619/580/72 622/581/72 618/572/72 +f 623/582/85 626/583/85 622/581/85 +f 624/584/87 627/585/87 623/562/87 +f 622/586/88 625/587/88 621/578/88 +f 635/588/72 633/589/72 634/590/72 +f 631/591/89 636/592/89 632/593/89 +f 630/594/85 634/590/85 629/595/85 +f 632/596/87 635/588/87 630/597/87 +f 629/598/88 633/589/88 631/599/88 +f 639/600/71 638/601/71 637/602/71 +f 643/603/90 641/604/90 642/605/90 +f 640/606/87 643/603/87 638/601/87 +f 639/607/89 644/608/89 640/606/89 +f 637/609/85 643/603/85 642/610/85 +f 647/611/71 646/612/71 645/613/71 +f 651/614/91 649/615/91 650/616/91 +f 648/617/89 649/615/89 652/618/89 +f 646/619/85 650/616/85 645/613/85 +f 645/613/88 649/615/88 647/611/88 +f 702/620/72 703/621/72 701/622/72 +f 705/623/71 707/624/71 706/625/71 +f 705/626/88 703/621/88 716/627/88 +f 707/628/89 717/629/89 706/630/89 +f 702/620/87 708/631/87 704/632/87 +f 703/621/88 706/633/88 701/622/88 +f 704/632/92 716/634/92 703/621/92 +f 714/635/88 727/636/88 710/637/88 +f 701/622/88 706/633/88 711/638/88 +f 707/624/87 702/620/87 712/639/87 +f 713/640/89 725/641/89 714/642/89 +f 705/643/85 719/644/85 708/645/85 +f 709/646/87 726/647/87 713/640/87 +f 704/632/87 708/631/87 715/648/87 +f 701/622/93 712/649/93 702/620/93 +f 712/649/87 718/650/87 707/628/87 +f 716/634/88 720/651/88 705/652/88 +f 715/653/89 724/654/89 716/634/89 +f 706/655/88 721/656/88 711/657/88 +f 708/645/87 723/658/87 715/653/87 +f 711/657/85 722/659/85 712/649/85 +f 710/637/85 728/660/85 709/646/85 +f 732/661/88 735/662/88 730/663/88 +f 731/664/89 733/665/89 732/666/89 +f 729/667/87 734/668/87 731/664/87 +f 730/663/85 736/669/85 729/667/85 +f 740/670/88 743/671/88 738/672/88 +f 739/673/89 741/674/89 740/675/89 +f 737/676/87 742/677/87 739/673/87 +f 738/672/85 744/678/85 737/676/85 +f 923/679/71 922/680/71 921/681/71 +f 928/682/72 931/683/72 927/684/72 +f 924/685/87 927/684/87 922/680/87 +f 921/686/88 925/687/88 923/688/88 +f 923/689/89 928/690/89 924/691/89 +f 922/692/85 926/693/85 921/694/85 +f 929/695/89 936/696/89 932/697/89 +f 926/698/72 929/699/72 925/687/72 +f 925/700/72 932/697/72 928/690/72 +f 927/701/72 930/702/72 926/693/72 +f 931/703/85 934/704/85 930/702/85 +f 932/705/87 935/706/87 931/683/87 +f 930/707/88 933/708/88 929/699/88 +f 951/709/71 947/710/71 943/711/71 +f 961/712/72 965/713/72 953/714/72 +f 970/715/87 971/716/87 969/717/87 +f 973/718/88 975/719/88 974/720/88 +f 973/721/72 971/716/72 984/722/72 +f 975/723/89 985/724/89 974/725/89 +f 970/715/71 976/726/71 972/727/71 +f 971/716/72 974/728/72 969/717/72 +f 972/727/75 984/729/75 971/716/75 +f 982/730/72 995/731/72 978/732/72 +f 969/717/72 974/728/72 979/733/72 +f 975/719/71 970/715/71 980/734/71 +f 981/735/89 993/736/89 982/737/89 +f 973/738/85 987/739/85 976/740/85 +f 977/741/71 994/742/71 981/735/71 +f 972/727/71 976/726/71 983/743/71 +f 969/717/74 980/744/74 970/715/74 +f 980/744/71 986/745/71 975/723/71 +f 984/729/72 988/746/72 973/747/72 +f 983/748/89 992/749/89 984/729/89 +f 974/750/72 989/751/72 979/752/72 +f 976/740/71 991/753/71 983/748/71 +f 979/752/85 990/754/85 980/744/85 +f 978/732/85 996/755/85 977/741/85 +f 1000/756/72 1003/757/72 998/758/72 +f 999/759/89 1001/760/89 1000/761/89 +f 997/762/71 1002/763/71 999/759/71 +f 998/758/85 1004/764/85 997/762/85 +f 1008/765/72 1011/766/72 1006/767/72 +f 1007/768/89 1009/769/89 1008/770/89 +f 1005/771/71 1010/772/71 1007/768/71 +f 1006/767/85 1012/773/85 1005/771/85 +f 1014/774/88 1015/775/88 1013/776/88 +f 1017/777/87 1019/778/87 1018/779/87 +f 1017/780/71 1015/775/71 1028/781/71 +f 1019/782/89 1029/783/89 1018/784/89 +f 1014/774/72 1020/785/72 1016/786/72 +f 1015/775/71 1018/787/71 1013/776/71 +f 1016/786/73 1028/788/73 1015/775/73 +f 1026/789/71 1039/790/71 1022/791/71 +f 1013/776/71 1018/787/71 1023/792/71 +f 1019/778/72 1014/774/72 1024/793/72 +f 1025/794/89 1037/795/89 1026/796/89 +f 1017/797/85 1031/798/85 1020/799/85 +f 1021/800/72 1038/801/72 1025/794/72 +f 1016/786/72 1020/785/72 1027/802/72 +f 1013/776/76 1024/803/76 1014/774/76 +f 1024/803/72 1030/804/72 1019/782/72 +f 1028/788/71 1032/805/71 1017/806/71 +f 1027/807/89 1036/808/89 1028/788/89 +f 1018/809/71 1033/810/71 1023/811/71 +f 1020/799/72 1035/812/72 1027/807/72 +f 1023/811/85 1034/813/85 1024/803/85 +f 1022/791/85 1040/814/85 1021/800/85 +f 1044/815/71 1047/816/71 1042/817/71 +f 1043/818/89 1045/819/89 1044/820/89 +f 1041/821/72 1046/822/72 1043/818/72 +f 1042/817/85 1048/823/85 1041/821/85 +f 1052/824/71 1055/825/71 1050/826/71 +f 1051/827/89 1053/828/89 1052/829/89 +f 1049/830/72 1054/831/72 1051/827/72 +f 1050/826/85 1056/832/85 1049/830/85 +f 271/833/71 270/834/71 269/835/71 +f 269/835/71 284/836/71 271/833/71 +f 284/836/71 283/348/71 271/833/71 +f 283/348/71 282/837/71 279/349/71 +f 282/837/71 281/838/71 279/349/71 +f 281/838/71 280/839/71 279/349/71 +f 279/349/71 278/840/71 275/350/71 +f 278/840/71 277/841/71 275/350/71 +f 277/841/71 276/842/71 275/350/71 +f 275/350/71 274/843/71 273/844/71 +f 273/844/71 272/845/71 271/833/71 +f 275/350/71 273/844/71 271/833/71 +f 271/833/71 283/348/71 275/350/71 +f 285/353/72 286/846/72 287/847/72 +f 287/847/72 288/848/72 289/849/72 +f 289/849/72 290/850/72 291/851/72 +f 291/851/72 292/852/72 293/351/72 +f 293/351/72 294/853/72 297/352/72 +f 294/853/72 295/854/72 297/352/72 +f 295/854/72 296/855/72 297/352/72 +f 297/352/72 298/856/72 285/353/72 +f 298/856/72 299/857/72 285/353/72 +f 299/857/72 300/858/72 285/353/72 +f 285/353/72 287/847/72 289/849/72 +f 289/849/72 291/851/72 293/351/72 +f 285/353/72 289/849/72 293/351/72 +f 335/354/73 336/360/73 334/355/73 +f 339/357/74 340/363/74 337/358/74 +f 336/360/75 340/363/75 339/357/75 +f 333/361/76 338/359/76 337/358/76 +f 339/357/77 338/359/77 343/366/77 +f 343/366/71 351/381/71 352/369/71 +f 342/370/76 350/391/76 348/371/76 +f 359/374/75 360/395/75 357/375/75 +f 355/377/76 356/392/76 354/378/76 +f 333/380/76 345/859/76 351/381/76 +f 336/382/75 347/388/75 349/383/75 +f 344/367/75 352/369/75 346/385/75 +f 335/387/71 348/860/71 347/388/71 +f 333/389/72 334/386/72 346/385/72 +f 342/370/72 341/384/72 349/383/72 +f 340/363/78 341/384/78 342/370/78 +f 356/392/73 360/395/73 359/374/73 +f 353/393/74 358/376/74 357/375/74 +f 359/374/79 358/376/79 363/398/79 +f 364/399/71 363/398/71 371/401/71 +f 362/403/74 370/417/74 368/404/74 +f 353/407/74 365/861/74 371/401/74 +f 356/408/73 367/414/73 369/409/73 +f 364/399/73 372/402/73 366/411/73 +f 356/408/71 355/862/71 368/413/71 +f 354/412/72 366/411/72 365/415/72 +f 361/410/72 369/409/72 370/417/72 +f 360/395/80 361/410/80 362/403/80 +f 375/418/74 376/424/74 374/419/74 +f 379/421/73 380/427/73 377/422/73 +f 376/424/76 380/427/76 379/421/76 +f 373/425/75 378/423/75 377/422/75 +f 378/423/81 383/432/81 384/430/81 +f 383/432/71 391/445/71 392/433/71 +f 382/434/75 390/455/75 388/435/75 +f 399/438/76 400/459/76 397/439/76 +f 395/441/75 396/456/75 394/442/75 +f 373/444/75 385/863/75 391/445/75 +f 376/446/76 387/452/76 389/447/76 +f 384/430/76 392/433/76 386/449/76 +f 375/451/71 388/864/71 387/452/71 +f 373/453/72 374/450/72 386/449/72 +f 382/434/72 381/448/72 389/447/72 +f 377/422/82 380/427/82 381/448/82 +f 396/456/74 400/459/74 399/438/74 +f 393/457/73 398/440/73 397/439/73 +f 398/440/83 403/471/83 404/462/83 +f 404/462/71 403/471/71 411/464/71 +f 402/466/73 410/481/73 408/467/73 +f 393/470/73 405/865/73 411/464/73 +f 396/472/74 407/478/74 409/473/74 +f 404/462/74 412/465/74 406/475/74 +f 396/472/71 395/866/71 408/477/71 +f 394/476/72 406/475/72 405/479/72 +f 401/474/72 409/473/72 410/481/72 +f 400/459/84 401/474/84 402/466/84 +f 447/482/71 446/867/71 459/483/71 +f 446/867/71 445/868/71 459/483/71 +f 445/868/71 460/869/71 459/483/71 +f 459/483/71 458/870/71 457/871/71 +f 457/871/71 456/872/71 455/484/71 +f 455/484/71 454/873/71 453/874/71 +f 453/874/71 452/875/71 455/484/71 +f 452/875/71 451/876/71 455/484/71 +f 451/876/71 450/877/71 449/878/71 +f 449/878/71 448/879/71 447/482/71 +f 459/483/71 457/871/71 455/484/71 +f 451/876/71 449/878/71 455/484/71 +f 449/878/71 447/482/71 455/484/71 +f 429/485/72 430/880/72 433/486/72 +f 430/880/72 431/881/72 433/486/72 +f 431/881/72 432/882/72 433/486/72 +f 433/486/72 434/883/72 435/884/72 +f 435/884/72 436/885/72 433/486/72 +f 436/885/72 437/487/72 433/486/72 +f 437/487/72 438/886/72 439/887/72 +f 439/887/72 440/888/72 441/889/72 +f 441/889/72 442/890/72 443/891/72 +f 443/891/72 444/892/72 429/485/72 +f 437/487/72 439/887/72 429/485/72 +f 439/887/72 441/889/72 429/485/72 +f 441/889/72 443/891/72 429/485/72 +f 493/490/72 494/893/72 495/894/72 +f 495/894/72 496/895/72 497/896/72 +f 497/896/72 498/897/72 499/898/72 +f 499/898/72 500/899/72 501/488/72 +f 501/488/72 502/900/72 505/489/72 +f 502/900/72 503/901/72 505/489/72 +f 503/901/72 504/902/72 505/489/72 +f 505/489/72 506/903/72 507/904/72 +f 507/904/72 508/905/72 505/489/72 +f 508/905/72 493/490/72 505/489/72 +f 493/490/72 495/894/72 497/896/72 +f 497/896/72 499/898/72 493/490/72 +f 499/898/72 501/488/72 493/490/72 +f 511/493/71 510/906/71 509/907/71 +f 509/907/71 524/908/71 511/493/71 +f 524/908/71 523/909/71 511/493/71 +f 523/909/71 522/910/71 521/911/71 +f 521/911/71 520/912/71 519/491/71 +f 519/491/71 518/913/71 515/492/71 +f 518/913/71 517/914/71 515/492/71 +f 517/914/71 516/915/71 515/492/71 +f 515/492/71 514/916/71 513/917/71 +f 513/917/71 512/918/71 511/493/71 +f 523/909/71 521/911/71 511/493/71 +f 521/911/71 519/491/71 511/493/71 +f 515/492/71 513/917/71 511/493/71 +f 547/504/75 541/506/75 544/497/75 +f 544/497/75 549/919/75 550/498/75 +f 546/499/75 547/504/75 544/497/75 +f 553/494/73 545/502/73 551/500/73 +f 551/500/73 555/920/73 556/501/73 +f 552/495/73 553/494/73 551/500/73 +f 563/518/76 557/520/76 560/511/76 +f 560/511/76 565/921/76 566/512/76 +f 562/513/76 563/518/76 560/511/76 +f 569/508/74 561/516/74 567/514/74 +f 567/514/74 571/922/74 572/515/74 +f 568/509/74 569/508/74 567/514/74 +f 574/522/85 590/923/85 589/523/85 +f 580/525/85 573/524/85 589/526/85 +f 578/528/85 579/537/85 595/529/85 +f 577/531/85 593/924/85 592/532/85 +f 575/534/85 591/925/85 590/535/85 +f 580/525/85 596/926/85 595/536/85 +f 578/528/85 594/927/85 593/538/85 +f 575/534/85 576/533/85 592/540/85 +f 598/542/85 597/928/85 599/543/85 +f 599/543/85 600/929/85 601/544/85 +f 601/544/85 602/930/85 603/931/85 +f 603/931/85 604/932/85 601/544/85 +f 604/932/85 598/542/85 601/544/85 +f 607/545/71 608/555/71 606/546/71 +f 611/548/86 612/552/86 609/549/86 +f 606/551/87 608/555/87 612/552/87 +f 605/554/88 610/933/88 609/549/88 +f 607/545/89 609/549/89 612/552/89 +f 606/551/85 611/553/85 610/556/85 +f 615/558/71 616/564/71 614/559/71 +f 620/561/72 624/584/72 623/562/72 +f 616/564/87 620/561/87 619/563/87 +f 613/565/88 618/577/88 617/566/88 +f 615/568/89 617/579/89 620/569/89 +f 614/571/85 619/580/85 618/572/85 +f 621/574/89 625/934/89 628/575/89 +f 618/577/72 622/586/72 621/578/72 +f 617/579/72 621/574/72 624/576/72 +f 619/580/72 623/582/72 622/581/72 +f 623/582/85 627/935/85 626/583/85 +f 624/584/87 628/936/87 627/585/87 +f 622/586/88 626/937/88 625/587/88 +f 635/588/72 636/592/72 633/589/72 +f 631/591/89 633/589/89 636/592/89 +f 630/594/85 635/588/85 634/590/85 +f 632/596/87 636/592/87 635/588/87 +f 629/598/88 634/590/88 633/589/88 +f 639/600/71 640/606/71 638/601/71 +f 643/603/90 644/608/90 641/604/90 +f 640/606/87 644/608/87 643/603/87 +f 639/607/89 641/938/89 644/608/89 +f 637/609/85 638/601/85 643/603/85 +f 647/611/71 648/939/71 646/612/71 +f 651/614/91 652/940/91 649/615/91 +f 648/617/89 647/611/89 649/615/89 +f 646/619/85 651/941/85 650/616/85 +f 645/613/88 650/616/88 649/615/88 +f 702/620/72 704/632/72 703/621/72 +f 705/623/71 708/631/71 707/624/71 +f 707/628/89 718/650/89 717/629/89 +f 702/620/87 707/624/87 708/631/87 +f 703/621/88 705/626/88 706/633/88 +f 704/632/92 715/653/92 716/634/92 +f 714/635/88 725/942/88 727/636/88 +f 713/640/89 726/647/89 725/641/89 +f 705/643/85 720/943/85 719/644/85 +f 709/646/87 728/660/87 726/647/87 +f 701/622/93 711/657/93 712/649/93 +f 712/649/87 722/659/87 718/650/87 +f 716/634/88 724/654/88 720/651/88 +f 715/653/89 723/658/89 724/654/89 +f 706/655/88 717/944/88 721/656/88 +f 708/645/87 719/644/87 723/658/87 +f 711/657/85 721/656/85 722/659/85 +f 710/637/85 727/636/85 728/660/85 +f 732/661/88 733/945/88 735/662/88 +f 731/664/89 734/668/89 733/665/89 +f 729/667/87 736/669/87 734/668/87 +f 730/663/85 735/662/85 736/669/85 +f 740/670/88 741/946/88 743/671/88 +f 739/673/89 742/677/89 741/674/89 +f 737/676/87 744/678/87 742/677/87 +f 738/672/85 743/671/85 744/678/85 +f 923/679/71 924/685/71 922/680/71 +f 928/682/72 932/705/72 931/683/72 +f 924/685/87 928/682/87 927/684/87 +f 921/686/88 926/698/88 925/687/88 +f 923/689/89 925/700/89 928/690/89 +f 922/692/85 927/701/85 926/693/85 +f 929/695/89 933/947/89 936/696/89 +f 926/698/72 930/707/72 929/699/72 +f 925/700/72 929/695/72 932/697/72 +f 927/701/72 931/703/72 930/702/72 +f 931/703/85 935/948/85 934/704/85 +f 932/705/87 936/949/87 935/706/87 +f 930/707/88 934/950/88 933/708/88 +f 939/951/71 938/952/71 937/953/71 +f 937/953/71 952/954/71 939/951/71 +f 952/954/71 951/709/71 939/951/71 +f 951/709/71 950/955/71 947/710/71 +f 950/955/71 949/956/71 947/710/71 +f 949/956/71 948/957/71 947/710/71 +f 947/710/71 946/958/71 943/711/71 +f 946/958/71 945/959/71 943/711/71 +f 945/959/71 944/960/71 943/711/71 +f 943/711/71 942/961/71 941/962/71 +f 941/962/71 940/963/71 939/951/71 +f 943/711/71 941/962/71 939/951/71 +f 939/951/71 951/709/71 943/711/71 +f 953/714/72 954/964/72 955/965/72 +f 955/965/72 956/966/72 957/967/72 +f 957/967/72 958/968/72 959/969/72 +f 959/969/72 960/970/72 961/712/72 +f 961/712/72 962/971/72 965/713/72 +f 962/971/72 963/972/72 965/713/72 +f 963/972/72 964/973/72 965/713/72 +f 965/713/72 966/974/72 953/714/72 +f 966/974/72 967/975/72 953/714/72 +f 967/975/72 968/976/72 953/714/72 +f 953/714/72 955/965/72 957/967/72 +f 957/967/72 959/969/72 961/712/72 +f 953/714/72 957/967/72 961/712/72 +f 970/715/87 972/727/87 971/716/87 +f 973/718/88 976/726/88 975/719/88 +f 975/723/89 986/745/89 985/724/89 +f 970/715/71 975/719/71 976/726/71 +f 971/716/72 973/721/72 974/728/72 +f 972/727/75 983/748/75 984/729/75 +f 982/730/72 993/977/72 995/731/72 +f 981/735/89 994/742/89 993/736/89 +f 973/738/85 988/978/85 987/739/85 +f 977/741/71 996/755/71 994/742/71 +f 969/717/74 979/752/74 980/744/74 +f 980/744/71 990/754/71 986/745/71 +f 984/729/72 992/749/72 988/746/72 +f 983/748/89 991/753/89 992/749/89 +f 974/750/72 985/979/72 989/751/72 +f 976/740/71 987/739/71 991/753/71 +f 979/752/85 989/751/85 990/754/85 +f 978/732/85 995/731/85 996/755/85 +f 1000/756/72 1001/980/72 1003/757/72 +f 999/759/89 1002/763/89 1001/760/89 +f 997/762/71 1004/764/71 1002/763/71 +f 998/758/85 1003/757/85 1004/764/85 +f 1008/765/72 1009/981/72 1011/766/72 +f 1007/768/89 1010/772/89 1009/769/89 +f 1005/771/71 1012/773/71 1010/772/71 +f 1006/767/85 1011/766/85 1012/773/85 +f 1014/774/88 1016/786/88 1015/775/88 +f 1017/777/87 1020/785/87 1019/778/87 +f 1019/782/89 1030/804/89 1029/783/89 +f 1014/774/72 1019/778/72 1020/785/72 +f 1015/775/71 1017/780/71 1018/787/71 +f 1016/786/73 1027/807/73 1028/788/73 +f 1026/789/71 1037/982/71 1039/790/71 +f 1025/794/89 1038/801/89 1037/795/89 +f 1017/797/85 1032/983/85 1031/798/85 +f 1021/800/72 1040/814/72 1038/801/72 +f 1013/776/76 1023/811/76 1024/803/76 +f 1024/803/72 1034/813/72 1030/804/72 +f 1028/788/71 1036/808/71 1032/805/71 +f 1027/807/89 1035/812/89 1036/808/89 +f 1018/809/71 1029/984/71 1033/810/71 +f 1020/799/72 1031/798/72 1035/812/72 +f 1023/811/85 1033/810/85 1034/813/85 +f 1022/791/85 1039/790/85 1040/814/85 +f 1044/815/71 1045/985/71 1047/816/71 +f 1043/818/89 1046/822/89 1045/819/89 +f 1041/821/72 1048/823/72 1046/822/72 +f 1042/817/85 1047/816/85 1048/823/85 +f 1052/824/71 1053/986/71 1055/825/71 +f 1051/827/89 1054/831/89 1053/828/89 +f 1049/830/72 1056/832/72 1054/831/72 +f 1050/826/85 1055/825/85 1056/832/85 +s 1 +f 283/987/75 298/988/94 282/989/94 +f 276/990/95 291/991/76 275/992/76 +f 284/993/96 299/994/75 283/987/75 +f 277/995/85 292/996/95 276/990/95 +f 270/997/97 285/998/89 269/999/89 +f 269/999/89 300/1000/96 284/993/96 +f 278/1001/98 293/1002/85 277/995/85 +f 271/1003/73 286/1004/97 270/997/97 +f 279/1005/74 294/1006/98 278/1001/98 +f 272/1007/99 287/1008/73 271/1003/73 +f 280/1009/100 295/1010/74 279/1005/74 +f 273/1011/88 288/1012/99 272/1007/99 +f 281/1013/87 296/1014/100 280/1009/100 +f 274/1015/101 289/1016/88 273/1017/88 +f 282/989/94 297/1018/87 281/1013/87 +f 275/992/76 290/1019/101 274/1015/101 +f 315/1020/75 330/1021/94 314/1022/94 +f 308/1023/95 323/1024/76 307/1025/76 +f 316/1026/96 331/1027/75 315/1020/75 +f 309/1028/85 324/1029/95 308/1023/95 +f 302/1030/97 317/1031/89 301/1032/89 +f 301/1032/89 332/1033/96 316/1026/96 +f 310/1034/98 325/1035/85 309/1028/85 +f 303/1036/73 318/1037/97 302/1030/97 +f 311/1038/74 326/1039/98 310/1034/98 +f 304/1040/99 319/1041/73 303/1036/73 +f 312/1042/100 327/1043/74 311/1038/74 +f 305/1044/88 320/1045/99 304/1040/99 +f 313/1046/87 328/1047/100 312/1042/100 +f 306/1048/101 321/1049/88 305/1050/88 +f 314/1022/94 329/1051/87 313/1046/87 +f 307/1025/76 322/1052/101 306/1048/101 +f 427/1053/75 442/1054/94 426/1055/94 +f 420/1056/95 435/1057/76 419/1058/76 +f 428/1059/96 443/1060/75 427/1053/75 +f 421/1061/85 436/1062/95 420/1056/95 +f 414/1063/97 429/1064/89 413/1065/89 +f 413/1065/89 444/1066/96 428/1059/96 +f 422/1067/98 437/1068/85 421/1061/85 +f 415/1069/73 430/1070/97 414/1063/97 +f 423/1071/74 438/1072/98 422/1067/98 +f 416/1073/99 431/1074/73 415/1069/73 +f 424/1075/100 439/1076/74 423/1071/74 +f 417/1077/88 432/1078/99 416/1073/99 +f 425/1079/87 440/1080/100 424/1075/100 +f 418/1081/101 433/1082/88 417/1083/88 +f 426/1055/94 441/1084/87 425/1079/87 +f 419/1058/76 434/1085/101 418/1081/101 +f 459/1086/75 474/1087/94 458/1088/94 +f 452/1089/95 467/1090/76 451/1091/76 +f 460/1092/96 475/1093/75 459/1086/75 +f 453/1094/85 468/1095/95 452/1089/95 +f 446/1096/97 461/1097/89 445/1098/89 +f 445/1098/89 476/1099/96 460/1092/96 +f 454/1100/98 469/1101/85 453/1094/85 +f 447/1102/73 462/1103/97 446/1096/97 +f 455/1104/74 470/1105/98 454/1100/98 +f 448/1106/99 463/1107/73 447/1102/73 +f 456/1108/100 471/1109/74 455/1104/74 +f 449/1110/88 464/1111/99 448/1106/99 +f 457/1112/87 472/1113/100 456/1108/100 +f 450/1114/101 465/1115/88 449/1116/88 +f 458/1088/94 473/1117/87 457/1112/87 +f 451/1091/76 466/1118/101 450/1114/101 +f 488/1119/100 503/1120/74 487/1121/74 +f 481/1122/88 496/1123/99 480/1124/99 +f 489/1125/87 504/1126/100 488/1119/100 +f 482/1127/101 497/1128/88 481/1129/88 +f 490/1130/94 505/1131/87 489/1125/87 +f 483/1132/76 498/1133/101 482/1127/101 +f 491/1134/75 506/1135/94 490/1130/94 +f 484/1136/95 499/1137/76 483/1132/76 +f 492/1138/96 507/1139/75 491/1134/75 +f 485/1140/85 500/1141/95 484/1136/95 +f 478/1142/97 493/1143/89 477/1144/89 +f 477/1144/89 508/1145/96 492/1138/96 +f 486/1146/98 501/1147/85 485/1140/85 +f 479/1148/73 494/1149/97 478/1142/97 +f 487/1121/74 502/1150/98 486/1146/98 +f 480/1124/99 495/1151/73 479/1148/73 +f 520/1152/100 535/1153/74 519/1154/74 +f 513/1155/88 528/1156/99 512/1157/99 +f 521/1158/87 536/1159/100 520/1152/100 +f 514/1160/101 529/1161/88 513/1162/88 +f 522/1163/94 537/1164/87 521/1158/87 +f 515/1165/76 530/1166/101 514/1160/101 +f 523/1167/75 538/1168/94 522/1163/94 +f 516/1169/95 531/1170/76 515/1165/76 +f 524/1171/96 539/1172/75 523/1167/75 +f 517/1173/85 532/1174/95 516/1169/95 +f 510/1175/97 525/1176/89 509/1177/89 +f 509/1177/89 540/1178/96 524/1171/96 +f 518/1179/98 533/1180/85 517/1173/85 +f 511/1181/73 526/1182/97 510/1175/97 +f 519/1154/74 534/1183/98 518/1179/98 +f 512/1157/99 527/1184/73 511/1181/73 +f 581/1185/72 574/522/91 573/524/72 +f 588/1186/90 573/524/72 580/525/90 +f 586/1187/102 579/537/87 578/528/102 +f 584/1188/103 577/531/71 576/533/103 +f 582/1189/91 575/534/88 574/522/91 +f 587/1190/87 580/525/90 579/537/87 +f 585/1191/71 578/528/102 577/539/71 +f 583/1192/88 576/533/103 575/534/88 +f 589/526/72 604/1193/90 596/527/90 +f 595/529/87 602/1194/102 594/530/102 +f 593/924/71 600/1195/103 592/532/103 +f 591/925/88 597/1196/91 590/535/91 +f 596/926/90 603/1197/87 595/536/87 +f 594/927/102 601/1198/71 593/538/71 +f 592/540/103 599/1199/88 591/541/88 +f 590/923/91 598/1200/72 589/523/72 +f 685/1201/104 700/1202/105 693/1203/104 +f 686/1204/73 693/1205/104 694/1206/73 +f 695/1207/106 686/1208/73 694/1209/73 +f 688/1210/92 695/1211/106 696/1212/92 +f 689/1213/107 696/1214/92 697/1215/107 +f 698/1216/75 689/1217/107 697/1218/107 +f 691/1219/108 698/1220/75 699/1221/108 +f 700/1222/105 691/1223/108 699/1224/108 +f 678/1225/91 676/1226/72 677/1227/72 +f 679/1228/88 675/1229/91 678/1225/91 +f 680/1230/103 674/1231/88 679/1228/88 +f 681/1232/71 673/1233/103 680/1230/103 +f 682/1234/102 672/1235/71 681/1236/71 +f 683/1237/87 671/1238/102 682/1234/102 +f 684/1239/90 670/1240/87 683/1237/87 +f 677/1227/72 669/1241/90 684/1239/90 +f 666/1242/74 659/1243/109 667/1244/109 +f 666/1245/74 657/1246/110 658/1247/74 +f 664/1248/93 657/1249/110 665/1250/110 +f 664/1251/93 655/1252/111 656/1253/93 +f 663/1254/111 654/1255/76 655/1256/111 +f 661/1257/112 654/1258/76 662/1259/76 +f 661/1260/112 660/1261/113 653/1262/112 +f 668/1263/113 659/1264/109 660/1265/113 +f 671/1238/109 662/1266/74 663/1254/109 +f 672/1235/113 663/1267/109 664/1251/113 +f 672/1268/113 665/1250/112 673/1233/112 +f 674/1231/76 665/1269/112 666/1245/76 +f 674/1231/76 667/1244/111 675/1229/111 +f 675/1229/111 668/1263/93 676/1226/93 +f 676/1226/93 661/1260/110 669/1241/110 +f 669/1241/110 662/1259/74 670/1240/74 +f 694/1206/75 684/1239/107 683/1237/75 +f 693/1203/107 677/1227/92 684/1239/107 +f 700/1222/92 678/1225/106 677/1227/92 +f 699/1221/106 679/1228/73 678/1225/106 +f 679/1228/73 697/1218/104 680/1230/104 +f 680/1230/104 696/1214/105 681/1232/105 +f 696/1212/105 682/1234/108 681/1236/105 +f 682/1234/108 694/1209/75 683/1237/75 +f 785/1270/104 784/1271/105 792/1272/105 +f 778/1273/73 785/1274/104 786/1275/73 +f 787/1276/106 778/1277/73 786/1278/73 +f 788/1279/92 779/1280/106 787/1281/106 +f 781/1282/107 788/1283/92 789/1284/107 +f 790/1285/75 781/1286/107 789/1287/107 +f 783/1288/108 790/1289/75 791/1290/108 +f 792/1291/105 783/1292/108 791/1293/108 +f 770/1294/91 768/1295/72 769/1296/72 +f 771/1297/88 767/1298/91 770/1294/91 +f 772/1299/103 766/1300/88 771/1297/88 +f 773/1301/71 765/1302/103 772/1299/103 +f 774/1303/102 764/1304/71 773/1305/71 +f 775/1306/87 763/1307/102 774/1303/102 +f 776/1308/90 762/1309/87 775/1306/87 +f 769/1296/72 761/1310/90 776/1308/90 +f 758/1311/74 751/1312/109 759/1313/109 +f 758/1314/74 749/1315/110 750/1316/74 +f 756/1317/93 749/1318/110 757/1319/110 +f 756/1320/93 747/1321/111 748/1322/93 +f 755/1323/111 746/1324/76 747/1325/111 +f 753/1326/112 746/1327/76 754/1328/76 +f 760/1329/113 745/1330/112 753/1331/112 +f 760/1332/113 751/1333/109 752/1334/113 +f 762/1309/74 755/1323/109 763/1307/109 +f 764/1304/113 755/1335/109 756/1320/113 +f 765/1302/112 756/1317/113 757/1319/112 +f 765/1302/112 758/1314/76 766/1300/76 +f 766/1300/76 759/1313/111 767/1298/111 +f 767/1298/111 760/1332/93 768/1295/93 +f 768/1295/93 753/1331/110 761/1310/110 +f 761/1310/110 754/1328/74 762/1309/74 +f 786/1275/75 776/1308/107 775/1306/75 +f 785/1270/107 769/1296/92 776/1308/107 +f 792/1291/92 770/1294/106 769/1296/92 +f 791/1290/106 771/1297/73 770/1294/106 +f 771/1297/73 789/1287/104 772/1299/104 +f 772/1299/104 788/1283/105 773/1301/105 +f 773/1305/105 787/1281/108 774/1303/108 +f 774/1303/108 786/1278/75 775/1306/75 +f 825/1336/104 840/1337/105 833/1338/104 +f 826/1339/73 833/1340/104 834/1341/73 +f 835/1342/106 826/1343/73 834/1344/73 +f 828/1345/92 835/1346/106 836/1347/92 +f 829/1348/107 836/1349/92 837/1350/107 +f 838/1351/75 829/1352/107 837/1353/107 +f 831/1354/108 838/1355/75 839/1356/108 +f 840/1357/105 831/1358/108 839/1359/108 +f 818/1360/91 816/1361/72 817/1362/72 +f 819/1363/88 815/1364/91 818/1360/91 +f 820/1365/103 814/1366/88 819/1363/88 +f 821/1367/71 813/1368/103 820/1365/103 +f 822/1369/102 812/1370/71 821/1371/71 +f 823/1372/87 811/1373/102 822/1369/102 +f 824/1374/90 810/1375/87 823/1372/87 +f 817/1362/72 809/1376/90 824/1374/90 +f 806/1377/74 799/1378/109 807/1379/109 +f 806/1380/74 797/1381/110 798/1382/74 +f 804/1383/93 797/1384/110 805/1385/110 +f 803/1386/111 796/1387/93 804/1388/93 +f 803/1389/111 794/1390/76 795/1391/111 +f 801/1392/112 794/1393/76 802/1394/76 +f 801/1395/112 800/1396/113 793/1397/112 +f 808/1398/113 799/1399/109 800/1400/113 +f 811/1373/109 802/1401/74 803/1389/109 +f 811/1373/109 804/1388/113 812/1370/113 +f 813/1368/112 804/1383/113 805/1385/112 +f 813/1368/112 806/1380/76 814/1366/76 +f 814/1366/76 807/1379/111 815/1364/111 +f 815/1364/111 808/1398/93 816/1361/93 +f 809/1376/110 808/1402/93 801/1395/110 +f 809/1376/110 802/1394/74 810/1375/74 +f 834/1341/75 824/1374/107 823/1372/75 +f 833/1338/107 817/1362/92 824/1374/107 +f 840/1357/92 818/1360/106 817/1362/92 +f 839/1356/106 819/1363/73 818/1360/106 +f 819/1363/73 837/1353/104 820/1365/104 +f 820/1365/104 836/1349/105 821/1367/105 +f 836/1347/105 822/1369/108 821/1371/105 +f 822/1369/108 834/1344/75 823/1372/75 +f 881/1403/104 880/1404/105 888/1405/105 +f 874/1406/73 881/1407/104 882/1408/73 +f 883/1409/106 874/1410/73 882/1411/73 +f 884/1412/92 875/1413/106 883/1414/106 +f 877/1415/107 884/1416/92 885/1417/107 +f 886/1418/75 877/1419/107 885/1420/107 +f 879/1421/108 886/1422/75 887/1423/108 +f 880/1424/105 887/1425/108 888/1426/105 +f 866/1427/91 864/1428/72 865/1429/72 +f 867/1430/88 863/1431/91 866/1427/91 +f 868/1432/103 862/1433/88 867/1430/88 +f 869/1434/71 861/1435/103 868/1432/103 +f 870/1436/102 860/1437/71 869/1438/71 +f 871/1439/87 859/1440/102 870/1436/102 +f 872/1441/90 858/1442/87 871/1439/87 +f 865/1429/72 857/1443/90 872/1441/90 +f 854/1444/74 847/1445/109 855/1446/109 +f 853/1447/110 846/1448/74 854/1449/74 +f 852/1450/93 845/1451/110 853/1452/110 +f 852/1453/93 843/1454/111 844/1455/93 +f 851/1456/111 842/1457/76 843/1458/111 +f 849/1459/112 842/1460/76 850/1461/76 +f 849/1462/112 848/1463/113 841/1464/112 +f 856/1465/113 847/1466/109 848/1467/113 +f 858/1442/74 851/1456/109 859/1440/109 +f 860/1437/113 851/1468/109 852/1453/113 +f 861/1435/112 852/1450/113 853/1452/112 +f 861/1435/112 854/1449/76 862/1433/76 +f 862/1433/76 855/1446/111 863/1431/111 +f 863/1431/111 856/1465/93 864/1428/93 +f 857/1443/110 856/1469/93 849/1462/110 +f 857/1443/110 850/1461/74 858/1442/74 +f 882/1408/75 872/1441/107 871/1439/75 +f 881/1403/107 865/1429/92 872/1441/107 +f 888/1426/92 866/1427/106 865/1429/92 +f 887/1423/106 867/1430/73 866/1427/106 +f 867/1430/73 885/1420/104 868/1432/104 +f 868/1432/104 884/1416/105 869/1434/105 +f 884/1412/105 870/1436/108 869/1438/105 +f 870/1436/108 882/1411/75 871/1439/75 +f 914/1470/91 912/1471/72 913/1472/72 +f 915/1473/88 911/1474/91 914/1470/91 +f 916/1475/103 910/1476/88 915/1473/88 +f 917/1477/71 909/1478/103 916/1475/103 +f 918/1479/102 908/1480/71 917/1481/71 +f 919/1482/87 907/1483/102 918/1479/102 +f 920/1484/90 906/1485/87 919/1482/87 +f 913/1472/72 905/1486/90 920/1484/90 +f 902/1487/74 895/1488/109 903/1489/109 +f 902/1490/74 893/1491/110 894/1492/74 +f 900/1493/93 893/1494/110 901/1495/110 +f 900/1496/93 891/1497/111 892/1498/93 +f 899/1499/111 890/1500/76 891/1501/111 +f 897/1502/112 890/1503/76 898/1504/76 +f 897/1505/112 896/1506/113 889/1507/112 +f 904/1508/113 895/1509/109 896/1510/113 +f 907/1483/109 898/1511/74 899/1499/109 +f 907/1483/109 900/1496/113 908/1480/113 +f 909/1478/112 900/1493/113 901/1495/112 +f 910/1476/76 901/1512/112 902/1490/76 +f 911/1474/111 902/1487/76 903/1489/111 +f 911/1474/111 904/1508/93 912/1471/93 +f 905/1486/110 904/1513/93 897/1505/110 +f 905/1486/110 898/1504/74 906/1485/74 +f 951/1514/75 966/1515/94 950/1516/94 +f 944/1517/95 959/1518/76 943/1519/76 +f 952/1520/96 967/1521/75 951/1514/75 +f 945/1522/85 960/1523/95 944/1517/95 +f 938/1524/97 953/1525/89 937/1526/89 +f 937/1526/89 968/1527/96 952/1520/96 +f 946/1528/98 961/1529/85 945/1522/85 +f 939/1530/73 954/1531/97 938/1524/97 +f 947/1532/74 962/1533/98 946/1528/98 +f 940/1534/99 955/1535/73 939/1530/73 +f 948/1536/100 963/1537/74 947/1532/74 +f 941/1538/88 956/1539/99 940/1534/99 +f 949/1540/87 964/1541/100 948/1536/100 +f 942/1542/101 957/1543/88 941/1544/88 +f 950/1516/94 965/1545/87 949/1540/87 +f 943/1519/76 958/1546/101 942/1542/101 +f 283/987/75 299/994/75 298/988/94 +f 276/990/95 292/996/95 291/991/76 +f 284/993/96 300/1000/96 299/994/75 +f 277/995/85 293/1002/85 292/996/95 +f 270/997/97 286/1004/97 285/998/89 +f 269/999/89 285/998/89 300/1000/96 +f 278/1001/98 294/1006/98 293/1002/85 +f 271/1003/73 287/1008/73 286/1004/97 +f 279/1005/74 295/1010/74 294/1006/98 +f 272/1007/99 288/1012/99 287/1008/73 +f 280/1009/100 296/1014/100 295/1010/74 +f 273/1011/88 289/1547/88 288/1012/99 +f 281/1013/87 297/1018/87 296/1014/100 +f 274/1015/101 290/1019/101 289/1016/88 +f 282/989/94 298/988/94 297/1018/87 +f 275/992/76 291/991/76 290/1019/101 +f 315/1020/75 331/1027/75 330/1021/94 +f 308/1023/95 324/1029/95 323/1024/76 +f 316/1026/96 332/1033/96 331/1027/75 +f 309/1028/85 325/1035/85 324/1029/95 +f 302/1030/97 318/1037/97 317/1031/89 +f 301/1032/89 317/1031/89 332/1033/96 +f 310/1034/98 326/1039/98 325/1035/85 +f 303/1036/73 319/1041/73 318/1037/97 +f 311/1038/74 327/1043/74 326/1039/98 +f 304/1040/99 320/1045/99 319/1041/73 +f 312/1042/100 328/1047/100 327/1043/74 +f 305/1044/88 321/1548/88 320/1045/99 +f 313/1046/87 329/1051/87 328/1047/100 +f 306/1048/101 322/1052/101 321/1049/88 +f 314/1022/94 330/1021/94 329/1051/87 +f 307/1025/76 323/1024/76 322/1052/101 +f 427/1053/75 443/1060/75 442/1054/94 +f 420/1056/95 436/1062/95 435/1057/76 +f 428/1059/96 444/1066/96 443/1060/75 +f 421/1061/85 437/1068/85 436/1062/95 +f 414/1063/97 430/1070/97 429/1064/89 +f 413/1065/89 429/1064/89 444/1066/96 +f 422/1067/98 438/1072/98 437/1068/85 +f 415/1069/73 431/1074/73 430/1070/97 +f 423/1071/74 439/1076/74 438/1072/98 +f 416/1073/99 432/1078/99 431/1074/73 +f 424/1075/100 440/1080/100 439/1076/74 +f 417/1077/88 433/1549/88 432/1078/99 +f 425/1079/87 441/1084/87 440/1080/100 +f 418/1081/101 434/1085/101 433/1082/88 +f 426/1055/94 442/1054/94 441/1084/87 +f 419/1058/76 435/1057/76 434/1085/101 +f 459/1086/75 475/1093/75 474/1087/94 +f 452/1089/95 468/1095/95 467/1090/76 +f 460/1092/96 476/1099/96 475/1093/75 +f 453/1094/85 469/1101/85 468/1095/95 +f 446/1096/97 462/1103/97 461/1097/89 +f 445/1098/89 461/1097/89 476/1099/96 +f 454/1100/98 470/1105/98 469/1101/85 +f 447/1102/73 463/1107/73 462/1103/97 +f 455/1104/74 471/1109/74 470/1105/98 +f 448/1106/99 464/1111/99 463/1107/73 +f 456/1108/100 472/1113/100 471/1109/74 +f 449/1110/88 465/1550/88 464/1111/99 +f 457/1112/87 473/1117/87 472/1113/100 +f 450/1114/101 466/1118/101 465/1115/88 +f 458/1088/94 474/1087/94 473/1117/87 +f 451/1091/76 467/1090/76 466/1118/101 +f 488/1119/100 504/1126/100 503/1120/74 +f 481/1122/88 497/1551/88 496/1123/99 +f 489/1125/87 505/1131/87 504/1126/100 +f 482/1127/101 498/1133/101 497/1128/88 +f 490/1130/94 506/1135/94 505/1131/87 +f 483/1132/76 499/1137/76 498/1133/101 +f 491/1134/75 507/1139/75 506/1135/94 +f 484/1136/95 500/1141/95 499/1137/76 +f 492/1138/96 508/1145/96 507/1139/75 +f 485/1140/85 501/1147/85 500/1141/95 +f 478/1142/97 494/1149/97 493/1143/89 +f 477/1144/89 493/1143/89 508/1145/96 +f 486/1146/98 502/1150/98 501/1147/85 +f 479/1148/73 495/1151/73 494/1149/97 +f 487/1121/74 503/1120/74 502/1150/98 +f 480/1124/99 496/1123/99 495/1151/73 +f 520/1152/100 536/1159/100 535/1153/74 +f 513/1155/88 529/1552/88 528/1156/99 +f 521/1158/87 537/1164/87 536/1159/100 +f 514/1160/101 530/1166/101 529/1161/88 +f 522/1163/94 538/1168/94 537/1164/87 +f 515/1165/76 531/1170/76 530/1166/101 +f 523/1167/75 539/1172/75 538/1168/94 +f 516/1169/95 532/1174/95 531/1170/76 +f 524/1171/96 540/1178/96 539/1172/75 +f 517/1173/85 533/1180/85 532/1174/95 +f 510/1175/97 526/1182/97 525/1176/89 +f 509/1177/89 525/1176/89 540/1178/96 +f 518/1179/98 534/1183/98 533/1180/85 +f 511/1181/73 527/1184/73 526/1182/97 +f 519/1154/74 535/1153/74 534/1183/98 +f 512/1157/99 528/1156/99 527/1184/73 +f 581/1185/72 582/1189/91 574/522/91 +f 588/1186/90 581/1185/72 573/524/72 +f 586/1187/102 587/1190/87 579/537/87 +f 584/1188/103 585/1553/71 577/531/71 +f 582/1189/91 583/1192/88 575/534/88 +f 587/1190/87 588/1186/90 580/525/90 +f 585/1191/71 586/1187/102 578/528/102 +f 583/1192/88 584/1188/103 576/533/103 +f 589/526/72 598/1554/72 604/1193/90 +f 595/529/87 603/1555/87 602/1194/102 +f 593/924/71 601/1556/71 600/1195/103 +f 591/925/88 599/1557/88 597/1196/91 +f 596/926/90 604/1558/90 603/1197/87 +f 594/927/102 602/1559/102 601/1198/71 +f 592/540/103 600/1560/103 599/1199/88 +f 590/923/91 597/1561/91 598/1200/72 +f 685/1201/104 692/1562/105 700/1202/105 +f 686/1204/73 685/1563/104 693/1205/104 +f 695/1207/106 687/1564/106 686/1208/73 +f 688/1210/92 687/1565/106 695/1211/106 +f 689/1213/107 688/1566/92 696/1214/92 +f 698/1216/75 690/1567/75 689/1217/107 +f 691/1219/108 690/1568/75 698/1220/75 +f 700/1222/105 692/1569/105 691/1223/108 +f 678/1225/91 675/1229/91 676/1226/72 +f 679/1228/88 674/1231/88 675/1229/91 +f 680/1230/103 673/1233/103 674/1231/88 +f 681/1232/71 672/1268/71 673/1233/103 +f 682/1234/102 671/1238/102 672/1235/71 +f 683/1237/87 670/1240/87 671/1238/102 +f 684/1239/90 669/1241/90 670/1240/87 +f 677/1227/72 676/1226/72 669/1241/90 +f 666/1242/74 658/1570/74 659/1243/109 +f 666/1245/74 665/1269/110 657/1246/110 +f 664/1248/93 656/1571/93 657/1249/110 +f 664/1251/93 663/1267/111 655/1252/111 +f 663/1254/111 662/1266/76 654/1255/76 +f 661/1257/112 653/1572/112 654/1258/76 +f 661/1260/112 668/1573/113 660/1261/113 +f 668/1263/113 667/1574/109 659/1264/109 +f 671/1238/109 670/1240/74 662/1266/74 +f 672/1235/113 671/1238/109 663/1267/109 +f 672/1268/113 664/1248/113 665/1250/112 +f 674/1231/76 673/1233/112 665/1269/112 +f 674/1231/76 666/1242/76 667/1244/111 +f 675/1229/111 667/1574/111 668/1263/93 +f 676/1226/93 668/1573/93 661/1260/110 +f 669/1241/110 661/1257/110 662/1259/74 +f 694/1206/75 693/1205/107 684/1239/107 +f 693/1203/107 700/1202/92 677/1227/92 +f 700/1222/92 699/1224/106 678/1225/106 +f 699/1221/106 698/1220/73 679/1228/73 +f 679/1228/73 698/1216/73 697/1218/104 +f 680/1230/104 697/1215/104 696/1214/105 +f 696/1212/105 695/1211/108 682/1234/108 +f 682/1234/108 695/1207/108 694/1209/75 +f 785/1270/104 777/1575/104 784/1271/105 +f 778/1273/73 777/1576/104 785/1274/104 +f 787/1276/106 779/1577/106 778/1277/73 +f 788/1279/92 780/1578/92 779/1280/106 +f 781/1282/107 780/1579/92 788/1283/92 +f 790/1285/75 782/1580/75 781/1286/107 +f 783/1288/108 782/1581/75 790/1289/75 +f 792/1291/105 784/1582/105 783/1292/108 +f 770/1294/91 767/1298/91 768/1295/72 +f 771/1297/88 766/1300/88 767/1298/91 +f 772/1299/103 765/1302/103 766/1300/88 +f 773/1301/71 764/1583/71 765/1302/103 +f 774/1303/102 763/1307/102 764/1304/71 +f 775/1306/87 762/1309/87 763/1307/102 +f 776/1308/90 761/1310/90 762/1309/87 +f 769/1296/72 768/1295/72 761/1310/90 +f 758/1311/74 750/1584/74 751/1312/109 +f 758/1314/74 757/1585/110 749/1315/110 +f 756/1317/93 748/1586/93 749/1318/110 +f 756/1320/93 755/1335/111 747/1321/111 +f 755/1323/111 754/1587/76 746/1324/76 +f 753/1326/112 745/1588/112 746/1327/76 +f 760/1329/113 752/1589/113 745/1330/112 +f 760/1332/113 759/1590/109 751/1333/109 +f 762/1309/74 754/1587/74 755/1323/109 +f 764/1304/113 763/1307/109 755/1335/109 +f 765/1302/112 764/1583/113 756/1317/113 +f 765/1302/112 757/1585/112 758/1314/76 +f 766/1300/76 758/1311/76 759/1313/111 +f 767/1298/111 759/1590/111 760/1332/93 +f 768/1295/93 760/1329/93 753/1331/110 +f 761/1310/110 753/1326/110 754/1328/74 +f 786/1275/75 785/1274/107 776/1308/107 +f 785/1270/107 792/1272/92 769/1296/92 +f 792/1291/92 791/1293/106 770/1294/106 +f 791/1290/106 790/1289/73 771/1297/73 +f 771/1297/73 790/1285/73 789/1287/104 +f 772/1299/104 789/1284/104 788/1283/105 +f 773/1305/105 788/1279/105 787/1281/108 +f 774/1303/108 787/1276/108 786/1278/75 +f 825/1336/104 832/1591/105 840/1337/105 +f 826/1339/73 825/1592/104 833/1340/104 +f 835/1342/106 827/1593/106 826/1343/73 +f 828/1345/92 827/1594/106 835/1346/106 +f 829/1348/107 828/1595/92 836/1349/92 +f 838/1351/75 830/1596/75 829/1352/107 +f 831/1354/108 830/1597/75 838/1355/75 +f 840/1357/105 832/1598/105 831/1358/108 +f 818/1360/91 815/1364/91 816/1361/72 +f 819/1363/88 814/1366/88 815/1364/91 +f 820/1365/103 813/1368/103 814/1366/88 +f 821/1367/71 812/1599/71 813/1368/103 +f 822/1369/102 811/1373/102 812/1370/71 +f 823/1372/87 810/1375/87 811/1373/102 +f 824/1374/90 809/1376/90 810/1375/87 +f 817/1362/72 816/1361/72 809/1376/90 +f 806/1377/74 798/1600/74 799/1378/109 +f 806/1380/74 805/1601/110 797/1381/110 +f 804/1383/93 796/1602/93 797/1384/110 +f 803/1386/111 795/1603/111 796/1387/93 +f 803/1389/111 802/1401/76 794/1390/76 +f 801/1392/112 793/1604/112 794/1393/76 +f 801/1395/112 808/1402/113 800/1396/113 +f 808/1398/113 807/1605/109 799/1399/109 +f 811/1373/109 810/1375/74 802/1401/74 +f 811/1373/109 803/1386/109 804/1388/113 +f 813/1368/112 812/1599/113 804/1383/113 +f 813/1368/112 805/1601/112 806/1380/76 +f 814/1366/76 806/1377/76 807/1379/111 +f 815/1364/111 807/1605/111 808/1398/93 +f 809/1376/110 816/1361/93 808/1402/93 +f 809/1376/110 801/1392/110 802/1394/74 +f 834/1341/75 833/1340/107 824/1374/107 +f 833/1338/107 840/1337/92 817/1362/92 +f 840/1357/92 839/1359/106 818/1360/106 +f 839/1356/106 838/1355/73 819/1363/73 +f 819/1363/73 838/1351/73 837/1353/104 +f 820/1365/104 837/1350/104 836/1349/105 +f 836/1347/105 835/1346/108 822/1369/108 +f 822/1369/108 835/1342/108 834/1344/75 +f 881/1403/104 873/1606/104 880/1404/105 +f 874/1406/73 873/1607/104 881/1407/104 +f 883/1409/106 875/1608/106 874/1410/73 +f 884/1412/92 876/1609/92 875/1413/106 +f 877/1415/107 876/1610/92 884/1416/92 +f 886/1418/75 878/1611/75 877/1419/107 +f 879/1421/108 878/1612/75 886/1422/75 +f 880/1424/105 879/1613/108 887/1425/108 +f 866/1427/91 863/1431/91 864/1428/72 +f 867/1430/88 862/1433/88 863/1431/91 +f 868/1432/103 861/1435/103 862/1433/88 +f 869/1434/71 860/1614/71 861/1435/103 +f 870/1436/102 859/1440/102 860/1437/71 +f 871/1439/87 858/1442/87 859/1440/102 +f 872/1441/90 857/1443/90 858/1442/87 +f 865/1429/72 864/1428/72 857/1443/90 +f 854/1444/74 846/1615/74 847/1445/109 +f 853/1447/110 845/1616/110 846/1448/74 +f 852/1450/93 844/1617/93 845/1451/110 +f 852/1453/93 851/1468/111 843/1454/111 +f 851/1456/111 850/1618/76 842/1457/76 +f 849/1459/112 841/1619/112 842/1460/76 +f 849/1462/112 856/1469/113 848/1463/113 +f 856/1465/113 855/1620/109 847/1466/109 +f 858/1442/74 850/1618/74 851/1456/109 +f 860/1437/113 859/1440/109 851/1468/109 +f 861/1435/112 860/1614/113 852/1450/113 +f 861/1435/112 853/1447/112 854/1449/76 +f 862/1433/76 854/1444/76 855/1446/111 +f 863/1431/111 855/1620/111 856/1465/93 +f 857/1443/110 864/1428/93 856/1469/93 +f 857/1443/110 849/1459/110 850/1461/74 +f 882/1408/75 881/1407/107 872/1441/107 +f 881/1403/107 888/1405/92 865/1429/92 +f 888/1426/92 887/1425/106 866/1427/106 +f 887/1423/106 886/1422/73 867/1430/73 +f 867/1430/73 886/1418/73 885/1420/104 +f 868/1432/104 885/1417/104 884/1416/105 +f 884/1412/105 883/1414/108 870/1436/108 +f 870/1436/108 883/1409/108 882/1411/75 +f 914/1470/91 911/1474/91 912/1471/72 +f 915/1473/88 910/1476/88 911/1474/91 +f 916/1475/103 909/1478/103 910/1476/88 +f 917/1477/71 908/1621/71 909/1478/103 +f 918/1479/102 907/1483/102 908/1480/71 +f 919/1482/87 906/1485/87 907/1483/102 +f 920/1484/90 905/1486/90 906/1485/87 +f 913/1472/72 912/1471/72 905/1486/90 +f 902/1487/74 894/1622/74 895/1488/109 +f 902/1490/74 901/1512/110 893/1491/110 +f 900/1493/93 892/1623/93 893/1494/110 +f 900/1496/93 899/1624/111 891/1497/111 +f 899/1499/111 898/1511/76 890/1500/76 +f 897/1502/112 889/1625/112 890/1503/76 +f 897/1505/112 904/1513/113 896/1506/113 +f 904/1508/113 903/1626/109 895/1509/109 +f 907/1483/109 906/1485/74 898/1511/74 +f 907/1483/109 899/1624/109 900/1496/113 +f 909/1478/112 908/1621/113 900/1493/113 +f 910/1476/76 909/1478/112 901/1512/112 +f 911/1474/111 910/1476/76 902/1487/76 +f 911/1474/111 903/1626/111 904/1508/93 +f 905/1486/110 912/1471/93 904/1513/93 +f 905/1486/110 897/1502/110 898/1504/74 +f 951/1514/75 967/1521/75 966/1515/94 +f 944/1517/95 960/1523/95 959/1518/76 +f 952/1520/96 968/1527/96 967/1521/75 +f 945/1522/85 961/1529/85 960/1523/95 +f 938/1524/97 954/1531/97 953/1525/89 +f 937/1526/89 953/1525/89 968/1527/96 +f 946/1528/98 962/1533/98 961/1529/85 +f 939/1530/73 955/1535/73 954/1531/97 +f 947/1532/74 963/1537/74 962/1533/98 +f 940/1534/99 956/1539/99 955/1535/73 +f 948/1536/100 964/1541/100 963/1537/74 +f 941/1538/88 957/1627/88 956/1539/99 +f 949/1540/87 965/1545/87 964/1541/100 +f 942/1542/101 958/1546/101 957/1543/88 +f 950/1516/94 966/1515/94 965/1545/87 +f 943/1519/76 959/1518/76 958/1546/101 diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png new file mode 100644 index 0000000000000000000000000000000000000000..a6a4d174537830640fd06b4a553852c4a2643991 GIT binary patch literal 21545 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 Rp_}MOTI#xL#i~{z{{^P-o(}*3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png b/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png index ac26fc0796689144dd48af558deddc8cb19c1bea..658fb024b1d57bd2e1e39110a54e026912e434fb 100644 GIT binary patch literal 6849 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 literal 2278 zcmbtWYg7{076#NLD>aqO(lRGaNpUJ6%n7pOI*M8t`AR1%)5*fPB7{?2#Kl|w%6 zYxFkg0RVtC9zVMI0sugyrauB+p{Z9-AsL!Ro3!5p57v|m;ILl-0C0han=3vxUoNgq z6+Sl8{ZKTl`?|LQafufrw<0hc{N4?RBKa+}fAK<*uAT^3Zy6CH$?xr$hD{sFa!&Z~ z@Xzwgu!TjS787YerLR@QY2~ra5y*TSTuNF9YX~k#7fNF)2?q(6bNK9(czO^n z0$0mf#WNp>d0?IM&J?Zn?@2diKc9<0p@R9=P{S;m)&nErzJPL-r0H_EGJji?-l06j z(cBnfbsRj(a_UqNZ+ugW7V^PY-{{Te%z7VQguM9mO1i9hW6lb-2wI zk!1^fgW4iqvsXH*;km*rK}}&d7!$%lsa6w-!`k9IDb&IaONlL`Ft4+hPIwfIXY`fM zihZeeywfsik1Z5)xF;n1Nl||U40^;crX5`WXsQhdaiwI3x_I$%)~=L;xAuDTad%5s z6ohW<494#d@O-hd{?mGl!=*-!|62HaZQ-ddjP*_1St{m>^JuX_>Wj#l_sN4~Fmhc{ zR-y6P0c%M>hHsM3E${YV{JM&a)*9czwVAj+-+Y%s+)ze*%*eYq7AQ*3H z|7->5_)4UueF^7QsG!QJ(vdRJR9b$Oz;5JNpULg3Cj^Pb0yV`c29;9#}qb84jqM zd}QR4WU@USdwW~dd-xDm5&!niyr5O~oo?i}fThG8Dn`8Xmj<$Qt^6^GOz)R?cQ zW`)G|Y2NO0-E%kD!>!IxD+z~g`PK-AyLgMil|*+}5QKNcQPQZVKMcW_`g2OL$RS5u zi}la6IB2&=GFb0j^(wN~SV=)s=WHd~W-Qw|BXYACh7kFB&SnZ9H4S8@I733(+ETH7 zO@XGFV@^DUV~H~HC+|di*LCS+oLxUR?Sn!natKV_vW4ga$avVqF?pwuN>}Y>adrfn zLatj@6_9a2u9uEGB)B+wCD0wBfgxVeOD?6C=)rJ}$+Qw%5c5p*@{E>EL`y5w$+(M$mh4V;@Mb9N{B-@+evD4TPKfBiI|KJt z^>or{A~C)fwFgGJO>mU#O=ES*bZ1+IC}&e*S%# zs#zzMC1zDKZ+WD|DRTNIgQJwwxjiL81$)pc;qlcF4Y*1}a!nor@;kW9T#`>5k6Psx zryO5El`hD!()oweyuJm)L-*_`R3Aa%zT2=!o!pEKTC3VM=X*v9O+GN(|K=C_k##Mw zNQWaL)D}u^Pj3LKfYVXK96WrIBmcDOLO!XTWYd!UY`*Qva=9yjT^pNvd zyg1>_jO_SZ`66?Dn0mg2P^JoP-1`Ncu6$EIkTca8H0Nx8o4&mz z^5mZ8%I``uP-r}9LAgUj@R1?Pqn=24@AdRUuUc(yXzkT+rc|XXB-@(vF(sukewf<+^C8_^MQvQD{7YsP@5$kU-3Hq9k O3%~>8 Date: Mon, 13 Nov 2023 16:08:36 +0100 Subject: [PATCH 108/207] more radar crap --- changelog | 3 + src/main/java/api/hbm/entity/RadarEntry.java | 22 +++ .../inventory/recipes/ReformingRecipes.java | 10 ++ src/main/java/com/hbm/packet/BufPacket.java | 56 ++++++++ src/main/java/com/hbm/packet/NBTPacket.java | 2 + .../java/com/hbm/packet/PacketDispatcher.java | 15 +- .../com/hbm/packet/TEAssemblerPacket.java | 62 -------- .../hbm/packet/TERadarDestructorPacket.java | 62 -------- .../hbm/tileentity/IBufPacketReceiver.java | 9 ++ .../hbm/tileentity/TileEntityMachineBase.java | 34 ++--- .../java/com/hbm/tileentity/TileMappings.java | 3 + .../machine/TileEntityMachineRadarNT.java | 133 ++++++++++++++++-- 12 files changed, 250 insertions(+), 161 deletions(-) create mode 100644 src/main/java/com/hbm/packet/BufPacket.java delete mode 100644 src/main/java/com/hbm/packet/TEAssemblerPacket.java delete mode 100644 src/main/java/com/hbm/packet/TERadarDestructorPacket.java create mode 100644 src/main/java/com/hbm/tileentity/IBufPacketReceiver.java diff --git a/changelog b/changelog index 54fd44341..e03539fb7 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +## Changed +* Light oil and cracked light oil can now be refomred into large quantities of aromatic hydrocarbons a well as some reformate gas + ## Fixed * Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer * Fixed custom machine NEI slots going out of bounds after the third slot \ No newline at end of file diff --git a/src/main/java/api/hbm/entity/RadarEntry.java b/src/main/java/api/hbm/entity/RadarEntry.java index 540ec925b..56bb41df4 100644 --- a/src/main/java/api/hbm/entity/RadarEntry.java +++ b/src/main/java/api/hbm/entity/RadarEntry.java @@ -1,5 +1,7 @@ package api.hbm.entity; +import cpw.mods.fml.common.network.ByteBufUtils; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -12,6 +14,8 @@ public class RadarEntry { public int posZ; public int dim; + public RadarEntry() { } //blank ctor for packets + public RadarEntry(String name, int level, int x, int y, int z, int dim) { this.unlocalizedName = name; this.blipLevel = level; @@ -32,4 +36,22 @@ public class RadarEntry { public RadarEntry(EntityPlayer player) { this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension); } + + public void fromBytes(ByteBuf buf) { + this.unlocalizedName = ByteBufUtils.readUTF8String(buf); + this.blipLevel = buf.readShort(); + this.posX = buf.readInt(); + this.posY = buf.readInt(); + this.posZ = buf.readInt(); + this.dim = buf.readShort(); + } + + public void toBytes(ByteBuf buf) { + ByteBufUtils.writeUTF8String(buf, this.unlocalizedName); + buf.writeShort(this.blipLevel); + buf.writeInt(this.posX); + buf.writeInt(this.posY); + buf.writeInt(this.posZ); + buf.writeShort(this.dim); + } } diff --git a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java index 238e5bca9..168fbe902 100644 --- a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java @@ -32,6 +32,16 @@ public class ReformingRecipes extends SerializableRecipe { new FluidStack(Fluids.AROMATICS, 10), new FluidStack(Fluids.HYDROGEN, 5) )); + recipes.put(Fluids.LIGHTOIL, new Triplet( + new FluidStack(Fluids.AROMATICS, 50), + new FluidStack(Fluids.REFORMGAS, 10), + new FluidStack(Fluids.HYDROGEN, 15) + )); + recipes.put(Fluids.LIGHTOIL_CRACK, new Triplet( + new FluidStack(Fluids.AROMATICS, 50), + new FluidStack(Fluids.REFORMGAS, 5), + new FluidStack(Fluids.HYDROGEN, 20) + )); recipes.put(Fluids.PETROLEUM, new Triplet( new FluidStack(Fluids.UNSATURATEDS, 85), new FluidStack(Fluids.REFORMGAS, 10), diff --git a/src/main/java/com/hbm/packet/BufPacket.java b/src/main/java/com/hbm/packet/BufPacket.java new file mode 100644 index 000000000..b2a158ef8 --- /dev/null +++ b/src/main/java/com/hbm/packet/BufPacket.java @@ -0,0 +1,56 @@ +package com.hbm.packet; + +import com.hbm.tileentity.IBufPacketReceiver; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class BufPacket implements IMessage { + + int x; + int y; + int z; + IBufPacketReceiver rec; + ByteBuf buf; + + public BufPacket() { } + + public BufPacket(int x, int y, int z, IBufPacketReceiver rec) { + this.x = x; + this.y = y; + this.z = z; + this.rec = rec; + } + + @Override + public void fromBytes(ByteBuf buf) { + this.buf = buf; + } + + @Override + public void toBytes(ByteBuf buf) { + this.rec.serialize(buf); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(BufPacket m, MessageContext ctx) { + + if(Minecraft.getMinecraft().theWorld == null) + return null; + + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if(te instanceof IBufPacketReceiver) { + ((IBufPacketReceiver) te).deserialize(m.buf); + } + + return null; + } + } +} diff --git a/src/main/java/com/hbm/packet/NBTPacket.java b/src/main/java/com/hbm/packet/NBTPacket.java index 80645347d..3bd5afbcb 100644 --- a/src/main/java/com/hbm/packet/NBTPacket.java +++ b/src/main/java/com/hbm/packet/NBTPacket.java @@ -14,6 +14,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.tileentity.TileEntity; + +@Deprecated // rest in peace sweet little prince public class NBTPacket implements IMessage { PacketBuffer buffer; diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 3d94f2d10..d56e9407a 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -21,8 +21,6 @@ public class PacketDispatcher { wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, i++, Side.CLIENT); //Mining drill torque for sounds wrapper.registerMessage(TEDrillSoundPacket.Handler.class, TEDrillSoundPacket.class, i++, Side.CLIENT); - //Assembler cog rotation for rendering - wrapper.registerMessage(TEAssemblerPacket.Handler.class, TEAssemblerPacket.class, i++, Side.CLIENT); //Missile type for rendering wrapper.registerMessage(TEMissilePacket.Handler.class, TEMissilePacket.class, i++, Side.CLIENT); //Fluid packet for GUI @@ -33,16 +31,12 @@ public class PacketDispatcher { wrapper.registerMessage(ItemFolderPacket.Handler.class, ItemFolderPacket.class, i++, Side.SERVER); //Electricity gauge for GUI rendering wrapper.registerMessage(AuxElectricityPacket.Handler.class, AuxElectricityPacket.class, i++, Side.CLIENT); - //Universal package for machine gauges and states - wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //Siren packet for looped sounds wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); //Signals server to change ItemStacks wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); //Siren packet for looped sounds wrapper.registerMessage(TERadarPacket.Handler.class, TERadarPacket.class, i++, Side.CLIENT); - //Siren packet for looped sounds - wrapper.registerMessage(TERadarDestructorPacket.Handler.class, TERadarDestructorPacket.class, i++, Side.CLIENT); //Signals server to perform orbital strike, among other things wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); //Universal package for sending small info packs back to server @@ -57,7 +51,7 @@ public class PacketDispatcher { wrapper.registerMessage(ExtPropPacket.Handler.class, ExtPropPacket.class, i++, Side.CLIENT); //Entity sound packet that keeps client and server separated wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT); - //Entity sound packet that keeps client and server separated + //Packet for force fields wrapper.registerMessage(TEFFPacket.Handler.class, TEFFPacket.class, i++, Side.CLIENT); //Sends button information for ItemGunBase wrapper.registerMessage(GunButtonPacket.Handler.class, GunButtonPacket.class, i++, Side.SERVER); @@ -67,8 +61,6 @@ public class PacketDispatcher { wrapper.registerMessage(ItemBobmazonPacket.Handler.class, ItemBobmazonPacket.class, i++, Side.SERVER); //Packet to send missile multipart information to TEs wrapper.registerMessage(TEMissileMultipartPacket.Handler.class, TEMissileMultipartPacket.class, i++, Side.CLIENT); - //Packet to send NBT data to tile entities - wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //Aux Particle Packet, New Technology: like the APP but with NBT wrapper.registerMessage(AuxParticlePacketNT.Handler.class, AuxParticlePacketNT.class, i++, Side.CLIENT); //Signals server to do coord based satellite stuff @@ -97,6 +89,11 @@ public class PacketDispatcher { wrapper.registerMessage(PermaSyncPacket.Handler.class, PermaSyncPacket.class, i++, Side.CLIENT); //Syncs biome information for single positions or entire chunks wrapper.registerMessage(BiomeSyncPacket.Handler.class, BiomeSyncPacket.class, i++, Side.CLIENT); + + //Tile sync + wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //The horrid one + wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //The convenient but laggy one + wrapper.registerMessage(BufPacket.Handler.class, BufPacket.class, i++, Side.CLIENT); //The not-so-convenient but not laggy one } } diff --git a/src/main/java/com/hbm/packet/TEAssemblerPacket.java b/src/main/java/com/hbm/packet/TEAssemblerPacket.java deleted file mode 100644 index fddaeedcb..000000000 --- a/src/main/java/com/hbm/packet/TEAssemblerPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineAssembler; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEAssemblerPacket implements IMessage { - - int x; - int y; - int z; - boolean progress; - - public TEAssemblerPacket() - { - - } - - public TEAssemblerPacket(int x, int y, int z, boolean bool) - { - this.x = x; - this.y = y; - this.z = z; - this.progress = bool; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - progress = buf.readBoolean(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeBoolean(progress); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEAssemblerPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineAssembler) { - - TileEntityMachineAssembler gen = (TileEntityMachineAssembler) te; - gen.isProgressing = m.progress; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TERadarDestructorPacket.java b/src/main/java/com/hbm/packet/TERadarDestructorPacket.java deleted file mode 100644 index 4b5a14763..000000000 --- a/src/main/java/com/hbm/packet/TERadarDestructorPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineRadar; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TERadarDestructorPacket implements IMessage { - - int x; - int y; - int z; - - public TERadarDestructorPacket() { - - } - - public TERadarDestructorPacket(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(TERadarDestructorPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - try { - if (te != null && te instanceof TileEntityMachineRadar) { - - TileEntityMachineRadar radar = (TileEntityMachineRadar) te; - radar.nearbyMissiles.clear(); - } - } catch (Exception x) { - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java new file mode 100644 index 000000000..4250d6edd --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java @@ -0,0 +1,9 @@ +package com.hbm.tileentity; + +import io.netty.buffer.ByteBuf; + +public interface IBufPacketReceiver { + + public void serialize(ByteBuf buf); + public void deserialize(ByteBuf buf); +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index 996a216b9..f90a124e2 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -2,10 +2,12 @@ package com.hbm.tileentity; import com.hbm.blocks.ModBlocks; import com.hbm.packet.AuxGaugePacket; +import com.hbm.packet.BufPacket; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -14,7 +16,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver { +public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver, IBufPacketReceiver { public ItemStack slots[]; @@ -147,23 +149,23 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme @Override public abstract void updateEntity(); - @Deprecated - public void updateGauge(int val, int id, int range) { - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + @Deprecated public void updateGauge(int val, int id, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + @Deprecated public void processGauge(int val, int id) { } + + @Deprecated public void networkPack(NBTTagCompound nbt, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + @Deprecated public void networkUnpack(NBTTagCompound nbt) { } + + /** Sends a sync packet that uses ByteBuf for efficient information-cramming */ + public void networkPackNT(int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } - @Deprecated - public void processGauge(int val, int id) { } - - public void networkPack(NBTTagCompound nbt, int range) { - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - - public void networkUnpack(NBTTagCompound nbt) { } + @Override public void serialize(ByteBuf buf) { } + @Override public void deserialize(ByteBuf buf) { } @Deprecated public void handleButtonPacket(int value, int meta) { } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 4e0500c15..2cf953045 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -231,6 +231,9 @@ public class TileMappings { putMachines(); putPile(); putRBMK(); + + TileEntityMachineRadarNT.registerEntityClasses(); + TileEntityMachineRadarNT.registerConverters(); } private static void putBombs() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index db8f40435..e9d80203b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -1,25 +1,33 @@ package com.hbm.tileentity.machine; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.function.Function; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.extprop.HbmLivingProps; +import com.hbm.lib.Library; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Pair; import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.RadarEntry; +import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.WorldServer; /** - * Now with SmЯtâ„¢ lag-free entity detection! + * Now with SmЯtâ„¢ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase { +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IConfigurableMachine { public boolean scanMissiles = true; public boolean scanPlayers = true; @@ -28,6 +36,42 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase { public boolean jammed = false; + public float prevRotation; + public float rotation; + + public long power = 0; + + public static int maxPower = 100_000; + public static int consumption = 500; + public static int radarRange = 1_000; + public static int radarBuffer = 30; + public static int radarAltitude = 55; + + public List entries = new ArrayList(); + + @Override + public String getConfigName() { + return "radar"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower); + consumption = IConfigurableMachine.grab(obj, "L:consumption", consumption); + radarRange = IConfigurableMachine.grab(obj, "I:radarRange", radarRange); + radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer); + radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:powerCap").value(maxPower); + writer.name("L:consumption").value(consumption); + writer.name("I:radarRange").value(radarRange); + writer.name("I:radarBuffer").value(radarBuffer); + writer.name("I:radarAltitude").value(radarAltitude); + } + public TileEntityMachineRadarNT() { super(1); } @@ -40,10 +84,81 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase { @Override public void updateEntity() { + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + this.jammed = false; + allocateTargets(); + + this.networkPackNT(25); + } } - //List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry - //The converters coming first have the highest priority + protected void allocateTargets() { + this.entries.clear(); + + if(this.yCoord < radarAltitude) return; + if(this.power <= consumption) return; + this.power -= consumption; + + int scan = this.scanRange(); + + for(Entity e : matchingEntities) { + + if(e.dimension == worldObj.provider.dimensionId && Math.abs(e.posX - (xCoord + 0.5)) <= scan && Math.abs(e.posZ - (zCoord + 0.5)) <= scan && e.posY - yCoord < radarBuffer) { + + if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { + this.jammed = true; + entries.clear(); + return; + } + + for(Function, RadarEntry> converter : converters) { + + RadarEntry entry = converter.apply(new Pair(e, this)); + if(entry != null) { + this.entries.add(entry); + break; + } + } + } + } + } + + protected int scanRange() { + return radarRange; + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeLong(this.power); + buf.writeBoolean(this.scanMissiles); + buf.writeBoolean(this.scanPlayers); + buf.writeBoolean(this.smartMode); + buf.writeBoolean(this.redMode); + buf.writeBoolean(this.jammed); + buf.writeInt(entries.size()); + for(RadarEntry entry : entries) entry.toBytes(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + this.power = buf.readLong(); + this.scanMissiles = buf.readBoolean(); + this.scanPlayers = buf.readBoolean(); + this.smartMode = buf.readBoolean(); + this.redMode = buf.readBoolean(); + this.jammed = buf.readBoolean(); + int count = buf.readInt(); + for(int i = 0; i < count; i++) { + RadarEntry entry = new RadarEntry(); + entry.fromBytes(buf); + this.entries.add(entry); + } + } + + /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry + The converters coming first have the highest priority */ public static List, RadarEntry>> converters = new ArrayList(); public static List classes = new ArrayList(); public static List matchingEntities = new ArrayList(); @@ -87,18 +202,12 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase { }); //IRadarDetectable, Legacy converters.add(x -> { - Entity e = x.getKey(); - if(e instanceof IRadarDetectable) { - return new RadarEntry((IRadarDetectable) e, e); - } + if(x.getKey() instanceof IRadarDetectable) return new RadarEntry((IRadarDetectable) x.getKey(), x.getKey()); return null; }); //Players converters.add(x -> { - Entity e = x.getKey(); - if(e instanceof EntityPlayer) { - return new RadarEntry((EntityPlayer) e); - } + if(x.getKey() instanceof EntityPlayer) return new RadarEntry((EntityPlayer) x.getKey()); return null; }); } From 089b3907083f7078a6dae3e642f5b8bfc321f26d Mon Sep 17 00:00:00 2001 From: HbmMods Date: Tue, 14 Nov 2023 10:19:43 +0100 Subject: [PATCH 109/207] Merge pull request #1242 from JameH2/hbm The Convenience Store --- .../hbm/blocks/machine/BlockFluidBarrel.java | 19 ++++++++- .../blocks/machine/MachineBigAssTank9000.java | 27 ++++++++++++- .../hbm/blocks/machine/MachineFluidTank.java | 31 +++++++++++++- .../com/hbm/blocks/machine/MachineOrbus.java | 27 ++++++++++++- .../hbm/blocks/network/FluidDuctStandard.java | 40 +++++++++++++++++++ 5 files changed, 139 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index 84ad21963..41ab8cba8 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -7,8 +7,10 @@ import java.util.Random; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.machine.storage.TileEntityBarrel; @@ -27,6 +29,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.stats.StatList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -71,7 +76,19 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; - } else { + } else if(player.isSneaking()){ + TileEntityBarrel mileEntity = (TileEntityBarrel) world.getTileEntity(x, y, z); + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, x, y, z, player.getHeldItem()); + + mileEntity.tank.setTankType(type); + mileEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + return true; + + }else { return false; } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index ec8f81136..e0a494ede 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -6,12 +6,15 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; +import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; @@ -19,6 +22,9 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -87,7 +93,26 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); //we can do this because nobody is stopping me from doing this return true; - } else { + } else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityMachineBAT9000 trialEntity = (TileEntityMachineBAT9000) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(trialEntity != null) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + trialEntity.tank.setTankType(type); + trialEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + + return true; + }else { return true; } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index d639eed45..32274741c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -7,9 +7,11 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.entity.projectile.EntityBombletZeta; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; @@ -27,6 +29,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.Explosion; import net.minecraft.world.World; @@ -61,7 +66,8 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP if(world.isRemote) { return true; - } else if(!player.isSneaking()) { + } + else if(!player.isSneaking()) { int[] pos = this.findCore(world, x, y, z); if(pos == null) @@ -74,9 +80,30 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); } return true; - } else { + } + else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(tank != null) { + if(tank.hasExploded) return false; + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + tank.tank.setTankType(type); + tank.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + return true; + }else { return true; } + } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java index 78ffddd31..902c24672 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java @@ -5,11 +5,14 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -18,6 +21,9 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -60,7 +66,26 @@ public class MachineOrbus extends BlockDummyable implements IPersistentInfoProvi FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); return true; - } else { + } else if(player.isSneaking()){ + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityMachineOrbus kyleEntity = (TileEntityMachineOrbus) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(kyleEntity != null) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + kyleEntity.tank.setTankType(type); + kyleEntity.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + } + } + + return true; + } else { return true; } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index 35d197059..7a6ab966b 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -5,8 +5,10 @@ import java.util.List; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.test.TestPipe; import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityPipeBaseNT; @@ -14,15 +16,18 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; @@ -70,7 +75,42 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo public int damageDropped(int meta) { return rectify(meta); } + /* + @Override + @SideOnly(Side.CLIENT) + public Item getItem(World world, int x, int y, int z) { + Block block = world.getBlock(x, y, z); // Get the block at the specified coordinates + int blockMetadata = world.getBlockMetadata(x, y, z); // Get the metadata of the block at the specified coordinates + TileEntity tileEntity = world.getTileEntity(x, y, z); // Get the tile entity at the specified coordinates + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) tileEntity; + + // Get the metadata (FluidType) from the pipe + FluidType fluidType = pipe.getType(); + int metadata = fluidType.getID(); + + // Create an ItemStack with the item and metadata + ItemStack itemStack = new ItemStack(ModItems.fluid_duct, 1, metadata); + System.out.println(metadata); + System.out.println(itemStack); + + return new ItemStack(ModItems.fluid_duct, 1, metadata).getItem(); + } + */ + + @Override + @SideOnly(Side.CLIENT) + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + if (tileEntity instanceof TileEntityPipeBaseNT) { + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) tileEntity; + FluidType fluidType = pipe.getType(); + int retadata = fluidType.getID(); //florf + + return new ItemStack(ModItems.fluid_duct, 1, retadata); + } + return super.getPickBlock(target, world, x, y, z, player); + } @Override public int getRenderType() { return TestPipe.renderID; From c47e96c3cdb994ac8eaf77d528f51a3decc07105 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 14 Nov 2023 15:22:35 +0100 Subject: [PATCH 110/207] even more radar stuff --- .../hbm/inventory/gui/GUIMachineRadarNT.java | 63 ++++++++++++++++++ .../machine/TileEntityCustomMachine.java | 14 ++-- .../machine/TileEntityMachineRadarNT.java | 52 ++++++++++++++- .../hbm/textures/gui/machine/gui_radar_nt.png | Bin 21545 -> 21661 bytes 4 files changed, 120 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java new file mode 100644 index 000000000..3c91249bf --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -0,0 +1,63 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineRadarNT extends GuiScreen { + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_nt.png"); + + protected TileEntityMachineRadarNT radar; + protected int xSize = 216; + protected int ySize = 234; + protected int guiLeft; + protected int guiTop; + + public GUIMachineRadarNT(TileEntityMachineRadarNT tile) { + this.radar = tile; + } + + @Override + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + private void drawGuiContainerForegroundLayer(int x, int y) { + if(checkClick(x, y, -10, 88, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectMissiles")), x, y); + if(checkClick(x, y, -10, 98, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectShells")), x, y); + if(checkClick(x, y, -10, 108, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectPlayers")), x, y); + if(checkClick(x, y, -10, 118, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.smartMode")), x, y); + if(checkClick(x, y, -10, 128, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.redMode")), x, y); + if(checkClick(x, y, -10, 138, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.showMap")), x, y); + } + + private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } + + protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { + return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java index 4803e6e38..9c906623d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java @@ -185,7 +185,7 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF /** Only accepts inputs in a fixed order, saves a ton of performance because there's no permutations to check for */ public CustomMachineRecipe getMatchingRecipe() { - List recipes = CustomMachineRecipes.recipes.get(this.machineType); + List recipes = CustomMachineRecipes.recipes.get(this.config.recipeKey); if(recipes == null || recipes.isEmpty()) return null; outer: @@ -391,11 +391,11 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF for(int i = 0; i < outputTanks.length; i++) outputTanks[i].readFromNBT(nbt, "o" + i); this.matcher.readFromNBT(nbt); - } - - int index = nbt.getInteger("cachedIndex"); - if(index != -1) { - this.cachedRecipe = CustomMachineRecipes.recipes.get(this.machineType).get(index); + + int index = nbt.getInteger("cachedIndex"); + if(index != -1) { + this.cachedRecipe = CustomMachineRecipes.recipes.get(this.config.recipeKey).get(index); + } } } @@ -417,7 +417,7 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF this.matcher.writeToNBT(nbt); if(this.cachedRecipe != null) { - int index = CustomMachineRecipes.recipes.get(this.machineType).indexOf(this.cachedRecipe); + int index = CustomMachineRecipes.recipes.get(this.config.recipeKey).indexOf(this.cachedRecipe); nbt.setInteger("cachedIndex", index); } else { nbt.setInteger("cachedIndex", -1); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index e9d80203b..d5911b2a2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -8,31 +8,41 @@ import java.util.function.Function; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.extprop.HbmLivingProps; +import com.hbm.inventory.gui.GUIMachineRadarNT; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Pair; import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.RadarEntry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; import net.minecraft.world.WorldServer; /** * Now with SmЯtâ„¢ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IConfigurableMachine { - +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine { + public boolean scanMissiles = true; + public boolean scanShells = true; public boolean scanPlayers = true; public boolean smartMode = true; public boolean redMode = true; + public boolean showMap = false; public boolean jammed = false; @@ -133,9 +143,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public void serialize(ByteBuf buf) { buf.writeLong(this.power); buf.writeBoolean(this.scanMissiles); + buf.writeBoolean(this.scanShells); buf.writeBoolean(this.scanPlayers); buf.writeBoolean(this.smartMode); buf.writeBoolean(this.redMode); + buf.writeBoolean(this.showMap); buf.writeBoolean(this.jammed); buf.writeInt(entries.size()); for(RadarEntry entry : entries) entry.toBytes(buf); @@ -145,9 +157,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public void deserialize(ByteBuf buf) { this.power = buf.readLong(); this.scanMissiles = buf.readBoolean(); + this.scanShells = buf.readBoolean(); this.scanPlayers = buf.readBoolean(); this.smartMode = buf.readBoolean(); this.redMode = buf.readBoolean(); + this.showMap = buf.readBoolean(); this.jammed = buf.readBoolean(); int count = buf.readInt(); for(int i = 0; i < count; i++) { @@ -157,6 +171,40 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } } + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineRadarNT(this); + } + /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry The converters coming first have the highest priority */ public static List, RadarEntry>> converters = new ArrayList(); diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png index a6a4d174537830640fd06b4a553852c4a2643991..690e1b5f5fa1706b4b2f8aa6a7daad7435912487 100644 GIT binary patch literal 21661 zcmXtA1yodB*Pa=M?(XjH?(PtfkZyQIQo2h8=?0NbK|n#ek#0l*X=#;4I{q`?TEA<# zP#nGYp0m$>YF}gZbX2i1C@>%p2)4SKl0F0i1;2zs&``h^bFWHA@CELzpl*l;egvc0 zzkxvLAnHo;hW>ef-~0I+I$R9N9;IvT;ic*+U|PV?;^g5O#SC~*W8?^A3(A@WInNm% zdU;c1BV>8_r||Y-B1~-}rLSuWc64iUSGLfV*PVPrN} zNE+m$g>ohjon1WqV1Gz`*+leC2L;U3A(b z?6f0yY;YeMZ(%bJ3guz=IpL9yZ{3R?wl!!RbfD|v5`?qc`H@W|P8uCPL+CU!ze#KJ;Z?w%PRY^5E_qM{Hghk`O z!aq*@TT$9`bu!S!yLdl$mbk^RdV$X#*x22An@|?}5QJw00gt4hwo+dt_n}VgDtDI` z-G-Ddo-aQ9GSO=JkQN@z9nRN>MrWuIHyd)V5P777Ome*3pAl{o?HN-PPH-IfaUtwD zj@1A88~eCAxOweqRCrk|vbjDqo())e@6h~|@-6#OCsF$RlqT|( z^uDY+^E#(SBcv*ADufD8&oS%Y#XJ@cPht3%cpQecj!t1*MW#lDqn@sR zK)deCqO={Ko<#BCVz`psw(RN)W2XDYe7RmvZ96f&%5u5qrAVAM{57J3VC^^e-3XD^ zK5-dYq4P(*Im)*jckCaL^*$RGc**~CD2H=!w*2gDxmdDsT6N&QQdbQLI`}MKu6d}Q zYlh$0Apd2|{zX8vEVr(GzbX^y*)r)B$2SLd`02q1D;|v=n9wJMGqgpA(8;L3W5&mw zo~D?=p2NPJk&3>p?h`fE*ca*+FbATCQ@Z3n+_Di^o)^@Oxt+3J1ZK4PJQ@@8T+co6UQljI3Z-b6h z5nspjkDHJK zwh2YvONC5>0G0#DK5qaPcp1+t4nmliS^;l28>gqmWA?`~f!XV4HY4vpV>+-pL$ zW=->o0Jx#|$dSsjuPnyn6~m;zlr#H)DKrb4wJ_ySt~9bqq@I0*`7t6oEWl#Tvfb9x zGA+nW<%e7h#B2&m@L-Se45rMEQt~9UN>~A1>D~5Vfk)3_hiv)??JG(i>pJR0@j@R6 z<{Mc0Z%v+^fG2EPD9@{?$Hj% zFl8jZUnhW@T&2AYu%wFr1wVI}tnY?JeR4#csy?f;l`Xul z0QO%nzYl~x%lRDhC2}F^!!8nA9l^2Ewcji7@!%eJ9aB4QhQd^JB6%0<@WrE#@D3}^ zn+bLqQ?%8*@NIc(H2KjF@Z4wHEN)XV`l~~H4?Qh~y@}>eU=uaAIcV>o+U`t?g3cqbou6 zNX-@w2VGxCHzSc)_*h8TrD((E;JNd>x`BJgWUp}dGjRd(MkNnkTKfg;Yl}0gw zQ7B?OODCvjzrIf=#F4}jPblocFcegLn#R?Ip+T~R+-z;>Azyy$6blz5-co&rK03Q& z#79h|lw0^JGLEHniB!1tVUb5{v%_oUBa-i%hBpKY8LVrP@Q{aJdj7XOIzFU2_t)u|D{EwOvMt(7 zwOCtOI{)KpNj?+b4QD)@=isb#%WP3FsAj87(_wGt$vNdYKY3>Wi%R&|Cu&`P98>|p z#O&hrfqa-girK&qPGZJuBY_ONnap!^uKI8@Fcryh=##J&mItwZ{4Y|Am8x;f4}(63 z7oR33IU=~?KbC8q1I7Uku?-^81FsvM)k@pcFTQioFWg=QJQTMM8c$KzU)70seKvdy z=odq_Rvr&aS`3>cem1VqRUD_zL0mH7vC3@E)P7bQKirOz=R4AGPl{|jcEFMMa@4PL z`7on-s^E_=YST8^;cuaNjDyGDv)(YCHI1HPYXzP=cBigIT37v)S%#ln^2~$`SZ3a5 zjQ@-o%!d!d`q+7NYLtm0US0iQRa_3?FDf&hUFM`9Y1XA)$|)W0u*WdtD3dqIZ!;zQJT&>sb^V!#ew-&T zV`a4oxp4Q2=3`vnw->>ey3GV^#}Awp1k+KDhYSV3PVb8P`1i1p=lB(0tMOlc>r+&I z>F<4`nzQj!t<{L$>rb%8zk}wnTvr;K1sCj#pYy1%NGdbz|6I?tt;Kc6lq~M*4GAoLs!VVotyImE6eSXhisN!1d z@bTE2zO3(stH&x;vQ3$yVchB8A2G;l)NridI-6lrAB%%n7v38;y>qwMD$F!xt2pTS zkyn3wiwBO*TF6+qI%iVG?cWi~P0utFE4 zm+$VsIK7^XFoF@UVD*1;tL;U);G3zG-GJdpZ2eR*+j@qo&~o>5Da#o)&&+d18}o_(}IM(-OEH&xJ^UL z9S4-MHE0w`d(DExuP`TQ{5)~F{`fV4j)aX_?eaTEnVV&m)Brdg&3fl1Y5OfIbh`mk ztaWSGD3WKbn!p5}r*%hJoD#bPN43DBP-dck8HxX_MMSiesC z6xHL}5SE*aztW!Y=L1Z`2xjzkZR)$ihp&S142AShqqS=Uj@*s$xgf0vyfS>LooAvQC^>vi!oa(2akQL4bSp@wV_(N=<6daJB= z=UB1=Jwi>fS_m%#X#oAX`tcXTX+g^RMm967!eRo98fy&Gjchq&}h!3O`ZE2UBR zG@2_fYQr=#OE}c$61VZoh%|Q7aa7Gol&`aS(+?YWc`LwDwnv`6y)(1%Kf24BC0dp2 z<|mP>X;=H@{|4KRoUw!!-LuZbx6^w$ zp-P@>BCXR$0|!?Tm@tt>4GTXuXGh(hqe?$a_czIL>7l^O5|Y5cc{qL>_+hu5M9{GVLHzDkU&xQyrtl z^j(!cX8g*l_zBu=_1;=AHiH!79~C(cyIrmAX}}9^W45F^E0g1u)*D!R)eN8!oZ&3^ z1cm4q+7MH&)@L&_4|+y03{$D^S_1JU#RP%p-iOy{L+=?n243(f<%XBtsPRuP@rc3%eSEv9v493TVhUe2*WI)u5a%NDmgKd z_{VMg!oF4fA))+$1Ix+)@cLqiLPR(3H)J27)`BuN-p7#jx^Uq_x0Vf*gZ!YwlOgg< zj4t+YG0j#?`nyO8M{=*$71RStS7y8_`;@QGlmck{=2^+4QJ*q~UC<6wCy8iE4SleO zFQ`|Xc)p+Axegm4{9P-tvtAL1EBO`U_$f5L?&kKbWY-53jizSuIuh<@_AM`ryeRla znJ~p9huf8znJq$sG<&ycutrbf4u5R^5NT~|_bS`DH(4(klIe}e8*4Hb7saD(SC0P5 z7%yiU7i>P=;n1R0ZePYU~g#T!L4Z14(nXMVRBetUn zAN*oGaPnSiMBi2_*5vqCn^+TW21tk`L)qXg@eKAAx7YObhB+ zgoq#d%NcC$+-8s~qX(j)$wq&MRXR*wYTqY(W{Zf^AhR`BgG(=bL00*d$Kn=2-HOuX zb%)wkc3Eohfhp<$!+a1;8xSR}$3_UsoJI*;ssWB8X|Ia4(Gx1?*~3#S$4M*pknnp~ zw|VT@iR}CCM?G_DIW#&UVmU^?6y?GYNvrg5r_7#<<>Ng*yl%fBp1C%7QALV94QXfY zO9lMZ$oy39q~Zq>rs#YaU~BU4RUByJ3}7_2Pu`{?(_(N}6-Anh7FFnbC3F}+;mZyd zp!)0>&vC(l*?}y}{PH(M;V4eHDK5uFXr>aJvqlQZ6xUwb;T2xui>+7zXJYz!E)yY3 zp5+>8`u~ul`4lvvbDpBq$o+E{MzH+z+5EBk$|2{!&6*O83EVAIp{(ye`~LUZSJ?X(p@Iau+te^ra<1X#lm061vCd^e-7~!_ zMLJ?K35>!f@fKxjmcp`kr!IB9*h*P~9WEU@5|L&VVe)ChME@Ddq0K|DoJ0y`@th`( zbTCn*`juW{GDTm(6^LU(9t?O!uo^wAnyuICEi|&DRs_t+Xy3D+E2s^Jy)l9CJKFT2 z&w0$GuB$r*+}`y%Gk4|bnfJKYwd?fF=Y%~BB8w8|(y9h$QBDYB%Pn!^9?eH4Oq(qJ zHixsl(14Ae-OJrEgFRoq}@e4l8iX}~+ zQ*=(KyvylbzT^8Hc?=91Uo{oFc+I|2eedz`LeU(l<+K}0pU2be znNBh6*aW~u^)!0o#&O;V?CL&_d@KDbJoQK7J726qeH(Gqt31VWgJJ3WjL1vl7mucw z|7xA^3G_>>RbSQ4VWpPsBOhc&p4MK#_mwc{{Xx@ry^G$6)A(ufm}T%Vb(%%+#_)5A zvFM0lfmTI!ZTnj?irEQi@=8APa)k%k(TU4~>XBXh%#yO7YYEc(zRt8RcUX~|I;PL% z4Iw{Ex|?MiRcGeL*Nu^ohf)&cvMmz2*b_b~@bA=VS4#0iITd(+46<+!y{4`gR~_FT z*VnEU0CA2#GlluV^ zB3$?HC)j!3K0#8G`(cu4@WY(%M2UYYDt?_Ud~bH*=^5s4vuH5}yyK_nUvrg@8Pi+n zUsFeHOMB1{E#xwi^a`hBCB{+COciV-2iY(sw(n9$pGcC`L28E2pE05u7#ZTZVARaA ztD^(UiW>9pFtNeP@K07r0`#?f&T~iYIKKV_hBL8^CRlt8-nj2bE~cZ!H06L4u0Xso zkF32{$5az!j5|om1;t*vzNc(>b}TC#C(7$ z!9WA<|k5+$qN4|*Gxi3f2_kqlw+;Td8LaHUj ze9viPw>R4JH=n+`eB6^iUAeu7Di&|Ava?3dP{#<4g{KNiM*J$DuXiOMBqEW;nA>H9 zHzyTn$@k(mJ>sfxgkxy<+L!39xSD&6#3|k4UhBEqHxjVDNSUH<4<;??gF2ae)y4NI zYyT*YI7SN;xW=F(il&Wkg2aD_6r?XJSIJq#{&-y7e|c(Ik}hY;arbxF&&4?zMeI*% zki(qDxF_-eww{2-(=f77*g%gQW)IWyqe|fi^*40!)1oOFkqN4r#hC_WgRTvn{3_6Cy$`o zv2|t7}L)#|}J~@gJ#t97*zOWbHZYPH_-k-j$tw&x*wyTX^yyyEcT@yKy z{j%hHNX;n<<$W3aZt=U{AUB&zG>nIgEj>W(RI&yMQo<9Ztgc@Be~+1g-mCXCYJMfSFnW=W$4U9vrmDN5#~r4XNVRt0(5Mhlk5wkd=KStp7p zoPn=O#VSLtFeg|je$3=~_+nvHj1r@pa}W4u2E=fr1PA9nEgAOOP(P>umCHuKTjDz= zH6cdYBkyqyRYa2^4Pm8@+4j*4{iv2r)PkkoPJ)bsl;|KxS8rMw!Nx958NN+RKD^;H zAMd@vg<=ZP(f(12t0wX6{Ey7X+cC)C%aCloT68u&#{e58_yX*>=OaATx7}n_fh(eP zg(tI_|4l!yE~i))pPq+pP5Tp!rArO`i(XCopUjpCXy#NXf}*}XFL_Z*3_2>-iw-wAhyrp6(uRC(@!W(|TC|Ip zHM=<+F1N;0iKqIl2E2Y!qH@xMgo{T>IX1@IjTNqskv0a*u0 zk2?D2t->buW=g~ZPMM^GE=oggFA!I~`S(ZAdq+!1yX%U(c{#G&1&dlDJ%v$Kz-?I! z{26MGBCfQOh6aY{TCm`^a&5c0$|p6Z4X-X&gOWn;Z;H}u24o+vr&`Q;()GotaExk9 zdY{*I4z_ylZdG$CKYNz@phqd<%69QNi9$H;2sZ>bT@X|68(f%ML7domjt`yrk{2qI zsU3^wHi5m&k5O?W)wQ>@=%xLROpf=*B+C%mOOnE>r}~~N(aBRwqLE%`^WjuYqAAmPFA@CjyRqw1Qv$!; zU}5^NfAdyOU`L#D2iJR}T7Q42Uik8y^!bmPqM*w|*VT@kuV0mLXl2Hm*Fq_yN8}=2 zX$m$KbK$wDTD=X1eT2trR0SqF*dtfSt7&PK{`dXE`JZ`R(&IACtY02tEsqbkGeQZ0 z|9*Sk9yBBIxvxqgRu%j{Mn4W$_AYsRTua1ldHCXBX@9m1ljLoTgwO9|umSu&zYX>E z^%3{n{|ejg-|z1?oS?DA1q}#nZo6g@kvg0>B_(nfK6KSMJL1_+;j@thE8ryN)hZ&xI z{^!R>yNkbz_V)IWJ;$57>$B_M)pgDb_4E*3sT25n37=x$gP&X5+n&GY*dZ5(E7fL1 zQK+~qqM}&~3npDRzd0?6!194J3GXSCk0KLwqatL{Dzs?#JwIHz#b|`&sf7={Io;Iq zYtHK?k~19(0>M!6-NIood$y+;BtkZQ2Gkx3HigI4u}vng)g;)<>x(6KsMyOrJkSKJ zcPHO7F)~mX++u|X9k#x% ztYm{s7RXK|h_0%Eg;dwnL|T96-n9XCng@^TTxwn@LHPNPx@!Ks|DOd&PEHOlcR}1% z8Ig40IUNrVPI%beCM^m(q~g|Q&f~{h9=qjmsjul=bv@VBpN0xF3ggtf-r*~&5@R#P zC&=YSU`Z_3+w}W`hYL9Byo6Mmw+dK=-3#N&T+zwipA!l?j$1$6U3Z)eQr_SkUXxQ( zPk@t+*q8T`e&t|an3$PQ_A3gC(~Ciob6Iwfg|Bu7m82JglZ-{iCua%@6gva|1?wVZQljGv#9lN)jb$boQdXl-;*mc%rLbfoIh>1XFy5`Y^l0|d zviGSNeOea4YI%jt&5*8&C1xa?w%qXkVaAoY3<~Y!8sWg5f~eFKC2xhg`@Re#2U;8S#detx#Hy_I%RtKbvm zhX7(P)Q+T&E))qA!ibwkIfas`-@aUB7QBgwK68}n+B`*NN+PrygNHUh}=mgRd< zXU#;RWWK=!&}5BBrNaOHnfG3L(aaxs?tFTB`X)YJiCuXtlRHP`1%gqLIqh$l$=IrhZ|Kr{`oRZ2iQcy)b4ZTj&R}_T844=7W;872aOx!zmnPlk4<- zJXv)u9F4>*Zbz&Wi{+Er0f2|Y<70`>epM|;qh_%l{TNRgM+i+4qZhkAMcOCTxN=q zU;Jz=(k+ldhDFgyK7x~r@fCeCUs@A1Q7Gfn~-%OXpK1Yqm^z|HXiq6B@DM|4S@?Xu7V`4o=hLt*&rKCDM>6v|CaGq> zee-NJ&(>lQ(*8yamAkz-2-warHfi-@20&fswpvkI%IEn@N#f;R4_M|W8v9iW+TRxH zZIB?KOtjvKV3!e@nwmlYP#XEk=Zd-~_HS6Pb_AddLcD|)E#f79ks}RhN5Jd<%jKos z<$HD|eJsp^SG6Tch97@c_x2%nJ7b8YulZm_P|N`D~A_ z!TxaB{fIyYqmR!9%C+B_G`W&%u!9X710*9hA;IDDa3v5reKsXK)fa==y77uKTPi>R zlF> z!xbj)3s)9$?=(=1D2;?#Rv~24fkM9R?``^DrR3y{pwb5S45u)fw!LK6UCcifL+49oXPij;Bh!6~6HcW5L}ByTKEl2mTVHNiZE z!$E-2k}f$t$3Ykvzc+LVqS)HVCjzD*y4ZZBABRrJ;&JjzS?&f>+x-yeIF&z<&TfEV zk4h7E=Lz;3e4@0J3F6j%AOgBj|Lsw??rR+CmwxMr^W-#@e{Jx z+L)D-^R47zOO(S{CcpDE9b`4=NSce}Z7&Ah5;GEO64}d+O&xOY7wIqvJ%jq2WOMIV zj4#1D7N^TuyoC?>k`Y~<(G8lnjjIPd5r%kEX~-EG5^WA9l=vO38dlPsd#;5&N^7u# zo>y^uO6Magy7Dru7B5}D=Gm9H96=`mu;~N@1peUg?=3a+dhd)Efpr9s3r>K~+l?P) z?%y9D$8!WBcL(lac8i}K!spnq$OWPSI)i`GsU9Y_nZ7bpzu8&}UtI6O4LU7M(DrQ- z)7(SrMqSka6F$F9tj!WX1z(FGi$vW&QtW&tb$*K`m%3Q61I^=?S8L1l z&bxnVA>jNW8WDyG90?VNYnpryorK4%DIP%apRcq4C~QFodHHuC1uPsX8!At{Q$a{( zmQ`pD1~CVp>jGaCaX57>kFk-*WZ`$;K6=RsdL%yz$<=6o%lEOq&uVt0=xl9xv zZZHNkurSO)lA7}18Bgv@Iqdcf2>4Gaq$2LC{r|YMswq~+U5herKw`I z(ML6Pbtuz+N3n;ZFMg&23V3!hM4OhJ+yf4;Pf=oATrr@zfT4SVItH9e6DSA%cN1;1 z*8sR%ZhluoJy{Q1HgViKPE;n}OAdi2MD+T|QpkTf^!eV$im|Sc;%BUeAf?z_-i1wN)xBLVc?3(RUTP3FvOqi={!ZUFup| zSb*hlk&~0NmAwJ?1L$+O35Ky%h%oq8JQ;r^xu9dc`Isj&8YwLe^G6X&URX8R4XkJGqv9!Ev_6j)xr!fA?EvA8+>Io|e(~?JY^{AzsZ+UTJDl9t~>V zGQTlVVT-sidJ?L_AQB$8riw)&^hQ06#S?G}9?Op5fw!bNqV6;rRj}X)#1jm}5hHLI zG~45(u)7ku&~8u%67*_sNx1$0d~86^ni`I9%e?`t>~FLeRm(5f*rIL6rGJ~w`c`WJoWf=u=EU&;RTkHrBM3Aq&=_12AOCVo< zPnW6_0tpjS?gDh5HtDHM$j$L6XWj8IW73|Yyxc+*;^~0usM0Hf0j+Jl-V@P=={ZF0 zSMM-JGMOjd47llU2NCa)e^gj2dHO>1uOfC$JEa~R68$9(_qyY~%H&tSRt`i?9XHm^g# z2?L_7-ntit;E3K+(nFwr;>%sQEZWimZhZDVcm}wEs;es(-GC~!q%RXYdn~0}O9Z28 zDFv?>3FOWC5QQ+_YQkA=_B!^xUi?-aMmLq{pUFh2h1|_a6O%$kCMK0p>%?d@@|kUU z!Rij+CmikLvG?muwyjrCEuIKcZNL3|yF}o;M|0=7y6`NxN))a3S{4Xh$iu(7u%h%| zQMfYJz@7OzG=z}+EV}veBlfmneSy8?V{Q&Sy73ANw1JsITfv3K#RXQ|EoRM}kClhaai@Zu~0FvIr_` zwsI*CZq1U}8i2Y-RQSS7U&I zIV>nczjjFPr>{&7Gmz`fTc)91RblN^&V0FV{dp90mVo7a-B0ao>ycH2%I}CD8kKnmYfHeegJU?N|o$4^6S=|cq0TZaNzDnv3rZC(BB@GGB` zpa8dG6Le4Oo^a^RAK+)uhTWy;%3Mc-jt@BoHqblZkQBL4XulJ206-oLI^NAAqF4c_ zWMpTPA$s^>=cT29fB>1GWBkMaRCXB=fE$Ei*4QWnOoFe#zHt88$ewJKpO=>x?=VxW z%w^s({pR^eP@WHJTd`KMOTFB|SXA|kq3dcr0_qcU` zk}c`S^YPi2S>*5SK9`_H0XX7m({prin5lfiXwE~LTkd(dES|2fRUq>oI5zxVTWXGz zc_RR*|4lt^XIWuj5xxf+5dw$?;5SBo+_rXh`f4e%0vg^&O9q~_9YGJAbkGIp$Aodm>=wGYw9<2oGtuAZ!wNB&~q(2W+LN zngF{NNH}mj0n|q6$5q$10V4%eK0svQwqsmcnLKbH*1cMCH}cvECX5LA&gh?iN7vu8`Z)tIec_|GslT5aJi|{^PtIHln=1Hf;KF$pZ3J0$3wx zmLBsKe*DjWaHXcE0vn;(jk&b6)MKL$86iTz1O2m$Fd+wJ@eAn84MgwS8PB1&hK6ss zaK2OWMnwub(65|b;AA5sdC)8o(=1GRTD!eUN4#om=p`dRc^||F#0^l`&8vZ&0P;2g zHD~7G(cvAE4!LRMxdW7+k%uP{kkaF=G+h`$p|Qp%aBScIV+G#@#}e3)fCM6F5=5eC zuT(wFA3(sr$IC&`8TSG62gejtUMM;~av@apuilhgQ(@o2dscV`HkZxDB{2xp^OU_F zR4%SbRq~X7=;IlLtuB0az!Vo32USdsr@0O!+spmg7=R7Gkt9H+kn>qX!0Gz>^(&us z59H?ZXbON&E3hpCPDfZh#i#;Vie4-=g*V<$X7fh@8;cLDoXq2$HzZ`T2N0=$-q&XZ zkMa5%Qxf0;(n{tKJnv8WPlH9Ha?GIUhWDwQ2cLboQkl^(!$yupxC7q|l#a~9m7R3kkyk6i)dzP4Jik51$5dub;11$5s!Z2e$*w3L z^I>!XK|WVwng$#`K_J}0I}_tO6Ys?RkLe(oBwPsJar~WVl2zz+46sH%0Sp90T+7Xk zC$~H%8RkL1;+asR|D6O&Dc63w0?AXo52Hs^DR(Q^G+nA0b-zuxag+k1XsOBX$Py?; zgbn|a`4~vk&%oS%54T@xdI15}oq^~|hW?GxM$l1b79c&K31Nob9*Ba0Bqd;71guA( zUX58j^eud{^EnI$M4lfkFF4JBoeBLnhlc07(f=Cv+h+&Oa;+SNvz-Y*S-ju0Kxn8u z-;g9>^tlAQyI=Au{9u~x-Pa;SVahz;%{^qIpVC)pLvT8ehyD<-&fZm}Uxra_T(<+X z=r-^`W&`fKu6|*z>(JiNpgN$c=)8O2QbRNb%%u^G%~QO@oX{VkY*3?tj0YO zUE;6eKejIr3;mqn~Z>_>Z)01(9)ymz&XrWZwWmRC`WC9wU z3%b?bzdJf)g)h(NcMh7@cFM9W``nuUbUgyiZQ30w{Z7=Kg`YnKe6~$a^BB-CU|rBL zD!vg0$m&wt_M4;g$zD}OzAa#nz+laucqf{clcNq~zgd&(3}(30N%Zvc63#-II@`31 zyjAgi(1F0e<^*oB5X_=iY-#3i*Qf?6ZsHr^3>l3Il;f92oR*>24v1_hUpfe!2hgte z`Yr*7t+yS(5Yo1rEma46q$A)AkzN3o7u*|uGJ3xTyUhK$LE!mbFD7q?Tnq*=u!_AR zW^6RrLA>ztusc1Sh=7m~SeiU~PZq#V3u!Y73kxd&fnGKJoS?^YW481r)H_a7Z;jy# zOn&Ph76&NC=?ibS5oH-L1~+J=ej8JM_vfG)JfG9=xhjcPCs1guM_sqs(m^7?sMr9Y zFG*)luPb{mL>qh@(N*%euN!8I5Q37vTC~_Qpx_QW&L&}s2(T-9O#@p;to9(KJA551 zd9nLimwCv)@6Ng9X_1z|5TxIO`5#vk+Hxt-A0EYh{=9X~>pVL*yMXcHg#d~aoI)E* z-hp}aDpIpHqRvWk`cSUXQ~gFfeFCub{8{dmr!D9sz4XP=B!H36!Fz&E5A2p!e{BvPFbL z?MGc^Jr>#G-YoaGm%Bi~0|Kild+|+ImOB{o$|_~n+KPs0!G7bay1YY5S%xQikaLvj zQ-o_)c774D{{`*%aH3WJ1dDm*&l@@R2sP%2?)UP0LR`o?1v1!(Xbz#K$iSHdk>xLN z!?0;_h+F4BqbAoyn3@@14+4y-{g&l@eMKOMC;al?_hN+@3}8woggu-UK<)q)-v+=^ z0U%J~sQc2t9tc`Mo~Ujv4yp_0h3Cx`0|VP|dF1%?y=cs*qm|2Z3K&ivJ{*s|?EPV0 zMBz@$ZZw+l%DEv}6uXFnQ`at`dj%Q;r^iLES{z2AweM$q3CyBE_s6w|3(;JW7awqu zufgR4epgkPeEE+!x19gwo*u#o2A1_0=$NV?3^ZwQ#0J>~4K{_4HRzs@JPDsTz+`c# z#N#_~6eC2&>pVYTi7Fk|DrJQKiqFQA%sc-jRw>EW|@s3!?(Ty5XP-TW+IT@`X z0$s3GRhFF+8tgdK5??`&8wc$tTgZg~SNa^U-R}q`dj1iR03gm~=zyURACDz-y+tVJ zbq`1cHKeZVh9gPp^o@?xZ*;UkisXl*#|PZk{So>av=q4+88IXFvztg=E3wwkpmYzu zPYo7Jjw5Ogx(m^ZDx8jowm+cRjw=W}8)A_B(`5cg=zpUKUa^XSiZ5(;$&7vlof&#= zOFcDwhzQ2ON}Vp)C4KVPPzb&MXRMPiHG(a=EcZ_21(~=P6QgS47O=g5$V0T@E+#q`l5M71tbDc5Sqo&=(1g#QTY)1!U<_k z69<3HCjAij@QHN^S@LX4ssyxp?awH^RLDjIt{Pr@2QR!PZx2qXVIxacG>9Qy?7x$k zp{?%JZ--UTkN-9T#y4pD31}#wOgDi}+5vzEmK3F7alHHS-aU~@T*2O+3E(#`$f%|% z0~i<>{6RDdy#nLNfX6-F?aH42{{9x>6oYq55%7dSq`-^6>IE_(3k^<5G+`jkfKONT zNO!`zkfFL_4k?Dh$PR5E63=q+v>M+euZ(0(u#;JYkP4X=rfB$nhf{8~ZAs*Np~zZ0 z%eS1`jav(j^u(_O4BpH-pkoEzJ@or-Rt;d5d{9?&4R#iP04|H3#!S--vlXfW;pZeE z1}FhO5*8q^0I~msJ|g@Tt8N*v@(kkQIlv=C(yOzSmW%cSOw%0Lh&3jkVBr~@#)uq! ze=c;X*}Wp*Y$q5%;2oe!TOi%~ftngQ&WZpxG1O$x&!V3r@fVy^oDIky+05lOA77G*8 zbfb#_Epd-}#knbJR7V5f#m^$2=?e4gw*j0?cVB{`uUTAz(eDpy>cQ zfUq$0#5`eTMEm>uz=;q9X)Yok^YZfY-+k`~p~nu{$#H4{WeFTjEFi&ZEZQ@{cHdS) zq_icpYm&E1uBp}T@>mUgDNUFNjuP|;L*1Q+4+{=x{@O5v8Q1=on)*YH`KW!5WKQaG z;KI`V#O(()o`E5hSnE_!HSMvpQr*eCiSz2=v`jCRz}Xs~xk(!S%x+LV4N6d&?ee>^6+cLwRzq)J`wTx$Jxu}9a*l&J-$tSKq#UqEGhM)XQJ#@?X5HErShoz=C!hk*VP)ubQK zPbh_)djLgWY(4a7rp_#cdaets)@5!MMOX(4_eNkF60#{J5iF zZn;gv;>&NA?8@`C76IU!=XTv7kqGR40(2#mT(`+_g2Hh;TOQ!KrYX9A56%I@z+Eeu zy^pKv8^vc!_F3bbrvwk0z36%0*nGz@PwU@?7uGXd8{qBMo?}AC3NSPVYuqQ;zjsSN zTx}whKEj9yyZ>V)_FgC7{};$L%+-K%0uTvl8p+>jGH(L}BH)>5mVM?euqZ`pVI2qVU_Gtd+0wFdhU0^nK=y`~Kv-v3t7x}9kjen$>RL_Bmc>Oi!tBYVw2AVgA# z{}*8XIf_OFLiqJS4K=vFy?7_nz{mb(~! zeD-vA)4SC?@IO2{X=&5W80$U=AG?O9FnJBr<9J;jhz4~vwRI51YysBG0KgKk zbLcGRx;nZ96;9jBeFbnX#e=W-0PHBTBgTawv6u*_qw)ECA`l)(3c3#<%Rx*UG&oMw zFCDxDen&j<#qAkW9JMR;`pNa>w)zV>#^=4+a%5Sgzq7Y#4#zWsD7XUo-Lq4?Ie0d~ z`)DBM17L$N;YLPBe+`gYm4b9z;^^_S!x&@%)E;lwRk6&59}sABbyfwSnLzbE*(zJa zBFwdS6Dq;MQsI-#>s6SL4g6&wn}LfH&Ibegc5hgz7lEh@kmG*>-CV#IDgPT&)^d+_ zKM@uY@$pg$Cy}Ly!7zbR^b;%!6Z?vP+4s9bSWYAyryVsOgQh#1K}pD$*}Gtr$`&j` z_{)bEAOZ*F0`&mFeS_T)4oLS9`P9kDN%n*zk9kX>HztCAHaJZos2Rd-GI|&~NPILO~|1UJOOLa?96e>{CvSRd-j<5k5YC+uB--ryauoLj`nx*@=m@I>eh$c`Xb7`x~@wDSRT+3mOQC|)EG=s z+lIv}pyJ-VNnRKQvotqgZlaq`kUidPOrlCkuB2aI4KSAGG7kCWCPXGoU<_%(iUig6-B2`MCZwGk^ z5+=FUBj9EN0$Twp5P{9WeSs+}J>=lzxn*fI$u;+6mJK_Bm+K`uj$>*d958uYq3u48|@zfu71%Hat10@=XXB>pfs> z17R5;LJojU5P(x8$z4&WS^r$r>~tcvIp$!WzGYVQ9T``o_cy&s_FB3x8lrxD9r3!m zyG`9zxa{D!U?2F86qx$I^viyK-Ms9D31E5)+%@WHRHOzw!m0)ax}FBV<2c!U7|@|U zMIavK1Od#npRevWJrKQv5Wv1S5*hf>`CtMFDNUVd6SNNJr6z7*njjT|6x`hB`%^%5 zVn8ZFM2B~h!~w8YZ`x|kV)a-x;3xpRvxB}EpwO!NsG(e%`rKV*Z*KJGETx)ePqZr$ z>b>wa7=;AN*n2~)Cy+Ud2o*ehs z=|wjozv%NEW}akAmDDjljU?xWzjv?yJ`{o1a+%jzyVocybl%&78V4gA=*e={K+l~o zh5$mggE;cMyh*@N+Arw>D%%aPc|*DcF))7W*1Ams1{SQsVXmNcb^w$_bP!Uj;1u9U zs6XC3?67}kz|G@F^B?GeDT0__fKzAyB?~uw9`>z6z$27P*&HwGESshaTBR|y9Y<(#%mC7S36$dZKNNif5 z3CrsZfUFpU(R>#+Qg>=TKeFDzS(JhB6&63#uEaE;2SM;nn1`$h0omId9tA&7gc=f| z>MBrOQFWYEmgXc$lchSo0Ef01XtYv=qY{Z}NY~9U%?vmMe?Z01MaTQ0ysgnPq7s^E@<**{6vN2&x2Lz7pvbEVB7pb$dxW=LQb1aVLhVAC*P z(qRJlwH>W43HWmZl@YRu*WXG^w15Ym1r?1}`Z!9C{tKI#27#r4glgajbBJ#D8&)V* zJu031Z}&jpt{4JAd)NNL(cL%I`o&7fK86P=4bhet;xQ-Uy^4!XnuM0x{I(R6*PhyX z^>E(upX~hsLr|ZP=4E3e3NUux#=^rMqm~$ppBVeg8L$TPlS_yEdREg6%0Oz5m7(2d7 zVH3UuISSxZh~-N2?6T*h%@q;6EFa2Y4&f_=_kH*kwe8#kPS$0dM-RHha+i3!!2TwN z33>)KS%B5cf2wwXMxSA@9xxKP(oY zrIAez83FKHQwRiM@HoSuMBqx?w~9zGe=io8iKF5Z67Y~?A}xj}Zpp0*B}}=61M1Pz8WZvA-A*df;nIqV`(iGVWe9{+-PPlX6e|cfawT$W_*w|f zATN!Q6t7slyZt&Ndr@`DJ@rxF4Oh61kz#?}lm;^7w*m=7H5J-76nz4v6T*fFt{WIOkkTg^#OR)$JBA zoHK~)_EIZ77547&FJfHL?0TQ{sp7l?HyJh$KfhjV-R16*T)F(@_z?R zI3GOr(8T3BJEhHqWD@eWVk$s}!C`OnJrDq_8Q1yNX{PU$h>1eL%Is?rR9apCGY0bX zmP|Iw4Sv=E*D4ZMrfB$PWBhO+wNW_8o6@}MA^|n`qe#{QNtpEsAk8# z^3NCM7-c6-tjx6x?iYRGwR+s^Rbf~ab1<%Z$5V$dyCTXNSZUD;23SR=Zyg%;LMR8l zjTn*bKtUq_9$cTA{*$};`1q!WYZGAMr@Xu4eVaMb0ljcBbo}@+o%b9&A?ziu zgg35qT`7?^`5s}A%}l;OC-P8Hj&FCrYILB_aJsSb=wTg;D}=^$@l|Jq1)hk@$0KEL z)lUb{pFDX!Ax3TG&^?>$zP42pQA{R}yHO>*HMU@S;9%}rU_<*#xI{n%q(;9;bjTit z!B~S91Lyxe*uaSW3M7s;vTi|EUE$sn_S&}EqT0(InEu!1o8WWqg{J7IJ%A#Y0#&Vb zdpd&VHK5H)rBYv7z7`E$Tap6K0TigHhQx5(aD=7$3vAK9wX6pRT%^+dje8P|^hIsS zVwl-k?HW5F-mS;yojWL*A^o!bUB~dr6L%J>xZ<>2I%eiF=hnkkSMMS)9dP(HkV)=U zyRjRltP2Qn6hdJ#N$d;&LQ&~l40y{10}caE7Ce>~Eji!gT&ij$Ox+aZ0M|o^@O9=k zls|8M6*LPXpkS{Lg8*UbvQq{kq)sE0Hi$9rEHvt6O8Ri=-8xdLOZ7#HSd)md|qQjKSOjOE4J71TJcpB+uyrl|dZqD@;}defqs zso^V)SZr{%3t){NhGHW~+^yN+6nJXgD-#}Qn;IV}?}k55N8T~t!>zv$JO_YQIS`)k zJFsN3va%21LU{~<26U`7gs@QFo}^|l?TpRMTfC}I0Kf#N5tajPs_SK6^N*SgfsnF( zVM=ydc#XQ=n8}6d2baRmbx2Ddx1hLGw!e5{SzO4lOSPs=?2(!XXcq5YSHL#5B}uX* z>6K3nxl2_`xMQ75;AxRO1-a-U3+1$Ez`nLogEZhIprXcRX8Dk7!-m6VEq2w-k)XJ! z0L$;lf(z5QF4DWy3aGDZFu6evJxNT=Wit`~7TTl}JVoTsVI3;AtBoJ>Ceie_WtDVg z{_du8E5L=u0suC$=(wDoSSuaj8J3ra4=D9 zs@OEjaYrI?Mvfuq_C%pkdpMX^#Qx-uy-U2KaGUzn+941UoLvgwBVd2D1G9%*D)gX5 ze&B7lY!(2X4O9<*`QSN#>S})Hr=gzdgN$^Lo>)`bAwrk+_e?E|>be zu==X;?A593vVs8*4_OTBi8F{i?|xaTh|r?OiD75FM((k_nFO05jb@EF_H|e5^WVmu zf_NV}poJe?SetNf*dqSt%=Q2d0uMo|aZT;n^VH$3d=K;sO{f%u&vXm`qS9ZXJrYFbXK; z9`Zz4OCzVHd^DufTwwLuofFcA8H-)6 z#8eEq$}%)&AiM4Hk9K5bfh{ROrQ&*@&!(z&2zM<(|# z3vt~RKvmiQSixxSSvMp)H_KvNjb=>~5MS|-~I_IH(@ywQ#^S6RY$8>*x)%4vS z_(Zr>-6L3th8Z8a+;kH?_OQNeV3{p4BotuMFGT-|FXqcF%Fq-ZbJXO&VEJcCRBd?nrwH{hv~C0T+;6*}vMXvt_y zpX~~)%KW}jxzcd&hm6OZF(&lKZ&EdTqC5`A*>$y`-oUV5_^iNJT-K#KDnybS=n=m|>!HeHh~sBx~S71X2`>t)Ijg_f56zpeegbZP5R z@s48FsJ$87%3OCDNB-FS(>jP-PPmrDa#c%Uzuk9 zWHXZXfTdGS@M>wdG@ogDRk0>*kPI3D_xN4aRo7wV6u z0Nv31e>Qt#aq)9QjKtA`QrdZ&3@Uv{swv^~>>5qfOz7K#aNT=-99c(W^$zQf$)Ep< z7dH(VKFhAi-P9~I2sJ4~GbtxsQUaFKxBT)nkAFkCCg5HRucw!N%1jzx(u+7EzH}!Z zV^^&uP+_xn=W%fwJ^xW=68F8$)RqyouN0KBXzY?7tE{Nb$-clJi)yqIMRDJM-w@=6 zV*Tj4B^TQKbQxu4W>!?h(`}N|bN2rGtl1kl+?dRFch#b73H`&dEk7-HChS9_I1a)G zasKz)ws!Yj9SQ6e5tOjAg0g_}Bb0t*XJ_Z+n^RJO@y~B6HP+YT?8i88@-rMYKY#wT zIgDOquvm6w=fY#FtWL5mCeeS~gMKE<6cEHrOBvH`hBw#WSedZXH`_ay_Q?(E%({9N z`(-yx*SZRf@YCOR;~VN(?b;;zbCpF0?ZBCa0VRw4v^K+?iM2kSBNLLOcGdvhHD!w6 za6pk-YbEkVoF9Mb92)(f=avi~SakR-37;kUf4{nQ*qn0i7Yp}bn~abb7#o_Mesjtx F?0>iMUBUnW literal 21545 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 Rp_}MOTI#xL#i~{z{{^P-o(}*3 From 45fe9a81b2af77ba9c531719180b1def83206033 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 15 Nov 2023 16:09:18 +0100 Subject: [PATCH 111/207] MINE THE NITRA FOR AMMO --- changelog | 10 +++++++- .../com/hbm/crafting/ConsumableRecipes.java | 1 + .../java/com/hbm/crafting/MineralRecipes.java | 2 ++ .../java/com/hbm/crafting/WeaponRecipes.java | 14 +++++++++++ .../java/com/hbm/handler/WeaponAbility.java | 23 +----------------- .../com/hbm/inventory/OreDictManager.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 6 +++++ src/main/resources/assets/hbm/lang/de_DE.lang | 2 ++ src/main/resources/assets/hbm/lang/en_US.lang | 2 ++ .../assets/hbm/textures/gui/gui_inserter.png | Bin 2245 -> 0 bytes .../assets/hbm/textures/gui/gui_turbofan.png | Bin 2642 -> 0 bytes .../hbm/textures/gui/machine/gui_pattern.png | Bin 3347 -> 0 bytes .../assets/hbm/textures/items/nitra.png | Bin 0 -> 206 bytes .../assets/hbm/textures/items/nitra_small.png | Bin 0 -> 155 bytes .../assets/hbm/textures/items/pattern.png | Bin 179 -> 0 bytes .../hbm/textures/items/pattern_drawn.png | Bin 208 -> 0 bytes 16 files changed, 38 insertions(+), 24 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/gui/gui_inserter.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/gui_turbofan.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_pattern.png create mode 100644 src/main/resources/assets/hbm/textures/items/nitra.png create mode 100644 src/main/resources/assets/hbm/textures/items/nitra_small.png delete mode 100644 src/main/resources/assets/hbm/textures/items/pattern.png delete mode 100644 src/main/resources/assets/hbm/textures/items/pattern_drawn.png diff --git a/changelog b/changelog index e03539fb7..ec78b2193 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,14 @@ +## Added +* Nitra + * Dropped by the painsaw ability when killing a mob + * Can be used to quickly craft standard ammo types in the 2x2 crafting grid + * Can also refill empty syringes, making stimpaks + ## Changed * Light oil and cracked light oil can now be refomred into large quantities of aromatic hydrocarbons a well as some reformate gas +* The painsaw ability no longer drops ammo and syringes, instead it drops nitra ## Fixed * Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer -* Fixed custom machine NEI slots going out of bounds after the third slot \ No newline at end of file +* Fixed custom machine NEI slots going out of bounds after the third slot +* Fixed bismuth billets not being oredicted, making BFB PWR rods uncraftable \ No newline at end of file diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index 971b29fa1..57c95d9b7 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -105,6 +105,7 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_awesome, 1), new Object[] { "SNS", "PCP", "SNS", 'C', ModItems.syringe_empty, 'S', S.dust(), 'P', PU239.nugget(), 'N', PU238.nugget() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_empty, 6), new Object[] { "P", "C", "B", 'B', Blocks.iron_bars, 'C', ModItems.rod_empty, 'P', IRON.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_stimpak, 1), new Object[] { " N ", "NSN", " N ", 'N', Items.nether_wart, 'S', ModItems.syringe_metal_empty }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.syringe_metal_stimpak, 1), new Object[] { ModItems.nitra_small, ModItems.nitra_small, ModItems.nitra_small, ModItems.syringe_metal_empty }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_medx, 1), new Object[] { " N ", "NSN", " N ", 'N', Items.quartz, 'S', ModItems.syringe_metal_empty }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_psycho, 1), new Object[] { " N ", "NSN", " N ", 'N', Items.glowstone_dust, 'S', ModItems.syringe_metal_empty }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_nuka, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', Items.leather }); diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index 45e58b454..49b00e0d4 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -418,6 +418,8 @@ public class MineralRecipes { GameRegistry.addRecipe(new ItemStack(ModItems.ingot_mercury, 8), new Object[] { "#", '#', ModItems.bottle_mercury }); GameRegistry.addRecipe(new ItemStack(ModItems.egg_balefire, 1), new Object[] { "###", "###", "###", '#', ModItems.egg_balefire_shard }); GameRegistry.addRecipe(new ItemStack(ModItems.egg_balefire_shard, 9), new Object[] { "#", '#', ModItems.egg_balefire }); + GameRegistry.addRecipe(new ItemStack(ModItems.nitra, 1), new Object[] { "##", "##", '#', ModItems.nitra_small }); + GameRegistry.addRecipe(new ItemStack(ModItems.nitra_small, 9), new Object[] { "#", '#', ModItems.nitra }); add1To9Pair(ModItems.powder_paleogenite, ModItems.powder_paleogenite_tiny); add1To9Pair(ModItems.ingot_osmiridium, ModItems.nugget_osmiridium); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 003f4c7e3..60c6823c0 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -166,6 +166,20 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 0), new Object[] { " T ", "TST", " T ", 'T', W.ingot(), 'S', BIGMT.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 1), new Object[] { " T ", "TST", " T ", 'T', FERRO.ingot(), 'S', BIGMT.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 2), new Object[] { " T ", "TST", " T ", 'T', RUBBER.ingot(), 'S', ANY_PLASTIC.ingot() }); + + //TODO: somehow add more variance, 4 gauge is still missing + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_22lr, 16), new Object[] { ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_9mm, 16), new Object[] { ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_5mm, 16), new Object[] { ModItems.nitra_small, ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_357, 16, Ammo357Magnum.LEAD.ordinal()), new Object[] { ModItems.nitra, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_44, 16), new Object[] { ModItems.nitra, ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_45, 16), new Object[] { ModItems.nitra, ModItems.nitra_small, ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_50ae, 16), new Object[] { ModItems.nitra, ModItems.nitra }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_556, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_20gauge, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra_small, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_12gauge, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_762, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra, ModItems.nitra_small }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_50bmg, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra, ModItems.nitra }); //Ammo assemblies CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() }); diff --git a/src/main/java/com/hbm/handler/WeaponAbility.java b/src/main/java/com/hbm/handler/WeaponAbility.java index 919b149a2..11e2621b3 100644 --- a/src/main/java/com/hbm/handler/WeaponAbility.java +++ b/src/main/java/com/hbm/handler/WeaponAbility.java @@ -2,14 +2,12 @@ package com.hbm.handler; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.BobbleType; -import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.items.tool.IItemAbility; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; import com.hbm.util.ContaminationUtil; -import com.hbm.util.WeightedRandomObject; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -36,7 +34,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; -import net.minecraft.util.WeightedRandom; import net.minecraft.world.World; public abstract class WeaponAbility { @@ -208,28 +205,10 @@ public abstract class WeaponAbility { if(living.getHealth() <= 0.0F) { - WeightedRandomObject[] ammo = new WeightedRandomObject[] { - new WeightedRandomObject(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.SHRAPNEL), 5), - new WeightedRandomObject(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.FLECHETTE), 5), - new WeightedRandomObject(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SLUG), 5), - new WeightedRandomObject(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_556.stackFromEnum(Ammo556mm.STOCK), 10), - new WeightedRandomObject(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE), 10), - new WeightedRandomObject(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.STOCK), 3), - new WeightedRandomObject(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.STOCK), 3), - new WeightedRandomObject(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.STOCK), 1), - new WeightedRandomObject(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.GLARE), 1), - new WeightedRandomObject(new ItemStack(ModItems.syringe_metal_stimpak), 20), - }; - int count = Math.min((int)Math.ceil(living.getMaxHealth() / divider), 250); //safeguard to prevent funnies from bosses with obscene health for(int i = 0; i < count; i++) { - - living.entityDropItem(((WeightedRandomObject)WeightedRandom.getRandomItem(living.getRNG(), ammo)).asStack(), 1); + living.entityDropItem(new ItemStack(ModItems.nitra_small), 1); world.spawnEntityInWorld(new EntityXPOrb(world, living.posX, living.posY, living.posZ, 1)); } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 4ac445aa0..f195610ed 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -356,7 +356,7 @@ public class OreDictManager { TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy) .block(block_tcalloy); CDALLOY .ingot(ingot_cdalloy) .block(block_cdalloy); PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead, ore_meteor_lead); - BI .nugget(nugget_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth); + BI .nugget(nugget_bismuth) .billet(billet_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth); AS .nugget(nugget_arsenic) .ingot(ingot_arsenic); CA .ingot(ingot_calcium) .dust(powder_calcium); CD .ingot(ingot_cadmium) .dust(powder_cadmium) .block(block_cadmium); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 4609fed6d..21b01c816 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -103,6 +103,8 @@ public class ModItems { public static Item ingot_titanium; public static Item ingot_cobalt; public static Item sulfur; + public static Item nitra; + public static Item nitra_small; public static Item coke; public static Item lignite; @@ -2524,6 +2526,8 @@ public class ModItems { ingot_firebrick = new Item().setUnlocalizedName("ingot_firebrick").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_firebrick"); ingot_smore = new ItemFood(10, 20F, false).setUnlocalizedName("ingot_smore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_smore"); sulfur = new Item().setUnlocalizedName("sulfur").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sulfur"); + nitra = new Item().setUnlocalizedName("nitra").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nitra"); + nitra_small = new Item().setUnlocalizedName("nitra_small").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nitra_small"); ingot_uranium_fuel = new Item().setUnlocalizedName("ingot_uranium_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_uranium_fuel"); ingot_plutonium_fuel = new Item().setUnlocalizedName("ingot_plutonium_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_plutonium_fuel"); @@ -5721,6 +5725,8 @@ public class ModItems { GameRegistry.registerItem(briquette, briquette.getUnlocalizedName()); GameRegistry.registerItem(sulfur, sulfur.getUnlocalizedName()); GameRegistry.registerItem(niter, niter.getUnlocalizedName()); + GameRegistry.registerItem(nitra, nitra.getUnlocalizedName()); + GameRegistry.registerItem(nitra_small, nitra_small.getUnlocalizedName()); GameRegistry.registerItem(fluorite, fluorite.getUnlocalizedName()); GameRegistry.registerItem(powder_coal, powder_coal.getUnlocalizedName()); GameRegistry.registerItem(powder_coal_tiny, powder_coal_tiny.getUnlocalizedName()); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 770d3d540..56baffc69 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2464,6 +2464,8 @@ item.n2_charge.name=Große Sprengladung item.neutrino_lens.name=Neutrinolinse item.neutron_reflector.name=Neutronenreflektor item.niter.name=Salpeter +item.nitra.name=Nitra +item.nitra_small.name=Kleines Stück Nitra item.no9.name=Bergbauhelm item.nossy_hat.name=Fabulöser Hut item.nothing.name=Leer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 19cb1bd86..deb978aef 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3214,6 +3214,8 @@ item.night_vision.name=Night Vision Goggles item.night_vision.description.item=Grants you night vision (requires full electric set) item.night_vision.description.in_armor=%s (grants night vision) item.niter.name=Niter +item.nitra.name=Nitra +item.nitra_small.name=Small Pile of Nitra item.no9.name=Mining Helmet item.nossy_hat.name=Fabulous Hat item.nothing.name=Nothing diff --git a/src/main/resources/assets/hbm/textures/gui/gui_inserter.png b/src/main/resources/assets/hbm/textures/gui/gui_inserter.png deleted file mode 100644 index a38ebf127ee093cd1741e9d8a9b936eae297ec68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2245 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 A&;S4c literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pattern.png b/src/main/resources/assets/hbm/textures/items/pattern.png deleted file mode 100644 index 9a263db7ba70834dcabdf1aad2651493a0f05b1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfYT%Pc~mg^g@2i=Vf0#T@;iU z86MSWEZuS5r6ub1jmH-ktXj^H7T08Ee(56r52l2djDn3b^BLWy27Be^%}_Vy-uIgG Z?W7o~2i;bC{s3)d@O1TaS?83{1OVR+Jb(ZI diff --git a/src/main/resources/assets/hbm/textures/items/pattern_drawn.png b/src/main/resources/assets/hbm/textures/items/pattern_drawn.png deleted file mode 100644 index ca8a8505a5f013dd950fa67eb5daf7ddb0bc11e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4cQK=PU2A8&2gae?JbpTDECxlqH*SEiy0Yxx=1x`;lQ_2U)St>8O# z4>gx?W!T1uI=IY`eLZLQCynUrV9P|?Rso;=ueoz`gB4>=1$Q3@I*Gy4)z4*}Q$iB} D=F3T3 From 1bc94c989bcf379e1f4e0797ce66999db018b555 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 16 Nov 2023 15:01:56 +0100 Subject: [PATCH 112/207] finally checking this off my bucket list --- changelog | 5 ++ .../java/com/hbm/crafting/ArmorRecipes.java | 22 ++++---- .../com/hbm/crafting/ConsumableRecipes.java | 24 ++++----- .../com/hbm/crafting/SmeltingRecipes.java | 1 + .../java/com/hbm/crafting/ToolRecipes.java | 4 +- .../java/com/hbm/crafting/WeaponRecipes.java | 48 +++++++++--------- .../com/hbm/inventory/OreDictManager.java | 5 ++ .../inventory/recipes/AssemblerRecipes.java | 30 +++++------ .../hbm/inventory/recipes/MagicRecipes.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 8 ++- .../java/com/hbm/main/CraftingManager.java | 21 ++++---- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../assets/hbm/textures/items/ball_resin.png | Bin 0 -> 255 bytes .../hbm/textures/items/ingot_biorubber.png | Bin 0 -> 259 bytes 15 files changed, 99 insertions(+), 75 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/ball_resin.png create mode 100644 src/main/resources/assets/hbm/textures/items/ingot_biorubber.png diff --git a/changelog b/changelog index ec78b2193..9bbc6c83e 100644 --- a/changelog +++ b/changelog @@ -3,6 +3,11 @@ * Dropped by the painsaw ability when killing a mob * Can be used to quickly craft standard ammo types in the 2x2 crafting grid * Can also refill empty syringes, making stimpaks +* Latex + * Made from crafting dandelions into dandelion milk, then smelting it + * Replaces insulator in many recipes where electrical insulation that is potentially made from brick doesn't make sense, like rubber gas masks, jackets, tools and so on + * Latex is interchangable with rubber in all recipes where it's used, but not the other way round + * The old insulator is now mainly used for electrical and heat insulation as well as PWR rods ## Changed * Light oil and cracked light oil can now be refomred into large quantities of aromatic hydrocarbons a well as some reformate gas diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index c4ff68c93..33d455ca6 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -47,15 +47,15 @@ public class ArmorRecipes { addHelmet( ModItems.rag, ModItems.robes_helmet); addChest( ModItems.rag, ModItems.robes_plate); addLegs( ModItems.rag, ModItems.robes_legs); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.robes_boots, 1), new Object[] { "R R", "P P", 'R', ModItems.rag, 'P', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.robes_boots, 1), new Object[] { "R R", "P P", 'R', ModItems.rag, 'P', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_helmet, 1), new Object[] {"ECE", 'E', CO.billet(), 'C', ModItems.steel_helmet }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_plate, 1), new Object[] { " E ", "ECE"," E ", 'E', CO.billet(), 'C', ModItems.steel_plate }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_legs, 1), new Object[] { "ECE", "E E", 'E', CO.billet(), 'C', ModItems.steel_legs }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_boots, 1), new Object[] {"ECE", 'E', CO.billet(), 'C', ModItems.steel_boots }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_helmet, 1), new Object[] { "SSS", "IGI", 'S', STEEL.plate(), 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_helmet, 1), new Object[] { "SSS", "IGI", 'S', STEEL.plate(), 'I', ANY_RUBBER.ingot(), 'G', KEY_ANYPANE }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_plate, 1), new Object[] { "KWK", "IKI", "WKW", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_legs, 1), new Object[] { "IWI", "K K", "W W", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_boots, 1), new Object[] { "P P", "I I", 'P', STEEL.plate(), 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_boots, 1), new Object[] { "P P", "I I", 'P', STEEL.plate(), 'I', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_helmet, 1), new Object[] { "EEE", "EE ", 'E', DNT.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_plate, 1), new Object[] { "EE ", "EEE", "EEE", 'E', DNT.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_legs, 1), new Object[] { "EE ", "EEE", "E E", 'E', DNT.ingot() }); @@ -63,7 +63,7 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.zirconium_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ZR.ingot() }); //Power armor - CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_titanium, 'C', ModItems.circuit_targeting_tier3, 'I', ModItems.plate_polymer, 'X', ModItems.gas_mask_m65, 'B', ModItems.titanium_helmet }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_titanium, 'C', ModItems.circuit_targeting_tier3, 'I', ANY_RUBBER.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.titanium_helmet }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'T', ModItems.gas_empty, 'B', ModItems.titanium_plate }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_legs }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_boots }); @@ -153,19 +153,19 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.paa_boots, 1), new Object[] { "E E", "N N", 'E', ModItems.plate_paa, 'N', OreDictManager.getReflector() }); //Liquidator Suit - CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_helmet, 1), new Object[] { "III", "CBC", "III", 'I', ModItems.plate_polymer, 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_helmet_grey }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_plate, 1), new Object[] { "ICI", "TBT", "ICI", 'I', ModItems.plate_polymer, 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_plate_grey, 'T', ModItems.gas_empty }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_legs, 1), new Object[] { "III", "CBC", "I I", 'I', ModItems.plate_polymer, 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_legs_grey }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_boots, 1), new Object[] { "ICI", "IBI", 'I', ModItems.plate_polymer, 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_boots_grey }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_helmet, 1), new Object[] { "III", "CBC", "III", 'I', ANY_RUBBER.ingot(), 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_helmet_grey }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_plate, 1), new Object[] { "ICI", "TBT", "ICI", 'I', ANY_RUBBER.ingot(), 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_plate_grey, 'T', ModItems.gas_empty }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_legs, 1), new Object[] { "III", "CBC", "I I", 'I', ANY_RUBBER.ingot(), 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_legs_grey }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.liquidator_boots, 1), new Object[] { "ICI", "IBI", 'I', ANY_RUBBER.ingot(), 'C', ModItems.cladding_lead, 'B', ModItems.hazmat_boots_grey }); //Masks CraftingManager.addRecipeAuto(new ItemStack(ModItems.goggles, 1), new Object[] { "P P", "GPG", 'G', KEY_ANYPANE, 'P', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', STEEL.plate(), 'F', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_m65, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', ModItems.plate_polymer, 'F', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_m65, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', ANY_RUBBER.ingot(), 'F', IRON.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_olde, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', Items.leather, 'F', IRON.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_mono, 1), new Object[] { " P ", "PPP", " F ", 'P', ModItems.plate_polymer, 'F', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_mono, 1), new Object[] { " P ", "PPP", " F ", 'P', ANY_RUBBER.ingot(), 'F', IRON.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_of_infamy, 1), new Object[] { "III", "III", " I ", 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ashglasses, 1), new Object[] { "I I", "GPG", 'I', ModItems.plate_polymer, 'G', ModBlocks.glass_ash, 'P', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ashglasses, 1), new Object[] { "I I", "GPG", 'I', ANY_RUBBER.ingot(), 'G', ModBlocks.glass_ash, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_rag, 1), new Object[] { "RRR", 'R', ModItems.rag_damp }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_piss, 1), new Object[] { "RRR", 'R', ModItems.rag_piss }); diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index 57c95d9b7..a7a2b6e3f 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -109,9 +109,9 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_medx, 1), new Object[] { " N ", "NSN", " N ", 'N', Items.quartz, 'S', ModItems.syringe_metal_empty }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_psycho, 1), new Object[] { " N ", "NSN", " N ", 'N', Items.glowstone_dust, 'S', ModItems.syringe_metal_empty }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_nuka, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', Items.leather }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_nuka, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_nuka, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_cherry, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', Items.leather }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_cherry, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_metal_super, 1), new Object[] { " N ", "PSP", "L L", 'N', ModItems.bottle_cherry, 'P', STEEL.plate(), 'S', ModItems.syringe_metal_stimpak, 'L', ANY_RUBBER.ingot() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.syringe_taint), new Object[] { ModItems.bottle2_empty, ModItems.syringe_metal_empty, ModItems.ducttape, ModItems.powder_magic, SA326.nugget(), Items.potionitem }); //Medicine @@ -135,12 +135,12 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', Items.leather, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.syringe_antidote }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', Items.leather, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.pill_iodine }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LL", "SI", "LL", 'L', Items.leather, 'S', ModItems.syringe_metal_super, 'I', ModItems.radaway }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', ModItems.plate_polymer, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.syringe_antidote }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', ModItems.plate_polymer, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.pill_iodine }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LL", "SI", "LL", 'L', ModItems.plate_polymer, 'S', ModItems.syringe_metal_super, 'I', ModItems.radaway }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', ANY_RUBBER.ingot(), 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.syringe_antidote }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', ANY_RUBBER.ingot(), 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.pill_iodine }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LL", "SI", "LL", 'L', ANY_RUBBER.ingot(), 'S', ModItems.syringe_metal_super, 'I', ModItems.radaway }); //IV Bags - CraftingManager.addRecipeAuto(new ItemStack(ModItems.iv_empty, 4), new Object[] { "S", "I", "S", 'S', ModItems.plate_polymer, 'I', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.iv_empty, 4), new Object[] { "S", "I", "S", 'S', ANY_RUBBER.ingot(), 'I', IRON.plate() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.iv_xp_empty, 1), new Object[] { ModItems.iv_empty, ModItems.powder_magic }); //Radaway @@ -150,7 +150,7 @@ public class ConsumableRecipes { //Cladding CraftingManager.addShapelessAuto(new ItemStack(ModItems.cladding_paint, 1), new Object[] { PB.nugget(), PB.nugget(), PB.nugget(), PB.nugget(), Items.clay_ball, Items.glass_bottle }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_rubber, 1), new Object[] { "RCR", "CDC", "RCR", 'R', ModItems.plate_polymer, 'C', COAL.dust(), 'D', ModItems.ducttape }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_rubber, 1), new Object[] { "RCR", "CDC", "RCR", 'R', ANY_RUBBER.ingot(), 'C', COAL.dust(), 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_lead, 1), new Object[] { "DPD", "PRP", "DPD", 'R', ModItems.cladding_rubber, 'P', PB.plate(), 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_desh, 1), new Object[] { "DPD", "PRP", "DPD", 'R', ModItems.cladding_lead, 'P', ModItems.plate_desh, 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.cladding_ghiorsium, 1), new Object[] { "DPD", "PRP", "DPD", 'R', ModItems.cladding_desh, 'P', ModItems.ingot_gh336, 'D', ModItems.ducttape }); @@ -163,7 +163,7 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_ghiorsium, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', GH336.ingot(), 'S', U238.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_polonium, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', IRON.plate(), 'S', PO210.block() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_era, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', IRON.plate(), 'S', ModItems.ingot_semtex }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_kevlar, 1), new Object[] { "KIK", "IDI", "KIK", 'K', ModItems.plate_kevlar, 'I', ModItems.plate_polymer, 'D', ModItems.ducttape }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_kevlar, 1), new Object[] { "KIK", "IDI", "KIK", 'K', ModItems.plate_kevlar, 'I', ANY_RUBBER.ingot(), 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_sapi, 1), new Object[] { "PKP", "DPD", "PKP", 'P', POLYMER.ingot(), 'K', ModItems.insert_kevlar, 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_esapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', POLYMER.ingot(), 'K', ModItems.insert_sapi, 'D', ModItems.ducttape, 'S', BIGMT.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_xsapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ASBESTOS.ingot(), 'K', ModItems.insert_esapi, 'D', ModItems.ducttape, 'S', ModItems.ingot_meteorite_forged }); @@ -174,13 +174,13 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.servo_set_desh, 1), new Object[] { "MBM", "PSP", "MBM", 'M', ModItems.motor_desh, 'B', ModItems.bolt_dura_steel, 'P', ALLOY.plate(), 'S', ModItems.servo_set }); //Helmet Mods - CraftingManager.addRecipeAuto(new ItemStack(ModItems.attachment_mask, 1), new Object[] { "DID", "IGI", " F ", 'D', ModItems.ducttape, 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE, 'F', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.attachment_mask_mono, 1), new Object[] { " D ", "DID", " F ", 'D', ModItems.ducttape, 'I', ModItems.plate_polymer, 'F', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.attachment_mask, 1), new Object[] { "DID", "IGI", " F ", 'D', ModItems.ducttape, 'I', ANY_RUBBER.ingot(), 'G', KEY_ANYPANE, 'F', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.attachment_mask_mono, 1), new Object[] { " D ", "DID", " F ", 'D', ModItems.ducttape, 'I', ANY_RUBBER.ingot(), 'F', IRON.plate() }); //Boot Mods - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_rubber, 1), new Object[] { "P P", "IDI", "P P", 'P', ModItems.plate_polymer, 'I', IRON.plate(), 'D', ModItems.ducttape }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_rubber, 1), new Object[] { "P P", "IDI", "P P", 'P', ANY_RUBBER.ingot(), 'I', IRON.plate(), 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_slime, 1), new Object[] { "SPS", "DSD", "SPS", 'S', KEY_SLIME, 'P', ModItems.pads_rubber, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_static, 1), new Object[] { "CDC", "ISI", "CDC", 'C', CU.ingot(), 'D', ModItems.ducttape, 'I', ModItems.plate_polymer, 'S', ModItems.pads_slime }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_static, 1), new Object[] { "CDC", "ISI", "CDC", 'C', CU.ingot(), 'D', ModItems.ducttape, 'I', ANY_RUBBER.ingot(), 'S', ModItems.pads_slime }); //Special Mods CraftingManager.addRecipeAuto(new ItemStack(ModItems.horseshoe_magnet, 1), new Object[] { "L L", "I I", "ILI", 'L', ModItems.lodestone, 'I', IRON.ingot() }); diff --git a/src/main/java/com/hbm/crafting/SmeltingRecipes.java b/src/main/java/com/hbm/crafting/SmeltingRecipes.java index 60a709ce0..e3da94819 100644 --- a/src/main/java/com/hbm/crafting/SmeltingRecipes.java +++ b/src/main/java/com/hbm/crafting/SmeltingRecipes.java @@ -108,6 +108,7 @@ public class SmeltingRecipes { GameRegistry.addSmelting(ModItems.powder_bismuth, new ItemStack(ModItems.ingot_bismuth), 1.0F); GameRegistry.addSmelting(ModItems.powder_calcium, new ItemStack(ModItems.ingot_calcium), 1.0F); GameRegistry.addSmelting(ModItems.powder_cadmium, new ItemStack(ModItems.ingot_cadmium), 1.0F); + GameRegistry.addSmelting(ModItems.ball_resin, new ItemStack(ModItems.ingot_biorubber), 0.1F); GameRegistry.addSmelting(ModItems.combine_scrap, new ItemStack(ModItems.ingot_combine_steel), 1.0F); GameRegistry.addSmelting(ModItems.rag_damp, new ItemStack(ModItems.rag), 0.1F); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 873b5605d..4af76365c 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -115,14 +115,14 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.oil_detector, 1), new Object[] { "W I", "WCI", "PPP", 'W', ModItems.wire_gold, 'I', CU.ingot(), 'C', ModItems.circuit_red_copper, 'P', STEEL.plate528() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.turret_chip, 1), new Object[] { "WWW", "CPC", "WWW", 'W', ModItems.wire_gold, 'P', ANY_PLASTIC.ingot(), 'C', ModItems.circuit_gold, }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.survey_scanner, 1), new Object[] { "SWS", " G ", "PCP", 'W', ModItems.wire_gold, 'P', ANY_PLASTIC.ingot(), 'C', ModItems.circuit_gold, 'S', STEEL.plate528(), 'G', GOLD.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.geiger_counter, 1), new Object[] { "GPP", "WCS", "WBB", 'W', ModItems.wire_gold, 'P', ModItems.plate_polymer, 'C', ModItems.circuit_red_copper, 'G', GOLD.ingot(), 'S', STEEL.plate528(), 'B', ModItems.ingot_beryllium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.geiger_counter, 1), new Object[] { "GPP", "WCS", "WBB", 'W', ModItems.wire_gold, 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_red_copper, 'G', GOLD.ingot(), 'S', STEEL.plate528(), 'B', ModItems.ingot_beryllium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dosimeter, 1), new Object[] { "WGW", "WCW", "WBW", 'W', KEY_PLANKS, 'G', KEY_ANYPANE, 'C', ModItems.circuit_aluminium, 'B', BE.ingot() }); CraftingManager.addShapelessAuto(new ItemStack(ModBlocks.geiger), new Object[] { ModItems.geiger_counter }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.digamma_diagnostic), new Object[] { ModItems.geiger_counter, PO210.billet(), ASBESTOS.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pollution_detector, 1), new Object[] { "SFS", "SCS", " S ", 'S', STEEL.plate(), 'F', ModItems.filter_coal, 'C', ModItems.circuit_copper }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', ModItems.bolt_tungsten, 'I', W.ingot(), 'P', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', ModItems.bolt_tungsten, 'I', W.ingot(), 'P', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', ANY_RESISTANTALLOY.ingot(), 'R', ModItems.reacher, 'C', ModItems.circuit_aluminium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.sat_designator, 1), new Object[] { "RRD", "PIC", " P", 'P', GOLD.plate(), 'R', Items.redstone, 'C', ModItems.circuit_gold, 'D', ModItems.sat_chip, 'I', GOLD.ingot() }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 60c6823c0..aa58d5393 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -46,12 +46,12 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_thruster_15_balefire_large_rad, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.board_copper, 'T', ModItems.mp_thruster_15_balefire_large }); //Missile fuselages - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_10_kerosene }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_10_long_kerosene }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_15_kerosene }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_10_solid }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_10_long_solid }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ModItems.plate_polymer, 'T', ModItems.mp_fuselage_15_solid }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_10_kerosene }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_10_long_kerosene }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_kerosene_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_15_kerosene }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_10_solid }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_10_long_solid }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_solid_insulation, 1), new Object[] { "CCC", "CTC", "CCC", 'C', ANY_RUBBER.ingot(), 'T', ModItems.mp_fuselage_15_solid }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_15_solid_desh, 1), new Object[] { "CCC", "CTC", "CCC", 'C', DESH.ingot(), 'T', ModItems.mp_fuselage_15_solid }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_kerosene_metal, 1), new Object[] { "ICI", "CTC", "ICI", 'C', STEEL.plate(), 'I', IRON.plate(), 'T', ModItems.mp_fuselage_10_kerosene }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_fuselage_10_long_kerosene_metal, 1), new Object[] { "ICI", "CTC", "ICI", 'C', STEEL.plate(), 'I', IRON.plate(), 'T', ModItems.mp_fuselage_10_long_kerosene }); @@ -61,11 +61,11 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_warhead_15_boxcar, 1), new Object[] { "SNS", "CBC", "SFS", 'S', STAR.ingot(), 'N', ModBlocks.det_nuke, 'C', ModItems.circuit_targeting_tier4, 'B', ModBlocks.boxcar, 'F', ModItems.tritium_deuterium_cake }); //Missile chips - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_1, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier1, 'S', ModBlocks.steel_scaffold }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_2, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier2, 'S', ModBlocks.steel_scaffold }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_3, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier3, 'S', ModBlocks.steel_scaffold }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_4, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier4, 'S', ModBlocks.steel_scaffold }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_5, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier5, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_1, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier1, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_2, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier2, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_3, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier3, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_4, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier4, 'S', ModBlocks.steel_scaffold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_5, 1), new Object[] { "P", "C", "S", 'P', ANY_RUBBER.ingot(), 'C', ModItems.circuit_targeting_tier5, 'S', ModBlocks.steel_scaffold }); //Turrets CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.turret_sentry, 1), new Object[] { "PPL", " MD", " SC", 'P', STEEL.plate(), 'M', ModItems.motor, 'L', ModItems.mechanism_rifle_1, 'S', ModBlocks.steel_scaffold, 'C', ModItems.circuit_red_copper, 'D', ModItems.crt_display }); @@ -97,7 +97,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "RWC", "HHT", "RLC", 'R', RUBBER.ingot(), 'W', ModItems.wrench, 'C', CU.plate(), 'H', ModItems.hull_small_steel, 'T', ModItems.tank_steel, 'L', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "SSI", "IIM", "WPH", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', ModItems.wire_aluminium, 'H', ModItems.hull_small_steel, 'P', Item.getItemFromBlock(Blocks.piston), 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', ModItems.wire_gold, 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ModItems.plate_polymer, 'L', ModItems.plate_desh, 'W', ModItems.wire_tungsten, 'F', ModItems.gun_fatman }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ANY_RUBBER.ingot(), 'L', ModItems.plate_desh, 'W', ModItems.wire_tungsten, 'F', ModItems.gun_fatman }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1, AmmoFatman.BALEFIRE.ordinal()), new Object[] { " S ", "EBE", " S ", 'S', ModItems.hull_small_steel, 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_thompson, 1), new Object[] { "IIM", " SW", " S ", 'S', IRON.plate(), 'I', STEEL.plate(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); @@ -154,7 +154,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_minigun, 1), new Object[] { "PIB", "PCM", "PIB", 'P', ModItems.pipes_steel, 'B', STEEL.block(), 'I', ANY_PLASTIC.ingot(), 'C', ModItems.mechanism_rifle_2, 'M', ModItems.motor }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_avenger, 1), new Object[] { "PIB", "PCM", "PIB", 'P', ModItems.pipes_steel, 'B', BE.block(), 'I', DESH.ingot(), 'C', ModItems.mechanism_rifle_2, 'M', ModItems.motor }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lacunae, 1), new Object[] { "TIT", "ILI", "PRP", 'T', ModItems.syringe_taint, 'I', STAR.ingot(), 'L', ModItems.gun_minigun, 'P', ModItems.pellet_rtg, 'R', ModBlocks.machine_rtg_grey }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mymy, 1), new Object[] { "PP ", " WP", 'P', ModItems.plate_polymer, 'W', ModItems.wire_aluminium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mymy, 1), new Object[] { "PP ", " WP", 'P', ANY_RUBBER.ingot(), 'W', ModItems.wire_aluminium }); //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_darter, 1), new Object[] { "SST", " P", 'S', STEEL.plate(), 'T', ModItems.gas_empty, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fireext, 1), new Object[] { "HB", " T", 'H', ModItems.hull_small_steel, 'B', ModItems.bolt_tungsten, 'T', ModItems.tank_steel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', ModItems.bolt_tungsten, 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', ModItems.hull_small_steel, 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); @@ -207,15 +207,15 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lacunae, 1), new Object[] { " I", "GC", 'I', CU.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_44 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_44 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'L', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModBlocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", 'I', ModBlocks.det_miner, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModBlocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", 'I', ModBlocks.det_miner, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); CraftingManager.addShapelessAuto(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.QUACK), new Object[] { ModItems.ammo_4gauge, ModItems.nugget_bismuth, ModItems.nugget_tantalium, ModItems.ball_dynamite }); CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG), new Object[] { " I ", "GCL", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); @@ -225,8 +225,8 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_calamity, 1), new Object[] { " I ", "GCG", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_actionexpress, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', ModItems.wire_aluminium, 'P', STEEL.plate(), 'S', ModItems.hull_small_steel, 'E', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.GPS), new Object[] { "IPI", "ICI", "IPI", 'I', ModItems.plate_polymer, 'P', IRON.plate(), 'C', new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.WATZ.getID()) }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.NERF), new Object[] { "I", "I", 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.GPS), new Object[] { "IPI", "ICI", "IPI", 'I', ANY_RUBBER.ingot(), 'P', IRON.plate(), 'C', new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.WATZ.getID()) }); + CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.NERF), new Object[] { "I", "I", 'I', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_45, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_762, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 1), new Object[] { " B ", "GCG", "GPG", 'B', FERRO.ingot(), 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); @@ -384,7 +384,7 @@ public class WeaponRecipes { //IF Grenades CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_generic, 1), new Object[] { " C ", "PTP", " P ", 'C', ModItems.coil_tungsten, 'P', STEEL.plate(), 'T', Blocks.tnt }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_he, 1), new Object[] { "A", "G", "A", 'G', ModItems.grenade_if_generic, 'A', Items.gunpowder }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_bouncy, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_bouncy, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_sticky, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', KEY_SLIME }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_impact, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', REDSTONE.dust() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_concussion, 1), new Object[] { "G", "A", 'G', ModItems.grenade_if_generic, 'A', Items.glowstone_dust }); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index f195610ed..a64fdb6eb 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -185,6 +185,7 @@ public class OreDictManager { public static final DictFrame PET = new DictFrame("PET"); public static final DictFrame PC = new DictFrame("Polycarbonate"); public static final DictFrame PVC = new DictFrame("PVC"); + public static final DictFrame LATEX = new DictFrame("Latex"); public static final DictFrame RUBBER = new DictFrame("Rubber"); public static final DictFrame MAGTUNG = new DictFrame("MagnetizedTungsten"); public static final DictFrame CMB = new DictFrame("CMBSteel"); @@ -277,6 +278,8 @@ public class OreDictManager { /* * COLLECTIONS */ + /** Any form of elastic polymer */ + public static final DictGroup ANY_RUBBER = new DictGroup("AnyRubber", LATEX, RUBBER); /** Any post oil polymer like teflon ("polymer") or bakelite */ public static final DictGroup ANY_PLASTIC = new DictGroup("AnyPlastic", POLYMER, BAKELITE); //using the Any prefix means that it's just the secondary prefix, and that shape prefixes are applicable /** Any post vacuum polymer like PET or PVC */ @@ -370,6 +373,7 @@ public class OreDictManager { DURA .ingot(ingot_dura_steel) .dust(powder_dura_steel) .block(block_dura_steel); POLYMER .ingot(ingot_polymer) .dust(powder_polymer) .block(block_polymer); BAKELITE .ingot(ingot_bakelite) .dust(powder_bakelite) .block(block_bakelite); + LATEX .gem(ball_resin) .ingot(ingot_biorubber); RUBBER .ingot(ingot_rubber) .block(block_rubber); //PET .ingot(ingot_pet); PC .ingot(ingot_pc); @@ -604,6 +608,7 @@ public class OreDictManager { } public static void registerGroups() { + ANY_RUBBER.addPrefix(INGOT, true); ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); ANY_HARDPLASTIC.addPrefix(INGOT, true); ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(PLATEWELDED, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index b76505159..7e498b763 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -179,7 +179,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.entanglement_kit, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(DURA.ingot(), 4), new OreDictStack(CU.plate(), 24), new ComparableStack(ModBlocks.hadron_coil_gold, 4), new OreDictStack(Fluids.XENON.getDict(1_000))},200); makeRecipe(new ComparableStack(ModItems.dysfunctional_reactor, 1), new AStack[] {new OreDictStack(STEEL.plate(), 15), new OreDictStack(PB.ingot(), 5), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack("dyeBrown", 3), },200); makeRecipe(new ComparableStack(ModItems.missile_assembly, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.hull_small_aluminium, 4), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.wire_aluminium, 6), new ComparableStack(ModItems.canister_full, 3, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_carrier, 1), new AStack[] {new ComparableStack(ModItems.fluid_barrel_full, 16, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_medium, 4), new ComparableStack(ModItems.thruster_large, 1), new ComparableStack(ModItems.hull_big_titanium, 6), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_aluminium, 12), new OreDictStack(TI.plate(), 24), new ComparableStack(ModItems.plate_polymer, 128), new ComparableStack(ModBlocks.det_cord, 8), new ComparableStack(ModItems.circuit_targeting_tier3, 12), new ComparableStack(ModItems.circuit_targeting_tier4, 3), },4800); + makeRecipe(new ComparableStack(ModItems.missile_carrier, 1), new AStack[] {new ComparableStack(ModItems.fluid_barrel_full, 16, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_medium, 4), new ComparableStack(ModItems.thruster_large, 1), new ComparableStack(ModItems.hull_big_titanium, 6), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_aluminium, 12), new OreDictStack(TI.plate(), 24), new OreDictStack(ANY_RUBBER.ingot(), 128), new ComparableStack(ModBlocks.det_cord, 8), new ComparableStack(ModItems.circuit_targeting_tier3, 12), new ComparableStack(ModItems.circuit_targeting_tier4, 3), },4800); makeRecipe(new ComparableStack(ModItems.warhead_generic_small, 1), new AStack[] {new OreDictStack(TI.plate(), 5), new OreDictStack(STEEL.plate(), 3), new ComparableStack(Blocks.tnt, 2), },100); makeRecipe(new ComparableStack(ModItems.warhead_generic_medium, 1), new AStack[] {new OreDictStack(TI.plate(), 8), new OreDictStack(STEEL.plate(), 5), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), },150); makeRecipe(new ComparableStack(ModItems.warhead_generic_large, 1), new AStack[] {new OreDictStack(TI.plate(), 15), new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), },200); @@ -259,11 +259,11 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_3, 1), new AStack[] {new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_afterburn_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new ComparableStack(ModItems.crystal_lithium, 16), new OreDictStack(KEY_CIRCUIT_BISMUTH), }, 500); makeRecipe(new ComparableStack(ModItems.redcoil_capacitor, 1), new AStack[] {new OreDictStack(GOLD.plate(), 3), new ComparableStack(ModItems.fuse, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), new ComparableStack(ModItems.coil_advanced_alloy, 6), new ComparableStack(Blocks.redstone_block, 2), },200); makeRecipe(new ComparableStack(ModItems.titanium_filter, 1), new AStack[] {new OreDictStack(PB.plate(), 3), new ComparableStack(ModItems.fuse, 1), new ComparableStack(ModItems.wire_tungsten, 4), new OreDictStack(TI.plate(), 6), new OreDictStack(U238.ingot(), 2), },200); - makeRecipe(new ComparableStack(ModItems.part_lithium, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(LI.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_beryllium, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(BE.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_carbon, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(COAL.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_copper, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(CU.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_plutonium, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new ComparableStack(ModItems.powder_plutonium, 1), },50); + makeRecipe(new ComparableStack(ModItems.part_lithium, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(LI.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_beryllium, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(BE.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_carbon, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(COAL.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_copper, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(CU.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_plutonium, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new ComparableStack(ModItems.powder_plutonium, 1), },50); makeRecipe(new ComparableStack(ModItems.thermo_element, 1), new AStack[] {new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.wire_red_copper, 2), new OreDictStack(NETHERQUARTZ.dust(), 2), }, 60); makeRecipe(new ComparableStack(ModItems.plate_dalekanium, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), },50); makeRecipe(new ComparableStack(ModBlocks.block_meteor, 1), new AStack[] {new ComparableStack(ModItems.fragment_meteorite, 100), },500); @@ -287,7 +287,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); - makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit_copper, 1) }, 100); + makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit_copper, 1) }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.hull_big_steel, 4), new OreDictStack(ANY_TAR.any(), 4), },150); @@ -384,7 +384,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.ams_limiter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 6), new OreDictStack(STEEL.plate(), 24), new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.crystal_diamond, 1)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_emitter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 24), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModBlocks.steel_scaffold, 40), new ComparableStack(ModItems.crystal_redstone, 5), new ComparableStack(ModBlocks.machine_lithium_battery)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_base, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 12), new OreDictStack(STEEL.plate(), 28), new ComparableStack(ModBlocks.steel_scaffold, 30), new ComparableStack(ModBlocks.steel_grate, 8), new ComparableStack(ModBlocks.barrel_steel, 2)}, 600); - makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.plate_polymer, 24), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); + makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(ANY_RUBBER.ingot(), 24), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); makeRecipe(new ComparableStack(ModBlocks.machine_forcefield, 1), new AStack[] {new OreDictStack(ALLOY.plate528(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit_targeting_tier5, 1), new ComparableStack(ModBlocks.machine_transformer, 1), },1000); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.coil_tungsten, 1), new OreDictStack(DURA.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); @@ -433,7 +433,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.mp_warhead_15_n2, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 20), new ComparableStack(ModBlocks.det_charge, 24), new ComparableStack(Blocks.redstone_block, 12), new OreDictStack(MAGTUNG.dust(), 6), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },400); makeRecipe(new ComparableStack(ModItems.mp_warhead_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 6), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit_targeting_tier4, 1), }, 60); makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 40), new ComparableStack(ModBlocks.det_cord, 20), new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.thruster_small, 12), new ComparableStack(ModItems.tank_steel, 10), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 8), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.fins_small_steel, 4), new ComparableStack(ModItems.hull_big_titanium, 32), new ComparableStack(ModItems.hull_big_steel, 18), new OreDictStack(FIBER.ingot(), 64), },600); - makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 10), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 4), new ComparableStack(ModItems.plate_polymer, 32), new ComparableStack(ModItems.hull_big_aluminium, 2), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(FIBER.ingot(), 12), },600); + makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 10), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 4), new OreDictStack(ANY_RUBBER.ingot(), 32), new ComparableStack(ModItems.hull_big_aluminium, 2), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(FIBER.ingot(), 12), },600); makeRecipe(new ComparableStack(ModItems.fusion_shield_tungsten, 1), new AStack[] {new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_desh, 1), new AStack[] {new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_chlorophyte, 1), new AStack[] {new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)}, 600); @@ -695,7 +695,7 @@ public class AssemblerRecipes { new OreDictStack(W.ingot(), 32), new OreDictStack(PB.plate(), 16), new OreDictStack(ALLOY.plate(), 4), - new ComparableStack(ModItems.plate_polymer, 4), + new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.bolt_tungsten, 8), new ComparableStack(ModItems.bolt_dura_steel, 8), new ComparableStack(ModItems.motor, 3), @@ -706,7 +706,7 @@ public class AssemblerRecipes { new OreDictStack(W.ingot(), 8), new OreDictStack(PB.plate(), 6), new OreDictStack(ALLOY.plate(), 3), - new ComparableStack(ModItems.plate_polymer, 3), + new OreDictStack(ANY_RUBBER.ingot(), 3), new ComparableStack(ModItems.bolt_tungsten, 3), new ComparableStack(ModItems.bolt_dura_steel, 3), new ComparableStack(ModItems.motor, 1), @@ -1088,7 +1088,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.rbmk_console, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 16), new OreDictStack(AL.plate528(), 32), - new ComparableStack(ModItems.plate_polymer, 16), + new OreDictStack(ANY_RUBBER.ingot(), 16), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(ModItems.circuit_tantalium, 20), new ComparableStack(ModItems.crt_display, 8), @@ -1097,7 +1097,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.rbmk_crane_console, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 16), new OreDictStack(AL.plate528(), 8), - new ComparableStack(ModItems.plate_polymer, 4), + new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.circuit_gold, 1), new ComparableStack(ModItems.circuit_tantalium, 10), }, 300); @@ -1199,7 +1199,7 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.cmb_brick_reinforced, 16), new OreDictStack(STEEL.plate(), 64), new OreDictStack(ALLOY.plate(), 40), - new ComparableStack(ModItems.plate_polymer, 36), + new OreDictStack(ANY_RUBBER.ingot(), 36), new OreDictStack(STEEL.block(), 24), new ComparableStack(ModItems.motor_desh, 16), new ComparableStack(ModItems.bolt_dura_steel, 12), @@ -1210,7 +1210,7 @@ public class AssemblerRecipes { new OreDictStack(STEEL.plate(), 16), new OreDictStack(W.ingot(), 8), new ComparableStack(ModBlocks.reinforced_glass, 4), - new ComparableStack(ModItems.plate_polymer, 4), + new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.bolt_dura_steel, 8), new ComparableStack(ModItems.motor, 2) }, 200); diff --git a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java index 0c4e12f45..21e8ca942 100644 --- a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java @@ -99,7 +99,7 @@ public class MagicRecipes { new OreDictStack(GOLD.plate()))); recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_dart, 4, ItemAmmoEnums.AmmoDart.NUCLEAR.ordinal()), - new ComparableStack(ModItems.plate_polymer), + new OreDictStack(ANY_RUBBER.ingot()), new ComparableStack(ModItems.nugget_pu239), new ComparableStack(ModItems.circuit_aluminium))); } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 21b01c816..925d77d11 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -345,10 +345,12 @@ public class ModItems { public static Item crayon; public static Item undefined; - + + public static Item ball_resin; public static Item ingot_dura_steel; public static Item ingot_polymer; public static Item ingot_bakelite; + public static Item ingot_biorubber; public static Item ingot_rubber; public static Item ingot_pet; public static Item ingot_pc; @@ -2656,9 +2658,11 @@ public class ModItems { billet_zfb_am_mix = new Item().setUnlocalizedName("billet_zfb_am_mix").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_zfb_am_mix"); billet_nuclear_waste = new Item().setUnlocalizedName("billet_nuclear_waste").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_nuclear_waste"); + ball_resin = new ItemCustomLore().setUnlocalizedName("ball_resin").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ball_resin"); ingot_dura_steel = new ItemCustomLore().setUnlocalizedName("ingot_dura_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_dura_steel"); ingot_polymer = new ItemCustomLore().setUnlocalizedName("ingot_polymer").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_polymer"); ingot_bakelite = new ItemCustomLore().setUnlocalizedName("ingot_bakelite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bakelite"); + ingot_biorubber = new ItemCustomLore().setUnlocalizedName("ingot_biorubber").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_biorubber"); ingot_rubber = new ItemCustomLore().setUnlocalizedName("ingot_rubber").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_rubber"); //ingot_pet = new ItemCustomLore().setUnlocalizedName("ingot_pet").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_pet"); ingot_pc = new ItemCustomLore().setUnlocalizedName("ingot_pc").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_pc"); @@ -5596,6 +5600,7 @@ public class ModItems { GameRegistry.registerItem(ingot_dura_steel, ingot_dura_steel.getUnlocalizedName()); GameRegistry.registerItem(ingot_polymer, ingot_polymer.getUnlocalizedName()); GameRegistry.registerItem(ingot_bakelite, ingot_bakelite.getUnlocalizedName()); + GameRegistry.registerItem(ingot_biorubber, ingot_biorubber.getUnlocalizedName()); GameRegistry.registerItem(ingot_rubber, ingot_rubber.getUnlocalizedName()); //GameRegistry.registerItem(ingot_pet, ingot_pet.getUnlocalizedName()); GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName()); @@ -5850,6 +5855,7 @@ public class ModItems { GameRegistry.registerItem(ball_dynamite, ball_dynamite.getUnlocalizedName()); GameRegistry.registerItem(ball_tnt, ball_tnt.getUnlocalizedName()); GameRegistry.registerItem(ball_tatb, ball_tatb.getUnlocalizedName()); + GameRegistry.registerItem(ball_resin, ball_resin.getUnlocalizedName()); GameRegistry.registerItem(ball_fireclay, ball_fireclay.getUnlocalizedName()); //Ores diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index d54d2267f..34fbbfd48 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -90,7 +90,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.board_copper, 1), new Object[] { "TTT", "TTT", 'T', CU.plate() }); addRecipeAuto(Mats.MAT_IRON.make(ModItems.plate_cast), new Object[] { "BPB", "BPB", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_red, 1), new Object[] { "C", "R", "C", 'C', ModItems.hazmat_cloth, 'R', REDSTONE.dust() }); - addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_grey, 1), new Object[] { " P ", "ICI", " L ", 'C', ModItems.hazmat_cloth_red, 'P', IRON.plate(), 'L', PB.plate(), 'I', ModItems.plate_polymer }); + addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_grey, 1), new Object[] { " P ", "ICI", " L ", 'C', ModItems.hazmat_cloth_red, 'P', IRON.plate(), 'L', PB.plate(), 'I', ANY_RUBBER.ingot() }); addRecipeAuto(new ItemStack(ModItems.asbestos_cloth, 8), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', BR.dust(), 'C', Blocks.wool }); addRecipeAuto(new ItemStack(ModItems.bolt_dura_steel, 4), new Object[] { "D", "D", 'D', DURA.ingot()}); addRecipeAuto(new ItemStack(ModItems.pipes_steel, 1), new Object[] { "B", "B", "B", 'B', STEEL.block() }); @@ -98,6 +98,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.bolt_compound, 1), new Object[] { "PDP", "PTP", "PDP", 'D', ModItems.bolt_dura_steel, 'T', ModItems.bolt_tungsten, 'P', TI.plate() }); addRecipeAuto(new ItemStack(ModItems.pellet_coal, 1), new Object[] { "PFP", "FOF", "PFP", 'P', COAL.dust(), 'F', Items.flint, 'O', ModBlocks.gravel_obsidian }); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 8), new Object[] { "DD", 'D', ANY_PLASTIC.ingot() }); + addRecipeAuto(new ItemStack(ModItems.plate_polymer, 8), new Object[] { "DD", 'D', ANY_RUBBER.ingot() }); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 16), new Object[] { "DD", 'D', FIBER.ingot()}); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 16), new Object[] { "DD", 'D', ASBESTOS.ingot()}); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 4), new Object[] { "SWS", 'S', Items.string, 'W', Blocks.wool }); @@ -259,7 +260,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "RSR", "I I", "RSR", 'I', IRON.ingot(), 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', IRON.plate() }); - addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', RUBBER.ingot(), 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', ANY_RUBBER.ingot(), 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_express, 8), new Object[] { "CCC", "CLC", "CCC", 'C', ModBlocks.conveyor, 'L', Fluids.LUBRICANT.getDict(1_000) }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_double, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor_triple, 3), new Object[] { "CPC", "CPC", "CPC", 'C', ModBlocks.conveyor_double, 'P', STEEL.plate() }); @@ -312,7 +313,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', ModItems.circuit_copper, 'M', ModItems.motor, 'W', Blocks.crafting_table }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); - addRecipeAuto(new ItemStack(ModBlocks.machine_siren, 1), new Object[] { "SIS", "ICI", "SRS", 'S', STEEL.plate(), 'I', ModItems.plate_polymer, 'C', ModItems.circuit_copper, 'R', REDSTONE.dust() }); + addRecipeAuto(new ItemStack(ModBlocks.machine_siren, 1), new Object[] { "SIS", "ICI", "SRS", 'S', STEEL.plate(), 'I', ANY_RUBBER.ingot(), 'C', ModItems.circuit_copper, 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_microwave, 1), new Object[] { "III", "SGM", "IDI", 'I', ModItems.plate_polymer, 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'M', ModItems.magnetron, 'D', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.machine_solar_boiler), new Object[] { "SHS", "DHD", "SHS", 'S', STEEL.ingot(), 'H', ModItems.hull_big_steel, 'D', KEY_BLACK }); addRecipeAuto(new ItemStack(ModBlocks.solar_mirror, 3), new Object[] { "AAA", " B ", "SSS", 'A', AL.plate(), 'B', ModBlocks.steel_beam, 'S', STEEL.ingot() }); @@ -326,7 +327,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', ModItems.bolt_tungsten }); - addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ModItems.plate_polymer, 'W', Blocks.wool }); + addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_advanced_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', ALLOY.plate(), 'I', ALLOY.ingot() }); @@ -597,8 +598,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.wiring_red_copper, 1), new Object[] { "PPP", "PIP", "PPP", 'P', STEEL.plate(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.jetpack_tank, 1), new Object[] { " S ", "BKB", " S ", 'S', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'K', Fluids.KEROSENE.getDict(1000) }); - addRecipeAuto(new ItemStack(ModItems.gun_kit_1, 4), new Object[] { "I ", "LB", "P ", 'I', ModItems.plate_polymer, 'L', Fluids.LUBRICANT.getDict(1000), 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); - addRecipeAuto(new ItemStack(ModItems.gun_kit_2, 1), new Object[] { "III", "GLG", "PPP", 'I', ModItems.plate_polymer, 'L', ModItems.ducttape, 'G', ModItems.gun_kit_1, 'P', IRON.plate() }); + addRecipeAuto(new ItemStack(ModItems.gun_kit_1, 4), new Object[] { "I ", "LB", "P ", 'I', ANY_RUBBER.ingot(), 'L', Fluids.LUBRICANT.getDict(1000), 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); + addRecipeAuto(new ItemStack(ModItems.gun_kit_2, 1), new Object[] { "III", "GLG", "PPP", 'I', ANY_RUBBER.ingot(), 'L', ModItems.ducttape, 'G', ModItems.gun_kit_1, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModItems.igniter, 1), new Object[] { " W", "SC", "CE", 'S', STEEL.plate(), 'W', ModItems.wire_schrabidium, 'C', ModItems.circuit_schrabidium, 'E', EUPH.ingot() }); addRecipeAuto(new ItemStack(ModItems.watch, 1), new Object[] { "LYL", "EWE", "LYL", 'E', EUPH.ingot(), 'L', KEY_BLUE, 'W', Items.clock, 'Y', ModItems.billet_yharonite }); @@ -687,14 +688,14 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_transformer_dnt_20), new Object[] { "SDS", "MCM", "MCM", 'S', STAR.ingot(), 'D', DESH.ingot(), 'M', ModBlocks.fusion_conductor, 'C', ModItems.circuit_targeting_tier6 }); addRecipeAuto(new ItemStack(ModBlocks.radiobox), new Object[] { "PLP", "PSP", "PLP", 'P', STEEL.plate(), 'S', ModItems.ring_starmetal, 'C', ModItems.fusion_core, 'L', getReflector() }); addRecipeAuto(new ItemStack(ModBlocks.radiorec), new Object[] { " W", "PCP", "PIP", 'W', ModItems.wire_copper, 'P', STEEL.plate(), 'C', ModItems.circuit_red_copper, 'I', ANY_PLASTIC.ingot() }); - addRecipeAuto(new ItemStack(ModItems.jackt), new Object[] { "S S", "LIL", "LIL", 'S', STEEL.plate(), 'L', Items.leather, 'I', ModItems.plate_polymer }); - addRecipeAuto(new ItemStack(ModItems.jackt2), new Object[] { "S S", "LIL", "III", 'S', STEEL.plate(), 'L', Items.leather, 'I', ModItems.plate_polymer }); + addRecipeAuto(new ItemStack(ModItems.jackt), new Object[] { "S S", "LIL", "LIL", 'S', STEEL.plate(), 'L', Items.leather, 'I', ANY_RUBBER.ingot() }); + addRecipeAuto(new ItemStack(ModItems.jackt2), new Object[] { "S S", "LIL", "III", 'S', STEEL.plate(), 'L', Items.leather, 'I', ANY_RUBBER.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.vent_chlorine), new Object[] { "IGI", "ICI", "IDI", 'I', IRON.plate(), 'G', Blocks.iron_bars, 'C', ModItems.pellet_gas, 'D', Blocks.dispenser }); addRecipeAuto(new ItemStack(ModBlocks.vent_chlorine_seal), new Object[] { "ISI", "SCS", "ISI", 'I', BIGMT.ingot(), 'S', STAR.ingot(), 'C', ModItems.chlorine_pinwheel }); addRecipeAuto(new ItemStack(ModBlocks.vent_cloud), new Object[] { "IGI", "ICI", "IDI", 'I', IRON.plate(), 'G', Blocks.iron_bars, 'C', ModItems.grenade_cloud, 'D', Blocks.dispenser }); addRecipeAuto(new ItemStack(ModBlocks.vent_pink_cloud), new Object[] { "IGI", "ICI", "IDI", 'I', IRON.plate(), 'G', Blocks.iron_bars, 'C', ModItems.grenade_pink_cloud, 'D', Blocks.dispenser }); addRecipeAuto(new ItemStack(ModBlocks.spikes, 4), new Object[] { "FFF", "BBB", "TTT", 'F', Items.flint, 'B', ModItems.bolt_tungsten, 'T', W.ingot() }); - addRecipeAuto(new ItemStack(ModItems.custom_fall, 1), new Object[] { "IIP", "CHW", "IIP", 'I', ModItems.plate_polymer, 'P', BIGMT.plate(), 'C', ModItems.circuit_red_copper, 'H', ModItems.hull_small_steel, 'W', ModItems.coil_copper }); + addRecipeAuto(new ItemStack(ModItems.custom_fall, 1), new Object[] { "IIP", "CHW", "IIP", 'I', ANY_RUBBER.ingot(), 'P', BIGMT.plate(), 'C', ModItems.circuit_red_copper, 'H', ModItems.hull_small_steel, 'W', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.machine_controller, 1), new Object[] { "TDT", "DCD", "TDT", 'T', ANY_RESISTANTALLOY.ingot(), 'D', ModItems.crt_display, 'C', ModItems.circuit_targeting_tier3 }); addRecipeAuto(new ItemStack(ModItems.containment_box, 1), new Object[] { "LUL", "UCU", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'C', ModBlocks.crate_steel }); @@ -1021,6 +1022,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.drone_crate_requester), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_YELLOW }); addRecipeAuto(new ItemStack(ModBlocks.drone_crate_provider), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_ORANGE }); addRecipeAuto(new ItemStack(ModBlocks.drone_dock), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', ModItems.circuit_gold }); + + addRecipeAuto(new ItemStack(ModItems.ball_resin), new Object[] { "DD", "DD", 'D', Blocks.yellow_flower }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1), new Object[] { ModItems.ingot_chainsteel, ASBESTOS.ingot(), ModItems.gem_alexandrite }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1, 3), new Object[] { DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2) }); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 56baffc69..f8684f74d 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1156,6 +1156,7 @@ item.balefire_and_steel.name=Balefire-Zeug item.balefire_scrambled.name=Rühr-Balefire-Ei item.ball_dynamite.name=Dynamit item.ball_fireclay.name=Schamott +item.ball_resin.name=Löwenzahn-Kautschuk item.ball_tatb.name=TATB item.ball_tnt.name=TNT item.ballistic_gauntlet.name=Ballistischer Panzerhandschuh @@ -2083,6 +2084,7 @@ item.ingot_au198.name=Gold-198-Barren item.ingot_australium.name=Australiumbarren item.ingot_bakelite.name=Bakelittafel item.ingot_beryllium.name=Berylliumbarren +item.ingot_biorubber.name=Latextafel item.ingot_bismuth.name=Bismutbarren item.ingot_boron.name=Borbarren item.ingot_c4.name=C4-Tafel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index deb978aef..c8dbdf375 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1810,6 +1810,7 @@ item.balefire_and_steel.name=Balefire and Steel item.balefire_scrambled.name=Scrambled Balefire Egg item.ball_dynamite.name=Dynamite item.ball_fireclay.name=Fireclay +item.ball_resin.name=Dandelion Milk item.ball_tatb.name=TATB item.ball_tnt.name=TNT item.ballistic_gauntlet.name=Ballistic Gauntlet @@ -2806,6 +2807,7 @@ item.ingot_au198.name=Gold-198 Ingot item.ingot_australium.name=Australium Ingot item.ingot_bakelite.name=Bakelite Bar item.ingot_beryllium.name=Beryllium Ingot +item.ingot_biorubber.name=Latex Bar item.ingot_bismuth.name=Bismuth Ingot item.ingot_boron.name=Boron Ingot item.ingot_c4.name=Bar of Composition C-4 diff --git a/src/main/resources/assets/hbm/textures/items/ball_resin.png b/src/main/resources/assets/hbm/textures/items/ball_resin.png new file mode 100644 index 0000000000000000000000000000000000000000..5c4657a999e0c6d85d7cac1dbd238d89e4be2146 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfVbgAD1c|UU_+Wfz%<7HE9wK<}IwV#U+5CEPp5O^&kKKR>zz&;QjIIsrH?)l-~RM z>(d`Rd2+;{fphlC8zzTe2dSLb81&GQ#&G-ReFBqUV){G@vL%-Z#Z>`FXK zs=NQ0o0z0j{QqZrhaqQHp%jBL%glb?&jySPo6Pc0C?vh{2Ks=()78&qol`;+0O~$z A@Bjb+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/ingot_biorubber.png b/src/main/resources/assets/hbm/textures/items/ingot_biorubber.png new file mode 100644 index 0000000000000000000000000000000000000000..7094fdeffdec214e37f8996cb58acb275e1fa840 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfmQ$B&M-1+(^mSZQ`F4E6#0M4 zcJuq@*1JF0YhJn_l9|y~o6h&@l}1-VxE||_yARcN?TcXI4W6rQ)fvH6JK4fjYL?A; zP5-AlBKgVD=KXCtl~U{unypicLN2vW3CdW@m~mUILO(G3uj0(6SG%^=|9%{ML-xnM z{^yk*n&}JwwS2qi+2niRYth^mH&%woP1~-|XsXlEpCg*8mMvZr0rUlfr>mdKI;Vst E0K*MqCjbBd literal 0 HcmV?d00001 From 353049c53891062f07c260a8259dcd60558e22df Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 26 Nov 2023 20:22:23 +0100 Subject: [PATCH 113/207] missile rewrite, terrain scan radar --- .../api/hbm/entity/IRadarDetectableNT.java | 15 + .../java/com/hbm/blocks/bomb/LaunchPad.java | 5 + .../blocks/machine/MachineBigAssTank9000.java | 1 - .../com/hbm/blocks/machine/MachineOrbus.java | 1 - .../com/hbm/blocks/machine/MachineRadar.java | 49 ++- .../java/com/hbm/blocks/machine/NTMAnvil.java | 13 +- .../hbm/blocks/network/FluidDuctStandard.java | 2 - .../java/com/hbm/entity/EntityMappings.java | 5 + .../missile/EntityMissileAntiBallistic.java | 4 +- .../entity/missile/EntityMissileBHole.java | 59 ---- .../missile/EntityMissileBaseAdvanced.java | 289 ------------------ .../entity/missile/EntityMissileBaseNT.java | 270 ++++++++++++++++ .../missile/EntityMissileBunkerBuster.java | 55 ---- .../entity/missile/EntityMissileBurst.java | 50 --- .../missile/EntityMissileBusterStrong.java | 54 ---- .../entity/missile/EntityMissileCluster.java | 54 ---- .../missile/EntityMissileClusterStrong.java | 55 ---- .../entity/missile/EntityMissileDoomsday.java | 2 +- .../entity/missile/EntityMissileDrill.java | 58 ---- .../hbm/entity/missile/EntityMissileEMP.java | 59 ---- .../missile/EntityMissileEMPStrong.java | 54 ---- .../hbm/entity/missile/EntityMissileEndo.java | 51 ---- .../hbm/entity/missile/EntityMissileExo.java | 51 ---- .../entity/missile/EntityMissileGeneric.java | 190 ------------ .../missile/EntityMissileIncendiary.java | 47 --- .../EntityMissileIncendiaryStrong.java | 50 --- .../entity/missile/EntityMissileInferno.java | 51 ---- .../entity/missile/EntityMissileMicro.java | 52 ---- .../hbm/entity/missile/EntityMissileMirv.java | 53 ---- .../entity/missile/EntityMissileNuclear.java | 53 ---- .../hbm/entity/missile/EntityMissileRain.java | 55 ---- .../missile/EntityMissileSchrabidium.java | 62 ---- .../entity/missile/EntityMissileShuttle.java | 2 +- .../entity/missile/EntityMissileStrong.java | 48 --- .../entity/missile/EntityMissileTaint.java | 58 ---- .../entity/missile/EntityMissileTier0.java | 108 +++++++ .../entity/missile/EntityMissileTier1.java | 68 +++++ .../entity/missile/EntityMissileTier2.java | 88 ++++++ .../entity/missile/EntityMissileTier3.java | 125 ++++++++ .../entity/missile/EntityMissileTier4.java | 76 +++++ .../entity/missile/EntityMissileVolcano.java | 61 ---- .../entity/projectile/EntityThrowableNT.java | 6 +- .../hbm/inventory/gui/GUIMachineRadarNT.java | 164 +++++++++- .../java/com/hbm/items/tool/ItemWandD.java | 2 - .../com/hbm/items/tool/WeaponSpecial.java | 1 - src/main/java/com/hbm/main/ClientProxy.java | 7 +- .../java/com/hbm/main/ModEventHandler.java | 10 +- src/main/java/com/hbm/packet/BufPacket.java | 6 + .../entity/rocket/RenderMissileGeneric.java | 5 +- .../entity/rocket/RenderMissileHuge.java | 5 +- .../entity/rocket/RenderMissileNuclear.java | 2 +- .../entity/rocket/RenderMissileStrong.java | 6 +- .../entity/rocket/RenderMissileTaint.java | 5 +- .../entity/rocket/RenderMissileThermo.java | 3 +- .../hbm/render/tileentity/RenderRadar.java | 7 +- .../java/com/hbm/tileentity/TileMappings.java | 2 +- .../machine/TileEntityMachineRadarNT.java | 227 +++++++++++--- .../turret/TileEntityTurretBaseNT.java | 4 +- .../hbm/textures/gui/machine/gui_radar_nt.png | Bin 21661 -> 19931 bytes 59 files changed, 1169 insertions(+), 1796 deletions(-) delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileBHole.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java create mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileBunkerBuster.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileBurst.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileCluster.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileDrill.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileEMP.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileEndo.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileExo.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileInferno.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileMicro.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileMirv.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileRain.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileStrong.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileTaint.java create mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileTier0.java create mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileTier1.java create mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileTier2.java create mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileTier3.java create mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileTier4.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java diff --git a/src/main/java/api/hbm/entity/IRadarDetectableNT.java b/src/main/java/api/hbm/entity/IRadarDetectableNT.java index 83c4bf503..19b3f85bf 100644 --- a/src/main/java/api/hbm/entity/IRadarDetectableNT.java +++ b/src/main/java/api/hbm/entity/IRadarDetectableNT.java @@ -19,4 +19,19 @@ public interface IRadarDetectableNT { public String getUnlocalizedName(); public int getBlipLevel(); public boolean canBeSeenBy(Object radar); + public boolean paramsApplicable(RadarScanParams params); + + public static class RadarScanParams { + public boolean scanMissiles = true; + public boolean scanShells = true; + public boolean scanPlayers = true; + public boolean smartMode = true; + + public RadarScanParams(boolean m, boolean s, boolean p, boolean smart) { + this.scanMissiles = m; + this.scanShells = s; + this.scanPlayers = p; + this.smartMode = smart; + } + } } diff --git a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java index 675fbfd38..79725a555 100644 --- a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java +++ b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java @@ -7,6 +7,11 @@ import org.apache.logging.log4j.Level; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.entity.missile.*; +import com.hbm.entity.missile.EntityMissileTier0.*; +import com.hbm.entity.missile.EntityMissileTier1.*; +import com.hbm.entity.missile.EntityMissileTier2.*; +import com.hbm.entity.missile.EntityMissileTier3.*; +import com.hbm.entity.missile.EntityMissileTier4.*; import com.hbm.interfaces.IBomb; import com.hbm.interfaces.Spaghetti; import com.hbm.items.ModItems; diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index e0a494ede..300f9b019 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -14,7 +14,6 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; -import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java index 902c24672..445956358 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java @@ -12,7 +12,6 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; -import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; diff --git a/src/main/java/com/hbm/blocks/machine/MachineRadar.java b/src/main/java/com/hbm/blocks/machine/MachineRadar.java index 9a7ccb8f6..beaf39189 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineRadar.java +++ b/src/main/java/com/hbm/blocks/machine/MachineRadar.java @@ -1,8 +1,7 @@ package com.hbm.blocks.machine; -import com.hbm.config.WeaponConfig; import com.hbm.main.MainRegistry; -import com.hbm.tileentity.machine.TileEntityMachineRadar; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.BlockContainer; @@ -10,6 +9,8 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -21,7 +22,7 @@ public class MachineRadar extends BlockContainer { @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineRadar(); + return new TileEntityMachineRadarNT(); } @Override @@ -42,41 +43,35 @@ public class MachineRadar extends BlockContainer { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(y < WeaponConfig.radarAltitude) { + if(y < TileEntityMachineRadarNT.radarAltitude) { if(world.isRemote) - player.addChatMessage(new ChatComponentText("[Radar] Error: Radar altitude not sufficient.")); + player.addChatMessage(new ChatComponentText("[Radar] Error: Radar altitude not sufficient.").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); return true; } - if(world.isRemote) - { + if(world.isRemote) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; - } else if(!player.isSneaking()) - { - TileEntityMachineRadar entity = (TileEntityMachineRadar) world.getTileEntity(x, y, z); - if(entity != null) - { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } + } else if(!player.isSneaking()) { return true; } else { return false; } } - public boolean canProvidePower() - { - return true; - } + @Override + public boolean canProvidePower() { + return true; + } - public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int m) - { - TileEntityMachineRadar entity = (TileEntityMachineRadar) world.getTileEntity(x, y, z); - return entity.getRedPower(); - } + @Override + public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int m) { + TileEntityMachineRadarNT entity = (TileEntityMachineRadarNT) world.getTileEntity(x, y, z); + return entity.getRedPower(); + } - public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int m) - { - return isProvidingWeakPower(world, x, y, z, m); - } + @Override + public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int m) { + return isProvidingWeakPower(world, x, y, z, m); + } } diff --git a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java index 5a73eb253..c71865430 100644 --- a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java +++ b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java @@ -197,17 +197,10 @@ public class NTMAnvil extends BlockFallingNT implements ITooltipProvider, IGUIPr @SideOnly(Side.CLIENT) public void overrideRenderer(EntityFallingBlockNT falling, RenderBlocks renderBlocks, Tessellator tessellator) { - World world = falling.worldObj; float rotation = 0; - - if(falling.getMeta() == 2) - rotation = 90F / 180F * (float) Math.PI; - - if(falling.getMeta() == 3) - rotation = 270F / 180F * (float) Math.PI; - - if(falling.getMeta() == 4) - rotation = 180F / 180F * (float)Math.PI; + if(falling.getMeta() == 2) rotation = 90F / 180F * (float) Math.PI; + if(falling.getMeta() == 3) rotation = 270F / 180F * (float) Math.PI; + if(falling.getMeta() == 4) rotation = 180F / 180F * (float)Math.PI; tessellator.addTranslation(0F, -0.5F, 0F); ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.anvil, "Top", getIcon(1, 0), tessellator, rotation, true); diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index 7a6ab966b..e58d7ab02 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; -import com.hbm.blocks.ModBlocks; import com.hbm.blocks.test.TestPipe; import com.hbm.inventory.fluid.FluidType; import com.hbm.items.ModItems; @@ -16,7 +15,6 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index c0e61d016..cf6c7e0d1 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -9,6 +9,11 @@ import com.hbm.entity.grenade.*; import com.hbm.entity.item.*; import com.hbm.entity.logic.*; import com.hbm.entity.missile.*; +import com.hbm.entity.missile.EntityMissileTier0.*; +import com.hbm.entity.missile.EntityMissileTier1.*; +import com.hbm.entity.missile.EntityMissileTier2.*; +import com.hbm.entity.missile.EntityMissileTier3.*; +import com.hbm.entity.missile.EntityMissileTier4.*; import com.hbm.entity.mob.*; import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index b350038be..5d6e40d2a 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -58,7 +58,7 @@ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectab List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5)); for(Entity e : list) { - if(e instanceof EntityMissileBaseAdvanced || e instanceof EntityMissileCustom) { + if(e instanceof EntityMissileBaseNT || e instanceof EntityMissileCustom) { ExplosionLarge.explode(worldObj, posX, posY, posZ, 15F, true, false, true); this.setDead(); return; @@ -110,7 +110,7 @@ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectab double closest = 1000D; for(Entity e : list) { - if(e instanceof EntityMissileBaseAdvanced || e instanceof EntityMissileCustom) { + if(e instanceof EntityMissileBaseNT || e instanceof EntityMissileCustom) { double dis = Math.sqrt(Math.pow(e.posX - posX, 2) + Math.pow(e.posY - posY, 2) + Math.pow(e.posZ - posZ, 2)); if(dis < closest) { diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBHole.java b/src/main/java/com/hbm/entity/missile/EntityMissileBHole.java deleted file mode 100644 index dcc595d05..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBHole.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.effect.EntityBlackHole; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileBHole extends EntityMissileBaseAdvanced { - - public EntityMissileBHole(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileBHole(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - if (!this.worldObj.isRemote) - { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 1.5F, true); - - EntityBlackHole bl = new EntityBlackHole(this.worldObj, 1.5F); - bl.posX = this.posX; - bl.posY = this.posY; - bl.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(bl); - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.ducttape, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.grenade_black_hole, 1); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } - -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java deleted file mode 100644 index 69d128a51..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.logic.IChunkLoader; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacket; -import com.hbm.packet.PacketDispatcher; - -import api.hbm.entity.IRadarDetectable; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.Vec3; -import net.minecraft.world.ChunkCoordIntPair; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.ForgeChunkManager.Type; - -public abstract class EntityMissileBaseAdvanced extends Entity implements IChunkLoader, IRadarDetectable { - - int startX; - int startZ; - int targetX; - int targetZ; - public int velocity; - double decelY; - double accelXZ; - boolean isCluster = false; - private Ticket loaderTicket; - public int health = 50; - - public EntityMissileBaseAdvanced(World p_i1582_1_) { - super(p_i1582_1_); - this.ignoreFrustumCheck = true; - startX = (int) posX; - startZ = (int) posZ; - targetX = (int) posX; - targetZ = (int) posZ; - } - - public boolean canBeCollidedWith() { - return true; - } - - public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) { - if(this.isEntityInvulnerable()) { - return false; - } else { - if(!this.isDead && !this.worldObj.isRemote) { - health -= p_70097_2_; - - if(this.health <= 0) { - this.setDead(); - this.killMissile(); - } - } - - return true; - } - } - - private void killMissile() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); - ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); - ExplosionLarge.spawnMissileDebris(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 0.25, getDebris(), getDebrisRareDrop()); - } - - public EntityMissileBaseAdvanced(World world, float x, float y, float z, int a, int b) { - super(world); - this.ignoreFrustumCheck = true; - this.setLocationAndAngles(x, y, z, 0, 0); - startX = (int) x; - startZ = (int) z; - targetX = a; - targetZ = b; - this.motionY = 2; - - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - accelXZ = decelY = 1 / vector.lengthVector(); - decelY *= 2; - - velocity = 1; - - this.setSize(1.5F, 1.5F); - } - - @Override - protected void entityInit() { - init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); - this.dataWatcher.addObject(8, Integer.valueOf(this.health)); - } - - @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { - motionX = nbt.getDouble("moX"); - motionY = nbt.getDouble("moY"); - motionZ = nbt.getDouble("moZ"); - posX = nbt.getDouble("poX"); - posY = nbt.getDouble("poY"); - posZ = nbt.getDouble("poZ"); - decelY = nbt.getDouble("decel"); - accelXZ = nbt.getDouble("accel"); - targetX = nbt.getInteger("tX"); - targetZ = nbt.getInteger("tZ"); - startX = nbt.getInteger("sX"); - startZ = nbt.getInteger("sZ"); - velocity = nbt.getInteger("veloc"); - } - - @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setDouble("moX", motionX); - nbt.setDouble("moY", motionY); - nbt.setDouble("moZ", motionZ); - nbt.setDouble("poX", posX); - nbt.setDouble("poY", posY); - nbt.setDouble("poZ", posZ); - nbt.setDouble("decel", decelY); - nbt.setDouble("accel", accelXZ); - nbt.setInteger("tX", targetX); - nbt.setInteger("tZ", targetZ); - nbt.setInteger("sX", startX); - nbt.setInteger("sZ", startZ); - nbt.setInteger("veloc", velocity); - } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while (this.rotationPitch - this.prevRotationPitch >= 180.0F) - { - this.prevRotationPitch += 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw < -180.0F) - { - this.prevRotationYaw -= 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw >= 180.0F) - { - this.prevRotationYaw += 360.0F; - } - } - - @Override - public void onUpdate() { - - if(velocity < 1) - velocity = 1; - if(this.ticksExisted > 40) - velocity = 3; - else if(this.ticksExisted > 20) - velocity = 2; - - this.dataWatcher.updateObject(8, Integer.valueOf(this.health)); - - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - //TODO: instead of crappy skipping, implement a hitscan - for(int i = 0; i < velocity; i++) { - //this.posX += this.motionX; - //this.posY += this.motionY; - //this.posZ += this.motionZ; - this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - - this.rotation(); - - this.motionY -= decelY; - - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - vector = vector.normalize(); - vector.xCoord *= accelXZ; - vector.zCoord *= accelXZ; - - if(motionY > 0) { - motionX += vector.xCoord; - motionZ += vector.zCoord; - } - - if(motionY < 0) { - motionX -= vector.xCoord; - motionZ -= vector.zCoord; - } - - if(!this.worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(posX, posY, posZ, 2), - new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 300)); - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) { - - if(!this.worldObj.isRemote) { - onImpact(); - } - this.killAndClear(); - return; - } - - loadNeighboringChunks((int) (posX / 16), (int) (posZ / 16)); - - if(motionY < -1 && this.isCluster && !worldObj.isRemote) { - cluster(); - this.setDead(); - return; - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) { - return true; - } - - public abstract void onImpact(); - - public abstract List getDebris(); - - public abstract ItemStack getDebrisRareDrop(); - - public void cluster() { } - - public void init(Ticket ticket) { - if(!worldObj.isRemote) { - - if(ticket != null) { - - if(loaderTicket == null) { - - loaderTicket = ticket; - loaderTicket.bindEntity(this); - loaderTicket.getModData(); - } - - ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); - } - } - } - - List loadedChunks = new ArrayList(); - - public void loadNeighboringChunks(int newChunkX, int newChunkZ) { - if(!worldObj.isRemote && loaderTicket != null) { - - clearChunkLoader(); - - loadedChunks.clear(); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.ceil((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.ceil((this.posZ + this.motionZ) / 16D))); - - for(ChunkCoordIntPair chunk : loadedChunks) { - ForgeChunkManager.forceChunk(loaderTicket, chunk); - } - } - } - - public void killAndClear() { - this.setDead(); - this.clearChunkLoader(); - } - - public void clearChunkLoader() { - if(!worldObj.isRemote && loaderTicket != null) { - for(ChunkCoordIntPair chunk : loadedChunks) { - ForgeChunkManager.unforceChunk(loaderTicket, chunk); - } - } - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java new file mode 100644 index 000000000..766950a91 --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -0,0 +1,270 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.entity.projectile.EntityThrowableInterp; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.main.MainRegistry; + +import api.hbm.entity.IRadarDetectable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable { + + public int startX; + public int startZ; + public int targetX; + public int targetZ; + public double velocity; + public double decelY; + public double accelXZ; + public boolean isCluster = false; + private Ticket loaderTicket; + public int health = 50; + + public EntityMissileBaseNT(World world) { + super(world); + this.ignoreFrustumCheck = true; + startX = (int) posX; + startZ = (int) posZ; + targetX = (int) posX; + targetZ = (int) posZ; + } + + public EntityMissileBaseNT(World world, float x, float y, float z, int a, int b) { + super(world); + this.ignoreFrustumCheck = true; + this.setLocationAndAngles(x, y, z, 0, 0); + startX = (int) x; + startZ = (int) z; + targetX = a; + targetZ = b; + this.motionY = 2; + + Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); + accelXZ = decelY = 1 / vector.lengthVector(); + decelY *= 2; + velocity = 0; + + this.setSize(1.5F, 1.5F); + } + + @Override + protected void entityInit() { + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + this.dataWatcher.addObject(8, Integer.valueOf(this.health)); + } + + @Override + protected double motionMult() { + return velocity; + } + + @Override + public boolean doesImpactEntities() { + return false; + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(velocity < 4) velocity += 0.025; + + if(!worldObj.isRemote) { + + this.motionY -= decelY * velocity; + + Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); + vector = vector.normalize(); + vector.xCoord *= accelXZ; + vector.zCoord *= accelXZ; + + if(motionY > 0) { + motionX += vector.xCoord * velocity; + motionZ += vector.zCoord * velocity; + } + + if(motionY < 0) { + motionX -= vector.xCoord * velocity; + motionZ -= vector.zCoord * velocity; + } + + if(motionY < -velocity && this.isCluster) { + cluster(); + this.setDead(); + return; + } + + loadNeighboringChunks((int) Math.floor(posX / 16), (int) Math.floor(posZ / 16)); + } else { + Vec3 vec = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); + MainRegistry.proxy.particleControl(posX - vec.xCoord, posY - vec.yCoord, posZ - vec.zCoord, 2); + } + + float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F); + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) this.prevRotationPitch += 360.0F; + while(this.rotationYaw - this.prevRotationYaw < -180.0F) this.prevRotationYaw -= 360.0F; + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) this.prevRotationYaw += 360.0F; + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + motionX = nbt.getDouble("moX"); + motionY = nbt.getDouble("moY"); + motionZ = nbt.getDouble("moZ"); + posX = nbt.getDouble("poX"); + posY = nbt.getDouble("poY"); + posZ = nbt.getDouble("poZ"); + decelY = nbt.getDouble("decel"); + accelXZ = nbt.getDouble("accel"); + targetX = nbt.getInteger("tX"); + targetZ = nbt.getInteger("tZ"); + startX = nbt.getInteger("sX"); + startZ = nbt.getInteger("sZ"); + velocity = nbt.getDouble("veloc"); + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setDouble("moX", motionX); + nbt.setDouble("moY", motionY); + nbt.setDouble("moZ", motionZ); + nbt.setDouble("poX", posX); + nbt.setDouble("poY", posY); + nbt.setDouble("poZ", posZ); + nbt.setDouble("decel", decelY); + nbt.setDouble("accel", accelXZ); + nbt.setInteger("tX", targetX); + nbt.setInteger("tZ", targetZ); + nbt.setInteger("sX", startX); + nbt.setInteger("sZ", startZ); + nbt.setDouble("veloc", velocity); + } + + public boolean canBeCollidedWith() { + return true; + } + + public boolean attackEntityFrom(DamageSource source, float amount) { + if(this.isEntityInvulnerable()) { + return false; + } else { + if(!this.isDead && !this.worldObj.isRemote) { + health -= amount; + + if(this.health <= 0) { + this.killMissile(); + } + } + + return true; + } + } + + private void killMissile() { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); + ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); + ExplosionLarge.spawnMissileDebris(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 0.25, getDebris(), getDebrisRareDrop()); + this.killAndClear(); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean isInRangeToRenderDist(double distance) { + return true; + } + + @Override + protected void onImpact(MovingObjectPosition mop) { + if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { + this.onImpact(); + this.killAndClear(); + } + } + + public abstract void onImpact(); + public abstract List getDebris(); + public abstract ItemStack getDebrisRareDrop(); + public void cluster() { } + + @Override + public double getGravityVelocity() { + return 0.0D; + } + + @Override + protected float getAirDrag() { + return 1F; + } + + @Override + protected float getWaterDrag() { + return 1F; + } + + public void init(Ticket ticket) { + if(!worldObj.isRemote) { + + if(ticket != null) { + + if(loaderTicket == null) { + + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + } + + List loadedChunks = new ArrayList(); + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + + clearChunkLoader(); + + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX * this.motionMult()) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ * this.motionMult()) / 16D))); + + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + } + + public void killAndClear() { + this.setDead(); + this.clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBunkerBuster.java b/src/main/java/com/hbm/entity/missile/EntityMissileBunkerBuster.java deleted file mode 100644 index b23a22063..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBunkerBuster.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileBunkerBuster extends EntityMissileBaseAdvanced { - - public EntityMissileBunkerBuster(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileBunkerBuster(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - for(int i = 0; i < 15; i++) - { - this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 5F, true); - } - - ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 5); - ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 5); - ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 5); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.thruster_small, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_buster_small); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } - -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java b/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java deleted file mode 100644 index b9285eb32..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileBurst extends EntityMissileBaseAdvanced { - - public EntityMissileBurst(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileBurst(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - for(int i = 0; i < 4; i++) - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 50.0F, true); - ExplosionLarge.explode(worldObj, posX, posY, posZ, 50.0F, true, true, true); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 16)); - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_generic_large); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java deleted file mode 100644 index ac4e903b6..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileBusterStrong extends EntityMissileBaseAdvanced { - - public EntityMissileBusterStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileBusterStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - for(int i = 0; i < 20; i++) - { - this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 7.5F, true); - } - ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 8); - ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 8); - ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 8); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_buster_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java b/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java deleted file mode 100644 index 38ac71f9a..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileCluster extends EntityMissileBaseAdvanced { - - public EntityMissileCluster(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileCluster(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - this.isCluster = true; - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 5F, true); - ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25, 100); - } - - @Override - public void cluster() { - this.onImpact(); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.thruster_small, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_cluster_small); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java deleted file mode 100644 index 81a3cab63..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileClusterStrong extends EntityMissileBaseAdvanced { - - public EntityMissileClusterStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileClusterStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - this.isCluster = true; - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 15F, true); - ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 50, 100); - } - - @Override - public void cluster() { - this.onImpact(); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_cluster_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java index 7b1d42a36..e4f8609b4 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java @@ -7,7 +7,7 @@ import com.hbm.explosion.ExplosionLarge; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public class EntityMissileDoomsday extends EntityMissileBaseAdvanced { +public class EntityMissileDoomsday extends EntityMissileBaseNT { public EntityMissileDoomsday(World p_i1582_1_) { super(p_i1582_1_); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java b/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java deleted file mode 100644 index 3c0ab3442..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNT; -import com.hbm.explosion.ExplosionNT.ExAttrib; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileDrill extends EntityMissileBaseAdvanced { - - public EntityMissileDrill(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileDrill(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - for(int i = 0; i < 30; i++) - { - ExplosionNT explosion = new ExplosionNT(worldObj, this, this.posX, this.posY - i, this.posZ, 10F); - explosion.addAllAttrib(ExAttrib.ERRODE); - explosion.explode(); //an explosion exploded! - } - ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 25); - ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 12); - ExplosionLarge.jolt(worldObj, this.posX, this.posY, this.posZ, 10, 50, 1); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 16)); - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_buster_large); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java b/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java deleted file mode 100644 index bd6ce0281..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.entity.effect.EntityEMPBlast; -import com.hbm.explosion.ExplosionNukeGeneric; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileEMP extends EntityMissileBaseAdvanced { - - public EntityMissileEMP(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileEMP(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - if (!this.worldObj.isRemote) - { - ExplosionNukeGeneric.empBlast(worldObj, (int)posX, (int)posY, (int)posZ, 50); - EntityEMPBlast wave = new EntityEMPBlast(worldObj, 50); - wave.posX = posX; - wave.posY = posY; - wave.posZ = posZ; - worldObj.spawnEntityInWorld(wave); - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.ducttape, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModBlocks.emp_bomb, 1); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java deleted file mode 100644 index 4253cbaa6..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.logic.EntityEMP; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileEMPStrong extends EntityMissileBaseAdvanced { - - public EntityMissileEMPStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileEMPStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - - EntityEMP emp = new EntityEMP(worldObj); - emp.posX = posX; - emp.posY = posY; - emp.posZ = posZ; - - worldObj.spawnEntityInWorld(emp); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_generic_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java b/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java deleted file mode 100644 index e1205b606..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionThermo; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileEndo extends EntityMissileBaseAdvanced { - - public EntityMissileEndo(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileEndo(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); - ExplosionThermo.freeze(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); - ExplosionThermo.freezer(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.plate_steel, 14)); - list.add(new ItemStack(ModItems.plate_aluminium, 8)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_thermo_exo); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileExo.java b/src/main/java/com/hbm/entity/missile/EntityMissileExo.java deleted file mode 100644 index 494bebb06..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileExo.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionThermo; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileExo extends EntityMissileBaseAdvanced { - - public EntityMissileExo(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileExo(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); - ExplosionThermo.scorch(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); - ExplosionThermo.setEntitiesOnFire(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.plate_steel, 14)); - list.add(new ItemStack(ModItems.plate_aluminium, 8)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_thermo_exo); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java b/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java deleted file mode 100644 index b1ad0f37b..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileGeneric extends EntityMissileBaseAdvanced { - - public EntityMissileGeneric(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileGeneric(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.thruster_small, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_generic_small); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } - - /*public EntityMissileGeneric(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileGeneric(World p_i1582_1_, int x, int z, double a, double b, double c) { - super(p_i1582_1_, x, z, a, b, c); - } - - @Override - public void onUpdate() - { - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - - this.rotation(); - - switch(phase) - { - case 0: - if(loc0 != null) - { - freePizzaGoddammit(loc0); - if(loc0.posX + 2 > this.posX && loc0.posX - 2 < this.posX && - loc0.posY + 2 > this.posY && loc0.posY - 2 < this.posY && - loc0.posZ + 2 > this.posZ && loc0.posZ - 2 < this.posZ) - { - this.phase = 1; - } - } - break; - case 1: - if(loc1 != null) - { - freePizzaGoddammit(loc1); - if(loc1.posX + 2 > this.posX && loc1.posX - 2 < this.posX && - loc1.posY + 2 > this.posY && loc1.posY - 2 < this.posY && - loc1.posZ + 2 > this.posZ && loc1.posZ - 2 < this.posZ) - { - this.phase = 2; - } - } - break; - case 2: - if(loc2 != null) - { - freePizzaGoddammit(loc2); - if(loc2.posX + 2 > this.posX && loc2.posX - 2 < this.posX && - loc2.posY + 2 > this.posY && loc2.posY - 2 < this.posY && - loc2.posZ + 2 > this.posZ && loc2.posZ - 2 < this.posZ) - { - this.phase = 3; - } - } - break; - case 3: - if(loc3 != null) - { - freePizzaGoddammit(loc3); - if(loc3.posX + 2 > this.posX && loc3.posX - 2 < this.posX && - loc3.posY + 2 > this.posY && loc3.posY - 2 < this.posY && - loc3.posZ + 2 > this.posZ && loc3.posZ - 2 < this.posZ) - { - this.phase = 4; - } - } - break; - case 4: - if(loc4 != null) - { - freePizzaGoddammit(loc4); - if(loc4.posX + 2 > this.posX && loc4.posX - 2 < this.posX && - loc4.posY + 2 > this.posY && loc4.posY - 2 < this.posY && - loc4.posZ + 2 > this.posZ && loc4.posZ - 2 < this.posZ) - { - this.phase = 5; - } - } - break; - case 5: - if(loc5 != null) - { - freePizzaGoddammit(loc5); - if(loc5.posX + 2 > this.posX && loc5.posX - 2 < this.posX && - loc5.posY + 2 > this.posY && loc5.posY - 2 < this.posY && - loc5.posZ + 2 > this.posZ && loc5.posZ - 2 < this.posZ) - { - this.phase = 6; - } - } - break; - case 6: - if(loc6 != null) - { - freePizzaGoddammit(loc6); - if(loc6.posX + 2 > this.posX && loc6.posX - 2 < this.posX && - loc6.posY + 2 > this.posY && loc6.posY - 2 < this.posY && - loc6.posZ + 2 > this.posZ && loc6.posZ - 2 < this.posZ) - { - this.phase = 7; - } - } - break; - case 7: - if(loc7 != null) - { - freePizzaGoddammit(loc7); - if(loc7.posX + 2 > this.posX && loc7.posX - 2 < this.posX && - loc7.posY + 2 > this.posY && loc7.posY - 2 < this.posY && - loc7.posZ + 2 > this.posZ && loc7.posZ - 2 < this.posZ) - { - this.phase = 8; - } - } - break; - case 8: - if(target != null) - { - freePizzaGoddammit(target); - if(target.posX + 2 > this.posX && target.posX - 2 < this.posX && - target.posY + 2 > this.posY && target.posY - 2 < this.posY && - target.posZ + 2 > this.posZ && target.posZ - 2 < this.posZ) - { - this.phase = -1; - } - } - break; - } - - this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air && this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) - { - if(!this.worldObj.isRemote) - { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); - } - this.setDead(); - } - }*/ - -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java b/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java deleted file mode 100644 index 709e2e1f3..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileIncendiary extends EntityMissileBaseAdvanced { - - public EntityMissileIncendiary(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileIncendiary(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 10.0F, true, true, true); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.thruster_small, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_incendiary_small); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java deleted file mode 100644 index 56e8b86d6..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileIncendiaryStrong extends EntityMissileBaseAdvanced { - - public EntityMissileIncendiaryStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileIncendiaryStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 25.0F, true, true, true); - ExplosionChaos.flameDeath(this.worldObj, (int)((float)this.posX + 0.5F), (int)((float)this.posY + 0.5F), (int)((float)this.posZ + 0.5F), 25); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_incendiary_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java b/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java deleted file mode 100644 index 4109390b0..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileInferno extends EntityMissileBaseAdvanced { - - public EntityMissileInferno(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileInferno(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 35.0F, true, true, true); - ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10); - ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 16)); - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_incendiary_large); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java b/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java deleted file mode 100644 index a85d7a980..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionNukeSmall; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileMicro extends EntityMissileBaseAdvanced { - - public EntityMissileMicro(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileMicro(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - if(!this.worldObj.isRemote) { - ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_HIGH); - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.ducttape, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java b/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java deleted file mode 100644 index e5dbe3db7..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeTorex; -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileMirv extends EntityMissileBaseAdvanced { - - public EntityMissileMirv(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileMirv(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ)); - EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 16)); - list.add(new ItemStack(ModItems.plate_steel, 20)); - list.add(new ItemStack(ModItems.plate_aluminium, 12)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier5, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_mirv); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java b/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java deleted file mode 100644 index f7db04860..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeTorex; -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileNuclear extends EntityMissileBaseAdvanced { - - public EntityMissileNuclear(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileNuclear(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - - this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ)); - EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 16)); - list.add(new ItemStack(ModItems.plate_steel, 20)); - list.add(new ItemStack(ModItems.plate_aluminium, 12)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_nuclear); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileRain.java b/src/main/java/com/hbm/entity/missile/EntityMissileRain.java deleted file mode 100644 index 877fe54c4..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileRain.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileRain extends EntityMissileBaseAdvanced { - - public EntityMissileRain(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileRain(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - this.isCluster = true; - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 25F, true); - ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 100, 100); - } - - @Override - public void cluster() { - this.onImpact(); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 16)); - list.add(new ItemStack(ModItems.plate_titanium, 10)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_cluster_large); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java b/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java deleted file mode 100644 index c197026bc..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityCloudFleija; -import com.hbm.entity.logic.EntityNukeExplosionMK3; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileSchrabidium extends EntityMissileBaseAdvanced { - - public EntityMissileSchrabidium(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileSchrabidium(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - if(!this.worldObj.isRemote) { - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, BombConfig.aSchrabRadius); - if(!ex.isDead) { - worldObj.spawnEntityInWorld(ex); - - EntityCloudFleija cloud = new EntityCloudFleija(this.worldObj, BombConfig.aSchrabRadius); - cloud.posX = this.posX; - cloud.posY = this.posY; - cloud.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(cloud); - } - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.ducttape, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.powder_schrabidium, 1); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java index c662a383d..42edb75dd 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java @@ -17,7 +17,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityMissileShuttle extends EntityMissileBaseAdvanced { +public class EntityMissileShuttle extends EntityMissileBaseNT { public EntityMissileShuttle(World p_i1582_1_) { super(p_i1582_1_); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java deleted file mode 100644 index 60d2486d2..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileStrong extends EntityMissileBaseAdvanced { - - public EntityMissileStrong(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileStrong(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 25.0F, true, true, true); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_steel, 10)); - list.add(new ItemStack(ModItems.plate_titanium, 6)); - list.add(new ItemStack(ModItems.thruster_medium, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_generic_medium); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java b/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java deleted file mode 100644 index b536b4410..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.bomb.BlockTaint; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileTaint extends EntityMissileBaseAdvanced { - - public EntityMissileTaint(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileTaint(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); - - for(int i = 0; i < 100; i++) { - int a = rand.nextInt(11) + (int)this.posX - 5; - int b = rand.nextInt(11) + (int)this.posY - 5; - int c = rand.nextInt(11) + (int)this.posZ - 5; - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) - worldObj.setBlock(a, b, c, ModBlocks.taint); - } - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.wire_aluminium, 4)); - list.add(new ItemStack(ModItems.plate_titanium, 4)); - list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); - list.add(new ItemStack(ModItems.powder_magic, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.powder_spark_mix, 1); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java new file mode 100644 index 000000000..e3aee4b0b --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -0,0 +1,108 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.BlockTaint; +import com.hbm.config.BombConfig; +import com.hbm.entity.effect.EntityBlackHole; +import com.hbm.entity.effect.EntityCloudFleija; +import com.hbm.entity.effect.EntityEMPBlast; +import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.explosion.ExplosionNukeSmall; +import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.AmmoFatman; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier0 extends EntityMissileBaseNT { + + public EntityMissileTier0(World world) { super(world); } + public EntityMissileTier0(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.wire_aluminium, 4)); + list.add(new ItemStack(ModItems.plate_titanium, 4)); + list.add(new ItemStack(ModItems.hull_small_aluminium, 2)); + list.add(new ItemStack(ModItems.ducttape, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER0; + } + + public static class EntityMissileMicro extends EntityMissileTier0 { + public EntityMissileMicro(World world) { super(world); } + public EntityMissileMicro(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_HIGH); } + @Override public ItemStack getDebrisRareDrop() { return ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH); } + } + + public static class EntityMissileSchrabidium extends EntityMissileTier0 { + public EntityMissileSchrabidium(World world) { super(world); } + public EntityMissileSchrabidium(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, BombConfig.aSchrabRadius); + if(!ex.isDead) { + worldObj.spawnEntityInWorld(ex); + EntityCloudFleija cloud = new EntityCloudFleija(this.worldObj, BombConfig.aSchrabRadius); + cloud.posX = this.posX; + cloud.posY = this.posY; + cloud.posZ = this.posZ; + this.worldObj.spawnEntityInWorld(cloud); + } + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_schrabidium, 1); } + } + + public static class EntityMissileBHole extends EntityMissileTier0 { + public EntityMissileBHole(World world) { super(world); } + public EntityMissileBHole(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 1.5F, true); + EntityBlackHole bl = new EntityBlackHole(this.worldObj, 1.5F); + bl.posX = this.posX; + bl.posY = this.posY; + bl.posZ = this.posZ; + this.worldObj.spawnEntityInWorld(bl); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.grenade_black_hole, 1); } + } + + public static class EntityMissileTaint extends EntityMissileTier0 { + public EntityMissileTaint(World world) { super(world); } + public EntityMissileTaint(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); + for(int i = 0; i < 100; i++) { + int a = rand.nextInt(11) + (int) this.posX - 5; + int b = rand.nextInt(11) + (int) this.posY - 5; + int c = rand.nextInt(11) + (int) this.posZ - 5; + if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) worldObj.setBlock(a, b, c, ModBlocks.taint); + } + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_spark_mix, 1); } + } + + public static class EntityMissileEMP extends EntityMissileTier0 { + public EntityMissileEMP(World world) { super(world); } + public EntityMissileEMP(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + ExplosionNukeGeneric.empBlast(worldObj, (int)posX, (int)posY, (int)posZ, 50); + EntityEMPBlast wave = new EntityEMPBlast(worldObj, 50); + wave.posX = posX; + wave.posY = posY; + wave.posZ = posZ; + worldObj.spawnEntityInWorld(wave); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModBlocks.emp_bomb, 1); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java new file mode 100644 index 000000000..8fe5cae83 --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java @@ -0,0 +1,68 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier1 extends EntityMissileBaseNT { + + public EntityMissileTier1(World world) { super(world); } + public EntityMissileTier1(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 4)); + list.add(new ItemStack(ModItems.thruster_small, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier1, 1)); + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER1; + } + + public static class EntityMissileGeneric extends EntityMissileTier1 { + public EntityMissileGeneric(World world) { super(world); } + public EntityMissileGeneric(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_small); } + } + + public static class EntityMissileIncendiary extends EntityMissileTier1 { + public EntityMissileIncendiary(World world) { super(world); } + public EntityMissileIncendiary(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 10.0F, true, true, true); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_small); } + } + + public static class EntityMissileCluster extends EntityMissileTier1 { + public EntityMissileCluster(World world) { super(world); } + public EntityMissileCluster(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 5F, true); + ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25, 100); + } + @Override public void cluster() { this.onImpact(); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_small); } + } + + public static class EntityMissileBunkerBuster extends EntityMissileTier1 { + public EntityMissileBunkerBuster(World world) { super(world); } + public EntityMissileBunkerBuster(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + for(int i = 0; i < 15; i++) this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 5F, true); + ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 5); + ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 5); + ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 5); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_buster_small); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java new file mode 100644 index 000000000..9296e0448 --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java @@ -0,0 +1,88 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.logic.EntityEMP; +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier2 extends EntityMissileBaseNT { + + public EntityMissileTier2(World world) { super(world); } + public EntityMissileTier2(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 10)); + list.add(new ItemStack(ModItems.plate_titanium, 6)); + list.add(new ItemStack(ModItems.thruster_medium, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); + + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER2; + } + + public static class EntityMissileStrong extends EntityMissileTier2 { + public EntityMissileStrong(World world) { super(world); } + public EntityMissileStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { ExplosionLarge.explode(worldObj, posX, posY, posZ, 25.0F, true, true, true); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_medium); } + } + + public static class EntityMissileIncendiaryStrong extends EntityMissileTier2 { + public EntityMissileIncendiaryStrong(World world) { super(world); } + public EntityMissileIncendiaryStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 25.0F, true, true, true); + ExplosionChaos.flameDeath(this.worldObj, (int)((float)this.posX + 0.5F), (int)((float)this.posY + 0.5F), (int)((float)this.posZ + 0.5F), 25); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_medium); } + } + + public static class EntityMissileClusterStrong extends EntityMissileTier2 { + public EntityMissileClusterStrong(World world) { super(world); } + public EntityMissileClusterStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 15F, true); + ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 50, 100); + } + @Override public void cluster() { this.onImpact(); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_medium); } + } + + public static class EntityMissileBusterStrong extends EntityMissileTier2 { + public EntityMissileBusterStrong(World world) { super(world); } + public EntityMissileBusterStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + for(int i = 0; i < 20; i++) this.worldObj.createExplosion(this, this.posX, this.posY - i, this.posZ, 7.5F, true); + ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 8); + ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 8); + ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 8); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_buster_medium); } + } + + public static class EntityMissileEMPStrong extends EntityMissileTier2 { + public EntityMissileEMPStrong(World world) { super(world); } + public EntityMissileEMPStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + EntityEMP emp = new EntityEMP(worldObj); + emp.posX = posX; + emp.posY = posY; + emp.posZ = posZ; + worldObj.spawnEntityInWorld(emp); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_medium); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java new file mode 100644 index 000000000..11c527b0e --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java @@ -0,0 +1,125 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionNT; +import com.hbm.explosion.ExplosionThermo; +import com.hbm.explosion.ExplosionNT.ExAttrib; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier3 extends EntityMissileBaseNT { + + public EntityMissileTier3(World world) { super(world); } + public EntityMissileTier3(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 16)); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier3, 1)); + + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER3; + } + + public static class EntityMissileBurst extends EntityMissileTier3 { + public EntityMissileBurst(World world) { super(world); } + public EntityMissileBurst(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + for(int i = 0; i < 4; i++) this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 50.0F, true); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 50.0F, true, true, true); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_large); } + } + + public static class EntityMissileInferno extends EntityMissileTier3 { + public EntityMissileInferno(World world) { super(world); } + public EntityMissileInferno(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 35.0F, true, true, true); + ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10); + ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_large); } + } + + public static class EntityMissileRain extends EntityMissileTier3 { + public EntityMissileRain(World world) { super(world); } + public EntityMissileRain(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); this.isCluster = true; } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 25F, true); + ExplosionChaos.cluster(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 100, 100); + } + @Override public void cluster() { this.onImpact(); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_cluster_large); } + } + + public static class EntityMissileDrill extends EntityMissileTier3 { + public EntityMissileDrill(World world) { super(world); } + public EntityMissileDrill(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + for(int i = 0; i < 30; i++) { + ExplosionNT explosion = new ExplosionNT(worldObj, this, this.posX, this.posY - i, this.posZ, 10F); + explosion.addAllAttrib(ExAttrib.ERRODE); + explosion.explode(); //an explosion exploded! + } + ExplosionLarge.spawnParticles(worldObj, this.posX, this.posY, this.posZ, 25); + ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 12); + ExplosionLarge.jolt(worldObj, this.posX, this.posY, this.posZ, 10, 50, 1); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_buster_large); } + } + + public static class EntityMissileEndo extends EntityMissileTier3 { + public EntityMissileEndo(World world) { super(world); } + public EntityMissileEndo(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); + ExplosionThermo.freeze(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); + ExplosionThermo.freezer(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); + } + @Override public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.plate_steel, 14)); + list.add(new ItemStack(ModItems.plate_aluminium, 8)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); + return list; + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_thermo_exo); } + } + + public static class EntityMissileExo extends EntityMissileTier3 { + public EntityMissileExo(World world) { super(world); } + public EntityMissileExo(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 10.0F, true); + ExplosionThermo.scorch(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); + ExplosionThermo.setEntitiesOnFire(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); + } + @Override public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.plate_steel, 14)); + list.add(new ItemStack(ModItems.plate_aluminium, 8)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); + return list; + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_thermo_exo); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java new file mode 100644 index 000000000..7e859c779 --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java @@ -0,0 +1,76 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.config.BombConfig; +import com.hbm.entity.effect.EntityNukeTorex; +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityMissileTier4 extends EntityMissileBaseNT { + + public EntityMissileTier4(World world) { super(world); } + public EntityMissileTier4(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 16)); + list.add(new ItemStack(ModItems.plate_steel, 20)); + list.add(new ItemStack(ModItems.plate_aluminium, 12)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); + return list; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER1; + } + + public static class EntityMissileNuclear extends EntityMissileTier4 { + public EntityMissileNuclear(World world) { super(world); } + public EntityMissileNuclear(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + this.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius, posX, posY, posZ)); + EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_nuclear); } + } + + public static class EntityMissileMirv extends EntityMissileTier4 { + public EntityMissileMirv(World world) { super(world); } + public EntityMissileMirv(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, BombConfig.missileRadius * 2, posX, posY, posZ)); + EntityNukeTorex.statFac(worldObj, posX, posY, posZ, BombConfig.missileRadius * 2); + } + @Override public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.plate_titanium, 16)); + list.add(new ItemStack(ModItems.plate_steel, 20)); + list.add(new ItemStack(ModItems.plate_aluminium, 12)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier5, 1)); + return list; + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_mirv); } + } + + public static class EntityMissileVolcano extends EntityMissileTier4 { + public EntityMissileVolcano(World world) { super(world); } + public EntityMissileVolcano(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); + for(int x = -1; x <= 1; x++) for(int y = -1; y <= 1; y++) for(int z = -1; z <= 1; z++) worldObj.setBlock((int)Math.floor(posX + x), (int)Math.floor(posY + y), (int)Math.floor(posZ + z), ModBlocks.volcanic_lava_block); + worldObj.setBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ), ModBlocks.volcano_core); + } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_volcano); } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java b/src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java deleted file mode 100644 index 4a8ccbebf..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.hbm.entity.missile; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ModItems; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityMissileVolcano extends EntityMissileBaseAdvanced { - - public EntityMissileVolcano(World p_i1582_1_) { - super(p_i1582_1_); - } - - public EntityMissileVolcano(World world, float x, float y, float z, int a, int b) { - super(world, x, y, z, a, b); - } - - @Override - public void onImpact() { - - ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); - - for(int x = -1; x <= 1; x++) { - for(int y = -1; y <= 1; y++) { - for(int z = -1; z <= 1; z++) { - worldObj.setBlock((int)Math.floor(posX + x), (int)Math.floor(posY + y), (int)Math.floor(posZ + z), ModBlocks.volcanic_lava_block); - } - } - } - - worldObj.setBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ), ModBlocks.volcano_core); - } - - @Override - public List getDebris() { - List list = new ArrayList(); - - list.add(new ItemStack(ModItems.plate_titanium, 16)); - list.add(new ItemStack(ModItems.plate_steel, 20)); - list.add(new ItemStack(ModItems.plate_aluminium, 12)); - list.add(new ItemStack(ModItems.thruster_large, 1)); - list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); - - return list; - } - - @Override - public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.warhead_volcano); - } - - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } -} diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index c07a22bd8..40964b9d3 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -185,7 +185,7 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { nextPos = Vec3.createVectorHelper(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); } - if(!this.worldObj.isRemote) { + if(!this.worldObj.isRemote && this.doesImpactEntities()) { Entity hitEntity = null; List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX * motionMult(), this.motionY * motionMult(), this.motionZ * motionMult()).expand(1.0D, 1.0D, 1.0D)); @@ -282,6 +282,10 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { } } + public boolean doesImpactEntities() { + return true; + } + public boolean doesPenetrate() { return false; } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java index 3c91249bf..2be6a3266 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -5,12 +5,20 @@ import java.util.Arrays; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; +import api.hbm.entity.RadarEntry; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; public class GUIMachineRadarNT extends GuiScreen { @@ -33,6 +41,27 @@ public class GUIMachineRadarNT extends GuiScreen { this.guiTop = (this.height - this.ySize) / 2; } + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + String cmd = null; + + if(checkClick(x, y, -10, 88, 8, 8)) cmd = "missiles"; + if(checkClick(x, y, -10, 98, 8, 8)) cmd = "shells"; + if(checkClick(x, y, -10, 108, 8, 8)) cmd = "players"; + if(checkClick(x, y, -10, 118, 8, 8)) cmd = "smart"; + if(checkClick(x, y, -10, 128, 8, 8)) cmd = "red"; + if(checkClick(x, y, -10, 138, 8, 8)) cmd = "map"; + + if(cmd != null) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean(cmd, true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + } + } + @Override public void drawScreen(int mouseX, int mouseY, float f) { this.drawDefaultBackground(); @@ -42,22 +71,143 @@ public class GUIMachineRadarNT extends GuiScreen { GL11.glEnable(GL11.GL_LIGHTING); } - private void drawGuiContainerForegroundLayer(int x, int y) { - if(checkClick(x, y, -10, 88, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectMissiles")), x, y); - if(checkClick(x, y, -10, 98, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectShells")), x, y); - if(checkClick(x, y, -10, 108, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectPlayers")), x, y); - if(checkClick(x, y, -10, 118, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.smartMode")), x, y); - if(checkClick(x, y, -10, 128, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.redMode")), x, y); - if(checkClick(x, y, -10, 138, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.showMap")), x, y); + private void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + + if(checkClick(mouseX, mouseY, 8, 221, 200, 7)) this.func_146283_a(Arrays.asList(BobMathUtil.getShortNumber(radar.power) + "/" + BobMathUtil.getShortNumber(radar.maxPower) + "HE"), mouseX, mouseY); + + if(checkClick(mouseX, mouseY, -10, 88, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectMissiles")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 98, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectShells")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 108, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectPlayers")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 118, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.smartMode")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 128, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.redMode")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 138, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.showMap")), mouseX, mouseY); + + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + int x = guiLeft + (int)((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; + int z = guiTop + (int)((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; + + if(mouseX + 5 > x && mouseX - 4 <= x && mouseY + 5 > z && mouseY - 4 <= z) { + + String[] text = new String[] { I18nUtil.resolveKey(m.unlocalizedName), m.posX + " / " + m.posZ, "Alt.: " + m.posY }; + this.func_146283_a(Arrays.asList(text), x, z); + return; + } + } + } } private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + drawTexturedModalRect(guiLeft - 14, guiTop + 84, 224, 0, 14, 66); + + if(radar.scanMissiles ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 88, 238, 4, 8, 8); + if(radar.scanShells ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 98, 238, 14, 8, 8); + if(radar.scanPlayers ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 108, 238, 24, 8, 8); + if(radar.smartMode ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 118, 238, 34, 8, 8); + if(radar.redMode ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 128, 238, 44, 8, 8); + if(radar.showMap ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 138, 238, 54, 8, 8); + + if(radar.jammed) { + for(int i = 0; i < 5; i++) { + for(int j = 0; j < 5; j++) { + drawTexturedModalRect(guiLeft + 8 + i * 40, guiTop + 17 + j * 40, 216, 118 + radar.getWorldObj().rand.nextInt(81), 40, 40); + } + } + return; + } + + if(radar.showMap) { + Tessellator tess = Tessellator.instance; + GL11.glDisable(GL11.GL_TEXTURE_2D); + tess.startDrawingQuads(); + for(int i = 0; i < 40_000; i++) { + int iX = i % 200; + int iZ = i / 200; + byte b = radar.map[i]; + if(b > 0) { + int color = ((b * 8) % 256) << 8; + tess.setColorOpaque_I(color); + tess.addVertex(guiLeft + 8 + iX, guiTop + 18 + iZ, this.zLevel); + tess.addVertex(guiLeft + 9 + iX, guiTop + 18 + iZ, this.zLevel); + tess.addVertex(guiLeft + 9 + iX, guiTop + 17 + iZ, this.zLevel); + tess.addVertex(guiLeft + 8 + iX, guiTop + 17 + iZ, this.zLevel); + } + } + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + } + + Vec3 tr = Vec3.createVectorHelper(100, 0, 0); + Vec3 tl = Vec3.createVectorHelper(100, 0, 0); + Vec3 bl = Vec3.createVectorHelper(0, -5, 0); + float rot = -(radar.getWorldObj().getTotalWorldTime() + f) / 20F % (float) (Math.PI * 2); + tr.rotateAroundZ(rot); + tl.rotateAroundZ(rot + 0.25F); + bl.rotateAroundZ(rot); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_SMOOTH); + Tessellator tess = Tessellator.instance; + tess.startDrawingQuads(); + tess.setColorRGBA_I(0x00ff00, 0); tess.addVertex(guiLeft + 108, guiTop + 117, this.zLevel); + tess.setColorRGBA_I(0x00ff00, 255); tess.addVertex(guiLeft + 108 + tr.xCoord, guiTop + 117 + tr.yCoord, this.zLevel); + tess.setColorRGBA_I(0x00ff00, 0); tess.addVertex(guiLeft + 108 + tl.xCoord, guiTop + 117 + tl.yCoord, this.zLevel); + tess.setColorRGBA_I(0x00ff00, 0); tess.addVertex(guiLeft + 108 + bl.xCoord, guiTop + 117 + bl.yCoord, this.zLevel); + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_FLAT); + + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + double x = (m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D; + double z = (m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D; + int t = m.blipLevel; + drawTexturedModalRectDouble(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8); + } + } + } + + public void drawTexturedModalRectDouble(double x, double y, int sourceX, int sourceY, int sizeX, int sizeY) { + float f = 0.00390625F; + float f1 = 0.00390625F; + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV(x, y + sizeY, this.zLevel, (sourceX + 0) * f, (sourceY + sizeY) * f1); + tessellator.addVertexWithUV(x + sizeX, y + sizeY, this.zLevel, (sourceX + sizeX) * f, (sourceY + sizeY) * f1); + tessellator.addVertexWithUV(x + sizeX, y, this.zLevel, (sourceX + sizeX) * f, (sourceY + 0) * f1); + tessellator.addVertexWithUV(x, y, this.zLevel, (sourceX + 0) * f, (sourceY + 0) * f1); + tessellator.draw(); } protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; } + + @Override + protected void keyTyped(char c, int key) { + if(key == 1 || key == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + } + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } + + @Override + public void updateScreen() { + super.updateScreen(); + + if(!this.mc.thePlayer.isEntityAlive() || this.mc.thePlayer.isDead) { + this.mc.thePlayer.closeScreen(); + } + } } diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 2c76d2e96..3c1a0da33 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -2,10 +2,8 @@ package com.hbm.items.tool; import java.util.List; -import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.lib.Library; import com.hbm.saveddata.TomSaveData; -import com.hbm.util.TrackerUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; diff --git a/src/main/java/com/hbm/items/tool/WeaponSpecial.java b/src/main/java/com/hbm/items/tool/WeaponSpecial.java index c59daa016..7d8f177dc 100644 --- a/src/main/java/com/hbm/items/tool/WeaponSpecial.java +++ b/src/main/java/com/hbm/items/tool/WeaponSpecial.java @@ -23,7 +23,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 4ccab463c..4774e9a31 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -57,6 +57,11 @@ import com.hbm.entity.grenade.*; import com.hbm.entity.item.*; import com.hbm.entity.logic.*; import com.hbm.entity.missile.*; +import com.hbm.entity.missile.EntityMissileTier0.*; +import com.hbm.entity.missile.EntityMissileTier1.*; +import com.hbm.entity.missile.EntityMissileTier2.*; +import com.hbm.entity.missile.EntityMissileTier3.*; +import com.hbm.entity.missile.EntityMissileTier4.*; import com.hbm.entity.mob.*; import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; @@ -236,7 +241,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadar.class, new RenderRadar()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSeleniumEngine.class, new RenderSelenium()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineShredderLarge.class, new RenderMachineShredder()); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index e88e39b82..4a1cda31b 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -20,8 +20,6 @@ import com.hbm.blocks.generic.BlockAshes; import com.hbm.config.GeneralConfig; import com.hbm.config.MobConfig; import com.hbm.config.RadiationConfig; -import com.hbm.entity.missile.EntityMissileBaseAdvanced; -import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.entity.mob.EntityCyberCrab; import com.hbm.entity.mob.EntityDuck; import com.hbm.entity.mob.EntityCreeperNuclear; @@ -66,6 +64,7 @@ import com.hbm.packet.PermaSyncPacket; import com.hbm.packet.PlayerInformPacket; import com.hbm.potion.HbmPotion; import com.hbm.saveddata.AuxSavedData; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import com.hbm.tileentity.network.RTTYSystem; import com.hbm.tileentity.network.RequestNetwork; import com.hbm.util.AchievementHandler; @@ -1099,19 +1098,20 @@ public class ModEventHandler { if(event.phase == event.phase.START) { RTTYSystem.updateBroadcastQueue(); RequestNetwork.updateEntries(); + TileEntityMachineRadarNT.updateSystem(); } } @SubscribeEvent public void enteringChunk(EnteringChunk evt) { - if(evt.entity instanceof EntityMissileBaseAdvanced) { - ((EntityMissileBaseAdvanced) evt.entity).loadNeighboringChunks(evt.newChunkX, evt.newChunkZ); + /*if(evt.entity instanceof EntityMissileBaseNT) { + ((EntityMissileBaseNT) evt.entity).loadNeighboringChunks(evt.newChunkX, evt.newChunkZ); } if(evt.entity instanceof EntityMissileCustom) { ((EntityMissileCustom) evt.entity).loadNeighboringChunks(evt.newChunkX, evt.newChunkZ); - } + }*/ } @SubscribeEvent diff --git a/src/main/java/com/hbm/packet/BufPacket.java b/src/main/java/com/hbm/packet/BufPacket.java index b2a158ef8..7ff502c9d 100644 --- a/src/main/java/com/hbm/packet/BufPacket.java +++ b/src/main/java/com/hbm/packet/BufPacket.java @@ -28,11 +28,17 @@ public class BufPacket implements IMessage { @Override public void fromBytes(ByteBuf buf) { + this.x = buf.readInt(); + this.y = buf.readInt(); + this.z = buf.readInt(); this.buf = buf; } @Override public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); this.rec.serialize(buf); } diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java index 268cca1cf..88efff5e3 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java @@ -3,10 +3,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; import com.hbm.entity.missile.EntityMissileAntiBallistic; -import com.hbm.entity.missile.EntityMissileBunkerBuster; -import com.hbm.entity.missile.EntityMissileCluster; -import com.hbm.entity.missile.EntityMissileGeneric; -import com.hbm.entity.missile.EntityMissileIncendiary; +import com.hbm.entity.missile.EntityMissileTier1.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java index af95674e1..9c7a64938 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java @@ -2,10 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileBurst; -import com.hbm.entity.missile.EntityMissileDrill; -import com.hbm.entity.missile.EntityMissileInferno; -import com.hbm.entity.missile.EntityMissileRain; +import com.hbm.entity.missile.EntityMissileTier3.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java index 7719b2612..f69443b8f 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java @@ -2,7 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileVolcano; +import com.hbm.entity.missile.EntityMissileTier4.EntityMissileVolcano; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java index cbe85f692..23d3003ce 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java @@ -2,11 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileBusterStrong; -import com.hbm.entity.missile.EntityMissileClusterStrong; -import com.hbm.entity.missile.EntityMissileEMPStrong; -import com.hbm.entity.missile.EntityMissileIncendiaryStrong; -import com.hbm.entity.missile.EntityMissileStrong; +import com.hbm.entity.missile.EntityMissileTier2.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java index 19c49616a..65643516f 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java @@ -2,10 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileBHole; -import com.hbm.entity.missile.EntityMissileEMP; -import com.hbm.entity.missile.EntityMissileSchrabidium; -import com.hbm.entity.missile.EntityMissileTaint; +import com.hbm.entity.missile.EntityMissileTier0.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileThermo.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileThermo.java index 644dc3c81..c19a36c83 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileThermo.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileThermo.java @@ -2,8 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; -import com.hbm.entity.missile.EntityMissileEndo; -import com.hbm.entity.missile.EntityMissileExo; +import com.hbm.entity.missile.EntityMissileTier3.*; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadar.java b/src/main/java/com/hbm/render/tileentity/RenderRadar.java index 45cc19fd0..6910c9b6e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRadar.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRadar.java @@ -3,7 +3,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.main.ResourceManager; -import com.hbm.tileentity.machine.TileEntityMachineRadar; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -21,8 +21,8 @@ public class RenderRadar extends TileEntitySpecialRenderer { bindTexture(ResourceManager.radar_base_tex); ResourceManager.radar.renderPart("Base"); - TileEntityMachineRadar radar = (TileEntityMachineRadar) tileEntity; - GL11.glRotatef(radar.prevRotation + (radar.rotation - radar.prevRotation) * f, 0F, 1F, 0F); + TileEntityMachineRadarNT radar = (TileEntityMachineRadarNT) tileEntity; + GL11.glRotatef(radar.prevRotation + (radar.rotation - radar.prevRotation) * f, 0F, -1F, 0F); GL11.glTranslated(-0.125D, 0, 0); bindTexture(ResourceManager.radar_dish_tex); @@ -30,5 +30,4 @@ public class RenderRadar extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } - } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 2cf953045..2094dcfcc 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -112,7 +112,7 @@ public class TileMappings { put(TileEntityMachineSPP.class, "tileentity_spp"); put(TileEntityMachineRadGen.class, "tileentity_radgen"); put(TileEntityMachineTransformer.class, "tileentity_transformer"); - put(TileEntityMachineRadar.class, "tileentity_radar"); + put(TileEntityMachineRadarNT.class, "tileentity_radar"); put(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster"); put(TileEntityMachineSeleniumEngine.class, "tileentity_selenium_engine"); put(TileEntityMachineSatLinker.class, "tileentity_satlinker"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index d5911b2a2..e90d861d0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -7,16 +7,21 @@ import java.util.function.Function; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; +import com.hbm.config.WeaponConfig; import com.hbm.extprop.HbmLivingProps; +import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.gui.GUIMachineRadarNT; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.util.Tuple.Pair; +import com.hbm.util.Tuple.Triplet; +import api.hbm.energy.IEnergyUser; import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; +import api.hbm.entity.IRadarDetectableNT.RadarScanParams; import api.hbm.entity.RadarEntry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -27,6 +32,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraft.world.WorldServer; @@ -35,7 +41,7 @@ import net.minecraft.world.WorldServer; * Now with SmЯtâ„¢ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine { +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IConfigurableMachine, IControlReceiver { public boolean scanMissiles = true; public boolean scanShells = true; @@ -50,12 +56,19 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public float rotation; public long power = 0; + + protected int pingTimer = 0; + protected int lastPower; + protected final static int maxTimer = 80; public static int maxPower = 100_000; public static int consumption = 500; public static int radarRange = 1_000; public static int radarBuffer = 30; public static int radarAltitude = 55; + public static int chunkLoadCap = 5; + + public byte[] map = new byte[40_000]; public List entries = new ArrayList(); @@ -71,6 +84,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I radarRange = IConfigurableMachine.grab(obj, "I:radarRange", radarRange); radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer); radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude); + chunkLoadCap = IConfigurableMachine.grab(obj, "I:chunkLoadCap", chunkLoadCap); } @Override @@ -80,6 +94,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I writer.name("I:radarRange").value(radarRange); writer.name("I:radarBuffer").value(radarBuffer); writer.name("I:radarAltitude").value(radarAltitude); + writer.name("I:chunkLoadCap").value(chunkLoadCap); } public TileEntityMachineRadarNT() { @@ -95,50 +110,60 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public void updateEntity() { if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); this.jammed = false; allocateTargets(); - this.networkPackNT(25); - } - } - - protected void allocateTargets() { - this.entries.clear(); - - if(this.yCoord < radarAltitude) return; - if(this.power <= consumption) return; - this.power -= consumption; - - int scan = this.scanRange(); - - for(Entity e : matchingEntities) { + if(this.lastPower != getRedPower()) worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); - if(e.dimension == worldObj.provider.dimensionId && Math.abs(e.posX - (xCoord + 0.5)) <= scan && Math.abs(e.posZ - (zCoord + 0.5)) <= scan && e.posY - yCoord < radarBuffer) { + if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) != ModBlocks.muffler) { - if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { - this.jammed = true; - entries.clear(); - return; + pingTimer++; + + if(power > 0 && pingTimer >= maxTimer) { + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.sonarPing", 5.0F, 1.0F); + pingTimer = 0; } - - for(Function, RadarEntry> converter : converters) { + } + + if(this.showMap) { + int chunkLoadCap = 5; + int chunkLoads = 0; + for(int i = 0; i < 100; i++) { + int index = (int) (worldObj.getTotalWorldTime() % 400) * 100 + i; + int iX = (index % 200) * radarRange * 2 / 200; + int iZ = index / 200 * radarRange * 2 / 200; - RadarEntry entry = converter.apply(new Pair(e, this)); - if(entry != null) { - this.entries.add(entry); - break; + int x = xCoord - radarRange + iX; + int z = zCoord - radarRange + iZ; + + if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) { + this.map[index] = (byte) worldObj.getHeightValue(x, z); + } else { + if(this.map[index] == 0 && chunkLoads < chunkLoadCap) { + worldObj.getChunkFromChunkCoords(x >> 4, z >> 4); + this.map[index] = (byte) worldObj.getHeightValue(x, z); + chunkLoads++; + } } } } + + this.networkPackNT(25); + } else { + prevRotation = rotation; + if(power > 0) rotation += 5F; + + if(rotation >= 360) { + rotation -= 360F; + prevRotation -= 360F; + } } } - protected int scanRange() { - return radarRange; - } - @Override public void serialize(ByteBuf buf) { buf.writeLong(this.power); @@ -151,6 +176,16 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I buf.writeBoolean(this.jammed); buf.writeInt(entries.size()); for(RadarEntry entry : entries) entry.toBytes(buf); + if(this.showMap) { + buf.writeBoolean(true); + short index = (short) (worldObj.getTotalWorldTime() % 400); + buf.writeShort(index); + for(int i = index * 100; i < (index + 1) * 100; i++) { + buf.writeByte(this.map[i]); + } + } else { + buf.writeBoolean(false); + } } @Override @@ -164,11 +199,124 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I this.showMap = buf.readBoolean(); this.jammed = buf.readBoolean(); int count = buf.readInt(); + this.entries.clear(); for(int i = 0; i < count; i++) { RadarEntry entry = new RadarEntry(); entry.fromBytes(buf); this.entries.add(entry); } + if(buf.readBoolean()) { + int index = buf.readShort(); + for(int i = index * 100; i < (index + 1) * 100; i++) { + this.map[i] = buf.readByte(); + } + } + } + + protected void allocateTargets() { + this.entries.clear(); + + if(this.yCoord < radarAltitude) return; + if(this.power <= consumption) return; + this.power -= consumption; + + int scan = this.scanRange(); + + RadarScanParams params = new RadarScanParams(this.scanMissiles, this.scanShells, this.scanPlayers, this.smartMode); + + for(Entity e : matchingEntities) { + + if(e.dimension == worldObj.provider.dimensionId && Math.abs(e.posX - (xCoord + 0.5)) <= scan && Math.abs(e.posZ - (zCoord + 0.5)) <= scan && e.posY - yCoord > radarBuffer) { + + if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { + this.jammed = true; + entries.clear(); + return; + } + + for(Function, RadarEntry> converter : converters) { + + RadarEntry entry = converter.apply(new Triplet(e, this, params)); + if(entry != null) { + this.entries.add(entry); + break; + } + } + } + } + } + + public int getRedPower() { + + if(!entries.isEmpty()) { + + /// PROXIMITY /// + if(redMode) { + + double maxRange = WeaponConfig.radarRange * Math.sqrt(2D); + int power = 0; + + for(int i = 0; i < entries.size(); i++) { + RadarEntry e = entries.get(i); + double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2)); + int p = 15 - (int)Math.floor(dist / maxRange * 15); + + if(p > power) power = p; + } + + return power; + + /// TIER /// + } else { + + int power = 0; + + for(int i = 0; i < entries.size(); i++) { + + if(entries.get(i).blipLevel + 1 > power) { + power = entries.get(i).blipLevel + 1; + } + } + + return power; + } + } + + return 0; + } + + protected int scanRange() { + return radarRange; + } + + @Override + public void setPower(long i) { + power = i; + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("missiles")) this.scanMissiles = !this.scanMissiles; + if(data.hasKey("shells")) this.scanShells = !this.scanShells; + if(data.hasKey("players")) this.scanPlayers = !this.scanPlayers; + if(data.hasKey("smart")) this.smartMode = !this.smartMode; + if(data.hasKey("red")) this.redMode = !this.redMode; + if(data.hasKey("map")) this.showMap = !this.showMap; } AxisAlignedBB bb = null; @@ -192,8 +340,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } @@ -207,7 +354,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry The converters coming first have the highest priority */ - public static List, RadarEntry>> converters = new ArrayList(); + public static List, RadarEntry>> converters = new ArrayList(); public static List classes = new ArrayList(); public static List matchingEntities = new ArrayList(); @@ -241,21 +388,25 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public static void registerConverters() { //IRadarDetectableNT converters.add(x -> { - Entity e = x.getKey(); + Entity e = x.getX(); if(e instanceof IRadarDetectableNT) { IRadarDetectableNT detectable = (IRadarDetectableNT) e; - if(detectable.canBeSeenBy(x.getValue())) return new RadarEntry(detectable, e); + if(detectable.canBeSeenBy(x.getY()) && detectable.paramsApplicable(x.getZ())) return new RadarEntry(detectable, e); } return null; }); //IRadarDetectable, Legacy converters.add(x -> { - if(x.getKey() instanceof IRadarDetectable) return new RadarEntry((IRadarDetectable) x.getKey(), x.getKey()); + Entity e = x.getX(); + RadarScanParams params = x.getZ(); + if(e instanceof IRadarDetectable && params.scanMissiles) { + return new RadarEntry((IRadarDetectable) e, e); + } return null; }); //Players converters.add(x -> { - if(x.getKey() instanceof EntityPlayer) return new RadarEntry((EntityPlayer) x.getKey()); + if(x.getX() instanceof EntityPlayer && x.getZ().scanPlayers) return new RadarEntry((EntityPlayer) x.getX()); return null; }); } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 62580710e..fa55c200b 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -7,7 +7,7 @@ import java.util.function.BiFunction; import com.hbm.blocks.BlockDummyable; import com.hbm.entity.logic.EntityBomber; -import com.hbm.entity.missile.EntityMissileBaseAdvanced; +import com.hbm.entity.missile.EntityMissileBaseNT; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.entity.missile.EntitySiegeDropship; import com.hbm.entity.projectile.EntityBulletBaseNT; @@ -642,7 +642,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(targetMachines) { - if(e instanceof EntityMissileBaseAdvanced) return true; + if(e instanceof EntityMissileBaseNT) return true; if(e instanceof EntityMissileCustom) return true; if(e instanceof EntityMinecart) return true; if(e instanceof EntityRailCarBase) return true; diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png index 690e1b5f5fa1706b4b2f8aa6a7daad7435912487..095c54c69a8aeca9352d8d94124f6ade7da290fe 100644 GIT binary patch literal 19931 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 F?0>iMUBUnW From 5081dccb19e37808beeaeb5d7c32631f7c0910ad Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 26 Nov 2023 20:25:31 +0100 Subject: [PATCH 114/207] tweaks, fixes, radar crap --- changelog | 21 ++++++++- src/main/java/com/hbm/blocks/ModBlocks.java | 4 +- .../com/hbm/blocks/generic/BlockGlyphid.java | 43 ++++++++++++++++++ .../java/com/hbm/crafting/MineralRecipes.java | 2 +- .../entity/missile/EntityMissileBaseNT.java | 2 +- .../projectile/EntityArtilleryRocket.java | 2 +- .../projectile/EntityArtilleryShell.java | 2 +- .../hbm/inventory/gui/GUIMachineRadarNT.java | 11 ++++- .../inventory/recipes/ArcWelderRecipes.java | 6 +-- .../inventory/recipes/AssemblerRecipes.java | 2 +- .../hbm/inventory/recipes/PressRecipes.java | 2 + src/main/java/com/hbm/items/ModItems.java | 4 +- .../hbm/items/armor/ArmorTrenchmaster.java | 1 + .../com/hbm/items/machine/ItemFluidDuct.java | 2 +- .../java/com/hbm/items/tool/ItemDrone.java | 2 + .../machine/TileEntityMachineRadarNT.java | 43 +++++++++++++++--- .../machine/TileEntityMachineTurbofan.java | 2 +- .../oil/TileEntityMachineGasFlare.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- .../hbm/textures/blocks/glyphid_base_alt.png | Bin 0 -> 553 bytes .../hbm/textures/blocks/glyphid_eggs.png | Bin 0 -> 567 bytes .../hbm/textures/blocks/glyphid_eggs_alt.png | Bin 0 -> 737 bytes .../hbm/textures/blocks/glyphid_eggs_base.png | Bin 0 -> 423 bytes 24 files changed, 130 insertions(+), 27 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockGlyphid.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_base_alt.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_eggs.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_alt.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base.png diff --git a/changelog b/changelog index 9bbc6c83e..67de8712b 100644 --- a/changelog +++ b/changelog @@ -4,7 +4,7 @@ * Can be used to quickly craft standard ammo types in the 2x2 crafting grid * Can also refill empty syringes, making stimpaks * Latex - * Made from crafting dandelions into dandelion milk, then smelting it + * Can be made from dandelions or from pressing jungle wood * Replaces insulator in many recipes where electrical insulation that is potentially made from brick doesn't make sense, like rubber gas masks, jackets, tools and so on * Latex is interchangable with rubber in all recipes where it's used, but not the other way round * The old insulator is now mainly used for electrical and heat insulation as well as PWR rods @@ -12,8 +12,25 @@ ## Changed * Light oil and cracked light oil can now be refomred into large quantities of aromatic hydrocarbons a well as some reformate gas * The painsaw ability no longer drops ammo and syringes, instead it drops nitra +* Radars have been completely rewritten + * Dots will now move smoothly across the screen, instead of jittering and being bound to the pixel grid + * Radars no longer use CPU-intensive full scans of the map, instead of using an optimized search for nearby scannable entities + * There's now a dedicated toggle for detecing artillery shells + * Radars now have a local area map that can be enabled + * The map scans up to 100 points per tick, the display can show 40,000 points + * The map will scan loaded chunks instantly, unloaded chunks have a limit of 5 chunk loads per tick to prevent excessive lag + * The chunk load limit can be adjusted in the machine config file + * The map will show terrain height between Y:50 and Y:128, anything outside that range is truncated +* The turbofan's afterburner now adds a 33% efficiency bonus for every level. This means that instead of the efficiency remaining constant between levels, a tier 3 upgrade will yield double efficiency. +* Reduced the flarestack's base energy efficiency +* Trenchmaster armor is now unbreakable +* The arc welder recipe for advanced circuits now uses simple insulator instead of gold dust +* The arc welder recipes for enhanced and advanced circuits now use only 100mB of fluid instead of 250mB ## Fixed * Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer * Fixed custom machine NEI slots going out of bounds after the third slot -* Fixed bismuth billets not being oredicted, making BFB PWR rods uncraftable \ No newline at end of file +* Fixed bismuth billets not being oredicted, making BFB PWR rods uncraftable +* Fixed missile chunkloading having rounding issues, sometimes causing them to get stuck in unloaded chunks while crossing chunk borders +* Fixed drones not being listed in the creative tabs +* Fixed pre-defined fluid duct items not being being able to be placed where replacable blocks are, eg. water \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index b531674dd..f0b3ccb90 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1728,8 +1728,8 @@ public class ModBlocks { mush = new BlockMush(Material.plants).setBlockName("mush").setCreativeTab(MainRegistry.blockTab).setLightLevel(0.5F).setStepSound(Block.soundTypeGrass).setBlockTextureName(RefStrings.MODID + ":mush"); mush_block = new BlockMushHuge(Material.plants).setBlockName("mush_block").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_skin"); mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem"); - glyphid_base = new BlockBase(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F); - glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); + glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); + glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt"); plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java new file mode 100644 index 000000000..267624e28 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java @@ -0,0 +1,43 @@ +package com.hbm.blocks.generic; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class BlockGlyphid extends Block { + + public IIcon[] icons = new IIcon[2]; + + public BlockGlyphid(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + long l = (long) (x * 3129871) ^ (long)y * 116129781L ^ (long)z; + l = l * l * 42317861L + l * 11L; + int i = (int)(l >> 16 & 3L); + return icons[(int)(Math.abs(i) % this.icons.length)]; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return icons[meta % this.icons.length]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + icons[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_base"); + icons[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_alt"); + } + +} diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index 49b00e0d4..ebd11b692 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -419,7 +419,7 @@ public class MineralRecipes { GameRegistry.addRecipe(new ItemStack(ModItems.egg_balefire, 1), new Object[] { "###", "###", "###", '#', ModItems.egg_balefire_shard }); GameRegistry.addRecipe(new ItemStack(ModItems.egg_balefire_shard, 9), new Object[] { "#", '#', ModItems.egg_balefire }); GameRegistry.addRecipe(new ItemStack(ModItems.nitra, 1), new Object[] { "##", "##", '#', ModItems.nitra_small }); - GameRegistry.addRecipe(new ItemStack(ModItems.nitra_small, 9), new Object[] { "#", '#', ModItems.nitra }); + GameRegistry.addRecipe(new ItemStack(ModItems.nitra_small, 4), new Object[] { "#", '#', ModItems.nitra }); add1To9Pair(ModItems.powder_paleogenite, ModItems.powder_paleogenite_tiny); add1To9Pair(ModItems.ingot_osmiridium, ModItems.nugget_osmiridium); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index 766950a91..75a1d265b 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -247,7 +247,7 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen loadedChunks.clear(); loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX * this.motionMult()) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ * this.motionMult()) / 16D))); + //loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX * this.motionMult()) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ * this.motionMult()) / 16D))); for(ChunkCoordIntPair chunk : loadedChunks) { ForgeChunkManager.forceChunk(loaderTicket, chunk); diff --git a/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java b/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java index e8f4a6ad8..0115dbef3 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java +++ b/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java @@ -150,7 +150,7 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu loadedChunks.clear(); loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.ceil((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.ceil((this.posZ + this.motionZ) / 16D))); + //loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ) / 16D))); for(ChunkCoordIntPair chunk : loadedChunks) { ForgeChunkManager.forceChunk(loaderTicket, chunk); diff --git a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java index b03d3118f..e608b49d5 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java +++ b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java @@ -198,7 +198,7 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa loadedChunks.clear(); loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.ceil((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.ceil((this.posZ + this.motionZ) / 16D))); + //loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ) / 16D))); for(ChunkCoordIntPair chunk : loadedChunks) { ForgeChunkManager.forceChunk(loaderTicket, chunk); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java index 2be6a3266..3674c9ea9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -103,6 +103,11 @@ public class GUIMachineRadarNT extends GuiScreen { drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft - 14, guiTop + 84, 224, 0, 14, 66); + if(radar.power > 0) { + int i = (int) (radar.power * 200 / radar.maxPower); + drawTexturedModalRect(guiLeft + 8, guiTop + 221, 0, 234, i, 16); + } + if(radar.scanMissiles ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 88, 238, 4, 8, 8); if(radar.scanShells ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 98, 238, 14, 8, 8); if(radar.scanPlayers ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 108, 238, 24, 8, 8); @@ -110,6 +115,8 @@ public class GUIMachineRadarNT extends GuiScreen { if(radar.redMode ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 128, 238, 44, 8, 8); if(radar.showMap ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 138, 238, 54, 8, 8); + if(radar.power < radar.consumption) return; + if(radar.jammed) { for(int i = 0; i < 5; i++) { for(int j = 0; j < 5; j++) { @@ -128,7 +135,7 @@ public class GUIMachineRadarNT extends GuiScreen { int iZ = i / 200; byte b = radar.map[i]; if(b > 0) { - int color = ((b * 8) % 256) << 8; + int color = ((b - 50) * 255 / 78) << 8; tess.setColorOpaque_I(color); tess.addVertex(guiLeft + 8 + iX, guiTop + 18 + iZ, this.zLevel); tess.addVertex(guiLeft + 9 + iX, guiTop + 18 + iZ, this.zLevel); @@ -143,7 +150,7 @@ public class GUIMachineRadarNT extends GuiScreen { Vec3 tr = Vec3.createVectorHelper(100, 0, 0); Vec3 tl = Vec3.createVectorHelper(100, 0, 0); Vec3 bl = Vec3.createVectorHelper(0, -5, 0); - float rot = -(radar.getWorldObj().getTotalWorldTime() + f) / 20F % (float) (Math.PI * 2); + float rot = (float) -Math.toRadians(radar.prevRotation + (radar.rotation - radar.prevRotation) * f + 180F); tr.rotateAroundZ(rot); tl.rotateAroundZ(rot + 0.25F); bl.rotateAroundZ(rot); diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index d8214f5e3..b7c9be8b6 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -40,10 +40,10 @@ public class ArcWelderRecipes extends SerializableRecipe { recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), 100, 10_000L, new ComparableStack(ModItems.wire_gold, 8))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_copper), 100, 1_000L, new FluidStack(Fluids.GAS, 250), + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_copper), 100, 1_000L, new FluidStack(Fluids.GAS, 100), new ComparableStack(ModItems.circuit_aluminium, 1), new OreDictStack(NETHERQUARTZ.dust()), new ComparableStack(ModItems.wire_copper, 8))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_red_copper), 100, 2_500L, new FluidStack(Fluids.PETROLEUM, 250), - new ComparableStack(ModItems.circuit_copper, 1), new OreDictStack(GOLD.dust()), new ComparableStack(ModItems.wire_red_copper, 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_red_copper), 100, 2_500L, new FluidStack(Fluids.PETROLEUM, 100), + new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.plate_polymer), new ComparableStack(ModItems.wire_red_copper, 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_gold), 100, 10_000L, new FluidStack(Fluids.UNSATURATEDS, 250), new ComparableStack(ModItems.circuit_red_copper, 1), new OreDictStack(ANY_PLASTIC.ingot()), new ComparableStack(ModItems.wire_gold, 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_schrabidium), 100, 50_000L, new FluidStack(Fluids.SOURGAS, 250), diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 7e498b763..de360a362 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -384,7 +384,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.ams_limiter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 6), new OreDictStack(STEEL.plate(), 24), new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.crystal_diamond, 1)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_emitter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 24), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModBlocks.steel_scaffold, 40), new ComparableStack(ModItems.crystal_redstone, 5), new ComparableStack(ModBlocks.machine_lithium_battery)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_base, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 12), new OreDictStack(STEEL.plate(), 28), new ComparableStack(ModBlocks.steel_scaffold, 30), new ComparableStack(ModBlocks.steel_grate, 8), new ComparableStack(ModBlocks.barrel_steel, 2)}, 600); - makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(ANY_RUBBER.ingot(), 24), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); + makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(ANY_RUBBER.ingot(), 8), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); makeRecipe(new ComparableStack(ModBlocks.machine_forcefield, 1), new AStack[] {new OreDictStack(ALLOY.plate528(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit_targeting_tier5, 1), new ComparableStack(ModBlocks.machine_transformer, 1), },1000); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.coil_tungsten, 1), new OreDictStack(DURA.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index 76775b3b9..8c6498c8f 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -23,6 +23,7 @@ import com.hbm.items.machine.ItemStamp; import com.hbm.items.machine.ItemStamp.StampType; import com.hbm.util.Tuple.Pair; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -61,6 +62,7 @@ public class PressRecipes extends SerializableRecipe { makeRecipe(StampType.FLAT, new ComparableStack(ModItems.biomass), ModItems.biomass_compressed); makeRecipe(StampType.FLAT, new OreDictStack(ANY_COKE.gem()), ModItems.ingot_graphite); makeRecipe(StampType.FLAT, new ComparableStack(ModItems.meteorite_sword_reforged), ModItems.meteorite_sword_hardened); + makeRecipe(StampType.FLAT, new ComparableStack(Blocks.log, 1, 3), ModItems.ball_resin); makeRecipe(StampType.FLAT, new OreDictStack(COAL.dust()), DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.COAL)); makeRecipe(StampType.FLAT, new OreDictStack(LIGNITE.dust()), DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.LIGNITE)); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 925d77d11..6d7b52f9f 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4977,7 +4977,7 @@ public class ModItems { Fluids.DIESEL, Fluids.DIESEL_CRACK, Fluids.KEROSENE, Fluids.BIOFUEL, Fluids.GASOLINE, Fluids.GASOLINE_LEADED, Fluids.PETROIL, Fluids.PETROIL_LEADED, Fluids.COALGAS, Fluids.COALGAS_LEADED) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new ToolAbility.RecursionAbility(5)) - .addHitAbility(new WeaponAbility.ChainsawAbility(4)) + .addHitAbility(new WeaponAbility.ChainsawAbility(10)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("chainsaw").setTextureName(RefStrings.MODID + ":chainsaw"); schrabidium_sword = new ItemSwordAbility(150, 0, MainRegistry.tMatSchrab) @@ -5085,7 +5085,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)) - .addHitAbility(new WeaponAbility.ChainsawAbility(6)) + .addHitAbility(new WeaponAbility.ChainsawAbility(15)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim"); elec_shovel = new ItemToolAbilityPower(7.5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java index 582b44179..0036d36e6 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -20,6 +20,7 @@ public class ArmorTrenchmaster extends ArmorFSB { public ArmorTrenchmaster(ArmorMaterial material, int slot, String texture) { super(material, slot, texture); + this.setMaxDamage(0); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java index f98c79735..e6153e1f5 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidDuct.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidDuct.java @@ -110,7 +110,7 @@ public class ItemFluidDuct extends Item { ++x; } - if(!world.isAirBlock(x, y, z)) { + if(!world.getBlock(x, y, z).isReplaceable(world, x, y, z)) { return false; } } diff --git a/src/main/java/com/hbm/items/tool/ItemDrone.java b/src/main/java/com/hbm/items/tool/ItemDrone.java index 5ac0d79f0..e2c7b5ffe 100644 --- a/src/main/java/com/hbm/items/tool/ItemDrone.java +++ b/src/main/java/com/hbm/items/tool/ItemDrone.java @@ -2,6 +2,7 @@ package com.hbm.items.tool; import com.hbm.entity.item.EntityDeliveryDrone; import com.hbm.items.ItemEnumMulti; +import com.hbm.main.MainRegistry; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -12,6 +13,7 @@ public class ItemDrone extends ItemEnumMulti { public ItemDrone() { super(EnumDroneType.class, true, true); + this.setCreativeTab(MainRegistry.machineTab); } public static enum EnumDroneType { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index e90d861d0..89ef0ec5c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -34,6 +34,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.WorldServer; @@ -109,6 +110,8 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I @Override public void updateEntity() { + if(this.map == null || this.map.length != 40_000) this.map = new byte[40_000]; + if(!worldObj.isRemote) { if(worldObj.getTotalWorldTime() % 20 == 0) this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); @@ -117,7 +120,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I this.jammed = false; allocateTargets(); - if(this.lastPower != getRedPower()) worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); + if(this.lastPower != getRedPower()) { + this.markDirty(); + } + lastPower = getRedPower(); if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) != ModBlocks.muffler) { @@ -130,7 +136,6 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } if(this.showMap) { - int chunkLoadCap = 5; int chunkLoads = 0; for(int i = 0; i < 100; i++) { int index = (int) (worldObj.getTotalWorldTime() % 400) * 100 + i; @@ -141,18 +146,18 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I int z = zCoord - radarRange + iZ; if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) { - this.map[index] = (byte) worldObj.getHeightValue(x, z); + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); } else { if(this.map[index] == 0 && chunkLoads < chunkLoadCap) { worldObj.getChunkFromChunkCoords(x >> 4, z >> 4); - this.map[index] = (byte) worldObj.getHeightValue(x, z); + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); chunkLoads++; } } } } - this.networkPackNT(25); + this.networkPackNT(50); } else { prevRotation = rotation; if(power > 0) rotation += 5F; @@ -212,12 +217,38 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } } } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.scanMissiles = nbt.getBoolean("scanMissiles"); + this.scanShells = nbt.getBoolean("scanShells"); + this.scanPlayers = nbt.getBoolean("scanPlayers"); + this.smartMode = nbt.getBoolean("smartMode"); + this.redMode = nbt.getBoolean("redMode"); + this.showMap = nbt.getBoolean("showMap"); + if(nbt.hasKey("map")) this.map = nbt.getByteArray("map"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setBoolean("scanMissiles", scanMissiles); + nbt.setBoolean("scanShells", scanShells); + nbt.setBoolean("scanPlayers", scanPlayers); + nbt.setBoolean("smartMode", smartMode); + nbt.setBoolean("redMode", redMode); + nbt.setBoolean("showMap", showMap); + nbt.setByteArray("map", map); + } protected void allocateTargets() { this.entries.clear(); if(this.yCoord < radarAltitude) return; - if(this.power <= consumption) return; + if(this.power < consumption) return; this.power -= consumption; int scan = this.scanRange(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 53e056569..e1c3d08ba 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -162,7 +162,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem if(amountToBurn > 0) { this.wasOn = true; this.tank.setFill(this.tank.getFill() - amountToBurn); - this.power += burnValue * amountToBurn; + this.power += burnValue * amountToBurn * (1 + Math.min(this.afterburner / 3D, 4)); if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * amountToBurn); } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index 39f928faf..b8f52817c 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -133,7 +133,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements int eject = Math.min(maxBurn, tank.getFill()); tank.setFill(tank.getFill() - eject); - int penalty = 2; + int penalty = 5; if(!tank.getTankType().hasTrait(FT_Gaseous.class) && !tank.getTankType().hasTrait(FT_Gaseous_ART.class)) penalty = 10; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index f8684f74d..0d3763b16 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1156,7 +1156,7 @@ item.balefire_and_steel.name=Balefire-Zeug item.balefire_scrambled.name=Rühr-Balefire-Ei item.ball_dynamite.name=Dynamit item.ball_fireclay.name=Schamott -item.ball_resin.name=Löwenzahn-Kautschuk +item.ball_resin.name=Kautschuk item.ball_tatb.name=TATB item.ball_tnt.name=TNT item.ballistic_gauntlet.name=Ballistischer Panzerhandschuh diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c8dbdf375..f45980c13 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1810,7 +1810,7 @@ item.balefire_and_steel.name=Balefire and Steel item.balefire_scrambled.name=Scrambled Balefire Egg item.ball_dynamite.name=Dynamite item.ball_fireclay.name=Fireclay -item.ball_resin.name=Dandelion Milk +item.ball_resin.name=Latex item.ball_tatb.name=TATB item.ball_tnt.name=TNT item.ballistic_gauntlet.name=Ballistic Gauntlet diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base_alt.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..a0fa4d8e649d32073d2733c269a8a284e8e04625 GIT binary patch literal 553 zcmV+^0@nSBP)17HfcK#eqL%xkvzLnwBUED9w(hX)(6r`sS8dtnmN@ zL{8vOX}bey7GrEj)3h!YMF9ZIMM7Pf9-yuarP;Y8t$a7h`>S^p#iNTSI%F1W>dIj4 z5l@Q0{^}Fb@fi)R>jaSJb8_ai-2rL1-fW4YfRPlZ<1?<_h6B;8JyKVOqIjh34g~&` zx-xwE_T7Pd(p5U1a#U(Epa!^a$r~j)9B`LA&0=SnR=yMZa+SMD6CL&wEEfrzhZ3Tp zNCKE1zP!BuJR`edESd7s*6ac*8bd97~45O0a9v$*LDZ$%8=*t0avlf*lu90 zwMVq_dqC)ITyM6lH(M^2ncG6?EL>r@?(+6>@i+V=s{VMWX@Bo|^SW2~{M_fb|HF9f z4T{q&=9RD5?=7QKOQ7HTyZge?NVE7^vFt->c6d<~I8Mt&^0fOaoEzeTfJ(7eK3<|j rO0y%;A=Vz9~Ns%Sl*&H^n(~D`cBx-_HO3f8Kk4Wi=QT9G~uZ zPQBg19JV;;NRt?V-gE&FFk=h=T5F>2cusdb_Z*nR7Jz!YbAszy6Cp&vwAKJbLWtKw zV@Q)2=N!7$3`E8loO9vZ7yHJMAIn-BNX%i2t~CL$)&^qd9NA<@Z@R!YuBJ(hQi_ZD zPk^_>n~XGxkv0t}}?-yT- zm*=y9uLh&=zl=xzZfO#qsBf*sIfoD;j9hlZmXjNxgMg|J8|+1}j*|9z7`qtC&S zAY$18f4BZ@Nxj|S_qUHn@BiZUN|Tt~ZikeH%6{D{yaQgWvMajQz|$rRSUJ*KYowH?6O@7S8QFYd5;O(-Cl>c?>VR8&o?vw z@Av;EGT%4i(O4am7KvQ~RnDWe#vaZA&^g@-KxJb9dpL(u3IHi3(T+(AYjh^K169rg z(7ZQ;*>yM6<4qHorWw{sDFHC5ddNSh6pQ^f)~Kd=Zw6If4fV>#0H$e%mq{tL$an^T#eO@q zu8Vn;QlZ^o-(Hv_QBo}2zJLL6WITfrGXStgXIQ$_hmDD}puI4M<2a2p60{fQutsM%dG86)pig@^hfJlZzW*4)3+UTVw*aWsYhld0f7P&` zZV@|s==jY_rGn>qY}TLi?Z-cKF^}hY#6Nel@ANCuUY&Qv{gj?<@$=PD*8c9)835-V zpK2tqL%U}-OJbMc?X|&1_8SDebTLnqE&IfNpF;KZH7?CDCeHkBdzy^ZbdZF*+2 ze3@S-b?goCcpR-Y2d%e0#NgFnD&tKFR5?%PhW}53!RnZ_SnT)fI8EYWp^-wKff^wIU+i_l>F|BJ&*nY$0Wx z-QBsai&6^iPAP@^z7Y}jeV_A}Qr;d!0;~ID4BVYaDVpLw@GTw#oaZ^sNh!@ATWeg` z#dl2;*92m=TI+27&fd&;yN*_xU36xTJMB}&2l{9`1g|QRv&R@dw4M{WV R-5vk{002ovPDHLkV1l*_x9$J{ literal 0 HcmV?d00001 From 89447441425108a16c8fa630b6393387fbd5779d Mon Sep 17 00:00:00 2001 From: HbmMods Date: Mon, 20 Nov 2023 10:58:43 +0100 Subject: [PATCH 115/207] Merge pull request #1247 from Ice-Arrow/master Make the research reactor compatible with IC2's water changes --- .../com/hbm/tileentity/machine/TileEntityReactorResearch.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index 3e17bf1e0..a6ee7c13d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -26,6 +26,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -211,6 +212,9 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements Block b = worldObj.getBlock(x, y, z); + if((b == Blocks.water || b == Blocks.flowing_water) && worldObj.getBlockMetadata(x, y, z) == 0) + return true; + if(b == ModBlocks.block_lead || b == ModBlocks.block_desh || b == ModBlocks.reactor_research || b == ModBlocks.machine_reactor_breeding) return true; From a28156065f001ec66086776cd6e4b847d58957c7 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 20 Nov 2023 15:58:21 +0100 Subject: [PATCH 116/207] nuclear blast furnace IO config --- gradle.properties | 17 +++++----- .../java/com/hbm/crafting/ToolRecipes.java | 2 ++ .../ContainerMachineDiFurnaceRTG.java | 23 +++++++++++-- .../inventory/gui/GUIMachineDiFurnaceRTG.java | 21 ++++++++++++ .../machine/TileEntityDiFurnaceRTG.java | 34 ++++++++++++++++--- 5 files changed, 82 insertions(+), 15 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5d374e4ff..a60f1e9c9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,11 +8,12 @@ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion al \ (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures,\ \ various machines, models, weapons), Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\ \ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\ - \ (calculator, chunk-based fallout, bendable cranes), haru315 (spiral point algorithm), Sten89 (models), Pixelguru26\ - \ (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings), Nos (models),\ - \ Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie (reacher radiation function),\ - \ Toshayo (satellite loot system, project settings, gradle curse task), Silly541 (config for safe ME drives),\ - \ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen\ - \ (project settings), Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid,\ - \ particle emitter), sdddddf80 (recipe configs, chinese localization, custom machine holograms),\ - \ SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC), 70k (textures), Maksymisio (polish localization) + \ (calculator, chunk-based fallout, bendable cranes, pipe improvements), haru315 (spiral point algorithm),\ + \ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002\ + \ (project settings), Nos (models), Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie\ + \ (reacher radiation function), Toshayo (satellite loot system, project settings, gradle curse task), Silly541\ + \ (config for safe ME drives), Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1\ + \ (OpenComputers integration), martemen (project settings), Pvndols (thorium fuel recipe, gas turbine),\ + \ JamesH2 (blood mechanics, nitric acid, particle emitter), sdddddf80 (recipe configs, chinese localization,\ + \ custom machine holograms, I18n improvements), SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC),\ + \ 70k (textures), Maksymisio (polish localization) Ice-Arrow (research reactor tweaks) diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 4af76365c..c0a1e2f74 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -6,6 +6,7 @@ import com.hbm.inventory.fluid.Fluids; import static com.hbm.inventory.OreDictManager.*; +import com.hbm.items.ItemEnums.EnumPlantType; import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; @@ -88,6 +89,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.euphemium_stopper, 1), new Object[] { "I", "S", "S", 'I', EUPH.ingot(), 'S', KEY_STICK }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.crowbar, 1), new Object[] { "II", " I", " I", 'I', STEEL.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bottle_opener, 1), new Object[] { "S", "P", 'S', STEEL.plate(), 'P', KEY_PLANKS }); + CraftingManager.addRecipeAuto(new ItemStack(Items.saddle, 1), new Object[] { "LLL", "LRL", " S ", 'S', STEEL.ingot(), 'L', Items.leather, 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE) }); //Matches CraftingManager.addRecipeAuto(new ItemStack(ModItems.matchstick, 16), new Object[] { "I", "S", 'I', S.dust(), 'S', KEY_STICK }); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineDiFurnaceRTG.java b/src/main/java/com/hbm/inventory/container/ContainerMachineDiFurnaceRTG.java index 4f0b39b00..e32e9197c 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineDiFurnaceRTG.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineDiFurnaceRTG.java @@ -1,7 +1,7 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotCraftingOutput; -import com.hbm.tileentity.IRadioisotopeFuel; +import com.hbm.items.machine.ItemRTGPellet; import com.hbm.tileentity.machine.TileEntityDiFurnaceRTG; import net.minecraft.entity.player.EntityPlayer; @@ -45,6 +45,25 @@ public class ContainerMachineDiFurnaceRTG extends Container { return bFurnace.isUseableByPlayer(player); } + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + if(index >= 0 && index < 2 && button == 1 && mode == 0) { + Slot slot = this.getSlot(index); + if(!slot.getHasStack() && player.inventory.getItemStack() == null) { + if(!player.worldObj.isRemote) { + if(index == 0) bFurnace.sideUpper = (byte) ((bFurnace.sideUpper + 1) % 6); + if(index == 1) bFurnace.sideLower = (byte) ((bFurnace.sideLower + 1) % 6); + + bFurnace.markDirty(); + } + return null; + } + } + + return super.slotClick(index, button, mode, player); + } + @Override public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; @@ -58,7 +77,7 @@ public class ContainerMachineDiFurnaceRTG extends Container { if(!this.mergeItemStack(var5, 9, this.inventorySlots.size(), true)) { return null; } - } else if(var5.getItem() instanceof IRadioisotopeFuel) { + } else if(var5.getItem() instanceof ItemRTGPellet) { if(!this.mergeItemStack(var5, 3, 9, false)) return null; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineDiFurnaceRTG.java b/src/main/java/com/hbm/inventory/gui/GUIMachineDiFurnaceRTG.java index 0345dc6a4..36606b0f4 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineDiFurnaceRTG.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineDiFurnaceRTG.java @@ -1,5 +1,6 @@ package com.hbm.inventory.gui; +import java.util.Arrays; import java.util.List; import org.lwjgl.opengl.GL11; @@ -14,8 +15,11 @@ import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.util.ForgeDirection; public class GUIMachineDiFurnaceRTG extends GuiInfoContainer { public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/gui/processing/gui_rtg_difurnace.png"); @@ -47,6 +51,23 @@ public class GUIMachineDiFurnaceRTG extends GuiInfoContainer { } this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 15, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, pelletText); + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + for(int i = 0; i < 2; i++) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); + + if(this.isMouseOverSlot(slot, mouseX, mouseY)) { + + String label = EnumChatFormatting.YELLOW + "Accepts items from: "; + byte dir = i == 0 ? bFurnace.sideUpper : bFurnace.sideLower; + label += ForgeDirection.getOrientation(dir); + + this.func_146283_a(Arrays.asList(new String[] { label }), mouseX, mouseY - (slot.getHasStack() ? 15 : 0)); + + return; + } + } + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java index 7b5d5e485..7c7891802 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java @@ -4,6 +4,7 @@ import com.hbm.blocks.machine.MachineDiFurnaceRTG; import com.hbm.inventory.container.ContainerMachineDiFurnaceRTG; import com.hbm.inventory.gui.GUIMachineDiFurnaceRTG; import com.hbm.inventory.recipes.BlastFurnaceRecipes; +import com.hbm.items.machine.ItemRTGPellet; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.RTGUtil; @@ -25,6 +26,8 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU private static final short timeRequired = 1200; private static final int[] rtgIn = new int[] {3, 4, 5, 6, 7, 8}; private String name; + public byte sideUpper = 1; + public byte sideLower = 1; public TileEntityDiFurnaceRTG() { super(9); @@ -70,6 +73,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU NBTTagCompound data = new NBTTagCompound(); data.setShort("progress", progress); data.setShort("speed", processSpeed); + data.setByteArray("modes", new byte[] {(byte) sideUpper, (byte) sideLower}); networkPack(data, 10); } @@ -77,6 +81,9 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU public void networkUnpack(NBTTagCompound nbt) { progress = nbt.getShort("progress"); processSpeed = nbt.getShort("speed"); + byte[] modes = nbt.getByteArray("modes"); + this.sideUpper = modes[0]; + this.sideLower = modes[1]; } private void processItem() { @@ -105,6 +112,10 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU super.readFromNBT(nbt); progress = nbt.getShort("progress"); processSpeed = nbt.getShort("speed"); + + byte[] modes = nbt.getByteArray("modes"); + this.sideUpper = modes[0]; + this.sideLower = modes[1]; } @Override @@ -112,6 +123,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU super.writeToNBT(nbt); nbt.setShort("progress", progress); nbt.setShort("speed", processSpeed); + nbt.setByteArray("modes", new byte[] {(byte) sideUpper, (byte) sideLower}); } public int getDiFurnaceProgressScaled(int i) { @@ -159,21 +171,33 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU return 64; } + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + if(i == 0 && this.sideUpper != j) return false; + if(i == 1 && this.sideLower != j) return false; + + return this.isItemValidForSlot(i, itemStack); + } + @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(i == 2) { - return false; - } - return true; + if(i == 2) return false; + if(stack.getItem() instanceof ItemRTGPellet) return i > 2; + return !(stack.getItem() instanceof ItemRTGPellet); } @Override public int[] getAccessibleSlotsFromSide(int side) { - return side == 0 ? new int[] {2} : side == 1 ? new int[] {0} : new int[] {1}; + return new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8}; } @Override public boolean canExtractItem(int slot, ItemStack stack, int side) { + + if(slot > 2) { + return !(stack.getItem() instanceof ItemRTGPellet); + } + return slot == 2; } From 927abb9066bda079f8b1f143245a9758ed0a1280 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 21 Nov 2023 16:39:36 +0100 Subject: [PATCH 117/207] guh --- .../recipes/GasCentrifugeRecipes.java | 80 ++++++++---------- .../machine/TileEntityMachineGasCent.java | 69 ++++----------- .../textures/gui/machine/gui_radar_link.png | Bin 0 -> 1491 bytes .../assets/hbm/textures/items/radar_link.png | Bin 0 -> 230 bytes 4 files changed, 51 insertions(+), 98 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_radar_link.png create mode 100644 src/main/resources/assets/hbm/textures/items/radar_link.png diff --git a/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java index 7b7743f2c..c352c085d 100644 --- a/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.Map.Entry; import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; @@ -16,63 +17,47 @@ import net.minecraft.item.ItemStack; public class GasCentrifugeRecipes { - public static enum PseudoFluidType { - NONE (0, 0, null, false, (ItemStack[])null), + public static class PseudoFluidType { - HEUF6 (300, 0, NONE, true, new ItemStack(ModItems.nugget_u238, 2), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 1)), - MEUF6 (200, 100, HEUF6, false, new ItemStack(ModItems.nugget_u238, 1)), - LEUF6 (300, 200, MEUF6, false, new ItemStack(ModItems.nugget_u238, 1), new ItemStack(ModItems.fluorite, 1)), - NUF6 (400, 300, LEUF6, false, new ItemStack(ModItems.nugget_u238, 1)), + public static HashMap types = new HashMap(); - PF6 (300, 0, NONE, false, new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.fluorite, 1)), + public static PseudoFluidType NONE = new PseudoFluidType("NONE", 0, 0, null, false, (ItemStack[])null); - MUD_HEAVY (500, 0, NONE, false, new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.dust, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1)), - MUD (1000, 500, MUD_HEAVY, false, new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.dust, 1)); + public static PseudoFluidType HEUF6 = new PseudoFluidType("HEUF6", 300, 0, NONE, true, new ItemStack(ModItems.nugget_u238, 2), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 1)); + public static PseudoFluidType MEUF6 = new PseudoFluidType("MEUF6", 200, 100, HEUF6, false, new ItemStack(ModItems.nugget_u238, 1)); + public static PseudoFluidType LEUF6 = new PseudoFluidType("LEUF6", 300, 200, MEUF6, false, new ItemStack(ModItems.nugget_u238, 1), new ItemStack(ModItems.fluorite, 1)); + public static PseudoFluidType NUF6 = new PseudoFluidType("NUF6", 400, 300, LEUF6, false, new ItemStack(ModItems.nugget_u238, 1)); - //TODO for bob: consider more fluid types - //Schraranium Trisulfide for more schrab-containing, pre-SILEX processing using the crystals? - //Gaseous Nuclear Waste: because why not? Large inputs could output Xe-135 and maybe some other fun stuff... - // + public static PseudoFluidType PF6 = new PseudoFluidType("PF6", 300, 0, NONE, false, new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.fluorite, 1)); + public static PseudoFluidType MUD_HEAVY = new PseudoFluidType("MUD_HEAVY", 500, 0, NONE, false, new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.dust, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1)); + public static PseudoFluidType MUD = new PseudoFluidType("MUD", 1000, 500, MUD_HEAVY, false, new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.dust, 1)); + + public String name; int fluidConsumed; int fluidProduced; PseudoFluidType outputFluid; boolean isHighSpeed; ItemStack[] output; - PseudoFluidType(int fluidConsumed, int fluidProduced, PseudoFluidType outputFluid, boolean isHighSpeed, ItemStack... output) { + PseudoFluidType(String name, int fluidConsumed, int fluidProduced, PseudoFluidType outputFluid, boolean isHighSpeed, ItemStack... output) { + this.name = name; this.fluidConsumed = fluidConsumed; this.fluidProduced = fluidProduced; this.outputFluid = outputFluid; this.isHighSpeed = isHighSpeed; this.output = output; + types.put(name, this); } - public int getFluidConsumed() { - return this.fluidConsumed; - } + public int getFluidConsumed() { return this.fluidConsumed; } + public int getFluidProduced() { return this.fluidProduced; } + public PseudoFluidType getOutputType() { return this.outputFluid; } + public ItemStack[] getOutput() { return this.output; } + public boolean getIfHighSpeed() { return this.isHighSpeed; } + public String getName() { return I18nUtil.resolveKey("hbmpseudofluid.".concat(this.name.toLowerCase(Locale.US))); } - public int getFluidProduced() { - return this.fluidProduced; - } - - public PseudoFluidType getOutputType() { - return this.outputFluid; - } - - public String getName() { - return I18nUtil.resolveKey("hbmpseudofluid.".concat(this.toString().toLowerCase(Locale.US))); - } - - public boolean getIfHighSpeed() { - return this.isHighSpeed; - } - - public ItemStack[] getOutput() { - return this.output; - } - - }; + } /* Recipe NEI Handler */ //Fluid input; ItemStack[] outputs, isHighSpeed, # of centrifuges @@ -102,14 +87,17 @@ public class GasCentrifugeRecipes { return recipes; } + public static HashMap fluidConversions = new HashMap(); + public static void register() { - gasCent.put(new FluidStack(1200, Fluids.UF6), new Object[] { new ItemStack[] - {new ItemStack(ModItems.nugget_u238, 11), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 4)}, true, 4 }); - gasCent.put(new FluidStack(1200, Fluids.UF6), new Object[] { new ItemStack[] - {new ItemStack(ModItems.nugget_u238, 6), new ItemStack(ModItems.nugget_uranium_fuel, 6), new ItemStack(ModItems.fluorite, 4)}, false, 2 }); - gasCent.put(new FluidStack(900, Fluids.PUF6), new Object[] { new ItemStack[] - {new ItemStack(ModItems.nugget_pu238, 3), new ItemStack(ModItems.nugget_pu_mix, 6), new ItemStack(ModItems.fluorite, 3)}, false, 1 }); - gasCent.put(new FluidStack(1000, Fluids.WATZ), new Object[] { new ItemStack[] - {new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1), new ItemStack(ModItems.dust, 2)}, false, 2 }); + + fluidConversions.put(Fluids.UF6, PseudoFluidType.NUF6); + fluidConversions.put(Fluids.PUF6, PseudoFluidType.PF6); + fluidConversions.put(Fluids.WATZ, PseudoFluidType.MUD); + + gasCent.put(new FluidStack(1200, Fluids.UF6), new Object[] { new ItemStack[] {new ItemStack(ModItems.nugget_u238, 11), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 4)}, true, 4 }); + gasCent.put(new FluidStack(1200, Fluids.UF6), new Object[] { new ItemStack[] {new ItemStack(ModItems.nugget_u238, 6), new ItemStack(ModItems.nugget_uranium_fuel, 6), new ItemStack(ModItems.fluorite, 4)}, false, 2 }); + gasCent.put(new FluidStack(900, Fluids.PUF6), new Object[] { new ItemStack[] {new ItemStack(ModItems.nugget_pu238, 3), new ItemStack(ModItems.nugget_pu_mix, 6), new ItemStack(ModItems.fluorite, 3)}, false, 1 }); + gasCent.put(new FluidStack(1000, Fluids.WATZ), new Object[] { new ItemStack[] {new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1), new ItemStack(ModItems.dust, 2)}, false, 2 }); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index ac797a691..eb993e4f7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -1,14 +1,12 @@ package com.hbm.tileentity.machine; -import java.util.HashMap; - import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerMachineGasCent; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineGasCent; +import com.hbm.inventory.recipes.GasCentrifugeRecipes; import com.hbm.inventory.recipes.GasCentrifugeRecipes.PseudoFluidType; import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; @@ -36,7 +34,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; //epic! -public class TileEntityMachineGasCent extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { +public class TileEntityMachineGasCent extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IGUIProvider { public long power; public int progress; @@ -50,17 +48,9 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I private static final int[] slots_io = new int[] { 0, 1, 2, 3 }; - private static HashMap fluidConversions = new HashMap(); - - static { - fluidConversions.put(Fluids.UF6, PseudoFluidType.NUF6); - fluidConversions.put(Fluids.PUF6, PseudoFluidType.PF6); - fluidConversions.put(Fluids.WATZ, PseudoFluidType.MUD); - } - public TileEntityMachineGasCent() { super(7); - tank = new FluidTank(Fluids.UF6, 2000, 0); + tank = new FluidTank(Fluids.UF6, 2000); inputTank = new PseudoFluidTank(PseudoFluidType.NUF6, 8000); outputTank = new PseudoFluidTank(PseudoFluidType.LEUF6, 8000); } @@ -180,10 +170,11 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I this.power = data.getLong("power"); this.progress = data.getInteger("progress"); this.isProgressing = data.getBoolean("isProgressing"); - this.inputTank.setTankType(PseudoFluidType.valueOf(data.getString("inputType"))); - this.outputTank.setTankType(PseudoFluidType.valueOf(data.getString("outputType"))); + this.inputTank.setTankType(PseudoFluidType.types.get(data.getString("inputType"))); + this.outputTank.setTankType(PseudoFluidType.types.get(data.getString("outputType"))); this.inputTank.setFill(data.getInteger("inputFill")); this.outputTank.setFill(data.getInteger("outputFill")); + this.tank.readFromNBT(data, "t"); } @Override @@ -195,9 +186,8 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I power = Library.chargeTEFromItems(slots, 4, power, maxPower); setTankType(5); - tank.updateTank(this); - if(fluidConversions.containsValue(inputTank.getTankType())) { + if(GasCentrifugeRecipes.fluidConversions.containsValue(inputTank.getTankType())) { attemptConversion(); } @@ -246,8 +236,9 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I data.setBoolean("isProgressing", isProgressing); data.setInteger("inputFill", inputTank.getFill()); data.setInteger("outputFill", outputTank.getFill()); - data.setString("inputType", inputTank.getTankType().toString()); - data.setString("outputType", outputTank.getTankType().toString()); + data.setString("inputType", inputTank.getTankType().name); + data.setString("outputType", outputTank.getTankType().name); + tank.writeToNBT(data, "t"); this.networkPack(data, 50); PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); @@ -258,7 +249,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(fluidConversions.containsValue(inputTank.getTankType())) { + if(GasCentrifugeRecipes.fluidConversions.containsValue(inputTank.getTankType())) { this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -301,10 +292,10 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I if(slots[in] != null && slots[in].getItem() instanceof IItemFluidIdentifier) { IItemFluidIdentifier id = (IItemFluidIdentifier) slots[in].getItem(); - FluidType newType = id.getType(null, 0, 0, 0, slots[in]); + FluidType newType = id.getType(worldObj, xCoord, yCoord, zCoord, slots[in]); if(tank.getTankType() != newType) { - PseudoFluidType pseudo = fluidConversions.get(newType); + PseudoFluidType pseudo = GasCentrifugeRecipes.fluidConversions.get(newType); if(pseudo != null) { inputTank.setTankType(pseudo); @@ -316,32 +307,6 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I } } - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == tank.getTankType()) - tank.setFill(fill); - } - - @Override - public int getFluidFill(FluidType type) { - return tank.getTankType() == type ? tank.getFill() : 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - return tank.getTankType() == type ? tank.getMaxFill() : 0; - } - @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] { tank }; @@ -413,16 +378,16 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I public void writeToNBT(NBTTagCompound nbt, String s) { nbt.setInteger(s, fluid); nbt.setInteger(s + "_max", maxFluid); - nbt.setString(s + "_type", type.toString()); + nbt.setString(s + "_type", type.name); } //Called by TE to load fillstate public void readFromNBT(NBTTagCompound nbt, String s) { fluid = nbt.getInteger(s); int max = nbt.getInteger(s + "_max"); - if(max > 0) - maxFluid = nbt.getInteger(s + "_max"); - type = PseudoFluidType.valueOf(nbt.getString(s + "_type")); + if(max > 0) maxFluid = nbt.getInteger(s + "_max"); + type = PseudoFluidType.types.get(nbt.getString(s + "_type")); + if(type == null) type = PseudoFluidType.NONE; } /* ______ ______ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_link.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_link.png new file mode 100644 index 0000000000000000000000000000000000000000..dafca0ee5008dd68020698ad8aa9b3db38d24317 GIT binary patch literal 1491 zcmcgsTTqi%5I%oECaB?}h~+9u)mRZ>kZUDG_(cN9%_|xt2!a+7j0U3+2tJS?SgaO7 z6e1`fqM&FRfsh16C{Pj@VnPX-NMitrglka2VE<10(3$eweff62-E+?De!C|pEMyO6 zx#e;I0EQ3%M*sjJE(Fj92oT8+;t|k4=S$d+Ml2m2#{^*66#~3#KlRSITuvDXG&AUN zc_b$1qLX?8B;<9Dtr^^HZ_l5QGhp|_roKLU*FDns{l9*))1NtYAKIJaQ%t8}6YB)e zPP)hS?HKS`2n)7`no2*cdw=G~))4&)cy zvME1DhU@}VS^(&+`rzA5z|I*0Iffu07~qeiz^c{YTG8L3xp7nDX=Qutj%Z>rW`W}y>OP_-@}~G< zWR+Z*bb?m;)JW?+YmMgwd2n*6UL`#4Pmv2@o@LWTCYJ5W^l!9Y@oml)R z=T*kfOGgRMDL*`jtnz)G0vVgi)%yI_0hm#9UY8EQP2Ti{K6+#I*fRhkea+Il=q{c8KO5Y$|W*2gyAJq`G! zWr;*059>BnuVifH8`;84Ritr_+}YYFJ*L z>L-KmYz1L@tO0Fu^sGiyE$)b9sLU~Xj-JDc0V>C9;h~>RO&&@dm`))}%4}HzdaJn> zw594ok@j=B4i~YMRnnmhUa+y|<%$nk?_1Po(Mv0bi25{YFJ{=+e&G*_g2$j)oP57_ zSFkBN^w`HFt2N+U-JE?xjO^fNuavF=()8G|wSonb%?;GuK*tic?^>R2;y~FMA zz>8E{(su|ktd(aIpdM+@i2mg*WftElG~nx@rG(0I^i)NQxfql7oW34xkUtYGjA zAIXWz4MjPYtSKVaYG-E`B~R7WE&WxAEWNi={>$ht3*yR_Pxe1Uk1^7l$8O%qX#tbr zA=EQQP=A3`DrFxUs!q>kMg*Qhw&^r6pmH4gc|yUjYuw=US|&RR!;xv;bG1#-?E?~2 zW#6Z**s0Jyc!w!Ngssqhwg@lAG88^tBZYiU7w=26P9dx(f70>o*WGJ+q|*gmJ(_=3 zIWbT2Gj6a*rde6x(sY=uZ>pxywF@T&Rsr2Z`AWJ1d=T{vU4zfr#( pWD;I+)+n3aX1qid|38Iy{0f~HqLP?~M{NFjov=FuuJt8d{u9DUdzJtI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/radar_link.png b/src/main/resources/assets/hbm/textures/items/radar_link.png new file mode 100644 index 0000000000000000000000000000000000000000..274181b4b59a71aca94b41b1935bdf7123ff0a21 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf!p)=jVDEXGWhU0oLzEk~iYe5# z&G6#2$uHj~+NW-0XTRjqD%l+EGs$PARy7DPedf6AbX01SlZy)P;SY7kCA6I*muOD^ a-!5)uWt*n?E>s=pPzFy|KbLh*2~7Y Date: Wed, 22 Nov 2023 15:26:56 +0100 Subject: [PATCH 118/207] more missile fun --- .../missile/EntityMissileAntiBallistic.java | 7 + .../entity/missile/EntityMissileBaseNT.java | 12 +- .../entity/missile/EntityMissileCustom.java | 332 +++--------------- .../hbm/textures/items/coal_eternal.png | Bin 0 -> 429 bytes 4 files changed, 70 insertions(+), 281 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/coal_eternal.png diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index 5d6e40d2a..40083b324 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -16,6 +16,13 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; +/* + * COME ON + * STEP 1: GET 24 EGGS + * STEP 2: FUCK EVERY EGG + * STEP 3: BLOW UP ALL THE FUCKING EGGS + * AND FROM THE ASHES THE MOTHER OF ALL OMELETTES WILL BE BORN! + */ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectable { int activationTimer; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index 75a1d265b..243835d76 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -65,8 +65,8 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen @Override protected void entityInit() { + super.entityInit(); init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); - this.dataWatcher.addObject(8, Integer.valueOf(this.health)); } @Override @@ -112,8 +112,7 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen loadNeighboringChunks((int) Math.floor(posX / 16), (int) Math.floor(posZ / 16)); } else { - Vec3 vec = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); - MainRegistry.proxy.particleControl(posX - vec.xCoord, posY - vec.yCoord, posZ - vec.zCoord, 2); + this.spawnContrail(); } float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); @@ -123,6 +122,11 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen while(this.rotationYaw - this.prevRotationYaw < -180.0F) this.prevRotationYaw -= 360.0F; while(this.rotationYaw - this.prevRotationYaw >= 180.0F) this.prevRotationYaw += 360.0F; } + + protected void spawnContrail() { + Vec3 vec = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); + MainRegistry.proxy.particleControl(posX - vec.xCoord, posY - vec.yCoord, posZ - vec.zCoord, 2); + } @Override public void readEntityFromNBT(NBTTagCompound nbt) { @@ -180,7 +184,7 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen } } - private void killMissile() { + protected void killMissile() { ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); ExplosionLarge.spawnMissileDebris(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 0.25, getDebris(), getDebrisRareDrop()); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index 0fed51411..c8ed518e2 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -21,99 +21,43 @@ import com.hbm.items.weapon.ItemMissile.WarheadType; import com.hbm.main.MainRegistry; import api.hbm.entity.IRadarDetectable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; -import net.minecraft.init.Blocks; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; -import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.ForgeChunkManager.Type; -public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarDetectable { +public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLoader, IRadarDetectable { - int startX; - int startZ; - int targetX; - int targetZ; - double velocity; - double decelY; - double accelXZ; - float fuel; - float consumption; - private Ticket loaderTicket; - public int health = 50; - MissileStruct template; + protected float fuel; + protected float consumption; - public EntityMissileCustom(World p_i1582_1_) { - super(p_i1582_1_); - this.ignoreFrustumCheck = true; - startX = (int) posX; - startZ = (int) posZ; - targetX = (int) posX; - targetZ = (int) posZ; - } - - public boolean canBeCollidedWith() { - return true; - } - - public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) { - if(this.isEntityInvulnerable()) { - return false; - } else { - if(!this.isDead && !this.worldObj.isRemote) { - health -= p_70097_2_; - - if(this.health <= 0) { - this.setDead(); - this.killMissile(); - } - } - - return true; - } - } - - private void killMissile() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); - ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); + public EntityMissileCustom(World world) { + super(world); } public EntityMissileCustom(World world, float x, float y, float z, int a, int b, MissileStruct template) { super(world); this.ignoreFrustumCheck = true; - /* - * this.posX = x; this.posY = y; this.posZ = z; - */ this.setLocationAndAngles(x, y, z, 0, 0); startX = (int) x; startZ = (int) z; targetX = a; targetZ = b; - this.motionY = 2; - - this.template = template; - - this.dataWatcher.updateObject(9, Item.getIdFromItem(template.warhead)); - this.dataWatcher.updateObject(10, Item.getIdFromItem(template.fuselage)); - if(template.fins != null) - this.dataWatcher.updateObject(11, Item.getIdFromItem(template.fins)); - else - this.dataWatcher.updateObject(11, Integer.valueOf(0)); - this.dataWatcher.updateObject(12, Item.getIdFromItem(template.thruster)); Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); accelXZ = decelY = 1 / vector.lengthVector(); decelY *= 2; + velocity = 0; - velocity = 0.0; + this.dataWatcher.updateObject(9, Item.getIdFromItem(template.warhead)); + this.dataWatcher.updateObject(10, Item.getIdFromItem(template.fuselage)); + this.dataWatcher.updateObject(12, Item.getIdFromItem(template.thruster)); + if(template.fins != null) { + this.dataWatcher.updateObject(11, Item.getIdFromItem(template.fins)); + } else { + this.dataWatcher.updateObject(11, Integer.valueOf(0)); + } ItemMissile fuselage = (ItemMissile) template.fuselage; ItemMissile thruster = (ItemMissile) template.thruster; @@ -125,43 +69,24 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD } @Override - protected void entityInit() { - init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); - this.dataWatcher.addObject(8, Integer.valueOf(this.health)); - - if(template != null) { - this.dataWatcher.addObject(9, Integer.valueOf(Item.getIdFromItem(template.warhead))); - this.dataWatcher.addObject(10, Integer.valueOf(Item.getIdFromItem(template.fuselage))); - - if(template.fins != null) - this.dataWatcher.addObject(11, Integer.valueOf(Item.getIdFromItem(template.fins))); - else - this.dataWatcher.addObject(11, Integer.valueOf(0)); - - this.dataWatcher.addObject(12, Integer.valueOf(Item.getIdFromItem(template.thruster))); - } else { - this.dataWatcher.addObject(9, Integer.valueOf(0)); - this.dataWatcher.addObject(10, Integer.valueOf(0)); - this.dataWatcher.addObject(11, Integer.valueOf(0)); - this.dataWatcher.addObject(12, Integer.valueOf(0)); - } + protected void killMissile() { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); + ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); } @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { - motionX = nbt.getDouble("moX"); - motionY = nbt.getDouble("moY"); - motionZ = nbt.getDouble("moZ"); - posX = nbt.getDouble("poX"); - posY = nbt.getDouble("poY"); - posZ = nbt.getDouble("poZ"); - decelY = nbt.getDouble("decel"); - accelXZ = nbt.getDouble("accel"); - targetX = nbt.getInteger("tX"); - targetZ = nbt.getInteger("tZ"); - startX = nbt.getInteger("sX"); - startZ = nbt.getInteger("sZ"); - velocity = nbt.getInteger("veloc"); + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(8, Integer.valueOf(this.health)); + this.dataWatcher.addObject(9, Integer.valueOf(0)); + this.dataWatcher.addObject(10, Integer.valueOf(0)); + this.dataWatcher.addObject(11, Integer.valueOf(0)); + this.dataWatcher.addObject(12, Integer.valueOf(0)); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); fuel = nbt.getFloat("fuel"); consumption = nbt.getFloat("consumption"); this.dataWatcher.updateObject(9, nbt.getInteger("warhead")); @@ -171,20 +96,8 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD } @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setDouble("moX", motionX); - nbt.setDouble("moY", motionY); - nbt.setDouble("moZ", motionZ); - nbt.setDouble("poX", posX); - nbt.setDouble("poY", posY); - nbt.setDouble("poZ", posZ); - nbt.setDouble("decel", decelY); - nbt.setDouble("accel", accelXZ); - nbt.setInteger("tX", targetX); - nbt.setInteger("tZ", targetZ); - nbt.setInteger("sX", startX); - nbt.setInteger("sZ", startZ); - nbt.setDouble("veloc", velocity); + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); nbt.setFloat("fuel", fuel); nbt.setFloat("consumption", consumption); nbt.setInteger("warhead", this.dataWatcher.getWatchableObjectInt(9)); @@ -192,118 +105,28 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD nbt.setInteger("fins", this.dataWatcher.getWatchableObjectInt(11)); nbt.setInteger("thruster", this.dataWatcher.getWatchableObjectInt(12)); } + + @Override + protected void spawnContrail() { - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + Vec3 v = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); + String smoke = ""; + ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); + FuelType type = (FuelType) part.attributes[0]; - for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { - ; + switch(type) { + case BALEFIRE: smoke = "exBalefire"; break; + case HYDROGEN: smoke = "exHydrogen"; break; + case KEROSENE: smoke = "exKerosene"; break; + case SOLID: smoke = "exSolid"; break; + case XENON: break; } - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } + if(!smoke.isEmpty()) for(int i = 0; i < velocity; i++) MainRegistry.proxy.spawnParticle(posX - v.xCoord * i, posY - v.yCoord * i, posZ - v.zCoord * i, smoke, null); } @Override - public void onUpdate() { - this.dataWatcher.updateObject(8, Integer.valueOf(this.health)); - - this.setLocationAndAngles(posX + this.motionX * velocity, posY + this.motionY * velocity, posZ + this.motionZ * velocity, 0, 0); - - this.rotation(); - - if(fuel > 0 || worldObj.isRemote) { - - fuel -= consumption; - - this.motionY -= decelY * velocity; - - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - vector = vector.normalize(); - vector.xCoord *= accelXZ * velocity; - vector.zCoord *= accelXZ * velocity; - - if(motionY > 0) { - motionX += vector.xCoord; - motionZ += vector.zCoord; - } - - if(motionY < 0) { - motionX -= vector.xCoord; - motionZ -= vector.zCoord; - } - - if(velocity < 5) - velocity += 0.01; - } else { - - motionX *= 0.99; - motionZ *= 0.99; - - if(motionY > -1.5) - motionY -= 0.05; - } - - if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.water && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.flowing_water) { - - if(!this.worldObj.isRemote) { - onImpact(); - } - this.setDead(); - return; - } - - if(this.worldObj.isRemote) { - - Vec3 v = Vec3.createVectorHelper(motionX, motionY, motionZ); - v = v.normalize(); - - String smoke = ""; - - ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); - FuelType type = (FuelType) part.attributes[0]; - - switch(type) { - case BALEFIRE: - smoke = "exBalefire"; - break; - case HYDROGEN: - smoke = "exHydrogen"; - break; - case KEROSENE: - smoke = "exKerosene"; - break; - case SOLID: - smoke = "exSolid"; - break; - case XENON: - break; - } - - for(int i = 0; i < velocity; i++) - MainRegistry.proxy.spawnParticle(posX - v.xCoord * i, posY - v.yCoord * i, posZ - v.zCoord * i, smoke, null); - } - - loadNeighboringChunks((int) (posX / 16), (int) (posZ / 16)); - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) { - return distance < 2500000; - } - - public void onImpact() { + public void onImpact() { //TODO: demolish this steaming pile of shit ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(9)); @@ -378,67 +201,22 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD } } - public void init(Ticket ticket) { - if(!worldObj.isRemote) { - - if(ticket != null) { - - if(loaderTicket == null) { - - loaderTicket = ticket; - loaderTicket.bindEntity(this); - loaderTicket.getModData(); - } - - ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); - } - } - } - - List loadedChunks = new ArrayList(); - - public void loadNeighboringChunks(int newChunkX, int newChunkZ) { - if(!worldObj.isRemote && loaderTicket != null) { - for(ChunkCoordIntPair chunk : loadedChunks) { - ForgeChunkManager.unforceChunk(loaderTicket, chunk); - } - - loadedChunks.clear(); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ - 1)); - - for(ChunkCoordIntPair chunk : loadedChunks) { - ForgeChunkManager.forceChunk(loaderTicket, chunk); - } - } - } - @Override public RadarTargetType getTargetType() { ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); - PartSize top = part.top; PartSize bottom = part.bottom; - if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) - return RadarTargetType.MISSILE_10; - if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) - return RadarTargetType.MISSILE_10_15; - if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) - return RadarTargetType.MISSILE_15; - if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) - return RadarTargetType.MISSILE_15_20; - if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) - return RadarTargetType.MISSILE_20; + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) return RadarTargetType.MISSILE_10; + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) return RadarTargetType.MISSILE_10_15; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return RadarTargetType.MISSILE_15; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return RadarTargetType.MISSILE_15_20; + if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return RadarTargetType.MISSILE_20; return RadarTargetType.PLAYER; } + + @Override public List getDebris() { return new ArrayList(); } + @Override public ItemStack getDebrisRareDrop() { return null; } } diff --git a/src/main/resources/assets/hbm/textures/items/coal_eternal.png b/src/main/resources/assets/hbm/textures/items/coal_eternal.png new file mode 100644 index 0000000000000000000000000000000000000000..36ee856f8fe79f1c521ddfa5f78471460016cc3d GIT binary patch literal 429 zcmV;e0aE^nP)@>LIOiaEXe{I>ayJlzFi;Og@3kZ XnbD=?!6j$g00000NkvXXu0mjfLW;XH literal 0 HcmV?d00001 From b6f9953b3e8556f0cd16c6eeb2e103c80b7c8d7f Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 22 Nov 2023 21:46:35 +0100 Subject: [PATCH 119/207] *blows up missile with mind* --- .../entity/missile/EntityMissileBaseNT.java | 40 +- .../entity/missile/EntityMissileCustom.java | 15 + .../java/com/hbm/main/ResourceManager.java | 3 +- .../entity/rocket/RenderMissileGeneric.java | 41 +- .../tileentity/RenderLaunchPadTier1.java | 4 +- .../assets/hbm/models/missile_abm.obj | 2124 +++++++++++++++++ .../hbm/textures/models/missile_abm.png | Bin 0 -> 1320 bytes 7 files changed, 2194 insertions(+), 33 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/missile_abm.obj create mode 100644 src/main/resources/assets/hbm/textures/models/missile_abm.png diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index 243835d76..45a904538 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -87,21 +87,29 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen if(!worldObj.isRemote) { - this.motionY -= decelY * velocity; + if(hasPropulsion()) { + this.motionY -= decelY * velocity; + + Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); + vector = vector.normalize(); + vector.xCoord *= accelXZ; + vector.zCoord *= accelXZ; + + if(motionY > 0) { + motionX += vector.xCoord * velocity; + motionZ += vector.zCoord * velocity; + } + + if(motionY < 0) { + motionX -= vector.xCoord * velocity; + motionZ -= vector.zCoord * velocity; + } + } else { + motionX *= 0.99; + motionZ *= 0.99; - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - vector = vector.normalize(); - vector.xCoord *= accelXZ; - vector.zCoord *= accelXZ; - - if(motionY > 0) { - motionX += vector.xCoord * velocity; - motionZ += vector.zCoord * velocity; - } - - if(motionY < 0) { - motionX -= vector.xCoord * velocity; - motionZ -= vector.zCoord * velocity; + if(motionY > -1.5) + motionY -= 0.05; } if(motionY < -velocity && this.isCluster) { @@ -123,6 +131,10 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen while(this.rotationYaw - this.prevRotationYaw >= 180.0F) this.prevRotationYaw += 360.0F; } + public boolean hasPropulsion() { + return true; + } + protected void spawnContrail() { Vec3 vec = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); MainRegistry.proxy.particleControl(posX - vec.xCoord, posY - vec.yCoord, posZ - vec.zCoord, 2); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index c8ed518e2..65d5b0142 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -73,6 +73,21 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); } + + @Override + public void onUpdate() { + + if(!worldObj.isRemote) { + if(this.hasPropulsion()) this.fuel -= this.consumption; + } + + super.onUpdate(); + } + + @Override + public boolean hasPropulsion() { + return this.fuel > 0; + } @Override protected void entityInit() { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 26fa2963a..901fb11b2 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1010,6 +1010,7 @@ public class ResourceManager { //Missiles public static final IModelCustom missileV2 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileV2.obj")); + public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asDisplayList(); public static final IModelCustom missileStrong = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileGeneric.obj")); public static final IModelCustom missileHuge = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileHuge.obj")); public static final IModelCustom missileNuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileNeon.obj")); @@ -1152,7 +1153,7 @@ public class ResourceManager { public static final ResourceLocation missileV2_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_IN.png"); public static final ResourceLocation missileV2_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_CL.png"); public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_BU.png"); - public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileAA.png"); + public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_abm.png"); public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_HE.png"); public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_EMP.png"); public static final ResourceLocation missileStrong_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_IN.png"); diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java index 88efff5e3..1b9d98585 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java @@ -11,28 +11,35 @@ import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RenderMissileGeneric extends Render { - - public RenderMissileGeneric() { } + + public RenderMissileGeneric() { + } @Override public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - - if(p_76986_1_ instanceof EntityMissileGeneric) - bindTexture(ResourceManager.missileV2_HE_tex); - if(p_76986_1_ instanceof EntityMissileIncendiary) - bindTexture(ResourceManager.missileV2_IN_tex); - if(p_76986_1_ instanceof EntityMissileCluster) - bindTexture(ResourceManager.missileV2_CL_tex); - if(p_76986_1_ instanceof EntityMissileBunkerBuster) - bindTexture(ResourceManager.missileV2_BU_tex); - if(p_76986_1_ instanceof EntityMissileAntiBallistic) - bindTexture(ResourceManager.missileAA_tex); - ResourceManager.missileV2.renderAll(); + GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); + GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); + + if(p_76986_1_ instanceof EntityMissileGeneric) + bindTexture(ResourceManager.missileV2_HE_tex); + if(p_76986_1_ instanceof EntityMissileIncendiary) + bindTexture(ResourceManager.missileV2_IN_tex); + if(p_76986_1_ instanceof EntityMissileCluster) + bindTexture(ResourceManager.missileV2_CL_tex); + if(p_76986_1_ instanceof EntityMissileBunkerBuster) + bindTexture(ResourceManager.missileV2_BU_tex); + + if(p_76986_1_ instanceof EntityMissileAntiBallistic) { + bindTexture(ResourceManager.missileAA_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileABM.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } else { + ResourceManager.missileV2.renderAll(); + } GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index 047155832..fe1adcf1e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -165,7 +165,9 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { { GL11.glScalef(1.0F, 1.0F, 1.0F); bindTexture(ResourceManager.missileAA_tex); - ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileABM.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(state == 22) { diff --git a/src/main/resources/assets/hbm/models/missile_abm.obj b/src/main/resources/assets/hbm/models/missile_abm.obj new file mode 100644 index 000000000..d77bc487d --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_abm.obj @@ -0,0 +1,2124 @@ +# Blender v2.79 (sub 0) OBJ File: 'missile_abm.blend' +# www.blender.org +o Circle +v 0.000000 7.000000 -0.500000 +v -0.191342 7.000000 -0.461940 +v -0.353553 7.000000 -0.353553 +v -0.461940 7.000000 -0.191342 +v -0.500000 7.000000 0.000000 +v -0.461940 7.000000 0.191342 +v -0.353553 7.000000 0.353553 +v -0.191342 7.000000 0.461940 +v -0.000000 7.000000 0.500000 +v 0.191342 7.000000 0.461940 +v 0.353553 7.000000 0.353554 +v 0.461940 7.000000 0.191342 +v 0.500000 7.000000 -0.000000 +v 0.461940 7.000000 -0.191342 +v 0.353553 7.000000 -0.353554 +v 0.191341 7.000000 -0.461940 +v -0.000000 8.500000 0.000000 +v 0.000000 5.500000 -0.500000 +v -0.191342 5.500000 -0.461940 +v -0.353553 5.500000 -0.353553 +v -0.461940 5.500000 -0.191342 +v -0.500000 5.500000 0.000000 +v -0.461940 5.500000 0.191342 +v -0.353553 5.500000 0.353553 +v -0.191342 5.500000 0.461940 +v -0.000000 5.500000 0.500000 +v 0.191342 5.500000 0.461940 +v 0.353553 5.500000 0.353554 +v 0.461940 5.500000 0.191342 +v 0.500000 5.500000 -0.000000 +v 0.461940 5.500000 -0.191342 +v 0.353553 5.500000 -0.353554 +v 0.191341 5.500000 -0.461940 +v -0.000000 4.500000 -0.250000 +v -0.095671 4.500000 -0.230970 +v -0.176777 4.500000 -0.176777 +v -0.230970 4.500000 -0.095671 +v -0.250000 4.500000 0.000000 +v -0.230970 4.500000 0.095671 +v -0.176777 4.500000 0.176777 +v -0.095671 4.500000 0.230970 +v -0.000000 4.500000 0.250000 +v 0.095671 4.500000 0.230970 +v 0.176777 4.500000 0.176777 +v 0.230970 4.500000 0.095671 +v 0.250000 4.500000 -0.000000 +v 0.230970 4.500000 -0.095671 +v 0.176777 4.500000 -0.176777 +v 0.095671 4.500000 -0.230970 +v -0.000000 1.500000 -0.250000 +v -0.095671 1.500000 -0.230970 +v -0.176777 1.500000 -0.176777 +v -0.230970 1.500000 -0.095671 +v -0.250000 1.500000 0.000000 +v -0.230970 1.500000 0.095671 +v -0.176777 1.500000 0.176777 +v -0.095671 1.500000 0.230970 +v -0.000000 1.500000 0.250000 +v 0.095671 1.500000 0.230970 +v 0.176777 1.500000 0.176777 +v 0.230970 1.500000 0.095671 +v 0.250000 1.500000 -0.000000 +v 0.230970 1.500000 -0.095671 +v 0.176777 1.500000 -0.176777 +v 0.095671 1.500000 -0.230970 +v -0.000000 0.250000 -0.250000 +v 0.019030 0.250000 -0.154329 +v 0.073223 0.250000 -0.073223 +v 0.154329 0.250000 -0.019030 +v 0.250000 0.250000 0.000000 +v 0.345671 0.250000 -0.019030 +v 0.426777 0.250000 -0.073223 +v 0.480970 0.250000 -0.154329 +v 0.500000 0.250000 -0.250000 +v 0.480970 0.250000 -0.345671 +v 0.426777 0.250000 -0.426777 +v 0.345671 0.250000 -0.480970 +v 0.250000 0.250000 -0.500000 +v 0.154329 0.250000 -0.480970 +v 0.073223 0.250000 -0.426777 +v 0.019030 0.250000 -0.345671 +v -0.000000 1.500000 -0.250000 +v 0.019030 1.500000 -0.154329 +v 0.073223 1.500000 -0.073223 +v 0.154329 1.500000 -0.019030 +v 0.250000 1.500000 0.000000 +v 0.345671 1.500000 -0.019030 +v 0.426777 1.500000 -0.073223 +v 0.480970 1.500000 -0.154329 +v 0.500000 1.500000 -0.250000 +v 0.480970 1.500000 -0.345671 +v 0.426777 1.500000 -0.426777 +v 0.345671 1.500000 -0.480970 +v 0.250000 1.500000 -0.500000 +v 0.154329 1.500000 -0.480970 +v 0.073223 1.500000 -0.426777 +v 0.019030 1.500000 -0.345671 +v 0.125000 2.500000 -0.125000 +v 0.125000 0.250000 -0.250000 +v 0.134515 0.250000 -0.202165 +v 0.161612 0.250000 -0.161612 +v 0.202165 0.250000 -0.134515 +v 0.250000 0.250000 -0.125000 +v 0.297835 0.250000 -0.134515 +v 0.338388 0.250000 -0.161612 +v 0.365485 0.250000 -0.202165 +v 0.375000 0.250000 -0.250000 +v 0.365485 0.250000 -0.297835 +v 0.338388 0.250000 -0.338388 +v 0.297835 0.250000 -0.365485 +v 0.250000 0.250000 -0.375000 +v 0.202165 0.250000 -0.365485 +v 0.161612 0.250000 -0.338388 +v 0.134515 0.250000 -0.297835 +v -0.000000 0.000000 -0.250000 +v 0.019030 0.000000 -0.154329 +v 0.073223 0.000000 -0.073223 +v 0.154329 0.000000 -0.019030 +v 0.250000 0.000000 0.000000 +v 0.345671 0.000000 -0.019030 +v 0.426777 0.000000 -0.073223 +v 0.480970 0.000000 -0.154329 +v 0.500000 0.000000 -0.250000 +v 0.480970 0.000000 -0.345671 +v 0.426777 0.000000 -0.426777 +v 0.345671 0.000000 -0.480970 +v 0.250000 0.000000 -0.500000 +v 0.154329 0.000000 -0.480970 +v 0.073223 0.000000 -0.426777 +v 0.019030 0.000000 -0.345671 +v 0.000000 5.500000 -0.875000 +v 0.000000 4.500000 -0.875000 +v -0.031250 6.000000 -0.125000 +v -0.031250 4.000000 -0.125000 +v 0.031250 6.000000 -0.125000 +v 0.031250 4.000000 -0.125000 +v 0.031250 0.500000 -0.125000 +v 0.031250 2.500000 -0.125000 +v -0.031250 0.500000 -0.125000 +v -0.031250 2.500000 -0.125000 +v 0.000000 0.500000 -1.125000 +v 0.000000 2.000000 -1.125000 +v -0.062500 4.250000 -0.875000 +v -0.062500 5.750000 -0.875000 +v -0.031250 4.250000 -0.929127 +v -0.031250 5.750000 -0.929127 +v 0.031250 4.250000 -0.929127 +v 0.031250 5.750000 -0.929127 +v 0.062500 4.250000 -0.875000 +v 0.062500 5.750000 -0.875000 +v 0.031250 4.250000 -0.820873 +v 0.031250 5.750000 -0.820873 +v -0.031250 4.250000 -0.820873 +v -0.031250 5.750000 -0.820873 +v 0.000000 0.250000 0.250000 +v -0.019030 0.250000 0.154329 +v -0.073223 0.250000 0.073223 +v -0.154329 0.250000 0.019030 +v -0.250000 0.250000 0.000000 +v -0.345671 0.250000 0.019030 +v -0.426777 0.250000 0.073223 +v -0.480970 0.250000 0.154329 +v -0.500000 0.250000 0.250000 +v -0.480970 0.250000 0.345671 +v -0.426777 0.250000 0.426777 +v -0.345671 0.250000 0.480970 +v -0.250000 0.250000 0.500000 +v -0.154329 0.250000 0.480970 +v -0.073223 0.250000 0.426777 +v -0.019030 0.250000 0.345671 +v 0.000000 1.500000 0.250000 +v -0.019030 1.500000 0.154329 +v -0.073223 1.500000 0.073223 +v -0.154329 1.500000 0.019030 +v -0.250000 1.500000 0.000000 +v -0.345671 1.500000 0.019030 +v -0.426777 1.500000 0.073223 +v -0.480970 1.500000 0.154329 +v -0.500000 1.500000 0.250000 +v -0.480970 1.500000 0.345671 +v -0.426777 1.500000 0.426777 +v -0.345671 1.500000 0.480970 +v -0.250000 1.500000 0.500000 +v -0.154329 1.500000 0.480970 +v -0.073223 1.500000 0.426777 +v -0.019030 1.500000 0.345671 +v -0.125000 2.500000 0.125000 +v -0.125000 0.250000 0.250000 +v -0.134515 0.250000 0.202165 +v -0.161612 0.250000 0.161612 +v -0.202165 0.250000 0.134515 +v -0.250000 0.250000 0.125000 +v -0.297835 0.250000 0.134515 +v -0.338388 0.250000 0.161612 +v -0.365485 0.250000 0.202165 +v -0.375000 0.250000 0.250000 +v -0.365485 0.250000 0.297835 +v -0.338388 0.250000 0.338388 +v -0.297835 0.250000 0.365485 +v -0.250000 0.250000 0.375000 +v -0.202164 0.250000 0.365485 +v -0.161612 0.250000 0.338388 +v -0.134515 0.250000 0.297835 +v 0.000000 0.000000 0.250000 +v -0.019030 0.000000 0.154329 +v -0.073223 0.000000 0.073223 +v -0.154329 0.000000 0.019030 +v -0.250000 0.000000 0.000000 +v -0.345671 0.000000 0.019030 +v -0.426777 0.000000 0.073223 +v -0.480970 0.000000 0.154329 +v -0.500000 0.000000 0.250000 +v -0.480970 0.000000 0.345671 +v -0.426777 0.000000 0.426777 +v -0.345671 0.000000 0.480970 +v -0.250000 0.000000 0.500000 +v -0.154329 0.000000 0.480970 +v -0.073223 0.000000 0.426777 +v -0.019030 0.000000 0.345671 +v -0.031250 0.500000 0.125000 +v -0.031250 2.500000 0.125000 +v 0.031250 0.500000 0.125000 +v 0.031250 2.500000 0.125000 +v 0.000000 0.500000 1.125000 +v 0.000000 2.000000 1.125000 +v -0.250000 0.250000 0.000000 +v -0.154329 0.250000 -0.019030 +v -0.073223 0.250000 -0.073223 +v -0.019030 0.250000 -0.154329 +v -0.000000 0.250000 -0.250000 +v -0.019030 0.250000 -0.345671 +v -0.073223 0.250000 -0.426777 +v -0.154329 0.250000 -0.480970 +v -0.250000 0.250000 -0.500000 +v -0.345671 0.250000 -0.480970 +v -0.426777 0.250000 -0.426777 +v -0.480970 0.250000 -0.345671 +v -0.500000 0.250000 -0.250000 +v -0.480970 0.250000 -0.154329 +v -0.426777 0.250000 -0.073223 +v -0.345671 0.250000 -0.019030 +v -0.250000 1.500000 0.000000 +v -0.154329 1.500000 -0.019030 +v -0.073223 1.500000 -0.073223 +v -0.019030 1.500000 -0.154329 +v -0.000000 1.500000 -0.250000 +v -0.019030 1.500000 -0.345671 +v -0.073223 1.500000 -0.426777 +v -0.154329 1.500000 -0.480970 +v -0.250000 1.500000 -0.500000 +v -0.345671 1.500000 -0.480970 +v -0.426777 1.500000 -0.426777 +v -0.480970 1.500000 -0.345671 +v -0.500000 1.500000 -0.250000 +v -0.480970 1.500000 -0.154329 +v -0.426777 1.500000 -0.073223 +v -0.345671 1.500000 -0.019030 +v -0.125000 2.500000 -0.125000 +v -0.250000 0.250000 -0.125000 +v -0.202165 0.250000 -0.134515 +v -0.161612 0.250000 -0.161612 +v -0.134515 0.250000 -0.202165 +v -0.125000 0.250000 -0.250000 +v -0.134515 0.250000 -0.297835 +v -0.161612 0.250000 -0.338388 +v -0.202165 0.250000 -0.365485 +v -0.250000 0.250000 -0.375000 +v -0.297835 0.250000 -0.365485 +v -0.338388 0.250000 -0.338388 +v -0.365485 0.250000 -0.297835 +v -0.375000 0.250000 -0.250000 +v -0.365485 0.250000 -0.202164 +v -0.338388 0.250000 -0.161612 +v -0.297835 0.250000 -0.134515 +v -0.250000 0.000000 0.000000 +v -0.154329 0.000000 -0.019030 +v -0.073223 0.000000 -0.073223 +v -0.019030 0.000000 -0.154329 +v -0.000000 0.000000 -0.250000 +v -0.019030 0.000000 -0.345671 +v -0.073223 0.000000 -0.426777 +v -0.154329 0.000000 -0.480970 +v -0.250000 0.000000 -0.500000 +v -0.345671 0.000000 -0.480970 +v -0.426777 0.000000 -0.426777 +v -0.480970 0.000000 -0.345671 +v -0.500000 0.000000 -0.250000 +v -0.480970 0.000000 -0.154329 +v -0.426777 0.000000 -0.073223 +v -0.345671 0.000000 -0.019030 +v -0.125000 0.500000 -0.031250 +v -0.125000 2.500000 -0.031250 +v -0.125000 0.500000 0.031250 +v -0.125000 2.500000 0.031250 +v -1.125000 0.500000 0.000000 +v -1.125000 2.000000 0.000000 +v 0.250000 0.250000 -0.000000 +v 0.154329 0.250000 0.019030 +v 0.073223 0.250000 0.073223 +v 0.019030 0.250000 0.154329 +v 0.000000 0.250000 0.250000 +v 0.019030 0.250000 0.345671 +v 0.073223 0.250000 0.426777 +v 0.154329 0.250000 0.480970 +v 0.250000 0.250000 0.500000 +v 0.345671 0.250000 0.480970 +v 0.426777 0.250000 0.426777 +v 0.480970 0.250000 0.345671 +v 0.500000 0.250000 0.250000 +v 0.480970 0.250000 0.154329 +v 0.426777 0.250000 0.073223 +v 0.345671 0.250000 0.019030 +v 0.250000 1.500000 -0.000000 +v 0.154329 1.500000 0.019030 +v 0.073223 1.500000 0.073223 +v 0.019030 1.500000 0.154329 +v 0.000000 1.500000 0.250000 +v 0.019030 1.500000 0.345671 +v 0.073223 1.500000 0.426777 +v 0.154329 1.500000 0.480970 +v 0.250000 1.500000 0.500000 +v 0.345671 1.500000 0.480970 +v 0.426777 1.500000 0.426777 +v 0.480970 1.500000 0.345671 +v 0.500000 1.500000 0.250000 +v 0.480970 1.500000 0.154329 +v 0.426777 1.500000 0.073223 +v 0.345671 1.500000 0.019030 +v 0.125000 2.500000 0.125000 +v 0.250000 0.250000 0.125000 +v 0.202165 0.250000 0.134515 +v 0.161612 0.250000 0.161612 +v 0.134515 0.250000 0.202165 +v 0.125000 0.250000 0.250000 +v 0.134515 0.250000 0.297835 +v 0.161612 0.250000 0.338388 +v 0.202165 0.250000 0.365485 +v 0.250000 0.250000 0.375000 +v 0.297835 0.250000 0.365485 +v 0.338388 0.250000 0.338388 +v 0.365485 0.250000 0.297835 +v 0.375000 0.250000 0.250000 +v 0.365485 0.250000 0.202164 +v 0.338388 0.250000 0.161612 +v 0.297835 0.250000 0.134515 +v 0.250000 0.000000 -0.000000 +v 0.154329 0.000000 0.019030 +v 0.073223 0.000000 0.073223 +v 0.019030 0.000000 0.154329 +v 0.000000 0.000000 0.250000 +v 0.019030 0.000000 0.345671 +v 0.073223 0.000000 0.426777 +v 0.154329 0.000000 0.480970 +v 0.250000 0.000000 0.500000 +v 0.345671 0.000000 0.480970 +v 0.426777 0.000000 0.426777 +v 0.480970 0.000000 0.345671 +v 0.500000 0.000000 0.250000 +v 0.480970 0.000000 0.154329 +v 0.426777 0.000000 0.073223 +v 0.345671 0.000000 0.019030 +v 0.125000 0.500000 0.031250 +v 0.125000 2.500000 0.031250 +v 0.125000 0.500000 -0.031250 +v 0.125000 2.500000 -0.031250 +v 1.125000 0.500000 -0.000000 +v 1.125000 2.000000 -0.000000 +v 0.000000 5.500000 0.875000 +v 0.000000 4.500000 0.875000 +v 0.031250 6.000000 0.125000 +v 0.031250 4.000000 0.125000 +v -0.031250 6.000000 0.125000 +v -0.031250 4.000000 0.125000 +v 0.062500 4.250000 0.875000 +v 0.062500 5.750000 0.875000 +v 0.031250 4.250000 0.929127 +v 0.031250 5.750000 0.929127 +v -0.031250 4.250000 0.929127 +v -0.031250 5.750000 0.929127 +v -0.062500 4.250000 0.875000 +v -0.062500 5.750000 0.875000 +v -0.031250 4.250000 0.820873 +v -0.031250 5.750000 0.820873 +v 0.031250 4.250000 0.820873 +v 0.031250 5.750000 0.820873 +v -0.875000 5.500000 0.000000 +v -0.875000 4.500000 0.000000 +v -0.125000 6.000000 0.031250 +v -0.125000 4.000000 0.031250 +v -0.125000 6.000000 -0.031250 +v -0.125000 4.000000 -0.031250 +v -0.875000 4.250000 0.062500 +v -0.875000 5.750000 0.062500 +v -0.929127 4.250000 0.031250 +v -0.929127 5.750000 0.031250 +v -0.929127 4.250000 -0.031250 +v -0.929127 5.750000 -0.031250 +v -0.875000 4.250000 -0.062500 +v -0.875000 5.750000 -0.062500 +v -0.820873 4.250000 -0.031250 +v -0.820873 5.750000 -0.031250 +v -0.820873 4.250000 0.031250 +v -0.820873 5.750000 0.031250 +v 0.875000 5.500000 -0.000000 +v 0.875000 4.500000 -0.000000 +v 0.125000 6.000000 -0.031250 +v 0.125000 4.000000 -0.031250 +v 0.125000 6.000000 0.031250 +v 0.125000 4.000000 0.031250 +v 0.875000 4.250000 -0.062500 +v 0.875000 5.750000 -0.062500 +v 0.929127 4.250000 -0.031250 +v 0.929127 5.750000 -0.031250 +v 0.929127 4.250000 0.031250 +v 0.929127 5.750000 0.031250 +v 0.875000 4.250000 0.062500 +v 0.875000 5.750000 0.062500 +v 0.820873 4.250000 0.031250 +v 0.820873 5.750000 0.031250 +v 0.820873 4.250000 -0.031250 +v 0.820873 5.750000 -0.031250 +vt 0.720253 0.439829 +vt 0.720253 0.488743 +vt 0.648168 0.488743 +vt 0.447368 0.053571 +vt 0.421053 0.035714 +vt 0.434211 0.035714 +vt 0.473684 0.053571 +vt 0.447368 0.035714 +vt 0.460526 0.035714 +vt 0.486842 0.035714 +vt 0.500000 0.053571 +vt 0.513158 0.035714 +vt 0.526316 0.053571 +vt 0.552632 0.053571 +vt 0.526316 0.035714 +vt 0.539474 0.035714 +vt 0.578947 0.053571 +vt 0.552632 0.035714 +vt 0.565789 0.035714 +vt 0.605263 0.053571 +vt 0.578947 0.035714 +vt 0.592105 0.035714 +vt 0.618421 0.035714 +vt 0.631579 0.053571 +vt 0.657895 0.053571 +vt 0.631579 0.035714 +vt 0.644737 0.035714 +vt 0.684211 0.053571 +vt 0.657895 0.035714 +vt 0.671053 0.035714 +vt 0.697368 0.035714 +vt 0.710526 0.053571 +vt 0.723684 0.035714 +vt 0.736842 0.053571 +vt 0.789474 0.053571 +vt 0.802632 0.035714 +vt 0.815789 0.053571 +vt 0.763158 0.053571 +vt 0.736842 0.035714 +vt 0.750000 0.035714 +vt 0.828947 0.035714 +vt 0.842105 0.053571 +vt 0.776316 0.035714 +vt 0.684211 0.570302 +vt 0.633240 0.535715 +vt 0.684211 0.501127 +vt 0.842105 0.294643 +vt 1.000000 0.080357 +vt 0.842105 0.008929 +vt 1.000000 0.223214 +vt 0.842105 0.008929 +vt 0.842105 0.294643 +vt 1.000000 0.294643 +vt 0.842105 0.303571 +vt 0.842105 -0.000000 +vt 1.000000 0.008929 +vt 0.631579 0.580357 +vt 0.631579 0.571429 +vt 0.842105 0.580357 +vt 0.631579 0.875000 +vt 0.842105 0.875000 +vt 0.631579 0.883929 +vt 0.842105 0.803571 +vt 0.631579 0.580357 +vt 0.921712 0.330357 +vt 0.940460 0.323013 +vt 0.940460 0.337702 +vt 0.946709 0.312500 +vt 0.940460 0.319845 +vt 0.927961 0.319845 +vt 0.447368 0.053571 +vt 0.421053 0.035714 +vt 0.434211 0.035714 +vt 0.473684 0.053571 +vt 0.447368 0.035714 +vt 0.460526 0.035714 +vt 0.486842 0.035714 +vt 0.500000 0.053571 +vt 0.513158 0.035714 +vt 0.526316 0.053571 +vt 0.552632 0.053571 +vt 0.526316 0.035714 +vt 0.539474 0.035714 +vt 0.578947 0.053571 +vt 0.552632 0.035714 +vt 0.565789 0.035714 +vt 0.605263 0.053571 +vt 0.578947 0.035714 +vt 0.592105 0.035714 +vt 0.618421 0.035714 +vt 0.631579 0.053571 +vt 0.657895 0.053571 +vt 0.631579 0.035714 +vt 0.644737 0.035714 +vt 0.684211 0.053571 +vt 0.657895 0.035714 +vt 0.671053 0.035714 +vt 0.697368 0.035714 +vt 0.710526 0.053571 +vt 0.723684 0.035714 +vt 0.736842 0.053571 +vt 0.789474 0.053571 +vt 0.802632 0.035714 +vt 0.815789 0.053571 +vt 0.763158 0.053571 +vt 0.736842 0.035714 +vt 0.750000 0.035714 +vt 0.828947 0.035714 +vt 0.842105 0.053571 +vt 0.776316 0.035714 +vt 0.633240 0.535715 +vt 0.648169 0.511257 +vt 0.684211 0.501127 +vt 0.631579 0.580357 +vt 0.631579 0.571429 +vt 0.842105 0.580357 +vt 0.631579 0.875000 +vt 0.842105 0.875000 +vt 0.631579 0.883929 +vt 0.842105 0.803571 +vt 0.631579 0.580357 +vt 0.447368 0.053571 +vt 0.421053 0.035714 +vt 0.434211 0.035714 +vt 0.473684 0.053571 +vt 0.447368 0.035714 +vt 0.460526 0.035714 +vt 0.486842 0.035714 +vt 0.500000 0.053571 +vt 0.513158 0.035714 +vt 0.526316 0.053571 +vt 0.552632 0.053571 +vt 0.526316 0.035714 +vt 0.539474 0.035714 +vt 0.578947 0.053571 +vt 0.552632 0.035714 +vt 0.565789 0.035714 +vt 0.605263 0.053571 +vt 0.578947 0.035714 +vt 0.592105 0.035714 +vt 0.618421 0.035714 +vt 0.631579 0.053571 +vt 0.657895 0.053571 +vt 0.631579 0.035714 +vt 0.644737 0.035714 +vt 0.671053 0.035714 +vt 0.684211 0.053571 +vt 0.697368 0.035714 +vt 0.710526 0.053571 +vt 0.723684 0.035714 +vt 0.736842 0.053571 +vt 0.789474 0.053571 +vt 0.802632 0.035714 +vt 0.815789 0.053571 +vt 0.763158 0.053571 +vt 0.736842 0.035714 +vt 0.750000 0.035714 +vt 0.828947 0.035714 +vt 0.842105 0.053571 +vt 0.776316 0.035714 +vt 0.684211 0.570302 +vt 0.633240 0.535715 +vt 0.684211 0.501127 +vt 0.631579 0.580357 +vt 0.631579 0.571429 +vt 0.842105 0.580357 +vt 0.631579 0.875000 +vt 0.842105 0.875000 +vt 0.631579 0.883929 +vt 0.842105 0.803571 +vt 0.631579 0.580357 +vt 0.447368 0.053571 +vt 0.421053 0.035714 +vt 0.434211 0.035714 +vt 0.473684 0.053571 +vt 0.447368 0.035714 +vt 0.460526 0.035714 +vt 0.486842 0.035714 +vt 0.500000 0.053571 +vt 0.513158 0.035714 +vt 0.526316 0.053571 +vt 0.552632 0.053571 +vt 0.526316 0.035714 +vt 0.539474 0.035714 +vt 0.578947 0.053571 +vt 0.552632 0.035714 +vt 0.565789 0.035714 +vt 0.605263 0.053571 +vt 0.578947 0.035714 +vt 0.592105 0.035714 +vt 0.618421 0.035714 +vt 0.631579 0.053571 +vt 0.657895 0.053571 +vt 0.631579 0.035714 +vt 0.644737 0.035714 +vt 0.684211 0.053571 +vt 0.657895 0.035714 +vt 0.671053 0.035714 +vt 0.697368 0.035714 +vt 0.710526 0.053571 +vt 0.723684 0.035714 +vt 0.736842 0.053571 +vt 0.789474 0.053571 +vt 0.802632 0.035714 +vt 0.815789 0.053571 +vt 0.763158 0.053571 +vt 0.736842 0.035714 +vt 0.750000 0.035714 +vt 0.828947 0.035714 +vt 0.842105 0.053571 +vt 0.763158 0.035714 +vt 0.776316 0.035714 +vt 0.684211 0.570302 +vt 0.633240 0.535715 +vt 0.684211 0.501127 +vt 0.631579 0.580357 +vt 0.631579 0.571429 +vt 0.842105 0.580357 +vt 0.631579 0.875000 +vt 0.842105 0.875000 +vt 0.631579 0.883929 +vt 0.842105 0.803571 +vt 0.631579 0.580357 +vt 0.842105 0.294643 +vt 1.000000 0.080357 +vt 0.842105 0.008929 +vt 1.000000 0.223214 +vt 0.842105 0.008929 +vt 0.842105 0.294643 +vt 1.000000 0.294643 +vt 0.842105 0.303571 +vt 0.842105 -0.000000 +vt 1.000000 0.008929 +vt 0.946709 0.330357 +vt 0.940460 0.337702 +vt 0.921712 0.330357 +vt 0.946709 0.312500 +vt 0.940460 0.319845 +vt 0.927961 0.319845 +vt 0.842105 0.294643 +vt 1.000000 0.080357 +vt 0.842105 0.008929 +vt 1.000000 0.223214 +vt 0.842105 0.008929 +vt 0.842105 0.294643 +vt 1.000000 0.294643 +vt 0.842105 0.303571 +vt 0.842105 -0.000000 +vt 1.000000 0.008929 +vt 0.921712 0.330357 +vt 0.940460 0.323013 +vt 0.940460 0.337702 +vt 0.946709 0.312500 +vt 0.940460 0.319845 +vt 0.927961 0.319845 +vt 0.842105 0.008929 +vt 1.000000 0.223214 +vt 1.000000 0.080357 +vt 0.842105 0.008929 +vt 0.842105 0.294643 +vt 1.000000 0.294643 +vt 0.842105 0.303571 +vt 0.842105 -0.000000 +vt 1.000000 0.008929 +vt 0.921712 0.330357 +vt 0.940460 0.323013 +vt 0.940460 0.337702 +vt 0.946709 0.312500 +vt 0.940460 0.319845 +vt 0.927961 0.319845 +vt 0.731302 0.451050 +vt 0.735182 0.464286 +vt 0.731302 0.477522 +vt 0.703716 0.496241 +vt 0.684211 0.498873 +vt 0.664705 0.496241 +vt 0.637119 0.477522 +vt 0.633239 0.464286 +vt 0.637119 0.451050 +vt 0.648169 0.439829 +vt 0.664705 0.432331 +vt 0.684211 0.429698 +vt 0.703716 0.432331 +vt 0.421053 0.053571 +vt 0.473684 0.035714 +vt 0.500000 0.035714 +vt 0.605263 0.035714 +vt 0.684211 0.035714 +vt 0.710526 0.035714 +vt 0.789474 0.035714 +vt 0.815789 0.035714 +vt 0.763158 0.035714 +vt 0.703717 0.503760 +vt 0.720253 0.511257 +vt 0.731302 0.522478 +vt 0.735182 0.535715 +vt 0.731302 0.548951 +vt 0.720253 0.560172 +vt 0.703717 0.567669 +vt 0.664705 0.567669 +vt 0.648169 0.560172 +vt 0.637119 0.548951 +vt 0.637119 0.522478 +vt 0.648169 0.511257 +vt 0.664705 0.503760 +vt 0.631579 0.875000 +vt 0.927961 0.337702 +vt 0.927961 0.323013 +vt 0.946709 0.330357 +vt 0.921712 0.312500 +vt 0.927962 0.305155 +vt 0.940460 0.305155 +vt 0.421053 0.053571 +vt 0.473684 0.035714 +vt 0.500000 0.035714 +vt 0.605263 0.035714 +vt 0.684211 0.035714 +vt 0.710526 0.035714 +vt 0.789474 0.035714 +vt 0.815789 0.035714 +vt 0.763158 0.035714 +vt 0.703717 0.503760 +vt 0.720253 0.511257 +vt 0.731302 0.522478 +vt 0.735182 0.535715 +vt 0.731302 0.548951 +vt 0.720253 0.560172 +vt 0.703717 0.567669 +vt 0.684211 0.570302 +vt 0.664705 0.567669 +vt 0.648169 0.560172 +vt 0.637119 0.548951 +vt 0.637119 0.522478 +vt 0.664705 0.503760 +vt 0.631579 0.875000 +vt 0.421053 0.053571 +vt 0.473684 0.035714 +vt 0.500000 0.035714 +vt 0.605263 0.035714 +vt 0.657895 0.035714 +vt 0.684211 0.035714 +vt 0.710526 0.035714 +vt 0.789474 0.035714 +vt 0.815789 0.035714 +vt 0.763158 0.035714 +vt 0.703717 0.503760 +vt 0.720253 0.511257 +vt 0.731302 0.522478 +vt 0.735182 0.535715 +vt 0.731302 0.548951 +vt 0.720253 0.560172 +vt 0.703717 0.567669 +vt 0.664705 0.567669 +vt 0.648169 0.560172 +vt 0.637119 0.548951 +vt 0.637119 0.522478 +vt 0.648169 0.511257 +vt 0.664705 0.503760 +vt 0.631579 0.875000 +vt 0.421053 0.053571 +vt 0.473684 0.035714 +vt 0.500000 0.035714 +vt 0.605263 0.035714 +vt 0.684211 0.035714 +vt 0.710526 0.035714 +vt 0.789474 0.035714 +vt 0.815789 0.035714 +vt 0.703717 0.503760 +vt 0.720253 0.511257 +vt 0.731302 0.522478 +vt 0.735182 0.535715 +vt 0.731302 0.548951 +vt 0.720253 0.560172 +vt 0.703717 0.567669 +vt 0.664705 0.567669 +vt 0.648169 0.560172 +vt 0.637119 0.548951 +vt 0.637119 0.522478 +vt 0.648169 0.511257 +vt 0.664705 0.503760 +vt 0.631579 0.875000 +vt 0.927961 0.337702 +vt 0.927961 0.323013 +vt 0.940460 0.323013 +vt 0.921712 0.312500 +vt 0.927962 0.305155 +vt 0.940460 0.305155 +vt 0.927961 0.337702 +vt 0.927961 0.323013 +vt 0.946709 0.330357 +vt 0.921712 0.312500 +vt 0.927962 0.305155 +vt 0.940460 0.305155 +vt 0.842105 0.294643 +vt 0.927961 0.337702 +vt 0.927961 0.323013 +vt 0.946709 0.330357 +vt 0.921712 0.312500 +vt 0.927962 0.305155 +vt 0.940460 0.305155 +vt 0.434211 0.785714 +vt 0.473684 0.785714 +vt 0.447368 1.000000 +vt 0.394737 0.785714 +vt 0.407895 1.000000 +vt 0.355263 0.785714 +vt 0.368421 1.000000 +vt 0.315789 0.785714 +vt 0.328947 1.000000 +vt 0.276316 0.785714 +vt 0.289474 1.000000 +vt 0.236842 0.785714 +vt 0.250000 1.000000 +vt 0.197368 0.785714 +vt 0.210526 1.000000 +vt 0.157895 0.785714 +vt 0.171053 1.000000 +vt 0.131579 1.000000 +vt 0.118421 0.785714 +vt 0.078947 0.785714 +vt 0.092105 1.000000 +vt 0.039474 0.785714 +vt 0.052632 1.000000 +vt 0.000000 0.785714 +vt 0.013158 1.000000 +vt 0.592105 0.785714 +vt 0.631579 0.785714 +vt 0.605263 1.000000 +vt 0.552632 0.785714 +vt 0.565789 1.000000 +vt 0.513158 0.785714 +vt 0.526316 1.000000 +vt 0.486842 1.000000 +vt 0.631579 0.571429 +vt 0.315789 0.571429 +vt 0.039474 0.571429 +vt 0.355263 0.571429 +vt 0.078947 0.571429 +vt 0.394737 0.571429 +vt 0.118421 0.571429 +vt 0.434211 0.571429 +vt 0.157895 0.571429 +vt 0.513158 0.571429 +vt 0.473684 0.571429 +vt 0.197368 0.571429 +vt 0.552632 0.571429 +vt 0.236842 0.571429 +vt 0.592105 0.571429 +vt 0.276316 0.571429 +vt 0.184211 0.428571 +vt 0.539474 0.428571 +vt 0.223684 0.428571 +vt 0.578947 0.428571 +vt 0.263158 0.428571 +vt 0.618421 0.428571 +vt 0.302632 0.428571 +vt 0.000000 0.571429 +vt 0.026316 0.428571 +vt 0.342105 0.428571 +vt 0.065789 0.428571 +vt 0.381579 0.428571 +vt 0.105263 0.428571 +vt 0.394737 0.428571 +vt 0.421053 0.428571 +vt 0.144737 0.428571 +vt 0.500000 0.428571 +vt 0.460526 0.428571 +vt 0.236842 0.428571 +vt 0.263158 -0.000000 +vt 0.263158 0.428571 +vt 0.052632 0.428571 +vt 0.078947 -0.000000 +vt 0.078947 0.428571 +vt 0.289474 -0.000000 +vt 0.289474 0.428571 +vt 0.105263 -0.000000 +vt 0.105263 0.428571 +vt 0.315789 0.428571 +vt 0.342105 -0.000000 +vt 0.342105 0.428571 +vt 0.315789 -0.000000 +vt 0.131579 -0.000000 +vt 0.131579 0.428571 +vt 0.368421 -0.000000 +vt 0.368421 0.428571 +vt 0.157895 -0.000000 +vt 0.157895 0.428571 +vt 0.394737 -0.000000 +vt 0.394737 0.428571 +vt 0.184211 -0.000000 +vt 0.184211 0.428571 +vt 0.421053 -0.000000 +vt 0.421053 0.428571 +vt 0.210526 -0.000000 +vt 0.210526 0.428571 +vt 0.000000 0.428571 +vt 0.026316 -0.000000 +vt 0.236842 -0.000000 +vt 0.052632 -0.000000 +vt 0.815789 0.232143 +vt 0.605263 0.232143 +vt 0.421053 0.232143 +vt 0.631579 0.232143 +vt 0.447368 0.232143 +vt 0.657895 0.232143 +vt 0.473684 0.232143 +vt 0.684211 0.232143 +vt 0.500000 0.232143 +vt 0.710526 0.232143 +vt 0.526316 0.232143 +vt 0.736842 0.232143 +vt 0.552632 0.232143 +vt 0.789474 0.232143 +vt 0.763158 0.232143 +vt 0.578947 0.232143 +vt 0.671053 0.375000 +vt 0.644737 0.375000 +vt 0.618421 0.375000 +vt 0.592105 0.375000 +vt 0.565789 0.375000 +vt 0.539474 0.375000 +vt 0.513158 0.375000 +vt 0.486842 0.375000 +vt 0.460526 0.375000 +vt 0.434211 0.375000 +vt 0.842105 0.232143 +vt 0.828947 0.375000 +vt 0.802632 0.375000 +vt 0.776316 0.375000 +vt 0.750000 0.375000 +vt 0.723684 0.375000 +vt 0.697368 0.375000 +vt 0.605263 -0.000000 +vt 0.631579 -0.000000 +vt 0.657895 -0.000000 +vt 0.684211 -0.000000 +vt 0.710526 -0.000000 +vt 0.736842 -0.000000 +vt 0.789474 -0.000000 +vt 0.815789 -0.000000 +vt 0.763158 -0.000000 +vt 0.842105 -0.000000 +vt 0.421053 -0.000000 +vt 0.447368 -0.000000 +vt 0.473684 -0.000000 +vt 0.500000 -0.000000 +vt 0.526316 -0.000000 +vt 0.552632 -0.000000 +vt 0.578947 -0.000000 +vt 0.907895 0.517857 +vt 0.894737 0.303571 +vt 0.907895 0.303571 +vt 0.894737 0.517857 +vt 0.881579 0.303571 +vt 0.881579 0.517857 +vt 0.868421 0.303571 +vt 0.868421 0.517857 +vt 0.855263 0.303571 +vt 0.855263 0.517857 +vt 0.842105 0.303571 +vt 0.921053 0.517857 +vt 0.921053 0.303571 +vt 0.815789 0.232143 +vt 0.605263 0.232143 +vt 0.421053 0.232143 +vt 0.631579 0.232143 +vt 0.447368 0.232143 +vt 0.657895 0.232143 +vt 0.473684 0.232143 +vt 0.684211 0.232143 +vt 0.500000 0.232143 +vt 0.710526 0.232143 +vt 0.526316 0.232143 +vt 0.736842 0.232143 +vt 0.552632 0.232143 +vt 0.789474 0.232143 +vt 0.763158 0.232143 +vt 0.578947 0.232143 +vt 0.671053 0.375000 +vt 0.644737 0.375000 +vt 0.618421 0.375000 +vt 0.592105 0.375000 +vt 0.565789 0.375000 +vt 0.539474 0.375000 +vt 0.513158 0.375000 +vt 0.486842 0.375000 +vt 0.460526 0.375000 +vt 0.434211 0.375000 +vt 0.842105 0.232143 +vt 0.828947 0.375000 +vt 0.802632 0.375000 +vt 0.776316 0.375000 +vt 0.750000 0.375000 +vt 0.723684 0.375000 +vt 0.697368 0.375000 +vt 0.605263 -0.000000 +vt 0.631579 -0.000000 +vt 0.657895 -0.000000 +vt 0.684211 -0.000000 +vt 0.710526 -0.000000 +vt 0.736842 -0.000000 +vt 0.815789 -0.000000 +vt 0.763158 -0.000000 +vt 0.842105 -0.000000 +vt 0.789474 -0.000000 +vt 0.447368 -0.000000 +vt 0.473684 -0.000000 +vt 0.500000 -0.000000 +vt 0.526316 -0.000000 +vt 0.552632 -0.000000 +vt 0.578947 -0.000000 +vt 0.815789 0.232143 +vt 0.605263 0.232143 +vt 0.421053 0.232143 +vt 0.631579 0.232143 +vt 0.447368 0.232143 +vt 0.657895 0.232143 +vt 0.473684 0.232143 +vt 0.684211 0.232143 +vt 0.500000 0.232143 +vt 0.710526 0.232143 +vt 0.526316 0.232143 +vt 0.736842 0.232143 +vt 0.552632 0.232143 +vt 0.789474 0.232143 +vt 0.763158 0.232143 +vt 0.578947 0.232143 +vt 0.671053 0.375000 +vt 0.644737 0.375000 +vt 0.618421 0.375000 +vt 0.592105 0.375000 +vt 0.565789 0.375000 +vt 0.539474 0.375000 +vt 0.513158 0.375000 +vt 0.486842 0.375000 +vt 0.460526 0.375000 +vt 0.434211 0.375000 +vt 0.842105 0.232143 +vt 0.828947 0.375000 +vt 0.802632 0.375000 +vt 0.776316 0.375000 +vt 0.750000 0.375000 +vt 0.723684 0.375000 +vt 0.697368 0.375000 +vt 0.631579 -0.000000 +vt 0.657895 -0.000000 +vt 0.684211 -0.000000 +vt 0.710526 -0.000000 +vt 0.736842 -0.000000 +vt 0.815789 -0.000000 +vt 0.763158 -0.000000 +vt 0.842105 -0.000000 +vt 0.789474 -0.000000 +vt 0.421053 -0.000000 +vt 0.447368 -0.000000 +vt 0.473684 -0.000000 +vt 0.500000 -0.000000 +vt 0.526316 -0.000000 +vt 0.552632 -0.000000 +vt 0.578947 -0.000000 +vt 0.605263 -0.000000 +vt 0.815789 0.232143 +vt 0.605263 0.232143 +vt 0.421053 0.232143 +vt 0.631579 0.232143 +vt 0.447368 0.232143 +vt 0.657895 0.232143 +vt 0.473684 0.232143 +vt 0.684211 0.232143 +vt 0.500000 0.232143 +vt 0.710526 0.232143 +vt 0.526316 0.232143 +vt 0.736842 0.232143 +vt 0.552632 0.232143 +vt 0.789474 0.232143 +vt 0.763158 0.232143 +vt 0.578947 0.232143 +vt 0.671053 0.375000 +vt 0.644737 0.375000 +vt 0.618421 0.375000 +vt 0.592105 0.375000 +vt 0.565789 0.375000 +vt 0.539474 0.375000 +vt 0.513158 0.375000 +vt 0.486842 0.375000 +vt 0.460526 0.375000 +vt 0.434211 0.375000 +vt 0.842105 0.232143 +vt 0.828947 0.375000 +vt 0.802632 0.375000 +vt 0.776316 0.375000 +vt 0.750000 0.375000 +vt 0.723684 0.375000 +vt 0.697368 0.375000 +vt 0.605263 -0.000000 +vt 0.631579 -0.000000 +vt 0.657895 -0.000000 +vt 0.684211 -0.000000 +vt 0.710526 -0.000000 +vt 0.736842 -0.000000 +vt 0.815789 -0.000000 +vt 0.763158 -0.000000 +vt 0.842105 -0.000000 +vt 0.789474 -0.000000 +vt 0.421053 -0.000000 +vt 0.447368 -0.000000 +vt 0.473684 -0.000000 +vt 0.500000 -0.000000 +vt 0.526316 -0.000000 +vt 0.552632 -0.000000 +vt 0.578947 -0.000000 +vt 0.907895 0.517857 +vt 0.894737 0.303571 +vt 0.907895 0.303571 +vt 0.894737 0.517857 +vt 0.881579 0.303571 +vt 0.881579 0.517857 +vt 0.868421 0.303571 +vt 0.868421 0.517857 +vt 0.855263 0.303571 +vt 0.855263 0.517857 +vt 0.842105 0.303571 +vt 0.921053 0.517857 +vt 0.921053 0.303571 +vt 0.907895 0.517857 +vt 0.894737 0.303571 +vt 0.907895 0.303571 +vt 0.894737 0.517857 +vt 0.881579 0.303571 +vt 0.881579 0.517857 +vt 0.868421 0.303571 +vt 0.868421 0.517857 +vt 0.855263 0.303571 +vt 0.855263 0.517857 +vt 0.842105 0.303571 +vt 0.921053 0.517857 +vt 0.921053 0.303571 +vt 0.907895 0.517857 +vt 0.894737 0.303571 +vt 0.907895 0.303571 +vt 0.894737 0.517857 +vt 0.881579 0.303571 +vt 0.881579 0.517857 +vt 0.868421 0.303571 +vt 0.868421 0.517857 +vt 0.855263 0.303571 +vt 0.855263 0.517857 +vt 0.842105 0.303571 +vt 0.921053 0.517857 +vt 0.921053 0.303571 +vt 0.157895 0.428571 +vt 0.513158 0.428571 +vt 0.197368 0.428571 +vt 0.552632 0.428571 +vt 0.236842 0.428571 +vt 0.592105 0.428571 +vt 0.276316 0.428571 +vt 0.315789 0.428571 +vt 0.039474 0.428571 +vt 0.355263 0.428571 +vt 0.078947 0.428571 +vt 0.118421 0.428571 +vt 0.473684 0.428571 +vt 0.434211 0.428571 +vt 0.000000 -0.000000 +vt 0.842105 0.517857 +vt 0.421053 -0.000000 +vt 0.842105 0.517857 +vt 0.842105 0.517857 +vt 0.842105 0.517857 +vn 0.0000 -1.0000 0.0000 +vn -0.9991 0.0000 -0.0416 +vn 0.9991 0.0000 -0.0416 +vn 0.0000 0.8321 -0.5547 +vn 0.0000 -0.8321 -0.5547 +vn 0.0000 0.8944 -0.4472 +vn 0.9995 0.0000 -0.0312 +vn -0.9995 0.0000 -0.0312 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.8944 0.4472 +vn -0.9995 0.0000 0.0312 +vn 0.9995 0.0000 0.0312 +vn -0.4472 0.8944 0.0000 +vn -0.0312 0.0000 -0.9995 +vn -0.0312 0.0000 0.9995 +vn 0.4472 0.8944 0.0000 +vn 0.0312 0.0000 0.9995 +vn 0.0312 0.0000 -0.9995 +vn 0.9991 0.0000 0.0416 +vn -0.9991 0.0000 0.0416 +vn 0.0000 0.8321 0.5547 +vn 0.0000 -0.8321 0.5547 +vn -0.0416 0.0000 0.9991 +vn -0.0416 0.0000 -0.9991 +vn -0.5547 0.8321 0.0000 +vn -0.5547 -0.8321 0.0000 +vn 0.0416 0.0000 -0.9991 +vn 0.0416 0.0000 0.9991 +vn 0.5547 0.8321 0.0000 +vn 0.5547 -0.8321 0.0000 +vn 0.3630 0.3162 -0.8765 +vn -0.0000 0.3162 -0.9487 +vn 0.6708 0.3162 -0.6708 +vn 0.8765 0.3162 -0.3630 +vn 0.9487 0.3162 0.0000 +vn 0.8765 0.3162 0.3630 +vn 0.6708 0.3162 0.6708 +vn 0.3630 0.3162 0.8765 +vn -0.0000 0.3162 0.9487 +vn -0.3630 0.3162 0.8765 +vn -0.6708 0.3162 0.6708 +vn -0.8765 0.3162 0.3630 +vn -0.9487 0.3162 0.0000 +vn -0.8765 0.3162 -0.3630 +vn -0.6708 0.3162 -0.6708 +vn -0.3630 0.3162 -0.8765 +vn -0.9239 0.0000 -0.3827 +vn -1.0000 0.0000 0.0000 +vn 0.9239 0.0000 0.3827 +vn 1.0000 0.0000 -0.0000 +vn -0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.0000 0.0000 1.0000 +vn -0.0000 0.0000 -1.0000 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.0000 -0.2425 0.9701 +vn 0.3713 -0.2425 0.8963 +vn -0.3713 -0.2425 -0.8963 +vn -0.6860 -0.2425 -0.6860 +vn 0.6860 -0.2425 0.6860 +vn -0.8963 -0.2425 -0.3713 +vn 0.8963 -0.2425 0.3713 +vn -0.9701 -0.2425 -0.0000 +vn 0.9701 -0.2425 -0.0000 +vn -0.8963 -0.2425 0.3713 +vn 0.8963 -0.2425 -0.3713 +vn -0.6860 -0.2425 0.6860 +vn 0.6860 -0.2425 -0.6860 +vn -0.3713 -0.2425 0.8963 +vn 0.3713 -0.2425 -0.8963 +vn -0.0000 -0.2425 -0.9701 +vn 0.0127 0.3525 -0.9357 +vn -0.1164 0.9864 0.1164 +vn 0.3598 0.3824 -0.8511 +vn 0.6504 0.3925 -0.6504 +vn 0.8511 0.3824 -0.3598 +vn 0.9357 0.3525 -0.0127 +vn 0.8863 0.3053 0.3484 +vn 0.6991 0.2457 0.6714 +vn 0.3936 0.1823 0.9010 +vn 0.0149 0.1259 0.9919 +vn -0.3736 0.0869 0.9235 +vn -0.7052 0.0730 0.7052 +vn -0.9235 0.0869 0.3736 +vn -0.9919 0.1259 -0.0149 +vn -0.9010 0.1823 -0.3936 +vn -0.6714 0.2457 -0.6991 +vn -0.3484 0.3053 -0.8863 +vn 0.6325 0.4472 -0.6325 +vn 0.8263 0.4472 -0.3423 +vn 0.3423 0.4472 -0.8263 +vn 0.0000 0.4472 -0.8944 +vn -0.3423 0.4472 -0.8263 +vn -0.6325 0.4472 -0.6325 +vn -0.8263 0.4472 0.3423 +vn -0.8944 0.4472 0.0000 +vn -0.8263 0.4472 -0.3423 +vn -0.6325 0.4472 0.6325 +vn -0.3423 0.4472 0.8263 +vn 0.0000 0.4472 0.8944 +vn 0.3423 0.4472 0.8263 +vn 0.6325 0.4472 0.6325 +vn 0.8263 0.4472 0.3423 +vn 0.8944 0.4472 -0.0000 +vn -0.5000 0.0000 -0.8660 +vn 0.5000 0.0000 -0.8660 +vn 0.5000 0.0000 0.8660 +vn -0.5000 0.0000 0.8660 +vn -0.0127 0.3525 0.9357 +vn 0.1164 0.9864 -0.1164 +vn -0.3598 0.3824 0.8511 +vn -0.6504 0.3925 0.6504 +vn -0.8511 0.3824 0.3598 +vn -0.9357 0.3525 0.0127 +vn -0.8863 0.3053 -0.3484 +vn -0.6991 0.2457 -0.6714 +vn -0.3936 0.1823 -0.9010 +vn -0.0149 0.1259 -0.9919 +vn 0.3736 0.0869 -0.9235 +vn 0.7052 0.0730 -0.7052 +vn 0.9235 0.0869 -0.3736 +vn 0.9919 0.1259 0.0149 +vn 0.9010 0.1823 0.3936 +vn 0.6714 0.2457 0.6991 +vn 0.3484 0.3053 0.8863 +vn -0.9357 0.3525 -0.0127 +vn 0.1164 0.9864 0.1164 +vn -0.8511 0.3824 -0.3598 +vn -0.6504 0.3925 -0.6504 +vn -0.3598 0.3824 -0.8511 +vn -0.0127 0.3525 -0.9357 +vn 0.3484 0.3053 -0.8863 +vn 0.6714 0.2457 -0.6991 +vn 0.9010 0.1823 -0.3936 +vn 0.9919 0.1259 -0.0149 +vn 0.9235 0.0869 0.3736 +vn 0.7052 0.0730 0.7052 +vn 0.3737 0.0869 0.9235 +vn -0.0149 0.1259 0.9919 +vn -0.3936 0.1823 0.9010 +vn -0.6991 0.2457 0.6714 +vn -0.8863 0.3053 0.3484 +vn 0.9357 0.3525 0.0127 +vn -0.1164 0.9864 -0.1164 +vn 0.8511 0.3824 0.3598 +vn 0.6504 0.3925 0.6504 +vn 0.3598 0.3824 0.8511 +vn 0.0127 0.3525 0.9357 +vn -0.3484 0.3053 0.8863 +vn -0.6714 0.2457 0.6991 +vn -0.9010 0.1823 0.3936 +vn -0.9919 0.1259 0.0149 +vn -0.9235 0.0869 -0.3736 +vn -0.7052 0.0730 -0.7052 +vn -0.3737 0.0869 -0.9235 +vn 0.0149 0.1259 -0.9919 +vn 0.3936 0.1823 -0.9010 +vn 0.6991 0.2457 -0.6714 +vn 0.8863 0.3053 -0.3484 +vn -0.8660 0.0000 0.5000 +vn -0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 0.5000 +s off +f 52/1/1 64/2/1 60/3/1 +f 69/4/1 101/5/1 102/6/1 +f 70/7/1 102/8/1 103/9/1 +f 70/7/1 104/10/1 71/11/1 +f 71/11/1 105/12/1 72/13/1 +f 73/14/1 105/15/1 106/16/1 +f 74/17/1 106/18/1 107/19/1 +f 75/20/1 107/21/1 108/22/1 +f 75/20/1 109/23/1 76/24/1 +f 77/25/1 109/26/1 110/27/1 +f 78/28/1 110/29/1 111/30/1 +f 78/28/1 112/31/1 79/32/1 +f 79/32/1 113/33/1 80/34/1 +f 66/35/1 100/36/1 67/37/1 +f 81/38/1 113/39/1 114/40/1 +f 67/37/1 101/41/1 68/42/1 +f 81/38/1 99/43/1 66/35/1 +f 125/44/1 121/45/1 117/46/1 +f 133/47/2 132/48/2 134/49/2 +f 131/50/3 136/51/3 132/48/3 +f 135/52/4 131/53/4 133/54/4 +f 136/51/5 134/55/5 132/56/5 +f 137/57/1 139/58/1 141/59/1 +f 138/60/6 142/61/6 140/62/6 +f 142/63/7 137/57/7 141/59/7 +f 139/64/8 142/63/8 141/59/8 +f 144/65/9 152/66/9 148/67/9 +f 149/68/1 151/69/1 153/70/1 +f 158/71/1 190/72/1 191/73/1 +f 159/74/1 191/75/1 192/76/1 +f 159/74/1 193/77/1 160/78/1 +f 160/78/1 194/79/1 161/80/1 +f 162/81/1 194/82/1 195/83/1 +f 163/84/1 195/85/1 196/86/1 +f 164/87/1 196/88/1 197/89/1 +f 164/87/1 198/90/1 165/91/1 +f 166/92/1 198/93/1 199/94/1 +f 167/95/1 199/96/1 200/97/1 +f 167/95/1 201/98/1 168/99/1 +f 168/99/1 202/100/1 169/101/1 +f 155/102/1 189/103/1 156/104/1 +f 170/105/1 202/106/1 203/107/1 +f 156/104/1 190/108/1 157/109/1 +f 170/105/1 188/110/1 155/102/1 +f 210/111/1 208/112/1 206/113/1 +f 220/114/1 222/115/1 224/116/1 +f 221/117/10 225/118/10 223/119/10 +f 225/120/11 220/114/11 224/116/11 +f 222/121/12 225/120/12 224/116/12 +f 229/122/1 261/123/1 262/124/1 +f 230/125/1 262/126/1 263/127/1 +f 230/125/1 264/128/1 231/129/1 +f 231/129/1 265/130/1 232/131/1 +f 233/132/1 265/133/1 266/134/1 +f 234/135/1 266/136/1 267/137/1 +f 235/138/1 267/139/1 268/140/1 +f 235/138/1 269/141/1 236/142/1 +f 237/143/1 269/144/1 270/145/1 +f 237/143/1 271/146/1 238/147/1 +f 238/147/1 272/148/1 239/149/1 +f 239/149/1 273/150/1 240/151/1 +f 226/152/1 260/153/1 227/154/1 +f 241/155/1 273/156/1 274/157/1 +f 227/154/1 261/158/1 228/159/1 +f 241/155/1 259/160/1 226/152/1 +f 285/161/1 281/162/1 277/163/1 +f 291/164/1 293/165/1 295/166/1 +f 292/167/13 296/168/13 294/169/13 +f 296/170/14 291/164/14 295/166/14 +f 293/171/15 296/170/15 295/166/15 +f 300/172/1 332/173/1 333/174/1 +f 301/175/1 333/176/1 334/177/1 +f 301/175/1 335/178/1 302/179/1 +f 302/179/1 336/180/1 303/181/1 +f 304/182/1 336/183/1 337/184/1 +f 305/185/1 337/186/1 338/187/1 +f 306/188/1 338/189/1 339/190/1 +f 306/188/1 340/191/1 307/192/1 +f 308/193/1 340/194/1 341/195/1 +f 309/196/1 341/197/1 342/198/1 +f 309/196/1 343/199/1 310/200/1 +f 310/200/1 344/201/1 311/202/1 +f 297/203/1 331/204/1 298/205/1 +f 312/206/1 344/207/1 345/208/1 +f 298/205/1 332/209/1 299/210/1 +f 297/203/1 345/211/1 330/212/1 +f 356/213/1 352/214/1 348/215/1 +f 362/216/1 364/217/1 366/218/1 +f 363/219/16 367/220/16 365/221/16 +f 367/222/17 362/216/17 366/218/17 +f 364/223/18 367/222/18 366/218/18 +f 370/224/19 369/225/19 371/226/19 +f 368/227/20 373/228/20 369/225/20 +f 372/229/21 368/230/21 370/231/21 +f 373/228/22 371/232/22 369/233/22 +f 381/234/9 379/235/9 375/236/9 +f 380/237/1 382/238/1 384/239/1 +f 388/240/23 387/241/23 389/242/23 +f 386/243/24 391/244/24 387/241/24 +f 390/245/25 386/246/25 388/247/25 +f 391/244/26 389/248/26 387/249/26 +f 393/250/9 401/251/9 397/252/9 +f 398/253/1 400/254/1 402/255/1 +f 407/256/27 404/257/27 405/258/27 +f 404/257/28 409/259/28 405/258/28 +f 408/260/29 404/261/29 406/262/29 +f 409/259/30 407/263/30 405/264/30 +f 411/265/9 419/266/9 415/267/9 +f 416/268/1 418/269/1 420/270/1 +f 52/1/1 51/271/1 50/272/1 +f 50/272/1 65/273/1 52/1/1 +f 65/273/1 64/2/1 52/1/1 +f 64/2/1 63/274/1 62/275/1 +f 62/275/1 61/276/1 60/3/1 +f 60/3/1 59/277/1 58/278/1 +f 58/278/1 57/279/1 56/280/1 +f 56/280/1 55/281/1 52/1/1 +f 55/281/1 54/282/1 52/1/1 +f 54/282/1 53/283/1 52/1/1 +f 64/2/1 62/275/1 60/3/1 +f 60/3/1 58/278/1 52/1/1 +f 58/278/1 56/280/1 52/1/1 +f 69/4/1 68/284/1 101/5/1 +f 70/7/1 69/4/1 102/8/1 +f 70/7/1 103/285/1 104/10/1 +f 71/11/1 104/286/1 105/12/1 +f 73/14/1 72/13/1 105/15/1 +f 74/17/1 73/14/1 106/18/1 +f 75/20/1 74/17/1 107/21/1 +f 75/20/1 108/287/1 109/23/1 +f 77/25/1 76/24/1 109/26/1 +f 78/28/1 77/25/1 110/29/1 +f 78/28/1 111/288/1 112/31/1 +f 79/32/1 112/289/1 113/33/1 +f 66/35/1 99/290/1 100/36/1 +f 81/38/1 80/34/1 113/39/1 +f 67/37/1 100/291/1 101/41/1 +f 81/38/1 114/292/1 99/43/1 +f 117/46/1 116/293/1 115/294/1 +f 115/294/1 130/295/1 117/46/1 +f 130/295/1 129/296/1 117/46/1 +f 129/296/1 128/297/1 127/298/1 +f 127/298/1 126/299/1 125/44/1 +f 125/44/1 124/300/1 121/45/1 +f 124/300/1 123/301/1 121/45/1 +f 123/301/1 122/302/1 121/45/1 +f 121/45/1 120/303/1 119/304/1 +f 119/304/1 118/305/1 117/46/1 +f 129/296/1 127/298/1 117/46/1 +f 127/298/1 125/44/1 117/46/1 +f 121/45/1 119/304/1 117/46/1 +f 133/47/2 131/50/2 132/48/2 +f 131/50/3 135/52/3 136/51/3 +f 142/63/7 138/60/7 137/57/7 +f 139/64/8 140/306/8 142/63/8 +f 148/67/9 146/307/9 144/65/9 +f 144/65/9 154/308/9 152/66/9 +f 152/66/9 150/309/9 148/67/9 +f 153/70/1 143/310/1 145/311/1 +f 145/311/1 147/312/1 153/70/1 +f 147/312/1 149/68/1 153/70/1 +f 158/71/1 157/313/1 190/72/1 +f 159/74/1 158/71/1 191/75/1 +f 159/74/1 192/314/1 193/77/1 +f 160/78/1 193/315/1 194/79/1 +f 162/81/1 161/80/1 194/82/1 +f 163/84/1 162/81/1 195/85/1 +f 164/87/1 163/84/1 196/88/1 +f 164/87/1 197/316/1 198/90/1 +f 166/92/1 165/91/1 198/93/1 +f 167/95/1 166/92/1 199/96/1 +f 167/95/1 200/317/1 201/98/1 +f 168/99/1 201/318/1 202/100/1 +f 155/102/1 188/319/1 189/103/1 +f 170/105/1 169/101/1 202/106/1 +f 156/104/1 189/320/1 190/108/1 +f 170/105/1 203/321/1 188/110/1 +f 206/113/1 205/322/1 204/323/1 +f 204/323/1 219/324/1 218/325/1 +f 218/325/1 217/326/1 216/327/1 +f 216/327/1 215/328/1 214/329/1 +f 214/329/1 213/330/1 212/331/1 +f 212/331/1 211/332/1 210/111/1 +f 210/111/1 209/333/1 208/112/1 +f 208/112/1 207/334/1 206/113/1 +f 206/113/1 204/323/1 214/329/1 +f 204/323/1 218/325/1 214/329/1 +f 218/325/1 216/327/1 214/329/1 +f 214/329/1 212/331/1 206/113/1 +f 212/331/1 210/111/1 206/113/1 +f 225/120/11 221/117/11 220/114/11 +f 222/121/12 223/335/12 225/120/12 +f 229/122/1 228/336/1 261/123/1 +f 230/125/1 229/122/1 262/126/1 +f 230/125/1 263/337/1 264/128/1 +f 231/129/1 264/338/1 265/130/1 +f 233/132/1 232/131/1 265/133/1 +f 234/135/1 233/132/1 266/136/1 +f 235/138/1 234/135/1 267/139/1 +f 235/138/1 268/339/1 269/141/1 +f 237/143/1 236/142/1 269/144/1 +f 237/143/1 270/340/1 271/146/1 +f 238/147/1 271/341/1 272/148/1 +f 239/149/1 272/342/1 273/150/1 +f 226/152/1 259/343/1 260/153/1 +f 241/155/1 240/151/1 273/156/1 +f 227/154/1 260/344/1 261/158/1 +f 241/155/1 274/345/1 259/160/1 +f 277/163/1 276/346/1 275/347/1 +f 275/347/1 290/348/1 289/349/1 +f 289/349/1 288/350/1 287/351/1 +f 287/351/1 286/352/1 285/161/1 +f 285/161/1 284/353/1 281/162/1 +f 284/353/1 283/354/1 281/162/1 +f 283/354/1 282/355/1 281/162/1 +f 281/162/1 280/356/1 279/357/1 +f 279/357/1 278/358/1 277/163/1 +f 277/163/1 275/347/1 289/349/1 +f 289/349/1 287/351/1 277/163/1 +f 287/351/1 285/161/1 277/163/1 +f 281/162/1 279/357/1 277/163/1 +f 296/170/14 292/167/14 291/164/14 +f 293/171/15 294/359/15 296/170/15 +f 300/172/1 299/360/1 332/173/1 +f 301/175/1 300/172/1 333/176/1 +f 301/175/1 334/361/1 335/178/1 +f 302/179/1 335/362/1 336/180/1 +f 304/182/1 303/181/1 336/183/1 +f 305/185/1 304/182/1 337/186/1 +f 306/188/1 305/185/1 338/189/1 +f 306/188/1 339/363/1 340/191/1 +f 308/193/1 307/192/1 340/194/1 +f 309/196/1 308/193/1 341/197/1 +f 309/196/1 342/364/1 343/199/1 +f 310/200/1 343/365/1 344/201/1 +f 297/203/1 330/366/1 331/204/1 +f 312/206/1 311/202/1 344/207/1 +f 298/205/1 331/367/1 332/209/1 +f 297/203/1 312/206/1 345/211/1 +f 348/215/1 347/368/1 346/369/1 +f 346/369/1 361/370/1 348/215/1 +f 361/370/1 360/371/1 348/215/1 +f 360/371/1 359/372/1 358/373/1 +f 358/373/1 357/374/1 356/213/1 +f 356/213/1 355/375/1 352/214/1 +f 355/375/1 354/376/1 352/214/1 +f 354/376/1 353/377/1 352/214/1 +f 352/214/1 351/378/1 350/379/1 +f 350/379/1 349/380/1 348/215/1 +f 360/371/1 358/373/1 348/215/1 +f 358/373/1 356/213/1 348/215/1 +f 352/214/1 350/379/1 348/215/1 +f 367/222/17 363/219/17 362/216/17 +f 364/223/18 365/381/18 367/222/18 +f 370/224/19 368/227/19 369/225/19 +f 368/227/20 372/229/20 373/228/20 +f 379/235/9 377/382/9 375/236/9 +f 375/236/9 385/383/9 383/384/9 +f 383/384/9 381/234/9 375/236/9 +f 384/239/1 374/385/1 376/386/1 +f 376/386/1 378/387/1 384/239/1 +f 378/387/1 380/237/1 384/239/1 +f 388/240/23 386/243/23 387/241/23 +f 386/243/24 390/245/24 391/244/24 +f 397/252/9 395/388/9 393/250/9 +f 393/250/9 403/389/9 401/251/9 +f 401/251/9 399/390/9 397/252/9 +f 402/255/1 392/391/1 394/392/1 +f 394/392/1 396/393/1 402/255/1 +f 396/393/1 398/253/1 402/255/1 +f 407/256/27 406/394/27 404/257/27 +f 404/257/28 408/260/28 409/259/28 +f 415/267/9 413/395/9 411/265/9 +f 411/265/9 421/396/9 419/266/9 +f 419/266/9 417/397/9 415/267/9 +f 420/270/1 410/398/1 412/399/1 +f 412/399/1 414/400/1 420/270/1 +f 414/400/1 416/268/1 420/270/1 +s 1 +f 16/401/31 1/402/32 17/403/9 +f 15/404/33 16/401/31 17/405/9 +f 14/406/34 15/404/33 17/407/9 +f 13/408/35 14/406/34 17/409/9 +f 12/410/36 13/408/35 17/411/9 +f 11/412/37 12/410/36 17/413/9 +f 10/414/38 11/412/37 17/415/9 +f 9/416/39 10/414/38 17/417/9 +f 9/416/39 17/418/9 8/419/40 +f 7/420/41 8/419/40 17/421/9 +f 6/422/42 7/420/41 17/423/9 +f 5/424/43 6/422/42 17/425/9 +f 4/426/44 5/427/43 17/428/9 +f 3/429/45 4/426/44 17/430/9 +f 2/431/46 3/429/45 17/432/9 +f 1/402/32 2/431/46 17/433/9 +f 4/426/47 22/434/48 5/427/48 +f 12/410/49 30/435/50 13/408/50 +f 5/424/48 23/436/51 6/422/51 +f 13/408/50 31/437/52 14/406/52 +f 6/422/51 24/438/53 7/420/53 +f 14/406/52 32/439/54 15/404/54 +f 7/420/53 25/440/55 8/419/55 +f 15/404/54 33/441/56 16/401/56 +f 8/419/55 26/442/57 9/416/57 +f 1/402/58 19/443/59 2/431/59 +f 16/401/56 18/444/58 1/402/58 +f 9/416/57 27/445/60 10/414/60 +f 2/431/59 20/446/61 3/429/61 +f 10/414/60 28/447/62 11/412/62 +f 3/429/61 21/448/47 4/426/47 +f 11/412/62 29/449/49 12/410/49 +f 26/442/63 43/450/64 27/445/64 +f 19/443/65 36/451/66 20/446/66 +f 27/445/64 44/452/67 28/447/67 +f 20/446/66 37/453/68 21/448/68 +f 28/447/67 45/454/69 29/449/69 +f 21/448/68 38/455/70 22/434/70 +f 29/449/69 46/456/71 30/435/71 +f 22/457/70 39/458/72 23/436/72 +f 30/435/71 47/459/73 31/437/73 +f 23/436/72 40/460/74 24/438/74 +f 31/437/73 48/461/75 32/439/75 +f 24/438/74 41/462/76 25/440/76 +f 33/441/77 48/463/75 49/464/77 +f 25/440/76 42/465/63 26/442/63 +f 18/444/78 35/466/65 19/443/65 +f 33/441/77 34/467/78 18/444/78 +f 47/468/52 64/469/54 48/470/54 +f 40/471/53 57/472/55 41/473/55 +f 48/470/54 65/474/56 49/475/56 +f 41/473/55 58/476/57 42/477/57 +f 34/478/58 51/479/59 35/480/59 +f 49/475/56 50/481/58 34/478/58 +f 42/477/57 59/482/60 43/483/60 +f 35/480/59 52/484/61 36/485/61 +f 43/483/60 60/486/62 44/487/62 +f 36/485/61 53/488/47 37/489/47 +f 44/487/62 61/490/49 45/491/49 +f 37/489/47 54/492/48 38/493/48 +f 45/491/49 62/494/50 46/495/50 +f 38/496/48 55/497/51 39/458/51 +f 46/495/50 63/498/52 47/468/52 +f 39/458/51 56/499/53 40/471/53 +f 68/42/53 83/500/51 67/37/51 +f 76/24/54 91/501/52 75/20/52 +f 69/4/55 84/502/53 68/284/53 +f 77/25/56 92/503/54 76/24/54 +f 70/7/57 85/504/55 69/4/55 +f 78/28/58 93/505/56 77/25/56 +f 71/11/60 86/506/57 70/7/57 +f 79/32/59 94/507/58 78/28/58 +f 72/13/62 87/508/60 71/11/60 +f 80/34/61 95/509/59 79/32/59 +f 73/14/49 88/510/62 72/13/62 +f 81/38/47 96/511/61 80/34/61 +f 74/17/50 89/512/49 73/14/49 +f 67/37/51 82/513/48 66/35/48 +f 66/35/48 97/514/47 81/38/47 +f 75/20/52 90/515/50 74/17/50 +f 94/507/79 98/516/80 93/505/81 +f 92/503/82 93/505/81 98/517/80 +f 91/501/83 92/503/82 98/518/80 +f 90/515/84 91/501/83 98/519/80 +f 89/512/85 90/515/84 98/520/80 +f 88/510/86 89/512/85 98/521/80 +f 87/508/87 88/510/86 98/522/80 +f 86/506/88 87/508/87 98/523/80 +f 85/504/89 86/506/88 98/524/80 +f 84/502/90 85/504/89 98/525/80 +f 83/500/91 84/526/90 98/527/80 +f 82/513/92 83/500/91 98/528/80 +f 97/514/93 82/513/92 98/529/80 +f 96/511/94 97/514/93 98/530/80 +f 95/509/95 96/511/94 98/531/80 +f 94/507/79 95/509/95 98/532/80 +f 109/23/96 124/533/97 125/534/96 +f 109/26/96 126/535/98 110/27/98 +f 110/29/98 127/536/99 111/30/99 +f 111/288/99 128/537/100 112/31/100 +f 113/33/101 128/537/100 129/538/101 +f 100/36/102 115/539/103 116/540/102 +f 113/39/101 130/541/104 114/40/104 +f 100/291/102 117/542/105 101/41/105 +f 114/292/104 115/539/103 99/43/103 +f 102/6/106 117/543/105 118/544/106 +f 102/8/106 119/545/107 103/9/107 +f 103/285/107 120/546/108 104/10/108 +f 104/286/108 121/547/109 105/12/109 +f 105/15/109 122/548/110 106/16/110 +f 106/18/110 123/549/111 107/19/111 +f 107/21/111 124/533/97 108/22/97 +f 144/550/48 145/551/112 143/552/48 +f 146/553/112 147/554/113 145/551/112 +f 148/555/113 149/556/50 147/554/113 +f 150/557/50 151/558/114 149/556/50 +f 152/559/114 153/560/115 151/558/114 +f 154/561/115 143/552/48 153/562/115 +f 157/109/54 172/563/52 156/104/52 +f 165/91/53 180/564/51 164/87/51 +f 158/71/56 173/565/54 157/313/54 +f 166/92/55 181/566/53 165/91/53 +f 159/74/58 174/567/56 158/71/56 +f 167/95/57 182/568/55 166/92/55 +f 160/78/59 175/569/58 159/74/58 +f 168/99/60 183/570/57 167/95/57 +f 161/80/61 176/571/59 160/78/59 +f 169/101/62 184/572/60 168/99/60 +f 162/81/47 177/573/61 161/80/61 +f 170/105/49 185/574/62 169/101/62 +f 163/84/48 178/575/47 162/81/47 +f 156/104/52 171/576/50 155/102/50 +f 155/102/50 186/577/49 170/105/49 +f 164/87/51 179/578/48 163/84/48 +f 183/570/116 187/579/117 182/568/118 +f 181/566/119 182/568/118 187/580/117 +f 180/564/120 181/566/119 187/581/117 +f 179/578/121 180/564/120 187/582/117 +f 178/575/122 179/578/121 187/583/117 +f 177/573/123 178/575/122 187/584/117 +f 176/571/124 177/573/123 187/585/117 +f 175/569/125 176/571/124 187/586/117 +f 174/567/126 175/569/125 187/587/117 +f 173/565/127 174/567/126 187/588/117 +f 172/563/128 173/589/127 187/590/117 +f 171/576/129 172/563/128 187/591/117 +f 186/577/130 171/576/129 187/592/117 +f 185/574/131 186/577/130 187/593/117 +f 184/572/132 185/574/131 187/594/117 +f 183/570/116 184/572/132 187/595/117 +f 198/90/105 213/596/102 214/597/105 +f 198/93/105 215/598/106 199/94/106 +f 199/96/106 216/599/107 200/97/107 +f 201/98/108 216/599/107 217/600/108 +f 202/100/109 217/600/108 218/601/109 +f 188/319/111 205/602/97 189/103/97 +f 202/106/109 219/603/110 203/107/110 +f 190/108/96 205/602/97 206/604/96 +f 203/321/110 204/605/111 188/110/111 +f 190/72/96 207/606/98 191/73/98 +f 191/75/98 208/607/99 192/76/99 +f 192/314/99 209/608/100 193/77/100 +f 193/315/100 210/609/101 194/79/101 +f 194/82/101 211/610/104 195/83/104 +f 195/85/104 212/611/103 196/86/103 +f 196/88/103 213/596/102 197/89/102 +f 228/159/62 243/612/60 227/154/60 +f 236/142/61 251/613/59 235/138/59 +f 229/122/49 244/614/62 228/336/62 +f 237/143/47 252/615/61 236/142/61 +f 230/125/50 245/616/49 229/122/49 +f 238/147/48 253/617/47 237/143/47 +f 231/129/52 246/618/50 230/125/50 +f 239/149/51 254/619/48 238/147/48 +f 232/131/54 247/620/52 231/129/52 +f 240/151/53 255/621/51 239/149/51 +f 233/132/56 248/622/54 232/131/54 +f 241/155/55 256/623/53 240/151/53 +f 234/135/58 249/624/56 233/132/56 +f 227/154/60 242/625/57 226/152/57 +f 226/152/57 257/626/55 241/155/55 +f 235/138/59 250/627/58 234/135/58 +f 254/619/133 258/628/134 253/617/135 +f 252/615/136 253/617/135 258/629/134 +f 251/613/137 252/615/136 258/630/134 +f 250/627/138 251/613/137 258/631/134 +f 249/624/139 250/627/138 258/632/134 +f 248/622/140 249/624/139 258/633/134 +f 247/620/141 248/622/140 258/634/134 +f 246/618/142 247/620/141 258/635/134 +f 245/616/143 246/618/142 258/636/134 +f 244/614/144 245/616/143 258/637/134 +f 243/612/145 244/638/144 258/639/134 +f 242/625/146 243/612/145 258/640/134 +f 257/626/147 242/625/146 258/641/134 +f 256/623/148 257/626/147 258/642/134 +f 255/621/149 256/623/148 258/643/134 +f 254/619/133 255/621/149 258/644/134 +f 268/339/100 285/645/101 269/141/101 +f 269/144/101 286/646/104 270/145/104 +f 270/340/104 287/647/103 271/146/103 +f 271/341/103 288/648/102 272/148/102 +f 273/150/105 288/648/102 289/649/105 +f 259/343/107 276/650/108 260/153/108 +f 273/156/105 290/651/106 274/157/106 +f 260/344/108 277/652/109 261/158/109 +f 274/345/106 275/653/107 259/160/107 +f 262/124/110 277/654/109 278/655/110 +f 262/126/110 279/656/111 263/127/111 +f 263/337/111 280/657/97 264/128/97 +f 264/338/97 281/658/96 265/130/96 +f 265/133/96 282/659/98 266/134/98 +f 266/136/98 283/660/99 267/137/99 +f 267/139/99 284/661/100 268/140/100 +f 299/210/61 314/662/59 298/205/59 +f 307/192/62 322/663/60 306/188/60 +f 300/172/47 315/664/61 299/360/61 +f 308/193/49 323/665/62 307/192/62 +f 301/175/48 316/666/47 300/172/47 +f 309/196/50 324/667/49 308/193/49 +f 302/179/51 317/668/48 301/175/48 +f 310/200/52 325/669/50 309/196/50 +f 303/181/53 318/670/51 302/179/51 +f 311/202/54 326/671/52 310/200/52 +f 304/182/55 319/672/53 303/181/53 +f 312/206/56 327/673/54 311/202/54 +f 305/185/57 320/674/55 304/182/55 +f 298/205/59 313/675/58 297/203/58 +f 297/203/58 328/676/56 312/206/56 +f 306/188/60 321/677/57 305/185/57 +f 325/669/150 329/678/151 324/667/152 +f 323/665/153 324/667/152 329/679/151 +f 322/663/154 323/665/153 329/680/151 +f 321/677/155 322/663/154 329/681/151 +f 320/674/156 321/677/155 329/682/151 +f 319/672/157 320/674/156 329/683/151 +f 318/670/158 319/672/157 329/684/151 +f 317/668/159 318/670/158 329/685/151 +f 316/666/160 317/668/159 329/686/151 +f 315/664/161 316/666/160 329/687/151 +f 314/662/162 315/688/161 329/689/151 +f 313/675/163 314/662/162 329/690/151 +f 328/676/164 313/675/163 329/691/151 +f 327/673/165 328/676/164 329/692/151 +f 326/671/166 327/673/165 329/693/151 +f 325/669/150 326/671/166 329/694/151 +f 340/191/109 355/695/108 356/696/109 +f 340/194/109 357/697/110 341/195/110 +f 341/197/110 358/698/111 342/198/111 +f 343/199/97 358/698/111 359/699/97 +f 343/365/97 360/700/96 344/201/96 +f 330/366/99 347/701/100 331/204/100 +f 345/208/98 360/700/96 361/702/98 +f 332/209/101 347/701/100 348/703/101 +f 345/211/98 346/704/99 330/212/99 +f 333/174/104 348/705/101 349/706/104 +f 333/176/104 350/707/103 334/177/103 +f 335/178/102 350/707/103 351/708/102 +f 335/362/102 352/709/105 336/180/105 +f 336/183/105 353/710/106 337/184/106 +f 337/186/106 354/711/107 338/187/107 +f 338/189/107 355/695/108 339/190/108 +f 375/712/50 376/713/114 374/714/50 +f 377/715/114 378/716/115 376/713/114 +f 379/717/115 380/718/48 378/716/115 +f 381/719/48 382/720/112 380/718/48 +f 383/721/112 384/722/113 382/720/112 +f 385/723/113 374/714/50 384/724/113 +f 393/725/57 394/726/167 392/727/57 +f 395/728/167 396/729/168 394/726/167 +f 397/730/168 398/731/58 396/729/168 +f 399/732/58 400/733/169 398/731/58 +f 401/734/169 402/735/170 400/733/169 +f 403/736/170 392/727/57 402/737/170 +f 411/738/58 412/739/169 410/740/58 +f 413/741/169 414/742/170 412/739/169 +f 415/743/170 416/744/57 414/742/170 +f 417/745/57 418/746/167 416/744/57 +f 419/747/167 420/748/168 418/746/167 +f 421/749/168 410/740/58 420/750/168 +f 4/426/47 21/448/47 22/434/48 +f 12/410/49 29/449/49 30/435/50 +f 5/424/48 22/457/48 23/436/51 +f 13/408/50 30/435/50 31/437/52 +f 6/422/51 23/436/51 24/438/53 +f 14/406/52 31/437/52 32/439/54 +f 7/420/53 24/438/53 25/440/55 +f 15/404/54 32/439/54 33/441/56 +f 8/419/55 25/440/55 26/442/57 +f 1/402/58 18/444/58 19/443/59 +f 16/401/56 33/441/56 18/444/58 +f 9/416/57 26/442/57 27/445/60 +f 2/431/59 19/443/59 20/446/61 +f 10/414/60 27/445/60 28/447/62 +f 3/429/61 20/446/61 21/448/47 +f 11/412/62 28/447/62 29/449/49 +f 26/442/63 42/751/63 43/450/64 +f 19/443/65 35/752/65 36/451/66 +f 27/445/64 43/753/64 44/452/67 +f 20/446/66 36/754/66 37/453/68 +f 28/447/67 44/755/67 45/454/69 +f 21/448/68 37/756/68 38/455/70 +f 29/449/69 45/757/69 46/456/71 +f 22/457/70 38/496/70 39/458/72 +f 30/435/71 46/758/71 47/459/73 +f 23/436/72 39/759/72 40/460/74 +f 31/437/73 47/760/73 48/461/75 +f 24/438/74 40/761/74 41/462/76 +f 33/441/77 32/439/75 48/463/75 +f 25/440/76 41/762/76 42/465/63 +f 18/444/78 34/763/78 35/466/65 +f 33/441/77 49/764/77 34/467/78 +f 47/468/52 63/498/52 64/469/54 +f 40/471/53 56/499/53 57/472/55 +f 48/470/54 64/469/54 65/474/56 +f 41/473/55 57/472/55 58/476/57 +f 34/478/58 50/481/58 51/479/59 +f 49/475/56 65/474/56 50/481/58 +f 42/477/57 58/476/57 59/482/60 +f 35/480/59 51/479/59 52/484/61 +f 43/483/60 59/482/60 60/486/62 +f 36/485/61 52/484/61 53/488/47 +f 44/487/62 60/486/62 61/490/49 +f 37/489/47 53/488/47 54/492/48 +f 45/491/49 61/490/49 62/494/50 +f 38/496/48 54/765/48 55/497/51 +f 46/495/50 62/494/50 63/498/52 +f 39/458/51 55/497/51 56/499/53 +f 68/42/53 84/526/53 83/500/51 +f 76/24/54 92/503/54 91/501/52 +f 69/4/55 85/504/55 84/502/53 +f 77/25/56 93/505/56 92/503/54 +f 70/7/57 86/506/57 85/504/55 +f 78/28/58 94/507/58 93/505/56 +f 71/11/60 87/508/60 86/506/57 +f 79/32/59 95/509/59 94/507/58 +f 72/13/62 88/510/62 87/508/60 +f 80/34/61 96/511/61 95/509/59 +f 73/14/49 89/512/49 88/510/62 +f 81/38/47 97/514/47 96/511/61 +f 74/17/50 90/515/50 89/512/49 +f 67/37/51 83/500/51 82/513/48 +f 66/35/48 82/513/48 97/514/47 +f 75/20/52 91/501/52 90/515/50 +f 109/23/96 108/287/97 124/533/97 +f 109/26/96 125/534/96 126/535/98 +f 110/29/98 126/535/98 127/536/99 +f 111/288/99 127/536/99 128/537/100 +f 113/33/101 112/289/100 128/537/100 +f 100/36/102 99/290/103 115/539/103 +f 113/39/101 129/538/101 130/541/104 +f 100/291/102 116/540/102 117/542/105 +f 114/292/104 130/541/104 115/539/103 +f 102/6/106 101/5/105 117/543/105 +f 102/8/106 118/544/106 119/545/107 +f 103/285/107 119/545/107 120/546/108 +f 104/286/108 120/546/108 121/547/109 +f 105/15/109 121/547/109 122/548/110 +f 106/18/110 122/548/110 123/549/111 +f 107/21/111 123/549/111 124/533/97 +f 144/550/48 146/553/112 145/551/112 +f 146/553/112 148/555/113 147/554/113 +f 148/555/113 150/557/50 149/556/50 +f 150/557/50 152/559/114 151/558/114 +f 152/559/114 154/766/115 153/560/115 +f 154/561/115 144/550/48 143/552/48 +f 157/109/54 173/589/54 172/563/52 +f 165/91/53 181/566/53 180/564/51 +f 158/71/56 174/567/56 173/565/54 +f 166/92/55 182/568/55 181/566/53 +f 159/74/58 175/569/58 174/567/56 +f 167/95/57 183/570/57 182/568/55 +f 160/78/59 176/571/59 175/569/58 +f 168/99/60 184/572/60 183/570/57 +f 161/80/61 177/573/61 176/571/59 +f 169/101/62 185/574/62 184/572/60 +f 162/81/47 178/575/47 177/573/61 +f 170/105/49 186/577/49 185/574/62 +f 163/84/48 179/578/48 178/575/47 +f 156/104/52 172/563/52 171/576/50 +f 155/102/50 171/576/50 186/577/49 +f 164/87/51 180/564/51 179/578/48 +f 198/90/105 197/316/102 213/596/102 +f 198/93/105 214/597/105 215/598/106 +f 199/96/106 215/598/106 216/599/107 +f 201/98/108 200/317/107 216/599/107 +f 202/100/109 201/318/108 217/600/108 +f 188/319/111 204/605/111 205/602/97 +f 202/106/109 218/601/109 219/603/110 +f 190/108/96 189/320/97 205/602/97 +f 203/321/110 219/603/110 204/605/111 +f 190/72/96 206/767/96 207/606/98 +f 191/75/98 207/606/98 208/607/99 +f 192/314/99 208/607/99 209/608/100 +f 193/315/100 209/608/100 210/609/101 +f 194/82/101 210/609/101 211/610/104 +f 195/85/104 211/610/104 212/611/103 +f 196/88/103 212/611/103 213/596/102 +f 228/159/62 244/638/62 243/612/60 +f 236/142/61 252/615/61 251/613/59 +f 229/122/49 245/616/49 244/614/62 +f 237/143/47 253/617/47 252/615/61 +f 230/125/50 246/618/50 245/616/49 +f 238/147/48 254/619/48 253/617/47 +f 231/129/52 247/620/52 246/618/50 +f 239/149/51 255/621/51 254/619/48 +f 232/131/54 248/622/54 247/620/52 +f 240/151/53 256/623/53 255/621/51 +f 233/132/56 249/624/56 248/622/54 +f 241/155/55 257/626/55 256/623/53 +f 234/135/58 250/627/58 249/624/56 +f 227/154/60 243/612/60 242/625/57 +f 226/152/57 242/625/57 257/626/55 +f 235/138/59 251/613/59 250/627/58 +f 268/339/100 284/661/100 285/645/101 +f 269/144/101 285/645/101 286/646/104 +f 270/340/104 286/646/104 287/647/103 +f 271/341/103 287/647/103 288/648/102 +f 273/150/105 272/342/102 288/648/102 +f 259/343/107 275/653/107 276/650/108 +f 273/156/105 289/649/105 290/651/106 +f 260/344/108 276/650/108 277/652/109 +f 274/345/106 290/651/106 275/653/107 +f 262/124/110 261/123/109 277/654/109 +f 262/126/110 278/655/110 279/656/111 +f 263/337/111 279/656/111 280/657/97 +f 264/338/97 280/657/97 281/658/96 +f 265/133/96 281/658/96 282/659/98 +f 266/136/98 282/659/98 283/660/99 +f 267/139/99 283/660/99 284/661/100 +f 299/210/61 315/688/61 314/662/59 +f 307/192/62 323/665/62 322/663/60 +f 300/172/47 316/666/47 315/664/61 +f 308/193/49 324/667/49 323/665/62 +f 301/175/48 317/668/48 316/666/47 +f 309/196/50 325/669/50 324/667/49 +f 302/179/51 318/670/51 317/668/48 +f 310/200/52 326/671/52 325/669/50 +f 303/181/53 319/672/53 318/670/51 +f 311/202/54 327/673/54 326/671/52 +f 304/182/55 320/674/55 319/672/53 +f 312/206/56 328/676/56 327/673/54 +f 305/185/57 321/677/57 320/674/55 +f 298/205/59 314/662/59 313/675/58 +f 297/203/58 313/675/58 328/676/56 +f 306/188/60 322/663/60 321/677/57 +f 340/191/109 339/363/108 355/695/108 +f 340/194/109 356/696/109 357/697/110 +f 341/197/110 357/697/110 358/698/111 +f 343/199/97 342/364/111 358/698/111 +f 343/365/97 359/699/97 360/700/96 +f 330/366/99 346/704/99 347/701/100 +f 345/208/98 344/207/96 360/700/96 +f 332/209/101 331/367/100 347/701/100 +f 345/211/98 361/702/98 346/704/99 +f 333/174/104 332/173/101 348/705/101 +f 333/176/104 349/706/104 350/707/103 +f 335/178/102 334/361/103 350/707/103 +f 335/362/102 351/708/102 352/709/105 +f 336/183/105 352/709/105 353/710/106 +f 337/186/106 353/710/106 354/711/107 +f 338/189/107 354/711/107 355/695/108 +f 375/712/50 377/715/114 376/713/114 +f 377/715/114 379/717/115 378/716/115 +f 379/717/115 381/719/48 380/718/48 +f 381/719/48 383/721/112 382/720/112 +f 383/721/112 385/768/113 384/722/113 +f 385/723/113 375/712/50 374/714/50 +f 393/725/57 395/728/167 394/726/167 +f 395/728/167 397/730/168 396/729/168 +f 397/730/168 399/732/58 398/731/58 +f 399/732/58 401/734/169 400/733/169 +f 401/734/169 403/769/170 402/735/170 +f 403/736/170 393/725/57 392/727/57 +f 411/738/58 413/741/169 412/739/169 +f 413/741/169 415/743/170 414/742/170 +f 415/743/170 417/745/57 416/744/57 +f 417/745/57 419/747/167 418/746/167 +f 419/747/167 421/770/168 420/748/168 +f 421/749/168 411/738/58 410/740/58 diff --git a/src/main/resources/assets/hbm/textures/models/missile_abm.png b/src/main/resources/assets/hbm/textures/models/missile_abm.png new file mode 100644 index 0000000000000000000000000000000000000000..0b56f1d54b0f99956e42aeaf6e77fd6d0b2eab75 GIT binary patch literal 1320 zcmV+@1=sqCP)v5uoK5I`r$SKkU<2TFO>N=HXab03i|)k)j!N8J8Ln*D|= z(xj!!N|9E&a)n#OeL=1=0@gMRwy_ONmoK)T!7GAEA_*pmB$ypFxe+ z*F|qfk|bI5hPuhJ?EdiZ0000@(*XAG>-CBnypuFdwLQE|E|<$9S&L{`P?jb4MAyrU zqPS;SW;|8(Nns)r^`*QhihEHM#uT@Ee}DHnfp|C^q`peGseWoX;Wm!U==Sr1z>*AG}sK2Tz>A778uj=pt07#za?E~oeQr$1Z>M~uw zh%sf(AsXITrOArEjOqHj$jnZMNw(=7UFIUH%XIyWG);wanQSVgYbL6d4X5gJpxoZ7O z;C()9;l+VeUs*ERztO6g(hf1WB_R4t2Di9L`R2LXi++2vN#%;6o z%U$nN)Q7`CD#uRA9K-u4*`=;)sOwsKjw;?qNk(1Q@bU4{9>;MkJXeKPnB-7d008^_ z9^yDQW0HaCtU_UN9K(LUZ;x5)GQnyV8g&(fQI=>|1<`H=t5Fz$IY-~cdxbqeKTGAu z<54RA`r`**aJzAfSK-4LNs<`v`Fr2O7)g@!2Ir=Re5+_-LuI9DYOJNLLSaj?iq&kC z(q1N&&HXaLCm-h8IB{xuS3xFIR-Y8+QZ^M^zC>=%`aFH?lu6r2(>v@JGcETC=}Qpy zg-pwRf;$;yY%+-nxi7Q|>zWPEgiOnQp;g$hr#!^8+!w5mB~Pc5-4yxxj5<9GjgUyU zk{RR^OYdf7z0MIwp%jL4O{?^DgnAIg&mfgMIDOi+q*lv*EEd(mLe6 z5y_H$lu~IjP>0-Qf=MFbndIgbhII>@R~Ts+l-zkXRep}DDzP!AMpV|_#ITo$L!aV(H|8kK4j7KVy@}_B|*P4bochq#Ju}EcF e?gCT)6Y76p?&a-c^j_=$0000 Date: Thu, 23 Nov 2023 15:40:35 +0100 Subject: [PATCH 120/207] =?UTF-8?q?ABMs=20with=20Sm=D0=AFt=E2=84=A2=20pred?= =?UTF-8?q?ictive=20targeting=20technology?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog | 6 + .../missile/EntityMissileAntiBallistic.java | 317 +++++++++------ .../entity/missile/EntityMissileBaseNT.java | 1 + .../entity/missile/EntityMissileCustom.java | 2 +- .../container/ContainerMachineRadar.java | 24 -- .../hbm/inventory/gui/GUIMachineRadar.java | 143 ------- .../java/com/hbm/packet/PacketDispatcher.java | 6 - .../com/hbm/packet/TEDrillSoundPacket.java | 62 --- .../java/com/hbm/packet/TEMissilePacket.java | 124 ------ .../java/com/hbm/packet/TERadarPacket.java | 78 ---- .../tileentity/RenderLaunchPadTier1.java | 371 ++++++++---------- .../tileentity/bomb/TileEntityLaunchPad.java | 31 +- .../machine/TileEntityMachineRadar.java | 342 ---------------- .../machine/TileEntityPWRController.java | 153 ++++---- 14 files changed, 480 insertions(+), 1180 deletions(-) delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineRadar.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineRadar.java delete mode 100644 src/main/java/com/hbm/packet/TEDrillSoundPacket.java delete mode 100644 src/main/java/com/hbm/packet/TEMissilePacket.java delete mode 100644 src/main/java/com/hbm/packet/TERadarPacket.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java diff --git a/changelog b/changelog index 67de8712b..8898e8c88 100644 --- a/changelog +++ b/changelog @@ -26,6 +26,12 @@ * Trenchmaster armor is now unbreakable * The arc welder recipe for advanced circuits now uses simple insulator instead of gold dust * The arc welder recipes for enhanced and advanced circuits now use only 100mB of fluid instead of 250mB +* Completely rewrote the missile base code, missiles now accelerate smoothly instead of in increments and use interpolated movement, making them less jittery +* Missiles now have a slightly higher top-speed +* Remodeled the anti-ballistic missile +* Anti-ballistic missiles now use predictive targeting as well as a heightened sensor range of 1,000 blocks (instead of 500) which should make them a lot more effective +* Anti-ballistic missiles accelerate 4x faster than normal missiles and have a 50% higher top-speed +* PWRs that have recently been close to unloaded chunks now have a 40 tick timeframe where they are "frozen", only trying to connect to a fluid network but not doing any fission, this should reduce the amount of meltdowns caused by chunkloading ## Fixed * Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index 40083b324..8c0ca9511 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -1,168 +1,229 @@ package com.hbm.entity.missile; +import java.util.ArrayList; import java.util.List; -import com.hbm.entity.particle.EntitySmokeFX; +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.entity.projectile.EntityThrowableInterp; import com.hbm.explosion.ExplosionLarge; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import api.hbm.entity.IRadarDetectable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; -import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; -/* - * COME ON - * STEP 1: GET 24 EGGS - * STEP 2: FUCK EVERY EGG - * STEP 3: BLOW UP ALL THE FUCKING EGGS - * AND FROM THE ASHES THE MOTHER OF ALL OMELETTES WILL BE BORN! - */ -public class EntityMissileAntiBallistic extends Entity implements IRadarDetectable { +public class EntityMissileAntiBallistic extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable { - int activationTimer; + private Ticket loaderTicket; + public Entity tracking; + public double velocity; + protected int activationTimer; + + public static double baseSpeed = 1.5D; - public EntityMissileAntiBallistic(World p_i1582_1_) { - super(p_i1582_1_); - } - - @Override - public void onUpdate() { - - if(activationTimer < 40) { - activationTimer++; - - motionY = 1.5D; - - this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - this.rotation(); - - if(!this.worldObj.isRemote && this.posY < 400) - this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - - } else { - - if(activationTimer == 40) { - ExplosionLarge.spawnParticlesRadial(worldObj, posX, posY, posZ, 15); - activationTimer = 100; - } - - for(int i = 0; i < 5; i++) { - - targetMissile(); - - this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - this.rotation(); - - if(!this.worldObj.isRemote && this.posY < 400) - this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5)); - - for(Entity e : list) { - if(e instanceof EntityMissileBaseNT || e instanceof EntityMissileCustom) { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 15F, true, false, true); - this.setDead(); - return; - } - } - } - } - - if(this.posY > 2000) - this.setDead(); - - if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.water && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.flowing_water) { - - if(!this.worldObj.isRemote) { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 10F, true, true, true); - } - this.setDead(); - return; - } - - } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { - ; - } - - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } - } - - private void targetMissile() { - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 500, 0, posZ - 500, posX + 500, 5000, posZ + 500)); - - Entity target = null; - double closest = 1000D; - - for(Entity e : list) { - if(e instanceof EntityMissileBaseNT || e instanceof EntityMissileCustom) { - double dis = Math.sqrt(Math.pow(e.posX - posX, 2) + Math.pow(e.posY - posY, 2) + Math.pow(e.posZ - posZ, 2)); - - if(dis < closest) { - closest = dis; - target = e; - } - } - } - - if(target != null) { - - Vec3 vec = Vec3.createVectorHelper(target.posX - posX, target.posY - posY, target.posZ - posZ); - - vec.normalize(); - - this.motionX = vec.xCoord * 0.065D; - this.motionY = vec.yCoord * 0.065D; - this.motionZ = vec.zCoord * 0.065D; - } + public EntityMissileAntiBallistic(World world) { + super(world); + this.setSize(1.5F, 1.5F); + this.motionY = baseSpeed; } @Override protected void entityInit() { - + super.entityInit(); + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); } @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { - + protected double motionMult() { + return velocity; } @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { + public boolean doesImpactEntities() { + return false; + } + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + if(velocity < 6) velocity += 0.1; + + if(activationTimer < 40) { + activationTimer++; + motionY = baseSpeed; + } else { + Entity prevTracking = this.tracking; + + if(this.tracking == null || this.tracking.isDead) this.targetMissile(); + + if(prevTracking == null && this.tracking != null) { + ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 24, 3F); + } + + if(this.tracking != null) { + this.aimAtTarget(); + } + } + + if(this.posY > 2000 && (this.tracking == null || this.tracking.isDead)) this.setDead(); + + } else { + + Vec3 vec = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); + MainRegistry.proxy.particleControl(posX - vec.xCoord, posY - vec.yCoord, posZ - vec.zCoord, 2); + } + + float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F); + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) this.prevRotationPitch += 360.0F; + while(this.rotationYaw - this.prevRotationYaw < -180.0F) this.prevRotationYaw -= 360.0F; + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) this.prevRotationYaw += 360.0F; + } + + /** Detects and caches nearby EntityMissileBaseNT */ + protected void targetMissile() { + + Entity closest = null; + double dist = 1_000; + + for(Entity e : TileEntityMachineRadarNT.matchingEntities) { + if(e.dimension != this.dimension) continue; + if(!(e instanceof EntityMissileBaseNT)) continue; + + Vec3 vec = Vec3.createVectorHelper(e.posX - posX, e.posY - posY, e.posZ - posZ); + + if(vec.lengthVector() < dist) { + closest = e; + } + } + + this.tracking = closest; + } + + /** Predictive targeting system */ + protected void aimAtTarget() { + + Vec3 delta = Vec3.createVectorHelper(tracking.posX - posX, tracking.posY - posY, tracking.posZ - posZ); + double intercept = delta.lengthVector() / (this.baseSpeed * this.velocity); + Vec3 predicted = Vec3.createVectorHelper(tracking.posX + (tracking.posX - tracking.lastTickPosX) * intercept, tracking.posY + (tracking.posY - tracking.lastTickPosY) * intercept, tracking.posZ + (tracking.posZ - tracking.lastTickPosZ) * intercept); + Vec3 motion = Vec3.createVectorHelper(predicted.xCoord - posX, predicted.yCoord - posY, predicted.zCoord - posZ).normalize(); + + if(delta.lengthVector() < 10 && activationTimer >= 40) { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 15F, true, false, false); + this.killAndClear(); + } + + this.motionX = motion.xCoord * baseSpeed; + this.motionY = motion.yCoord * baseSpeed; + this.motionZ = motion.zCoord * baseSpeed; + } + + @Override + protected void onImpact(MovingObjectPosition mop) { + if(this.activationTimer >= 40) { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 20F, true, false, false); + this.killAndClear(); + } + } + + @Override + public double getGravityVelocity() { + return 0.0D; + } + + @Override + protected float getAirDrag() { + return 1F; + } + + @Override + protected float getWaterDrag() { + return 1F; + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.velocity = nbt.getDouble("veloc"); + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setDouble("veloc", this.velocity); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote) { + + if(ticket != null) { + + if(loaderTicket == null) { + + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + } + + List loadedChunks = new ArrayList(); + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + + clearChunkLoader(); + + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + //loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX * this.motionMult()) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ * this.motionMult()) / 16D))); + + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + } + + public void killAndClear() { + this.setDead(); + this.clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } } @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { - return distance < 500000; + return true; } @Override public RadarTargetType getTargetType() { return RadarTargetType.MISSILE_AB; } - } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index 45a904538..aa45fc7ef 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -237,6 +237,7 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen return 1F; } + @Override public void init(Ticket ticket) { if(!worldObj.isRemote) { diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index 65d5b0142..79d7c21c5 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -229,7 +229,7 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return RadarTargetType.MISSILE_15_20; if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return RadarTargetType.MISSILE_20; - return RadarTargetType.PLAYER; + return RadarTargetType.MISSILE_TIER1; } @Override public List getDebris() { return new ArrayList(); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRadar.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRadar.java deleted file mode 100644 index 5599c4f76..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineRadar.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.tileentity.machine.TileEntityMachineRadar; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; - -public class ContainerMachineRadar extends Container { - - public ContainerMachineRadar(InventoryPlayer invPlayer, TileEntityMachineRadar tedf) { - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return true; - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadar.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadar.java deleted file mode 100644 index 4cd9db8d5..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadar.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.hbm.inventory.gui; - -import java.util.Arrays; - -import org.lwjgl.opengl.GL11; - -import com.hbm.config.WeaponConfig; -import com.hbm.inventory.container.ContainerMachineRadar; -import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.machine.TileEntityMachineRadar; -import com.hbm.util.I18nUtil; - -import api.hbm.entity.IRadarDetectable.RadarTargetType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUIMachineRadar extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar.png"); - private TileEntityMachineRadar diFurnace; - - public GUIMachineRadar(InventoryPlayer invPlayer, TileEntityMachineRadar tedf) { - super(new ContainerMachineRadar(invPlayer, tedf)); - diFurnace = tedf; - texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar.png"); - - this.xSize = 216; - this.ySize = 234; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 221, 200, 7, diFurnace.power, diFurnace.maxPower); - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 10, guiTop + 98, 8, 8, mouseX, mouseY, I18nUtil.resolveKeyArray("radar.detectMissiles") ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 10, guiTop + 108, 8, 8, mouseX, mouseY, I18nUtil.resolveKeyArray("radar.detectPlayers")); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 10, guiTop + 118, 8, 8, mouseX, mouseY, I18nUtil.resolveKeyArray("radar.smartMode")); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 10, guiTop + 128, 8, 8, mouseX, mouseY, I18nUtil.resolveKeyArray("radar.redMode")); - - if(!diFurnace.nearbyMissiles.isEmpty()) { - for(int[] m : diFurnace.nearbyMissiles) { - int x = guiLeft + (int)((m[0] - diFurnace.xCoord) / ((double)WeaponConfig.radarRange * 2 + 1) * (200D - 8D)) + 108; - int z = guiTop + (int)((m[1] - diFurnace.zCoord) / ((double)WeaponConfig.radarRange * 2 + 1) * (200D - 8D)) + 117; - - if(mouseX + 4 > x && mouseX - 4 < x && - mouseY + 4 > z && mouseY - 4 < z) { - - - String[] text = new String[] { RadarTargetType.values()[m[2]].name, m[0] + " / " + m[1], "Alt.: " + m[3] }; - - this.func_146283_a(Arrays.asList(text), x, z); - - return; - } - } - } - } - - @Override - protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - if(guiLeft -10 <= x && guiLeft + -10 + 8 > x && guiTop + 98 < y && guiTop + 98 + 8 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, 0, 0)); - } - - if(guiLeft -10 <= x && guiLeft + -10 + 8 > x && guiTop + 108 < y && guiTop + 108 + 8 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, 0, 1)); - } - - if(guiLeft -10 <= x && guiLeft + -10 + 8 > x && guiTop + 118 < y && guiTop + 118 + 8 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, 0, 2)); - } - - if(guiLeft -10 <= x && guiLeft + -10 + 8 > x && guiTop + 128 < y && guiTop + 128 + 8 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord, 0, 3)); - } - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = I18n.format("container.radar"); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - drawTexturedModalRect(guiLeft - 14, guiTop + 94, 216, 198, 14, 46); - - if(diFurnace.scanMissiles || (diFurnace.jammed && diFurnace.getWorldObj().rand.nextBoolean())) - drawTexturedModalRect(guiLeft - 10, guiTop + 98, 230, 202, 8, 8); - - if(diFurnace.scanPlayers || (diFurnace.jammed && diFurnace.getWorldObj().rand.nextBoolean())) - drawTexturedModalRect(guiLeft - 10, guiTop + 108, 230, 212, 8, 8); - - if(diFurnace.smartMode || (diFurnace.jammed && diFurnace.getWorldObj().rand.nextBoolean())) - drawTexturedModalRect(guiLeft - 10, guiTop + 118, 230, 222, 8, 8); - - if(diFurnace.redMode || (diFurnace.jammed && diFurnace.getWorldObj().rand.nextBoolean())) - drawTexturedModalRect(guiLeft - 10, guiTop + 128, 230, 232, 8, 8); - - if(diFurnace.power > 0) { - int i = (int)diFurnace.getPowerScaled(200); - drawTexturedModalRect(guiLeft + 8, guiTop + 221, 0, 234, i, 16); - } - - if(diFurnace.jammed) { - - for(int i = 0; i < 5; i++) { - for(int j = 0; j < 5; j++) { - drawTexturedModalRect(guiLeft + 8 + i * 40, guiTop + 17 + j * 40, 216, 118 + diFurnace.getWorldObj().rand.nextInt(41), 40, 40); - } - } - - return; - } - - if(!diFurnace.nearbyMissiles.isEmpty()) { - for(int[] m : diFurnace.nearbyMissiles) { - int x = (int)((m[0] - diFurnace.xCoord) / ((double)WeaponConfig.radarRange * 2 + 1) * (200D - 8D)) - 4; - int z = (int)((m[1] - diFurnace.zCoord) / ((double)WeaponConfig.radarRange * 2 + 1) * (200D - 8D)) - 4; - int t = m[2]; - - drawTexturedModalRect(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8); - } - } - } -} diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index d56e9407a..9414d49a0 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -19,10 +19,6 @@ public class PacketDispatcher { wrapper.registerMessage(TEStructurePacket.Handler.class, TEStructurePacket.class, i++, Side.CLIENT); //Mining drill rotation for rendering wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, i++, Side.CLIENT); - //Mining drill torque for sounds - wrapper.registerMessage(TEDrillSoundPacket.Handler.class, TEDrillSoundPacket.class, i++, Side.CLIENT); - //Missile type for rendering - wrapper.registerMessage(TEMissilePacket.Handler.class, TEMissilePacket.class, i++, Side.CLIENT); //Fluid packet for GUI wrapper.registerMessage(TEFluidPacket.Handler.class, TEFluidPacket.class, i++, Side.CLIENT); //Sound packet that keeps client and server separated @@ -35,8 +31,6 @@ public class PacketDispatcher { wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); //Signals server to change ItemStacks wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); - //Siren packet for looped sounds - wrapper.registerMessage(TERadarPacket.Handler.class, TERadarPacket.class, i++, Side.CLIENT); //Signals server to perform orbital strike, among other things wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); //Universal package for sending small info packs back to server diff --git a/src/main/java/com/hbm/packet/TEDrillSoundPacket.java b/src/main/java/com/hbm/packet/TEDrillSoundPacket.java deleted file mode 100644 index 5e8ba4a6c..000000000 --- a/src/main/java/com/hbm/packet/TEDrillSoundPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEDrillSoundPacket implements IMessage { - - int x; - int y; - int z; - float spin; - - public TEDrillSoundPacket() - { - - } - - public TEDrillSoundPacket(int x, int y, int z, float spin) - { - this.x = x; - this.y = y; - this.z = z; - this.spin = spin; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - spin = buf.readFloat(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeFloat(spin); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEDrillSoundPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineMiningDrill) { - - TileEntityMachineMiningDrill gen = (TileEntityMachineMiningDrill) te; - gen.torque = m.spin; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TEMissilePacket.java b/src/main/java/com/hbm/packet/TEMissilePacket.java deleted file mode 100644 index 86933573a..000000000 --- a/src/main/java/com/hbm/packet/TEMissilePacket.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.hbm.packet; - -import com.hbm.interfaces.Spaghetti; -import com.hbm.items.ModItems; -import com.hbm.tileentity.bomb.TileEntityLaunchPad; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; - -public class TEMissilePacket implements IMessage { - - int x; - int y; - int z; - int type; - - public TEMissilePacket() { } - - @Spaghetti("die") - public TEMissilePacket(int x, int y, int z, ItemStack stack) { - - this.x = x; - this.y = y; - this.z = z; - this.type = 0; - if(stack != null) { - if(stack.getItem() == ModItems.missile_generic) - type = 1; - if(stack.getItem() == ModItems.missile_strong) - type = 2; - if(stack.getItem() == ModItems.missile_cluster) - type = 3; - if(stack.getItem() == ModItems.missile_nuclear) - type = 4; - if(stack.getItem() == ModItems.missile_incendiary) - type = 5; - if(stack.getItem() == ModItems.missile_buster) - type = 6; - if(stack.getItem() == ModItems.missile_incendiary_strong) - type = 7; - if(stack.getItem() == ModItems.missile_cluster_strong) - type = 8; - if(stack.getItem() == ModItems.missile_buster_strong) - type = 9; - if(stack.getItem() == ModItems.missile_burst) - type = 10; - if(stack.getItem() == ModItems.missile_inferno) - type = 11; - if(stack.getItem() == ModItems.missile_rain) - type = 12; - if(stack.getItem() == ModItems.missile_drill) - type = 13; - if(stack.getItem() == ModItems.missile_endo) - type = 14; - if(stack.getItem() == ModItems.missile_exo) - type = 15; - if(stack.getItem() == ModItems.missile_nuclear_cluster) - type = 16; - if(stack.getItem() == ModItems.missile_doomsday) - type = 17; - if(stack.getItem() == ModItems.missile_taint) - type = 18; - if(stack.getItem() == ModItems.missile_micro) - type = 19; - if(stack.getItem() == ModItems.missile_carrier) - type = 20; - if(stack.getItem() == ModItems.missile_anti_ballistic) - type = 21; - if(stack.getItem() == ModItems.missile_bhole) - type = 22; - if(stack.getItem() == ModItems.missile_schrabidium) - type = 23; - if(stack.getItem() == ModItems.missile_emp) - type = 24; - if(stack.getItem() == ModItems.missile_emp_strong) - type = 25; - if(stack.getItem() == ModItems.missile_volcano) - type = 26; - if(stack.getItem() == ModItems.missile_shuttle) - type = 27; - - } - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - type = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(type); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEMissilePacket m, MessageContext ctx) { - - try { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityLaunchPad) { - - TileEntityLaunchPad gen = (TileEntityLaunchPad)te; - gen.state = m.type; - } - } catch(Exception e) { } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TERadarPacket.java b/src/main/java/com/hbm/packet/TERadarPacket.java deleted file mode 100644 index 661438627..000000000 --- a/src/main/java/com/hbm/packet/TERadarPacket.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineRadar; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TERadarPacket implements IMessage { - - int x; - int y; - int z; - int conX; - int conY; - int conZ; - int alt; - - public TERadarPacket() { - - } - - public TERadarPacket(int x, int y, int z, int conX, int conY, int conZ, int alt) { - this.x = x; - this.y = y; - this.z = z; - this.conX = conX; - this.conY = conY; - this.conZ = conZ; - this.alt = alt; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - conX = buf.readInt(); - conY = buf.readInt(); - conZ = buf.readInt(); - alt = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(conX); - buf.writeInt(conY); - buf.writeInt(conZ); - buf.writeInt(alt); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(TERadarPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - try { - if (te != null && te instanceof TileEntityMachineRadar) { - - TileEntityMachineRadar radar = (TileEntityMachineRadar) te; - radar.nearbyMissiles.add(new int[]{m.conX, m.conY, m.conZ, m.alt}); - } - } catch (Exception x) { - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index fe1adcf1e..5ccfc1900 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -2,213 +2,190 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import com.hbm.items.ModItems; import com.hbm.main.ResourceManager; import com.hbm.tileentity.bomb.TileEntityLaunchPad; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - - bindTexture(ResourceManager.missile_pad_tex); - ResourceManager.missile_pad.renderAll(); + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_CULL_FACE); - int state = 0; - - if(tileEntity instanceof TileEntityLaunchPad) - state = ((TileEntityLaunchPad)tileEntity).state; - - GL11.glTranslated(0, 1, 0); - - if(state == 1) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileV2_HE_tex); - ResourceManager.missileV2.renderAll(); - } - if(state == 2) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_HE_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 3) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileV2_CL_tex); - ResourceManager.missileV2.renderAll(); - } - if(state == 4) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileNuclear_tex); - ResourceManager.missileNuclear.renderAll(); - } - if(state == 5) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileV2_IN_tex); - ResourceManager.missileV2.renderAll(); - } - if(state == 6) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileV2_BU_tex); - ResourceManager.missileV2.renderAll(); - } - if(state == 7) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_IN_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 8) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_CL_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 9) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_BU_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 10) - { - GL11.glScalef(2.0F, 2.0F, 2.0F); - bindTexture(ResourceManager.missileHuge_HE_tex); - ResourceManager.missileHuge.renderAll(); - } - if(state == 11) - { - GL11.glScalef(2.0F, 2.0F, 2.0F); - bindTexture(ResourceManager.missileHuge_IN_tex); - ResourceManager.missileHuge.renderAll(); - } - if(state == 12) - { - GL11.glScalef(2.0F, 2.0F, 2.0F); - bindTexture(ResourceManager.missileHuge_CL_tex); - ResourceManager.missileHuge.renderAll(); - } - if(state == 13) - { - GL11.glScalef(2.0F, 2.0F, 2.0F); - bindTexture(ResourceManager.missileHuge_BU_tex); - ResourceManager.missileHuge.renderAll(); - } - if(state == 14) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileEndo_tex); - ResourceManager.missileThermo.renderAll(); - } - if(state == 15) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileExo_tex); - ResourceManager.missileThermo.renderAll(); - } - if(state == 16) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileMIRV_tex); - ResourceManager.missileNuclear.renderAll(); - } - if(state == 17) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileDoomsday_tex); - ResourceManager.missileDoomsday.renderAll(); - } - if(state == 18) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileTaint_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 19) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileMicro_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 20) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileCarrier_tex); - ResourceManager.missileCarrier.renderAll(); - GL11.glTranslated(0.0D, 0.5D, 0.0D); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - bindTexture(ResourceManager.missileBooster_tex); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(-2.5D, 0.0D, 0.0D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, -2.5D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - } - if(state == 21) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileAA_tex); - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.missileABM.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - if(state == 22) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileMicroBHole_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 23) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileMicroSchrab_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 24) - { - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileMicroEMP_tex); - ResourceManager.missileTaint.renderAll(); - } - if(state == 25) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileStrong_EMP_tex); - ResourceManager.missileStrong.renderAll(); - } - if(state == 26) - { - GL11.glScalef(1.5F, 1.5F, 1.5F); - bindTexture(ResourceManager.missileVolcano_tex); - ResourceManager.missileNuclear.renderAll(); - } - if(state == 27) - { - GL11.glScalef(1.0F, 1.0F, 1.0F); - bindTexture(ResourceManager.missileShuttle_tex); - ResourceManager.missileShuttle.renderAll(); - } + bindTexture(ResourceManager.missile_pad_tex); + ResourceManager.missile_pad.renderAll(); + + GL11.glDisable(GL11.GL_CULL_FACE); + + if(tileEntity instanceof TileEntityLaunchPad) { + ItemStack toRender = ((TileEntityLaunchPad) tileEntity).toRender; - GL11.glEnable(GL11.GL_CULL_FACE); + if(toRender != null) { + GL11.glTranslated(0, 1, 0); + + //TODO: add a registry for missile rendering to be reused here and for the entity renderer + if(toRender.getItem() == ModItems.missile_generic) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_HE_tex); + ResourceManager.missileV2.renderAll(); + } + if(toRender.getItem() == ModItems.missile_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_HE_tex); + ResourceManager.missileStrong.renderAll(); + } + if(toRender.getItem() == ModItems.missile_cluster) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_CL_tex); + ResourceManager.missileV2.renderAll(); + } + if(toRender.getItem() == ModItems.missile_nuclear) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileNuclear_tex); + ResourceManager.missileNuclear.renderAll(); + } + if(toRender.getItem() == ModItems.missile_incendiary) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_IN_tex); + ResourceManager.missileV2.renderAll(); + } + if(toRender.getItem() == ModItems.missile_buster) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_BU_tex); + ResourceManager.missileV2.renderAll(); + } + if(toRender.getItem() == ModItems.missile_incendiary_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_IN_tex); + ResourceManager.missileStrong.renderAll(); + } + if(toRender.getItem() == ModItems.missile_cluster_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_CL_tex); + ResourceManager.missileStrong.renderAll(); + } + if(toRender.getItem() == ModItems.missile_buster_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_BU_tex); + ResourceManager.missileStrong.renderAll(); + } + if(toRender.getItem() == ModItems.missile_burst) { + GL11.glScalef(2.0F, 2.0F, 2.0F); + bindTexture(ResourceManager.missileHuge_HE_tex); + ResourceManager.missileHuge.renderAll(); + } + if(toRender.getItem() == ModItems.missile_inferno) { + GL11.glScalef(2.0F, 2.0F, 2.0F); + bindTexture(ResourceManager.missileHuge_IN_tex); + ResourceManager.missileHuge.renderAll(); + } + if(toRender.getItem() == ModItems.missile_rain) { + GL11.glScalef(2.0F, 2.0F, 2.0F); + bindTexture(ResourceManager.missileHuge_CL_tex); + ResourceManager.missileHuge.renderAll(); + } + if(toRender.getItem() == ModItems.missile_drill) { + GL11.glScalef(2.0F, 2.0F, 2.0F); + bindTexture(ResourceManager.missileHuge_BU_tex); + ResourceManager.missileHuge.renderAll(); + } + if(toRender.getItem() == ModItems.missile_endo) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileEndo_tex); + ResourceManager.missileThermo.renderAll(); + } + if(toRender.getItem() == ModItems.missile_exo) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileExo_tex); + ResourceManager.missileThermo.renderAll(); + } + if(toRender.getItem() == ModItems.missile_nuclear_cluster) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileMIRV_tex); + ResourceManager.missileNuclear.renderAll(); + } + if(toRender.getItem() == ModItems.missile_doomsday) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileDoomsday_tex); + ResourceManager.missileDoomsday.renderAll(); + } + if(toRender.getItem() == ModItems.missile_taint) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileTaint_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_micro) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileMicro_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_carrier) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileCarrier_tex); + ResourceManager.missileCarrier.renderAll(); + GL11.glTranslated(0.0D, 0.5D, 0.0D); + GL11.glTranslated(1.25D, 0.0D, 0.0D); + bindTexture(ResourceManager.missileBooster_tex); + ResourceManager.missileBooster.renderAll(); + GL11.glTranslated(-2.5D, 0.0D, 0.0D); + ResourceManager.missileBooster.renderAll(); + GL11.glTranslated(1.25D, 0.0D, 0.0D); + GL11.glTranslated(0.0D, 0.0D, 1.25D); + ResourceManager.missileBooster.renderAll(); + GL11.glTranslated(0.0D, 0.0D, -2.5D); + ResourceManager.missileBooster.renderAll(); + GL11.glTranslated(0.0D, 0.0D, 1.25D); + } + if(toRender.getItem() == ModItems.missile_anti_ballistic) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileAA_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileABM.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + if(toRender.getItem() == ModItems.missile_bhole) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileMicroBHole_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_schrabidium) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileMicroSchrab_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_emp) { + GL11.glScalef(2F, 2F, 2F); + bindTexture(ResourceManager.missileMicroEMP_tex); + ResourceManager.missileTaint.renderAll(); + } + if(toRender.getItem() == ModItems.missile_emp_strong) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileStrong_EMP_tex); + ResourceManager.missileStrong.renderAll(); + } + if(toRender.getItem() == ModItems.missile_volcano) { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileVolcano_tex); + ResourceManager.missileNuclear.renderAll(); + } + if(toRender.getItem() == ModItems.missile_shuttle) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileShuttle_tex); + ResourceManager.missileShuttle.renderAll(); + } + } + } - GL11.glPopMatrix(); - } + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 7781511f5..5ad95d374 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -5,16 +5,13 @@ import com.hbm.blocks.bomb.LaunchPad; import com.hbm.inventory.container.ContainerLaunchPadTier1; import com.hbm.inventory.gui.GUILaunchPadTier1; import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEMissilePacket; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import api.hbm.item.IDesignatorItem; import cpw.mods.fml.common.Optional; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import li.cil.oc.api.machine.Arguments; @@ -25,6 +22,7 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -34,9 +32,10 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, SimpleComponent, IGUIProvider { +public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver, IEnergyUser, SimpleComponent, IGUIProvider { public ItemStack slots[]; + public ItemStack toRender; public long power; public final long maxPower = 100000; @@ -44,7 +43,6 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI private static final int[] slots_top = new int[] {0}; private static final int[] slots_bottom = new int[] { 0, 1, 2}; private static final int[] slots_side = new int[] {0}; - public int state = 0; private String customName; public TileEntityLaunchPad() { @@ -209,8 +207,25 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI power = Library.chargeTEFromItems(slots, 2, power, maxPower); this.updateConnections(); - PacketDispatcher.wrapper.sendToAllAround(new TEMissilePacket(xCoord, yCoord, zCoord, slots[0]), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + if(slots[0] != null) { + data.setInteger("id", Item.getIdFromItem(slots[0].getItem())); + data.setShort("meta", (short) slots[0].getItemDamage()); + } + + INBTPacketReceiver.networkPack(this, data, 250); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + + if(nbt.hasKey("id")) { + this.toRender = new ItemStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getShort("meta")); + } else { + this.toRender = null; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java deleted file mode 100644 index e543f4fd5..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ /dev/null @@ -1,342 +0,0 @@ -package com.hbm.tileentity.machine; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.WeaponConfig; -import com.hbm.extprop.HbmLivingProps; -import com.hbm.inventory.container.ContainerMachineRadar; -import com.hbm.inventory.gui.GUIMachineRadar; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityTickingBase; - -import api.hbm.energy.IEnergyUser; -import api.hbm.entity.IRadarDetectable; -import api.hbm.entity.IRadarDetectable.RadarTargetType; -import cpw.mods.fml.common.Optional; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; - -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineRadar extends TileEntityTickingBase implements IEnergyUser, IGUIProvider, SimpleComponent { - - public List detectedEntities = new ArrayList(); - public List nearbyMissiles = new ArrayList(); - int pingTimer = 0; - int lastPower; - final static int maxTimer = 80; - - public boolean scanMissiles = true; - public boolean scanPlayers = true; - public boolean smartMode = true; - public boolean redMode = true; - - public boolean jammed = false; - - public float prevRotation; - public float rotation; - - public long power = 0; - public static final int maxPower = 100000; - - @Override - public String getInventoryName() { - return ""; - } - - @Override - public void updateEntity() { - - if(this.yCoord < WeaponConfig.radarAltitude) return; - - if(!worldObj.isRemote) { - - this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); - - nearbyMissiles.clear(); - - if(power > 0) { - allocateMissiles(); - power -= 500; - - if(power < 0) power = 0; - } - - if(this.lastPower != getRedPower()) worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); - - sendMissileData(); - lastPower = getRedPower(); - - if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) != ModBlocks.muffler) { - - pingTimer++; - - if(power > 0 && pingTimer >= maxTimer) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.sonarPing", 5.0F, 1.0F); - pingTimer = 0; - } - } - } else { - prevRotation = rotation; - if(power > 0) rotation += 5F; - - if(rotation >= 360) { - rotation -= 360F; - prevRotation -= 360F; - } - } - } - - public void handleButtonPacket(int value, int meta) { - - switch(meta) { - case 0: this.scanMissiles = !this.scanMissiles; break; - case 1: this.scanPlayers = !this.scanPlayers; break; - case 2: this.smartMode = !this.smartMode; break; - case 3: this.redMode = !this.redMode; break; - } - } - - private void allocateMissiles() { - - nearbyMissiles.clear(); - detectedEntities.clear(); - jammed = false; - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - WeaponConfig.radarRange, 0, zCoord + 0.5 - WeaponConfig.radarRange, xCoord + 0.5 + WeaponConfig.radarRange, 5000, zCoord + 0.5 + WeaponConfig.radarRange)); - - for(Entity e : list) { - - if(e.posY < yCoord + WeaponConfig.radarBuffer) - continue; - - if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { - this.jammed = true; - nearbyMissiles.clear(); - detectedEntities.clear(); - return; - } - - if(e instanceof EntityPlayer && this.scanPlayers) { - nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, RadarTargetType.PLAYER.ordinal(), (int)e.posY }); - detectedEntities.add(e); - } - - if(e instanceof IRadarDetectable && this.scanMissiles) { - nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, ((IRadarDetectable)e).getTargetType().ordinal(), (int)e.posY }); - - if(!this.smartMode || e.motionY <= 0) - detectedEntities.add(e); - } - } - } - - public int getRedPower() { - - if(!detectedEntities.isEmpty()) { - - /// PROXIMITY /// - if(redMode) { - - double maxRange = WeaponConfig.radarRange * Math.sqrt(2D); - - int power = 0; - - for(int i = 0; i < detectedEntities.size(); i++) { - - Entity e = detectedEntities.get(i); - double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2)); - int p = 15 - (int)Math.floor(dist / maxRange * 15); - - if(p > power) - power = p; - } - - return power; - - /// TIER /// - } else { - - int power = 0; - - for(int i = 0; i < nearbyMissiles.size(); i++) { - - if(nearbyMissiles.get(i)[2] + 1 > power) { - power = nearbyMissiles.get(i)[2] + 1; - } - } - - return power; - } - } - - return 0; - } - - private void sendMissileData() { - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setBoolean("scanMissiles", scanMissiles); - data.setBoolean("scanPlayers", scanPlayers); - data.setBoolean("smartMode", smartMode); - data.setBoolean("redMode", redMode); - data.setBoolean("jammed", jammed); - data.setInteger("count", this.nearbyMissiles.size()); - - for(int i = 0; i < this.nearbyMissiles.size(); i++) { - data.setInteger("x" + i, this.nearbyMissiles.get(i)[0]); - data.setInteger("z" + i, this.nearbyMissiles.get(i)[1]); - data.setInteger("type" + i, this.nearbyMissiles.get(i)[2]); - data.setInteger("y" + i, this.nearbyMissiles.get(i)[3]); - } - - this.networkPack(data, 15); - } - - public void networkUnpack(NBTTagCompound data) { - - this.nearbyMissiles.clear(); - this.power = data.getLong("power"); - this.scanMissiles = data.getBoolean("scanMissiles"); - this.scanPlayers = data.getBoolean("scanPlayers"); - this.smartMode = data.getBoolean("smartMode"); - this.redMode = data.getBoolean("redMode"); - this.jammed = data.getBoolean("jammed"); - - int count = data.getInteger("count"); - - for(int i = 0; i < count; i++) { - - int x = data.getInteger("x" + i); - int z = data.getInteger("z" + i); - int type = data.getInteger("type" + i); - int y = data.getInteger("y" + i); - - this.nearbyMissiles.add(new int[] {x, z, type, y}); - } - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - @Override - public void setPower(long i) { - power = i; - } - - @Override - public long getPower() { - return power; - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.power = nbt.getLong("power"); - this.scanMissiles = nbt.getBoolean("scanMissiles"); - this.scanPlayers = nbt.getBoolean("scanPlayers"); - this.smartMode = nbt.getBoolean("smartMode"); - this.redMode = nbt.getBoolean("redMode"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("power", power); - nbt.setBoolean("scanMissiles", scanMissiles); - nbt.setBoolean("scanPlayers", scanPlayers); - nbt.setBoolean("smartMode", smartMode); - nbt.setBoolean("redMode", redMode); - } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } - - // do some opencomputer stuff - - @Override - public String getComponentName() { - return "ntm_radar"; - } - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getEnergyInfo(Context context, Arguments args) { - return new Object[] {getPower(), getMaxPower()}; - } - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] isJammed(Context context, Arguments args) { - return new Object[] {jammed}; - } - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getEntities(Context context, Arguments args) { //fuck fuck fuck - if(!jammed) { - List list = new ArrayList(); - list.add(detectedEntities.size()); // small header of how many entities in the list - for (Entity e : detectedEntities) { - list.add(e.posX); // positions - list.add(e.posY); - list.add(e.posZ); - list.add(e.motionX); - list.add(e.motionY); - list.add(e.motionZ); - list.add(e.rotationYaw); // just do rotation so you can calculate DOT - list.add(Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2))); // distance - boolean player = e instanceof EntityPlayer; - list.add(player); // isPlayer boolean - if(!player) // missile tier - list.add(((IRadarDetectable) e).getTargetType().ordinal()); - else // player name (hopefully) - list.add(((EntityPlayer) e).getDisplayName()); - } - return new Object[] {list}; // long-ass list (like 9 entries per entity) - } else { - return new Object[] {"Radar jammed!"}; - } - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineRadar(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineRadar(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 8d1568b2d..2fa44fcf8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -61,6 +61,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG public int channelCount; public int sourceCount; + public int unloadDelay = 0; public boolean assembled; private AudioWrapper audio; @@ -160,6 +161,20 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG this.tanks[0].setType(2, slots); setupTanks(); + if(unloadDelay > 0) unloadDelay--; + + int chunkX = xCoord >> 4; + int chunkZ = zCoord >> 4; + + //since fluid sources are often not within 1 chunk, we just do 2 chunks distance and call it a day + if(!worldObj.getChunkProvider().chunkExists(chunkX, chunkZ) || + !worldObj.getChunkProvider().chunkExists(chunkX + 2, chunkZ + 2) || + !worldObj.getChunkProvider().chunkExists(chunkX + 2, chunkZ - 2) || + !worldObj.getChunkProvider().chunkExists(chunkX - 2, chunkZ + 2) || + !worldObj.getChunkProvider().chunkExists(chunkX - 2, chunkZ - 2)) { + this.unloadDelay = 40; + } + if(this.assembled) { for(BlockPos pos : ports) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { @@ -170,76 +185,80 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG } } - if((typeLoaded == -1 || amountLoaded <= 0) && slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel) { - typeLoaded = slots[0].getItemDamage(); - amountLoaded++; - this.decrStackSize(0, 1); - this.markChanged(); - } else if(slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel && slots[0].getItemDamage() == typeLoaded && amountLoaded < rodCount){ - amountLoaded++; - this.decrStackSize(0, 1); - this.markChanged(); - } - - if(this.rodTarget > this.rodLevel) this.rodLevel++; - if(this.rodTarget < this.rodLevel) this.rodLevel--; - - int newFlux = this.sourceCount * 20; - - if(typeLoaded != -1 && amountLoaded > 0) { + //only perform fission if the area has been loaded for 40 ticks or more + if(this.unloadDelay <= 0) { - EnumPWRFuel fuel = EnumUtil.grabEnumSafely(EnumPWRFuel.class, typeLoaded); - double usedRods = getTotalProcessMultiplier(); - double fluxPerRod = this.flux / this.rodCount; - double outputPerRod = fuel.function.effonix(fluxPerRod); - double totalOutput = outputPerRod * amountLoaded * usedRods; - double totalHeatOutput = totalOutput * fuel.heatEmission; - - this.coreHeat += totalHeatOutput; - newFlux += totalOutput; - - this.processTime = (int) fuel.yield; - this.progress += totalOutput; - - if(this.progress >= this.processTime) { - this.progress -= this.processTime; - - if(slots[1] == null) { - slots[1] = new ItemStack(ModItems.pwr_fuel_hot, 1, typeLoaded); - } else if(slots[1].getItem() == ModItems.pwr_fuel_hot && slots[1].getItemDamage() == typeLoaded && slots[1].stackSize < slots[1].getMaxStackSize()) { - slots[1].stackSize++; - } - - this.amountLoaded--; + if((typeLoaded == -1 || amountLoaded <= 0) && slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel) { + typeLoaded = slots[0].getItemDamage(); + amountLoaded++; + this.decrStackSize(0, 1); + this.markChanged(); + } else if(slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel && slots[0].getItemDamage() == typeLoaded && amountLoaded < rodCount){ + amountLoaded++; + this.decrStackSize(0, 1); this.markChanged(); } - } - - if(this.amountLoaded <= 0) { - this.typeLoaded = -1; - } - - if(amountLoaded > rodCount) amountLoaded = rodCount; - - /* CORE COOLING */ - double coreCoolingApproachNum = getXOverE((double) this.heatexCount * 5 / (double) this.rodCount, 2) / 2D; - int averageCoreHeat = (this.coreHeat + this.hullHeat) / 2; - this.coreHeat -= (coreHeat - averageCoreHeat) * coreCoolingApproachNum; - this.hullHeat -= (hullHeat - averageCoreHeat) * coreCoolingApproachNum; - - updateCoolant(); - - this.coreHeat *= 0.999D; - this.hullHeat *= 0.999D; - - this.flux = newFlux; - - if(tanks[0].getTankType().hasTrait(FT_PWRModerator.class) && tanks[0].getFill() > 0) { - this.flux *= tanks[0].getTankType().getTrait(FT_PWRModerator.class).getMultiplier(); - } - - if(this.coreHeat > this.coreHeatCapacity) { - meltDown(); + + if(this.rodTarget > this.rodLevel) this.rodLevel++; + if(this.rodTarget < this.rodLevel) this.rodLevel--; + + int newFlux = this.sourceCount * 20; + + if(typeLoaded != -1 && amountLoaded > 0) { + + EnumPWRFuel fuel = EnumUtil.grabEnumSafely(EnumPWRFuel.class, typeLoaded); + double usedRods = getTotalProcessMultiplier(); + double fluxPerRod = this.flux / this.rodCount; + double outputPerRod = fuel.function.effonix(fluxPerRod); + double totalOutput = outputPerRod * amountLoaded * usedRods; + double totalHeatOutput = totalOutput * fuel.heatEmission; + + this.coreHeat += totalHeatOutput; + newFlux += totalOutput; + + this.processTime = (int) fuel.yield; + this.progress += totalOutput; + + if(this.progress >= this.processTime) { + this.progress -= this.processTime; + + if(slots[1] == null) { + slots[1] = new ItemStack(ModItems.pwr_fuel_hot, 1, typeLoaded); + } else if(slots[1].getItem() == ModItems.pwr_fuel_hot && slots[1].getItemDamage() == typeLoaded && slots[1].stackSize < slots[1].getMaxStackSize()) { + slots[1].stackSize++; + } + + this.amountLoaded--; + this.markChanged(); + } + } + + if(this.amountLoaded <= 0) { + this.typeLoaded = -1; + } + + if(amountLoaded > rodCount) amountLoaded = rodCount; + + /* CORE COOLING */ + double coreCoolingApproachNum = getXOverE((double) this.heatexCount * 5 / (double) this.rodCount, 2) / 2D; + int averageCoreHeat = (this.coreHeat + this.hullHeat) / 2; + this.coreHeat -= (coreHeat - averageCoreHeat) * coreCoolingApproachNum; + this.hullHeat -= (hullHeat - averageCoreHeat) * coreCoolingApproachNum; + + updateCoolant(); + + this.coreHeat *= 0.999D; + this.hullHeat *= 0.999D; + + this.flux = newFlux; + + if(tanks[0].getTankType().hasTrait(FT_PWRModerator.class) && tanks[0].getFill() > 0) { + this.flux *= tanks[0].getTankType().getTrait(FT_PWRModerator.class).getMultiplier(); + } + + if(this.coreHeat > this.coreHeatCapacity) { + meltDown(); + } } } From e40343b6dd6fed2d479d72b51b0b227b91bebb33 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 23 Nov 2023 20:39:54 +0100 Subject: [PATCH 121/207] crunchier tier 1 missiles --- .../entity/missile/EntityMissileCustom.java | 1 + .../java/com/hbm/main/ResourceManager.java | 10 +- .../entity/rocket/RenderMissileGeneric.java | 20 +- .../tileentity/RenderLaunchPadTier1.java | 8 + .../assets/hbm/models/missile_abm.obj | 972 +++++++++--------- .../assets/hbm/models/missile_v2.obj | 572 +++++++++++ .../assets/hbm/textures/models/missile_v2.png | Bin 0 -> 885 bytes .../hbm/textures/models/missile_v2_bu.png | Bin 0 -> 846 bytes .../hbm/textures/models/missile_v2_cl.png | Bin 0 -> 887 bytes .../hbm/textures/models/missile_v2_inc.png | Bin 0 -> 942 bytes 10 files changed, 1083 insertions(+), 500 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/missile_v2.obj create mode 100644 src/main/resources/assets/hbm/textures/models/missile_v2.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_v2_bu.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_v2_cl.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_v2_inc.png diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index 79d7c21c5..f2ebf4584 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -44,6 +44,7 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo startZ = (int) z; targetX = a; targetZ = b; + this.motionY = 2; Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); accelXZ = decelY = 1 / vector.lengthVector(); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 901fb11b2..29b591050 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1009,7 +1009,7 @@ public class ResourceManager { public static final IModelCustom b29 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/b29.obj")); //Missiles - public static final IModelCustom missileV2 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileV2.obj")); + public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asDisplayList(); public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asDisplayList(); public static final IModelCustom missileStrong = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileGeneric.obj")); public static final IModelCustom missileHuge = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileHuge.obj")); @@ -1149,10 +1149,10 @@ public class ResourceManager { public static final ResourceLocation b29_3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_3.png"); //Missiles - public static final ResourceLocation missileV2_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_HE.png"); - public static final ResourceLocation missileV2_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_IN.png"); - public static final ResourceLocation missileV2_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_CL.png"); - public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_BU.png"); + public static final ResourceLocation missileV2_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2.png"); + public static final ResourceLocation missileV2_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_inc.png"); + public static final ResourceLocation missileV2_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_cl.png"); + public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_bu.png"); public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_abm.png"); public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_HE.png"); public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_EMP.png"); diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java index 1b9d98585..64051609e 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java @@ -16,29 +16,31 @@ public class RenderMissileGeneric extends Render { } @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float interp) { GL11.glPushMatrix(); - GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F); - if(p_76986_1_ instanceof EntityMissileGeneric) + if(entity instanceof EntityMissileGeneric) bindTexture(ResourceManager.missileV2_HE_tex); - if(p_76986_1_ instanceof EntityMissileIncendiary) + if(entity instanceof EntityMissileIncendiary) bindTexture(ResourceManager.missileV2_IN_tex); - if(p_76986_1_ instanceof EntityMissileCluster) + if(entity instanceof EntityMissileCluster) bindTexture(ResourceManager.missileV2_CL_tex); - if(p_76986_1_ instanceof EntityMissileBunkerBuster) + if(entity instanceof EntityMissileBunkerBuster) bindTexture(ResourceManager.missileV2_BU_tex); - if(p_76986_1_ instanceof EntityMissileAntiBallistic) { + if(entity instanceof EntityMissileAntiBallistic) { bindTexture(ResourceManager.missileAA_tex); GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileABM.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } else { + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index 5ccfc1900..acaff58a5 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -34,7 +34,9 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { if(toRender.getItem() == ModItems.missile_generic) { GL11.glScalef(1.0F, 1.0F, 1.0F); bindTexture(ResourceManager.missileV2_HE_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); @@ -44,7 +46,9 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { if(toRender.getItem() == ModItems.missile_cluster) { GL11.glScalef(1.0F, 1.0F, 1.0F); bindTexture(ResourceManager.missileV2_CL_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_nuclear) { GL11.glScalef(1.5F, 1.5F, 1.5F); @@ -54,12 +58,16 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { if(toRender.getItem() == ModItems.missile_incendiary) { GL11.glScalef(1.0F, 1.0F, 1.0F); bindTexture(ResourceManager.missileV2_IN_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_buster) { GL11.glScalef(1.0F, 1.0F, 1.0F); bindTexture(ResourceManager.missileV2_BU_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_incendiary_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); diff --git a/src/main/resources/assets/hbm/models/missile_abm.obj b/src/main/resources/assets/hbm/models/missile_abm.obj index d77bc487d..1cc213eba 100644 --- a/src/main/resources/assets/hbm/models/missile_abm.obj +++ b/src/main/resources/assets/hbm/models/missile_abm.obj @@ -1,39 +1,39 @@ # Blender v2.79 (sub 0) OBJ File: 'missile_abm.blend' # www.blender.org o Circle -v 0.000000 7.000000 -0.500000 -v -0.191342 7.000000 -0.461940 -v -0.353553 7.000000 -0.353553 -v -0.461940 7.000000 -0.191342 -v -0.500000 7.000000 0.000000 -v -0.461940 7.000000 0.191342 -v -0.353553 7.000000 0.353553 -v -0.191342 7.000000 0.461940 -v -0.000000 7.000000 0.500000 -v 0.191342 7.000000 0.461940 -v 0.353553 7.000000 0.353554 -v 0.461940 7.000000 0.191342 -v 0.500000 7.000000 -0.000000 -v 0.461940 7.000000 -0.191342 -v 0.353553 7.000000 -0.353554 -v 0.191341 7.000000 -0.461940 +v -0.000000 7.000000 -0.375000 +v -0.143506 7.000000 -0.346455 +v -0.265165 7.000000 -0.265165 +v -0.346455 7.000000 -0.143506 +v -0.375000 7.000000 0.000000 +v -0.346455 7.000000 0.143506 +v -0.265165 7.000000 0.265165 +v -0.143506 7.000000 0.346455 +v -0.000000 7.000000 0.375000 +v 0.143506 7.000000 0.346455 +v 0.265165 7.000000 0.265165 +v 0.346455 7.000000 0.143506 +v 0.375000 7.000000 -0.000000 +v 0.346455 7.000000 -0.143506 +v 0.265165 7.000000 -0.265165 +v 0.143506 7.000000 -0.346455 v -0.000000 8.500000 0.000000 -v 0.000000 5.500000 -0.500000 -v -0.191342 5.500000 -0.461940 -v -0.353553 5.500000 -0.353553 -v -0.461940 5.500000 -0.191342 -v -0.500000 5.500000 0.000000 -v -0.461940 5.500000 0.191342 -v -0.353553 5.500000 0.353553 -v -0.191342 5.500000 0.461940 -v -0.000000 5.500000 0.500000 -v 0.191342 5.500000 0.461940 -v 0.353553 5.500000 0.353554 -v 0.461940 5.500000 0.191342 -v 0.500000 5.500000 -0.000000 -v 0.461940 5.500000 -0.191342 -v 0.353553 5.500000 -0.353554 -v 0.191341 5.500000 -0.461940 +v -0.000000 5.500000 -0.375000 +v -0.143506 5.500000 -0.346455 +v -0.265165 5.500000 -0.265165 +v -0.346455 5.500000 -0.143506 +v -0.375000 5.500000 0.000000 +v -0.346455 5.500000 0.143506 +v -0.265165 5.500000 0.265165 +v -0.143506 5.500000 0.346455 +v -0.000000 5.500000 0.375000 +v 0.143506 5.500000 0.346455 +v 0.265165 5.500000 0.265165 +v 0.346455 5.500000 0.143506 +v 0.375000 5.500000 -0.000000 +v 0.346455 5.500000 -0.143506 +v 0.265165 5.500000 -0.265165 +v 0.143506 5.500000 -0.346455 v -0.000000 4.500000 -0.250000 v -0.095671 4.500000 -0.230970 v -0.176777 4.500000 -0.176777 @@ -884,7 +884,6 @@ vt 0.342105 0.428571 vt 0.065789 0.428571 vt 0.381579 0.428571 vt 0.105263 0.428571 -vt 0.394737 0.428571 vt 0.421053 0.428571 vt 0.144737 0.428571 vt 0.500000 0.428571 @@ -1183,6 +1182,7 @@ vt 0.315789 0.428571 vt 0.039474 0.428571 vt 0.355263 0.428571 vt 0.078947 0.428571 +vt 0.394737 0.428571 vt 0.118421 0.428571 vt 0.473684 0.428571 vt 0.434211 0.428571 @@ -1222,24 +1222,24 @@ vn 0.0416 0.0000 -0.9991 vn 0.0416 0.0000 0.9991 vn 0.5547 0.8321 0.0000 vn 0.5547 -0.8321 0.0000 -vn 0.3630 0.3162 -0.8765 -vn -0.0000 0.3162 -0.9487 -vn 0.6708 0.3162 -0.6708 -vn 0.8765 0.3162 -0.3630 -vn 0.9487 0.3162 0.0000 -vn 0.8765 0.3162 0.3630 -vn 0.6708 0.3162 0.6708 -vn 0.3630 0.3162 0.8765 -vn -0.0000 0.3162 0.9487 -vn -0.3630 0.3162 0.8765 -vn -0.6708 0.3162 0.6708 -vn -0.8765 0.3162 0.3630 -vn -0.9487 0.3162 0.0000 -vn -0.8765 0.3162 -0.3630 -vn -0.6708 0.3162 -0.6708 -vn -0.3630 0.3162 -0.8765 +vn 0.3713 0.2425 -0.8963 +vn -0.0000 0.2425 -0.9701 +vn 0.6860 0.2425 -0.6860 +vn 0.8963 0.2425 -0.3713 +vn 0.9701 0.2425 -0.0000 +vn 0.8963 0.2425 0.3713 +vn 0.6860 0.2425 0.6860 +vn 0.3713 0.2425 0.8963 +vn -0.0000 0.2425 0.9701 +vn -0.3713 0.2425 0.8963 +vn -0.6860 0.2425 0.6860 +vn -0.8963 0.2425 0.3713 +vn -0.9701 0.2425 0.0000 +vn -0.8963 0.2425 -0.3713 +vn -0.6860 0.2425 -0.6860 +vn -0.3713 0.2425 -0.8963 vn -0.9239 0.0000 -0.3827 -vn -1.0000 0.0000 0.0000 +vn -1.0000 0.0000 -0.0000 vn 0.9239 0.0000 0.3827 vn 1.0000 0.0000 -0.0000 vn -0.9239 0.0000 0.3827 @@ -1254,22 +1254,22 @@ vn -0.3827 0.0000 -0.9239 vn 0.3827 0.0000 0.9239 vn -0.7071 0.0000 -0.7071 vn 0.7071 0.0000 0.7071 -vn -0.0000 -0.2425 0.9701 -vn 0.3713 -0.2425 0.8963 -vn -0.3713 -0.2425 -0.8963 -vn -0.6860 -0.2425 -0.6860 -vn 0.6860 -0.2425 0.6860 -vn -0.8963 -0.2425 -0.3713 -vn 0.8963 -0.2425 0.3713 -vn -0.9701 -0.2425 -0.0000 -vn 0.9701 -0.2425 -0.0000 -vn -0.8963 -0.2425 0.3713 -vn 0.8963 -0.2425 -0.3713 -vn -0.6860 -0.2425 0.6860 -vn 0.6860 -0.2425 -0.6860 -vn -0.3713 -0.2425 0.8963 -vn 0.3713 -0.2425 -0.8963 -vn -0.0000 -0.2425 -0.9701 +vn -0.0000 -0.1240 0.9923 +vn 0.3797 -0.1240 0.9167 +vn -0.3797 -0.1240 -0.9167 +vn -0.7016 -0.1240 -0.7016 +vn 0.7016 -0.1240 0.7016 +vn -0.9167 -0.1240 -0.3797 +vn 0.9167 -0.1240 0.3797 +vn -0.9923 -0.1240 -0.0000 +vn 0.9923 -0.1240 0.0000 +vn -0.9167 -0.1240 0.3797 +vn 0.9167 -0.1240 -0.3797 +vn -0.7016 -0.1240 0.7016 +vn 0.7016 -0.1240 -0.7016 +vn -0.3797 -0.1240 0.9167 +vn 0.3797 -0.1240 -0.9167 +vn -0.0000 -0.1240 -0.9923 vn 0.0127 0.3525 -0.9357 vn -0.1164 0.9864 0.1164 vn 0.3598 0.3824 -0.8511 @@ -1686,242 +1686,242 @@ f 30/435/71 47/459/73 31/437/73 f 23/436/72 40/460/74 24/438/74 f 31/437/73 48/461/75 32/439/75 f 24/438/74 41/462/76 25/440/76 -f 33/441/77 48/463/75 49/464/77 -f 25/440/76 42/465/63 26/442/63 -f 18/444/78 35/466/65 19/443/65 -f 33/441/77 34/467/78 18/444/78 -f 47/468/52 64/469/54 48/470/54 -f 40/471/53 57/472/55 41/473/55 -f 48/470/54 65/474/56 49/475/56 -f 41/473/55 58/476/57 42/477/57 -f 34/478/58 51/479/59 35/480/59 -f 49/475/56 50/481/58 34/478/58 -f 42/477/57 59/482/60 43/483/60 -f 35/480/59 52/484/61 36/485/61 -f 43/483/60 60/486/62 44/487/62 -f 36/485/61 53/488/47 37/489/47 -f 44/487/62 61/490/49 45/491/49 -f 37/489/47 54/492/48 38/493/48 -f 45/491/49 62/494/50 46/495/50 -f 38/496/48 55/497/51 39/458/51 -f 46/495/50 63/498/52 47/468/52 -f 39/458/51 56/499/53 40/471/53 -f 68/42/53 83/500/51 67/37/51 -f 76/24/54 91/501/52 75/20/52 -f 69/4/55 84/502/53 68/284/53 -f 77/25/56 92/503/54 76/24/54 -f 70/7/57 85/504/55 69/4/55 -f 78/28/58 93/505/56 77/25/56 -f 71/11/60 86/506/57 70/7/57 -f 79/32/59 94/507/58 78/28/58 -f 72/13/62 87/508/60 71/11/60 -f 80/34/61 95/509/59 79/32/59 -f 73/14/49 88/510/62 72/13/62 -f 81/38/47 96/511/61 80/34/61 -f 74/17/50 89/512/49 73/14/49 -f 67/37/51 82/513/48 66/35/48 -f 66/35/48 97/514/47 81/38/47 -f 75/20/52 90/515/50 74/17/50 -f 94/507/79 98/516/80 93/505/81 -f 92/503/82 93/505/81 98/517/80 -f 91/501/83 92/503/82 98/518/80 -f 90/515/84 91/501/83 98/519/80 -f 89/512/85 90/515/84 98/520/80 -f 88/510/86 89/512/85 98/521/80 -f 87/508/87 88/510/86 98/522/80 -f 86/506/88 87/508/87 98/523/80 -f 85/504/89 86/506/88 98/524/80 -f 84/502/90 85/504/89 98/525/80 -f 83/500/91 84/526/90 98/527/80 -f 82/513/92 83/500/91 98/528/80 -f 97/514/93 82/513/92 98/529/80 -f 96/511/94 97/514/93 98/530/80 -f 95/509/95 96/511/94 98/531/80 -f 94/507/79 95/509/95 98/532/80 -f 109/23/96 124/533/97 125/534/96 -f 109/26/96 126/535/98 110/27/98 -f 110/29/98 127/536/99 111/30/99 -f 111/288/99 128/537/100 112/31/100 -f 113/33/101 128/537/100 129/538/101 -f 100/36/102 115/539/103 116/540/102 -f 113/39/101 130/541/104 114/40/104 -f 100/291/102 117/542/105 101/41/105 -f 114/292/104 115/539/103 99/43/103 -f 102/6/106 117/543/105 118/544/106 -f 102/8/106 119/545/107 103/9/107 -f 103/285/107 120/546/108 104/10/108 -f 104/286/108 121/547/109 105/12/109 -f 105/15/109 122/548/110 106/16/110 -f 106/18/110 123/549/111 107/19/111 -f 107/21/111 124/533/97 108/22/97 -f 144/550/48 145/551/112 143/552/48 -f 146/553/112 147/554/113 145/551/112 -f 148/555/113 149/556/50 147/554/113 -f 150/557/50 151/558/114 149/556/50 -f 152/559/114 153/560/115 151/558/114 -f 154/561/115 143/552/48 153/562/115 -f 157/109/54 172/563/52 156/104/52 -f 165/91/53 180/564/51 164/87/51 -f 158/71/56 173/565/54 157/313/54 -f 166/92/55 181/566/53 165/91/53 -f 159/74/58 174/567/56 158/71/56 -f 167/95/57 182/568/55 166/92/55 -f 160/78/59 175/569/58 159/74/58 -f 168/99/60 183/570/57 167/95/57 -f 161/80/61 176/571/59 160/78/59 -f 169/101/62 184/572/60 168/99/60 -f 162/81/47 177/573/61 161/80/61 -f 170/105/49 185/574/62 169/101/62 -f 163/84/48 178/575/47 162/81/47 -f 156/104/52 171/576/50 155/102/50 -f 155/102/50 186/577/49 170/105/49 -f 164/87/51 179/578/48 163/84/48 -f 183/570/116 187/579/117 182/568/118 -f 181/566/119 182/568/118 187/580/117 -f 180/564/120 181/566/119 187/581/117 -f 179/578/121 180/564/120 187/582/117 -f 178/575/122 179/578/121 187/583/117 -f 177/573/123 178/575/122 187/584/117 -f 176/571/124 177/573/123 187/585/117 -f 175/569/125 176/571/124 187/586/117 -f 174/567/126 175/569/125 187/587/117 -f 173/565/127 174/567/126 187/588/117 -f 172/563/128 173/589/127 187/590/117 -f 171/576/129 172/563/128 187/591/117 -f 186/577/130 171/576/129 187/592/117 -f 185/574/131 186/577/130 187/593/117 -f 184/572/132 185/574/131 187/594/117 -f 183/570/116 184/572/132 187/595/117 -f 198/90/105 213/596/102 214/597/105 -f 198/93/105 215/598/106 199/94/106 -f 199/96/106 216/599/107 200/97/107 -f 201/98/108 216/599/107 217/600/108 -f 202/100/109 217/600/108 218/601/109 -f 188/319/111 205/602/97 189/103/97 -f 202/106/109 219/603/110 203/107/110 -f 190/108/96 205/602/97 206/604/96 -f 203/321/110 204/605/111 188/110/111 -f 190/72/96 207/606/98 191/73/98 -f 191/75/98 208/607/99 192/76/99 -f 192/314/99 209/608/100 193/77/100 -f 193/315/100 210/609/101 194/79/101 -f 194/82/101 211/610/104 195/83/104 -f 195/85/104 212/611/103 196/86/103 -f 196/88/103 213/596/102 197/89/102 -f 228/159/62 243/612/60 227/154/60 -f 236/142/61 251/613/59 235/138/59 -f 229/122/49 244/614/62 228/336/62 -f 237/143/47 252/615/61 236/142/61 -f 230/125/50 245/616/49 229/122/49 -f 238/147/48 253/617/47 237/143/47 -f 231/129/52 246/618/50 230/125/50 -f 239/149/51 254/619/48 238/147/48 -f 232/131/54 247/620/52 231/129/52 -f 240/151/53 255/621/51 239/149/51 -f 233/132/56 248/622/54 232/131/54 -f 241/155/55 256/623/53 240/151/53 -f 234/135/58 249/624/56 233/132/56 -f 227/154/60 242/625/57 226/152/57 -f 226/152/57 257/626/55 241/155/55 -f 235/138/59 250/627/58 234/135/58 -f 254/619/133 258/628/134 253/617/135 -f 252/615/136 253/617/135 258/629/134 -f 251/613/137 252/615/136 258/630/134 -f 250/627/138 251/613/137 258/631/134 -f 249/624/139 250/627/138 258/632/134 -f 248/622/140 249/624/139 258/633/134 -f 247/620/141 248/622/140 258/634/134 -f 246/618/142 247/620/141 258/635/134 -f 245/616/143 246/618/142 258/636/134 -f 244/614/144 245/616/143 258/637/134 -f 243/612/145 244/638/144 258/639/134 -f 242/625/146 243/612/145 258/640/134 -f 257/626/147 242/625/146 258/641/134 -f 256/623/148 257/626/147 258/642/134 -f 255/621/149 256/623/148 258/643/134 -f 254/619/133 255/621/149 258/644/134 -f 268/339/100 285/645/101 269/141/101 -f 269/144/101 286/646/104 270/145/104 -f 270/340/104 287/647/103 271/146/103 -f 271/341/103 288/648/102 272/148/102 -f 273/150/105 288/648/102 289/649/105 -f 259/343/107 276/650/108 260/153/108 -f 273/156/105 290/651/106 274/157/106 -f 260/344/108 277/652/109 261/158/109 -f 274/345/106 275/653/107 259/160/107 -f 262/124/110 277/654/109 278/655/110 -f 262/126/110 279/656/111 263/127/111 -f 263/337/111 280/657/97 264/128/97 -f 264/338/97 281/658/96 265/130/96 -f 265/133/96 282/659/98 266/134/98 -f 266/136/98 283/660/99 267/137/99 -f 267/139/99 284/661/100 268/140/100 -f 299/210/61 314/662/59 298/205/59 -f 307/192/62 322/663/60 306/188/60 -f 300/172/47 315/664/61 299/360/61 -f 308/193/49 323/665/62 307/192/62 -f 301/175/48 316/666/47 300/172/47 -f 309/196/50 324/667/49 308/193/49 -f 302/179/51 317/668/48 301/175/48 -f 310/200/52 325/669/50 309/196/50 -f 303/181/53 318/670/51 302/179/51 -f 311/202/54 326/671/52 310/200/52 -f 304/182/55 319/672/53 303/181/53 -f 312/206/56 327/673/54 311/202/54 -f 305/185/57 320/674/55 304/182/55 -f 298/205/59 313/675/58 297/203/58 -f 297/203/58 328/676/56 312/206/56 -f 306/188/60 321/677/57 305/185/57 -f 325/669/150 329/678/151 324/667/152 -f 323/665/153 324/667/152 329/679/151 -f 322/663/154 323/665/153 329/680/151 -f 321/677/155 322/663/154 329/681/151 -f 320/674/156 321/677/155 329/682/151 -f 319/672/157 320/674/156 329/683/151 -f 318/670/158 319/672/157 329/684/151 -f 317/668/159 318/670/158 329/685/151 -f 316/666/160 317/668/159 329/686/151 -f 315/664/161 316/666/160 329/687/151 -f 314/662/162 315/688/161 329/689/151 -f 313/675/163 314/662/162 329/690/151 -f 328/676/164 313/675/163 329/691/151 -f 327/673/165 328/676/164 329/692/151 -f 326/671/166 327/673/165 329/693/151 -f 325/669/150 326/671/166 329/694/151 -f 340/191/109 355/695/108 356/696/109 -f 340/194/109 357/697/110 341/195/110 -f 341/197/110 358/698/111 342/198/111 -f 343/199/97 358/698/111 359/699/97 -f 343/365/97 360/700/96 344/201/96 -f 330/366/99 347/701/100 331/204/100 -f 345/208/98 360/700/96 361/702/98 -f 332/209/101 347/701/100 348/703/101 -f 345/211/98 346/704/99 330/212/99 -f 333/174/104 348/705/101 349/706/104 -f 333/176/104 350/707/103 334/177/103 -f 335/178/102 350/707/103 351/708/102 -f 335/362/102 352/709/105 336/180/105 -f 336/183/105 353/710/106 337/184/106 -f 337/186/106 354/711/107 338/187/107 -f 338/189/107 355/695/108 339/190/108 -f 375/712/50 376/713/114 374/714/50 -f 377/715/114 378/716/115 376/713/114 -f 379/717/115 380/718/48 378/716/115 -f 381/719/48 382/720/112 380/718/48 -f 383/721/112 384/722/113 382/720/112 -f 385/723/113 374/714/50 384/724/113 -f 393/725/57 394/726/167 392/727/57 -f 395/728/167 396/729/168 394/726/167 -f 397/730/168 398/731/58 396/729/168 -f 399/732/58 400/733/169 398/731/58 -f 401/734/169 402/735/170 400/733/169 -f 403/736/170 392/727/57 402/737/170 -f 411/738/58 412/739/169 410/740/58 -f 413/741/169 414/742/170 412/739/169 -f 415/743/170 416/744/57 414/742/170 -f 417/745/57 418/746/167 416/744/57 -f 419/747/167 420/748/168 418/746/167 -f 421/749/168 410/740/58 420/750/168 +f 32/439/75 49/463/77 33/441/77 +f 25/440/76 42/464/63 26/442/63 +f 18/444/78 35/465/65 19/443/65 +f 33/441/77 34/466/78 18/444/78 +f 47/467/52 64/468/54 48/469/54 +f 40/470/53 57/471/55 41/472/55 +f 48/469/54 65/473/56 49/474/56 +f 41/472/55 58/475/57 42/476/57 +f 34/477/58 51/478/59 35/479/59 +f 49/474/56 50/480/58 34/477/58 +f 42/476/57 59/481/60 43/482/60 +f 35/479/59 52/483/61 36/484/61 +f 43/482/60 60/485/62 44/486/62 +f 36/484/61 53/487/47 37/488/47 +f 44/486/62 61/489/49 45/490/49 +f 37/488/47 54/491/48 38/492/48 +f 45/490/49 62/493/50 46/494/50 +f 38/495/48 55/496/51 39/458/51 +f 46/494/50 63/497/52 47/467/52 +f 39/458/51 56/498/53 40/470/53 +f 68/42/53 83/499/51 67/37/51 +f 76/24/54 91/500/52 75/20/52 +f 69/4/55 84/501/53 68/284/53 +f 77/25/56 92/502/54 76/24/54 +f 70/7/57 85/503/55 69/4/55 +f 78/28/58 93/504/56 77/25/56 +f 71/11/60 86/505/57 70/7/57 +f 79/32/59 94/506/58 78/28/58 +f 72/13/62 87/507/60 71/11/60 +f 80/34/61 95/508/59 79/32/59 +f 73/14/49 88/509/62 72/13/62 +f 81/38/47 96/510/61 80/34/61 +f 74/17/50 89/511/49 73/14/49 +f 67/37/51 82/512/48 66/35/48 +f 66/35/48 97/513/47 81/38/47 +f 75/20/52 90/514/50 74/17/50 +f 94/506/79 98/515/80 93/504/81 +f 92/502/82 93/504/81 98/516/80 +f 91/500/83 92/502/82 98/517/80 +f 90/514/84 91/500/83 98/518/80 +f 89/511/85 90/514/84 98/519/80 +f 88/509/86 89/511/85 98/520/80 +f 87/507/87 88/509/86 98/521/80 +f 86/505/88 87/507/87 98/522/80 +f 85/503/89 86/505/88 98/523/80 +f 84/501/90 85/503/89 98/524/80 +f 83/499/91 84/525/90 98/526/80 +f 82/512/92 83/499/91 98/527/80 +f 97/513/93 82/512/92 98/528/80 +f 96/510/94 97/513/93 98/529/80 +f 95/508/95 96/510/94 98/530/80 +f 94/506/79 95/508/95 98/531/80 +f 109/23/96 124/532/97 125/533/96 +f 109/26/96 126/534/98 110/27/98 +f 110/29/98 127/535/99 111/30/99 +f 111/288/99 128/536/100 112/31/100 +f 113/33/101 128/536/100 129/537/101 +f 100/36/102 115/538/103 116/539/102 +f 113/39/101 130/540/104 114/40/104 +f 100/291/102 117/541/105 101/41/105 +f 114/292/104 115/538/103 99/43/103 +f 102/6/106 117/542/105 118/543/106 +f 102/8/106 119/544/107 103/9/107 +f 103/285/107 120/545/108 104/10/108 +f 104/286/108 121/546/109 105/12/109 +f 105/15/109 122/547/110 106/16/110 +f 106/18/110 123/548/111 107/19/111 +f 107/21/111 124/532/97 108/22/97 +f 144/549/48 145/550/112 143/551/48 +f 146/552/112 147/553/113 145/550/112 +f 148/554/113 149/555/50 147/553/113 +f 150/556/50 151/557/114 149/555/50 +f 152/558/114 153/559/115 151/557/114 +f 154/560/115 143/551/48 153/561/115 +f 157/109/54 172/562/52 156/104/52 +f 165/91/53 180/563/51 164/87/51 +f 158/71/56 173/564/54 157/313/54 +f 166/92/55 181/565/53 165/91/53 +f 159/74/58 174/566/56 158/71/56 +f 167/95/57 182/567/55 166/92/55 +f 160/78/59 175/568/58 159/74/58 +f 168/99/60 183/569/57 167/95/57 +f 161/80/61 176/570/59 160/78/59 +f 169/101/62 184/571/60 168/99/60 +f 162/81/47 177/572/61 161/80/61 +f 170/105/49 185/573/62 169/101/62 +f 163/84/48 178/574/47 162/81/47 +f 156/104/52 171/575/50 155/102/50 +f 155/102/50 186/576/49 170/105/49 +f 164/87/51 179/577/48 163/84/48 +f 183/569/116 187/578/117 182/567/118 +f 181/565/119 182/567/118 187/579/117 +f 180/563/120 181/565/119 187/580/117 +f 179/577/121 180/563/120 187/581/117 +f 178/574/122 179/577/121 187/582/117 +f 177/572/123 178/574/122 187/583/117 +f 176/570/124 177/572/123 187/584/117 +f 175/568/125 176/570/124 187/585/117 +f 174/566/126 175/568/125 187/586/117 +f 173/564/127 174/566/126 187/587/117 +f 172/562/128 173/588/127 187/589/117 +f 171/575/129 172/562/128 187/590/117 +f 186/576/130 171/575/129 187/591/117 +f 185/573/131 186/576/130 187/592/117 +f 184/571/132 185/573/131 187/593/117 +f 183/569/116 184/571/132 187/594/117 +f 198/90/105 213/595/102 214/596/105 +f 198/93/105 215/597/106 199/94/106 +f 199/96/106 216/598/107 200/97/107 +f 201/98/108 216/598/107 217/599/108 +f 202/100/109 217/599/108 218/600/109 +f 188/319/111 205/601/97 189/103/97 +f 202/106/109 219/602/110 203/107/110 +f 190/108/96 205/601/97 206/603/96 +f 203/321/110 204/604/111 188/110/111 +f 190/72/96 207/605/98 191/73/98 +f 191/75/98 208/606/99 192/76/99 +f 192/314/99 209/607/100 193/77/100 +f 193/315/100 210/608/101 194/79/101 +f 194/82/101 211/609/104 195/83/104 +f 195/85/104 212/610/103 196/86/103 +f 196/88/103 213/595/102 197/89/102 +f 228/159/62 243/611/60 227/154/60 +f 236/142/61 251/612/59 235/138/59 +f 229/122/49 244/613/62 228/336/62 +f 237/143/47 252/614/61 236/142/61 +f 230/125/50 245/615/49 229/122/49 +f 238/147/48 253/616/47 237/143/47 +f 231/129/52 246/617/50 230/125/50 +f 239/149/51 254/618/48 238/147/48 +f 232/131/54 247/619/52 231/129/52 +f 240/151/53 255/620/51 239/149/51 +f 233/132/56 248/621/54 232/131/54 +f 241/155/55 256/622/53 240/151/53 +f 234/135/58 249/623/56 233/132/56 +f 227/154/60 242/624/57 226/152/57 +f 226/152/57 257/625/55 241/155/55 +f 235/138/59 250/626/58 234/135/58 +f 254/618/133 258/627/134 253/616/135 +f 252/614/136 253/616/135 258/628/134 +f 251/612/137 252/614/136 258/629/134 +f 250/626/138 251/612/137 258/630/134 +f 249/623/139 250/626/138 258/631/134 +f 248/621/140 249/623/139 258/632/134 +f 247/619/141 248/621/140 258/633/134 +f 246/617/142 247/619/141 258/634/134 +f 245/615/143 246/617/142 258/635/134 +f 244/613/144 245/615/143 258/636/134 +f 243/611/145 244/637/144 258/638/134 +f 242/624/146 243/611/145 258/639/134 +f 257/625/147 242/624/146 258/640/134 +f 256/622/148 257/625/147 258/641/134 +f 255/620/149 256/622/148 258/642/134 +f 254/618/133 255/620/149 258/643/134 +f 268/339/100 285/644/101 269/141/101 +f 269/144/101 286/645/104 270/145/104 +f 270/340/104 287/646/103 271/146/103 +f 271/341/103 288/647/102 272/148/102 +f 273/150/105 288/647/102 289/648/105 +f 259/343/107 276/649/108 260/153/108 +f 273/156/105 290/650/106 274/157/106 +f 260/344/108 277/651/109 261/158/109 +f 274/345/106 275/652/107 259/160/107 +f 262/124/110 277/653/109 278/654/110 +f 262/126/110 279/655/111 263/127/111 +f 263/337/111 280/656/97 264/128/97 +f 264/338/97 281/657/96 265/130/96 +f 265/133/96 282/658/98 266/134/98 +f 266/136/98 283/659/99 267/137/99 +f 267/139/99 284/660/100 268/140/100 +f 299/210/61 314/661/59 298/205/59 +f 307/192/62 322/662/60 306/188/60 +f 300/172/47 315/663/61 299/360/61 +f 308/193/49 323/664/62 307/192/62 +f 301/175/48 316/665/47 300/172/47 +f 309/196/50 324/666/49 308/193/49 +f 302/179/51 317/667/48 301/175/48 +f 310/200/52 325/668/50 309/196/50 +f 303/181/53 318/669/51 302/179/51 +f 311/202/54 326/670/52 310/200/52 +f 304/182/55 319/671/53 303/181/53 +f 312/206/56 327/672/54 311/202/54 +f 305/185/57 320/673/55 304/182/55 +f 298/205/59 313/674/58 297/203/58 +f 297/203/58 328/675/56 312/206/56 +f 306/188/60 321/676/57 305/185/57 +f 325/668/150 329/677/151 324/666/152 +f 323/664/153 324/666/152 329/678/151 +f 322/662/154 323/664/153 329/679/151 +f 321/676/155 322/662/154 329/680/151 +f 320/673/156 321/676/155 329/681/151 +f 319/671/157 320/673/156 329/682/151 +f 318/669/158 319/671/157 329/683/151 +f 317/667/159 318/669/158 329/684/151 +f 316/665/160 317/667/159 329/685/151 +f 315/663/161 316/665/160 329/686/151 +f 314/661/162 315/687/161 329/688/151 +f 313/674/163 314/661/162 329/689/151 +f 328/675/164 313/674/163 329/690/151 +f 327/672/165 328/675/164 329/691/151 +f 326/670/166 327/672/165 329/692/151 +f 325/668/150 326/670/166 329/693/151 +f 340/191/109 355/694/108 356/695/109 +f 340/194/109 357/696/110 341/195/110 +f 341/197/110 358/697/111 342/198/111 +f 343/199/97 358/697/111 359/698/97 +f 343/365/97 360/699/96 344/201/96 +f 330/366/99 347/700/100 331/204/100 +f 345/208/98 360/699/96 361/701/98 +f 332/209/101 347/700/100 348/702/101 +f 345/211/98 346/703/99 330/212/99 +f 333/174/104 348/704/101 349/705/104 +f 333/176/104 350/706/103 334/177/103 +f 335/178/102 350/706/103 351/707/102 +f 335/362/102 352/708/105 336/180/105 +f 336/183/105 353/709/106 337/184/106 +f 337/186/106 354/710/107 338/187/107 +f 338/189/107 355/694/108 339/190/108 +f 375/711/50 376/712/114 374/713/50 +f 377/714/114 378/715/115 376/712/114 +f 379/716/115 380/717/48 378/715/115 +f 381/718/48 382/719/112 380/717/48 +f 383/720/112 384/721/113 382/719/112 +f 385/722/113 374/713/50 384/723/113 +f 393/724/57 394/725/167 392/726/57 +f 395/727/167 396/728/168 394/725/167 +f 397/729/168 398/730/58 396/728/168 +f 399/731/58 400/732/169 398/730/58 +f 401/733/169 402/734/170 400/732/169 +f 403/735/170 392/726/57 402/736/170 +f 411/737/58 412/738/169 410/739/58 +f 413/740/169 414/741/170 412/738/169 +f 415/742/170 416/743/57 414/741/170 +f 417/744/57 418/745/167 416/743/57 +f 419/746/167 420/747/168 418/745/167 +f 421/748/168 410/739/58 420/749/168 f 4/426/47 21/448/47 22/434/48 f 12/410/49 29/449/49 30/435/50 f 5/424/48 22/457/48 23/436/51 @@ -1938,187 +1938,187 @@ f 2/431/59 19/443/59 20/446/61 f 10/414/60 27/445/60 28/447/62 f 3/429/61 20/446/61 21/448/47 f 11/412/62 28/447/62 29/449/49 -f 26/442/63 42/751/63 43/450/64 -f 19/443/65 35/752/65 36/451/66 -f 27/445/64 43/753/64 44/452/67 -f 20/446/66 36/754/66 37/453/68 -f 28/447/67 44/755/67 45/454/69 -f 21/448/68 37/756/68 38/455/70 -f 29/449/69 45/757/69 46/456/71 -f 22/457/70 38/496/70 39/458/72 -f 30/435/71 46/758/71 47/459/73 -f 23/436/72 39/759/72 40/460/74 -f 31/437/73 47/760/73 48/461/75 -f 24/438/74 40/761/74 41/462/76 -f 33/441/77 32/439/75 48/463/75 -f 25/440/76 41/762/76 42/465/63 -f 18/444/78 34/763/78 35/466/65 -f 33/441/77 49/764/77 34/467/78 -f 47/468/52 63/498/52 64/469/54 -f 40/471/53 56/499/53 57/472/55 -f 48/470/54 64/469/54 65/474/56 -f 41/473/55 57/472/55 58/476/57 -f 34/478/58 50/481/58 51/479/59 -f 49/475/56 65/474/56 50/481/58 -f 42/477/57 58/476/57 59/482/60 -f 35/480/59 51/479/59 52/484/61 -f 43/483/60 59/482/60 60/486/62 -f 36/485/61 52/484/61 53/488/47 -f 44/487/62 60/486/62 61/490/49 -f 37/489/47 53/488/47 54/492/48 -f 45/491/49 61/490/49 62/494/50 -f 38/496/48 54/765/48 55/497/51 -f 46/495/50 62/494/50 63/498/52 -f 39/458/51 55/497/51 56/499/53 -f 68/42/53 84/526/53 83/500/51 -f 76/24/54 92/503/54 91/501/52 -f 69/4/55 85/504/55 84/502/53 -f 77/25/56 93/505/56 92/503/54 -f 70/7/57 86/506/57 85/504/55 -f 78/28/58 94/507/58 93/505/56 -f 71/11/60 87/508/60 86/506/57 -f 79/32/59 95/509/59 94/507/58 -f 72/13/62 88/510/62 87/508/60 -f 80/34/61 96/511/61 95/509/59 -f 73/14/49 89/512/49 88/510/62 -f 81/38/47 97/514/47 96/511/61 -f 74/17/50 90/515/50 89/512/49 -f 67/37/51 83/500/51 82/513/48 -f 66/35/48 82/513/48 97/514/47 -f 75/20/52 91/501/52 90/515/50 -f 109/23/96 108/287/97 124/533/97 -f 109/26/96 125/534/96 126/535/98 -f 110/29/98 126/535/98 127/536/99 -f 111/288/99 127/536/99 128/537/100 -f 113/33/101 112/289/100 128/537/100 -f 100/36/102 99/290/103 115/539/103 -f 113/39/101 129/538/101 130/541/104 -f 100/291/102 116/540/102 117/542/105 -f 114/292/104 130/541/104 115/539/103 -f 102/6/106 101/5/105 117/543/105 -f 102/8/106 118/544/106 119/545/107 -f 103/285/107 119/545/107 120/546/108 -f 104/286/108 120/546/108 121/547/109 -f 105/15/109 121/547/109 122/548/110 -f 106/18/110 122/548/110 123/549/111 -f 107/21/111 123/549/111 124/533/97 -f 144/550/48 146/553/112 145/551/112 -f 146/553/112 148/555/113 147/554/113 -f 148/555/113 150/557/50 149/556/50 -f 150/557/50 152/559/114 151/558/114 -f 152/559/114 154/766/115 153/560/115 -f 154/561/115 144/550/48 143/552/48 -f 157/109/54 173/589/54 172/563/52 -f 165/91/53 181/566/53 180/564/51 -f 158/71/56 174/567/56 173/565/54 -f 166/92/55 182/568/55 181/566/53 -f 159/74/58 175/569/58 174/567/56 -f 167/95/57 183/570/57 182/568/55 -f 160/78/59 176/571/59 175/569/58 -f 168/99/60 184/572/60 183/570/57 -f 161/80/61 177/573/61 176/571/59 -f 169/101/62 185/574/62 184/572/60 -f 162/81/47 178/575/47 177/573/61 -f 170/105/49 186/577/49 185/574/62 -f 163/84/48 179/578/48 178/575/47 -f 156/104/52 172/563/52 171/576/50 -f 155/102/50 171/576/50 186/577/49 -f 164/87/51 180/564/51 179/578/48 -f 198/90/105 197/316/102 213/596/102 -f 198/93/105 214/597/105 215/598/106 -f 199/96/106 215/598/106 216/599/107 -f 201/98/108 200/317/107 216/599/107 -f 202/100/109 201/318/108 217/600/108 -f 188/319/111 204/605/111 205/602/97 -f 202/106/109 218/601/109 219/603/110 -f 190/108/96 189/320/97 205/602/97 -f 203/321/110 219/603/110 204/605/111 -f 190/72/96 206/767/96 207/606/98 -f 191/75/98 207/606/98 208/607/99 -f 192/314/99 208/607/99 209/608/100 -f 193/315/100 209/608/100 210/609/101 -f 194/82/101 210/609/101 211/610/104 -f 195/85/104 211/610/104 212/611/103 -f 196/88/103 212/611/103 213/596/102 -f 228/159/62 244/638/62 243/612/60 -f 236/142/61 252/615/61 251/613/59 -f 229/122/49 245/616/49 244/614/62 -f 237/143/47 253/617/47 252/615/61 -f 230/125/50 246/618/50 245/616/49 -f 238/147/48 254/619/48 253/617/47 -f 231/129/52 247/620/52 246/618/50 -f 239/149/51 255/621/51 254/619/48 -f 232/131/54 248/622/54 247/620/52 -f 240/151/53 256/623/53 255/621/51 -f 233/132/56 249/624/56 248/622/54 -f 241/155/55 257/626/55 256/623/53 -f 234/135/58 250/627/58 249/624/56 -f 227/154/60 243/612/60 242/625/57 -f 226/152/57 242/625/57 257/626/55 -f 235/138/59 251/613/59 250/627/58 -f 268/339/100 284/661/100 285/645/101 -f 269/144/101 285/645/101 286/646/104 -f 270/340/104 286/646/104 287/647/103 -f 271/341/103 287/647/103 288/648/102 -f 273/150/105 272/342/102 288/648/102 -f 259/343/107 275/653/107 276/650/108 -f 273/156/105 289/649/105 290/651/106 -f 260/344/108 276/650/108 277/652/109 -f 274/345/106 290/651/106 275/653/107 -f 262/124/110 261/123/109 277/654/109 -f 262/126/110 278/655/110 279/656/111 -f 263/337/111 279/656/111 280/657/97 -f 264/338/97 280/657/97 281/658/96 -f 265/133/96 281/658/96 282/659/98 -f 266/136/98 282/659/98 283/660/99 -f 267/139/99 283/660/99 284/661/100 -f 299/210/61 315/688/61 314/662/59 -f 307/192/62 323/665/62 322/663/60 -f 300/172/47 316/666/47 315/664/61 -f 308/193/49 324/667/49 323/665/62 -f 301/175/48 317/668/48 316/666/47 -f 309/196/50 325/669/50 324/667/49 -f 302/179/51 318/670/51 317/668/48 -f 310/200/52 326/671/52 325/669/50 -f 303/181/53 319/672/53 318/670/51 -f 311/202/54 327/673/54 326/671/52 -f 304/182/55 320/674/55 319/672/53 -f 312/206/56 328/676/56 327/673/54 -f 305/185/57 321/677/57 320/674/55 -f 298/205/59 314/662/59 313/675/58 -f 297/203/58 313/675/58 328/676/56 -f 306/188/60 322/663/60 321/677/57 -f 340/191/109 339/363/108 355/695/108 -f 340/194/109 356/696/109 357/697/110 -f 341/197/110 357/697/110 358/698/111 -f 343/199/97 342/364/111 358/698/111 -f 343/365/97 359/699/97 360/700/96 -f 330/366/99 346/704/99 347/701/100 -f 345/208/98 344/207/96 360/700/96 -f 332/209/101 331/367/100 347/701/100 -f 345/211/98 361/702/98 346/704/99 -f 333/174/104 332/173/101 348/705/101 -f 333/176/104 349/706/104 350/707/103 -f 335/178/102 334/361/103 350/707/103 -f 335/362/102 351/708/102 352/709/105 -f 336/183/105 352/709/105 353/710/106 -f 337/186/106 353/710/106 354/711/107 -f 338/189/107 354/711/107 355/695/108 -f 375/712/50 377/715/114 376/713/114 -f 377/715/114 379/717/115 378/716/115 -f 379/717/115 381/719/48 380/718/48 -f 381/719/48 383/721/112 382/720/112 -f 383/721/112 385/768/113 384/722/113 -f 385/723/113 375/712/50 374/714/50 -f 393/725/57 395/728/167 394/726/167 -f 395/728/167 397/730/168 396/729/168 -f 397/730/168 399/732/58 398/731/58 -f 399/732/58 401/734/169 400/733/169 -f 401/734/169 403/769/170 402/735/170 -f 403/736/170 393/725/57 392/727/57 -f 411/738/58 413/741/169 412/739/169 -f 413/741/169 415/743/170 414/742/170 -f 415/743/170 417/745/57 416/744/57 -f 417/745/57 419/747/167 418/746/167 -f 419/747/167 421/770/168 420/748/168 -f 421/749/168 411/738/58 410/740/58 +f 26/442/63 42/750/63 43/450/64 +f 19/443/65 35/751/65 36/451/66 +f 27/445/64 43/752/64 44/452/67 +f 20/446/66 36/753/66 37/453/68 +f 28/447/67 44/754/67 45/454/69 +f 21/448/68 37/755/68 38/455/70 +f 29/449/69 45/756/69 46/456/71 +f 22/457/70 38/495/70 39/458/72 +f 30/435/71 46/757/71 47/459/73 +f 23/436/72 39/758/72 40/460/74 +f 31/437/73 47/759/73 48/461/75 +f 24/438/74 40/760/74 41/462/76 +f 32/439/75 48/761/75 49/463/77 +f 25/440/76 41/762/76 42/464/63 +f 18/444/78 34/763/78 35/465/65 +f 33/441/77 49/764/77 34/466/78 +f 47/467/52 63/497/52 64/468/54 +f 40/470/53 56/498/53 57/471/55 +f 48/469/54 64/468/54 65/473/56 +f 41/472/55 57/471/55 58/475/57 +f 34/477/58 50/480/58 51/478/59 +f 49/474/56 65/473/56 50/480/58 +f 42/476/57 58/475/57 59/481/60 +f 35/479/59 51/478/59 52/483/61 +f 43/482/60 59/481/60 60/485/62 +f 36/484/61 52/483/61 53/487/47 +f 44/486/62 60/485/62 61/489/49 +f 37/488/47 53/487/47 54/491/48 +f 45/490/49 61/489/49 62/493/50 +f 38/495/48 54/765/48 55/496/51 +f 46/494/50 62/493/50 63/497/52 +f 39/458/51 55/496/51 56/498/53 +f 68/42/53 84/525/53 83/499/51 +f 76/24/54 92/502/54 91/500/52 +f 69/4/55 85/503/55 84/501/53 +f 77/25/56 93/504/56 92/502/54 +f 70/7/57 86/505/57 85/503/55 +f 78/28/58 94/506/58 93/504/56 +f 71/11/60 87/507/60 86/505/57 +f 79/32/59 95/508/59 94/506/58 +f 72/13/62 88/509/62 87/507/60 +f 80/34/61 96/510/61 95/508/59 +f 73/14/49 89/511/49 88/509/62 +f 81/38/47 97/513/47 96/510/61 +f 74/17/50 90/514/50 89/511/49 +f 67/37/51 83/499/51 82/512/48 +f 66/35/48 82/512/48 97/513/47 +f 75/20/52 91/500/52 90/514/50 +f 109/23/96 108/287/97 124/532/97 +f 109/26/96 125/533/96 126/534/98 +f 110/29/98 126/534/98 127/535/99 +f 111/288/99 127/535/99 128/536/100 +f 113/33/101 112/289/100 128/536/100 +f 100/36/102 99/290/103 115/538/103 +f 113/39/101 129/537/101 130/540/104 +f 100/291/102 116/539/102 117/541/105 +f 114/292/104 130/540/104 115/538/103 +f 102/6/106 101/5/105 117/542/105 +f 102/8/106 118/543/106 119/544/107 +f 103/285/107 119/544/107 120/545/108 +f 104/286/108 120/545/108 121/546/109 +f 105/15/109 121/546/109 122/547/110 +f 106/18/110 122/547/110 123/548/111 +f 107/21/111 123/548/111 124/532/97 +f 144/549/48 146/552/112 145/550/112 +f 146/552/112 148/554/113 147/553/113 +f 148/554/113 150/556/50 149/555/50 +f 150/556/50 152/558/114 151/557/114 +f 152/558/114 154/766/115 153/559/115 +f 154/560/115 144/549/48 143/551/48 +f 157/109/54 173/588/54 172/562/52 +f 165/91/53 181/565/53 180/563/51 +f 158/71/56 174/566/56 173/564/54 +f 166/92/55 182/567/55 181/565/53 +f 159/74/58 175/568/58 174/566/56 +f 167/95/57 183/569/57 182/567/55 +f 160/78/59 176/570/59 175/568/58 +f 168/99/60 184/571/60 183/569/57 +f 161/80/61 177/572/61 176/570/59 +f 169/101/62 185/573/62 184/571/60 +f 162/81/47 178/574/47 177/572/61 +f 170/105/49 186/576/49 185/573/62 +f 163/84/48 179/577/48 178/574/47 +f 156/104/52 172/562/52 171/575/50 +f 155/102/50 171/575/50 186/576/49 +f 164/87/51 180/563/51 179/577/48 +f 198/90/105 197/316/102 213/595/102 +f 198/93/105 214/596/105 215/597/106 +f 199/96/106 215/597/106 216/598/107 +f 201/98/108 200/317/107 216/598/107 +f 202/100/109 201/318/108 217/599/108 +f 188/319/111 204/604/111 205/601/97 +f 202/106/109 218/600/109 219/602/110 +f 190/108/96 189/320/97 205/601/97 +f 203/321/110 219/602/110 204/604/111 +f 190/72/96 206/767/96 207/605/98 +f 191/75/98 207/605/98 208/606/99 +f 192/314/99 208/606/99 209/607/100 +f 193/315/100 209/607/100 210/608/101 +f 194/82/101 210/608/101 211/609/104 +f 195/85/104 211/609/104 212/610/103 +f 196/88/103 212/610/103 213/595/102 +f 228/159/62 244/637/62 243/611/60 +f 236/142/61 252/614/61 251/612/59 +f 229/122/49 245/615/49 244/613/62 +f 237/143/47 253/616/47 252/614/61 +f 230/125/50 246/617/50 245/615/49 +f 238/147/48 254/618/48 253/616/47 +f 231/129/52 247/619/52 246/617/50 +f 239/149/51 255/620/51 254/618/48 +f 232/131/54 248/621/54 247/619/52 +f 240/151/53 256/622/53 255/620/51 +f 233/132/56 249/623/56 248/621/54 +f 241/155/55 257/625/55 256/622/53 +f 234/135/58 250/626/58 249/623/56 +f 227/154/60 243/611/60 242/624/57 +f 226/152/57 242/624/57 257/625/55 +f 235/138/59 251/612/59 250/626/58 +f 268/339/100 284/660/100 285/644/101 +f 269/144/101 285/644/101 286/645/104 +f 270/340/104 286/645/104 287/646/103 +f 271/341/103 287/646/103 288/647/102 +f 273/150/105 272/342/102 288/647/102 +f 259/343/107 275/652/107 276/649/108 +f 273/156/105 289/648/105 290/650/106 +f 260/344/108 276/649/108 277/651/109 +f 274/345/106 290/650/106 275/652/107 +f 262/124/110 261/123/109 277/653/109 +f 262/126/110 278/654/110 279/655/111 +f 263/337/111 279/655/111 280/656/97 +f 264/338/97 280/656/97 281/657/96 +f 265/133/96 281/657/96 282/658/98 +f 266/136/98 282/658/98 283/659/99 +f 267/139/99 283/659/99 284/660/100 +f 299/210/61 315/687/61 314/661/59 +f 307/192/62 323/664/62 322/662/60 +f 300/172/47 316/665/47 315/663/61 +f 308/193/49 324/666/49 323/664/62 +f 301/175/48 317/667/48 316/665/47 +f 309/196/50 325/668/50 324/666/49 +f 302/179/51 318/669/51 317/667/48 +f 310/200/52 326/670/52 325/668/50 +f 303/181/53 319/671/53 318/669/51 +f 311/202/54 327/672/54 326/670/52 +f 304/182/55 320/673/55 319/671/53 +f 312/206/56 328/675/56 327/672/54 +f 305/185/57 321/676/57 320/673/55 +f 298/205/59 314/661/59 313/674/58 +f 297/203/58 313/674/58 328/675/56 +f 306/188/60 322/662/60 321/676/57 +f 340/191/109 339/363/108 355/694/108 +f 340/194/109 356/695/109 357/696/110 +f 341/197/110 357/696/110 358/697/111 +f 343/199/97 342/364/111 358/697/111 +f 343/365/97 359/698/97 360/699/96 +f 330/366/99 346/703/99 347/700/100 +f 345/208/98 344/207/96 360/699/96 +f 332/209/101 331/367/100 347/700/100 +f 345/211/98 361/701/98 346/703/99 +f 333/174/104 332/173/101 348/704/101 +f 333/176/104 349/705/104 350/706/103 +f 335/178/102 334/361/103 350/706/103 +f 335/362/102 351/707/102 352/708/105 +f 336/183/105 352/708/105 353/709/106 +f 337/186/106 353/709/106 354/710/107 +f 338/189/107 354/710/107 355/694/108 +f 375/711/50 377/714/114 376/712/114 +f 377/714/114 379/716/115 378/715/115 +f 379/716/115 381/718/48 380/717/48 +f 381/718/48 383/720/112 382/719/112 +f 383/720/112 385/768/113 384/721/113 +f 385/722/113 375/711/50 374/713/50 +f 393/724/57 395/727/167 394/725/167 +f 395/727/167 397/729/168 396/728/168 +f 397/729/168 399/731/58 398/730/58 +f 399/731/58 401/733/169 400/732/169 +f 401/733/169 403/769/170 402/734/170 +f 403/735/170 393/724/57 392/726/57 +f 411/737/58 413/740/169 412/738/169 +f 413/740/169 415/742/170 414/741/170 +f 415/742/170 417/744/57 416/743/57 +f 417/744/57 419/746/167 418/745/167 +f 419/746/167 421/770/168 420/747/168 +f 421/748/168 411/737/58 410/739/58 diff --git a/src/main/resources/assets/hbm/models/missile_v2.obj b/src/main/resources/assets/hbm/models/missile_v2.obj new file mode 100644 index 000000000..16b7be918 --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_v2.obj @@ -0,0 +1,572 @@ +# Blender v2.79 (sub 0) OBJ File: 'missile_v2.blend' +# www.blender.org +o Cylinder +v 0.000000 1.500000 -0.500000 +v -0.191342 1.500000 -0.461940 +v -0.353553 1.500000 -0.353553 +v -0.461940 1.500000 -0.191342 +v -0.500000 1.500000 0.000000 +v -0.461940 1.500000 0.191342 +v -0.353553 1.500000 0.353553 +v -0.191342 1.500000 0.461940 +v -0.000000 1.500000 0.500000 +v 0.191342 1.500000 0.461940 +v 0.353553 1.500000 0.353553 +v 0.461940 1.500000 0.191342 +v 0.500000 1.500000 -0.000000 +v 0.461940 1.500000 -0.191342 +v 0.353553 1.500000 -0.353554 +v 0.191341 1.500000 -0.461940 +v 0.000000 4.000000 -0.500000 +v -0.191342 4.000000 -0.461940 +v -0.353553 4.000000 -0.353553 +v -0.461940 4.000000 -0.191342 +v -0.500000 4.000000 0.000000 +v -0.461940 4.000000 0.191342 +v -0.353553 4.000000 0.353553 +v -0.191342 4.000000 0.461940 +v -0.000000 4.000000 0.500000 +v 0.191342 4.000000 0.461940 +v 0.353553 4.000000 0.353554 +v 0.461940 4.000000 0.191342 +v 0.500000 4.000000 -0.000000 +v 0.461940 4.000000 -0.191342 +v 0.353553 4.000000 -0.353554 +v 0.191341 4.000000 -0.461940 +v -0.000000 5.500000 -0.375000 +v -0.143506 5.500000 -0.346455 +v -0.265165 5.500000 -0.265165 +v -0.346455 5.500000 -0.143506 +v -0.375000 5.500000 0.000000 +v -0.346455 5.500000 0.143506 +v -0.265165 5.500000 0.265165 +v -0.143506 5.500000 0.346455 +v -0.000000 5.500000 0.375000 +v 0.143506 5.500000 0.346455 +v 0.265165 5.500000 0.265165 +v 0.346455 5.500000 0.143506 +v 0.375000 5.500000 -0.000000 +v 0.346455 5.500000 -0.143506 +v 0.265165 5.500000 -0.265165 +v 0.143506 5.500000 -0.346455 +v -0.000000 7.000000 0.000000 +v -0.000000 0.500000 -0.375000 +v -0.143506 0.500000 -0.346455 +v -0.265165 0.500000 -0.265165 +v -0.346455 0.500000 -0.143506 +v -0.375000 0.500000 0.000000 +v -0.346455 0.500000 0.143506 +v -0.265165 0.500000 0.265165 +v -0.143506 0.500000 0.346455 +v -0.000000 0.500000 0.375000 +v 0.143506 0.500000 0.346455 +v 0.265165 0.500000 0.265165 +v 0.346455 0.500000 0.143506 +v 0.375000 0.500000 -0.000000 +v 0.346455 0.500000 -0.143506 +v 0.265165 0.500000 -0.265165 +v 0.143506 0.500000 -0.346455 +v -0.198874 0.500000 -0.243068 +v 0.243068 0.500000 -0.198874 +v -0.552427 -0.000000 -0.596621 +v -0.198874 2.500000 -0.243068 +v -0.596621 -0.000000 -0.552427 +v 0.596621 -0.000000 -0.552427 +v -0.243068 0.500000 -0.198874 +v -0.243068 2.500000 -0.198874 +v -0.729204 -0.000000 -0.773398 +v -0.729204 1.500000 -0.773398 +v -0.773398 1.500000 -0.729204 +v -0.773398 -0.000000 -0.729204 +v 0.243068 2.500000 -0.198874 +v 0.552427 -0.000000 -0.596621 +v 0.198874 0.500000 -0.243068 +v 0.198874 2.500000 -0.243068 +v 0.773398 -0.000000 -0.729204 +v 0.773398 1.500000 -0.729204 +v 0.729204 1.500000 -0.773398 +v 0.729204 -0.000000 -0.773398 +v -0.729204 -0.000000 0.773398 +v -0.729204 1.500000 0.773398 +v -0.773398 1.500000 0.729204 +v -0.773398 -0.000000 0.729204 +v -0.198874 2.500000 0.243068 +v -0.198874 0.500000 0.243068 +v -0.552427 -0.000000 0.596621 +v -0.243068 2.500000 0.198874 +v -0.596621 -0.000000 0.552427 +v -0.243068 0.500000 0.198874 +v 0.773398 -0.000000 0.729204 +v 0.773398 1.500000 0.729204 +v 0.729204 1.500000 0.773398 +v 0.729204 -0.000000 0.773398 +v 0.243068 2.500000 0.198874 +v 0.243068 0.500000 0.198874 +v 0.596621 -0.000000 0.552427 +v 0.198874 2.500000 0.243068 +v 0.552427 -0.000000 0.596621 +v 0.198874 0.500000 0.243068 +vt 0.954652 0.411214 +vt 0.954652 0.492632 +vt 0.815840 0.492632 +vt 0.803279 0.240385 +vt 0.786885 0.009615 +vt 0.803279 0.009615 +vt 0.803279 0.750000 +vt 0.786885 0.519231 +vt 0.803279 0.519231 +vt 1.000000 0.509615 +vt 0.868852 0.519231 +vt 0.868852 0.509615 +vt 1.000000 -0.000000 +vt 0.868852 0.009615 +vt 0.868852 -0.000000 +vt 0.803279 0.750000 +vt 1.000000 0.596154 +vt 0.803279 0.519231 +vt 0.803279 0.240385 +vt 1.000000 0.086538 +vt 0.803279 0.009615 +vt 1.000000 0.596154 +vt 1.000000 0.086538 +vt 0.803279 0.509615 +vt 0.786885 0.750000 +vt 0.803279 0.903846 +vt 0.786885 0.903846 +vt 0.803279 0.000000 +vt 0.786885 0.240385 +vt 0.803279 0.394231 +vt 0.786885 0.394231 +vt 0.786885 0.394231 +vt 0.803279 0.240385 +vt 0.803279 0.394231 +vt 0.868852 0.009615 +vt 0.803279 0.000000 +vt 0.868852 -0.000000 +vt 0.803279 0.009615 +vt 1.000000 0.086538 +vt 0.803279 0.240385 +vt 1.000000 0.086538 +vt 0.803279 0.009615 +vt 1.000000 -0.000000 +vt 0.786885 0.009615 +vt 0.786885 0.750000 +vt 0.803279 0.903846 +vt 0.786885 0.903846 +vt 0.868852 0.509615 +vt 0.803279 0.519231 +vt 0.803279 0.509615 +vt 0.803279 0.750000 +vt 1.000000 0.596154 +vt 0.803279 0.750000 +vt 1.000000 0.596154 +vt 0.803279 0.519231 +vt 1.000000 0.519231 +vt 1.000000 0.509615 +vt 0.786885 0.519231 +vt 0.815840 0.411214 +vt 0.847684 0.398734 +vt 0.885246 0.394352 +vt 0.922808 0.398734 +vt 0.975929 0.429891 +vt 0.983401 0.451923 +vt 0.975929 0.473955 +vt 0.922808 0.505112 +vt 0.885246 0.509494 +vt 0.847684 0.505112 +vt 0.794563 0.473955 +vt 0.787091 0.451923 +vt 0.794563 0.429891 +vt 1.000000 0.519231 +vt 1.000000 0.009615 +vt 1.000000 0.903846 +vt 0.868852 0.519231 +vt 1.000000 0.394231 +vt 0.868852 0.009615 +vt 1.000000 0.903846 +vt 1.000000 0.394231 +vt 0.786885 0.240385 +vt 1.000000 0.394231 +vt 1.000000 0.394231 +vt 0.868852 0.009615 +vt 1.000000 0.009615 +vt 0.868852 0.519231 +vt 1.000000 0.903846 +vt 1.000000 0.903846 +vt 0.868852 0.519231 +vt 0.295082 0.153846 +vt 0.245902 0.538462 +vt 0.245902 0.153846 +vt 0.737705 0.153846 +vt 0.688525 0.538462 +vt 0.688525 0.153846 +vt 0.344262 0.153846 +vt 0.295082 0.538462 +vt 0.786885 0.153846 +vt 0.737705 0.538462 +vt 0.393443 0.153846 +vt 0.344262 0.538462 +vt 0.049180 0.153846 +vt -0.000000 0.538462 +vt -0.000000 0.153846 +vt 0.442623 0.153846 +vt 0.393443 0.538462 +vt 0.098361 0.153846 +vt 0.049180 0.538462 +vt 0.491803 0.153846 +vt 0.442623 0.538462 +vt 0.147541 0.153846 +vt 0.098361 0.538462 +vt 0.540984 0.153846 +vt 0.491803 0.538462 +vt 0.196721 0.538462 +vt 0.147541 0.538462 +vt 0.639344 0.153846 +vt 0.590164 0.538462 +vt 0.590164 0.153846 +vt 0.540984 0.538462 +vt 0.196721 0.153846 +vt 0.639344 0.538462 +vt 0.573770 0.769231 +vt 0.540984 0.769231 +vt 0.196721 0.769231 +vt 0.672131 0.769231 +vt 0.639344 0.769231 +vt 0.278689 0.769231 +vt 0.245902 0.769231 +vt 0.688525 0.769231 +vt 0.295082 0.769231 +vt 0.770492 0.769231 +vt 0.737705 0.769231 +vt 0.377049 0.769231 +vt 0.344262 0.769231 +vt -0.000000 0.769231 +vt 0.393443 0.769231 +vt 0.081967 0.769231 +vt 0.049180 0.769231 +vt 0.442623 0.769231 +vt 0.098361 0.769231 +vt 0.491803 0.769231 +vt 0.147541 0.769231 +vt 0.590164 0.769231 +vt 0.655738 1.000000 +vt 0.721311 0.769231 +vt 0.704918 1.000000 +vt 0.754098 1.000000 +vt 0.032787 0.769231 +vt 0.016393 1.000000 +vt 0.065574 1.000000 +vt 0.131148 0.769231 +vt 0.114754 1.000000 +vt 0.180328 0.769231 +vt 0.163934 1.000000 +vt 0.229508 0.769231 +vt 0.213115 1.000000 +vt 0.262295 1.000000 +vt 0.327869 0.769231 +vt 0.311475 1.000000 +vt 0.360656 1.000000 +vt 0.426230 0.769231 +vt 0.409836 1.000000 +vt 0.475410 0.769231 +vt 0.459016 1.000000 +vt 0.524590 0.769231 +vt 0.508197 1.000000 +vt 0.557377 1.000000 +vt 0.622951 0.769231 +vt 0.606557 1.000000 +vt 0.278689 0.000000 +vt 0.688525 0.000000 +vt 0.721311 0.000000 +vt 0.295082 0.000000 +vt 0.327869 0.000000 +vt 0.737705 0.000000 +vt 0.770492 0.000000 +vt 0.344262 0.000000 +vt 0.377049 0.000000 +vt -0.000000 0.000000 +vt 0.032787 0.000000 +vt 0.426230 0.000000 +vt 0.081967 0.000000 +vt 0.475410 0.000000 +vt 0.131148 0.000000 +vt 0.491803 0.000000 +vt 0.524590 0.000000 +vt 0.180328 0.000000 +vt 0.622951 0.000000 +vt 0.573770 0.000000 +vt 0.196721 0.000000 +vt 0.229508 0.000000 +vt 0.639344 0.000000 +vt 0.672131 0.000000 +vt 0.786885 0.538462 +vt 0.245902 0.000000 +vt 0.393443 0.000000 +vt 0.049180 0.000000 +vt 0.442623 0.000000 +vt 0.098361 0.000000 +vt 0.147541 0.000000 +vt 0.590164 0.000000 +vt 0.540984 0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.5000 -0.7071 0.5000 +vn -0.5000 -0.7071 0.5000 +vn 0.7071 -0.0000 0.7071 +vn -0.7071 -0.0000 0.7071 +vn -0.5657 0.6000 -0.5657 +vn 0.5657 0.6000 -0.5657 +vn -0.5657 0.6000 0.5657 +vn 0.5000 -0.7071 -0.5000 +vn 0.5657 0.6000 0.5657 +vn -0.5000 -0.7071 -0.5000 +vn 0.7058 -0.0617 0.7058 +vn 0.3824 0.0413 0.9231 +vn 0.3820 -0.0617 0.9221 +vn -0.9221 -0.0617 -0.3820 +vn -0.7065 0.0413 -0.7065 +vn -0.7058 -0.0617 -0.7058 +vn 0.9221 -0.0617 0.3820 +vn 0.7065 0.0413 0.7065 +vn -0.9981 -0.0617 -0.0000 +vn -0.9231 0.0413 -0.3824 +vn 0.9981 -0.0617 -0.0000 +vn 0.9231 0.0413 0.3824 +vn -0.9221 -0.0617 0.3820 +vn -0.9991 0.0413 0.0000 +vn 0.9221 -0.0617 -0.3820 +vn 0.9991 0.0413 -0.0000 +vn -0.7058 -0.0617 0.7058 +vn -0.9231 0.0413 0.3824 +vn 0.7058 -0.0617 -0.7058 +vn 0.9231 0.0413 -0.3824 +vn -0.3820 -0.0617 0.9221 +vn -0.7065 0.0413 0.7065 +vn 0.3820 -0.0617 -0.9221 +vn 0.7065 0.0413 -0.7065 +vn 0.0000 0.0413 0.9991 +vn -0.3824 0.0413 0.9231 +vn -0.3820 -0.0617 -0.9221 +vn -0.0000 0.0413 -0.9991 +vn -0.0000 -0.0617 -0.9981 +vn 0.3824 0.0413 -0.9231 +vn -0.0000 -0.0617 0.9981 +vn -0.3824 0.0413 -0.9231 +vn -0.0000 0.1617 -0.9868 +vn 0.3776 0.1617 -0.9117 +vn -0.0000 0.1617 0.9868 +vn -0.6978 0.1617 -0.6978 +vn -0.3776 0.1617 -0.9117 +vn 0.6978 0.1617 0.6978 +vn 0.3776 0.1617 0.9117 +vn -0.9868 0.1617 0.0000 +vn -0.9117 0.1617 -0.3776 +vn 0.9868 0.1617 0.0000 +vn 0.9117 0.1617 0.3776 +vn -0.6978 0.1617 0.6978 +vn -0.9117 0.1617 0.3776 +vn 0.9117 0.1617 -0.3776 +vn 0.6978 0.1617 -0.6978 +vn -0.3776 0.1617 0.9117 +vn -0.0000 1.0000 0.0000 +vn 0.7016 -0.1240 0.7016 +vn -0.7016 -0.1240 -0.7016 +vn -0.9167 -0.1240 -0.3797 +vn 0.9167 -0.1240 0.3797 +vn -0.9923 -0.1240 -0.0000 +vn 0.9923 -0.1240 -0.0000 +vn -0.9167 -0.1240 0.3797 +vn 0.9167 -0.1240 -0.3797 +vn -0.7016 -0.1240 0.7016 +vn 0.7016 -0.1240 -0.7016 +vn -0.3797 -0.1240 0.9167 +vn 0.3797 -0.1240 -0.9167 +vn 0.0000 -0.1240 0.9923 +vn -0.3797 -0.1240 -0.9167 +vn -0.0000 -0.1240 -0.9923 +vn 0.3797 -0.1240 0.9167 +s off +f 64/1/1 60/2/1 56/3/1 +f 84/4/2 82/5/2 85/6/2 +f 76/7/3 74/8/3 77/9/3 +f 66/10/4 70/11/4 68/12/4 +f 67/13/5 79/14/5 71/15/5 +f 75/16/2 66/17/2 74/18/2 +f 83/19/6 67/20/6 82/21/6 +f 76/7/7 77/9/7 72/22/7 +f 84/4/3 85/6/3 80/23/3 +f 70/11/1 74/24/1 68/12/1 +f 75/25/8 73/26/8 69/27/8 +f 71/15/1 85/6/1 82/28/1 +f 83/29/9 81/30/9 78/31/9 +f 93/32/10 87/33/10 90/34/10 +f 92/35/1 89/36/1 94/37/1 +f 87/33/6 86/38/6 91/39/6 +f 88/40/3 95/41/3 89/42/3 +f 95/43/11 92/35/11 94/37/11 +f 87/33/7 89/44/7 86/38/7 +f 98/45/12 100/46/12 103/47/12 +f 104/48/1 96/49/1 99/50/1 +f 97/51/2 96/49/2 101/52/2 +f 98/53/7 105/54/7 99/55/7 +f 101/56/13 104/48/13 105/57/13 +f 97/51/6 99/58/6 96/49/6 +f 52/59/1 51/60/1 50/61/1 +f 50/61/1 65/62/1 64/1/1 +f 64/1/1 63/63/1 60/2/1 +f 63/63/1 62/64/1 60/2/1 +f 62/64/1 61/65/1 60/2/1 +f 60/2/1 59/66/1 56/3/1 +f 59/66/1 58/67/1 56/3/1 +f 58/67/1 57/68/1 56/3/1 +f 56/3/1 55/69/1 54/70/1 +f 54/70/1 53/71/1 52/59/1 +f 52/59/1 50/61/1 64/1/1 +f 56/3/1 54/70/1 52/59/1 +f 52/59/1 64/1/1 56/3/1 +f 84/4/2 83/29/2 82/5/2 +f 76/7/3 75/25/3 74/8/3 +f 66/10/4 72/72/4 70/11/4 +f 67/13/5 80/73/5 79/14/5 +f 69/74/2 66/17/2 75/16/2 +f 66/17/2 68/75/2 74/18/2 +f 78/76/6 67/20/6 83/19/6 +f 67/20/6 71/77/6 82/21/6 +f 70/11/7 72/22/7 77/9/7 +f 72/22/7 73/78/7 76/7/7 +f 79/14/3 80/23/3 85/6/3 +f 80/23/3 81/79/3 84/4/3 +f 70/11/1 77/9/1 74/24/1 +f 75/25/8 76/7/8 73/26/8 +f 71/15/1 79/14/1 85/6/1 +f 83/29/9 84/4/9 81/30/9 +f 93/32/10 88/80/10 87/33/10 +f 92/35/1 86/38/1 89/36/1 +f 92/35/6 91/39/6 86/38/6 +f 91/39/6 90/81/6 87/33/6 +f 93/82/3 95/41/3 88/40/3 +f 95/41/3 94/83/3 89/42/3 +f 95/43/11 91/84/11 92/35/11 +f 87/33/7 88/80/7 89/44/7 +f 98/45/12 97/51/12 100/46/12 +f 104/48/1 102/85/1 96/49/1 +f 102/85/2 101/52/2 96/49/2 +f 101/52/2 100/86/2 97/51/2 +f 103/87/7 105/54/7 98/53/7 +f 105/54/7 104/88/7 99/55/7 +f 101/56/13 102/85/13 104/48/13 +f 97/51/6 98/45/6 99/58/6 +s 1 +f 11/89/14 26/90/15 10/91/16 +f 4/92/17 19/93/18 3/94/19 +f 12/95/20 27/96/21 11/89/14 +f 5/97/22 20/98/23 4/92/17 +f 13/99/24 28/100/25 12/95/20 +f 6/101/26 21/102/27 5/103/22 +f 14/104/28 29/105/29 13/99/24 +f 7/106/30 22/107/31 6/101/26 +f 15/108/32 30/109/33 14/104/28 +f 8/110/34 23/111/35 7/106/30 +f 16/112/36 31/113/37 15/108/32 +f 8/110/34 25/114/38 24/115/39 +f 2/116/40 17/117/41 1/118/42 +f 1/118/42 32/119/43 16/112/36 +f 10/91/16 25/114/38 9/120/44 +f 3/94/19 18/121/45 2/116/40 +f 32/119/43 33/122/46 48/123/47 +f 26/90/15 41/124/48 25/114/38 +f 18/121/45 35/125/49 34/126/50 +f 26/90/15 43/127/51 42/128/52 +f 20/98/23 35/129/49 19/93/18 +f 28/100/25 43/130/51 27/96/21 +f 20/98/23 37/131/53 36/132/54 +f 28/100/25 45/133/55 44/134/56 +f 22/107/31 37/135/53 21/102/27 +f 30/109/33 45/136/55 29/105/29 +f 22/107/31 39/137/57 38/138/58 +f 31/113/37 46/139/59 30/109/33 +f 24/115/39 39/140/57 23/111/35 +f 32/119/43 47/141/60 31/113/37 +f 25/114/38 40/142/61 24/115/39 +f 18/121/45 33/143/46 17/117/41 +f 34/126/50 35/125/49 49/144/62 +f 35/129/49 36/145/54 49/146/62 +f 36/132/54 37/131/53 49/147/62 +f 37/135/53 38/148/58 49/149/62 +f 38/138/58 39/137/57 49/150/62 +f 39/140/57 40/151/61 49/152/62 +f 40/142/61 41/153/48 49/154/62 +f 41/124/48 42/155/52 49/156/62 +f 42/128/52 43/127/51 49/157/62 +f 43/130/51 44/158/56 49/159/62 +f 44/134/56 45/133/55 49/160/62 +f 45/136/55 46/161/59 49/162/62 +f 46/139/59 47/163/60 49/164/62 +f 47/141/60 48/165/47 49/166/62 +f 48/123/47 33/122/46 49/167/62 +f 33/143/46 34/168/50 49/169/62 +f 10/91/16 60/170/63 11/89/14 +f 4/92/17 52/171/64 53/172/65 +f 12/95/20 60/173/63 61/174/66 +f 5/97/22 53/175/65 54/176/67 +f 13/99/24 61/177/66 62/178/68 +f 6/101/26 54/179/67 55/180/69 +f 13/99/24 63/181/70 14/104/28 +f 6/101/26 56/182/71 7/106/30 +f 14/104/28 64/183/72 15/108/32 +f 7/106/30 57/184/73 8/110/34 +f 16/112/36 64/185/72 65/186/74 +f 8/110/34 58/187/75 9/120/44 +f 1/118/42 51/188/76 2/116/40 +f 16/112/36 50/189/77 1/118/42 +f 10/91/16 58/190/75 59/191/78 +f 3/94/19 51/192/76 52/193/64 +f 11/89/14 27/96/21 26/90/15 +f 4/92/17 20/98/23 19/93/18 +f 12/95/20 28/100/25 27/96/21 +f 5/97/22 21/194/27 20/98/23 +f 13/99/24 29/105/29 28/100/25 +f 6/101/26 22/107/31 21/102/27 +f 14/104/28 30/109/33 29/105/29 +f 7/106/30 23/111/35 22/107/31 +f 15/108/32 31/113/37 30/109/33 +f 8/110/34 24/115/39 23/111/35 +f 16/112/36 32/119/43 31/113/37 +f 8/110/34 9/120/44 25/114/38 +f 2/116/40 18/121/45 17/117/41 +f 1/118/42 17/117/41 32/119/43 +f 10/91/16 26/90/15 25/114/38 +f 3/94/19 19/93/18 18/121/45 +f 32/119/43 17/117/41 33/122/46 +f 26/90/15 42/155/52 41/124/48 +f 18/121/45 19/93/18 35/125/49 +f 26/90/15 27/96/21 43/127/51 +f 20/98/23 36/145/54 35/129/49 +f 28/100/25 44/158/56 43/130/51 +f 20/98/23 21/194/27 37/131/53 +f 28/100/25 29/105/29 45/133/55 +f 22/107/31 38/148/58 37/135/53 +f 30/109/33 46/161/59 45/136/55 +f 22/107/31 23/111/35 39/137/57 +f 31/113/37 47/163/60 46/139/59 +f 24/115/39 40/151/61 39/140/57 +f 32/119/43 48/165/47 47/141/60 +f 25/114/38 41/153/48 40/142/61 +f 18/121/45 34/168/50 33/143/46 +f 10/91/16 59/195/78 60/170/63 +f 4/92/17 3/94/19 52/171/64 +f 12/95/20 11/89/14 60/173/63 +f 5/97/22 4/92/17 53/175/65 +f 13/99/24 12/95/20 61/177/66 +f 6/101/26 5/103/22 54/179/67 +f 13/99/24 62/196/68 63/181/70 +f 6/101/26 55/197/69 56/182/71 +f 14/104/28 63/198/70 64/183/72 +f 7/106/30 56/199/71 57/184/73 +f 16/112/36 15/108/32 64/185/72 +f 8/110/34 57/200/73 58/187/75 +f 1/118/42 50/201/77 51/188/76 +f 16/112/36 65/202/74 50/189/77 +f 10/91/16 9/120/44 58/190/75 +f 3/94/19 2/116/40 51/192/76 diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2.png b/src/main/resources/assets/hbm/textures/models/missile_v2.png new file mode 100644 index 0000000000000000000000000000000000000000..9959468ec14a38c89e1c2cd39162f7d11bc17ad3 GIT binary patch literal 885 zcmeAS@N?(olHy`uVBq!ia0vp^wm_W0!3HFq6o0G*QY^(zo*^7SP{WbZ!N9<*Ba_2b)q7Gs^pVA@ zZ_JMyoDW9*-gIpr1A|vg+~Lf((%#FwPQpsKfiQrzEjO`37H zEY)`z6`$MNHGP^u`Gv$Kg>Eu#QpFrEe^#!KvkH9?;vGCScB@Hi)XO_R)&^C*Y;v7z z@|^3fNni3O`K4>(4|nd0)=af+tCqd@$Ts5BrX{L(YA)ITGu!d~##s|zrI)Y2YW-5G zz2CiU`my8gcO{q~Tj-sd&%n@@Sh4!?FUb^(s&M)8YnKN+Rb`=Sfa7f&(aaH2TAqEEBdxtOa zKip9M$I|-{gZ8g`{l}fZsOD{-o$*`ual61j4rYcem)b9!d%ij2_uj|B0f!juTi@K~ znyg}{n!dKy^7*9oZofXsyC>vfITUTRz0t%)WQYNjdfOj|htv2E~^6Pczn-+>_9My!hiufz73V zG-M7wn&B*FR8|$7Gxc8d5%XgWTfhC?zSS(!`h=5Mv(CoQs(LB=dl^goBm)(-dn>OV zdu_1llJ&78>qXwY^8Kj$QdhCsZ~B4HKU>zlK4HDe^0LX(`W-=+j&io&Pz@?AoW#8S z=!q}Ox(% zSHIl+`qCeTR%sne%tZBh6@=LWlzJcXRK8kbxwzFTlke4%>?+|Elbpa##^|@Z}e{SiwdRbYuJk2E3_chPq53gN)ABx$pE#7~B w^6R<9Pm;rq{?|KgIekvvw|o0nc>UvFUgSJ6IIa8=Fds2^y85}Sb4q9e0MSdXv;Y7A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2_bu.png b/src/main/resources/assets/hbm/textures/models/missile_v2_bu.png new file mode 100644 index 0000000000000000000000000000000000000000..84ca714b3067cdc37db4d46457caeca792f7020d GIT binary patch literal 846 zcmV-U1F`&xP)`~~#38;`( zqT{bXj$@O7tl7-NpA^XuqFsS5>-&CMkl3EX z7un&DvNVtc%NX|35e z9?9u+TAe?B2d>xa)IJ;ztZg!mZ6wk6{ZsKN(R zG{@e_D^LI4fv+T)+U)54{qqxQf41TC^KOw7z2QW&>`g?X?X9(*+H8B@iXznhY{Hkd z9PRA^PBaI&bDCvuv~xPz+XI|vj=kZ|X%1OcRiXB06E2s_;%(sWvYy>q)^(l0iJr4~ zUDpW_V7kc1D3}N^UF5R2DVWI0dm~`m+ZIejlx?;*8(<&hrfD7o69MMEM|^^b00Nm$ zoYs0M%hLHts;Uw_BRikZi~6^1i+7#o;0$DIBRV%egdE@QE_@m$vQ@F`40~y=iuk_h!e5DlS zc|I-YdG2(|>@;*uv|Pe(j^B0N6u9hd7X>nD*iqYDX98vKvA_9o!H(Xq^!cmteTcuc zJRXnEduAU`3s)pfPB^d%SENl&<}hEO^x8Xg8tE_7R8G;Mvng9=YhvLF0i=uOm@Qm+ zhurm+uSvq?y+>lHGff<9q8!d^v-!)^e_JMf~&WrfCw_6ArEQ;EUw{ Y0leu#$u@hv)c^nh07*qoM6N<$f^Q(59smFU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2_cl.png b/src/main/resources/assets/hbm/textures/models/missile_v2_cl.png new file mode 100644 index 0000000000000000000000000000000000000000..7399458d671e3a050ebc831f3dd34c968308f310 GIT binary patch literal 887 zcmV--1Bm>IP)rVUt1C%Ti`px6%c+^2zmZ!2TPXGWE+hf>_{UK$d z=(P|Xd}n!M(yUbKbKT zZF6*K+qT^S#kLQZXJ$X zVp|6@+R6RH9clA^{PWbcvF6S0IgN?S*@?!CcKYS>*BNdl9FOqSf002tHJ!RNFy5P; zXq5K`0Mgz&&-1R04o>#_eVDtMiNoP=b{x&y0Xxwc*v)B_d2^f7(Yzh76OA!%c5@m- zdjD`2>V9THUs_^ex60~UT2@t+uoLYw@v5p40EX!z7fLX|yJ$T*NU^PBGjClm06;qQ zA6q)6d7FX(0Mgm+W(LeruIu_jFaX26x56bD;C-ZD-(I>oLaklbbzl~5rB2q7+nd(AsU zWE84@U9glAq?Bjkb-bddL`E2{-MoVyr=fxG)?EY6sBWSurhDcYwPE9yd$lLeN(QPvwzI{W@zs{<(gad?}Gf&a<|)A z*UT<@3s)!wCm2wLE7XD$ANnhlPV)|(M!IF1$|^c^Hf8Q?O)Oji=6P>#;mQ(n*VoE> zV_=u}R>Z;;19o|DRN)H1GMrK94LluIjtpD4LViwr*onr# zPINSH2kb;+U?)17w*z*fF|ZRI&D#Mx(HPi?j^^!vooEc~L`U;>z)mywlYxN0rEg)7wer^gho`~wUCS$$5Y1xx?{ N002ovPDHLkV1j<%uc-h4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2_inc.png b/src/main/resources/assets/hbm/textures/models/missile_v2_inc.png new file mode 100644 index 0000000000000000000000000000000000000000..18faa37efcc020494ce3ac30cf6d2452a54d0c82 GIT binary patch literal 942 zcmV;f15x~mP)WX`Y zYwjIFaZOyHAi1!Fx zg~_Qe44F}SD2&oWVU!*U@$}|u|0KliQyAox4qke*yj9K2Hp|;x@X{KZ6EqlUJ0k`o zZ8Hez_U9g6+EwVFrMb!uEzJQd?Hj)#rMo69aMF?)+GP9u>ik0}`%huQePan_zm0Sr z9@}Ry`$yIB+W7WWpWa;2_W89_enLc46vcjr zWLukpeaE+vTy3~3Edg$vmJDrh(vqtUCoKU^dQ5KyIB5xR(qnovz)4GhlOEHX0Zv*1 zob;I93~lb;5@Od*-x%nt#xvpPvCsI%n1kn4RUIAU zlqT}56EpuJt1o-DF6f=i-YOyfl$cmXAY0Zw{MZw5GN32@R~>767A-VL$7^lrMQaMB$1dKa9uE4|wbd~nk3 z^meUiLM`hQMRD-pmT-e#)_M8-%ej9(pR>1F1^>IOyZJnFt#IUdzT+zSUj Date: Fri, 24 Nov 2023 15:00:52 +0100 Subject: [PATCH 122/207] new radar targeting interface, second GUI, target localiaztion --- .../api/hbm/entity/IRadarDetectableNT.java | 8 ++ src/main/java/api/hbm/entity/RadarEntry.java | 15 ++-- .../com/hbm/crafting/ConsumableRecipes.java | 2 +- .../missile/EntityMissileAntiBallistic.java | 28 ++++++- .../entity/missile/EntityMissileBaseNT.java | 20 ++++- .../entity/missile/EntityMissileCustom.java | 33 ++++++++ .../entity/missile/EntityMissileDoomsday.java | 11 +++ .../entity/missile/EntityMissileShuttle.java | 11 +++ .../entity/missile/EntityMissileTier0.java | 13 +++ .../entity/missile/EntityMissileTier1.java | 11 +++ .../entity/missile/EntityMissileTier2.java | 11 +++ .../entity/missile/EntityMissileTier3.java | 11 +++ .../entity/missile/EntityMissileTier4.java | 13 ++- .../container/ContainerMachineRadarNT.java | 76 ++++++++++++++++++ .../hbm/inventory/gui/GUIMachineRadarNT.java | 5 ++ .../inventory/gui/GUIMachineRadarNTSlots.java | 69 ++++++++++++++++ .../hbm/inventory/gui/GuiInfoContainer.java | 4 + .../machine/TileEntityMachineRadarNT.java | 69 +++++++++++----- src/main/resources/assets/hbm/lang/de_DE.lang | 4 + src/main/resources/assets/hbm/lang/en_US.lang | 20 ++++- .../textures/gui/machine/gui_radar_link.png | Bin 1491 -> 2030 bytes .../hbm/textures/gui/machine/gui_radar_nt.png | Bin 19931 -> 20169 bytes 22 files changed, 405 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java diff --git a/src/main/java/api/hbm/entity/IRadarDetectableNT.java b/src/main/java/api/hbm/entity/IRadarDetectableNT.java index 19b3f85bf..0b327620c 100644 --- a/src/main/java/api/hbm/entity/IRadarDetectableNT.java +++ b/src/main/java/api/hbm/entity/IRadarDetectableNT.java @@ -15,11 +15,19 @@ public interface IRadarDetectableNT { public static final int TIER_AB = 10; public static final int PLAYER = 11; public static final int ARTY = 12; + /** Reserved type that shows a unique purple blip. Used for when nothing else applies. */ + public static final int SPECIAL = 13; + /** Name use for radar display, uses I18n for lookup */ public String getUnlocalizedName(); + /** The type of dot to show on the radar as well as the redstone level in tier mode */ public int getBlipLevel(); + /** Whether the object can be seen by this type of radar */ public boolean canBeSeenBy(Object radar); + /** Whether the object is currently visible, as well as whether the radar's setting allow for picking this up */ public boolean paramsApplicable(RadarScanParams params); + /** Whether this radar entry should be counted for the redstone output */ + public boolean suppliesRedstone(RadarScanParams params); public static class RadarScanParams { public boolean scanMissiles = true; diff --git a/src/main/java/api/hbm/entity/RadarEntry.java b/src/main/java/api/hbm/entity/RadarEntry.java index 56bb41df4..91733b81e 100644 --- a/src/main/java/api/hbm/entity/RadarEntry.java +++ b/src/main/java/api/hbm/entity/RadarEntry.java @@ -7,34 +7,39 @@ import net.minecraft.entity.player.EntityPlayer; public class RadarEntry { + /** Name use for radar display, uses I18n for lookup */ public String unlocalizedName; + /** The type of dot to show on the radar as well as the redstone level in tier mode */ public int blipLevel; public int posX; public int posY; public int posZ; public int dim; + /** Whether this radar entry should be counted for the redstone output */ + public boolean redstone; public RadarEntry() { } //blank ctor for packets - public RadarEntry(String name, int level, int x, int y, int z, int dim) { + public RadarEntry(String name, int level, int x, int y, int z, int dim, boolean redstone) { this.unlocalizedName = name; this.blipLevel = level; this.posX = x; this.posY = y; this.posZ = z; this.dim = dim; + this.redstone = redstone; } - public RadarEntry(IRadarDetectableNT detectable, Entity entity) { - this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension); + public RadarEntry(IRadarDetectableNT detectable, Entity entity, boolean redstone) { + this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, redstone); } public RadarEntry(IRadarDetectable detectable, Entity entity) { - this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension); + this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, entity.motionY < 0); } public RadarEntry(EntityPlayer player) { - this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension); + this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension, true); } public void fromBytes(ByteBuf buf) { diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index a7a2b6e3f..caac98962 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -52,7 +52,7 @@ public class ConsumableRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.med_ptsd, 1), new Object[] { ModItems.med_ipecac }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), DIAMOND.dust(), Items.wheat, ModItems.bolt_tungsten, ModItems.wire_copper, STEEL.plate() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), EMERALD.dust(), Items.wheat, ModItems.bolt_tungsten, ModItems.wire_copper, STEEL.plate() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.chocolate_milk, 1), new Object[] { KEY_ANYPANE, new ItemStack(Items.dye, 1, 3), Items.milk_bucket, KNO.block(), S.dust(), S.dust(), S.dust(), P_RED.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.chocolate_milk, 1), new Object[] { KEY_ANYPANE, new ItemStack(Items.dye, 1, 3), Items.milk_bucket, Fluids.NITROGLYCERIN.getDict(1_000) }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.loops), new Object[] { ModItems.flame_pony, Items.wheat, Items.sugar }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.loop_stew), new Object[] { ModItems.loops, ModItems.can_smart, Items.bowl }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.coffee), new Object[] { COAL.dust(), Items.milk_bucket, Items.potionitem, Items.sugar }); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index 8c0ca9511..21657fafb 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -10,6 +10,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import api.hbm.entity.IRadarDetectable; +import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; @@ -23,7 +24,7 @@ import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.common.ForgeChunkManager.Type; -public class EntityMissileAntiBallistic extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable { +public class EntityMissileAntiBallistic extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable, IRadarDetectableNT { private Ticket loaderTicket; public Entity tracking; @@ -226,4 +227,29 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements public RadarTargetType getTargetType() { return RadarTargetType.MISSILE_AB; } + + @Override + public String getUnlocalizedName() { + return "radar.target.abm"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER_AB; + } + + @Override + public boolean canBeSeenBy(Object radar) { + return true; + } + + @Override + public boolean paramsApplicable(RadarScanParams params) { + return params.scanMissiles; + } + + @Override + public boolean suppliesRedstone(RadarScanParams params) { + return false; + } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index aa45fc7ef..9cc8c9456 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -9,6 +9,7 @@ import com.hbm.explosion.ExplosionLarge; import com.hbm.main.MainRegistry; import api.hbm.entity.IRadarDetectable; +import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.ItemStack; @@ -23,7 +24,7 @@ import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.common.ForgeChunkManager.Type; -public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable { +public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable, IRadarDetectableNT { public int startX; public int startZ; @@ -62,6 +63,23 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen this.setSize(1.5F, 1.5F); } + + @Override + public boolean canBeSeenBy(Object radar) { + return true; + } + + @Override + public boolean paramsApplicable(RadarScanParams params) { + if(!params.scanMissiles) return false; + return true; + } + + @Override + public boolean suppliesRedstone(RadarScanParams params) { + if(params.smartMode && this.motionY >= 0) return false; + return true; + } @Override protected void entityInit() { diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index f2ebf4584..7c82eb017 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -21,6 +21,7 @@ import com.hbm.items.weapon.ItemMissile.WarheadType; import com.hbm.main.MainRegistry; import api.hbm.entity.IRadarDetectable; +import api.hbm.entity.IRadarDetectableNT; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -233,6 +234,38 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo return RadarTargetType.MISSILE_TIER1; } + @Override + public String getUnlocalizedName() { + + ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); + PartSize top = part.top; + PartSize bottom = part.bottom; + + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) return "radar.target.custom10"; + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) return "radar.target.custom1015"; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return "radar.target.custom15"; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return "radar.target.custom1520"; + if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return "radar.target.custom20"; + + return "radar.target.custom"; + } + + @Override + public int getBlipLevel() { + + ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10)); + PartSize top = part.top; + PartSize bottom = part.bottom; + + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) return IRadarDetectableNT.TIER10; + if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) return IRadarDetectableNT.TIER10_15; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return IRadarDetectableNT.TIER15; + if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return IRadarDetectableNT.TIER15_20; + if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return IRadarDetectableNT.TIER20; + + return IRadarDetectableNT.TIER1; + } + @Override public List getDebris() { return new ArrayList(); } @Override public ItemStack getDebrisRareDrop() { return null; } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java index e4f8609b4..63e14e7f3 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; +import api.hbm.entity.IRadarDetectableNT; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -108,4 +109,14 @@ public class EntityMissileDoomsday extends EntityMissileBaseNT { public RadarTargetType getTargetType() { return RadarTargetType.MISSILE_TIER4; } + + @Override + public String getUnlocalizedName() { + return "radar.target.doomsday"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER4; + } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java index 42edb75dd..356588f64 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java @@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -64,4 +65,14 @@ public class EntityMissileShuttle extends EntityMissileBaseNT { public RadarTargetType getTargetType() { return RadarTargetType.MISSILE_TIER3; } + + @Override + public String getUnlocalizedName() { + return "radar.target.shuttle"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER3; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java index e3aee4b0b..d1d6ecba9 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -13,6 +13,9 @@ import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.items.ModItems; + +import api.hbm.entity.IRadarDetectableNT; + import com.hbm.items.ItemAmmoEnums.AmmoFatman; import net.minecraft.item.ItemStack; @@ -38,6 +41,16 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT { public RadarTargetType getTargetType() { return RadarTargetType.MISSILE_TIER0; } + + @Override + public String getUnlocalizedName() { + return "radar.target.tier0"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER0; + } public static class EntityMissileMicro extends EntityMissileTier0 { public EntityMissileMicro(World world) { super(world); } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java index 8fe5cae83..f640def7a 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java @@ -7,6 +7,7 @@ import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; +import api.hbm.entity.IRadarDetectableNT; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -29,6 +30,16 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT { return RadarTargetType.MISSILE_TIER1; } + @Override + public String getUnlocalizedName() { + return "radar.target.tier1"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER1; + } + public static class EntityMissileGeneric extends EntityMissileTier1 { public EntityMissileGeneric(World world) { super(world); } public EntityMissileGeneric(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java index 9296e0448..8c9917324 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java @@ -8,6 +8,7 @@ import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; +import api.hbm.entity.IRadarDetectableNT; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -33,6 +34,16 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT { return RadarTargetType.MISSILE_TIER2; } + @Override + public String getUnlocalizedName() { + return "radar.target.tier2"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER2; + } + public static class EntityMissileStrong extends EntityMissileTier2 { public EntityMissileStrong(World world) { super(world); } public EntityMissileStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java index 11c527b0e..17602263a 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java @@ -10,6 +10,7 @@ import com.hbm.explosion.ExplosionThermo; import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.items.ModItems; +import api.hbm.entity.IRadarDetectableNT; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -34,6 +35,16 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT { public RadarTargetType getTargetType() { return RadarTargetType.MISSILE_TIER3; } + + @Override + public String getUnlocalizedName() { + return "radar.target.tier3"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER3; + } public static class EntityMissileBurst extends EntityMissileTier3 { public EntityMissileBurst(World world) { super(world); } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java index 7e859c779..826f4143f 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java @@ -10,6 +10,7 @@ import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; +import api.hbm.entity.IRadarDetectableNT; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -31,7 +32,17 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT { @Override public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; + return RadarTargetType.MISSILE_TIER4; + } + + @Override + public String getUnlocalizedName() { + return "radar.target.tier4"; + } + + @Override + public int getBlipLevel() { + return IRadarDetectableNT.TIER4; } public static class EntityMissileNuclear extends EntityMissileTier4 { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java new file mode 100644 index 000000000..0bd1f475b --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRadarNT.java @@ -0,0 +1,76 @@ +package com.hbm.inventory.container; + +import com.hbm.items.ModItems; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineRadarNT extends Container { + + private TileEntityMachineRadarNT radar; + + public ContainerMachineRadarNT(InventoryPlayer invPlayer, TileEntityMachineRadarNT tedf) { + this.radar = tedf; + + for(int i = 0; i < 8; i++) this.addSlotToContainer(new Slot(tedf, i, 26 + i * 18, 17)); + + this.addSlotToContainer(new Slot(tedf, 8, 26, 44)); + this.addSlotToContainer(new Slot(tedf, 9, 152, 44)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= 9) { + if(!this.mergeItemStack(var5, 10, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(var5, 9, 10, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 0, 9, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return radar.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java index 3674c9ea9..8a937f3af 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -53,6 +53,8 @@ public class GUIMachineRadarNT extends GuiScreen { if(checkClick(x, y, -10, 118, 8, 8)) cmd = "smart"; if(checkClick(x, y, -10, 128, 8, 8)) cmd = "red"; if(checkClick(x, y, -10, 138, 8, 8)) cmd = "map"; + if(checkClick(x, y, -10, 158, 8, 8)) cmd = "gui1"; + if(checkClick(x, y, -10, 178, 8, 8)) cmd = "clear"; if(cmd != null) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); @@ -81,6 +83,8 @@ public class GUIMachineRadarNT extends GuiScreen { if(checkClick(mouseX, mouseY, -10, 118, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.smartMode")), mouseX, mouseY); if(checkClick(mouseX, mouseY, -10, 128, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.redMode")), mouseX, mouseY); if(checkClick(mouseX, mouseY, -10, 138, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.showMap")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 158, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.toggleGui")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 178, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.clearMap")), mouseX, mouseY); if(!radar.entries.isEmpty()) { for(RadarEntry m : radar.entries) { @@ -102,6 +106,7 @@ public class GUIMachineRadarNT extends GuiScreen { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft - 14, guiTop + 84, 224, 0, 14, 66); + drawTexturedModalRect(guiLeft - 14, guiTop + 154, 224, 66, 14, 36); if(radar.power > 0) { int i = (int) (radar.power * 200 / radar.maxPower); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java new file mode 100644 index 000000000..4cc5406c9 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java @@ -0,0 +1,69 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineRadarNT; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.network.play.client.C0DPacketCloseWindow; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineRadarNTSlots extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_link.png"); + private TileEntityMachineRadarNT radar; + + public GUIMachineRadarNTSlots(InventoryPlayer invPlayer, TileEntityMachineRadarNT tedf) { + super(new ContainerMachineRadarNT(invPlayer, tedf)); + radar = tedf; + + this.xSize = 176; + this.ySize = 184; + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(checkClick(x, y, 5, 5, 8, 8)) { + this.mc.thePlayer.sendQueue.addToSendQueue(new C0DPacketCloseWindow(this.mc.thePlayer.openContainer.windowId)); // closes the server-side GUI component without resetting the client's cursor position + FMLNetworkHandler.openGui(this.mc.thePlayer, MainRegistry.instance, 0, radar.getWorldObj(), radar.xCoord, radar.yCoord, radar.zCoord); + } + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + if(checkClick(mouseX, mouseY, 5, 5, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.toggleGui")), mouseX, mouseY); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.radar.hasCustomInventoryName() ? this.radar.getInventoryName() : I18n.format(this.radar.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(radar.power > 0) { + int i = (int) (radar.power * 160 / radar.maxPower); + drawTexturedModalRect(guiLeft + 8, guiTop + 64, 0, 185, i, 16); + } + } + +} diff --git a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java index e5b244fc5..1ae9a28e9 100644 --- a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java +++ b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java @@ -75,6 +75,10 @@ public abstract class GuiInfoContainer extends GuiContainer { return this.func_146978_c(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, x, y); } + protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { + return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; + } + /* Getters for external use of the GUI's rect rendering, such as NumberDisplay */ public int getGuiTop() { return this.guiTop; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 89ef0ec5c..9dba6fd2d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -11,8 +11,11 @@ import com.hbm.blocks.ModBlocks; import com.hbm.config.WeaponConfig; import com.hbm.extprop.HbmLivingProps; import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerMachineRadarNT; import com.hbm.inventory.gui.GUIMachineRadarNT; +import com.hbm.inventory.gui.GUIMachineRadarNTSlots; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -23,6 +26,7 @@ import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.IRadarDetectableNT.RadarScanParams; import api.hbm.entity.RadarEntry; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; @@ -70,6 +74,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public static int chunkLoadCap = 5; public byte[] map = new byte[40_000]; + public boolean clearFlag = false; public List entries = new ArrayList(); @@ -99,12 +104,12 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } public TileEntityMachineRadarNT() { - super(1); + super(10); } @Override public String getName() { - return ""; + return "container.radar"; } @Override @@ -113,6 +118,8 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I if(this.map == null || this.map.length != 40_000) this.map = new byte[40_000]; if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 9, power, maxPower); if(worldObj.getTotalWorldTime() % 20 == 0) this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); @@ -158,6 +165,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } this.networkPackNT(50); + if(this.clearFlag) this.clearFlag = false; } else { prevRotation = rotation; if(power > 0) rotation += 5F; @@ -181,15 +189,20 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I buf.writeBoolean(this.jammed); buf.writeInt(entries.size()); for(RadarEntry entry : entries) entry.toBytes(buf); - if(this.showMap) { + if(this.clearFlag) { buf.writeBoolean(true); - short index = (short) (worldObj.getTotalWorldTime() % 400); - buf.writeShort(index); - for(int i = index * 100; i < (index + 1) * 100; i++) { - buf.writeByte(this.map[i]); - } } else { buf.writeBoolean(false); + if(this.showMap) { + buf.writeBoolean(true); + short index = (short) (worldObj.getTotalWorldTime() % 400); + buf.writeShort(index); + for(int i = index * 100; i < (index + 1) * 100; i++) { + buf.writeByte(this.map[i]); + } + } else { + buf.writeBoolean(false); + } } } @@ -210,10 +223,14 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I entry.fromBytes(buf); this.entries.add(entry); } - if(buf.readBoolean()) { - int index = buf.readShort(); - for(int i = index * 100; i < (index + 1) * 100; i++) { - this.map[i] = buf.readByte(); + if(buf.readBoolean()) { // clear flag + this.map = new byte[40_000]; + } else { + if(buf.readBoolean()) { // map enabled + int index = buf.readShort(); + for(int i = index * 100; i < (index + 1) * 100; i++) { + this.map[i] = buf.readByte(); + } } } } @@ -289,6 +306,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I for(int i = 0; i < entries.size(); i++) { RadarEntry e = entries.get(i); + if(!e.redstone) continue; double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2)); int p = 15 - (int)Math.floor(dist / maxRange * 15); @@ -303,9 +321,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I int power = 0; for(int i = 0; i < entries.size(); i++) { - - if(entries.get(i).blipLevel + 1 > power) { - power = entries.get(i).blipLevel + 1; + RadarEntry e = entries.get(i); + if(!e.redstone) continue; + if(e.blipLevel + 1 > power) { + power = e.blipLevel + 1; } } @@ -340,14 +359,20 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I return this.isUseableByPlayer(player); } + @Override public void receiveControl(NBTTagCompound data) { } + @Override - public void receiveControl(NBTTagCompound data) { + public void receiveControl(EntityPlayer player, NBTTagCompound data) { + if(data.hasKey("missiles")) this.scanMissiles = !this.scanMissiles; if(data.hasKey("shells")) this.scanShells = !this.scanShells; if(data.hasKey("players")) this.scanPlayers = !this.scanPlayers; if(data.hasKey("smart")) this.smartMode = !this.smartMode; if(data.hasKey("red")) this.redMode = !this.redMode; if(data.hasKey("map")) this.showMap = !this.showMap; + if(data.hasKey("clear")) this.clearFlag = true; + + if(data.hasKey("gui1")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord); } AxisAlignedBB bb = null; @@ -375,12 +400,18 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I return 65536.0D; } - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(ID == 1) return new ContainerMachineRadarNT(player.inventory, this); + return null; + } @Override @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineRadarNT(this); + if(ID == 0) return new GUIMachineRadarNT(this); + if(ID == 1) return new GUIMachineRadarNTSlots(player.inventory, this); + return null; } /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry @@ -422,7 +453,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I Entity e = x.getX(); if(e instanceof IRadarDetectableNT) { IRadarDetectableNT detectable = (IRadarDetectableNT) e; - if(detectable.canBeSeenBy(x.getY()) && detectable.paramsApplicable(x.getZ())) return new RadarEntry(detectable, e); + if(detectable.canBeSeenBy(x.getY()) && detectable.paramsApplicable(x.getZ())) return new RadarEntry(detectable, e, detectable.suppliesRedstone(x.getZ())); } return null; }); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 0d3763b16..88e385bbc 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3439,10 +3439,14 @@ potion.hbm_stability=Stabilität potion.hbm_taint=Verdorben potion.hbm_telekinesis=! ! ! +radar.clearMap=Karte zurücksetzen radar.detectMissiles=Raketen erkennen radar.detectPlayers=Spieler erkennen +radar.detectShells=Geschosse erkennen radar.redMode=Redstone Mode$Ein: Redstonesignal basiert auf Nähe$Aus: Redstonesignal basiert auf Größe +radar.showMap=Karte anzeigen radar.smartMode=Smart Mode$Redstonesignal ignoriert aufsteigende Raketen +radar.toggleGui=Ansicht umschalten rbmk.heat=Komponententemperatur: %s rbmk.boiler.water=Wasser: %s / %s diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f45980c13..d0dc54d01 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3017,7 +3017,7 @@ item.mike_kit.name=Ivy Mike Kit item.mirror_tool.name=Mirror Adjustment Tool item.mirror_tool.linked=Alignment position set! item.mirror_tool.desc=Right-click boiler to memorize the position.$Click on mirrors to turn them towards the boiler. -item.missile_anti_ballistic.name=Anti Ballistic Missile +item.missile_anti_ballistic.name=Anti-Ballistic Missile item.missile_assembly.name=Small Missile Assembly item.missile_bhole.name=Black Hole Missile item.missile_burst.name=Spare Missile @@ -4368,10 +4368,28 @@ potion.hbm_stability=Stability potion.hbm_taint=Tainted potion.hbm_telekinesis=! ! ! +radar.clearMap=Clear Map radar.detectMissiles=Detect Missiles radar.detectPlayers=Detect Players +radar.detectShells=Detect Shells radar.redMode=Redstone Mode$On: Redstone output based on range$Off: Redstone output based on tier +radar.showMap=Show Map radar.smartMode=Smart Mode$Redstone output ignores ascending missiles +radar.toggleGui=Switch View + +radar.target.abm=Anti-Ballsitic Missile +radar.target.custom10=Size 10 Custom Missile +radar.target.custom1015=Size 10/15 Custom Missile +radar.target.custom15=Size 15 Custom Missile +radar.target.custom1520=Size 15/20 Custom Missile +radar.target.custom20=Size 20 Custom Missile +radar.target.doomsday=Doomsday Missile +radar.target.shuttle=Reliant Robin Space Shuttle +radar.target.tier0=Tier 0 Missile +radar.target.tier1=Tier 1 Missile +radar.target.tier2=Tier 2 Missile +radar.target.tier3=Tier 3 Missile +radar.target.tier4=Tier 4 Missile rbmk.heat=Column temperature: %s rbmk.boiler.water=Feedwater: %s / %s diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_link.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_link.png index dafca0ee5008dd68020698ad8aa9b3db38d24317..423352af03dd38d8099adaa3ff25005eba8027b3 100644 GIT binary patch literal 2030 zcmbVMc{CgN7XBq--?gTS#L`8nQqLaL(v&KtjI6)oNR0O4wc+)r5(CKSSRYI$F zQXTCeK`6s{6KgH0Qc|>*G)yQ;kQcMP*Y?c&W9~oS?|1Gw-~G7o2QLP?pCi_G@NvXs2rwunsCxQZiwy>jIFF;;htWlsy6 z?SVqoH#WLX%cg&CyWu>M6x2u!{P0L5iWDest~-nu7vz)OBCLS^A4tKVE1c9C zE(l$ZUr>}NiZRY8LY3yx9SLnU%aeJK&$(32=i@L?*-;|TEG#`V)jc@q?Hmomy(?H2@da?Rwk_0 zE>%jiq2P3xy7lyZq&M`=!uq;Bqb;l^t>tyT*E8fWKRSx4N2g84>lQ${eEtFb2b^tB zhWTw3M$1B?wvseKZLp4))L%B+p1C8MdPU@K|L>h^X-o194`r@j%8nmr?AY0-_wX#{ zV?BmwZWZQf_bGMfCRpDvX%e^?*>Jx8Tr|_v^kE(E38fUzIF9ES){%-{bjS4O_U6qB z%$bH@baZrcZZl7~dh_N?$OD7ke#86csA^A-4F)_JRLc2EX zOYx^5a-2*_$&LYF!zmeNGZGr3QmV?W4^Gy8NzEn9U246%(cO~btfR{)W`;hp z%@F2HD5csQcA@cdtR?7zk6E+n8wwt$g0)W84_J|6*Qe%953m?Cm!)vR;`ydS?6s{% zIRrfP>O!WQ?*k@O{ye^e+192kR)G&i|{rr!p?{e zGtqN;OnEgOdCQEACi|v55>wo&&bK>Aj@KHHm>yml<3~Rpn{Tf;Mr|czcV*2qcPe#g zW+Upglf+H~-vX_!> zDqIAIDVpMs(N;i$>+8cnoE@Pm#P%|QITy}hf$WE2EzYnrM)oel6% z&S>J2aUi7S>vi!(`y~v#!iyrdsf51Xo9~hX58ymq?ne5d)%9ShFRr(B|D>JSF5@t$ zUxt$;cZ;f{I*U&db#e8k6A;|`jWme!Co}v^>TlzvR!cZKI%Z;;e?0&hNNdheSWN*h z0&@|duGvG*zFQI6Xe-T@;PLQ0UuwqTKV0!=jAFxllzQAH0MX1~F;DM)A2;}&($r)I zotOOKN?gP)XleCzBwsZVgTd(Qk1s7*j!#&2P|{@{c8&8iRB^~I$S(%`i0@->ewNy) zdX)Mj=PRTu%=e;zkS=2Z->ULK{Ljh2e>$)Kdi*n<-%`KQWP42|J5`}vVMgtGe=G=r z2D31#LVA?+A=I-Y)8#6}qHSy);Qwcn{l81_ymzQ{de^)1A9bZzr zpNI4SF4cHbT<%$x)T&vh-Q#U#eV(xn^*!_)K(|Xcw~Kf>oxZ%0)~?gFq|W6!tzD<) z_PNJ)X1Q4ba6X^^@Ba7QzNTjSf7j?qv~_BzS*J#=nsv6covCYb01P$sF(Givm^aFp zH|5wjT#Y*2J>}YU+FCX0+_JUxVVX$+aM{2wPyAi}J`@7&i@cRRT&=xiEj8C?OV2A} zd+Wn5vrYo`o%KH+k2iY&LwkYG&(Am<#^ur0>I~J}`}4Y1Yt8LUJvRfOf3Hz@mkr&% zHbgko8<=w3sZP#1)ba3Pz=-k3@b2S2+}F(j=sUh|m)*JzY}@Q%z%k3l=ynO`o-9%) zXC0QA6ad%G_K!K{@6-JR-Q4bPy?UZ^>1JF?$4>z$ytZx77YU~Ip*Km zc(*$HszV*Ci~`h3e06fxDxn^qz<|US^#I0p{ZFS;yu7?Dc_?)f*WrG?Ob_nD3+#dE z!Rv7d0Er2ckp&iiv0Y6K=0YR;;&tD?hkY4n=@&sv5w%ZV_iY;$0CTVQBe`MQR{1(` z%avgA>RuPX`(PcD0-$e?emg>V0<;Z%?!+L#x>i5vHboSyXVm~OMHH;7$|%6xZoes_U|ow(0xq2um|U*) z^z{DLvFoY9*r#is1K{yS1%NaA)TY62!$W!irijYP>%M&t34r7A=%Nk@dEK{f_0ItS z>ly3;)VQX98!X|PfcJIt5WvYA*5sOi_vH`(5)%NBm;ivp1OOx^03a~|0ErC_1NtZ@ zJh#CB@KH{9ZVmz1mDktTwO8S(e2a)uN@+emK5Se_rtJZg@87?#x*{;e+uK`2L|J=1 z_O81Dn^o2VrqlQxnJA9*B+xBKI7k_A+O0v zKuAmgKw<&_5)%NBm;ivp1e2i$7k}JciisJUh-UDKHcdn+rP}>}|Gn1op;dt;%nJ|^ zQA$M9jGr2P>iuD(1VBp&kWkJ5XquSRa(}h+qP6pEat1&|6b%~k2Efe|eUL!T04U|} z;g6v+?!Ok_?+krkeRzPJ0njzIF&m!aNeF-lBLJk8GXVNV0friN-zY%M5Hv8#z)Erk zKo|vph{OS46acaYK;I}p<@zCD*nyk@&}YG!{ZWS#Mh@5@0T5B8aSn!n#t)OB2R4(i j2Pc!T2PYW-Kra6Qbj|{8hzVL900000NkvXXu0mjf4Y+uu diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png index 095c54c69a8aeca9352d8d94124f6ade7da290fe..572179845e349f5e366159eb3a8f1c2a4a403d07 100644 GIT binary patch literal 20169 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 P6G6@xoi{8tAV&QUgPWL# literal 19931 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 s+G1HR(LP_$e+y&+m<9jG$>O9C Date: Sat, 25 Nov 2023 21:22:45 +0100 Subject: [PATCH 123/207] we gotta move these color TVs --- changelog | 3 + src/main/java/api/hbm/entity/RadarEntry.java | 12 +- src/main/java/com/hbm/blocks/ModBlocks.java | 5 +- .../java/com/hbm/blocks/bomb/LaunchPad.java | 193 +-------- .../com/hbm/blocks/machine/MachineRadar.java | 2 +- .../blocks/machine/MachineRadarScreen.java | 56 +++ .../missile/EntityMissileAntiBallistic.java | 5 +- .../container/ContainerLaunchPadTier1.java | 44 +-- .../hbm/inventory/gui/GUIMachineRadarNT.java | 46 ++- .../inventory/gui/GUIMachineRadarNTSlots.java | 2 + src/main/java/com/hbm/items/ModItems.java | 3 + .../hbm/items/tool/ItemCoordinateBase.java | 75 ++++ .../com/hbm/items/tool/ItemRadarLinker.java | 30 ++ src/main/java/com/hbm/main/ClientProxy.java | 1 + src/main/java/com/hbm/main/MainRegistry.java | 2 + .../java/com/hbm/main/ResourceManager.java | 2 + .../render/tileentity/RenderRadarScreen.java | 94 +++++ .../hbm/tileentity/IRadarCommandReceiver.java | 9 + .../java/com/hbm/tileentity/TileMappings.java | 1 + .../tileentity/bomb/TileEntityLaunchPad.java | 372 ++++++++++-------- .../machine/TileEntityMachineRadarNT.java | 67 +++- .../machine/TileEntityMachineRadarScreen.java | 61 +++ .../turret/TileEntityTurretArty.java | 3 +- .../turret/TileEntityTurretBaseArtillery.java | 14 +- .../turret/TileEntityTurretHIMARS.java | 2 + .../hbm/models/machines/radar_screen.obj | 140 +++++++ .../{radar_link.png => radar_linker.png} | Bin .../textures/models/machines/radar_screen.png | Bin 0 -> 621 bytes 28 files changed, 843 insertions(+), 401 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java create mode 100644 src/main/java/com/hbm/items/tool/ItemCoordinateBase.java create mode 100644 src/main/java/com/hbm/items/tool/ItemRadarLinker.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java create mode 100644 src/main/java/com/hbm/tileentity/IRadarCommandReceiver.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java create mode 100644 src/main/resources/assets/hbm/models/machines/radar_screen.obj rename src/main/resources/assets/hbm/textures/items/{radar_link.png => radar_linker.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/machines/radar_screen.png diff --git a/changelog b/changelog index 8898e8c88..fd05f734e 100644 --- a/changelog +++ b/changelog @@ -21,6 +21,8 @@ * The map will scan loaded chunks instantly, unloaded chunks have a limit of 5 chunk loads per tick to prevent excessive lag * The chunk load limit can be adjusted in the machine config file * The map will show terrain height between Y:50 and Y:128, anything outside that range is truncated + * Radars now have a second GUI which allows the use of a battery, as well as linking the radar to other machines + * By using the number keys, the radar can now launch missiles, ABMs or artillery at the current aimed at position * The turbofan's afterburner now adds a 33% efficiency bonus for every level. This means that instead of the efficiency remaining constant between levels, a tier 3 upgrade will yield double efficiency. * Reduced the flarestack's base energy efficiency * Trenchmaster armor is now unbreakable @@ -31,6 +33,7 @@ * Remodeled the anti-ballistic missile * Anti-ballistic missiles now use predictive targeting as well as a heightened sensor range of 1,000 blocks (instead of 500) which should make them a lot more effective * Anti-ballistic missiles accelerate 4x faster than normal missiles and have a 50% higher top-speed +* Anti-ballistic missiles can now load their own chunks, allowing them to get to far away incoming missiles without getting stuck * PWRs that have recently been close to unloaded chunks now have a 40 tick timeframe where they are "frozen", only trying to connect to a fluid network but not doing any fission, this should reduce the amount of meltdowns caused by chunkloading ## Fixed diff --git a/src/main/java/api/hbm/entity/RadarEntry.java b/src/main/java/api/hbm/entity/RadarEntry.java index 91733b81e..5dcc56845 100644 --- a/src/main/java/api/hbm/entity/RadarEntry.java +++ b/src/main/java/api/hbm/entity/RadarEntry.java @@ -15,31 +15,33 @@ public class RadarEntry { public int posY; public int posZ; public int dim; + public int entityID; /** Whether this radar entry should be counted for the redstone output */ public boolean redstone; public RadarEntry() { } //blank ctor for packets - public RadarEntry(String name, int level, int x, int y, int z, int dim, boolean redstone) { + public RadarEntry(String name, int level, int x, int y, int z, int dim, int entityID, boolean redstone) { this.unlocalizedName = name; this.blipLevel = level; this.posX = x; this.posY = y; this.posZ = z; this.dim = dim; + this.entityID = entityID; this.redstone = redstone; } public RadarEntry(IRadarDetectableNT detectable, Entity entity, boolean redstone) { - this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, redstone); + this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, entity.getEntityId(), redstone); } public RadarEntry(IRadarDetectable detectable, Entity entity) { - this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, entity.motionY < 0); + this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, entity.getEntityId(), entity.motionY < 0); } public RadarEntry(EntityPlayer player) { - this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension, true); + this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension, player.getEntityId(), true); } public void fromBytes(ByteBuf buf) { @@ -49,6 +51,7 @@ public class RadarEntry { this.posY = buf.readInt(); this.posZ = buf.readInt(); this.dim = buf.readShort(); + this.entityID = buf.readInt(); } public void toBytes(ByteBuf buf) { @@ -58,5 +61,6 @@ public class RadarEntry { buf.writeInt(this.posY); buf.writeInt(this.posZ); buf.writeShort(this.dim); + buf.writeInt(this.entityID); } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index f0b3ccb90..a4873c99c 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1057,8 +1057,9 @@ public class ModBlocks { public static Block launch_table; public static Block soyuz_launcher; - + public static Block machine_radar; + public static Block radar_screen; public static Block machine_turbofan; public static Block machine_turbinegas; @@ -2164,6 +2165,7 @@ public class ModBlocks { launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar"); + radar_screen = new MachineRadarScreen(Material.iron).setBlockName("radar_screen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_missile_assembly = new MachineMissileAssembly(Material.iron).setBlockName("machine_missile_assembly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_missile_assembly"); compact_launcher = new CompactLauncher(Material.iron).setBlockName("compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":compact_launcher"); @@ -3504,6 +3506,7 @@ public class ModBlocks { GameRegistry.registerBlock(sat_dock, sat_dock.getUnlocalizedName()); GameRegistry.registerBlock(soyuz_capsule, soyuz_capsule.getUnlocalizedName()); GameRegistry.registerBlock(machine_radar, machine_radar.getUnlocalizedName()); + GameRegistry.registerBlock(radar_screen, radar_screen.getUnlocalizedName()); //Guide GameRegistry.registerBlock(book_guide, book_guide.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java index 79725a555..78436a540 100644 --- a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java +++ b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java @@ -2,43 +2,27 @@ package com.hbm.blocks.bomb; import java.util.Random; -import org.apache.logging.log4j.Level; - import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; -import com.hbm.entity.missile.*; -import com.hbm.entity.missile.EntityMissileTier0.*; -import com.hbm.entity.missile.EntityMissileTier1.*; -import com.hbm.entity.missile.EntityMissileTier2.*; -import com.hbm.entity.missile.EntityMissileTier3.*; -import com.hbm.entity.missile.EntityMissileTier4.*; import com.hbm.interfaces.IBomb; -import com.hbm.interfaces.Spaghetti; -import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityLaunchPad; -import api.hbm.item.IDesignatorItem; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class LaunchPad extends BlockContainer implements IBomb { - public TileEntityLaunchPad tetn = new TileEntityLaunchPad(); public static boolean keepInventory = false; private final static Random field_149933_a = new Random(); @@ -51,11 +35,6 @@ public class LaunchPad extends BlockContainer implements IBomb { return new TileEntityLaunchPad(); } - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.launch_pad); - } - @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { if(!keepInventory) { @@ -137,186 +116,16 @@ public class LaunchPad extends BlockContainer implements IBomb { return false; } - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } - if(i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - } - - /* - * @Override public void setBlockBoundsBasedOnState(IBlockAccess - * p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { float f - * = 0.0625F; this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } - * - * @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World - * world, int x, int y, int z) { float f = 0.0625F; - * this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F); return - * AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, - * x + this.maxX, y + this.maxY, z + this.maxZ); } - */ - @Override @SideOnly(Side.CLIENT) public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) { return Item.getItemFromBlock(ModBlocks.launch_pad); } - @Spaghetti("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA *takes breath* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") @Override public BombReturnCode explode(World world, int x, int y, int z) { - TileEntityLaunchPad entity = (TileEntityLaunchPad) world.getTileEntity(x, y, z); - - if(entity.slots[0] == null || world.isRemote) - return BombReturnCode.ERROR_MISSING_COMPONENT; - - if(entity.slots[1] != null && entity.slots[1].getItem() instanceof IDesignatorItem && entity.power >= 75000) { - - if(!((IDesignatorItem)entity.slots[1].getItem()).isReady(world, entity.slots[1], x, y, z)) - return BombReturnCode.ERROR_MISSING_COMPONENT; - - int xCoord = entity.slots[1].stackTagCompound.getInteger("xCoord"); - int zCoord = entity.slots[1].stackTagCompound.getInteger("zCoord"); - - if(xCoord == entity.xCoord && zCoord == entity.zCoord) { - xCoord += 1; - } - - Entity missile = null; - - if(entity.slots[0].getItem() == ModItems.missile_generic) { - missile = new EntityMissileGeneric(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_incendiary) { - missile = new EntityMissileIncendiary(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_cluster) { - missile = new EntityMissileCluster(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_buster) { - missile = new EntityMissileBunkerBuster(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_strong) { - missile = new EntityMissileStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_incendiary_strong) { - missile = new EntityMissileIncendiaryStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_cluster_strong) { - missile = new EntityMissileClusterStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_buster_strong) { - missile = new EntityMissileBusterStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_burst) { - missile = new EntityMissileBurst(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_inferno) { - missile = new EntityMissileInferno(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_rain) { - missile = new EntityMissileRain(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_drill) { - missile = new EntityMissileDrill(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_nuclear) { - missile = new EntityMissileNuclear(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_endo) { - missile = new EntityMissileEndo(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_exo) { - missile = new EntityMissileExo(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_nuclear_cluster) { - missile = new EntityMissileMirv(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_doomsday) { - missile = new EntityMissileDoomsday(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_taint) { - missile = new EntityMissileTaint(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_micro) { - missile = new EntityMissileMicro(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_bhole) { - missile = new EntityMissileBHole(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_schrabidium) { - missile = new EntityMissileSchrabidium(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_emp) { - missile = new EntityMissileEMP(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_emp_strong) { - missile = new EntityMissileEMPStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_volcano) { - missile = new EntityMissileVolcano(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - if(entity.slots[0].getItem() == ModItems.missile_shuttle) { - missile = new EntityMissileShuttle(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - } - - if(missile != null) { - world.spawnEntityInWorld(missile); - world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - entity.power -= 75000; - entity.slots[0] = null; - - if(GeneralConfig.enableExtendedLogging) - MainRegistry.logger.log(Level.INFO, "[MISSILE] Tried to launch missile at " + x + " / " + y + " / " + z + " to " + xCoord + " / " + zCoord + "!"); - return BombReturnCode.LAUNCHED; - } - } - - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_carrier && entity.power >= 75000) { - EntityCarrier missile = new EntityCarrier(world); - missile.posX = x + 0.5F; - missile.posY = y + 1F; - missile.posZ = z + 0.5F; - - if(entity.slots[1] != null) - missile.setPayload(entity.slots[1]); - - world.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - entity.slots[1] = null; - world.playSoundEffect(x, y, z, "hbm:entity.rocketTakeoff", 100.0F, 1.0F); - return BombReturnCode.LAUNCHED; - } - - if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_anti_ballistic && entity.power >= 75000) { - EntityMissileAntiBallistic missile = new EntityMissileAntiBallistic(world); - missile.posX = x + 0.5F; - missile.posY = y + 0.5F; - missile.posZ = z + 0.5F; - - world.spawnEntityInWorld(missile); - entity.power -= 75000; - - entity.slots[0] = null; - world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); - return BombReturnCode.LAUNCHED; - } - - return BombReturnCode.ERROR_MISSING_COMPONENT; + return entity.launchFromDesignator(); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineRadar.java b/src/main/java/com/hbm/blocks/machine/MachineRadar.java index beaf39189..a06effd14 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineRadar.java +++ b/src/main/java/com/hbm/blocks/machine/MachineRadar.java @@ -49,7 +49,7 @@ public class MachineRadar extends BlockContainer { return true; } - if(world.isRemote) { + if(world.isRemote && !player.isSneaking()) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; } else if(!player.isSneaking()) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java b/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java new file mode 100644 index 000000000..6f1df1a14 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java @@ -0,0 +1,56 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.tileentity.machine.TileEntityMachineRadarScreen; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineRadarScreen extends BlockDummyable { + + public MachineRadarScreen(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return meta >= 12 ? new TileEntityMachineRadarScreen() : null; + } + + @Override + public int[] getDimensions() { + return new int[] {1, 0, 0, 0, 1, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote && !player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) return false; + + TileEntityMachineRadarScreen screen = (TileEntityMachineRadarScreen) world.getTileEntity(pos[0], pos[1], pos[2]); + + if(screen.linked && world.getTileEntity(screen.refX, screen.refY, screen.refZ) instanceof TileEntityMachineRadarNT) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, screen.refX, screen.refY, screen.refZ); + } + + return false; + } else if(!player.isSneaking()) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index 21657fafb..c48961d7d 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -79,6 +79,8 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements this.aimAtTarget(); } } + + loadNeighboringChunks((int) Math.floor(posX / 16), (int) Math.floor(posZ / 16)); if(this.posY > 2000 && (this.tracking == null || this.tracking.isDead)) this.setDead(); @@ -195,8 +197,7 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements clearChunkLoader(); loadedChunks.clear(); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - //loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.floor((this.posX + this.motionX * this.motionMult()) / 16D), newChunkZ + (int) Math.floor((this.posZ + this.motionZ * this.motionMult()) / 16D))); + for(int i = -1; i <= 1; i++) for(int j = -1; j <= 1; j++) loadedChunks.add(new ChunkCoordIntPair(newChunkX + i, newChunkZ + j)); for(ChunkCoordIntPair chunk : loadedChunks) { ForgeChunkManager.forceChunk(loaderTicket, chunk); diff --git a/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java index 11a9190e1..0abda201e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java +++ b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java @@ -21,57 +21,43 @@ public class ContainerLaunchPadTier1 extends Container { this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); this.addSlotToContainer(new Slot(tedf, 2, 134, 17)); - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } - - for(int i = 0; i < 9; i++) - { + + for(int i = 0; i < 9; i++) { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); } } @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { + + if(var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - - if (par2 <= 2) { - if (!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) - { + + if(par2 <= 2) { + if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) { return null; } } else { return null; } - - if (var5.stackSize == 0) - { + + if(var5.stackSize == 0) { var4.putStack((ItemStack) null); - } - else - { + } else { var4.onSlotChanged(); } } - + return var3; - } + } @Override public boolean canInteractWith(EntityPlayer player) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java index 8a937f3af..5577c7638 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -4,6 +4,7 @@ import java.util.Arrays; import org.lwjgl.opengl.GL11; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; @@ -22,13 +23,16 @@ import net.minecraft.util.Vec3; public class GUIMachineRadarNT extends GuiScreen { - protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_nt.png"); + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_nt.png"); protected TileEntityMachineRadarNT radar; protected int xSize = 216; protected int ySize = 234; protected int guiLeft; protected int guiTop; + + public int lastMouseX; + public int lastMouseY; public GUIMachineRadarNT(TileEntityMachineRadarNT tile) { this.radar = tile; @@ -71,6 +75,9 @@ public class GUIMachineRadarNT extends GuiScreen { GL11.glDisable(GL11.GL_LIGHTING); this.drawGuiContainerForegroundLayer(mouseX, mouseY); GL11.glEnable(GL11.GL_LIGHTING); + + this.lastMouseX = mouseX; + this.lastMouseY = mouseY; } private void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { @@ -99,6 +106,12 @@ public class GUIMachineRadarNT extends GuiScreen { } } } + + if(checkClick(mouseX, mouseY, 8, 17, 200, 200)) { + int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); + int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); + this.func_146283_a(Arrays.asList(tX + " / " + tZ), lastMouseX, lastMouseY); + } } private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { @@ -207,6 +220,37 @@ public class GUIMachineRadarNT extends GuiScreen { if(key == 1 || key == this.mc.gameSettings.keyBindInventory.getKeyCode()) { this.mc.thePlayer.closeScreen(); } + + if(checkClick(lastMouseX, lastMouseY, 8, 17, 200, 200) && c >= '1' && c <= '8') { + + int id = c - '1'; + + if(radar.slots[id] != null && radar.slots[id].getItem() == ModItems.radar_linker) { + + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + int x = guiLeft + (int)((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; + int z = guiTop + (int)((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; + + if(lastMouseX + 5 > x && lastMouseX - 4 <= x && lastMouseY + 5 > z && lastMouseY - 4 <= z) { + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("launchEntity", m.entityID); + data.setInteger("link", id); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + return; + } + } + } + + int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); + int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("launchPosX", tX); + data.setInteger("launchPosZ", tZ); + data.setInteger("link", id); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + } + } } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java index 4cc5406c9..77f1f3a60 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNTSlots.java @@ -12,6 +12,7 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.network.play.client.C0DPacketCloseWindow; @@ -35,6 +36,7 @@ public class GUIMachineRadarNTSlots extends GuiInfoContainer { super.mouseClicked(x, y, i); if(checkClick(x, y, 5, 5, 8, 8)) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); this.mc.thePlayer.sendQueue.addToSendQueue(new C0DPacketCloseWindow(this.mc.thePlayer.openContainer.windowId)); // closes the server-side GUI component without resetting the client's cursor position FMLNetworkHandler.openGui(this.mc.thePlayer, MainRegistry.instance, 0, radar.getWorldObj(), radar.xCoord, radar.yCoord, radar.zCoord); } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 6d7b52f9f..c75fa9764 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1265,6 +1265,7 @@ public class ModItems { public static Item analysis_tool; public static Item coupling_tool; public static Item drone_linker; + public static Item radar_linker; public static Item template_folder; public static Item journal_pip; @@ -4604,6 +4605,7 @@ public class ModItems { analysis_tool = new ItemAnalysisTool().setUnlocalizedName("analysis_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":analysis_tool"); coupling_tool = new ItemCouplingTool().setUnlocalizedName("coupling_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coupling_tool"); drone_linker = new ItemDroneLinker().setUnlocalizedName("drone_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":drone_linker"); + radar_linker = new ItemRadarLinker().setUnlocalizedName("radar_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radar_linker"); key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key"); key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red"); @@ -6779,6 +6781,7 @@ public class ModItems { GameRegistry.registerItem(mirror_tool, mirror_tool.getUnlocalizedName()); GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName()); GameRegistry.registerItem(drone_linker, drone_linker.getUnlocalizedName()); + GameRegistry.registerItem(radar_linker, radar_linker.getUnlocalizedName()); GameRegistry.registerItem(coltan_tool, coltan_tool.getUnlocalizedName()); GameRegistry.registerItem(power_net_tool, power_net_tool.getUnlocalizedName()); GameRegistry.registerItem(analysis_tool, analysis_tool.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemCoordinateBase.java b/src/main/java/com/hbm/items/tool/ItemCoordinateBase.java new file mode 100644 index 000000000..71e8d80c5 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemCoordinateBase.java @@ -0,0 +1,75 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public abstract class ItemCoordinateBase extends Item { + + public static BlockPos getPosition(ItemStack stack) { + + if(stack.hasTagCompound()) { + return new BlockPos(stack.stackTagCompound.getInteger("posX"), stack.stackTagCompound.getInteger("posY"), stack.stackTagCompound.getInteger("posZ")); + } + + return null; + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + + if(this.canGrabCoordinateHere(world, x, y, z)) { + + if(!world.isRemote) { + BlockPos pos = this.getCoordinates(world, x, y, z); + + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setInteger("posX", pos.getX()); + if(includeY()) stack.stackTagCompound.setInteger("posY", pos.getY()); + stack.stackTagCompound.setInteger("posZ", pos.getZ()); + + this.onTargetSet(world, pos.getX(), pos.getY(), pos.getZ(), player); + } + + return true; + } + + return false; + } + + /** Whether this position can be saved or if the position target is valid */ + public abstract boolean canGrabCoordinateHere(World world, int x, int y, int z); + + /** Whether this linking item saves the Y coordinate */ + public boolean includeY() { + return true; + } + + /** Modified the saved coordinates, for example detecting the core for multiblocks */ + public BlockPos getCoordinates(World world, int x, int y, int z) { + return new BlockPos(x, y, z); + } + + /** Extra on successful target set, eg. sounds */ + public void onTargetSet(World world, int x, int y, int z, EntityPlayer player) { } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + if(stack.hasTagCompound()) { + list.add("X: " + stack.stackTagCompound.getInteger("posX")); + if(includeY()) list.add("Y: " + stack.stackTagCompound.getInteger("posY")); + list.add("Z: " + stack.stackTagCompound.getInteger("posZ")); + } else { + list.add(EnumChatFormatting.RED + "No position set!"); + } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemRadarLinker.java b/src/main/java/com/hbm/items/tool/ItemRadarLinker.java new file mode 100644 index 000000000..53ee7e206 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemRadarLinker.java @@ -0,0 +1,30 @@ +package com.hbm.items.tool; + +import com.hbm.tileentity.IRadarCommandReceiver; +import com.hbm.tileentity.machine.TileEntityMachineRadarScreen; +import com.hbm.util.CompatExternal; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class ItemRadarLinker extends ItemCoordinateBase { + + @Override + public boolean canGrabCoordinateHere(World world, int x, int y, int z) { + TileEntity tile = CompatExternal.getCoreFromPos(world, x, y, z); + return tile instanceof IRadarCommandReceiver || tile instanceof TileEntityMachineRadarScreen; + } + + @Override + public BlockPos getCoordinates(World world, int x, int y, int z) { + TileEntity tile = CompatExternal.getCoreFromPos(world, x, y, z); + return new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord); + } + + @Override + public void onTargetSet(World world, int x, int y, int z, EntityPlayer player) { + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 4774e9a31..8ee506eb5 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -242,6 +242,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSeleniumEngine.class, new RenderSelenium()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineShredderLarge.class, new RenderMachineShredder()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 8d392574b..6b933db58 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -40,6 +40,7 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; import com.hbm.saveddata.satellites.Satellite; import com.hbm.tileentity.TileMappings; +import com.hbm.tileentity.bomb.TileEntityLaunchPad; import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; import com.hbm.tileentity.machine.TileEntityNukeFurnace; @@ -324,6 +325,7 @@ public class MainRegistry { TileMappings.writeMappings(); MachineDynConfig.initialize(); + TileEntityLaunchPad.registerLaunchables(); for(Entry, String[]> e : TileMappings.map.entrySet()) { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 29b591050..b1374f425 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -242,6 +242,7 @@ public class ResourceManager { public static final IModelCustom radar_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_base.obj")); public static final IModelCustom radar_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_head.obj")); public static final IModelCustom radar = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj")); + public static final IModelCustom radar_screen = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj")); //Forcefield public static final IModelCustom forcefield_top = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/forcefield_top.obj")); @@ -630,6 +631,7 @@ public class ResourceManager { public static final ResourceLocation radar_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radar_head.png"); public static final ResourceLocation radar_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_base.png"); public static final ResourceLocation radar_dish_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_dish.png"); + public static final ResourceLocation radar_screen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_screen.png"); //Forcefield public static final ResourceLocation forcefield_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_base.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java new file mode 100644 index 000000000..e838ecf44 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java @@ -0,0 +1,94 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.inventory.gui.GUIMachineRadarNT; +import com.hbm.main.ResourceManager; +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.tileentity.machine.TileEntityMachineRadarScreen; + +import api.hbm.entity.RadarEntry; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderRadarScreen extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + TileEntityMachineRadarScreen screen = (TileEntityMachineRadarScreen) tileEntity; + + bindTexture(ResourceManager.radar_screen_tex); + ResourceManager.radar_screen.renderAll(); + + bindTexture(GUIMachineRadarNT.texture); + Tessellator tess = Tessellator.instance; + + if(screen.linked) { + tess.startDrawingQuads(); + + double offset = ((tileEntity.getWorldObj().getTotalWorldTime() % 56) + f) / 30D; + tess.setColorRGBA_I(0x00ff00, 0); + tess.addVertex(0.38, 2 - offset, 1.375); + tess.addVertex(0.38, 2 - offset, -0.375); + tess.setColorRGBA_I(0x00ff00, 50); + tess.addVertex(0.38, 2 - offset - 0.125, -0.375); + tess.addVertex(0.38, 2 - offset - 0.125, 1.375); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_SMOOTH); + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_FLAT); + + if(!screen.entries.isEmpty()) { + tess.startDrawingQuads(); + tess.setNormal(0F, 1F, 0F); + + for(RadarEntry entry : screen.entries) { + + double sX = (entry.posX - screen.refX) / ((double) TileEntityMachineRadarNT.radarRange + 1) * (0.875D); + double sZ = (entry.posZ - screen.refZ) / ((double) TileEntityMachineRadarNT.radarRange + 1) * (0.875D); + double size = 0.0625D; + tess.addVertexWithUV(0.38, 1 - sZ + size, 0.5 - sX + size, 216D / 256D, (entry.blipLevel * 8F + 8F) / 256F); + tess.addVertexWithUV(0.38, 1 - sZ + size, 0.5 - sX - size, 224D / 256D, (entry.blipLevel * 8F + 8F) / 256F); + tess.addVertexWithUV(0.38, 1 - sZ - size, 0.5 - sX - size, 224D / 256D, entry.blipLevel * 8F / 256F); + tess.addVertexWithUV(0.38, 1 - sZ - size, 0.5 - sX + size, 216D / 256D, entry.blipLevel * 8F / 256F); + } + GL11.glDisable(GL11.GL_DEPTH_TEST); + tess.draw(); + GL11.glEnable(GL11.GL_DEPTH_TEST); + } + } else { + int offset = 118 + tileEntity.getWorldObj().rand.nextInt(81); + tess.startDrawingQuads(); + tess.setColorOpaque_I(0xffffff); + tess.setNormal(0F, 1F, 0F); + tess.addVertexWithUV(0.38, 1.875, 1.375, 216D / 256D, (offset + 40F) / 256F); + tess.addVertexWithUV(0.38, 1.875, -0.375, 256D / 256D, (offset + 40F) / 256F); + tess.addVertexWithUV(0.38, 0.125, -0.375, 256D / 256D, offset / 256F); + tess.addVertexWithUV(0.38, 0.125, 1.375, 216D / 256D, offset / 256F); + tess.draw(); + } + + GL11.glPopMatrix(); + } + +} diff --git a/src/main/java/com/hbm/tileentity/IRadarCommandReceiver.java b/src/main/java/com/hbm/tileentity/IRadarCommandReceiver.java new file mode 100644 index 000000000..0351ec055 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IRadarCommandReceiver.java @@ -0,0 +1,9 @@ +package com.hbm.tileentity; + +import net.minecraft.entity.Entity; + +public interface IRadarCommandReceiver { + + public boolean sendCommandPosition(int x, int y, int z); + public boolean sendCommandEntity(Entity target); +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 2094dcfcc..4ba9495c5 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -113,6 +113,7 @@ public class TileMappings { put(TileEntityMachineRadGen.class, "tileentity_radgen"); put(TileEntityMachineTransformer.class, "tileentity_transformer"); put(TileEntityMachineRadarNT.class, "tileentity_radar"); + put(TileEntityMachineRadarScreen.class, "tileentity_radar_screen"); put(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster"); put(TileEntityMachineSeleniumEngine.class, "tileentity_selenium_engine"); put(TileEntityMachineSatLinker.class, "tileentity_satlinker"); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 5ad95d374..eec19fae0 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -1,13 +1,31 @@ package com.hbm.tileentity.bomb; +import java.util.HashMap; + +import org.apache.logging.log4j.Level; + import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.LaunchPad; +import com.hbm.config.GeneralConfig; +import com.hbm.entity.missile.EntityCarrier; +import com.hbm.entity.missile.EntityMissileAntiBallistic; +import com.hbm.entity.missile.EntityMissileBaseNT; +import com.hbm.entity.missile.EntityMissileShuttle; +import com.hbm.entity.missile.EntityMissileTier0.*; +import com.hbm.entity.missile.EntityMissileTier1.*; +import com.hbm.entity.missile.EntityMissileTier2.*; +import com.hbm.entity.missile.EntityMissileTier3.*; +import com.hbm.entity.missile.EntityMissileTier4.*; +import com.hbm.interfaces.IBomb.BombReturnCode; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerLaunchPadTier1; import com.hbm.inventory.gui.GUILaunchPadTier1; +import com.hbm.items.ModItems; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.INBTPacketReceiver; -import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.tileentity.IRadarCommandReceiver; +import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyUser; import api.hbm.item.IDesignatorItem; @@ -19,184 +37,72 @@ import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver, IEnergyUser, SimpleComponent, IGUIProvider { +public class TileEntityLaunchPad extends TileEntityMachineBase implements IEnergyUser, SimpleComponent, IGUIProvider, IRadarCommandReceiver { + + /** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */ + public static final HashMap> missiles = new HashMap(); + + public static void registerLaunchables() { + + //Tier 0 + missiles.put(new ComparableStack(ModItems.missile_micro), EntityMissileMicro.class); + missiles.put(new ComparableStack(ModItems.missile_schrabidium), EntityMissileSchrabidium.class); + missiles.put(new ComparableStack(ModItems.missile_bhole), EntityMissileBHole.class); + missiles.put(new ComparableStack(ModItems.missile_taint), EntityMissileTaint.class); + missiles.put(new ComparableStack(ModItems.missile_emp), EntityMissileEMP.class); + //Tier 1 + missiles.put(new ComparableStack(ModItems.missile_generic), EntityMissileGeneric.class); + missiles.put(new ComparableStack(ModItems.missile_incendiary), EntityMissileIncendiary.class); + missiles.put(new ComparableStack(ModItems.missile_cluster), EntityMissileCluster.class); + missiles.put(new ComparableStack(ModItems.missile_buster), EntityMissileBunkerBuster.class); + //Tier 2 + missiles.put(new ComparableStack(ModItems.missile_strong), EntityMissileStrong.class); + missiles.put(new ComparableStack(ModItems.missile_incendiary_strong), EntityMissileIncendiaryStrong.class); + missiles.put(new ComparableStack(ModItems.missile_cluster_strong), EntityMissileClusterStrong.class); + missiles.put(new ComparableStack(ModItems.missile_buster_strong), EntityMissileBusterStrong.class); + missiles.put(new ComparableStack(ModItems.missile_emp_strong), EntityMissileEMPStrong.class); + //Tier 3 + missiles.put(new ComparableStack(ModItems.missile_burst), EntityMissileBurst.class); + missiles.put(new ComparableStack(ModItems.missile_inferno), EntityMissileInferno.class); + missiles.put(new ComparableStack(ModItems.missile_rain), EntityMissileRain.class); + missiles.put(new ComparableStack(ModItems.missile_drill), EntityMissileDrill.class); + missiles.put(new ComparableStack(ModItems.missile_endo), EntityMissileEndo.class); + missiles.put(new ComparableStack(ModItems.missile_exo), EntityMissileExo.class); + missiles.put(new ComparableStack(ModItems.missile_shuttle), EntityMissileShuttle.class); + //Tier 4 + missiles.put(new ComparableStack(ModItems.missile_nuclear), EntityMissileNuclear.class); + missiles.put(new ComparableStack(ModItems.missile_nuclear_cluster), EntityMissileMirv.class); + missiles.put(new ComparableStack(ModItems.missile_volcano), EntityMissileVolcano.class); + } - public ItemStack slots[]; public ItemStack toRender; public long power; public final long maxPower = 100000; - private static final int[] slots_top = new int[] {0}; - private static final int[] slots_bottom = new int[] { 0, 1, 2}; + private static final int[] slots_bottom = new int[] {0, 1, 2}; private static final int[] slots_side = new int[] {0}; - private String customName; public TileEntityLaunchPad() { - slots = new ItemStack[3]; + super(3); } @Override - public int getSizeInventory() { - return slots.length; - } - - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.launchPad"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; - } - } - - //You scrubs aren't needed for anything (right now) - @Override - public void openInventory() {} - @Override - public void closeInventory() {} - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - return true; - } - - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - power = nbt.getLong("power"); - slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - NBTTagList list = new NBTTagList(); - nbt.setLong("power", power); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return false; - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; + public String getName() { + return "container.launchPad"; } @Override @@ -213,8 +119,7 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI data.setInteger("id", Item.getIdFromItem(slots[0].getItem())); data.setShort("meta", (short) slots[0].getItemDamage()); } - - INBTPacketReceiver.networkPack(this, data, 250); + networkPack(data, 250); } } @@ -236,6 +141,34 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI this.trySubscribe(worldObj, xCoord, yCoord, zCoord - 1, Library.NEG_Z); this.trySubscribe(worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return true; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + power = nbt.getLong("power"); + + if(slots == null || slots.length != 3) slots = new ItemStack[3]; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return side == 0 ? slots_bottom : (side == 1 ? new int[0] : slots_side); + } + + public long getPowerScaled(long i) { + return (power * i) / maxPower; + } @Override public AxisAlignedBB getRenderBoundingBox() { @@ -245,13 +178,11 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Override public void setPower(long i) { power = i; - } @Override public long getPower() { return power; - } @Override @@ -261,16 +192,12 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Override public long transferPower(long power) { - this.power += power; - if(this.power > this.getMaxPower()) { - long overshoot = this.power - this.getMaxPower(); this.power = this.getMaxPower(); return overshoot; } - return 0; } @@ -281,11 +208,121 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } + public boolean hasPower() { + return this.power >= 75_000; + } + + @Override + public boolean sendCommandPosition(int x, int y, int z) { + return this.launchToCoordinate(x, z) == BombReturnCode.LAUNCHED; + } + + @Override + public boolean sendCommandEntity(Entity target) { + return this.launchToEntity(target) == BombReturnCode.LAUNCHED; + } + + public BombReturnCode launchFromDesignator() { + if(slots[0] == null) return BombReturnCode.ERROR_MISSING_COMPONENT; + + boolean needsDesignator = missiles.containsKey(new ComparableStack(slots[0]).makeSingular()); + + int targetX = 0; + int targetZ = 0; + + if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + + IDesignatorItem designator = (IDesignatorItem) slots[1].getItem(); + + if(!designator.isReady(worldObj, slots[1], xCoord, yCoord, zCoord) && needsDesignator) return BombReturnCode.ERROR_MISSING_COMPONENT; + + Vec3 coords = designator.getCoords(worldObj, slots[1], xCoord, yCoord, zCoord); + targetX = (int) Math.floor(coords.xCoord); + targetZ = (int) Math.floor(coords.zCoord); + + } else { + if(needsDesignator) return BombReturnCode.ERROR_MISSING_COMPONENT; + } + + return this.launchToCoordinate(targetX, targetZ); + } + + public BombReturnCode launchToEntity(Entity entity) { + if(!hasPower()) return BombReturnCode.ERROR_MISSING_COMPONENT; + Entity e = instantiateMissile((int) Math.floor(entity.posX), (int) Math.floor(entity.posZ)); + if(e != null) { + + if(e instanceof EntityMissileAntiBallistic) { + EntityMissileAntiBallistic abm = (EntityMissileAntiBallistic) e; + abm.tracking = entity; + } + + finalizeLaunch(e); + return BombReturnCode.LAUNCHED; + } + return BombReturnCode.ERROR_MISSING_COMPONENT; + } + + public BombReturnCode launchToCoordinate(int targetX, int targetZ) { + if(!hasPower()) return BombReturnCode.ERROR_MISSING_COMPONENT; + Entity e = instantiateMissile(targetX, targetZ); + if(e != null) { + finalizeLaunch(e); + return BombReturnCode.LAUNCHED; + } + return BombReturnCode.ERROR_MISSING_COMPONENT; + } + + public Entity instantiateMissile(int targetX, int targetZ) { + + if(slots[0] == null) return null; + + if(slots[0].getItem() == ModItems.missile_carrier) { + EntityCarrier missile = new EntityCarrier(worldObj); + missile.posX = xCoord + 0.5F; + missile.posY = yCoord + 1F; + missile.posZ = zCoord + 0.5F; + if(slots[1] != null) { + missile.setPayload(slots[1]); + this.slots[1] = null; + } + worldObj.playSoundEffect(xCoord + 0.5, yCoord, zCoord + 0.5, "hbm:entity.rocketTakeoff", 100.0F, 1.0F); + return missile; + } + + Class clazz = this.missiles.get(new ComparableStack(slots[0]).makeSingular()); + + if(clazz != null) { + try { + EntityMissileBaseNT missile = clazz.getConstructor(World.class, float.class, float.class, float.class, int.class, int.class).newInstance(worldObj, xCoord + 0.5F, yCoord + 2F, zCoord + 0.5F, targetX, targetZ); + worldObj.playSoundEffect(xCoord + 0.5, yCoord, zCoord + 0.5, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); + if(GeneralConfig.enableExtendedLogging) MainRegistry.logger.log(Level.INFO, "[MISSILE] Tried to launch missile at " + xCoord + " / " + yCoord + " / " + zCoord + " to " + xCoord + " / " + zCoord + "!"); + return missile; + } catch(Exception e) { } + } + + if(slots[0].getItem() == ModItems.missile_anti_ballistic) { + EntityMissileAntiBallistic missile = new EntityMissileAntiBallistic(worldObj); + missile.posX = xCoord + 0.5F; + missile.posY = yCoord + 0.5F; + missile.posZ = zCoord + 0.5F; + worldObj.playSoundEffect(xCoord + 0.5, yCoord, zCoord + 0.5, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); + return missile; + } + + return null; + } + + public void finalizeLaunch(Entity missile) { + this.power -= 75_000; + worldObj.spawnEntityInWorld(missile); + this.decrStackSize(0, 1); + } + // do some opencomputer stuff @Override public String getComponentName() { @@ -337,7 +374,6 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Callback @Optional.Method(modid = "OpenComputers") public Object[] launch(Context context, Arguments args) { - //worldObj.getBlock(xCoord, yCoord, zCoord).explode(worldObj, xCoord, yCoord, zCoord); ((LaunchPad) ModBlocks.launch_pad).explode(worldObj, xCoord, yCoord, zCoord); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 9dba6fd2d..af253e8d8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -14,12 +14,16 @@ import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerMachineRadarNT; import com.hbm.inventory.gui.GUIMachineRadarNT; import com.hbm.inventory.gui.GUIMachineRadarNTSlots; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemCoordinateBase; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Triplet; +import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.energy.IEnergyUser; import api.hbm.entity.IRadarDetectable; @@ -36,7 +40,9 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.World; @@ -164,8 +170,27 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } } + if(slots[8] != null && slots[8].getItem() == ModItems.radar_linker) { + BlockPos pos = ItemCoordinateBase.getPosition(slots[8]); + if(pos != null) { + TileEntity tile = worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + if(tile instanceof TileEntityMachineRadarScreen) { + TileEntityMachineRadarScreen screen = (TileEntityMachineRadarScreen) tile; + screen.entries.clear(); + screen.entries.addAll(this.entries); + screen.refX = xCoord; + screen.refY = yCoord; + screen.refZ = zCoord; + screen.linked = true; + } + } + } + this.networkPackNT(50); - if(this.clearFlag) this.clearFlag = false; + if(this.clearFlag) { + this.map = new byte[40_000]; + this.clearFlag = false; + } } else { prevRotation = rotation; if(power > 0) rotation += 5F; @@ -373,6 +398,37 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I if(data.hasKey("clear")) this.clearFlag = true; if(data.hasKey("gui1")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord); + + if(data.hasKey("link")) { + int id = data.getInteger("link"); + ItemStack link = slots[id]; + + if(link != null && link.getItem() == ModItems.radar_linker) { + BlockPos pos = ItemCoordinateBase.getPosition(link); + + if(pos != null) { + TileEntity tile = worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + if(tile instanceof IRadarCommandReceiver) { + IRadarCommandReceiver rec = (IRadarCommandReceiver) tile; + + if(data.hasKey("launchEntity")) { + Entity entity = worldObj.getEntityByID(data.getInteger("launchEntity")); + if(entity != null) { + if(rec.sendCommandEntity(entity)) { + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + } + } + } else if(data.hasKey("launchPosX")) { + int x = data.getInteger("launchPosX"); + int z = data.getInteger("launchPosZ"); + if(rec.sendCommandPosition(x, yCoord, z)) { + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + } + } + } + } + } + } } AxisAlignedBB bb = null; @@ -400,6 +456,15 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I return 65536.0D; } + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistance(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; + } + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID == 1) return new ContainerMachineRadarNT(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java new file mode 100644 index 000000000..5d6621f00 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java @@ -0,0 +1,61 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; + +import api.hbm.entity.RadarEntry; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityMachineRadarScreen extends TileEntity implements IBufPacketReceiver { + + public List entries = new ArrayList(); + public int refX; + public int refY; + public int refZ; + public boolean linked; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.networkPackNT(100); + entries.clear(); + this.linked = false; + } + } + + public void networkPackNT(int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(linked); + buf.writeInt(refX); + buf.writeInt(refY); + buf.writeInt(refZ); + buf.writeInt(entries.size()); + for(RadarEntry entry : entries) entry.toBytes(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + linked = buf.readBoolean(); + refX = buf.readInt(); + refY = buf.readInt(); + refZ = buf.readInt(); + int count = buf.readInt(); + this.entries.clear(); + for(int i = 0; i < count; i++) { + RadarEntry entry = new RadarEntry(); + entry.fromBytes(buf); + this.entries.add(entry); + } + } +} diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index a32914fc3..c479982db 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -303,13 +303,14 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen if(tPos != null) this.alignTurret(); } else { - this.target = null; this.tPos = null; } if(!worldObj.isRemote) { + if(!isOn()) this.targetQueue.clear(); + if(this.target != null && !target.isEntityAlive()) { this.target = null; this.tPos = null; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java index 35d211872..4257d55b6 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java @@ -3,12 +3,24 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; +import com.hbm.tileentity.IRadarCommandReceiver; + import net.minecraft.entity.Entity; import net.minecraft.util.Vec3; -public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBaseNT { +public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBaseNT implements IRadarCommandReceiver { protected List targetQueue = new ArrayList(); + + public boolean sendCommandPosition(int x, int y, int z) { + this.enqueueTarget(x + 0.5, y, z + 0.5); + return true; + } + + public boolean sendCommandEntity(Entity target) { + this.enqueueTarget(target.posX, target.posY, target.posZ); + return true; + } public void enqueueTarget(double x, double y, double z) { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index 0b0718d44..050040197 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -222,6 +222,8 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem if(!worldObj.isRemote) { + if(!isOn()) this.targetQueue.clear(); + if(this.target != null && !target.isEntityAlive()) { this.target = null; this.tPos = null; diff --git a/src/main/resources/assets/hbm/models/machines/radar_screen.obj b/src/main/resources/assets/hbm/models/machines/radar_screen.obj new file mode 100644 index 000000000..18f4a3cc5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/radar_screen.obj @@ -0,0 +1,140 @@ +# Blender v2.79 (sub 0) OBJ File: 'radar_screen.blend' +# www.blender.org +o Plane +v -0.250000 0.000000 1.500000 +v 0.500000 0.000000 1.500000 +v -0.250000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.250000 2.000000 -0.500000 +v -0.250000 2.000000 1.500000 +v 0.500000 2.000000 1.500000 +v 0.500000 2.000000 -0.500000 +v -0.250000 0.250000 -0.250000 +v -0.250000 0.250000 1.250000 +v -0.250000 1.750000 -0.250000 +v -0.250000 1.750000 1.250000 +v -0.500000 0.250000 -0.250000 +v -0.500000 0.250000 1.250000 +v -0.500000 1.750000 -0.250000 +v -0.500000 1.750000 1.250000 +v 0.500000 0.125000 1.375000 +v 0.500000 0.125000 -0.375000 +v 0.500000 1.875000 1.375000 +v 0.500000 1.875000 -0.375000 +v 0.375000 0.125000 1.375000 +v 0.375000 0.125000 -0.375000 +v 0.375000 1.875000 1.375000 +v 0.375000 1.875000 -0.375000 +vt 0.500000 0.000000 +vt 0.136364 0.214286 +vt 0.136364 0.000000 +vt 0.136364 0.785714 +vt 0.500000 1.000000 +vt 0.136364 1.000000 +vt 0.636364 0.214286 +vt 0.500000 0.785714 +vt 0.500000 0.214286 +vt 0.000000 0.785714 +vt 0.000000 0.214286 +vt 0.159091 0.750000 +vt 0.681818 0.714286 +vt 0.636364 0.785714 +vt 0.500000 0.107143 +vt 0.772727 0.035714 +vt 0.772727 0.107143 +vt 0.954545 0.714286 +vt 1.000000 0.785714 +vt 1.000000 0.214286 +vt 0.681818 0.285714 +vt 0.954545 0.285714 +vt 0.954545 0.267857 +vt 0.681818 0.714286 +vt 0.681818 0.267857 +vt 0.500000 0.107143 +vt 0.772727 0.035714 +vt 0.772727 0.107143 +vt 0.500000 0.107143 +vt 0.772727 0.035714 +vt 0.772727 0.107143 +vt 0.500000 0.107143 +vt 0.772727 0.035714 +vt 0.772727 0.107143 +vt 0.818182 -0.000000 +vt 0.500000 0.035714 +vt 0.500000 0.000000 +vt 0.477273 0.750000 +vt 0.159091 0.250000 +vt 0.477273 0.250000 +vt 0.477273 0.250000 +vt 0.159091 0.750000 +vt 0.159091 0.250000 +vt 0.818182 0.000000 +vt 0.500000 0.035714 +vt 0.500000 0.000000 +vt 0.818182 0.000000 +vt 0.500000 0.035714 +vt 0.500000 0.000000 +vt 0.818182 -0.000000 +vt 0.500000 0.035714 +vt 0.500000 0.000000 +vt 0.500000 0.035714 +vt 0.954545 0.714286 +vt 0.500000 0.035714 +vt 0.500000 0.035714 +vt 0.500000 0.035714 +vt 0.818182 0.035714 +vt 0.477273 0.750000 +vt 0.818182 0.035714 +vt 0.818182 0.035714 +vt 0.818182 0.035714 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 3/7/3 8/8/3 4/9/3 +f 2/2/4 6/10/4 1/11/4 +f 2/2/5 19/12/5 7/4/5 +f 3/7/6 11/13/6 5/14/6 +f 9/15/3 15/16/3 11/17/3 +f 5/14/6 12/18/6 6/19/6 +f 1/20/6 9/21/6 3/7/6 +f 6/19/6 10/22/6 1/20/6 +f 14/23/6 15/24/6 13/25/6 +f 10/26/1 13/27/1 9/28/1 +f 12/29/4 14/30/4 10/31/4 +f 11/32/2 16/33/2 12/34/2 +f 20/35/4 22/36/4 18/37/4 +f 7/4/5 20/38/5 8/8/5 +f 4/9/5 17/39/5 2/2/5 +f 8/8/5 18/40/5 4/9/5 +f 22/41/5 23/42/5 21/43/5 +f 18/44/2 21/45/2 17/46/2 +f 17/47/3 23/48/3 19/49/3 +f 19/50/1 24/51/1 20/52/1 +f 3/1/1 4/9/1 2/2/1 +f 7/4/2 8/8/2 5/5/2 +f 3/7/3 5/14/3 8/8/3 +f 2/2/4 7/4/4 6/10/4 +f 2/2/5 17/39/5 19/12/5 +f 3/7/6 9/21/6 11/13/6 +f 9/15/3 13/53/3 15/16/3 +f 5/14/6 11/13/6 12/18/6 +f 1/20/6 10/22/6 9/21/6 +f 6/19/6 12/18/6 10/22/6 +f 14/23/6 16/54/6 15/24/6 +f 10/26/1 14/55/1 13/27/1 +f 12/29/4 16/56/4 14/30/4 +f 11/32/2 15/57/2 16/33/2 +f 20/35/4 24/58/4 22/36/4 +f 7/4/5 19/12/5 20/38/5 +f 4/9/5 18/40/5 17/39/5 +f 8/8/5 20/38/5 18/40/5 +f 22/41/5 24/59/5 23/42/5 +f 18/44/2 22/60/2 21/45/2 +f 17/47/3 21/61/3 23/48/3 +f 19/50/1 23/62/1 24/51/1 diff --git a/src/main/resources/assets/hbm/textures/items/radar_link.png b/src/main/resources/assets/hbm/textures/items/radar_linker.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/radar_link.png rename to src/main/resources/assets/hbm/textures/items/radar_linker.png diff --git a/src/main/resources/assets/hbm/textures/models/machines/radar_screen.png b/src/main/resources/assets/hbm/textures/models/machines/radar_screen.png new file mode 100644 index 0000000000000000000000000000000000000000..82e959a1c40a8f411622cb09ad26683442d63097 GIT binary patch literal 621 zcmV-z0+RiSP)S5XU!CYONpO!Gj*ZlM_Ck6_7C&c=CO-_0xUE~0!)kqm>3B#F%n>6B*4T-fQbPm8nel` z)Y?9F2~dDt%&52sxN8glot9FI+QOz(bT%31BbU1t;gY|(MCfYV@TG6up*k+lZc696 z{@Si(Ed9#^++;+oQS}?!KkaA5y=50ry8;k@v$xk;8&e#goaV=%kDSX~bf%=wf0}no z=U|E82IFt9*E8tJFQd_D?HW!Z7{U0Prm1On{=_?pP)eyR%dGW8h zld2EX?a`vWd)Kq803#7B8tfA+8Vq{nbgN>^k!zru=7&Tu;zy$4DDKoE7?D~8F@8t{ zV>JzfBpMCyqZYwfO_N&079$eT07*26ky^x-vbt`88k|JvR@1O{1t9(wSKQbFED@_~ z#cZSNFPFs0@>OEA_x*DJA+lGQ5Eob0%U)$-WS0>!5@2E^z{EJ0$wg5_I*S<$21aKo zGJ=Vb02AY!L?lVV?SdAdOpY_ru-*6Yp^wsJ=k_YQmd$+w{H;5yz?#D+00000NkvXX Hu0mjf8QmK; literal 0 HcmV?d00001 From 06181f08d9c2762368965081e4cad8afea1f1e3b Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 26 Nov 2023 20:27:58 +0100 Subject: [PATCH 124/207] yeah whatever --- changelog | 19 +- gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 4 +- .../missile/EntityMissileAntiBallistic.java | 12 +- .../entity/missile/EntityMissileBaseNT.java | 9 +- .../hbm/inventory/gui/GUIMachineRadarNT.java | 42 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 2 + .../java/com/hbm/main/ResourceManager.java | 22 +- .../entity/rocket/RenderMissileHuge.java | 32 +- .../entity/rocket/RenderMissileStrong.java | 34 +- .../tileentity/RenderLaunchPadTier1.java | 22 +- .../render/tileentity/RenderRadarScreen.java | 25 +- .../render/tileentity/RendererObjTester.java | 42 +- .../machine/TileEntityMachineRadarNT.java | 23 +- .../machine/TileEntityMachineRadarScreen.java | 28 + src/main/java/com/hbm/world/WorldUtil.java | 32 +- src/main/resources/META-INF/HBM_at.cfg | 3 + src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 3 + .../assets/hbm/models/missile_huge.obj | 1581 +++++++++++++++++ .../assets/hbm/models/missile_strong.obj | 979 ++++++++++ .../hbm/textures/items/missile_buster.png | Bin 318 -> 343 bytes .../hbm/textures/items/missile_cluster.png | Bin 312 -> 366 bytes .../hbm/textures/items/missile_generic.png | Bin 300 -> 372 bytes .../hbm/textures/items/missile_incendiary.png | Bin 315 -> 414 bytes .../assets/hbm/textures/models/mas.png | Bin 0 -> 445 bytes .../assets/hbm/textures/models/missileAA.png | Bin 7609 -> 0 bytes .../hbm/textures/models/missileHuge_BU.png | Bin 9690 -> 0 bytes .../hbm/textures/models/missileHuge_CL.png | Bin 9400 -> 0 bytes .../hbm/textures/models/missileHuge_HE.png | Bin 9365 -> 0 bytes .../hbm/textures/models/missileHuge_IN.png | Bin 10260 -> 0 bytes .../hbm/textures/models/missileMIRV.png | Bin 11306 -> 0 bytes .../hbm/textures/models/missileStrong_BU.png | Bin 9972 -> 0 bytes .../hbm/textures/models/missileStrong_CL.png | Bin 9570 -> 0 bytes .../hbm/textures/models/missileStrong_EMP.png | Bin 7748 -> 0 bytes .../hbm/textures/models/missileStrong_HE.png | Bin 9579 -> 0 bytes .../hbm/textures/models/missileStrong_IN.png | Bin 10172 -> 0 bytes .../hbm/textures/models/missileV2_BU.png | Bin 7728 -> 0 bytes .../hbm/textures/models/missileV2_CL.png | Bin 7442 -> 0 bytes .../hbm/textures/models/missileV2_HE.png | Bin 7412 -> 0 bytes .../hbm/textures/models/missileV2_IN.png | Bin 8413 -> 0 bytes .../hbm/textures/models/missile_huge.png | Bin 0 -> 2187 bytes .../hbm/textures/models/missile_huge_bu.png | Bin 0 -> 2255 bytes .../hbm/textures/models/missile_huge_cl.png | Bin 0 -> 2211 bytes .../hbm/textures/models/missile_huge_inc.png | Bin 0 -> 2211 bytes .../hbm/textures/models/missile_strong.png | Bin 0 -> 835 bytes .../hbm/textures/models/missile_strong_bu.png | Bin 0 -> 943 bytes .../hbm/textures/models/missile_strong_cl.png | Bin 0 -> 934 bytes .../textures/models/missile_strong_emp.png | Bin 0 -> 905 bytes .../textures/models/missile_strong_inc.png | Bin 0 -> 860 bytes 51 files changed, 2819 insertions(+), 102 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/missile_huge.obj create mode 100644 src/main/resources/assets/hbm/models/missile_strong.obj create mode 100644 src/main/resources/assets/hbm/textures/models/mas.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileAA.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileHuge_BU.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileHuge_CL.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileHuge_HE.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileHuge_IN.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileMIRV.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileStrong_BU.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileStrong_CL.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileStrong_EMP.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileStrong_HE.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileStrong_IN.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileV2_BU.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileV2_CL.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileV2_HE.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileV2_IN.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_huge.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_huge_bu.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_huge_cl.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_huge_inc.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_strong.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_strong_bu.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_strong_cl.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_strong_emp.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_strong_inc.png diff --git a/changelog b/changelog index fd05f734e..e707528ba 100644 --- a/changelog +++ b/changelog @@ -8,21 +8,25 @@ * Replaces insulator in many recipes where electrical insulation that is potentially made from brick doesn't make sense, like rubber gas masks, jackets, tools and so on * Latex is interchangable with rubber in all recipes where it's used, but not the other way round * The old insulator is now mainly used for electrical and heat insulation as well as PWR rods +* Radar screen + * Radars can be linked to one radar screen, which will display all detected blips + * Right-clicking the radar screen will open the GUI of the radar that it is linked to ## Changed -* Light oil and cracked light oil can now be refomred into large quantities of aromatic hydrocarbons a well as some reformate gas +* Light oil and cracked light oil can now be reformed into large quantities of aromatic hydrocarbons a well as some reformate gas * The painsaw ability no longer drops ammo and syringes, instead it drops nitra * Radars have been completely rewritten * Dots will now move smoothly across the screen, instead of jittering and being bound to the pixel grid * Radars no longer use CPU-intensive full scans of the map, instead of using an optimized search for nearby scannable entities - * There's now a dedicated toggle for detecing artillery shells + * There's now a dedicated toggle for detecting artillery shells * Radars now have a local area map that can be enabled * The map scans up to 100 points per tick, the display can show 40,000 points - * The map will scan loaded chunks instantly, unloaded chunks have a limit of 5 chunk loads per tick to prevent excessive lag - * The chunk load limit can be adjusted in the machine config file + * The map will scan loaded chunks instantly, unloaded chunks have a limit 10 chunkloads per tick to prevent excessive lag. Chunks that have not yet been generated yet will show up as black spots, and will never be loaded + * The chunk load limit as well as whether chunks should be generated can be adjusted in the machine config file * The map will show terrain height between Y:50 and Y:128, anything outside that range is truncated * Radars now have a second GUI which allows the use of a battery, as well as linking the radar to other machines * By using the number keys, the radar can now launch missiles, ABMs or artillery at the current aimed at position + * Radars can be linked to one additional radar screen which shows part of the radar's GUI in-world * The turbofan's afterburner now adds a 33% efficiency bonus for every level. This means that instead of the efficiency remaining constant between levels, a tier 3 upgrade will yield double efficiency. * Reduced the flarestack's base energy efficiency * Trenchmaster armor is now unbreakable @@ -30,11 +34,13 @@ * The arc welder recipes for enhanced and advanced circuits now use only 100mB of fluid instead of 250mB * Completely rewrote the missile base code, missiles now accelerate smoothly instead of in increments and use interpolated movement, making them less jittery * Missiles now have a slightly higher top-speed -* Remodeled the anti-ballistic missile +* Remodeled tier 1, 2 and 3 missiles as well as the anti-ballistic missile * Anti-ballistic missiles now use predictive targeting as well as a heightened sensor range of 1,000 blocks (instead of 500) which should make them a lot more effective * Anti-ballistic missiles accelerate 4x faster than normal missiles and have a 50% higher top-speed * Anti-ballistic missiles can now load their own chunks, allowing them to get to far away incoming missiles without getting stuck * PWRs that have recently been close to unloaded chunks now have a 40 tick timeframe where they are "frozen", only trying to connect to a fluid network but not doing any fission, this should reduce the amount of meltdowns caused by chunkloading +* Glyphid hive blocks now have some color variance +* Glpyhid spawners now have a unique texture ## Fixed * Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer @@ -42,4 +48,5 @@ * Fixed bismuth billets not being oredicted, making BFB PWR rods uncraftable * Fixed missile chunkloading having rounding issues, sometimes causing them to get stuck in unloaded chunks while crossing chunk borders * Fixed drones not being listed in the creative tabs -* Fixed pre-defined fluid duct items not being being able to be placed where replacable blocks are, eg. water \ No newline at end of file +* Fixed pre-defined fluid duct items not being being able to be placed where replacable blocks are, eg. water +* Fixed horrible gamebreaking bug where the reinforced glass pane has too much blast resistance \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index a60f1e9c9..64187a8b7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4775 +mod_build_number=4795 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index a4873c99c..cbc8adbd4 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1548,8 +1548,8 @@ public class ModBlocks { asphalt_light = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt_light"); reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick"); - reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(15.0F).setResistance(25.0F); - reinforced_glass_pane = new BlockNTMGlassPane(0, RefStrings.MODID + ":reinforced_glass_pane", RefStrings.MODID + ":reinforced_glass_pane_edge", Material.rock, false).setBlockName("reinforced_glass_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(15.0F).setResistance(200.0F); + reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(2.0F).setResistance(25.0F); + reinforced_glass_pane = new BlockNTMGlassPane(0, RefStrings.MODID + ":reinforced_glass_pane", RefStrings.MODID + ":reinforced_glass_pane_edge", Material.rock, false).setBlockName("reinforced_glass_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(2.0F).setResistance(25.0F); reinforced_light = new BlockGeneric(Material.rock).setBlockName("reinforced_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1.0F).setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_light"); reinforced_sand = new BlockGeneric(Material.rock).setBlockName("reinforced_sand").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(40.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_sand"); reinforced_lamp_off = new ReinforcedLamp(Material.rock, false).setBlockName("reinforced_lamp_off").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_off"); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index c48961d7d..b0f2ef6be 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -77,6 +77,8 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements if(this.tracking != null) { this.aimAtTarget(); + } else { + if(this.ticksExisted > 600) this.setDead(); } } @@ -127,8 +129,9 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements Vec3 motion = Vec3.createVectorHelper(predicted.xCoord - posX, predicted.yCoord - posY, predicted.zCoord - posZ).normalize(); if(delta.lengthVector() < 10 && activationTimer >= 40) { + this.setDead(); ExplosionLarge.explode(worldObj, posX, posY, posZ, 15F, true, false, false); - this.killAndClear(); + } this.motionX = motion.xCoord * baseSpeed; @@ -139,8 +142,8 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements @Override protected void onImpact(MovingObjectPosition mop) { if(this.activationTimer >= 40) { + this.setDead(); ExplosionLarge.explode(worldObj, posX, posY, posZ, 20F, true, false, false); - this.killAndClear(); } } @@ -205,8 +208,9 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements } } - public void killAndClear() { - this.setDead(); + @Override + public void setDead() { + super.setDead(); this.clearChunkLoader(); } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index 9cc8c9456..8fdd2f065 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -215,10 +215,10 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen } protected void killMissile() { + this.setDead(); ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); ExplosionLarge.spawnMissileDebris(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 0.25, getDebris(), getDebrisRareDrop()); - this.killAndClear(); } @Override @@ -231,7 +231,7 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen protected void onImpact(MovingObjectPosition mop) { if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { this.onImpact(); - this.killAndClear(); + this.setDead(); } } @@ -290,8 +290,9 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen } } - public void killAndClear() { - this.setDead(); + @Override + public void setDead() { + super.setDead(); this.clearChunkLoader(); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java index 5577c7638..accefedf1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -4,7 +4,6 @@ import java.util.Arrays; import org.lwjgl.opengl.GL11; -import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; @@ -224,32 +223,29 @@ public class GUIMachineRadarNT extends GuiScreen { if(checkClick(lastMouseX, lastMouseY, 8, 17, 200, 200) && c >= '1' && c <= '8') { int id = c - '1'; - - if(radar.slots[id] != null && radar.slots[id].getItem() == ModItems.radar_linker) { - if(!radar.entries.isEmpty()) { - for(RadarEntry m : radar.entries) { - int x = guiLeft + (int)((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; - int z = guiTop + (int)((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; - - if(lastMouseX + 5 > x && lastMouseX - 4 <= x && lastMouseY + 5 > z && lastMouseY - 4 <= z) { - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("launchEntity", m.entityID); - data.setInteger("link", id); - PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); - return; - } + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + int x = guiLeft + (int) ((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; + int z = guiTop + (int) ((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; + + if(lastMouseX + 5 > x && lastMouseX - 4 <= x && lastMouseY + 5 > z && lastMouseY - 4 <= z) { + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("launchEntity", m.entityID); + data.setInteger("link", id); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + return; } } - - int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); - int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("launchPosX", tX); - data.setInteger("launchPosZ", tZ); - data.setInteger("link", id); - PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); } + + int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); + int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("launchPosX", tX); + data.setInteger("launchPosZ", tZ); + data.setInteger("link", id); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 0c18a2d38..5f353ffa1 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4775)"; + public static final String VERSION = "1.0.27 BETA (4795)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 34fbbfd48..5e0cc59e9 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -1004,6 +1004,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.crane_splitter), new Object[] { "III", "PCP", "III", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', STEEL.ingot(), 'C', ModItems.circuit_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.machine_conveyor_press), new Object[] { "CPC", "CBC", "CCC", 'C', CU.plate(), 'P', ModBlocks.machine_epress, 'B', ModBlocks.conveyor }); + addRecipeAuto(new ItemStack(ModBlocks.radar_screen), new Object[] { "PCP", "SRS", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.circuit_aluminium, 'S', STEEL.plate(), 'R', ModItems.crt_display }); + addRecipeAuto(new ItemStack(ModItems.radar_linker), new Object[] { "S", "C", "P", 'S', ModItems.crt_display, 'C', ModItems.circuit_copper, 'P', STEEL.plate() }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()), new Object[] { "PPP", "HCH", " B ", 'P', ANY_PLASTIC.ingot(), 'H', ModItems.hull_small_steel, 'C', ModItems.circuit_copper, 'B', ModBlocks.crate_steel }); addRecipeAuto(new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL_CHUNKLOADING.ordinal()), new Object[] { "E", "D", 'E', Items.ender_pearl, 'D', new ItemStack(ModItems.drone, 1, EnumDroneType.PATROL.ordinal()) }); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index b1374f425..f585c1a71 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1013,8 +1013,8 @@ public class ResourceManager { //Missiles public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asDisplayList(); public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asDisplayList(); - public static final IModelCustom missileStrong = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileGeneric.obj")); - public static final IModelCustom missileHuge = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileHuge.obj")); + public static final IModelCustom missileStrong = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_strong.obj")); + public static final IModelCustom missileHuge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_huge.obj")); public static final IModelCustom missileNuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileNeon.obj")); public static final IModelCustom missileMIRV = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileMIRV.obj")); public static final IModelCustom missileThermo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileThermo.obj")); @@ -1156,15 +1156,15 @@ public class ResourceManager { public static final ResourceLocation missileV2_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_cl.png"); public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_bu.png"); public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_abm.png"); - public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_HE.png"); - public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_EMP.png"); - public static final ResourceLocation missileStrong_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_IN.png"); - public static final ResourceLocation missileStrong_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_CL.png"); - public static final ResourceLocation missileStrong_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_BU.png"); - public static final ResourceLocation missileHuge_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileHuge_HE.png"); - public static final ResourceLocation missileHuge_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileHuge_IN.png"); - public static final ResourceLocation missileHuge_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileHuge_CL.png"); - public static final ResourceLocation missileHuge_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileHuge_BU.png"); + public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong.png"); + public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_emp.png"); + public static final ResourceLocation missileStrong_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_inc.png"); + public static final ResourceLocation missileStrong_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_cl.png"); + public static final ResourceLocation missileStrong_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_bu.png"); + public static final ResourceLocation missileHuge_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge.png"); + public static final ResourceLocation missileHuge_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge_inc.png"); + public static final ResourceLocation missileHuge_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge_cl.png"); + public static final ResourceLocation missileHuge_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_huge_bu.png"); public static final ResourceLocation missileNuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeon.png"); public static final ResourceLocation missileMIRV_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeonH.png"); public static final ResourceLocation missileVolcano_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeonV.png"); diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java index 9c7a64938..00df032dc 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileHuge.java @@ -10,27 +10,29 @@ import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RenderMissileHuge extends Render { - - public RenderMissileHuge() { } + + public RenderMissileHuge() { + } @Override public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glScalef(2F, 2F, 2F); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); + GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - if(p_76986_1_ instanceof EntityMissileBurst) - bindTexture(ResourceManager.missileHuge_HE_tex); - if(p_76986_1_ instanceof EntityMissileInferno) - bindTexture(ResourceManager.missileHuge_IN_tex); - if(p_76986_1_ instanceof EntityMissileRain) - bindTexture(ResourceManager.missileHuge_CL_tex); - if(p_76986_1_ instanceof EntityMissileDrill) - bindTexture(ResourceManager.missileHuge_BU_tex); - ResourceManager.missileHuge.renderAll(); + if(p_76986_1_ instanceof EntityMissileBurst) + bindTexture(ResourceManager.missileHuge_HE_tex); + if(p_76986_1_ instanceof EntityMissileInferno) + bindTexture(ResourceManager.missileHuge_IN_tex); + if(p_76986_1_ instanceof EntityMissileRain) + bindTexture(ResourceManager.missileHuge_CL_tex); + if(p_76986_1_ instanceof EntityMissileDrill) + bindTexture(ResourceManager.missileHuge_BU_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java index 23d3003ce..5b31dbd04 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileStrong.java @@ -17,22 +17,24 @@ public class RenderMissileStrong extends Render { public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glScalef(1.5F, 1.5F, 1.5F); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - - if(p_76986_1_ instanceof EntityMissileStrong) - bindTexture(ResourceManager.missileStrong_HE_tex); - if(p_76986_1_ instanceof EntityMissileIncendiaryStrong) - bindTexture(ResourceManager.missileStrong_IN_tex); - if(p_76986_1_ instanceof EntityMissileClusterStrong) - bindTexture(ResourceManager.missileStrong_CL_tex); - if(p_76986_1_ instanceof EntityMissileBusterStrong) - bindTexture(ResourceManager.missileStrong_BU_tex); - if(p_76986_1_ instanceof EntityMissileEMPStrong) - bindTexture(ResourceManager.missileStrong_EMP_tex); - ResourceManager.missileStrong.renderAll(); + GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); + GL11.glScalef(1.5F, 1.5F, 1.5F); + GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); + + if(p_76986_1_ instanceof EntityMissileStrong) + bindTexture(ResourceManager.missileStrong_HE_tex); + if(p_76986_1_ instanceof EntityMissileIncendiaryStrong) + bindTexture(ResourceManager.missileStrong_IN_tex); + if(p_76986_1_ instanceof EntityMissileClusterStrong) + bindTexture(ResourceManager.missileStrong_CL_tex); + if(p_76986_1_ instanceof EntityMissileBusterStrong) + bindTexture(ResourceManager.missileStrong_BU_tex); + if(p_76986_1_ instanceof EntityMissileEMPStrong) + bindTexture(ResourceManager.missileStrong_EMP_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index acaff58a5..b7159a7bb 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -41,7 +41,9 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { if(toRender.getItem() == ModItems.missile_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); bindTexture(ResourceManager.missileStrong_HE_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_cluster) { GL11.glScalef(1.0F, 1.0F, 1.0F); @@ -72,37 +74,47 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { if(toRender.getItem() == ModItems.missile_incendiary_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); bindTexture(ResourceManager.missileStrong_IN_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_cluster_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); bindTexture(ResourceManager.missileStrong_CL_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_buster_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); bindTexture(ResourceManager.missileStrong_BU_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_burst) { - GL11.glScalef(2.0F, 2.0F, 2.0F); bindTexture(ResourceManager.missileHuge_HE_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_inferno) { - GL11.glScalef(2.0F, 2.0F, 2.0F); bindTexture(ResourceManager.missileHuge_IN_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_rain) { - GL11.glScalef(2.0F, 2.0F, 2.0F); bindTexture(ResourceManager.missileHuge_CL_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_drill) { - GL11.glScalef(2.0F, 2.0F, 2.0F); bindTexture(ResourceManager.missileHuge_BU_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileHuge.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_endo) { GL11.glScalef(1.5F, 1.5F, 1.5F); @@ -176,7 +188,9 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { if(toRender.getItem() == ModItems.missile_emp_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); bindTexture(ResourceManager.missileStrong_EMP_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileStrong.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_volcano) { GL11.glScalef(1.5F, 1.5F, 1.5F); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java index e838ecf44..adc9ae010 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java @@ -3,17 +3,22 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.gui.GUIMachineRadarNT; import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import com.hbm.tileentity.machine.TileEntityMachineRadarScreen; import api.hbm.entity.RadarEntry; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderRadarScreen extends TileEntitySpecialRenderer { +public class RenderRadarScreen extends TileEntitySpecialRenderer implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { @@ -91,4 +96,22 @@ public class RenderRadarScreen extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.radar_screen); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(5.5, 5.5, 5.5); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glTranslated(0, 0, -0.5); + bindTexture(ResourceManager.radar_screen_tex); + ResourceManager.radar_screen.renderAll(); + }}; + } } diff --git a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java index 71c074f4c..d6311b241 100644 --- a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java +++ b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java @@ -6,19 +6,27 @@ import org.lwjgl.BufferUtils; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; -import com.hbm.render.model.ModelPigeon; +import com.hbm.render.util.HorsePronter; +import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; public class RendererObjTester extends TileEntitySpecialRenderer { //private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/TestObj.obj"); - ModelPigeon pigeon = new ModelPigeon(); - + private static ResourceLocation extra = new ResourceLocation(RefStrings.MODID, "textures/models/horse/dyx.png"); + @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { GL11.glPushMatrix(); @@ -26,8 +34,32 @@ public class RendererObjTester extends TileEntitySpecialRenderer { GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.universal); - pigeon.render(null, 0, 0, 0, 0, 0, 0.0625F); + GL11.glRotated(System.currentTimeMillis() / 5D % 360D, 0, -1, 0); + GL11.glTranslated(0, 0.1, 0.5); + + this.bindTexture(extra); + HorsePronter.reset(); + double r = 60; + HorsePronter.pose(HorsePronter.id_body, 0, -r, 0); + HorsePronter.pose(HorsePronter.id_tail, 0, 45, 90); + HorsePronter.pose(HorsePronter.id_lbl, 0, -90 + r, 35); + HorsePronter.pose(HorsePronter.id_rbl, 0, -90 + r, -35); + HorsePronter.pose(HorsePronter.id_lfl, 0, r - 10, 5); + HorsePronter.pose(HorsePronter.id_rfl, 0, r - 10, -5); + HorsePronter.pose(HorsePronter.id_head, 0, r, 0); + HorsePronter.enableHorn(); + HorsePronter.enableWings(); + HorsePronter.pront(); + + ItemStack stack = new ItemStack(ModItems.cigarette); + double scale = 0.25; + GL11.glTranslated(0.02, 1.13, -0.42); + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, -1, 0); + GL11.glRotated(60, 0, 0, -1); + bindTexture(TextureMap.locationItemsTexture); + IIcon icon = stack.getIconIndex(); + ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index af253e8d8..9e9061ff1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -24,6 +24,7 @@ import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Triplet; import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.world.WorldUtil; import api.hbm.energy.IEnergyUser; import api.hbm.entity.IRadarDetectable; @@ -34,7 +35,6 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -42,6 +42,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; @@ -77,7 +78,8 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public static int radarRange = 1_000; public static int radarBuffer = 30; public static int radarAltitude = 55; - public static int chunkLoadCap = 5; + public static int chunkLoadCap = 10; + public static boolean generateChunks = false; public byte[] map = new byte[40_000]; public boolean clearFlag = false; @@ -97,6 +99,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer); radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude); chunkLoadCap = IConfigurableMachine.grab(obj, "I:chunkLoadCap", chunkLoadCap); + generateChunks = IConfigurableMachine.grab(obj, "B:generateChunks", generateChunks); } @Override @@ -106,7 +109,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I writer.name("I:radarRange").value(radarRange); writer.name("I:radarBuffer").value(radarBuffer); writer.name("I:radarAltitude").value(radarAltitude); - writer.name("I:chunkLoadCap").value(chunkLoadCap); + writer.name("B:generateChunks").value(generateChunks); } public TileEntityMachineRadarNT() { @@ -162,9 +165,15 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); } else { if(this.map[index] == 0 && chunkLoads < chunkLoadCap) { - worldObj.getChunkFromChunkCoords(x >> 4, z >> 4); - this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); - chunkLoads++; + if(this.generateChunks) { + worldObj.getChunkFromChunkCoords(x >> 4, z >> 4); + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); + chunkLoads++; + } else { + WorldUtil.provideChunk((WorldServer) worldObj, x >> 4, z >> 4); + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); + if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) chunkLoads++; + } } } } @@ -492,7 +501,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public static void updateSystem() { matchingEntities.clear(); - for(WorldServer world : Minecraft.getMinecraft().getIntegratedServer().worldServers) { + for(WorldServer world : MinecraftServer.getServer().worldServers) { for(Object entity : world.loadedEntityList) { for(Class clazz : classes) { if(clazz.isAssignableFrom(entity.getClass())) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java index 5d6621f00..663b6835a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java @@ -9,8 +9,11 @@ import com.hbm.tileentity.IBufPacketReceiver; import api.hbm.entity.RadarEntry; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; public class TileEntityMachineRadarScreen extends TileEntity implements IBufPacketReceiver { @@ -58,4 +61,29 @@ public class TileEntityMachineRadarScreen extends TileEntity implements IBufPack this.entries.add(entry); } } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 2, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } } diff --git a/src/main/java/com/hbm/world/WorldUtil.java b/src/main/java/com/hbm/world/WorldUtil.java index 9e6e06647..f8667dad7 100644 --- a/src/main/java/com/hbm/world/WorldUtil.java +++ b/src/main/java/com/hbm/world/WorldUtil.java @@ -7,9 +7,13 @@ import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; +import net.minecraft.world.WorldServer; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.storage.AnvilChunkLoader; +import net.minecraft.world.gen.ChunkProviderServer; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.chunkio.ChunkIOExecutor; import net.minecraftforge.event.entity.EntityJoinWorldEvent; public class WorldUtil { @@ -34,7 +38,7 @@ public class WorldUtil { PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(coord.chunkXPos, coord.chunkZPos, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, coord.getCenterXPos(), 128, coord.getCenterZPosition() /* who named you? */, 1024D)); } - /**Chunkloads the chunk the entity is going to spawn in and then spawns it + /**Chunkloads the chunk the entity is going to spawn in and then spawns it * @param entity The entity to be spawned**/ /*fun fact: this is based off of joinEntityInSurroundings in World @@ -68,7 +72,31 @@ public class WorldUtil { public static void syncBiomeChange(World world, int x, int z) { Chunk chunk = world.getChunkFromBlockCoords(x, z); - byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; + //byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); } + + public static Chunk provideChunk(WorldServer world, int chunkX, int chunkZ) { + ChunkProviderServer provider = world.theChunkProviderServer; + Chunk chunk = (Chunk) provider.loadedChunkHashMap.getValueByKey(ChunkCoordIntPair.chunkXZ2Int(chunkX, chunkZ)); + if(chunk != null) return chunk; + return loadChunk(world, provider, chunkX, chunkZ); + } + + private static Chunk loadChunk(WorldServer world, ChunkProviderServer provider, int chunkX, int chunkZ) { + long chunkCoord = ChunkCoordIntPair.chunkXZ2Int(chunkX, chunkZ); + provider.chunksToUnload.remove(Long.valueOf(chunkCoord)); + Chunk chunk = (Chunk) provider.loadedChunkHashMap.getValueByKey(chunkCoord); + AnvilChunkLoader loader = null; + + if(provider.currentChunkLoader instanceof AnvilChunkLoader) { + loader = (AnvilChunkLoader) provider.currentChunkLoader; + } + + if(chunk == null && loader != null && loader.chunkExists(world, chunkX, chunkZ)) { + chunk = ChunkIOExecutor.syncChunkLoad(world, loader, provider, chunkX, chunkZ); + } + + return chunk; + } } diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index 158e03857..1fc5c2ec2 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -28,3 +28,6 @@ public net.minecraft.entity.EntityLivingBase field_82180_bT # pr # ChunkProviderFlat public net.minecraft.world.gen.ChunkProviderFlat field_82702_h # hasDungeons + +# ChunkProviderServer +public net.minecraft.world.gen.ChunkProviderServer field_73248_b # chunksToUnload diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 88e385bbc..cd9d9adf1 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -529,6 +529,7 @@ entity.entity_glyphid_brenda.name=Brenda entity.entity_glyphid_nuclear.name=Der dicke Johnson entity.entity_glyphid_scout.name=Glyphid-Späher entity.entity_ntm_fbi.name=FBI Agent +entity.entity_ntm_fbi_drone.name=FBI Drone entity.entity_ntm_radiation_blaze.name=Kernschmelze-Elementar entity.hbm.entity_ntm_ufo.name=Marsianisches Invasionsschiff entity.entity_mob_hunter_chopper.name=Jagdschrauber @@ -2836,6 +2837,7 @@ item.protection_charm.name=Schutzamulett item.prototype_kit.name=Prototyp Kit item.pudding.name=Pudding item.quartz_plutonium.name=Plutonisches Quarz +item.radar_linker.name=Radar-Linker item.radaway.name=RadAway item.radaway_flush.name=Elite-RadAway item.radaway_strong.name=Starkes RadAway @@ -4338,6 +4340,7 @@ tile.pwr_port.name=PWR Zugangsport tile.pwr_port.desc=Erlaubt IO für Items und Flüssigkeiten$Platzierung: Hülle tile.pwr_reflector.name=PWR Neutronenreflektor tile.pwr_reflector.desc=Reflektier Neutronen auf Brennstäbe zurück$Platzierung: Hülle, für höhere Reaktivität$Gültiger Block für Hülle +tile.radar_screen.name=Radarbildschirm tile.radio_telex.name=Telex-Maschine tile.radio_torch_counter.name=Redstone-over-Radio Itemzähler tile.radio_torch_counter.desc=Kann auf ebenen Flächen oder Komparator-kompatiblen Blöcken platziert werden$Signal basiert auf Anzahl passender Items diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d0dc54d01..da1e3e2f9 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1042,6 +1042,7 @@ entity.entity_glyphid_brenda.name=Brenda entity.entity_glyphid_nuclear.name=Big Man Johnson entity.entity_glyphid_scout.name=Glyphid Scout entity.entity_ntm_fbi.name=FBI Agent +entity.entity_ntm_fbi_drone.name=FBI Drone entity.entity_ntm_radiation_blaze.name=Meltdown Elemental entity.hbm.entity_ntm_ufo.name=Martian Invasion Ship entity.entity_mob_hunter_chopper.name=Hunter Chopper @@ -3694,6 +3695,7 @@ item.pwr_fuel_hot.mep.name=Hot MEP PWR Fuel Rod item.pwr_fuel_hot.meu.name=Hot MEU PWR Fuel Rod item.pwr_fuel_hot.mox.name=Hot MOX PWR Fuel Rod item.quartz_plutonium.name=Plutonic Quartz +item.radar_linker.name=Radar Linker item.radaway.name=RadAway item.radaway_flush.name=Elite RadAway item.radaway_strong.name=Strong RadAway @@ -5332,6 +5334,7 @@ tile.pwr_port.name=PWR Access Port tile.pwr_port.desc=Allows item and fluid IO$Placement: Casing tile.pwr_reflector.name=PWR Neutron Reflector tile.pwr_reflector.desc=Reflects neutrons back to fuel rods$Placement: Grid, for increased reactivity$Valid casing material +tile.radar_screen.name=Radar Screen tile.radio_telex.name=Telex Machine tile.radio_torch_counter.name=Redstone-over-Radio Item Counter tile.radio_torch_counter.desc=Placable on flat surfaces or comparator-compatible blocks$Bases signal on the amount of matching items diff --git a/src/main/resources/assets/hbm/models/missile_huge.obj b/src/main/resources/assets/hbm/models/missile_huge.obj new file mode 100644 index 000000000..a3b5f2934 --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_huge.obj @@ -0,0 +1,1581 @@ +# Blender v2.79 (sub 0) OBJ File: 'missile_huge.blend' +# www.blender.org +o Circle +v 1.154849 0.500000 -0.478354 +v 1.250000 0.500000 0.000000 +v 1.154849 0.500000 0.478354 +v 0.883883 0.500000 0.883884 +v 0.478354 0.500000 1.154850 +v -0.000000 0.500000 1.250000 +v -0.478354 0.500000 1.154850 +v -0.883883 0.500000 0.883883 +v -1.154849 0.500000 0.478354 +v -1.250000 0.500000 0.000000 +v -1.154849 0.500000 -0.478354 +v -0.883883 0.500000 -0.883883 +v -0.478354 0.500000 -1.154850 +v 0.000000 0.500000 -1.250000 +v 0.000000 9.500000 -1.000000 +v -0.382683 9.500000 -0.923880 +v -0.707107 9.500000 -0.707107 +v -0.923880 9.500000 -0.382683 +v -1.000000 9.500000 0.000000 +v -0.923880 9.500000 0.382684 +v -0.707107 9.500000 0.707107 +v -0.382683 9.500000 0.923880 +v -0.000000 9.500000 1.000000 +v 0.382683 9.500000 0.923880 +v 0.707107 9.500000 0.707107 +v 0.923880 9.500000 0.382684 +v 1.000000 9.500000 0.000000 +v 0.923879 9.500000 -0.382684 +v 0.707107 9.500000 -0.707107 +v 0.382683 9.500000 -0.923880 +v -0.000000 11.000000 -0.875000 +v -0.334848 11.000000 -0.808394 +v -0.618718 11.000000 -0.618719 +v -0.808395 11.000000 -0.334848 +v -0.875000 11.000000 0.000000 +v -0.808395 11.000000 0.334848 +v -0.618718 11.000000 0.618719 +v -0.334848 11.000000 0.808394 +v -0.000000 11.000000 0.875000 +v 0.334848 11.000000 0.808394 +v 0.618718 11.000000 0.618719 +v 0.808395 11.000000 0.334848 +v 0.875000 11.000000 0.000000 +v 0.808394 11.000000 -0.334848 +v 0.618718 11.000000 -0.618719 +v 0.334848 11.000000 -0.808395 +v 0.000000 13.499999 0.000000 +v 0.095671 0.500000 -0.855970 +v 0.176777 0.500000 -0.801777 +v 0.230970 0.500000 -0.720671 +v 0.250000 0.500000 -0.625000 +v 0.230970 0.500000 -0.529329 +v 0.176777 0.500000 -0.448223 +v 0.095671 0.500000 -0.394030 +v -0.000000 0.500000 -0.375000 +v -0.095671 0.500000 -0.394030 +v -0.176777 0.500000 -0.448223 +v -0.230970 0.500000 -0.529329 +v -0.250000 0.500000 -0.625000 +v -0.230970 0.500000 -0.720671 +v -0.176777 0.500000 -0.801777 +v -0.095671 0.500000 -0.855970 +v -0.000000 0.500000 -0.875000 +v 0.143506 0.250000 -0.971455 +v 0.265165 0.250000 -0.890165 +v 0.346455 0.250000 -0.768507 +v 0.375000 0.250000 -0.625000 +v 0.346455 0.250000 -0.481493 +v 0.265165 0.250000 -0.359835 +v 0.143506 0.250000 -0.278545 +v -0.000000 0.250000 -0.250000 +v -0.143506 0.250000 -0.278545 +v -0.265165 0.250000 -0.359835 +v -0.346455 0.250000 -0.481494 +v -0.375000 0.250000 -0.625000 +v -0.346455 0.250000 -0.768506 +v -0.265165 0.250000 -0.890165 +v -0.000000 0.250000 -1.000000 +v -0.143506 0.250000 -0.971455 +v 0.143506 0.000000 -0.971455 +v 0.265165 0.000000 -0.890165 +v 0.346455 0.000000 -0.768507 +v 0.375000 0.000000 -0.625000 +v 0.346455 0.000000 -0.481493 +v 0.265165 0.000000 -0.359835 +v 0.143506 0.000000 -0.278545 +v -0.000000 0.000000 -0.250000 +v -0.143506 0.000000 -0.278545 +v -0.265165 0.000000 -0.359835 +v -0.346455 0.000000 -0.481494 +v -0.375000 0.000000 -0.625000 +v -0.346455 0.000000 -0.768506 +v -0.265165 0.000000 -0.890165 +v -0.143506 0.000000 -0.971455 +v -0.000000 0.000000 -1.000000 +v 0.000000 5.250000 -1.250000 +v -0.478354 5.250000 -1.154850 +v -0.883883 5.250000 -0.883883 +v -1.154849 5.250000 -0.478354 +v -1.250000 5.250000 0.000000 +v -1.154849 5.250000 0.478354 +v -0.883883 5.250000 0.883883 +v -0.478354 5.250000 1.154850 +v -0.000000 5.250000 1.250000 +v 0.478354 5.250000 1.154850 +v 0.883883 5.250000 0.883884 +v 1.154849 5.250000 0.478354 +v 1.250000 5.250000 0.000000 +v 1.154849 5.250000 -0.478354 +v 0.883883 5.250000 -0.883884 +v 0.478354 5.250000 -1.154850 +v 0.883883 0.500000 -0.883884 +v 0.478354 0.500000 -1.154850 +v 0.000000 6.250000 -1.000000 +v -0.382683 6.250000 -0.923880 +v -0.707107 6.250000 -0.707107 +v -0.923880 6.250000 -0.382683 +v -1.000000 6.250000 0.000000 +v -0.923880 6.250000 0.382684 +v -0.707107 6.250000 0.707107 +v -0.382683 6.250000 0.923880 +v -0.000000 6.250000 1.000000 +v 0.382683 6.250000 0.923880 +v 0.707107 6.250000 0.707107 +v 0.923880 6.250000 0.382684 +v 1.000000 6.250000 0.000000 +v 0.923879 6.250000 -0.382684 +v 0.707107 6.250000 -0.707107 +v 0.382683 6.250000 -0.923880 +v 0.000000 6.500000 -1.000000 +v -0.382683 6.500000 -0.923880 +v -0.707107 6.500000 -0.707107 +v -0.923880 6.500000 -0.382683 +v -1.000000 6.500000 0.000000 +v -0.923880 6.500000 0.382684 +v -0.707107 6.500000 0.707107 +v -0.382683 6.500000 0.923880 +v -0.000000 6.500000 1.000000 +v 0.382683 6.500000 0.923880 +v 0.707107 6.500000 0.707107 +v 0.923880 6.500000 0.382684 +v 1.000000 6.500000 0.000000 +v 0.923879 6.500000 -0.382684 +v 0.707107 6.500000 -0.707107 +v 0.382683 6.500000 -0.923880 +v -0.000000 6.500000 -0.875000 +v -0.334848 6.500000 -0.808394 +v -0.618718 6.500000 -0.618719 +v -0.808395 6.500000 -0.334848 +v -0.875000 6.500000 0.000000 +v -0.808395 6.500000 0.334848 +v -0.618718 6.500000 0.618719 +v -0.334848 6.500000 0.808394 +v -0.000000 6.500000 0.875000 +v 0.334848 6.500000 0.808394 +v 0.618718 6.500000 0.618719 +v 0.808395 6.500000 0.334848 +v 0.875000 6.500000 0.000000 +v 0.808394 6.500000 -0.334848 +v 0.618718 6.500000 -0.618719 +v 0.334848 6.500000 -0.808395 +v -0.000000 6.250000 -0.875000 +v -0.334848 6.250000 -0.808394 +v -0.618718 6.250000 -0.618719 +v -0.808395 6.250000 -0.334848 +v -0.875000 6.250000 0.000000 +v -0.808395 6.250000 0.334848 +v -0.618718 6.250000 0.618719 +v -0.334848 6.250000 0.808394 +v -0.000000 6.250000 0.875000 +v 0.334848 6.250000 0.808394 +v 0.618718 6.250000 0.618719 +v 0.808395 6.250000 0.334848 +v 0.875000 6.250000 0.000000 +v 0.808394 6.250000 -0.334848 +v 0.618718 6.250000 -0.618719 +v 0.334848 6.250000 -0.808395 +v 1.010000 7.313000 -0.010000 +v 0.933879 7.313000 -0.392684 +v 0.717107 7.313000 -0.717107 +v 0.392683 7.313000 -0.933880 +v 0.392683 8.500000 -0.933880 +v 0.717107 8.500000 -0.717107 +v 0.933879 8.500000 -0.392684 +v 1.010000 8.500000 -0.010000 +v 0.839689 3.375000 -0.751301 +v 0.751301 3.375000 -0.839689 +v 1.502602 0.375000 -1.502602 +v 0.839689 0.375000 -0.751301 +v 0.751301 0.375000 -0.839689 +v 1.502602 1.375000 -1.502602 +v 0.095671 0.500000 0.394030 +v 0.176777 0.500000 0.448223 +v 0.230970 0.500000 0.529329 +v 0.250000 0.500000 0.625000 +v 0.230970 0.500000 0.720671 +v 0.176777 0.500000 0.801777 +v 0.095671 0.500000 0.855970 +v -0.000000 0.500000 0.875000 +v -0.095671 0.500000 0.855970 +v -0.176777 0.500000 0.801777 +v -0.230970 0.500000 0.720671 +v -0.250000 0.500000 0.625000 +v -0.230970 0.500000 0.529329 +v -0.176777 0.500000 0.448223 +v -0.095671 0.500000 0.394030 +v -0.000000 0.500000 0.375000 +v 0.143506 0.250000 0.278545 +v 0.265165 0.250000 0.359835 +v 0.346455 0.250000 0.481493 +v 0.375000 0.250000 0.625000 +v 0.346455 0.250000 0.768507 +v 0.265165 0.250000 0.890165 +v 0.143506 0.250000 0.971455 +v -0.000000 0.250000 1.000000 +v -0.143506 0.250000 0.971455 +v -0.265165 0.250000 0.890165 +v -0.346455 0.250000 0.768506 +v -0.375000 0.250000 0.625000 +v -0.346455 0.250000 0.481494 +v -0.265165 0.250000 0.359835 +v -0.000000 0.250000 0.250000 +v -0.143506 0.250000 0.278545 +v 0.143506 0.000000 0.278545 +v 0.265165 0.000000 0.359835 +v 0.346455 0.000000 0.481493 +v 0.375000 0.000000 0.625000 +v 0.346455 0.000000 0.768507 +v 0.265165 0.000000 0.890165 +v 0.143506 0.000000 0.971455 +v -0.000000 0.000000 1.000000 +v -0.143506 0.000000 0.971455 +v -0.265165 0.000000 0.890165 +v -0.346455 0.000000 0.768506 +v -0.375000 0.000000 0.625000 +v -0.346455 0.000000 0.481494 +v -0.265165 0.000000 0.359835 +v -0.143506 0.000000 0.278545 +v -0.000000 0.000000 0.250000 +v 0.720671 0.500000 -0.230970 +v 0.801777 0.500000 -0.176777 +v 0.855970 0.500000 -0.095671 +v 0.875000 0.500000 0.000000 +v 0.855970 0.500000 0.095671 +v 0.801777 0.500000 0.176777 +v 0.720671 0.500000 0.230970 +v 0.625000 0.500000 0.250000 +v 0.529329 0.500000 0.230970 +v 0.448223 0.500000 0.176777 +v 0.394030 0.500000 0.095671 +v 0.375000 0.500000 0.000000 +v 0.394030 0.500000 -0.095671 +v 0.448223 0.500000 -0.176777 +v 0.529329 0.500000 -0.230970 +v 0.625000 0.500000 -0.250000 +v 0.768506 0.250000 -0.346455 +v 0.890165 0.250000 -0.265165 +v 0.971455 0.250000 -0.143507 +v 1.000000 0.250000 0.000000 +v 0.971455 0.250000 0.143507 +v 0.890165 0.250000 0.265165 +v 0.768506 0.250000 0.346455 +v 0.625000 0.250000 0.375000 +v 0.481494 0.250000 0.346455 +v 0.359835 0.250000 0.265165 +v 0.278545 0.250000 0.143506 +v 0.250000 0.250000 0.000000 +v 0.278545 0.250000 -0.143506 +v 0.359835 0.250000 -0.265165 +v 0.625000 0.250000 -0.375000 +v 0.481494 0.250000 -0.346455 +v 0.768506 0.000000 -0.346455 +v 0.890165 0.000000 -0.265165 +v 0.971455 0.000000 -0.143507 +v 1.000000 0.000000 0.000000 +v 0.971455 0.000000 0.143507 +v 0.890165 0.000000 0.265165 +v 0.768506 0.000000 0.346455 +v 0.625000 0.000000 0.375000 +v 0.481494 0.000000 0.346455 +v 0.359835 0.000000 0.265165 +v 0.278545 0.000000 0.143506 +v 0.250000 0.000000 0.000000 +v 0.278545 0.000000 -0.143506 +v 0.359835 0.000000 -0.265165 +v 0.481494 0.000000 -0.346455 +v 0.625000 0.000000 -0.375000 +v -0.529329 0.500000 -0.230970 +v -0.448223 0.500000 -0.176777 +v -0.394030 0.500000 -0.095671 +v -0.375000 0.500000 0.000000 +v -0.394030 0.500000 0.095671 +v -0.448223 0.500000 0.176777 +v -0.529329 0.500000 0.230970 +v -0.625000 0.500000 0.250000 +v -0.720671 0.500000 0.230970 +v -0.801777 0.500000 0.176777 +v -0.855970 0.500000 0.095671 +v -0.875000 0.500000 0.000000 +v -0.855970 0.500000 -0.095671 +v -0.801777 0.500000 -0.176777 +v -0.720671 0.500000 -0.230970 +v -0.625000 0.500000 -0.250000 +v -0.481494 0.250000 -0.346455 +v -0.359835 0.250000 -0.265165 +v -0.278545 0.250000 -0.143507 +v -0.250000 0.250000 0.000000 +v -0.278545 0.250000 0.143507 +v -0.359835 0.250000 0.265165 +v -0.481494 0.250000 0.346455 +v -0.625000 0.250000 0.375000 +v -0.768506 0.250000 0.346455 +v -0.890165 0.250000 0.265165 +v -0.971455 0.250000 0.143506 +v -1.000000 0.250000 0.000000 +v -0.971455 0.250000 -0.143506 +v -0.890165 0.250000 -0.265165 +v -0.625000 0.250000 -0.375000 +v -0.768506 0.250000 -0.346455 +v -0.481494 0.000000 -0.346455 +v -0.359835 0.000000 -0.265165 +v -0.278545 0.000000 -0.143507 +v -0.250000 0.000000 0.000000 +v -0.278545 0.000000 0.143507 +v -0.359835 0.000000 0.265165 +v -0.481494 0.000000 0.346455 +v -0.625000 0.000000 0.375000 +v -0.768506 0.000000 0.346455 +v -0.890165 0.000000 0.265165 +v -0.971455 0.000000 0.143506 +v -1.000000 0.000000 0.000000 +v -0.971455 0.000000 -0.143506 +v -0.890165 0.000000 -0.265165 +v -0.768506 0.000000 -0.346455 +v -0.625000 0.000000 -0.375000 +v -0.839689 3.375000 0.751301 +v -0.751301 3.375000 0.839689 +v -1.502602 0.375000 1.502602 +v -0.839689 0.375000 0.751301 +v -0.751301 0.375000 0.839689 +v -1.502602 1.375000 1.502602 +v -0.751301 3.375000 -0.839689 +v -0.839689 3.375000 -0.751301 +v -1.502602 0.375000 -1.502602 +v -0.751301 0.375000 -0.839689 +v -0.839689 0.375000 -0.751301 +v -1.502602 1.375000 -1.502602 +v 0.751301 3.375000 0.839689 +v 0.839689 3.375000 0.751301 +v 1.502602 0.375000 1.502601 +v 0.751301 0.375000 0.839689 +v 0.839689 0.375000 0.751301 +v 1.502602 1.375000 1.502601 +v -1.010000 7.313000 0.010000 +v -0.933879 7.313000 0.392684 +v -0.717106 7.313000 0.717107 +v -0.392683 7.313000 0.933880 +v -0.392683 8.500000 0.933880 +v -0.717106 8.500000 0.717107 +v -0.933879 8.500000 0.392684 +v -1.010000 8.500000 0.010000 +vt 0.291667 0.471698 +vt 0.250000 0.462264 +vt 0.291667 0.462264 +vt 0.583333 0.471698 +vt 0.625000 0.462264 +vt 0.625000 0.471698 +vt 0.208333 0.471698 +vt 0.250000 0.471698 +vt 0.541667 0.471698 +vt 0.583333 0.462264 +vt 0.166667 0.462264 +vt 0.208333 0.462264 +vt 0.500000 0.471698 +vt 0.458333 0.462264 +vt 0.500000 0.462264 +vt 0.541667 0.462264 +vt 0.125000 0.471698 +vt 0.166667 0.471698 +vt 0.416667 0.471698 +vt 0.458333 0.471698 +vt 0.083333 0.471698 +vt 0.125000 0.462264 +vt 0.375000 0.462264 +vt 0.416667 0.462264 +vt 0.041667 0.471698 +vt 0.083333 0.462264 +vt 0.375000 0.471698 +vt 0.333333 0.462264 +vt -0.000000 0.471698 +vt 0.041667 0.462264 +vt 0.333333 0.471698 +vt 0.678877 0.708687 +vt 0.678877 0.668671 +vt 0.737790 0.668671 +vt 0.666667 0.462264 +vt 0.666667 0.471698 +vt 0.333333 0.433962 +vt 0.291667 0.443396 +vt 0.291667 0.433962 +vt 0.375000 0.433962 +vt 0.333333 0.443396 +vt 0.416667 0.433962 +vt 0.375000 0.443396 +vt 0.458333 0.433962 +vt 0.416667 0.443396 +vt 0.500000 0.433962 +vt 0.458333 0.443396 +vt 0.541667 0.433962 +vt 0.500000 0.443396 +vt 0.583333 0.443396 +vt 0.541667 0.443396 +vt 0.583333 0.433962 +vt 0.625000 0.443396 +vt 0.625000 0.433962 +vt 0.666667 0.443396 +vt 0.000000 0.433962 +vt 0.041667 0.443396 +vt 0.000000 0.443396 +vt 0.041667 0.433962 +vt 0.083333 0.443396 +vt 0.125000 0.433962 +vt 0.083333 0.433962 +vt 0.166667 0.443396 +vt 0.125000 0.443396 +vt 0.208333 0.433962 +vt 0.166667 0.433962 +vt 0.250000 0.433962 +vt 0.208333 0.443396 +vt 0.250000 0.443396 +vt 0.903652 0.461671 +vt 0.903652 0.594933 +vt 0.707459 0.594933 +vt 1.000000 0.004717 +vt 0.888889 0.004717 +vt 0.888889 -0.000000 +vt 0.888889 0.231132 +vt 1.000000 0.231132 +vt 0.888889 0.235849 +vt 1.000000 0.080189 +vt 0.888889 0.004717 +vt 0.678877 0.708687 +vt 0.678877 0.668671 +vt 0.737790 0.668671 +vt 0.678877 0.708687 +vt 0.678877 0.668671 +vt 0.737790 0.668671 +vt 0.678877 0.708687 +vt 0.678877 0.668671 +vt 0.737790 0.668671 +vt 1.000000 0.004717 +vt 0.888889 0.004717 +vt 0.888889 -0.000000 +vt 0.888889 0.231132 +vt 1.000000 0.231132 +vt 0.888889 0.235849 +vt 1.000000 0.080189 +vt 0.888889 0.004717 +vt 1.000000 0.004717 +vt 0.888889 0.004717 +vt 0.888889 -0.000000 +vt 0.888889 0.231132 +vt 1.000000 0.231132 +vt 0.888889 0.235849 +vt 1.000000 0.080189 +vt 0.888889 0.004717 +vt 1.000000 0.004717 +vt 0.888889 0.004717 +vt 0.888889 -0.000000 +vt 0.888889 0.231132 +vt 1.000000 0.231132 +vt 0.888889 0.235849 +vt 1.000000 0.080189 +vt 0.888889 0.004717 +vt 0.000000 0.462264 +vt 0.746820 0.677851 +vt 0.737790 0.708687 +vt 0.749991 0.688679 +vt 0.746820 0.699508 +vt 0.724275 0.714821 +vt 0.708333 0.716975 +vt 0.692392 0.714821 +vt 0.669847 0.699508 +vt 0.666676 0.688679 +vt 0.669847 0.677851 +vt 0.692392 0.662537 +vt 0.708333 0.660383 +vt 0.724275 0.662537 +vt 0.666667 0.433962 +vt 0.933724 0.492241 +vt 0.944284 0.528302 +vt 0.933724 0.564363 +vt 0.858645 0.615360 +vt 0.805556 0.622533 +vt 0.752466 0.615360 +vt 0.677387 0.564362 +vt 0.666827 0.528302 +vt 0.677387 0.492241 +vt 0.707459 0.461671 +vt 0.752466 0.441244 +vt 0.805556 0.434071 +vt 0.858645 0.441244 +vt 0.888889 0.231132 +vt 0.746820 0.677851 +vt 0.737790 0.708687 +vt 0.749991 0.688679 +vt 0.746820 0.699508 +vt 0.724275 0.714821 +vt 0.708333 0.716975 +vt 0.692392 0.714821 +vt 0.669847 0.699508 +vt 0.666676 0.688679 +vt 0.669847 0.677851 +vt 0.692392 0.662537 +vt 0.708333 0.660383 +vt 0.724275 0.662537 +vt 0.746820 0.677851 +vt 0.737790 0.708687 +vt 0.749991 0.688679 +vt 0.746820 0.699508 +vt 0.724275 0.714821 +vt 0.708333 0.716975 +vt 0.692392 0.714821 +vt 0.669847 0.699508 +vt 0.666676 0.688679 +vt 0.669847 0.677851 +vt 0.692392 0.662537 +vt 0.708333 0.660383 +vt 0.724275 0.662537 +vt 0.746820 0.677851 +vt 0.737790 0.708687 +vt 0.749991 0.688679 +vt 0.746820 0.699508 +vt 0.724275 0.714821 +vt 0.708333 0.716975 +vt 0.692392 0.714821 +vt 0.669847 0.699508 +vt 0.666676 0.688679 +vt 0.669847 0.677851 +vt 0.692392 0.662537 +vt 0.708333 0.660383 +vt 0.724275 0.662537 +vt 0.888889 0.231132 +vt 0.888889 0.231132 +vt 0.888889 0.231132 +vt -0.000000 0.358491 +vt 0.055556 0.000000 +vt 0.055556 0.358491 +vt 0.583333 0.698113 +vt 0.541667 0.811321 +vt 0.541667 0.698113 +vt 0.250000 0.698113 +vt 0.208333 0.811321 +vt 0.208333 0.698113 +vt 0.625000 0.698113 +vt 0.583333 0.811321 +vt 0.291667 0.698113 +vt 0.250000 0.811321 +vt 0.666667 0.698113 +vt 0.625000 0.811321 +vt 0.326389 0.811321 +vt 0.291667 0.811321 +vt 0.041667 0.698113 +vt 0.000000 0.811321 +vt -0.000000 0.698113 +vt 0.375000 0.698113 +vt 0.333333 0.811321 +vt 0.333333 0.698113 +vt 0.083333 0.698113 +vt 0.041667 0.811321 +vt 0.416667 0.698113 +vt 0.375000 0.811321 +vt 0.125000 0.698113 +vt 0.083333 0.811321 +vt 0.458333 0.698113 +vt 0.416667 0.811321 +vt 0.166667 0.698113 +vt 0.125000 0.811321 +vt 0.500000 0.811321 +vt 0.500000 0.698113 +vt 0.458333 0.811321 +vt 0.166667 0.811321 +vt 0.388889 0.358491 +vt 0.444444 0.000000 +vt 0.444444 0.358491 +vt 0.576389 0.811321 +vt 0.562500 1.000000 +vt 0.618056 0.811321 +vt 0.604167 1.000000 +vt 0.659722 0.811321 +vt 0.645833 1.000000 +vt 0.034722 0.811321 +vt 0.020833 1.000000 +vt 0.076389 0.811321 +vt 0.062500 1.000000 +vt 0.118056 0.811321 +vt 0.104167 1.000000 +vt 0.159722 0.811321 +vt 0.145833 1.000000 +vt 0.194444 0.811321 +vt 0.187500 1.000000 +vt 0.243056 0.811321 +vt 0.229167 1.000000 +vt 0.284722 0.811321 +vt 0.270833 1.000000 +vt 0.312500 1.000000 +vt 0.368056 0.811321 +vt 0.354167 1.000000 +vt 0.409722 0.811321 +vt 0.395833 1.000000 +vt 0.451389 0.811321 +vt 0.437500 1.000000 +vt 0.493056 0.811321 +vt 0.479167 1.000000 +vt 0.534722 0.811321 +vt 0.520833 1.000000 +vt 0.833333 0.358491 +vt 0.888889 0.000000 +vt 0.888889 0.358491 +vt 0.333333 0.358491 +vt 0.388889 -0.000000 +vt 0.777778 0.358491 +vt 0.833333 0.000000 +vt 0.277778 0.358491 +vt 0.333333 -0.000000 +vt 0.722222 0.358491 +vt 0.777778 0.000000 +vt 0.222222 0.358491 +vt 0.277778 0.000000 +vt 0.611111 0.358491 +vt 0.666667 0.000000 +vt 0.666667 0.358491 +vt 0.729167 0.000000 +vt 0.166667 0.358491 +vt 0.222222 -0.000000 +vt 0.555556 0.358491 +vt 0.611111 0.000000 +vt 0.708333 0.641509 +vt 0.694444 0.660377 +vt 0.694444 0.641509 +vt 0.680556 0.641509 +vt 0.680556 0.660377 +vt 0.666667 0.660377 +vt 0.666667 0.641509 +vt 0.875000 0.641509 +vt 0.888889 0.660377 +vt 0.875000 0.660377 +vt 0.861111 0.660377 +vt 0.861111 0.641509 +vt 0.847222 0.660377 +vt 0.847222 0.641509 +vt 0.833333 0.660377 +vt 0.833333 0.641509 +vt 0.819444 0.660377 +vt 0.819444 0.641509 +vt 0.805556 0.660377 +vt 0.805556 0.641509 +vt 0.791667 0.641509 +vt 0.791667 0.660377 +vt 0.777778 0.660377 +vt 0.777778 0.641509 +vt 0.763889 0.660377 +vt 0.763889 0.641509 +vt 0.750000 0.660377 +vt 0.750000 0.641509 +vt 0.736111 0.641509 +vt 0.736111 0.660377 +vt 0.722222 0.641509 +vt 0.722222 0.660377 +vt 0.819444 0.622642 +vt 0.805556 0.622642 +vt 0.694444 0.622642 +vt 0.680556 0.622642 +vt 0.791667 0.622642 +vt 0.666667 0.622642 +vt 0.777778 0.622642 +vt 0.763889 0.622642 +vt 0.888889 0.622642 +vt 0.875000 0.622642 +vt 0.750000 0.622642 +vt 0.861111 0.622642 +vt 0.736111 0.622642 +vt 0.847222 0.622642 +vt 0.722222 0.622642 +vt 0.833333 0.622642 +vt 0.708333 0.622642 +vt 0.708333 0.660377 +vt 0.555556 0.433962 +vt 0.611111 0.433962 +vt 0.500000 0.000000 +vt 0.500000 0.358491 +vt 0.166667 0.433962 +vt 0.111111 0.358491 +vt 0.500000 0.433962 +vt 0.055556 0.433962 +vt 0.111111 0.433962 +vt 0.444444 0.433962 +vt 0.833333 0.433962 +vt 0.888889 0.433962 +vt 0.333333 0.433962 +vt 0.388889 0.433962 +vt 0.777778 0.433962 +vt 0.722222 0.433962 +vt 0.222222 0.433962 +vt 0.277778 0.433962 +vt 0.666667 0.433962 +vt 0.166667 -0.000000 +vt 0.555556 -0.000000 +vt 0.111111 -0.000000 +vt 0.847222 0.716981 +vt 0.937500 0.900943 +vt 0.847222 0.900943 +vt 0.756944 0.716981 +vt 0.756944 0.900943 +vt 0.666667 0.716981 +vt 0.666667 0.900943 +vt 0.708333 0.641509 +vt 0.694444 0.660377 +vt 0.694444 0.641509 +vt 0.680556 0.641509 +vt 0.680556 0.660377 +vt 0.666667 0.660377 +vt 0.666667 0.641509 +vt 0.875000 0.641509 +vt 0.888889 0.660377 +vt 0.875000 0.660377 +vt 0.861111 0.660377 +vt 0.861111 0.641509 +vt 0.847222 0.660377 +vt 0.847222 0.641509 +vt 0.833333 0.660377 +vt 0.833333 0.641509 +vt 0.819444 0.641509 +vt 0.819444 0.660377 +vt 0.805556 0.660377 +vt 0.805556 0.641509 +vt 0.791667 0.641509 +vt 0.791667 0.660377 +vt 0.777778 0.641509 +vt 0.777778 0.660377 +vt 0.763889 0.660377 +vt 0.763889 0.641509 +vt 0.750000 0.641509 +vt 0.750000 0.660377 +vt 0.736111 0.641509 +vt 0.736111 0.660377 +vt 0.722222 0.641509 +vt 0.722222 0.660377 +vt 0.819444 0.622642 +vt 0.805556 0.622642 +vt 0.694444 0.622642 +vt 0.680556 0.622642 +vt 0.791667 0.622642 +vt 0.666667 0.622642 +vt 0.777778 0.622642 +vt 0.763889 0.622642 +vt 0.888889 0.622642 +vt 0.875000 0.622642 +vt 0.750000 0.622642 +vt 0.861111 0.622642 +vt 0.736111 0.622642 +vt 0.847222 0.622642 +vt 0.722222 0.622642 +vt 0.833333 0.622642 +vt 0.708333 0.622642 +vt 0.708333 0.660377 +vt 0.708333 0.641509 +vt 0.694444 0.660377 +vt 0.694444 0.641509 +vt 0.680556 0.641509 +vt 0.680556 0.660377 +vt 0.666667 0.660377 +vt 0.666667 0.641509 +vt 0.875000 0.641509 +vt 0.888889 0.660377 +vt 0.875000 0.660377 +vt 0.861111 0.660377 +vt 0.861111 0.641509 +vt 0.847222 0.660377 +vt 0.847222 0.641509 +vt 0.833333 0.660377 +vt 0.833333 0.641509 +vt 0.819444 0.641509 +vt 0.819444 0.660377 +vt 0.805556 0.660377 +vt 0.805556 0.641509 +vt 0.791667 0.641509 +vt 0.791667 0.660377 +vt 0.777778 0.660377 +vt 0.777778 0.641509 +vt 0.763889 0.660377 +vt 0.763889 0.641509 +vt 0.750000 0.660377 +vt 0.750000 0.641509 +vt 0.736111 0.641509 +vt 0.736111 0.660377 +vt 0.722222 0.641509 +vt 0.722222 0.660377 +vt 0.819444 0.622642 +vt 0.805556 0.622642 +vt 0.694444 0.622642 +vt 0.680556 0.622642 +vt 0.791667 0.622642 +vt 0.666667 0.622642 +vt 0.777778 0.622642 +vt 0.763889 0.622642 +vt 0.888889 0.622642 +vt 0.875000 0.622642 +vt 0.750000 0.622642 +vt 0.861111 0.622642 +vt 0.736111 0.622642 +vt 0.847222 0.622642 +vt 0.722222 0.622642 +vt 0.833333 0.622642 +vt 0.708333 0.622642 +vt 0.708333 0.660377 +vt 0.708333 0.641509 +vt 0.694444 0.660377 +vt 0.694444 0.641509 +vt 0.680556 0.641509 +vt 0.680556 0.660377 +vt 0.666667 0.660377 +vt 0.666667 0.641509 +vt 0.875000 0.641509 +vt 0.888889 0.660377 +vt 0.875000 0.660377 +vt 0.861111 0.660377 +vt 0.861111 0.641509 +vt 0.847222 0.660377 +vt 0.847222 0.641509 +vt 0.833333 0.660377 +vt 0.833333 0.641509 +vt 0.819444 0.641509 +vt 0.819444 0.660377 +vt 0.805556 0.660377 +vt 0.805556 0.641509 +vt 0.791667 0.641509 +vt 0.791667 0.660377 +vt 0.777778 0.660377 +vt 0.777778 0.641509 +vt 0.763889 0.660377 +vt 0.763889 0.641509 +vt 0.750000 0.660377 +vt 0.750000 0.641509 +vt 0.736111 0.641509 +vt 0.736111 0.660377 +vt 0.722222 0.641509 +vt 0.722222 0.660377 +vt 0.819444 0.622642 +vt 0.805556 0.622642 +vt 0.694444 0.622642 +vt 0.680556 0.622642 +vt 0.791667 0.622642 +vt 0.666667 0.622642 +vt 0.777778 0.622642 +vt 0.763889 0.622642 +vt 0.888889 0.622642 +vt 0.875000 0.622642 +vt 0.750000 0.622642 +vt 0.861111 0.622642 +vt 0.736111 0.622642 +vt 0.847222 0.622642 +vt 0.722222 0.622642 +vt 0.833333 0.622642 +vt 0.708333 0.622642 +vt 0.708333 0.660377 +vt 0.847222 0.716981 +vt 0.937500 0.900943 +vt 0.847222 0.900943 +vt 0.756944 0.716981 +vt 0.756944 0.900943 +vt 0.666667 0.716981 +vt 0.666667 0.900943 +vt 0.000000 0.000000 +vt 0.888889 0.641509 +vt 0.937500 0.716981 +vt 0.888889 0.641509 +vt 0.888889 0.641509 +vt 0.888889 0.641509 +vt 0.937500 0.716981 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.6325 0.4472 -0.6325 +vn 0.7498 0.0000 0.6616 +vn -0.6616 0.0000 -0.7498 +vn -0.6325 0.4472 0.6325 +vn -0.7498 0.0000 -0.6616 +vn 0.6616 0.0000 0.7498 +vn -0.6325 0.4472 -0.6325 +vn 0.6616 0.0000 -0.7498 +vn -0.7498 0.0000 0.6616 +vn 0.6325 0.4472 0.6325 +vn -0.6616 0.0000 0.7498 +vn 0.7498 0.0000 -0.6616 +vn -1.0000 0.0000 -0.0000 +vn -0.9239 0.0000 0.3827 +vn -0.7047 0.0830 -0.7047 +vn -0.3814 0.0830 -0.9207 +vn 0.7047 0.0830 0.7047 +vn 0.3814 0.0830 0.9207 +vn -0.9207 0.0830 -0.3814 +vn 0.9207 0.0830 0.3814 +vn -0.9965 0.0830 -0.0000 +vn 0.9965 0.0830 0.0000 +vn -0.9207 0.0830 0.3814 +vn 0.9207 0.0830 -0.3814 +vn -0.7047 0.0830 0.7047 +vn 0.7047 0.0830 -0.7047 +vn -0.3814 0.0830 0.9207 +vn 0.3814 0.0830 -0.9207 +vn -0.0000 0.0830 0.9965 +vn -0.0000 0.0830 -0.9965 +vn 0.9239 0.0000 0.3827 +vn 1.0000 0.0000 -0.0000 +vn -0.3612 0.3304 -0.8720 +vn -0.6674 0.3304 -0.6674 +vn -0.8720 0.3304 -0.3612 +vn -0.9439 0.3304 0.0000 +vn -0.8720 0.3304 0.3612 +vn -0.6674 0.3304 0.6674 +vn -0.3612 0.3304 0.8720 +vn 0.0000 0.3304 0.9439 +vn 0.3612 0.3304 0.8720 +vn 0.6674 0.3304 0.6674 +vn 0.8720 0.3304 0.3612 +vn 0.9439 0.3304 0.0000 +vn 0.8720 0.3304 -0.3612 +vn 0.6674 0.3304 -0.6674 +vn 0.3612 0.3304 -0.8720 +vn -0.0000 0.3304 -0.9439 +vn -0.9239 0.0000 -0.3827 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.3827 0.0000 0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.0000 0.0000 1.0000 +vn 0.3827 0.0000 -0.9239 +vn 0.0000 0.0000 -1.0000 +vn -0.3827 0.0000 0.9239 +vn 0.7071 0.0000 -0.7071 +vn 0.8263 0.4472 0.3423 +vn 0.3423 0.4472 0.8263 +vn -0.0000 0.4472 0.8944 +vn -0.3423 0.4472 0.8263 +vn -0.8263 0.4472 0.3423 +vn -0.8944 0.4472 0.0000 +vn -0.8263 0.4472 -0.3423 +vn -0.3423 0.4472 -0.8263 +vn -0.0000 0.4472 -0.8944 +vn 0.3423 0.4472 -0.8263 +vn 0.8263 0.4472 -0.3423 +vn 0.8944 0.4472 -0.0000 +vn -0.7071 0.0000 0.7071 +vn 0.9239 0.0000 -0.3827 +vn 0.6860 0.2425 -0.6860 +vn 0.3713 0.2425 -0.8963 +vn -0.3713 0.2425 0.8963 +vn -0.6860 0.2425 0.6860 +vn 0.8963 0.2425 -0.3713 +vn -0.8963 0.2425 0.3713 +vn 0.9701 0.2425 -0.0000 +vn -0.9701 0.2425 -0.0000 +vn 0.8963 0.2425 0.3713 +vn -0.8963 0.2425 -0.3713 +vn 0.6860 0.2425 0.6860 +vn -0.6860 0.2425 -0.6860 +vn 0.3713 0.2425 0.8963 +vn -0.3713 0.2425 -0.8963 +vn 0.0000 0.2425 0.9701 +vn 0.0000 0.2425 -0.9701 +vn 0.5556 0.0000 -0.8315 +vn 0.9808 0.0000 -0.1951 +vn -0.5556 0.0000 0.8315 +vn -0.9808 0.0000 0.1951 +s off +f 141/1/1 156/2/1 157/3/1 +f 132/4/1 149/5/1 133/6/1 +f 139/7/1 156/2/1 140/8/1 +f 131/9/1 148/10/1 132/4/1 +f 139/7/1 154/11/1 155/12/1 +f 130/13/1 161/14/1 146/15/1 +f 131/9/1 146/15/1 147/16/1 +f 137/17/1 154/11/1 138/18/1 +f 144/19/1 161/14/1 145/20/1 +f 136/21/1 153/22/1 137/17/1 +f 144/19/1 159/23/1 160/24/1 +f 135/25/1 152/26/1 136/21/1 +f 143/27/1 158/28/1 159/23/1 +f 134/29/1 151/30/1 135/25/1 +f 142/31/1 157/3/1 158/28/1 +f 85/32/1 89/33/1 93/34/1 +f 133/6/1 150/35/1 134/36/1 +f 126/37/2 173/38/2 125/39/2 +f 127/40/2 174/41/2 126/37/2 +f 128/42/2 175/43/2 127/40/2 +f 129/44/2 176/45/2 128/42/2 +f 114/46/2 177/47/2 129/44/2 +f 115/48/2 162/49/2 114/46/2 +f 115/48/2 164/50/2 163/51/2 +f 116/52/2 165/53/2 164/50/2 +f 117/54/2 166/55/2 165/53/2 +f 118/56/2 167/57/2 166/58/2 +f 119/59/2 168/60/2 167/57/2 +f 121/61/2 168/60/2 120/62/2 +f 121/61/2 170/63/2 169/64/2 +f 123/65/2 170/63/2 122/66/2 +f 124/67/2 171/68/2 123/65/2 +f 125/39/2 172/69/2 124/67/2 +f 12/70/1 112/71/1 4/72/1 +f 188/73/1 189/74/1 190/75/1 +f 186/76/3 191/77/3 187/78/3 +f 189/74/4 191/79/4 186/76/4 +f 190/80/5 191/79/5 188/73/5 +f 229/81/1 233/82/1 237/83/1 +f 277/84/1 281/85/1 285/86/1 +f 325/87/1 329/88/1 333/89/1 +f 338/90/1 339/91/1 340/92/1 +f 336/93/6 341/94/6 337/95/6 +f 339/91/7 341/96/7 336/93/7 +f 340/97/8 341/96/8 338/90/8 +f 344/98/1 345/99/1 346/100/1 +f 342/101/9 347/102/9 343/103/9 +f 345/99/10 347/104/10 342/101/10 +f 346/105/11 347/104/11 344/98/11 +f 350/106/1 351/107/1 352/108/1 +f 348/109/12 353/110/12 349/111/12 +f 351/107/13 353/112/13 348/109/13 +f 352/113/14 353/112/14 350/106/14 +f 141/1/1 140/8/1 156/2/1 +f 132/4/1 148/10/1 149/5/1 +f 139/7/1 155/12/1 156/2/1 +f 131/9/1 147/16/1 148/10/1 +f 139/7/1 138/18/1 154/11/1 +f 130/13/1 145/20/1 161/14/1 +f 131/9/1 130/13/1 146/15/1 +f 137/17/1 153/22/1 154/11/1 +f 144/19/1 160/24/1 161/14/1 +f 136/21/1 152/26/1 153/22/1 +f 144/19/1 143/27/1 159/23/1 +f 135/25/1 151/30/1 152/26/1 +f 143/27/1 142/31/1 158/28/1 +f 134/29/1 150/114/1 151/30/1 +f 142/31/1 141/1/1 157/3/1 +f 93/34/1 94/115/1 81/116/1 +f 94/115/1 95/117/1 81/116/1 +f 95/117/1 80/118/1 81/116/1 +f 81/116/1 82/119/1 83/120/1 +f 83/120/1 84/121/1 85/32/1 +f 85/32/1 86/122/1 89/33/1 +f 86/122/1 87/123/1 89/33/1 +f 87/123/1 88/124/1 89/33/1 +f 89/33/1 90/125/1 91/126/1 +f 91/126/1 92/127/1 89/33/1 +f 92/127/1 93/34/1 89/33/1 +f 81/116/1 83/120/1 93/34/1 +f 83/120/1 85/32/1 93/34/1 +f 133/6/1 149/5/1 150/35/1 +f 126/37/2 174/41/2 173/38/2 +f 127/40/2 175/43/2 174/41/2 +f 128/42/2 176/45/2 175/43/2 +f 129/44/2 177/47/2 176/45/2 +f 114/46/2 162/49/2 177/47/2 +f 115/48/2 163/51/2 162/49/2 +f 115/48/2 116/52/2 164/50/2 +f 116/52/2 117/54/2 165/53/2 +f 117/54/2 118/128/2 166/55/2 +f 118/56/2 119/59/2 167/57/2 +f 119/59/2 120/62/2 168/60/2 +f 121/61/2 169/64/2 168/60/2 +f 121/61/2 122/66/2 170/63/2 +f 123/65/2 171/68/2 170/63/2 +f 124/67/2 172/69/2 171/68/2 +f 125/39/2 173/38/2 172/69/2 +f 12/70/1 13/129/1 14/130/1 +f 14/130/1 113/131/1 12/70/1 +f 113/131/1 112/71/1 12/70/1 +f 112/71/1 1/132/1 2/133/1 +f 2/133/1 3/134/1 4/72/1 +f 4/72/1 5/135/1 6/136/1 +f 6/136/1 7/137/1 8/138/1 +f 8/138/1 9/139/1 10/140/1 +f 10/140/1 11/141/1 12/70/1 +f 112/71/1 2/133/1 4/72/1 +f 4/72/1 6/136/1 12/70/1 +f 6/136/1 8/138/1 12/70/1 +f 8/138/1 10/140/1 12/70/1 +f 189/74/4 188/73/4 191/79/4 +f 190/80/5 187/142/5 191/79/5 +f 237/83/1 238/143/1 225/144/1 +f 238/143/1 239/145/1 225/144/1 +f 239/145/1 224/146/1 225/144/1 +f 225/144/1 226/147/1 227/148/1 +f 227/148/1 228/149/1 229/81/1 +f 229/81/1 230/150/1 233/82/1 +f 230/150/1 231/151/1 233/82/1 +f 231/151/1 232/152/1 233/82/1 +f 233/82/1 234/153/1 235/154/1 +f 235/154/1 236/155/1 233/82/1 +f 236/155/1 237/83/1 233/82/1 +f 225/144/1 227/148/1 237/83/1 +f 227/148/1 229/81/1 237/83/1 +f 285/86/1 286/156/1 273/157/1 +f 286/156/1 287/158/1 273/157/1 +f 287/158/1 272/159/1 273/157/1 +f 273/157/1 274/160/1 275/161/1 +f 275/161/1 276/162/1 277/84/1 +f 277/84/1 278/163/1 281/85/1 +f 278/163/1 279/164/1 281/85/1 +f 279/164/1 280/165/1 281/85/1 +f 281/85/1 282/166/1 283/167/1 +f 283/167/1 284/168/1 281/85/1 +f 284/168/1 285/86/1 281/85/1 +f 273/157/1 275/161/1 285/86/1 +f 275/161/1 277/84/1 285/86/1 +f 333/89/1 334/169/1 321/170/1 +f 334/169/1 335/171/1 321/170/1 +f 335/171/1 320/172/1 321/170/1 +f 321/170/1 322/173/1 323/174/1 +f 323/174/1 324/175/1 325/87/1 +f 325/87/1 326/176/1 329/88/1 +f 326/176/1 327/177/1 329/88/1 +f 327/177/1 328/178/1 329/88/1 +f 329/88/1 330/179/1 331/180/1 +f 331/180/1 332/181/1 329/88/1 +f 332/181/1 333/89/1 329/88/1 +f 321/170/1 323/174/1 333/89/1 +f 323/174/1 325/87/1 333/89/1 +f 339/91/7 338/90/7 341/96/7 +f 340/97/8 337/182/8 341/96/8 +f 345/99/10 344/98/10 347/104/10 +f 346/105/11 343/183/11 347/104/11 +f 351/107/13 350/106/13 353/112/13 +f 352/113/14 349/184/14 353/112/14 +s 1 +f 100/185/15 9/186/16 101/187/16 +f 17/188/17 32/189/18 16/190/18 +f 25/191/19 40/192/20 24/193/20 +f 18/194/21 33/195/17 17/188/17 +f 26/196/22 41/197/19 25/191/19 +f 19/198/23 34/199/21 18/194/21 +f 26/196/22 43/200/24 42/201/22 +f 20/202/25 35/203/23 19/204/23 +f 28/205/26 43/206/24 27/207/24 +f 21/208/27 36/209/25 20/202/25 +f 29/210/28 44/211/26 28/205/26 +f 22/212/29 37/213/27 21/208/27 +f 30/214/30 45/215/28 29/210/28 +f 23/216/31 38/217/29 22/212/29 +f 16/190/18 31/218/32 15/219/32 +f 15/219/32 46/220/30 30/214/30 +f 24/193/20 39/221/31 23/216/31 +f 107/222/33 2/223/34 108/224/34 +f 32/189/35 33/225/36 47/226/2 +f 33/195/36 34/227/37 47/228/2 +f 34/199/37 35/229/38 47/230/2 +f 35/203/38 36/231/39 47/232/2 +f 36/209/39 37/233/40 47/234/2 +f 37/213/40 38/235/41 47/236/2 +f 38/217/41 39/237/42 47/238/2 +f 39/221/42 40/239/43 47/240/2 +f 40/192/43 41/241/44 47/242/2 +f 41/197/44 42/243/45 47/244/2 +f 42/201/45 43/200/46 47/245/2 +f 43/206/46 44/246/47 47/247/2 +f 44/211/47 45/248/48 47/249/2 +f 45/215/48 46/250/49 47/251/2 +f 46/220/49 31/252/50 47/253/2 +f 31/218/50 32/254/35 47/255/2 +f 99/256/51 10/257/15 100/258/15 +f 106/259/52 3/260/33 107/222/33 +f 98/261/53 11/262/51 99/256/51 +f 105/263/54 4/264/52 106/259/52 +f 97/265/55 12/266/53 98/261/53 +f 104/267/56 5/268/54 105/263/54 +f 111/269/57 14/270/58 96/271/58 +f 96/271/58 13/272/55 97/265/55 +f 103/273/59 6/274/56 104/267/56 +f 110/275/60 113/276/57 111/269/57 +f 68/277/61 53/278/12 69/279/12 +f 70/280/62 53/278/12 54/281/62 +f 70/280/62 55/282/63 71/283/63 +f 72/284/64 55/285/63 56/286/64 +f 72/284/64 57/287/6 73/288/6 +f 73/288/6 58/289/65 74/290/65 +f 74/290/65 59/291/66 75/292/66 +f 75/292/66 60/293/67 76/294/67 +f 76/294/67 61/295/9 77/296/9 +f 79/297/68 61/295/9 62/298/68 +f 79/297/68 63/299/69 78/300/69 +f 78/300/69 48/301/70 64/302/70 +f 64/302/70 49/303/3 65/304/3 +f 66/305/71 49/303/3 50/306/71 +f 67/307/72 50/306/71 51/308/72 +f 92/309/51 77/296/53 93/310/53 +f 85/311/52 70/280/54 86/312/54 +f 93/310/53 79/297/55 94/313/55 +f 86/312/54 71/283/56 87/314/56 +f 95/315/58 64/302/57 80/316/57 +f 94/313/55 78/300/58 95/315/58 +f 87/317/56 72/284/59 88/318/59 +f 80/316/57 65/304/60 81/319/60 +f 88/318/59 73/288/73 89/320/73 +f 81/319/60 66/305/74 82/321/74 +f 89/320/73 74/290/16 90/322/16 +f 82/321/74 67/307/34 83/323/34 +f 90/322/16 75/292/15 91/324/15 +f 83/323/34 68/277/33 84/325/33 +f 91/324/15 76/294/51 92/309/51 +f 84/325/33 69/279/52 85/311/52 +f 67/307/72 52/326/61 68/277/61 +f 128/327/75 111/269/76 129/328/76 +f 108/224/34 1/329/74 109/330/74 +f 147/16/55 164/50/53 148/10/53 +f 155/12/54 172/69/52 156/2/52 +f 148/10/53 165/53/51 149/5/51 +f 156/2/52 173/38/33 157/3/33 +f 149/5/51 166/55/15 150/35/15 +f 157/3/33 174/41/34 158/28/34 +f 150/114/15 167/57/16 151/30/16 +f 158/28/34 175/43/74 159/23/74 +f 151/30/16 168/60/73 152/26/73 +f 159/23/74 176/45/60 160/24/60 +f 152/26/73 169/64/59 153/22/59 +f 160/24/60 177/47/57 161/14/57 +f 153/22/59 170/63/56 154/11/56 +f 146/15/58 163/51/55 147/16/55 +f 161/14/57 162/49/58 146/15/58 +f 154/11/56 171/68/54 155/12/54 +f 121/331/77 102/332/78 103/273/77 +f 127/333/79 110/275/75 128/327/75 +f 119/334/80 102/332/78 120/335/78 +f 126/336/81 109/330/79 127/333/79 +f 119/334/80 100/185/82 101/187/80 +f 126/336/81 107/222/83 108/224/81 +f 117/337/84 100/258/82 118/338/82 +f 124/339/85 107/222/83 125/340/83 +f 116/341/86 99/256/84 117/337/84 +f 124/339/85 105/263/87 106/259/85 +f 115/342/88 98/261/86 116/341/86 +f 122/343/89 105/263/87 123/344/87 +f 114/345/90 111/269/76 96/271/90 +f 114/345/90 97/265/88 115/342/88 +f 121/331/77 104/267/89 122/343/89 +f 102/332/73 7/346/59 103/273/59 +f 109/330/74 112/347/60 110/275/60 +f 101/187/16 8/348/73 102/332/73 +f 141/1/33 27/207/34 26/196/33 +f 142/31/34 28/205/74 27/207/34 +f 143/27/74 29/210/60 28/205/74 +f 144/19/60 30/214/57 29/210/60 +f 145/20/57 15/219/58 30/214/57 +f 130/13/58 16/190/55 15/219/58 +f 131/9/55 17/188/53 16/190/55 +f 132/4/53 18/194/51 17/188/53 +f 133/6/51 19/198/15 18/194/51 +f 134/29/15 20/202/16 19/204/15 +f 135/25/16 21/208/73 20/202/16 +f 136/21/73 22/212/59 21/208/73 +f 137/17/59 23/216/56 22/212/59 +f 138/18/56 24/193/54 23/216/56 +f 139/7/54 25/191/52 24/193/54 +f 140/8/52 26/196/33 25/191/52 +f 180/349/60 182/350/91 183/351/60 +f 179/352/74 183/351/60 184/353/74 +f 178/354/92 184/353/74 185/355/92 +f 212/356/61 197/357/12 213/358/12 +f 214/359/62 197/357/12 198/360/62 +f 214/359/62 199/361/63 215/362/63 +f 216/363/64 199/364/63 200/365/64 +f 216/363/64 201/366/6 217/367/6 +f 217/367/6 202/368/65 218/369/65 +f 218/369/65 203/370/66 219/371/66 +f 220/372/67 203/370/66 204/373/67 +f 220/372/67 205/374/9 221/375/9 +f 223/376/68 205/374/9 206/377/68 +f 222/378/69 206/377/68 207/379/69 +f 222/378/69 192/380/70 208/381/70 +f 209/382/3 192/380/70 193/383/3 +f 210/384/71 193/383/3 194/385/71 +f 211/386/72 194/385/71 195/387/72 +f 236/388/51 221/375/53 237/389/53 +f 229/390/52 214/359/54 230/391/54 +f 237/389/53 223/376/55 238/392/55 +f 230/391/54 215/362/56 231/393/56 +f 239/394/58 208/381/57 224/395/57 +f 238/392/55 222/378/58 239/394/58 +f 231/396/56 216/363/59 232/397/59 +f 224/395/57 209/382/60 225/398/60 +f 232/397/59 217/367/73 233/399/73 +f 225/398/60 210/384/74 226/400/74 +f 233/399/73 218/369/16 234/401/16 +f 226/400/74 211/386/34 227/402/34 +f 234/401/16 219/371/15 235/403/15 +f 227/402/34 212/356/33 228/404/33 +f 235/403/15 220/372/51 236/388/51 +f 228/404/33 213/358/52 229/390/52 +f 211/386/72 196/405/61 212/356/61 +f 260/406/61 245/407/12 261/408/12 +f 262/409/62 245/407/12 246/410/62 +f 262/409/62 247/411/63 263/412/63 +f 264/413/64 247/414/63 248/415/64 +f 264/413/64 249/416/6 265/417/6 +f 265/417/6 250/418/65 266/419/65 +f 266/419/65 251/420/66 267/421/66 +f 268/422/67 251/420/66 252/423/67 +f 268/422/67 253/424/9 269/425/9 +f 271/426/68 253/424/9 254/427/68 +f 271/426/68 255/428/69 270/429/69 +f 270/429/69 240/430/70 256/431/70 +f 256/431/70 241/432/3 257/433/3 +f 258/434/71 241/432/3 242/435/71 +f 259/436/72 242/435/71 243/437/72 +f 284/438/51 269/425/53 285/439/53 +f 277/440/52 262/409/54 278/441/54 +f 285/439/53 271/426/55 286/442/55 +f 278/441/54 263/412/56 279/443/56 +f 287/444/58 256/431/57 272/445/57 +f 286/442/55 270/429/58 287/444/58 +f 279/446/56 264/413/59 280/447/59 +f 272/445/57 257/433/60 273/448/60 +f 280/447/59 265/417/73 281/449/73 +f 273/448/60 258/434/74 274/450/74 +f 281/449/73 266/419/16 282/451/16 +f 274/450/74 259/436/34 275/452/34 +f 282/451/16 267/421/15 283/453/15 +f 275/452/34 260/406/33 276/454/33 +f 283/453/15 268/422/51 284/438/51 +f 276/454/33 261/408/52 277/440/52 +f 259/436/72 244/455/61 260/406/61 +f 308/456/61 293/457/12 309/458/12 +f 310/459/62 293/457/12 294/460/62 +f 310/459/62 295/461/63 311/462/63 +f 312/463/64 295/464/63 296/465/64 +f 312/463/64 297/466/6 313/467/6 +f 313/467/6 298/468/65 314/469/65 +f 314/469/65 299/470/66 315/471/66 +f 316/472/67 299/470/66 300/473/67 +f 316/472/67 301/474/9 317/475/9 +f 319/476/68 301/474/9 302/477/68 +f 319/476/68 303/478/69 318/479/69 +f 318/479/69 288/480/70 304/481/70 +f 304/481/70 289/482/3 305/483/3 +f 306/484/71 289/482/3 290/485/71 +f 307/486/72 290/485/71 291/487/72 +f 332/488/51 317/475/53 333/489/53 +f 325/490/52 310/459/54 326/491/54 +f 333/489/53 319/476/55 334/492/55 +f 326/491/54 311/462/56 327/493/56 +f 335/494/58 304/481/57 320/495/57 +f 334/492/55 318/479/58 335/494/58 +f 327/496/56 312/463/59 328/497/59 +f 320/495/57 305/483/60 321/498/60 +f 328/497/59 313/467/73 329/499/73 +f 321/498/60 306/484/74 322/500/74 +f 329/499/73 314/469/16 330/501/16 +f 322/500/74 307/486/34 323/502/34 +f 330/501/16 315/471/15 331/503/15 +f 323/502/34 308/456/33 324/504/33 +f 331/503/15 316/472/51 332/488/51 +f 324/504/33 309/458/52 325/490/52 +f 307/486/72 292/505/61 308/456/61 +f 356/506/73 358/507/93 359/508/73 +f 355/509/16 359/508/73 360/510/16 +f 354/511/94 360/510/16 361/512/94 +f 100/185/15 10/513/15 9/186/16 +f 17/188/17 33/225/17 32/189/18 +f 25/191/19 41/241/19 40/192/20 +f 18/194/21 34/227/21 33/195/17 +f 26/196/22 42/243/22 41/197/19 +f 19/198/23 35/229/23 34/199/21 +f 26/196/22 27/207/24 43/200/24 +f 20/202/25 36/231/25 35/203/23 +f 28/205/26 44/246/26 43/206/24 +f 21/208/27 37/233/27 36/209/25 +f 29/210/28 45/248/28 44/211/26 +f 22/212/29 38/235/29 37/213/27 +f 30/214/30 46/250/30 45/215/28 +f 23/216/31 39/237/31 38/217/29 +f 16/190/18 32/254/18 31/218/32 +f 15/219/32 31/252/32 46/220/30 +f 24/193/20 40/239/20 39/221/31 +f 107/222/33 3/260/33 2/223/34 +f 99/256/51 11/262/51 10/257/15 +f 106/259/52 4/264/52 3/260/33 +f 98/261/53 12/266/53 11/262/51 +f 105/263/54 5/268/54 4/264/52 +f 97/265/55 13/272/55 12/266/53 +f 104/267/56 6/274/56 5/268/54 +f 111/269/57 113/276/57 14/270/58 +f 96/271/58 14/270/58 13/272/55 +f 103/273/59 7/346/59 6/274/56 +f 110/275/60 112/347/60 113/276/57 +f 68/277/61 52/326/61 53/278/12 +f 70/280/62 69/279/12 53/278/12 +f 70/280/62 54/281/62 55/282/63 +f 72/284/64 71/514/63 55/285/63 +f 72/284/64 56/286/64 57/287/6 +f 73/288/6 57/287/6 58/289/65 +f 74/290/65 58/289/65 59/291/66 +f 75/292/66 59/291/66 60/293/67 +f 76/294/67 60/293/67 61/295/9 +f 79/297/68 77/296/9 61/295/9 +f 79/297/68 62/298/68 63/299/69 +f 78/300/69 63/299/69 48/301/70 +f 64/302/70 48/301/70 49/303/3 +f 66/305/71 65/304/3 49/303/3 +f 67/307/72 66/305/71 50/306/71 +f 92/309/51 76/294/51 77/296/53 +f 85/311/52 69/279/52 70/280/54 +f 93/310/53 77/296/53 79/297/55 +f 86/312/54 70/280/54 71/283/56 +f 95/315/58 78/300/58 64/302/57 +f 94/313/55 79/297/55 78/300/58 +f 87/317/56 71/514/56 72/284/59 +f 80/316/57 64/302/57 65/304/60 +f 88/318/59 72/284/59 73/288/73 +f 81/319/60 65/304/60 66/305/74 +f 89/320/73 73/288/73 74/290/16 +f 82/321/74 66/305/74 67/307/34 +f 90/322/16 74/290/16 75/292/15 +f 83/323/34 67/307/34 68/277/33 +f 91/324/15 75/292/15 76/294/51 +f 84/325/33 68/277/33 69/279/52 +f 67/307/72 51/308/72 52/326/61 +f 128/327/75 110/275/75 111/269/76 +f 108/224/34 2/223/34 1/329/74 +f 147/16/55 163/51/55 164/50/53 +f 155/12/54 171/68/54 172/69/52 +f 148/10/53 164/50/53 165/53/51 +f 156/2/52 172/69/52 173/38/33 +f 149/5/51 165/53/51 166/55/15 +f 157/3/33 173/38/33 174/41/34 +f 150/114/15 166/58/15 167/57/16 +f 158/28/34 174/41/34 175/43/74 +f 151/30/16 167/57/16 168/60/73 +f 159/23/74 175/43/74 176/45/60 +f 152/26/73 168/60/73 169/64/59 +f 160/24/60 176/45/60 177/47/57 +f 153/22/59 169/64/59 170/63/56 +f 146/15/58 162/49/58 163/51/55 +f 161/14/57 177/47/57 162/49/58 +f 154/11/56 170/63/56 171/68/54 +f 121/331/77 120/335/78 102/332/78 +f 127/333/79 109/330/79 110/275/75 +f 119/334/80 101/187/80 102/332/78 +f 126/336/81 108/224/81 109/330/79 +f 119/334/80 118/56/82 100/185/82 +f 126/336/81 125/340/83 107/222/83 +f 117/337/84 99/256/84 100/258/82 +f 124/339/85 106/259/85 107/222/83 +f 116/341/86 98/261/86 99/256/84 +f 124/339/85 123/344/87 105/263/87 +f 115/342/88 97/265/88 98/261/86 +f 122/343/89 104/267/89 105/263/87 +f 114/345/90 129/328/76 111/269/76 +f 114/345/90 96/271/90 97/265/88 +f 121/331/77 103/273/77 104/267/89 +f 102/332/73 8/348/73 7/346/59 +f 109/330/74 1/329/74 112/347/60 +f 101/187/16 9/186/16 8/348/73 +f 141/1/33 142/31/34 27/207/34 +f 142/31/34 143/27/74 28/205/74 +f 143/27/74 144/19/60 29/210/60 +f 144/19/60 145/20/57 30/214/57 +f 145/20/57 130/13/58 15/219/58 +f 130/13/58 131/9/55 16/190/55 +f 131/9/55 132/4/53 17/188/53 +f 132/4/53 133/6/51 18/194/51 +f 133/6/51 134/36/15 19/198/15 +f 134/29/15 135/25/16 20/202/16 +f 135/25/16 136/21/73 21/208/73 +f 136/21/73 137/17/59 22/212/59 +f 137/17/59 138/18/56 23/216/56 +f 138/18/56 139/7/54 24/193/54 +f 139/7/54 140/8/52 25/191/52 +f 140/8/52 141/1/33 26/196/33 +f 180/349/60 181/515/91 182/350/91 +f 179/352/74 180/349/60 183/351/60 +f 178/354/92 179/352/74 184/353/74 +f 212/356/61 196/405/61 197/357/12 +f 214/359/62 213/358/12 197/357/12 +f 214/359/62 198/360/62 199/361/63 +f 216/363/64 215/516/63 199/364/63 +f 216/363/64 200/365/64 201/366/6 +f 217/367/6 201/366/6 202/368/65 +f 218/369/65 202/368/65 203/370/66 +f 220/372/67 219/371/66 203/370/66 +f 220/372/67 204/373/67 205/374/9 +f 223/376/68 221/375/9 205/374/9 +f 222/378/69 223/376/68 206/377/68 +f 222/378/69 207/379/69 192/380/70 +f 209/382/3 208/381/70 192/380/70 +f 210/384/71 209/382/3 193/383/3 +f 211/386/72 210/384/71 194/385/71 +f 236/388/51 220/372/51 221/375/53 +f 229/390/52 213/358/52 214/359/54 +f 237/389/53 221/375/53 223/376/55 +f 230/391/54 214/359/54 215/362/56 +f 239/394/58 222/378/58 208/381/57 +f 238/392/55 223/376/55 222/378/58 +f 231/396/56 215/516/56 216/363/59 +f 224/395/57 208/381/57 209/382/60 +f 232/397/59 216/363/59 217/367/73 +f 225/398/60 209/382/60 210/384/74 +f 233/399/73 217/367/73 218/369/16 +f 226/400/74 210/384/74 211/386/34 +f 234/401/16 218/369/16 219/371/15 +f 227/402/34 211/386/34 212/356/33 +f 235/403/15 219/371/15 220/372/51 +f 228/404/33 212/356/33 213/358/52 +f 211/386/72 195/387/72 196/405/61 +f 260/406/61 244/455/61 245/407/12 +f 262/409/62 261/408/12 245/407/12 +f 262/409/62 246/410/62 247/411/63 +f 264/413/64 263/517/63 247/414/63 +f 264/413/64 248/415/64 249/416/6 +f 265/417/6 249/416/6 250/418/65 +f 266/419/65 250/418/65 251/420/66 +f 268/422/67 267/421/66 251/420/66 +f 268/422/67 252/423/67 253/424/9 +f 271/426/68 269/425/9 253/424/9 +f 271/426/68 254/427/68 255/428/69 +f 270/429/69 255/428/69 240/430/70 +f 256/431/70 240/430/70 241/432/3 +f 258/434/71 257/433/3 241/432/3 +f 259/436/72 258/434/71 242/435/71 +f 284/438/51 268/422/51 269/425/53 +f 277/440/52 261/408/52 262/409/54 +f 285/439/53 269/425/53 271/426/55 +f 278/441/54 262/409/54 263/412/56 +f 287/444/58 270/429/58 256/431/57 +f 286/442/55 271/426/55 270/429/58 +f 279/446/56 263/517/56 264/413/59 +f 272/445/57 256/431/57 257/433/60 +f 280/447/59 264/413/59 265/417/73 +f 273/448/60 257/433/60 258/434/74 +f 281/449/73 265/417/73 266/419/16 +f 274/450/74 258/434/74 259/436/34 +f 282/451/16 266/419/16 267/421/15 +f 275/452/34 259/436/34 260/406/33 +f 283/453/15 267/421/15 268/422/51 +f 276/454/33 260/406/33 261/408/52 +f 259/436/72 243/437/72 244/455/61 +f 308/456/61 292/505/61 293/457/12 +f 310/459/62 309/458/12 293/457/12 +f 310/459/62 294/460/62 295/461/63 +f 312/463/64 311/518/63 295/464/63 +f 312/463/64 296/465/64 297/466/6 +f 313/467/6 297/466/6 298/468/65 +f 314/469/65 298/468/65 299/470/66 +f 316/472/67 315/471/66 299/470/66 +f 316/472/67 300/473/67 301/474/9 +f 319/476/68 317/475/9 301/474/9 +f 319/476/68 302/477/68 303/478/69 +f 318/479/69 303/478/69 288/480/70 +f 304/481/70 288/480/70 289/482/3 +f 306/484/71 305/483/3 289/482/3 +f 307/486/72 306/484/71 290/485/71 +f 332/488/51 316/472/51 317/475/53 +f 325/490/52 309/458/52 310/459/54 +f 333/489/53 317/475/53 319/476/55 +f 326/491/54 310/459/54 311/462/56 +f 335/494/58 318/479/58 304/481/57 +f 334/492/55 319/476/55 318/479/58 +f 327/496/56 311/518/56 312/463/59 +f 320/495/57 304/481/57 305/483/60 +f 328/497/59 312/463/59 313/467/73 +f 321/498/60 305/483/60 306/484/74 +f 329/499/73 313/467/73 314/469/16 +f 322/500/74 306/484/74 307/486/34 +f 330/501/16 314/469/16 315/471/15 +f 323/502/34 307/486/34 308/456/33 +f 331/503/15 315/471/15 316/472/51 +f 324/504/33 308/456/33 309/458/52 +f 307/486/72 291/487/72 292/505/61 +f 356/506/73 357/519/93 358/507/93 +f 355/509/16 356/506/73 359/508/73 +f 354/511/94 355/509/16 360/510/16 diff --git a/src/main/resources/assets/hbm/models/missile_strong.obj b/src/main/resources/assets/hbm/models/missile_strong.obj new file mode 100644 index 000000000..e6b97761c --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_strong.obj @@ -0,0 +1,979 @@ +# Blender v2.79 (sub 0) OBJ File: 'missile_strong.blend' +# www.blender.org +o Circle +v 0.000000 4.125000 -0.625000 +v -0.239177 4.125000 -0.577425 +v -0.441942 4.125000 -0.441942 +v -0.577425 4.125000 -0.239177 +v -0.625000 4.125000 0.000000 +v -0.577425 4.125000 0.239177 +v -0.441942 4.125000 0.441942 +v -0.239177 4.125000 0.577425 +v -0.000000 4.125000 0.625000 +v 0.239177 4.125000 0.577425 +v 0.441942 4.125000 0.441942 +v 0.577425 4.125000 0.239177 +v 0.625000 4.125000 -0.000000 +v 0.577425 4.125000 -0.239177 +v 0.441942 4.125000 -0.441942 +v 0.239177 4.125000 -0.577425 +v 0.000000 4.875000 -0.630000 +v -0.241091 4.875000 -0.582044 +v -0.445477 4.875000 -0.445477 +v -0.582044 4.875000 -0.241091 +v -0.630000 4.875000 0.000000 +v -0.582044 4.875000 0.241091 +v -0.445477 4.875000 0.445477 +v -0.241091 4.875000 0.582044 +v -0.000000 4.875000 0.630000 +v 0.241090 4.875000 0.582044 +v 0.445477 4.875000 0.445477 +v 0.582044 4.875000 0.241091 +v 0.630000 4.875000 -0.000000 +v 0.582044 4.875000 -0.241091 +v 0.445477 4.875000 -0.445477 +v 0.241090 4.875000 -0.582044 +v 0.000000 5.000000 -0.500000 +v -0.191342 5.000000 -0.461940 +v -0.353553 5.000000 -0.353553 +v -0.461940 5.000000 -0.191342 +v -0.500000 5.000000 0.000000 +v -0.461940 5.000000 0.191342 +v -0.353553 5.000000 0.353553 +v -0.191342 5.000000 0.461940 +v -0.000000 5.000000 0.500000 +v 0.191342 5.000000 0.461940 +v 0.353553 5.000000 0.353554 +v 0.461940 5.000000 0.191342 +v 0.500000 5.000000 -0.000000 +v 0.461940 5.000000 -0.191342 +v 0.353553 5.000000 -0.353554 +v 0.191341 5.000000 -0.461940 +v 0.000000 6.000000 0.000000 +v 0.000000 4.000000 -0.500000 +v -0.191342 4.000000 -0.461940 +v -0.353553 4.000000 -0.353553 +v -0.461940 4.000000 -0.191342 +v -0.500000 4.000000 0.000000 +v -0.461940 4.000000 0.191342 +v -0.353553 4.000000 0.353553 +v -0.191342 4.000000 0.461940 +v -0.000000 4.000000 0.500000 +v 0.191342 4.000000 0.461940 +v 0.353553 4.000000 0.353554 +v 0.461940 4.000000 0.191342 +v 0.500000 4.000000 -0.000000 +v 0.461940 4.000000 -0.191342 +v 0.353553 4.000000 -0.353554 +v 0.191341 4.000000 -0.461940 +v 0.000000 3.500000 -0.500000 +v -0.191342 3.500000 -0.461940 +v -0.353553 3.500000 -0.353553 +v -0.461940 3.500000 -0.191342 +v -0.500000 3.500000 0.000000 +v -0.461940 3.500000 0.191342 +v -0.353553 3.500000 0.353553 +v -0.191342 3.500000 0.461940 +v -0.000000 3.500000 0.500000 +v 0.191342 3.500000 0.461940 +v 0.353553 3.500000 0.353554 +v 0.461940 3.500000 0.191342 +v 0.500000 3.500000 -0.000000 +v 0.461940 3.500000 -0.191342 +v 0.353553 3.500000 -0.353554 +v 0.191341 3.500000 -0.461940 +v 0.000000 2.500000 -0.625000 +v -0.239177 2.500000 -0.577425 +v -0.441942 2.500000 -0.441942 +v -0.577425 2.500000 -0.239177 +v -0.625000 2.500000 0.000000 +v -0.577425 2.500000 0.239177 +v -0.441942 2.500000 0.441942 +v -0.239177 2.500000 0.577425 +v -0.000000 2.500000 0.625000 +v 0.239177 2.500000 0.577425 +v 0.441942 2.500000 0.441942 +v 0.577425 2.500000 0.239177 +v 0.625000 2.500000 -0.000000 +v 0.577425 2.500000 -0.239177 +v 0.441942 2.500000 -0.441942 +v 0.239177 2.500000 -0.577425 +v 0.000000 0.500000 -0.625000 +v -0.239177 0.500000 -0.577425 +v -0.441942 0.500000 -0.441942 +v -0.577425 0.500000 -0.239177 +v -0.625000 0.500000 0.000000 +v -0.577425 0.500000 0.239177 +v -0.441942 0.500000 0.441942 +v -0.239177 0.500000 0.577425 +v -0.000000 0.500000 0.625000 +v 0.239177 0.500000 0.577425 +v 0.441942 0.500000 0.441942 +v 0.577425 0.500000 0.239177 +v 0.625000 0.500000 -0.000000 +v 0.577425 0.500000 -0.239177 +v 0.441942 0.500000 -0.441942 +v 0.239177 0.500000 -0.577425 +v 0.000000 0.500000 -0.500000 +v -0.191342 0.500000 -0.461940 +v -0.353553 0.500000 -0.353553 +v -0.461940 0.500000 -0.191342 +v -0.500000 0.500000 0.000000 +v -0.461940 0.500000 0.191342 +v -0.353553 0.500000 0.353553 +v -0.191342 0.500000 0.461940 +v -0.000000 0.500000 0.500000 +v 0.191342 0.500000 0.461940 +v 0.353553 0.500000 0.353554 +v 0.461940 0.500000 0.191342 +v 0.500000 0.500000 -0.000000 +v 0.461940 0.500000 -0.191342 +v 0.353553 0.500000 -0.353554 +v 0.191341 0.500000 -0.461940 +v 0.000000 0.000000 -0.500000 +v -0.191342 0.000000 -0.461940 +v -0.353553 0.000000 -0.353553 +v -0.461940 0.000000 -0.191342 +v -0.500000 0.000000 0.000000 +v -0.461940 0.000000 0.191342 +v -0.353553 0.000000 0.353553 +v -0.191342 0.000000 0.461940 +v -0.000000 0.000000 0.500000 +v 0.191342 0.000000 0.461940 +v 0.353553 0.000000 0.353554 +v 0.461940 0.000000 0.191342 +v 0.500000 0.000000 -0.000000 +v 0.461940 0.000000 -0.191342 +v 0.353553 0.000000 -0.353554 +v 0.191341 0.000000 -0.461940 +v 0.333224 4.750000 -0.377418 +v 0.885651 4.500000 -0.885651 +v 0.333224 4.250000 -0.377418 +v 0.885651 4.250000 -0.885651 +v 0.377418 4.750000 -0.333224 +v 0.377418 4.250000 -0.333224 +v 0.377418 4.750000 0.333224 +v 0.885652 4.500000 0.885651 +v 0.377418 4.250000 0.333224 +v 0.885652 4.250000 0.885651 +v 0.333224 4.750000 0.377418 +v 0.333224 4.250000 0.377418 +v 0.375651 2.250000 0.331456 +v 0.883884 1.500000 0.883883 +v 0.375651 0.250000 0.331456 +v 0.883884 0.250000 0.883883 +v 0.331456 2.250000 0.375650 +v 0.331456 0.250000 0.375650 +v -0.331456 0.250000 -0.375650 +v -0.331456 2.250000 -0.375650 +v -0.883884 0.250000 -0.883883 +v -0.375651 0.250000 -0.331456 +v -0.883884 1.500000 -0.883883 +v -0.375651 2.250000 -0.331456 +v 0.331456 2.250000 -0.375650 +v 0.883883 1.500000 -0.883883 +v 0.331456 0.250000 -0.375650 +v 0.883883 0.250000 -0.883883 +v 0.375650 2.250000 -0.331456 +v 0.375650 0.250000 -0.331456 +v -0.333224 4.250000 -0.377418 +v -0.333224 4.750000 -0.377418 +v -0.885651 4.250000 -0.885651 +v -0.377418 4.250000 -0.333224 +v -0.885651 4.500000 -0.885651 +v -0.377418 4.750000 -0.333224 +v -0.375650 0.250000 0.331456 +v -0.375650 2.250000 0.331456 +v -0.883883 0.250000 0.883883 +v -0.331456 0.250000 0.375651 +v -0.883883 1.500000 0.883883 +v -0.331456 2.250000 0.375651 +v -0.377418 4.250000 0.333224 +v -0.377418 4.750000 0.333224 +v -0.885651 4.250000 0.885651 +v -0.333224 4.250000 0.377418 +v -0.885651 4.500000 0.885651 +v -0.333224 4.750000 0.377418 +vt 0.350000 0.102041 +vt 0.387500 0.081633 +vt 0.400000 0.102041 +vt 0.437500 0.081633 +vt 0.450000 0.102041 +vt 0.450000 0.081633 +vt 0.500000 0.102041 +vt 0.500000 0.081633 +vt 0.550000 0.102041 +vt 0.550000 0.081633 +vt 0.600000 0.102041 +vt 0.600000 0.081633 +vt 0.650000 0.102041 +vt 0.650000 0.081633 +vt 0.700000 0.102041 +vt 0.737500 0.081633 +vt 0.750000 0.102041 +vt 0.750000 0.081633 +vt 0.800000 0.102041 +vt 0.000000 0.102041 +vt 0.037500 0.081633 +vt 0.050000 0.102041 +vt 0.087500 0.081633 +vt 0.100000 0.102041 +vt 0.100000 0.081633 +vt 0.150000 0.102041 +vt 0.150000 0.081633 +vt 0.200000 0.102041 +vt 0.237500 0.081633 +vt 0.250000 0.102041 +vt 0.250000 0.081633 +vt 0.300000 0.102041 +vt 0.300000 0.081633 +vt 0.970508 0.024075 +vt 0.970508 0.139190 +vt 0.829492 0.139190 +vt 0.950000 0.561224 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.950000 0.602041 +vt 0.800000 0.612245 +vt 0.800000 0.510204 +vt 0.950000 0.520408 +vt 0.950000 0.561224 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.950000 0.602041 +vt 0.800000 0.612245 +vt 0.800000 0.510204 +vt 0.950000 0.520408 +vt 0.950000 0.377551 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.950000 0.500000 +vt 0.800000 0.510204 +vt 0.800000 0.163265 +vt 0.950000 0.173469 +vt 0.800000 0.163265 +vt 0.950000 0.173469 +vt 0.800000 0.173469 +vt 0.950000 0.500000 +vt 0.800000 0.510204 +vt 0.800000 0.500000 +vt 0.950000 0.377551 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.950000 0.377551 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.950000 0.500000 +vt 0.800000 0.510204 +vt 0.800000 0.163265 +vt 0.950000 0.173469 +vt 0.800000 0.510204 +vt 0.950000 0.520408 +vt 0.800000 0.520408 +vt 0.950000 0.602041 +vt 0.800000 0.612245 +vt 0.800000 0.602041 +vt 0.950000 0.561224 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.800000 0.163265 +vt 0.950000 0.173469 +vt 0.800000 0.173469 +vt 0.950000 0.500000 +vt 0.800000 0.510204 +vt 0.800000 0.500000 +vt 0.950000 0.377551 +vt 0.800000 0.173469 +vt 0.800000 0.500000 +vt 0.800000 0.510204 +vt 0.950000 0.520408 +vt 0.800000 0.520408 +vt 0.950000 0.602041 +vt 0.800000 0.612245 +vt 0.800000 0.602041 +vt 0.950000 0.561224 +vt 0.800000 0.520408 +vt 0.800000 0.602041 +vt 0.350000 0.081633 +vt 0.400000 0.081633 +vt 0.487500 0.081633 +vt 0.537500 0.081633 +vt 0.587500 0.081633 +vt 0.637500 0.081633 +vt 0.687500 0.081633 +vt 0.700000 0.081633 +vt 0.787500 0.081633 +vt 0.000000 0.081633 +vt 0.050000 0.081633 +vt 0.137500 0.081633 +vt 0.187500 0.081633 +vt 0.200000 0.081633 +vt 0.287500 0.081633 +vt 0.337500 0.081633 +vt 0.992123 0.050483 +vt 0.999714 0.081633 +vt 0.992123 0.112783 +vt 0.938159 0.156836 +vt 0.900000 0.163032 +vt 0.861841 0.156836 +vt 0.807876 0.112783 +vt 0.800286 0.081633 +vt 0.807877 0.050483 +vt 0.829492 0.024075 +vt 0.861841 0.006430 +vt 0.900000 0.000234 +vt 0.938159 0.006430 +vt 0.700000 0.693878 +vt 0.650000 0.816327 +vt 0.650000 0.693878 +vt 0.300000 0.693878 +vt 0.250000 0.816327 +vt 0.250000 0.693878 +vt 0.750000 0.693878 +vt 0.700000 0.816327 +vt 0.350000 0.693878 +vt 0.300000 0.816327 +vt 0.800000 0.693878 +vt 0.750000 0.816327 +vt 0.400000 0.693878 +vt 0.350000 0.816327 +vt 0.050000 0.693878 +vt 0.000000 0.816327 +vt -0.000000 0.693878 +vt 0.450000 0.693878 +vt 0.400000 0.816327 +vt 0.100000 0.693878 +vt 0.050000 0.816327 +vt 0.500000 0.693878 +vt 0.450000 0.816327 +vt 0.150000 0.693878 +vt 0.100000 0.816327 +vt 0.550000 0.693878 +vt 0.500000 0.816327 +vt 0.200000 0.693878 +vt 0.150000 0.816327 +vt 0.600000 0.816327 +vt 0.600000 0.693878 +vt 0.550000 0.816327 +vt 0.200000 0.816327 +vt 0.150000 0.836735 +vt 0.600000 0.836735 +vt 0.550000 0.836735 +vt 0.200000 0.836735 +vt 0.650000 0.836735 +vt 0.250000 0.836735 +vt 0.700000 0.836735 +vt 0.337500 0.836735 +vt 0.300000 0.836735 +vt 0.800000 0.816327 +vt 0.750000 0.836735 +vt 0.350000 0.836735 +vt -0.000000 0.836735 +vt 0.437500 0.836735 +vt 0.400000 0.836735 +vt 0.050000 0.836735 +vt 0.450000 0.836735 +vt 0.100000 0.836735 +vt 0.500000 0.836735 +vt 0.300000 0.673469 +vt 0.687500 0.836735 +vt 0.662500 1.000000 +vt 0.737500 0.836735 +vt 0.712500 1.000000 +vt 0.787500 0.836735 +vt 0.762500 1.000000 +vt 0.037500 0.836735 +vt 0.012500 1.000000 +vt 0.087500 0.836735 +vt 0.062500 1.000000 +vt 0.137500 0.836735 +vt 0.112500 1.000000 +vt 0.187500 0.836735 +vt 0.162500 1.000000 +vt 0.237500 0.836735 +vt 0.212500 1.000000 +vt 0.287500 0.836735 +vt 0.262500 1.000000 +vt 0.312500 1.000000 +vt 0.387500 0.836735 +vt 0.362500 1.000000 +vt 0.412500 1.000000 +vt 0.487500 0.836735 +vt 0.462500 1.000000 +vt 0.537500 0.836735 +vt 0.512500 1.000000 +vt 0.587500 0.836735 +vt 0.562500 1.000000 +vt 0.637500 0.836735 +vt 0.612500 1.000000 +vt 0.350000 0.673469 +vt 0.400000 0.673469 +vt 0.450000 0.673469 +vt 0.500000 0.673469 +vt 0.587500 0.673469 +vt 0.600000 0.673469 +vt 0.650000 0.673469 +vt 0.700000 0.673469 +vt 0.750000 0.673469 +vt 0.000000 0.673469 +vt 0.050000 0.673469 +vt 0.100000 0.673469 +vt 0.150000 0.673469 +vt 0.200000 0.673469 +vt 0.250000 0.673469 +vt 0.687500 0.591837 +vt 0.687500 0.673469 +vt 0.287500 0.591837 +vt 0.287500 0.673469 +vt 0.737500 0.591837 +vt 0.737500 0.673469 +vt 0.337500 0.591837 +vt 0.337500 0.673469 +vt 0.787500 0.591837 +vt 0.787500 0.673469 +vt 0.387500 0.591837 +vt 0.387500 0.673469 +vt 0.037500 0.591837 +vt 0.037500 0.673469 +vt 0.437500 0.591837 +vt 0.437500 0.673469 +vt 0.087500 0.591837 +vt 0.087500 0.673469 +vt 0.487500 0.591837 +vt 0.487500 0.673469 +vt 0.137500 0.591837 +vt 0.137500 0.673469 +vt 0.537500 0.591837 +vt 0.537500 0.673469 +vt 0.187500 0.591837 +vt 0.187500 0.673469 +vt 0.637500 0.591837 +vt 0.637500 0.673469 +vt 0.550000 0.673469 +vt 0.587500 0.591837 +vt 0.237500 0.591837 +vt 0.237500 0.673469 +vt 0.100000 0.591837 +vt 0.150000 0.428571 +vt 0.500000 0.591837 +vt 0.550000 0.428571 +vt 0.150000 0.591837 +vt 0.200000 0.428571 +vt 0.600000 0.591837 +vt 0.650000 0.428571 +vt 0.550000 0.591837 +vt 0.600000 0.428571 +vt 0.250000 0.428571 +vt 0.650000 0.591837 +vt 0.700000 0.428571 +vt 0.250000 0.591837 +vt 0.300000 0.428571 +vt 0.700000 0.591837 +vt 0.750000 0.428571 +vt 0.300000 0.591837 +vt 0.350000 0.428571 +vt 0.750000 0.591837 +vt 0.800000 0.428571 +vt 0.350000 0.591837 +vt 0.400000 0.428571 +vt -0.000000 0.591837 +vt 0.050000 0.428571 +vt 0.400000 0.591837 +vt 0.450000 0.428571 +vt 0.050000 0.591837 +vt 0.100000 0.428571 +vt 0.450000 0.591837 +vt 0.500000 0.428571 +vt 0.000000 0.428571 +vt 0.537500 -0.000000 +vt 0.187500 0.000000 +vt 0.637500 0.000000 +vt 0.587500 0.000000 +vt 0.237500 0.000000 +vt 0.687500 0.000000 +vt 0.287500 0.000000 +vt 0.737500 -0.000000 +vt 0.337500 0.000000 +vt 0.787500 -0.000000 +vt 0.387500 0.000000 +vt 0.037500 -0.000000 +vt 0.437500 0.000000 +vt 0.087500 -0.000000 +vt 0.487500 0.000000 +vt 0.137500 0.000000 +vt 0.200000 0.591837 +vt 0.500000 -0.000000 +vt 0.150000 0.000000 +vt 0.600000 0.000000 +vt 0.550000 0.000000 +vt 0.200000 -0.000000 +vt 0.650000 0.000000 +vt 0.250000 -0.000000 +vt 0.700000 0.000000 +vt 0.300000 -0.000000 +vt 0.750000 0.000000 +vt 0.350000 -0.000000 +vt -0.000000 0.000000 +vt 0.400000 -0.000000 +vt 0.050000 -0.000000 +vt 0.450000 0.000000 +vt 0.100000 0.000000 +vn 0.0000 -1.0000 0.0000 +vn -0.6771 0.0000 -0.7359 +vn 0.7359 0.0000 0.6771 +vn 0.2236 0.9487 -0.2236 +vn 0.7359 0.0000 -0.6771 +vn -0.6771 0.0000 0.7359 +vn 0.2236 0.9487 0.2236 +vn 0.5000 0.7071 0.5000 +vn -0.5000 0.7071 -0.5000 +vn 0.6771 0.0000 -0.7359 +vn -0.7359 0.0000 0.6771 +vn 0.5000 0.7071 -0.5000 +vn -0.2236 0.9487 -0.2236 +vn -0.5000 0.7071 0.5000 +vn -0.7359 0.0000 -0.6771 +vn 0.6771 0.0000 0.7359 +vn -0.2236 0.9487 0.2236 +vn -0.7071 -0.0067 -0.7071 +vn -0.3827 -0.0067 -0.9239 +vn 0.7071 -0.0067 0.7071 +vn 0.3827 -0.0067 0.9239 +vn -0.9239 -0.0067 -0.3827 +vn 0.9239 -0.0067 0.3827 +vn -1.0000 -0.0067 0.0000 +vn 1.0000 -0.0067 -0.0000 +vn -0.9239 -0.0067 0.3827 +vn 0.9239 -0.0067 -0.3827 +vn -0.7071 -0.0067 0.7071 +vn 0.7071 -0.0067 -0.7071 +vn -0.3827 -0.0067 0.9239 +vn 0.3827 -0.0067 -0.9239 +vn -0.0000 -0.0067 1.0000 +vn -0.0000 -0.0067 -1.0000 +vn -0.0000 0.7208 0.6931 +vn -0.2652 0.7208 0.6403 +vn -0.2652 0.7208 -0.6403 +vn -0.0000 0.7208 -0.6931 +vn 0.2652 0.7208 -0.6403 +vn 0.2652 0.7208 0.6403 +vn -0.4901 0.7208 -0.4901 +vn -0.2652 0.7208 -0.6404 +vn 0.4901 0.7208 0.4901 +vn -0.6403 0.7208 -0.2652 +vn 0.6403 0.7208 0.2652 +vn -0.6931 0.7208 -0.0000 +vn 0.6931 0.7208 0.0000 +vn -0.6403 0.7208 0.2652 +vn 0.6403 0.7208 -0.2652 +vn -0.4901 0.7208 0.4901 +vn 0.4901 0.7208 -0.4901 +vn 0.5000 -0.7071 0.5000 +vn 0.6533 -0.7071 0.2706 +vn -0.3423 0.4472 -0.8263 +vn -0.6325 0.4472 -0.6325 +vn 0.0000 1.0000 0.0000 +vn -0.8263 0.4472 -0.3423 +vn -0.8944 0.4472 -0.0000 +vn -0.8263 0.4472 0.3423 +vn -0.6325 0.4472 0.6325 +vn -0.3423 0.4472 0.8263 +vn -0.0000 0.4472 0.8944 +vn 0.3423 0.4472 0.8263 +vn 0.6325 0.4472 0.6325 +vn 0.8263 0.4472 0.3423 +vn 0.8944 0.4472 0.0000 +vn 0.8263 0.4472 -0.3423 +vn 0.6325 0.4472 -0.6325 +vn 0.3423 0.4472 -0.8263 +vn -0.0000 0.4472 -0.8944 +vn 0.7071 -0.7071 0.0000 +vn 0.6533 -0.7071 -0.2706 +vn 0.5000 -0.7071 -0.5000 +vn 0.2706 -0.7071 -0.6533 +vn -0.0000 -0.7071 -0.7071 +vn -0.2706 -0.7071 -0.6533 +vn -0.5000 -0.7071 -0.5000 +vn -0.6533 -0.7071 -0.2706 +vn -0.7071 -0.7071 -0.0000 +vn -0.6533 -0.7071 0.2706 +vn -0.5000 -0.7071 0.5000 +vn -0.2706 -0.7071 0.6533 +vn -0.0000 -0.7071 0.7071 +vn 0.2706 -0.7071 0.6533 +vn -0.3827 0.0000 -0.9239 +vn -0.7071 0.0000 -0.7071 +vn 0.3827 0.0000 0.9239 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.0000 0.0000 1.0000 +vn -0.0000 0.0000 -1.0000 +vn -0.7016 0.1240 0.7016 +vn -0.3797 0.1240 0.9167 +vn 0.7016 0.1240 -0.7016 +vn 0.3797 0.1240 -0.9167 +vn -0.0000 0.1240 0.9923 +vn -0.0000 0.1240 -0.9923 +vn -0.3797 0.1240 -0.9167 +vn 0.3797 0.1240 0.9167 +vn -0.7016 0.1240 -0.7016 +vn 0.7016 0.1240 0.7016 +vn -0.9167 0.1240 -0.3797 +vn 0.9167 0.1240 0.3797 +vn -0.9923 0.1240 -0.0000 +vn 0.9923 0.1240 0.0000 +vn -0.9167 0.1240 0.3797 +vn 0.9167 0.1240 -0.3797 +s off +f 109/1/1 126/2/1 110/3/1 +f 110/3/1 127/4/1 111/5/1 +f 127/6/1 112/7/1 111/5/1 +f 128/8/1 113/9/1 112/7/1 +f 129/10/1 98/11/1 113/9/1 +f 114/12/1 99/13/1 98/11/1 +f 115/14/1 100/15/1 99/13/1 +f 100/15/1 117/16/1 101/17/1 +f 117/18/1 102/19/1 101/17/1 +f 102/20/1 119/21/1 103/22/1 +f 103/22/1 120/23/1 104/24/1 +f 120/25/1 105/26/1 104/24/1 +f 121/27/1 106/28/1 105/26/1 +f 106/28/1 123/29/1 107/30/1 +f 123/31/1 108/32/1 107/30/1 +f 124/33/1 109/1/1 108/32/1 +f 132/34/1 144/35/1 140/36/1 +f 147/37/2 148/38/2 146/39/2 +f 151/40/3 147/37/3 150/41/3 +f 147/42/4 146/43/4 150/41/4 +f 148/44/1 149/45/1 151/40/1 +f 153/46/5 154/47/5 152/48/5 +f 157/49/6 153/46/6 156/50/6 +f 153/51/7 152/52/7 156/50/7 +f 154/53/1 155/54/1 157/49/1 +f 159/55/5 160/56/5 158/57/5 +f 163/58/6 159/55/6 162/59/6 +f 159/60/8 158/61/8 162/59/8 +f 160/62/1 161/63/1 163/58/1 +f 167/64/1 166/65/1 164/66/1 +f 168/67/9 169/68/9 165/69/9 +f 164/66/10 168/70/10 165/69/10 +f 168/70/11 167/71/11 169/72/11 +f 171/73/2 172/74/2 170/75/2 +f 175/76/3 171/73/3 174/77/3 +f 171/78/12 170/79/12 174/77/12 +f 172/80/1 173/81/1 175/76/1 +f 179/82/1 178/83/1 176/84/1 +f 180/85/13 181/86/13 177/87/13 +f 176/84/10 180/88/10 177/87/10 +f 180/88/11 179/89/11 181/90/11 +f 185/91/1 184/92/1 182/93/1 +f 186/94/14 187/95/14 183/96/14 +f 182/93/15 186/97/15 183/96/15 +f 186/97/16 185/98/16 187/99/16 +f 191/100/1 190/101/1 188/102/1 +f 192/103/17 193/104/17 189/105/17 +f 188/102/15 192/106/15 189/105/15 +f 192/106/16 191/107/16 193/108/16 +f 109/1/1 125/109/1 126/2/1 +f 110/3/1 126/110/1 127/4/1 +f 127/6/1 128/111/1 112/7/1 +f 128/8/1 129/112/1 113/9/1 +f 129/10/1 114/113/1 98/11/1 +f 114/12/1 115/114/1 99/13/1 +f 115/14/1 116/115/1 100/15/1 +f 100/15/1 116/116/1 117/16/1 +f 117/18/1 118/117/1 102/19/1 +f 102/20/1 118/118/1 119/21/1 +f 103/22/1 119/119/1 120/23/1 +f 120/25/1 121/120/1 105/26/1 +f 121/27/1 122/121/1 106/28/1 +f 106/28/1 122/122/1 123/29/1 +f 123/31/1 124/123/1 108/32/1 +f 124/33/1 125/124/1 109/1/1 +f 132/34/1 131/125/1 130/126/1 +f 130/126/1 145/127/1 144/35/1 +f 144/35/1 143/128/1 142/129/1 +f 142/129/1 141/130/1 140/36/1 +f 140/36/1 139/131/1 138/132/1 +f 138/132/1 137/133/1 136/134/1 +f 136/134/1 135/135/1 134/136/1 +f 134/136/1 133/137/1 136/134/1 +f 133/137/1 132/34/1 136/134/1 +f 132/34/1 130/126/1 144/35/1 +f 144/35/1 142/129/1 140/36/1 +f 140/36/1 138/132/1 132/34/1 +f 138/132/1 136/134/1 132/34/1 +f 147/37/2 149/45/2 148/38/2 +f 151/40/3 149/45/3 147/37/3 +f 153/46/5 155/54/5 154/47/5 +f 157/49/6 155/54/6 153/46/6 +f 159/55/5 161/63/5 160/56/5 +f 163/58/6 161/63/6 159/55/6 +f 164/66/10 166/65/10 168/70/10 +f 168/70/11 166/65/11 167/71/11 +f 171/73/2 173/81/2 172/74/2 +f 175/76/3 173/81/3 171/73/3 +f 176/84/10 178/83/10 180/88/10 +f 180/88/11 178/83/11 179/89/11 +f 182/93/15 184/92/15 186/97/15 +f 186/97/16 184/92/16 185/98/16 +f 188/102/15 190/101/15 192/106/15 +f 192/106/16 190/101/16 191/107/16 +s 1 +f 3/138/18 18/139/19 2/140/19 +f 11/141/20 26/142/21 10/143/21 +f 4/144/22 19/145/18 3/138/18 +f 12/146/23 27/147/20 11/141/20 +f 5/148/24 20/149/22 4/144/22 +f 13/150/25 28/151/23 12/146/23 +f 6/152/26 21/153/24 5/154/24 +f 14/155/27 29/156/25 13/150/25 +f 7/157/28 22/158/26 6/152/26 +f 15/159/29 30/160/27 14/155/27 +f 8/161/30 23/162/28 7/157/28 +f 16/163/31 31/164/29 15/159/29 +f 9/165/32 24/166/30 8/161/30 +f 2/140/19 17/167/33 1/168/33 +f 1/168/33 32/169/31 16/163/31 +f 10/143/21 25/170/32 9/165/32 +f 25/170/34 40/171/35 24/166/35 +f 18/139/36 33/172/37 17/167/37 +f 17/167/37 48/173/38 32/169/38 +f 26/142/39 41/174/34 25/170/34 +f 19/145/40 34/175/41 18/139/36 +f 27/147/42 42/176/39 26/142/39 +f 20/149/43 35/177/40 19/145/40 +f 27/147/42 44/178/44 43/179/42 +f 21/180/45 36/181/43 20/149/43 +f 29/156/46 44/182/44 28/151/44 +f 22/158/47 37/183/45 21/153/45 +f 29/156/46 46/184/48 45/185/46 +f 23/162/49 38/186/47 22/158/47 +f 31/164/50 46/187/48 30/160/48 +f 24/166/35 39/188/49 23/162/49 +f 32/169/38 47/189/50 31/164/50 +f 60/190/51 12/146/52 11/141/51 +f 34/175/53 35/191/54 49/192/55 +f 35/177/54 36/193/56 49/194/55 +f 36/181/56 37/195/57 49/196/55 +f 37/183/57 38/197/58 49/198/55 +f 38/186/58 39/199/59 49/200/55 +f 39/188/59 40/201/60 49/202/55 +f 40/171/60 41/203/61 49/204/55 +f 41/174/61 42/205/62 49/206/55 +f 42/176/62 43/207/63 49/208/55 +f 43/179/63 44/178/64 49/209/55 +f 44/182/64 45/210/65 49/211/55 +f 45/185/65 46/184/66 49/212/55 +f 46/187/66 47/213/67 49/214/55 +f 47/189/67 48/215/68 49/216/55 +f 48/173/68 33/217/69 49/218/55 +f 33/172/69 34/219/53 49/220/55 +f 61/221/52 13/150/70 12/146/52 +f 62/222/70 14/155/71 13/150/70 +f 63/223/71 15/159/72 14/155/71 +f 64/224/72 16/163/73 15/159/72 +f 16/163/73 50/225/74 1/168/74 +f 50/226/74 2/140/75 1/168/74 +f 51/227/75 3/138/76 2/140/75 +f 52/228/76 4/144/77 3/138/76 +f 53/229/77 5/148/78 4/144/77 +f 54/230/78 6/152/79 5/154/78 +f 55/231/79 7/157/80 6/152/79 +f 56/232/80 8/161/81 7/157/80 +f 57/233/81 9/165/82 8/161/81 +f 58/234/82 10/143/83 9/165/82 +f 59/235/83 11/141/51 10/143/83 +f 51/227/84 68/236/85 52/237/85 +f 59/235/86 76/238/87 60/239/87 +f 52/228/85 69/240/88 53/241/88 +f 60/190/87 77/242/89 61/243/89 +f 53/229/88 70/244/90 54/245/90 +f 61/221/89 78/246/91 62/247/91 +f 54/230/90 71/248/92 55/249/92 +f 62/222/91 79/250/93 63/251/93 +f 55/231/92 72/252/94 56/253/94 +f 63/223/93 80/254/95 64/255/95 +f 56/232/94 73/256/96 57/257/96 +f 64/224/95 81/258/97 65/259/97 +f 57/233/96 74/260/98 58/261/98 +f 50/226/99 67/262/84 51/263/84 +f 65/264/97 66/265/99 50/225/99 +f 58/234/98 75/266/86 59/267/86 +f 72/268/100 89/269/101 73/256/101 +f 80/270/102 97/271/103 81/258/103 +f 73/272/101 90/273/104 74/260/104 +f 66/274/105 83/275/106 67/262/106 +f 81/276/103 82/277/105 66/265/105 +f 75/266/107 90/273/104 91/278/107 +f 67/279/106 84/280/108 68/236/108 +f 75/281/107 92/282/109 76/238/109 +f 68/283/108 85/284/110 69/240/110 +f 76/285/109 93/286/111 77/242/111 +f 69/287/110 86/288/112 70/244/112 +f 77/289/111 94/290/113 78/246/113 +f 70/291/112 87/292/114 71/248/114 +f 78/293/113 95/294/115 79/250/115 +f 71/295/114 88/296/100 72/252/100 +f 79/297/115 96/298/102 80/254/102 +f 93/286/89 110/3/91 94/290/91 +f 86/299/90 103/22/92 87/292/92 +f 94/290/91 111/5/93 95/294/93 +f 87/292/92 104/24/94 88/296/94 +f 95/294/93 112/7/95 96/298/95 +f 88/296/94 105/26/96 89/269/96 +f 96/298/95 113/9/97 97/271/97 +f 89/269/96 106/28/98 90/273/98 +f 82/277/99 99/13/84 83/275/84 +f 97/271/97 98/11/99 82/277/99 +f 90/273/98 107/30/86 91/278/86 +f 83/275/84 100/15/85 84/280/85 +f 91/278/86 108/32/87 92/282/87 +f 84/280/85 101/17/88 85/284/88 +f 92/282/87 109/1/89 93/286/89 +f 85/284/88 102/19/90 86/288/90 +f 128/8/95 145/300/97 129/112/97 +f 121/27/96 138/301/98 122/121/98 +f 114/12/99 131/302/84 115/114/84 +f 129/10/97 130/303/99 114/113/99 +f 122/122/98 139/304/86 123/29/86 +f 115/14/84 132/305/85 116/115/85 +f 123/31/86 140/306/87 124/123/87 +f 116/116/85 133/307/88 117/16/88 +f 124/33/87 141/308/89 125/124/89 +f 117/18/88 134/309/90 118/117/90 +f 125/109/89 142/310/91 126/2/91 +f 118/118/90 135/311/92 119/21/92 +f 126/110/91 143/312/93 127/4/93 +f 119/119/92 136/313/94 120/23/94 +f 127/6/93 144/314/95 128/111/95 +f 120/25/94 137/315/96 121/120/96 +f 3/138/18 19/145/18 18/139/19 +f 11/141/20 27/147/20 26/142/21 +f 4/144/22 20/149/22 19/145/18 +f 12/146/23 28/151/23 27/147/20 +f 5/148/24 21/180/24 20/149/22 +f 13/150/25 29/156/25 28/151/23 +f 6/152/26 22/158/26 21/153/24 +f 14/155/27 30/160/27 29/156/25 +f 7/157/28 23/162/28 22/158/26 +f 15/159/29 31/164/29 30/160/27 +f 8/161/30 24/166/30 23/162/28 +f 16/163/31 32/169/31 31/164/29 +f 9/165/32 25/170/32 24/166/30 +f 2/140/19 18/139/19 17/167/33 +f 1/168/33 17/167/33 32/169/31 +f 10/143/21 26/142/21 25/170/32 +f 25/170/34 41/203/34 40/171/35 +f 18/139/36 34/219/41 33/172/37 +f 17/167/37 33/217/37 48/173/38 +f 26/142/39 42/205/39 41/174/34 +f 19/145/40 35/191/40 34/175/41 +f 27/147/42 43/207/42 42/176/39 +f 20/149/43 36/193/43 35/177/40 +f 27/147/42 28/151/44 44/178/44 +f 21/180/45 37/195/45 36/181/43 +f 29/156/46 45/210/46 44/182/44 +f 22/158/47 38/197/47 37/183/45 +f 29/156/46 30/160/48 46/184/48 +f 23/162/49 39/199/49 38/186/47 +f 31/164/50 47/213/50 46/187/48 +f 24/166/35 40/201/35 39/188/49 +f 32/169/38 48/215/38 47/189/50 +f 60/190/51 61/243/52 12/146/52 +f 61/221/52 62/247/70 13/150/70 +f 62/222/70 63/251/71 14/155/71 +f 63/223/71 64/255/72 15/159/72 +f 64/224/72 65/259/73 16/163/73 +f 16/163/73 65/264/73 50/225/74 +f 50/226/74 51/263/75 2/140/75 +f 51/227/75 52/237/76 3/138/76 +f 52/228/76 53/241/77 4/144/77 +f 53/229/77 54/245/78 5/148/78 +f 54/230/78 55/249/79 6/152/79 +f 55/231/79 56/253/80 7/157/80 +f 56/232/80 57/257/81 8/161/81 +f 57/233/81 58/261/82 9/165/82 +f 58/234/82 59/267/83 10/143/83 +f 59/235/83 60/239/51 11/141/51 +f 51/227/84 67/279/84 68/236/85 +f 59/235/86 75/281/86 76/238/87 +f 52/228/85 68/283/85 69/240/88 +f 60/190/87 76/285/87 77/242/89 +f 53/229/88 69/287/88 70/244/90 +f 61/221/89 77/289/89 78/246/91 +f 54/230/90 70/291/90 71/248/92 +f 62/222/91 78/293/91 79/250/93 +f 55/231/92 71/295/92 72/252/94 +f 63/223/93 79/297/93 80/254/95 +f 56/232/94 72/268/94 73/256/96 +f 64/224/95 80/270/95 81/258/97 +f 57/233/96 73/272/96 74/260/98 +f 50/226/99 66/274/99 67/262/84 +f 65/264/97 81/276/97 66/265/99 +f 58/234/98 74/316/98 75/266/86 +f 72/268/100 88/296/100 89/269/101 +f 80/270/102 96/298/102 97/271/103 +f 73/272/101 89/269/101 90/273/104 +f 66/274/105 82/277/105 83/275/106 +f 81/276/103 97/271/103 82/277/105 +f 75/266/107 74/316/104 90/273/104 +f 67/279/106 83/275/106 84/280/108 +f 75/281/107 91/278/107 92/282/109 +f 68/283/108 84/280/108 85/284/110 +f 76/285/109 92/282/109 93/286/111 +f 69/287/110 85/284/110 86/288/112 +f 77/289/111 93/286/111 94/290/113 +f 70/291/112 86/299/112 87/292/114 +f 78/293/113 94/290/113 95/294/115 +f 71/295/114 87/292/114 88/296/100 +f 79/297/115 95/294/115 96/298/102 +f 93/286/89 109/1/89 110/3/91 +f 86/299/90 102/20/90 103/22/92 +f 94/290/91 110/3/91 111/5/93 +f 87/292/92 103/22/92 104/24/94 +f 95/294/93 111/5/93 112/7/95 +f 88/296/94 104/24/94 105/26/96 +f 96/298/95 112/7/95 113/9/97 +f 89/269/96 105/26/96 106/28/98 +f 82/277/99 98/11/99 99/13/84 +f 97/271/97 113/9/97 98/11/99 +f 90/273/98 106/28/98 107/30/86 +f 83/275/84 99/13/84 100/15/85 +f 91/278/86 107/30/86 108/32/87 +f 84/280/85 100/15/85 101/17/88 +f 92/282/87 108/32/87 109/1/89 +f 85/284/88 101/17/88 102/19/90 +f 128/8/95 144/317/95 145/300/97 +f 121/27/96 137/318/96 138/301/98 +f 114/12/99 130/319/99 131/302/84 +f 129/10/97 145/320/97 130/303/99 +f 122/122/98 138/321/98 139/304/86 +f 115/14/84 131/322/84 132/305/85 +f 123/31/86 139/323/86 140/306/87 +f 116/116/85 132/324/85 133/307/88 +f 124/33/87 140/325/87 141/308/89 +f 117/18/88 133/326/88 134/309/90 +f 125/109/89 141/327/89 142/310/91 +f 118/118/90 134/328/90 135/311/92 +f 126/110/91 142/329/91 143/312/93 +f 119/119/92 135/330/92 136/313/94 +f 127/6/93 143/331/93 144/314/95 +f 120/25/94 136/332/94 137/315/96 diff --git a/src/main/resources/assets/hbm/textures/items/missile_buster.png b/src/main/resources/assets/hbm/textures/items/missile_buster.png index 40afe848bce05021c8dff4a0eacd8cdeab81bf86..2fff7c4a0d21a6c3959f0697a6a6c759e039a97a 100644 GIT binary patch delta 315 zcmV-B0mS~k0@nhNC4X~5NmK|32nc)#WQYI&0S-w-K~y-6t&&ZOgfJ9@Kbt;8HUZ6E zket8+WaAASFVfR@@*E<#4}u#P3huK=F9w66v_sF-CO^EYRJ}a-4?Ms>z<7Ys)}iv0O-070OuTaUGF%%2yNR&Ns>@i)s85o#5sr7`rzoa+r}8LwGJXuN&u|2 zD5bF01}C>Ofx51v_4PDO8HND>Aw&>aotz4+Xqtv)S&&jFuZpFgv={ZDaAOB zhr0XWW)lPOS~P2#ra=gS5Q2H0an6Oh%aJw4c%@Y6!`W9};%b=wgcm?;dr`Yzd*A>7 N002ovPDHLkV1fv&jw1j7 delta 290 zcmV+-0p0%B0=@!}C4Xl@O+f$vv5yPVH0`3BkC4X~5NmK|32nc)#WQYI&0VPR9K~y-6t&%Zo!ax{?pOnrWIyM{} z5tpDKLO=p3A!C1ln?J%oD1snDKn_~61jEs^P>@2p1($Saa~O;UY~Lxv_dfUBmxKRE z7=~3ChSfFQoBBgac@@YywvbW+ptYtb3Y1dTx#EezacWTX^nciCV*tzL($ZQ3pp*h& z=ne3r$wf#*aWop4;n{r3YxV}fbNm88Ssqv~HjPf>3Q8&K{^5?QQOIwx{X9ArL+L>B`}M18(j`MG9YPK0s-Jmb3qgc`p;uzDF8m=Z)dNWAdTn?5Jwrh i;ctwRXZms-+Z8?#Uc>uH>R|x@0000Ul2z~8md&t zp>W9oD5+9%ByN%$xI~l)Bow(o77`tDLuw19;BS*e%WgI-tDWk9OY=M)8U90BYtdTE zU%caXn9XJY0${C;-U2iRX&?ZyUawg$moGu%zQe=eKm!)7^?x8_)DG6#=yW;(uv)DE zm`p2=i__r6Oq>H|3EqVxF-z<$4{swx1IBn z@nE;xbv-0WLQz#!!wCSc*DH&~g6(z-!0~wGcDoJT_g%&qx!><%jFAw6gb+k)Enka# q2?-&HwN|XP^6Fpw2zlG|TYUg6nw9YFtP>mn0000-L1P>`6JSE84fTB2a0XP{^HrziP7P|Ye&7sn6_|E2v0d53ki=qU0FYrHs|lvQ`QUFY`U;$NlA=96zX UM+;|hgZ#_j>FVdQ&MBb@0N-3?761SM diff --git a/src/main/resources/assets/hbm/textures/items/missile_incendiary.png b/src/main/resources/assets/hbm/textures/items/missile_incendiary.png index d468e0133be4c04dbd7ba2172c3eda0b89edd703..d73c8b473420d6e6d815f448265d493d0f5bd45c 100644 GIT binary patch delta 386 zcmV-|0e$|v0-ghqC4X~5NmK|32nc)#WQYI&0aZyvK~y-6t&+VcVf8>GP@|BYscJGM3ijb{|cAc#1DxCG%9hi=#)Uc~FYZ-aS3@~h~X z&N-at_n!ATFZ_orvnZBXl)reR^F=IGz%mhlY)yx@1q2r@vwtYDQ~?0@z0J$vHI+(b zBPhJ=FkOA5TrQ)v-q= z2SD5jxq2tG5&*L-qKP8_rk}4w;u&N*!5j98CJvYm-WDKBL+Up2lD>Qfz`i*lypsgL z8}^CBGkC*3xqGV_WM#@)YcULC5#qaeBb&(HH>BPPE&YYLn$0G@@3VjL5abZqP2rC} zf;LtHdc7W{Qi)cp1wgX;gg3I+)%z)>l#It?QA&y9IN~^tSY}bWjr{gwKR0WwMQbga g=3*t}*QRat1qJGybG_n#0000007*qoM6N<$f+Vi7UjP6A delta 287 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 GjQT&8AP}^US?7bKZB(oO2RPj2_U_aL@n%0D3)Lt;fVN;=hLqNPPFG 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�apw@`&}O=HPHK5`HgZXPw0+s z^fy~Eau;dx9@5aqf-Hs8hGTd)_6F;C>(s$%3F<8N4|6n20WBVjX)2)%WL5`<8>4!j z_Tad=xw$%rP&gKkxme;+K`2Ks<^+YeqP9TQaj`(>VcMr3Ur_;H<2gzf#`R^-l<}{B z=BO>xMKp$Zbb;P(2jmjdz-G{tei6^a6)&XI>#Ez>m}>jgor{kNF1Y5H`JCsC=G1p? zLBa17P{xwK56|UFf~3jx-4v62Gm^Dj%YQu=ir4NqPKu8tL5x9>5J7g#)JotzfOtvN z8N=^Wp3TL_e*KG0pxn!xEa-CJ^4BQL+ns^qV52YzP04#*jh4Y6@M8GosxiZHna+9U z@`>YXgIl*JKRpJUADpq#(LOMgpT0ePVd*BJ4Xkg#mLbJos@j#+CJ|>`rgFY+XA7|3 z6iDC7mEjw>Rh@yrv3M-F%c2p!j`UGGCxiig@ZU{eclxxJl3ie4sF5mzL>DwOrkhW6 z)4FQ%Ud7tl3&y)lhgC1Ge+U#$uc;+GX_D?gK>;RoRiAY64Xv>cdHXXeZyJgaf`y}W zq0IZg>C}Q3RumQbg7lsj@OB(@@Bo4T&J;R$gtH5{mcw^1g8PRt9IJwj{;wGZM&!L% zEFxTFQe(zl;^kUAC9m~v;N7WP3)RC14vQ*m?vP~}a#I0MqcLz#Ui9WFT>_Y(Ys9Za zy<*5s2oyHYbH7c9FIjrg!CKE9t{Hv*LHvgR{&DSbt1jXJ?QX0jvz^yfc)6k)1_tx8 zpZxi)BI{c*0Gi1$X5dERR1Bni+IrMzS%hD0ucX%$V5+>;6JO4GCCOzuSO+MnfdAeH zdEKswTaC1h2tS()YhXe#MWjl@YR-KMqJJcJP2ZK(m68nH=`^U7$ws5@E$8@4Ppw?L zk|-NnG7FdHUF10OUvGy8fx&>%@vWSbjZHlV{49K=-t#V>*x_#bw+VLmfihp7FJP#L zFZX~>cBAP|01Z1O?*MI$)m+qV0Y-AN3k)VatU3W%696xasIn9dUcd+yW04Q)zfEvj zy(+vHk9FDk_l}$u!=2Jk6m)}ypE_DSq9H@>p@m*(5Es5!UOZmI`|`I%@7^$HkbFby#L8Or}pUY5=az zY%Xb&Ot!u#5lp3gAfv$mS~7!(cf-}l$xUVW`Qh^Hv-FK6x;Z_Wwf0FpG2wK&$Crkp zRG&3=G~%k{ z4(L_^ALktCiF%|*NMqc4wmKR>zR7ce0ae{N0ROm8MALwr_XA4E^1X(f7YvG zb}$`;13WzK?5uspST1+XPc|j~0Pfjy7VqhRG7Us z#vBZG^{9kf%D09LgtpDk2O;9}C0&;!i{tL4mwwUIS*(^gbVkvG}(7V$rf zxXx6vECNq1uC7Km#?(ZjEHsU9OBVprR-ytKYW+d_&i>C+n)}h(DDRzO>dxE6**cq$ zjSwa-Qhvw*qJ6fM8=C?vuGjm1-%S=#h=DO@+69tKtYhF)SbQkvcCogGyj!ht14dg@ ze7jAl6ul6+ZP6xnGIiPfCS27jAK72XhaZg{ zd=MPiq=5ybG5aGh`?t1tH@$i!doswq;f&rh%Xw@yeMjBp+yLE%e^W9eI6VY&kTxMN z+DSafMvJj^Xg5?S^!g_3#>_Zm(_ZfnEbh&WmK@dVR)x@U1=)Zp%m4Tf1D+j0L z1?yf^NziuQ91Q~^%ipm0&Z;Is1}gAAAJ<@(H0S1&_&8CB7BsO=$6BX z1X1ZQ(?F5!R1>_zvWIC@=e`Y ze|h0Wx}rT3W&k))KL6DgL76iyA%WuJV{qbh1$2rdF}Ocd_z7Rv$?PYPobM zfl|Jr2=I}qKysQJ0szK<_GhI_?4{uCEzAI$6k{9+w?w+msc(x?_}tShCMlE#ic@LS z=@_*SYiT~<4r(1=PG2<(oAR~3oyT3Z>|l= z7kgL_UX1R6NO!q(2eI{Do>7{87gd?FEQc`D@0(38I&22~D?!}qUGwD+j_DzsHGLFF z{~1A8$3*>_+uoJXmUh>!f;8cfh{11Oho#O%N zjauDT>jdikK=Z(d-+AJ2v-z=~d2$2D(8W6?RShCC{WC6XxB~A4@chrY82_|V9Ib9u zw*mRb3C42;$=IQuC4Te=4KA_zPXGB+?H3ib?arMJ`;Bf4mbkIfkU(Ww4=pMpq>sy< z(4GOp%6!3;WIy+B9cE`g$Z|P}`c{O|MCmShx62lyUxDNF3L6_KO%OBvgCe>a_Y##mG)udRHfmo88Y219`&o6`X%|T1 zsTQTn$AH!A$BRXc6*GNJ=Vy4Z<)t=vn56Kvj}|B@*1+ZxWOSs4+wl9PdQq(Ey3!5m zKk8rETfQkWQda98R>;^M*f_gZlKH~*2Z_B;M1hU|E-A>~m*;v}(JrThKVhrLmto;W zWl#}KLSyYxPk+Tt2!TvcbBM+H ziaUBU3W{~e?4CaRKdM)AYt}=|I=<*PSPSLKQQ?Dwojhh8nCvf<`LKjq$OFa;*l@Ct z_e}wW3v-#KaE8^g+0AF)JI~QPpzP{jxy%csYr^au^Bl;-I0U18x8pnLA4F*vm(hGP zdp-t#FfiRb?ke-8HPU<}x`udlO=N4Lv~$|27$=bNdP}9KY=xQo(vzH_XOvaL(UnL^ zQ}B`lo$z;|1m0pD=~=mb)fv~94*R`*x<@59Tr0Hat$Wz_Ndy)aHw13dHs8z$R)Yo-#K9Zy9>EsQYA*`pg#lPnGWON2-e z*o?d@9mdZ4M-b`5Jwv9Di(~m(`zSNwZGuziQtRtUe~;XT9ESoVb&Bg>*V=JNvs@|E zK3e_IcFOP}?qHzzuIMw<#lXtXMH+ z8U-T}gSxZ{)1>A%>dgEsQEK%$T{SB{ZRNo4eg!m#vswDiR;D*f;113`KF?{&$H%3| zA$NL$x=jZritZ+NQfwBH81b2&8neo^UKm(yB>J@o5xkWVN30XST%81a3CfO7DIr}hPC-C}QkAU6d z@2<)3Z0jPyLlm{3VDIPg!Ah>>Kfv$%PJ7srI`XZ)?r_GH3&@v)uaeoID40rWU?^AC@6!356- zBpJ_zlIqJb8UVM9l~8_Ho?`p3tG_{VxHYJEh|F8HpD$&O^lcj4fe8at2>MUkDWZ!` zR?#Lg>A0I(992P_U`5L_kcpT`ov@abz(B`oU*V6Qb&m5Uc5T8H8aCR^${03a^BvHV zWCuPO@_4A1YI;*03u2FA?0FZuT};h_fDVyEL$cA z`~mE2y27JbwLVXo0YiLR_3xjDAb%T4KZQN5*2WEy8>7&Sxz#jOdnZ7d7wRc=nbXA=mej_jJ2&kABAtdv(2lAfb=X0%^IBAPwbsReT;DfwgVoeT zvN9ZWCGRu`dNU+?K$CizT-}17fkr_pfIMUb&d~px^6ppLzw}~$!zOAdcS2o zO#?<)ZKz`Y{?>FY_4mr(q&C5SAKsGaBwZ1RFQ$~L)gdt#F8KEG)99Cm8(V|LGDK@T zn$=FO_7crqQKJJIMo3cP{Cs^!t^PCe`^O%7F*7ihD>y2XZ{l#J=$hxwF+TPrdF;ih z$OA|AbsP@%SkeiwKE;E4A)a|Q9C$UmdR}rU3_nx239~23N?-A7p^>YbznWGpn#kAYV>Vyxl<`T z+{cEh$1s~7K5_`1SO%e)`rT!bl&j4>rc#q?KbkFRZEC-Rd^)g=J@G)pIrrt3C=`J* z=80^sP99A1cO?At0bwEXa6$@G>z#t#pB40qES0yhwRKE_SziQX#eO+1y-_soK$ult z&sCT%D~42XqVXzbj4dhWq<8VcfIqlGBu#7fDhZf~`~~QlP6v=BBdF}oH!Y1UETQc> zY>zuW&BzLTSv)T`WLKn#e!ipSTi%}~lm{h_&oPGzN0%v;eqY7nWiMF7W4i3LG{+# zyq{{k*@=P+?G4G4k@J)eX>jSEPM)DVyVQ>PBUC!JD5O9WlPK#Y_*Alh-3^U@=ne7#Fl+soq#zpRVxW{4JL)44zNVvlha%af<7+IF@UdXUSr`ny*DK#jSKVTI zW|VJ|9Sqa@X1wV;U9EW1;CH&yf*qFYI8z_}+P-_RG*~5#Q?0tZyxv#cCsqusey#NH zt_`H02+u^>#72sZ*u(%Hi5|RcaHV3~tQFa!GFcdav2nD3C=un|#n0ca}suGAhdhc0|K-JYEA^3x1tEH5kC$C@9sd0M0Fq(S(&)!cgiZaR1V1%aJ##askC@NAm&l~-phTli zcFUhV+QMb)+(c{FV(~kI-}_4@dA`3KNqJ}Ao?!bpt6=8Pma{5>Ir!qVEkWWNqWw^H zC=8$PwN_hrnQ+WbPV|^=Q)QAcW7HjUcNOKxEW=uY{MS&2@@PZ9+ji_#9<4p-7vc6yIC{a(btDI!YcFP+y5!j3V{y*$)?peKvPUw`EHUE zI^aQ*O4D>bNUsL|#%s~f6oXy@v0YS2==-fl7TV{!!)ySwWLn(xDKGPciqwzss}$8M zyHQ&(V{~DE=nfLDX6wBES0}Z8aIpf%4YDVvUOJ+E?+&xZ{VPT~skcx0Vr|9StANm(?6vZ-nuoiLuhHlzvm2&MBDR(HR6->dix{^#(6L z7edx>`xzBg6nnut0DvO)zgU2p>|(}=<*=fJ51qU%!{#>Ewl z`mqW`0> zz#)m}S9;gNjcn_CD<>S1vaZ5#8Yq3M@`KQ--7lm7rr?D;u5%m3 zE@+Bm@%To(TQ~@mqWTs#BaV9h_B!CI@H4&E1FAe#@6TQG0#O%qZnR1Vmv!d_MJ%)!t#(Qt<}8aRavnD2G*39!3KK;WIKZO7Z^l!xl0;$_NQR=(;Adq zaK78b?aY}~4`J``C1oO;X_fF9h<`ytmhVr-7cyKiefiJg2x}`ec~`?b<%47Q(_Ck- z%I$!b1X)gj9EtH)PlZClBjzGEZ*30?g^=i`3o=n3aYxXC5KMUyUA-WB<=2NgSJO6U z2WS1N1pIz($G_2RG;Di@xY`SI`ty)IJH3G3v>NGKqs=d>IC;O?R2uY1%u*`R`I-)g z9E*_Q(nG{-U0$T=`Pa^qVY;N9|7OuHalUm9v^U#wL3@tmFrdvTCq)}vNf(WH#d977 zt~4bdo{N}k_jT-xhQmKas!Z*z|K{9&aqh(JB10GdXoxJa2D@vy+NnTN*)nacNLNc6 z(HWDC{mR~ja`>gBPjCb?0jL<1|hPw2ojP_A6Yea!=uZolxM+PWPrE8Gh zD&(M3cyGI}yFiTg2%DLTf^F;Yt2gWP9C|%LH)VJV`-a{{B`Hi*aVTr7>&rw7IZ_m% z?pAjBcK7MAyWKZs#MOwOA6mIq_R%;Xt0p*`edg_)$iC3IBYofe4{p> zOFBWV90aL+WRE^rUFXwDI@vBmw&`?^la3vJsi(A`yof}8O39z)0KfM!>c;V?B8r}; za?MJGOAT!v4Ju~I9jF1eOAQDdo*F3`wYn%dmnp~TIZgmyk|V{p@F)?Z#i?g%%@L@Q|MScefd2GIyHq!nWNFW?lK5se%+#U$bti*mkD zliE^wvn61c)x$MqmDw&}{0lj_(qTm^5CaVlmucfCnSs^5oOzBU8P}CT(jQcq1W*pI z+9x5H#aS=vv_NU3X)@8(3|le&){}3g^JMD0dMjRYj(+_0pF@$hosbs%S@q3JslQac z!g2Gq8O)M^_SFW4KUWIbJDq%Eh?O3RA=XT%!AM>uGqq@#xTr&tyMemfCpuyL)?4>y qHRdDZo^#qFnHpvuDrTJF|1=xzD{bZ*;XEQIIl{0ssIC_+yRd_&Vah8%%_M_9)p5 z##GEvozL-|#Ri z*Lz8*;m6l~*(&+Qil`KZ`Kju$5)=S^iX?Q7HbECljvU9iT9V*A&*_(cK3Y z&A{uq2}AzZ`jN@Wo9AO=WAC~t^#$$j54uUYqAO6C zIo@;R?}sf@fU~Pm+Wl9Ju3BpzaFM5UtxK=+bI|VBPcrabz>7T%TFUyda^NGwELNzU z59&vIU9t4?s&iWx+=Q)cbuS_SSX?U~S z$`$f7>pD=tT9&E;!%%+nZc-G-P_hG}WKkL}Dh@()mnd&0TzpPH7y(?h;A0r?X~C<( z4zutIH-SeDC;vb(rp^v_n$A_b~ba(o$_!5ghu=+*PF0+5lXe%pd*K>nH|nW%wve zpR|SBVt^oe05xHFA;yBH{wgaxZ^zWC^si>hlxEk=Wm1}Hi)Xmy;Xa%vYD}s9xL%Pk zSdbvSX;YlJ0P8sM-CS-0WMQFXthgR|Us0-;>?<9fOnL`V$mO~RxXZ_r4?qE?eE~rg z7Zw&aoW8cmISo?uyi-jT>LoO0roXWP1FJYvKTsHs>Me;dC6bYsXM*Tt&~H~>;B9H% zZI1kn*P(w2+4(eaQgxs4v;ia5%h1c>U0|9Xxv#`Q?Iag5h6s8;bq$cR*T56uS^Lxl z7`K79qAXyR9knG`lu#`Vokb&{!+~`%t zewsT#6KQ@nHoC{o!po5MY&JP~jf}#Z)s*vwSwEvZNSoh;y)SMJmWrQu_7BvWKKJ%p zUb(kfQrY8HyP^%z>~!ppxEx}`Hxd_Fhk=LB#XZ#pkw-09Pom0Faw=Xo1H-W>_CjIG zuFFvO4B$@~0~Uzl+rr{*4cTrFM*p~Gy=@o=yZ3>6Ffd`7&)e zj~&_kGo-2I8|<7O6+wWc__jLRAVhI!9Ix}wRHZr0=|M>}RlVw#V2Rds21i%Vp+#JO zcvS$J8BMYz`?OH>kbswE>E&n1beJK&VsYnv$1Lc3>R}s)o`*K2Kpee;9 zf`u}Vk>A4DCqZJTPt~2yC=NiUDm&LKT{z}Y=Rhrd{0rUsZn47EUQ>873ZB@3&#h=-pzZ3I|>SCf%HzNq)}c#$V=>rdK& z`0`vIZ!WTXFCV`YFWYJaN3`EfBl)No`>&ddq?9!(e%zr>^EiY2OfL)_(hUacQsd;iSf9YuFT zn8!Y|IQX*CB&z3$;{K+EGW)oBcLJfS!z(=66c6|54I8=R*^V{-Zx0@=dPjWTl z>~yGu{&Z7sIbTL${P1HOrq_KtO;Z(Le?RmFP}Bvo=-UYIjw-i6gv*#S^Kx|%yC41s z;Il50>_}8)B?{A(-dJiR>I4R%p2=?1FTElT;SVGSUH>)e_z^~ejj!*zOm=yG2$X87pezvE`z5w2#re7CTu2Rl!?#}1$igzRUai10aVq0v6# z)g9s*6>3ucnOBWWZYDk_qnjQc-W(cq<9^`Txb>xH9vj@wc05o7nhPuJ!5b?3Yhld* z5PCg2Yq<62hQWx`BL-N*rdn<`EzF-O&&8c6KyRCYw}0*%AF8Up!1KF0jZv7l^~%_k zkLQm=)``FCd`um0Bg*YSMvFdQ{46oS8;M`pZojGBsE&mh$9V&=q=fk|t`6O%lvDrc z4=uNPg!!>pt`UsqSxwKiM2O|)zqdmrtGISm2~W(T5nJ8u_gx3Piv<<%KHKf^(H!72br z=?aX)yP%@U!$G&4@HQ5YkK$uja&(tA&JJ@zXNn5qt3vu=)jD(B&=?TeEY+9X(*Cg<`7Cgx2ZpQO755ee7=|<*I75Nw1A^SBm+`4t=T(EwAGHJ zT#7esX}#y43$Y)OM>GZ}TSIzX8iu@^ znOjrh+wNT2>`6xvEC&6nBT&6+qC1*UtM?9#St>GZG=}pR!gAAO`*p+)PcFqD9Xav5 zJ@aK8H<6?L^5uamY%p|l7WImVSX7_bR8MP4*-mG%0eHc8Z|HSm-@*In)DQB+yfKh7 zSDQY>N^H57l0Zw@?`>IJ8~NZNxV>j6c@==X_{l5RuP=UMhYJ=9dCJ0pQvb+TGlzAD zNTry1ig7~!?KSj^MF)Lf(J^DehD~W3F;T^H(K3L}Qt*P!$-jyO0)TYyE=CE;sB6rOARD)M*!Eg8M?@2pWent=PpQf|55Aw?0Yx`6%C zg`PDhmdHfOQ`D;-X;j&TOd+?i0_KOdjHm_lvn}JCo)k9nQ`Q9ObYpdIb(v11_UmRI zh$FyZs?#{Xl&Z|FN*pppqQ6TgMyZj( zV2kr4OG#U#raU}K4R00yIcMI|uG5KJ5NKXG=Lub`Om#7;mTumV|_p@rnk+BN5{<>+UnkwjT5~DY&q(+dm-v~era=VRL#!xL(WW< zJ63tk<>8X?=ldnYW2NERWH)`^?Q?0Oh{760eX4Y9SHJ`T|C*Iuqil7SW*bf4sOMD? z{DSC$qI_fBm5|$A(Zr8ds@{>ajjXF@kGF&L!}zcx#Fif`pcj1;S|Io z(;A`%mA}fq6Y4X=B9HE{v+))0=V0qzZ(OK>*=#jTW~!mXNt#FP-{+QH(Q*fUd*?R- zj(d^W&GNnK2}!*l0$E9~1|BJiCE(rzgO4>M|BgbUZr1?tR8hW}Z~QK?aTYG zh*ksoRKjKxkYBs>{~+MMxG-LP{YLcTHY7c76`9KWA=f6O(J(r)mC@iEZGynexHq({ zo2^V}u^|HuZw~PM41+_lFM0ayO%a<9F;gy?e0ITHjxYB0mU-jXP@8NgmTPL>6!YaT41X>YvQp<~|lPXD{1fpT3jHWOe%PRZmTJMnEp`+Iw zD^zJ?mNJYMbV=7jZmew4*f>h>?)0zwyDF#kuuvQ{$^j7Yfb?@s?8Cg18T6xodN?w# zez<%YD8Bu!-s@p@!LA3_@&XmRF^WwM?Z{SVNhtNZ{y?5)}3dX!P;moVXr z92{WChhD`=vi2m$_HLr+Q&z2`S}7(MaR7a{Z4LXoH+PYDIj=*N_?DU*Dt}r2xeQR8 z^hUf4ZXBH$G^bDM{b+~kNA!h@kC@tItIKTIPz!%M%o{9FoI=ZJ{8q_JO-@sS9pgfj z*awuLyPoREPNgCbF=Z71ophmgow@KrY37=~M4VIyu98;W<_O$V zWNf9hmkY;^U%#q8ttuj^>dC+n7P*M^&R;PKo12MtU({(C-uR3b7&AF-*M-I8YMtyl zUGF38YS6hSJIu8yLQjd}u5Hq#NP{cLD2qyyL?vgBHNkdsgn5sD%ee2QU>i6t9?(rh zOAOlu3p!G#nf)sZpG!PyqEF2TMAar~#gw=JMu5b!^oBTv9d#g9+6o4%1WRiN9dB$; zeXV&qW}KVdzrkX)WOS;)<1rPjI#c}#)-6LPYbQGXx%&NU!TXl-NwUhyY!LZV5;~6r zP0iB;NuM&Rjvu42_6*%3(r>$~ggiwEk9|7=za~E^Prbrc6PCY@Wd6)Vd-h~mKc00l4? zBnzIe_gBv(fu-itU*W}hJ`0KCT=+4@>h^M7p|fA8Jx|UGZtJ`u;p3 z;)JiTt17lye_Q_@HCV8{(L*z`^Y7-$-JH&rV1Cd4QHM&Tk_7~N6_U_~IhE5#O_FzhSfhz$T`$CJPju^KWsV2cfJhMhY81 zE$^eJH|;M@tM`fT_>m6WR*YiR^C+7K<~Sl?<^#4C?&1UT0pzQA32n1;eH(*G7CNhp znN(!`^MK_TG0{7z#KGUK%|G~0_Evs#+wP75Z2hSt=PSVoYhM-=7QR$MQYETTYk5E@ zSUcu+I8kcM4q(FTWQqEqf3>01w<9tk%G5-5V#(T!V(g`Mmgv?60@*T0?*O%Dvg94~ zZ*j30BJ@#{`?R5qzoxDB^WrM0lDPRc*<`4^R(Bdpm>c(^KHDbI%aml|p$U;SPYK3- z2I?qP5liy5chSixg~2OM%IZa8PF^aVJ6(r+u;mzb2hdJuvi#3zfrXzR3VY1FvJJc` z;`Ix7xvT}43Go3~R_~tb=Dv7gH$9KI^pAM*SCZ7Q%KYn%`LvkSOFD_|&bwOk zgtYpn_|;iv+E(|Zxbr%Jt&_Siih41-KP2Zgg_d@br+GUVd&kRo+q{C*mBrMA3~XSU*1Sfqcu8FY+ML#`0Uyp&`!# zqGDwGr7%*do_*_#33)*%Ka)zsJxB5h4uYsZ7nYNqX?wEs6K=o!mAd1TJ2`y+YLEKk z>8EkSb9IDWV;#UuD3eI&ZyUI?Xj5SY@jF!yrX23q%7i_J#I(J8XuVNydiha=D<5t< zMQfMo)Q{E*fTFnR(51M6He6z3WO`j86#=1Yx+4F&1ibya8)^02_gU!T$cNAy+ghic zL}F!n5tE1>P1I@dR@`%~Qb~;oX*JDN3)E(|krfl)q^9cR0Mqk;e3ZjM3Dt1yDNdYm z01U6w%fJ5ZL}Uj~rFR@!dpd2`^!B#4g6Xv_cHEPI->M_G~Ze5^(IAE2!__x+x+nEys<5#f<^B=q&B6)AN;yEg4)YjYJ$qbt_ zU+5LT-u-1-<~^|P! z;t1G%#quOX%Ao+eyiQpmDcg5%>}Jl6|FXa32#Szd09NKR8a5++3&mL}S+qrnO#o_Y zCg4QE%b(Kx$)lLZ$)f<{ zBP1T21zsXISF@g){NvNmRCEj3iA~;u?y@_q^DyEvwbKZ+i)$) zsQe?X4x>$wXwPw2$2bm$i!edCMOG`E!dXN*iO`(!b;JU74#4-BRP`5(Ir_;oyTfQn zeC~Plo?YX&n^D$^S_kSXgc$Kwy}7Vi0^XhMnRDDQbx#5vDWOz7c<<_-a<3592Lv^V zX_lC74~k9T17zkrF`(~$su4bWcfG-@%oGwPo?YgN|%+@dHvb5XMqLzY-WT5 z5g>`uxkObqllF(S7CrD3=t=2ZjLAyfBxYb*GVTF`mtY9;{n0<* zPL|CyVp@ww-V@;)x+0&p9JCcizkg&F+A&yvozRyRq7D^eSXC8o%E(_6_v+ zFg!l0L%9)n|8Oh8Hmj9=K9NoniuSX(rQv=BV6F8wV>u!P`y_WBRe!QaZ0BxXq}s^R zHK#?YiZPhA+PSk(0b8j0N-v!7_-Xw<0;0P>T|xIPoU!f6uk6u zLy8lmglaP>eu~}skVw_S__g_y62O(KX3a!Om|wpRP|R#fVo`O^Adr(70V?zTx`!q7 z^XM%8m4G7egsqT;&<#688RJulWz&l-=Y|;@`%BXKfXLIU^Y9$Dn+wNhY1M6K)$okq z^W`Cz2F9#NA>ClL`{pVvKC<+nTr{4k<+FolFdCG?f;M1QB=T8-kaX*$#t5a}oBK{` zSk{QUP5gUnzxY_E{vJk8iYs#st*)h)Dhm{G4{v&VQuk~c2Gf!=coaP42|Qd?eYMh_ zjk3B`wG6|>UjON5a9+7~%ffdB6}ELC(tcsyetW~Vb+%{bUTXJ;;$YMa6K&2F+mh~{G}{EquS;62zgt`iwp`{oqP|{T+90WR_&SpgBa9S z2usg58Ud1m@$LUOcxRB90@V)1gOW%0%PF%F>ExK3dlm&BjnDq&qg+3Y|1g%0)5yLT z$io>)$K_TWvQ;0YTCTd-cI6Hd-j}L2hgE;-q#(?+jCY%Ra7vojjAiBU-4vz-7+! zbTK}SV#V(j&-d$to=nRY@mR(um|Mi2DbVLpl@xty5C46pW*cS?o~4r{_LP_MsbZGZ zIkoQKJzYM_ErqNuH)__3PiFArwu74|MInE86mT=sIdm2anL3Jv8z4m&pLVkGLlPSS zqUzV$duKi2SJkRdAKksWQTmS>mp983czy?Iv0FP*`&GfirMk`I&@K(RF=}qUr?7yW z0qD2~_roqovWe1<)4IfybOjB7!mt~+16XDDR1u1cGC6^bss&EO-S+%z6fVo?l}E+v>$3P96kUl-P;USsuq z)G8@b_k0{*BCPzJaP{W|GPg0Jzpl*p#Io8h)_qb9jt>^vaii7W17-Sv2bAzJ3`WkS zJnl}bTs?;bN=}7fUFJMD)8H6EJKIg;Been|VfHRO!)+YbV#6Dpq*zl^S&P-WO28Bq-gvDgujyTkXtdSv|k#|8E=1|ab@Oh!?=Zov@+ftIwarP!p)prB5>M9&+ z#aZU!!0iirs#E7O{1)37gXs5r7IsRBs{H2h!1Q%ls`KRty;4RXzm(5ObVCfAy)AEz zwhBi#MNs*?SLV15JT$|K%~D#9 z;+#)Yf@#qVP;wRl)YS+!p4b?`EPeYeM$lA-wx`brOTc`S>#YEdWy z0+oct0~*P-vBVg?I&CcYe8(VZB`~*dhtvD#XUh1V)z;EFa!2us!7rSDHUeen-W#3w zHdQDGUL@vrTrGI`g1g=(eX9(}WYg(<`VWF@NrW&8wVySJoW0ai<#DpMk01$dfy7)~ zdEDyPMS0wGC=jo-<+^?j;h0)^N zx+@<^x?Wr!h$|*sYEXO%8hA|#MV!nYEVl(bB-fI>>+SW?u+dz=F-oNEBxHXnSm3`p zNm}{eIiBBrU&v{{$m4dt*UMlP@=AAJ%X{!wfh~;q&YP&vYsC1UX`Ir~s-*`h6qho4 zCoT51mfjXjZHKp1Pw6PA+5G!!J|7XywcNdF_@Dkq>zI^JlVjB-Ff~el0vt5yA=o(E zj?63LLMDIoIN2lQWsS$}a?8Pn$nARSf_1>{f10;W!Mk{DB+#f$hXSuZ-_sIBYyNp9 z#Ut*l{;Ax-0kzoQ5N0Hb(jE1w9ZdWn`%&`e!hCMW^pt%7PedTDW*d*?a_Ar=v4%qo zbCqj`SnX#9`Ez?3a)*I>z`;2ZrZc1k=w6U?M?PDgS;)6KWCj=IL z(Hy~J74tWTjf@>@PnF6OIu#8wBA-)?FPod;6OJ|38BT2wSx>M4G|#gm$?_%DCI#1Jr#$7Ei?WVW_M zopc^KR78&pG`bM2YEugrt@R@r-4IvFbjqZLCP%1_f18oSmt83fjUElIJE+#Eb{U>M zEyje}c{kIoP9IRn{ua&WY0-GVou`aDbaauw51AbhYNz2PN%}gMU%}CO?BW{{$LV)( z&4v4NMQIS!T>Ywr6!m4%iu{5TxG#fg`XoH5o1@!U`m#|Wr?XcIG@Q;-PjBN~`WpON za?xeBi@DM0uY+7sO8yQLQT8Ea{(QZThvuGMdVQ8ue~T679wLjLR5tvw**(42md=FC z7ySO4kYK?zqx#6id4$^3vC6!p~+msdKzHt8l~2sz4(oztXryWnM(9j_wfyR(0O z#7SFbURw0NB-_yEwZHP8xZuLjBJ}0eYFe#{R^1W!*sA3hmj>XOUkKc5o{`fm*Pd02n zyP$e}Pp|D{Yr_X1Z=s6`)8>3JGo|?;Ve$xV3d@BvRh%`ysEGjB*P7Q&fwfVcv5HYn z3RJ$_=lgZNJ03IJzncD!`jgEJGyw_mS2t1mN4WN6s{MX1=#;X6OxbP5fREQ6Dl2M_ zB6S)dr|bRl$FwPL`M7;g2E# N;19Jms?@Bb{s+EOd=vlx diff --git a/src/main/resources/assets/hbm/textures/models/missileHuge_HE.png b/src/main/resources/assets/hbm/textures/models/missileHuge_HE.png deleted file mode 100644 index 2e647789cc077d6f7ecdc2b6f1d73bb3cdd6f9eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9365 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 diff --git a/src/main/resources/assets/hbm/textures/models/missileHuge_IN.png b/src/main/resources/assets/hbm/textures/models/missileHuge_IN.png deleted file mode 100644 index 0cb6be630a4f4dc8eb2c05635335655ff6e3f5e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10260 zcmb6YLvAN=lf?|q+h&vVW_=e!+n%}w=bsW_+r006C_f$ozV81>&naqH%dP1HCR~UtJA^^Y#Fx1t08Vuhp=%^8#4qxm(+8FrE24w8{6}9t&QouD(h_PAhNi$Kd z%7eYWw+_?Af>XX5*FCvJR_F}l!DU|sMw9efhu$Zy`lKYc-ib~5)&iJr{X_2Vy;1yf z1wWt6?U12nXIAPAk9xm1YXjMu+&{cjGlTeZw)p)&?r!(ekUu#^mpg8_q4kXF?QvO? zGLJ{I&4w8vg)$}9(k^Kwa74(5|>PhQ+u^hMk6S{88l?Au5OrDHmEwX z9zNU5o=^hUFtKQ30n6wwp5&H&t@JCzT`ZAn1h0SB$R6w38VV_#fY>-_&o<|liLNTL zI0}$b7-Aso15yZJ7T$pc+?RD3VaFzKVj+=Zgbk6vIM8)Lrz!fqTZ}ULUQ~Y&?3k~% z#sw&UP*S><&pv!a#5PdJ5X6?y$EOYsb!6oHY#q6e9d4Zl~UlHP%sQG?rTSH1&p+UWdGLQQ|6fO`3)D$>w zI%wZo*M6oLveE!(eu`@VX%`jI0R?hj&#cB~?)$0Z046g4BzsNf@R|rav=otGyAK|~JkXXwfTAhFv z^u0kGJY*7bFiRWeK4mX$lEY3AIG5RDT{~?5A#5-OznwO$Ab)dCwQBbHu$yfh!ZQEJ zI!G`45b2>JH%ZPit(?}K+0@e#XReVY0>%VXI{66A-ynn!zE;=Y_Gsg&7?#)p2xnyE zN*#EDtkVNakQzLHp;9!$DeI4lXtv6X>5bc+eu~chP2E;Xi8q2`}+b-6&;`Po}hMX ziMHlUPNLvH@NNrf_wa?pylP&gQ(a zuzw=yLRSz%IuEZ5MCST;9bGpW4A(Pk{;_Ly54&;AQm zDYCmZ^MG+FOx?$;xn#cSWMVVxMr?c}gRR%bt@_Pm$VEmK_0lRQ4?b}1otCK9FfmeL zKU8y%O$e~bArJ`3__O~Jtw)H_^INeAe7-hWv8FjgE~}FFYP6zwuMVI-wmlcr$_MAk zulL?I;zJd=-Z3mOwVGyzA&r+n7Z)_Mz6|Ma02{x9ip3H=GPTyCdge%%XxXcyRtC~o zgAZ38W~^OZMK}pMLR_`qIgXa33cvA18t_vcsj(6() zGEBB+t~H)o`;(0oO{ADe_0w6}q}Ip;2)fp8bFCKYJ3`)hEognH6m=Llv7V*mdrj1% zae`m4ER;{}BL`~nQSna#Y4S7Vs(ef%JARQdI;ak4J*9qEkuR|(D2g$zZ%cWFEm$x` z2h>lV9RB+q=d;a> zOPtf`R{=v?$C$C+@PEKA?*Jm(=$AhBegv+hp0Hp#pLb;KAPMVsm*K*4^^x$@IqF}% zGdtES6NfTO10&8iBHRT3y8ir@MBU20Qb_rP2gzU)&PJa+qDhE{4m!8E=+l_1-ipLme zNKe0*il{f_ei^BmtpzE2y_-W_rA6gF9=scOa&q#s&6#c=(Nhz0b#W%7AT~pt4AGv}Y^51}-GmoMs`?6f`yp+dF_v3; z;M7n)&$he#PO8Jecpl2W=(9k&^3!$Ot>KS1BX_=%Q~~cTZjg9|bGqnVy#A0pIXe+45@FUn zJIU`q|CEYkJFJTg(f3#wo@9^^>A9<*`X$ik;rU_dPQ z8#~-QUm2PCqwQ|=HajxMOX2r5n}I6tEk=b*QU4sn?#Q2g=Dprp8KV z&)fuf$%uOzl{>J?;om2w&H{Y`s@^}MpvH&pz1-dj2dneL!GKBxe?FcjApptzLAyFu zV34G4ZZ78T|9*PFdr?LE16>z*sY(>-Q?(XWlwTRxvhdBu^Lv3&ij4p1TPz*Dp}F54 zkmi3xnx34PpnnXTrnrqUU@5uY!tlHWz(%KnnHJh0Jf1$n!-LF;!*J8v)0A-sO>TQT zcHD@L^NmKC|4Q<=oU3fiBch zm64mCaYO}SB&?d8w+D+%%aiBVo6zQQG_QQH)9DDxbv9353}juj3S!`)Rl%((oOLe9 ze(i!4WKVGJHrw!X&-(<*!3?>CEH)3G!T(*J&#Ttp3P*;vWyOokEXE;2en+Y%v(6kL zGZ=sPfU0DqH8jpe9+MEr&jHOK3Q#*J_>l0Fa-CrPJIPyx;TPL@Zn^uJfjcQ1M{kj z=)vdYNgSphD*RSk)&0>NFGBa|4*6CNgT?a55$cC;&AhzS-8D@XM9e*9VwSoe5@lO5 z+)8+vzuhLzRc%{uo73?gQ0%bU`g+;B<@Jc~!!4 z`NX#p%`5K~;84DKx#;GxjYQ6G=BE@<#R2nwl9JYjF#EWW5Dl7&;Q=pi{cL4?tpVz!KXzIbHJkoc<80a(pPC*QRAmRoFBsa(PyLuaQ7+SsI0iB z)-MJ&dZsbCkj8P^Y#@cAUPZL`H6R;LzK3s_fVvVwhKd>c*1z#19ZkGn_9CYkKW+R7 zx-#UEE~c}v3Jsx;j&_3A2ezz;%%JKz=3n2PT1hDGq0y&E0NEaLwtN3^_EOxI$^e|$ z3K&3???Ig`;+}}uQGoQ{j?gsl#WltD;(*oL?Is!V`#VT0fpG2%+Rzo?Kp)AD%3Vb+ zy3f6cdp4Gw;WjM|bw(S$imGCO@FLmpoK@kOMjHz_k!QP_A6z$|G>ue6mj|&Gz$N9UzQTBl;+0>aC2HXL7*N@S%F%Yqxg`gc)na7JH4pMWrW8swZTV zh3YZAnQCH!5mAjMP%tqHFvEMF*u1Z82<8Fvzjj>E6hqmKb#{r;H1`wlPx-^5)9eY! zBD%NV%U6j+0r>^KOX3?#92WaM2eJRiq8ig;1LXQ18u=DWJ5~9 z)4s+}}>>L5_7(H9^S?O(HLd#7#x z108mi#39`A8Y3MBFQsEBpH4I&RYdloX?8(_dCdGBHi98dnPl_zN*S*`7dC?kUgjKx zVQqyH9si0xsD6cvRwF#DZx}-!N`q7*p^#OWH40p}OHq!{*XiIkVfaZWb{(pS)@z6g z?Yrj~5Q-J5%#?+6Mg6;v)MePZ(kjv~OM@teIk#FQCVysWZMKR0^`1~!B(voCcR>w$ z`9_NIuPif2m!ds9=TJ2}jefv~3+FHKwglk-`3plJ^(~|%VN}>oYqY_#zg3rKhY-R= zg4iJ%?7rnCv`UYyDgTaoX8fu}m!1$ljv9;;m=V;;-wE12WKthU3+T8LJyT&fDM?Rl zmF|&~gt(sw>ZsJ%wT=t$&cL>gM`7A3q;uC^Fkl~~mI>vSyL=zsdr9Jv5n}DpnxENh z*e`|~v5bFRgO8vkf?X|i+jLG=@=u(-{F8@Ma>`hyD$23?I#4z!o5Ef_p7>+lZg)-T zfwhof(2<~>HBQ}Zd!MQ!gnuF{B+uVfe4>4@BzOzcgtEywqw+vJ`#rJ>>pa>24Uw{B zNpmnr(U1SWd*3+Fl@O7vnj!aEsUXAb;z?%6i&4*@JFv@$TyVD?<7-BAo5&pp*)Q*a z7GR|!?8hWN{*6S+f8R|I7a8EBGuQ96(Vm&Ao|#P!eGa54<9B;OgC8(1`Yq;X%eu`C zgT!t(w)JYKpr|$$-Xil#ZjOW4@Ar#*wcym-&l;x&K~E}R8C~KtPyh|$PPFr}Z&taV z#A389^>?)AaYtF$o*?_xb1ilT2uwjKYv|tQ$*z!opWMzVhl`brD{M80P{t?YUO?_c&>P}I(ITM2@(86Zz61sMvV9Cw$Y`|EtFE9 zYPo(Ozj8qaoXPez{@-U~+xG%3!=N4-=*P>h`88%f^l~l5(ADT#*n&_SP|{spou&^e zqhj)Y!ul`Y#M292MUwmWdX;DNf3z;TJ|Tik0tX~=n8XiWIV|w$@Q)k4Y*2@%EoTWC z`%?Xx776X(BUuPqJb4IXdAks}ZeAug*KzPfSQW1LRc+Hb`Wf`wW%V?WHO5ZzIV_;9 zlHX^hBE)^xr10)EmKzq-Vi%9{4O1G47cJKJYaVerqbXLM6zG)x#z5pPeaiNRNb{^M(E7{*9$*&Ru2k=><)8U!)gIGg zqv%%>+vZiV-KjDYp~|DcE!p|T#AJe*NFdg-6o5w$vqTtkCF+QQ-b^NQSJ#h$5aA7U zH`+;a-l-?NBQ5rBtNo7|4@<hXhbj%OxKkj^sT~X@Lb>#a{Fj(dq2s}25e@F`lh5EGv+M} zZ95fvx;s^cXy2wP!9>*`EQmVsZePXBgdu#PdqF`#>k&pgJ;2`Nwy%Kx7l^}2n=)rV z6uF{gvW$Cg1H;s63%af!e`fu=82BS^pPWx>Zk^hxl`cm2%WpaEn2+(M<;sqJba5lC zCpWR1zdS^Zg9jtu{R%i}X{K#6$%bP<>xi%y6kgh)W?Rnh3zWPov!CcBfm%udM&j>p ziEn}VqvVGCy72e~y`Se76NfyNLzteOKaWYZQNa5gU$@piWZFVpnPdi!JfS(;+F%R= zTZHDP%R4#IB@G`&C{==34m)(hGcGEw&%13M8{z8W~u`y*2rJB{v`68 z_)avE_H#h}q)<#7zcgtLS@9K;me-wi1{>ONECt={yF635^(!&cwWJyE`Sa^=?c-lU zl`P&W-;T)-5E*wub~l7R^V(a&=pXM$y;)WSYbNd5fh1ZVU$X^>?}ag+1}<95Dn;?qdp?VIEDy`;s` zOv~Dc$UfgE25>1uJUKn8AYLPGax$;o-Y1YUsTz)X>AcuwaNOUWJT2o=X3yrmO-x-; z%9Hq$sUzH{k~N^XJO!Ma8ZwvI`(T+rKv$DNEMFWNF`5tVG#mT(g;zH@TL3ANZbFR_ z4FL=s*mgP$jC^jw_txoAO7@os;xI4!IYy1QC?Q!ykKL2v7!r1sseo`DS>pu$#_jfx zE)de5rkx%oF?q)sCjBo}>rFARgae|1X{r||BvYUKyE3M7QY}aUcYDPse$uu( z-SW^@0j*Z81Bp_n6}*KL1Tzpqc`}I;-_20ACpVEv*ln~66dAK~IdpT4R{9GGHt*=QbC?SCy3khanL$cZSN2Px!;k!B zlCCd!2BaiyJEwxtkj5Uf!gh-R1^Z~f48&M$u9Zr3F%#}j$;XMWdX$9=$!HpcIr?2~ z{`8d#{a#%PADrEVwsLcCuNnq(V0&c8kH>K9O~`&I)TxHr&(F_)kV9`I0lgV|a;0uf zD@$fm-+TkTEZYGnAL~~Hb=X|(j9d}01n77XaveVhqa>~s8rYP-!{gqu+rTYHV9@JS zMw_7rs+6b)-h^q$^$ycKAod&}aF1K#Z@dhq?DD&Qd4sy-&FQH94&u#m860@EtLtPVq*xTiIwe)F2e#`}MiPIsdD`c3 z)O6{|gB;HDnt05%$2p8s45ANBIVXCGGFvjpkJP&p+%QPun|>n$a`+Y(YPhM4Iw!K4 zbhTj`*ZAwhB`Lal1+BFwsexc8Iuh>J%CdOhF9UKWinFGr#r!iW(L0k?)ZDibF9-$_ zAVR}Rddn=i!QsM*7mMxUH~6fK5SlPBX>%mR zp#R9L!Rwk)EdQ>sG=l-!@oh_0RSkKx8aYOg;4Ylgbl4UtoJNS#0}`{fWZWp-r%0!P zobB8?v{#oIngN~qrYo9XP1LP_HgC#F<3)jmU#-q%8uB+jZ2MJYM$6*Wa3>~G#_(^;^*_tM%TSH```0VrA>1nK;%{=^FiEq* zu#&k-pSXO;(;iy?OopE3juhfKIct?ifvRUIXY=z2NI{&R;hgJou&VdP9oSaEuga4W zsOD^3nncUjfaMC)K@20^3ASlU$|u|jb=yy7L1{ZnoT=+(r}$p-#Ro6tOe`WU_ROg8 zc5+>T!5SJ7C&HYWfB$W^{0{*$F*fnhbH$MqL?6*eH?}_vVtXB?-otonE>TozI-*hg zF_%(!R>Nx?##98?0sehOsr?!|eOM{LVSGE0=#iIwH>gD&@P1X3qCZGTo%HMOPJ`Q` z=+|+6~5mYViL4n20g)`$nBd)*wZpWNW66rljekQgbtODkp&0 zxtWK|OMwB@)L?e2onA0VpWnT>RDxj7!jZ4eJSInNoP9}QyrmO^3TGwy!p%C6Gxa>t=<1&&ZgaxN$IEJX19}CWUOYz^txXhNt^Z{w-5{tBtomhg$1Mdi(=Hy(>`eXL z!Wu4i2*l51qid{Z+lbM0HsWGkbT*Gz{1L59xmdG}EAvMDl%nA#F*0RTi_kXnj_mnQ46b-$9z*X<(_z3%)Qy%AHf&H}WXwwpwEjWDSvtlT8 z`4@oncr@7fuVcIEWLts<%UwgbQ!bP{<6JYZO`C6kb#^9TB$VcBQfG`Zh8n$XIKgV= zuN1O(QcU_C=IJJ72Sdf^hwFuD8|t)#DnYLG?$=P>t1s@rBxrAqqxt|ET>Ka{`X~Ob zXHG$b@(IvRLBCeZIj?a&+&WOT1Iv%373H+6fEr^Oejtzv)qPmp}#1O8?Elv zLE~a~vEmaZn0ftewIJxq&k73SI`Gb1YwhYvedD_d^eSwa_V*T&AJ%p!Edgb2N@M-4 z6arFKhx&*Gv{E0>t}@m(+XNj8ZlfhhN%?gSrd9`V)-(>TyK|Pa67=i#5pm9w7Jpt? z6nSy-@JTNyxb_;}n$4K^&aopjb-(H&^ebGQ-rJ3E58K)mhL6|BF0;0aC@S2tAW%GNpiS|skWgt_Pi`Q99F#{KNKTs6T zJ#gnZg#O*6HqdtXjwct&Vk{6zzY(k1yW!WFmyiEzPKTr=#+7fP*2|;c9#b-Ypk0BM&O+5LDk8lGVc8 zE64!D+tp?UQgZ@N!%`&e1ELSPQp;E)ORZ3`o0o-8502lyu8ai_&0)l`6dvXCLp!l^ z6oAWr68=3DP&S4cinL1g-Wzrdp^O;&n|iKc#jtV1D6At>wjI1F?)!K2M=5!ZX;jxJ zI6mg!F>YLcLqH1ot{r~N+R{0>R1;@K!c{~BAd67R+a1|kjEc8hg$GqlUFfhsXhOK< z$$*PsKbt*`$IO}=u}WXw3+R!%p|hz+@*DRo7sH!K68V6NC$aQhIg962c8hDPApb4% zKR@rM2FFP`Txvih*rdl#I)w_=jd!@9~}L+;&$# zZNk4?88>+UTI1D~Z^J~*o5Fs_N4VvedR^9-IeB)JXMZ&_y1l8TSk&5yv8JTS!L9M>&|g;ke;AK4J0QDdMkQ&~xg&-bGc9Nuntxc`ID{F_aS2Z+{=3mgjnPQ#~-|3VWR;eg6eN(iubk zMYer0otQPTo)LhX+Fl_pY9k_Y4?IeG7-VDlF|@M-MBn{9JAYPKVI2nb4AATU}G70YzL+L^}8kul9Tp zkM(A(Yg5_nC#Avi!ty^;&|bHyHb;>ko?^u0IsIBG>0(;l^=y(?LqB0&^=>_y^|?OQ zm~$^y2>eeO`-|c0=^8l_5F%(I$D2guZKYbXsC_jr;Wh6AYKF|weTSyN)TPnxvvUKiL@ zu;;jPOZ6dc8(44>PvKu`Gx$60{0mA8#sJQH80xz7Pj87lj#yF`pFH%tAP93-_ zXFt2eP5qM^5i=Mq4UiJvW|F0`N(fcaG!U@rol)0f7WVbJ&qo~hE%eOl6XAf3g-eEp zFqn*vWt%!kRq}`12p99U77b9Fz=ccf00FWSG>38x+iA1d{+T@yGV)B%DCXno9cZhV zu{+^5acg-Jb^GIST|Gi4p0vb%IruMX5rbktz2dg(XpPl8{QYw0i*kN2pxDOU4rJ&Kk=l2}Kzc z+D{IghxtaMtFxOyMwtok<(iXwz7@gN&DU>=5lY3YA54-us3&@`K}c7)5j?;lN_MU; z=grv0a8tB7YC#2ah-F2;8d+${tP!QCZ5@Ze5xx8S~bg1b9m7YVw+0*gG{ z?_YT5>Y1Lo=EGFgoIZWJtG;WfDd1sKVFLgFJS9b0&`Tfu--(I-avc!27<=hZ-K3SY zF<%aU%ui7O06joSR!ZAD=OouCfknx5Ge2tFf9r_0W)Mx0-XP5yrE_`U-}vb{DM#PG z$*b||PibfmuQ`m~|C@A&UvVs(i=#&H|N6JNa%k}*VBcZPTMfr>TuD9+Z5NxXwDV{p z7Sl}j=}mqtJCj+a>0KPCqH=Ro=F@}v)H4ZN?ubv$|Es}oFoV{J1rxGIVz_(s)yk4f z?Le4PFj0pr7S6FkiXzuZ!!)@8AZz$f!q7D98NqmLhVqm`pF9si8osGU%UJdj*5Pu( zQ1RRCFnXm6Cxq109)xGAQ5thpsC7%dEIGo$HaxGi;+1aFu#0vqwNjZKNLguQui=&H z>}dusif9Q+DCgKLML|j-VW?%SG8|b4 zm|R<1OC=R)VLNNAJOjkdf*P=ud}c8xYZ?%Y7eN=|1#1b@)80Hf3-Ym0L`WrhQUM|; zM>I=FQbF#bwEVa-bIAS)d&{T1roGobqMQRdz1o@mC*H~x0q7qRD;IwY9baC8c!q}+ zZR2^-Z)qtNe-+Dr5)VsM6paPOzr>;w)`ve^%0TgAk}}3@oFm4=h1Tk{=%9xlA^9u3 z;EhNj3LE0{6#U{1DI+$yIX?dHo}GcBwA8a+L3F^V&)d(jFD~!zxeN144^uRAsLWy4 zuI4H+9XbpCd-2qTYi}H&ehBC$K0sZ_!gQ!~YpUe~-~1O0TUvll)el z3Y^UTg9ooI(KdMQuqlQvXAiK2g5rnA<2KphajdI?QbcNw3ZSP7hTWyjuS*f23#3Pc@$)5=EEr4%6xuYKkUH11<`K8iV0raIK1cLm)Tc z0$F`pVr%TzOMD^x8e*{uJ1bzAV8Vax_Sq9vsY7e{m#ron2ot2O&2CVl$fI1MD5SDS zsIARstD&o_Jr7D!Cs!@Z^wstTa}E|)$l4qatXl)CN!J&Kli&}vdi&)faU8a~M= zFK4!iYj}!n2uw>&ZM+g0SiHRH$KfWiiwWB^LP=UrPy67fLO5)7lrzQCW>z+5r{}Y# zckKPebankbHvhdnE#%lEc-gb=A|Kjr^1N7M)X~-TWeV)U#s;Ge^~t-w7@>2jv4|m) zlN%yrZ%8E#m2%i!jMql+x0OY)qBXz)AV;HVF|=Jwz^ z=zZS!X7lKsF!}1wo_Jmfo}Rz zBSBCmD6@!eWFT5mC&kq+DQ0l8v6#&vDwT2=Xv?OAJxhWyA*AD2|9;V;oGPL>EOZ#i z%EpiP9)C?NvLJ6vNc^g_XXlSHXP_VrWQCBpod>n6@=Ck?YR1 zX92^t>uHNvn3mYtahGZodOGD+Lkp-#EiNwB{#9B)bPm+z_oG0MOaWix!?eV^tFDJiS!Aa0@Kl&bdN3_{!qKs+n^HC00v#g_n$X~D0z+k^_K zZ*oD_(N#hY6qTiaN^E0Y-ri-DrBn%pN=cVf?3L~qtLxS1t)2^IfEP}IxHYr{{eo6f z8ctv)?z1H!+5`blNaApJM~C5((;P*TXA2FlyKrt6%S9!F0O=$l(8lc3EQKVfab~VQ zq@pXZ-M%*pqXhI_jGL6OFfZHApi_jU`TosF0aeGA}M$>kSBO6gjOxyqPX`cMIh%+AzQ~%*zWBZe1@F zgLB_T7Ch61oYB|5O-|uG0tiE&U~5H-kB)A5<3r{Zs~LuF0?}gZ2P*2>+1&`F&rS{) zftmjPI?4onoFtJq!PP=bI@XINwQbqU7{C?*ffxl&=Usoo`3iVaPmD(fZv#*BM4pK#o%BH&+(kW8O4B&TB+!Ch>7-|yWO77wnk=HiJTh@$XL@oV$7Bw$eDd?B zwZXzajXo0)nmy0ga%#>*l^LBp0lV1Q;tC?$O4L1Hpb_j&hpM1N$Bl%47?A!2$Ec3i z;cH-!39H?tl9H0la+oZ;P3|i$Ztgk;`wX-biYSQ zff3P^Y1$@jT1c!Fncw787}Yd1qU790u?rM=1mN6kI*x>ux*ESvXpH5RvMlFwTnF%j z=5D!zuJt-OGK)7tJ32qaTUk-Gjtu}0E-zh|%AiD>7~$*t$K4o^ouSwB@Vf?lR56ym zhk#!CrT3kxTfP!-aWI|4Z=R$N*OmO3#L_VkJgUlf`bla&GZa-A^~Lsk={eNr)REK0 zz=-Kk6%i3rSH?GB{J8oQ`)DtG4q^|8}M}IrG_2^IeP^ zrH;Zm8Xnr~vNovI+3Dy+59u}-U`)UVW|Fhh4GZR~buNdFFwm42maJE|vFzQ_(tkkL zUyLa*#K4P_R9P_=wc{lov8W!5w|E;;BwqqT+DU2zadl9POz`TvNU|^F#za%M8JTqN zwN*AQ;07~L2vyl7yOiU~YuCe3P2{ZJGB+PlD8MIibKFE}*N}HdeJaur3;yUZ?_vTx zK*nF%c%-hcbQ;hTGhiyY=gkjU8Z#1 zwuk#HCf7V7uHWq!x>SRw9j}K3E6Wco4Vxz_Z?yhQl#G}7qPiKlM-`OE4;L3M)1rdo+uGk zSy&WSU+B;6m9iqrN|`Kdi-(l za3zCollo~O?f^>xcHECN<1oR$XfNYI)g{L=MhRDDL78XXDFdfTBA%Mnu_2uLS89Cl zof;c|YfU<~(nk*wH$fTi6S43x{Q=;=*~YIQL_;xL=u_T$obOSdT5o>@8>=}J=okFy zil0VNi9^z8hJoB21Z^h~f7SMBn|+b&U^G$KmeRuo%FRv8;q>!Kjl;ku!KaFqwbTYn z+gpp-`A~&6ZwAH4hWE6%T8q>5VX}0!^4;I4DlVB~8SMyG+vX7sOleFfA8b+UeF`w_ zH{GskO+*3nkx^p%?;O{9!N#@%N+P^-o#l@nR4Da{1N6D>_7KTR`}8)z2vG`B6B5lI z_V^+y;$ZG*dr8~Liq|&!vTO@(i3bLaX-%J5RqSsq)!HrM3Eep_mv9=PbFXpemGFOa zadBlGd7K5KxjpAv>3d^B8+_H__l3kb2k-o%M6Obm18i4NRJ()Drl1sIss#?s!vMwB zk;n8Lui$7B;GMT}pJjEA;L>2%ON5EyoU5v$Qd$wUF2OFCS;NtnTAM^lcpG(Q^K2=< z$f|6s*pV6kQCe=19y5bH@Cz!`$jAmKp{IpD4lOTnWa1`4S}s7!kpkoQ9FOo$i8gl9 z5#hRs{fhM3DMiPF)>@t&`O4SppjtC3VRKvNrKKW)c33JCXgSfPb`xxaoZ@x$ zAwzbRAX=*$fsFKD6;Bq7m&PrtA@|b@vfd{a8qlC44K-BtyR7i7o7WGww)|{#0@i}>>%`nq1;@Urj#u^CB_+!c-b&(ZIv zPdEMwb&lqj;$(!(C&EesmZs_Wf*T5Si~op;P8o}O9=ut?2EE}J-%T_aB|7>0O$9bN!I3?{$zqWN@#ya&Ok zL7Ve4DO$qzO|R!oYO)6?#NUGR4xF*B5?R7)D;AC03?Ulwe9 zvfML)&rjBvlWjd~5s1GWg(xgj4-L-c0mV2l2zZ>)X?((LUea}hnHnsFyQcf~bfi(} z({oq6U_Y?c zLprDz2+RoM_h<1=CbrnK_(6}soL6Fn zbh~!KF#Da|GxWCYPnBd+M&}5?_l@v@oJxBD2480u`a8j}g8PjLnBVm`_SyiykLyu3 zn>f!!c7syymYi7}j`2|1v^zS{KsSoSIC1$$Ekg@gRn+PJ86^r=xallprCxu$!_rg| zJN0qjGQp(767k$WyCiS3Ez$17{3hG?3H`;zoosrtqxyJq2JUYgUE-I>y!EqYc=3?` zmY6RA0l3>}#68pH0dLu5y>_pUh8Fm6et){HCWtp@S)ccABf;atl{v0BmMS2iSlq*l zU-vU#==54PwnVj691+RG3YYwf5EH}sp}9YK+s%E}Hi$MZ_J)Ayj>b2C%VoV;P?E0D z9X_eE@={zGYhoDHx3=xva80zQfl6VeiR)laDq>qiCCn(&2~Gzd?Ot2|>#iC~(LpKmgkChB3#{rV@6>2)>LqyLR!n1t&l@CF`G2&X*-RqxL{{4Ks zOXl3kTC3Nf+sQs;_7P!iV0b1~heZi2i5&Lhn>v>Somuci9#0fNk~;=rooilj0U`4A zc#Lar0P8&Y42rmM7^0obQvB=OeH@9gTR5TT^#ey9hT98I?%15}bI~sCue^R&5V9WW z1%!MC@3EaCyPk;a@0X4$DBD5XuOw&B6udL05YSZ~$+M@1-?Vfu!d^rJVqVg^uq+2R z%f))3%i4CP+BASR;p^1ng3mU%Hl=}Wab0X9+p80f9I{rNi8Oq4JElw0wMqeMUvJE1 zN4QTbH~t#jQ85|^s-H1$o3fSY3jA*NesUm{iti5q!9-i}@F?OFAB|bm_2MMLJ56TO z;KQf)DB?bspU739`loW?Gde$2KGI>_iqQF&=PY?PHD9E3;~v2(A3tps%o)E+B5;{! zTf#2!r7LD>nY6y)N-7S+7d|Zh)v}NeSv{6Shy|p=K!$f~g@!tE29M>wQ>xhkn9T%k zCka2vepP$qxHxXcIZS;rFgjbl=7c)VB{ZdN;!$1softG#U?xJqNl7k9;>x?=L}MpxJr$WdQ{{}NPA|L)0a#Pz77>xu2+@~Gq9HUJ~5~& zR}giRjQ(4E-_y);$*!}@ts<6=zS;I+ch+Wx;%94exqY4LN!Z&HpMHdb6+S#n${gbtuKY z;Fux)Bui6su1$wyfRzW;BzDauHbKUb`wKE#u!Jo`ZPHk zwF~*pmu;+I7F_f+aOyF1F2nqB)Mu?C90K}KuJ2k)`o|%67nGEi#5Z-FW2bL)u%v7~ zx>Ywjt9=FnnVi?3=#cd5YOhTxfjZ5;ICR)C+P(8DbCRy~NY~VCgtP>xPo^pzq!k)K zfb)i<41+B-32+TQVt}AgTFFq8fw#ihX`qm;452%5mO0ioRbD-jd_VY8E{1D(wIjZXrfj)o!ftH`?VX<4!Woa6 z&QU}I>F{E+4kM-*kxK2_zmG2ELk-GHUYaI6Qd?Q-E+-(++7MoxTXXShxR(7hDyNT+ zW4=1G1BjnN1U(pQ8W1jksHDJLEwj*4=KONVtiJs93%{&_wcijfJeZOJxMUfhL0Nme zBA>wf1y+?hc*U94OzeZ*{HM8!@A)k;KS0Ivr|##SGDk+JbzO13c%p^MWHaELfdJ-KG5o-$AR_TAj>LLU}434YZ)$ zM7+g|u9LdFG<2l=P~(zzj^p^ZI@b|A&3HBO4X3WU(vI3S{#``ED!S%A$YMC(_NlYcvSAn%}N5Swx*QKkzc|$y9j|3^_JM8k@X)QIhdOvbiR^QC_hV0 zx_veJaact){ysIXd2Ooh|G^<(M8V9>2xwaz=+7Wj=i4cQ2|XWEo=oK-T$GF|(|sB|-{*sp+bRg^Ja?t+qP;~Xv#$bL@@_#Xv1OPSMXY> zf0uohhj)6VA4-oP%?O^TG-P~_{$&H`0|1NIdqOw_m!(bVNLL})lb&UJT$*OfMY+!I z))StB@D1wT!_Av=L#D+(t9xzrMfPm&_tO_O?e|4M5mUTAS^_m8;@kUmJ^}($7mo2c zjB$CT8ali}zx8z|3hC*W6olt9{5MI=vEtSq9G~?C51yOczd94SR$eBBGGVU8uV1G` zVdMOG+dp_PvVgf|pL5xAf9R_c;PILjhT?y=K%W9%t43#^gcB5;qAPza+$+j<#fh)+ z7C(i)Qc?eTZ519S`edxU!q4aX;pj!7pYZk%JUXcQy=i+5$4&FY5GP0=y*irxzN_E& zF_yqfs=cMkfo$~{=U%X@%9J9Lp7c04;*z6`mw)^p%sD5_J!veXRO$KQF}?1UYEt0- zom2A`)`_r&=iH$W*5V-*$`#EwzIu%e48c^ie)1O`crhtM|C~^XSUr2v3piPsI>ij9 zKHQ#V^bc6zu1ww22ToCR47;MAqdBLJ^Iq*h2<<@?>NEGoJ|Ak4)Gq7WpeWw>lh^jI zGh%EI>2$p;O83fby^SzqsK6|BQn8uujl_qK!;i(s2?@ivRdcqpJ$ z{O)hEygpMfb(3mF3pPClYo3I2H4knx|JYoy8Y)KeQ#&uoKr;W=NWc2yaLZSj5=2L< z)6l+kF~)<^L4KUrk?XERD;kBz#;r$bMp4+=#%X?>Q$%8wvNWR*yEN>UNl00R1sFoe`q$*RzImliqQfy>~PV*Tm&vIcO-X)BU zjkTN;W=3c)u6;+~Z26d&VZps%&l3-yjWD7JCVGfYkInqgl?Ra6N=*DRv*m5a);)2z ziCv{#d7ji!6fF0M(TkX!%+da;Cz3amTdEZF{FrZ_?7TF}OiTTbAE3HPN%pyK z?R-a5wsr@Pz31^=_zmc4GuNYfH)*)bkNYJ@2KUm5^|VkEO(0;}D(QX2ZR(`wwbcuM zM#$!Taw72RoDaiD2VhY4FkIS*cQ7jX-oSf{&&1*JOf_ObvrgYyubj;8o$l|Pp2J-y z@2?{3Ued{QkLT8peQsN;D;fzsKEUAsYcs{BcoiuL`kYo(Vg|qe28Gx$<*zfLgUq4k z!p?8zWN^!zzD(|XA>CW$wxA+CV(D9IF_hX!A6Li2(7$VI{OHcTv~N0(oqc@T-K=QJ zFV2I`SDX$txr3Y&1I6fYRl{>8?&PLl0#_oI`2hO@mCGH+t z`O{ol=}+a`*Zvax>$F2A>tpDqj*8qd4JPl|>vjxKN0RWtZ|7rp9wCG^BcNZrPr9(w|wVW2Jkl0~th9>A`?t~#1pjJWW z>ceEaGX?tNK_tK8MdXx(ecw-kt*$DQVkwu<^|jppdy=&U*-%nY!nU#)k*)52jYoKEVRvw(Z2>pc`5l!V-tsXUT(cU zXorGx9a zvj!@$!_)504zK50P}0*Wcd^IFv}Vv*)xwvqyG82zeY2;M-21171TzyaoVDJ9vA*PN z+9sJPR{R^P$gSzq;l>GAwVqi(bNjavlJ1AgG4_&!l5|u1ap({5lBr)!K=0+~yZhPn zp5m9Mk9ECIzE(`@23{BI8y-u^f>M}Ly*GF8t7Dj+7m`rx<3l{)1>p;IJ?FLmaaC?s zq=DZOQA8IyG6L@#eb*W%StEaFxNk##4E!oH;jG%;kZO_By!YwaYv zW5CIio<|flt1{amFWttB#Ot#Kl7H{d_!5_<8WVehX@wzY*}DMehyNxUaO`o{i-k$W zB3`F_9uqWXfp`1E;YnBLJ2D^VioLc1^mydOe6JK4P{sUj*u>#HZ(_(K}-;h0P& zR-Yo$3*BhAs{N40!_vAoUw=W~#rYdTL=lE2C7fN!dHgx@*r@ku=B&H+Qh7$N_nu$O z`+RYdv|@;G;6CDqoKu(PMvi*Wm9iBLU$hObNr~SVKoEHaQv_Hg$=@4{`4NhfHgUF>flGu?GSg1m1*Fe^@~yECPl5VWebHHT3Z+L7WH3JBoOdc?|pw~r@1-- zrWnPQlQ>*a2$~iM_c7NMEuQSIwF9)`bpm$;Pv_IK!+!qEfBC`i9mmJmQ+8-I!f8Vb zQ_88^Lp}ZQmkAVD!!4{aABJ$Uqbb24*aT_L=(+3l=A9ndxVQEwm^a6?e%-J?P0glD zc=B<_mp@^S+!Oq~MB1o4AsGK+sV2%7(c{juo~oC)vX&Hc2i=WD^Blb(1H>lhb-J!O zX;9a5Um0OBt^V{^-84oMjEfoP$5q>BoGi6$hIsJ1kGqQK(L6Op+&Sb2sXyO0o;5l6 z#f5cN^^nmLw?WW?3&rjuR$b$^cP9R0pVEXgoj*Bx8Xwf69d>pZXs9l8q3sKQ^$wF~ zJ8aHDNu@5c8R!ADN@|e*yt@BrH@S)9EPZPOoF9lJ@R~xL?+nO45K1HN zCPmI(N?#NbX!#FaAyy{SY5q^Q7kl!~Z(~Pz0m(hw=CPW+mk+H}c%r%kLh;}4H{*JQ zsXt=re?nFAy%-|Lu^)U4;M)G(Id#R;_aFOhbo!Z=EeazzQC_r8x1X0z z^cAFA;96m-w^hr8cF`mC_`__#m$&RoKF^PE>gN2Qr@Q{$>nKF2^4r=Ss-gTX6Oi8V zlfS^-!#cGi`0mMT%lODN(T|i?$wT9xL%&PyOn}UIg7`fvAG-I=ip|)^$^}PCg29h% z)BF1+UpG2RtPQS=yu|0b5$`}It!}x)&2dKBTlm8J$(y&|1g>FQPv3JR`_yTXCANr_ zfVS$W3TvV{OdD)g1u87n%&Ra^Hm^5<^rQ#%{g~F`1>vfLtI^?2hmKfk2V2F$k>nhOAtc$0*y4^dG-q+mjB~^<7gATssT#$fCRtX5Tj@f+Q+L{|% zCxW-vX~Y-C>UcIR*O53V9ueQoFb!^(xO^hd#;f}FJ&abgtqcJ_U7AYuI6Dp4=rlr_ zC~r79y%?Yiv?%LmXc{@XfX`s#V`{p@uLqpl8=9KEt>AaM-Kv><);4UgWz?wPZZ-sQ zZhRhbZRvrYFl*xwP+kAf(IZ{8N33bly*g<7z2H? z1Ee|QTxCCufgE-SmGpY|*`KXDdXFEHWTdLwzsa%<+8xInp3fuAUP>g&dSTJ-3LQbu zc}#~#qb;AzsEKN8$sTvP13h%=W)r%e<(Qctmq+T3I;XlD8xzXSd%00hw;GJ-z9xVv z=Vzy^HDm2(U&|!!vY069i2h|+X-~NxS}f_lj1b6-qawBZ3L+rh=SWS=YLVQn*pi@a ziKi=er(mBWsd19VT62KKyJ)wh+bG+Qo5L;6&FEvDcc*tCiuT!fSCvtM_iSs&KQNzmg&g){aM zy3dzWEYXS`%V$A7px1<}ew5ile-P=W>A$)~?4qRfd^Q(>P9pUp`LNw7nR4qRa;=j< z?8>+jwx#yeUjj05NQyaWR^Ee`^UIu4WR@Lket;qUK#y?T?g`nrVsAbgEV_L!&(rbZ>x_3on-wTI=#dJ zvBzr$MXS`ypBMBFFQUZ-WQ-9MWsB9b6ad6`#L%0@^M7K{+Dtf>Z$G-|d1k^XE40wh zNw@R4@hreJ|LK5~({6?!==Pg0tZlz6x8nT0?cL>(p#avy3E+|nT_3BdxN^8It!5=z zZ6&8wZJjK|P-=^>dJz9Qj>T>C+Ir<(pLe8Y0By4ujVnItmoxp{A!^v7Bj4~c#k=80 zkqrC>PyP#G(;i65TDFdK`INV?BUSwHQcf#Al(2Y=PasDF%5wOP+?180ywhhEqIL6~ z0d98J-5yTYRV{J9?l+MG)_{o~D~LZ8KK&bdUN3ZAzRs?+cEXnS`8fcU;T;m4x}Wsw znQPlFsZLsKjsH1nAj^c2XF$gPGS=4`6yF5Eg{qL`>|~z5rl*(K(?y{q<2Lv*@Kkyb zO7X?BS}RZ^L0J_(n`N(upY5Uz3Q-zGlEkBa}^ zO)Vv47%txmx+%aH<`dw8u2bwMNFdg-nyv{tM3y2o#PT;g15=U;QqQ3X-{9xR_Lp=| zsF1~`ImfS1AkXLDF24`mSLKK{MljwAMeJVldA~>fBC4`H^7bJwZ_{H(mhi!woakV8 zfA^GY=|YqAz1^BP8ZY>7d%c7+ou#{a$nLAUHJG56+4@diq!aFrTZpD;&S>jY(Uu<= zia~tsfeJ)Lddn?)fsodyi#X~g6_2b?X6xkii24JU;>p{H`TFoo3%RNPARWE(Z(w5c z=&XNnub8!h)KeG?JGaVrNp1nXqX-`iBUkr+%(3Y=$4*iqBncIi@xjfe5nodH^-@X6 zY5T~cX`CSEzWtjQ`E$U9ma@ph&bQab1LPEi$wrd>Y}MCz^(K4YB> z<(SY1eDtK0e9krV_4^m|XX_z8*TN!z5vv$1)7Wj|Df+5^QDgUJnjhIae5?D2qEyk& zFD8wEV#NsroJ_oGLC7xSI9oE4^RX1t0uexRH{usZJJZ% z{U}TWDQisto3p6}Bm^>9$#P+c8p{pi_g;%w{?4Mb*MI*c4^L03)i`^gJp8UDWm3?iN} zO7H<g_va;a>j#++4PE&RPcnZ>)P$LytaJ?p`Dp8gZKj_uyda~72 zX6eq+cN9|4wmary`R^hm^kRD67gp8sx>EUS^SKt%Uy*BieP)kXf29doq_<^O+pYve zUGJ-*aq&xqSV}IMxDw-HV#A&sj?pZ!yu{WnuG;byQtXJ&iEo*2FM9ObR%+vYs^#+Z zz6xgzaL~lD!cS9vorHuQ7hBJMxefK;=pzma&Qdk$dT?|!jvj2u8hB0o_JU&yD#J~B z_;zJ;^Sfon?g9zItQ=o`NF0Q3v*kr-{q*a`ygzgERVIR|bl#SD^yZ0h(^ix8cY$Pj zZ2}aM?5X`DJ2kvxWz}o4t$uWNcJ?mJPI3Jtq+k|_uMx~fk2qSa<2v)=;Qho-ZhE_% z5Sl~>R;z^6@jg2Z0=iDZgHGo}DRnhZy5@9wijc(}t2wq+zn0@lH7zwxro|=$!($77 zEz8zXPOrdeOj!zY>2=0+998pZ>1COFO&L$Q`Amuxx!1ZL%gv$MUwd2;wPRK~rI;bH zNKeL+I$F4CRlNyJ&aiKvmmybg9Q2r*e&dxau+#j?91tI8M2ktAaG78lSURH-^tYu$ zG+NXxyRo8=Hobp_wik%S^{6>TJJ*^?DaX%8`%7PeA1T$DWtf9dv7HlnpBooQXGoZa z{zNFRbzcS(9IBlQvODj`iIkOk&!0%thg1Xh96{n@@kC8Y=jz%48DYb}gXQycjy|vI zOeHPnKyr_+fT!5v&k3_-RtaYE`C}2(HdT^pL1F z;YWx6e0Btj6*S;)*~vR{5+z^W{%N1)A=u#v?PiM9P?e32KwxA`Vp#htQde@MQ#q*6 zEB?{@IFjo|1v(s}rcs?&n%w99| zRj7wF%S3ansboF)Ga5Zo4$mN3(Q)AH3?(VE?a6Dr&S^YAO>3>M0SlyyG-YqRU+!d~ z(I%~I0+Q@uOTejc5ELY=nL!wB^v?hv(Nop3W&hynNy)>2hq^7sEWJ&p_l|72u%`YM zM)wo00>zz0kKkn`6XA573;xla$REGlo{JWWk&# zcIhBpJ^wwI zH=?2f>PsyfH<%55yR%pTfzmD z9kwN_Oms}7p( zJyqW>H3a@Bld0qtloD`zDWNXOb`? z;P6M?5Cw($S>#CfhP!n9PH;4&vzuHs*ql?TKD+*o4QDT%o@n~^63UU1RaDS2(Hlua z>L$%AOoi%<{RGwkFO#9eD;G}vV z7CV8DeLgzEwCX_Bp#hyl3ww==GUxJOql4k%iI~CW4;_3i=(yc!Wc|pJdCfHT3&OKW zN(5Uh7JemK(`hUBYnhC>#&fA(5-!pJC3VL&%Yhu_wt>dj0F8 z|1;~inL&wjo_*e8$c$2QH;fpjx&WQ@!ZQ@J~I0F;M&Z>DqT5;?9qeZ`0C8bGGC>qyG!?VTpIJ9uvChX1NrzvY>y-{|u(z*i1wvRM7&eI0Q4y^%-jERx-_g65hlV)0xG66TyQ z^EL99|AiS@R0-!iKg++$Vf(^~Q;#76cFAgsuVoY693$yz?I z(N1>|Yc?QHjfA@ly_09Nxf-nyYz}_Z%=>hONzE=im%Kx)+`1I5BcFYt&h+eZcNA=4 zW9V${#M{M?*5~K>Efda}$#&ZK;FOI-Til!!N4esbW1>zHBj8QvVty|LE~1yfF3Bc~ zxu;Sn_O5bRH)U6*{cK1}!kJZi8sz^(Xhja-ZvvsB!hhp@a_aYPAc22JxfRx6q0C`~C2 zjf?zeV&T=rPh=lhiT&%ig9%=DQ7XQdhGzKQeWIwOqWRo*id_K=j(6>!Pm z#Q#8?rL?f@5QJ@+9iS}wTSpUzDS^dpEo$aHgIUpquX<(g_$nZ}JYM{FZXah}4l4>S z&?3**+nKUf0Qs#LZCxVEDm_kv%Mehf5*v^0gTs2kNOXg)nMNasOL$5bjSZ+K!;9Y! zGEUR~q7uF6>&5TOZT?Fc%O9mAqb(nYT=enw*lGjBb^H1GRiA6&bvcbnxGff>SqglbX{xr_e>K=68++o0He zWwp)i@9Ng#VN7gFH%FU>xyCtK9C7;a~==khX+{q)}X~7!&PiS5w8c(jj1lo#i z)1J*pdDO=%BqOM7P7Ezyq=lz&PR3j;3~v92d0>u;Uk5cY>Eya zRe{N}<-r1vEWk5$Yc!kGl4Hr^~}%g2HpT3vFdwwawd~C#?dZZV8r$X zvZJB7IY@9;s&@sItNg6FGPX3CwTF9c#^%@5l2KW8DyY;~=yGwb#e5BCAd%`+ylLwE zS6Xaj!aru~Wr+<)A@?t$;WTsbSvOV&96pe$_gyIo_-h%9Xfqxnz0r=RL56N(20px$V&_2;;1VWh@K9l7&UtUT2 z)Jqa*dU;Q_bfqY0a^{{h87R2Jn}uS`MxIrBxaU9xz%2buQ+}LOX1s!K@q7B4LvXnW z2rg90gLb7Nx$C|GEB}DFaot^N@@2JXU;DTC9%Dc@f8xFIAy{23p7d4mO9>%8*M@`F z&ec78NX~jiF@u_s9(tV>qN~}h`scD8qx@(Xc^Qm;3UYxd9chd=I>moki( zHm8SJ>6)L~%KROrlQ*JsqB=D-P!T^qENuOEoDx87!tr#+w^`Hwo;uO1lL(`moo$;5 zVk-YP(j3AmZ46jb?5Y*9HMtj`>N_XT@m@Ca$48vgT+ZN(+gVbrurP!SvK6&jSx{eF zyy$&E&GPa5x!~(1c`m64R~6|AS!b`3${Q9PqW9-D7CXD@TUO0Pn2| zhv{4U`FIyZ$Bl6w(LXaqyPBb;eNibiElQ^=C?zT~Geg+Zk?R>3ao@mvCHZ!N@q^>FcIfK=5rA z)F;{*pX#+Gew9E#YChT^3%PPZI3lR7^4+2zb%D-eSVjAe!Krt+ zP$iWFa!SEJ`G4Lu^8TizTU$J7phNh))zmTP7HH>lJ`ob{v;Pq`BR^_}CVWsw-0zXp zX;I|>5{%>^D7APWm13g6vu#e_H&NhlyzqlafXyx5Ci>di?$BKJsdf{?{bT7yFhjTJ ze%H4m1IzbDMR#R10 zHL!%TUuP?g*lY{Hel?V1V*lI7qv^#A6ZgMl5{5?rDwIZw~s6@+g0DvtUOi2 zZ&N4bwb$o<=M{SKqY%fVC3=1AnRvk-oyr z?C$P5uCsp?Q+i0O7V_BuKsOugjhk3kLhERCDC0^5+KJ9gm&y~U1aqhjC3OW6I&3D_=2(Q~m~*$6WQPeG6U|Y|e)?45fBv}*&-14X*ymNn zc!vI^NbKER)^sJ|AQY}j_u+26=q#s?+}(1>mZ=3uK`=)O-W;)oFCnG>fg!(j-PIE&Ip9{!N7D6tt;8IX&# zXVByi`~4gC;cT(}{eBTJyq7(s%k`fBTgpcO;Ox$l1xaMYLzrMkoaRN-^iG`^J8xC0 zxAb0ZK=|&mzab>NNd5^NW2^DssXu!2%TwJr+pPB?kV-l#V(F-?4^f&* zjp5O7wcePCkc!q2JZz;Bedj@&Yib9!piFhC?8WWVwx4Qb!j$fwHJ1&*IWPu^0_uVy zY#DiPOGL}_+Y~J4XtPeX2Dbdqf<4b}&jTTLyYeBlm!fC{ivMC(O~w)@BF#;R+~CS-~=DJai2L7#D>F*b$OFG znQ@yje+vSWKWCKY3Uh z$U^Nt7DdlmL@=p3InI=9BI%Bi9Eirgc_J1i3albHc~T^juP@35peYjbNP1K>fFBUH zRW^`**|}=51`jJ3Sf?0D4v3IT5<*`HVMh*nnLaAnbzJ`%EbA_x&b!nJ7B?qcixqjS z{t9{1y@4FwQ_@&xR|HsNvte|8|BYl&V%3lAh7F=9k(vy@?>agZh?8_{yj^7Q44NKLJ?nmBg~tXFeN$7dO>(%4J9CP+ zpiXuMqHpxScoh4J^CE7PMBRQ}S5nf6KB3SSJk*-aW?=%eU>=vh2AWcAIu<%z3) z=UxexzIkbLnx_OFTk@8#b>z+w(u1q>pFHDf(Mz|3wM;SveslsYnf#X71$%9*5_sYl zB_F+)+@<*Dy!Zoa)e_QLUxj)ezYbz3NuQ03TlTv4Gs}^~ISMpAjjNCw+ED^U$LoA9 z4glvncU@sQ0!xct&Yx6g*8h!t>vxOvibWbsyN_lG0b+xhAGZA#WCx-iqu0kvem(Aj z12)$gRNo$rHLTMqYG)5fT{Ln3Q{*XcyY#W!>*XN zcg4Ma8YG0e9i~uSd7{H zoATk5mhXO&5wH=hDpA%$00!%;&)5B0E7zRd#j50THV63`=<+JebmPzIrLmWBd@lW< zLwdekSAzPn7fUQ_QHRLF4~S+bWo_C&r09ZmhUeJHB(?g(FAWuygbPLDRi?fotOzH# zzO>moZQW+>y&l?X|MssQ-qilVx4ownw0Ek-uwgpK@1*ly%tnI7qw*S9KY|Bm(!Axo`ZRMCK(vFXCuFS+hKhYrkB5 z#4eTv<9ak0CucMjD{ujKO8S&W>FjtpTQ;MTv&m$^zlzdf(Rfh9>pnazu}0`8P}5 z^*RFD1Y%tctZD!$QmUT`B2mAbViEtq2^3~p+11iQ4W>(JjR9rJ@A?LZ&cqEFdz?8? zgN?9^L)xrenq}GM6C_7K81%hu{+Fj~wREJ99aWQQ zFT+J087(gs9%p{Ez3nJqdNQF(-+9*<8O{SmbHEcQ$A<@6Rs%e<=^&5o8Q!Q5Uvs-z zTS-pu7}uChf4S!#1jAdaI>!KDOFYKsWiL)T-f@fIOhwrn#>63E1 z>+uL#@8`?#Y?a22P-&tw!rf)tz5%rPc=+evN$~op0Jh}sYDDI%%Jh z+H83@m()B3mu)5E)h5D_-!2F4zm)l#>yu=E>yYCK;l`*s_#MP1uCkuW1Pm~H^PWg) zl>XCK*E}RoTFq35QXdx6TVzSOz&%N`(>Di5&dWJJn<-gdc|-SS7Xw9 z^2^!)$$A$*lM7_oIe+caI9f$NrI1LvU2a(Clz%~Ea$w#uSnFC`RKIW|8n*;hDEP4R=10>VJQ+PGV>y5PgFC+7?Wp8)hQwlwC_=hA?E< zx02M(wAD4k#4j|hn`}%rA4HE=oLBj@7RMQ5jXdvG0qzs8xi`RjTXaQ znz5xMz|EiE_oGBoi{oB;5OG&#>?!dq^P!#a6wfyrG$o3}8ItSf*D5b=bHizuE>YoK zzr%~=Phhbm<&{fbb{$|^IQUQNNmEX&^sn#TpQlD`a~GddNlq0Ol2cIqZOA_qd2&6; zAsz&sxa$>HC@MEym8&@ti^7&Ui1EJRY@Q{UQa2HUw`cWX=U+|T+52p9E@d+sv|kl= zmVdzzIsDTBx|TIOHQ`e6%TErLZ7I3dZGGD z51%!PrAWH@Tw8u^^eOHUWjH&dYmos&BWW9#WRho1mO-n4}?PiK8*g=GjddFP~%@IoRb*)(2H4`gwqd+qHC$k5q*-psQ` zwea_%?aZLS(QhqBA#>@jJd3J2)vN76*Bd!1Ew0Y{v$bL6W0W#8G3vT_0GKml)A6k0 z!7$ZnATgL*R#cDNirfb&uF$yL--sQ!TCI=dNZHF%V(dHfiQgFQ%UNMUfz3i}cHa1K z&r21q9-8ehKfeA`*-GDpx(m&fA|Mm2%AG;cedJ&ec@PC1ZF14SAKj5@h z`2>(L>ukn?x9{McE0X`a>#Fsq%>V$Aw}32?(0+L%QaW>F_JCy(4wrPAdP!uZpBE?% zeYs(C(fs{Od+M{Wk?^~D<{xW&Y&=aMU@O<|Wo67KrP08hXYV>3rPRdZpDZ9)oJe%V z6PX@}SbX*D0+Uz2yupQ#Na?_Tfl1H8l*bEirBGyiFQi`>f#;HUy|~4TtL>{U zq(63aZmh3`e6qS|1!w{4L^b#IMgi}rZ{=&L*ffYfwTb=Y?fdfb&Jh3rD)?V6fbPtQ zkPSi-Rg0*qxPZZZRUfU9%na^ZQeXUf%0gD$dmbH04EGpM>lJ+s#`6u1jg4)8-Q@X_ zC^T`R@a}K{)y(>r)8byXGFz__P9xj?X^t58jDa}iC9*zO3`c!WDyl!EQ{w*HI~1K_ zCT@q*?=irAbK2*KdIHFsm1yX)%$8HOC#=W4?KZMSwtNFMOm}XNz)??k_3Y6rS5|pE8%v9L}nz zVf~COz^>TNBYK3XC;X14c$n6GDU{P|6_c~M#TJLX<(ewmh4Rs6!c0S@`hF~Zm3K2;xrSKQ^n=#2qpoBSm2w&^Xj%Y06`av^ z@0MMeSoXz~l$_VTS+MX{BoaH`veiA_tVMFOmuNlMg!~(uq%r*X>N#eVP4nAWdB(Q5 z&-riMdz}!{U`-5#rKUHPXWles^YI^xVL5@b5pj2PzP&?Ham@Eg-P}Mj>h4fQuIgE& zV z*1QjxF(Lo-$z7Mcy+>tw+P6Zd)C$}3bwt5u2GTU#7{!bLR<}+h9;RaUO2~&Ehu8LO zd*8jqGYyk{-LXCcfK)!$8*Vo>8k@xmn7}?XlGQL%8F;3BzJ+$@8Mwg@OUdfanF46C zKR5*p*6>EXa%ZkS^E)AkjWO21%h)xU&r|dkr*sDwxP0Y&RQi2WblPii0b!t|j@_v* zL4BeHruSW@Fn=p)S#(2ApPvdgpNfZmsy3&pH+!a!2F`934%HolV0kqb)yVP#q^ z9YNJSB;O2JO+T(U7O4g+dQmgheJ5V-AvlU8Dg{41^^S^!f|v!9DOr8y5Sn7cA}nN9l3%V2iD8kl?xM5Q>sMqKR7@S56qxDASugT5j*&XHUfdSJ>9 zy+Bp;sV8CN{PNHb166!>!FC*^yFxZ|sfuVQPSdlx8x~^(C9AA!3{Ae>jOgq3oqWG# z>qQKVmrD&gumUH_^5h3SqVCrW!g&1-s><4S9U;-3PeAWJCsW(d^i4i!c<@uK1j7P| zsJbIb@b{zY0E$^_esf@X(y1fiS?@0qz>k#dm{4eDx|Zz~oPv~mKDSCiDR9i2hVv?I zEuQuH$`w(pY0SD+t#{d8T diff --git a/src/main/resources/assets/hbm/textures/models/missileStrong_CL.png b/src/main/resources/assets/hbm/textures/models/missileStrong_CL.png deleted file mode 100644 index 0c86da9080106911b790a7a9e278dbfb4837b455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9570 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 diff --git a/src/main/resources/assets/hbm/textures/models/missileStrong_EMP.png b/src/main/resources/assets/hbm/textures/models/missileStrong_EMP.png deleted file mode 100644 index a981e35a801d375a08427876e5572d649bd5fe5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7748 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 diff --git a/src/main/resources/assets/hbm/textures/models/missileStrong_HE.png b/src/main/resources/assets/hbm/textures/models/missileStrong_HE.png deleted file mode 100644 index fb7624aa17592d7335122e6c1cc689bd52d7996a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9579 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 M>KY@fwb7CP2j16v+W-In diff --git a/src/main/resources/assets/hbm/textures/models/missileV2_BU.png b/src/main/resources/assets/hbm/textures/models/missileV2_BU.png deleted file mode 100644 index 48a2bcda9b800a3983515e8847e7e7f16b0a6a98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7728 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 diff --git a/src/main/resources/assets/hbm/textures/models/missileV2_CL.png b/src/main/resources/assets/hbm/textures/models/missileV2_CL.png deleted file mode 100644 index f373109a4c5be41990b736c63fb3683956532633..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7442 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 diff --git a/src/main/resources/assets/hbm/textures/models/missileV2_HE.png b/src/main/resources/assets/hbm/textures/models/missileV2_HE.png deleted file mode 100644 index bf8e01d1827bbf0b49020ef8cea29ec41fdd78b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7412 zcmbVR_d6Tz*H%UC8m-#3Y3&s&_TE*cs2a6viyfoYimKSPNvc|Eli0OWGf2sY*h&zi z_TFFbzwn;xdd_)%Jm)_5^_=UuPy90zT^dSON+Kd68ht&j=eP0Q{~dC&TaQw4MBfGy zkcR#X@>`1_cm6~~#9pqirT!u`f2&{^G4tOT zF~>CW!`0h$qYhgN($z?g_-!moz0qUm>+r^f?fQQ&w!D48Gc)tY4UKL8zw1r4_i3YG zjm5?GubryacDsc(_P*NHFuOKRNMRMu^Xd?53a=EI$Mr^oiC@(_GG}(+HtQjdR#l1k z$@Xi8nY{&ArzK5wbqfm$h>=agZy>{9k6xTI%(x{GL9WU|bl&Zkc$9hMW}etf5l1wT z5iJ+3mF1b`o0Ra&u+zpxgK}@eFT7~}`pJvzCN1p+L%YB48hXP;@4Z_L*`?)iV7Ct- zKdqqY{0u8DP3j9l8*4H5)kfW1oow!fR-ji9TzA>KY!}1Zs-UhgLip8rkTLd!MZHu@ z7;Mu|em1cWY}XNa(QsP{M{-{*oG$k^^&jP}axrb;M{ijk6}iqwMX~oiJSjbgY7!Z! zF~^|_i#^IVk6I|H4uIkY@M4cxcBZBaAZK#9QOw0NRs+**^~VCmmJ=%h)_V-SplAW4 z0vTkndD2Qe%a8_D1C^#m5qyb+u$*sJlJHIBXggVIlm=5Xe3O|v+S@2%+wIx&r?f7= z1iJFQD^{Oa|Cd|rA(QH=@ufCH_G@XF`RrZ!&iw(UJP+Dg5B*l$p%94vL zR)9Ss%#cN4U{;qyL*{fZJLd@kI8KN8{t&i1D)^v6c;3r{p?;KseuO zT(CTGwq2HmzqE+F1?}kavXwm5Zx^4eIw50xG%UA3jgk1qfxboi^IPnFL^x`LKwN|5hk);^5$bgCUf2 z2p1qzm`7-a!Qn4YSPHykgk{dP&f7hYwFFZ9+&={+jVLF9?4ZhVD(rEUTEcf1B_FL0 z*uPQSp+N#YPo06_)(e@%Iv_iz)rY6TVUzVi@p2V~nyoP^_&T^FaC+y~~bB3{0%k<8``Pz8aV->vcr#Bm(DQQrG39}ybG ziE~dS`&D|UDX8|32V;fe!Q?NBdmq8XYPG{Waw*3yYzH*J#c!2sK!-z z)^0k(MM+}~d~06^D2**BwR*}=6GvdzF`6GC9B_;xxtmm3 z9fjjzE4iNtfk?K^@V55y#0Y~QZibFX@;+2+A8{l1(1ER~sj0V^*9z}p#gkJ`wi5k^ zF^kH?Bryf_R@|_Ti@_7-q>G)evx9QAK|=NPdtm{0VE#>e(s=KHIJ@<|j(n&U(b$~HP&<X~Ws{yRBG=pPfZHv$wAr_tamSsb?aC{=sjY z|5_KNhp_*u;Pzw$ZiWfWDv{VQ&EDN{ND`Jgm9LMoMG}9CxBN0-IG)QDPA?!PHt}6| zv~NAohJ}+-slbHFU#i>{dZ+=mhVWib|E$nk)jd`-{I)3@{^9z4jCM%T73oJ zr6J>6+{_;AruMC&wa~4wV97ayKytlqLQ52b#=(bt@Zd0Q`c?CPvlb6ZJf?%?==e`% zl1K^i9=!PKY?GN#F;!-25{Z9IGM#_8YUi6`1CV0bqk~ z1_r}MO2s`f)c1Byf*4iV5^*U~fX_B$dED=uQm_vQRYqjm1pi9s^Ds*;8g6|Ti#e7U zEZ3Pi?_YQNMuge3jx&mgYPQ{e8eJ#$#nQW#Bmd(1 zxZ5bPNtGg9aElb1wl>MOo`+Gce(;>ZKv)dhQ9%*vkHQVOn-{l8u*(>Q6Y&kI(?b!7? z=Cxw-&d%3fPG;l^=JMN;*b(Y3|2fA(r#_2K4MU4$wSfj>R}P=-N3T%pR|Cc^Hc^mt zKEEmp`OCmUDpQOmUog??cKXY_9n#%tiJ1)B*JMAYkm=mNZXU2Fl&nBfRqmo?JBowM9#2fFMhLZtcl+7e?eXStlRpRDenOxLjjVQ$s#dNttWvO2459t&>V~PSO z8Wb!SV5S;blmoUKxrZS6`6DSWW(?Ot`gzt(;Vor9;n{FYGw% zg=v4=o$48k%>?==+2UUu0Ayg)IB$@70GIJJgKH$2N&E6@{C9_Z$M|rsDJ+EUDHP3f~@x zyc-B4sWG>Fbh9hKt8;ILq9}~H$H~bk2Y!&l_6c>$Q6ll)P|J|yJ3TH8JBGtAF4Kw-hj96>HAoyRvzq$ZKzE?F`O8U%Ckh%ZKJv{`u zi;J^%YO~D~TTRZevL}tjl2Ud^CO7RlJKcb%%i2P<>Y{mpkAI?*eaNdm@TlnC0mOtw zg`8rErNVbB@D&8*2`wdXdjkW(4C)V#`D8bq|E6U(dF6qhAU$gLYUDU z!(tzm6T-7&A!yS|2(3F1uL6Prvde@%UmXu%^9W2O4h)&(V_ge5k_+RM1RJ zm2}B*9xwF74u931_nEBEvXO6}@Lv8NV8t$pi#|}qNW{tc&R6sX&Nl32>;8c_{>&1$ zuc~6Hg)*H{Ik!e#9B++1qS5+#Up31yaS!B^QySP)Xxzck%EN|lvUx%9XCmG)whi^Y zFF7>owG#FYrBSN}Rjg9xyNe-Cpuv%#PlEPx>zfqNdzWjfrdlf#H8U5j3+GdpR`Pej zcbHlipYE6@m)d|xct7s=Tc&&;^p_=Fp*#5b>CKv4E(^zPJ_l#5z`pGGPxGgU_q=zD z93a|-z}Q)a_rJ)TG{kR$VS`qjF$Ik4!* zN|xh)0lz;%iBUCs_qB+m?E>$eK}^!6g};IYNY%i6MBrkxd)0dTdIma=O^%w9y2FyX z&7X>RlEN+){j8#Nxpo?Xk}ufyixeTAWGn#7q&=L)<#lhTN>E;3mlP&ii=?e9mD2Qm zOZDszX?nxZzzPh{^Q2#)m{4K$8RkS|#b`faWFhl9WXj|4;v5WZLnEHP%vHf`at1*;HC9R`;Ka=0-X55ayR zA%GDeIK|G?UTnaI4De<1D0n_a!9`%X36|f*UH&0@qTPdEqA>qN4U6FAXRgCBUk8{K zgnSdCN)_oGZ1^hjN2HFg&Xv0dHW&%uNjIpWwGz`A(B&S2{0aLNqHp|8 zPVjwF&s-^+?}g18MKTM<>*%_cEcbra^pcXvU#qQ!%lg048Hh2(`$aA=-wzTm{lZsM zJlu9|t&-7GBT@1%2b!!k9V(1zh#VygFU=rEo76cX(gyC}X2C&BpBhZe?f}=T$*Bff8K$FrK7n<{WhC=>-mBK zD%&6-b^ja+iN~7ZJZTi}FhE&ZCY|M6w|Q}HYcS~pUNneEr~hF-`jhC5%$t*&WOhpa zc_jhG@%?4dPs?}pI|D@Q!Czd9pOwv1Ko)jDtT}?dB0yffYo|*s?k{Tx7uP+$tU~=( zLklrdUHBC2dnnny-p#5xEbn6R$dzoj|CO<2+Sf^Upa+v{8jAV2 zS0+Vl_+YleflcEPY_^23B5HHueRog%9Sg!7aO_pR;M9TP8nSQ7)a@088!MXr1Bo+1ty@)ho?|}FZogEPuK4p<1K{C2!UAFDHKpL+pJawC25aQ_ zXE$PXG&@k{J`s{x!!++EwbmImoH8j{{5d^c6!@i|9As8*5+|p`d0K2Pkbm3lM$RuC z*%xWMk+byW6w#z9>?+2W;a*yV=;Z63P(hfk~$mF-|4v)a)hq93> ziN8MrPU8g@ z2zRG1=s?LZvk`LEp#xpNjzz^HAOAcfgby2+C&9X!Kfe4dlLjYc`r_YBG^a@Beuiv(o4uT!kfAo?& z$*PuQnlOCKthdb@ScnBlb+AGlEkJ7X+n7a1?AG6pVVd@00u&i1)U&47egO<$MY^Vy zw$7}(SES+hcP*t(R%q>`e5#LYeR&;N=oE3X0`zZ8ab-2uz4PGsnx;%}}5`SsudzRfJ=)_CF$0iL?w%#)i?D z8rT@Hz+W9g_$PQP5V?1U2I`CE=NN@F3D6&2aT3?|{L` zu&Csnziy->zX}AbLw!TGC0Ak?PtiOq;VphPLH4Uh%8)3xCl+iVB29VRzE(v%BcE`2 zp!LXM!_O0p8S|A34R_lB@xB`*0z^3m)C?UL1^M4eAfz+927i=n<{1c=D&{o=BWM5% zf|Nlf2oI)C9n$Xp%W+~;jSu&7RSu)>idOx}q7eJ&0v63O4Jb(Fwq_ri_v#^?{^$F3@FJQgSRXG_wWVT~ENe~erD z?ZLLI|8B*!L!n-2UGO6uqPTO`_yq@(va6tQa%>^Oa!I*2ufx>+LOA?xz3j+V5V2B;LqY6mK&{&vcPfP=oRRxp zGPF+sDS&+v8tvdwGM0K*XZgQTi%YQY3{61$v$cBAPXt| zL!fVj(Bb;J2mjx)`V+U$c*>W(A*x6Tt1$QRme3`)3a*d7v3t2Ueq$OzTiuJF-G=m` z*WFD$^<(P z_prjW^{&UX1Lzn_fUR%$H#oY)Vu!=tN!WtzNozMC*#Jx5ATaL$`InC1mXC;zZ?pG3 zAR=Jt^pMXhRz6)oo{#agOleM_03vE$;V<#>u)LiQo~N(+k6lro`w!0h>AK7m;vTUf z>AM4V3uzY!X)WbdEIL_GXT!TSD^jJm5^;oC$N$uoju&TG!?I(@^`ox8~rX#)rcrbUBnWu>XG zG$731BGL5?uB%)#(NP9#apJTz!JU#SjwIFigt9$$xmKTE4N}ljFx;he8kzHK*z<8E zIzv%}zAr?4uoli<-Tx^%hne|F9R$I&Vhjw^+$II)i5KTE?SvL6E5t=OCMuu}0NEz` ztU!w}QK(po_()&n9nRBFrRTn1tWP;>mmcHd@49`6_n)gKEM?lFGJ!vduZKC4z6zWm>jA#xQ^Yy z9#Wy=6WvZ`6gi^59_AAkN1cZUX!8A;^?~=2m8dr#S8f9nI|Lwh9jIK~PPMTw}aRWO4Ej zyZ$_6BX+E|Lkwb8qlTcmF}zCfKyPY`Z8xdoJ%l8WT3t+2V7uw&pmA24qe zNMB_H@a59{A(7|<$uHT#O86;)tq_-rY1w!Y$HO+(%REujgYQdp-xiQ5&`KF_FlA@0 zcwzcRZmbVRk~JI5+^e**ob`$Y)%)*1j1Js=Ehvv|k0o)soj?dvc;GxbfQRBCH;yEX zj(IP^J3x zSdNpv5UNPE9s}p3TU}IGz*l$g2Ah)N8(36@IJ;qvdFgy<82k^D-L!~he-{g8jFl|+ z`P`?O?s1`7u<^W2t5OWU-Fq~x&XG(1dsCJ{QLE4hN`KeD8Cg+{^So7&EiCb8E;{ud z*@oPt@Lg z(p^eE4`UaC*f)AX7t4A_j<02Ib4HYtNbT^{q(<`JjyxA2$DZ8*`@V4G{^7qcSk}!J zsw5=aY5Y7(wZiXwmx71aDyzB4zXQV%UO=la@VAAHQM0PXu{-Q7v#vtBr^{Q(fT$l zuU0Hhp)2y=!b}Oj(b5#VhpX-g-ypGDtM2TF4ghnqHnPvHP!K&DrII+3PnLFX9qr4O zH<~vj*`OMt9)~Ho;|E_sMN*ZVyAMY>7>1U&EaWvdPHH$}m;x*b5oLXxixXF-ysz0Y zH?F-MBOVXJ!oyq2e>XGvR;ByTL1*<+NlRpGUecSEU|*X(InyrA9{Qn~;y+vS;NPU% z;tVA{*9pHQQqG+IUq5TYa!dTH2}*V+Z)eK~><%!(%Do>=K6 zj?caRURcNN;noG`tjyWY{+ZaZ=zm6BFk|#nt6sHj$u9zq2lgoLd-96Bfp$JCuRM;K zqceAhJgad+nQ?EZ+itgc*Qfa84F48H|1>gXxvpX3*ya8SDrhz1VEeN>_(EeQ`i{!m W05m1%Smo^+lSp6NM5{`}A?AO|36Y$53>YxF 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/missile_huge_bu.png b/src/main/resources/assets/hbm/textures/models/missile_huge_bu.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc91812e72143fdf52326a91fb5c3ca6298b52d GIT binary patch literal 2255 zcmdT`eKZqn8{bBmO)xuM3$=b6>yv+~+>mb5_2 zfT%+N0Kg7syaPdoEZG?XZ~jcCCe(`sr&(aaWa8TSoI_SI6v!1g&hMRHNapN zoeog^A0bu9RMr|JNjoJ|klAuS<9uNvHtZvPWw1Kiof1gP3Z76V|2RBbN`R&avMd`{ z2zCe5|J_gJ$-&!YBjt%8AW#JcLjr+12@SQC6eSP{jYQ%=KcSF+XCUM$bJyn_3bwKx z+&`cfR`;G&*0TOx=o%FrdDsP8gTviX(=T~6%qF;09*WW{m>6{*t@fFjo30p(ZV_1S z?`{0e4yW`*^*-VjG|v9Xhy5RL_r9>r9lcI{Q#9|Y8@rT6xH{bJutf@QTn#(c5azF2 zfm7<&tC~-0I9)Oy8<2MX=?g(*i=dLto|&g~&!lx_b=93<>T1#Dwy0O4>O)oWf}XL9 z<}1$-X$Vij%O?lbX*9v2!#0%^!<>c;65P=c<&9Rqo{!P=z4tN!0)LoMRpq{J_Ehjo zcXPm^INYbImDU_7x%Ey>AEs*l=#M8J4&Qoe+3csFhXM}|4~1^i$tf=es@T9&>tw6( z$&8f9WB4HRih#u(O#q-H57Eyu?^#({so2e*a<{;`!J;)PT&-f8Jv2hWFxa8j4Xl7& zZ|=;Tj}|stjLql82DVLH=5YAS^^9CBrFtDV)JZD!WDo}<&rOHavonKTDRb{fM#-~h zJ!%i$zO9csRmgvF3MoMgT1~62*6ZcooL`CH!I%V?XQY3#SeH^PZlG6F>}+Zkp{gl} z#NMF&MM=dBx_l6{r`o0{S$0(+>pwlrPdw|GjPge>H4eo3pWJt_-gX81 zp!}RUruWLC@>P?}T@RJdwNzvaAx>2fDh_7MFIo-3%b)kX;NP*FAp}h%ctvN zr;~vy)$)f&G*a((dO88ne(&bz4J-HX*dSmGNBtG2*8f5lUvKm3I885-7#I0V|Iu^t zBYs81(}kAIWas28I^Bw>h>taPirui`sIVfTEX{W1YI*s|P8Zx;L)`zz>)H@7aZM*t z$^e<5;}`5_9_0u190AruG@-2HeTnr9y48cnn__IVQk~Oxg)L78AXO+Q(vkpL?6!f> zUx!80ExV5aR4Q%Wg8nvm&amJm`P=58XhA32N$47BsviI zS_s5F_|h$z{v1w939DT)u}}L|7+=NaTTjmQO^U@`o@m_R6V=jZR?m{8$?1Z<%vOkInY_~0Q0jci5QXg*l$C0VEk4smJym6ITUoopImNtzW z0rbC`;MTwIdraCi>fnOrXQ?+XNt*#sIW#$t@$Fx~rt>P}7j$mylnQF2E_D8oPF|Rb z7t*x8be8V~d>J(%5)0$v()$c)d-|c!=e2#}AfZRhvAwM(I1rO+VRVb`y6GbI)wX)` z>BT;fk<=R>d-GW)mD;I8^TzMVo*M4g^czwvo4at5mnU-I8kk`wnX6nB*K~_%D-HD| zfqxcSOm<8P+dR&O{Y{wM-RhCBa((%~nL}}{Y1#Vlxrp>4U+?ig>U!UNkdag&P7}OX z*4syGJ?kr&Z&+D~ybPVN%CX#5Ii=-~%TqX1j!fQY{$M}NlT*n!^DcA!igwn9fZbn$ zFc-G@bv=G}{_>vX^1cAsK zS{kXl5-MZP*>DTnJ0rB}Ga#xV8Qqqkj5C{FhHf(xN^nB&_;Zs|knKIb7?OM6a#G6; zcf6*+bX;-Do-NG|Zt_k3dd9;6Eea>8ot;gU8KYQ3dAn(haWynm=Y|_vqznym`017o zBsuU7E5{alXV*^)$t9A51I<-juHn&>%^gDu@x&*nCY z{XA`+n66`xLG{frg`1rYH$;A-%l*$S0uR@RA3+;)l;fv`!k3VD^3c%UX-J!;w GobXSZR}Yf_ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/missile_huge_cl.png b/src/main/resources/assets/hbm/textures/models/missile_huge_cl.png new file mode 100644 index 0000000000000000000000000000000000000000..9047f2918b1d80f8421228ff4dc2663491c717fc GIT binary patch literal 2211 zcmdT`eK-?p8=o;-CPtYh*@sTYVOWw5)qFG>g<6|7l8I^&3Ck31Vz!je%1RxyIw>8j zIW`|hLmwO!YR+_~toNwpBc~TpW6e9Aw{!k~|9hY7dY=1!?(4pv=eh6S@4Bz&^p23N zOHFJ{006+!Kq7&pmqq&74>8uSDTUP?dSR5}7f6QaM+PL84*)>I0|~xl)|H7L?i5@P zfaS)At(JU)@kn(m`9^liu&T%Q`-t>=!M|6nAn_y~_1LX=T5?i*xl0Ru!xd`;X7wQ2 zENt_Ei^gRxWwmj-(D0X7)5E__?qY9v*;c?0Z$7|#bK80Mli+s%P9h4`1_T1J|EmxS z9ctkUW-#?`Px3@;dU=%dPvd2xj33@8JtL@ccZDlm=OjP_J!pMl~>Cp zP-?qh#MnVGHbS^zl1yR3ccw-1WeHvCL_kN3S#0Ehf|t}|k*i6hP!yR*osf<@Vsi<8 zv2`YqleT7HOtZvgx`n1vB{EdCN147LOO7XX3pn*AW-}gN?k^r}t*NfgQ%W}1A(aDU zZ0)<*`Ojm9Nw3%iox_Pl)E02dMk@vX0ffQ0ln^reTtxtph*7vLV5vi1J-->V_Je@= zVAzqg8-+6HXSUX_>e7i%MpRW-|C%Y-pFTM+m&>oy)z1-FtXt>sWQIr`mMtHRt?|i~ zB#h3^9t+!)GU#*D=M-WiOEP5r^fK`<#%-cfK1v`6mX2L@X*Iv;Q#=}m5~foaqbBas zIoMU;EuqTTW?3Qa$RR^#n`QcB=dAdQMyHoGAt`^xF-N%?G7cal?y^2WH%Wt2$ z{ekYFSF`58O@kn5K9jj(yxA3PhasabAl5cM|Gi`&<8YeM<;cEH(II>$>rP&0MyZSN-E{9={;GRc3)=Y&foC6CsXist zoAUPdW4J4Y(wwE1__ShJ=*Xw_^)2kiWdr;n66m;Ye7KTp5gFqDWO~mY`|y75eI4!A z1a>B0HYgc2x#4PenqRg<;T_*VL5FD5%PX9A%AVL$HW4};`xJMU_={P5zPRqL*6Wz* zW%VWeUadkQJ2%fJ!Y?G4NIinIfC_PmbbAmw!9tUvd-OS8-y=%afzn`^u9;~b9 z3Jz==$kKh9=xuwN18T*!`JLxTj-z+3Lv%wpYoNnJe_*SD2AO=D?vaWnrDJiZ7O0NN z_v)*YY4PD#36x6bLhd2|^BfMIu!MNRHQwm=pou?T=$vOg6(lY(r~i>32iMu&d?w;_PuIzXF;?a!fIO%C8OFf^4UaV z)S?DFl3+6^q$6`A1)>B`5u8-Azre zO4z%JAI;MyUf9w4!P{q$@#5DpA?`0Q=lpbyu2_ua^uoV7-ydw?_CXD?Nl{e7b+vbu zNqYyT#7`%}(f7+#8!6~7^+Cen7NeRL@>ROrQ(YdsOC^}C*!Uo9%G?VH`FLZzmn~CC zJBN?{dn`2xdT!IjCgWRgk$Zef!0QH3Ty3Y)Z{(pN{C4>BvcVwq1ud_-uNp2y%O%RLd{`yD*F5=a$YaQEaH+(>*w-@^=Ds9U#&{&!&;94u35~_%n#d-%T&u%5jUO{QsF{=8hW#qm&!ve9 zvsi@{MMfy*9-&fmH|%FMTATgO9KU+>&-vqg9*@uU`~1A#ug~Z6eS99DEH6)IWrckT z002PQ)dh7*T9c)D1iVvP;__)MX$8VLxT3+*lmb4R2>^ftTv5l+7fV)3Tk|H5Loz5= ziw>m15k!vMK!F8$v^3|AC8smBx#!cDCP1|I9XH5hR}$b5u;W;fk3wQ6f|!j&Ub}Wk z<%UtVI>k04$ycE2?NRy z!61-61d@sTe>$1vDa(DeuT9<$*AqFSB+Kr!AaKMivFP>XA(Yvn5xbg zzwpZ9@Yj`!m6-=Hn3K}Gi?a9U8QnW7iOe{{_`%*B8SL>&A2Eg&bcCRE%Cbf-2 z!q8Nc=n1pn>%Mkyuka=mCnyn)OVMD#VwBG}YA9w8bh3kM1$DIMdEOh^?q=w+TSSFSwi@u^DNZT9gI4 zdEg>c7O%g3pBG5H>Z?1?F!w1D5KS{Hi*$$N_5p#Xjz2RSp@UDa`jsv@3f?m7Pba3+!f*&XuX=yZ+GpP}{JE3;CkxuTQ#mqb! ze6zT)gtnUhq)H&^>C8jC;vBAyoS9tqK(csiGKxRD80@5$+86!`hmgaH9B8MhZ&=kx zPFl~G1m5?}_!oXxRQTHLlIxPz96Mv*>GaAL~%MAiXm)q&c*xN^L;fgl^L^ElO?(C~&l!+6bID z)Wt$xfy=P*>gV@jfJGJQ{>}xd&vj^^v+scPE?r=yrM~$A36&r=h_j-MuOyIIFeoig zmc54L%;($ZKz(&Jp$i!?Q$chu8k{WfCJDYcdKthN8E_eY-4}lO_8<)KVYJNXwCb@R zbuuMwuHjRP_gh9+>)r!Z&2p^j zj8|mn5WqALXkF^#8`9mhW7`Wbxk~Ljvb{#B7a{^J{~g)3OFRuV%AB%1s%r#vnV#WaN8#mk}DLEc2HZLXeJ(mJ0j(3E%+ksU0A2b9$-w8aA~tB|lX=HbfY zJg(QXG9VEgEK=4-BMkT5tK_-hbm3F`RTGZb{vI%x$jKK9dnsl7vv7|tZcNMcxu3`? z|ND;fJZByPs`DHh zb*FdgvjE9{78(uxs?9$MFSE8IS9_`me^!v)<>%)R*R8AQ?xG@$2!jFtYRJFTBN!{8 zLc_KiydLZD8)G*OQkHWqHpI<;*zAvq?f*6Usj}sU*zDsb?cZ7+-mFV;#mN#iog;~~ zk=jKq4-190m)KRId#L(OeNzP^rkdUCLp|#s_?Un54)>~B)qv>k=Z>%w%m9kQC>Tk3KKE6T}>{$I@dr>mWH`F z?3>PDbkE$f*UX@luxceD@j0m?N7<=rpp2<&dgE7pV{Cag2eNbEf zjyV{kG1}oEpP!X34m6>g{L%7=71380X~$2X@lGOI^)V9c@`fnKeoy+0)BcFC#UL*w vtJx5FE|bZ7YF9VsDhS}XIMKv+S(~~f(2cUwpW00004b3#c}2nYxW zdIu6oqGH6e7lKz&eGbOd)KaACMnlZJEMfCaJ9-_JUx* z&LX8KiV;Idf@$2%%;@f{dz8W4^MSlQ^Hy07_wLM{xlymzJE=3X*({Q#6^O3a>(+oY zjY0!KbfeL*2Bc{e{r=OhOuW1(B~7E$@Sl*4{_*{{H6Tr+MBgSKvT6O@$FJhF-=bpl z+c);CBu%5}&tL3WNt#B{uU>0wK$=G3EDS;eL1-Wd*MT7V=i!evAWfr0{eJ)CzwQ5J zG#WvRY29o#@AWJq(Z}O4^fNp)j6e|GYPCW?!&8&316Qk+^$%&fDw%<9DofK<$qaN; zS(>g2OF0m}13~x>1mQanL>~@^yZn$;SjvI0lmlS|f>`T7cW+FZuEIqMOVcP9yD`!< z3QIW<8VEuIK`ts0X*x-gn@%OC)2TIcU#tVAX%p9+GDL&HK=irrd_KQAUe-+Uhe~lA zXV<&kF1t2UyU5I%QsFlt*?<6nJzV@!dC;Kbsnj4 zZbX`J9aun-aVht07=A*E(z6VVKoA-TB0hzcs#bxdFap)>^{@#IJX6&~@s)_VRHkhY?D8990v)NpX z-D0Bn4b?o#n#c~-0?N$J>`?XKGm#ytCE$iCfN#H$272)AO4C3P8t8#348jzCFf`Bu zQy7FP{9tIH2c|FxQ~1HqKo3k|5T@{hp@ANl!XUmB7T=x42Ft+EKoIdMyxneZy1(1) zS|@Wn7Y4~9F!Z@>XzjA!?=9VKx3AtOzP)Wc9$VTq&c!v7?QI4=^U`}v6WQLD!+O28 zbf?p~dY}0AwiGk^T=UYg)I>81xef%;lgT7=bh%tc-EQ|JO(O;}0zqit8FOa6Her}! z)-3$k$9i7!W?dIXpg~@>QFIR@&>=ObY$-@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/missile_strong_bu.png b/src/main/resources/assets/hbm/textures/models/missile_strong_bu.png new file mode 100644 index 0000000000000000000000000000000000000000..e2521a6509e593b348d0a40371f18b4ff3c53689 GIT binary patch literal 943 zcmV;g15o^lP)pW00004b3#c}2nYxW zd zuYw43^X6H48tipMWG?Q-4oU2EVwX-&Pt^x9{+W)3-&7}+M1%2oe1;1zFE0T#4M;?* z)zS*6X)J6Y647qAwE}7yi}?HYCdGFEpr)~ecX$obh~4R=6;RVy#82aGgfNO6Am%%ZB;sHo5-YQ@O+8;H*?O zqBXt#t#B%bgi|>r+yjwlqp*2HrKYQJ6~fds7U4>HzPiT3yK+d_KqPD+5@F8Vsp&Y5 zZ`zeytybE|eKilHrd3RHd`Lfy*q*Cg z=$t5uj;4Qvw^yG5w@Ob63k{Z()Yl!z2q#*q>;IaW;pXaumqn2>EZ+0 z@u?{bPan7kB4GoOkPl&iY8gll_dvKkA68)lFH|*=d?un!RjQa60@R-g)U7clawei= zBI=ybdo{-ACH`D_nPkYdWF}K-xppkmzp+>Gck?i<82Bq^YUv{6Zv;z zESM)2Y(E{!zg%=d?R`bZJ<>FlCaS%V=YdGXdcBs8ZZ?}>G#Z_$X^er~1Cg+S7u1op zXuwd*v{Cr6&1x>bKiJJZP{EdMlwHF;&>%O+HpW00004b3#c}2nYxW zdJXtQ60W}RsM5R*E8mMV3Y#1YkqG?t*24h(xP}_xruGL$lem{;%x)^B`uknH<`Cy&kk$EdT)6?RN6Hsb{m9 z_9A8Pk0G?pi_FxvrFz->W094}X0y@$QLEK5HGqEdW$&MtFzwBK$U6D5^~Vs}-h8*) zS+&o}m!&@z>tce>cSzPJU-tgKyp(e4$YsO)bj#fTD83RXT4PM)N<^td)H$K|YK+gN z5LAewNSYYO@x#YN^1l-a!`E^2ok%3VpnAXGQ`>z_B)_0)Gtf7kW&Hl8sYMYw4WH3j z8d&sHqG)ZyWg<^wJbs)5zzeFmajh4!feu`&(rh3SHqZg5FcMDTFT(~p;1ou}Dg0&F zKnI+{NH~SR3>)ZxQy2-S@Rwl&9dHUGaiuW%tF!n5%YtD8k&sW}?p z(<(2%H|*vJRIpVWS;ue$8YBk!mU3*M1)pdH00pW00004b3#c}2nYxW zdOV^{65fxRMG*mnTR6Grh zpMZiQN<)DxS%d;va1x0k8REz%BLyQP9gXkUU7v5y9-E7q?K4FFTo;z4cnH zR!md6-L5B16BAXfR*eB^nhOkMqH498F(6HIQQ`S3P41I4&85Qr4Z=~sex4cw(li(E z=-^?R*6%+4C{DXA%12$lW@aU6nu~Y)Q9J#Md^_9~r`;Ciqb^^$X$(lyT#$vCz(6K2 zkO}HQChGV2t1%!=bMdx!c4POn|CjwYZB{9xwzjUWYAqsBdp?oG_xn$XWgt2cCNPi*3}k{N!b~D+Z~Nt{ma>t& z?(x2_&c63ovl5}8m1BZdjtO=k6Qhi=&&H(bWta(JX`0K-X^b?@1)T^J7{~+$GMVW_ zr0F0C7CH;)bUH@no~Z++X&u{~B6vGbpNT$=IXyni94~67_=if9AIItED2me0dT8gF zSs@}iISP$IX*!|NXrwQlAPC~*Wq(HzmER4Nt+UWg)OV(hxA**o=>LKJFYo96EQ+Gk z$izfDoKXknV25%R>L0A*LX#JsMZgYZ0t1Msg{=xbsOD}4o_^Tb0$=S@< zA|{GIQ0;36syanYOzXglR9cjwvnZ0CQv=H`CCb+GaG8iQCg(s^2M4N4;yN#cfeu`! z(lC$-40M1HW`Yo2GceErLYN6cc+J2-2MA#%2;nsY105iQnIMGM3=DLD5N6^EVez-K zaKW-K~i9tnMIT$#HBD;}@ fsFFA>^_|NfH?WtwRk=-a00000NkvXXu0mjf6~mc1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/missile_strong_inc.png b/src/main/resources/assets/hbm/textures/models/missile_strong_inc.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a5364434411da2b222e1168f4e9bf2773b936c GIT binary patch literal 860 zcmV-i1Ec(jP)pW00004b3#c}2nYxW zd(P}w9k!?%tsYwHN-1#~M8ALh&XTW`G>xMB{k}6GO`~uX2BCoRxUsOX%DB`ugV$-H1#$1JN0HZz$bB43h_b{r27Y zK$>ofG0+cXX}T%V^3x;HY0Smb&rlk}QVxXAKoC9yLHG;=pMm&_ECx2y#$~NYiPW9#zUtr&DL;KF9;5X&c|1 zIz(SSJ`mkZxO_V-9ItDp_)Voaj?Me^dTrj@pOy2r65@@Pi^$CxO-p;|^=6L~_lf;y`+PpAe6naDJzqM>TThH67X{X!ZT zAk>wnfgm(607DprA$($JU;u_N2t)Y9(7*r;VGxG!iJ^f37{VY7;S)mx12BX^LLn^v zbQTX-whRpf5g)><)#|A0lO%CA;kYjhVrF35`?76opY3+*=)qu6c%Art;U|~B9PJzD z;~UB2ZR*Ut3z?T+W1Gn1ZR&2}=wh*O^l(`GZ?Qbyw#S}*zIpjrZlXO4nFoUC=daI< zqx1PZN|Gd#rV#@<13_ru9(!diS}^P}XB9r}ZQWkVR$U*?K#Q_!qv{&YK#$y@x}_Wq mETPV9R7$B%?zGguD8B*Z!iIZIciag80000 Date: Sun, 26 Nov 2023 19:59:21 +0100 Subject: [PATCH 125/207] Merge pull request #1254 from Doctor17-git/master Updated ru_RU.lang --- src/main/resources/assets/hbm/lang/ru_RU.lang | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index c62064d38..aebcd3533 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1434,10 +1434,29 @@ hadron.noresult_wrong_mode=Ðеверный режим! hadron.stats=Предыдущие результаты: hadron.stats_coord=Ошибка: %s / %s / %s hadron.stats_momentum=УÑкорение: %s + radar.detectMissiles=Обнаружение ракет radar.detectPlayers=Обнаружение игроков radar.smartMode=Умный режим$Выход редÑтоуна игнорирует воÑходÑщие ракеты radar.redMode=Режим краÑного камнÑ$Включён: Сигнал редÑтоуна базируетÑÑ Ð½Ð° дальноÑти$Выключен: Сигнал редÑтоуна базируетÑÑ Ð½Ð° уровне +radar.clearMap=ОчиÑтить карту +radar.detectShells=Обнаружение ÑнарÑдов +radar.showMap=Показать карту +radar.toggleGui=Переключить Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ + +radar.target.abm=ÐнтибаллиÑтичеÑÐºÐ°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° +radar.target.custom10=Ракета 10 размера +radar.target.custom1015=Ракета 10/15 размера +radar.target.custom15=Ракета 15 размера +radar.target.custom1520=Ракета 15/20 размера +radar.target.custom20=Ракета 20 размера +radar.target.doomsday=Ракета Ñудного Ð´Ð½Ñ +radar.target.shuttle=КоÑмичеÑкий шаттл Reliant Robin +radar.target.tier0=Ракета 0-го ÑƒÑ€Ð¾Ð²Ð½Ñ +radar.target.tier1=Ракета 1-го ÑƒÑ€Ð¾Ð²Ð½Ñ +radar.target.tier2=Ракета 2-го ÑƒÑ€Ð¾Ð²Ð½Ñ +radar.target.tier3=Ракета 3-го ÑƒÑ€Ð¾Ð²Ð½Ñ +radar.target.tier4=Ракета 4-го ÑƒÑ€Ð¾Ð²Ð½Ñ chem.TEST=ТеÑÑ‚ chem.FP_HEAVYOIL=Переработка Ñ‚Ñжелой нефти @@ -2585,6 +2604,8 @@ item.ingot_gh336.name=Слиток гиорÑиÑ-336 item.ingot_gh336.desc=Коллега Сиборгиума. item.niter.name=Селитра +item.nitra.name=Ðитра +item.nitra_small.name=Кучка нитры item.ingot_copper.name=Слиток промышленной меди item.ingot_red_copper.name=Слиток краÑной меди item.ingot_tungsten.name=Вольфрамовый Ñлиток @@ -2696,6 +2717,7 @@ item.plate_paa.name=ПлаÑтина Ñплава PaA item.ingot_dura_steel.name=Ð’Ñ‹ÑокоÑкороÑÑ‚Ð½Ð°Ñ Ñталь item.ingot_polymer.name=Полимер item.ingot_rubber.name=Резина +item.ingot_biorubber.name=БруÑок латекÑа item.ingot_polonium.name=Слиток полониÑ-210 item.bolt_dura_steel.name=Ð’Ñ‹ÑокоÑкороÑтной Ñтальной Ñтержень item.pipes_steel.name=Стальные трубы @@ -3142,7 +3164,7 @@ item.ore.malachite=ÐœÐ°Ð»Ð°Ñ…Ð¸Ñ‚Ð¾Ð²Ð°Ñ item.ore.niobium=ÐÐ¸Ð¾Ð±Ð¸ÐµÐ²Ð°Ñ item.ore.titanium=Ð¢Ð¸Ñ‚Ð°Ð½Ð¾Ð²Ð°Ñ item.ore.tungsten=Ð’Ð¾Ð»ÑŒÑ„Ñ€Ð°Ð¼Ð¾Ð²Ð°Ñ -item.ore.thorium=Ð¢Ð¾Ñ€Ð¸ÐµÐ²Ð°Ñ +item.ore.thorium232=Ð¢Ð¾Ñ€Ð¸ÐµÐ²Ð°Ñ item.ore.uranium=Ð£Ñ€Ð°Ð½Ð¾Ð²Ð°Ñ item.ore_bedrock.name=%s Ð±ÐµÐ´Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð° item.ore_centrifuged.name=Ð¦ÐµÐ½Ñ‚Ñ€Ð¸Ñ„ÑƒÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ %s Ð±ÐµÐ´Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð° @@ -4602,6 +4624,7 @@ item.ball_dynamite.name=Динамит item.ball_tnt.name=ТÐТ item.ball_tatb.name=TATB item.ball_fireclay.name=Ð¨Ð°Ð¼Ð¾Ñ‚Ð½Ð°Ñ Ð³Ð»Ð¸Ð½Ð° +item.ball_resin.name=Ð›Ð°Ñ‚ÐµÐºÑ item.plate_kevlar.name=Кевларо-керамичеÑкий ÑоÑтав item.weaponized_starblaster_cell.name=§cÐ¡Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÑнергетичеÑÐºÐ°Ñ Ñчейка Звездного блаÑтера§r @@ -4892,7 +4915,7 @@ item.designator_arty_range.name=ÐртиллерийÑкий целеуказа item.missile_assembly.name=Сборка малой ракеты item.assembly_nuke.name=Оболочка Ñдерного минизарÑда item.missile_generic.name=ФугаÑÐ½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° -item.missile_anti_ballistic.name=ÐнтибаллиÑтичеÑÐºÐ°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° (WIP) +item.missile_anti_ballistic.name=ÐнтибаллиÑтичеÑÐºÐ°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° item.missile_incendiary.name=Ð—Ð°Ð¶Ð¸Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° item.missile_cluster.name=КлаÑÑ‚ÐµÑ€Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° item.missile_buster.name=ÐŸÑ€Ð¾Ñ‚Ð¸Ð²Ð¾Ð±ÑƒÐ½ÐºÐµÑ€Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° From cb0557170cc4e885ae56d38a2f1b9de9f24ac0bd Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 26 Nov 2023 20:56:09 +0100 Subject: [PATCH 126/207] small fix --- src/main/java/com/hbm/items/tool/WeaponSpecial.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/hbm/items/tool/WeaponSpecial.java b/src/main/java/com/hbm/items/tool/WeaponSpecial.java index 7d8f177dc..c59daa016 100644 --- a/src/main/java/com/hbm/items/tool/WeaponSpecial.java +++ b/src/main/java/com/hbm/items/tool/WeaponSpecial.java @@ -23,6 +23,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; From 0f082285cfb9de776f7c99acf1fff977e9ff9a04 Mon Sep 17 00:00:00 2001 From: KoblizekXD Date: Thu, 23 Nov 2023 15:28:03 +0100 Subject: [PATCH 127/207] feat: add secure access doors from 1.12.2 fork --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../java/com/hbm/main/ResourceManager.java | 5 + .../hbm/render/item/ItemRenderLibrary.java | 12 + .../java/com/hbm/tileentity/DoorDecl.java | 101 + .../hbm/models/doors/secure_access_door.obj | 4364 +++++++++++++++++ src/main/resources/assets/hbm/sounds.json | 5 +- .../hbm/sounds/block/door/garage_move.ogg | Bin 0 -> 12368 bytes .../hbm/sounds/block/door/garage_stop.ogg | Bin 0 -> 9252 bytes .../models/doors/secure_access_door.png | Bin 0 -> 123860 bytes 9 files changed, 4489 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/assets/hbm/models/doors/secure_access_door.obj create mode 100644 src/main/resources/assets/hbm/sounds/block/door/garage_move.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/garage_stop.ogg create mode 100644 src/main/resources/assets/hbm/textures/models/doors/secure_access_door.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index cbc8adbd4..42c1948df 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -606,6 +606,7 @@ public class ModBlocks { public static Block sliding_blast_door; public static Block fire_door; public static Block transition_seal; + public static Block secure_access_door; public static Block door_metal; public static Block door_office; @@ -2142,6 +2143,7 @@ public class ModBlocks { fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); + secure_access_door = new BlockDoorGeneric(Material.iron, DoorDecl.SECURE_ACCESS_DOOR).setBlockName("secure_access_door").setHardness(200.0F).setResistance(20000.0F).setCreativeTab(MainRegistry.machineTab); door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal"); door_office = new BlockModDoor(Material.iron).setBlockName("door_office").setHardness(10.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":door_office"); @@ -3075,6 +3077,7 @@ public class ModBlocks { GameRegistry.registerBlock(door_metal, door_metal.getUnlocalizedName()); GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName()); GameRegistry.registerBlock(door_bunker, door_bunker.getUnlocalizedName()); + GameRegistry.registerBlock(secure_access_door, secure_access_door.getUnlocalizedName()); //Crates register(crate_iron); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index f585c1a71..53c2ca946 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -318,6 +318,11 @@ public class ResourceManager { public static AnimatedModel transition_seal; public static Animation transition_seal_anim; public static final WavefrontObjDisplayList fire_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/fire_door.obj")).asDisplayList(); + + //Secure Access Door + public static final ResourceLocation secure_access_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/secure_access_door.png"); + public static WavefrontObjDisplayList secure_access_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/secure_access_door.obj"))); + //Lantern public static final IModelCustom lantern = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/trinkets/lantern.obj")); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 2e2820245..c9fb21d52 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -727,6 +727,18 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.vault_cog_tex); ResourceManager.vault_cog.renderAll(); bindTexture(ResourceManager.vault_label_101_tex); ResourceManager.vault_label.renderAll(); }}); + renderers.put(Item.getItemFromBlock(ModBlocks.secure_access_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(2.4, 2.4, 2.4); + } + public void renderCommon() { + bindTexture(ResourceManager.secure_access_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.secure_access_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); renderers.put(Item.getItemFromBlock(ModBlocks.blast_door), new ItemRenderBase() { public void renderInventory() { diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index b7683d828..d6469e346 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -4,11 +4,13 @@ import com.hbm.animloader.AnimatedModel; import com.hbm.animloader.Animation; import com.hbm.main.ResourceManager; import com.hbm.render.loader.WavefrontObjDisplayList; +import com.hbm.sound.MovingSoundPlayerLoop; import com.hbm.util.BobMathUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.sound.SoundEvent; import org.lwjgl.opengl.GL11; public abstract class DoorDecl { @@ -287,6 +289,105 @@ public abstract class DoorDecl { } }; + public static final DoorDecl SECURE_ACCESS_DOOR = new DoorDecl(){ + + @Override + public String getCloseSoundLoop() { + return "hbm:door.garage_move"; + } + + @Override + public String getCloseSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.garage_move"; + } + + @Override + public float getSoundVolume(){ + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(!partName.equals("base")){ + set(trans, 0, 3.5F*getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glRotated(90, 0, 1, 0); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][]{{0, -1, 0, 5}}; + }; + + @Override + public int timeToOpen() { + return 120; + }; + + @Override + public int[][] getDoorOpenRanges(){ + return new int[][]{{-2, 1, 0, 4, 5, 1}}; + } + + @Override + public int[] getDimensions(){ + return new int[]{4, 0, 0, 0, 2, 2}; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open){ + if(y > 0){ + return AxisAlignedBB.getBoundingBox(0, 0, 0.375, 1, 1, 0.625); + } + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + } + if(y == 1) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1); + } else if(y == 4){ + return AxisAlignedBB.getBoundingBox(0, 0.5, 0.15, 1, 1, 0.85); + } else { + return super.getBlockBound(x, y, z, open); + } + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName){ + return ResourceManager.secure_access_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.secure_access_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel(){ + return ResourceManager.secure_access_door; + } + }; + //Format: x, y, z, tangent amount 1 (how long the door would be if it moved up), tangent amount 2 (door places blocks in this direction), axis (0-x, 1-y, 2-z) public abstract int[][] getDoorOpenRanges(); diff --git a/src/main/resources/assets/hbm/models/doors/secure_access_door.obj b/src/main/resources/assets/hbm/models/doors/secure_access_door.obj new file mode 100644 index 000000000..24c2c95b6 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/secure_access_door.obj @@ -0,0 +1,4364 @@ +# Blender v2.92.0 OBJ File: 'secure_access_door.blend' +# www.blender.org +o door +v -2.340313 1.159684 0.125000 +v 2.340313 1.159684 0.125000 +v -2.500000 0.999997 0.125000 +v -2.500000 4.499997 0.125000 +v 2.500000 4.499997 0.125000 +v 2.500000 0.999997 0.125000 +v -2.340313 1.159684 0.045951 +v 2.340313 1.159684 0.045951 +v -2.340313 4.119773 0.125000 +v -2.119776 4.340310 0.125000 +v -2.496256 4.496253 0.125000 +v 2.119776 4.340310 0.125000 +v 2.340313 4.119773 0.125000 +v 2.496256 4.496253 0.125000 +v -2.119776 4.340310 0.045951 +v -2.340313 4.119773 0.045951 +v 2.340313 4.119773 0.045951 +v 2.119776 4.340310 0.045951 +v -2.500000 4.119773 0.125000 +v 2.500000 4.119773 0.125000 +v 2.500000 3.579181 0.125000 +v 2.500000 3.423868 0.125000 +v 2.500000 2.800531 0.125000 +v 2.500000 2.642630 0.125000 +v 2.500000 2.022151 0.125000 +v 2.500000 1.861122 0.125000 +v -2.340313 3.455513 0.125000 +v -2.340313 3.610826 0.125000 +v -2.340313 2.714197 0.125000 +v -2.340313 2.872098 0.125000 +v -2.340313 1.972611 0.125000 +v -2.340313 2.133640 0.125000 +v -2.340313 2.133400 0.045951 +v -2.340313 1.972851 0.045951 +v -2.340313 2.871974 0.045951 +v -2.340313 2.714321 0.045951 +v -2.340313 3.610798 0.045951 +v -2.340313 3.455542 0.045951 +v 2.340313 2.133640 0.125000 +v 2.340313 1.972611 0.125000 +v 2.340313 2.872098 0.125000 +v 2.340313 2.714197 0.125000 +v 2.340313 3.610826 0.125000 +v 2.340313 3.455513 0.125000 +v 2.340313 3.455542 0.045951 +v 2.340313 3.610798 0.045951 +v 2.340313 2.714321 0.045951 +v 2.340313 2.871974 0.045951 +v 2.340313 1.972851 0.045951 +v 2.340313 2.133400 0.045951 +v -2.500000 1.861122 0.125000 +v -2.500000 2.022151 0.125000 +v -2.500000 2.642630 0.125000 +v -2.500000 2.800531 0.125000 +v -2.500000 3.423868 0.125000 +v -2.500000 3.579181 0.125000 +v -2.340313 3.455542 0.072230 +v -2.340313 3.483067 0.099755 +v -2.340313 3.583273 0.099755 +v -2.340313 3.610798 0.072230 +v 2.340313 3.610798 0.072230 +v 2.340313 3.583273 0.099755 +v 2.340313 3.483067 0.099755 +v 2.340313 3.455542 0.072230 +v -2.340313 2.714321 0.072230 +v -2.340313 2.741846 0.099755 +v -2.340313 2.844450 0.099755 +v -2.340313 2.871974 0.072230 +v 2.340313 2.871974 0.072230 +v 2.340313 2.844450 0.099755 +v 2.340313 2.741846 0.099755 +v 2.340313 2.714321 0.072230 +v -2.340313 1.972851 0.072230 +v -2.340313 2.000376 0.099755 +v -2.340313 2.105875 0.099755 +v -2.340313 2.133400 0.072230 +v 2.340313 2.133400 0.072230 +v 2.340313 2.105875 0.099755 +v 2.340313 2.000376 0.099755 +v 2.340313 1.972851 0.072230 +v -1.212864 2.208840 0.074562 +v -1.212864 2.619229 0.074562 +v -1.243111 2.178593 0.033562 +v -1.243111 2.649477 0.033562 +v -0.802475 2.208840 0.074562 +v -0.802475 2.619229 0.074562 +v -0.772228 2.178593 0.033562 +v -0.772228 2.649477 0.033562 +v -1.243111 2.178593 0.074562 +v -1.243111 2.649477 0.074562 +v -0.772228 2.649477 0.074562 +v -0.772228 2.178593 0.074562 +v -1.212864 2.208840 0.054611 +v -1.212864 2.619229 0.054611 +v -0.802475 2.619229 0.054611 +v -0.802475 2.208840 0.054611 +v -0.204356 2.301647 0.091702 +v -0.204356 2.301647 0.020851 +v -0.204356 2.466216 0.020851 +v 0.204356 2.301647 0.091702 +v 0.204356 2.301647 0.020851 +v 0.204356 2.466216 0.020851 +v -0.204356 2.395251 0.091702 +v -0.204356 2.466216 0.055863 +v -0.204356 2.445431 0.081205 +v 0.204356 2.466216 0.055863 +v 0.204356 2.395251 0.091702 +v 0.204356 2.445431 0.081205 +v -2.500240 1.249014 0.129405 +v -2.500100 1.217400 0.147657 +v -2.499822 1.217400 0.184161 +v -2.499682 1.249014 0.202413 +v -2.499822 1.280628 0.184161 +v -2.500101 1.280628 0.147657 +v -1.553283 1.291650 0.190060 +v -2.111814 1.291690 0.190126 +v -2.112233 1.249014 0.116279 +v -1.553702 1.249014 0.116145 +v -1.553562 1.291690 0.140806 +v -2.112093 1.291650 0.140872 +v -1.546745 1.249014 0.128878 +v -2.119190 1.249014 0.129046 +v -2.119050 1.217400 0.147298 +v -1.546605 1.217400 0.147130 +v -2.118771 1.217400 0.183802 +v -1.546326 1.217400 0.183635 +v -2.118632 1.249014 0.202055 +v -1.546187 1.249014 0.201887 +v -2.118772 1.280628 0.183802 +v -1.546326 1.280628 0.183635 +v -2.119050 1.280628 0.147298 +v -1.546605 1.280628 0.147130 +v -2.111675 1.249014 0.214788 +v -1.553144 1.249014 0.214653 +v -2.111814 1.206339 0.190126 +v -1.553283 1.206378 0.190060 +v -2.112093 1.206378 0.140872 +v -1.553562 1.206339 0.140806 +v -2.111814 1.206378 0.083217 +v -2.111814 1.617254 0.083217 +v -2.111814 1.206378 0.043381 +v -2.111814 1.617254 0.043381 +v -1.553562 1.206378 0.083217 +v -1.553562 1.617254 0.083217 +v -1.553562 1.206378 0.043381 +v -1.553563 1.617254 0.043381 +v -2.111814 1.291650 0.083217 +v -2.111814 1.291650 0.043381 +v -1.553562 1.291650 0.043381 +v -1.553562 1.291650 0.083217 +v -2.111814 1.249014 0.043381 +v -2.111814 1.249014 0.083217 +v -1.553562 1.249014 0.043381 +v -1.553562 1.249014 0.083217 +v 2.500240 1.249014 0.129405 +v 2.500100 1.217400 0.147657 +v 2.499822 1.217400 0.184161 +v 2.499682 1.249014 0.202413 +v 2.499822 1.280628 0.184161 +v 2.500100 1.280628 0.147657 +v 1.553283 1.291650 0.190060 +v 2.111814 1.291690 0.190126 +v 2.112233 1.249014 0.116279 +v 1.553702 1.249014 0.116145 +v 1.553562 1.291690 0.140806 +v 2.112094 1.291650 0.140872 +v 1.546745 1.249014 0.128878 +v 2.119189 1.249014 0.129046 +v 2.119050 1.217400 0.147298 +v 1.546605 1.217400 0.147130 +v 2.118771 1.217400 0.183802 +v 1.546326 1.217400 0.183635 +v 2.118632 1.249014 0.202055 +v 1.546187 1.249014 0.201887 +v 2.118772 1.280628 0.183802 +v 1.546326 1.280628 0.183635 +v 2.119050 1.280628 0.147298 +v 1.546605 1.280628 0.147130 +v 2.111675 1.249014 0.214788 +v 1.553144 1.249014 0.214653 +v 2.111814 1.206339 0.190126 +v 1.553283 1.206378 0.190060 +v 2.112093 1.206378 0.140872 +v 1.553562 1.206339 0.140806 +v 2.111814 1.206378 0.083217 +v 2.111814 1.617254 0.083217 +v 2.111814 1.206378 0.043381 +v 2.111814 1.617254 0.043381 +v 1.553562 1.206378 0.083217 +v 1.553562 1.617254 0.083217 +v 1.553562 1.206378 0.043381 +v 1.553562 1.617254 0.043381 +v 2.111814 1.291650 0.083217 +v 2.111814 1.291650 0.043381 +v 1.553562 1.291650 0.043381 +v 1.553562 1.291650 0.083217 +v 2.111814 1.249014 0.043381 +v 2.111814 1.249014 0.083217 +v 1.553562 1.249014 0.043381 +v 1.553562 1.249014 0.083217 +v 1.168282 2.133092 0.117246 +v 1.168282 2.449447 0.117246 +v 1.116952 2.081763 0.040213 +v 1.116952 2.500776 0.040213 +v 1.964271 2.133092 0.117246 +v 1.964271 2.449447 0.117246 +v 2.015600 2.081763 0.040213 +v 2.015600 2.500776 0.040213 +v 1.116952 2.081763 0.117246 +v 1.116952 2.500776 0.117246 +v 2.015600 2.500776 0.117246 +v 2.015600 2.081763 0.117246 +v 1.657742 2.277558 0.065015 +v 1.657742 2.416211 0.065015 +v 1.916054 2.416211 0.065015 +v 1.916054 2.277558 0.065015 +v 1.220038 2.166149 0.036199 +v 1.220038 2.265817 0.036199 +v 1.319705 2.166149 0.036199 +v 1.319705 2.265817 0.036199 +v 1.269871 2.166149 0.115509 +v 1.220038 2.166149 0.065675 +v 1.234634 2.166149 0.100913 +v 1.220038 2.265817 0.065675 +v 1.234634 2.265817 0.100913 +v 1.319705 2.166149 0.065675 +v 1.305109 2.166149 0.100913 +v 1.269871 2.265817 0.115509 +v 1.319705 2.265817 0.065675 +v 1.305109 2.265817 0.100913 +v 1.293844 2.216693 0.042410 +v 1.293844 2.197116 0.053712 +v 1.293844 2.197116 0.076318 +v 1.293844 2.216693 0.087620 +v 1.293844 2.236270 0.076318 +v 1.293844 2.236270 0.053712 +v 1.715496 2.216693 0.042410 +v 1.715496 2.197116 0.053712 +v 1.715496 2.197116 0.076318 +v 1.715496 2.216693 0.087620 +v 1.715496 2.236270 0.076318 +v 1.715496 2.236270 0.053712 +v 1.916054 2.187559 0.048194 +v 1.916054 2.216693 0.031373 +v 1.715496 2.216693 0.031373 +v 1.916054 2.187559 0.081836 +v 1.916054 2.216693 0.098657 +v 1.916054 2.245828 0.081836 +v 1.916054 2.245828 0.048194 +v 1.715496 2.187559 0.048194 +v 1.715496 2.187559 0.081836 +v 1.715496 2.216693 0.098657 +v 1.715496 2.245828 0.081836 +v 1.715496 2.245828 0.048194 +v 1.168282 2.133092 0.065015 +v 1.168282 2.449447 0.065015 +v 1.964271 2.449447 0.065015 +v 1.964271 2.133092 0.065015 +v 1.659844 2.302833 0.046480 +v 1.659844 2.415082 0.046480 +v 1.913952 2.415082 0.046480 +v 1.913952 2.302833 0.046480 +v 1.683615 2.394066 0.030874 +v 1.715124 2.394066 0.030874 +v 1.683615 2.376265 0.011737 +v 1.715124 2.376265 0.011737 +v 1.683615 2.350791 0.017585 +v 1.715124 2.350791 0.017585 +v 1.683615 2.343119 0.042570 +v 1.715124 2.343119 0.042570 +v 1.683615 2.360920 0.061707 +v 1.715124 2.360920 0.061707 +v 1.683615 2.386394 0.055858 +v 1.715124 2.386394 0.055858 +v 1.683615 2.365368 0.062249 +v 1.683615 2.383127 0.059579 +v 1.715124 2.383127 0.059579 +v 1.715124 2.365368 0.062249 +v 1.683615 2.373156 0.074653 +v 1.683615 2.382544 0.071410 +v 1.715124 2.382544 0.071410 +v 1.715124 2.373156 0.074653 +v 1.740331 2.391644 0.058652 +v 1.771840 2.391644 0.058652 +v 1.740331 2.400436 0.034039 +v 1.771840 2.400436 0.034039 +v 1.740331 2.383517 0.014118 +v 1.771840 2.383517 0.014118 +v 1.740331 2.357806 0.018809 +v 1.771840 2.357806 0.018809 +v 1.740331 2.349013 0.043422 +v 1.771840 2.349013 0.043422 +v 1.740331 2.365932 0.063343 +v 1.771840 2.365932 0.063343 +v 1.740331 2.350579 0.047620 +v 1.740331 2.361125 0.062156 +v 1.771840 2.361125 0.062156 +v 1.771840 2.350579 0.047620 +v 1.740331 2.343153 0.060243 +v 1.740331 2.350354 0.067085 +v 1.771840 2.350354 0.067085 +v 1.771840 2.343153 0.060243 +v 1.797047 2.386932 0.021940 +v 1.828556 2.386932 0.021940 +v 1.797047 2.362782 0.011948 +v 1.828556 2.362782 0.011948 +v 1.797047 2.342053 0.027867 +v 1.828556 2.342053 0.027867 +v 1.797047 2.345475 0.053778 +v 1.828556 2.345475 0.053778 +v 1.797047 2.369626 0.063770 +v 1.828556 2.369626 0.063770 +v 1.797047 2.390355 0.047851 +v 1.828556 2.390355 0.047851 +v 1.797047 2.373896 0.062413 +v 1.797047 2.388932 0.052594 +v 1.828556 2.388932 0.052594 +v 1.828556 2.373896 0.062413 +v 1.797047 2.386139 0.070450 +v 1.797047 2.393326 0.063594 +v 1.828556 2.393326 0.063594 +v 1.828556 2.386139 0.070450 +v 1.853763 2.396732 0.045249 +v 1.885272 2.396732 0.045249 +v 1.853763 2.391602 0.019622 +v 1.885272 2.391602 0.019622 +v 1.853763 2.366842 0.011250 +v 1.885272 2.366842 0.011250 +v 1.853763 2.347213 0.028507 +v 1.885272 2.347213 0.028507 +v 1.853763 2.352343 0.054135 +v 1.885272 2.352343 0.054135 +v 1.853763 2.377102 0.062506 +v 1.885272 2.377102 0.062506 +v 1.853763 2.355846 0.056928 +v 1.853763 2.372370 0.063962 +v 1.885272 2.372370 0.063962 +v 1.885272 2.355846 0.056928 +v 1.853763 2.355977 0.071573 +v 1.853763 2.365673 0.073732 +v 1.885272 2.365673 0.073732 +v 1.885272 2.355977 0.071573 +v -2.340313 1.159684 -0.125000 +v 2.340313 1.159684 -0.125000 +v -2.500000 0.999997 -0.125000 +v -2.500000 4.499997 -0.125000 +v 2.500000 4.499997 -0.125000 +v 2.500000 0.999997 -0.125000 +v -2.340313 1.159684 -0.045951 +v 2.340313 1.159684 -0.045951 +v -2.340313 4.119773 -0.125000 +v -2.119776 4.340310 -0.125000 +v -2.496256 4.496253 -0.125000 +v 2.119776 4.340310 -0.125000 +v 2.340313 4.119773 -0.125000 +v 2.496256 4.496253 -0.125000 +v -2.119776 4.340310 -0.045951 +v -2.340313 4.119773 -0.045951 +v 2.340313 4.119773 -0.045951 +v 2.119776 4.340310 -0.045951 +v -2.500000 4.119773 -0.125000 +v 2.500000 4.119773 -0.125000 +v 2.500000 3.579181 -0.125000 +v 2.500000 3.423868 -0.125000 +v 2.500000 2.800531 -0.125000 +v 2.500000 2.642630 -0.125000 +v 2.500000 2.022151 -0.125000 +v 2.500000 1.861122 -0.125000 +v -2.340313 3.455513 -0.125000 +v -2.340313 3.610826 -0.125000 +v -2.340313 2.714197 -0.125000 +v -2.340313 2.872098 -0.125000 +v -2.340313 1.972611 -0.125000 +v -2.340313 2.133640 -0.125000 +v -2.340313 2.133400 -0.045951 +v -2.340313 1.972851 -0.045951 +v -2.340313 2.871974 -0.045951 +v -2.340313 2.714321 -0.045951 +v -2.340313 3.610798 -0.045951 +v -2.340313 3.455542 -0.045951 +v 2.340313 2.133640 -0.125000 +v 2.340313 1.972611 -0.125000 +v 2.340313 2.872098 -0.125000 +v 2.340313 2.714197 -0.125000 +v 2.340313 3.610826 -0.125000 +v 2.340313 3.455513 -0.125000 +v 2.340313 3.455542 -0.045951 +v 2.340313 3.610798 -0.045951 +v 2.340313 2.714321 -0.045951 +v 2.340313 2.871974 -0.045951 +v 2.340313 1.972851 -0.045951 +v 2.340313 2.133400 -0.045951 +v -2.500000 1.861122 -0.125000 +v -2.500000 2.022151 -0.125000 +v -2.500000 2.642630 -0.125000 +v -2.500000 2.800531 -0.125000 +v -2.500000 3.423868 -0.125000 +v -2.500000 3.579181 -0.125000 +v -2.340313 3.455542 -0.072230 +v -2.340313 3.483067 -0.099755 +v -2.340313 3.583273 -0.099755 +v -2.340313 3.610798 -0.072230 +v 2.340313 3.610798 -0.072230 +v 2.340313 3.583273 -0.099755 +v 2.340313 3.483067 -0.099755 +v 2.340313 3.455542 -0.072230 +v -2.340313 2.714321 -0.072230 +v -2.340313 2.741846 -0.099755 +v -2.340313 2.844450 -0.099755 +v -2.340313 2.871974 -0.072230 +v 2.340313 2.871974 -0.072230 +v 2.340313 2.844450 -0.099755 +v 2.340313 2.741846 -0.099755 +v 2.340313 2.714321 -0.072230 +v -2.340313 1.972851 -0.072230 +v -2.340313 2.000376 -0.099755 +v -2.340313 2.105875 -0.099755 +v -2.340313 2.133400 -0.072230 +v 2.340313 2.133400 -0.072230 +v 2.340313 2.105875 -0.099755 +v 2.340313 2.000376 -0.099755 +v 2.340313 1.972851 -0.072230 +v -1.212864 2.208840 -0.074562 +v -1.212864 2.619229 -0.074562 +v -1.243111 2.178593 -0.033562 +v -1.243111 2.649477 -0.033562 +v -0.802475 2.208840 -0.074562 +v -0.802475 2.619229 -0.074562 +v -0.772228 2.178593 -0.033562 +v -0.772228 2.649477 -0.033562 +v -1.243111 2.178593 -0.074562 +v -1.243111 2.649477 -0.074562 +v -0.772228 2.649477 -0.074562 +v -0.772228 2.178593 -0.074562 +v -1.212864 2.208840 -0.054611 +v -1.212864 2.619229 -0.054611 +v -0.802475 2.619229 -0.054611 +v -0.802475 2.208840 -0.054611 +v -0.204356 2.301647 -0.091702 +v -0.204356 2.301647 -0.020851 +v -0.204356 2.466216 -0.020851 +v 0.204356 2.301647 -0.091702 +v 0.204356 2.301647 -0.020851 +v 0.204356 2.466216 -0.020851 +v -0.204356 2.395251 -0.091702 +v -0.204356 2.466216 -0.055863 +v -0.204356 2.445431 -0.081205 +v 0.204356 2.466216 -0.055863 +v 0.204356 2.395251 -0.091702 +v 0.204356 2.445431 -0.081205 +v -2.500240 1.249014 -0.129405 +v -2.500100 1.217400 -0.147657 +v -2.499822 1.217400 -0.184161 +v -2.499682 1.249014 -0.202413 +v -2.499822 1.280628 -0.184161 +v -2.500101 1.280628 -0.147657 +v -1.553283 1.291650 -0.190060 +v -2.111814 1.291690 -0.190126 +v -2.112233 1.249014 -0.116279 +v -1.553702 1.249014 -0.116145 +v -1.553562 1.291690 -0.140806 +v -2.112093 1.291650 -0.140872 +v -1.546745 1.249014 -0.128878 +v -2.119190 1.249014 -0.129046 +v -2.119050 1.217400 -0.147298 +v -1.546605 1.217400 -0.147130 +v -2.118771 1.217400 -0.183802 +v -1.546326 1.217400 -0.183635 +v -2.118632 1.249014 -0.202055 +v -1.546187 1.249014 -0.201887 +v -2.118772 1.280628 -0.183802 +v -1.546326 1.280628 -0.183635 +v -2.119050 1.280628 -0.147298 +v -1.546605 1.280628 -0.147130 +v -2.111675 1.249014 -0.214788 +v -1.553144 1.249014 -0.214653 +v -2.111814 1.206339 -0.190126 +v -1.553283 1.206378 -0.190060 +v -2.112093 1.206378 -0.140872 +v -1.553562 1.206339 -0.140806 +v -2.111814 1.206378 -0.083217 +v -2.111814 1.617254 -0.083217 +v -2.111814 1.206378 -0.043381 +v -2.111814 1.617254 -0.043381 +v -1.553562 1.206378 -0.083217 +v -1.553562 1.617254 -0.083217 +v -1.553562 1.206378 -0.043381 +v -1.553563 1.617254 -0.043381 +v -2.111814 1.291650 -0.083217 +v -2.111814 1.291650 -0.043381 +v -1.553562 1.291650 -0.043381 +v -1.553562 1.291650 -0.083217 +v -2.111814 1.249014 -0.043381 +v -2.111814 1.249014 -0.083217 +v -1.553562 1.249014 -0.043381 +v -1.553562 1.249014 -0.083217 +v 2.500240 1.249014 -0.129405 +v 2.500100 1.217400 -0.147657 +v 2.499822 1.217400 -0.184161 +v 2.499682 1.249014 -0.202413 +v 2.499822 1.280628 -0.184161 +v 2.500100 1.280628 -0.147657 +v 1.553283 1.291650 -0.190060 +v 2.111814 1.291690 -0.190126 +v 2.112233 1.249014 -0.116279 +v 1.553702 1.249014 -0.116145 +v 1.553562 1.291690 -0.140806 +v 2.112094 1.291650 -0.140872 +v 1.546745 1.249014 -0.128878 +v 2.119189 1.249014 -0.129046 +v 2.119050 1.217400 -0.147298 +v 1.546605 1.217400 -0.147130 +v 2.118771 1.217400 -0.183802 +v 1.546326 1.217400 -0.183635 +v 2.118632 1.249014 -0.202055 +v 1.546187 1.249014 -0.201887 +v 2.118772 1.280628 -0.183802 +v 1.546326 1.280628 -0.183635 +v 2.119050 1.280628 -0.147298 +v 1.546605 1.280628 -0.147130 +v 2.111675 1.249014 -0.214788 +v 1.553144 1.249014 -0.214653 +v 2.111814 1.206339 -0.190126 +v 1.553283 1.206378 -0.190060 +v 2.112093 1.206378 -0.140872 +v 1.553562 1.206339 -0.140806 +v 2.111814 1.206378 -0.083217 +v 2.111814 1.617254 -0.083217 +v 2.111814 1.206378 -0.043381 +v 2.111814 1.617254 -0.043381 +v 1.553562 1.206378 -0.083217 +v 1.553562 1.617254 -0.083217 +v 1.553562 1.206378 -0.043381 +v 1.553562 1.617254 -0.043381 +v 2.111814 1.291650 -0.083217 +v 2.111814 1.291650 -0.043381 +v 1.553562 1.291650 -0.043381 +v 1.553562 1.291650 -0.083217 +v 2.111814 1.249014 -0.043381 +v 2.111814 1.249014 -0.083217 +v 1.553562 1.249014 -0.043381 +v 1.553562 1.249014 -0.083217 +v 1.168282 2.133092 -0.117246 +v 1.168282 2.449447 -0.117246 +v 1.116952 2.081763 -0.040213 +v 1.116952 2.500776 -0.040213 +v 1.964271 2.133092 -0.117246 +v 1.964271 2.449447 -0.117246 +v 2.015600 2.081763 -0.040213 +v 2.015600 2.500776 -0.040213 +v 1.116952 2.081763 -0.117246 +v 1.116952 2.500776 -0.117246 +v 2.015600 2.500776 -0.117246 +v 2.015600 2.081763 -0.117246 +v 1.657742 2.277558 -0.065015 +v 1.657742 2.416211 -0.065015 +v 1.916054 2.416211 -0.065015 +v 1.916054 2.277558 -0.065015 +v 1.220038 2.166149 -0.036199 +v 1.220038 2.265817 -0.036199 +v 1.319705 2.166149 -0.036199 +v 1.319705 2.265817 -0.036199 +v 1.269871 2.166149 -0.115509 +v 1.220038 2.166149 -0.065675 +v 1.234634 2.166149 -0.100913 +v 1.220038 2.265817 -0.065675 +v 1.234634 2.265817 -0.100913 +v 1.319705 2.166149 -0.065675 +v 1.305109 2.166149 -0.100913 +v 1.269871 2.265817 -0.115509 +v 1.319705 2.265817 -0.065675 +v 1.305109 2.265817 -0.100913 +v 1.293844 2.216693 -0.042410 +v 1.293844 2.197116 -0.053712 +v 1.293844 2.197116 -0.076318 +v 1.293844 2.216693 -0.087620 +v 1.293844 2.236270 -0.076318 +v 1.293844 2.236270 -0.053712 +v 1.715496 2.216693 -0.042410 +v 1.715496 2.197116 -0.053712 +v 1.715496 2.197116 -0.076318 +v 1.715496 2.216693 -0.087620 +v 1.715496 2.236270 -0.076318 +v 1.715496 2.236270 -0.053712 +v 1.916054 2.187559 -0.048194 +v 1.916054 2.216693 -0.031373 +v 1.715496 2.216693 -0.031373 +v 1.916054 2.187559 -0.081836 +v 1.916054 2.216693 -0.098657 +v 1.916054 2.245828 -0.081836 +v 1.916054 2.245828 -0.048194 +v 1.715496 2.187559 -0.048194 +v 1.715496 2.187559 -0.081836 +v 1.715496 2.216693 -0.098657 +v 1.715496 2.245828 -0.081836 +v 1.715496 2.245828 -0.048194 +v 1.168282 2.133092 -0.065015 +v 1.168282 2.449447 -0.065015 +v 1.964271 2.449447 -0.065015 +v 1.964271 2.133092 -0.065015 +v 1.659844 2.302833 -0.046480 +v 1.659844 2.415082 -0.046480 +v 1.913952 2.415082 -0.046480 +v 1.913952 2.302833 -0.046480 +v 1.683615 2.394066 -0.030874 +v 1.715124 2.394066 -0.030874 +v 1.683615 2.376265 -0.011737 +v 1.715124 2.376265 -0.011737 +v 1.683615 2.350791 -0.017585 +v 1.715124 2.350791 -0.017585 +v 1.683615 2.343119 -0.042570 +v 1.715124 2.343119 -0.042570 +v 1.683615 2.360920 -0.061707 +v 1.715124 2.360920 -0.061707 +v 1.683615 2.386394 -0.055858 +v 1.715124 2.386394 -0.055858 +v 1.683615 2.365368 -0.062249 +v 1.683615 2.383127 -0.059579 +v 1.715124 2.383127 -0.059579 +v 1.715124 2.365368 -0.062249 +v 1.683615 2.373156 -0.074653 +v 1.683615 2.382544 -0.071410 +v 1.715124 2.382544 -0.071410 +v 1.715124 2.373156 -0.074653 +v 1.740331 2.391644 -0.058652 +v 1.771840 2.391644 -0.058652 +v 1.740331 2.400436 -0.034039 +v 1.771840 2.400436 -0.034039 +v 1.740331 2.383517 -0.014118 +v 1.771840 2.383517 -0.014118 +v 1.740331 2.357806 -0.018809 +v 1.771840 2.357806 -0.018809 +v 1.740331 2.349013 -0.043422 +v 1.771840 2.349013 -0.043422 +v 1.740331 2.365932 -0.063343 +v 1.771840 2.365932 -0.063343 +v 1.740331 2.350579 -0.047620 +v 1.740331 2.361125 -0.062156 +v 1.771840 2.361125 -0.062156 +v 1.771840 2.350579 -0.047620 +v 1.740331 2.343153 -0.060243 +v 1.740331 2.350354 -0.067085 +v 1.771840 2.350354 -0.067085 +v 1.771840 2.343153 -0.060243 +v 1.797047 2.386932 -0.021940 +v 1.828556 2.386932 -0.021940 +v 1.797047 2.362782 -0.011948 +v 1.828556 2.362782 -0.011948 +v 1.797047 2.342053 -0.027867 +v 1.828556 2.342053 -0.027867 +v 1.797047 2.345475 -0.053778 +v 1.828556 2.345475 -0.053778 +v 1.797047 2.369626 -0.063770 +v 1.828556 2.369626 -0.063770 +v 1.797047 2.390355 -0.047851 +v 1.828556 2.390355 -0.047851 +v 1.797047 2.373896 -0.062413 +v 1.797047 2.388932 -0.052594 +v 1.828556 2.388932 -0.052594 +v 1.828556 2.373896 -0.062413 +v 1.797047 2.386139 -0.070450 +v 1.797047 2.393326 -0.063594 +v 1.828556 2.393326 -0.063594 +v 1.828556 2.386139 -0.070450 +v 1.853763 2.396732 -0.045249 +v 1.885272 2.396732 -0.045249 +v 1.853763 2.391602 -0.019622 +v 1.885272 2.391602 -0.019622 +v 1.853763 2.366842 -0.011250 +v 1.885272 2.366842 -0.011250 +v 1.853763 2.347213 -0.028507 +v 1.885272 2.347213 -0.028507 +v 1.853763 2.352343 -0.054135 +v 1.885272 2.352343 -0.054135 +v 1.853763 2.377102 -0.062506 +v 1.885272 2.377102 -0.062506 +v 1.853763 2.355846 -0.056928 +v 1.853763 2.372370 -0.063962 +v 1.885272 2.372370 -0.063962 +v 1.885272 2.355846 -0.056928 +v 1.853763 2.355977 -0.071573 +v 1.853763 2.365673 -0.073732 +v 1.885272 2.365673 -0.073732 +v 1.885272 2.355977 -0.071573 +v -2.163461 0.999997 0.125000 +v -1.682692 0.999997 0.125000 +v -1.394231 0.999997 0.125000 +v -0.913461 0.999997 0.125000 +v -0.625000 0.999997 0.125000 +v -0.144231 0.999997 0.125000 +v 0.144231 0.999997 0.125000 +v 0.625000 0.999997 0.125000 +v 0.913462 0.999997 0.125000 +v 1.394231 0.999997 0.125000 +v 1.682693 0.999997 0.125000 +v 2.163461 0.999997 0.125000 +v -2.163461 0.999997 -0.125000 +v -1.682692 0.999997 -0.125000 +v -1.394231 0.999997 -0.125000 +v -0.913461 0.999997 -0.125000 +v -0.625000 0.999997 -0.125000 +v -0.144231 0.999997 -0.125000 +v 0.144231 0.999997 -0.125000 +v 0.625000 0.999997 -0.125000 +v 0.913462 0.999997 -0.125000 +v 1.394231 0.999997 -0.125000 +v 1.682693 0.999997 -0.125000 +v 2.163461 0.999997 -0.125000 +v -2.043269 0.874997 0.093750 +v -1.802885 0.874997 0.093750 +v -1.274038 0.874997 0.093750 +v -1.033654 0.874997 0.093750 +v -0.504808 0.874997 0.093750 +v -0.264423 0.874997 0.093750 +v 0.264423 0.874997 0.093750 +v 0.504808 0.874997 0.093750 +v 1.033654 0.874997 0.093750 +v 1.274039 0.874997 0.093750 +v 1.802885 0.874997 0.093750 +v 2.043269 0.874997 0.093750 +v -2.043269 0.874997 -0.093750 +v -1.802885 0.874997 -0.093750 +v -1.274038 0.874997 -0.093750 +v -1.033654 0.874997 -0.093750 +v -0.504808 0.874997 -0.093750 +v -0.264423 0.874997 -0.093750 +v 0.264423 0.874997 -0.093750 +v 0.504808 0.874997 -0.093750 +v 1.033654 0.874997 -0.093750 +v 1.274039 0.874997 -0.093750 +v 1.802885 0.874997 -0.093750 +v 2.043269 0.874997 -0.093750 +vt 0.733844 0.172974 +vt 0.709510 0.205732 +vt 0.709510 0.172974 +vt 0.831397 0.355292 +vt 0.877231 0.351301 +vt 0.877231 0.355292 +vt 0.492430 0.004449 +vt 0.468095 0.041459 +vt 0.468095 0.004449 +vt 0.425092 0.452798 +vt 0.004556 0.460138 +vt 0.004507 0.452797 +vt 0.675567 0.125895 +vt 0.691111 0.072187 +vt 0.691111 0.132861 +vt 0.675567 0.141265 +vt 0.004877 0.575079 +vt 0.425404 0.567739 +vt 0.425462 0.575079 +vt 0.535486 0.503659 +vt 0.543181 0.473300 +vt 0.543181 0.503659 +vt 0.700410 0.955730 +vt 0.700410 0.473300 +vt 0.715817 0.509987 +vt 0.788978 0.083578 +vt 0.781284 0.004449 +vt 0.788979 0.004449 +vt 0.004663 0.484298 +vt 0.425191 0.476959 +vt 0.425248 0.484299 +vt 0.840564 0.127662 +vt 0.861856 0.110783 +vt 0.864898 0.127662 +vt 0.701335 0.954904 +vt 0.740980 0.954293 +vt 0.616380 0.658755 +vt 0.632175 0.489094 +vt 0.616380 0.706311 +vt 0.004606 0.476958 +vt 0.425141 0.469618 +vt 0.772385 0.227922 +vt 0.764691 0.243037 +vt 0.764691 0.227920 +vt 0.004984 0.651201 +vt 0.425568 0.642197 +vt 0.425569 0.651201 +vt 0.602240 0.186675 +vt 0.617784 0.240383 +vt 0.602240 0.243463 +vt 0.005091 0.665882 +vt 0.425618 0.658542 +vt 0.425676 0.665882 +vt 0.691111 0.208626 +vt 0.675567 0.213449 +vt 0.675567 0.197774 +vt 0.602240 0.171305 +vt 0.617784 0.179709 +vt 0.675567 0.292577 +vt 0.691111 0.224301 +vt 0.691111 0.308120 +vt 0.691111 0.057069 +vt 0.675567 0.069107 +vt 0.675567 0.053989 +vt 0.425462 0.627517 +vt 0.764691 0.099252 +vt 0.772385 0.155774 +vt 0.764691 0.155762 +vt 0.781284 0.243034 +vt 0.788979 0.227919 +vt 0.788979 0.243037 +vt 0.602240 0.114795 +vt 0.617784 0.164339 +vt 0.004770 0.560398 +vt 0.425355 0.551180 +vt 0.425355 0.560399 +vt 0.715817 0.919044 +vt 0.739687 0.938221 +vt 0.535487 0.946694 +vt 0.543181 0.916338 +vt 0.543181 0.946694 +vt 0.764691 0.083578 +vt 0.772385 0.004449 +vt 0.772385 0.083601 +vt 0.834341 0.348357 +vt 0.831397 0.305467 +vt 0.834341 0.308411 +vt 0.781284 0.292577 +vt 0.877231 0.301476 +vt 0.877231 0.305466 +vt 0.425305 0.543839 +vt 0.004770 0.551178 +vt 0.004720 0.543838 +vt 0.005033 0.658542 +vt 0.923079 0.004449 +vt 0.883297 0.011346 +vt 0.883297 0.004449 +vt 0.788978 0.099252 +vt 0.781284 0.155774 +vt 0.781284 0.099228 +vt 0.764691 0.171132 +vt 0.425248 0.536499 +vt 0.004663 0.536498 +vt 0.617784 0.255500 +vt 0.602240 0.258581 +vt 0.788978 0.171131 +vt 0.781284 0.227922 +vt 0.781284 0.171119 +vt 0.827406 0.305467 +vt 0.831397 0.351301 +vt 0.827406 0.351301 +vt 0.004819 0.567739 +vt 0.585191 0.188500 +vt 0.588744 0.151434 +vt 0.588744 0.188524 +vt 0.408813 0.843186 +vt 0.410755 0.883132 +vt 0.408813 0.883132 +vt 0.874287 0.308411 +vt 0.883297 0.028637 +vt 0.923079 0.025447 +vt 0.923079 0.028637 +vt 0.450701 0.841244 +vt 0.410755 0.843186 +vt 0.410755 0.841244 +vt 0.592297 0.151445 +vt 0.592297 0.188536 +vt 0.410755 0.885074 +vt 0.450701 0.883132 +vt 0.450701 0.885074 +vt 0.452643 0.883132 +vt 0.450701 0.843186 +vt 0.452643 0.843186 +vt 0.881222 0.351301 +vt 0.881222 0.305467 +vt 0.883297 0.032045 +vt 0.923079 0.032045 +vt 0.004934 0.634857 +vt 0.004877 0.627516 +vt 0.922971 0.338452 +vt 0.922971 0.354471 +vt 0.916075 0.345360 +vt 0.578084 0.151410 +vt 0.581638 0.188488 +vt 0.578084 0.188500 +vt 0.874287 0.348357 +vt 0.883297 0.025447 +vt 0.923079 0.020457 +vt 0.585191 0.151410 +vt 0.513586 0.921476 +vt 0.512564 0.917257 +vt 0.515067 0.921475 +vt 0.462309 0.358295 +vt 0.463331 0.362557 +vt 0.460816 0.358296 +vt 0.570978 0.151445 +vt 0.574531 0.188524 +vt 0.570978 0.188536 +vt 0.923079 0.011346 +vt 0.927292 0.271964 +vt 0.930370 0.273741 +vt 0.930370 0.277294 +vt 0.574531 0.151434 +vt 0.921295 0.150557 +vt 0.920274 0.145672 +vt 0.927170 0.152580 +vt 0.508461 0.924433 +vt 0.505315 0.921496 +vt 0.506735 0.921496 +vt 0.464029 0.361267 +vt 0.468237 0.362487 +vt 0.067792 0.891333 +vt 0.122132 0.896120 +vt 0.067766 0.896127 +vt 0.463324 0.354029 +vt 0.464030 0.355315 +vt 0.467486 0.355305 +vt 0.470666 0.358271 +vt 0.469231 0.358271 +vt 0.511881 0.918527 +vt 0.507722 0.917326 +vt 0.511878 0.924431 +vt 0.507718 0.925667 +vt 0.067792 0.910503 +vt 0.122132 0.905715 +vt 0.122158 0.910510 +vt 0.122119 0.900918 +vt 0.067753 0.900918 +vt 0.508468 0.918556 +vt 0.467482 0.361242 +vt 0.522312 0.925727 +vt 0.518340 0.921474 +vt 0.522312 0.921471 +vt 0.866635 0.260833 +vt 0.834941 0.206494 +vt 0.866635 0.206494 +vt 0.518336 0.925725 +vt 0.512568 0.925698 +vt 0.831064 0.260833 +vt 0.834941 0.260833 +vt 0.122129 0.919999 +vt 0.067791 0.916109 +vt 0.122130 0.916122 +vt 0.468237 0.354057 +vt 0.473941 0.354062 +vt 0.477869 0.358271 +vt 0.473937 0.358271 +vt 0.518612 0.353039 +vt 0.522932 0.105485 +vt 0.522933 0.353081 +vt 0.477872 0.362476 +vt 0.473942 0.362479 +vt 0.501328 0.352990 +vt 0.505650 0.105402 +vt 0.505650 0.352998 +vt 0.518331 0.917223 +vt 0.527254 0.105493 +vt 0.527254 0.353122 +vt 0.586021 0.300510 +vt 0.589098 0.302286 +vt 0.586021 0.307616 +vt 0.067766 0.905709 +vt 0.522306 0.917217 +vt 0.920423 0.058711 +vt 0.883344 0.062264 +vt 0.883332 0.058711 +vt 0.514292 0.352998 +vt 0.518611 0.105494 +vt 0.834941 0.264711 +vt 0.866635 0.264711 +vt 0.866635 0.202617 +vt 0.920399 0.048051 +vt 0.883332 0.044498 +vt 0.920423 0.044498 +vt 0.122130 0.885714 +vt 0.122158 0.891326 +vt 0.920387 0.051604 +vt 0.883309 0.048051 +vt 0.883309 0.055157 +vt 0.883297 0.051604 +vt 0.911809 0.919556 +vt 0.910787 0.923775 +vt 0.910104 0.922505 +vt 0.903538 0.919536 +vt 0.906684 0.916599 +vt 0.904958 0.919536 +vt 0.408852 0.903469 +vt 0.463192 0.908257 +vt 0.408826 0.908263 +vt 0.920399 0.055157 +vt 0.008327 0.841244 +vt 0.004449 0.872938 +vt 0.004449 0.841244 +vt 0.066543 0.841244 +vt 0.062666 0.872938 +vt 0.062666 0.841244 +vt 0.906691 0.922476 +vt 0.883344 0.040944 +vt 0.920435 0.040944 +vt 0.509971 0.105445 +vt 0.509971 0.352990 +vt 0.463179 0.913054 +vt 0.408826 0.917845 +vt 0.408813 0.913054 +vt 0.892629 0.346980 +vt 0.891613 0.342714 +vt 0.893335 0.345694 +vt 0.008327 0.872938 +vt 0.062666 0.876815 +vt 0.008327 0.876815 +vt 0.463192 0.917852 +vt 0.408852 0.922640 +vt 0.893333 0.339742 +vt 0.897541 0.338522 +vt 0.896787 0.339767 +vt 0.913289 0.919557 +vt 0.916559 0.915307 +vt 0.916563 0.919558 +vt 0.899971 0.342738 +vt 0.898536 0.342738 +vt 0.905941 0.915366 +vt 0.910101 0.916602 +vt 0.903246 0.346947 +vt 0.897541 0.346952 +vt 0.907176 0.338533 +vt 0.903242 0.342738 +vt 0.903247 0.338530 +vt 0.916554 0.923810 +vt 0.910791 0.915335 +vt 0.892636 0.338452 +vt 0.478497 0.827980 +vt 0.509290 0.822896 +vt 0.509290 0.827980 +vt 0.463190 0.897851 +vt 0.463218 0.903463 +vt 0.463190 0.928258 +vt 0.463218 0.922646 +vt 0.434574 0.581710 +vt 0.442073 0.669182 +vt 0.434574 0.669182 +vt 0.896791 0.345704 +vt 0.920535 0.919561 +vt 0.920529 0.923815 +vt 0.490356 0.669182 +vt 0.482858 0.581710 +vt 0.490356 0.581710 +vt 0.477862 0.664186 +vt 0.447069 0.664186 +vt 0.920535 0.915306 +vt 0.907174 0.342738 +vt 0.442073 0.581710 +vt 0.482858 0.574212 +vt 0.442073 0.676680 +vt 0.482858 0.669182 +vt 0.482858 0.676680 +vt 0.514374 0.822896 +vt 0.509290 0.745417 +vt 0.514374 0.745417 +vt 0.905945 0.923706 +vt 0.473413 0.745417 +vt 0.478497 0.822896 +vt 0.473413 0.822896 +vt 0.447069 0.586706 +vt 0.477862 0.586706 +vt 0.509290 0.740332 +vt 0.478497 0.745417 +vt 0.478497 0.740332 +vt 0.931635 0.319515 +vt 0.933055 0.322945 +vt 0.923354 0.322945 +vt 0.571259 0.354466 +vt 0.572701 0.353479 +vt 0.573181 0.353528 +vt 0.848783 0.273609 +vt 0.851652 0.283311 +vt 0.848783 0.283311 +vt 0.845071 0.273609 +vt 0.845071 0.283311 +vt 0.931635 0.302896 +vt 0.933055 0.306326 +vt 0.923354 0.306326 +vt 0.831064 0.273609 +vt 0.833933 0.283311 +vt 0.831064 0.283311 +vt 0.572675 0.234699 +vt 0.583711 0.236515 +vt 0.572785 0.236515 +vt 0.754611 0.249901 +vt 0.755542 0.247164 +vt 0.755542 0.250438 +vt 0.514291 0.105486 +vt 0.408850 0.893986 +vt 0.463189 0.893973 +vt 0.841358 0.283311 +vt 0.837645 0.273609 +vt 0.841358 0.273609 +vt 0.602115 0.557117 +vt 0.605182 0.556635 +vt 0.605182 0.557117 +vt 0.602115 0.559237 +vt 0.605182 0.558270 +vt 0.605182 0.559237 +vt 0.273168 0.912975 +vt 0.314210 0.910774 +vt 0.314210 0.912975 +vt 0.603839 0.597606 +vt 0.602129 0.598020 +vt 0.602396 0.596619 +vt 0.837645 0.283311 +vt 0.833933 0.273609 +vt 0.602115 0.593742 +vt 0.604318 0.592470 +vt 0.602115 0.568731 +vt 0.605182 0.566187 +vt 0.605182 0.568731 +vt 0.602115 0.501927 +vt 0.605182 0.499383 +vt 0.605182 0.501927 +vt 0.602115 0.556635 +vt 0.605182 0.554091 +vt 0.602115 0.563643 +vt 0.605182 0.561099 +vt 0.605182 0.563643 +vt 0.602115 0.560663 +vt 0.605182 0.560663 +vt 0.752706 0.252075 +vt 0.752706 0.251001 +vt 0.750800 0.247701 +vt 0.749870 0.250438 +vt 0.749870 0.247164 +vt 0.273168 0.910774 +vt 0.314210 0.908574 +vt 0.752706 0.245526 +vt 0.752706 0.246601 +vt 0.273168 0.908574 +vt 0.314210 0.906374 +vt 0.586762 0.236310 +vt 0.583711 0.261249 +vt 0.273168 0.915175 +vt 0.314210 0.915175 +vt 0.273168 0.906374 +vt 0.314210 0.904173 +vt 0.506276 0.686230 +vt 0.525797 0.682955 +vt 0.525797 0.686230 +vt 0.481732 0.793059 +vt 0.570978 0.236310 +vt 0.572785 0.261249 +vt 0.570978 0.261453 +vt 0.273168 0.917375 +vt 0.314210 0.917375 +vt 0.506276 0.692779 +vt 0.525797 0.689505 +vt 0.525797 0.692779 +vt 0.506276 0.696054 +vt 0.525797 0.696054 +vt 0.506276 0.689505 +vt 0.752706 0.230078 +vt 0.755542 0.231716 +vt 0.755542 0.234990 +vt 0.495228 0.793059 +vt 0.495228 0.818203 +vt 0.506276 0.702603 +vt 0.525797 0.699328 +vt 0.525797 0.702603 +vt 0.754611 0.247701 +vt 0.481732 0.818203 +vt 0.572675 0.263065 +vt 0.586171 0.263065 +vt 0.602115 0.554091 +vt 0.605182 0.551547 +vt 0.602115 0.566187 +vt 0.750800 0.249901 +vt 0.506276 0.699328 +vt 0.602115 0.561099 +vt 0.602115 0.504471 +vt 0.605182 0.504471 +vt 0.602115 0.558270 +vt 0.570991 0.353066 +vt 0.571875 0.352675 +vt 0.606241 0.581779 +vt 0.604798 0.582766 +vt 0.604318 0.582718 +vt 0.602115 0.516566 +vt 0.605182 0.514022 +vt 0.605182 0.516566 +vt 0.602115 0.507015 +vt 0.605182 0.507015 +vt 0.602115 0.514022 +vt 0.605182 0.511478 +vt 0.486770 0.355301 +vt 0.488973 0.354029 +vt 0.487051 0.358179 +vt 0.602115 0.507497 +vt 0.605182 0.507497 +vt 0.602115 0.511478 +vt 0.605182 0.511042 +vt 0.606508 0.583180 +vt 0.605624 0.583571 +vt 0.602115 0.509616 +vt 0.605182 0.508650 +vt 0.605182 0.509616 +vt 0.602115 0.511042 +vt 0.602115 0.508650 +vt 0.488494 0.359166 +vt 0.486784 0.359579 +vt 0.574045 0.341232 +vt 0.570978 0.343776 +vt 0.570978 0.341232 +vt 0.602396 0.638781 +vt 0.603839 0.637794 +vt 0.604318 0.637843 +vt 0.574045 0.338688 +vt 0.570978 0.338688 +vt 0.574045 0.326592 +vt 0.570978 0.329136 +vt 0.570978 0.326592 +vt 0.574045 0.331680 +vt 0.570978 0.334224 +vt 0.570978 0.331680 +vt 0.574045 0.329136 +vt 0.749870 0.277694 +vt 0.752073 0.276422 +vt 0.750151 0.280572 +vt 0.574045 0.338206 +vt 0.570978 0.338206 +vt 0.574045 0.334224 +vt 0.570978 0.334660 +vt 0.602129 0.637381 +vt 0.603013 0.636990 +vt 0.574045 0.336086 +vt 0.570978 0.337053 +vt 0.570978 0.336086 +vt 0.574045 0.334660 +vt 0.574045 0.337053 +vt 0.751593 0.281559 +vt 0.749883 0.281972 +vt 0.278256 0.929341 +vt 0.275712 0.926274 +vt 0.278256 0.926274 +vt 0.602396 0.712981 +vt 0.603839 0.711994 +vt 0.604318 0.712043 +vt 0.280800 0.929341 +vt 0.280800 0.926274 +vt 0.275712 0.929341 +vt 0.273168 0.926274 +vt 0.287807 0.929341 +vt 0.285263 0.926274 +vt 0.287807 0.926274 +vt 0.290351 0.929341 +vt 0.290351 0.926274 +vt 0.602115 0.667942 +vt 0.604319 0.666670 +vt 0.602396 0.670819 +vt 0.281282 0.929341 +vt 0.281282 0.926274 +vt 0.285263 0.929341 +vt 0.284827 0.926274 +vt 0.602129 0.711581 +vt 0.603013 0.711190 +vt 0.283402 0.929341 +vt 0.282435 0.926274 +vt 0.283402 0.926274 +vt 0.284827 0.929341 +vt 0.282435 0.929341 +vt 0.603839 0.671806 +vt 0.602129 0.672220 +vt 0.861856 0.044727 +vt 0.874398 0.009630 +vt 0.874398 0.056426 +vt 0.712551 0.132696 +vt 0.733844 0.115817 +vt 0.730802 0.132696 +vt 0.700010 0.167794 +vt 0.700010 0.120997 +vt 0.843605 0.087385 +vt 0.864898 0.070505 +vt 0.861856 0.087385 +vt 0.861856 0.176839 +vt 0.840564 0.193718 +vt 0.843605 0.176839 +vt 0.642226 0.350853 +vt 0.625347 0.329561 +vt 0.642226 0.326519 +vt 0.434862 0.041459 +vt 0.459196 0.004449 +vt 0.459196 0.041459 +vt 0.492430 0.094079 +vt 0.468095 0.109197 +vt 0.468095 0.094079 +vt 0.668004 0.347811 +vt 0.703102 0.360353 +vt 0.656305 0.360353 +vt 0.874398 0.075685 +vt 0.874398 0.122482 +vt 0.831064 0.141741 +vt 0.831064 0.188538 +vt 0.492430 0.109197 +vt 0.468095 0.169871 +vt 0.590249 0.317019 +vt 0.637046 0.317019 +vt 0.916054 0.095497 +vt 0.883297 0.071163 +vt 0.916054 0.071163 +vt 0.691111 0.148231 +vt 0.602240 0.019993 +vt 0.617784 0.088269 +vt 0.602240 0.099121 +vt 0.691111 0.004449 +vt 0.814516 0.351301 +vt 0.818507 0.305467 +vt 0.818507 0.351301 +vt 0.004844 0.199797 +vt 0.425348 0.207135 +vt 0.004757 0.207136 +vt 0.552080 0.473300 +vt 0.559774 0.503656 +vt 0.552080 0.503656 +vt 0.626683 0.308120 +vt 0.642226 0.258581 +vt 0.642226 0.308120 +vt 0.805572 0.004449 +vt 0.797877 0.083578 +vt 0.797877 0.004449 +vt 0.425809 0.092198 +vt 0.005286 0.084858 +vt 0.425876 0.084858 +vt 0.814471 0.155774 +vt 0.822165 0.099252 +vt 0.822165 0.155761 +vt 0.651125 0.186675 +vt 0.666669 0.240383 +vt 0.651125 0.243463 +vt 0.651125 0.171305 +vt 0.666669 0.179709 +vt 0.775041 0.509987 +vt 0.790449 0.955730 +vt 0.775041 0.919044 +vt 0.805572 0.099229 +vt 0.797877 0.099252 +vt 0.814471 0.083601 +vt 0.822165 0.083577 +vt 0.797877 0.227919 +vt 0.805572 0.243034 +vt 0.797877 0.243037 +vt 0.768681 0.305467 +vt 0.811572 0.308411 +vt 0.771626 0.308411 +vt 0.642226 0.171305 +vt 0.626683 0.179709 +vt 0.626683 0.164339 +vt 0.754283 0.331232 +vt 0.717217 0.334785 +vt 0.717193 0.331232 +vt 0.666669 0.255500 +vt 0.651125 0.258581 +vt 0.797877 0.171131 +vt 0.805572 0.227922 +vt 0.822165 0.171131 +vt 0.004603 0.283258 +vt 0.425127 0.290597 +vt 0.004536 0.290598 +vt 0.877476 0.244505 +vt 0.917422 0.204559 +vt 0.917422 0.244505 +vt 0.768682 0.351301 +vt 0.814516 0.355292 +vt 0.768682 0.355292 +vt 0.919364 0.204559 +vt 0.919364 0.244505 +vt 0.805572 0.292577 +vt 0.797877 0.292577 +vt 0.552079 0.916335 +vt 0.559774 0.946694 +vt 0.552079 0.946694 +vt 0.004911 0.183237 +vt 0.425501 0.192456 +vt 0.004911 0.192457 +vt 0.642226 0.243463 +vt 0.626683 0.255500 +vt 0.626683 0.240383 +vt 0.805572 0.155774 +vt 0.797877 0.155762 +vt 0.425501 0.183237 +vt 0.004978 0.175897 +vt 0.425569 0.175897 +vt 0.917422 0.246447 +vt 0.877476 0.246447 +vt 0.754307 0.334785 +vt 0.717228 0.338339 +vt 0.753565 0.354145 +vt 0.746668 0.347238 +vt 0.752543 0.349261 +vt 0.436354 0.358291 +vt 0.437377 0.354029 +vt 0.438074 0.355319 +vt 0.919759 0.171817 +vt 0.922226 0.169794 +vt 0.925634 0.169794 +vt 0.642226 0.114795 +vt 0.004757 0.259574 +vt 0.651125 0.019993 +vt 0.666669 0.088269 +vt 0.651125 0.099121 +vt 0.764691 0.351301 +vt 0.814471 0.004449 +vt 0.822165 0.004449 +vt 0.789524 0.954904 +vt 0.751172 0.938220 +vt 0.814516 0.305467 +vt 0.768681 0.301476 +vt 0.814516 0.301476 +vt 0.005065 0.168558 +vt 0.425655 0.168558 +vt 0.915316 0.262242 +vt 0.875534 0.255346 +vt 0.915316 0.255346 +vt 0.754271 0.327679 +vt 0.717193 0.324126 +vt 0.754283 0.324125 +vt 0.442282 0.354099 +vt 0.441528 0.355343 +vt 0.875534 0.271354 +vt 0.915316 0.276344 +vt 0.875534 0.276344 +vt 0.875534 0.262242 +vt 0.200439 0.914986 +vt 0.146099 0.919773 +vt 0.146073 0.914979 +vt 0.893198 0.362986 +vt 0.890121 0.361209 +vt 0.893198 0.355879 +vt 0.811572 0.348357 +vt 0.717181 0.327679 +vt 0.717217 0.320572 +vt 0.754307 0.320572 +vt 0.717228 0.317019 +vt 0.754319 0.317019 +vt 0.437370 0.362557 +vt 0.438076 0.361271 +vt 0.373050 0.908404 +vt 0.376196 0.905467 +vt 0.374470 0.908404 +vt 0.381322 0.908424 +vt 0.380300 0.912643 +vt 0.379617 0.911373 +vt 0.444712 0.358315 +vt 0.441532 0.361280 +vt 0.443277 0.358315 +vt 0.382802 0.908425 +vt 0.386071 0.904175 +vt 0.386075 0.908426 +vt 0.390047 0.904173 +vt 0.390047 0.908429 +vt 0.146099 0.900603 +vt 0.200439 0.905390 +vt 0.146073 0.905397 +vt 0.375458 0.912574 +vt 0.376203 0.911344 +vt 0.200426 0.910188 +vt 0.146060 0.910188 +vt 0.375453 0.904234 +vt 0.379613 0.905470 +vt 0.200435 0.891107 +vt 0.146098 0.894997 +vt 0.146097 0.891120 +vt 0.442282 0.362529 +vt 0.492791 0.685579 +vt 0.438452 0.689457 +vt 0.438452 0.685579 +vt 0.492791 0.721150 +vt 0.492791 0.689457 +vt 0.380303 0.904202 +vt 0.540474 0.105465 +vt 0.544795 0.353018 +vt 0.540474 0.353051 +vt 0.451915 0.358315 +vt 0.447987 0.362523 +vt 0.447983 0.358315 +vt 0.557757 0.105393 +vt 0.562079 0.352970 +vt 0.557757 0.352979 +vt 0.386066 0.912677 +vt 0.451917 0.354109 +vt 0.447988 0.354106 +vt 0.496668 0.689457 +vt 0.496668 0.721150 +vt 0.390041 0.912683 +vt 0.588744 0.142487 +vt 0.592297 0.105409 +vt 0.592297 0.142499 +vt 0.536153 0.105474 +vt 0.536153 0.353083 +vt 0.200436 0.894984 +vt 0.200465 0.900596 +vt 0.931108 0.076493 +vt 0.928030 0.078269 +vt 0.924953 0.076493 +vt 0.570978 0.105409 +vt 0.574531 0.142487 +vt 0.570978 0.142499 +vt 0.578084 0.105373 +vt 0.581638 0.142451 +vt 0.578084 0.142463 +vt 0.508461 0.907025 +vt 0.505315 0.904087 +vt 0.506735 0.904088 +vt 0.574531 0.105397 +vt 0.137536 0.872938 +vt 0.133658 0.841244 +vt 0.137536 0.841244 +vt 0.585191 0.105373 +vt 0.585191 0.142463 +vt 0.513586 0.904067 +vt 0.512564 0.899849 +vt 0.515067 0.904067 +vt 0.588744 0.105397 +vt 0.553436 0.105426 +vt 0.553436 0.352977 +vt 0.544795 0.105467 +vt 0.549116 0.352987 +vt 0.434574 0.721150 +vt 0.438452 0.721150 +vt 0.079319 0.872938 +vt 0.075442 0.841244 +vt 0.079319 0.841244 +vt 0.508468 0.901147 +vt 0.507722 0.899917 +vt 0.004488 0.910503 +vt 0.058828 0.905715 +vt 0.058854 0.910510 +vt 0.200436 0.925392 +vt 0.200465 0.919780 +vt 0.004488 0.891333 +vt 0.058828 0.896120 +vt 0.004462 0.896127 +vt 0.518336 0.908317 +vt 0.512568 0.908289 +vt 0.512941 0.718715 +vt 0.516125 0.715744 +vt 0.513696 0.719960 +vt 0.507768 0.715767 +vt 0.508784 0.711502 +vt 0.509489 0.712788 +vt 0.079319 0.876815 +vt 0.133658 0.872938 +vt 0.133658 0.876815 +vt 0.511878 0.907022 +vt 0.519397 0.715744 +vt 0.523331 0.719949 +vt 0.519401 0.719952 +vt 0.507718 0.908258 +vt 0.508790 0.720029 +vt 0.506276 0.715768 +vt 0.004462 0.905709 +vt 0.058815 0.900918 +vt 0.735887 0.219714 +vt 0.705094 0.214630 +vt 0.735887 0.214630 +vt 0.004449 0.900918 +vt 0.519401 0.711535 +vt 0.513696 0.711529 +vt 0.518331 0.899814 +vt 0.509488 0.718739 +vt 0.748294 0.099420 +vt 0.755792 0.011948 +vt 0.755792 0.099420 +vt 0.512945 0.712778 +vt 0.707508 0.011948 +vt 0.700010 0.099420 +vt 0.700010 0.011948 +vt 0.511881 0.901119 +vt 0.712504 0.094423 +vt 0.712504 0.016944 +vt 0.748294 0.011948 +vt 0.707508 0.004449 +vt 0.748294 0.004449 +vt 0.522312 0.904062 +vt 0.522306 0.899808 +vt 0.743297 0.016944 +vt 0.523329 0.715744 +vt 0.058826 0.885714 +vt 0.058854 0.891326 +vt 0.058826 0.916122 +vt 0.004487 0.916109 +vt 0.514691 0.715744 +vt 0.705094 0.297194 +vt 0.735887 0.302278 +vt 0.705094 0.302278 +vt 0.737769 0.347238 +vt 0.734900 0.356939 +vt 0.734900 0.347238 +vt 0.705094 0.219714 +vt 0.700010 0.297194 +vt 0.700010 0.219714 +vt 0.932863 0.109247 +vt 0.932863 0.112116 +vt 0.923161 0.109247 +vt 0.933917 0.260197 +vt 0.933917 0.263066 +vt 0.924215 0.260197 +vt 0.604318 0.731971 +vt 0.602115 0.730699 +vt 0.606241 0.727821 +vt 0.731188 0.356939 +vt 0.731188 0.347238 +vt 0.754611 0.265349 +vt 0.752706 0.267523 +vt 0.752706 0.266449 +vt 0.748294 0.106918 +vt 0.707508 0.099420 +vt 0.735887 0.297194 +vt 0.740971 0.219714 +vt 0.740971 0.297194 +vt 0.720050 0.347238 +vt 0.717181 0.356939 +vt 0.717181 0.347238 +vt 0.572675 0.225800 +vt 0.583711 0.223985 +vt 0.586171 0.225800 +vt 0.743297 0.094423 +vt 0.570978 0.305598 +vt 0.574045 0.306080 +vt 0.570978 0.306080 +vt 0.364152 0.910774 +vt 0.323109 0.908574 +vt 0.364152 0.908574 +vt 0.606508 0.746419 +vt 0.604798 0.746006 +vt 0.606241 0.745019 +vt 0.004486 0.919986 +vt 0.058825 0.919999 +vt 0.723763 0.356939 +vt 0.727475 0.347238 +vt 0.727475 0.356939 +vt 0.602115 0.473300 +vt 0.605182 0.475844 +vt 0.602115 0.475844 +vt 0.570978 0.315149 +vt 0.574045 0.317693 +vt 0.570978 0.317693 +vt 0.720050 0.356939 +vt 0.723763 0.347238 +vt 0.570978 0.310061 +vt 0.574045 0.312605 +vt 0.570978 0.312605 +vt 0.570978 0.303054 +vt 0.574045 0.305598 +vt 0.570978 0.308200 +vt 0.574045 0.309625 +vt 0.570978 0.309625 +vt 0.549116 0.105457 +vt 0.604318 0.745957 +vt 0.602115 0.744685 +vt 0.570978 0.307233 +vt 0.574045 0.308200 +vt 0.522312 0.908318 +vt 0.518340 0.904065 +vt 0.755542 0.262612 +vt 0.754611 0.263149 +vt 0.323109 0.906374 +vt 0.364152 0.906374 +vt 0.602115 0.482567 +vt 0.605182 0.483534 +vt 0.602115 0.483534 +vt 0.364152 0.917375 +vt 0.323109 0.915175 +vt 0.364152 0.915175 +vt 0.749870 0.265886 +vt 0.750800 0.263149 +vt 0.750800 0.265349 +vt 0.752706 0.260974 +vt 0.752706 0.262048 +vt 0.586762 0.199046 +vt 0.586762 0.224189 +vt 0.323109 0.912975 +vt 0.364152 0.912975 +vt 0.323109 0.910774 +vt 0.602115 0.525465 +vt 0.605182 0.528009 +vt 0.602115 0.528009 +vt 0.604318 0.656918 +vt 0.602115 0.655646 +vt 0.606241 0.655979 +vt 0.602115 0.484960 +vt 0.605182 0.485396 +vt 0.602115 0.485396 +vt 0.605182 0.482567 +vt 0.602115 0.481414 +vt 0.605182 0.481414 +vt 0.590499 0.288336 +vt 0.570978 0.285062 +vt 0.590499 0.285062 +vt 0.590499 0.291611 +vt 0.570978 0.288336 +vt 0.570978 0.281787 +vt 0.590499 0.281787 +vt 0.323109 0.904173 +vt 0.364152 0.904173 +vt 0.708329 0.249551 +vt 0.708329 0.224408 +vt 0.749870 0.216268 +vt 0.752706 0.214630 +vt 0.755542 0.216268 +vt 0.570978 0.278513 +vt 0.590499 0.278513 +vt 0.572785 0.199250 +vt 0.570978 0.224189 +vt 0.570978 0.199046 +vt 0.602115 0.487940 +vt 0.605182 0.490484 +vt 0.602115 0.490484 +vt 0.605182 0.478388 +vt 0.602115 0.478388 +vt 0.604798 0.726834 +vt 0.606508 0.726421 +vt 0.721825 0.224408 +vt 0.583711 0.199250 +vt 0.572675 0.197435 +vt 0.586171 0.197435 +vt 0.590499 0.275238 +vt 0.570978 0.271963 +vt 0.590499 0.271963 +vt 0.721825 0.249551 +vt 0.574045 0.315149 +vt 0.574045 0.310061 +vt 0.574045 0.307233 +vt 0.605182 0.480932 +vt 0.602115 0.480932 +vt 0.605182 0.487940 +vt 0.570978 0.275238 +vt 0.570978 0.300510 +vt 0.574045 0.303054 +vt 0.604318 0.607310 +vt 0.606522 0.608582 +vt 0.602396 0.611459 +vt 0.606508 0.657380 +vt 0.604798 0.656966 +vt 0.605182 0.484960 +vt 0.603839 0.612446 +vt 0.602129 0.612860 +vt 0.602115 0.540105 +vt 0.605182 0.542649 +vt 0.602115 0.542649 +vt 0.604318 0.681510 +vt 0.606522 0.682782 +vt 0.602396 0.685659 +vt 0.602115 0.535017 +vt 0.605182 0.537561 +vt 0.602115 0.537561 +vt 0.605182 0.530553 +vt 0.602115 0.530553 +vt 0.605182 0.540105 +vt 0.752073 0.296350 +vt 0.749870 0.295078 +vt 0.753995 0.295412 +vt 0.605182 0.531035 +vt 0.602115 0.531035 +vt 0.602115 0.534580 +vt 0.605182 0.535017 +vt 0.605182 0.532188 +vt 0.602115 0.533155 +vt 0.605182 0.534580 +vt 0.603839 0.686646 +vt 0.602129 0.687059 +vt 0.602115 0.532188 +vt 0.605182 0.533155 +vt 0.754262 0.296812 +vt 0.752553 0.296399 +vt 0.373050 0.924649 +vt 0.375594 0.921582 +vt 0.375594 0.924649 +vt 0.385146 0.924649 +vt 0.387690 0.921582 +vt 0.387690 0.924649 +vt 0.378138 0.921582 +vt 0.378138 0.924649 +vt 0.380682 0.921582 +vt 0.380682 0.924649 +vt 0.604318 0.696350 +vt 0.606522 0.697622 +vt 0.602396 0.700499 +vt 0.390234 0.921582 +vt 0.390234 0.924649 +vt 0.604318 0.623003 +vt 0.606522 0.624275 +vt 0.602396 0.623941 +vt 0.381164 0.921582 +vt 0.381164 0.924649 +vt 0.384710 0.924649 +vt 0.385146 0.921582 +vt 0.382317 0.921582 +vt 0.383284 0.924649 +vt 0.384710 0.921582 +vt 0.603839 0.701486 +vt 0.602129 0.701899 +vt 0.382317 0.924649 +vt 0.383284 0.921582 +vt 0.602129 0.622541 +vt 0.603839 0.622954 +vt 0.831064 0.009630 +vt 0.843605 0.044727 +vt 0.831064 0.056426 +vt 0.743344 0.167794 +vt 0.743344 0.120997 +vt 0.703102 0.317019 +vt 0.668004 0.329561 +vt 0.656305 0.317019 +vt 0.590249 0.360353 +vt 0.625347 0.347811 +vt 0.637046 0.360353 +vt 0.831064 0.075685 +vt 0.843605 0.110783 +vt 0.831064 0.122482 +vt 0.874398 0.141741 +vt 0.861856 0.153440 +vt 0.666669 0.308120 +vt 0.651125 0.308120 +vt 0.814471 0.227922 +vt 0.822165 0.227919 +vt 0.651125 0.114795 +vt 0.666669 0.164339 +vt 0.425655 0.116357 +vt 0.005065 0.116357 +vt 0.626683 0.088269 +vt 0.642226 0.019993 +vt 0.642226 0.099121 +vt 0.425194 0.274253 +vt 0.004670 0.266914 +vt 0.425261 0.266913 +vt 0.425519 0.634857 +vt 0.004984 0.642197 +vt 0.601948 0.347811 +vt 0.585069 0.326519 +vt 0.601948 0.329561 +vt 0.814471 0.292577 +vt 0.822165 0.243037 +vt 0.822165 0.292577 +vt 0.434862 0.169871 +vt 0.459196 0.109197 +vt 0.459196 0.169871 +vt 0.691403 0.347811 +vt 0.730802 0.156094 +vt 0.712551 0.156094 +vt 0.434862 0.185241 +vt 0.459196 0.185241 +vt 0.434862 0.345130 +vt 0.459196 0.261311 +vt 0.459197 0.345130 +vt 0.492430 0.245636 +vt 0.468095 0.261311 +vt 0.468095 0.245636 +vt 0.843605 0.153440 +vt 0.864898 0.136561 +vt 0.927872 0.841352 +vt 0.903538 0.869430 +vt 0.903538 0.841352 +vt 0.771626 0.348357 +vt 0.492430 0.261311 +vt 0.468095 0.345130 +vt 0.626683 0.103943 +vt 0.425040 0.297936 +vt 0.004450 0.343672 +vt 0.004449 0.297937 +vt 0.911375 0.160895 +vt 0.883297 0.136561 +vt 0.911375 0.136561 +vt 0.492430 0.185241 +vt 0.468095 0.185241 +vt 0.434862 0.094079 +vt 0.459196 0.094079 +vt 0.492430 0.169871 +vt 0.890121 0.329554 +vt 0.914455 0.301476 +vt 0.914455 0.329554 +vt 0.434862 0.261311 +vt 0.459196 0.245636 +vt 0.843605 0.021329 +vt 0.864898 0.004449 +vt 0.861856 0.021329 +vt 0.840564 0.061606 +vt 0.864898 0.061606 +vt 0.559774 0.916335 +vt 0.927872 0.878329 +vt 0.903538 0.906407 +vt 0.903538 0.878329 +vt 0.617784 0.308120 +vt 0.602240 0.308120 +vt 0.593216 0.921447 +vt 0.585394 0.473304 +vt 0.593216 0.473300 +vt 0.425034 0.445458 +vt 0.004450 0.372388 +vt 0.425034 0.372389 +vt 0.739686 0.490810 +vt 0.701335 0.474126 +vt 0.535487 0.916338 +vt 0.405859 0.731434 +vt 0.005091 0.711617 +vt 0.425676 0.711617 +vt 0.651125 0.326519 +vt 0.651125 0.350853 +vt 0.740980 0.474737 +vt 0.523590 0.614076 +vt 0.499255 0.642155 +vt 0.499255 0.614076 +vt 0.434862 0.245636 +vt 0.492430 0.041459 +vt 0.004449 0.445457 +vt 0.788978 0.155761 +vt 0.004556 0.469617 +vt 0.425141 0.460139 +vt 0.617784 0.103943 +vt 0.772385 0.292577 +vt 0.764691 0.292577 +vt 0.805572 0.171119 +vt 0.005373 0.077519 +vt 0.425963 0.077519 +vt 0.005219 0.092198 +vt 0.425809 0.101678 +vt 0.005219 0.101678 +vt 0.434862 0.109197 +vt 0.005152 0.109018 +vt 0.425742 0.109018 +vt 0.642226 0.186675 +vt 0.425434 0.199796 +vt 0.749879 0.474737 +vt 0.789524 0.474126 +vt 0.751172 0.490810 +vt 0.749879 0.954293 +vt 0.641491 0.652942 +vt 0.641741 0.625305 +vt 0.658278 0.488738 +vt 0.877476 0.204559 +vt 0.875534 0.244505 +vt 0.875534 0.204559 +vt 0.425040 0.343671 +vt 0.024267 0.363490 +vt 0.576495 0.473305 +vt 0.568673 0.921447 +vt 0.568673 0.473300 +vt 0.425348 0.259574 +vt 0.877476 0.202617 +vt 0.917422 0.202617 +vt 0.004603 0.274254 +vt 0.425194 0.283257 +vt 0.666669 0.103943 +vt 0.915316 0.279534 +vt 0.875534 0.279534 +vt 0.425963 0.004449 +vt 0.005373 0.004449 +vt 0.915316 0.282942 +vt 0.875534 0.282942 +vt 0.691403 0.329561 +vt 0.708282 0.350853 +vt 0.733844 0.205732 +vt 0.535486 0.473300 +vt 0.781284 0.083601 +vt 0.616381 0.473300 +vt 0.616381 0.506586 +vt 0.632175 0.952056 +vt 0.616381 0.554136 +vt 0.618764 0.965790 +vt 0.618423 0.937186 +vt 0.617937 0.896322 +vt 0.617645 0.871803 +vt 0.617159 0.830939 +vt 0.616381 0.582667 +vt 0.616380 0.630217 +vt 0.616867 0.806430 +vt 0.616380 0.765570 +vt 0.772385 0.243035 +vt 0.772385 0.099229 +vt 0.764691 0.004449 +vt 0.788979 0.292577 +vt 0.831397 0.301476 +vt 0.772385 0.171120 +vt 0.916075 0.354471 +vt 0.917097 0.340476 +vt 0.919563 0.338452 +vt 0.581638 0.151398 +vt 0.883297 0.020457 +vt 0.927292 0.279071 +vt 0.924215 0.277294 +vt 0.924215 0.273741 +vt 0.920274 0.136561 +vt 0.927170 0.136561 +vt 0.923762 0.152580 +vt 0.831064 0.206494 +vt 0.067790 0.919986 +vt 0.477872 0.354064 +vt 0.501328 0.105361 +vt 0.589098 0.305840 +vt 0.582943 0.305840 +vt 0.582944 0.302286 +vt 0.920435 0.062264 +vt 0.834941 0.202617 +vt 0.067791 0.885727 +vt 0.066543 0.872938 +vt 0.890121 0.342714 +vt 0.408851 0.897863 +vt 0.408851 0.928245 +vt 0.907176 0.346945 +vt 0.442073 0.574212 +vt 0.933055 0.325814 +vt 0.923354 0.325814 +vt 0.924775 0.319515 +vt 0.928205 0.318094 +vt 0.575384 0.354800 +vt 0.575384 0.357344 +vt 0.573181 0.358616 +vt 0.570978 0.357344 +vt 0.570978 0.354800 +vt 0.851652 0.273609 +vt 0.933055 0.309195 +vt 0.923354 0.309195 +vt 0.924775 0.302896 +vt 0.928205 0.301476 +vt 0.586171 0.234699 +vt 0.603013 0.598411 +vt 0.606522 0.593742 +vt 0.606522 0.596286 +vt 0.604318 0.597558 +vt 0.602115 0.596286 +vt 0.602115 0.499383 +vt 0.586762 0.261453 +vt 0.273168 0.904173 +vt 0.506276 0.682955 +vt 0.752706 0.236627 +vt 0.749870 0.234990 +vt 0.749870 0.231716 +vt 0.602115 0.551547 +vt 0.602115 0.581446 +vt 0.602115 0.578902 +vt 0.604318 0.577630 +vt 0.606522 0.578902 +vt 0.606522 0.581446 +vt 0.491177 0.355301 +vt 0.491177 0.357845 +vt 0.488973 0.359117 +vt 0.486770 0.357845 +vt 0.487668 0.359970 +vt 0.574045 0.343776 +vt 0.606522 0.639115 +vt 0.606522 0.641659 +vt 0.604319 0.642931 +vt 0.602115 0.641659 +vt 0.602115 0.639115 +vt 0.754276 0.277694 +vt 0.754276 0.280238 +vt 0.752073 0.281510 +vt 0.749870 0.280238 +vt 0.750768 0.282363 +vt 0.606522 0.713315 +vt 0.606522 0.715859 +vt 0.604319 0.717131 +vt 0.602115 0.715859 +vt 0.602115 0.713315 +vt 0.273168 0.929341 +vt 0.606522 0.667942 +vt 0.606522 0.670486 +vt 0.604318 0.671758 +vt 0.602115 0.670486 +vt 0.603013 0.672611 +vt 0.709510 0.115817 +vt 0.840564 0.070505 +vt 0.864898 0.193718 +vt 0.434862 0.004449 +vt 0.883297 0.095497 +vt 0.617784 0.004449 +vt 0.675567 0.004449 +vt 0.559774 0.473300 +vt 0.805572 0.083601 +vt 0.814471 0.099228 +vt 0.790449 0.473300 +vt 0.814471 0.171119 +vt 0.754319 0.338339 +vt 0.753565 0.363256 +vt 0.746668 0.363256 +vt 0.750076 0.347238 +vt 0.434862 0.358290 +vt 0.925634 0.185813 +vt 0.918738 0.176702 +vt 0.918738 0.185813 +vt 0.666669 0.004449 +vt 0.764691 0.305467 +vt 0.915316 0.271354 +vt 0.890121 0.357656 +vt 0.896275 0.357656 +vt 0.896275 0.361209 +vt 0.451917 0.362521 +vt 0.562079 0.105361 +vt 0.924953 0.072939 +vt 0.928030 0.071163 +vt 0.931108 0.072940 +vt 0.581638 0.105361 +vt 0.434574 0.689457 +vt 0.075442 0.872938 +vt 0.146098 0.925379 +vt 0.523331 0.711537 +vt 0.004487 0.885727 +vt 0.737769 0.356939 +vt 0.923161 0.112116 +vt 0.924582 0.105817 +vt 0.928012 0.104396 +vt 0.931442 0.105817 +vt 0.924215 0.263066 +vt 0.925636 0.256767 +vt 0.929066 0.255346 +vt 0.932496 0.256767 +vt 0.602115 0.728155 +vt 0.604318 0.726883 +vt 0.606522 0.728155 +vt 0.606522 0.730699 +vt 0.755542 0.265886 +vt 0.707508 0.106918 +vt 0.572785 0.223985 +vt 0.605624 0.746811 +vt 0.605182 0.473300 +vt 0.602115 0.742141 +vt 0.604318 0.740869 +vt 0.606522 0.742141 +vt 0.606522 0.744685 +vt 0.323109 0.917375 +vt 0.749870 0.262611 +vt 0.605182 0.525465 +vt 0.602115 0.653102 +vt 0.604318 0.651830 +vt 0.606522 0.653102 +vt 0.606522 0.655646 +vt 0.570978 0.291611 +vt 0.755542 0.219542 +vt 0.752706 0.221180 +vt 0.749870 0.219542 +vt 0.605624 0.726029 +vt 0.574045 0.300510 +vt 0.606522 0.611126 +vt 0.604318 0.612398 +vt 0.602115 0.611126 +vt 0.602115 0.608582 +vt 0.605624 0.657771 +vt 0.603013 0.613251 +vt 0.606522 0.685326 +vt 0.604318 0.686598 +vt 0.602115 0.685326 +vt 0.602115 0.682782 +vt 0.749870 0.292534 +vt 0.752073 0.291262 +vt 0.754276 0.292534 +vt 0.754276 0.295078 +vt 0.603013 0.687451 +vt 0.753378 0.297203 +vt 0.373050 0.921582 +vt 0.606522 0.700166 +vt 0.604318 0.701438 +vt 0.602115 0.700166 +vt 0.602115 0.697622 +vt 0.606522 0.626819 +vt 0.604318 0.628091 +vt 0.602115 0.626819 +vt 0.602115 0.624275 +vt 0.603013 0.702291 +vt 0.603013 0.622150 +vt 0.874398 0.188538 +vt 0.626683 0.004449 +vt 0.585069 0.350853 +vt 0.814471 0.243034 +vt 0.840564 0.136561 +vt 0.927872 0.869430 +vt 0.492430 0.345130 +vt 0.883297 0.160895 +vt 0.890121 0.301476 +vt 0.840564 0.004449 +vt 0.927872 0.906407 +vt 0.585394 0.921451 +vt 0.024908 0.731434 +vt 0.523590 0.642155 +vt 0.658278 0.937198 +vt 0.642978 0.726786 +vt 0.642978 0.952498 +vt 0.642978 0.920254 +vt 0.642978 0.874191 +vt 0.642978 0.846554 +vt 0.642978 0.800490 +vt 0.642825 0.505544 +vt 0.643117 0.473300 +vt 0.642158 0.579242 +vt 0.642408 0.551605 +vt 0.642978 0.772852 +vt 0.641074 0.699003 +vt 0.405223 0.363488 +vt 0.576495 0.921451 +vt 0.708282 0.326519 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7208 -0.6931 0.0000 +vn 0.0000 0.7071 0.7071 +vn -0.7071 -0.7071 0.0000 +vn 0.0005 0.8669 0.4984 +vn -0.0005 0.8669 -0.4984 +vn -0.0005 0.8651 -0.5016 +vn 0.0000 0.9416 0.3368 +vn 0.0000 0.5185 0.8551 +vn 0.0000 0.9416 0.3367 +vn -0.0009 -0.0000 -1.0000 +vn 0.0005 -0.8651 0.5016 +vn 0.0009 0.0000 1.0000 +vn 0.0005 -0.8669 0.4984 +vn 0.0000 0.1029 0.9947 +vn 0.0005 0.8651 0.5016 +vn 0.8773 -0.0000 -0.4799 +vn 0.9438 -0.2844 -0.1682 +vn 0.9861 0.0000 -0.1660 +vn -0.8773 -0.0000 0.4799 +vn -0.8778 -0.4127 0.2431 +vn -0.8776 0.0000 0.4795 +vn -0.0005 -0.8651 -0.5016 +vn -1.0000 -0.0000 0.0076 +vn -0.0005 -0.8669 -0.4984 +vn 0.8778 0.4175 0.2349 +vn 0.8784 0.0000 0.4779 +vn 0.8781 0.0000 0.4785 +vn -0.8774 -0.4131 0.2439 +vn -0.9430 -0.2896 -0.1641 +vn 0.0000 0.8671 0.4982 +vn 0.0002 0.8650 0.5018 +vn -0.8778 0.4127 0.2431 +vn -0.8774 0.4131 0.2439 +vn -0.8778 0.4175 -0.2349 +vn -0.9850 -0.0000 -0.1723 +vn -0.8781 -0.0000 -0.4785 +vn 0.8774 -0.4131 -0.2439 +vn 0.8783 -0.4163 0.2352 +vn 0.8774 0.4131 -0.2439 +vn 0.8783 0.4163 0.2352 +vn 0.0000 -0.8671 0.4982 +vn -0.0001 -1.0000 -0.0004 +vn 0.0002 0.0000 1.0000 +vn 0.8778 -0.4175 0.2349 +vn -0.8778 -0.4175 -0.2349 +vn 1.0000 0.0000 0.0021 +vn 1.0000 -0.0006 0.0006 +vn 0.9438 0.2844 -0.1682 +vn 0.0000 -1.0000 -0.0003 +vn -0.9430 0.2896 -0.1641 +vn -1.0000 0.0012 -0.0027 +vn -1.0000 0.0000 -0.0063 +vn 0.0000 -0.8650 -0.5018 +vn -1.0000 -0.0018 -0.0041 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 0.8650 -0.5018 +vn 1.0000 0.0010 0.0009 +vn 1.0000 -0.0000 0.0076 +vn 0.0002 -0.8650 0.5018 +vn 0.0005 0.8651 -0.5016 +vn 0.0009 -0.0000 -1.0000 +vn 0.0005 0.8669 -0.4984 +vn -0.0005 -0.8669 0.4984 +vn 0.0005 -0.8669 -0.4984 +vn 0.0005 -0.8651 -0.5016 +vn -0.0001 1.0000 -0.0000 +vn -0.0001 1.0000 -0.0004 +vn -0.0009 -0.0000 1.0000 +vn -0.0005 -0.8651 0.5016 +vn -0.0005 0.8651 0.5016 +vn -0.8773 0.0000 -0.4800 +vn -0.9438 -0.2844 -0.1682 +vn -0.8774 -0.4131 -0.2439 +vn -0.8784 -0.0000 0.4779 +vn -0.8778 0.4175 0.2349 +vn -0.8781 -0.0000 0.4785 +vn -0.0002 -0.8650 0.5018 +vn -0.0005 0.8669 0.4984 +vn -1.0000 -0.0006 0.0006 +vn 1.0000 0.0012 -0.0027 +vn -0.8778 -0.4175 0.2349 +vn -0.0002 0.0000 1.0000 +vn -0.0002 0.8650 0.5018 +vn 0.8778 0.4127 0.2431 +vn 0.8773 -0.0000 0.4799 +vn 0.8774 0.4131 0.2439 +vn 0.8774 -0.4131 0.2439 +vn 0.9430 -0.2896 -0.1641 +vn 0.8778 -0.4175 -0.2349 +vn -0.9861 0.0000 -0.1660 +vn -1.0000 0.0000 0.0021 +vn 0.9850 -0.0000 -0.1723 +vn 0.8781 -0.0000 -0.4785 +vn -0.8783 0.4163 0.2352 +vn -0.8774 0.4131 -0.2439 +vn 0.9430 0.2896 -0.1641 +vn 1.0000 0.0000 -0.0063 +vn 1.0000 -0.0018 -0.0041 +vn -1.0000 0.0010 0.0009 +vn -0.9438 0.2844 -0.1682 +vn 0.8778 -0.4127 0.2431 +vn 0.0001 -1.0000 -0.0004 +vn 0.0001 1.0000 -0.0000 +vn 0.0001 1.0000 -0.0004 +vn 0.8778 0.4175 -0.2349 +vn -0.8783 -0.4163 0.2352 +vn -0.9808 0.0000 0.1951 +vn -0.7071 0.0000 0.7071 +vn 0.9808 0.0000 0.1951 +vn 0.9936 0.0000 0.1127 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.9268 0.3755 +vn 0.0000 0.8731 0.4875 +vn 0.0000 0.9268 0.3754 +vn 0.0000 0.3265 0.9452 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.2935 -0.9559 +vn 0.0000 -0.6811 -0.7322 +vn 0.0000 0.9838 -0.1795 +vn 0.0000 0.3364 -0.9417 +vn 0.0000 0.9746 -0.2238 +vn 0.0000 -0.9746 0.2238 +vn 0.0000 -0.7322 0.6811 +vn 0.0000 -0.8469 0.5318 +vn 0.0000 -0.8469 0.5317 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.5914 0.8064 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.9981 0.0608 +vn 0.0000 -0.9982 0.0608 +vn -0.9936 0.0000 0.1127 +vn 0.0000 -0.1211 0.9926 +vn 0.0000 0.6473 0.7622 +vn 0.0000 0.9988 0.0492 +vn 0.0000 -0.6473 -0.7622 +vn 0.0000 -0.0308 0.9995 +vn 0.0000 -0.9417 -0.3364 +vn 0.0000 0.0934 0.9956 +vn 0.0000 -0.9369 0.3495 +vn 0.0000 -0.9369 0.3496 +vn 0.0000 -0.6888 0.7249 +vn 0.0000 -0.8619 -0.5070 +vn 0.0000 0.4161 0.9093 +vn 0.0000 0.7931 -0.6091 +vn 0.0000 -0.1309 -0.9914 +vn 0.0000 0.9968 0.0800 +vn 0.0000 0.9968 0.0799 +vn 0.0000 -0.9240 -0.3823 +vn 0.0000 -0.7931 0.6091 +vn 0.0000 -0.3823 0.9240 +vn 0.0000 0.9990 -0.0443 +vn 0.0000 0.3030 0.9530 +vn 0.0000 0.6902 0.7236 +vn 0.0000 -0.5488 0.8360 +vn 0.0000 0.9286 -0.3710 +vn 0.0000 0.9473 0.3203 +vn 0.0000 0.7510 -0.6603 +vn 0.0000 0.4880 0.8728 +vn 0.0000 -0.1963 -0.9805 +vn 0.0000 -0.9473 -0.3203 +vn 0.0000 -0.9806 0.1963 +vn 0.0000 0.5925 0.8055 +vn 0.0000 -0.6234 0.7819 +vn 0.0000 -0.2174 0.9761 +vn 0.0000 -1.0000 0.0089 +vn 0.0000 0.8248 0.5654 +vn 0.0000 -0.2425 0.9701 +vn 0.7208 -0.6931 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.8773 -0.0000 -0.4799 +vn -0.8778 -0.4127 -0.2431 +vn -0.9430 -0.2896 0.1641 +vn 0.0000 0.1029 -0.9947 +vn 0.0000 0.5185 -0.8551 +vn 0.0000 0.8671 -0.4982 +vn 0.0002 0.8650 -0.5018 +vn -1.0000 -0.0000 -0.0076 +vn -0.8778 0.4127 -0.2431 +vn 0.8784 0.0000 -0.4779 +vn 0.9438 -0.2844 0.1682 +vn -0.9850 -0.0000 0.1723 +vn 0.9861 0.0000 0.1660 +vn 1.0000 -0.0006 -0.0006 +vn 1.0000 0.0000 -0.0021 +vn 0.0000 -0.8671 -0.4982 +vn 0.0002 -0.8650 -0.5018 +vn 0.8783 -0.4163 -0.2352 +vn 0.0002 0.0000 -1.0000 +vn 0.8783 0.4163 -0.2352 +vn 0.0000 -1.0000 0.0003 +vn -0.9430 0.2896 0.1641 +vn 0.9438 0.2844 0.1682 +vn 0.0000 -0.8650 0.5018 +vn -1.0000 0.0012 0.0027 +vn -1.0000 0.0000 0.0063 +vn 0.0000 0.8650 0.5018 +vn 1.0000 0.0010 -0.0009 +vn -1.0000 -0.0018 0.0041 +vn -0.0001 -1.0000 0.0004 +vn 1.0000 -0.0000 -0.0076 +vn -0.8784 -0.0000 -0.4779 +vn -1.0000 -0.0006 -0.0006 +vn -0.8773 0.0000 0.4800 +vn -0.9438 -0.2844 0.1682 +vn -0.9861 0.0000 0.1660 +vn 1.0000 0.0012 0.0027 +vn -0.8783 -0.4163 -0.2352 +vn 0.0001 -1.0000 0.0004 +vn -0.0001 1.0000 0.0004 +vn -0.0002 0.8650 -0.5018 +vn -0.9438 0.2844 0.1682 +vn 0.9850 -0.0000 0.1723 +vn 0.9430 -0.2896 0.1641 +vn 0.8778 0.4127 -0.2431 +vn 1.0000 0.0000 0.0063 +vn 1.0000 -0.0018 0.0041 +vn -0.8783 0.4163 -0.2352 +vn 0.8778 -0.4127 -0.2431 +vn 0.8776 0.0000 -0.4795 +vn -0.0002 -0.8650 -0.5018 +vn -0.0002 0.0000 -1.0000 +vn 0.9430 0.2896 0.1641 +vn -1.0000 0.0010 -0.0009 +vn 0.8778 0.4174 0.2349 +vn 0.0001 1.0000 0.0004 +vn -0.9808 0.0000 -0.1951 +vn -0.7071 0.0000 -0.7071 +vn 0.9808 0.0000 -0.1951 +vn 0.9936 0.0000 -0.1127 +vn 0.0000 0.8731 -0.4875 +vn 0.0000 0.9268 -0.3755 +vn 0.0000 0.9268 -0.3754 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.3364 0.9417 +vn 0.0000 0.9838 0.1795 +vn 0.0000 -0.6811 0.7322 +vn 0.0000 0.2935 0.9559 +vn 0.0000 -0.7322 -0.6811 +vn 0.0000 -0.9746 -0.2238 +vn 0.0000 0.9746 0.2238 +vn 0.0000 -0.8469 -0.5317 +vn 0.0000 -0.8469 -0.5318 +vn 0.0000 0.3265 -0.9452 +vn -1.0000 0.0000 -0.0021 +vn 0.0000 -0.6888 -0.7249 +vn 0.0000 0.5914 -0.8064 +vn 0.0000 -0.1309 0.9914 +vn 0.0000 0.7931 0.6091 +vn 0.0000 -0.9369 -0.3496 +vn 0.0000 -0.9369 -0.3495 +vn 0.0000 0.4161 -0.9093 +vn 0.0000 0.0934 -0.9956 +vn 0.0000 -0.9982 -0.0608 +vn 0.0000 -0.9981 -0.0608 +vn 0.0000 -0.6473 0.7622 +vn 0.0000 0.6473 -0.7622 +vn -0.9936 0.0000 -0.1127 +vn 0.0000 -0.1211 -0.9926 +vn 0.0000 0.9988 -0.0492 +vn 0.0000 -0.0308 -0.9995 +vn 0.0000 -0.9417 0.3364 +vn 0.0000 -0.8619 0.5070 +vn 0.0000 -0.9240 0.3823 +vn 0.0000 -0.3823 -0.9240 +vn 0.0000 -0.7931 -0.6091 +vn 0.0000 0.9968 -0.0800 +vn 0.0000 0.9968 -0.0799 +vn 0.0000 0.9990 0.0443 +vn 0.0000 0.3030 -0.9530 +vn 0.0000 0.9286 0.3710 +vn 0.0000 -0.5488 -0.8360 +vn 0.0000 0.6902 -0.7236 +vn 0.0000 -0.1963 0.9805 +vn 0.0000 0.7510 0.6603 +vn 0.0000 -0.9806 -0.1963 +vn 0.0000 -0.9473 0.3203 +vn 0.0000 0.9473 -0.3203 +vn 0.0000 0.4880 -0.8728 +vn 0.0000 0.5925 -0.8055 +vn 0.0000 -0.6234 -0.7819 +vn 0.0000 0.8248 -0.5654 +vn 0.0000 -1.0000 -0.0089 +vn 0.0000 -0.2174 -0.9761 +vn 0.0000 -0.2425 -0.9701 +vn 0.0000 0.9416 -0.3368 +vn 0.0000 0.9416 -0.3367 +vn 0.0000 1.0000 -0.0007 +vn 0.8776 0.0000 0.4795 +vn 1.0000 0.0001 0.0000 +vn 0.0000 0.9287 -0.3709 +vn 0.0000 -0.9805 0.1963 +vn -0.8776 0.0000 -0.4795 +vn 0.0000 1.0000 0.0007 +vn 0.0000 0.9287 0.3709 +vn 0.0000 -0.9805 -0.1963 +s 1 +f 708/1/1 6/2/1 696/3/1 +f 88/4/2 92/5/2 87/6/2 +f 346/7/3 19/8/3 4/9/3 +f 80/10/4 74/11/4 73/12/4 +f 30/13/5 55/14/5 54/15/5 +f 54/15/5 29/16/5 30/13/5 +f 35/17/6 69/18/6 48/19/6 +f 10/20/7 16/21/7 15/22/7 +f 5/23/5 4/24/5 10/25/5 +f 40/26/3 8/27/3 2/28/3 +f 33/29/6 77/30/6 50/31/6 +f 697/32/8 709/33/8 685/34/8 +f 14/35/5 20/36/5 5/23/5 +f 692/37/5 2/38/5 691/39/5 +f 76/40/9 78/41/9 77/30/9 +f 38/42/2 28/43/2 27/44/2 +f 59/45/5 63/46/5 62/47/5 +f 41/48/5 22/49/5 44/50/5 +f 37/51/6 61/52/6 46/53/6 +f 52/54/5 31/55/5 32/56/5 +f 42/57/5 23/58/5 41/48/5 +f 1/59/5 51/60/5 3/61/5 +f 56/62/5 27/63/5 28/64/5 +f 45/65/5 35/17/5 48/19/5 +f 32/66/2 36/67/2 29/68/2 +f 46/69/3 44/70/3 43/71/3 +f 39/72/5 24/73/5 42/57/5 +f 67/74/5 71/75/5 70/76/5 +f 12/77/5 13/78/5 14/35/5 +f 13/79/10 18/80/10 17/81/10 +f 31/82/2 7/83/2 34/84/2 +f 86/85/5 90/86/5 82/87/5 +f 43/71/3 17/88/3 46/69/3 +f 90/86/3 83/89/3 89/90/3 +f 72/91/4 66/92/4 65/93/4 +f 60/94/9 62/47/9 61/52/9 +f 101/95/1 97/96/1 98/97/1 +f 39/98/3 47/99/3 50/100/3 +f 36/67/2 30/101/2 29/68/2 +f 47/102/1 65/93/1 36/103/1 +f 34/84/2 32/66/2 31/82/2 +f 50/100/3 40/26/3 39/98/3 +f 44/50/5 21/104/5 43/105/5 +f 41/106/3 45/107/3 48/108/3 +f 84/109/6 91/110/6 88/111/6 +f 68/112/9 70/76/9 69/18/9 +f 113/113/11 131/114/12 114/115/13 +f 85/116/6 93/117/6 81/118/6 +f 81/119/5 90/86/5 89/90/5 +f 104/120/14 108/121/15 106/122/16 +f 86/123/3 96/124/3 85/125/3 +f 114/115/13 122/126/17 109/127/17 +f 81/128/2 94/129/2 82/130/2 +f 82/131/1 95/132/1 86/133/1 +f 87/134/1 89/90/1 83/135/1 +f 99/136/6 106/122/16 102/137/6 +f 95/132/5 93/117/5 96/124/5 +f 45/65/1 57/138/1 38/139/1 +f 99/140/3 98/141/3 103/142/3 +f 125/143/18 112/144/19 111/145/20 +f 85/146/5 91/110/5 86/85/5 +f 105/147/15 107/148/21 108/121/15 +f 112/144/19 129/149/22 113/113/11 +f 121/150/23 138/151/24 118/152/25 +f 127/153/26 135/154/27 133/155/28 +f 122/156/17 110/157/29 109/158/17 +f 107/148/21 97/96/5 100/159/5 +f 112/160/30 113/161/30 114/162/30 +f 123/163/31 111/145/20 110/157/29 +f 108/164/2 107/165/2 102/166/2 +f 130/167/32 134/168/33 128/169/34 +f 125/170/35 137/171/36 135/154/27 +f 119/172/6 116/173/37 115/174/38 +f 127/153/26 116/175/39 129/176/40 +f 131/177/41 117/178/42 122/179/43 +f 124/180/44 136/181/45 138/151/24 +f 132/182/46 115/183/47 130/167/32 +f 138/184/1 135/185/48 137/186/49 +f 115/174/38 133/187/50 134/188/50 +f 126/189/51 134/168/33 136/181/45 +f 123/190/52 117/178/42 137/171/36 +f 149/191/2 154/192/53 153/193/2 +f 150/194/5 140/195/5 147/196/5 +f 118/152/25 150/197/54 119/198/55 +f 146/199/6 140/195/6 144/200/6 +f 141/201/1 143/202/56 139/203/1 +f 129/176/40 120/204/57 131/177/41 +f 147/205/58 151/206/3 152/207/59 +f 172/208/48 124/209/60 170/210/60 +f 121/150/23 119/198/55 132/182/46 +f 152/207/59 141/211/3 139/212/61 +f 147/205/58 117/178/42 120/204/57 +f 167/213/62 132/214/63 178/215/63 +f 143/216/64 118/152/25 138/151/24 +f 138/184/1 139/203/1 143/202/56 +f 117/178/42 139/212/61 137/171/36 +f 170/210/60 121/217/62 167/218/62 +f 157/219/65 156/220/65 160/221/65 +f 136/222/66 133/187/50 135/185/48 +f 153/193/2 143/216/64 145/223/2 +f 160/224/67 168/225/68 177/226/69 +f 174/227/5 126/228/48 172/208/48 +f 146/229/2 150/194/54 149/230/2 +f 140/195/3 148/231/3 147/196/58 +f 157/232/70 169/233/71 156/234/72 +f 119/172/6 147/235/73 120/236/74 +f 158/237/75 171/238/76 157/232/70 +f 158/237/75 175/239/77 173/240/75 +f 167/241/78 184/242/79 170/243/80 +f 180/244/81 176/245/82 174/246/83 +f 184/247/1 181/248/48 182/249/84 +f 159/250/85 177/226/69 175/239/77 +f 196/251/86 192/252/3 195/253/3 +f 194/254/2 186/255/2 193/256/87 +f 172/257/88 180/244/81 174/246/83 +f 156/234/72 168/258/68 155/259/68 +f 178/215/63 130/260/37 176/261/37 +f 179/262/89 161/263/90 180/264/89 +f 162/265/91 173/266/92 175/267/93 +f 190/268/6 188/269/6 192/270/6 +f 162/271/37 165/272/6 161/263/90 +f 171/273/94 183/274/95 169/275/96 +f 164/276/97 196/277/86 200/278/98 +f 169/275/96 163/279/99 168/280/100 +f 161/281/101 178/282/102 176/245/82 +f 163/279/99 193/283/87 166/284/103 +f 187/285/2 198/286/104 185/287/105 +f 164/276/97 189/288/106 184/242/79 +f 165/289/107 167/241/78 178/282/102 +f 182/249/84 179/262/89 180/264/89 +f 173/266/92 181/290/108 171/273/94 +f 206/291/3 258/292/3 205/293/3 +f 184/247/1 185/294/1 183/295/109 +f 193/256/5 190/268/5 196/251/5 +f 193/296/110 165/272/6 166/297/111 +f 204/298/6 211/299/6 208/300/6 +f 163/279/99 185/287/105 198/286/104 +f 166/284/103 175/267/93 177/301/112 +f 189/288/106 199/302/3 191/303/3 +f 207/304/1 209/305/1 203/306/1 +f 205/307/5 211/299/5 206/308/5 +f 200/278/98 195/309/3 199/302/3 +f 197/310/2 193/283/87 198/286/104 +f 210/311/3 203/312/3 209/305/3 +f 208/313/2 212/314/2 207/315/2 +f 205/316/6 255/317/6 201/318/6 +f 170/243/80 182/319/113 172/257/88 +f 202/320/1 257/321/1 206/322/1 +f 202/323/5 211/299/5 210/311/5 +f 201/324/5 212/314/5 205/307/5 +f 201/325/2 256/326/2 202/327/2 +f 230/328/6 229/329/6 224/330/6 +f 275/331/3 276/332/3 273/333/3 +f 224/334/114 217/335/3 222/336/114 +f 201/324/5 210/311/5 209/305/5 +f 225/337/115 222/336/114 223/338/115 +f 223/339/1 222/340/1 226/341/1 +f 220/342/2 226/343/116 219/344/2 +f 214/345/117 259/346/117 260/347/117 +f 163/279/99 177/301/112 168/280/100 +f 237/348/3 254/349/3 245/350/3 +f 176/261/37 128/351/5 174/227/5 +f 185/294/1 191/352/1 187/353/1 +f 221/354/5 230/355/118 228/356/5 +f 277/357/119 273/358/120 276/359/121 +f 282/360/122 280/361/122 279/362/122 +f 239/363/123 234/364/5 233/365/123 +f 277/366/2 282/367/2 278/368/2 +f 227/369/118 229/370/116 230/355/118 +f 270/371/2 268/372/2 278/368/2 +f 266/373/124 267/374/125 265/375/124 +f 228/356/5 223/338/115 221/354/5 +f 286/376/126 287/377/127 285/378/126 +f 274/379/120 263/380/128 273/358/120 +f 270/381/129 271/382/130 269/383/129 +f 278/384/131 279/362/132 275/385/132 +f 237/348/3 250/386/3 238/387/3 +f 240/388/3 251/389/3 252/390/3 +f 240/391/5 235/392/133 234/364/5 +f 240/388/3 253/393/3 241/394/3 +f 241/395/133 236/396/134 235/392/133 +f 213/397/135 262/398/135 259/346/135 +f 238/399/136 233/365/123 232/400/136 +f 242/401/134 231/402/62 236/396/134 +f 249/403/134 245/404/62 254/405/134 +f 214/406/5 257/321/5 256/326/5 +f 214/407/137 261/408/138 215/409/138 +f 237/410/62 232/400/136 231/411/62 +f 247/412/5 253/413/133 252/414/5 +f 246/415/123 252/414/5 251/416/123 +f 248/417/133 254/405/134 253/413/133 +f 248/418/2 247/419/2 246/420/2 +f 261/408/5 259/346/5 262/398/5 +f 213/421/5 258/292/5 216/422/5 +f 244/423/62 250/424/136 245/425/62 +f 241/394/3 254/349/3 242/426/3 +f 216/422/5 257/321/5 215/427/5 +f 215/428/139 262/398/139 216/429/139 +f 264/430/128 265/431/124 263/380/128 +f 268/432/125 269/383/129 267/374/125 +f 238/387/3 251/389/3 239/433/3 +f 243/434/136 251/416/123 250/424/136 +f 213/421/5 256/326/5 255/317/5 +f 272/435/140 275/385/140 271/382/140 +f 284/436/141 285/378/126 283/437/141 +f 276/359/121 281/438/142 277/357/119 +f 276/332/3 279/439/3 280/440/3 +f 295/441/3 296/442/3 293/443/3 +f 288/444/127 289/445/143 287/446/127 +f 294/447/144 283/437/141 293/448/144 +f 290/449/143 291/450/145 289/445/143 +f 290/451/2 288/452/2 298/453/2 +f 297/454/146 293/448/144 296/455/146 +f 292/456/147 295/457/148 291/450/148 +f 296/442/3 299/458/3 300/459/3 +f 302/460/149 300/461/149 299/462/149 +f 298/463/150 299/462/150 295/457/150 +f 296/455/146 301/464/151 297/454/146 +f 297/465/2 302/466/2 298/453/2 +f 304/467/152 305/468/153 303/469/152 +f 315/470/3 316/471/3 313/472/3 +f 314/473/154 303/469/152 313/474/155 +f 306/475/153 307/476/156 305/477/153 +f 310/478/157 311/479/158 309/480/157 +f 308/481/156 309/480/157 307/476/156 +f 310/482/2 308/483/2 318/484/2 +f 317/485/159 313/474/155 316/486/159 +f 312/487/160 315/488/160 311/479/160 +f 316/471/3 319/489/3 320/490/3 +f 322/491/161 320/492/161 319/493/161 +f 318/494/162 319/493/162 315/488/162 +f 316/486/159 321/495/163 317/485/159 +f 317/496/2 322/497/2 318/484/2 +f 324/498/164 325/499/165 323/500/164 +f 335/501/3 336/502/3 333/503/3 +f 334/504/166 323/500/164 333/505/166 +f 326/506/165 327/507/167 325/499/165 +f 330/508/168 331/509/169 329/510/168 +f 328/511/167 329/510/168 327/512/167 +f 330/513/2 328/514/2 338/515/2 +f 337/516/170 333/505/166 336/517/170 +f 332/518/171 335/519/171 331/509/171 +f 336/502/3 339/520/3 340/521/3 +f 342/522/172 340/523/172 339/524/172 +f 338/525/173 339/524/173 335/519/173 +f 336/517/170 341/526/174 337/516/170 +f 337/527/2 342/528/2 338/515/2 +f 713/529/175 690/530/175 689/531/175 +f 719/532/8 707/533/8 731/534/8 +f 719/532/175 696/535/175 695/536/175 +f 722/537/176 686/538/176 710/539/176 +f 724/540/176 688/541/176 712/542/176 +f 703/543/8 715/544/8 691/545/8 +f 362/546/2 5/547/2 20/548/2 +f 398/549/3 55/550/3 56/551/3 +f 717/552/175 694/553/175 693/554/175 +f 709/33/175 686/555/175 685/556/175 +f 687/557/175 712/542/175 688/558/175 +f 397/559/3 54/560/3 55/550/3 +f 715/544/175 692/561/175 691/562/175 +f 345/563/1 685/564/1 3/565/1 +f 32/56/5 53/566/5 52/54/5 +f 2/567/5 26/568/5 40/569/5 +f 47/102/5 33/29/5 50/31/5 +f 28/64/5 19/570/5 56/62/5 +f 30/101/2 38/42/2 27/44/2 +f 434/571/2 430/572/2 429/573/2 +f 411/574/6 377/575/6 390/576/6 +f 358/577/7 352/578/7 357/579/7 +f 362/580/62 385/581/62 355/582/62 +f 350/583/3 382/584/3 344/585/3 +f 416/586/177 422/587/177 415/588/177 +f 378/589/2 374/590/2 371/591/2 +f 372/592/62 397/593/62 369/594/62 +f 371/595/62 396/596/62 372/592/62 +f 352/597/62 347/598/62 354/599/62 +f 382/584/3 392/600/3 381/601/3 +f 374/590/2 376/602/2 373/603/2 +f 386/604/3 388/605/3 385/606/3 +f 432/607/62 428/608/62 424/609/62 +f 384/610/62 365/611/62 366/612/62 +f 455/613/69 473/614/85 471/615/67 +f 369/594/62 398/616/62 370/617/62 +f 383/618/3 387/619/3 386/604/3 +f 372/620/2 378/589/2 371/591/2 +f 404/621/178 402/622/178 403/623/178 +f 435/624/62 437/625/62 438/626/62 +f 431/627/1 429/628/1 425/629/1 +f 438/626/3 428/630/3 427/631/3 +f 385/606/3 359/632/3 355/633/3 +f 360/634/10 355/635/10 359/636/10 +f 413/637/62 409/638/62 412/639/62 +f 386/640/62 363/641/62 364/642/62 +f 381/601/3 389/643/3 384/644/3 +f 408/645/177 414/646/177 407/647/177 +f 435/624/6 427/648/6 423/649/6 +f 456/650/77 464/651/75 473/614/85 +f 445/652/3 441/653/3 447/654/3 +f 469/655/179 477/656/180 467/657/80 +f 450/658/2 448/659/2 444/660/2 +f 366/612/62 381/661/62 384/610/62 +f 377/575/62 387/662/62 390/576/62 +f 343/663/62 393/664/62 373/665/62 +f 425/666/3 432/607/3 431/627/3 +f 373/603/2 349/667/2 343/668/2 +f 354/599/62 356/669/62 355/670/62 +f 433/671/6 426/672/6 430/673/6 +f 407/647/1 389/674/1 378/675/1 +f 439/676/1 443/677/1 440/678/1 +f 454/679/68 467/680/72 453/681/71 +f 467/657/80 479/682/181 465/683/88 +f 449/684/182 447/685/183 450/686/183 +f 439/676/62 449/684/182 442/687/62 +f 458/688/184 461/689/6 457/690/185 +f 453/691/186 452/692/186 456/693/186 +f 433/671/62 427/694/62 428/608/62 +f 454/679/68 471/615/67 469/695/68 +f 453/681/71 465/696/70 452/697/76 +f 452/697/76 464/698/75 451/699/75 +f 458/700/187 469/655/179 471/701/102 +f 476/702/188 472/703/112 470/704/100 +f 463/705/92 480/706/189 466/707/94 +f 459/708/190 473/709/82 464/710/83 +f 465/683/88 459/708/190 464/710/83 +f 460/711/191 492/712/192 496/713/193 +f 496/713/193 491/714/2 495/715/2 +f 480/716/1 477/717/194 478/718/195 +f 466/707/94 478/719/196 468/720/96 +f 468/720/96 476/702/188 470/704/100 +f 475/721/197 457/690/185 476/722/197 +f 457/723/198 474/724/93 472/703/112 +f 483/725/1 485/726/199 487/727/1 +f 462/728/200 471/701/102 473/709/82 +f 488/729/6 482/730/6 484/731/6 +f 492/732/62 482/730/62 486/733/62 +f 461/734/201 463/705/92 474/724/93 +f 466/735/202 514/736/194 512/737/202 +f 493/738/3 489/739/203 494/740/204 +f 474/741/205 509/742/5 520/743/205 +f 460/711/191 485/744/206 480/706/189 +f 459/708/190 489/739/203 462/728/200 +f 483/745/3 494/740/204 481/746/207 +f 492/732/192 488/747/2 491/748/2 +f 478/718/195 475/721/197 476/722/197 +f 485/744/206 495/715/2 487/749/2 +f 502/750/22 510/751/19 497/752/19 +f 463/753/5 512/737/202 509/754/5 +f 480/716/1 481/755/1 479/756/208 +f 500/757/209 501/758/209 502/759/209 +f 510/760/19 498/761/18 497/762/19 +f 513/763/29 500/764/17 499/765/31 +f 518/766/41 522/767/210 516/768/43 +f 511/769/20 499/765/31 498/761/18 +f 534/770/3 538/771/211 537/772/3 +f 500/764/17 517/773/13 501/774/12 +f 459/708/190 481/746/207 494/740/204 +f 509/775/212 526/776/213 506/777/214 +f 501/774/12 519/778/11 502/750/22 +f 472/779/184 520/743/205 518/780/184 +f 468/781/194 516/782/62 514/736/194 +f 490/783/3 482/730/3 489/784/203 +f 528/785/2 536/786/2 535/787/215 +f 514/788/52 522/767/210 524/789/216 +f 526/790/1 523/791/194 525/792/217 +f 489/793/73 461/689/6 462/794/218 +f 507/795/6 504/796/184 503/797/219 +f 506/777/214 538/798/211 507/799/220 +f 511/800/51 505/801/221 525/802/222 +f 515/803/23 504/804/223 517/805/46 +f 530/806/6 532/807/6 534/808/6 +f 509/775/212 507/799/220 520/809/40 +f 540/810/224 529/811/2 527/812/225 +f 520/809/40 503/813/226 518/766/41 +f 515/803/23 523/814/227 521/815/228 +f 524/816/229 521/817/230 523/791/194 +f 600/818/3 548/819/3 547/820/3 +f 503/797/219 521/817/230 522/821/230 +f 535/822/215 505/801/221 508/823/231 +f 531/824/232 506/777/214 526/776/213 +f 513/825/44 525/802/222 523/814/227 +f 551/826/1 549/827/1 545/828/1 +f 517/805/46 508/823/231 519/829/233 +f 553/830/6 546/831/6 550/832/6 +f 512/833/35 524/789/216 526/776/213 +f 544/834/62 553/830/62 548/835/62 +f 554/836/2 550/837/2 549/838/2 +f 541/839/3 531/824/232 533/840/3 +f 553/830/62 547/841/62 548/835/62 +f 535/822/215 539/842/2 540/810/224 +f 507/795/6 535/843/110 508/844/234 +f 526/790/1 527/845/1 531/846/199 +f 505/801/221 527/812/225 525/802/222 +f 519/829/233 505/801/221 510/847/34 +f 598/848/2 543/849/2 544/850/2 +f 559/851/3 566/852/235 564/853/235 +f 599/854/1 544/855/1 548/856/1 +f 568/857/1 561/858/1 564/859/1 +f 566/860/6 560/861/6 571/862/6 +f 532/807/62 535/787/62 538/771/62 +f 609/863/3 607/864/3 617/865/3 +f 564/853/235 567/866/236 565/867/236 +f 579/868/3 596/869/3 584/870/3 +f 545/871/3 552/872/3 551/826/3 +f 597/873/6 547/874/6 543/875/6 +f 568/876/237 562/877/2 561/878/2 +f 556/879/238 601/880/238 555/881/238 +f 543/882/62 552/872/62 544/834/62 +f 554/836/62 543/882/62 547/841/62 +f 615/883/239 619/884/240 618/885/241 +f 576/886/62 581/887/136 575/888/136 +f 624/889/2 619/890/2 620/891/2 +f 533/892/1 527/845/1 529/893/1 +f 572/894/242 563/895/62 570/896/62 +f 629/897/243 628/898/244 627/899/244 +f 609/900/245 608/901/246 607/902/246 +f 571/903/237 569/904/242 572/894/242 +f 613/905/247 612/906/248 611/907/248 +f 605/908/249 616/909/239 615/883/239 +f 621/910/250 620/911/251 617/912/250 +f 470/913/62 518/780/184 516/782/62 +f 616/914/2 606/915/2 620/891/2 +f 565/867/236 570/896/62 563/895/62 +f 622/916/252 624/917/252 621/910/252 +f 537/918/3 542/919/253 541/839/3 +f 592/920/3 579/868/3 580/921/3 +f 575/888/136 580/922/123 574/923/123 +f 642/924/254 644/925/254 641/926/254 +f 573/927/5 584/928/133 578/929/133 +f 595/930/3 582/931/3 583/932/3 +f 582/931/3 593/933/3 581/934/3 +f 601/880/255 558/935/255 555/936/255 +f 578/929/133 583/937/134 577/938/134 +f 577/938/134 582/939/62 576/886/62 +f 647/940/256 646/941/257 645/942/257 +f 636/943/2 626/944/2 640/945/2 +f 637/946/258 634/947/259 633/948/258 +f 643/949/260 638/950/261 639/951/261 +f 596/952/133 590/953/134 595/954/134 +f 587/955/5 591/956/133 596/952/133 +f 595/954/134 589/957/62 594/958/62 +f 574/923/123 579/959/5 573/960/5 +f 556/961/62 599/854/62 557/962/62 +f 590/963/2 591/964/2 586/965/2 +f 594/958/62 588/966/136 593/967/136 +f 603/968/262 556/969/263 557/970/262 +f 631/971/264 630/972/243 629/973/243 +f 627/899/244 626/974/265 625/975/265 +f 618/976/3 621/977/3 617/865/3 +f 593/933/3 580/921/3 581/934/3 +f 599/854/62 558/978/62 557/962/62 +f 604/979/266 557/980/266 558/981/266 +f 596/869/3 583/932/3 584/870/3 +f 592/982/123 586/983/5 587/984/5 +f 600/818/62 555/985/62 558/978/62 +f 601/880/62 603/968/62 604/979/62 +f 611/907/248 610/986/245 609/900/245 +f 555/985/62 598/848/62 556/961/62 +f 617/912/267 614/987/267 613/905/267 +f 623/988/268 618/885/241 619/884/240 +f 625/975/265 636/989/269 635/990/269 +f 633/948/270 632/991/264 631/971/264 +f 593/967/136 585/992/123 592/982/123 +f 607/993/246 606/994/249 605/908/249 +f 629/995/3 627/996/3 637/997/3 +f 635/990/269 639/951/261 638/950/261 +f 644/998/2 639/999/2 640/945/2 +f 641/926/271 640/1000/271 637/946/271 +f 638/1001/3 641/1002/3 637/997/3 +f 649/1003/272 648/1004/256 647/1005/256 +f 649/1006/3 647/1007/3 657/1008/3 +f 653/1009/273 652/1010/274 651/1011/274 +f 645/942/257 656/1012/275 655/1013/276 +f 651/1011/274 650/1014/272 649/1003/272 +f 656/1015/2 646/1016/2 660/1017/2 +f 655/1013/276 659/1018/277 658/1019/277 +f 657/1020/278 654/1021/278 653/1009/278 +f 663/1022/279 658/1019/277 659/1018/277 +f 661/1023/280 660/1024/280 657/1020/280 +f 658/1025/3 661/1026/3 657/1008/3 +f 662/1027/281 664/1028/281 661/1023/281 +f 664/1029/2 659/1030/2 660/1017/2 +f 669/1031/282 668/1032/283 667/1033/283 +f 673/1034/284 672/1035/285 671/1036/285 +f 667/1033/283 666/1037/286 665/1038/286 +f 665/1038/286 676/1039/287 675/1040/287 +f 669/1041/3 667/1042/3 677/1043/3 +f 671/1036/285 670/1044/282 669/1045/282 +f 676/1046/2 666/1047/2 680/1048/2 +f 675/1040/287 679/1049/288 678/1050/288 +f 677/1051/289 674/1052/289 673/1034/289 +f 683/1053/290 678/1050/288 679/1049/288 +f 681/1054/291 680/1055/291 677/1051/291 +f 678/1056/3 681/1057/3 677/1043/3 +f 682/1058/292 684/1059/292 681/1054/292 +f 684/1060/2 679/1061/2 680/1048/2 +f 702/1062/293 725/1063/293 701/1064/293 +f 708/1065/293 731/534/293 707/1066/293 +f 706/1067/293 729/1068/293 705/1069/293 +f 704/1070/293 727/1071/293 703/1072/293 +f 698/1073/293 721/1074/293 697/1075/293 +f 699/1076/293 724/540/293 723/1077/293 +f 370/617/62 361/1078/62 351/1079/62 +f 380/1080/2 372/620/2 369/1081/2 +f 374/1082/62 395/1083/62 371/595/62 +f 375/1084/62 389/674/62 392/1085/62 +f 368/1086/62 344/1087/62 382/1088/62 +f 400/1089/177 406/1090/177 399/1091/177 +f 64/1092/4 58/1093/4 57/138/4 +f 728/1094/176 692/1095/176 716/1096/176 +f 358/1097/2 370/1098/2 351/1099/2 +f 365/1100/2 22/1101/2 23/1102/2 +f 729/1068/1 718/1103/1 717/552/1 +f 732/1104/176 696/3/176 720/1105/176 +f 366/1106/2 23/1102/2 24/1107/2 +f 348/1108/2 26/1109/2 6/1110/2 +f 394/1111/3 51/1112/3 52/1113/3 +f 711/1114/8 699/1115/8 723/1077/8 +f 704/1116/1 693/1117/1 692/1118/1 +f 434/571/62 423/1119/62 427/694/62 +f 393/1120/3 3/1121/3 51/1112/3 +f 382/1088/62 367/1122/62 368/1086/62 +f 379/1123/62 359/1124/62 388/1125/62 +f 706/1126/1 695/1127/1 694/1128/1 +f 395/1129/3 52/1113/3 53/1130/3 +f 363/1131/2 20/548/2 21/1132/2 +f 396/1133/3 53/1130/3 54/560/3 +f 702/1134/1 691/1135/1 690/1136/1 +f 368/1137/2 25/1138/2 26/1109/2 +f 726/1139/176 690/1140/176 714/1141/176 +f 701/1142/8 713/529/8 689/1143/8 +f 360/634/1 352/578/1 354/1144/1 +f 700/1145/1 689/1146/1 688/1147/1 +f 43/105/5 20/1148/5 13/1149/5 +f 2/1150/6 7/1151/6 1/1152/6 +f 721/1074/1 710/539/1 709/33/1 +f 49/1153/5 7/1154/5 8/1155/5 +f 9/1156/5 10/25/5 11/1157/5 +f 81/119/5 92/5/5 85/146/5 +f 10/20/1 18/80/1 12/1158/1 +f 18/1159/5 16/1160/5 17/1161/5 +f 17/1161/5 37/51/5 46/53/5 +f 705/1162/8 717/552/8 693/1163/8 +f 11/1157/5 19/1164/5 9/1156/5 +f 698/1165/1 687/1166/1 686/1167/1 +f 727/1071/1 716/1096/1 715/544/1 +f 731/534/1 720/1105/1 719/532/1 +f 367/1168/2 24/1107/2 25/1138/2 +f 361/1169/3 56/551/3 19/8/3 +f 49/1153/1 73/12/1 34/1170/1 +f 48/108/3 42/1171/3 41/106/3 +f 75/1172/5 79/1173/5 78/41/5 +f 40/569/5 25/1174/5 39/72/5 +f 28/43/2 16/1175/2 9/1176/2 +f 723/1077/1 712/542/1 711/1114/1 +f 384/644/3 390/1177/3 383/618/3 +f 415/588/1 391/1178/1 376/1179/1 +f 421/1180/62 417/1181/62 420/1182/62 +f 364/1183/2 21/1132/2 22/1101/2 +f 419/1184/178 417/1181/178 418/1185/178 +f 364/642/62 383/1186/62 386/640/62 +f 412/639/178 410/1187/178 411/574/178 +f 361/1188/62 353/1189/62 351/1190/62 +f 356/669/62 362/1191/62 355/670/62 +f 701/1192/62 700/1193/62 343/1194/62 +f 436/1195/2 423/1196/2 424/1197/2 +f 358/1198/62 360/1199/62 359/1124/62 +f 725/1063/1 714/1141/1 713/529/1 +f 349/1200/6 344/1201/6 343/1202/6 +f 399/1091/1 387/662/1 380/1203/1 +f 437/625/1 424/1204/1 428/1205/1 +f 405/1206/62 401/1207/62 404/621/62 +f 370/1098/2 380/1080/2 369/1081/2 +f 373/665/62 394/1208/62 374/1082/62 +f 403/623/6 379/1123/6 388/1125/6 +f 450/686/183 446/1209/294 448/1210/295 +f 423/1119/62 432/607/62 424/609/62 +f 351/1190/62 353/1189/62 352/597/62 +f 349/1211/62 391/1178/62 350/1212/62 +f 448/1210/295 441/1213/6 444/1214/6 +f 419/1184/6 375/1084/6 392/1085/6 +f 730/1215/176 694/1216/176 718/1103/176 +f 708/1/1 348/1217/1 6/2/1 +f 88/4/2 91/110/2 92/5/2 +f 346/7/3 361/1169/3 19/8/3 +f 80/10/4 79/1173/4 74/11/4 +f 30/13/5 27/63/5 55/14/5 +f 54/15/5 53/566/5 29/16/5 +f 35/17/6 68/112/6 69/18/6 +f 10/20/7 9/1218/7 16/21/7 +f 4/24/5 11/1157/5 10/25/5 +f 10/25/5 12/77/5 5/23/5 +f 12/77/5 14/35/5 5/23/5 +f 40/26/3 49/1219/3 8/27/3 +f 33/29/6 76/40/6 77/30/6 +f 697/32/8 721/1074/8 709/33/8 +f 14/35/5 13/78/5 20/36/5 +f 6/1220/5 2/38/5 696/1221/5 +f 2/38/5 1/1222/5 691/39/5 +f 696/1221/5 2/38/5 695/1223/5 +f 1/1222/5 3/1224/5 685/1225/5 +f 686/1226/5 687/1227/5 1/1222/5 +f 687/1227/5 688/1228/5 1/1222/5 +f 1/1222/5 685/1225/5 686/1226/5 +f 695/1223/5 2/38/5 694/1229/5 +f 693/1230/5 694/1229/5 2/38/5 +f 693/1230/5 2/38/5 692/37/5 +f 689/1231/5 690/1232/5 1/1222/5 +f 690/1232/5 691/39/5 1/1222/5 +f 1/1222/5 688/1228/5 689/1231/5 +f 76/40/9 75/1172/9 78/41/9 +f 38/42/2 37/1233/2 28/43/2 +f 59/45/5 58/1093/5 63/46/5 +f 41/48/5 23/58/5 22/49/5 +f 37/51/6 60/94/6 61/52/6 +f 52/54/5 51/60/5 31/55/5 +f 42/57/5 24/73/5 23/58/5 +f 1/59/5 31/55/5 51/60/5 +f 56/62/5 55/14/5 27/63/5 +f 45/65/5 38/139/5 35/17/5 +f 32/66/2 33/1234/2 36/67/2 +f 46/69/3 45/107/3 44/70/3 +f 39/72/5 25/1174/5 24/73/5 +f 67/74/5 66/92/5 71/75/5 +f 13/79/10 12/1158/10 18/80/10 +f 31/82/2 1/1235/2 7/83/2 +f 86/85/5 91/110/5 90/86/5 +f 43/71/3 13/1236/3 17/88/3 +f 90/86/3 84/1237/3 83/89/3 +f 72/91/4 71/75/4 66/92/4 +f 60/94/9 59/45/9 62/47/9 +f 101/95/1 100/159/1 97/96/1 +f 39/98/3 42/1171/3 47/99/3 +f 36/67/2 35/1238/2 30/101/2 +f 47/102/1 72/91/1 65/93/1 +f 34/84/2 33/1234/2 32/66/2 +f 50/100/3 49/1219/3 40/26/3 +f 44/50/5 22/49/5 21/104/5 +f 41/106/3 44/70/3 45/107/3 +f 84/109/6 90/86/6 91/110/6 +f 68/112/9 67/74/9 70/76/9 +f 113/113/11 129/149/22 131/114/12 +f 85/116/6 96/124/6 93/117/6 +f 81/119/5 82/87/5 90/86/5 +f 104/120/14 105/147/15 108/121/15 +f 86/123/3 95/132/3 96/124/3 +f 114/115/13 131/114/12 122/126/17 +f 81/128/2 93/117/2 94/129/2 +f 82/131/1 94/129/1 95/132/1 +f 87/134/1 92/5/1 89/90/1 +f 99/136/6 104/120/14 106/122/16 +f 95/132/5 94/129/5 93/117/5 +f 45/65/1 64/1092/1 57/138/1 +f 98/141/3 97/1239/3 103/142/3 +f 103/142/3 105/1240/3 99/140/3 +f 105/1240/3 104/1241/3 99/140/3 +f 125/143/18 127/1242/19 112/144/19 +f 85/146/5 92/5/5 91/110/5 +f 105/147/15 103/1243/21 107/148/21 +f 112/144/19 127/1242/19 129/149/22 +f 121/150/23 124/180/44 138/151/24 +f 127/153/26 125/170/35 135/154/27 +f 122/156/17 123/163/31 110/157/29 +f 107/148/21 103/1243/21 97/96/5 +f 114/162/30 109/1244/30 110/1245/30 +f 110/1245/30 111/1246/30 114/162/30 +f 111/1246/30 112/160/30 114/162/30 +f 123/163/31 125/143/18 111/145/20 +f 100/1247/2 101/1248/2 107/165/2 +f 101/1248/2 102/166/2 107/165/2 +f 102/166/2 106/1249/2 108/164/2 +f 130/167/32 115/183/47 134/168/33 +f 125/170/35 123/190/52 137/171/36 +f 119/172/6 120/236/74 116/173/37 +f 127/153/26 133/155/28 116/175/39 +f 131/177/41 120/204/57 117/178/42 +f 124/180/44 126/189/51 136/181/45 +f 132/182/46 119/198/55 115/183/47 +f 138/184/1 136/222/66 135/185/48 +f 115/174/38 116/173/37 133/187/50 +f 126/189/51 128/169/34 134/168/33 +f 123/190/52 122/179/43 117/178/42 +f 149/191/2 150/197/54 154/192/53 +f 150/194/5 144/200/5 140/195/5 +f 118/152/25 154/192/53 150/197/54 +f 146/199/6 142/1250/6 140/195/6 +f 141/201/1 145/1251/1 143/202/56 +f 129/176/40 116/175/39 120/204/57 +f 147/205/58 148/1252/3 151/206/3 +f 172/208/48 126/228/48 124/209/60 +f 121/150/23 118/152/25 119/198/55 +f 152/207/59 151/206/3 141/211/3 +f 147/205/58 152/207/59 117/178/42 +f 167/213/62 121/1253/62 132/214/63 +f 143/216/64 154/192/53 118/152/25 +f 138/184/1 137/186/49 139/203/1 +f 117/178/42 152/207/59 139/212/61 +f 170/210/60 124/209/60 121/217/62 +f 156/220/65 155/1254/65 160/221/65 +f 160/221/65 159/1255/65 158/1256/65 +f 158/1256/65 157/219/65 160/221/65 +f 136/222/66 134/188/50 133/187/50 +f 153/193/2 154/192/53 143/216/64 +f 160/224/67 155/1257/68 168/225/68 +f 174/227/5 128/351/5 126/228/48 +f 146/229/2 144/200/2 150/194/54 +f 140/195/3 142/1258/3 148/231/3 +f 157/232/70 171/238/76 169/233/71 +f 119/172/6 150/1259/296 147/235/73 +f 158/237/75 173/240/75 171/238/76 +f 158/237/75 159/250/85 175/239/77 +f 167/241/78 164/276/97 184/242/79 +f 180/244/81 161/281/101 176/245/82 +f 184/247/1 183/295/109 181/248/48 +f 159/250/85 160/224/67 177/226/69 +f 196/251/86 190/268/3 192/252/3 +f 194/254/2 188/1260/2 186/255/2 +f 172/257/88 182/319/113 180/244/81 +f 156/234/72 169/233/71 168/258/68 +f 178/215/63 132/214/63 130/260/37 +f 179/262/89 162/271/37 161/263/90 +f 162/265/91 179/1261/297 173/266/92 +f 190/268/6 186/255/6 188/269/6 +f 162/271/37 166/297/111 165/272/6 +f 171/273/94 181/290/108 183/274/95 +f 164/276/97 165/289/107 196/277/86 +f 169/275/96 183/274/95 163/279/99 +f 161/281/101 165/289/107 178/282/102 +f 163/279/99 198/286/104 193/283/87 +f 187/285/2 197/310/2 198/286/104 +f 164/276/97 200/278/98 189/288/106 +f 165/289/107 164/276/97 167/241/78 +f 182/249/84 181/248/48 179/262/89 +f 173/266/92 179/1261/297 181/290/108 +f 206/291/3 257/321/3 258/292/3 +f 184/247/1 189/1262/56 185/294/1 +f 193/256/5 186/255/5 190/268/5 +f 193/296/110 196/1263/296 165/272/6 +f 204/298/6 210/311/6 211/299/6 +f 163/279/99 183/274/95 185/287/105 +f 166/284/103 162/265/91 175/267/93 +f 189/288/106 200/278/98 199/302/3 +f 207/304/1 212/314/1 209/305/1 +f 205/307/5 212/314/5 211/299/5 +f 200/278/98 196/277/86 195/309/3 +f 197/310/2 194/1264/2 193/283/87 +f 210/311/3 204/1265/3 203/312/3 +f 208/313/2 211/299/2 212/314/2 +f 205/316/6 258/292/6 255/317/6 +f 170/243/80 184/242/79 182/319/113 +f 202/320/1 256/326/1 257/321/1 +f 202/323/5 206/308/5 211/299/5 +f 201/324/5 209/305/5 212/314/5 +f 201/325/2 255/317/2 256/326/2 +f 229/329/6 220/1266/6 218/1267/6 +f 218/1267/6 224/330/6 229/329/6 +f 224/330/6 225/1268/6 230/328/6 +f 225/1268/6 228/1269/6 230/328/6 +f 273/333/3 263/1270/3 275/331/3 +f 263/1270/3 265/1271/3 275/331/3 +f 265/1271/3 267/1272/3 275/331/3 +f 267/1272/3 269/1273/3 275/331/3 +f 269/1273/3 271/1274/3 275/331/3 +f 224/334/114 218/1275/3 217/335/3 +f 201/324/5 202/323/5 210/311/5 +f 225/337/115 224/334/114 222/336/114 +f 222/340/1 217/1276/1 219/1277/1 +f 219/1277/1 226/341/1 222/340/1 +f 226/341/1 227/1278/1 223/339/1 +f 227/1278/1 221/1279/1 223/339/1 +f 220/342/2 229/370/116 226/343/116 +f 214/345/117 213/1280/117 259/346/117 +f 163/279/99 166/284/103 177/301/112 +f 237/348/3 242/426/3 254/349/3 +f 176/261/37 130/260/37 128/351/5 +f 185/294/1 189/1262/56 191/352/1 +f 221/354/5 227/369/118 230/355/118 +f 277/357/119 274/379/120 273/358/120 +f 282/360/122 281/438/122 280/361/122 +f 239/363/123 240/391/5 234/364/5 +f 277/366/2 281/1281/2 282/367/2 +f 227/369/118 226/343/116 229/370/116 +f 268/372/2 266/1282/2 278/368/2 +f 266/1282/2 264/1283/2 278/368/2 +f 264/1283/2 274/1284/2 278/368/2 +f 274/1284/2 277/366/2 278/368/2 +f 278/368/2 272/1285/298 270/371/2 +f 266/373/124 268/432/125 267/374/125 +f 228/356/5 225/337/115 223/338/115 +f 286/376/126 288/1286/127 287/377/127 +f 274/379/120 264/430/128 263/380/128 +f 270/381/129 272/435/130 271/382/130 +f 278/384/131 282/360/131 279/362/132 +f 237/348/3 245/350/3 250/386/3 +f 240/388/3 239/433/3 251/389/3 +f 240/391/5 241/395/133 235/392/133 +f 240/388/3 252/390/3 253/393/3 +f 241/395/133 242/401/134 236/396/134 +f 213/397/135 216/1287/135 262/398/135 +f 238/399/136 239/363/123 233/365/123 +f 242/401/134 237/1288/62 231/402/62 +f 249/403/134 244/1289/62 245/404/62 +f 214/406/5 215/427/5 257/321/5 +f 214/407/137 260/347/137 261/408/138 +f 237/410/62 238/399/136 232/400/136 +f 247/412/5 248/417/133 253/413/133 +f 246/415/123 247/412/5 252/414/5 +f 248/417/133 249/403/134 254/405/134 +f 246/420/2 243/1290/2 248/418/2 +f 243/1290/2 244/1291/2 248/418/2 +f 244/1291/2 249/1292/2 248/418/2 +f 261/408/5 260/347/5 259/346/5 +f 213/421/5 255/317/5 258/292/5 +f 244/423/62 243/434/136 250/424/136 +f 241/394/3 253/393/3 254/349/3 +f 216/422/5 258/292/5 257/321/5 +f 215/428/139 261/408/139 262/398/139 +f 264/430/128 266/1293/124 265/431/124 +f 268/432/125 270/381/129 269/383/129 +f 238/387/3 250/386/3 251/389/3 +f 243/434/136 246/415/123 251/416/123 +f 213/421/5 214/406/5 256/326/5 +f 272/435/140 278/384/140 275/385/140 +f 284/436/141 286/376/126 285/378/126 +f 276/359/121 280/361/142 281/438/142 +f 276/332/3 275/331/3 279/439/3 +f 293/443/3 283/1294/3 295/441/3 +f 283/1294/3 285/1295/3 295/441/3 +f 285/1295/3 287/1296/3 295/441/3 +f 287/1296/3 289/1297/3 295/441/3 +f 289/1297/3 291/1298/3 295/441/3 +f 288/444/127 290/449/143 289/445/143 +f 294/447/144 284/436/141 283/437/141 +f 290/449/143 292/456/145 291/450/145 +f 288/452/2 286/1299/2 298/453/2 +f 286/1299/2 284/1300/2 298/453/2 +f 284/1300/2 294/1301/2 298/453/2 +f 294/1301/2 297/465/2 298/453/2 +f 298/453/2 292/1302/2 290/451/2 +f 297/454/146 294/447/144 293/448/144 +f 292/456/147 298/463/147 295/457/148 +f 296/442/3 295/441/3 299/458/3 +f 302/460/149 301/464/149 300/461/149 +f 298/463/150 302/460/150 299/462/150 +f 296/455/146 300/461/151 301/464/151 +f 297/465/2 301/1303/2 302/466/2 +f 304/467/152 306/1304/153 305/468/153 +f 313/472/3 303/1305/3 315/470/3 +f 303/1305/3 305/1306/3 315/470/3 +f 305/1306/3 307/1307/3 315/470/3 +f 307/1307/3 309/1308/3 315/470/3 +f 309/1308/3 311/1309/3 315/470/3 +f 314/473/154 304/467/152 303/469/152 +f 306/475/153 308/481/156 307/476/156 +f 310/478/157 312/487/158 311/479/158 +f 308/481/156 310/478/157 309/480/157 +f 308/483/2 306/1310/2 318/484/2 +f 306/1310/2 304/1311/2 318/484/2 +f 304/1311/2 314/1312/2 318/484/2 +f 314/1312/2 317/496/2 318/484/2 +f 318/484/2 312/1313/2 310/482/2 +f 317/485/159 314/473/154 313/474/155 +f 312/487/160 318/494/160 315/488/160 +f 316/471/3 315/470/3 319/489/3 +f 322/491/161 321/495/161 320/492/161 +f 318/494/162 322/491/162 319/493/162 +f 316/486/159 320/492/299 321/495/163 +f 317/496/2 321/1314/2 322/497/2 +f 324/498/164 326/506/165 325/499/165 +f 333/503/3 323/1315/3 335/501/3 +f 323/1315/3 325/1316/3 335/501/3 +f 325/1316/3 327/1317/3 335/501/3 +f 327/1317/3 329/1318/3 335/501/3 +f 329/1318/3 331/1319/3 335/501/3 +f 334/504/166 324/498/164 323/500/164 +f 326/506/165 328/1320/167 327/507/167 +f 330/508/168 332/518/300 331/509/169 +f 328/511/167 330/508/168 329/510/168 +f 328/514/2 326/1321/2 338/515/2 +f 326/1321/2 324/1322/2 338/515/2 +f 324/1322/2 334/1323/2 338/515/2 +f 334/1323/2 337/527/2 338/515/2 +f 338/515/2 332/1324/2 330/513/2 +f 337/516/170 334/504/166 333/505/166 +f 332/518/171 338/525/171 335/519/171 +f 336/502/3 335/501/3 339/520/3 +f 342/522/172 341/526/172 340/523/172 +f 338/525/173 342/522/173 339/524/173 +f 336/517/170 340/523/174 341/526/174 +f 337/527/2 341/1325/2 342/528/2 +f 713/529/175 714/1141/175 690/530/175 +f 719/532/8 695/1326/8 707/533/8 +f 719/532/175 720/1105/175 696/535/175 +f 722/537/176 698/1327/176 686/538/176 +f 724/540/176 700/1328/176 688/541/176 +f 703/543/8 727/1071/8 715/544/8 +f 362/546/2 347/1329/2 5/547/2 +f 398/549/3 397/559/3 55/550/3 +f 717/552/175 718/1103/175 694/553/175 +f 709/33/175 710/539/175 686/555/175 +f 687/557/175 711/1114/175 712/542/175 +f 397/559/3 396/1133/3 54/560/3 +f 715/544/175 716/1096/175 692/561/175 +f 345/563/1 697/1330/1 685/564/1 +f 32/56/5 29/16/5 53/566/5 +f 2/567/5 6/1331/5 26/568/5 +f 47/102/5 36/103/5 33/29/5 +f 28/64/5 9/1332/5 19/570/5 +f 30/101/2 35/1238/2 38/42/2 +f 434/571/2 433/671/2 430/572/2 +f 411/574/6 410/1187/6 377/575/6 +f 358/577/7 351/1333/7 352/578/7 +f 362/580/62 363/641/62 385/581/62 +f 350/583/3 391/1334/3 382/584/3 +f 416/586/177 421/1180/177 422/587/177 +f 378/589/2 375/1335/2 374/590/2 +f 372/592/62 396/596/62 397/593/62 +f 371/595/62 395/1083/62 396/596/62 +f 352/597/62 353/1189/62 346/1336/62 +f 346/1336/62 347/598/62 352/597/62 +f 347/598/62 356/669/62 354/599/62 +f 382/584/3 391/1334/3 392/600/3 +f 374/590/2 375/1335/2 376/602/2 +f 386/604/3 387/619/3 388/605/3 +f 432/607/62 433/671/62 428/608/62 +f 384/610/62 383/1186/62 365/611/62 +f 455/613/69 456/650/77 473/614/85 +f 369/594/62 397/593/62 398/616/62 +f 383/618/3 390/1177/3 387/619/3 +f 372/620/2 377/1337/2 378/589/2 +f 404/621/178 401/1207/178 402/622/178 +f 435/624/62 436/1195/62 437/625/62 +f 431/627/1 434/571/1 429/628/1 +f 438/626/3 437/625/3 428/630/3 +f 385/606/3 388/605/3 359/632/3 +f 360/634/10 354/1144/10 355/635/10 +f 413/637/62 408/645/62 409/638/62 +f 386/640/62 385/581/62 363/641/62 +f 381/601/3 392/600/3 389/643/3 +f 408/645/177 413/637/177 414/646/177 +f 435/624/6 438/626/6 427/648/6 +f 456/650/77 451/1338/75 464/651/75 +f 445/652/3 439/1339/3 440/1340/3 +f 440/1340/3 441/653/3 445/652/3 +f 441/653/3 446/1341/3 447/654/3 +f 469/655/179 475/1342/301 477/656/180 +f 444/660/2 443/1343/2 449/1344/2 +f 443/1343/2 442/1345/2 449/1344/2 +f 449/1344/2 450/658/2 444/660/2 +f 366/612/62 367/1122/62 381/661/62 +f 377/575/62 380/1203/62 387/662/62 +f 343/663/62 345/1346/62 393/664/62 +f 425/666/3 426/1347/3 432/607/3 +f 373/603/2 376/602/2 349/667/2 +f 433/671/6 432/607/6 426/672/6 +f 407/647/1 414/646/1 389/674/1 +f 439/676/1 442/687/1 443/677/1 +f 454/679/68 469/695/68 467/680/72 +f 467/657/80 477/656/180 479/682/181 +f 449/684/182 445/1348/182 447/685/183 +f 439/676/62 445/1348/182 449/684/182 +f 458/688/184 462/794/218 461/689/6 +f 452/692/186 451/1349/186 456/693/186 +f 456/693/186 455/1350/186 454/1351/186 +f 454/1351/186 453/691/186 456/693/186 +f 433/671/62 434/571/62 427/694/62 +f 454/679/68 455/613/69 471/615/67 +f 453/681/71 467/680/72 465/696/70 +f 452/697/76 465/696/70 464/698/75 +f 458/700/187 475/1342/301 469/655/179 +f 476/702/188 457/723/198 472/703/112 +f 463/705/92 460/711/191 480/706/189 +f 459/708/190 462/728/200 473/709/82 +f 465/683/88 479/682/181 459/708/190 +f 460/711/191 461/734/201 492/712/192 +f 496/713/193 492/712/192 491/714/2 +f 480/716/1 479/756/208 477/717/194 +f 466/707/94 480/706/189 478/719/196 +f 468/720/96 478/719/196 476/702/188 +f 475/721/197 458/688/184 457/690/185 +f 457/723/198 461/734/201 474/724/93 +f 483/725/1 481/755/1 485/726/199 +f 462/728/200 458/700/187 471/701/102 +f 488/729/6 486/733/6 482/730/6 +f 492/732/62 489/784/62 482/730/62 +f 461/734/201 460/711/191 463/705/92 +f 466/735/202 468/781/194 514/736/194 +f 493/738/3 490/1352/3 489/739/203 +f 474/741/205 463/1353/5 509/742/5 +f 460/711/191 496/713/193 485/744/206 +f 459/708/190 494/740/204 489/739/203 +f 483/745/3 493/738/3 494/740/204 +f 492/732/192 486/733/2 488/747/2 +f 478/718/195 477/717/194 475/721/197 +f 485/744/206 496/713/193 495/715/2 +f 502/750/22 519/778/11 510/751/19 +f 463/753/5 466/735/202 512/737/202 +f 480/716/1 485/726/199 481/755/1 +f 502/759/209 497/1354/209 498/1355/209 +f 498/1355/209 499/1356/209 502/759/209 +f 499/1356/209 500/757/209 502/759/209 +f 510/760/19 511/769/20 498/761/18 +f 513/763/29 515/1357/17 500/764/17 +f 518/766/41 503/813/226 522/767/210 +f 511/769/20 513/763/29 499/765/31 +f 534/770/3 532/807/3 538/771/211 +f 500/764/17 515/1357/17 517/773/13 +f 459/708/190 479/682/181 481/746/207 +f 509/775/212 512/833/35 526/776/213 +f 501/774/12 517/773/13 519/778/11 +f 472/779/184 474/741/205 520/743/205 +f 468/781/194 470/913/62 516/782/62 +f 490/783/3 484/1358/3 482/730/3 +f 528/785/2 530/1359/2 536/786/2 +f 514/788/52 516/768/43 522/767/210 +f 526/790/1 524/816/229 523/791/194 +f 489/793/73 492/1360/302 461/689/6 +f 507/795/6 508/844/234 504/796/184 +f 506/777/214 542/919/253 538/798/211 +f 511/800/51 510/847/34 505/801/221 +f 515/803/23 521/815/228 504/804/223 +f 530/806/6 528/785/6 532/807/6 +f 509/775/212 506/777/214 507/799/220 +f 540/810/224 539/842/2 529/811/2 +f 520/809/40 507/799/220 503/813/226 +f 515/803/23 513/825/44 523/814/227 +f 524/816/229 522/821/230 521/817/230 +f 600/818/3 599/854/3 548/819/3 +f 503/797/219 504/796/184 521/817/230 +f 535/822/215 540/810/224 505/801/221 +f 531/824/232 542/919/253 506/777/214 +f 513/825/44 511/800/51 525/802/222 +f 551/826/1 554/836/1 549/827/1 +f 517/805/46 504/804/223 508/823/231 +f 553/830/6 552/872/6 546/831/6 +f 512/833/35 514/788/52 524/789/216 +f 544/834/62 552/872/62 553/830/62 +f 554/836/2 553/830/2 550/837/2 +f 541/839/3 542/919/253 531/824/232 +f 553/830/62 554/836/62 547/841/62 +f 535/822/215 536/1361/2 539/842/2 +f 507/795/6 538/1362/302 535/843/110 +f 526/790/1 525/792/217 527/845/1 +f 505/801/221 540/810/224 527/812/225 +f 519/829/233 508/823/231 505/801/221 +f 598/848/2 597/873/2 543/849/2 +f 559/851/3 560/1363/3 566/852/235 +f 599/854/1 598/848/1 544/855/1 +f 561/858/1 559/1364/1 564/859/1 +f 564/859/1 565/1365/1 568/857/1 +f 565/1365/1 563/1366/1 568/857/1 +f 563/1366/1 569/1367/1 568/857/1 +f 560/861/6 562/1368/6 571/862/6 +f 571/862/6 572/1369/6 570/1370/6 +f 570/1370/6 567/1371/6 571/862/6 +f 567/1371/6 566/860/6 571/862/6 +f 532/807/62 528/785/62 535/787/62 +f 607/864/3 605/1372/3 617/865/3 +f 605/1372/3 615/1373/3 617/865/3 +f 615/1373/3 618/976/3 617/865/3 +f 617/865/3 613/1374/3 611/1375/3 +f 611/1375/3 609/863/3 617/865/3 +f 564/853/235 566/852/235 567/866/236 +f 579/868/3 587/1376/3 596/869/3 +f 545/871/3 546/1377/3 552/872/3 +f 597/873/6 600/818/6 547/874/6 +f 568/876/237 571/903/237 562/877/2 +f 556/879/238 602/1378/238 601/880/238 +f 543/882/62 551/826/62 552/872/62 +f 554/836/62 551/826/62 543/882/62 +f 615/883/239 616/909/239 619/884/240 +f 576/886/62 582/939/62 581/887/136 +f 624/889/2 623/1379/2 619/890/2 +f 533/892/1 531/846/199 527/845/1 +f 572/894/242 569/904/242 563/895/62 +f 629/897/243 630/1380/243 628/898/244 +f 609/900/245 610/986/245 608/901/246 +f 571/903/237 568/876/237 569/904/242 +f 613/905/247 614/987/247 612/906/248 +f 605/908/249 606/994/249 616/909/239 +f 621/910/250 624/917/251 620/911/251 +f 470/913/62 472/779/184 518/780/184 +f 606/915/2 608/1381/2 620/891/2 +f 608/1381/2 610/1382/2 620/891/2 +f 610/1382/2 612/1383/2 620/891/2 +f 612/1383/2 614/1384/298 620/891/2 +f 620/891/2 619/890/2 616/914/2 +f 565/867/236 567/866/236 570/896/62 +f 622/916/252 623/988/252 624/917/252 +f 537/918/3 538/798/211 542/919/253 +f 592/920/3 587/1376/3 579/868/3 +f 575/888/136 581/887/136 580/922/123 +f 642/924/254 643/949/254 644/925/254 +f 573/927/5 579/1385/5 584/928/133 +f 595/930/3 594/1386/3 582/931/3 +f 582/931/3 594/1386/3 593/933/3 +f 601/880/255 604/979/255 558/935/255 +f 578/929/133 584/928/133 583/937/134 +f 577/938/134 583/937/134 582/939/62 +f 647/940/256 648/1387/256 646/941/257 +f 626/944/2 628/1388/2 640/945/2 +f 628/1388/2 630/1389/2 640/945/2 +f 630/1389/2 632/1390/2 640/945/2 +f 632/1390/2 634/1391/2 640/945/2 +f 640/945/2 639/999/2 636/943/2 +f 637/946/258 640/1000/259 634/947/259 +f 643/949/260 642/924/260 638/950/261 +f 596/952/133 591/956/133 590/953/134 +f 587/955/5 586/1392/5 591/956/133 +f 595/954/134 590/953/134 589/957/62 +f 574/923/123 580/922/123 579/959/5 +f 556/961/62 598/848/62 599/854/62 +f 586/965/2 585/1393/2 590/963/2 +f 585/1393/2 588/1394/2 590/963/2 +f 588/1394/2 589/1395/2 590/963/2 +f 594/958/62 589/957/62 588/966/136 +f 603/968/262 602/1378/263 556/969/263 +f 631/971/264 632/991/264 630/972/243 +f 627/899/244 628/898/244 626/974/265 +f 618/976/3 622/1396/3 621/977/3 +f 593/933/3 592/920/3 580/921/3 +f 599/854/62 600/818/62 558/978/62 +f 604/979/266 603/968/266 557/980/266 +f 596/869/3 595/930/3 583/932/3 +f 592/982/123 585/992/123 586/983/5 +f 600/818/62 597/873/62 555/985/62 +f 601/880/62 602/1378/62 603/968/62 +f 611/907/248 612/906/248 610/986/245 +f 555/985/62 597/873/62 598/848/62 +f 617/912/267 620/911/267 614/987/267 +f 623/988/268 622/916/268 618/885/241 +f 625/975/265 626/974/265 636/989/269 +f 633/948/270 634/947/270 632/991/264 +f 593/967/136 588/966/136 585/992/123 +f 607/993/246 608/1397/246 606/994/249 +f 627/996/3 625/1398/3 637/997/3 +f 625/1398/3 635/1399/3 637/997/3 +f 635/1399/3 638/1001/3 637/997/3 +f 637/997/3 633/1400/3 631/1401/3 +f 631/1401/3 629/995/3 637/997/3 +f 635/990/269 636/989/269 639/951/261 +f 644/998/2 643/1402/2 639/999/2 +f 641/926/271 644/925/271 640/1000/271 +f 638/1001/3 642/1403/3 641/1002/3 +f 649/1003/272 650/1014/272 648/1004/256 +f 647/1007/3 645/1404/3 657/1008/3 +f 645/1404/3 655/1405/3 657/1008/3 +f 655/1405/3 658/1025/3 657/1008/3 +f 657/1008/3 653/1406/3 651/1407/3 +f 651/1407/3 649/1006/3 657/1008/3 +f 653/1009/273 654/1021/273 652/1010/274 +f 645/942/257 646/941/257 656/1012/275 +f 651/1011/274 652/1010/274 650/1014/272 +f 646/1016/2 648/1408/2 660/1017/2 +f 648/1408/2 650/1409/2 660/1017/2 +f 650/1409/2 652/1410/2 660/1017/2 +f 652/1410/2 654/1411/2 660/1017/2 +f 660/1017/2 659/1030/2 656/1015/2 +f 655/1013/276 656/1012/275 659/1018/277 +f 657/1020/278 660/1024/278 654/1021/278 +f 663/1022/279 662/1027/303 658/1019/277 +f 661/1023/280 664/1028/280 660/1024/280 +f 658/1025/3 662/1412/3 661/1026/3 +f 662/1027/281 663/1022/281 664/1028/281 +f 664/1029/2 663/1413/2 659/1030/2 +f 669/1031/282 670/1414/282 668/1032/283 +f 673/1034/284 674/1052/304 672/1035/285 +f 667/1033/283 668/1032/283 666/1037/286 +f 665/1038/286 666/1037/286 676/1039/287 +f 667/1042/3 665/1415/3 677/1043/3 +f 665/1415/3 675/1416/3 677/1043/3 +f 675/1416/3 678/1056/3 677/1043/3 +f 677/1043/3 673/1417/3 671/1418/3 +f 671/1418/3 669/1041/3 677/1043/3 +f 671/1036/285 672/1035/285 670/1044/282 +f 666/1047/2 668/1419/2 680/1048/2 +f 668/1419/2 670/1420/2 680/1048/2 +f 670/1420/2 672/1421/2 680/1048/2 +f 672/1421/2 674/1422/2 680/1048/2 +f 680/1048/2 679/1061/2 676/1046/2 +f 675/1040/287 676/1039/287 679/1049/288 +f 677/1051/289 680/1055/289 674/1052/289 +f 683/1053/290 682/1058/290 678/1050/288 +f 681/1054/291 684/1059/291 680/1055/291 +f 678/1056/3 682/1423/3 681/1057/3 +f 682/1058/292 683/1053/292 684/1059/292 +f 684/1060/2 683/1424/2 679/1061/2 +f 702/1062/293 726/1139/293 725/1063/293 +f 708/1065/293 732/1104/293 731/534/293 +f 706/1067/293 730/1215/293 729/1068/293 +f 704/1070/293 728/1094/293 727/1071/293 +f 698/1073/293 722/537/293 721/1074/293 +f 699/1076/293 700/1425/293 724/540/293 +f 370/617/62 398/616/62 361/1078/62 +f 380/1080/2 377/1337/2 372/620/2 +f 374/1082/62 394/1208/62 395/1083/62 +f 375/1084/62 378/675/62 389/674/62 +f 368/1086/62 348/1426/62 344/1087/62 +f 400/1089/177 405/1206/177 406/1090/177 +f 64/1092/4 63/46/4 58/1093/4 +f 728/1094/176 704/1427/176 692/1095/176 +f 358/1097/2 379/1428/2 370/1098/2 +f 365/1100/2 364/1183/2 22/1101/2 +f 729/1068/1 730/1215/1 718/1103/1 +f 732/1104/176 708/1/176 696/3/176 +f 366/1106/2 365/1100/2 23/1102/2 +f 348/1108/2 368/1137/2 26/1109/2 +f 394/1111/3 393/1120/3 51/1112/3 +f 711/1114/8 687/1429/8 699/1115/8 +f 704/1116/1 705/1430/1 693/1117/1 +f 434/571/62 431/627/62 423/1119/62 +f 393/1120/3 345/1431/3 3/1121/3 +f 382/1088/62 381/661/62 367/1122/62 +f 379/1123/62 358/1198/62 359/1124/62 +f 706/1126/1 707/1432/1 695/1127/1 +f 395/1129/3 394/1111/3 52/1113/3 +f 363/1131/2 362/546/2 20/548/2 +f 396/1133/3 395/1129/3 53/1130/3 +f 702/1134/1 703/1433/1 691/1135/1 +f 368/1137/2 367/1168/2 25/1138/2 +f 726/1139/176 702/1434/176 690/1140/176 +f 701/1142/8 725/1063/8 713/529/8 +f 360/634/1 357/579/1 352/578/1 +f 700/1145/1 701/1435/1 689/1146/1 +f 43/105/5 21/104/5 20/1148/5 +f 2/1150/6 8/1436/6 7/1151/6 +f 721/1074/1 722/537/1 710/539/1 +f 49/1153/5 34/1170/5 7/1154/5 +f 81/119/5 89/90/5 92/5/5 +f 10/20/1 15/22/1 18/80/1 +f 18/1159/5 15/1437/5 16/1160/5 +f 17/1161/5 16/1160/5 37/51/5 +f 705/1162/8 729/1068/8 717/552/8 +f 11/1157/5 4/24/5 19/1164/5 +f 698/1165/1 699/1438/1 687/1166/1 +f 727/1071/1 728/1094/1 716/1096/1 +f 731/534/1 732/1104/1 720/1105/1 +f 367/1168/2 366/1106/2 24/1107/2 +f 361/1169/3 398/549/3 56/551/3 +f 49/1153/1 80/10/1 73/12/1 +f 48/108/3 47/99/3 42/1171/3 +f 75/1172/5 74/11/5 79/1173/5 +f 40/569/5 26/568/5 25/1174/5 +f 28/43/2 37/1233/2 16/1175/2 +f 723/1077/1 724/540/1 712/542/1 +f 384/644/3 389/643/3 390/1177/3 +f 415/588/1 422/587/1 391/1178/1 +f 421/1180/62 416/586/62 417/1181/62 +f 364/1183/2 363/1131/2 21/1132/2 +f 419/1184/178 420/1182/178 417/1181/178 +f 364/642/62 365/611/62 383/1186/62 +f 412/639/178 409/638/178 410/1187/178 +f 361/1188/62 346/1336/62 353/1189/62 +f 356/669/62 347/598/62 362/1191/62 +f 343/1194/62 344/1439/62 703/1440/62 +f 344/1439/62 348/1441/62 708/1442/62 +f 708/1442/62 707/1443/62 344/1439/62 +f 707/1443/62 706/1444/62 344/1439/62 +f 344/1439/62 706/1444/62 705/1445/62 +f 697/1446/62 345/1447/62 343/1194/62 +f 700/1193/62 699/1448/62 343/1194/62 +f 699/1448/62 698/1449/62 343/1194/62 +f 698/1449/62 697/1446/62 343/1194/62 +f 705/1445/62 704/1450/62 344/1439/62 +f 704/1450/62 703/1440/62 344/1439/62 +f 703/1440/62 702/1451/62 343/1194/62 +f 702/1451/62 701/1192/62 343/1194/62 +f 436/1195/2 435/624/2 423/1196/2 +f 358/1198/62 357/1452/62 360/1199/62 +f 725/1063/1 726/1139/1 714/1141/1 +f 349/1200/6 350/1453/6 344/1201/6 +f 399/1091/1 406/1090/1 387/662/1 +f 437/625/1 436/1195/1 424/1204/1 +f 405/1206/62 400/1089/62 401/1207/62 +f 370/1098/2 379/1428/2 380/1080/2 +f 373/665/62 393/664/62 394/1208/62 +f 403/623/6 402/622/6 379/1123/6 +f 450/686/183 447/685/183 446/1209/294 +f 423/1119/62 431/627/62 432/607/62 +f 349/1211/62 376/1179/62 391/1178/62 +f 448/1210/295 446/1209/294 441/1213/6 +f 419/1184/6 418/1185/6 375/1084/6 +f 730/1215/176 706/1454/176 694/1216/176 +o base +v -2.500000 1.000000 0.125000 +v 2.500000 1.000000 0.125000 +v -2.500000 1.000000 -0.125000 +v 2.500000 1.000000 -0.125000 +v -2.163461 1.000000 0.125000 +v -1.682692 1.000000 0.125000 +v -1.394231 1.000000 0.125000 +v -0.913461 1.000000 0.125000 +v -0.625000 1.000000 0.125000 +v -0.144231 1.000000 0.125000 +v 0.144231 1.000000 0.125000 +v 0.625000 1.000000 0.125000 +v 0.913462 1.000000 0.125000 +v 1.394231 1.000000 0.125000 +v 1.682693 1.000000 0.125000 +v 2.163462 1.000000 0.125000 +v -2.163461 1.000000 -0.125000 +v -1.682692 1.000000 -0.125000 +v -1.394231 1.000000 -0.125000 +v -0.913461 1.000000 -0.125000 +v -0.625000 1.000000 -0.125000 +v -0.144231 1.000000 -0.125000 +v 0.144231 1.000000 -0.125000 +v 0.625000 1.000000 -0.125000 +v 0.913462 1.000000 -0.125000 +v 1.394231 1.000000 -0.125000 +v 1.682693 1.000000 -0.125000 +v 2.163462 1.000000 -0.125000 +v -2.043269 0.875000 0.093750 +v -1.802885 0.875000 0.093750 +v -1.274038 0.875000 0.093750 +v -1.033654 0.875000 0.093750 +v -0.504808 0.875000 0.093750 +v -0.264423 0.875000 0.093750 +v 0.264423 0.875000 0.093750 +v 0.504808 0.875000 0.093750 +v 1.033654 0.875000 0.093750 +v 1.274039 0.875000 0.093750 +v 1.802885 0.875000 0.093750 +v 2.043269 0.875000 0.093750 +v -2.043269 0.875000 -0.093750 +v -1.802885 0.875000 -0.093750 +v -1.274038 0.875000 -0.093750 +v -1.033654 0.875000 -0.093750 +v -0.504808 0.875000 -0.093750 +v -0.264423 0.875000 -0.093750 +v 0.264423 0.875000 -0.093750 +v 0.504808 0.875000 -0.093750 +v 1.033654 0.875000 -0.093750 +v 1.274039 0.875000 -0.093750 +v 1.802885 0.875000 -0.093750 +v 2.043269 0.875000 -0.093750 +v -2.500000 1.000000 0.500000 +v -2.500000 1.000000 -0.500000 +v 2.500000 1.000000 0.500000 +v 2.500000 1.000000 -0.500000 +v -2.500000 0.000000 0.500000 +v -2.500000 0.000000 -0.500000 +v 2.500000 0.000000 0.500000 +v 2.500000 0.000000 -0.500000 +v 2.163462 1.062500 0.125000 +v 2.500000 1.062500 0.125000 +v 2.163462 1.062500 -0.125000 +v 2.500000 1.062500 -0.125000 +v -2.500000 1.062500 0.125000 +v -2.163461 1.062500 0.125000 +v -1.682692 1.062500 0.125000 +v -1.394231 1.062500 0.125000 +v -0.913461 1.062500 0.125000 +v -0.625000 1.062500 0.125000 +v -0.144231 1.062500 0.125000 +v 0.144231 1.062500 0.125000 +v 0.625000 1.062500 0.125000 +v 0.913462 1.062500 0.125000 +v 1.394231 1.062500 0.125000 +v 1.682693 1.062500 0.125000 +v -2.500000 1.062500 -0.125000 +v -2.163461 1.062500 -0.125000 +v -1.682692 1.062500 -0.125000 +v -1.394231 1.062500 -0.125000 +v -0.913461 1.062500 -0.125000 +v -0.625000 1.062500 -0.125000 +v -0.144231 1.062500 -0.125000 +v 0.144231 1.062500 -0.125000 +v 0.625000 1.062500 -0.125000 +v 0.913462 1.062500 -0.125000 +v 1.394231 1.062500 -0.125000 +v 1.682693 1.062500 -0.125000 +v -2.500000 1.062500 0.437500 +v 2.500000 1.062500 0.437500 +v 2.500000 1.062500 -0.437500 +v -2.500000 1.062500 -0.437500 +v -2.500000 4.499997 0.125000 +v 2.500000 4.499997 0.125000 +v -2.500000 4.499997 -0.125000 +v 2.500000 4.499997 -0.125000 +v 2.500000 4.999997 -0.125000 +v -2.500000 4.999997 -0.125000 +v 2.500000 4.999997 0.125000 +v -2.500000 4.999997 0.125000 +v 2.500000 4.584002 -0.341924 +v -2.500000 4.584002 -0.341924 +v 2.500000 4.584002 0.341924 +v -2.500000 4.584002 0.341924 +v 2.500000 4.999997 -0.341924 +v -2.500000 4.999997 -0.341924 +v 2.500000 4.999997 0.341924 +v -2.500000 4.999997 0.341924 +vt 0.995551 0.832453 +vt 0.903538 0.372388 +vt 0.995551 0.372388 +vt 0.004449 0.740332 +vt 0.464514 0.832345 +vt 0.004449 0.832345 +vt 0.894639 0.464401 +vt 0.434574 0.372388 +vt 0.894639 0.372388 +vt 0.883297 0.104396 +vt 0.914263 0.127399 +vt 0.883297 0.127399 +vt 0.241266 0.930716 +vt 0.264269 0.904173 +vt 0.264269 0.930716 +vt 0.221219 0.879319 +vt 0.209364 0.846141 +vt 0.221219 0.857200 +vt 0.909839 0.192797 +vt 0.883297 0.169794 +vt 0.909839 0.169794 +vt 0.485268 0.852835 +vt 0.505396 0.836879 +vt 0.502521 0.852835 +vt 0.473413 0.926350 +vt 0.496416 0.899808 +vt 0.496416 0.926350 +vt 0.195568 0.841244 +vt 0.162390 0.853100 +vt 0.151331 0.841244 +vt 0.318069 0.895275 +vt 0.338196 0.879319 +vt 0.341072 0.895275 +vt 0.514376 0.886013 +vt 0.514376 0.841776 +vt 0.499255 0.651053 +vt 0.525797 0.674057 +vt 0.499255 0.674057 +vt 0.370806 0.879319 +vt 0.358951 0.846141 +vt 0.370806 0.857200 +vt 0.502521 0.874953 +vt 0.288334 0.879319 +vt 0.271082 0.857200 +vt 0.288334 0.857200 +vt 0.238472 0.879319 +vt 0.238472 0.857200 +vt 0.320944 0.857200 +vt 0.338196 0.857200 +vt 0.184509 0.853100 +vt 0.162390 0.870352 +vt 0.388059 0.879319 +vt 0.388059 0.857200 +vt 0.146434 0.850224 +vt 0.482393 0.890909 +vt 0.505396 0.890909 +vt 0.300190 0.890378 +vt 0.300190 0.846141 +vt 0.200465 0.873228 +vt 0.200465 0.850224 +vt 0.399914 0.846141 +vt 0.291209 0.841244 +vt 0.320944 0.879319 +vt 0.309088 0.846141 +vt 0.390934 0.841244 +vt 0.268206 0.895275 +vt 0.291209 0.895275 +vt 0.250327 0.890378 +vt 0.250327 0.846141 +vt 0.367931 0.895275 +vt 0.390934 0.895275 +vt 0.485268 0.874953 +vt 0.473413 0.841776 +vt 0.241347 0.841244 +vt 0.218344 0.841244 +vt 0.184509 0.870352 +vt 0.151331 0.882208 +vt 0.218344 0.895275 +vt 0.350052 0.890378 +vt 0.350052 0.846141 +vt 0.271082 0.879319 +vt 0.259226 0.846141 +vt 0.341072 0.841244 +vt 0.318069 0.841244 +vt 0.894636 0.700521 +vt 0.888604 0.654741 +vt 0.894521 0.654738 +vt 0.841467 0.867572 +vt 0.836035 0.841924 +vt 0.841594 0.841952 +vt 0.522258 0.605178 +vt 0.499255 0.574212 +vt 0.522258 0.574212 +vt 0.209364 0.930716 +vt 0.232367 0.904173 +vt 0.232367 0.930716 +vt 0.469079 0.565313 +vt 0.434574 0.565313 +vt 0.434574 0.473300 +vt 0.535833 0.096462 +vt 0.501328 0.004449 +vt 0.593341 0.004449 +vt 0.836363 0.773181 +vt 0.836233 0.799101 +vt 0.807869 0.939936 +vt 0.888458 0.773182 +vt 0.888328 0.799102 +vt 0.859964 0.939936 +vt 0.841825 0.799136 +vt 0.894639 0.729014 +vt 0.888578 0.700511 +vt 0.842044 0.773229 +vt 0.836608 0.729026 +vt 0.842544 0.729014 +vt 0.836709 0.473339 +vt 0.807494 0.479148 +vt 0.801659 0.473300 +vt 0.894139 0.773229 +vt 0.888703 0.729026 +vt 0.836483 0.700510 +vt 0.842541 0.700521 +vt 0.835565 0.945607 +vt 0.835591 0.940063 +vt 0.893920 0.799137 +vt 0.836509 0.654740 +vt 0.842426 0.654737 +vt 0.888803 0.473339 +vt 0.859588 0.479148 +vt 0.853753 0.473300 +vt 0.893689 0.841952 +vt 0.836534 0.627597 +vt 0.842402 0.627598 +vt 0.887660 0.945608 +vt 0.887686 0.940063 +vt 0.893562 0.867572 +vt 0.888130 0.841925 +vt 0.836583 0.582562 +vt 0.842433 0.582567 +vt 0.893366 0.910233 +vt 0.888013 0.867546 +vt 0.836614 0.555582 +vt 0.842458 0.555588 +vt 0.842508 0.510644 +vt 0.836702 0.479181 +vt 0.842544 0.479188 +vt 0.836666 0.510638 +vt 0.894603 0.510644 +vt 0.888797 0.479181 +vt 0.894639 0.479188 +vt 0.893230 0.940089 +vt 0.887821 0.910207 +vt 0.894553 0.555588 +vt 0.888761 0.510638 +vt 0.799348 0.479155 +vt 0.799723 0.939943 +vt 0.894528 0.582568 +vt 0.888709 0.555582 +vt 0.841135 0.940088 +vt 0.835726 0.910207 +vt 0.841271 0.910232 +vt 0.851443 0.479155 +vt 0.851818 0.939943 +vt 0.894497 0.627599 +vt 0.888678 0.582562 +vt 0.835918 0.867546 +vt 0.888628 0.627597 +vt 0.233016 0.948456 +vt 0.251643 0.984178 +vt 0.233016 0.991391 +vt 0.014324 0.956233 +vt 0.443677 0.977701 +vt 0.014324 0.977701 +vt 0.082167 0.993341 +vt 0.103634 0.950405 +vt 0.103634 0.993341 +vt 0.211548 0.991391 +vt 0.122262 0.986127 +vt 0.032779 0.982491 +vt 0.462133 0.946769 +vt 0.462133 0.982491 +vt 0.476898 0.940769 +vt 0.047544 0.976491 +vt 0.047544 0.940769 +vt 0.503969 0.961382 +vt 0.074613 0.981357 +vt 0.074613 0.961382 +vt 0.443677 0.937606 +vt 0.443677 0.956233 +vt 0.483594 0.956906 +vt 0.054238 0.976881 +vt 0.054238 0.956906 +vt 0.211548 0.948456 +vt 0.192921 0.984178 +vt 0.192921 0.948456 +vt 0.082167 0.950405 +vt 0.063539 0.986127 +vt 0.063539 0.950405 +vt 0.014324 0.996329 +vt 0.903538 0.832453 +vt 0.464514 0.740333 +vt 0.434574 0.464401 +vt 0.914263 0.104396 +vt 0.241266 0.904173 +vt 0.209364 0.890378 +vt 0.883297 0.192797 +vt 0.482393 0.836879 +vt 0.473413 0.899808 +vt 0.525797 0.651053 +vt 0.358951 0.890378 +vt 0.146434 0.873228 +vt 0.399914 0.890378 +vt 0.268206 0.841244 +vt 0.309088 0.890378 +vt 0.367931 0.841244 +vt 0.473413 0.886012 +vt 0.195568 0.882208 +vt 0.241347 0.895275 +vt 0.259226 0.890378 +vt 0.499255 0.605178 +vt 0.209364 0.904173 +vt 0.526587 0.473300 +vt 0.492082 0.565313 +vt 0.526587 0.565313 +vt 0.593341 0.096462 +vt 0.558837 0.096462 +vt 0.501328 0.096462 +vt 0.802299 0.945455 +vt 0.854395 0.945455 +vt 0.251643 0.948456 +vt 0.122262 0.950405 +vt 0.032779 0.946769 +vt 0.476898 0.976491 +vt 0.503969 0.981358 +vt 0.014324 0.937606 +vt 0.483594 0.976881 +vt 0.443677 0.996329 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.2425 0.9701 +vn 0.7208 0.6931 0.0000 +vn 0.0000 0.2425 -0.9701 +vn -0.7208 0.6931 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.8321 0.3922 0.3922 +vn 0.4472 0.6325 0.6325 +vn -0.7071 0.0000 -0.7071 +vn -0.8321 0.3922 0.3922 +vn -0.7071 0.0000 0.7071 +vn -0.8321 0.3922 -0.3922 +vn -0.4472 0.6325 -0.6325 +vn 0.7071 0.0000 0.7071 +vn 0.8321 0.3922 -0.3922 +vn -0.4472 0.6325 0.6325 +vn 0.4472 0.6325 -0.6325 +vn 0.8944 0.4472 0.0000 +vn 0.5993 -0.4524 0.6604 +vn 0.8700 -0.4597 0.1780 +vn -0.8700 -0.4597 0.1780 +vn -0.8944 0.4472 0.0000 +vn -0.8700 -0.4597 -0.1780 +vn 0.8700 -0.4597 -0.1780 +vn -0.5993 -0.4524 -0.6604 +vn -0.5774 0.5774 0.5774 +vn -0.5993 -0.4524 0.6604 +vn 0.5774 0.5774 -0.5774 +vn 0.5993 -0.4524 -0.6604 +vn -0.5774 0.5774 -0.5774 +vn 0.5774 0.5774 0.5774 +s 1 +f 792/1455/305 789/1456/305 790/1457/305 +f 792/1458/306 786/1459/306 788/1460/306 +f 789/1461/307 787/1462/307 785/1463/307 +f 736/1464/308 748/1465/308 734/1466/308 +f 755/1467/308 742/1468/308 743/1469/308 +f 778/1470/309 753/1471/309 777/1472/309 +f 738/1473/308 751/1474/308 750/1475/308 +f 773/1476/310 737/1477/310 761/1478/310 +f 753/1479/308 740/1480/308 741/1481/308 +f 746/1482/311 769/1483/311 745/1484/311 +f 756/1485/312 768/1486/312 744/1487/312 +f 738/1488/311 761/1478/311 737/1489/311 +f 759/1490/308 746/1491/308 747/1492/308 +f 784/1493/309 759/1494/309 783/1495/309 +f 762/1496/308 773/1476/308 761/1478/308 +f 764/1497/308 775/1498/308 763/1499/308 +f 766/1500/308 777/1472/308 765/1501/308 +f 768/1486/308 779/1502/308 767/1503/308 +f 770/1504/308 781/1505/308 769/1483/308 +f 772/1506/308 783/1495/308 771/1507/308 +f 781/1505/310 745/1508/310 769/1483/310 +f 750/1509/312 762/1496/312 738/1510/312 +f 740/1511/311 763/1499/311 739/1512/311 +f 758/1513/312 770/1504/312 746/1514/312 +f 747/1515/311 772/1506/311 771/1507/311 +f 775/1498/310 739/1516/310 763/1499/310 +f 780/1517/309 755/1518/309 779/1502/309 +f 783/1495/310 747/1519/310 771/1507/310 +f 752/1520/312 764/1497/312 740/1521/312 +f 742/1522/311 765/1501/311 741/1523/311 +f 760/1524/312 772/1506/312 748/1525/312 +f 774/1526/309 749/1527/309 773/1476/309 +f 741/1528/310 777/1472/310 753/1529/310 +f 782/1530/309 757/1531/309 781/1505/309 +f 766/1500/312 754/1532/312 778/1470/312 +f 744/1533/311 767/1503/311 743/1534/311 +f 776/1535/309 751/1536/309 775/1498/309 +f 743/1537/310 779/1502/310 755/1538/310 +f 754/1539/307 814/1540/307 753/1541/307 +f 738/1542/306 800/1543/306 739/1544/306 +f 737/1545/308 735/1546/308 733/1547/308 +f 757/1548/308 744/1549/308 745/1550/308 +f 734/1551/313 787/1552/313 791/1553/313 +f 735/1554/314 790/1555/314 789/1556/314 +f 802/1557/308 801/1558/308 821/1559/308 +f 817/1560/308 818/1561/308 823/1562/308 +f 739/1544/306 801/1558/306 740/1563/306 +f 755/1564/307 815/1565/307 754/1539/307 +f 741/1566/306 803/1567/306 742/1568/306 +f 734/1569/315 822/1570/316 787/1571/317 +f 756/1572/307 816/1573/307 755/1564/307 +f 742/1568/306 804/1574/306 743/1575/306 +f 733/1576/318 821/1559/319 797/1577/318 +f 757/1578/307 817/1560/307 756/1572/307 +f 743/1575/306 805/1579/306 744/1580/306 +f 735/1581/320 824/1582/321 786/1583/322 +f 758/1584/307 818/1561/307 757/1578/307 +f 744/1580/306 806/1585/306 745/1586/306 +f 736/1587/323 823/1562/324 796/1588/323 +f 759/1589/307 819/1590/307 758/1584/307 +f 745/1586/306 807/1591/306 746/1592/306 +f 760/1593/307 820/1594/307 759/1589/307 +f 746/1592/306 808/1595/306 747/1596/306 +f 748/1597/306 794/1598/315 734/1599/315 +f 747/1596/306 793/1600/306 748/1597/306 +f 740/1563/306 802/1557/306 741/1566/306 +f 749/1601/307 809/1602/320 735/1603/320 +f 736/1604/323 795/1605/307 760/1593/307 +f 750/1606/307 810/1607/307 749/1601/307 +f 787/1608/317 821/1559/319 785/1609/325 +f 751/1610/307 811/1611/307 750/1606/307 +f 733/1612/318 798/1613/306 737/1614/306 +f 786/1615/322 823/1562/324 788/1616/326 +f 752/1617/307 812/1618/307 751/1610/307 +f 737/1614/306 799/1619/306 738/1542/306 +f 753/1541/307 813/1620/307 752/1617/307 +f 831/1621/327 835/1622/328 826/1623/329 +f 829/1624/308 832/1625/308 831/1626/308 +f 825/1627/330 830/1628/331 827/1629/332 +f 828/1630/333 831/1621/327 826/1623/329 +f 830/1628/331 834/1631/334 827/1629/332 +f 835/1632/328 840/1633/335 836/1634/336 +f 834/1635/334 837/1636/337 833/1637/338 +f 827/1638/332 833/1639/338 828/1640/333 +f 829/1624/327 838/1641/339 830/1642/331 +f 826/1643/329 836/1644/336 825/1645/330 +f 829/1646/327 833/1647/338 837/1648/337 +f 832/1649/331 836/1650/336 840/1651/335 +f 832/1625/331 839/1652/340 831/1626/327 +f 792/1455/305 791/1653/305 789/1456/305 +f 792/1458/306 790/1654/306 786/1459/306 +f 789/1461/307 791/1655/307 787/1462/307 +f 736/1464/308 760/1656/308 748/1465/308 +f 755/1467/308 754/1657/308 742/1468/308 +f 778/1470/309 754/1658/309 753/1471/309 +f 738/1473/308 739/1659/308 751/1474/308 +f 773/1476/310 749/1660/310 737/1477/310 +f 753/1479/308 752/1661/308 740/1480/308 +f 746/1482/311 770/1504/311 769/1483/311 +f 756/1485/312 780/1517/312 768/1486/312 +f 738/1488/311 762/1496/311 761/1478/311 +f 759/1490/308 758/1662/308 746/1491/308 +f 784/1493/309 760/1663/309 759/1494/309 +f 762/1496/308 774/1526/308 773/1476/308 +f 764/1497/308 776/1535/308 775/1498/308 +f 766/1500/308 778/1470/308 777/1472/308 +f 768/1486/308 780/1517/308 779/1502/308 +f 770/1504/308 782/1530/308 781/1505/308 +f 772/1506/308 784/1493/308 783/1495/308 +f 781/1505/310 757/1664/310 745/1508/310 +f 750/1509/312 774/1526/312 762/1496/312 +f 740/1511/311 764/1497/311 763/1499/311 +f 758/1513/312 782/1530/312 770/1504/312 +f 747/1515/311 748/1665/311 772/1506/311 +f 775/1498/310 751/1666/310 739/1516/310 +f 780/1517/309 756/1667/309 755/1518/309 +f 783/1495/310 759/1668/310 747/1519/310 +f 752/1520/312 776/1535/312 764/1497/312 +f 742/1522/311 766/1500/311 765/1501/311 +f 760/1524/312 784/1493/312 772/1506/312 +f 774/1526/309 750/1669/309 749/1527/309 +f 741/1528/310 765/1501/310 777/1472/310 +f 782/1530/309 758/1670/309 757/1531/309 +f 766/1500/312 742/1671/312 754/1532/312 +f 744/1533/311 768/1486/311 767/1503/311 +f 776/1535/309 752/1672/309 751/1536/309 +f 743/1537/310 767/1503/310 779/1502/310 +f 754/1539/307 815/1565/307 814/1540/307 +f 738/1542/306 799/1619/306 800/1543/306 +f 737/1545/308 749/1673/308 735/1546/308 +f 757/1548/308 756/1674/308 744/1549/308 +f 791/1553/313 792/1675/313 736/1676/313 +f 792/1675/313 788/1677/313 736/1676/313 +f 736/1676/313 734/1551/313 791/1553/313 +f 789/1556/314 785/1678/314 733/1679/314 +f 735/1554/314 786/1680/314 790/1555/314 +f 789/1556/314 733/1679/314 735/1554/314 +f 821/1559/308 822/1570/308 804/1574/308 +f 822/1570/308 794/1598/308 793/1600/308 +f 793/1600/308 808/1595/308 822/1570/308 +f 808/1595/308 807/1591/308 822/1570/308 +f 822/1570/308 807/1591/308 806/1585/308 +f 798/1613/308 797/1577/308 821/1559/308 +f 801/1558/308 800/1543/308 821/1559/308 +f 800/1543/308 799/1619/308 821/1559/308 +f 799/1619/308 798/1613/308 821/1559/308 +f 806/1585/308 805/1579/308 822/1570/308 +f 805/1579/308 804/1574/308 822/1570/308 +f 804/1574/308 803/1567/308 821/1559/308 +f 803/1567/308 802/1557/308 821/1559/308 +f 823/1562/308 824/1582/308 815/1565/308 +f 824/1582/308 809/1602/308 810/1607/308 +f 810/1607/308 811/1611/308 824/1582/308 +f 811/1611/308 812/1618/308 824/1582/308 +f 824/1582/308 812/1618/308 813/1620/308 +f 795/1605/308 796/1588/308 823/1562/308 +f 818/1561/308 819/1590/308 823/1562/308 +f 819/1590/308 820/1594/308 823/1562/308 +f 820/1594/308 795/1605/308 823/1562/308 +f 813/1620/308 814/1540/308 824/1582/308 +f 814/1540/308 815/1565/308 824/1582/308 +f 815/1565/308 816/1573/308 823/1562/308 +f 816/1573/308 817/1560/308 823/1562/308 +f 739/1544/306 800/1543/306 801/1558/306 +f 755/1564/307 816/1573/307 815/1565/307 +f 741/1566/306 802/1557/306 803/1567/306 +f 734/1569/315 794/1598/315 822/1570/316 +f 756/1572/307 817/1560/307 816/1573/307 +f 742/1568/306 803/1567/306 804/1574/306 +f 733/1576/318 785/1681/325 821/1559/319 +f 757/1578/307 818/1561/307 817/1560/307 +f 743/1575/306 804/1574/306 805/1579/306 +f 735/1581/320 809/1602/320 824/1582/321 +f 758/1584/307 819/1590/307 818/1561/307 +f 744/1580/306 805/1579/306 806/1585/306 +f 736/1587/323 788/1682/326 823/1562/324 +f 759/1589/307 820/1594/307 819/1590/307 +f 745/1586/306 806/1585/306 807/1591/306 +f 760/1593/307 795/1605/307 820/1594/307 +f 746/1592/306 807/1591/306 808/1595/306 +f 748/1597/306 793/1600/306 794/1598/315 +f 747/1596/306 808/1595/306 793/1600/306 +f 740/1563/306 801/1558/306 802/1557/306 +f 749/1601/307 810/1607/307 809/1602/320 +f 736/1604/323 796/1588/323 795/1605/307 +f 750/1606/307 811/1611/307 810/1607/307 +f 787/1608/317 822/1570/316 821/1559/319 +f 751/1610/307 812/1618/307 811/1611/307 +f 733/1612/318 797/1577/318 798/1613/306 +f 786/1615/322 824/1582/321 823/1562/324 +f 752/1617/307 813/1620/307 812/1618/307 +f 737/1614/306 798/1613/306 799/1619/306 +f 753/1541/307 814/1540/307 813/1620/307 +f 831/1621/327 839/1683/340 835/1622/328 +f 829/1624/308 830/1642/308 832/1625/308 +f 825/1627/330 832/1649/331 830/1628/331 +f 828/1630/333 829/1646/327 831/1621/327 +f 830/1628/331 838/1684/339 834/1631/334 +f 835/1632/328 839/1685/340 840/1633/335 +f 834/1635/334 838/1686/339 837/1636/337 +f 827/1638/332 834/1687/334 833/1639/338 +f 829/1624/327 837/1688/337 838/1641/339 +f 826/1643/329 835/1689/328 836/1644/336 +f 829/1646/327 828/1630/333 833/1647/338 +f 832/1649/331 825/1627/330 836/1650/336 +f 832/1625/331 840/1690/335 839/1652/340 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index d2c6248c7..484174398 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -67,7 +67,10 @@ "door.sliding_door_shut": {"category": "block", "sounds": [{"name": "block/door/sliding_door_shut", "stream": false}]}, "door.sliding_door_opened": {"category": "block", "sounds": [{"name": "block/door/sliding_door_opened", "stream": false}]}, "door.sliding_door_opening": {"category": "block", "sounds": [{"name": "block/door/sliding_door_opening", "stream": false}]}, - + + "door.garage_move": { "category": "block", "sounds": [{"name": "block/door/garage_move", "stream": false}] }, + "door.garage_stop": { "category": "block", "sounds": [{"name": "block/door/garage_stop", "stream": false}] }, + "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, "item.geiger1": {"category": "player", "sounds": [{"name": "tool/geiger1", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/door/garage_move.ogg b/src/main/resources/assets/hbm/sounds/block/door/garage_move.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9a8c707a14166fef0827bd7beb9d24262ba9b5d5 GIT binary patch literal 12368 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/doors/secure_access_door.png b/src/main/resources/assets/hbm/textures/models/doors/secure_access_door.png new file mode 100644 index 0000000000000000000000000000000000000000..108b7cefdb4a1da3fb65156d580e5584c8252b1d GIT binary patch literal 123860 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
  • Ingjp>iyBo&R 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 literal 0 HcmV?d00001 From 51ee74a4187626190f9fec0dbbc3c70fccb233a3 Mon Sep 17 00:00:00 2001 From: KoblizekXD Date: Thu, 23 Nov 2023 16:47:09 +0100 Subject: [PATCH 128/207] feat: WE LOVE DOORS --- src/main/java/com/hbm/blocks/ModBlocks.java | 20 + src/main/java/com/hbm/lib/Library.java | 14 +- .../java/com/hbm/main/ResourceManager.java | 19 + .../hbm/render/item/ItemRenderLibrary.java | 77 + .../java/com/hbm/tileentity/DoorDecl.java | 556 ++ .../hbm/models/doors/large_vehicle_door.obj | 6312 ++++++++++++++ .../hbm/models/doors/qe_containment.obj | 1601 ++++ .../hbm/models/doors/qe_sliding_door.obj | 2312 +++++ .../hbm/models/doors/round_airlock_door.obj | 3160 +++++++ .../hbm/models/doors/sliding_seal_door.obj | 2522 ++++++ .../assets/hbm/models/doors/water_door.obj | 7570 +++++++++++++++++ src/main/resources/assets/hbm/sounds.json | 8 + .../sounds/block/door/door_wgh_big_start.ogg | Bin 0 -> 69062 bytes .../sounds/block/door/door_wgh_big_stop.ogg | Bin 0 -> 24339 bytes .../hbm/sounds/block/door/doormove2.ogg | Bin 0 -> 15160 bytes .../hbm/sounds/block/door/doorshut_1.ogg | Bin 0 -> 8560 bytes .../sounds/block/door/doorslide_opened1.ogg | Bin 0 -> 13499 bytes .../sounds/block/door/doorslide_opening1.ogg | Bin 0 -> 14886 bytes .../assets/hbm/sounds/block/door/lever1.ogg | Bin 0 -> 10690 bytes .../hbm/sounds/block/door/metal_stop1.ogg | Bin 0 -> 16388 bytes .../models/doors/large_vehicle_door.png | Bin 0 -> 87580 bytes .../textures/models/doors/qe_containment.png | Bin 0 -> 131559 bytes .../models/doors/qe_containment_decal.png | Bin 0 -> 314 bytes .../textures/models/doors/qe_sliding_door.png | Bin 0 -> 18673 bytes .../models/doors/round_airlock_door.png | Bin 0 -> 136009 bytes .../models/doors/sliding_seal_door.png | Bin 0 -> 76202 bytes .../hbm/textures/models/doors/water_door.png | Bin 0 -> 106397 bytes 27 files changed, 24170 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/assets/hbm/models/doors/large_vehicle_door.obj create mode 100644 src/main/resources/assets/hbm/models/doors/qe_containment.obj create mode 100644 src/main/resources/assets/hbm/models/doors/qe_sliding_door.obj create mode 100644 src/main/resources/assets/hbm/models/doors/round_airlock_door.obj create mode 100644 src/main/resources/assets/hbm/models/doors/sliding_seal_door.obj create mode 100644 src/main/resources/assets/hbm/models/doors/water_door.obj create mode 100644 src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_start.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_stop.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/doormove2.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/doorshut_1.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/doorslide_opened1.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/doorslide_opening1.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/lever1.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/door/metal_stop1.ogg create mode 100644 src/main/resources/assets/hbm/textures/models/doors/large_vehicle_door.png create mode 100644 src/main/resources/assets/hbm/textures/models/doors/qe_containment.png create mode 100644 src/main/resources/assets/hbm/textures/models/doors/qe_containment_decal.png create mode 100644 src/main/resources/assets/hbm/textures/models/doors/qe_sliding_door.png create mode 100644 src/main/resources/assets/hbm/textures/models/doors/round_airlock_door.png create mode 100644 src/main/resources/assets/hbm/textures/models/doors/sliding_seal_door.png create mode 100644 src/main/resources/assets/hbm/textures/models/doors/water_door.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 42c1948df..98442c95e 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -606,7 +606,15 @@ public class ModBlocks { public static Block sliding_blast_door; public static Block fire_door; public static Block transition_seal; + + // 1.12.2 Doors public static Block secure_access_door; + public static Block large_vehicle_door; + public static Block qe_containment; + public static Block qe_sliding_door; + public static Block round_airlock_door; + public static Block sliding_seal_door; + public static Block water_door; public static Block door_metal; public static Block door_office; @@ -2144,6 +2152,12 @@ public class ModBlocks { fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); secure_access_door = new BlockDoorGeneric(Material.iron, DoorDecl.SECURE_ACCESS_DOOR).setBlockName("secure_access_door").setHardness(200.0F).setResistance(20000.0F).setCreativeTab(MainRegistry.machineTab); + large_vehicle_door = new BlockDoorGeneric(Material.iron, DoorDecl.LARGE_VEHICLE_DOOR).setBlockName("large_vehicle_door").setHardness(100.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); + qe_containment = new BlockDoorGeneric(Material.iron, DoorDecl.QE_CONTAINMENT).setBlockName("qe_containment").setHardness(100.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); + qe_sliding_door = new BlockDoorGeneric(Material.iron, DoorDecl.QE_SLIDING).setBlockName("qe_sliding_door").setHardness(100.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); + round_airlock_door = new BlockDoorGeneric(Material.iron, DoorDecl.ROUND_AIRLOCK_DOOR).setBlockName("round_airlock_door").setHardness(100.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); + sliding_seal_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDING_SEAL_DOOR).setBlockName("sliding_seal_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); + water_door = new BlockDoorGeneric(Material.iron, DoorDecl.WATER_DOOR).setBlockName("water_door").setHardness(50.0F).setResistance(500.0F).setCreativeTab(MainRegistry.machineTab); door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal"); door_office = new BlockModDoor(Material.iron).setBlockName("door_office").setHardness(10.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":door_office"); @@ -3078,6 +3092,12 @@ public class ModBlocks { GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName()); GameRegistry.registerBlock(door_bunker, door_bunker.getUnlocalizedName()); GameRegistry.registerBlock(secure_access_door, secure_access_door.getUnlocalizedName()); + GameRegistry.registerBlock(large_vehicle_door, large_vehicle_door.getUnlocalizedName()); + GameRegistry.registerBlock(qe_containment, qe_containment.getUnlocalizedName()); + GameRegistry.registerBlock(qe_sliding_door, qe_sliding_door.getUnlocalizedName()); + GameRegistry.registerBlock(round_airlock_door, round_airlock_door.getUnlocalizedName()); + GameRegistry.registerBlock(sliding_seal_door, sliding_seal_door.getUnlocalizedName()); + GameRegistry.registerBlock(water_door, water_door.getUnlocalizedName()); //Crates register(crate_iron); diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 28416dc2e..3cd331dae 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -33,6 +33,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; @@ -528,7 +529,18 @@ public class Library { return flag; } - + + // Added for sake of doors + // Original: Drillgon200: https://thebookofshaders.com/glossary/?search=smoothstep + public static double smoothstep(double t, double edge0, double edge1){ + t = MathHelper.clamp_double((t - edge0) / (edge1 - edge0), 0.0, 1.0); + return t * t * (3.0 - 2.0 * t); + } + public static float smoothstep(float t, float edge0, float edge1){ + t = MathHelper.clamp_float((t - edge0) / (edge1 - edge0), 0.0F, 1.0F); + return t * t * (3.0F - 2.0F * t); + } + public static boolean isObstructed(World world, double x, double y, double z, double a, double b, double c) { MovingObjectPosition pos = world.rayTraceBlocks(Vec3.createVectorHelper(x, y, z), Vec3.createVectorHelper(a, b, c)); return pos != null; diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 53c2ca946..8c1040c1c 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -323,6 +323,25 @@ public class ResourceManager { public static final ResourceLocation secure_access_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/secure_access_door.png"); public static WavefrontObjDisplayList secure_access_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/secure_access_door.obj"))); + public static final ResourceLocation water_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/water_door.png"); + public static WavefrontObjDisplayList water_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/water_door.obj"))); + + public static final ResourceLocation sliding_seal_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_seal_door.png"); + public static WavefrontObjDisplayList sliding_seal_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/sliding_seal_door.obj"))); + + public static final ResourceLocation round_airlock_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/round_airlock_door.png"); + public static WavefrontObjDisplayList round_airlock_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/round_airlock_door.obj"))); + + public static final ResourceLocation qe_sliding_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/qe_sliding_door.png"); + public static WavefrontObjDisplayList qe_sliding_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/qe_sliding_door.obj"))); + + public static final ResourceLocation qe_containment_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/qe_containment.png"); + public static WavefrontObjDisplayList qe_containment = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/qe_containment.obj"))); + + public static final ResourceLocation large_vehicle_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/large_vehicle_door.png"); + public static WavefrontObjDisplayList large_vehicle_door = new WavefrontObjDisplayList(new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/large_vehicle_door.obj"))); + public static final ResourceLocation qe_containment_decal = new ResourceLocation(RefStrings.MODID, "textures/models/doors/qe_containment_decal.png"); + //Lantern public static final IModelCustom lantern = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/trinkets/lantern.obj")); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index c9fb21d52..0c3a421c2 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -739,6 +739,83 @@ public class ItemRenderLibrary { GL11.glShadeModel(GL11.GL_FLAT); } }); + + renderers.put(Item.getItemFromBlock(ModBlocks.large_vehicle_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(1.8, 1.8, 1.8); + } + public void renderCommon() { + bindTexture(ResourceManager.large_vehicle_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.large_vehicle_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + renderers.put(Item.getItemFromBlock(ModBlocks.water_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(4, 4, 4); + } + public void renderCommon() { + bindTexture(ResourceManager.water_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.water_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + renderers.put(Item.getItemFromBlock(ModBlocks.qe_containment), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -3.5, 0); + GL11.glScaled(3.8, 3.8, 3.8); + } + public void renderCommon() { + bindTexture(ResourceManager.qe_containment_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.qe_containment.renderAllExcept("decal"); + bindTexture(ResourceManager.qe_containment_decal); + ResourceManager.qe_containment.renderPart("decal"); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + renderers.put(Item.getItemFromBlock(ModBlocks.qe_sliding_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -3.5, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + bindTexture(ResourceManager.qe_sliding_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.qe_sliding_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + + renderers.put(Item.getItemFromBlock(ModBlocks.round_airlock_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + bindTexture(ResourceManager.round_airlock_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.round_airlock_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); + + renderers.put(Item.getItemFromBlock(ModBlocks.sliding_seal_door), new ItemRenderBase(){ + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(7, 7, 7); + } + public void renderCommon() { + bindTexture(ResourceManager.sliding_seal_door_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.sliding_seal_door.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + }); renderers.put(Item.getItemFromBlock(ModBlocks.blast_door), new ItemRenderBase() { public void renderInventory() { diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index d6469e346..40e1c7047 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -2,6 +2,7 @@ package com.hbm.tileentity; import com.hbm.animloader.AnimatedModel; import com.hbm.animloader.Animation; +import com.hbm.lib.Library; import com.hbm.main.ResourceManager; import com.hbm.render.loader.WavefrontObjDisplayList; import com.hbm.sound.MovingSoundPlayerLoop; @@ -289,6 +290,88 @@ public abstract class DoorDecl { } }; + public static final DoorDecl SLIDING_SEAL_DOOR = new DoorDecl(){ + + @Override + public String getOpenSoundEnd() { + return "hbm:door.sliding_seal_stop"; + } + + @Override + public String getOpenSoundStart() { + return "hbm:door.sliding_seal_open"; + } + + public float getSoundVolume(){ + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(partName.startsWith("door")){ + set(trans, 0, 0, Library.smoothstep(getNormTime(openTicks), 0, 1)); + } else { + set(trans, 0, 0, 0); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][]{{0, 0, -1, 0.5001}}; + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.375, 0, 0); + }; + + @Override + public int timeToOpen() { + return 20; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(open){ + if(y == 0) + return AxisAlignedBB.getBoundingBox(0, 0, 1-0.25, 1, 0.125, 1); + return super.getBlockBound(x, y, z, open); + } else { + return AxisAlignedBB.getBoundingBox(0, 0, 1-0.25, 1, 1, 1); + } + }; + + @Override + public int[][] getDoorOpenRanges(){ + return new int[][]{{0, 0, 0, 1, 2, 2}}; + } + + @Override + public int[] getDimensions(){ + return new int[]{1, 0, 0, 0, 0, 0}; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName){ + return ResourceManager.sliding_seal_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.sliding_seal_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel(){ + return ResourceManager.sliding_seal_door; + } + }; + public static final DoorDecl SECURE_ACCESS_DOOR = new DoorDecl(){ @Override @@ -388,6 +471,479 @@ public abstract class DoorDecl { } }; + public static final DoorDecl ROUND_AIRLOCK_DOOR = new DoorDecl(){ + + @Override + public String getOpenSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.garage_move"; + } + + public float getSoundVolume(){ + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if("doorLeft".equals(partName)){ + set(trans, 0, 0, 1.5F*getNormTime(openTicks)); + } else if("doorRight".equals(partName)){ + set(trans, 0, 0, -1.5F*getNormTime(openTicks)); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0, 0, 0.5); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][]{{0.0, 0.0, 1.0, 2.0001}, {0.0, 0.0, -1.0, 2.0001}}; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return super.getBlockBound(x, y, z, open); + if(z == 1){ + return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1); + } else if(z == -2){ + return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.6, 1, 1); + } else if(y == 3){ + return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1); + } else if(y == 0){ + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1); + } + return super.getBlockBound(x, y, z, open); + }; + + @Override + public int timeToOpen() { + return 60; + }; + + @Override + public int[][] getDoorOpenRanges(){ + return new int[][]{{0, 0, 0, -2, 4, 2}, {0, 0, 0, 3, 4, 2}}; + } + + @Override + public int[] getDimensions() { + return new int[]{3, 0, 0, 0, 2, 1}; + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName){ + return ResourceManager.round_airlock_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.round_airlock_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel(){ + return ResourceManager.round_airlock_door; + } + }; + + public static final DoorDecl QE_SLIDING = new DoorDecl(){ + + @Override + public String getOpenSoundEnd() { + return "hbm:door.qe_sliding_opened"; + }; + @Override + public String getCloseSoundEnd() { + return "hbmsound:door.qe_sliding_shut"; + }; + @Override + public String getOpenSoundLoop() { + return "hbm:door.qe_sliding_opening"; + }; + + public float getSoundVolume(){ + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(partName.startsWith("left")){ + set(trans, 0, 0, 1*getNormTime(openTicks)); + } else { + set(trans, 0, 0, -1*getNormTime(openTicks)); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.4375, 0, 0.5); + }; + + @Override + public int timeToOpen() { + return 10; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(open){ + if(z == 0){ + return AxisAlignedBB.getBoundingBox(1-0.125, 0, 1-0.125, 1, 1, 1); + } else { + return AxisAlignedBB.getBoundingBox(0, 0, 1-0.125, 0.125, 1, 1); + } + } else { + return AxisAlignedBB.getBoundingBox(0, 0, 1-0.125, 1, 1, 1); + } + }; + + @Override + public int[][] getDoorOpenRanges(){ + return new int[][]{{0, 0, 0, 2, 2, 2}}; + } + + @Override + public int[] getDimensions(){ + return new int[]{1, 0, 0, 0, 1, 0}; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName){ + return ResourceManager.qe_sliding_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return getTextureForPart(partName); + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel(){ + return ResourceManager.qe_sliding_door; + } + + }; + + public static final DoorDecl QE_CONTAINMENT = new DoorDecl(){ + + @Override + public String getOpenSoundEnd() { + return "hbm:door.wgh_stop"; + }; + @Override + public String getOpenSoundLoop() { + return "hbm:door.wgh_start"; + }; + + @Override + public float getSoundVolume(){ + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(!partName.equals("frame")){ + set(trans, 0, 3*getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.25, 0, 0); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][]{{0, -1, 0, 3.0001}}; + }; + + @Override + public int timeToOpen() { + return 160; + }; + + @Override + public int[][] getDoorOpenRanges(){ + return new int[][]{{-1, 0, 0, 3, 3, 1}}; + } + + @Override + public int[] getDimensions(){ + return new int[]{2, 0, 0, 0, 1, 1}; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 1, 1); + if(y > 1) + return AxisAlignedBB.getBoundingBox(0, 0.5, 0.5, 1, 1, 1); + else if(y == 0) + return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 0.1, 1); + return super.getBlockBound(x, y, z, open); + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName){ + if(partName.equals("decal")) + return ResourceManager.qe_containment_decal; + return ResourceManager.qe_containment_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return getTextureForPart(partName); + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel(){ + return ResourceManager.qe_containment; + } + + }; + + public static final DoorDecl WATER_DOOR = new DoorDecl(){ + + @Override + public String getOpenSoundEnd() { + return "hbm:door.wgh_big_stop"; + }; + @Override + public String getOpenSoundLoop() { + return "hbm:door.wgh_big_start"; + }; + @Override + public String getOpenSoundStart() { + return "hbm:door.door.lever"; + }; + @Override + public String getCloseSoundStart() { + return null; + }; + @Override + public String getCloseSoundEnd() { + return "hbm:door.door.lever"; + }; + + @Override + public float getSoundVolume(){ + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if("bolt".equals(partName)){ + set(trans, 0, 0, 0.4F*Library.smoothstep(getNormTime(openTicks, 0, 30), 0, 1)); + } else { + set(trans, 0, 0, 0); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform(){ + GL11.glTranslated(0.375, 0, 0); + } + + @Override + @SideOnly(Side.CLIENT) + public void getOrigin(String partName, float[] orig) { + if("door".equals(partName) || "bolt".equals(partName)){ + set(orig, 0.125F, 1.5F, 1.18F); + return; + } else if("spinny_upper".equals(partName)){ + set(orig, 0.041499F, 2.43569F, -0.587849F); + return; + } else if("spinny_lower".equals(partName)){ + set(orig, 0.041499F, 0.571054F, -0.587849F); + return; + } + super.getOrigin(partName, orig); + }; + + @Override + @SideOnly(Side.CLIENT) + public void getRotation(String partName, float openTicks, float[] rot) { + if(partName.startsWith("spinny")){ + set(rot, Library.smoothstep(getNormTime(openTicks, 0, 30), 0, 1)*360, 0, 0); + return; + } else if("door".equals(partName) || "bolt".equals(partName)){ + set(rot, 0, Library.smoothstep(getNormTime(openTicks, 30, 60), 0, 1)*-134, 0); + return; + } + super.getRotation(partName, openTicks, rot); + }; + + @Override + @SideOnly(Side.CLIENT) + public boolean doesRender(String partName, boolean child) { + return child || !partName.startsWith("spinny"); + }; + + @Override + @SideOnly(Side.CLIENT) + public String[] getChildren(String partName) { + if("door".equals(partName)) + return new String[]{"spinny_lower", "spinny_upper"}; + return super.getChildren(partName); + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open){ + return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 1, 1); + } else if(y > 1) { + return AxisAlignedBB.getBoundingBox(0, 0.85, 0.75, 1, 1, 1); + } else if(y == 0){ + return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 0.15, 1); + } + return super.getBlockBound(x, y, z, open); + }; + + @Override + public int timeToOpen() { + return 60; + }; + + @Override + public int[][] getDoorOpenRanges(){ + return new int[][]{{1, 0, 0, -3, 3, 2}}; + } + + public float getDoorRangeOpenTime(int ticks, int idx) { + return getNormTime(ticks, 35, 40); + }; + + @Override + public int[] getDimensions(){ + return new int[]{2, 0, 0, 0, 1, 1}; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName){ + return ResourceManager.water_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.water_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel(){ + return ResourceManager.water_door; + } + + }; + + public static final DoorDecl LARGE_VEHICLE_DOOR = new DoorDecl(){ + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if("doorLeft".equals(partName)){ + set(trans, 0, 0, 3*getNormTime(openTicks)); + } else if("doorRight".equals(partName)){ + set(trans, 0, 0, -3*getNormTime(openTicks)); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + public String getOpenSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.garage_move"; + }; + + public float getSoundVolume(){ + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][]{{0.0, 0.0, 1.0, 3.50001}, {0.0, 0.0, -1.0, 3.50001}}; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return super.getBlockBound(x, y, z, open); + if(z == 3){ + return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1); + } else if(z == -3){ + return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.6, 1, 1); + } + return super.getBlockBound(x, y, z, open); + }; + + @Override + public int timeToOpen() { + return 60; + }; + + @Override + public int[][] getDoorOpenRanges(){ + return new int[][]{{0, 0, 0, -4, 6, 2}, {0, 0, 0, 4, 6, 2}}; + } + + @Override + public int[] getDimensions() { + return new int[]{5, 0, 0, 0, 3, 3}; + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName){ + return ResourceManager.large_vehicle_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.large_vehicle_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel(){ + return ResourceManager.large_vehicle_door; + } + + }; + //Format: x, y, z, tangent amount 1 (how long the door would be if it moved up), tangent amount 2 (door places blocks in this direction), axis (0-x, 1-y, 2-z) public abstract int[][] getDoorOpenRanges(); diff --git a/src/main/resources/assets/hbm/models/doors/large_vehicle_door.obj b/src/main/resources/assets/hbm/models/doors/large_vehicle_door.obj new file mode 100644 index 000000000..321a3e384 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/large_vehicle_door.obj @@ -0,0 +1,6312 @@ +# Blender v2.92.0 OBJ File: 'large_vehicle_door.blend' +# www.blender.org +o doorLeft +v 0.299220 0.487402 3.251414 +v 0.299220 5.590070 1.004025 +v 0.299220 5.128570 1.909768 +v 0.299220 4.409768 2.628571 +v 0.299220 3.503919 3.090124 +v 0.299220 2.496066 3.251015 +v 0.299220 5.679564 0.438986 +v 0.299220 0.487402 0.438985 +v 0.149610 5.900837 0.125000 +v 0.149610 0.054715 0.125000 +v 0.299220 0.054715 3.440433 +v 0.299220 2.511072 3.439998 +v 0.299220 3.563152 3.272047 +v 0.299220 4.522236 2.783369 +v 0.299220 5.283369 2.022236 +v 0.299220 5.772047 1.063152 +v 0.299220 5.900837 0.250000 +v 0.299220 0.054715 0.250000 +v 0.231315 0.487402 3.251414 +v 0.231315 2.496066 3.251015 +v 0.231315 3.503919 3.090124 +v 0.231315 4.409768 2.628571 +v 0.231315 5.128570 1.909768 +v 0.231315 5.590070 1.004025 +v 0.231315 5.679564 0.438986 +v 0.231315 0.487402 0.438985 +v 0.204275 1.917457 1.651271 +v 0.204275 2.047506 1.651271 +v 0.204275 1.917457 1.142414 +v 0.204275 2.047506 1.142414 +v 0.261126 1.933194 1.635535 +v 0.245389 1.917457 1.651271 +v 0.245389 2.047506 1.651271 +v 0.261126 2.031770 1.635535 +v 0.261126 1.933194 1.158151 +v 0.245389 1.917457 1.142414 +v 0.261126 2.031770 1.158151 +v 0.245389 2.047506 1.142414 +v 0.215124 3.126893 0.898361 +v 0.215124 3.628286 0.898361 +v 0.215124 3.126893 0.736489 +v 0.215124 3.628286 0.736489 +v 0.294289 3.126893 0.898361 +v 0.247374 3.628286 0.898361 +v 0.294289 3.126893 0.736489 +v 0.247374 3.628286 0.736489 +v 0.215124 3.447602 0.898361 +v 0.215124 3.447602 0.736489 +v 0.294289 3.447602 0.736489 +v 0.294289 3.447602 0.898361 +v 0.215124 3.126893 1.339800 +v 0.215124 3.628286 1.339800 +v 0.215124 3.126893 1.177929 +v 0.215124 3.628286 1.177929 +v 0.294289 3.126893 1.339800 +v 0.247374 3.628286 1.339800 +v 0.294289 3.126893 1.177929 +v 0.247374 3.628286 1.177929 +v 0.215124 3.447602 1.339800 +v 0.215124 3.447602 1.177929 +v 0.294289 3.447602 1.177929 +v 0.294289 3.447602 1.339800 +v 0.110842 1.775868 3.124604 +v 0.110842 2.305447 3.124604 +v 0.110842 1.775868 1.892389 +v 0.110842 2.305447 1.892389 +v 0.303721 1.835501 3.064971 +v 0.303721 2.245814 3.064971 +v 0.303721 1.835501 1.952022 +v 0.303721 2.245814 1.952022 +v 0.303721 2.305447 1.892389 +v 0.303721 1.775868 1.892389 +v 0.303721 1.775868 3.124604 +v 0.303721 2.305447 3.124604 +v 0.237602 2.245814 1.952022 +v 0.237602 1.835501 1.952022 +v 0.237602 1.835501 3.064971 +v 0.237602 2.245814 3.064971 +v 0.185097 0.938915 3.260309 +v 0.185097 1.140242 3.260309 +v 0.185097 0.938915 0.391829 +v 0.185097 1.140242 0.391829 +v 0.250002 0.938915 3.260309 +v 0.279439 0.968351 3.260309 +v 0.279439 1.110806 3.260309 +v 0.250002 1.140242 3.260309 +v 0.279439 0.968351 0.391829 +v 0.250002 0.938915 0.391829 +v 0.250002 1.140242 0.391829 +v 0.279439 1.110806 0.391829 +v 0.185097 1.623428 3.260309 +v 0.185097 1.824755 3.260309 +v 0.185097 1.623428 0.391829 +v 0.185097 1.824755 0.391829 +v 0.250002 1.623428 3.260309 +v 0.279439 1.652864 3.260309 +v 0.279439 1.795319 3.260309 +v 0.250002 1.824755 3.260309 +v 0.279439 1.652864 0.391829 +v 0.250002 1.623428 0.391829 +v 0.250002 1.824755 0.391829 +v 0.279439 1.795319 0.391829 +v 0.185097 2.307941 3.260309 +v 0.185097 2.509268 3.260309 +v 0.185097 2.307941 0.391829 +v 0.185097 2.509268 0.391829 +v 0.250002 2.307941 3.260309 +v 0.279439 2.337377 3.260309 +v 0.279439 2.479832 3.260309 +v 0.250002 2.509268 3.260309 +v 0.279439 2.337377 0.391829 +v 0.250002 2.307941 0.391829 +v 0.250002 2.509268 0.391829 +v 0.279439 2.479832 0.391829 +v 0.185097 2.992454 3.260309 +v 0.185097 3.193781 3.260309 +v 0.185097 2.992454 0.391829 +v 0.185097 3.193781 0.391829 +v 0.250002 2.992454 3.260309 +v 0.279439 3.021890 3.260309 +v 0.279439 3.164345 3.260309 +v 0.250002 3.193781 3.260309 +v 0.279439 3.021890 0.391829 +v 0.250002 2.992454 0.391829 +v 0.250002 3.193781 0.391829 +v 0.279439 3.164345 0.391829 +v 0.185097 3.676967 3.079826 +v 0.185097 3.878294 3.079826 +v 0.185097 3.676967 0.391829 +v 0.185097 3.878294 0.391829 +v 0.250002 3.676967 3.079826 +v 0.279439 3.706403 3.079826 +v 0.279439 3.848858 3.079826 +v 0.250002 3.878294 3.079826 +v 0.279439 3.706403 0.391829 +v 0.250002 3.676967 0.391829 +v 0.250002 3.878294 0.391829 +v 0.279439 3.848858 0.391829 +v 0.185097 4.361480 2.726382 +v 0.185097 4.562807 2.726382 +v 0.185097 4.361480 0.391829 +v 0.185097 4.562807 0.391829 +v 0.250002 4.361480 2.726382 +v 0.279439 4.390916 2.726382 +v 0.279439 4.533370 2.726382 +v 0.250002 4.562807 2.726382 +v 0.279439 4.390916 0.391829 +v 0.250002 4.361480 0.391829 +v 0.250002 4.562807 0.391829 +v 0.279439 4.533370 0.391829 +v 0.185097 5.045993 2.044939 +v 0.185097 5.247320 2.044939 +v 0.185097 5.045993 0.391829 +v 0.185097 5.247320 0.391829 +v 0.250002 5.045993 2.044939 +v 0.279439 5.075429 2.044939 +v 0.279439 5.217884 2.044939 +v 0.250002 5.247320 2.044939 +v 0.279439 5.075429 0.391829 +v 0.250002 5.045993 0.391829 +v 0.250002 5.247320 0.391829 +v 0.279439 5.217884 0.391829 +v 0.315590 0.554430 1.179831 +v 0.315590 0.554430 0.490474 +v 0.381347 0.554430 1.179831 +v 0.381347 0.554430 0.490474 +v 0.427845 0.600927 1.179831 +v 0.427845 0.600927 0.490474 +v 0.427845 0.666685 1.179831 +v 0.427845 0.666685 0.490474 +v 0.381347 0.713183 1.179831 +v 0.381347 0.713183 0.490474 +v 0.315590 0.713183 1.179831 +v 0.315590 0.713183 0.490474 +v 0.269092 0.666685 1.179831 +v 0.269092 0.666685 0.490474 +v 0.269092 0.600927 1.179831 +v 0.269092 0.600927 0.490474 +v 0.212011 0.554430 1.179831 +v 0.212011 0.554430 0.490474 +v 0.212011 0.713183 0.490474 +v 0.212011 0.713183 1.179831 +v 0.212011 0.666685 1.179831 +v 0.212011 0.666685 0.490474 +v 0.212011 0.600927 1.179831 +v 0.212011 0.600927 0.490474 +v 0.323809 0.574274 3.311587 +v 0.373128 0.574274 3.311587 +v 0.408001 0.609147 3.311587 +v 0.408001 0.658465 3.311587 +v 0.373128 0.693339 3.311587 +v 0.323809 0.693339 3.311587 +v 0.288936 0.658465 3.311587 +v 0.288936 0.609147 3.311587 +v 0.373127 0.574274 0.452471 +v 0.408000 0.609147 0.452471 +v 0.323808 0.574274 0.452471 +v 0.408000 0.658465 0.452471 +v 0.373127 0.693339 0.452471 +v 0.323808 0.693339 0.452471 +v 0.288935 0.658465 0.452471 +v 0.288935 0.609147 0.452471 +v 0.299220 0.790051 0.250000 +v 0.299220 5.165501 0.250000 +v 0.299220 1.519293 0.250000 +v 0.299220 2.248535 0.250000 +v 0.299220 2.977776 0.250000 +v 0.299220 3.707018 0.250000 +v 0.299220 4.436259 0.250000 +v 0.149610 5.165501 0.125000 +v 0.149610 0.790051 0.125000 +v 0.149610 4.436259 0.125000 +v 0.149610 3.707017 0.125000 +v 0.149610 2.977776 0.125000 +v 0.149610 2.248534 0.125000 +v 0.149610 1.519293 0.125000 +v 0.149610 0.054715 -0.125000 +v 0.299220 0.054715 -0.000000 +v 0.149610 0.790051 -0.125000 +v 0.149610 1.519293 -0.125000 +v 0.149610 2.248534 -0.125000 +v 0.149610 2.977776 -0.125000 +v 0.149610 3.707017 -0.125000 +v 0.149610 4.436259 -0.125000 +v 0.149610 5.165501 -0.125000 +v 0.299220 0.790051 -0.000000 +v 0.299220 1.519293 -0.000000 +v 0.299220 2.248535 -0.000000 +v 0.299220 2.977776 -0.000000 +v 0.299220 3.707018 -0.000000 +v 0.299220 4.436259 -0.000000 +v 0.299220 5.165501 -0.000000 +v -0.299220 0.487402 3.251414 +v -0.299220 5.590070 1.004025 +v -0.299220 5.128570 1.909768 +v -0.299220 4.409768 2.628571 +v -0.299220 3.503919 3.090124 +v -0.299220 2.496066 3.251015 +v -0.299220 5.679564 0.438986 +v -0.299220 0.487402 0.438985 +v -0.149610 5.900837 0.125000 +v -0.149610 0.054715 0.125000 +v -0.299220 0.054715 3.440433 +v -0.299220 2.511072 3.439998 +v -0.299220 3.563152 3.272047 +v -0.299220 4.522236 2.783369 +v -0.299220 5.283369 2.022236 +v -0.299220 5.772047 1.063152 +v -0.299220 5.900837 0.250000 +v -0.299220 0.054715 0.250000 +v -0.231315 0.487402 3.251414 +v -0.231315 2.496066 3.251015 +v -0.231315 3.503919 3.090124 +v -0.231315 4.409768 2.628571 +v -0.231315 5.128570 1.909768 +v -0.231315 5.590070 1.004025 +v -0.231315 5.679564 0.438986 +v -0.231315 0.487402 0.438985 +v -0.204275 1.917457 1.651271 +v -0.204275 2.047506 1.651271 +v -0.204275 1.917457 1.142414 +v -0.204275 2.047506 1.142414 +v -0.261126 1.933194 1.635535 +v -0.245389 1.917457 1.651271 +v -0.245389 2.047506 1.651271 +v -0.261126 2.031770 1.635535 +v -0.261126 1.933194 1.158151 +v -0.245389 1.917457 1.142414 +v -0.261126 2.031770 1.158151 +v -0.245389 2.047506 1.142414 +v -0.215124 3.126893 0.898361 +v -0.215124 3.628286 0.898361 +v -0.215124 3.126893 0.736489 +v -0.215124 3.628286 0.736489 +v -0.294289 3.126893 0.898361 +v -0.247374 3.628286 0.898361 +v -0.294289 3.126893 0.736489 +v -0.247374 3.628286 0.736489 +v -0.215124 3.447602 0.898361 +v -0.215124 3.447602 0.736489 +v -0.294289 3.447602 0.736489 +v -0.294289 3.447602 0.898361 +v -0.215124 3.126893 1.339800 +v -0.215124 3.628286 1.339800 +v -0.215124 3.126893 1.177929 +v -0.215124 3.628286 1.177929 +v -0.294289 3.126893 1.339800 +v -0.247374 3.628286 1.339800 +v -0.294289 3.126893 1.177929 +v -0.247374 3.628286 1.177929 +v -0.215124 3.447602 1.339800 +v -0.215124 3.447602 1.177929 +v -0.294289 3.447602 1.177929 +v -0.294289 3.447602 1.339800 +v -0.110842 1.775868 3.124604 +v -0.110842 2.305447 3.124604 +v -0.110842 1.775868 1.892389 +v -0.110842 2.305447 1.892389 +v -0.303721 1.835501 3.064971 +v -0.303721 2.245814 3.064971 +v -0.303721 1.835501 1.952022 +v -0.303721 2.245814 1.952022 +v -0.303721 2.305447 1.892389 +v -0.303721 1.775868 1.892389 +v -0.303721 1.775868 3.124604 +v -0.303721 2.305447 3.124604 +v -0.237602 2.245814 1.952022 +v -0.237602 1.835501 1.952022 +v -0.237602 1.835501 3.064971 +v -0.237602 2.245814 3.064971 +v -0.185097 0.938915 3.260309 +v -0.185097 1.140242 3.260309 +v -0.185097 0.938915 0.391829 +v -0.185097 1.140242 0.391829 +v -0.250002 0.938915 3.260309 +v -0.279439 0.968351 3.260309 +v -0.279439 1.110806 3.260309 +v -0.250002 1.140242 3.260309 +v -0.279439 0.968351 0.391829 +v -0.250002 0.938915 0.391829 +v -0.250002 1.140242 0.391829 +v -0.279439 1.110806 0.391829 +v -0.185097 1.623428 3.260309 +v -0.185097 1.824755 3.260309 +v -0.185097 1.623428 0.391829 +v -0.185097 1.824755 0.391829 +v -0.250002 1.623428 3.260309 +v -0.279439 1.652864 3.260309 +v -0.279439 1.795319 3.260309 +v -0.250002 1.824755 3.260309 +v -0.279439 1.652864 0.391829 +v -0.250002 1.623428 0.391829 +v -0.250002 1.824755 0.391829 +v -0.279439 1.795319 0.391829 +v -0.185097 2.307941 3.260309 +v -0.185097 2.509268 3.260309 +v -0.185097 2.307941 0.391829 +v -0.185097 2.509268 0.391829 +v -0.250002 2.307941 3.260309 +v -0.279439 2.337377 3.260309 +v -0.279439 2.479832 3.260309 +v -0.250002 2.509268 3.260309 +v -0.279439 2.337377 0.391829 +v -0.250002 2.307941 0.391829 +v -0.250002 2.509268 0.391829 +v -0.279439 2.479832 0.391829 +v -0.185097 2.992454 3.260309 +v -0.185097 3.193781 3.260309 +v -0.185097 2.992454 0.391829 +v -0.185097 3.193781 0.391829 +v -0.250002 2.992454 3.260309 +v -0.279439 3.021890 3.260309 +v -0.279439 3.164345 3.260309 +v -0.250002 3.193781 3.260309 +v -0.279439 3.021890 0.391829 +v -0.250002 2.992454 0.391829 +v -0.250002 3.193781 0.391829 +v -0.279439 3.164345 0.391829 +v -0.185097 3.676967 3.079826 +v -0.185097 3.878294 3.079826 +v -0.185097 3.676967 0.391829 +v -0.185097 3.878294 0.391829 +v -0.250002 3.676967 3.079826 +v -0.279439 3.706403 3.079826 +v -0.279439 3.848858 3.079826 +v -0.250002 3.878294 3.079826 +v -0.279439 3.706403 0.391829 +v -0.250002 3.676967 0.391829 +v -0.250002 3.878294 0.391829 +v -0.279439 3.848858 0.391829 +v -0.185097 4.361480 2.726382 +v -0.185097 4.562807 2.726382 +v -0.185097 4.361480 0.391829 +v -0.185097 4.562807 0.391829 +v -0.250002 4.361480 2.726382 +v -0.279439 4.390916 2.726382 +v -0.279439 4.533370 2.726382 +v -0.250002 4.562807 2.726382 +v -0.279439 4.390916 0.391829 +v -0.250002 4.361480 0.391829 +v -0.250002 4.562807 0.391829 +v -0.279439 4.533370 0.391829 +v -0.185097 5.045993 2.044939 +v -0.185097 5.247320 2.044939 +v -0.185097 5.045993 0.391829 +v -0.185097 5.247320 0.391829 +v -0.250002 5.045993 2.044939 +v -0.279439 5.075429 2.044939 +v -0.279439 5.217884 2.044939 +v -0.250002 5.247320 2.044939 +v -0.279439 5.075429 0.391829 +v -0.250002 5.045993 0.391829 +v -0.250002 5.247320 0.391829 +v -0.279439 5.217884 0.391829 +v -0.315590 0.554430 1.179831 +v -0.315590 0.554430 0.490474 +v -0.381347 0.554430 1.179831 +v -0.381347 0.554430 0.490474 +v -0.427845 0.600927 1.179831 +v -0.427845 0.600927 0.490474 +v -0.427845 0.666685 1.179831 +v -0.427845 0.666685 0.490474 +v -0.381347 0.713183 1.179831 +v -0.381347 0.713183 0.490474 +v -0.315590 0.713183 1.179831 +v -0.315590 0.713183 0.490474 +v -0.269092 0.666685 1.179831 +v -0.269092 0.666685 0.490474 +v -0.269092 0.600927 1.179831 +v -0.269092 0.600927 0.490474 +v -0.212011 0.554430 1.179831 +v -0.212011 0.554430 0.490474 +v -0.212011 0.713183 0.490474 +v -0.212011 0.713183 1.179831 +v -0.212011 0.666685 1.179831 +v -0.212011 0.666685 0.490474 +v -0.212011 0.600927 1.179831 +v -0.212011 0.600927 0.490474 +v -0.323809 0.574274 3.311587 +v -0.373128 0.574274 3.311587 +v -0.408001 0.609147 3.311587 +v -0.408001 0.658465 3.311587 +v -0.373128 0.693339 3.311587 +v -0.323809 0.693339 3.311587 +v -0.288936 0.658465 3.311587 +v -0.288936 0.609147 3.311587 +v -0.373127 0.574274 0.452471 +v -0.408000 0.609147 0.452471 +v -0.323808 0.574274 0.452471 +v -0.408000 0.658465 0.452471 +v -0.373127 0.693339 0.452471 +v -0.323808 0.693339 0.452471 +v -0.288935 0.658465 0.452471 +v -0.288935 0.609147 0.452471 +v -0.299220 0.790051 0.250000 +v -0.299220 5.165501 0.250000 +v -0.299220 1.519293 0.250000 +v -0.299220 2.248535 0.250000 +v -0.299220 2.977776 0.250000 +v -0.299220 3.707018 0.250000 +v -0.299220 4.436259 0.250000 +v -0.149610 5.165501 0.125000 +v -0.149610 0.790051 0.125000 +v -0.149610 4.436259 0.125000 +v -0.149610 3.707017 0.125000 +v -0.149610 2.977776 0.125000 +v -0.149610 2.248534 0.125000 +v -0.149610 1.519293 0.125000 +v -0.149610 0.054715 -0.125000 +v -0.299220 0.054715 -0.000000 +v -0.149610 0.790051 -0.125000 +v -0.149610 1.519293 -0.125000 +v -0.149610 2.248534 -0.125000 +v -0.149610 2.977776 -0.125000 +v -0.149610 3.707017 -0.125000 +v -0.149610 4.436259 -0.125000 +v -0.149610 5.165501 -0.125000 +v -0.299220 0.790051 -0.000000 +v -0.299220 1.519293 -0.000000 +v -0.299220 2.248535 -0.000000 +v -0.299220 2.977776 -0.000000 +v -0.299220 3.707018 -0.000000 +v -0.299220 4.436259 -0.000000 +v -0.299220 5.165501 -0.000000 +v 0.000000 0.054715 3.440433 +v 0.000000 2.511072 3.439998 +v 0.000000 3.563152 3.272047 +v 0.000000 4.522236 2.783369 +v 0.000000 5.283369 2.022236 +v 0.000000 5.772047 1.063152 +v 0.000000 5.900837 0.250000 +v 0.000000 0.054715 0.250000 +v 0.000000 5.900837 0.125000 +v 0.000000 0.054715 0.125000 +v 0.000000 0.790051 0.125000 +v 0.000000 1.519293 0.125000 +v 0.000000 2.248534 0.125000 +v 0.000000 2.977776 0.125000 +v 0.000000 3.707017 0.125000 +v 0.000000 4.436259 0.125000 +v 0.000000 5.165501 0.125000 +v 0.000000 0.054715 -0.125000 +v 0.000000 0.790051 -0.125000 +v 0.000000 1.519293 -0.125000 +v 0.000000 2.248534 -0.125000 +v 0.000000 2.977776 -0.125000 +v 0.000000 3.707017 -0.125000 +v 0.000000 4.436259 -0.125000 +v 0.000000 5.165501 -0.125000 +v -0.236978 1.966246 2.101461 +v -0.236978 1.868288 2.101461 +v -0.271611 1.966246 2.115807 +v -0.271611 1.868288 2.115807 +v -0.285957 1.966246 2.150440 +v -0.285957 1.868288 2.150440 +v -0.271611 1.966246 2.185074 +v -0.271611 1.868288 2.185074 +v -0.236978 1.966246 2.199419 +v -0.236978 1.868289 2.199419 +v -0.261013 1.935379 2.738888 +v -0.243801 1.942508 2.738888 +v -0.243801 1.942508 2.168687 +v -0.261013 1.935379 2.168687 +v -0.268143 1.918167 2.168687 +v -0.261013 1.900955 2.168687 +v -0.243801 1.893826 2.168687 +v -0.226590 1.900955 2.168687 +v -0.219460 1.918167 2.168687 +v -0.226590 1.935379 2.168687 +v -0.268142 1.918167 2.738888 +v -0.261013 1.900955 2.738888 +v -0.243801 1.893826 2.738888 +v -0.226589 1.900955 2.738888 +v -0.219460 1.918167 2.738888 +v -0.226589 1.935379 2.738888 +v -0.243801 1.952222 2.738888 +v -0.267882 1.942248 2.738888 +v -0.277856 1.918167 2.738888 +v -0.243801 1.952222 2.956852 +v -0.267881 1.942248 2.956852 +v -0.267882 1.894087 2.738888 +v -0.277856 1.918167 2.956852 +v -0.243801 1.884113 2.738888 +v -0.267881 1.894087 2.956852 +v -0.219721 1.894087 2.738888 +v -0.243801 1.884113 2.956852 +v -0.209747 1.918167 2.738888 +v -0.219721 1.894087 2.956852 +v -0.219721 1.942248 2.738888 +v -0.209747 1.918167 2.956852 +v -0.219721 1.942248 2.956852 +v -0.234903 1.996067 2.602893 +v -0.234903 2.177792 2.602893 +v -0.234903 1.996067 2.957389 +v -0.234903 2.177792 2.957389 +v -0.248363 1.996858 2.604437 +v -0.248363 2.177001 2.604437 +v -0.248363 1.996858 2.955846 +v -0.248363 2.177001 2.955846 +v -0.239626 2.025193 2.631219 +v -0.239626 2.077102 2.631219 +v -0.239626 2.025193 2.683128 +v -0.239626 2.077102 2.683128 +v -0.264276 2.026531 2.632558 +v -0.264276 2.075763 2.632558 +v -0.264276 2.026531 2.681789 +v -0.264276 2.075763 2.681789 +v -0.239626 2.025193 2.713007 +v -0.239626 2.077102 2.713007 +v -0.239626 2.025193 2.764916 +v -0.239626 2.077102 2.764916 +v -0.264276 2.026531 2.714346 +v -0.264276 2.075763 2.714346 +v -0.264276 2.026531 2.763577 +v -0.264276 2.075763 2.763577 +v -0.239626 2.025193 2.794795 +v -0.239626 2.077102 2.794795 +v -0.239626 2.025193 2.846704 +v -0.239626 2.077102 2.846704 +v -0.264276 2.026531 2.796134 +v -0.264276 2.075763 2.796134 +v -0.264276 2.026531 2.845365 +v -0.264276 2.075763 2.845365 +v -0.239626 2.025193 2.876583 +v -0.239626 2.077102 2.876583 +v -0.239626 2.025193 2.928492 +v -0.239626 2.077102 2.928492 +v -0.264276 2.026531 2.877922 +v -0.264276 2.075763 2.877922 +v -0.264276 2.026531 2.927153 +v -0.264276 2.075763 2.927153 +v -0.257845 2.139290 2.641807 +v -0.231994 2.143135 2.641807 +v -0.215737 2.122669 2.641807 +v -0.225334 2.098358 2.641807 +v -0.251185 2.094513 2.641807 +v -0.254999 2.096865 2.641807 +v -0.267210 2.110033 2.641807 +v -0.267441 2.114980 2.641807 +v -0.267210 2.110033 2.673316 +v -0.267441 2.114980 2.673316 +v -0.268826 2.092032 2.641807 +v -0.268826 2.092032 2.673316 +v -0.274138 2.100425 2.673316 +v -0.274138 2.100425 2.641807 +v -0.254999 2.096865 2.673316 +v -0.231994 2.143135 2.673316 +v -0.257845 2.139290 2.673316 +v -0.251185 2.094513 2.673316 +v -0.225334 2.098358 2.673316 +v -0.215737 2.122669 2.673316 +v -0.231185 2.137330 2.805390 +v -0.214479 2.117230 2.805390 +v -0.223533 2.092711 2.805390 +v -0.249294 2.088294 2.805390 +v -0.265999 2.108394 2.805390 +v -0.265969 2.112875 2.805390 +v -0.261052 2.130147 2.805390 +v -0.256944 2.132912 2.805390 +v -0.261052 2.130147 2.836899 +v -0.256944 2.132912 2.836899 +v -0.277276 2.122184 2.805390 +v -0.277276 2.122184 2.836899 +v -0.272861 2.131080 2.836899 +v -0.272861 2.131080 2.805390 +v -0.265969 2.112875 2.836899 +v -0.214479 2.117230 2.836899 +v -0.231185 2.137330 2.836899 +v -0.265999 2.108394 2.836899 +v -0.249294 2.088294 2.836899 +v -0.223533 2.092711 2.836899 +v -0.222124 2.128488 2.723598 +v -0.215961 2.103088 2.723598 +v -0.234877 2.085051 2.723598 +v -0.259955 2.092414 2.723598 +v -0.266117 2.117813 2.723598 +v -0.264119 2.121824 2.723598 +v -0.252107 2.135173 2.723598 +v -0.247201 2.135850 2.723598 +v -0.252107 2.135173 2.755107 +v -0.247201 2.135850 2.755107 +v -0.270180 2.135158 2.723598 +v -0.270180 2.135158 2.755107 +v -0.262301 2.141205 2.755107 +v -0.262301 2.141205 2.723598 +v -0.264119 2.121824 2.755107 +v -0.215961 2.103088 2.755107 +v -0.222124 2.128488 2.755107 +v -0.266117 2.117813 2.755107 +v -0.259955 2.092414 2.755107 +v -0.234877 2.085051 2.755107 +v -0.241062 2.141376 2.887181 +v -0.218098 2.128895 2.887181 +v -0.217426 2.102767 2.887181 +v -0.239718 2.089121 2.887181 +v -0.262680 2.101603 2.887181 +v -0.264312 2.105776 2.887181 +v -0.266144 2.123641 2.887181 +v -0.263352 2.127731 2.887181 +v -0.266143 2.123641 2.918690 +v -0.263352 2.127731 2.918690 +v -0.278264 2.110234 2.887181 +v -0.278264 2.110234 2.918690 +v -0.277458 2.120133 2.918690 +v -0.277458 2.120133 2.887181 +v -0.264312 2.105776 2.918690 +v -0.218098 2.128895 2.918690 +v -0.241062 2.141376 2.918690 +v -0.262680 2.101603 2.918690 +v -0.239718 2.089121 2.918690 +v -0.217426 2.102767 2.918690 +v -0.266144 2.123641 2.887181 +v -0.263352 2.127731 2.887181 +v -0.266143 2.123641 2.918690 +v -0.263352 2.127731 2.918690 +vt 0.114995 0.927786 +vt 0.122324 0.928335 +vt 0.115027 0.928335 +vt 0.115027 0.942571 +vt 0.122324 0.942571 +vt 0.114995 0.943119 +vt 0.114481 0.928272 +vt 0.114481 0.942633 +vt 0.122871 0.928272 +vt 0.977830 0.045536 +vt 0.979878 0.044536 +vt 0.979932 0.045536 +vt 0.977884 0.044536 +vt 0.979878 0.042542 +vt 0.977884 0.042542 +vt 0.979932 0.041542 +vt 0.980878 0.044591 +vt 0.980878 0.042488 +vt 0.976884 0.044591 +vt 0.980878 0.062002 +vt 0.979878 0.059953 +vt 0.980878 0.059899 +vt 0.979878 0.061948 +vt 0.977884 0.059953 +vt 0.977884 0.061948 +vt 0.976884 0.059899 +vt 0.977829 0.058953 +vt 0.979932 0.058953 +vt 0.979932 0.062948 +vt 0.979932 0.076365 +vt 0.977884 0.077365 +vt 0.977829 0.076365 +vt 0.979878 0.077365 +vt 0.977884 0.079359 +vt 0.979878 0.079359 +vt 0.977829 0.080359 +vt 0.976884 0.079414 +vt 0.976884 0.077311 +vt 0.980878 0.079414 +vt 0.976884 0.096825 +vt 0.977884 0.094776 +vt 0.977884 0.096771 +vt 0.979878 0.096771 +vt 0.979878 0.094777 +vt 0.980878 0.096825 +vt 0.979932 0.097771 +vt 0.977829 0.097771 +vt 0.977830 0.093776 +vt 0.122356 0.927786 +vt 0.122356 0.943119 +vt 0.122871 0.942633 +vt 0.977830 0.041542 +vt 0.976884 0.042488 +vt 0.976884 0.062002 +vt 0.977829 0.062948 +vt 0.979932 0.080359 +vt 0.980878 0.077311 +vt 0.976884 0.094722 +vt 0.980878 0.094722 +vt 0.979932 0.093776 +vt 0.888428 0.294606 +vt 0.900550 0.394114 +vt 0.888429 0.394114 +vt 0.900550 0.437274 +vt 0.888429 0.437274 +vt 0.900550 0.480879 +vt 0.888429 0.480879 +vt 0.900550 0.524484 +vt 0.888429 0.524484 +vt 0.900550 0.568090 +vt 0.888429 0.568090 +vt 0.801760 0.796084 +vt 0.813882 0.666839 +vt 0.813882 0.796084 +vt 0.897588 0.747418 +vt 0.900339 0.861350 +vt 0.897588 0.861350 +vt 0.899184 0.935956 +vt 0.928726 0.925829 +vt 0.928726 0.935956 +vt 0.888429 0.601441 +vt 0.894489 0.606505 +vt 0.888429 0.606505 +vt 0.476557 0.585175 +vt 0.394577 0.577535 +vt 0.494085 0.577517 +vt 0.354357 0.591708 +vt 0.395185 0.585191 +vt 0.317661 0.610406 +vt 0.351957 0.584339 +vt 0.282271 0.634969 +vt 0.313105 0.604135 +vt 0.269847 0.676217 +vt 0.288542 0.639525 +vt 0.266221 0.699107 +vt 0.262475 0.673821 +vt 0.494085 0.706763 +vt 0.476557 0.699107 +vt 0.516594 0.667355 +vt 0.510076 0.626526 +vt 0.623992 0.545155 +vt 0.933712 0.486222 +vt 0.930761 0.461662 +vt 0.933677 0.461658 +vt 0.933835 0.573519 +vt 0.930857 0.529875 +vt 0.933773 0.529871 +vt 0.933959 0.660995 +vt 0.930981 0.617175 +vt 0.933896 0.617171 +vt 0.931165 0.294610 +vt 0.934080 0.294606 +vt 0.930796 0.486226 +vt 0.930919 0.573523 +vt 0.934080 0.747247 +vt 0.931043 0.660999 +vt 0.115673 0.891561 +vt 0.120941 0.889896 +vt 0.120941 0.891562 +vt 0.113743 0.912440 +vt 0.115409 0.891825 +vt 0.115409 0.912440 +vt 0.116310 0.911802 +vt 0.120303 0.892463 +vt 0.120303 0.911802 +vt 0.115673 0.914369 +vt 0.120941 0.912703 +vt 0.120941 0.914369 +vt 0.115673 0.912703 +vt 0.121205 0.912440 +vt 0.121205 0.891825 +vt 0.116310 0.892463 +vt 0.122871 0.891825 +vt 0.122871 0.912440 +vt 0.517321 0.983616 +vt 0.530057 0.979918 +vt 0.530177 0.983265 +vt 0.517124 0.992977 +vt 0.509923 0.990179 +vt 0.517491 0.989800 +vt 0.509916 0.983328 +vt 0.516908 0.980489 +vt 0.530177 0.990089 +vt 0.533514 0.983265 +vt 0.533514 0.990089 +vt 0.508558 0.990180 +vt 0.530099 0.993292 +vt 0.862038 0.983177 +vt 0.874774 0.979479 +vt 0.874894 0.982826 +vt 0.861840 0.992538 +vt 0.854639 0.989740 +vt 0.862208 0.989361 +vt 0.854633 0.982888 +vt 0.861624 0.980050 +vt 0.874894 0.989649 +vt 0.878231 0.982826 +vt 0.878231 0.989649 +vt 0.853274 0.989741 +vt 0.874816 0.992852 +vt 0.201844 0.802196 +vt 0.194030 0.780742 +vt 0.201844 0.780742 +vt 0.473107 0.953861 +vt 0.489729 0.951182 +vt 0.489729 0.953861 +vt 0.144113 0.802196 +vt 0.136299 0.780742 +vt 0.144113 0.780742 +vt 0.144113 0.772929 +vt 0.194030 0.772929 +vt 0.194030 0.810009 +vt 0.194030 0.802196 +vt 0.191614 0.783158 +vt 0.191614 0.799780 +vt 0.146529 0.799780 +vt 0.146529 0.783158 +vt 0.489729 0.906096 +vt 0.473107 0.951182 +vt 0.473107 0.906096 +vt 0.470428 0.906096 +vt 0.470428 0.951182 +vt 0.492407 0.951182 +vt 0.492407 0.906096 +vt 0.489729 0.903418 +vt 0.473107 0.903418 +vt 0.006709 0.937024 +vt 0.009278 0.823485 +vt 0.009278 0.937024 +vt 0.011259 0.937019 +vt 0.016898 0.823479 +vt 0.016898 0.937019 +vt 0.018880 0.937014 +vt 0.018880 0.823474 +vt 0.021449 0.823474 +vt 0.021449 0.937014 +vt 0.192614 0.936977 +vt 0.195183 0.823437 +vt 0.195183 0.936977 +vt 0.197165 0.936971 +vt 0.202803 0.823432 +vt 0.202803 0.936971 +vt 0.204785 0.936966 +vt 0.204785 0.823426 +vt 0.207354 0.823426 +vt 0.207354 0.936966 +vt 0.811263 0.938243 +vt 0.813832 0.824703 +vt 0.813832 0.938243 +vt 0.815814 0.938237 +vt 0.821453 0.824698 +vt 0.821453 0.938237 +vt 0.823434 0.938232 +vt 0.823434 0.824692 +vt 0.826003 0.824692 +vt 0.826003 0.938232 +vt 0.034866 0.937024 +vt 0.037435 0.823485 +vt 0.037435 0.937024 +vt 0.039417 0.937019 +vt 0.045055 0.823479 +vt 0.045055 0.937019 +vt 0.047037 0.937014 +vt 0.047037 0.823474 +vt 0.049606 0.823474 +vt 0.049606 0.937014 +vt 0.932252 0.241137 +vt 0.934844 0.133830 +vt 0.934844 0.241137 +vt 0.936717 0.241134 +vt 0.942404 0.133826 +vt 0.942403 0.241134 +vt 0.944276 0.241130 +vt 0.944277 0.133823 +vt 0.946868 0.133823 +vt 0.946868 0.241130 +vt 0.100157 0.851974 +vt 0.097527 0.946547 +vt 0.097528 0.851974 +vt 0.095841 0.851974 +vt 0.090070 0.946546 +vt 0.090070 0.851974 +vt 0.088384 0.851974 +vt 0.088384 0.946546 +vt 0.085754 0.946546 +vt 0.085755 0.851974 +vt 0.136299 0.950395 +vt 0.203267 0.953024 +vt 0.136299 0.953024 +vt 0.136299 0.954710 +vt 0.203267 0.960481 +vt 0.136299 0.960481 +vt 0.136299 0.962168 +vt 0.203267 0.962168 +vt 0.203267 0.964797 +vt 0.136299 0.964797 +vt 0.301908 0.982691 +vt 0.329834 0.980027 +vt 0.329834 0.982690 +vt 0.301908 0.980027 +vt 0.329834 0.977363 +vt 0.301908 0.977363 +vt 0.329834 0.974699 +vt 0.301908 0.974699 +vt 0.329834 0.972035 +vt 0.301908 0.972035 +vt 0.329834 0.969371 +vt 0.970662 0.802390 +vt 0.973326 0.800078 +vt 0.973326 0.802390 +vt 0.968778 0.826786 +vt 0.968778 0.824122 +vt 0.975209 0.826786 +vt 0.975209 0.824122 +vt 0.977522 0.822238 +vt 0.977522 0.824122 +vt 0.968778 0.800078 +vt 0.970662 0.800078 +vt 0.970662 0.808821 +vt 0.968778 0.804274 +vt 0.874581 0.121851 +vt 0.876591 0.006711 +vt 0.876591 0.121851 +vt 0.968778 0.906729 +vt 0.970191 0.903318 +vt 0.973601 0.904731 +vt 0.977522 0.828669 +vt 0.973326 0.828669 +vt 0.301908 0.969371 +vt 0.329834 0.965175 +vt 0.301908 0.986886 +vt 0.975209 0.800078 +vt 0.975209 0.804274 +vt 0.977522 0.826786 +vt 0.886640 0.006709 +vt 0.888649 0.121848 +vt 0.886640 0.121849 +vt 0.882620 0.006710 +vt 0.884630 0.121849 +vt 0.882620 0.121850 +vt 0.878601 0.006711 +vt 0.880610 0.121850 +vt 0.878601 0.121850 +vt 0.888649 0.006709 +vt 0.890659 0.121848 +vt 0.884630 0.006710 +vt 0.880610 0.006711 +vt 0.711814 0.977254 +vt 0.717875 0.972190 +vt 0.717875 0.982318 +vt 0.405212 0.706763 +vt 0.375671 0.706763 +vt 0.978906 0.626265 +vt 0.968778 0.620204 +vt 0.978906 0.620204 +vt 0.973842 0.632325 +vt 0.968778 0.626265 +vt 0.978906 0.701585 +vt 0.968778 0.695524 +vt 0.978906 0.695524 +vt 0.085754 0.959964 +vt 0.093652 0.989505 +vt 0.085754 0.989505 +vt 0.973842 0.707645 +vt 0.968778 0.701585 +vt 0.968182 0.245444 +vt 0.960285 0.274985 +vt 0.960285 0.245444 +vt 0.947497 0.992681 +vt 0.977039 0.984783 +vt 0.977039 0.992681 +vt 0.645374 0.953709 +vt 0.674916 0.943582 +vt 0.674916 0.953709 +vt 0.975414 0.951347 +vt 0.967516 0.921558 +vt 0.975414 0.921558 +vt 0.384226 0.941462 +vt 0.414014 0.933565 +vt 0.414014 0.941462 +vt 0.899184 0.925829 +vt 0.928726 0.917931 +vt 0.688333 0.943582 +vt 0.717875 0.935684 +vt 0.717875 0.943582 +vt 0.645374 0.943582 +vt 0.674916 0.935684 +vt 0.263318 0.975303 +vt 0.257257 0.970239 +vt 0.263318 0.965175 +vt 0.269379 0.965175 +vt 0.269379 0.975303 +vt 0.361433 0.970908 +vt 0.367494 0.965844 +vt 0.367494 0.975971 +vt 0.384226 0.951590 +vt 0.414014 0.951590 +vt 0.688333 0.953709 +vt 0.717875 0.953709 +vt 0.651435 0.977254 +vt 0.645374 0.972190 +vt 0.651435 0.967126 +vt 0.657496 0.967127 +vt 0.657496 0.977254 +vt 0.807821 0.801148 +vt 0.801760 0.806211 +vt 0.978906 0.651803 +vt 0.973842 0.645742 +vt 0.983970 0.645742 +vt 0.645374 0.929623 +vt 0.645374 0.935684 +vt 0.688333 0.929623 +vt 0.688333 0.935684 +vt 0.899184 0.911870 +vt 0.899184 0.917931 +vt 0.384226 0.933565 +vt 0.414014 0.927504 +vt 0.978906 0.657864 +vt 0.968778 0.651803 +vt 0.947497 0.978723 +vt 0.947497 0.984783 +vt 0.355372 0.970908 +vt 0.361433 0.960780 +vt 0.974243 0.245444 +vt 0.968182 0.274985 +vt 0.705753 0.977254 +vt 0.711814 0.967126 +vt 0.099713 0.959964 +vt 0.093652 0.959964 +vt 0.813882 0.801148 +vt 0.807821 0.811275 +vt 0.967516 0.951347 +vt 0.961456 0.921558 +vt 0.900550 0.601441 +vt 0.876307 0.394114 +vt 0.876307 0.437274 +vt 0.876307 0.480879 +vt 0.876307 0.524484 +vt 0.876307 0.568090 +vt 0.826003 0.796084 +vt 0.622483 0.966501 +vt 0.508551 0.963750 +vt 0.622483 0.963750 +vt 0.928726 0.897912 +vt 0.899184 0.887784 +vt 0.928726 0.887784 +vt 0.882368 0.606505 +vt 0.876307 0.601441 +vt 0.511219 0.226008 +vt 0.503579 0.144028 +vt 0.511235 0.144636 +vt 0.517753 0.103808 +vt 0.510383 0.101409 +vt 0.536450 0.067112 +vt 0.530179 0.062556 +vt 0.565569 0.037993 +vt 0.561013 0.031722 +vt 0.602261 0.019298 +vt 0.599866 0.011926 +vt 0.625151 0.015672 +vt 0.632807 0.243536 +vt 0.625151 0.226008 +vt 0.279578 0.779761 +vt 0.260883 0.743070 +vt 0.257257 0.720180 +vt 0.913967 0.580195 +vt 0.916923 0.555635 +vt 0.916883 0.580199 +vt 0.914077 0.511982 +vt 0.917064 0.468338 +vt 0.916993 0.511987 +vt 0.914218 0.424679 +vt 0.917205 0.380859 +vt 0.917134 0.424684 +vt 0.917344 0.747253 +vt 0.914007 0.555630 +vt 0.914148 0.468333 +vt 0.914289 0.380855 +vt 0.917344 0.294611 +vt 0.065127 0.861396 +vt 0.070396 0.863061 +vt 0.065127 0.863061 +vt 0.070660 0.863325 +vt 0.072325 0.883939 +vt 0.070660 0.883939 +vt 0.065765 0.863963 +vt 0.069758 0.883302 +vt 0.065765 0.883302 +vt 0.065127 0.884203 +vt 0.070396 0.885869 +vt 0.065127 0.885869 +vt 0.070396 0.884203 +vt 0.064863 0.883939 +vt 0.064863 0.863325 +vt 0.069758 0.863963 +vt 0.063198 0.863325 +vt 0.063198 0.883939 +vt 0.568438 0.993292 +vt 0.555701 0.989594 +vt 0.568557 0.989945 +vt 0.555504 0.980233 +vt 0.548303 0.983031 +vt 0.548041 0.981699 +vt 0.555872 0.983409 +vt 0.555288 0.992721 +vt 0.548296 0.989882 +vt 0.571895 0.989945 +vt 0.568557 0.983121 +vt 0.571895 0.983121 +vt 0.546938 0.983030 +vt 0.568480 0.979918 +vt 0.491677 0.993292 +vt 0.478941 0.989594 +vt 0.491797 0.989945 +vt 0.478743 0.980233 +vt 0.471542 0.983031 +vt 0.471281 0.981699 +vt 0.479111 0.983409 +vt 0.478527 0.992721 +vt 0.471536 0.989882 +vt 0.495134 0.989945 +vt 0.491797 0.983121 +vt 0.495134 0.983121 +vt 0.470177 0.983030 +vt 0.491719 0.979918 +vt 0.567791 0.850757 +vt 0.575605 0.829304 +vt 0.575605 0.850757 +vt 0.241162 0.906203 +vt 0.224540 0.903524 +vt 0.241162 0.903524 +vt 0.510060 0.850757 +vt 0.517874 0.829304 +vt 0.517874 0.850757 +vt 0.517874 0.858571 +vt 0.567791 0.858571 +vt 0.567791 0.821490 +vt 0.567791 0.829304 +vt 0.565375 0.848342 +vt 0.565375 0.831720 +vt 0.520290 0.848342 +vt 0.520290 0.831720 +vt 0.224540 0.906203 +vt 0.241162 0.951289 +vt 0.224540 0.951289 +vt 0.221861 0.951289 +vt 0.221861 0.906203 +vt 0.243840 0.906203 +vt 0.243840 0.951289 +vt 0.241162 0.953967 +vt 0.224540 0.953967 +vt 0.176628 0.823438 +vt 0.179197 0.936978 +vt 0.176628 0.936978 +vt 0.169007 0.823432 +vt 0.174646 0.936972 +vt 0.169008 0.936972 +vt 0.167026 0.936966 +vt 0.167026 0.823426 +vt 0.164457 0.823426 +vt 0.164457 0.936966 +vt 0.257269 0.850098 +vt 0.370809 0.847529 +vt 0.370809 0.850098 +vt 0.257263 0.857718 +vt 0.370803 0.852080 +vt 0.370803 0.857718 +vt 0.370797 0.859700 +vt 0.257257 0.859700 +vt 0.257257 0.862269 +vt 0.370797 0.862269 +vt 0.784658 0.821502 +vt 0.787227 0.935042 +vt 0.784658 0.935042 +vt 0.777038 0.821496 +vt 0.782677 0.935036 +vt 0.777038 0.935036 +vt 0.775056 0.935030 +vt 0.775056 0.821490 +vt 0.772487 0.821490 +vt 0.772487 0.935030 +vt 0.148471 0.823438 +vt 0.151040 0.936978 +vt 0.148471 0.936978 +vt 0.140850 0.823432 +vt 0.146489 0.936972 +vt 0.140850 0.936972 +vt 0.138869 0.936966 +vt 0.138869 0.823426 +vt 0.136299 0.823426 +vt 0.136300 0.936966 +vt 0.944276 0.006716 +vt 0.946868 0.114023 +vt 0.944277 0.114023 +vt 0.936717 0.006712 +vt 0.942404 0.114020 +vt 0.936717 0.114020 +vt 0.934844 0.114016 +vt 0.934844 0.006709 +vt 0.932252 0.006709 +vt 0.932253 0.114016 +vt 0.645374 0.880347 +vt 0.739946 0.877717 +vt 0.739946 0.880347 +vt 0.645374 0.887804 +vt 0.739946 0.882033 +vt 0.739946 0.887804 +vt 0.739946 0.889491 +vt 0.645374 0.889491 +vt 0.645374 0.892120 +vt 0.739946 0.892120 +vt 0.811263 0.954289 +vt 0.878231 0.951660 +vt 0.878231 0.954289 +vt 0.811263 0.961746 +vt 0.878231 0.955975 +vt 0.878231 0.961746 +vt 0.878231 0.963433 +vt 0.811263 0.963433 +vt 0.811263 0.966062 +vt 0.878231 0.966062 +vt 0.427431 0.979920 +vt 0.455358 0.982584 +vt 0.427431 0.982584 +vt 0.427431 0.977257 +vt 0.455358 0.979920 +vt 0.427431 0.974593 +vt 0.455358 0.977256 +vt 0.427431 0.971929 +vt 0.455358 0.974593 +vt 0.427431 0.969265 +vt 0.455358 0.971929 +vt 0.977522 0.843970 +vt 0.975209 0.846634 +vt 0.975209 0.843970 +vt 0.968778 0.784777 +vt 0.970662 0.780230 +vt 0.975209 0.782113 +vt 0.975209 0.784777 +vt 0.977522 0.786661 +vt 0.973326 0.786661 +vt 0.977522 0.848518 +vt 0.973326 0.848518 +vt 0.968778 0.846634 +vt 0.876591 0.135269 +vt 0.874581 0.250408 +vt 0.874581 0.135268 +vt 0.973602 0.865345 +vt 0.970191 0.866758 +vt 0.968778 0.863347 +vt 0.977522 0.780230 +vt 0.973326 0.780230 +vt 0.427431 0.965069 +vt 0.455358 0.969265 +vt 0.455358 0.986780 +vt 0.977522 0.842086 +vt 0.973326 0.842086 +vt 0.977522 0.782113 +vt 0.888649 0.135271 +vt 0.886640 0.250410 +vt 0.886640 0.135271 +vt 0.884630 0.135270 +vt 0.882620 0.250410 +vt 0.882620 0.135270 +vt 0.880610 0.135270 +vt 0.878601 0.250409 +vt 0.878601 0.135269 +vt 0.890659 0.135272 +vt 0.888649 0.250411 +vt 0.884630 0.250410 +vt 0.876591 0.250408 +vt 0.880610 0.250409 +vt 0.693632 0.972190 +vt 0.699693 0.977254 +vt 0.693632 0.982318 +vt 0.632807 0.213747 +vt 0.978906 0.614143 +vt 0.973842 0.608082 +vt 0.983970 0.608082 +vt 0.978906 0.689463 +vt 0.113671 0.959964 +vt 0.105773 0.989505 +vt 0.105773 0.959964 +vt 0.973842 0.683402 +vt 0.983970 0.683402 +vt 0.988201 0.274985 +vt 0.980304 0.245444 +vt 0.988201 0.245444 +vt 0.947497 0.964764 +vt 0.977039 0.972662 +vt 0.947497 0.972662 +vt 0.674916 0.915665 +vt 0.645374 0.905537 +vt 0.674916 0.905537 +vt 0.955395 0.921558 +vt 0.947497 0.951347 +vt 0.947497 0.921558 +vt 0.414014 0.921443 +vt 0.384226 0.913545 +vt 0.414014 0.913545 +vt 0.899184 0.897912 +vt 0.928726 0.905810 +vt 0.899184 0.905810 +vt 0.688333 0.915665 +vt 0.717875 0.923563 +vt 0.688333 0.923563 +vt 0.645374 0.915665 +vt 0.674916 0.923563 +vt 0.645374 0.923563 +vt 0.275440 0.975303 +vt 0.281500 0.970239 +vt 0.281500 0.980367 +vt 0.343251 0.965844 +vt 0.349312 0.970908 +vt 0.343251 0.975971 +vt 0.384226 0.903418 +vt 0.414014 0.903418 +vt 0.717875 0.915665 +vt 0.688333 0.905537 +vt 0.717875 0.905537 +vt 0.663556 0.977254 +vt 0.669617 0.972190 +vt 0.669617 0.982318 +vt 0.826003 0.806211 +vt 0.819943 0.801148 +vt 0.973842 0.669985 +vt 0.978906 0.663925 +vt 0.983970 0.669985 +vt 0.384226 0.921443 +vt 0.968778 0.663925 +vt 0.349312 0.960780 +vt 0.980304 0.274985 +vt 0.699693 0.967126 +vt 0.819943 0.811275 +vt 0.955395 0.951347 +vt 0.876307 0.937367 +vt 0.877826 0.933398 +vt 0.877826 0.937367 +vt 0.879344 0.937367 +vt 0.879344 0.933398 +vt 0.880863 0.937367 +vt 0.882381 0.933398 +vt 0.882381 0.937367 +vt 0.840001 0.746144 +vt 0.840001 0.743338 +vt 0.841404 0.742757 +vt 0.841404 0.764111 +vt 0.840001 0.763530 +vt 0.839420 0.762127 +vt 0.968778 0.725591 +vt 0.991877 0.724836 +vt 0.991877 0.725590 +vt 0.978536 0.159457 +vt 0.979433 0.159840 +vt 0.979069 0.159990 +vt 0.968778 0.724836 +vt 0.991877 0.724081 +vt 0.968778 0.724081 +vt 0.991877 0.723327 +vt 0.977247 0.160745 +vt 0.977630 0.161642 +vt 0.976884 0.160895 +vt 0.968778 0.723326 +vt 0.991877 0.722572 +vt 0.977630 0.159093 +vt 0.978686 0.159093 +vt 0.968778 0.722572 +vt 0.991877 0.721817 +vt 0.979069 0.160745 +vt 0.979433 0.160895 +vt 0.968778 0.721817 +vt 0.991877 0.721062 +vt 0.968778 0.727100 +vt 0.991877 0.726345 +vt 0.991877 0.727100 +vt 0.968778 0.726345 +vt 0.737627 0.942995 +vt 0.736571 0.934165 +vt 0.737627 0.934165 +vt 0.736571 0.942995 +vt 0.735515 0.934165 +vt 0.735515 0.942995 +vt 0.734459 0.934165 +vt 0.734459 0.942995 +vt 0.733404 0.934165 +vt 0.732348 0.942995 +vt 0.732348 0.934165 +vt 0.731292 0.934165 +vt 0.738683 0.942995 +vt 0.738683 0.934165 +vt 0.739739 0.942995 +vt 0.739739 0.934165 +vt 0.977247 0.159990 +vt 0.976884 0.159840 +vt 0.978686 0.161642 +vt 0.978536 0.161279 +vt 0.977630 0.145676 +vt 0.976884 0.143873 +vt 0.978686 0.143127 +vt 0.977781 0.159457 +vt 0.977781 0.161279 +vt 0.987094 0.328112 +vt 0.986494 0.328523 +vt 0.986294 0.328503 +vt 0.733610 0.979860 +vt 0.733409 0.978584 +vt 0.733610 0.978584 +vt 0.734492 0.979860 +vt 0.734090 0.978584 +vt 0.734492 0.978584 +vt 0.986494 0.342610 +vt 0.987205 0.342438 +vt 0.987094 0.343021 +vt 0.987211 0.344218 +vt 0.986294 0.344748 +vt 0.738443 0.978584 +vt 0.737385 0.979860 +vt 0.737385 0.978584 +vt 0.733409 0.979860 +vt 0.732351 0.978584 +vt 0.736326 0.979860 +vt 0.735267 0.978584 +vt 0.736326 0.978584 +vt 0.735086 0.979860 +vt 0.735086 0.978584 +vt 0.732351 0.979860 +vt 0.731292 0.978584 +vt 0.734090 0.979860 +vt 0.987205 0.328695 +vt 0.986837 0.328858 +vt 0.623574 0.981645 +vt 0.622974 0.982056 +vt 0.622774 0.982036 +vt 0.839420 0.689726 +vt 0.840697 0.689525 +vt 0.840697 0.689726 +vt 0.839420 0.690608 +vt 0.840697 0.690206 +vt 0.840697 0.690608 +vt 0.840539 0.920381 +vt 0.841251 0.920209 +vt 0.841140 0.920792 +vt 0.841256 0.921989 +vt 0.840340 0.922519 +vt 0.839420 0.694559 +vt 0.840697 0.693501 +vt 0.840697 0.694559 +vt 0.839420 0.689525 +vt 0.840697 0.688467 +vt 0.839420 0.692442 +vt 0.840697 0.691383 +vt 0.840697 0.692442 +vt 0.839420 0.691202 +vt 0.840697 0.691202 +vt 0.839420 0.687408 +vt 0.840697 0.687408 +vt 0.839420 0.693501 +vt 0.839420 0.691383 +vt 0.839420 0.690206 +vt 0.623685 0.982228 +vt 0.623317 0.982391 +vt 0.841137 0.905883 +vt 0.840537 0.906294 +vt 0.840337 0.906274 +vt 0.839420 0.669157 +vt 0.840697 0.668957 +vt 0.840697 0.669157 +vt 0.840697 0.670040 +vt 0.839420 0.669637 +vt 0.840697 0.669637 +vt 0.986494 0.294941 +vt 0.987205 0.294769 +vt 0.987094 0.295352 +vt 0.987211 0.296549 +vt 0.986294 0.297079 +vt 0.839420 0.673991 +vt 0.840697 0.672932 +vt 0.840697 0.673991 +vt 0.839420 0.668957 +vt 0.840697 0.667898 +vt 0.839420 0.671873 +vt 0.840697 0.670815 +vt 0.840697 0.671873 +vt 0.839420 0.670633 +vt 0.840697 0.670633 +vt 0.839420 0.667898 +vt 0.840697 0.666839 +vt 0.839420 0.670815 +vt 0.841249 0.906466 +vt 0.840881 0.906629 +vt 0.987094 0.312223 +vt 0.986494 0.312634 +vt 0.986294 0.312613 +vt 0.628006 0.949880 +vt 0.627604 0.948603 +vt 0.628006 0.948603 +vt 0.978000 0.186892 +vt 0.978712 0.186720 +vt 0.978601 0.187303 +vt 0.978718 0.188500 +vt 0.977801 0.189030 +vt 0.631957 0.949880 +vt 0.630898 0.948603 +vt 0.631957 0.948603 +vt 0.626923 0.949880 +vt 0.625864 0.948603 +vt 0.626923 0.948603 +vt 0.629840 0.949880 +vt 0.628781 0.948603 +vt 0.629840 0.948603 +vt 0.628599 0.948603 +vt 0.625864 0.949880 +vt 0.624806 0.948603 +vt 0.630898 0.949880 +vt 0.628781 0.949880 +vt 0.627124 0.948603 +vt 0.627604 0.949880 +vt 0.627124 0.949880 +vt 0.987205 0.312806 +vt 0.986837 0.312968 +vt 0.627124 0.949880 +vt 0.626923 0.948603 +vt 0.627124 0.948603 +vt 0.900550 0.294606 +vt 0.801760 0.666839 +vt 0.900339 0.747418 +vt 0.257257 0.706763 +vt 0.510060 0.545155 +vt 0.623992 0.755490 +vt 0.564411 0.733169 +vt 0.601102 0.751865 +vt 0.535292 0.704051 +vt 0.931165 0.747251 +vt 0.115673 0.889896 +vt 0.113743 0.891825 +vt 0.509661 0.991511 +vt 0.509641 0.982031 +vt 0.508551 0.983329 +vt 0.854378 0.991072 +vt 0.854357 0.981591 +vt 0.853268 0.982890 +vt 0.136299 0.802196 +vt 0.144113 0.810009 +vt 0.006709 0.823485 +vt 0.011260 0.823479 +vt 0.192614 0.823437 +vt 0.197165 0.823432 +vt 0.811263 0.824703 +vt 0.815814 0.824698 +vt 0.034866 0.823485 +vt 0.039417 0.823479 +vt 0.932253 0.133830 +vt 0.936717 0.133826 +vt 0.100157 0.946547 +vt 0.095841 0.946547 +vt 0.203267 0.950395 +vt 0.203267 0.954710 +vt 0.970662 0.822238 +vt 0.973326 0.822238 +vt 0.970662 0.828669 +vt 0.975209 0.806938 +vt 0.973326 0.808821 +vt 0.968778 0.806938 +vt 0.874581 0.006712 +vt 0.972189 0.908141 +vt 0.970191 0.908141 +vt 0.968778 0.904731 +vt 0.972189 0.903318 +vt 0.973601 0.906729 +vt 0.301908 0.965175 +vt 0.329834 0.986886 +vt 0.890659 0.006709 +vt 0.287046 0.706763 +vt 0.316588 0.706763 +vt 0.464296 0.706763 +vt 0.434754 0.706763 +vt 0.346130 0.706763 +vt 0.983970 0.632325 +vt 0.983970 0.707645 +vt 0.257257 0.980367 +vt 0.645374 0.982318 +vt 0.674916 0.929623 +vt 0.717875 0.929623 +vt 0.928726 0.911870 +vt 0.384226 0.927504 +vt 0.968778 0.657864 +vt 0.977039 0.978723 +vt 0.355372 0.960780 +vt 0.974243 0.274985 +vt 0.705753 0.967126 +vt 0.099713 0.989505 +vt 0.813882 0.811275 +vt 0.961456 0.951347 +vt 0.876307 0.294606 +vt 0.826003 0.666839 +vt 0.508551 0.966501 +vt 0.503562 0.243536 +vt 0.632807 0.006709 +vt 0.467593 0.720180 +vt 0.467593 0.834112 +vt 0.386221 0.834096 +vt 0.345393 0.827578 +vt 0.308697 0.808880 +vt 0.914428 0.747248 +vt 0.914429 0.294606 +vt 0.070396 0.861396 +vt 0.072325 0.863325 +vt 0.548021 0.991179 +vt 0.546931 0.989881 +vt 0.471260 0.991179 +vt 0.470171 0.989881 +vt 0.510060 0.829304 +vt 0.517874 0.821490 +vt 0.179197 0.823438 +vt 0.174646 0.823432 +vt 0.257269 0.847529 +vt 0.257263 0.852080 +vt 0.787227 0.821502 +vt 0.782677 0.821496 +vt 0.151040 0.823438 +vt 0.146489 0.823432 +vt 0.946868 0.006716 +vt 0.942403 0.006712 +vt 0.645374 0.877718 +vt 0.645374 0.882034 +vt 0.811263 0.951660 +vt 0.811263 0.955975 +vt 0.977522 0.846634 +vt 0.970662 0.786661 +vt 0.968778 0.782113 +vt 0.977522 0.784777 +vt 0.970662 0.842086 +vt 0.970662 0.848518 +vt 0.968778 0.843970 +vt 0.970191 0.861935 +vt 0.972189 0.861935 +vt 0.973602 0.863347 +vt 0.972189 0.866758 +vt 0.968778 0.865345 +vt 0.455358 0.965069 +vt 0.427431 0.986780 +vt 0.890659 0.250411 +vt 0.632807 0.125122 +vt 0.632807 0.036497 +vt 0.632807 0.066039 +vt 0.632807 0.095581 +vt 0.632807 0.154663 +vt 0.632807 0.184205 +vt 0.968778 0.614143 +vt 0.968778 0.689463 +vt 0.113671 0.989505 +vt 0.977039 0.964764 +vt 0.275440 0.965175 +vt 0.663556 0.967127 +vt 0.876307 0.933398 +vt 0.880863 0.933398 +vt 0.841404 0.746726 +vt 0.839420 0.744741 +vt 0.840001 0.760724 +vt 0.841404 0.760143 +vt 0.968778 0.721062 +vt 0.733404 0.942995 +vt 0.731292 0.942995 +vt 0.976884 0.144929 +vt 0.977630 0.143127 +vt 0.979433 0.143873 +vt 0.979433 0.144929 +vt 0.978686 0.145676 +vt 0.985377 0.327974 +vt 0.985377 0.326915 +vt 0.986294 0.326385 +vt 0.987211 0.326915 +vt 0.987211 0.327974 +vt 0.986837 0.342275 +vt 0.985377 0.344218 +vt 0.985377 0.343159 +vt 0.986294 0.342630 +vt 0.987211 0.343160 +vt 0.738443 0.979860 +vt 0.735267 0.979860 +vt 0.731292 0.979860 +vt 0.621857 0.981507 +vt 0.621857 0.980448 +vt 0.622774 0.979918 +vt 0.623691 0.980448 +vt 0.623691 0.981506 +vt 0.840883 0.920046 +vt 0.839423 0.921989 +vt 0.839423 0.920931 +vt 0.840340 0.920401 +vt 0.841256 0.920931 +vt 0.839420 0.688467 +vt 0.839420 0.905745 +vt 0.839420 0.904686 +vt 0.840337 0.904156 +vt 0.841254 0.904686 +vt 0.841254 0.905745 +vt 0.839420 0.670040 +vt 0.986837 0.294606 +vt 0.985377 0.296549 +vt 0.985377 0.295491 +vt 0.986294 0.294961 +vt 0.987211 0.295491 +vt 0.839420 0.672932 +vt 0.839420 0.666839 +vt 0.985377 0.312084 +vt 0.985377 0.311025 +vt 0.986294 0.310496 +vt 0.987211 0.311025 +vt 0.987211 0.312084 +vt 0.978344 0.186557 +vt 0.976884 0.188500 +vt 0.976884 0.187442 +vt 0.977801 0.186912 +vt 0.978718 0.187442 +vt 0.628599 0.949880 +vt 0.624806 0.949880 +vt 0.626923 0.949880 +vn -0.1139 0.0000 0.9935 +vn -1.0000 0.0000 0.0000 +vn -0.1139 -0.0000 -0.9935 +vn -0.0587 -0.9983 0.0000 +vn -0.0587 0.9983 0.0000 +vn -0.0542 0.0000 0.9985 +vn -0.0542 -0.0000 -0.9985 +vn -0.0542 -0.9985 0.0000 +vn -0.0542 0.9985 0.0000 +vn -0.0543 0.0000 -0.9985 +vn 0.0000 0.0002 1.0000 +vn 0.0000 0.0792 0.9969 +vn 0.0000 0.3096 0.9509 +vn 0.0000 0.5878 0.8090 +vn 0.0000 0.8090 0.5878 +vn 0.0000 0.9511 0.3090 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.9969 0.0785 +vn 0.0000 -0.9511 -0.3090 +vn 0.0000 -0.9877 -0.1564 +vn 0.0000 -0.5878 -0.8090 +vn 0.0000 -0.8090 -0.5878 +vn 0.0000 -0.0792 -0.9969 +vn 0.0000 -0.3096 -0.9509 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -0.0002 -1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.9679 0.2513 0.0000 +vn 0.9919 0.1267 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.6412 0.0000 -0.7674 +vn 0.0000 0.9941 0.1087 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.9919 0.1267 0.0000 +vn -0.9679 0.2513 0.0000 +vn -0.6412 0.0000 -0.7674 +vn -0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 0.9239 +vn -0.9585 0.2850 0.0000 +vn -0.9865 0.1639 0.0000 +vn -0.8450 -0.5348 0.0000 +vn 0.7830 0.6220 -0.0000 +vn -0.9302 0.3672 0.0000 +vn 0.1471 -0.9891 -0.0000 +vn 0.3299 -0.9440 0.0000 +vn -0.1471 0.9891 0.0000 +vn 0.9302 -0.3672 0.0000 +vn -0.5247 -0.8513 0.0000 +vn -0.8112 0.5848 0.0000 +vn -0.2540 0.9672 0.0000 +vn -0.3720 0.9282 0.0000 +vn -0.8957 0.4446 0.0000 +vn 0.9381 -0.3464 0.0000 +vn -0.1690 0.9856 0.0000 +vn -0.7691 -0.6392 0.0000 +vn -0.6356 -0.7720 -0.0000 +vn 0.7690 0.6392 -0.0000 +vn 0.1690 -0.9856 0.0000 +vn -1.0000 0.0066 0.0000 +vn 0.0788 0.9969 0.0000 +vn 0.0001 -0.0000 -1.0000 +vn 0.1973 0.9803 0.0000 +vn 0.0742 0.9972 0.0000 +vn -0.6089 0.7932 0.0000 +vn -0.6089 0.7933 0.0000 +vn -0.0001 0.0000 1.0000 +vn 0.6901 -0.7237 0.0000 +vn 0.2817 0.9595 0.0000 +vn -0.9718 -0.2358 0.0000 +vn -0.9104 -0.4138 0.0000 +vn 0.9718 0.2358 -0.0000 +vn -0.2817 -0.9595 -0.0000 +vn -0.8951 0.4458 0.0000 +vn -0.8952 0.4458 0.0000 +vn 0.5092 0.8606 -0.0000 +vn -0.9967 0.0811 0.0000 +vn 0.9997 0.0257 -0.0000 +vn -0.5221 0.8529 0.0000 +vn -0.4776 -0.8786 0.0000 +vn -0.3044 -0.9525 -0.0000 +vn 0.4776 0.8786 -0.0000 +vn 0.5221 -0.8529 0.0000 +vn -0.9313 -0.3642 -0.0000 +vn -0.9313 -0.3643 -0.0000 +vn -0.2961 0.9552 0.0000 +vn -0.8260 0.5637 0.0000 +vn 0.0002 0.0000 1.0000 +s off +f 534/1/1 539/2/1 538/3/1 +f 539/2/2 536/4/2 538/3/2 +f 537/5/3 532/6/3 536/4/3 +f 534/7/4 536/4/4 532/8/4 +f 535/9/5 537/5/5 539/2/5 +f 543/10/6 546/11/6 542/12/6 +f 547/13/2 544/14/2 546/11/2 +f 545/15/7 540/16/7 544/14/7 +f 542/17/8 544/14/8 540/18/8 +f 543/19/9 545/15/9 547/13/9 +f 551/20/6 554/21/6 550/22/6 +f 555/23/2 552/24/2 554/21/2 +f 553/25/10 548/26/10 552/24/10 +f 554/21/8 548/27/8 550/28/8 +f 551/29/9 553/25/9 555/23/9 +f 559/30/6 562/31/6 558/32/6 +f 563/33/2 560/34/2 562/31/2 +f 561/35/7 556/36/7 560/34/7 +f 562/31/8 556/37/8 558/38/8 +f 563/33/9 557/39/9 561/35/9 +f 566/40/6 571/41/6 570/42/6 +f 571/41/2 568/43/2 570/42/2 +f 569/44/10 564/45/10 568/43/10 +f 570/42/8 564/46/8 566/47/8 +f 567/48/9 569/44/9 571/41/9 +f 534/1/1 535/49/1 539/2/1 +f 539/2/2 537/5/2 536/4/2 +f 537/5/3 533/50/3 532/6/3 +f 534/7/4 538/3/4 536/4/4 +f 535/9/5 533/51/5 537/5/5 +f 543/10/6 547/13/6 546/11/6 +f 547/13/2 545/15/2 544/14/2 +f 545/15/7 541/52/7 540/16/7 +f 542/17/8 546/11/8 544/14/8 +f 543/19/9 541/53/9 545/15/9 +f 551/20/6 555/23/6 554/21/6 +f 555/23/2 553/25/2 552/24/2 +f 553/25/7 549/54/7 548/26/7 +f 554/21/8 552/24/8 548/27/8 +f 551/29/9 549/55/9 553/25/9 +f 559/30/6 563/33/6 562/31/6 +f 563/33/2 561/35/2 560/34/2 +f 561/35/7 557/56/7 556/36/7 +f 562/31/8 560/34/8 556/37/8 +f 563/33/9 559/57/9 557/39/9 +f 566/40/6 567/58/6 571/41/6 +f 571/41/2 569/44/2 568/43/2 +f 569/44/7 565/59/7 564/45/7 +f 570/42/8 568/43/8 564/46/8 +f 567/48/9 565/60/9 569/44/9 +s 1 +f 465/61/11 12/62/12 466/63/12 +f 466/63/12 13/64/13 467/65/13 +f 467/65/13 14/66/14 468/67/14 +f 468/67/14 15/68/15 469/69/15 +f 469/69/15 16/70/16 470/71/16 +f 18/72/17 465/73/17 472/74/17 +f 8/75/18 19/76/18 1/77/18 +f 205/78/19 228/79/19 206/80/19 +f 471/81/20 9/82/18 473/83/18 +f 1/84/19 12/85/19 11/86/19 +f 5/87/19 12/85/19 6/88/19 +f 4/89/19 13/90/19 5/87/19 +f 4/89/19 15/91/19 14/92/19 +f 2/93/19 15/91/19 3/94/19 +f 7/95/19 16/96/19 2/93/19 +f 1/84/19 18/97/19 8/98/19 +f 21/99/19 20/100/19 26/101/19 +f 2/102/21 25/103/22 7/104/22 +f 4/105/23 23/106/24 3/107/24 +f 6/108/25 21/109/26 5/110/26 +f 7/104/27 26/111/27 8/112/27 +f 3/107/24 24/113/21 2/102/21 +f 5/110/26 22/114/23 4/105/23 +f 1/115/28 20/116/25 6/108/25 +f 33/117/27 27/118/27 32/119/27 +f 30/120/18 33/121/18 38/122/18 +f 37/123/19 31/124/19 35/125/19 +f 30/126/29 36/127/29 29/128/29 +f 35/125/30 38/129/30 37/123/30 +f 36/130/31 31/124/31 32/131/31 +f 33/121/32 37/123/32 38/122/32 +f 32/119/33 34/132/33 33/117/33 +f 36/130/17 27/133/17 29/134/17 +f 50/135/27 39/136/27 43/137/27 +f 48/138/29 46/139/29 49/140/29 +f 46/139/34 50/135/35 49/140/35 +f 44/141/27 47/142/27 50/135/27 +f 45/143/17 39/144/17 41/145/17 +f 42/146/18 44/141/18 46/139/18 +f 49/140/35 43/137/19 45/143/19 +f 48/138/29 45/143/29 41/147/29 +f 62/148/27 51/149/27 55/150/27 +f 60/151/29 58/152/29 61/153/29 +f 58/152/34 62/148/35 61/153/35 +f 56/154/27 59/155/27 62/148/27 +f 57/156/17 51/157/17 53/158/17 +f 54/159/18 56/154/18 58/152/18 +f 61/153/35 55/150/19 57/156/19 +f 60/151/29 57/156/29 53/160/29 +f 66/161/29 72/162/29 65/163/29 +f 67/164/29 78/165/29 68/166/29 +f 74/167/27 63/168/27 73/169/27 +f 72/162/17 63/170/17 65/171/17 +f 66/172/18 74/167/18 71/173/18 +f 69/174/19 71/173/19 70/175/19 +f 69/174/19 73/169/19 72/162/19 +f 68/176/19 71/173/19 74/167/19 +f 68/176/19 73/169/19 67/177/19 +f 75/178/19 77/179/19 76/180/19 +f 69/181/18 77/179/18 67/182/18 +f 68/183/17 75/178/17 70/184/17 +f 70/185/27 76/180/27 69/186/27 +f 82/187/18 86/188/18 89/189/18 +f 90/190/19 84/191/19 87/192/19 +f 88/193/31 84/191/31 83/194/31 +f 86/188/32 90/190/32 89/189/32 +f 88/193/17 79/195/17 81/196/17 +f 94/197/18 98/198/18 101/199/18 +f 102/200/19 96/201/19 99/202/19 +f 100/203/31 96/201/31 95/204/31 +f 98/198/32 102/200/32 101/199/32 +f 100/203/17 91/205/17 93/206/17 +f 106/207/18 110/208/18 113/209/18 +f 114/210/19 108/211/19 111/212/19 +f 112/213/31 108/211/31 107/214/31 +f 110/208/32 114/210/32 113/209/32 +f 112/213/17 103/215/17 105/216/17 +f 118/217/18 122/218/18 125/219/18 +f 126/220/19 120/221/19 123/222/19 +f 124/223/31 120/221/31 119/224/31 +f 122/218/32 126/220/32 125/219/32 +f 124/223/17 115/225/17 117/226/17 +f 130/227/18 134/228/18 137/229/18 +f 138/230/19 132/231/19 135/232/19 +f 136/233/31 132/231/31 131/234/31 +f 134/228/32 138/230/32 137/229/32 +f 136/233/17 127/235/17 129/236/17 +f 142/237/18 146/238/18 149/239/18 +f 150/240/19 144/241/19 147/242/19 +f 148/243/31 144/241/31 143/244/31 +f 146/238/32 150/240/32 149/239/32 +f 148/243/17 139/245/17 141/246/17 +f 154/247/18 158/248/18 161/249/18 +f 162/250/19 156/251/19 159/252/19 +f 160/253/31 156/251/31 155/254/31 +f 158/248/32 162/250/32 161/249/32 +f 160/253/17 151/255/17 153/256/17 +f 164/257/17 165/258/36 163/259/17 +f 166/260/36 167/261/37 165/258/36 +f 168/262/37 169/263/38 167/261/37 +f 170/264/38 171/265/39 169/263/38 +f 172/266/39 173/267/18 171/265/39 +f 175/268/27 185/269/27 177/270/27 +f 170/271/29 168/272/29 176/273/29 +f 178/274/29 180/275/29 186/276/29 +f 175/268/27 182/277/27 183/278/27 +f 169/279/27 173/280/27 177/270/27 +f 194/281/40 197/282/41 187/283/41 +f 202/284/29 200/285/29 198/286/29 +f 176/273/29 181/287/29 174/288/29 +f 174/289/18 182/290/18 173/267/18 +f 163/259/17 180/291/17 164/257/17 +f 177/270/27 179/292/27 163/293/27 +f 178/274/29 184/294/29 176/273/29 +f 200/295/42 193/296/43 192/297/42 +f 198/298/38 191/299/39 190/300/38 +f 195/301/36 189/302/37 188/303/36 +f 201/304/43 194/305/40 193/296/43 +f 199/306/39 192/297/42 191/299/39 +f 197/282/41 188/303/36 187/283/41 +f 196/307/37 190/300/38 189/302/37 +f 216/308/17 227/309/17 205/310/17 +f 206/311/19 207/312/19 8/98/19 +f 211/313/18 483/314/18 475/315/18 +f 211/313/18 226/316/18 219/317/18 +f 210/318/18 489/319/18 481/320/18 +f 203/321/44 216/322/44 205/323/44 +f 210/318/18 232/324/18 225/325/18 +f 215/326/44 207/327/44 206/328/44 +f 208/329/44 212/330/44 209/331/44 +f 209/332/19 232/333/19 204/334/19 +f 204/335/44 9/336/44 17/337/44 +f 218/338/44 219/339/44 226/340/44 +f 227/341/44 221/342/44 228/79/44 +f 229/343/44 223/344/44 230/345/44 +f 231/346/44 225/347/44 232/333/44 +f 215/348/18 228/349/18 221/350/18 +f 215/348/18 485/351/18 477/352/18 +f 214/353/17 229/354/17 207/355/17 +f 18/356/19 226/340/19 203/357/19 +f 207/358/19 230/345/19 208/359/19 +f 213/360/18 230/361/18 223/362/18 +f 213/360/18 487/363/18 479/364/18 +f 10/365/17 218/366/17 18/72/17 +f 212/367/17 231/368/17 209/369/17 +f 488/370/29 225/347/29 224/371/29 +f 486/372/29 223/344/29 222/373/29 +f 484/374/29 221/342/29 220/375/29 +f 217/376/29 483/377/29 219/339/29 +f 480/378/17 224/379/17 212/367/17 +f 479/380/29 212/330/29 213/381/29 +f 478/382/17 222/383/17 214/353/17 +f 477/384/29 214/385/29 215/326/29 +f 476/386/17 220/387/17 216/308/17 +f 475/388/29 216/322/29 211/389/29 +f 474/390/17 217/391/17 10/365/17 +f 210/392/29 473/393/29 9/336/29 +f 472/74/17 10/365/17 18/72/17 +f 471/81/20 16/70/16 17/394/45 +f 244/395/12 465/61/11 466/63/12 +f 245/396/13 466/63/12 467/65/13 +f 246/397/14 467/65/13 468/67/14 +f 247/398/15 468/67/14 469/69/15 +f 248/399/16 469/69/15 470/71/16 +f 465/73/17 250/400/17 472/74/17 +f 251/401/18 240/402/18 233/403/18 +f 460/404/2 437/405/2 438/406/2 +f 471/81/20 241/407/18 249/408/45 +f 233/409/2 244/410/2 238/411/2 +f 244/410/2 237/412/2 238/411/2 +f 245/413/2 236/414/2 237/412/2 +f 246/415/2 235/416/2 236/414/2 +f 247/417/2 234/418/2 235/416/2 +f 248/419/2 239/420/2 234/418/2 +f 250/421/2 233/409/2 240/422/2 +f 255/423/2 256/424/2 257/425/2 +f 257/426/22 234/427/21 239/428/22 +f 255/429/24 236/430/23 235/431/24 +f 253/432/26 238/433/25 237/434/26 +f 240/435/27 257/426/27 239/428/27 +f 256/436/21 235/431/24 234/427/21 +f 254/437/23 237/434/26 236/430/23 +f 252/438/25 233/439/28 238/433/25 +f 259/440/27 265/441/27 264/442/27 +f 265/443/18 262/444/18 270/445/18 +f 263/446/2 269/447/2 267/448/2 +f 268/449/29 262/450/29 261/451/29 +f 270/452/46 267/448/46 269/447/46 +f 263/446/47 268/453/47 264/454/47 +f 269/447/48 265/443/48 270/445/48 +f 266/455/49 264/442/49 265/441/49 +f 259/456/17 268/453/17 261/457/17 +f 271/458/27 282/459/27 275/460/27 +f 280/461/29 278/462/29 274/463/29 +f 282/459/50 278/462/51 281/464/50 +f 279/465/27 276/466/27 282/459/27 +f 271/467/17 277/468/17 273/469/17 +f 276/466/18 274/470/18 278/462/18 +f 275/460/2 281/464/50 277/468/2 +f 277/468/29 280/461/29 273/471/29 +f 283/472/27 294/473/27 287/474/27 +f 292/475/29 290/476/29 286/477/29 +f 294/473/50 290/476/51 293/478/50 +f 291/479/27 288/480/27 294/473/27 +f 283/481/17 289/482/17 285/483/17 +f 288/480/18 286/484/18 290/476/18 +f 287/474/2 293/478/50 289/482/2 +f 289/482/29 292/475/29 285/485/29 +f 304/486/29 298/487/29 297/488/29 +f 310/489/29 299/490/29 300/491/29 +f 295/492/27 306/493/27 305/494/27 +f 295/495/17 304/486/17 297/496/17 +f 306/493/18 298/497/18 303/498/18 +f 303/498/2 301/499/2 302/500/2 +f 304/486/2 299/501/2 301/499/2 +f 306/493/2 302/500/2 300/502/2 +f 305/494/2 300/502/2 299/501/2 +f 309/503/2 307/504/2 308/505/2 +f 309/503/18 301/506/18 299/507/18 +f 307/504/17 300/508/17 302/509/17 +f 308/505/27 302/510/27 301/511/27 +f 318/512/18 314/513/18 321/514/18 +f 316/515/2 322/516/2 319/517/2 +f 316/515/47 320/518/47 315/519/47 +f 322/516/48 318/512/48 321/514/48 +f 311/520/17 320/518/17 313/521/17 +f 330/522/18 326/523/18 333/524/18 +f 328/525/2 334/526/2 331/527/2 +f 328/525/47 332/528/47 327/529/47 +f 334/526/48 330/522/48 333/524/48 +f 323/530/17 332/528/17 325/531/17 +f 342/532/18 338/533/18 345/534/18 +f 340/535/2 346/536/2 343/537/2 +f 340/535/47 344/538/47 339/539/47 +f 346/536/48 342/532/48 345/534/48 +f 335/540/17 344/538/17 337/541/17 +f 354/542/18 350/543/18 357/544/18 +f 352/545/2 358/546/2 355/547/2 +f 352/545/47 356/548/47 351/549/47 +f 358/546/48 354/542/48 357/544/48 +f 347/550/17 356/548/17 349/551/17 +f 366/552/18 362/553/18 369/554/18 +f 364/555/2 370/556/2 367/557/2 +f 364/555/47 368/558/47 363/559/47 +f 370/556/48 366/552/48 369/554/48 +f 359/560/17 368/558/17 361/561/17 +f 378/562/18 374/563/18 381/564/18 +f 376/565/2 382/566/2 379/567/2 +f 376/565/47 380/568/47 375/569/47 +f 382/566/48 378/562/48 381/564/48 +f 371/570/17 380/568/17 373/571/17 +f 390/572/18 386/573/18 393/574/18 +f 388/575/2 394/576/2 391/577/2 +f 388/575/47 392/578/47 387/579/47 +f 394/576/48 390/572/48 393/574/48 +f 383/580/17 392/578/17 385/581/17 +f 397/582/41 396/583/17 395/584/17 +f 399/585/40 398/586/41 397/582/41 +f 401/587/43 400/588/40 399/585/40 +f 403/589/42 402/590/43 401/587/43 +f 405/591/18 404/592/42 403/589/42 +f 417/593/27 407/594/27 409/595/27 +f 400/596/29 404/597/29 408/598/29 +f 410/599/29 412/600/29 396/601/29 +f 407/594/27 414/602/27 405/603/27 +f 409/595/27 405/603/27 401/604/27 +f 419/605/36 434/606/37 426/607/37 +f 430/608/29 432/609/29 434/610/29 +f 413/611/29 408/598/29 406/612/29 +f 414/613/18 406/614/18 405/591/18 +f 412/615/17 395/584/17 396/583/17 +f 411/616/27 409/595/27 395/617/27 +f 416/618/29 410/599/29 408/598/29 +f 425/619/38 432/620/39 424/621/39 +f 423/622/42 430/623/43 422/624/43 +f 421/625/40 427/626/41 420/627/41 +f 426/628/37 433/629/38 425/619/38 +f 424/621/39 431/630/42 423/622/42 +f 420/627/41 429/631/36 419/605/36 +f 422/624/43 428/632/40 421/625/40 +f 459/633/17 448/634/17 437/635/17 +f 435/636/2 250/421/2 240/422/2 +f 483/314/18 443/637/18 475/315/18 +f 443/637/18 458/638/18 435/639/18 +f 489/319/18 442/640/18 481/320/18 +f 435/641/52 448/642/52 443/643/52 +f 442/640/18 464/644/18 436/645/18 +f 439/646/52 447/647/52 438/648/52 +f 440/649/52 444/650/52 445/651/52 +f 464/652/2 441/653/2 436/654/2 +f 241/655/52 436/656/52 249/657/52 +f 451/658/52 450/659/52 458/660/52 +f 459/661/52 453/662/52 452/663/52 +f 461/664/52 455/665/52 454/666/52 +f 463/667/52 457/668/52 456/669/52 +f 447/670/18 460/671/18 438/672/18 +f 485/351/18 447/670/18 477/352/18 +f 461/673/17 446/674/17 439/675/17 +f 458/660/2 250/676/2 435/677/2 +f 462/678/2 439/679/2 440/680/2 +f 445/681/18 462/682/18 440/683/18 +f 487/363/18 445/681/18 479/364/18 +f 450/684/17 242/685/17 250/400/17 +f 463/686/17 444/687/17 441/688/17 +f 457/668/29 488/370/29 456/669/29 +f 455/665/29 486/372/29 454/666/29 +f 453/662/29 484/374/29 452/663/29 +f 483/377/29 449/689/29 451/658/29 +f 456/690/17 480/378/17 444/687/17 +f 444/650/29 479/380/29 445/651/29 +f 454/691/17 478/382/17 446/674/17 +f 446/692/29 477/384/29 447/647/29 +f 452/693/17 476/386/17 448/634/17 +f 448/642/29 475/388/29 443/643/29 +f 449/694/17 474/390/17 242/685/17 +f 473/393/29 442/695/29 241/655/29 +f 242/685/17 472/74/17 250/400/17 +f 248/399/16 471/81/20 249/408/45 +f 490/696/53 493/697/46 492/698/46 +f 493/697/46 494/699/2 492/698/46 +f 495/700/2 496/701/49 494/699/2 +f 496/701/49 499/702/54 498/703/54 +f 492/704/18 496/705/18 498/706/18 +f 499/707/17 497/708/17 495/709/17 +f 502/710/18 500/711/48 501/712/18 +f 510/713/29 517/714/29 500/715/29 +f 503/716/48 510/717/2 500/711/48 +f 504/718/2 511/719/47 510/717/2 +f 513/720/29 527/721/29 525/722/29 +f 505/723/47 512/724/17 511/719/47 +f 510/713/29 521/725/29 518/726/29 +f 506/727/17 513/728/31 512/724/17 +f 501/729/29 517/714/29 516/730/29 +f 507/731/31 514/732/19 513/728/31 +f 508/733/19 515/734/32 514/735/19 +f 509/736/32 501/712/18 515/734/32 +f 516/737/18 520/738/48 519/739/18 +f 517/740/48 522/741/2 520/738/48 +f 518/742/2 524/743/47 522/741/2 +f 521/744/47 526/745/17 524/743/47 +f 526/745/17 525/746/31 528/747/31 +f 525/746/31 530/748/19 528/747/31 +f 529/749/32 519/739/18 531/750/32 +f 527/751/19 531/750/32 530/752/19 +f 512/753/29 525/722/29 523/754/29 +f 501/729/29 529/755/29 515/756/29 +f 531/757/27 520/758/27 524/759/27 +f 512/753/29 521/725/29 511/760/29 +f 515/756/29 527/721/29 514/761/29 +f 577/762/29 578/763/29 579/764/29 +f 580/765/55 579/766/56 578/767/55 +f 583/768/57 585/769/57 582/770/57 +f 580/771/27 583/772/27 586/773/27 +f 590/774/27 591/775/27 586/773/27 +f 573/776/58 591/777/58 574/778/58 +f 581/779/56 572/780/59 579/766/56 +f 590/781/60 576/782/60 575/783/60 +f 586/784/61 582/770/61 577/785/61 +f 588/786/62 573/787/62 572/780/62 +f 591/777/63 575/783/63 574/778/63 +f 576/782/64 586/784/64 577/785/64 +f 580/765/55 585/769/65 584/788/65 +f 578/763/29 582/789/29 585/790/29 +f 597/791/29 598/792/29 599/793/29 +f 600/794/66 599/795/67 598/796/66 +f 603/797/68 605/798/68 602/799/68 +f 600/800/27 603/801/27 606/802/27 +f 610/803/27 611/804/27 606/802/27 +f 607/805/69 594/806/69 593/807/69 +f 601/808/67 592/809/70 599/795/67 +f 610/810/71 596/811/71 595/812/71 +f 606/813/72 602/799/72 597/814/72 +f 592/809/73 607/815/73 593/816/73 +f 611/817/74 595/812/74 594/806/74 +f 609/818/75 597/814/75 596/811/75 +f 600/794/66 605/798/76 604/819/76 +f 598/792/29 602/820/29 605/821/29 +f 617/822/29 618/823/77 619/824/29 +f 620/825/78 619/826/79 618/827/78 +f 622/828/80 624/829/81 625/830/80 +f 620/831/82 623/832/27 626/833/27 +f 630/834/27 631/835/27 626/833/27 +f 627/836/83 614/837/83 613/838/83 +f 621/839/79 612/840/84 619/826/79 +f 630/841/85 616/842/85 615/843/85 +f 626/844/86 622/828/86 617/845/86 +f 628/846/87 613/847/87 612/840/87 +f 614/837/88 630/841/88 615/843/88 +f 629/848/89 617/845/90 616/842/90 +f 618/827/78 624/829/91 620/825/78 +f 618/823/77 622/849/29 625/850/29 +f 637/851/29 638/852/77 639/853/29 +f 643/854/92 645/855/92 642/856/92 +f 640/857/27 643/858/27 646/859/27 +f 650/860/27 651/861/27 646/859/27 +f 647/862/93 634/863/93 633/864/93 +f 641/865/94 632/866/94 639/867/94 +f 650/868/95 636/869/95 635/870/95 +f 637/871/96 643/854/96 642/856/96 +f 648/872/97 633/873/97 632/866/97 +f 651/874/98 635/870/98 634/863/98 +f 649/875/99 637/871/100 636/869/100 +f 638/876/101 644/877/101 640/878/101 +f 638/852/77 642/879/29 645/880/77 +f 654/881/102 653/882/102 652/883/102 +f 465/61/11 11/884/11 12/62/12 +f 466/63/12 12/62/12 13/64/13 +f 467/65/13 13/64/13 14/66/14 +f 468/67/14 14/66/14 15/68/15 +f 469/69/15 15/68/15 16/70/16 +f 18/72/17 11/885/17 465/73/17 +f 8/75/18 26/886/18 19/76/18 +f 205/78/19 227/341/19 228/79/19 +f 471/81/20 17/394/45 9/82/18 +f 1/84/19 6/88/19 12/85/19 +f 5/87/19 13/90/19 12/85/19 +f 4/89/19 14/92/19 13/90/19 +f 4/89/19 3/94/19 15/91/19 +f 2/93/19 16/96/19 15/91/19 +f 7/95/19 17/887/19 16/96/19 +f 1/84/19 11/86/19 18/97/19 +f 19/888/19 26/101/19 20/100/19 +f 26/101/19 25/889/19 23/890/19 +f 25/889/19 24/891/19 23/890/19 +f 23/890/19 22/892/19 26/101/19 +f 22/892/19 21/99/19 26/101/19 +f 2/102/21 24/113/21 25/103/22 +f 4/105/23 22/114/23 23/106/24 +f 6/108/25 20/116/25 21/109/26 +f 7/104/27 25/103/27 26/111/27 +f 3/107/24 23/106/24 24/113/21 +f 5/110/26 21/109/26 22/114/23 +f 1/115/28 19/893/28 20/116/25 +f 33/117/27 28/894/27 27/118/27 +f 30/120/18 28/895/18 33/121/18 +f 37/123/19 34/132/19 31/124/19 +f 30/126/29 38/129/29 36/127/29 +f 35/125/30 36/127/30 38/129/30 +f 36/130/31 35/125/31 31/124/31 +f 33/121/32 34/132/32 37/123/32 +f 32/119/33 31/124/33 34/132/33 +f 36/130/17 32/131/17 27/133/17 +f 50/135/27 47/142/27 39/136/27 +f 48/138/29 42/896/29 46/139/29 +f 46/139/34 44/141/34 50/135/35 +f 44/141/27 40/897/27 47/142/27 +f 45/143/17 43/137/17 39/144/17 +f 42/146/18 40/898/18 44/141/18 +f 49/140/35 50/135/35 43/137/19 +f 48/138/29 49/140/29 45/143/29 +f 62/148/27 59/155/27 51/149/27 +f 60/151/29 54/899/29 58/152/29 +f 58/152/34 56/154/34 62/148/35 +f 56/154/27 52/900/27 59/155/27 +f 57/156/17 55/150/17 51/157/17 +f 54/159/18 52/901/18 56/154/18 +f 61/153/35 62/148/35 55/150/19 +f 60/151/29 61/153/29 57/156/29 +f 66/161/29 71/173/29 72/162/29 +f 67/164/29 77/179/29 78/165/29 +f 74/167/27 64/902/27 63/168/27 +f 72/162/17 73/169/17 63/170/17 +f 66/172/18 64/903/18 74/167/18 +f 69/174/19 72/162/19 71/173/19 +f 69/174/19 67/177/19 73/169/19 +f 68/176/19 70/175/19 71/173/19 +f 68/176/19 74/167/19 73/169/19 +f 75/178/19 78/165/19 77/179/19 +f 69/181/18 76/180/18 77/179/18 +f 68/183/17 78/165/17 75/178/17 +f 70/185/27 75/178/27 76/180/27 +f 82/187/18 80/904/18 86/188/18 +f 90/190/19 85/905/19 84/191/19 +f 88/193/31 87/192/31 84/191/31 +f 86/188/32 85/905/32 90/190/32 +f 88/193/17 83/194/17 79/195/17 +f 94/197/18 92/906/18 98/198/18 +f 102/200/19 97/907/19 96/201/19 +f 100/203/31 99/202/31 96/201/31 +f 98/198/32 97/907/32 102/200/32 +f 100/203/17 95/204/17 91/205/17 +f 106/207/18 104/908/18 110/208/18 +f 114/210/19 109/909/19 108/211/19 +f 112/213/31 111/212/31 108/211/31 +f 110/208/32 109/909/32 114/210/32 +f 112/213/17 107/214/17 103/215/17 +f 118/217/18 116/910/18 122/218/18 +f 126/220/19 121/911/19 120/221/19 +f 124/223/31 123/222/31 120/221/31 +f 122/218/32 121/911/32 126/220/32 +f 124/223/17 119/224/17 115/225/17 +f 130/227/18 128/912/18 134/228/18 +f 138/230/19 133/913/19 132/231/19 +f 136/233/31 135/232/31 132/231/31 +f 134/228/32 133/913/32 138/230/32 +f 136/233/17 131/234/17 127/235/17 +f 142/237/18 140/914/18 146/238/18 +f 150/240/19 145/915/19 144/241/19 +f 148/243/31 147/242/31 144/241/31 +f 146/238/32 145/915/32 150/240/32 +f 148/243/17 143/244/17 139/245/17 +f 154/247/18 152/916/18 158/248/18 +f 162/250/19 157/917/19 156/251/19 +f 160/253/31 159/252/31 156/251/31 +f 158/248/32 157/917/32 162/250/32 +f 160/253/17 155/254/17 151/255/17 +f 164/257/17 166/260/36 165/258/36 +f 166/260/36 168/262/37 167/261/37 +f 168/262/37 170/264/38 169/263/38 +f 170/264/38 172/266/39 171/265/39 +f 172/266/39 174/289/18 173/267/18 +f 175/268/27 183/278/27 185/269/27 +f 168/272/29 166/918/29 164/919/29 +f 164/919/29 178/274/29 168/272/29 +f 178/274/29 176/273/29 168/272/29 +f 176/273/29 174/288/29 172/920/29 +f 172/920/29 170/271/29 176/273/29 +f 178/274/29 164/919/29 180/275/29 +f 175/268/27 173/280/27 182/277/27 +f 177/270/27 163/293/27 165/921/27 +f 165/921/27 167/922/27 177/270/27 +f 167/922/27 169/279/27 177/270/27 +f 169/279/27 171/923/27 173/280/27 +f 173/280/27 175/268/27 177/270/27 +f 194/281/40 202/924/40 197/282/41 +f 195/925/29 197/926/29 202/284/29 +f 202/284/29 201/927/29 200/285/29 +f 200/285/29 199/928/29 198/286/29 +f 198/286/29 196/929/29 195/925/29 +f 195/925/29 202/284/29 198/286/29 +f 176/273/29 184/294/29 181/287/29 +f 174/289/18 181/930/18 182/290/18 +f 163/259/17 179/931/17 180/291/17 +f 177/270/27 185/269/27 179/292/27 +f 178/274/29 186/276/29 184/294/29 +f 200/295/42 201/304/43 193/296/43 +f 198/298/38 199/306/39 191/299/39 +f 195/301/36 196/307/37 189/302/37 +f 201/304/43 202/932/40 194/305/40 +f 199/306/39 200/295/42 192/297/42 +f 197/282/41 195/301/36 188/303/36 +f 196/307/37 198/298/38 190/300/38 +f 216/308/17 220/387/17 227/309/17 +f 17/887/19 7/95/19 204/933/19 +f 7/95/19 8/98/19 207/312/19 +f 204/933/19 7/95/19 209/934/19 +f 8/98/19 18/97/19 203/935/19 +f 203/935/19 205/936/19 8/98/19 +f 205/936/19 206/311/19 8/98/19 +f 207/312/19 208/937/19 7/95/19 +f 208/937/19 209/934/19 7/95/19 +f 211/313/18 219/317/18 483/314/18 +f 211/313/18 203/938/18 226/316/18 +f 210/318/18 225/325/18 489/319/18 +f 203/321/44 211/389/44 216/322/44 +f 210/318/18 204/939/18 232/324/18 +f 215/326/44 214/385/44 207/327/44 +f 208/329/44 213/381/44 212/330/44 +f 209/332/19 231/346/19 232/333/19 +f 204/335/44 210/392/44 9/336/44 +f 218/338/44 217/376/44 219/339/44 +f 227/341/44 220/375/44 221/342/44 +f 229/343/44 222/373/44 223/344/44 +f 231/346/44 224/371/44 225/347/44 +f 215/348/18 206/940/18 228/349/18 +f 215/348/18 221/350/18 485/351/18 +f 214/353/17 222/383/17 229/354/17 +f 18/356/19 218/338/19 226/340/19 +f 207/358/19 229/343/19 230/345/19 +f 213/360/18 208/941/18 230/361/18 +f 213/360/18 223/362/18 487/363/18 +f 10/365/17 217/391/17 218/366/17 +f 212/367/17 224/379/17 231/368/17 +f 488/370/29 489/942/29 225/347/29 +f 486/372/29 487/943/29 223/344/29 +f 484/374/29 485/944/29 221/342/29 +f 217/376/29 482/945/29 483/377/29 +f 480/378/17 488/946/17 224/379/17 +f 479/380/29 480/947/29 212/330/29 +f 478/382/17 486/948/17 222/383/17 +f 477/384/29 478/949/29 214/385/29 +f 476/386/17 484/950/17 220/387/17 +f 475/388/29 476/951/29 216/322/29 +f 474/390/17 482/952/17 217/391/17 +f 210/392/29 481/953/29 473/393/29 +f 472/74/17 474/390/17 10/365/17 +f 471/81/20 470/71/16 16/70/16 +f 244/395/12 243/954/11 465/61/11 +f 245/396/13 244/395/12 466/63/12 +f 246/397/14 245/396/13 467/65/13 +f 247/398/15 246/397/14 468/67/14 +f 248/399/16 247/398/15 469/69/15 +f 465/73/17 243/955/17 250/400/17 +f 251/401/18 258/956/18 240/402/18 +f 460/404/2 459/661/2 437/405/2 +f 471/81/20 473/83/18 241/407/18 +f 233/409/2 243/957/2 244/410/2 +f 244/410/2 245/413/2 237/412/2 +f 245/413/2 246/415/2 236/414/2 +f 246/415/2 247/417/2 235/416/2 +f 247/417/2 248/419/2 234/418/2 +f 248/419/2 249/958/2 239/420/2 +f 250/421/2 243/957/2 233/409/2 +f 257/425/2 258/959/2 255/423/2 +f 258/959/2 251/960/2 252/961/2 +f 253/962/2 258/959/2 252/961/2 +f 253/962/2 254/963/2 258/959/2 +f 254/963/2 255/423/2 258/959/2 +f 257/426/22 256/436/21 234/427/21 +f 255/429/24 254/437/23 236/430/23 +f 253/432/26 252/438/25 238/433/25 +f 240/435/27 258/964/27 257/426/27 +f 256/436/21 255/429/24 235/431/24 +f 254/437/23 253/432/26 237/434/26 +f 252/438/25 251/965/28 233/439/28 +f 259/440/27 260/966/27 265/441/27 +f 265/443/18 260/967/18 262/444/18 +f 263/446/2 266/455/2 269/447/2 +f 268/449/29 270/452/29 262/450/29 +f 270/452/46 268/449/46 267/448/46 +f 263/446/47 267/448/47 268/453/47 +f 269/447/48 266/455/48 265/443/48 +f 266/455/49 263/446/49 264/442/49 +f 259/456/17 264/454/17 268/453/17 +f 271/458/27 279/465/27 282/459/27 +f 280/461/29 281/464/29 278/462/29 +f 282/459/50 276/466/51 278/462/51 +f 279/465/27 272/968/27 276/466/27 +f 271/467/17 275/460/17 277/468/17 +f 276/466/18 272/969/18 274/470/18 +f 275/460/2 282/459/50 281/464/50 +f 277/468/29 281/464/29 280/461/29 +f 283/472/27 291/479/27 294/473/27 +f 292/475/29 293/478/29 290/476/29 +f 294/473/50 288/480/51 290/476/51 +f 291/479/27 284/970/27 288/480/27 +f 283/481/17 287/474/17 289/482/17 +f 288/480/18 284/971/18 286/484/18 +f 287/474/2 294/473/50 293/478/50 +f 289/482/29 293/478/29 292/475/29 +f 304/486/29 303/498/29 298/487/29 +f 310/489/29 309/503/29 299/490/29 +f 295/492/27 296/972/27 306/493/27 +f 295/495/17 305/494/17 304/486/17 +f 306/493/18 296/973/18 298/497/18 +f 303/498/2 304/486/2 301/499/2 +f 304/486/2 305/494/2 299/501/2 +f 306/493/2 303/498/2 302/500/2 +f 305/494/2 306/493/2 300/502/2 +f 309/503/2 310/489/2 307/504/2 +f 309/503/18 308/505/18 301/506/18 +f 307/504/17 310/489/17 300/508/17 +f 308/505/27 307/504/27 302/510/27 +f 318/512/18 312/974/18 314/513/18 +f 316/515/2 317/975/2 322/516/2 +f 316/515/47 319/517/47 320/518/47 +f 322/516/48 317/975/48 318/512/48 +f 311/520/17 315/519/17 320/518/17 +f 330/522/18 324/976/18 326/523/18 +f 328/525/2 329/977/2 334/526/2 +f 328/525/47 331/527/47 332/528/47 +f 334/526/48 329/977/48 330/522/48 +f 323/530/17 327/529/17 332/528/17 +f 342/532/18 336/978/18 338/533/18 +f 340/535/2 341/979/2 346/536/2 +f 340/535/47 343/537/47 344/538/47 +f 346/536/48 341/979/48 342/532/48 +f 335/540/17 339/539/17 344/538/17 +f 354/542/18 348/980/18 350/543/18 +f 352/545/2 353/981/2 358/546/2 +f 352/545/47 355/547/47 356/548/47 +f 358/546/48 353/981/48 354/542/48 +f 347/550/17 351/549/17 356/548/17 +f 366/552/18 360/982/18 362/553/18 +f 364/555/2 365/983/2 370/556/2 +f 364/555/47 367/557/47 368/558/47 +f 370/556/48 365/983/48 366/552/48 +f 359/560/17 363/559/17 368/558/17 +f 378/562/18 372/984/18 374/563/18 +f 376/565/2 377/985/2 382/566/2 +f 376/565/47 379/567/47 380/568/47 +f 382/566/48 377/985/48 378/562/48 +f 371/570/17 375/569/17 380/568/17 +f 390/572/18 384/986/18 386/573/18 +f 388/575/2 389/987/2 394/576/2 +f 388/575/47 391/577/47 392/578/47 +f 394/576/48 389/987/48 390/572/48 +f 383/580/17 387/579/17 392/578/17 +f 397/582/41 398/586/41 396/583/17 +f 399/585/40 400/588/40 398/586/41 +f 401/587/43 402/590/43 400/588/40 +f 403/589/42 404/592/42 402/590/43 +f 405/591/18 406/614/18 404/592/42 +f 417/593/27 415/988/27 407/594/27 +f 396/601/29 398/989/29 400/596/29 +f 400/596/29 402/990/29 404/597/29 +f 404/597/29 406/612/29 408/598/29 +f 408/598/29 410/599/29 396/601/29 +f 396/601/29 400/596/29 408/598/29 +f 410/599/29 418/991/29 412/600/29 +f 407/594/27 415/988/27 414/602/27 +f 397/992/27 395/617/27 409/595/27 +f 409/595/27 407/594/27 405/603/27 +f 405/603/27 403/993/27 401/604/27 +f 401/604/27 399/994/27 397/992/27 +f 397/992/27 409/595/27 401/604/27 +f 419/605/36 429/631/36 434/606/37 +f 434/610/29 429/995/29 427/996/29 +f 427/996/29 428/997/29 434/610/29 +f 428/997/29 430/608/29 434/610/29 +f 430/608/29 431/998/29 432/609/29 +f 432/609/29 433/999/29 434/610/29 +f 413/611/29 416/618/29 408/598/29 +f 414/613/18 413/1000/18 406/614/18 +f 412/615/17 411/1001/17 395/584/17 +f 411/616/27 417/593/27 409/595/27 +f 416/618/29 418/991/29 410/599/29 +f 425/619/38 433/629/38 432/620/39 +f 423/622/42 431/630/42 430/623/43 +f 421/625/40 428/632/40 427/626/41 +f 426/628/37 434/1002/37 433/629/38 +f 424/621/39 432/620/39 431/630/42 +f 420/627/41 427/626/41 429/631/36 +f 422/624/43 430/623/43 428/632/40 +f 459/633/17 452/693/17 448/634/17 +f 240/422/2 239/420/2 439/1003/2 +f 239/420/2 249/958/2 436/1004/2 +f 441/1005/2 239/420/2 436/1004/2 +f 441/1005/2 440/1006/2 239/420/2 +f 440/1006/2 439/1003/2 239/420/2 +f 240/422/2 439/1003/2 438/1007/2 +f 438/1007/2 437/1008/2 240/422/2 +f 437/1008/2 435/636/2 240/422/2 +f 483/314/18 451/1009/18 443/637/18 +f 443/637/18 451/1009/18 458/638/18 +f 489/319/18 457/1010/18 442/640/18 +f 435/641/52 437/1011/52 448/642/52 +f 442/640/18 457/1010/18 464/644/18 +f 439/646/52 446/692/52 447/647/52 +f 440/649/52 441/1012/52 444/650/52 +f 464/652/2 463/667/2 441/653/2 +f 241/655/52 442/695/52 436/656/52 +f 451/658/52 449/689/52 450/659/52 +f 459/661/52 460/404/52 453/662/52 +f 461/664/52 462/678/52 455/665/52 +f 463/667/52 464/652/52 457/668/52 +f 447/670/18 453/1013/18 460/671/18 +f 485/351/18 453/1013/18 447/670/18 +f 461/673/17 454/691/17 446/674/17 +f 458/660/2 450/659/2 250/676/2 +f 462/678/2 461/664/2 439/679/2 +f 445/681/18 455/1014/18 462/682/18 +f 487/363/18 455/1014/18 445/681/18 +f 450/684/17 449/694/17 242/685/17 +f 463/686/17 456/690/17 444/687/17 +f 457/668/29 489/942/29 488/370/29 +f 455/665/29 487/943/29 486/372/29 +f 453/662/29 485/944/29 484/374/29 +f 483/377/29 482/945/29 449/689/29 +f 456/690/17 488/946/17 480/378/17 +f 444/650/29 480/947/29 479/380/29 +f 454/691/17 486/948/17 478/382/17 +f 446/692/29 478/949/29 477/384/29 +f 452/693/17 484/950/17 476/386/17 +f 448/642/29 476/951/29 475/388/29 +f 449/694/17 482/952/17 474/390/17 +f 473/393/29 481/953/29 442/695/29 +f 242/685/17 474/390/17 472/74/17 +f 248/399/16 470/71/16 471/81/20 +f 490/696/53 491/1015/53 493/697/46 +f 493/697/46 495/700/2 494/699/2 +f 495/700/2 497/1016/49 496/701/49 +f 496/701/49 497/1016/49 499/702/54 +f 498/706/18 490/1017/18 492/704/18 +f 492/704/18 494/1018/18 496/705/18 +f 495/709/17 493/1019/17 491/1020/17 +f 491/1020/17 499/707/17 495/709/17 +f 502/710/18 503/716/48 500/711/48 +f 510/713/29 518/726/29 517/714/29 +f 503/716/48 504/718/2 510/717/2 +f 504/718/2 505/723/47 511/719/47 +f 513/720/29 514/761/29 527/721/29 +f 505/723/47 506/727/17 512/724/17 +f 510/713/29 511/760/29 521/725/29 +f 506/727/17 507/731/31 513/728/31 +f 501/729/29 500/715/29 517/714/29 +f 507/731/31 508/1021/19 514/732/19 +f 508/733/19 509/736/32 515/734/32 +f 509/736/32 502/710/18 501/712/18 +f 516/737/18 517/740/48 520/738/48 +f 517/740/48 518/742/2 522/741/2 +f 518/742/2 521/744/47 524/743/47 +f 521/744/47 523/1022/17 526/745/17 +f 526/745/17 523/1022/17 525/746/31 +f 525/746/31 527/1023/19 530/748/19 +f 529/749/32 516/737/18 519/739/18 +f 527/751/19 529/749/32 531/750/32 +f 512/753/29 513/720/29 525/722/29 +f 501/729/29 516/730/29 529/755/29 +f 531/757/27 519/1024/27 520/758/27 +f 520/758/27 522/1025/27 524/759/27 +f 524/759/27 526/1026/27 531/757/27 +f 526/1026/27 528/1027/27 531/757/27 +f 528/1027/27 530/1028/27 531/757/27 +f 512/753/29 523/754/29 521/725/29 +f 515/756/29 529/755/29 527/721/29 +f 579/764/29 572/1029/29 577/762/29 +f 572/1029/29 573/1030/29 577/762/29 +f 573/1030/29 574/1031/29 577/762/29 +f 574/1031/29 575/1032/29 577/762/29 +f 575/1032/29 576/1033/29 577/762/29 +f 580/765/55 581/779/56 579/766/56 +f 583/768/57 584/788/57 585/769/57 +f 580/771/27 584/1034/27 583/772/27 +f 591/775/27 587/1035/27 586/773/27 +f 587/1035/27 588/1036/27 586/773/27 +f 588/1036/27 581/1037/27 586/773/27 +f 581/1037/27 580/771/27 586/773/27 +f 586/773/27 589/1038/27 590/774/27 +f 573/776/58 587/1039/58 591/777/58 +f 581/779/56 588/786/59 572/780/59 +f 590/781/60 589/1040/60 576/782/60 +f 586/784/61 583/768/61 582/770/61 +f 588/786/62 587/1041/62 573/787/62 +f 591/777/63 590/781/63 575/783/63 +f 576/782/64 589/1040/64 586/784/64 +f 580/765/55 578/767/55 585/769/65 +f 578/763/29 577/762/29 582/789/29 +f 599/793/29 592/1042/29 597/791/29 +f 592/1042/29 593/1043/29 597/791/29 +f 593/1043/29 594/1044/29 597/791/29 +f 594/1044/29 595/1045/29 597/791/29 +f 595/1045/29 596/1046/29 597/791/29 +f 600/794/66 601/808/67 599/795/67 +f 603/797/68 604/819/68 605/798/68 +f 600/800/27 604/1047/27 603/801/27 +f 611/804/27 607/1048/27 606/802/27 +f 607/1048/27 608/1049/27 606/802/27 +f 608/1049/27 601/1050/27 606/802/27 +f 601/1050/27 600/800/27 606/802/27 +f 606/802/27 609/1051/27 610/803/27 +f 607/805/69 611/817/69 594/806/69 +f 601/808/67 608/1052/70 592/809/70 +f 610/810/71 609/818/71 596/811/71 +f 606/813/72 603/797/72 602/799/72 +f 592/809/73 608/1052/73 607/815/73 +f 611/817/74 610/810/74 595/812/74 +f 609/818/75 606/813/75 597/814/75 +f 600/794/66 598/796/66 605/798/76 +f 598/792/29 597/791/29 602/820/29 +f 619/824/29 612/1053/29 617/822/29 +f 612/1053/29 613/1054/29 617/822/29 +f 613/1054/29 614/1055/29 617/822/29 +f 614/1055/29 615/1056/29 617/822/29 +f 615/1056/29 616/1057/29 617/822/29 +f 620/825/78 621/839/79 619/826/79 +f 622/828/80 623/1058/81 624/829/81 +f 620/831/82 624/1059/27 623/832/27 +f 631/835/27 627/1060/27 626/833/27 +f 627/1060/27 628/1061/27 626/833/27 +f 628/1061/27 621/1062/27 626/833/27 +f 621/1062/27 620/831/82 626/833/27 +f 626/833/27 629/1063/103 630/834/27 +f 627/836/83 631/1064/83 614/837/83 +f 621/839/79 628/846/84 612/840/84 +f 630/841/85 629/848/85 616/842/85 +f 626/844/86 623/1058/86 622/828/86 +f 628/846/87 627/1065/87 613/847/87 +f 614/837/88 631/1064/88 630/841/88 +f 629/848/89 626/844/89 617/845/90 +f 618/827/78 625/830/91 624/829/91 +f 618/823/77 617/822/29 622/849/29 +f 639/853/29 632/1066/29 637/851/29 +f 632/1066/29 633/1067/29 637/851/29 +f 633/1067/29 634/1068/29 637/851/29 +f 634/1068/29 635/1069/29 637/851/29 +f 635/1069/29 636/1070/29 637/851/29 +f 643/854/92 644/877/92 645/855/92 +f 640/857/27 644/1071/27 643/858/27 +f 651/861/27 647/1072/27 646/859/27 +f 647/1072/27 648/1073/27 646/859/27 +f 648/1073/27 641/1074/27 646/859/27 +f 641/1074/27 640/857/27 646/859/27 +f 646/859/27 649/1075/82 650/860/27 +f 647/862/93 651/874/93 634/863/93 +f 641/865/94 648/872/94 632/866/94 +f 650/868/95 649/875/95 636/869/95 +f 637/871/96 646/1076/96 643/854/96 +f 648/872/97 647/1077/97 633/873/97 +f 651/874/98 650/868/98 635/870/98 +f 649/875/99 646/1076/99 637/871/100 +f 638/876/101 645/855/101 644/877/101 +f 638/852/77 637/851/29 642/879/29 +f 654/881/102 655/1078/102 653/882/102 +o doorRight +v 0.299220 0.487402 -3.251414 +v 0.299220 5.590070 -1.004025 +v 0.299220 5.128570 -1.909768 +v 0.299220 4.409768 -2.628571 +v 0.299220 3.503919 -3.090124 +v 0.299220 2.496066 -3.251015 +v 0.299220 5.679564 -0.438986 +v 0.299220 0.487402 -0.438985 +v 0.149610 5.900837 -0.125000 +v 0.149610 0.054715 -0.125000 +v 0.299220 0.054715 -3.440433 +v 0.299220 2.511072 -3.439998 +v 0.299220 3.563152 -3.272047 +v 0.299220 4.522236 -2.783369 +v 0.299220 5.283369 -2.022236 +v 0.299220 5.772047 -1.063152 +v 0.299220 5.900837 -0.250000 +v 0.299220 0.054715 -0.250000 +v 0.231315 0.487402 -3.251414 +v 0.231315 2.496066 -3.251015 +v 0.231315 3.503919 -3.090124 +v 0.231315 4.409768 -2.628571 +v 0.231315 5.128570 -1.909768 +v 0.231315 5.590070 -1.004025 +v 0.231315 5.679564 -0.438986 +v 0.231315 0.487402 -0.438985 +v 0.204275 1.917457 -1.651271 +v 0.204275 2.047506 -1.651271 +v 0.204275 1.917457 -1.142414 +v 0.204275 2.047506 -1.142414 +v 0.261126 1.933194 -1.635535 +v 0.245389 1.917457 -1.651271 +v 0.245389 2.047506 -1.651271 +v 0.261126 2.031770 -1.635535 +v 0.261126 1.933194 -1.158151 +v 0.245389 1.917457 -1.142414 +v 0.261126 2.031770 -1.158151 +v 0.245389 2.047506 -1.142414 +v 0.215124 3.126893 -0.898361 +v 0.215124 3.628286 -0.898361 +v 0.215124 3.126893 -0.736489 +v 0.215124 3.628286 -0.736489 +v 0.294289 3.126893 -0.898361 +v 0.247374 3.628286 -0.898361 +v 0.294289 3.126893 -0.736489 +v 0.247374 3.628286 -0.736489 +v 0.215124 3.447602 -0.898361 +v 0.215124 3.447602 -0.736489 +v 0.294289 3.447602 -0.736489 +v 0.294289 3.447602 -0.898361 +v 0.215124 3.126893 -1.339800 +v 0.215124 3.628286 -1.339800 +v 0.215124 3.126893 -1.177929 +v 0.215124 3.628286 -1.177929 +v 0.294289 3.126893 -1.339800 +v 0.247374 3.628286 -1.339800 +v 0.294289 3.126893 -1.177929 +v 0.247374 3.628286 -1.177929 +v 0.215124 3.447602 -1.339800 +v 0.215124 3.447602 -1.177929 +v 0.294289 3.447602 -1.177929 +v 0.294289 3.447602 -1.339800 +v 0.110842 1.775868 -3.124604 +v 0.110842 2.305447 -3.124604 +v 0.110842 1.775868 -1.892389 +v 0.110842 2.305447 -1.892389 +v 0.303721 1.835501 -3.064971 +v 0.303721 2.245814 -3.064971 +v 0.303721 1.835501 -1.952022 +v 0.303721 2.245814 -1.952022 +v 0.303721 2.305447 -1.892389 +v 0.303721 1.775868 -1.892389 +v 0.303721 1.775868 -3.124604 +v 0.303721 2.305447 -3.124604 +v 0.237602 2.245814 -1.952022 +v 0.237602 1.835501 -1.952022 +v 0.237602 1.835501 -3.064971 +v 0.237602 2.245814 -3.064971 +v 0.185097 0.938915 -3.260309 +v 0.185097 1.140242 -3.260309 +v 0.185097 0.938915 -0.391829 +v 0.185097 1.140242 -0.391829 +v 0.250002 0.938915 -3.260309 +v 0.279439 0.968351 -3.260309 +v 0.279439 1.110806 -3.260309 +v 0.250002 1.140242 -3.260309 +v 0.279439 0.968351 -0.391829 +v 0.250002 0.938915 -0.391829 +v 0.250002 1.140242 -0.391829 +v 0.279439 1.110806 -0.391829 +v 0.185097 1.623428 -3.260309 +v 0.185097 1.824755 -3.260309 +v 0.185097 1.623428 -0.391829 +v 0.185097 1.824755 -0.391829 +v 0.250002 1.623428 -3.260309 +v 0.279439 1.652864 -3.260309 +v 0.279439 1.795319 -3.260309 +v 0.250002 1.824755 -3.260309 +v 0.279439 1.652864 -0.391829 +v 0.250002 1.623428 -0.391829 +v 0.250002 1.824755 -0.391829 +v 0.279439 1.795319 -0.391829 +v 0.185097 2.307941 -3.260309 +v 0.185097 2.509268 -3.260309 +v 0.185097 2.307941 -0.391829 +v 0.185097 2.509268 -0.391829 +v 0.250002 2.307941 -3.260309 +v 0.279439 2.337377 -3.260309 +v 0.279439 2.479832 -3.260309 +v 0.250002 2.509268 -3.260309 +v 0.279439 2.337377 -0.391829 +v 0.250002 2.307941 -0.391829 +v 0.250002 2.509268 -0.391829 +v 0.279439 2.479832 -0.391829 +v 0.185097 2.992454 -3.260309 +v 0.185097 3.193781 -3.260309 +v 0.185097 2.992454 -0.391829 +v 0.185097 3.193781 -0.391829 +v 0.250002 2.992454 -3.260309 +v 0.279439 3.021890 -3.260309 +v 0.279439 3.164345 -3.260309 +v 0.250002 3.193781 -3.260309 +v 0.279439 3.021890 -0.391829 +v 0.250002 2.992454 -0.391829 +v 0.250002 3.193781 -0.391829 +v 0.279439 3.164345 -0.391829 +v 0.185097 3.676967 -3.079826 +v 0.185097 3.878294 -3.079826 +v 0.185097 3.676967 -0.391829 +v 0.185097 3.878294 -0.391829 +v 0.250002 3.676967 -3.079826 +v 0.279439 3.706403 -3.079826 +v 0.279439 3.848858 -3.079826 +v 0.250002 3.878294 -3.079826 +v 0.279439 3.706403 -0.391829 +v 0.250002 3.676967 -0.391829 +v 0.250002 3.878294 -0.391829 +v 0.279439 3.848858 -0.391829 +v 0.185097 4.361480 -2.726382 +v 0.185097 4.562807 -2.726382 +v 0.185097 4.361480 -0.391829 +v 0.185097 4.562807 -0.391829 +v 0.250002 4.361480 -2.726382 +v 0.279439 4.390916 -2.726382 +v 0.279439 4.533370 -2.726382 +v 0.250002 4.562807 -2.726382 +v 0.279439 4.390916 -0.391829 +v 0.250002 4.361480 -0.391829 +v 0.250002 4.562807 -0.391829 +v 0.279439 4.533370 -0.391829 +v 0.185097 5.045993 -2.044939 +v 0.185097 5.247320 -2.044939 +v 0.185097 5.045993 -0.391829 +v 0.185097 5.247320 -0.391829 +v 0.250002 5.045993 -2.044939 +v 0.279439 5.075429 -2.044939 +v 0.279439 5.217884 -2.044939 +v 0.250002 5.247320 -2.044939 +v 0.279439 5.075429 -0.391829 +v 0.250002 5.045993 -0.391829 +v 0.250002 5.247320 -0.391829 +v 0.279439 5.217884 -0.391829 +v 0.315590 0.554430 -1.179831 +v 0.315590 0.554430 -0.490474 +v 0.381347 0.554430 -1.179831 +v 0.381347 0.554430 -0.490474 +v 0.427845 0.600927 -1.179831 +v 0.427845 0.600927 -0.490474 +v 0.427845 0.666685 -1.179831 +v 0.427845 0.666685 -0.490474 +v 0.381347 0.713183 -1.179831 +v 0.381347 0.713183 -0.490474 +v 0.315590 0.713183 -1.179831 +v 0.315590 0.713183 -0.490474 +v 0.269092 0.666685 -1.179831 +v 0.269092 0.666685 -0.490474 +v 0.269092 0.600927 -1.179831 +v 0.269092 0.600927 -0.490474 +v 0.212011 0.554430 -1.179831 +v 0.212011 0.554430 -0.490474 +v 0.212011 0.713183 -0.490474 +v 0.212011 0.713183 -1.179831 +v 0.212011 0.666685 -1.179831 +v 0.212011 0.666685 -0.490474 +v 0.212011 0.600927 -1.179831 +v 0.212011 0.600927 -0.490474 +v 0.323809 0.574274 -3.311587 +v 0.373128 0.574274 -3.311587 +v 0.408001 0.609147 -3.311587 +v 0.408001 0.658465 -3.311587 +v 0.373128 0.693339 -3.311587 +v 0.323809 0.693339 -3.311587 +v 0.288936 0.658465 -3.311587 +v 0.288936 0.609147 -3.311587 +v 0.373127 0.574274 -0.452471 +v 0.408000 0.609147 -0.452471 +v 0.323808 0.574274 -0.452471 +v 0.408000 0.658465 -0.452471 +v 0.373127 0.693339 -0.452471 +v 0.323808 0.693339 -0.452471 +v 0.288935 0.658465 -0.452471 +v 0.288935 0.609147 -0.452471 +v 0.149610 5.165501 -0.125000 +v 0.149610 0.790051 -0.125000 +v 0.149610 4.436259 -0.125000 +v 0.149610 3.707017 -0.125000 +v 0.149610 2.977776 -0.125000 +v 0.149610 2.248534 -0.125000 +v 0.149610 1.519293 -0.125000 +v 0.299220 5.165501 -0.250000 +v 0.299220 0.790051 -0.250000 +v 0.299220 4.436259 -0.250000 +v 0.299220 3.707017 -0.250000 +v 0.299220 2.977776 -0.250000 +v 0.299220 2.248534 -0.250000 +v 0.299220 1.519293 -0.250000 +v 0.149610 5.900837 0.125000 +v 0.299220 5.900837 0.000000 +v 0.149610 1.519293 0.125000 +v 0.149610 0.790051 0.125000 +v 0.299220 0.790051 0.000000 +v 0.299220 1.519293 0.000000 +v 0.299220 2.248534 0.000000 +v 0.149610 2.248534 0.125000 +v 0.149610 2.977776 0.125000 +v 0.299220 2.977776 0.000000 +v 0.299220 3.707017 0.000000 +v 0.149610 3.707017 0.125000 +v 0.149610 4.436259 0.125000 +v 0.299220 4.436259 0.000000 +v 0.299220 5.165501 0.000000 +v 0.149610 5.165501 0.125000 +v -0.299220 0.487402 -3.251414 +v -0.299220 5.590070 -1.004025 +v -0.299220 5.128570 -1.909768 +v -0.299220 4.409768 -2.628571 +v -0.299220 3.503919 -3.090124 +v -0.299220 2.496066 -3.251015 +v -0.299220 5.679564 -0.438986 +v -0.299220 0.487402 -0.438985 +v -0.149610 5.900837 -0.125000 +v -0.149610 0.054715 -0.125000 +v -0.299220 0.054715 -3.440433 +v -0.299220 2.511072 -3.439998 +v -0.299220 3.563152 -3.272047 +v -0.299220 4.522236 -2.783369 +v -0.299220 5.283369 -2.022236 +v -0.299220 5.772047 -1.063152 +v -0.299220 5.900837 -0.250000 +v -0.299220 0.054715 -0.250000 +v -0.231315 0.487402 -3.251414 +v -0.231315 2.496066 -3.251015 +v -0.231315 3.503919 -3.090124 +v -0.231315 4.409768 -2.628571 +v -0.231315 5.128570 -1.909768 +v -0.231315 5.590070 -1.004025 +v -0.231315 5.679564 -0.438986 +v -0.231315 0.487402 -0.438985 +v -0.204275 1.917457 -1.651271 +v -0.204275 2.047506 -1.651271 +v -0.204275 1.917457 -1.142414 +v -0.204275 2.047506 -1.142414 +v -0.261126 1.933194 -1.635535 +v -0.245389 1.917457 -1.651271 +v -0.245389 2.047506 -1.651271 +v -0.261126 2.031770 -1.635535 +v -0.261126 1.933194 -1.158151 +v -0.245389 1.917457 -1.142414 +v -0.261126 2.031770 -1.158151 +v -0.245389 2.047506 -1.142414 +v -0.215124 3.126893 -0.898361 +v -0.215124 3.628286 -0.898361 +v -0.215124 3.126893 -0.736489 +v -0.215124 3.628286 -0.736489 +v -0.294289 3.126893 -0.898361 +v -0.247374 3.628286 -0.898361 +v -0.294289 3.126893 -0.736489 +v -0.247374 3.628286 -0.736489 +v -0.215124 3.447602 -0.898361 +v -0.215124 3.447602 -0.736489 +v -0.294289 3.447602 -0.736489 +v -0.294289 3.447602 -0.898361 +v -0.215124 3.126893 -1.339800 +v -0.215124 3.628286 -1.339800 +v -0.215124 3.126893 -1.177929 +v -0.215124 3.628286 -1.177929 +v -0.294289 3.126893 -1.339800 +v -0.247374 3.628286 -1.339800 +v -0.294289 3.126893 -1.177929 +v -0.247374 3.628286 -1.177929 +v -0.215124 3.447602 -1.339800 +v -0.215124 3.447602 -1.177929 +v -0.294289 3.447602 -1.177929 +v -0.294289 3.447602 -1.339800 +v -0.110842 1.775868 -3.124604 +v -0.110842 2.305447 -3.124604 +v -0.110842 1.775868 -1.892389 +v -0.110842 2.305447 -1.892389 +v -0.303721 1.835501 -3.064971 +v -0.303721 2.245814 -3.064971 +v -0.303721 1.835501 -1.952022 +v -0.303721 2.245814 -1.952022 +v -0.303721 2.305447 -1.892389 +v -0.303721 1.775868 -1.892389 +v -0.303721 1.775868 -3.124604 +v -0.303721 2.305447 -3.124604 +v -0.237602 2.245814 -1.952022 +v -0.237602 1.835501 -1.952022 +v -0.237602 1.835501 -3.064971 +v -0.237602 2.245814 -3.064971 +v -0.185097 0.938915 -3.260309 +v -0.185097 1.140242 -3.260309 +v -0.185097 0.938915 -0.391829 +v -0.185097 1.140242 -0.391829 +v -0.250002 0.938915 -3.260309 +v -0.279439 0.968351 -3.260309 +v -0.279439 1.110806 -3.260309 +v -0.250002 1.140242 -3.260309 +v -0.279439 0.968351 -0.391829 +v -0.250002 0.938915 -0.391829 +v -0.250002 1.140242 -0.391829 +v -0.279439 1.110806 -0.391829 +v -0.185097 1.623428 -3.260309 +v -0.185097 1.824755 -3.260309 +v -0.185097 1.623428 -0.391829 +v -0.185097 1.824755 -0.391829 +v -0.250002 1.623428 -3.260309 +v -0.279439 1.652864 -3.260309 +v -0.279439 1.795319 -3.260309 +v -0.250002 1.824755 -3.260309 +v -0.279439 1.652864 -0.391829 +v -0.250002 1.623428 -0.391829 +v -0.250002 1.824755 -0.391829 +v -0.279439 1.795319 -0.391829 +v -0.185097 2.307941 -3.260309 +v -0.185097 2.509268 -3.260309 +v -0.185097 2.307941 -0.391829 +v -0.185097 2.509268 -0.391829 +v -0.250002 2.307941 -3.260309 +v -0.279439 2.337377 -3.260309 +v -0.279439 2.479832 -3.260309 +v -0.250002 2.509268 -3.260309 +v -0.279439 2.337377 -0.391829 +v -0.250002 2.307941 -0.391829 +v -0.250002 2.509268 -0.391829 +v -0.279439 2.479832 -0.391829 +v -0.185097 2.992454 -3.260309 +v -0.185097 3.193781 -3.260309 +v -0.185097 2.992454 -0.391829 +v -0.185097 3.193781 -0.391829 +v -0.250002 2.992454 -3.260309 +v -0.279439 3.021890 -3.260309 +v -0.279439 3.164345 -3.260309 +v -0.250002 3.193781 -3.260309 +v -0.279439 3.021890 -0.391829 +v -0.250002 2.992454 -0.391829 +v -0.250002 3.193781 -0.391829 +v -0.279439 3.164345 -0.391829 +v -0.185097 3.676967 -3.079826 +v -0.185097 3.878294 -3.079826 +v -0.185097 3.676967 -0.391829 +v -0.185097 3.878294 -0.391829 +v -0.250002 3.676967 -3.079826 +v -0.279439 3.706403 -3.079826 +v -0.279439 3.848858 -3.079826 +v -0.250002 3.878294 -3.079826 +v -0.279439 3.706403 -0.391829 +v -0.250002 3.676967 -0.391829 +v -0.250002 3.878294 -0.391829 +v -0.279439 3.848858 -0.391829 +v -0.185097 4.361480 -2.726382 +v -0.185097 4.562807 -2.726382 +v -0.185097 4.361480 -0.391829 +v -0.185097 4.562807 -0.391829 +v -0.250002 4.361480 -2.726382 +v -0.279439 4.390916 -2.726382 +v -0.279439 4.533370 -2.726382 +v -0.250002 4.562807 -2.726382 +v -0.279439 4.390916 -0.391829 +v -0.250002 4.361480 -0.391829 +v -0.250002 4.562807 -0.391829 +v -0.279439 4.533370 -0.391829 +v -0.185097 5.045993 -2.044939 +v -0.185097 5.247320 -2.044939 +v -0.185097 5.045993 -0.391829 +v -0.185097 5.247320 -0.391829 +v -0.250002 5.045993 -2.044939 +v -0.279439 5.075429 -2.044939 +v -0.279439 5.217884 -2.044939 +v -0.250002 5.247320 -2.044939 +v -0.279439 5.075429 -0.391829 +v -0.250002 5.045993 -0.391829 +v -0.250002 5.247320 -0.391829 +v -0.279439 5.217884 -0.391829 +v -0.315590 0.554430 -1.179831 +v -0.315590 0.554430 -0.490474 +v -0.381347 0.554430 -1.179831 +v -0.381347 0.554430 -0.490474 +v -0.427845 0.600927 -1.179831 +v -0.427845 0.600927 -0.490474 +v -0.427845 0.666685 -1.179831 +v -0.427845 0.666685 -0.490474 +v -0.381347 0.713183 -1.179831 +v -0.381347 0.713183 -0.490474 +v -0.315590 0.713183 -1.179831 +v -0.315590 0.713183 -0.490474 +v -0.269092 0.666685 -1.179831 +v -0.269092 0.666685 -0.490474 +v -0.269092 0.600927 -1.179831 +v -0.269092 0.600927 -0.490474 +v -0.212011 0.554430 -1.179831 +v -0.212011 0.554430 -0.490474 +v -0.212011 0.713183 -0.490474 +v -0.212011 0.713183 -1.179831 +v -0.212011 0.666685 -1.179831 +v -0.212011 0.666685 -0.490474 +v -0.212011 0.600927 -1.179831 +v -0.212011 0.600927 -0.490474 +v -0.323809 0.574274 -3.311587 +v -0.373128 0.574274 -3.311587 +v -0.408001 0.609147 -3.311587 +v -0.408001 0.658465 -3.311587 +v -0.373128 0.693339 -3.311587 +v -0.323809 0.693339 -3.311587 +v -0.288936 0.658465 -3.311587 +v -0.288936 0.609147 -3.311587 +v -0.373127 0.574274 -0.452471 +v -0.408000 0.609147 -0.452471 +v -0.323808 0.574274 -0.452471 +v -0.408000 0.658465 -0.452471 +v -0.373127 0.693339 -0.452471 +v -0.323808 0.693339 -0.452471 +v -0.288935 0.658465 -0.452471 +v -0.288935 0.609147 -0.452471 +v -0.149610 5.165501 -0.125000 +v -0.149610 0.790051 -0.125000 +v -0.149610 4.436259 -0.125000 +v -0.149610 3.707017 -0.125000 +v -0.149610 2.977776 -0.125000 +v -0.149610 2.248534 -0.125000 +v -0.149610 1.519293 -0.125000 +v -0.299220 5.165501 -0.250000 +v -0.299220 0.790051 -0.250000 +v -0.299220 4.436259 -0.250000 +v -0.299220 3.707017 -0.250000 +v -0.299220 2.977776 -0.250000 +v -0.299220 2.248534 -0.250000 +v -0.299220 1.519293 -0.250000 +v -0.149610 5.900837 0.125000 +v -0.299220 5.900837 0.000000 +v -0.149610 1.519293 0.125000 +v -0.149610 0.790051 0.125000 +v -0.299220 0.790051 0.000000 +v -0.299220 1.519293 0.000000 +v -0.299220 2.248534 0.000000 +v -0.149610 2.248534 0.125000 +v -0.149610 2.977776 0.125000 +v -0.299220 2.977776 0.000000 +v -0.299220 3.707017 0.000000 +v -0.149610 3.707017 0.125000 +v -0.149610 4.436259 0.125000 +v -0.299220 4.436259 0.000000 +v -0.299220 5.165501 0.000000 +v -0.149610 5.165501 0.125000 +v 0.000000 0.054715 -3.440433 +v 0.000000 2.511072 -3.439998 +v 0.000000 3.563152 -3.272047 +v 0.000000 4.522236 -2.783369 +v 0.000000 5.283369 -2.022236 +v 0.000000 5.772047 -1.063152 +v 0.000000 5.900837 -0.250000 +v 0.000000 0.054715 -0.250000 +v 0.000000 5.900837 -0.125000 +v 0.000000 0.054715 -0.125000 +v 0.000000 0.790051 -0.125000 +v 0.000000 1.519293 -0.125000 +v 0.000000 2.248534 -0.125000 +v 0.000000 2.977776 -0.125000 +v 0.000000 3.707017 -0.125000 +v 0.000000 4.436259 -0.125000 +v 0.000000 5.165501 -0.125000 +v 0.000000 5.900837 0.125000 +v 0.000000 0.790051 0.125000 +v 0.000000 1.519293 0.125000 +v 0.000000 2.248534 0.125000 +v 0.000000 2.977776 0.125000 +v 0.000000 3.707017 0.125000 +v 0.000000 4.436259 0.125000 +v 0.000000 5.165501 0.125000 +v 0.236978 1.966246 -2.101461 +v 0.236978 1.868289 -2.101461 +v 0.271611 1.966246 -2.115807 +v 0.271611 1.868289 -2.115807 +v 0.285957 1.966246 -2.150440 +v 0.285957 1.868289 -2.150440 +v 0.271611 1.966246 -2.185074 +v 0.271611 1.868289 -2.185074 +v 0.236978 1.966246 -2.199419 +v 0.236978 1.868289 -2.199419 +v 0.261013 1.935379 -2.738888 +v 0.243802 1.942508 -2.738888 +v 0.243802 1.942508 -2.168687 +v 0.261013 1.935379 -2.168687 +v 0.268143 1.918167 -2.168687 +v 0.261013 1.900955 -2.168687 +v 0.243802 1.893826 -2.168687 +v 0.226590 1.900955 -2.168687 +v 0.219460 1.918167 -2.168687 +v 0.226590 1.935379 -2.168687 +v 0.268143 1.918167 -2.738888 +v 0.261013 1.900955 -2.738888 +v 0.243802 1.893826 -2.738888 +v 0.226590 1.900955 -2.738888 +v 0.219460 1.918167 -2.738888 +v 0.226590 1.935379 -2.738888 +v 0.243802 1.952222 -2.738888 +v 0.267882 1.942248 -2.738888 +v 0.277856 1.918167 -2.738888 +v 0.243802 1.952222 -2.956852 +v 0.267882 1.942248 -2.956852 +v 0.267882 1.894087 -2.738888 +v 0.277856 1.918167 -2.956852 +v 0.243802 1.884113 -2.738888 +v 0.267882 1.894087 -2.956852 +v 0.219721 1.894087 -2.738888 +v 0.243802 1.884113 -2.956852 +v 0.209747 1.918167 -2.738888 +v 0.219721 1.894087 -2.956852 +v 0.219721 1.942248 -2.738888 +v 0.209747 1.918167 -2.956852 +v 0.219721 1.942248 -2.956852 +v 0.234904 1.996067 -2.602894 +v 0.234904 2.177792 -2.602893 +v 0.234904 1.996067 -2.957389 +v 0.234904 2.177792 -2.957389 +v 0.248364 1.996858 -2.604437 +v 0.248364 2.177001 -2.604437 +v 0.248364 1.996858 -2.955846 +v 0.248364 2.177001 -2.955846 +v 0.239626 2.025193 -2.631219 +v 0.239626 2.077102 -2.631219 +v 0.239626 2.025193 -2.683128 +v 0.239626 2.077102 -2.683128 +v 0.264276 2.026531 -2.632558 +v 0.264276 2.075763 -2.632558 +v 0.264276 2.026531 -2.681790 +v 0.264276 2.075763 -2.681790 +v 0.239626 2.025193 -2.713007 +v 0.239626 2.077102 -2.713007 +v 0.239626 2.025193 -2.764916 +v 0.239626 2.077102 -2.764916 +v 0.264276 2.026531 -2.714346 +v 0.264276 2.075763 -2.714346 +v 0.264276 2.026531 -2.763577 +v 0.264276 2.075763 -2.763577 +v 0.239626 2.025193 -2.794795 +v 0.239626 2.077102 -2.794795 +v 0.239626 2.025193 -2.846704 +v 0.239626 2.077102 -2.846704 +v 0.264276 2.026531 -2.796134 +v 0.264276 2.075763 -2.796134 +v 0.264276 2.026531 -2.845365 +v 0.264276 2.075763 -2.845365 +v 0.239626 2.025193 -2.876583 +v 0.239626 2.077102 -2.876583 +v 0.239626 2.025193 -2.928492 +v 0.239626 2.077102 -2.928492 +v 0.264276 2.026531 -2.877922 +v 0.264276 2.075763 -2.877922 +v 0.264276 2.026531 -2.927153 +v 0.264276 2.075763 -2.927153 +v 0.241062 2.141376 -2.887181 +v 0.218099 2.128895 -2.887181 +v 0.217427 2.102767 -2.887181 +v 0.239718 2.089121 -2.887181 +v 0.262680 2.101603 -2.887181 +v 0.264313 2.105776 -2.887181 +v 0.266144 2.123641 -2.887181 +v 0.263352 2.127731 -2.887181 +v 0.266144 2.123641 -2.918690 +v 0.263352 2.127731 -2.918690 +v 0.278264 2.110234 -2.887181 +v 0.278264 2.110234 -2.918690 +v 0.277458 2.120133 -2.918690 +v 0.277458 2.120133 -2.887181 +v 0.264313 2.105776 -2.918690 +v 0.218099 2.128895 -2.918690 +v 0.241062 2.141376 -2.918690 +v 0.262680 2.101603 -2.918690 +v 0.239718 2.089121 -2.918690 +v 0.217427 2.102767 -2.918690 +v 0.257846 2.139290 -2.641807 +v 0.231994 2.143135 -2.641807 +v 0.215738 2.122669 -2.641807 +v 0.225334 2.098358 -2.641807 +v 0.251185 2.094513 -2.641807 +v 0.255000 2.096865 -2.641807 +v 0.267210 2.110033 -2.641807 +v 0.267441 2.114980 -2.641807 +v 0.267210 2.110033 -2.673316 +v 0.267441 2.114980 -2.673316 +v 0.268826 2.092032 -2.641807 +v 0.268826 2.092032 -2.673316 +v 0.274138 2.100425 -2.673316 +v 0.274138 2.100425 -2.641807 +v 0.255000 2.096865 -2.673316 +v 0.231994 2.143135 -2.673316 +v 0.257846 2.139290 -2.673316 +v 0.251185 2.094513 -2.673316 +v 0.225334 2.098358 -2.673316 +v 0.215738 2.122669 -2.673316 +v 0.222125 2.128488 -2.723598 +v 0.215962 2.103088 -2.723598 +v 0.234877 2.085051 -2.723598 +v 0.259955 2.092414 -2.723598 +v 0.266117 2.117813 -2.723598 +v 0.264120 2.121824 -2.723598 +v 0.252107 2.135173 -2.723598 +v 0.247202 2.135850 -2.723598 +v 0.252107 2.135173 -2.755107 +v 0.247202 2.135850 -2.755107 +v 0.270180 2.135158 -2.723598 +v 0.270180 2.135158 -2.755107 +v 0.262302 2.141205 -2.755107 +v 0.262302 2.141205 -2.723598 +v 0.264120 2.121824 -2.755107 +v 0.215962 2.103088 -2.755107 +v 0.222125 2.128488 -2.755107 +v 0.266117 2.117813 -2.755107 +v 0.259955 2.092414 -2.755107 +v 0.234877 2.085051 -2.755107 +v 0.231185 2.137330 -2.805390 +v 0.214479 2.117230 -2.805390 +v 0.223533 2.092711 -2.805390 +v 0.249294 2.088294 -2.805390 +v 0.265999 2.108394 -2.805390 +v 0.265969 2.112875 -2.805390 +v 0.261052 2.130147 -2.805390 +v 0.256945 2.132912 -2.805390 +v 0.261052 2.130147 -2.836899 +v 0.256945 2.132912 -2.836899 +v 0.277277 2.122184 -2.805390 +v 0.277277 2.122184 -2.836899 +v 0.272861 2.131080 -2.836899 +v 0.272861 2.131080 -2.805390 +v 0.265969 2.112875 -2.836899 +v 0.214479 2.117230 -2.836899 +v 0.231185 2.137330 -2.836899 +v 0.265999 2.108394 -2.836899 +v 0.249294 2.088294 -2.836899 +v 0.223533 2.092711 -2.836899 +vt 0.071084 0.914639 +vt 0.063745 0.914089 +vt 0.071052 0.914089 +vt 0.071052 0.899835 +vt 0.063745 0.899835 +vt 0.071084 0.899286 +vt 0.071599 0.899773 +vt 0.071599 0.914152 +vt 0.063198 0.914152 +vt 0.980883 0.027178 +vt 0.979882 0.025127 +vt 0.980883 0.025072 +vt 0.979882 0.027124 +vt 0.977885 0.025127 +vt 0.977885 0.027124 +vt 0.976884 0.025072 +vt 0.977831 0.024125 +vt 0.979936 0.024125 +vt 0.979936 0.028125 +vt 0.010095 0.976613 +vt 0.012147 0.975612 +vt 0.012201 0.976613 +vt 0.010150 0.975612 +vt 0.012147 0.973615 +vt 0.010150 0.973615 +vt 0.012201 0.972613 +vt 0.013148 0.973560 +vt 0.013148 0.975666 +vt 0.009148 0.975666 +vt 0.977831 0.010708 +vt 0.979882 0.009707 +vt 0.979936 0.010708 +vt 0.977885 0.009707 +vt 0.979882 0.007710 +vt 0.977885 0.007710 +vt 0.979936 0.006709 +vt 0.980883 0.007656 +vt 0.980883 0.009761 +vt 0.976884 0.009761 +vt 0.969725 0.889901 +vt 0.971776 0.888900 +vt 0.971831 0.889901 +vt 0.969779 0.888900 +vt 0.971776 0.886903 +vt 0.969779 0.886903 +vt 0.971831 0.885901 +vt 0.972778 0.886849 +vt 0.972778 0.888954 +vt 0.968778 0.888954 +vt 0.063713 0.914639 +vt 0.063713 0.899286 +vt 0.063198 0.899773 +vt 0.976884 0.027178 +vt 0.977831 0.028125 +vt 0.010095 0.972613 +vt 0.009148 0.973560 +vt 0.977831 0.006709 +vt 0.976884 0.007656 +vt 0.969725 0.885901 +vt 0.968778 0.886849 +vt 0.838616 0.394242 +vt 0.850753 0.294606 +vt 0.850753 0.394242 +vt 0.838616 0.437457 +vt 0.850753 0.437457 +vt 0.838616 0.481118 +vt 0.850753 0.481118 +vt 0.838616 0.524780 +vt 0.850753 0.524779 +vt 0.838616 0.568441 +vt 0.850753 0.568441 +vt 0.816684 0.141189 +vt 0.804547 0.011779 +vt 0.816684 0.011779 +vt 0.637409 0.742651 +vt 0.751488 0.745406 +vt 0.637409 0.745406 +vt 0.850753 0.601835 +vt 0.844684 0.606906 +vt 0.838616 0.601835 +vt 0.623992 0.501911 +vt 0.623992 0.531738 +vt 0.616326 0.514187 +vt 0.502248 0.514187 +vt 0.494599 0.432102 +vt 0.502264 0.432711 +vt 0.508790 0.391831 +vt 0.501411 0.389428 +vt 0.527512 0.355087 +vt 0.521233 0.350525 +vt 0.556668 0.325931 +vt 0.552106 0.319652 +vt 0.593407 0.307212 +vt 0.591009 0.299830 +vt 0.616327 0.303582 +vt 0.691829 0.316956 +vt 0.728568 0.298236 +vt 0.751488 0.294606 +vt 0.861164 0.006709 +vt 0.858410 0.029913 +vt 0.858410 0.006709 +vt 0.861164 0.071146 +vt 0.858410 0.112380 +vt 0.858410 0.071146 +vt 0.861164 0.153618 +vt 0.858410 0.195017 +vt 0.858410 0.153618 +vt 0.963467 0.189030 +vt 0.960285 0.006709 +vt 0.963467 0.006723 +vt 0.861164 0.029913 +vt 0.861164 0.112380 +vt 0.861164 0.195017 +vt 0.858410 0.276493 +vt 0.070405 0.847979 +vt 0.065130 0.846311 +vt 0.070405 0.846311 +vt 0.064865 0.846046 +vt 0.063198 0.825406 +vt 0.064865 0.825406 +vt 0.069767 0.845408 +vt 0.065768 0.826044 +vt 0.069767 0.826044 +vt 0.070405 0.825142 +vt 0.065130 0.823474 +vt 0.070405 0.823474 +vt 0.065130 0.825142 +vt 0.070669 0.825406 +vt 0.070669 0.846046 +vt 0.065768 0.845408 +vt 0.072337 0.846046 +vt 0.072337 0.825406 +vt 0.832797 0.992869 +vt 0.820045 0.989167 +vt 0.832917 0.989519 +vt 0.819847 0.979794 +vt 0.812637 0.982596 +vt 0.812375 0.981262 +vt 0.820215 0.982975 +vt 0.819631 0.992298 +vt 0.812630 0.989456 +vt 0.836258 0.989519 +vt 0.832917 0.982686 +vt 0.836258 0.982686 +vt 0.811270 0.982595 +vt 0.832839 0.979479 +vt 0.157833 0.991605 +vt 0.145081 0.987902 +vt 0.157953 0.988254 +vt 0.144883 0.978529 +vt 0.137673 0.981331 +vt 0.137411 0.979997 +vt 0.145251 0.981710 +vt 0.144667 0.991033 +vt 0.137666 0.988191 +vt 0.161295 0.988254 +vt 0.157953 0.981421 +vt 0.161295 0.981421 +vt 0.136306 0.981330 +vt 0.157876 0.978214 +vt 0.115059 0.780752 +vt 0.093578 0.772929 +vt 0.115059 0.772929 +vt 0.767587 0.714665 +vt 0.784230 0.717347 +vt 0.767587 0.717347 +vt 0.115059 0.838557 +vt 0.093578 0.830734 +vt 0.115059 0.830734 +vt 0.122882 0.830734 +vt 0.122882 0.780752 +vt 0.085754 0.780752 +vt 0.093578 0.780752 +vt 0.112640 0.783171 +vt 0.095997 0.783171 +vt 0.112640 0.828315 +vt 0.095997 0.828315 +vt 0.784230 0.714665 +vt 0.767587 0.669521 +vt 0.784230 0.669521 +vt 0.786912 0.669521 +vt 0.786912 0.714665 +vt 0.764905 0.714665 +vt 0.764905 0.669521 +vt 0.767587 0.666839 +vt 0.784230 0.666839 +vt 0.493197 0.720191 +vt 0.495769 0.833877 +vt 0.493197 0.833877 +vt 0.485567 0.720186 +vt 0.491213 0.833871 +vt 0.485567 0.833871 +vt 0.483582 0.833865 +vt 0.483582 0.720180 +vt 0.481010 0.720180 +vt 0.481010 0.833865 +vt 0.916263 0.006720 +vt 0.918835 0.120406 +vt 0.916263 0.120406 +vt 0.908633 0.006714 +vt 0.914279 0.120400 +vt 0.908633 0.120400 +vt 0.906649 0.120394 +vt 0.906649 0.006709 +vt 0.904076 0.006709 +vt 0.904076 0.120394 +vt 0.916263 0.133834 +vt 0.918835 0.247520 +vt 0.916263 0.247520 +vt 0.908633 0.133829 +vt 0.914279 0.247514 +vt 0.908633 0.247514 +vt 0.906649 0.247508 +vt 0.906649 0.133823 +vt 0.904076 0.133823 +vt 0.904076 0.247508 +vt 0.926154 0.760682 +vt 0.928726 0.874367 +vt 0.926154 0.874367 +vt 0.918524 0.760676 +vt 0.924170 0.874361 +vt 0.918524 0.874361 +vt 0.916540 0.874356 +vt 0.916539 0.760670 +vt 0.913967 0.760670 +vt 0.913967 0.874356 +vt 0.491671 0.859568 +vt 0.384226 0.862163 +vt 0.384226 0.859568 +vt 0.491675 0.851999 +vt 0.384229 0.857693 +vt 0.384229 0.851999 +vt 0.384233 0.850123 +vt 0.491678 0.850123 +vt 0.491678 0.847529 +vt 0.384233 0.847529 +vt 0.478919 0.887368 +vt 0.384226 0.890001 +vt 0.384226 0.887368 +vt 0.478919 0.879901 +vt 0.384226 0.885680 +vt 0.384226 0.879901 +vt 0.384226 0.878213 +vt 0.478919 0.878213 +vt 0.478919 0.875580 +vt 0.384226 0.875580 +vt 0.874581 0.266461 +vt 0.941635 0.263828 +vt 0.941635 0.266461 +vt 0.874581 0.273928 +vt 0.941635 0.268150 +vt 0.941635 0.273928 +vt 0.941635 0.275616 +vt 0.874581 0.275616 +vt 0.874581 0.278249 +vt 0.941635 0.278249 +vt 0.751964 0.269991 +vt 0.779926 0.272658 +vt 0.751964 0.272658 +vt 0.751964 0.267324 +vt 0.779926 0.269991 +vt 0.751964 0.264657 +vt 0.779926 0.267324 +vt 0.751964 0.261989 +vt 0.779926 0.264657 +vt 0.751964 0.259322 +vt 0.779926 0.261989 +vt 0.011262 0.959196 +vt 0.008595 0.956881 +vt 0.011262 0.956881 +vt 0.977533 0.762259 +vt 0.975647 0.766813 +vt 0.971094 0.764927 +vt 0.971094 0.762259 +vt 0.968778 0.760373 +vt 0.972980 0.760373 +vt 0.006709 0.959196 +vt 0.006709 0.954995 +vt 0.008595 0.950441 +vt 0.239689 0.888219 +vt 0.241702 0.772932 +vt 0.241702 0.888219 +vt 0.758193 0.881133 +vt 0.754778 0.882547 +vt 0.753363 0.879132 +vt 0.968778 0.766813 +vt 0.972980 0.766813 +vt 0.751964 0.255121 +vt 0.779926 0.259322 +vt 0.779926 0.276860 +vt 0.013148 0.959196 +vt 0.013148 0.954995 +vt 0.968778 0.764927 +vt 0.227615 0.888217 +vt 0.229628 0.772930 +vt 0.229628 0.888217 +vt 0.231640 0.888217 +vt 0.233652 0.772930 +vt 0.233652 0.888218 +vt 0.235665 0.888218 +vt 0.237677 0.772931 +vt 0.237677 0.888219 +vt 0.225603 0.888216 +vt 0.227615 0.772929 +vt 0.231640 0.772930 +vt 0.239689 0.772932 +vt 0.235665 0.772931 +vt 0.757401 0.968504 +vt 0.787227 0.976412 +vt 0.757401 0.976412 +vt 0.978919 0.583929 +vt 0.968778 0.577860 +vt 0.978919 0.577860 +vt 0.838616 0.611976 +vt 0.899184 0.978953 +vt 0.907092 0.949373 +vt 0.907092 0.978953 +vt 0.034866 0.980021 +vt 0.042774 0.950441 +vt 0.042774 0.980021 +vt 0.973848 0.546238 +vt 0.978919 0.552306 +vt 0.968778 0.552306 +vt 0.960285 0.232027 +vt 0.968192 0.202447 +vt 0.968192 0.232027 +vt 0.913161 0.949373 +vt 0.913161 0.978953 +vt 0.300254 0.951758 +vt 0.329834 0.941618 +vt 0.329834 0.951758 +vt 0.048842 0.950441 +vt 0.048842 0.980021 +vt 0.974261 0.202447 +vt 0.974261 0.232027 +vt 0.737360 0.915678 +vt 0.743429 0.905537 +vt 0.743429 0.915678 +vt 0.973848 0.589997 +vt 0.968778 0.583929 +vt 0.510060 0.902173 +vt 0.539887 0.910081 +vt 0.510060 0.910081 +vt 0.457011 0.941511 +vt 0.427431 0.933603 +vt 0.457011 0.933603 +vt 0.329834 0.933710 +vt 0.300254 0.941618 +vt 0.300254 0.933710 +vt 0.286837 0.941618 +vt 0.257257 0.933710 +vt 0.286837 0.933710 +vt 0.427431 0.927535 +vt 0.457011 0.927535 +vt 0.300254 0.927641 +vt 0.329834 0.927641 +vt 0.257257 0.927641 +vt 0.286837 0.927641 +vt 0.349320 0.942293 +vt 0.343251 0.937222 +vt 0.349320 0.932152 +vt 0.355388 0.932152 +vt 0.355388 0.942293 +vt 0.257257 0.951758 +vt 0.286837 0.951758 +vt 0.731292 0.910608 +vt 0.737360 0.905537 +vt 0.978919 0.496410 +vt 0.973848 0.490341 +vt 0.983989 0.490341 +vt 0.427431 0.951652 +vt 0.457011 0.951652 +vt 0.769975 0.748970 +vt 0.775045 0.755038 +vt 0.764905 0.755038 +vt 0.349319 0.913665 +vt 0.355388 0.903524 +vt 0.355388 0.913665 +vt 0.343251 0.908594 +vt 0.349319 0.903524 +vt 0.510060 0.920222 +vt 0.539887 0.920222 +vt 0.510060 0.896105 +vt 0.539887 0.902173 +vt 0.978919 0.502478 +vt 0.968778 0.496410 +vt 0.973848 0.540169 +vt 0.983989 0.546238 +vt 0.769975 0.742901 +vt 0.780115 0.748970 +vt 0.757401 0.962435 +vt 0.787227 0.968504 +vt 0.850753 0.606906 +vt 0.844684 0.617046 +vt 0.810615 0.006709 +vt 0.862890 0.394242 +vt 0.862890 0.437457 +vt 0.862890 0.481118 +vt 0.862890 0.524780 +vt 0.862890 0.568441 +vt 0.828821 0.011779 +vt 0.897588 0.619922 +vt 0.900342 0.734001 +vt 0.897588 0.734001 +vt 0.856821 0.606906 +vt 0.066114 0.706928 +vt 0.036535 0.706928 +vt 0.015684 0.699263 +vt 0.226289 0.585184 +vt 0.144205 0.577535 +vt 0.243840 0.577517 +vt 0.103933 0.591727 +vt 0.144813 0.585201 +vt 0.067190 0.610448 +vt 0.101530 0.584348 +vt 0.031754 0.635043 +vt 0.062628 0.604169 +vt 0.019314 0.676344 +vt 0.038033 0.639605 +vt 0.011933 0.673945 +vt 0.243840 0.706929 +vt 0.226289 0.699263 +vt 0.643952 0.640985 +vt 0.637425 0.600105 +vt 0.751488 0.518629 +vt 0.844992 0.029914 +vt 0.842238 0.006709 +vt 0.844992 0.006709 +vt 0.844992 0.112379 +vt 0.842238 0.071146 +vt 0.844992 0.071146 +vt 0.844992 0.195014 +vt 0.842238 0.153615 +vt 0.844992 0.153615 +vt 0.971960 0.476912 +vt 0.968778 0.294618 +vt 0.971960 0.294606 +vt 0.842238 0.029914 +vt 0.842238 0.112379 +vt 0.844992 0.276493 +vt 0.842238 0.195014 +vt 0.120950 0.874811 +vt 0.115675 0.876479 +vt 0.115675 0.874811 +vt 0.122882 0.853906 +vt 0.121215 0.874547 +vt 0.121215 0.853906 +vt 0.120312 0.854545 +vt 0.116313 0.873908 +vt 0.116313 0.854545 +vt 0.120950 0.851974 +vt 0.115675 0.853642 +vt 0.115675 0.851974 +vt 0.120950 0.853642 +vt 0.115411 0.853906 +vt 0.115411 0.874547 +vt 0.120312 0.873908 +vt 0.113743 0.874547 +vt 0.113743 0.853906 +vt 0.227626 0.971087 +vt 0.240379 0.967384 +vt 0.240499 0.970735 +vt 0.227428 0.980459 +vt 0.220218 0.977658 +vt 0.227797 0.977279 +vt 0.220212 0.970798 +vt 0.227212 0.967956 +vt 0.240499 0.977568 +vt 0.243840 0.970735 +vt 0.243840 0.977568 +vt 0.218851 0.977659 +vt 0.240421 0.980775 +vt 0.183493 0.981917 +vt 0.196246 0.978214 +vt 0.196366 0.981565 +vt 0.183295 0.991289 +vt 0.176085 0.988488 +vt 0.183663 0.988109 +vt 0.176079 0.981628 +vt 0.183079 0.978786 +vt 0.196366 0.988398 +vt 0.199707 0.981565 +vt 0.199707 0.988398 +vt 0.174718 0.988489 +vt 0.196288 0.991605 +vt 0.006709 0.780752 +vt 0.014532 0.802233 +vt 0.006709 0.802233 +vt 0.572923 0.871988 +vt 0.556279 0.874670 +vt 0.556279 0.871988 +vt 0.064513 0.780752 +vt 0.072337 0.802233 +vt 0.064513 0.802233 +vt 0.064513 0.810057 +vt 0.014532 0.810057 +vt 0.014532 0.772929 +vt 0.014532 0.780752 +vt 0.016951 0.799814 +vt 0.016951 0.783171 +vt 0.062095 0.783171 +vt 0.062095 0.799814 +vt 0.556279 0.919814 +vt 0.572923 0.874670 +vt 0.572923 0.919814 +vt 0.575605 0.919814 +vt 0.575605 0.874670 +vt 0.553598 0.874670 +vt 0.553598 0.919814 +vt 0.556279 0.922495 +vt 0.572923 0.922495 +vt 0.617258 0.281189 +vt 0.503572 0.278617 +vt 0.617258 0.278617 +vt 0.617252 0.276633 +vt 0.503567 0.270987 +vt 0.617252 0.270987 +vt 0.617247 0.269002 +vt 0.503562 0.269002 +vt 0.503562 0.266430 +vt 0.617247 0.266430 +vt 0.589022 0.935186 +vt 0.591594 0.821501 +vt 0.591594 0.935186 +vt 0.593578 0.935181 +vt 0.599224 0.821496 +vt 0.599224 0.935181 +vt 0.601209 0.935176 +vt 0.601209 0.821490 +vt 0.603781 0.821490 +vt 0.603781 0.935176 +vt 0.759070 0.836249 +vt 0.645385 0.833677 +vt 0.759070 0.833677 +vt 0.759065 0.831693 +vt 0.645379 0.826047 +vt 0.759065 0.826047 +vt 0.759060 0.824063 +vt 0.645374 0.824063 +vt 0.645374 0.821490 +vt 0.759060 0.821490 +vt 0.617198 0.935186 +vt 0.619771 0.821501 +vt 0.619770 0.935186 +vt 0.621755 0.935181 +vt 0.627401 0.821496 +vt 0.627401 0.935181 +vt 0.629385 0.935176 +vt 0.629385 0.821490 +vt 0.631957 0.821490 +vt 0.631957 0.935176 +vt 0.752826 0.864300 +vt 0.645381 0.861706 +vt 0.752826 0.861706 +vt 0.752823 0.859831 +vt 0.645378 0.854136 +vt 0.752823 0.854136 +vt 0.752819 0.852261 +vt 0.645374 0.852261 +vt 0.645374 0.849667 +vt 0.752819 0.849667 +vt 0.351951 0.890107 +vt 0.257257 0.887474 +vt 0.351951 0.887474 +vt 0.351951 0.885786 +vt 0.257257 0.880008 +vt 0.351951 0.880007 +vt 0.351951 0.878319 +vt 0.257257 0.878319 +vt 0.257257 0.875686 +vt 0.351951 0.875686 +vt 0.508551 0.935913 +vt 0.575605 0.938545 +vt 0.508551 0.938545 +vt 0.508551 0.940234 +vt 0.575605 0.946012 +vt 0.508551 0.946012 +vt 0.508551 0.947701 +vt 0.575605 0.947701 +vt 0.575605 0.950333 +vt 0.508551 0.950333 +vt 0.384226 0.982545 +vt 0.412188 0.979878 +vt 0.412188 0.982545 +vt 0.384226 0.979878 +vt 0.412188 0.977210 +vt 0.384226 0.977210 +vt 0.412188 0.974543 +vt 0.384226 0.974543 +vt 0.412188 0.971876 +vt 0.384226 0.971876 +vt 0.412188 0.969209 +vt 0.975218 0.742403 +vt 0.977533 0.745070 +vt 0.975218 0.745070 +vt 0.733178 0.956412 +vt 0.735845 0.956412 +vt 0.733178 0.962851 +vt 0.735845 0.962851 +vt 0.737731 0.965167 +vt 0.735845 0.965167 +vt 0.977533 0.740517 +vt 0.977533 0.742403 +vt 0.968778 0.742403 +vt 0.973332 0.740517 +vt 0.804547 0.269897 +vt 0.806559 0.154609 +vt 0.806559 0.269897 +vt 0.368783 0.880516 +vt 0.365368 0.879101 +vt 0.366783 0.875686 +vt 0.731292 0.965167 +vt 0.731292 0.960966 +vt 0.384226 0.969208 +vt 0.412188 0.965007 +vt 0.384226 0.986746 +vt 0.977533 0.746956 +vt 0.973332 0.746956 +vt 0.733178 0.965167 +vt 0.816621 0.154607 +vt 0.818633 0.269894 +vt 0.816621 0.269895 +vt 0.812596 0.154608 +vt 0.814609 0.269895 +vt 0.812596 0.269895 +vt 0.808571 0.154609 +vt 0.810584 0.269896 +vt 0.808571 0.269896 +vt 0.818633 0.154607 +vt 0.820646 0.269894 +vt 0.814609 0.154608 +vt 0.810584 0.154608 +vt 0.787228 0.948459 +vt 0.757401 0.956367 +vt 0.757401 0.948459 +vt 0.978919 0.571792 +vt 0.862890 0.611976 +vt 0.862890 0.601835 +vt 0.919230 0.949373 +vt 0.927137 0.978953 +vt 0.919230 0.978953 +vt 0.054911 0.950441 +vt 0.062819 0.980021 +vt 0.054911 0.980021 +vt 0.978919 0.528032 +vt 0.973848 0.534101 +vt 0.968778 0.528032 +vt 0.980330 0.202447 +vt 0.988237 0.232027 +vt 0.980330 0.232027 +vt 0.329834 0.913665 +vt 0.300254 0.903524 +vt 0.329834 0.903524 +vt 0.749497 0.915678 +vt 0.973848 0.565723 +vt 0.983989 0.565723 +vt 0.539887 0.882128 +vt 0.510060 0.890036 +vt 0.510060 0.882128 +vt 0.427431 0.921466 +vt 0.457011 0.913558 +vt 0.457011 0.921466 +vt 0.329834 0.921573 +vt 0.300254 0.913665 +vt 0.257257 0.921573 +vt 0.286837 0.913665 +vt 0.286837 0.921573 +vt 0.361456 0.942293 +vt 0.367525 0.937222 +vt 0.367525 0.947363 +vt 0.257257 0.903524 +vt 0.286837 0.903524 +vt 0.755566 0.910608 +vt 0.755566 0.920748 +vt 0.973848 0.514615 +vt 0.978919 0.508547 +vt 0.983989 0.514615 +vt 0.427431 0.903418 +vt 0.457011 0.903418 +vt 0.775045 0.730764 +vt 0.769975 0.736832 +vt 0.764905 0.730764 +vt 0.361456 0.913665 +vt 0.367525 0.908595 +vt 0.367525 0.918735 +vt 0.510060 0.871988 +vt 0.539887 0.871988 +vt 0.539887 0.890036 +vt 0.968778 0.508547 +vt 0.983989 0.534101 +vt 0.780115 0.736832 +vt 0.787228 0.956367 +vt 0.856821 0.617046 +vt 0.822752 0.006709 +vt 0.492337 0.881662 +vt 0.496310 0.880141 +vt 0.496310 0.881662 +vt 0.492337 0.880141 +vt 0.496310 0.878621 +vt 0.492337 0.878621 +vt 0.496310 0.877100 +vt 0.492337 0.877100 +vt 0.496310 0.875580 +vt 0.840002 0.728758 +vt 0.840002 0.725949 +vt 0.841407 0.725367 +vt 0.841407 0.707976 +vt 0.841407 0.711950 +vt 0.840002 0.711368 +vt 0.608440 0.981430 +vt 0.585312 0.982185 +vt 0.585312 0.981430 +vt 0.977248 0.128811 +vt 0.977631 0.129710 +vt 0.976884 0.128962 +vt 0.608440 0.982185 +vt 0.585312 0.982941 +vt 0.608440 0.982941 +vt 0.585312 0.983697 +vt 0.979072 0.128056 +vt 0.978688 0.127157 +vt 0.979436 0.127905 +vt 0.608440 0.983697 +vt 0.585312 0.984452 +vt 0.978538 0.129346 +vt 0.977782 0.129346 +vt 0.608440 0.984452 +vt 0.585312 0.985208 +vt 0.977248 0.128056 +vt 0.976884 0.127905 +vt 0.608440 0.985208 +vt 0.585312 0.985964 +vt 0.608440 0.979918 +vt 0.585312 0.980674 +vt 0.585312 0.979918 +vt 0.608440 0.980674 +vt 0.063198 0.934399 +vt 0.072039 0.933342 +vt 0.072039 0.934399 +vt 0.063198 0.933342 +vt 0.072039 0.932285 +vt 0.063198 0.932285 +vt 0.072039 0.931228 +vt 0.063198 0.931228 +vt 0.072039 0.930170 +vt 0.063198 0.930170 +vt 0.072039 0.929113 +vt 0.063198 0.929113 +vt 0.072039 0.928056 +vt 0.063198 0.935456 +vt 0.072039 0.935456 +vt 0.063198 0.936514 +vt 0.072039 0.936514 +vt 0.979072 0.128811 +vt 0.979436 0.128962 +vt 0.977631 0.127157 +vt 0.977782 0.127521 +vt 0.978688 0.111188 +vt 0.979436 0.111936 +vt 0.976884 0.112993 +vt 0.978688 0.129710 +vt 0.978538 0.127521 +vt 0.841139 0.826421 +vt 0.840538 0.826833 +vt 0.840338 0.826812 +vt 0.839894 0.635303 +vt 0.838616 0.635504 +vt 0.838616 0.635303 +vt 0.839894 0.634419 +vt 0.838616 0.634822 +vt 0.838616 0.634419 +vt 0.840538 0.809135 +vt 0.841251 0.808962 +vt 0.841139 0.809546 +vt 0.841256 0.810745 +vt 0.840338 0.811275 +vt 0.839894 0.630463 +vt 0.838616 0.631523 +vt 0.838616 0.630463 +vt 0.839894 0.635504 +vt 0.838616 0.636564 +vt 0.839894 0.632583 +vt 0.838616 0.633644 +vt 0.838616 0.632583 +vt 0.839894 0.633825 +vt 0.838616 0.633825 +vt 0.839894 0.636564 +vt 0.838616 0.637624 +vt 0.839894 0.631523 +vt 0.839894 0.633644 +vt 0.839894 0.634822 +vt 0.841251 0.827005 +vt 0.840882 0.827168 +vt 0.841139 0.779257 +vt 0.840538 0.779669 +vt 0.840338 0.779648 +vt 0.494581 0.547476 +vt 0.495859 0.547275 +vt 0.495859 0.547476 +vt 0.494581 0.548359 +vt 0.495859 0.547956 +vt 0.495859 0.548359 +vt 0.631793 0.258471 +vt 0.632505 0.258299 +vt 0.632394 0.258882 +vt 0.632511 0.260081 +vt 0.631593 0.260611 +vt 0.494581 0.552316 +vt 0.495859 0.551255 +vt 0.495859 0.552316 +vt 0.494581 0.547275 +vt 0.495859 0.546215 +vt 0.494581 0.550195 +vt 0.495859 0.549135 +vt 0.495859 0.550195 +vt 0.494581 0.548953 +vt 0.495859 0.548953 +vt 0.494581 0.546215 +vt 0.495859 0.545155 +vt 0.494581 0.551255 +vt 0.494581 0.549135 +vt 0.494581 0.547956 +vt 0.841251 0.779841 +vt 0.840882 0.780004 +vt 0.841139 0.842314 +vt 0.840538 0.842726 +vt 0.840338 0.842705 +vt 0.630675 0.276350 +vt 0.631953 0.276149 +vt 0.631953 0.276350 +vt 0.630675 0.277233 +vt 0.631953 0.276830 +vt 0.631953 0.277233 +vt 0.840538 0.872706 +vt 0.841251 0.872534 +vt 0.841139 0.873117 +vt 0.841256 0.874317 +vt 0.840338 0.874847 +vt 0.630675 0.281189 +vt 0.631953 0.280129 +vt 0.631953 0.281189 +vt 0.630675 0.276149 +vt 0.631953 0.275089 +vt 0.630675 0.279069 +vt 0.631953 0.278009 +vt 0.631953 0.279069 +vt 0.630675 0.277827 +vt 0.631953 0.277827 +vt 0.630675 0.274028 +vt 0.631953 0.274028 +vt 0.630675 0.280129 +vt 0.630675 0.278009 +vt 0.630675 0.276830 +vt 0.841251 0.842898 +vt 0.840882 0.843061 +vt 0.841139 0.889993 +vt 0.840538 0.890404 +vt 0.840338 0.890384 +vt 0.591343 0.949881 +vt 0.591142 0.948603 +vt 0.591343 0.948603 +vt 0.592226 0.949881 +vt 0.591823 0.948603 +vt 0.592226 0.948603 +vt 0.840538 0.856813 +vt 0.841251 0.856641 +vt 0.841139 0.857225 +vt 0.841256 0.858424 +vt 0.840338 0.858954 +vt 0.596182 0.949881 +vt 0.595122 0.948603 +vt 0.596182 0.948603 +vt 0.591142 0.949881 +vt 0.590082 0.948603 +vt 0.594062 0.948603 +vt 0.593002 0.949881 +vt 0.593002 0.948603 +vt 0.592820 0.949881 +vt 0.592820 0.948603 +vt 0.590082 0.949881 +vt 0.589022 0.948603 +vt 0.595122 0.949881 +vt 0.591823 0.949881 +vt 0.841251 0.890576 +vt 0.840882 0.890739 +vt 0.838616 0.294606 +vt 0.804547 0.141189 +vt 0.751488 0.742652 +vt 0.623992 0.413172 +vt 0.623992 0.294606 +vt 0.623992 0.324433 +vt 0.623992 0.354013 +vt 0.623992 0.383592 +vt 0.623992 0.442751 +vt 0.623992 0.472331 +vt 0.494581 0.531738 +vt 0.751488 0.505212 +vt 0.637409 0.505212 +vt 0.637426 0.423736 +vt 0.643952 0.382855 +vt 0.662673 0.346112 +vt 0.960285 0.189016 +vt 0.861164 0.276493 +vt 0.065130 0.847979 +vt 0.063198 0.846046 +vt 0.812354 0.990755 +vt 0.811263 0.989455 +vt 0.137391 0.989490 +vt 0.136299 0.988190 +vt 0.093578 0.838557 +vt 0.085754 0.830734 +vt 0.495769 0.720191 +vt 0.491213 0.720186 +vt 0.918835 0.006720 +vt 0.914279 0.006714 +vt 0.918835 0.133834 +vt 0.914279 0.133829 +vt 0.928726 0.760682 +vt 0.924170 0.760676 +vt 0.491671 0.862163 +vt 0.491675 0.857693 +vt 0.478919 0.890001 +vt 0.478919 0.885680 +vt 0.874581 0.263828 +vt 0.874581 0.268150 +vt 0.008595 0.959196 +vt 0.975647 0.760373 +vt 0.977533 0.764927 +vt 0.968778 0.762259 +vt 0.013148 0.952327 +vt 0.006709 0.952327 +vt 0.011262 0.950441 +vt 0.754778 0.877717 +vt 0.756778 0.877717 +vt 0.758193 0.879132 +vt 0.756778 0.882547 +vt 0.753363 0.881133 +vt 0.779926 0.255121 +vt 0.751964 0.276860 +vt 0.225603 0.772929 +vt 0.899184 0.949373 +vt 0.034866 0.950441 +vt 0.960285 0.202447 +vt 0.983989 0.589997 +vt 0.427431 0.941511 +vt 0.257257 0.941618 +vt 0.343251 0.947363 +vt 0.731292 0.920748 +vt 0.343251 0.918735 +vt 0.539887 0.896105 +vt 0.968778 0.502478 +vt 0.983989 0.540169 +vt 0.780115 0.742901 +vt 0.787227 0.962435 +vt 0.850753 0.617046 +vt 0.816684 0.006709 +vt 0.862890 0.294606 +vt 0.828821 0.141189 +vt 0.900342 0.619922 +vt 0.006709 0.706928 +vt 0.125275 0.706929 +vt 0.095695 0.706929 +vt 0.214013 0.706929 +vt 0.184434 0.706929 +vt 0.154853 0.706929 +vt 0.637409 0.518629 +vt 0.751488 0.729234 +vt 0.691829 0.706885 +vt 0.728568 0.725604 +vt 0.662673 0.677729 +vt 0.968778 0.476924 +vt 0.842238 0.276493 +vt 0.120950 0.876479 +vt 0.122882 0.874547 +vt 0.219956 0.978992 +vt 0.219936 0.969499 +vt 0.218845 0.970799 +vt 0.175823 0.989822 +vt 0.175803 0.980329 +vt 0.174712 0.981629 +vt 0.072337 0.780752 +vt 0.064513 0.772929 +vt 0.503572 0.281189 +vt 0.503567 0.276632 +vt 0.589022 0.821501 +vt 0.593579 0.821496 +vt 0.645385 0.836249 +vt 0.645379 0.831693 +vt 0.617198 0.821501 +vt 0.621755 0.821496 +vt 0.645381 0.864300 +vt 0.645378 0.859830 +vt 0.257257 0.890107 +vt 0.257257 0.885786 +vt 0.575605 0.935912 +vt 0.575605 0.940234 +vt 0.737731 0.958298 +vt 0.737731 0.960966 +vt 0.731292 0.958298 +vt 0.970664 0.746956 +vt 0.968778 0.745070 +vt 0.970664 0.740517 +vt 0.804547 0.154610 +vt 0.370198 0.877100 +vt 0.370198 0.879101 +vt 0.366783 0.880516 +vt 0.365368 0.877100 +vt 0.368783 0.875686 +vt 0.384226 0.965007 +vt 0.412188 0.986746 +vt 0.820646 0.154606 +vt 0.968778 0.571792 +vt 0.927137 0.949373 +vt 0.062819 0.950441 +vt 0.988237 0.202447 +vt 0.749497 0.905537 +vt 0.427431 0.913558 +vt 0.300254 0.921573 +vt 0.257257 0.913665 +vt 0.361456 0.932152 +vt 0.361456 0.903524 +vt 0.492337 0.875580 +vt 0.841407 0.729340 +vt 0.839420 0.727354 +vt 0.839420 0.709963 +vt 0.840002 0.708558 +vt 0.608440 0.985964 +vt 0.063198 0.928056 +vt 0.979436 0.112993 +vt 0.978688 0.113740 +vt 0.977631 0.113740 +vt 0.976884 0.111936 +vt 0.977631 0.111188 +vt 0.839420 0.826282 +vt 0.839420 0.825222 +vt 0.840338 0.824692 +vt 0.841256 0.825222 +vt 0.841256 0.826282 +vt 0.840882 0.808799 +vt 0.839420 0.810745 +vt 0.839420 0.809685 +vt 0.840338 0.809155 +vt 0.841256 0.809685 +vt 0.839894 0.637624 +vt 0.839420 0.779118 +vt 0.839420 0.778058 +vt 0.840338 0.777528 +vt 0.841256 0.778058 +vt 0.841256 0.779118 +vt 0.632137 0.258136 +vt 0.630675 0.260081 +vt 0.630675 0.259021 +vt 0.631593 0.258491 +vt 0.632511 0.259021 +vt 0.494581 0.545155 +vt 0.839420 0.842175 +vt 0.839420 0.841115 +vt 0.840338 0.840585 +vt 0.841256 0.841115 +vt 0.841256 0.842175 +vt 0.840882 0.872371 +vt 0.839420 0.874316 +vt 0.839420 0.873256 +vt 0.840338 0.872726 +vt 0.841256 0.873256 +vt 0.630675 0.275089 +vt 0.839420 0.889854 +vt 0.839420 0.888794 +vt 0.840338 0.888264 +vt 0.841256 0.888794 +vt 0.841256 0.889854 +vt 0.840882 0.856478 +vt 0.839420 0.858424 +vt 0.839420 0.857364 +vt 0.840338 0.856833 +vt 0.841256 0.857364 +vt 0.594062 0.949881 +vt 0.589022 0.949881 +vn 0.1139 0.0000 -0.9935 +vn 1.0000 0.0000 0.0000 +vn 0.1139 0.0000 0.9935 +vn 0.0587 -0.9983 0.0000 +vn 0.0587 0.9983 0.0000 +vn 0.0542 0.0000 -0.9985 +vn 0.0542 0.0000 0.9985 +vn 0.0542 -0.9985 0.0000 +vn 0.0542 0.9985 0.0000 +vn 0.0543 0.0000 0.9985 +vn 0.1140 -0.0000 0.9935 +vn 0.0000 0.0792 -0.9969 +vn 0.0000 0.0002 -1.0000 +vn 0.0000 0.3096 -0.9509 +vn 0.0000 0.5878 -0.8090 +vn 0.0000 0.8090 -0.5878 +vn 0.0000 0.9511 -0.3090 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.9969 -0.0785 +vn 0.0000 0.9941 -0.1087 +vn 0.0000 -0.9877 0.1564 +vn 0.0000 -0.9511 0.3090 +vn 0.0000 -0.8090 0.5878 +vn 0.0000 -0.5878 0.8090 +vn 0.0000 -0.3096 0.9509 +vn 0.0000 -0.0792 0.9969 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 -0.0002 1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.0000 0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.9919 0.1267 0.0000 +vn 0.9679 0.2513 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 -0.9239 -0.0000 +vn -0.9239 -0.3827 -0.0000 +vn -0.9239 0.3827 -0.0000 +vn -0.3827 0.9239 -0.0000 +vn 0.6412 0.0000 0.7674 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.9679 0.2513 0.0000 +vn -0.9919 0.1267 0.0000 +vn -0.6412 0.0000 0.7674 +vn 0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn 0.5942 0.8043 0.0000 +vn 0.6894 0.7244 0.0000 +vn 0.9967 0.0811 0.0000 +vn -0.9997 0.0257 0.0000 +vn 0.5221 0.8529 0.0000 +vn 0.4776 -0.8786 0.0000 +vn 0.3044 -0.9525 0.0000 +vn -0.4776 0.8786 0.0000 +vn -0.5221 -0.8529 0.0000 +vn 0.9313 -0.3643 0.0000 +vn 0.2961 0.9552 0.0000 +vn 0.9585 0.2850 0.0000 +vn 0.9865 0.1639 0.0000 +vn 0.8450 -0.5348 0.0000 +vn -0.7830 0.6220 0.0000 +vn 0.9302 0.3672 0.0000 +vn -0.1471 -0.9891 0.0000 +vn -0.3299 -0.9440 0.0000 +vn 0.1471 0.9891 0.0000 +vn -0.9302 -0.3672 0.0000 +vn 0.5247 -0.8513 0.0000 +vn 0.8112 0.5848 0.0000 +vn -0.0001 0.0000 1.0000 +vn -0.1973 0.9803 0.0000 +vn -0.0742 0.9972 0.0000 +vn 0.6089 0.7932 0.0000 +vn 0.0001 0.0000 -1.0000 +vn -0.6901 -0.7237 0.0000 +vn -0.2817 0.9595 0.0000 +vn 0.9718 -0.2358 0.0000 +vn 0.9104 -0.4138 0.0000 +vn -0.9718 0.2358 0.0000 +vn 0.2817 -0.9595 0.0000 +vn 0.8952 0.4458 0.0000 +vn 0.8951 0.4458 0.0000 +vn -0.5092 0.8606 0.0000 +vn 0.2540 0.9672 0.0000 +vn 0.3720 0.9282 0.0000 +vn 0.8957 0.4446 0.0000 +vn -0.9381 -0.3464 0.0000 +vn 0.1690 0.9856 0.0000 +vn 0.7691 -0.6392 0.0000 +vn 0.6356 -0.7720 0.0000 +vn -0.7690 0.6392 0.0000 +vn -0.1690 -0.9856 0.0000 +vn 1.0000 0.0066 0.0000 +vn -0.0788 0.9969 0.0000 +vn -0.4775 0.8786 0.0000 +vn -0.0002 0.0000 -1.0000 +s off +f 1189/1079/104 1194/1080/104 1193/1081/104 +f 1194/1080/105 1191/1082/105 1193/1081/105 +f 1192/1083/106 1187/1084/106 1191/1082/106 +f 1193/1081/107 1187/1085/107 1189/1086/107 +f 1190/1087/108 1192/1083/108 1194/1080/108 +f 1198/1088/109 1201/1089/109 1197/1090/109 +f 1202/1091/105 1199/1092/105 1201/1089/105 +f 1200/1093/110 1195/1094/110 1199/1092/110 +f 1201/1089/111 1195/1095/111 1197/1096/111 +f 1198/1097/112 1200/1093/112 1202/1091/112 +f 1206/1098/109 1209/1099/109 1205/1100/109 +f 1210/1101/105 1207/1102/105 1209/1099/105 +f 1208/1103/113 1203/1104/113 1207/1102/113 +f 1209/1099/111 1203/1105/111 1205/1106/111 +f 1206/1107/112 1208/1103/112 1210/1101/112 +f 1214/1108/109 1217/1109/109 1213/1110/109 +f 1218/1111/105 1215/1112/105 1217/1109/105 +f 1216/1113/110 1211/1114/110 1215/1112/110 +f 1217/1109/111 1211/1115/111 1213/1116/111 +f 1214/1117/112 1216/1113/112 1218/1111/112 +f 1222/1118/109 1225/1119/109 1221/1120/109 +f 1226/1121/105 1223/1122/105 1225/1119/105 +f 1224/1123/113 1219/1124/113 1223/1122/113 +f 1225/1119/111 1219/1125/111 1221/1126/111 +f 1222/1127/112 1224/1123/112 1226/1121/112 +f 1189/1079/104 1190/1128/104 1194/1080/104 +f 1194/1080/105 1192/1083/105 1191/1082/105 +f 1192/1083/114 1188/1129/114 1187/1084/114 +f 1193/1081/107 1191/1082/107 1187/1085/107 +f 1190/1087/108 1188/1130/108 1192/1083/108 +f 1198/1088/109 1202/1091/109 1201/1089/109 +f 1202/1091/105 1200/1093/105 1199/1092/105 +f 1200/1093/110 1196/1131/110 1195/1094/110 +f 1201/1089/111 1199/1092/111 1195/1095/111 +f 1198/1097/112 1196/1132/112 1200/1093/112 +f 1206/1098/109 1210/1101/109 1209/1099/109 +f 1210/1101/105 1208/1103/105 1207/1102/105 +f 1208/1103/110 1204/1133/110 1203/1104/110 +f 1209/1099/111 1207/1102/111 1203/1105/111 +f 1206/1107/112 1204/1134/112 1208/1103/112 +f 1214/1108/109 1218/1111/109 1217/1109/109 +f 1218/1111/105 1216/1113/105 1215/1112/105 +f 1216/1113/110 1212/1135/110 1211/1114/110 +f 1217/1109/111 1215/1112/111 1211/1115/111 +f 1214/1117/112 1212/1136/112 1216/1113/112 +f 1222/1118/109 1226/1121/109 1225/1119/109 +f 1226/1121/105 1224/1123/105 1223/1122/105 +f 1224/1123/110 1220/1137/110 1219/1124/110 +f 1225/1119/111 1223/1122/111 1219/1125/111 +f 1222/1127/112 1220/1138/112 1224/1123/112 +s 1 +f 667/1139/115 1120/1140/116 1121/1141/115 +f 668/1142/117 1121/1141/115 1122/1143/117 +f 669/1144/118 1122/1143/117 1123/1145/118 +f 670/1146/119 1123/1145/118 1124/1147/119 +f 671/1148/120 1124/1147/119 1125/1149/120 +f 1120/1150/121 673/1151/121 1127/1152/121 +f 674/1153/122 663/1154/122 656/1155/122 +f 1126/1156/123 664/1157/122 672/1158/124 +f 866/1159/105 673/1160/105 663/1161/105 +f 656/1162/105 667/1163/105 661/1164/105 +f 667/1163/105 660/1165/105 661/1164/105 +f 668/1166/105 659/1167/105 660/1165/105 +f 669/1168/105 658/1169/105 659/1167/105 +f 670/1170/105 657/1171/105 658/1169/105 +f 671/1172/105 662/1173/105 657/1171/105 +f 673/1160/105 656/1162/105 663/1161/105 +f 678/1174/105 679/1175/105 680/1176/105 +f 680/1177/125 657/1178/126 662/1179/125 +f 678/1180/127 659/1181/128 658/1182/127 +f 676/1183/129 661/1184/130 660/1185/129 +f 663/1186/131 680/1187/131 662/1188/131 +f 679/1189/126 658/1182/127 657/1178/126 +f 677/1190/128 660/1185/129 659/1181/128 +f 675/1191/130 656/1192/132 661/1184/130 +f 682/1193/131 688/1194/131 687/1195/131 +f 688/1196/122 685/1197/122 693/1198/122 +f 686/1199/105 692/1200/105 690/1201/105 +f 691/1202/133 685/1203/133 684/1204/133 +f 693/1205/134 690/1201/134 692/1200/134 +f 686/1199/135 691/1206/135 687/1207/135 +f 692/1200/136 688/1196/136 693/1198/136 +f 689/1208/137 687/1195/137 688/1194/137 +f 682/1209/121 691/1206/121 684/1210/121 +f 694/1211/131 705/1212/131 698/1213/131 +f 703/1214/133 701/1215/133 697/1216/133 +f 705/1212/138 701/1215/139 704/1217/138 +f 702/1218/131 699/1219/131 705/1212/131 +f 694/1220/121 700/1221/121 696/1222/121 +f 699/1219/122 697/1223/122 701/1215/122 +f 698/1213/105 704/1217/138 700/1221/105 +f 700/1221/133 703/1214/133 696/1224/133 +f 706/1225/131 717/1226/131 710/1227/131 +f 715/1228/133 713/1229/133 709/1230/133 +f 717/1226/138 713/1229/139 716/1231/138 +f 714/1232/131 711/1233/131 717/1226/131 +f 706/1234/121 712/1235/121 708/1236/121 +f 711/1233/122 709/1237/122 713/1229/122 +f 710/1227/105 716/1231/138 712/1235/105 +f 712/1235/133 715/1228/133 708/1238/133 +f 727/1239/133 721/1240/133 720/1241/133 +f 733/1242/133 722/1243/133 723/1244/133 +f 718/1245/131 729/1246/131 728/1247/131 +f 718/1248/121 727/1239/121 720/1249/121 +f 729/1246/122 721/1250/122 726/1251/122 +f 726/1251/105 724/1252/105 725/1253/105 +f 727/1239/105 722/1254/105 724/1252/105 +f 729/1246/105 725/1253/105 723/1255/105 +f 728/1247/105 723/1255/105 722/1254/105 +f 732/1256/105 730/1257/105 731/1258/105 +f 732/1256/122 724/1259/122 722/1260/122 +f 730/1257/121 723/1261/121 725/1262/121 +f 731/1258/131 725/1263/131 724/1264/131 +f 741/1265/122 737/1266/122 744/1267/122 +f 739/1268/105 745/1269/105 742/1270/105 +f 739/1268/135 743/1271/135 738/1272/135 +f 745/1269/136 741/1265/136 744/1267/136 +f 734/1273/121 743/1271/121 736/1274/121 +f 753/1275/122 749/1276/122 756/1277/122 +f 751/1278/105 757/1279/105 754/1280/105 +f 751/1278/135 755/1281/135 750/1282/135 +f 757/1279/136 753/1275/136 756/1277/136 +f 746/1283/121 755/1281/121 748/1284/121 +f 765/1285/122 761/1286/122 768/1287/122 +f 763/1288/105 769/1289/105 766/1290/105 +f 763/1288/135 767/1291/135 762/1292/135 +f 769/1289/136 765/1285/136 768/1287/136 +f 758/1293/121 767/1291/121 760/1294/121 +f 777/1295/122 773/1296/122 780/1297/122 +f 775/1298/105 781/1299/105 778/1300/105 +f 775/1298/135 779/1301/135 774/1302/135 +f 781/1299/136 777/1295/136 780/1297/136 +f 770/1303/121 779/1301/121 772/1304/121 +f 789/1305/122 785/1306/122 792/1307/122 +f 787/1308/105 793/1309/105 790/1310/105 +f 787/1308/135 791/1311/135 786/1312/135 +f 793/1309/136 789/1305/136 792/1307/136 +f 782/1313/121 791/1311/121 784/1314/121 +f 801/1315/122 797/1316/122 804/1317/122 +f 799/1318/105 805/1319/105 802/1320/105 +f 799/1318/135 803/1321/135 798/1322/135 +f 805/1319/136 801/1315/136 804/1317/136 +f 794/1323/121 803/1321/121 796/1324/121 +f 813/1325/122 809/1326/122 816/1327/122 +f 811/1328/105 817/1329/105 814/1330/105 +f 811/1328/135 815/1331/135 810/1332/135 +f 817/1329/136 813/1325/136 816/1327/136 +f 806/1333/121 815/1331/121 808/1334/121 +f 820/1335/140 819/1336/121 818/1337/121 +f 822/1338/141 821/1339/140 820/1335/140 +f 824/1340/142 823/1341/141 822/1338/141 +f 826/1342/143 825/1343/142 824/1340/142 +f 828/1344/122 827/1345/143 826/1342/143 +f 840/1346/131 830/1347/131 832/1348/131 +f 823/1349/133 827/1350/133 831/1351/133 +f 833/1352/133 835/1353/133 819/1354/133 +f 830/1347/131 837/1355/131 828/1356/131 +f 832/1348/131 828/1356/131 824/1357/131 +f 842/1358/144 857/1359/145 849/1360/145 +f 853/1361/133 855/1362/133 857/1363/133 +f 836/1364/133 831/1351/133 829/1365/133 +f 837/1366/122 829/1367/122 828/1344/122 +f 835/1368/121 818/1337/121 819/1336/121 +f 834/1369/131 832/1348/131 818/1370/131 +f 839/1371/133 833/1352/133 831/1351/133 +f 848/1372/146 855/1373/147 847/1374/147 +f 846/1375/143 853/1376/142 845/1377/142 +f 844/1378/141 850/1379/140 843/1380/140 +f 849/1381/145 856/1382/146 848/1372/146 +f 847/1374/147 854/1383/143 846/1375/143 +f 843/1380/140 852/1384/144 842/1358/144 +f 845/1377/142 851/1385/141 844/1378/141 +f 859/1386/148 673/1387/148 866/1388/148 +f 863/1389/121 1140/1390/121 1132/1391/121 +f 664/1157/122 873/1392/122 672/1158/122 +f 871/1393/148 863/1394/148 864/1395/148 +f 869/1396/148 861/1397/148 862/1398/148 +f 862/1399/122 881/1400/122 869/1401/122 +f 867/1402/148 858/1403/148 860/1404/148 +f 864/1395/133 1132/1405/133 1131/1406/133 +f 869/1407/105 878/1408/105 870/1409/105 +f 862/1398/133 1134/1410/133 1133/1411/133 +f 860/1404/133 1136/1412/133 1135/1413/133 +f 859/1414/121 1138/1415/121 1130/1416/121 +f 863/1389/121 878/1417/121 879/1418/121 +f 872/1419/148 886/1420/148 873/1421/148 +f 876/1422/148 874/1423/148 875/1424/148 +f 879/1425/148 881/1426/148 880/1427/148 +f 882/1428/148 884/1429/148 883/1430/148 +f 875/1424/133 1139/1431/133 1138/1432/133 +f 879/1425/133 1141/1433/133 1140/1434/133 +f 883/1430/133 1143/1435/133 1142/1436/133 +f 861/1437/121 882/1438/121 883/1439/121 +f 861/1437/121 1142/1440/121 1134/1441/121 +f 867/1442/105 882/1428/105 868/1443/105 +f 859/1414/121 876/1444/121 875/1445/121 +f 860/1446/122 885/1447/122 867/1448/122 +f 871/1449/105 876/1422/105 866/1450/105 +f 864/1451/122 877/1452/122 871/1453/122 +f 858/1454/121 1144/1455/121 1136/1456/121 +f 858/1454/121 886/1457/121 887/1458/121 +f 672/1459/105 886/1420/105 865/1460/105 +f 1137/1461/133 887/1462/133 872/1419/133 +f 1135/1463/122 884/1464/122 860/1446/122 +f 1133/1465/122 880/1466/122 862/1399/122 +f 1131/1467/122 874/1468/122 864/1451/122 +f 1130/1469/133 665/1470/133 859/1386/133 +f 1128/1471/122 872/1472/122 664/1157/122 +f 665/1473/121 1127/1152/121 673/1151/121 +f 671/1148/120 1126/1156/123 672/1158/124 +f 1120/1140/116 899/1474/115 1121/1141/115 +f 1121/1141/115 900/1475/117 1122/1143/117 +f 1122/1143/117 901/1476/118 1123/1145/118 +f 1123/1145/118 902/1477/119 1124/1147/119 +f 1124/1147/119 903/1478/120 1125/1149/120 +f 905/1479/121 1120/1150/121 1127/1152/121 +f 895/1480/122 906/1481/122 888/1482/122 +f 1126/1156/123 896/1483/122 1128/1471/122 +f 1099/1484/149 1097/1485/149 894/1486/149 +f 888/1487/149 899/1488/149 898/1489/149 +f 892/1490/149 899/1488/149 893/1491/149 +f 891/1492/149 900/1493/149 892/1490/149 +f 891/1492/149 902/1494/149 901/1495/149 +f 889/1496/149 902/1494/149 890/1497/149 +f 894/1486/149 903/1498/149 889/1496/149 +f 888/1487/149 905/1499/149 895/1500/149 +f 908/1501/149 907/1502/149 913/1503/149 +f 889/1504/126 912/1505/125 894/1506/125 +f 891/1507/128 910/1508/127 890/1509/127 +f 893/1510/130 908/1511/129 892/1512/129 +f 894/1513/131 913/1514/131 895/1515/131 +f 890/1509/127 911/1516/126 889/1504/126 +f 892/1512/129 909/1517/128 891/1507/128 +f 888/1518/132 907/1519/130 893/1510/130 +f 920/1520/131 914/1521/131 919/1522/131 +f 917/1523/122 920/1524/122 925/1525/122 +f 924/1526/149 918/1527/149 922/1528/149 +f 917/1529/133 923/1530/133 916/1531/133 +f 922/1528/150 925/1532/150 924/1526/150 +f 923/1533/151 918/1527/151 919/1534/151 +f 920/1524/152 924/1526/152 925/1525/152 +f 919/1522/153 921/1535/153 920/1520/153 +f 923/1533/121 914/1536/121 916/1537/121 +f 937/1538/131 926/1539/131 930/1540/131 +f 935/1541/133 933/1542/133 936/1543/133 +f 933/1542/154 937/1538/155 936/1543/155 +f 931/1544/131 934/1545/131 937/1538/131 +f 932/1546/121 926/1547/121 928/1548/121 +f 929/1549/122 931/1544/122 933/1542/122 +f 936/1543/155 930/1540/149 932/1546/149 +f 935/1541/133 932/1546/133 928/1550/133 +f 949/1551/131 938/1552/131 942/1553/131 +f 947/1554/133 945/1555/133 948/1556/133 +f 945/1555/154 949/1551/155 948/1556/155 +f 943/1557/131 946/1558/131 949/1551/131 +f 944/1559/121 938/1560/121 940/1561/121 +f 941/1562/122 943/1557/122 945/1555/122 +f 948/1556/155 942/1553/149 944/1559/149 +f 947/1554/133 944/1559/133 940/1563/133 +f 953/1564/133 959/1565/133 952/1566/133 +f 954/1567/133 965/1568/133 955/1569/133 +f 961/1570/131 950/1571/131 960/1572/131 +f 959/1565/121 950/1573/121 952/1574/121 +f 953/1575/122 961/1570/122 958/1576/122 +f 956/1577/149 958/1576/149 957/1578/149 +f 956/1577/149 960/1572/149 959/1565/149 +f 955/1579/149 958/1576/149 961/1570/149 +f 955/1579/149 960/1572/149 954/1580/149 +f 962/1581/149 964/1582/149 963/1583/149 +f 956/1584/122 964/1582/122 954/1585/122 +f 955/1586/121 962/1581/121 957/1587/121 +f 957/1588/131 963/1583/131 956/1589/131 +f 969/1590/122 973/1591/122 976/1592/122 +f 977/1593/149 971/1594/149 974/1595/149 +f 975/1596/151 971/1594/151 970/1597/151 +f 973/1591/152 977/1593/152 976/1592/152 +f 975/1596/121 966/1598/121 968/1599/121 +f 981/1600/122 985/1601/122 988/1602/122 +f 989/1603/149 983/1604/149 986/1605/149 +f 987/1606/151 983/1604/151 982/1607/151 +f 985/1601/152 989/1603/152 988/1602/152 +f 987/1606/121 978/1608/121 980/1609/121 +f 993/1610/122 997/1611/122 1000/1612/122 +f 1001/1613/149 995/1614/149 998/1615/149 +f 999/1616/151 995/1614/151 994/1617/151 +f 997/1611/152 1001/1613/152 1000/1612/152 +f 999/1616/121 990/1618/121 992/1619/121 +f 1005/1620/122 1009/1621/122 1012/1622/122 +f 1013/1623/149 1007/1624/149 1010/1625/149 +f 1011/1626/151 1007/1624/151 1006/1627/151 +f 1009/1621/152 1013/1623/152 1012/1622/152 +f 1011/1626/121 1002/1628/121 1004/1629/121 +f 1017/1630/122 1021/1631/122 1024/1632/122 +f 1025/1633/149 1019/1634/149 1022/1635/149 +f 1023/1636/151 1019/1634/151 1018/1637/151 +f 1021/1631/152 1025/1633/152 1024/1632/152 +f 1023/1636/121 1014/1638/121 1016/1639/121 +f 1029/1640/122 1033/1641/122 1036/1642/122 +f 1037/1643/149 1031/1644/149 1034/1645/149 +f 1035/1646/151 1031/1644/151 1030/1647/151 +f 1033/1641/152 1037/1643/152 1036/1642/152 +f 1035/1646/121 1026/1648/121 1028/1649/121 +f 1041/1650/122 1045/1651/122 1048/1652/122 +f 1049/1653/149 1043/1654/149 1046/1655/149 +f 1047/1656/151 1043/1654/151 1042/1657/151 +f 1045/1651/152 1049/1653/152 1048/1652/152 +f 1047/1656/121 1038/1658/121 1040/1659/121 +f 1051/1660/121 1052/1661/144 1050/1662/121 +f 1053/1663/144 1054/1664/145 1052/1661/144 +f 1055/1665/145 1056/1666/146 1054/1664/145 +f 1057/1667/146 1058/1668/147 1056/1666/146 +f 1059/1669/147 1060/1670/122 1058/1668/147 +f 1062/1671/131 1072/1672/131 1064/1673/131 +f 1057/1674/133 1055/1675/133 1063/1676/133 +f 1065/1677/133 1067/1678/133 1073/1679/133 +f 1062/1671/131 1069/1680/131 1070/1681/131 +f 1056/1682/131 1060/1683/131 1064/1673/131 +f 1081/1684/141 1084/1685/140 1074/1686/140 +f 1089/1687/133 1087/1688/133 1085/1689/133 +f 1063/1676/133 1068/1690/133 1061/1691/133 +f 1061/1692/122 1069/1693/122 1060/1670/122 +f 1050/1662/121 1067/1694/121 1051/1660/121 +f 1064/1673/131 1066/1695/131 1050/1696/131 +f 1065/1677/133 1071/1697/133 1063/1676/133 +f 1087/1698/143 1080/1699/142 1079/1700/143 +f 1085/1701/146 1078/1702/147 1077/1703/146 +f 1082/1704/144 1076/1705/145 1075/1706/144 +f 1088/1707/142 1081/1708/141 1080/1699/142 +f 1086/1709/147 1079/1700/143 1078/1702/147 +f 1084/1685/140 1075/1706/144 1074/1686/140 +f 1083/1710/145 1077/1703/146 1076/1705/145 +f 905/1711/156 1091/1712/156 1098/1713/156 +f 1140/1390/121 1095/1714/121 1132/1391/121 +f 1105/1715/122 896/1483/122 904/1716/122 +f 1095/1717/156 1103/1718/156 1096/1719/156 +f 1093/1720/156 1101/1721/156 1094/1722/156 +f 1113/1723/122 1094/1724/122 1101/1725/122 +f 1090/1726/156 1099/1727/156 1092/1728/156 +f 1132/1405/133 1096/1719/133 1131/1406/133 +f 1110/1729/149 1101/1730/149 1102/1731/149 +f 1134/1410/133 1094/1722/133 1133/1411/133 +f 1136/1412/133 1092/1728/133 1135/1413/133 +f 1138/1415/121 1091/1732/121 1130/1416/121 +f 1095/1714/121 1110/1733/121 1102/1734/121 +f 1118/1735/156 1104/1736/156 1105/1737/156 +f 1106/1738/156 1108/1739/156 1107/1740/156 +f 1111/1741/156 1113/1742/156 1110/1729/156 +f 1116/1743/156 1114/1744/156 1115/1745/156 +f 1139/1431/133 1107/1740/133 1138/1432/133 +f 1141/1433/133 1111/1741/133 1140/1434/133 +f 1143/1435/133 1115/1745/133 1142/1436/133 +f 1093/1746/121 1114/1747/121 1100/1748/121 +f 1142/1440/121 1093/1746/121 1134/1441/121 +f 1114/1744/149 1099/1749/149 1100/1750/149 +f 1091/1732/121 1108/1751/121 1098/1752/121 +f 1117/1753/122 1092/1754/122 1099/1755/122 +f 1108/1739/149 1103/1756/149 1098/1757/149 +f 1109/1758/122 1096/1759/122 1103/1760/122 +f 1144/1455/121 1090/1761/121 1136/1456/121 +f 1090/1761/121 1118/1762/121 1097/1763/121 +f 1118/1735/149 904/1764/149 1097/1765/149 +f 1119/1766/133 1137/1461/133 1104/1736/133 +f 1116/1767/122 1135/1463/122 1092/1754/122 +f 1112/1768/122 1133/1465/122 1094/1724/122 +f 1106/1769/122 1131/1467/122 1096/1759/122 +f 897/1770/133 1130/1469/133 1091/1712/133 +f 1104/1771/122 1128/1471/122 896/1483/122 +f 1127/1152/121 897/1772/121 905/1479/121 +f 1126/1156/123 903/1478/120 904/1716/124 +f 1146/1773/157 1147/1774/134 1145/1775/157 +f 1148/1776/134 1149/1777/105 1147/1774/134 +f 1150/1778/105 1151/1779/137 1149/1777/105 +f 1152/1780/137 1153/1781/158 1151/1779/137 +f 1147/1782/122 1151/1783/122 1153/1784/122 +f 1146/1785/121 1154/1786/121 1152/1787/121 +f 1157/1788/122 1155/1789/136 1156/1790/122 +f 1155/1791/133 1173/1792/133 1172/1793/133 +f 1158/1794/136 1165/1795/105 1155/1789/136 +f 1159/1796/105 1166/1797/135 1165/1795/105 +f 1168/1798/133 1182/1799/133 1180/1800/133 +f 1160/1801/135 1167/1802/121 1166/1797/135 +f 1166/1803/133 1173/1792/133 1165/1804/133 +f 1161/1805/121 1168/1806/151 1167/1802/121 +f 1156/1807/133 1172/1793/133 1171/1808/133 +f 1162/1809/151 1169/1810/149 1168/1806/151 +f 1163/1811/149 1170/1812/152 1169/1813/149 +f 1164/1814/152 1156/1790/122 1170/1812/152 +f 1171/1815/122 1175/1816/136 1174/1817/122 +f 1172/1818/136 1177/1819/105 1175/1816/136 +f 1173/1820/105 1179/1821/135 1177/1819/105 +f 1176/1822/135 1181/1823/121 1179/1821/135 +f 1178/1824/121 1183/1825/151 1181/1823/121 +f 1180/1826/151 1185/1827/149 1183/1825/151 +f 1184/1828/152 1174/1817/122 1186/1829/152 +f 1182/1830/149 1186/1829/152 1185/1831/149 +f 1167/1832/133 1180/1800/133 1178/1833/133 +f 1156/1807/133 1184/1834/133 1170/1835/133 +f 1185/1836/131 1186/1837/131 1179/1838/131 +f 1167/1832/133 1176/1839/133 1166/1803/133 +f 1170/1835/133 1182/1799/133 1169/1840/133 +f 1232/1841/133 1233/1842/133 1234/1843/133 +f 1235/1844/159 1234/1845/160 1233/1846/159 +f 1238/1847/161 1240/1848/161 1237/1849/161 +f 1235/1850/131 1238/1851/131 1241/1852/131 +f 1245/1853/131 1246/1854/131 1241/1852/131 +f 1242/1855/162 1229/1856/162 1228/1857/162 +f 1236/1858/160 1227/1859/163 1234/1845/160 +f 1245/1860/164 1231/1861/164 1230/1862/164 +f 1241/1863/165 1237/1849/165 1232/1864/165 +f 1243/1865/166 1228/1866/166 1227/1859/166 +f 1246/1867/167 1230/1862/167 1229/1856/167 +f 1244/1868/168 1232/1864/168 1231/1861/168 +f 1233/1846/159 1239/1869/169 1235/1844/159 +f 1233/1842/133 1237/1870/133 1240/1871/133 +f 1252/1872/133 1253/1873/133 1254/1874/133 +f 1255/1875/170 1254/1876/171 1253/1877/170 +f 1258/1878/172 1260/1879/172 1257/1880/172 +f 1255/1881/131 1258/1882/131 1261/1883/131 +f 1265/1884/131 1266/1885/131 1261/1883/131 +f 1262/1886/173 1249/1887/173 1248/1888/173 +f 1256/1889/171 1247/1890/174 1254/1876/171 +f 1265/1891/175 1251/1892/175 1250/1893/175 +f 1261/1894/176 1257/1880/176 1252/1895/176 +f 1263/1896/177 1248/1897/177 1247/1890/177 +f 1266/1898/178 1250/1893/178 1249/1887/178 +f 1264/1899/179 1252/1895/179 1251/1892/179 +f 1255/1875/170 1260/1879/180 1259/1900/180 +f 1253/1873/133 1257/1901/133 1260/1902/133 +f 1272/1903/133 1273/1904/181 1274/1905/133 +f 1275/1906/182 1274/1907/183 1273/1908/182 +f 1278/1909/184 1280/1910/184 1277/1911/184 +f 1275/1912/185 1278/1913/131 1281/1914/131 +f 1285/1915/131 1286/1916/131 1281/1914/131 +f 1282/1917/186 1269/1918/186 1268/1919/186 +f 1276/1920/183 1267/1921/187 1274/1907/183 +f 1285/1922/188 1271/1923/188 1270/1924/188 +f 1281/1925/189 1277/1911/189 1272/1926/189 +f 1267/1921/190 1282/1927/190 1268/1928/190 +f 1286/1929/191 1270/1924/191 1269/1918/191 +f 1284/1930/192 1272/1926/193 1271/1923/193 +f 1273/1908/182 1279/1931/194 1275/1906/182 +f 1273/1904/181 1277/1932/133 1280/1933/133 +f 1292/1934/133 1293/1935/133 1294/1936/133 +f 1295/1937/195 1294/1938/196 1293/1939/195 +f 1298/1940/197 1300/1941/197 1297/1942/197 +f 1295/1943/131 1298/1944/131 1301/1945/131 +f 1305/1946/131 1306/1947/131 1301/1945/131 +f 1302/1948/198 1289/1949/198 1288/1950/198 +f 1296/1951/196 1287/1952/199 1294/1938/196 +f 1290/1953/200 1304/1954/200 1291/1955/200 +f 1301/1956/201 1297/1942/201 1292/1957/201 +f 1303/1958/202 1288/1959/202 1287/1952/202 +f 1306/1960/203 1290/1953/203 1289/1949/203 +f 1304/1954/204 1292/1957/204 1291/1955/204 +f 1293/1939/195 1299/1961/205 1295/1937/195 +f 1293/1935/133 1297/1962/133 1300/1963/133 +f 667/1139/115 666/1964/116 1120/1140/116 +f 668/1142/117 667/1139/115 1121/1141/115 +f 669/1144/118 668/1142/117 1122/1143/117 +f 670/1146/119 669/1144/118 1123/1145/118 +f 671/1148/120 670/1146/119 1124/1147/119 +f 1120/1150/121 666/1965/121 673/1151/121 +f 674/1153/122 681/1966/122 663/1154/122 +f 1126/1156/123 1128/1471/122 664/1157/122 +f 663/1161/105 662/1173/105 869/1967/105 +f 662/1173/105 672/1968/105 865/1969/105 +f 867/1970/105 662/1173/105 865/1969/105 +f 867/1970/105 868/1971/105 662/1173/105 +f 868/1971/105 869/1967/105 662/1173/105 +f 870/1972/105 871/1973/105 663/1161/105 +f 871/1973/105 866/1159/105 663/1161/105 +f 869/1967/105 870/1972/105 663/1161/105 +f 656/1162/105 666/1974/105 667/1163/105 +f 667/1163/105 668/1166/105 660/1165/105 +f 668/1166/105 669/1168/105 659/1167/105 +f 669/1168/105 670/1170/105 658/1169/105 +f 670/1170/105 671/1172/105 657/1171/105 +f 671/1172/105 672/1968/105 662/1173/105 +f 673/1160/105 666/1974/105 656/1162/105 +f 680/1176/105 681/1975/105 678/1174/105 +f 681/1975/105 674/1976/105 675/1977/105 +f 676/1978/105 681/1975/105 675/1977/105 +f 676/1978/105 677/1979/105 681/1975/105 +f 677/1979/105 678/1174/105 681/1975/105 +f 680/1177/125 679/1189/126 657/1178/126 +f 678/1180/127 677/1190/128 659/1181/128 +f 676/1183/129 675/1191/130 661/1184/130 +f 663/1186/131 681/1980/131 680/1187/131 +f 679/1189/126 678/1180/127 658/1182/127 +f 677/1190/128 676/1183/129 660/1185/129 +f 675/1191/130 674/1981/132 656/1192/132 +f 682/1193/131 683/1982/131 688/1194/131 +f 688/1196/122 683/1983/122 685/1197/122 +f 686/1199/105 689/1208/105 692/1200/105 +f 691/1202/133 693/1205/133 685/1203/133 +f 693/1205/134 691/1202/134 690/1201/134 +f 686/1199/135 690/1201/135 691/1206/135 +f 692/1200/136 689/1208/136 688/1196/136 +f 689/1208/137 686/1199/137 687/1195/137 +f 682/1209/121 687/1207/121 691/1206/121 +f 694/1211/131 702/1218/131 705/1212/131 +f 703/1214/133 704/1217/133 701/1215/133 +f 705/1212/138 699/1219/139 701/1215/139 +f 702/1218/131 695/1984/131 699/1219/131 +f 694/1220/121 698/1213/121 700/1221/121 +f 699/1219/122 695/1985/122 697/1223/122 +f 698/1213/105 705/1212/138 704/1217/138 +f 700/1221/133 704/1217/133 703/1214/133 +f 706/1225/131 714/1232/131 717/1226/131 +f 715/1228/133 716/1231/133 713/1229/133 +f 717/1226/138 711/1233/139 713/1229/139 +f 714/1232/131 707/1986/131 711/1233/131 +f 706/1234/121 710/1227/121 712/1235/121 +f 711/1233/122 707/1987/122 709/1237/122 +f 710/1227/105 717/1226/138 716/1231/138 +f 712/1235/133 716/1231/133 715/1228/133 +f 727/1239/133 726/1251/133 721/1240/133 +f 733/1242/133 732/1256/133 722/1243/133 +f 718/1245/131 719/1988/131 729/1246/131 +f 718/1248/121 728/1247/121 727/1239/121 +f 729/1246/122 719/1989/122 721/1250/122 +f 726/1251/105 727/1239/105 724/1252/105 +f 727/1239/105 728/1247/105 722/1254/105 +f 729/1246/105 726/1251/105 725/1253/105 +f 728/1247/105 729/1246/105 723/1255/105 +f 732/1256/105 733/1242/105 730/1257/105 +f 732/1256/122 731/1258/122 724/1259/122 +f 730/1257/121 733/1242/121 723/1261/121 +f 731/1258/131 730/1257/131 725/1263/131 +f 741/1265/122 735/1990/122 737/1266/122 +f 739/1268/105 740/1991/105 745/1269/105 +f 739/1268/135 742/1270/135 743/1271/135 +f 745/1269/136 740/1991/136 741/1265/136 +f 734/1273/121 738/1272/121 743/1271/121 +f 753/1275/122 747/1992/122 749/1276/122 +f 751/1278/105 752/1993/105 757/1279/105 +f 751/1278/135 754/1280/135 755/1281/135 +f 757/1279/136 752/1993/136 753/1275/136 +f 746/1283/121 750/1282/121 755/1281/121 +f 765/1285/122 759/1994/122 761/1286/122 +f 763/1288/105 764/1995/105 769/1289/105 +f 763/1288/135 766/1290/135 767/1291/135 +f 769/1289/136 764/1995/136 765/1285/136 +f 758/1293/121 762/1292/121 767/1291/121 +f 777/1295/122 771/1996/122 773/1296/122 +f 775/1298/105 776/1997/105 781/1299/105 +f 775/1298/135 778/1300/135 779/1301/135 +f 781/1299/136 776/1997/136 777/1295/136 +f 770/1303/121 774/1302/121 779/1301/121 +f 789/1305/122 783/1998/122 785/1306/122 +f 787/1308/105 788/1999/105 793/1309/105 +f 787/1308/135 790/1310/135 791/1311/135 +f 793/1309/136 788/1999/136 789/1305/136 +f 782/1313/121 786/1312/121 791/1311/121 +f 801/1315/122 795/2000/122 797/1316/122 +f 799/1318/105 800/2001/105 805/1319/105 +f 799/1318/135 802/1320/135 803/1321/135 +f 805/1319/136 800/2001/136 801/1315/136 +f 794/1323/121 798/1322/121 803/1321/121 +f 813/1325/122 807/2002/122 809/1326/122 +f 811/1328/105 812/2003/105 817/1329/105 +f 811/1328/135 814/1330/135 815/1331/135 +f 817/1329/136 812/2003/136 813/1325/136 +f 806/1333/121 810/1332/121 815/1331/121 +f 820/1335/140 821/1339/140 819/1336/121 +f 822/1338/141 823/1341/141 821/1339/140 +f 824/1340/142 825/1343/142 823/1341/141 +f 826/1342/143 827/1345/143 825/1343/142 +f 828/1344/122 829/1367/122 827/1345/143 +f 840/1346/131 838/2004/131 830/1347/131 +f 819/1354/133 821/2005/133 823/1349/133 +f 823/1349/133 825/2006/133 827/1350/133 +f 827/1350/133 829/1365/133 831/1351/133 +f 831/1351/133 833/1352/133 819/1354/133 +f 819/1354/133 823/1349/133 831/1351/133 +f 833/1352/133 841/2007/133 835/1353/133 +f 830/1347/131 838/2004/131 837/1355/131 +f 820/2008/131 818/1370/131 832/1348/131 +f 832/1348/131 830/1347/131 828/1356/131 +f 828/1356/131 826/2009/131 824/1357/131 +f 824/1357/131 822/2010/131 820/2008/131 +f 820/2008/131 832/1348/131 824/1357/131 +f 842/1358/144 852/1384/144 857/1359/145 +f 857/1363/133 852/2011/133 850/2012/133 +f 850/2012/133 851/2013/133 857/1363/133 +f 851/2013/133 853/1361/133 857/1363/133 +f 853/1361/133 854/2014/133 855/1362/133 +f 855/1362/133 856/2015/133 857/1363/133 +f 836/1364/133 839/1371/133 831/1351/133 +f 837/1366/122 836/2016/122 829/1367/122 +f 835/1368/121 834/2017/121 818/1337/121 +f 834/1369/131 840/1346/131 832/1348/131 +f 839/1371/133 841/2007/133 833/1352/133 +f 848/1372/146 856/1382/146 855/1373/147 +f 846/1375/143 854/1383/143 853/1376/142 +f 844/1378/141 851/1385/141 850/1379/140 +f 849/1381/145 857/2018/145 856/1382/146 +f 847/1374/147 855/1373/147 854/1383/143 +f 843/1380/140 850/1379/140 852/1384/144 +f 845/1377/142 853/1376/142 851/1385/141 +f 859/1386/148 665/1470/148 673/1387/148 +f 863/1389/121 879/1418/121 1140/1390/121 +f 664/1157/122 872/1472/122 873/1392/122 +f 871/1393/148 870/2019/148 863/1394/148 +f 869/1396/148 868/2020/148 861/1397/148 +f 862/1399/122 880/1466/122 881/1400/122 +f 867/1402/148 865/2021/148 858/1403/148 +f 864/1395/133 863/1394/133 1132/1405/133 +f 869/1407/105 881/1426/105 878/1408/105 +f 862/1398/133 861/1397/133 1134/1410/133 +f 860/1404/133 858/1403/133 1136/1412/133 +f 859/1414/121 875/1445/121 1138/1415/121 +f 863/1389/121 870/2022/121 878/1417/121 +f 872/1419/148 887/1462/148 886/1420/148 +f 876/1422/148 877/2023/148 874/1423/148 +f 879/1425/148 878/1408/148 881/1426/148 +f 882/1428/148 885/2024/148 884/1429/148 +f 875/1424/133 874/1423/133 1139/1431/133 +f 879/1425/133 880/1427/133 1141/1433/133 +f 883/1430/133 884/1429/133 1143/1435/133 +f 861/1437/121 868/2025/121 882/1438/121 +f 861/1437/121 883/1439/121 1142/1440/121 +f 867/1442/105 885/2024/105 882/1428/105 +f 859/1414/121 866/2026/121 876/1444/121 +f 860/1446/122 884/1464/122 885/1447/122 +f 871/1449/105 877/2023/105 876/1422/105 +f 864/1451/122 874/1468/122 877/1452/122 +f 858/1454/121 887/1458/121 1144/1455/121 +f 858/1454/121 865/2027/121 886/1457/121 +f 672/1459/105 873/1421/105 886/1420/105 +f 1137/1461/133 1144/2028/133 887/1462/133 +f 1135/1463/122 1143/2029/122 884/1464/122 +f 1133/1465/122 1141/2030/122 880/1466/122 +f 1131/1467/122 1139/2031/122 874/1468/122 +f 1130/1469/133 1129/2032/133 665/1470/133 +f 1128/1471/122 1137/2033/122 872/1472/122 +f 665/1473/121 1129/2034/121 1127/1152/121 +f 671/1148/120 1125/1149/120 1126/1156/123 +f 1120/1140/116 898/2035/116 899/1474/115 +f 1121/1141/115 899/1474/115 900/1475/117 +f 1122/1143/117 900/1475/117 901/1476/118 +f 1123/1145/118 901/1476/118 902/1477/119 +f 1124/1147/119 902/1477/119 903/1478/120 +f 905/1479/121 898/2036/121 1120/1150/121 +f 895/1480/122 913/2037/122 906/1481/122 +f 1126/1156/123 904/1716/124 896/1483/122 +f 904/2038/149 894/1486/149 1097/1485/149 +f 894/1486/149 895/1500/149 1101/2039/149 +f 1099/1484/149 894/1486/149 1100/2040/149 +f 895/1500/149 905/1499/149 1098/2041/149 +f 1098/2041/149 1103/2042/149 895/1500/149 +f 1103/2042/149 1102/2043/149 895/1500/149 +f 1101/2039/149 1100/2040/149 894/1486/149 +f 1102/2043/149 1101/2039/149 895/1500/149 +f 888/1487/149 893/1491/149 899/1488/149 +f 892/1490/149 900/1493/149 899/1488/149 +f 891/1492/149 901/1495/149 900/1493/149 +f 891/1492/149 890/1497/149 902/1494/149 +f 889/1496/149 903/1498/149 902/1494/149 +f 894/1486/149 904/2038/149 903/1498/149 +f 888/1487/149 898/1489/149 905/1499/149 +f 906/2044/149 913/1503/149 907/1502/149 +f 913/1503/149 912/2045/149 910/2046/149 +f 912/2045/149 911/2047/149 910/2046/149 +f 910/2046/149 909/2048/149 913/1503/149 +f 909/2048/149 908/1501/149 913/1503/149 +f 889/1504/126 911/1516/126 912/1505/125 +f 891/1507/128 909/1517/128 910/1508/127 +f 893/1510/130 907/1519/130 908/1511/129 +f 894/1513/131 912/2049/131 913/1514/131 +f 890/1509/127 910/1508/127 911/1516/126 +f 892/1512/129 908/1511/129 909/1517/128 +f 888/1518/132 906/2050/132 907/1519/130 +f 920/1520/131 915/2051/131 914/1521/131 +f 917/1523/122 915/2052/122 920/1524/122 +f 924/1526/149 921/1535/149 918/1527/149 +f 917/1529/133 925/1532/133 923/1530/133 +f 922/1528/150 923/1530/150 925/1532/150 +f 923/1533/151 922/1528/151 918/1527/151 +f 920/1524/152 921/1535/152 924/1526/152 +f 919/1522/153 918/1527/153 921/1535/153 +f 923/1533/121 919/1534/121 914/1536/121 +f 937/1538/131 934/1545/131 926/1539/131 +f 935/1541/133 929/2053/133 933/1542/133 +f 933/1542/154 931/1544/154 937/1538/155 +f 931/1544/131 927/2054/131 934/1545/131 +f 932/1546/121 930/1540/121 926/1547/121 +f 929/1549/122 927/2055/122 931/1544/122 +f 936/1543/155 937/1538/155 930/1540/149 +f 935/1541/133 936/1543/133 932/1546/133 +f 949/1551/131 946/1558/131 938/1552/131 +f 947/1554/133 941/2056/133 945/1555/133 +f 945/1555/154 943/1557/154 949/1551/155 +f 943/1557/131 939/2057/131 946/1558/131 +f 944/1559/121 942/1553/121 938/1560/121 +f 941/1562/122 939/2058/122 943/1557/122 +f 948/1556/155 949/1551/155 942/1553/149 +f 947/1554/133 948/1556/133 944/1559/133 +f 953/1564/133 958/1576/133 959/1565/133 +f 954/1567/133 964/1582/133 965/1568/133 +f 961/1570/131 951/2059/131 950/1571/131 +f 959/1565/121 960/1572/121 950/1573/121 +f 953/1575/122 951/2060/122 961/1570/122 +f 956/1577/149 959/1565/149 958/1576/149 +f 956/1577/149 954/1580/149 960/1572/149 +f 955/1579/149 957/1578/149 958/1576/149 +f 955/1579/149 961/1570/149 960/1572/149 +f 962/1581/149 965/1568/149 964/1582/149 +f 956/1584/122 963/1583/122 964/1582/122 +f 955/1586/121 965/1568/121 962/1581/121 +f 957/1588/131 962/1581/131 963/1583/131 +f 969/1590/122 967/2061/122 973/1591/122 +f 977/1593/149 972/2062/149 971/1594/149 +f 975/1596/151 974/1595/151 971/1594/151 +f 973/1591/152 972/2062/152 977/1593/152 +f 975/1596/121 970/1597/121 966/1598/121 +f 981/1600/122 979/2063/122 985/1601/122 +f 989/1603/149 984/2064/149 983/1604/149 +f 987/1606/151 986/1605/151 983/1604/151 +f 985/1601/152 984/2064/152 989/1603/152 +f 987/1606/121 982/1607/121 978/1608/121 +f 993/1610/122 991/2065/122 997/1611/122 +f 1001/1613/149 996/2066/149 995/1614/149 +f 999/1616/151 998/1615/151 995/1614/151 +f 997/1611/152 996/2066/152 1001/1613/152 +f 999/1616/121 994/1617/121 990/1618/121 +f 1005/1620/122 1003/2067/122 1009/1621/122 +f 1013/1623/149 1008/2068/149 1007/1624/149 +f 1011/1626/151 1010/1625/151 1007/1624/151 +f 1009/1621/152 1008/2068/152 1013/1623/152 +f 1011/1626/121 1006/1627/121 1002/1628/121 +f 1017/1630/122 1015/2069/122 1021/1631/122 +f 1025/1633/149 1020/2070/149 1019/1634/149 +f 1023/1636/151 1022/1635/151 1019/1634/151 +f 1021/1631/152 1020/2070/152 1025/1633/152 +f 1023/1636/121 1018/1637/121 1014/1638/121 +f 1029/1640/122 1027/2071/122 1033/1641/122 +f 1037/1643/149 1032/2072/149 1031/1644/149 +f 1035/1646/151 1034/1645/151 1031/1644/151 +f 1033/1641/152 1032/2072/152 1037/1643/152 +f 1035/1646/121 1030/1647/121 1026/1648/121 +f 1041/1650/122 1039/2073/122 1045/1651/122 +f 1049/1653/149 1044/2074/149 1043/1654/149 +f 1047/1656/151 1046/1655/151 1043/1654/151 +f 1045/1651/152 1044/2074/152 1049/1653/152 +f 1047/1656/121 1042/1657/121 1038/1658/121 +f 1051/1660/121 1053/1663/144 1052/1661/144 +f 1053/1663/144 1055/1665/145 1054/1664/145 +f 1055/1665/145 1057/1667/146 1056/1666/146 +f 1057/1667/146 1059/1669/147 1058/1668/147 +f 1059/1669/147 1061/1692/122 1060/1670/122 +f 1062/1671/131 1070/1681/131 1072/1672/131 +f 1055/1675/133 1053/2075/133 1051/2076/133 +f 1051/2076/133 1065/1677/133 1055/1675/133 +f 1065/1677/133 1063/1676/133 1055/1675/133 +f 1063/1676/133 1061/1691/133 1059/2077/133 +f 1059/2077/133 1057/1674/133 1063/1676/133 +f 1065/1677/133 1051/2076/133 1067/1678/133 +f 1062/1671/131 1060/1683/131 1069/1680/131 +f 1064/1673/131 1050/1696/131 1052/2078/131 +f 1052/2078/131 1054/2079/131 1064/1673/131 +f 1054/2079/131 1056/1682/131 1064/1673/131 +f 1056/1682/131 1058/2080/131 1060/1683/131 +f 1060/1683/131 1062/1671/131 1064/1673/131 +f 1081/1684/141 1089/2081/141 1084/1685/140 +f 1082/2082/133 1084/2083/133 1089/1687/133 +f 1089/1687/133 1088/2084/133 1087/1688/133 +f 1087/1688/133 1086/2085/133 1085/1689/133 +f 1085/1689/133 1083/2086/133 1082/2082/133 +f 1082/2082/133 1089/1687/133 1085/1689/133 +f 1063/1676/133 1071/1697/133 1068/1690/133 +f 1061/1692/122 1068/2087/122 1069/1693/122 +f 1050/1662/121 1066/2088/121 1067/1694/121 +f 1064/1673/131 1072/1672/131 1066/1695/131 +f 1065/1677/133 1073/1679/133 1071/1697/133 +f 1087/1698/143 1088/1707/142 1080/1699/142 +f 1085/1701/146 1086/1709/147 1078/1702/147 +f 1082/1704/144 1083/1710/145 1076/1705/145 +f 1088/1707/142 1089/2089/141 1081/1708/141 +f 1086/1709/147 1087/1698/143 1079/1700/143 +f 1084/1685/140 1082/1704/144 1075/1706/144 +f 1083/1710/145 1085/1701/146 1077/1703/146 +f 905/1711/156 897/1770/156 1091/1712/156 +f 1140/1390/121 1111/2090/121 1095/1714/121 +f 1105/1715/122 1104/1771/122 896/1483/122 +f 1095/1717/156 1102/2091/156 1103/1718/156 +f 1093/1720/156 1100/2092/156 1101/1721/156 +f 1113/1723/122 1112/1768/122 1094/1724/122 +f 1090/1726/156 1097/2093/156 1099/1727/156 +f 1132/1405/133 1095/1717/133 1096/1719/133 +f 1110/1729/149 1113/1742/149 1101/1730/149 +f 1134/1410/133 1093/1720/133 1094/1722/133 +f 1136/1412/133 1090/1726/133 1092/1728/133 +f 1138/1415/121 1107/2094/121 1091/1732/121 +f 1095/1714/121 1111/2090/121 1110/1733/121 +f 1118/1735/156 1119/1766/156 1104/1736/156 +f 1106/1738/156 1109/2095/156 1108/1739/156 +f 1111/1741/156 1112/2096/156 1113/1742/156 +f 1116/1743/156 1117/2097/156 1114/1744/156 +f 1139/1431/133 1106/1738/133 1107/1740/133 +f 1141/1433/133 1112/2096/133 1111/1741/133 +f 1143/1435/133 1116/1743/133 1115/1745/133 +f 1093/1746/121 1115/2098/121 1114/1747/121 +f 1142/1440/121 1115/2098/121 1093/1746/121 +f 1114/1744/149 1117/2097/149 1099/1749/149 +f 1091/1732/121 1107/2094/121 1108/1751/121 +f 1117/1753/122 1116/1767/122 1092/1754/122 +f 1108/1739/149 1109/2095/149 1103/1756/149 +f 1109/1758/122 1106/1769/122 1096/1759/122 +f 1144/1455/121 1119/2099/121 1090/1761/121 +f 1090/1761/121 1119/2099/121 1118/1762/121 +f 1118/1735/149 1105/1737/149 904/1764/149 +f 1119/1766/133 1144/2028/133 1137/1461/133 +f 1116/1767/122 1143/2029/122 1135/1463/122 +f 1112/1768/122 1141/2030/122 1133/1465/122 +f 1106/1769/122 1139/2031/122 1131/1467/122 +f 897/1770/133 1129/2032/133 1130/1469/133 +f 1104/1771/122 1137/2033/122 1128/1471/122 +f 1127/1152/121 1129/2034/121 897/1772/121 +f 1126/1156/123 1125/1149/120 903/1478/120 +f 1146/1773/157 1148/1776/134 1147/1774/134 +f 1148/1776/134 1150/1778/105 1149/1777/105 +f 1150/1778/105 1152/1780/137 1151/1779/137 +f 1152/1780/137 1154/2100/158 1153/1781/158 +f 1153/1784/122 1145/2101/122 1147/1782/122 +f 1147/1782/122 1149/2102/122 1151/1783/122 +f 1150/2103/121 1148/2104/121 1152/1787/121 +f 1148/2104/121 1146/1785/121 1152/1787/121 +f 1157/1788/122 1158/1794/136 1155/1789/136 +f 1155/1791/133 1165/1804/133 1173/1792/133 +f 1158/1794/136 1159/1796/105 1165/1795/105 +f 1159/1796/105 1160/1801/135 1166/1797/135 +f 1168/1798/133 1169/1840/133 1182/1799/133 +f 1160/1801/135 1161/1805/121 1167/1802/121 +f 1166/1803/133 1176/1839/133 1173/1792/133 +f 1161/1805/121 1162/1809/151 1168/1806/151 +f 1156/1807/133 1155/1791/133 1172/1793/133 +f 1162/1809/151 1163/2105/149 1169/1810/149 +f 1163/1811/149 1164/1814/152 1170/1812/152 +f 1164/1814/152 1157/1788/122 1156/1790/122 +f 1171/1815/122 1172/1818/136 1175/1816/136 +f 1172/1818/136 1173/1820/105 1177/1819/105 +f 1173/1820/105 1176/1822/135 1179/1821/135 +f 1176/1822/135 1178/1824/121 1181/1823/121 +f 1178/1824/121 1180/1826/151 1183/1825/151 +f 1180/1826/151 1182/2106/149 1185/1827/149 +f 1184/1828/152 1171/1815/122 1174/1817/122 +f 1182/1830/149 1184/1828/152 1186/1829/152 +f 1167/1832/133 1168/1798/133 1180/1800/133 +f 1156/1807/133 1171/1808/133 1184/1834/133 +f 1186/1837/131 1174/2107/131 1179/1838/131 +f 1174/2107/131 1175/2108/131 1179/1838/131 +f 1175/2108/131 1177/2109/131 1179/1838/131 +f 1179/1838/131 1181/2110/131 1183/2111/131 +f 1183/2111/131 1185/1836/131 1179/1838/131 +f 1167/1832/133 1178/1833/133 1176/1839/133 +f 1170/1835/133 1184/1834/133 1182/1799/133 +f 1234/1843/133 1227/2112/133 1232/1841/133 +f 1227/2112/133 1228/2113/133 1232/1841/133 +f 1228/2113/133 1229/2114/133 1232/1841/133 +f 1229/2114/133 1230/2115/133 1232/1841/133 +f 1230/2115/133 1231/2116/133 1232/1841/133 +f 1235/1844/159 1236/1858/160 1234/1845/160 +f 1238/1847/161 1239/1869/161 1240/1848/161 +f 1235/1850/131 1239/2117/131 1238/1851/131 +f 1246/1854/131 1242/2118/131 1241/1852/131 +f 1242/2118/131 1243/2119/131 1241/1852/131 +f 1243/2119/131 1236/2120/131 1241/1852/131 +f 1236/2120/131 1235/1850/131 1241/1852/131 +f 1241/1852/131 1244/2121/185 1245/1853/131 +f 1242/1855/162 1246/1867/162 1229/1856/162 +f 1236/1858/160 1243/1865/163 1227/1859/163 +f 1245/1860/164 1244/1868/164 1231/1861/164 +f 1241/1863/165 1238/1847/165 1237/1849/165 +f 1243/1865/166 1242/2122/206 1228/1866/166 +f 1246/1867/167 1245/1860/167 1230/1862/167 +f 1244/1868/168 1241/1863/168 1232/1864/168 +f 1233/1846/159 1240/1848/169 1239/1869/169 +f 1233/1842/133 1232/1841/133 1237/1870/133 +f 1254/1874/133 1247/2123/133 1252/1872/133 +f 1247/2123/133 1248/2124/133 1252/1872/133 +f 1248/2124/133 1249/2125/133 1252/1872/133 +f 1249/2125/133 1250/2126/133 1252/1872/133 +f 1250/2126/133 1251/2127/133 1252/1872/133 +f 1255/1875/170 1256/1889/171 1254/1876/171 +f 1258/1878/172 1259/1900/172 1260/1879/172 +f 1255/1881/131 1259/2128/131 1258/1882/131 +f 1266/1885/131 1262/2129/131 1261/1883/131 +f 1262/2129/131 1263/2130/131 1261/1883/131 +f 1263/2130/131 1256/2131/131 1261/1883/131 +f 1256/2131/131 1255/1881/131 1261/1883/131 +f 1261/1883/131 1264/2132/131 1265/1884/131 +f 1262/1886/173 1266/1898/173 1249/1887/173 +f 1256/1889/171 1263/1896/174 1247/1890/174 +f 1265/1891/175 1264/1899/175 1251/1892/175 +f 1261/1894/176 1258/1878/176 1257/1880/176 +f 1263/1896/177 1262/2133/177 1248/1897/177 +f 1266/1898/178 1265/1891/178 1250/1893/178 +f 1264/1899/179 1261/1894/179 1252/1895/179 +f 1255/1875/170 1253/1877/170 1260/1879/180 +f 1253/1873/133 1252/1872/133 1257/1901/133 +f 1274/1905/133 1267/2134/133 1272/1903/133 +f 1267/2134/133 1268/2135/133 1272/1903/133 +f 1268/2135/133 1269/2136/133 1272/1903/133 +f 1269/2136/133 1270/2137/133 1272/1903/133 +f 1270/2137/133 1271/2138/133 1272/1903/133 +f 1275/1906/182 1276/1920/183 1274/1907/183 +f 1278/1909/184 1279/1931/184 1280/1910/184 +f 1275/1912/185 1279/2139/131 1278/1913/131 +f 1286/1916/131 1282/2140/131 1281/1914/131 +f 1282/2140/131 1283/2141/131 1281/1914/131 +f 1283/2141/131 1276/2142/131 1281/1914/131 +f 1276/2142/131 1275/1912/185 1281/1914/131 +f 1281/1914/131 1284/2143/207 1285/1915/131 +f 1282/1917/186 1286/1929/186 1269/1918/186 +f 1276/1920/183 1283/2144/187 1267/1921/187 +f 1285/1922/188 1284/1930/188 1271/1923/188 +f 1281/1925/189 1278/1909/189 1277/1911/189 +f 1267/1921/190 1283/2144/190 1282/1927/190 +f 1286/1929/191 1285/1922/191 1270/1924/191 +f 1284/1930/192 1281/1925/192 1272/1926/193 +f 1273/1908/182 1280/1910/194 1279/1931/194 +f 1273/1904/181 1272/1903/133 1277/1932/133 +f 1294/1936/133 1287/2145/133 1292/1934/133 +f 1287/2145/133 1288/2146/133 1292/1934/133 +f 1288/2146/133 1289/2147/133 1292/1934/133 +f 1289/2147/133 1290/2148/133 1292/1934/133 +f 1290/2148/133 1291/2149/133 1292/1934/133 +f 1295/1937/195 1296/1951/196 1294/1938/196 +f 1298/1940/197 1299/1961/197 1300/1941/197 +f 1295/1943/131 1299/2150/131 1298/1944/131 +f 1306/1947/131 1302/2151/131 1301/1945/131 +f 1302/2151/131 1303/2152/131 1301/1945/131 +f 1303/2152/131 1296/2153/131 1301/1945/131 +f 1296/2153/131 1295/1943/131 1301/1945/131 +f 1301/1945/131 1304/2154/131 1305/1946/131 +f 1302/1948/198 1306/1960/198 1289/1949/198 +f 1296/1951/196 1303/1958/199 1287/1952/199 +f 1290/1953/200 1305/2155/200 1304/1954/200 +f 1301/1956/201 1298/1940/201 1297/1942/201 +f 1303/1958/202 1302/2156/202 1288/1959/202 +f 1306/1960/203 1305/2155/203 1290/1953/203 +f 1304/1954/204 1301/1956/204 1292/1957/204 +f 1293/1939/195 1300/1941/205 1299/1961/205 +f 1293/1935/133 1292/1934/133 1297/1962/133 +o frame +v 0.500000 0.000000 -3.500000 +v 0.500000 0.000000 3.500000 +v 0.500000 6.000000 3.500000 +v 0.500000 5.999982 -3.499982 +v 0.299220 0.054715 -3.299312 +v 0.299220 0.054715 3.299312 +v 0.299220 2.500000 -3.299312 +v 0.299220 3.519543 -3.137832 +v 0.299220 4.439287 -2.669199 +v 0.299220 5.169199 -1.939287 +v 0.299220 5.637832 -1.019543 +v 0.299220 5.799312 0.000000 +v 0.299220 5.637832 1.019543 +v 0.299220 5.169199 1.939287 +v 0.299220 4.439287 2.669199 +v 0.299220 3.519543 3.137832 +v 0.299220 2.500000 3.299312 +v 0.299220 0.054715 -3.440433 +v 0.299220 0.054715 3.440433 +v 0.299220 2.511072 -3.439998 +v 0.299220 3.563152 -3.439998 +v 0.299220 4.522236 -3.439998 +v 0.299220 5.283369 -3.439998 +v 0.299220 5.772047 -3.439998 +v 0.299220 5.940434 0.000000 +v 0.299220 5.772047 3.439998 +v 0.299220 5.283369 3.439998 +v 0.299220 4.522236 3.439998 +v 0.299220 3.563152 3.439998 +v 0.299220 2.511072 3.439998 +v 0.500000 0.000000 3.299312 +v 0.500000 0.000000 -3.299311 +v 0.509942 2.575847 3.433846 +v 0.500000 2.500000 3.299312 +v 0.500000 5.799312 0.000000 +v 0.500000 5.999991 0.000009 +v 0.500000 3.519543 3.137832 +v 0.509942 3.693161 3.215357 +v 0.500000 4.439287 2.669199 +v 0.509942 4.591897 2.756523 +v 0.500000 5.169199 1.939287 +v 0.509942 5.306234 2.042186 +v 0.500000 5.637832 1.019543 +v 0.509942 5.777302 1.066608 +v 0.500000 2.500000 -3.299312 +v 0.509942 2.562243 -3.433324 +v 0.509942 5.779282 -1.054175 +v 0.500000 5.637832 -1.019543 +v 0.500000 5.169199 -1.939287 +v 0.509942 5.306233 -2.042186 +v 0.500000 4.439287 -2.669199 +v 0.509942 4.591897 -2.756523 +v 0.500000 3.519543 -3.137832 +v 0.509942 3.637241 -3.226135 +v 0.500000 2.575847 3.500000 +v 0.500000 0.000000 3.433846 +v 0.500000 0.000000 -3.399656 +v -0.500000 0.000000 -3.500000 +v -0.500000 0.000000 3.500000 +v -0.500000 6.000000 3.500000 +v -0.500000 5.999982 -3.499982 +v -0.299220 0.054715 -3.299312 +v -0.299220 0.054715 3.299312 +v -0.299220 2.500000 -3.299312 +v -0.299220 3.519543 -3.137832 +v -0.299220 4.439287 -2.669199 +v -0.299220 5.169199 -1.939287 +v -0.299220 5.637832 -1.019543 +v -0.299220 5.799312 0.000000 +v -0.299220 5.637832 1.019543 +v -0.299220 5.169199 1.939287 +v -0.299220 4.439287 2.669199 +v -0.299220 3.519543 3.137832 +v -0.299220 2.500000 3.299312 +v -0.299220 0.054715 -3.440433 +v -0.299220 0.054715 3.440433 +v -0.299220 2.511072 -3.439998 +v -0.299220 3.563152 -3.439998 +v -0.299220 4.522236 -3.439998 +v -0.299220 5.283369 -3.439998 +v -0.299220 5.772047 -3.439998 +v -0.299220 5.940434 0.000000 +v -0.299220 5.772047 3.439998 +v -0.299220 5.283369 3.439998 +v -0.299220 4.522236 3.439998 +v -0.299220 3.563152 3.439998 +v -0.299220 2.511072 3.439998 +v -0.500000 0.000000 3.299312 +v -0.500000 0.000000 -3.299311 +v -0.509942 2.575847 3.433846 +v -0.500000 2.500000 3.299312 +v -0.500000 5.799312 0.000000 +v -0.500000 5.999991 0.000009 +v -0.500000 3.519543 3.137832 +v -0.509942 3.693161 3.215357 +v -0.500000 4.439287 2.669199 +v -0.509942 4.591897 2.756523 +v -0.500000 5.169199 1.939287 +v -0.509942 5.306234 2.042186 +v -0.500000 5.637832 1.019543 +v -0.509942 5.777302 1.066608 +v -0.500000 2.500000 -3.299312 +v -0.509942 2.562243 -3.433324 +v -0.509942 5.779282 -1.054175 +v -0.500000 5.637832 -1.019543 +v -0.500000 5.169199 -1.939287 +v -0.509942 5.306233 -2.042186 +v -0.500000 4.439287 -2.669199 +v -0.509942 4.591897 -2.756523 +v -0.500000 3.519543 -3.137832 +v -0.509942 3.637241 -3.226135 +v -0.500000 2.575847 3.500000 +v -0.500000 0.000000 3.433846 +v -0.500000 0.000000 -3.399656 +v 0.000000 0.000000 -3.500000 +v 0.000000 0.000000 3.500000 +v 0.000000 6.000000 3.500000 +v 0.000000 5.999982 -3.499982 +v 0.000000 0.054715 -3.299312 +v 0.000000 0.054715 3.299312 +v 0.000000 0.054715 -3.440433 +v 0.000000 0.054715 3.440433 +v 0.000000 2.511072 -3.439998 +v 0.000000 3.563152 -3.439998 +v 0.000000 4.522236 -3.439998 +v 0.000000 5.283369 -3.439998 +v 0.000000 5.772047 -3.439998 +v 0.000000 5.940434 0.000000 +v 0.000000 5.772047 3.439998 +v 0.000000 5.283369 3.439998 +v 0.000000 4.522236 3.439998 +v 0.000000 3.563152 3.439998 +v 0.000000 2.511072 3.439998 +vt 0.241702 0.739929 +vt 0.006709 0.759512 +vt 0.006709 0.739929 +vt 0.685390 0.273007 +vt 0.685390 0.278276 +vt 0.665807 0.280867 +vt 0.855026 0.768807 +vt 0.862890 0.728378 +vt 0.862890 0.768807 +vt 0.490115 0.143946 +vt 0.481472 0.102659 +vt 0.490145 0.006876 +vt 0.855026 0.728378 +vt 0.862890 0.632606 +vt 0.876307 0.622065 +vt 0.884171 0.717836 +vt 0.876307 0.717836 +vt 0.855026 0.930522 +vt 0.862890 0.890094 +vt 0.862890 0.930522 +vt 0.855026 0.849665 +vt 0.862890 0.809236 +vt 0.862890 0.849665 +vt 0.855026 0.890094 +vt 0.876307 0.758265 +vt 0.855026 0.809236 +vt 0.884171 0.798694 +vt 0.876307 0.839123 +vt 0.876307 0.798694 +vt 0.884171 0.758265 +vt 0.884171 0.839123 +vt 0.876307 0.879552 +vt 0.397594 0.017557 +vt 0.355501 0.009420 +vt 0.434984 0.035969 +vt 0.462955 0.063960 +vt 0.481394 0.185718 +vt 0.490145 0.281015 +vt 0.884171 0.879552 +vt 0.876307 0.919981 +vt 0.462955 0.223931 +vt 0.434983 0.251922 +vt 0.399781 0.269910 +vt 0.356032 0.278491 +vt 0.036915 0.353397 +vt 0.013305 0.294621 +vt 0.032444 0.294621 +vt 0.141455 0.558572 +vt 0.237228 0.564100 +vt 0.141022 0.564083 +vt 0.065501 0.533893 +vt 0.032442 0.564081 +vt 0.036914 0.505305 +vt 0.101525 0.306456 +vt 0.141023 0.294622 +vt 0.141456 0.300132 +vt 0.018561 0.389419 +vt 0.006709 0.429350 +vt 0.101524 0.552247 +vt 0.062252 0.564082 +vt 0.788343 0.516011 +vt 0.776624 0.557217 +vt 0.776624 0.516011 +vt 0.788343 0.478448 +vt 0.776624 0.478448 +vt 0.788343 0.448638 +vt 0.776624 0.448638 +vt 0.788343 0.429498 +vt 0.776624 0.429498 +vt 0.788343 0.294606 +vt 0.776624 0.294606 +vt 0.801760 0.429498 +vt 0.813480 0.294606 +vt 0.813480 0.429498 +vt 0.801760 0.448638 +vt 0.813480 0.448638 +vt 0.801760 0.478448 +vt 0.813480 0.478448 +vt 0.801760 0.516011 +vt 0.813480 0.516011 +vt 0.801760 0.557217 +vt 0.813480 0.557217 +vt 0.801760 0.653422 +vt 0.813480 0.653422 +vt 0.013302 0.564081 +vt 0.018560 0.469282 +vt 0.065503 0.324810 +vt 0.062254 0.294621 +vt 0.237228 0.294606 +vt 0.237228 0.300133 +vt 0.099816 0.564082 +vt 0.012236 0.429350 +vt 0.099818 0.294622 +vt 0.730396 0.270674 +vt 0.718677 0.276201 +vt 0.718677 0.270674 +vt 0.392975 0.266861 +vt 0.353056 0.273212 +vt 0.428998 0.248493 +vt 0.457578 0.219896 +vt 0.482256 0.143945 +vt 0.475920 0.183871 +vt 0.475919 0.104020 +vt 0.457578 0.067995 +vt 0.428998 0.039397 +vt 0.392978 0.021029 +vt 0.353057 0.014680 +vt 0.255157 0.010638 +vt 0.738547 0.270674 +vt 0.730396 0.012236 +vt 0.738547 0.012236 +vt 0.255142 0.278598 +vt 0.255136 0.273329 +vt 0.356034 0.281112 +vt 0.255161 0.006709 +vt 0.788343 0.653422 +vt 0.788343 0.557217 +vt 0.718677 0.012236 +vt 0.730396 0.006709 +vt 0.510060 0.788490 +vt 0.510060 0.768907 +vt 0.647140 0.768907 +vt 0.751964 0.140819 +vt 0.771547 0.006709 +vt 0.771547 0.241704 +vt 0.006709 0.720346 +vt 0.646224 0.278276 +vt 0.646224 0.273007 +vt 0.955361 0.496751 +vt 0.947497 0.456323 +vt 0.955361 0.456323 +vt 0.241689 0.143952 +vt 0.241719 0.281021 +vt 0.233046 0.185239 +vt 0.947497 0.496751 +vt 0.955361 0.592522 +vt 0.947497 0.594665 +vt 0.955361 0.610225 +vt 0.947497 0.705997 +vt 0.947497 0.608082 +vt 0.955361 0.335035 +vt 0.947497 0.294606 +vt 0.955361 0.294606 +vt 0.955361 0.415894 +vt 0.947497 0.375465 +vt 0.955361 0.375465 +vt 0.947497 0.335035 +vt 0.955361 0.746426 +vt 0.955361 0.705997 +vt 0.947497 0.415894 +vt 0.955361 0.827284 +vt 0.947497 0.786855 +vt 0.955361 0.786855 +vt 0.947497 0.746426 +vt 0.955361 0.867713 +vt 0.947497 0.827284 +vt 0.149169 0.270340 +vt 0.107075 0.278477 +vt 0.186559 0.251928 +vt 0.214530 0.223938 +vt 0.232968 0.102180 +vt 0.241719 0.006883 +vt 0.955361 0.908141 +vt 0.947497 0.867713 +vt 0.214529 0.063967 +vt 0.186557 0.035976 +vt 0.151355 0.017988 +vt 0.107605 0.009406 +vt 0.280851 0.505307 +vt 0.257240 0.564083 +vt 0.262497 0.469284 +vt 0.385392 0.300133 +vt 0.481164 0.294606 +vt 0.481164 0.300133 +vt 0.276379 0.294623 +vt 0.309438 0.324812 +vt 0.280851 0.353400 +vt 0.384959 0.564083 +vt 0.345461 0.552249 +vt 0.385392 0.558573 +vt 0.250645 0.429353 +vt 0.256172 0.429353 +vt 0.306190 0.294623 +vt 0.345461 0.306458 +vt 0.764905 0.516011 +vt 0.764905 0.478448 +vt 0.764905 0.448638 +vt 0.764905 0.429498 +vt 0.764905 0.294606 +vt 0.825199 0.429498 +vt 0.825199 0.448638 +vt 0.825199 0.478448 +vt 0.825199 0.516011 +vt 0.825199 0.557217 +vt 0.825199 0.653422 +vt 0.257240 0.294623 +vt 0.262496 0.389422 +vt 0.309438 0.533894 +vt 0.276379 0.564083 +vt 0.481164 0.564100 +vt 0.481164 0.558573 +vt 0.384958 0.294623 +vt 0.306190 0.564083 +vt 0.706958 0.270674 +vt 0.144548 0.021036 +vt 0.104629 0.014686 +vt 0.180571 0.039405 +vt 0.209152 0.068002 +vt 0.227494 0.104027 +vt 0.233830 0.143953 +vt 0.227494 0.183878 +vt 0.209152 0.219903 +vt 0.180573 0.248500 +vt 0.144552 0.266868 +vt 0.104632 0.273218 +vt 0.006731 0.277259 +vt 0.706958 0.012236 +vt 0.698807 0.270674 +vt 0.698807 0.012236 +vt 0.006715 0.009300 +vt 0.107607 0.006786 +vt 0.006735 0.281189 +vt 0.764905 0.653422 +vt 0.764905 0.557217 +vt 0.706958 0.006709 +vt 0.647140 0.808073 +vt 0.784220 0.788490 +vt 0.791130 0.006709 +vt 0.791130 0.140818 +vt 0.241702 0.759512 +vt 0.665807 0.006709 +vt 0.685390 0.014569 +vt 0.685390 0.006709 +vt 0.685390 0.010639 +vt 0.685390 0.280867 +vt 0.855026 0.630463 +vt 0.884171 0.619922 +vt 0.884171 0.919981 +vt 0.237228 0.558573 +vt 0.801760 0.294606 +vt 0.730396 0.276201 +vt 0.255152 0.014568 +vt 0.255144 0.281189 +vt 0.776624 0.653422 +vt 0.718677 0.006709 +vt 0.784220 0.768907 +vt 0.751964 0.241704 +vt 0.751964 0.006709 +vt 0.241702 0.720346 +vt 0.646224 0.006709 +vt 0.646224 0.010639 +vt 0.646224 0.014569 +vt 0.646224 0.280867 +vt 0.947497 0.908141 +vt 0.343753 0.564083 +vt 0.343753 0.294623 +vt 0.825199 0.294606 +vt 0.706958 0.276201 +vt 0.006727 0.273330 +vt 0.006709 0.014569 +vt 0.006717 0.006709 +vt 0.784220 0.808073 +vt 0.510060 0.808073 +vt 0.791130 0.241704 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.3090 -0.9511 +vn 0.0000 -0.0785 -0.9969 +vn 1.0000 0.0059 0.0000 +vn 0.9999 -0.0072 0.0088 +vn 1.0000 0.0070 -0.0070 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0785 0.9969 +vn 0.0000 -0.9511 -0.3090 +vn 0.0000 -0.8090 -0.5878 +vn 0.0000 -0.5878 -0.8090 +vn 0.0000 -0.3090 0.9511 +vn 0.0000 -0.5878 0.8090 +vn 0.0000 -0.8090 0.5878 +vn 0.0000 -0.9511 0.3090 +vn 0.9996 -0.0118 0.0267 +vn 0.9992 -0.0037 -0.0401 +vn 0.9997 -0.0146 0.0182 +vn 0.9998 -0.0176 0.0132 +vn 0.9999 -0.0066 -0.0091 +vn 1.0000 0.0071 0.0070 +vn 0.9998 -0.0176 -0.0129 +vn 0.9997 -0.0148 -0.0183 +vn 0.9997 -0.0111 -0.0234 +vn 0.9991 -0.0049 0.0417 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -0.0001 -1.0000 +vn 0.0000 -0.9988 -0.0489 +vn 0.0000 -0.9988 0.0489 +vn 0.0000 -0.0001 1.0000 +vn 0.0000 -0.0002 1.0000 +vn 0.0883 0.9961 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9966 -0.0205 -0.0804 +vn 0.9976 -0.0063 -0.0690 +vn 0.9980 -0.0347 -0.0530 +vn 0.9983 -0.0476 -0.0337 +vn 1.0000 -0.0054 0.0001 +vn 0.9977 -0.0641 -0.0207 +vn 0.9977 -0.0646 0.0206 +vn 0.9983 -0.0469 0.0340 +vn 0.9980 -0.0345 0.0539 +vn 0.9964 -0.0224 0.0812 +vn 0.9975 -0.0060 0.0703 +vn 1.0000 -0.0020 0.0012 +vn 0.2629 0.9648 0.0000 +vn 1.0000 -0.0001 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.9891 -0.0019 0.1474 +vn 1.0000 -0.0038 -0.0025 +vn 0.0000 -0.0002 -1.0000 +vn -1.0000 0.0059 0.0000 +vn -1.0000 0.0070 -0.0070 +vn -0.9999 -0.0072 0.0088 +vn -0.9996 -0.0118 0.0267 +vn -0.9992 -0.0037 -0.0401 +vn -0.9997 -0.0146 0.0182 +vn -0.9998 -0.0176 0.0132 +vn -0.9999 -0.0066 -0.0091 +vn -1.0000 0.0071 0.0070 +vn -0.9998 -0.0176 -0.0129 +vn -0.9997 -0.0148 -0.0183 +vn -0.9997 -0.0111 -0.0234 +vn -0.9991 -0.0049 0.0417 +vn -0.0883 0.9961 0.0000 +vn -0.9966 -0.0205 -0.0804 +vn -0.9976 -0.0063 -0.0690 +vn -0.9980 -0.0347 -0.0530 +vn -0.9983 -0.0476 -0.0337 +vn -0.9977 -0.0641 -0.0207 +vn -1.0000 -0.0054 0.0001 +vn -0.9977 -0.0646 0.0206 +vn -0.9983 -0.0469 0.0340 +vn -0.9980 -0.0345 0.0539 +vn -0.9964 -0.0224 0.0812 +vn -0.9975 -0.0060 0.0703 +vn -1.0000 -0.0020 0.0012 +vn -0.2629 0.9648 0.0000 +vn -1.0000 -0.0001 0.0000 +vn -0.9891 -0.0019 0.1474 +vn -1.0000 -0.0038 -0.0025 +s 1 +f 1424/2157/208 1307/2158/208 1421/2159/208 +f 1337/2160/209 1362/2161/209 1422/2162/209 +f 1343/2163/210 1323/2164/211 1322/2165/210 +f 1342/2166/212 1353/2167/213 1310/2168/214 +f 1340/2169/211 1312/2170/208 1323/2164/211 +f 1311/2171/215 1351/2172/216 1313/2173/216 +f 1341/2174/209 1319/2175/217 1318/2176/209 +f 1347/2177/218 1321/2178/219 1320/2179/218 +f 1349/2180/217 1320/2179/218 1319/2175/217 +f 1351/2172/216 1314/2181/220 1313/2173/216 +f 1345/2182/219 1322/2165/210 1321/2178/219 +f 1357/2183/221 1316/2184/222 1315/2185/221 +f 1359/2186/220 1315/2185/221 1314/2181/220 +f 1355/2187/222 1317/2188/223 1316/2184/222 +f 1360/2189/224 1352/2190/225 1310/2168/214 +f 1358/2191/226 1360/2189/224 1310/2168/214 +f 1356/2192/227 1358/2191/226 1310/2168/214 +f 1353/2167/213 1356/2192/227 1310/2168/214 +f 1350/2193/228 1342/2166/212 1309/2194/229 +f 1354/2195/223 1318/2196/209 1317/2188/223 +f 1348/2197/230 1350/2193/228 1309/2194/229 +f 1346/2198/231 1348/2197/230 1309/2194/229 +f 1344/2199/232 1346/2198/231 1309/2194/229 +f 1339/2200/233 1344/2199/232 1309/2194/229 +f 1316/2201/234 1330/2202/234 1329/2203/234 +f 1323/2204/234 1325/2205/234 1336/2206/234 +f 1321/2207/234 1333/2208/234 1320/2209/234 +f 1314/2210/234 1326/2211/234 1313/2212/234 +f 1317/2213/234 1331/2214/234 1330/2202/234 +f 1322/2215/234 1334/2216/234 1321/2207/234 +f 1335/2217/208 1439/2218/235 1438/2219/208 +f 1334/2220/208 1438/2219/208 1437/2221/208 +f 1333/2222/208 1437/2221/208 1436/2223/208 +f 1332/2224/208 1436/2223/208 1435/2225/208 +f 1331/2226/209 1435/2225/236 1434/2227/209 +f 1330/2228/237 1434/2229/209 1433/2230/237 +f 1329/2231/215 1433/2230/215 1432/2232/215 +f 1328/2233/215 1432/2232/215 1431/2234/215 +f 1327/2235/215 1431/2234/215 1430/2236/215 +f 1326/2237/238 1430/2236/215 1429/2238/238 +f 1324/2239/239 1429/2238/238 1427/2240/239 +f 1320/2209/234 1332/2241/234 1319/2242/234 +f 1315/2243/234 1329/2203/234 1328/2244/234 +f 1313/2212/234 1324/2245/234 1311/2246/234 +f 1322/2215/234 1336/2206/234 1335/2247/234 +f 1319/2242/234 1331/2214/234 1318/2248/234 +f 1314/2210/234 1328/2244/234 1327/2249/234 +f 1311/2250/240 1427/2251/241 1425/2252/241 +f 1343/2253/242 1339/2200/233 1340/2254/243 +f 1345/2255/244 1344/2199/232 1343/2253/242 +f 1347/2256/245 1346/2198/231 1345/2255/244 +f 1347/2256/245 1350/2193/228 1348/2197/230 +f 1341/2257/246 1350/2193/228 1349/2258/247 +f 1354/2259/248 1356/2192/227 1353/2167/213 +f 1355/2260/249 1358/2191/226 1356/2192/227 +f 1357/2261/250 1360/2189/224 1358/2191/226 +f 1359/2262/251 1352/2190/225 1360/2189/224 +f 1351/2263/252 1363/2264/253 1352/2190/225 +f 1341/2257/246 1353/2167/213 1342/2166/212 +f 1338/2265/254 1312/2266/240 1337/2267/254 +f 1340/2254/243 1362/2268/255 1337/2269/256 +f 1339/2200/233 1309/2194/229 1361/2270/257 +f 1352/2190/225 1307/2271/258 1310/2168/214 +f 1325/2272/259 1439/2218/235 1336/2273/235 +f 1426/2274/241 1325/2275/241 1312/2266/240 +f 1311/2250/240 1426/2274/241 1312/2266/240 +f 1423/2276/241 1309/2277/241 1342/2278/241 +f 1361/2279/215 1423/2280/215 1422/2281/215 +f 1364/2282/208 1424/2157/208 1421/2159/208 +f 1422/2162/209 1419/2283/209 1394/2284/209 +f 1380/2285/211 1400/2286/210 1379/2287/210 +f 1399/2288/260 1367/2289/261 1410/2290/262 +f 1397/2291/211 1369/2292/208 1394/2293/208 +f 1368/2294/215 1408/2295/216 1395/2296/215 +f 1376/2297/217 1398/2298/209 1375/2299/209 +f 1378/2300/219 1404/2301/218 1377/2302/218 +f 1377/2302/218 1406/2303/217 1376/2297/217 +f 1371/2304/220 1408/2295/216 1370/2305/216 +f 1379/2287/210 1402/2306/219 1378/2300/219 +f 1373/2307/222 1414/2308/221 1372/2309/221 +f 1372/2309/221 1416/2310/220 1371/2304/220 +f 1374/2311/223 1412/2312/222 1373/2307/222 +f 1417/2313/263 1367/2289/261 1409/2314/264 +f 1415/2315/265 1367/2289/261 1417/2313/263 +f 1413/2316/266 1367/2289/261 1415/2315/265 +f 1410/2290/262 1367/2289/261 1413/2316/266 +f 1407/2317/267 1366/2318/268 1399/2288/260 +f 1375/2319/209 1411/2320/223 1374/2311/223 +f 1405/2321/269 1366/2318/268 1407/2317/267 +f 1403/2322/270 1366/2318/268 1405/2321/269 +f 1401/2323/271 1366/2318/268 1403/2322/270 +f 1396/2324/272 1366/2318/268 1401/2323/271 +f 1373/2325/256 1387/2326/256 1374/2327/256 +f 1380/2328/256 1382/2329/256 1369/2330/256 +f 1390/2331/256 1378/2332/256 1377/2333/256 +f 1383/2334/256 1371/2335/256 1370/2336/256 +f 1374/2327/256 1388/2337/256 1375/2338/256 +f 1391/2339/256 1379/2340/256 1378/2332/256 +f 1439/2218/235 1392/2341/208 1438/2219/208 +f 1438/2219/208 1391/2342/208 1437/2221/208 +f 1437/2221/208 1390/2343/208 1436/2223/208 +f 1436/2223/208 1389/2344/208 1435/2225/208 +f 1435/2225/236 1388/2345/209 1434/2227/209 +f 1434/2229/209 1387/2346/237 1433/2230/237 +f 1433/2230/215 1386/2347/215 1432/2232/215 +f 1432/2232/215 1385/2348/215 1431/2234/215 +f 1431/2234/215 1384/2349/215 1430/2236/215 +f 1430/2236/215 1383/2350/238 1429/2238/238 +f 1429/2238/238 1381/2351/239 1427/2240/239 +f 1389/2352/256 1377/2333/256 1376/2353/256 +f 1372/2354/256 1386/2355/256 1373/2325/256 +f 1381/2356/256 1370/2336/256 1368/2357/256 +f 1379/2340/256 1393/2358/256 1380/2328/256 +f 1388/2337/256 1376/2353/256 1375/2338/256 +f 1371/2335/256 1385/2359/256 1372/2354/256 +f 1427/2251/241 1368/2360/273 1425/2252/241 +f 1396/2324/272 1400/2361/274 1397/2362/275 +f 1401/2323/271 1402/2363/276 1400/2361/274 +f 1403/2322/270 1404/2364/277 1402/2363/276 +f 1404/2364/277 1407/2317/267 1406/2365/278 +f 1407/2317/267 1398/2366/279 1406/2365/278 +f 1411/2367/280 1413/2316/266 1412/2368/281 +f 1412/2368/281 1415/2315/265 1414/2369/282 +f 1414/2369/282 1417/2313/263 1416/2370/283 +f 1416/2370/283 1409/2314/264 1408/2371/284 +f 1420/2372/285 1408/2371/284 1409/2314/264 +f 1398/2366/279 1410/2290/262 1411/2367/280 +f 1369/2373/273 1395/2374/286 1394/2375/286 +f 1397/2362/275 1419/2376/287 1396/2324/272 +f 1418/2377/288 1396/2324/272 1419/2376/287 +f 1409/2314/264 1364/2378/289 1420/2372/285 +f 1439/2218/235 1382/2379/259 1393/2380/235 +f 1382/2381/241 1426/2274/241 1369/2373/273 +f 1426/2274/241 1368/2360/273 1369/2373/273 +f 1399/2382/241 1423/2276/241 1424/2383/241 +f 1423/2280/215 1366/2384/215 1418/2385/215 +f 1424/2157/208 1310/2386/208 1307/2158/208 +f 1422/2162/209 1421/2387/209 1338/2388/209 +f 1421/2387/209 1307/2389/209 1363/2390/209 +f 1363/2390/209 1338/2388/209 1421/2387/209 +f 1338/2388/209 1337/2160/209 1422/2162/209 +f 1362/2161/209 1308/2391/209 1422/2162/209 +f 1343/2163/210 1340/2169/211 1323/2164/211 +f 1340/2169/211 1337/2392/208 1312/2170/208 +f 1311/2171/215 1338/2393/215 1351/2172/216 +f 1341/2174/209 1349/2180/217 1319/2175/217 +f 1347/2177/218 1345/2182/219 1321/2178/219 +f 1349/2180/217 1347/2177/218 1320/2179/218 +f 1351/2172/216 1359/2186/220 1314/2181/220 +f 1345/2182/219 1343/2163/210 1322/2165/210 +f 1357/2183/221 1355/2187/222 1316/2184/222 +f 1359/2186/220 1357/2183/221 1315/2185/221 +f 1355/2187/222 1354/2195/223 1317/2188/223 +f 1354/2195/223 1341/2394/209 1318/2196/209 +f 1316/2201/234 1317/2213/234 1330/2202/234 +f 1323/2204/234 1312/2395/234 1325/2205/234 +f 1321/2207/234 1334/2216/234 1333/2208/234 +f 1314/2210/234 1327/2249/234 1326/2211/234 +f 1317/2213/234 1318/2248/234 1331/2214/234 +f 1322/2215/234 1335/2247/234 1334/2216/234 +f 1335/2217/208 1336/2273/235 1439/2218/235 +f 1334/2220/208 1335/2217/208 1438/2219/208 +f 1333/2222/208 1334/2220/208 1437/2221/208 +f 1332/2224/208 1333/2222/208 1436/2223/208 +f 1331/2226/209 1332/2224/236 1435/2225/236 +f 1330/2228/237 1331/2396/209 1434/2229/209 +f 1329/2231/215 1330/2228/215 1433/2230/215 +f 1328/2233/215 1329/2231/215 1432/2232/215 +f 1327/2235/215 1328/2233/215 1431/2234/215 +f 1326/2237/238 1327/2235/215 1430/2236/215 +f 1324/2239/239 1326/2237/238 1429/2238/238 +f 1320/2209/234 1333/2208/234 1332/2241/234 +f 1315/2243/234 1316/2201/234 1329/2203/234 +f 1313/2212/234 1326/2211/234 1324/2245/234 +f 1322/2215/234 1323/2204/234 1336/2206/234 +f 1319/2242/234 1332/2241/234 1331/2214/234 +f 1314/2210/234 1315/2243/234 1328/2244/234 +f 1311/2250/240 1324/2397/241 1427/2251/241 +f 1343/2253/242 1344/2199/232 1339/2200/233 +f 1345/2255/244 1346/2198/231 1344/2199/232 +f 1347/2256/245 1348/2197/230 1346/2198/231 +f 1347/2256/245 1349/2258/247 1350/2193/228 +f 1341/2257/246 1342/2166/212 1350/2193/228 +f 1354/2259/248 1355/2260/249 1356/2192/227 +f 1355/2260/249 1357/2261/250 1358/2191/226 +f 1357/2261/250 1359/2262/251 1360/2189/224 +f 1359/2262/251 1351/2263/252 1352/2190/225 +f 1351/2263/252 1338/2398/256 1363/2264/253 +f 1341/2257/246 1354/2259/248 1353/2167/213 +f 1338/2265/254 1311/2250/240 1312/2266/240 +f 1340/2254/243 1339/2200/233 1362/2268/255 +f 1361/2270/257 1308/2399/256 1362/2268/255 +f 1362/2268/255 1339/2200/233 1361/2270/257 +f 1352/2190/225 1363/2264/253 1307/2271/258 +f 1325/2272/259 1428/2400/259 1439/2218/235 +f 1426/2274/241 1428/2401/241 1325/2275/241 +f 1311/2250/240 1425/2252/241 1426/2274/241 +f 1342/2278/241 1310/2402/241 1424/2383/241 +f 1424/2383/241 1423/2276/241 1342/2278/241 +f 1422/2281/215 1308/2403/215 1361/2279/215 +f 1361/2279/215 1309/2404/215 1423/2280/215 +f 1364/2282/208 1367/2405/208 1424/2157/208 +f 1364/2406/209 1421/2387/209 1420/2407/209 +f 1421/2387/209 1422/2162/209 1395/2408/209 +f 1420/2407/209 1421/2387/209 1395/2408/209 +f 1422/2162/209 1365/2409/209 1419/2283/209 +f 1394/2284/209 1395/2408/209 1422/2162/209 +f 1380/2285/211 1397/2291/211 1400/2286/210 +f 1397/2291/211 1380/2285/211 1369/2292/208 +f 1368/2294/215 1370/2305/216 1408/2295/216 +f 1376/2297/217 1406/2303/217 1398/2298/209 +f 1378/2300/219 1402/2306/219 1404/2301/218 +f 1377/2302/218 1404/2301/218 1406/2303/217 +f 1371/2304/220 1416/2310/220 1408/2295/216 +f 1379/2287/210 1400/2286/210 1402/2306/219 +f 1373/2307/222 1412/2312/222 1414/2308/221 +f 1372/2309/221 1414/2308/221 1416/2310/220 +f 1374/2311/223 1411/2320/223 1412/2312/222 +f 1375/2319/209 1398/2410/209 1411/2320/223 +f 1373/2325/256 1386/2355/256 1387/2326/256 +f 1380/2328/256 1393/2358/256 1382/2329/256 +f 1390/2331/256 1391/2339/256 1378/2332/256 +f 1383/2334/256 1384/2411/256 1371/2335/256 +f 1374/2327/256 1387/2326/256 1388/2337/256 +f 1391/2339/256 1392/2412/256 1379/2340/256 +f 1439/2218/235 1393/2380/235 1392/2341/208 +f 1438/2219/208 1392/2341/208 1391/2342/208 +f 1437/2221/208 1391/2342/208 1390/2343/208 +f 1436/2223/208 1390/2343/208 1389/2344/208 +f 1435/2225/236 1389/2344/236 1388/2345/209 +f 1434/2229/209 1388/2413/209 1387/2346/237 +f 1433/2230/215 1387/2346/215 1386/2347/215 +f 1432/2232/215 1386/2347/215 1385/2348/215 +f 1431/2234/215 1385/2348/215 1384/2349/215 +f 1430/2236/215 1384/2349/215 1383/2350/238 +f 1429/2238/238 1383/2350/238 1381/2351/239 +f 1389/2352/256 1390/2331/256 1377/2333/256 +f 1372/2354/256 1385/2359/256 1386/2355/256 +f 1381/2356/256 1383/2334/256 1370/2336/256 +f 1379/2340/256 1392/2412/256 1393/2358/256 +f 1388/2337/256 1389/2352/256 1376/2353/256 +f 1371/2335/256 1384/2411/256 1385/2359/256 +f 1427/2251/241 1381/2414/241 1368/2360/273 +f 1396/2324/272 1401/2323/271 1400/2361/274 +f 1401/2323/271 1403/2322/270 1402/2363/276 +f 1403/2322/270 1405/2321/269 1404/2364/277 +f 1404/2364/277 1405/2321/269 1407/2317/267 +f 1407/2317/267 1399/2288/260 1398/2366/279 +f 1411/2367/280 1410/2290/262 1413/2316/266 +f 1412/2368/281 1413/2316/266 1415/2315/265 +f 1414/2369/282 1415/2315/265 1417/2313/263 +f 1416/2370/283 1417/2313/263 1409/2314/264 +f 1420/2372/285 1395/2415/234 1408/2371/284 +f 1398/2366/279 1399/2288/260 1410/2290/262 +f 1369/2373/273 1368/2360/273 1395/2374/286 +f 1397/2362/275 1394/2416/234 1419/2376/287 +f 1419/2376/287 1365/2417/234 1418/2377/288 +f 1418/2377/288 1366/2318/268 1396/2324/272 +f 1409/2314/264 1367/2289/261 1364/2378/289 +f 1439/2218/235 1428/2400/259 1382/2379/259 +f 1382/2381/241 1428/2401/241 1426/2274/241 +f 1426/2274/241 1425/2252/241 1368/2360/273 +f 1424/2383/241 1367/2418/241 1399/2382/241 +f 1399/2382/241 1366/2419/241 1423/2276/241 +f 1418/2385/215 1365/2420/215 1422/2281/215 +f 1422/2281/215 1423/2280/215 1418/2385/215 diff --git a/src/main/resources/assets/hbm/models/doors/qe_containment.obj b/src/main/resources/assets/hbm/models/doors/qe_containment.obj new file mode 100644 index 000000000..d3c72a634 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/qe_containment.obj @@ -0,0 +1,1601 @@ +# Blender v2.92.0 OBJ File: 'qe_lockdown_doorblend.blend' +# www.blender.org +o door +v 0.125956 2.428429 1.096965 +v 0.125956 0.142335 1.385726 +v 0.125956 0.142335 -1.385726 +v 0.125956 2.128096 1.397299 +v 0.125956 2.128096 -1.397299 +v 0.125956 2.428429 -1.096965 +v 0.125956 0.042149 -1.485400 +v 0.125956 2.169381 -1.497698 +v 0.125956 0.042149 1.485400 +v 0.125956 2.169381 1.497698 +v 0.125956 2.528616 -1.138464 +v 0.125956 2.528616 1.138464 +v 0.064985 0.142335 -1.385726 +v 0.064985 2.128096 -1.397299 +v 0.064985 0.142335 1.385726 +v 0.064985 2.128096 1.397299 +v 0.064985 2.428429 -1.096965 +v 0.064985 2.428429 1.096965 +v 0.040207 0.897613 1.390926 +v 0.040207 1.171400 1.391563 +v 0.040207 0.897613 -1.390926 +v 0.040207 1.171400 -1.391554 +v 0.092371 0.897613 1.390926 +v 0.092371 1.171400 1.391563 +v 0.092371 0.897613 -1.390926 +v 0.092371 1.171400 -1.391554 +v 0.125956 1.171400 1.392205 +v 0.125956 1.171400 -1.392233 +v 0.125956 0.897613 -1.390926 +v 0.125956 0.897613 1.390926 +v 0.090460 0.951001 -1.390926 +v 0.090460 1.118012 -1.390926 +v 0.090460 0.951001 1.390926 +v 0.090460 1.118012 1.390926 +v 0.125956 1.118012 -1.391606 +v 0.125956 1.118012 1.391568 +v 0.125956 0.951001 1.390926 +v 0.125956 0.951001 -1.390926 +v 0.029347 1.034506 -0.285639 +v 0.029347 0.925197 -0.263896 +v 0.029347 0.832529 -0.201977 +v 0.029347 0.770611 -0.109309 +v 0.029347 0.748868 0.000000 +v 0.029347 0.770611 0.109309 +v 0.029347 0.832529 0.201977 +v 0.029347 0.925197 0.263896 +v 0.029347 1.034506 0.285639 +v 0.029347 1.143816 0.263896 +v 0.029347 1.236483 0.201977 +v 0.029347 1.298402 0.109309 +v 0.029347 1.320145 0.000000 +v 0.029347 1.298402 -0.109309 +v 0.029347 1.236483 -0.201977 +v 0.029347 1.143815 -0.263896 +v 0.109739 1.034506 -0.250510 +v 0.075285 1.034506 -0.285639 +v 0.109739 0.938640 -0.231441 +v 0.075285 0.925197 -0.263896 +v 0.109739 0.857369 -0.177137 +v 0.075285 0.832529 -0.201977 +v 0.109739 0.803065 -0.095866 +v 0.075285 0.770611 -0.109309 +v 0.109739 0.783996 0.000000 +v 0.075285 0.748868 0.000000 +v 0.109739 0.803065 0.095866 +v 0.075285 0.770611 0.109309 +v 0.109739 0.857369 0.177137 +v 0.075285 0.832529 0.201977 +v 0.109739 0.938640 0.231441 +v 0.075285 0.925197 0.263896 +v 0.109739 1.034506 0.250510 +v 0.075285 1.034506 0.285639 +v 0.109739 1.130372 0.231441 +v 0.075285 1.143816 0.263896 +v 0.109739 1.211644 0.177137 +v 0.075285 1.236483 0.201977 +v 0.109739 1.265947 0.095866 +v 0.075285 1.298402 0.109309 +v 0.109739 1.285016 0.000000 +v 0.075285 1.320145 0.000000 +v 0.109739 1.265947 -0.095866 +v 0.075285 1.298402 -0.109309 +v 0.109739 1.211644 -0.177137 +v 0.075285 1.236483 -0.201977 +v 0.109739 1.130372 -0.231441 +v 0.075285 1.143815 -0.263896 +v 0.015982 0.142335 0.468209 +v 0.015982 2.428429 0.468209 +v 0.015982 0.142335 0.393815 +v 0.015982 2.428429 0.393815 +v 0.125956 0.142335 0.468209 +v 0.125956 2.428429 0.468209 +v 0.125956 0.142335 0.393815 +v 0.125956 2.428429 0.393815 +v 0.015982 1.171400 0.468209 +v 0.015982 1.171400 0.393815 +v 0.125956 1.171400 0.393815 +v 0.125956 1.171400 0.468209 +v 0.015982 0.897613 0.393815 +v 0.125956 0.897613 0.393815 +v 0.125956 0.897613 0.468209 +v 0.015982 0.897613 0.468209 +v 0.059135 1.138329 0.491282 +v 0.059135 2.143588 1.400841 +v 0.059135 1.193578 0.424240 +v 0.059135 2.198836 1.333799 +v 0.101822 1.138329 0.491282 +v 0.101822 2.143588 1.400841 +v 0.101822 1.193578 0.424240 +v 0.101822 2.198836 1.333799 +v 0.054672 0.167400 1.418743 +v 0.054672 0.948722 0.471243 +v 0.054672 0.096526 1.366685 +v 0.054672 0.877848 0.419185 +v 0.097593 0.167400 1.418743 +v 0.097593 0.948722 0.471243 +v 0.097593 0.096526 1.366685 +v 0.097593 0.877848 0.419185 +v 0.015982 0.142335 -0.468209 +v 0.015982 2.428429 -0.468209 +v 0.015982 0.142335 -0.393815 +v 0.015982 2.428429 -0.393815 +v 0.125956 0.142335 -0.468209 +v 0.125956 2.428429 -0.468209 +v 0.125956 0.142335 -0.393815 +v 0.125956 2.428429 -0.393815 +v 0.015982 1.171400 -0.468209 +v 0.015982 1.171400 -0.393815 +v 0.125956 1.171400 -0.393815 +v 0.125956 1.171400 -0.468209 +v 0.015982 0.897613 -0.393815 +v 0.125956 0.897613 -0.393815 +v 0.125956 0.897613 -0.468209 +v 0.015982 0.897613 -0.468209 +v 0.059135 1.138329 -0.491282 +v 0.059135 2.143588 -1.400841 +v 0.059135 1.193578 -0.424240 +v 0.059135 2.198836 -1.333799 +v 0.101822 1.138329 -0.491282 +v 0.101822 2.143588 -1.400841 +v 0.101822 1.193578 -0.424240 +v 0.101822 2.198836 -1.333799 +v 0.054672 0.167400 -1.418743 +v 0.054672 0.948722 -0.471243 +v 0.054672 0.096526 -1.366685 +v 0.054672 0.877848 -0.419185 +v 0.097593 0.167400 -1.418743 +v 0.097593 0.948722 -0.471243 +v 0.097593 0.096526 -1.366685 +v 0.097593 0.877848 -0.419185 +v 0.075121 0.042149 1.010166 +v 0.075121 0.042149 0.687434 +v 0.075121 0.042149 0.161366 +v 0.075121 0.042149 -0.161366 +v 0.075121 0.042149 -0.687434 +v 0.075121 0.042149 -1.010166 +v 0.125956 0.042149 1.061000 +v 0.125956 0.042149 0.636600 +v 0.125956 0.042149 0.212200 +v 0.125956 0.042149 -0.212200 +v 0.125956 0.042149 -0.636600 +v 0.125956 0.042149 -1.061000 +v 0.056341 -0.123867 0.969824 +v 0.056341 -0.123867 0.727776 +v 0.056341 -0.123867 0.121024 +v 0.056341 -0.123867 -0.121024 +v 0.056341 -0.123867 -0.727776 +v 0.056341 -0.123867 -0.969824 +v -0.125956 2.428429 1.096965 +v -0.125956 0.142335 1.385726 +v -0.125956 0.142335 -1.385726 +v -0.125956 2.128096 1.397299 +v -0.125956 2.128096 -1.397299 +v -0.125956 2.428429 -1.096965 +v -0.125956 0.042149 -1.485400 +v -0.125956 2.169381 -1.497698 +v -0.125956 0.042149 1.485400 +v -0.125956 2.169381 1.497698 +v -0.125956 2.528616 -1.138464 +v -0.125956 2.528616 1.138464 +v -0.064985 0.142335 -1.385726 +v -0.064985 2.128096 -1.397299 +v -0.064985 0.142335 1.385726 +v -0.064985 2.128096 1.397299 +v -0.064985 2.428429 -1.096965 +v -0.064985 2.428429 1.096965 +v -0.040207 0.897613 1.390926 +v -0.040207 1.171400 1.391563 +v -0.040207 0.897613 -1.390926 +v -0.040207 1.171400 -1.391554 +v -0.092371 0.897613 1.390926 +v -0.092371 1.171400 1.391563 +v -0.092371 0.897613 -1.390926 +v -0.092371 1.171400 -1.391554 +v -0.125956 1.171400 1.392205 +v -0.125956 1.171400 -1.392233 +v -0.125956 0.897613 -1.390926 +v -0.125956 0.897613 1.390926 +v -0.090460 0.951001 -1.390926 +v -0.090460 1.118012 -1.390926 +v -0.090460 0.951001 1.390926 +v -0.090460 1.118012 1.390926 +v -0.125956 1.118012 -1.391606 +v -0.125956 1.118012 1.391568 +v -0.125956 0.951001 1.390926 +v -0.125956 0.951001 -1.390926 +v -0.029347 1.034506 -0.285639 +v -0.029347 0.925197 -0.263896 +v -0.029347 0.832529 -0.201977 +v -0.029347 0.770611 -0.109309 +v -0.029347 0.748868 0.000000 +v -0.029347 0.770611 0.109309 +v -0.029347 0.832529 0.201977 +v -0.029347 0.925197 0.263896 +v -0.029347 1.034506 0.285639 +v -0.029347 1.143816 0.263896 +v -0.029347 1.236483 0.201977 +v -0.029347 1.298402 0.109309 +v -0.029347 1.320145 0.000000 +v -0.029347 1.298402 -0.109309 +v -0.029347 1.236483 -0.201977 +v -0.029347 1.143815 -0.263896 +v -0.109739 1.034506 -0.250510 +v -0.075285 1.034506 -0.285639 +v -0.109739 0.938640 -0.231441 +v -0.075285 0.925197 -0.263896 +v -0.109739 0.857369 -0.177137 +v -0.075285 0.832529 -0.201977 +v -0.109739 0.803065 -0.095866 +v -0.075285 0.770611 -0.109309 +v -0.109739 0.783996 0.000000 +v -0.075285 0.748868 0.000000 +v -0.109739 0.803065 0.095866 +v -0.075285 0.770611 0.109309 +v -0.109739 0.857369 0.177137 +v -0.075285 0.832529 0.201977 +v -0.109739 0.938640 0.231441 +v -0.075285 0.925197 0.263896 +v -0.109739 1.034506 0.250510 +v -0.075285 1.034506 0.285639 +v -0.109739 1.130372 0.231441 +v -0.075285 1.143816 0.263896 +v -0.109739 1.211644 0.177137 +v -0.075285 1.236483 0.201977 +v -0.109739 1.265947 0.095866 +v -0.075285 1.298402 0.109309 +v -0.109739 1.285016 0.000000 +v -0.075285 1.320145 0.000000 +v -0.109739 1.265947 -0.095866 +v -0.075285 1.298402 -0.109309 +v -0.109739 1.211644 -0.177137 +v -0.075285 1.236483 -0.201977 +v -0.109739 1.130372 -0.231441 +v -0.075285 1.143815 -0.263896 +v -0.015982 0.142335 0.468209 +v -0.015982 2.428429 0.468209 +v -0.015982 0.142335 0.393815 +v -0.015982 2.428429 0.393815 +v -0.125956 0.142335 0.468209 +v -0.125956 2.428429 0.468209 +v -0.125956 0.142335 0.393815 +v -0.125956 2.428429 0.393815 +v -0.015982 1.171400 0.468209 +v -0.015982 1.171400 0.393815 +v -0.125956 1.171400 0.393815 +v -0.125956 1.171400 0.468209 +v -0.015982 0.897613 0.393815 +v -0.125956 0.897613 0.393815 +v -0.125956 0.897613 0.468209 +v -0.015982 0.897613 0.468209 +v -0.059135 1.138329 0.491282 +v -0.059135 2.143588 1.400841 +v -0.059135 1.193578 0.424240 +v -0.059135 2.198836 1.333799 +v -0.101822 1.138329 0.491282 +v -0.101822 2.143588 1.400841 +v -0.101822 1.193578 0.424240 +v -0.101822 2.198836 1.333799 +v -0.054672 0.167400 1.418743 +v -0.054672 0.948722 0.471243 +v -0.054672 0.096526 1.366685 +v -0.054672 0.877848 0.419185 +v -0.097593 0.167400 1.418743 +v -0.097593 0.948722 0.471243 +v -0.097593 0.096526 1.366685 +v -0.097593 0.877848 0.419185 +v -0.015982 0.142335 -0.468209 +v -0.015982 2.428429 -0.468209 +v -0.015982 0.142335 -0.393815 +v -0.015982 2.428429 -0.393815 +v -0.125956 0.142335 -0.468209 +v -0.125956 2.428429 -0.468209 +v -0.125956 0.142335 -0.393815 +v -0.125956 2.428429 -0.393815 +v -0.015982 1.171400 -0.468209 +v -0.015982 1.171400 -0.393815 +v -0.125956 1.171400 -0.393815 +v -0.125956 1.171400 -0.468209 +v -0.015982 0.897613 -0.393815 +v -0.125956 0.897613 -0.393815 +v -0.125956 0.897613 -0.468209 +v -0.015982 0.897613 -0.468209 +v -0.059135 1.138329 -0.491282 +v -0.059135 2.143588 -1.400841 +v -0.059135 1.193578 -0.424240 +v -0.059135 2.198836 -1.333799 +v -0.101822 1.138329 -0.491282 +v -0.101822 2.143588 -1.400841 +v -0.101822 1.193578 -0.424240 +v -0.101822 2.198836 -1.333799 +v -0.054672 0.167400 -1.418743 +v -0.054672 0.948722 -0.471243 +v -0.054672 0.096526 -1.366685 +v -0.054672 0.877848 -0.419185 +v -0.097593 0.167400 -1.418743 +v -0.097593 0.948722 -0.471243 +v -0.097593 0.096526 -1.366685 +v -0.097593 0.877848 -0.419185 +v -0.075121 0.042149 1.010166 +v -0.075121 0.042149 0.687434 +v -0.075121 0.042149 0.161366 +v -0.075121 0.042149 -0.161366 +v -0.075121 0.042149 -0.687434 +v -0.075121 0.042149 -1.010166 +v -0.125956 0.042149 1.061000 +v -0.125956 0.042149 0.636600 +v -0.125956 0.042149 0.212200 +v -0.125956 0.042149 -0.212200 +v -0.125956 0.042149 -0.636600 +v -0.125956 0.042149 -1.061000 +v -0.056341 -0.123867 0.969824 +v -0.056341 -0.123867 0.727776 +v -0.056341 -0.123867 0.121024 +v -0.056341 -0.123867 -0.121024 +v -0.056341 -0.123867 -0.727776 +v -0.056341 -0.123867 -0.969824 +vt 0.895448 0.314338 +vt 0.901321 0.525639 +vt 0.895448 0.525639 +vt 0.273099 0.724653 +vt 0.053805 0.700391 +vt 0.273099 0.700391 +vt 0.788557 0.587648 +vt 0.812819 0.546774 +vt 0.812819 0.587648 +vt 0.004875 0.734403 +vt 0.209756 0.758666 +vt 0.004875 0.758666 +vt 0.322029 0.700391 +vt 0.322029 0.724653 +vt 0.937895 0.608456 +vt 0.947550 0.803744 +vt 0.937904 0.799712 +vt 0.866298 0.477800 +vt 0.856648 0.549952 +vt 0.866298 0.436927 +vt 0.932801 0.468721 +vt 0.942456 0.273431 +vt 0.942456 0.478314 +vt 0.778807 0.283695 +vt 0.740232 0.258767 +vt 0.749881 0.254770 +vt 0.740231 0.039474 +vt 0.749881 0.043471 +vt 0.778807 0.014545 +vt 0.774830 0.004875 +vt 0.425063 0.839089 +vt 0.425063 0.627788 +vt 0.645240 0.866900 +vt 0.515948 0.883638 +vt 0.707201 0.877765 +vt 0.707201 0.883638 +vt 0.978538 0.273431 +vt 0.984410 0.464685 +vt 0.978538 0.464685 +vt 0.895448 0.273431 +vt 0.901320 0.314338 +vt 0.901320 0.566546 +vt 0.895448 0.566546 +vt 0.922272 0.598863 +vt 0.928144 0.865781 +vt 0.922272 0.865781 +vt 0.711943 0.004974 +vt 0.716385 0.259410 +vt 0.711944 0.259428 +vt 0.721268 0.004956 +vt 0.721268 0.259410 +vt 0.725709 0.259390 +vt 0.730481 0.004936 +vt 0.730481 0.259390 +vt 0.678126 0.259489 +vt 0.682897 0.004936 +vt 0.682897 0.259488 +vt 0.696667 0.004974 +vt 0.696667 0.259428 +vt 0.687341 0.259571 +vt 0.692225 0.004934 +vt 0.692225 0.259514 +vt 0.687342 0.004875 +vt 0.725709 0.004936 +vt 0.004875 0.790146 +vt 0.015467 0.911212 +vt 0.004875 0.911212 +vt 0.015467 0.790146 +vt 0.022632 0.911212 +vt 0.022632 0.790146 +vt 0.033224 0.911212 +vt 0.173791 0.818495 +vt 0.246533 0.807903 +vt 0.246533 0.818494 +vt 0.173791 0.807903 +vt 0.246533 0.800738 +vt 0.173791 0.790146 +vt 0.246533 0.790146 +vt 0.937895 0.813881 +vt 0.942006 0.944448 +vt 0.937895 0.944448 +vt 0.942006 0.813881 +vt 0.950364 0.944061 +vt 0.950364 0.813495 +vt 0.954475 0.944061 +vt 0.980950 0.931775 +vt 0.976816 0.813495 +vt 0.980950 0.813495 +vt 0.976816 0.931775 +vt 0.968360 0.813969 +vt 0.968360 0.932249 +vt 0.964226 0.813969 +vt 0.164041 0.800738 +vt 0.042974 0.790146 +vt 0.164041 0.790146 +vt 0.164041 0.807903 +vt 0.042974 0.800738 +vt 0.164041 0.818495 +vt 0.042974 0.807903 +vt 0.254220 0.944448 +vt 0.264812 0.871705 +vt 0.264812 0.944448 +vt 0.247055 0.944448 +vt 0.254220 0.871705 +vt 0.236463 0.871705 +vt 0.247055 0.871705 +vt 0.964676 0.545087 +vt 0.968787 0.414521 +vt 0.968787 0.545087 +vt 0.956318 0.544701 +vt 0.964676 0.414521 +vt 0.952207 0.544701 +vt 0.956318 0.414135 +vt 0.969891 0.717617 +vt 0.974025 0.599337 +vt 0.974025 0.717617 +vt 0.961435 0.717142 +vt 0.969891 0.599337 +vt 0.957301 0.717142 +vt 0.961435 0.598863 +vt 0.788557 0.342401 +vt 0.812819 0.301526 +vt 0.812819 0.342401 +vt 0.278994 0.877789 +vt 0.295085 0.904987 +vt 0.278994 0.908872 +vt 0.788557 0.505899 +vt 0.807923 0.510795 +vt 0.793453 0.510795 +vt 0.788557 0.424150 +vt 0.807923 0.429046 +vt 0.793453 0.429046 +vt 0.807923 0.541878 +vt 0.812819 0.505899 +vt 0.812819 0.465024 +vt 0.807923 0.460128 +vt 0.807923 0.347297 +vt 0.812819 0.383275 +vt 0.807923 0.378379 +vt 0.053805 0.724653 +vt 0.004875 0.700391 +vt 0.812819 0.424150 +vt 0.441154 0.894220 +vt 0.453816 0.877765 +vt 0.452007 0.894220 +vt 0.305938 0.881675 +vt 0.295085 0.881675 +vt 0.199769 0.911472 +vt 0.210621 0.888160 +vt 0.210621 0.911472 +vt 0.293276 0.865220 +vt 0.307746 0.865220 +vt 0.441154 0.917532 +vt 0.453816 0.933986 +vt 0.439346 0.933986 +vt 0.226713 0.915357 +vt 0.226713 0.884275 +vt 0.468098 0.921417 +vt 0.468098 0.890334 +vt 0.212430 0.927926 +vt 0.197960 0.927926 +vt 0.199769 0.888160 +vt 0.212430 0.871705 +vt 0.305938 0.904987 +vt 0.293276 0.921441 +vt 0.793453 0.347297 +vt 0.788557 0.383275 +vt 0.788557 0.465024 +vt 0.788557 0.546774 +vt 0.822636 0.209756 +vt 0.846898 0.004875 +vt 0.846898 0.209756 +vt 0.906649 0.851070 +vt 0.912521 0.639770 +vt 0.912521 0.851070 +vt 0.950900 0.004875 +vt 0.941245 0.200163 +vt 0.941254 0.008907 +vt 0.885698 0.477803 +vt 0.885698 0.518678 +vt 0.876048 0.549953 +vt 0.921839 0.014469 +vt 0.931494 0.209758 +vt 0.921848 0.205726 +vt 0.691906 0.303921 +vt 0.730481 0.278991 +vt 0.701555 0.307917 +vt 0.691906 0.523212 +vt 0.701555 0.519216 +vt 0.730481 0.548141 +vt 0.875168 0.839089 +vt 0.846242 0.868015 +vt 0.654991 0.866900 +vt 0.987125 0.196128 +vt 0.992998 0.004875 +vt 0.992998 0.196128 +vt 0.989648 0.598863 +vt 0.983775 0.790116 +vt 0.983775 0.598863 +vt 0.906649 0.639770 +vt 0.912521 0.598863 +vt 0.906649 0.891977 +vt 0.912521 0.891977 +vt 0.342747 0.665374 +vt 0.336874 0.932293 +vt 0.336875 0.665374 +vt 0.366750 0.401078 +vt 0.362309 0.655506 +vt 0.362309 0.401057 +vt 0.371633 0.655527 +vt 0.371633 0.401078 +vt 0.380846 0.655551 +vt 0.376074 0.401102 +vt 0.380846 0.401102 +vt 0.333262 0.655585 +vt 0.328490 0.401010 +vt 0.333263 0.401010 +vt 0.347033 0.655506 +vt 0.347033 0.401057 +vt 0.342590 0.655566 +vt 0.337707 0.400920 +vt 0.342590 0.400977 +vt 0.337707 0.655624 +vt 0.376074 0.655551 +vt 0.370254 0.786441 +vt 0.380846 0.665374 +vt 0.380846 0.786441 +vt 0.363089 0.786441 +vt 0.370254 0.665374 +vt 0.352497 0.786441 +vt 0.363089 0.665374 +vt 0.495605 0.950507 +vt 0.506197 0.877765 +vt 0.506197 0.950507 +vt 0.488440 0.950507 +vt 0.495605 0.877765 +vt 0.477849 0.877765 +vt 0.488440 0.877765 +vt 0.173927 0.875817 +vt 0.043361 0.871705 +vt 0.173927 0.871705 +vt 0.173541 0.884175 +vt 0.043361 0.875816 +vt 0.173541 0.888286 +vt 0.042974 0.884174 +vt 0.973241 0.123629 +vt 0.977375 0.005350 +vt 0.977375 0.123629 +vt 0.964785 0.123155 +vt 0.973241 0.005350 +vt 0.960651 0.123155 +vt 0.964785 0.004875 +vt 0.322029 0.855470 +vt 0.311437 0.734403 +vt 0.322029 0.734403 +vt 0.311437 0.855470 +vt 0.304272 0.734403 +vt 0.304272 0.855470 +vt 0.293680 0.734403 +vt 0.911071 0.493804 +vt 0.921663 0.566546 +vt 0.911071 0.566546 +vt 0.921663 0.493804 +vt 0.928828 0.566546 +vt 0.939420 0.493804 +vt 0.939420 0.566546 +vt 0.968787 0.403998 +vt 0.964676 0.273431 +vt 0.968787 0.273431 +vt 0.964676 0.403998 +vt 0.956318 0.273818 +vt 0.956318 0.404384 +vt 0.952207 0.273818 +vt 0.977374 0.251660 +vt 0.973241 0.133380 +vt 0.977374 0.133380 +vt 0.973241 0.251660 +vt 0.964785 0.133855 +vt 0.964785 0.252134 +vt 0.960651 0.133855 +vt 0.322029 0.877789 +vt 0.322029 0.908872 +vt 0.793453 0.541878 +vt 0.793453 0.460128 +vt 0.793453 0.378379 +vt 0.183678 0.915357 +vt 0.183678 0.884275 +vt 0.425063 0.921417 +vt 0.425063 0.890334 +vt 0.452007 0.917532 +vt 0.209756 0.734404 +vt 0.947550 0.598863 +vt 0.866298 0.559552 +vt 0.866298 0.518676 +vt 0.856649 0.283031 +vt 0.866298 0.273431 +vt 0.866298 0.314306 +vt 0.866298 0.355180 +vt 0.866298 0.396055 +vt 0.932810 0.277463 +vt 0.774830 0.293365 +vt 0.453988 0.598863 +vt 0.645240 0.599977 +vt 0.453989 0.868015 +vt 0.515948 0.877765 +vt 0.984410 0.273431 +vt 0.901320 0.273431 +vt 0.928144 0.598863 +vt 0.716385 0.004956 +vt 0.678124 0.004936 +vt 0.033224 0.790146 +vt 0.173791 0.800738 +vt 0.954475 0.813495 +vt 0.964226 0.932249 +vt 0.042974 0.818495 +vt 0.236463 0.944447 +vt 0.952207 0.414135 +vt 0.957301 0.598863 +vt 0.788557 0.301526 +vt 0.004875 0.724653 +vt 0.439346 0.877765 +vt 0.197960 0.871705 +vt 0.307746 0.921441 +vt 0.822636 0.004875 +vt 0.950900 0.209756 +vt 0.876048 0.283031 +vt 0.885698 0.396057 +vt 0.885698 0.273431 +vt 0.885698 0.314306 +vt 0.885698 0.355181 +vt 0.885698 0.559553 +vt 0.885698 0.436928 +vt 0.931494 0.004875 +vt 0.726504 0.269322 +vt 0.726505 0.557811 +vt 0.654991 0.599977 +vt 0.875168 0.627788 +vt 0.846242 0.598863 +vt 0.987125 0.004875 +vt 0.989648 0.790116 +vt 0.906649 0.598863 +vt 0.342747 0.932293 +vt 0.366750 0.655527 +vt 0.328491 0.655585 +vt 0.352497 0.665374 +vt 0.477849 0.950507 +vt 0.042974 0.888286 +vt 0.960651 0.004875 +vt 0.293680 0.855470 +vt 0.928828 0.493804 +vt 0.952207 0.404384 +vt 0.960651 0.252134 +vt 0.774310 0.356785 +vt 0.778734 0.346051 +vt 0.778734 0.356785 +vt 0.774310 0.324583 +vt 0.778734 0.313849 +vt 0.778734 0.324583 +vt 0.774310 0.313849 +vt 0.778734 0.303115 +vt 0.774310 0.474859 +vt 0.778734 0.464125 +vt 0.778734 0.474859 +vt 0.774310 0.453391 +vt 0.778734 0.453391 +vt 0.774310 0.442657 +vt 0.778734 0.442657 +vt 0.774310 0.431923 +vt 0.778734 0.431923 +vt 0.774310 0.421189 +vt 0.778734 0.421189 +vt 0.778734 0.410455 +vt 0.774310 0.399721 +vt 0.778734 0.399721 +vt 0.778734 0.388987 +vt 0.774310 0.388987 +vt 0.778734 0.378253 +vt 0.774310 0.378253 +vt 0.778734 0.367519 +vt 0.774310 0.367519 +vt 0.774310 0.346051 +vt 0.778734 0.335317 +vt 0.774310 0.335317 +vt 0.380672 0.853280 +vt 0.389768 0.846563 +vt 0.391710 0.851049 +vt 0.397514 0.841314 +vt 0.401024 0.844732 +vt 0.402736 0.833547 +vt 0.407278 0.835359 +vt 0.409423 0.824311 +vt 0.404530 0.824367 +vt 0.407228 0.813279 +vt 0.402742 0.815203 +vt 0.400946 0.803966 +vt 0.397541 0.807463 +vt 0.389804 0.802292 +vt 0.391595 0.797762 +vt 0.380574 0.795668 +vt 0.380679 0.800538 +vt 0.371575 0.802462 +vt 0.369601 0.798003 +vt 0.363855 0.807771 +vt 0.360350 0.804352 +vt 0.354053 0.813669 +vt 0.358574 0.815517 +vt 0.351811 0.824674 +vt 0.356686 0.824637 +vt 0.358476 0.833755 +vt 0.354001 0.835677 +vt 0.363674 0.841469 +vt 0.360275 0.844968 +vt 0.371430 0.846637 +vt 0.369638 0.851175 +vt 0.380596 0.848390 +vt 0.990700 0.856431 +vt 0.995125 0.867165 +vt 0.990700 0.867165 +vt 0.990700 0.824229 +vt 0.995125 0.834963 +vt 0.990700 0.834963 +vt 0.990700 0.813495 +vt 0.995125 0.824229 +vt 0.990700 0.974504 +vt 0.995125 0.985238 +vt 0.990700 0.985238 +vt 0.990700 0.963771 +vt 0.995125 0.974504 +vt 0.995125 0.953036 +vt 0.995125 0.963771 +vt 0.990700 0.942302 +vt 0.990700 0.953037 +vt 0.990700 0.931569 +vt 0.995125 0.942302 +vt 0.990700 0.920835 +vt 0.995125 0.931569 +vt 0.995125 0.910101 +vt 0.995125 0.920835 +vt 0.990700 0.899367 +vt 0.990700 0.910101 +vt 0.990700 0.888633 +vt 0.995125 0.899367 +vt 0.990700 0.877899 +vt 0.995125 0.888633 +vt 0.995125 0.877899 +vt 0.990700 0.845697 +vt 0.995125 0.856431 +vt 0.995125 0.845697 +vt 0.358695 0.881542 +vt 0.352004 0.890628 +vt 0.354214 0.879611 +vt 0.363898 0.873817 +vt 0.360512 0.870301 +vt 0.371693 0.868708 +vt 0.369926 0.864155 +vt 0.380884 0.866994 +vt 0.380981 0.862102 +vt 0.392001 0.864382 +vt 0.401281 0.870726 +vt 0.390046 0.868860 +vt 0.402825 0.881899 +vt 0.407377 0.880158 +vt 0.409363 0.891190 +vt 0.402641 0.900280 +vt 0.407127 0.902214 +vt 0.397445 0.908018 +vt 0.400833 0.911528 +vt 0.391433 0.917673 +vt 0.380404 0.919707 +vt 0.389670 0.913130 +vt 0.371351 0.912975 +vt 0.369398 0.917446 +vt 0.363652 0.907727 +vt 0.360122 0.911100 +vt 0.358560 0.899918 +vt 0.354006 0.901666 +vt 0.356895 0.890716 +vt 0.404473 0.891090 +vt 0.380501 0.914823 +vt 0.774310 0.303115 +vt 0.774310 0.464125 +vt 0.774310 0.410455 +vt 0.995125 0.813495 +vt 0.397753 0.874096 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.0058 1.0000 +vn 0.0000 0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0058 -1.0000 +vn 0.0000 0.0058 1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.6709 -0.7415 +vn 0.0000 -0.6709 0.7415 +vn 0.0000 -0.7715 -0.6362 +vn 0.0000 0.7715 0.6362 +vn 0.0000 0.6709 0.7415 +vn 0.0000 -0.6709 -0.7415 +vn 0.0000 -0.7715 0.6362 +vn 0.0000 0.7715 -0.6362 +vn 0.9937 -0.1124 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.2361 -0.9717 +vn 0.0000 -0.2361 0.9717 +vn 0.0000 -0.0058 -1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.9937 -0.1124 0.0000 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 -0.3827 -0.9239 +vn 0.7139 -0.0000 -0.7002 +vn 0.7139 -0.2680 -0.6469 +vn 0.7139 -0.4951 -0.4951 +vn 0.7139 -0.6469 -0.2680 +vn 0.7139 -0.7002 -0.0000 +vn 0.7139 -0.6469 0.2680 +vn 0.7139 -0.4951 0.4951 +vn 0.7139 -0.2680 0.6469 +vn 0.7139 0.0000 0.7002 +vn 0.7139 0.2680 0.6469 +vn 0.7139 0.4951 0.4951 +vn 0.7139 0.6469 0.2680 +vn 0.7139 0.7002 0.0000 +vn 0.7139 0.6469 -0.2680 +vn 0.7139 0.4951 -0.4951 +vn 0.7139 0.2680 -0.6469 +vn -0.7139 -0.2680 -0.6469 +vn -0.7139 -0.0000 -0.7002 +vn -0.7139 -0.4951 -0.4951 +vn -0.7139 -0.6469 -0.2680 +vn -0.7139 -0.7002 0.0000 +vn -0.7139 -0.6469 0.2680 +vn -0.7139 -0.4951 0.4951 +vn -0.7139 -0.2680 0.6469 +vn -0.7139 0.0000 0.7002 +vn -0.7139 0.2680 0.6469 +vn -0.7139 0.4951 0.4951 +vn -0.7139 0.6469 0.2680 +vn -0.7139 0.7002 0.0000 +vn -0.7139 0.6469 -0.2680 +vn -0.7139 0.4951 -0.4951 +vn -0.7139 0.2680 -0.6469 +s off +f 1/1/1 17/2/1 6/3/1 +f 179/4/2 12/5/2 11/6/2 +f 177/7/1 157/8/1 9/9/1 +f 178/10/3 9/11/3 10/12/3 +f 179/4/4 8/13/4 176/14/4 +f 3/15/5 8/16/5 5/17/5 +f 161/18/5 3/19/5 160/20/5 +f 2/21/5 10/22/5 9/23/5 +f 5/24/5 11/25/5 6/26/5 +f 6/26/5 12/27/5 1/28/5 +f 4/29/5 12/27/5 10/30/5 +f 17/31/5 18/32/5 13/33/5 +f 2/34/6 16/35/6 4/36/6 +f 5/37/7 13/38/7 3/39/7 +f 4/40/8 18/41/8 1/1/8 +f 6/3/9 14/42/9 5/43/9 +f 3/44/2 15/45/2 2/46/2 +f 33/47/2 38/48/2 31/49/2 +f 38/48/5 30/50/5 29/51/5 +f 25/52/1 19/53/1 21/54/1 +f 22/55/2 24/56/2 26/57/2 +f 34/58/5 31/49/5 32/59/5 +f 28/60/5 36/61/5 35/62/5 +f 26/57/2 27/63/2 28/60/2 +f 32/59/1 36/61/1 34/58/1 +f 25/52/1 30/50/1 23/64/1 +f 90/65/10 97/66/10 96/67/10 +f 94/68/5 98/69/5 97/66/5 +f 92/70/11 95/71/11 98/69/11 +f 99/72/10 93/73/10 89/74/10 +f 100/75/5 91/76/5 93/73/5 +f 91/76/11 102/77/11 87/78/11 +f 106/79/12 109/80/12 105/81/12 +f 110/82/5 107/83/5 109/80/5 +f 108/84/13 103/85/13 107/83/13 +f 114/86/14 117/87/14 113/88/14 +f 118/89/5 115/90/5 117/87/5 +f 116/91/15 111/92/15 115/90/15 +f 129/93/11 122/94/11 128/95/11 +f 130/96/5 126/97/5 129/93/5 +f 127/98/10 124/99/10 130/96/10 +f 125/100/11 131/101/11 121/102/11 +f 123/103/5 132/104/5 125/100/5 +f 123/103/10 134/105/10 133/106/10 +f 141/107/16 138/108/16 137/109/16 +f 139/110/5 142/111/5 141/107/5 +f 135/112/17 140/113/17 139/110/17 +f 149/114/18 146/115/18 145/116/18 +f 147/117/5 150/118/5 149/114/5 +f 143/119/19 148/120/19 147/117/19 +f 330/121/1 7/122/1 162/123/1 +f 151/124/20 164/125/20 152/126/20 +f 326/127/1 152/128/1 320/129/1 +f 328/130/1 154/131/1 322/132/1 +f 151/133/1 158/134/1 157/8/1 +f 154/131/1 159/135/1 153/136/1 +f 156/137/1 161/138/1 155/139/1 +f 180/140/21 10/141/21 12/5/21 +f 326/127/1 159/135/1 158/134/1 +f 328/130/1 161/138/1 160/142/1 +f 336/143/22 156/144/22 168/145/22 +f 331/146/1 164/125/1 163/147/1 +f 333/148/1 166/149/1 165/150/1 +f 331/146/23 151/151/23 319/152/23 +f 335/153/23 155/154/23 323/155/23 +f 153/156/20 166/149/20 154/157/20 +f 155/158/20 168/145/20 156/159/20 +f 333/148/23 153/160/23 321/161/23 +f 334/162/22 154/163/22 166/149/22 +f 332/164/22 152/165/22 164/125/22 +f 330/121/1 156/137/1 324/166/1 +f 329/167/1 155/139/1 161/138/1 +f 327/168/1 153/136/1 159/135/1 +f 325/169/1 151/133/1 157/8/1 +f 175/170/24 8/171/24 7/172/24 +f 185/173/1 169/174/1 174/175/1 +f 176/176/25 171/177/25 173/178/25 +f 326/179/25 325/180/25 170/181/25 +f 170/182/25 178/183/25 172/184/25 +f 179/185/25 173/186/25 174/187/25 +f 180/188/25 174/187/25 169/189/25 +f 172/190/25 180/188/25 169/189/25 +f 185/191/25 182/192/25 181/193/25 +f 184/194/6 170/195/6 172/196/6 +f 181/197/7 173/198/7 171/199/7 +f 186/200/8 172/201/8 169/174/8 +f 182/202/9 174/175/9 173/203/9 +f 183/204/2 171/205/2 170/206/2 +f 206/207/2 201/208/2 199/209/2 +f 198/210/25 206/207/25 197/211/25 +f 187/212/1 193/213/1 189/214/1 +f 192/215/2 190/216/2 194/217/2 +f 199/209/25 202/218/25 200/219/25 +f 204/220/25 196/221/25 203/222/25 +f 194/217/2 195/223/2 192/215/2 +f 204/220/1 200/219/1 202/218/1 +f 198/210/1 193/213/1 191/224/1 +f 265/225/10 258/226/10 264/227/10 +f 266/228/25 262/229/25 265/225/25 +f 263/230/11 260/231/11 266/228/11 +f 261/232/10 267/233/10 257/234/10 +f 259/235/25 268/236/25 261/232/25 +f 259/235/11 270/237/11 269/238/11 +f 277/239/12 274/240/12 273/241/12 +f 275/242/25 278/243/25 277/239/25 +f 271/244/13 276/245/13 275/242/13 +f 285/246/14 282/247/14 281/248/14 +f 283/249/25 286/250/25 285/246/25 +f 279/251/15 284/252/15 283/249/15 +f 290/253/11 297/254/11 296/255/11 +f 294/256/25 298/257/25 297/254/25 +f 292/258/10 295/259/10 298/257/10 +f 299/260/11 293/261/11 289/262/11 +f 300/263/25 291/264/25 293/261/25 +f 291/264/10 302/265/10 287/266/10 +f 306/267/16 309/268/16 305/269/16 +f 310/270/25 307/271/25 309/268/25 +f 308/272/17 303/273/17 307/271/17 +f 314/274/18 317/275/18 313/276/18 +f 318/277/25 315/278/25 317/275/25 +f 316/279/19 311/280/19 315/278/19 +f 332/164/26 319/281/26 320/282/26 +f 325/169/1 320/129/1 319/283/1 +f 327/168/1 322/132/1 321/284/1 +f 329/167/1 324/166/1 323/285/1 +f 334/162/26 321/286/26 322/287/26 +f 336/143/26 323/288/26 324/289/26 +f 335/153/1 168/145/1 167/290/1 +f 1/1/1 18/41/1 17/2/1 +f 179/4/2 180/140/2 12/5/2 +f 177/7/1 325/169/1 157/8/1 +f 178/10/3 177/291/3 9/11/3 +f 179/4/4 11/6/4 8/13/4 +f 3/15/5 7/292/5 8/16/5 +f 7/293/5 3/19/5 162/294/5 +f 3/19/5 2/295/5 160/20/5 +f 162/294/5 3/19/5 161/18/5 +f 2/295/5 9/296/5 157/297/5 +f 158/298/5 159/299/5 2/295/5 +f 159/299/5 160/20/5 2/295/5 +f 2/295/5 157/297/5 158/298/5 +f 2/21/5 4/300/5 10/22/5 +f 5/24/5 8/301/5 11/25/5 +f 6/26/5 11/25/5 12/27/5 +f 4/29/5 1/28/5 12/27/5 +f 16/302/5 15/303/5 18/32/5 +f 15/303/5 13/33/5 18/32/5 +f 13/33/5 14/304/5 17/31/5 +f 2/34/6 15/305/6 16/35/6 +f 5/37/7 14/306/7 13/38/7 +f 4/40/8 16/307/8 18/41/8 +f 6/3/9 17/2/9 14/42/9 +f 3/44/2 13/308/2 15/45/2 +f 33/47/2 37/309/2 38/48/2 +f 38/48/5 37/309/5 30/50/5 +f 25/52/1 23/64/1 19/53/1 +f 22/55/2 20/310/2 24/56/2 +f 34/58/5 33/47/5 31/49/5 +f 28/60/5 27/63/5 36/61/5 +f 26/57/2 24/56/2 27/63/2 +f 32/59/1 35/62/1 36/61/1 +f 25/52/1 29/51/1 30/50/1 +f 90/65/10 94/68/10 97/66/10 +f 94/68/5 92/70/5 98/69/5 +f 92/70/11 88/311/11 95/71/11 +f 99/72/10 100/75/10 93/73/10 +f 100/75/5 101/312/5 91/76/5 +f 91/76/11 101/312/11 102/77/11 +f 106/79/12 110/82/12 109/80/12 +f 110/82/5 108/84/5 107/83/5 +f 108/84/13 104/313/13 103/85/13 +f 114/86/14 118/89/14 117/87/14 +f 118/89/5 116/91/5 115/90/5 +f 116/91/15 112/314/15 111/92/15 +f 129/93/11 126/97/11 122/94/11 +f 130/96/5 124/99/5 126/97/5 +f 127/98/10 120/315/10 124/99/10 +f 125/100/11 132/104/11 131/101/11 +f 123/103/5 133/106/5 132/104/5 +f 123/103/10 119/316/10 134/105/10 +f 141/107/16 142/111/16 138/108/16 +f 139/110/5 140/113/5 142/111/5 +f 135/112/17 136/317/17 140/113/17 +f 149/114/18 150/118/18 146/115/18 +f 147/117/5 148/120/5 150/118/5 +f 143/119/19 144/318/19 148/120/19 +f 330/121/1 175/319/1 7/122/1 +f 151/124/20 163/147/20 164/125/20 +f 326/127/1 158/134/1 152/128/1 +f 328/130/1 160/142/1 154/131/1 +f 151/133/1 152/128/1 158/134/1 +f 154/131/1 160/142/1 159/135/1 +f 156/137/1 162/123/1 161/138/1 +f 180/140/21 178/320/21 10/141/21 +f 326/127/1 327/168/1 159/135/1 +f 328/130/1 329/167/1 161/138/1 +f 336/143/22 324/321/22 156/144/22 +f 331/146/1 332/164/1 164/125/1 +f 333/148/1 334/162/1 166/149/1 +f 331/146/23 163/147/23 151/151/23 +f 335/153/23 167/290/23 155/154/23 +f 153/156/20 165/150/20 166/149/20 +f 155/158/20 167/290/20 168/145/20 +f 333/148/23 165/150/23 153/160/23 +f 334/162/22 322/322/22 154/163/22 +f 332/164/22 320/323/22 152/165/22 +f 330/121/1 162/123/1 156/137/1 +f 329/167/1 323/285/1 155/139/1 +f 327/168/1 321/284/1 153/136/1 +f 325/169/1 319/283/1 151/133/1 +f 175/170/24 176/324/24 8/171/24 +f 185/173/1 186/200/1 169/174/1 +f 176/176/25 175/325/25 171/177/25 +f 170/181/25 171/326/25 328/327/25 +f 171/326/25 175/328/25 330/329/25 +f 330/329/25 329/330/25 171/326/25 +f 329/330/25 328/327/25 171/326/25 +f 325/180/25 177/331/25 170/181/25 +f 328/327/25 327/332/25 170/181/25 +f 327/332/25 326/179/25 170/181/25 +f 170/182/25 177/333/25 178/183/25 +f 179/185/25 176/334/25 173/186/25 +f 180/188/25 179/185/25 174/187/25 +f 172/190/25 178/335/25 180/188/25 +f 181/193/25 183/336/25 186/337/25 +f 183/336/25 184/338/25 186/337/25 +f 186/337/25 185/191/25 181/193/25 +f 184/194/6 183/339/6 170/195/6 +f 181/197/7 182/340/7 173/198/7 +f 186/200/8 184/341/8 172/201/8 +f 182/202/9 185/173/9 174/175/9 +f 183/204/2 181/342/2 171/205/2 +f 206/207/2 205/343/2 201/208/2 +f 198/210/25 205/343/25 206/207/25 +f 187/212/1 191/224/1 193/213/1 +f 192/215/2 188/344/2 190/216/2 +f 199/209/25 201/208/25 202/218/25 +f 204/220/25 195/223/25 196/221/25 +f 194/217/2 196/221/2 195/223/2 +f 204/220/1 203/222/1 200/219/1 +f 198/210/1 197/211/1 193/213/1 +f 265/225/10 262/229/10 258/226/10 +f 266/228/25 260/231/25 262/229/25 +f 263/230/11 256/345/11 260/231/11 +f 261/232/10 268/236/10 267/233/10 +f 259/235/25 269/238/25 268/236/25 +f 259/235/11 255/346/11 270/237/11 +f 277/239/12 278/243/12 274/240/12 +f 275/242/25 276/245/25 278/243/25 +f 271/244/13 272/347/13 276/245/13 +f 285/246/14 286/250/14 282/247/14 +f 283/249/25 284/252/25 286/250/25 +f 279/251/15 280/348/15 284/252/15 +f 290/253/11 294/256/11 297/254/11 +f 294/256/25 292/258/25 298/257/25 +f 292/258/10 288/349/10 295/259/10 +f 299/260/11 300/263/11 293/261/11 +f 300/263/25 301/350/25 291/264/25 +f 291/264/10 301/350/10 302/265/10 +f 306/267/16 310/270/16 309/268/16 +f 310/270/25 308/272/25 307/271/25 +f 308/272/17 304/351/17 303/273/17 +f 314/274/18 318/277/18 317/275/18 +f 318/277/25 316/279/25 315/278/25 +f 316/279/19 312/352/19 311/280/19 +f 332/164/26 331/146/26 319/281/26 +f 325/169/1 326/127/1 320/129/1 +f 327/168/1 328/130/1 322/132/1 +f 329/167/1 330/121/1 324/166/1 +f 334/162/26 333/148/26 321/286/26 +f 336/143/26 335/153/26 323/288/26 +f 335/153/1 336/143/1 168/145/1 +s 1 +f 86/353/27 39/354/10 54/355/27 +f 60/356/8 42/357/28 41/358/8 +f 62/359/28 43/360/1 42/357/28 +f 64/361/1 44/362/29 43/363/1 +f 44/362/29 68/364/9 45/365/9 +f 45/365/9 70/366/30 46/367/30 +f 46/367/30 72/368/11 47/369/11 +f 47/369/11 74/370/31 48/371/31 +f 74/370/31 49/372/21 48/371/31 +f 49/372/21 78/373/32 50/374/32 +f 78/373/32 51/375/2 50/374/32 +f 80/376/2 52/377/33 51/375/2 +f 82/378/33 53/379/4 52/377/33 +f 84/380/4 54/355/27 53/379/4 +f 56/381/10 40/382/34 39/354/10 +f 58/383/34 41/358/8 40/382/34 +f 56/384/35 57/385/36 58/386/36 +f 58/386/36 59/387/37 60/388/37 +f 60/388/37 61/389/38 62/390/38 +f 64/391/39 61/389/38 63/392/39 +f 66/393/40 63/392/39 65/394/40 +f 68/395/41 65/394/40 67/396/41 +f 68/395/41 69/397/42 70/398/42 +f 72/399/43 69/397/42 71/400/43 +f 72/399/43 73/401/44 74/402/44 +f 74/402/44 75/403/45 76/404/45 +f 78/405/46 75/403/45 77/406/46 +f 80/407/47 77/406/46 79/408/47 +f 80/407/47 81/409/48 82/410/48 +f 82/410/48 83/411/49 84/412/49 +f 84/412/49 85/413/50 86/414/50 +f 86/414/50 55/415/35 56/384/35 +f 63/392/5 59/387/5 75/403/5 +f 207/416/10 254/417/27 222/418/27 +f 210/419/28 228/420/8 209/421/8 +f 211/422/1 230/423/28 210/419/28 +f 212/424/29 232/425/1 211/426/1 +f 213/427/9 234/428/29 212/424/29 +f 213/427/9 238/429/30 236/430/9 +f 215/431/11 238/429/30 214/432/30 +f 216/433/31 240/434/11 215/431/11 +f 217/435/21 242/436/31 216/433/31 +f 217/435/21 246/437/32 244/438/21 +f 219/439/2 246/437/32 218/440/32 +f 220/441/33 248/442/2 219/439/2 +f 221/443/4 250/444/33 220/441/33 +f 222/418/27 252/445/4 221/443/4 +f 208/446/34 224/447/10 207/416/10 +f 209/421/8 226/448/34 208/446/34 +f 225/449/51 224/450/52 226/451/51 +f 227/452/53 226/451/51 228/453/53 +f 229/454/54 228/453/53 230/455/54 +f 231/456/55 230/455/54 232/457/55 +f 234/458/56 231/456/55 232/457/55 +f 236/459/57 233/460/56 234/458/56 +f 237/461/58 236/459/57 238/462/58 +f 240/463/59 237/461/58 238/462/58 +f 241/464/60 240/463/59 242/465/60 +f 243/466/61 242/465/60 244/467/61 +f 246/468/62 243/466/61 244/467/61 +f 248/469/63 245/470/62 246/468/62 +f 249/471/64 248/469/63 250/472/64 +f 251/473/65 250/472/64 252/474/65 +f 253/475/66 252/474/65 254/476/66 +f 223/477/52 254/476/66 224/450/52 +f 239/478/25 247/479/25 223/477/25 +f 86/353/27 56/381/10 39/354/10 +f 60/356/8 62/359/28 42/357/28 +f 62/359/28 64/480/1 43/360/1 +f 64/361/1 66/481/29 44/362/29 +f 44/362/29 66/481/29 68/364/9 +f 45/365/9 68/364/9 70/366/30 +f 46/367/30 70/366/30 72/368/11 +f 47/369/11 72/368/11 74/370/31 +f 74/370/31 76/482/21 49/372/21 +f 49/372/21 76/482/21 78/373/32 +f 78/373/32 80/376/2 51/375/2 +f 80/376/2 82/378/33 52/377/33 +f 82/378/33 84/380/4 53/379/4 +f 84/380/4 86/353/27 54/355/27 +f 56/381/10 58/383/34 40/382/34 +f 58/383/34 60/356/8 41/358/8 +f 56/384/35 55/415/35 57/385/36 +f 58/386/36 57/385/36 59/387/37 +f 60/388/37 59/387/37 61/389/38 +f 64/391/39 62/390/38 61/389/38 +f 66/393/40 64/391/39 63/392/39 +f 68/395/41 66/393/40 65/394/40 +f 68/395/41 67/396/41 69/397/42 +f 72/399/43 70/398/42 69/397/42 +f 72/399/43 71/400/43 73/401/44 +f 74/402/44 73/401/44 75/403/45 +f 78/405/46 76/404/45 75/403/45 +f 80/407/47 78/405/46 77/406/46 +f 80/407/47 79/408/47 81/409/48 +f 82/410/48 81/409/48 83/411/49 +f 84/412/49 83/411/49 85/413/50 +f 86/414/50 85/413/50 55/415/35 +f 59/387/5 57/385/5 55/415/5 +f 55/415/5 85/413/5 83/411/5 +f 83/411/5 81/409/5 79/408/5 +f 79/408/5 77/406/5 83/411/5 +f 77/406/5 75/403/5 83/411/5 +f 75/403/5 73/401/5 67/396/5 +f 73/401/5 71/400/5 67/396/5 +f 71/400/5 69/397/5 67/396/5 +f 67/396/5 65/394/5 63/392/5 +f 63/392/5 61/389/5 59/387/5 +f 59/387/5 55/415/5 75/403/5 +f 55/415/5 83/411/5 75/403/5 +f 67/396/5 63/392/5 75/403/5 +f 207/416/10 224/447/10 254/417/27 +f 210/419/28 230/423/28 228/420/8 +f 211/422/1 232/483/1 230/423/28 +f 212/424/29 234/428/29 232/425/1 +f 213/427/9 236/430/9 234/428/29 +f 213/427/9 214/432/30 238/429/30 +f 215/431/11 240/434/11 238/429/30 +f 216/433/31 242/436/31 240/434/11 +f 217/435/21 244/438/21 242/436/31 +f 217/435/21 218/440/32 246/437/32 +f 219/439/2 248/442/2 246/437/32 +f 220/441/33 250/444/33 248/442/2 +f 221/443/4 252/445/4 250/444/33 +f 222/418/27 254/417/27 252/445/4 +f 208/446/34 226/448/34 224/447/10 +f 209/421/8 228/420/8 226/448/34 +f 225/449/51 223/477/52 224/450/52 +f 227/452/53 225/449/51 226/451/51 +f 229/454/54 227/452/53 228/453/53 +f 231/456/55 229/454/54 230/455/54 +f 234/458/56 233/460/56 231/456/55 +f 236/459/57 235/484/57 233/460/56 +f 237/461/58 235/484/57 236/459/57 +f 240/463/59 239/478/59 237/461/58 +f 241/464/60 239/478/59 240/463/59 +f 243/466/61 241/464/60 242/465/60 +f 246/468/62 245/470/62 243/466/61 +f 248/469/63 247/479/63 245/470/62 +f 249/471/64 247/479/63 248/469/63 +f 251/473/65 249/471/64 250/472/64 +f 253/475/66 251/473/65 252/474/65 +f 223/477/52 253/475/66 254/476/66 +f 223/477/25 225/449/25 227/452/25 +f 227/452/25 229/454/25 223/477/25 +f 229/454/25 231/456/25 223/477/25 +f 231/456/25 233/460/25 239/478/25 +f 233/460/25 235/484/25 239/478/25 +f 235/484/25 237/461/25 239/478/25 +f 239/478/25 241/464/25 247/479/25 +f 241/464/25 243/466/25 247/479/25 +f 243/466/25 245/470/25 247/479/25 +f 247/479/25 249/471/25 251/473/25 +f 251/473/25 253/475/25 223/477/25 +f 247/479/25 251/473/25 223/477/25 +f 223/477/25 231/456/25 239/478/25 +o frame +v -0.250000 0.082265 1.245283 +v -0.250000 0.082265 -1.245283 +v 0.250000 0.082265 1.245283 +v 0.250000 0.082265 -1.245283 +v -0.250000 -0.250000 -1.500000 +v -0.250000 -0.250000 1.500000 +v -0.250000 3.000000 1.500000 +v -0.250000 3.000000 -1.500000 +v 0.250000 3.000000 -1.500000 +v 0.250000 -0.250000 -1.500000 +v 0.250000 -0.250000 1.500000 +v 0.250000 3.000000 1.500000 +v -0.250000 2.476200 0.916753 +v -0.250000 2.147670 1.245283 +v -0.250000 2.147670 -1.245283 +v -0.250000 2.476200 -0.916753 +v 0.250000 2.247670 1.245283 +v 0.250000 2.476200 1.016753 +v 0.250000 2.476200 -1.016753 +v 0.250000 2.247670 -1.245283 +v 0.125956 2.528616 1.138464 +v -0.125956 2.528616 1.138464 +v -0.125956 0.041706 1.485400 +v 0.125956 0.041706 1.485400 +v -0.125956 0.041706 -1.485400 +v 0.125956 0.041706 -1.485400 +v 0.125956 0.082265 -1.245283 +v -0.125956 0.082265 -1.245283 +v 0.125956 0.082265 1.245283 +v -0.125956 0.082265 1.245283 +v -0.125956 2.476200 0.916753 +v 0.125956 2.476200 1.016753 +v 0.125956 2.247670 1.245283 +v -0.125956 2.147670 1.245283 +v -0.125956 2.147670 -1.245283 +v 0.125956 2.247670 -1.245283 +v 0.125956 2.476200 -1.016753 +v -0.125956 2.476200 -0.916753 +v 0.125956 2.169381 1.490198 +v -0.125956 2.169381 1.490198 +v -0.125956 2.169381 -1.490198 +v 0.125956 2.169381 -1.490198 +v 0.125956 2.528616 -1.138464 +v -0.125956 2.528616 -1.138464 +vt 0.252094 0.849975 +vt 0.042974 0.861955 +vt 0.042974 0.849975 +vt 0.053162 0.391169 +vt 0.367026 0.342882 +vt 0.367026 0.391169 +vt 0.900109 0.004875 +vt 0.912088 0.204338 +vt 0.900109 0.204338 +vt 0.053162 0.053162 +vt 0.367026 0.004876 +vt 0.367026 0.053162 +vt 0.415312 0.053162 +vt 0.415313 0.342882 +vt 0.004875 0.342883 +vt 0.053162 0.342883 +vt 0.286651 0.425519 +vt 0.318739 0.690640 +vt 0.286651 0.666041 +vt 0.226812 0.768416 +vt 0.271682 0.780396 +vt 0.226812 0.780396 +vt 0.856649 0.036087 +vt 0.868628 0.232469 +vt 0.856648 0.232469 +vt 0.103747 0.099831 +vt 0.334938 0.077761 +vt 0.334938 0.318284 +vt 0.125817 0.077761 +vt 0.125817 0.318284 +vt 0.055461 0.457246 +vt 0.004875 0.690640 +vt 0.004875 0.400920 +vt 0.087188 0.425519 +vt 0.318739 0.400920 +vt 0.055460 0.634314 +vt 0.087188 0.666041 +vt 0.103747 0.296214 +vt 0.049744 0.780396 +vt 0.049744 0.768416 +vt 0.004875 0.768416 +vt 0.004875 0.780396 +vt 0.414924 0.449983 +vt 0.390596 0.400920 +vt 0.414924 0.400920 +vt 0.856648 0.263681 +vt 0.868628 0.263681 +vt 0.923050 0.472894 +vt 0.911071 0.273431 +vt 0.923050 0.273431 +vt 0.868628 0.004875 +vt 0.868628 0.036087 +vt 0.890358 0.245395 +vt 0.878378 0.004875 +vt 0.890358 0.004875 +vt 0.896898 0.839383 +vt 0.884919 0.598863 +vt 0.896898 0.598863 +vt 0.430107 0.236244 +vt 0.425246 0.039582 +vt 0.430253 0.060865 +vt 0.461883 0.029415 +vt 0.459928 0.004875 +vt 0.664327 0.329425 +vt 0.459896 0.302054 +vt 0.668618 0.304997 +vt 0.664320 0.561413 +vt 0.459690 0.589112 +vt 0.452012 0.564649 +vt 0.461669 0.267743 +vt 0.425063 0.257528 +vt 0.668618 0.585734 +vt 0.042974 0.840225 +vt 0.252094 0.828245 +vt 0.252094 0.840225 +vt 0.414924 0.718936 +vt 0.390596 0.669873 +vt 0.414924 0.669873 +vt 0.822570 0.301526 +vt 0.846898 0.507007 +vt 0.822570 0.507007 +vt 0.390596 0.449983 +vt 0.812885 0.291775 +vt 0.788557 0.004875 +vt 0.812885 0.004875 +vt 0.764559 0.508596 +vt 0.740232 0.303115 +vt 0.764559 0.303115 +vt 0.452216 0.326499 +vt 0.425247 0.336687 +vt 0.664083 0.032287 +vt 0.668374 0.288821 +vt 0.664077 0.264516 +vt 0.425063 0.554433 +vt 0.430094 0.542765 +vt 0.430257 0.348360 +vt 0.668374 0.007875 +vt 0.459720 0.292303 +vt 0.252094 0.861955 +vt 0.912088 0.004875 +vt 0.053162 0.004875 +vt 0.004875 0.053162 +vt 0.271682 0.768416 +vt 0.911071 0.472894 +vt 0.856649 0.004875 +vt 0.878379 0.245395 +vt 0.884919 0.839383 +vt 0.042974 0.828245 +vt 0.390596 0.718936 +vt 0.846898 0.301526 +vt 0.788557 0.291775 +vt 0.740231 0.508596 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.6996 0.7145 +vn 0.0000 -0.6996 -0.7145 +vn 0.0000 0.0023 -1.0000 +vn 0.0000 0.0023 1.0000 +s off +f 339/485/67 369/486/67 353/487/67 +f 344/488/67 346/489/67 341/490/67 +f 371/491/68 338/492/68 364/493/68 +f 348/494/68 342/495/68 347/496/68 +f 346/489/69 342/497/69 341/498/69 +f 344/499/70 348/494/70 345/500/70 +f 338/501/71 342/502/71 337/503/71 +f 367/504/72 350/505/72 349/506/72 +f 354/507/69 373/508/69 355/509/69 +f 354/510/73 345/500/73 348/494/73 +f 339/511/73 346/489/73 340/512/73 +f 353/513/73 347/496/73 339/511/73 +f 356/514/73 346/489/73 345/500/73 +f 352/515/71 343/516/71 344/517/71 +f 351/518/71 341/519/71 338/501/71 +f 349/520/71 350/521/71 343/516/71 +f 351/518/71 352/515/71 344/517/71 +f 353/513/73 354/510/73 348/494/73 +f 355/522/73 356/514/73 345/500/73 +f 367/504/69 352/523/69 374/524/69 +f 371/525/74 352/523/74 351/526/74 +f 350/521/71 342/502/71 343/516/71 +f 379/527/75 377/528/75 378/529/75 +f 356/530/74 373/508/74 372/531/74 +f 366/532/67 350/533/67 370/534/67 +f 354/507/72 369/535/72 368/536/72 +f 365/537/70 340/538/70 363/539/70 +f 337/540/70 364/541/70 338/542/70 +f 374/543/73 358/544/73 367/545/73 +f 370/546/73 358/544/73 376/547/73 +f 363/548/71 378/549/71 362/550/71 +f 365/551/71 375/552/71 369/553/71 +f 371/554/73 380/555/73 374/543/73 +f 363/548/71 360/556/71 365/551/71 +f 356/557/68 363/558/68 340/559/68 +f 375/560/76 358/561/76 357/562/76 +f 376/563/77 360/564/77 359/565/77 +f 380/566/69 357/562/69 358/561/69 +f 362/567/70 359/568/70 360/569/70 +f 361/570/78 378/571/78 377/572/78 +f 372/573/71 379/574/71 378/549/71 +f 366/575/73 361/576/73 364/577/73 +f 369/553/71 357/578/71 368/579/71 +f 373/580/71 357/578/71 379/574/71 +f 366/575/73 376/547/73 359/581/73 +f 364/577/73 377/582/73 371/554/73 +f 339/485/67 365/583/67 369/486/67 +f 344/488/67 345/500/67 346/489/67 +f 371/491/68 351/584/68 338/492/68 +f 348/494/68 343/585/68 342/495/68 +f 346/489/69 347/496/69 342/497/69 +f 344/499/70 343/586/70 348/494/70 +f 338/501/71 341/519/71 342/502/71 +f 367/504/72 370/587/72 350/505/72 +f 354/507/69 368/536/69 373/508/69 +f 354/510/73 355/522/73 345/500/73 +f 339/511/73 347/496/73 346/489/73 +f 353/513/73 348/494/73 347/496/73 +f 356/514/73 340/512/73 346/489/73 +f 352/515/71 349/520/71 343/516/71 +f 351/518/71 344/517/71 341/519/71 +f 367/504/69 349/506/69 352/523/69 +f 371/525/74 374/524/74 352/523/74 +f 350/521/71 337/503/71 342/502/71 +f 379/527/75 380/566/75 377/528/75 +f 356/530/74 355/509/74 373/508/74 +f 366/532/67 337/588/67 350/533/67 +f 354/507/72 353/589/72 369/535/72 +f 365/537/70 339/590/70 340/538/70 +f 337/540/70 366/591/70 364/541/70 +f 374/543/73 380/555/73 358/544/73 +f 370/546/73 367/545/73 358/544/73 +f 363/548/71 372/573/71 378/549/71 +f 365/551/71 360/556/71 375/552/71 +f 371/554/73 377/582/73 380/555/73 +f 363/548/71 362/550/71 360/556/71 +f 356/557/68 372/592/68 363/558/68 +f 375/560/76 376/593/76 358/561/76 +f 376/563/77 375/594/77 360/564/77 +f 380/566/69 379/527/69 357/562/69 +f 362/567/70 361/595/70 359/568/70 +f 361/570/78 362/596/78 378/571/78 +f 372/573/71 373/580/71 379/574/71 +f 366/575/73 359/581/73 361/576/73 +f 369/553/71 375/552/71 357/578/71 +f 373/580/71 368/579/71 357/578/71 +f 366/575/73 370/546/73 376/547/73 +f 364/577/73 361/576/73 377/582/73 +o decal +v -0.074985 1.303216 -0.467952 +v -0.074985 1.303216 0.467952 +v -0.074985 2.239120 -0.467952 +v -0.074985 2.239120 0.467952 +v 0.074985 1.303216 0.467952 +v 0.074985 1.303216 -0.467952 +v 0.074985 2.239120 0.467952 +v 0.074985 2.239120 -0.467952 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 -0.0000 +s off +f 382/597/79 383/598/79 381/599/79 +f 386/600/80 387/601/80 385/602/80 +f 382/597/79 384/603/79 383/598/79 +f 386/600/80 388/604/80 387/601/80 diff --git a/src/main/resources/assets/hbm/models/doors/qe_sliding_door.obj b/src/main/resources/assets/hbm/models/doors/qe_sliding_door.obj new file mode 100644 index 000000000..66bd1e8ce --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/qe_sliding_door.obj @@ -0,0 +1,2312 @@ +# Blender v2.92.0 OBJ File: 'qe_sliding_door.blend' +# www.blender.org +o leftDoor +v 0.030935 0.772401 0.150776 +v 0.030935 0.972661 0.150776 +v 0.075000 0.088688 0.911312 +v 0.075000 1.911312 0.911312 +v 0.075000 0.088688 0.088688 +v 0.075000 1.911312 0.088688 +v 0.075000 2.000000 1.000000 +v 0.075000 0.000000 1.000000 +v 0.012500 1.861312 0.861312 +v 0.012500 0.138688 0.861312 +v 0.012500 0.138688 0.138688 +v 0.012500 1.861312 0.138688 +v 0.012500 0.733440 0.267519 +v 0.012500 0.988637 0.267519 +v 0.075000 0.655676 0.088688 +v 0.075000 1.166712 0.088688 +v 0.012500 1.166712 0.138688 +v 0.012500 0.655676 0.138688 +v 0.075000 0.733440 0.217519 +v 0.075000 0.988637 0.217519 +v 0.026895 0.753307 0.256002 +v 0.023223 0.758010 0.253518 +v 0.026895 0.753307 0.872828 +v 0.023223 0.758010 0.875312 +v 0.026895 0.834000 0.872828 +v 0.023223 0.829297 0.875312 +v 0.026895 0.834000 0.256002 +v 0.023223 0.829297 0.253518 +v 0.012500 0.753307 0.861312 +v 0.011573 0.758010 0.866015 +v 0.012500 0.753307 0.267519 +v 0.011573 0.758010 0.262816 +v 0.012500 0.834000 0.861312 +v 0.011573 0.829297 0.866015 +v 0.012500 0.834000 0.267519 +v 0.011573 0.829297 0.262816 +v 0.026895 0.873731 0.256002 +v 0.023223 0.878434 0.253518 +v 0.026895 0.873731 0.872828 +v 0.023223 0.878434 0.875312 +v 0.026895 0.954424 0.872828 +v 0.023223 0.949722 0.875312 +v 0.026895 0.954424 0.256002 +v 0.023223 0.949722 0.253518 +v 0.012500 0.873731 0.861312 +v 0.011573 0.878434 0.866015 +v 0.012500 0.873731 0.267519 +v 0.011573 0.878434 0.262816 +v 0.012500 0.954424 0.861312 +v 0.011573 0.949722 0.866015 +v 0.012500 0.954424 0.267519 +v 0.011573 0.949722 0.262816 +v 0.023223 0.758010 0.252557 +v 0.023223 0.829297 0.252557 +v 0.023223 0.758010 0.880367 +v 0.023223 0.829297 0.880367 +v 0.023223 0.878434 0.252557 +v 0.023223 0.949722 0.252557 +v 0.023223 0.878434 0.880367 +v 0.023223 0.949722 0.880367 +v 0.075000 0.772401 0.150776 +v 0.075000 0.972661 0.150776 +v -0.030935 0.772401 0.150776 +v -0.030935 0.972661 0.150776 +v -0.075000 0.088688 0.911312 +v -0.075000 1.911312 0.911312 +v -0.075000 0.088688 0.088688 +v -0.075000 1.911312 0.088688 +v -0.075000 2.000000 1.000000 +v -0.075000 0.000000 1.000000 +v -0.012500 1.861312 0.861312 +v -0.012500 0.138688 0.861312 +v -0.012500 0.138688 0.138688 +v -0.012500 1.861312 0.138688 +v -0.012500 0.733440 0.267519 +v -0.012500 0.988637 0.267519 +v -0.075000 0.655676 0.088688 +v -0.075000 1.166712 0.088688 +v -0.012500 1.166712 0.138688 +v -0.012500 0.655676 0.138688 +v -0.075000 0.733440 0.217519 +v -0.075000 0.988637 0.217519 +v -0.026895 0.753307 0.256002 +v -0.023223 0.758010 0.253518 +v -0.026895 0.753307 0.872828 +v -0.023223 0.758010 0.875312 +v -0.026895 0.834000 0.872828 +v -0.023223 0.829297 0.875312 +v -0.026895 0.834000 0.256002 +v -0.023223 0.829297 0.253518 +v -0.012500 0.753307 0.861312 +v -0.011573 0.758010 0.866015 +v -0.012500 0.753307 0.267519 +v -0.011573 0.758010 0.262816 +v -0.012500 0.834000 0.861312 +v -0.011573 0.829297 0.866015 +v -0.012500 0.834000 0.267519 +v -0.011573 0.829297 0.262816 +v -0.026895 0.873731 0.256002 +v -0.023223 0.878434 0.253518 +v -0.026895 0.873731 0.872828 +v -0.023223 0.878434 0.875312 +v -0.026895 0.954424 0.872828 +v -0.023223 0.949722 0.875312 +v -0.026895 0.954424 0.256002 +v -0.023223 0.949722 0.253518 +v -0.012500 0.873731 0.861312 +v -0.011573 0.878434 0.866015 +v -0.012500 0.873731 0.267519 +v -0.011573 0.878434 0.262816 +v -0.012500 0.954424 0.861312 +v -0.011573 0.949722 0.866015 +v -0.012500 0.954424 0.267519 +v -0.011573 0.949722 0.262816 +v -0.023223 0.758010 0.252557 +v -0.023223 0.829297 0.252557 +v -0.023223 0.758010 0.880367 +v -0.023223 0.829297 0.880367 +v -0.023223 0.878434 0.252557 +v -0.023223 0.949722 0.252557 +v -0.023223 0.878434 0.880367 +v -0.023223 0.949722 0.880367 +v -0.075000 0.772401 0.150776 +v -0.075000 0.972661 0.150776 +v 0.065000 0.000000 0.000000 +v 0.075000 0.000000 0.010000 +v 0.065000 2.000000 0.000000 +v 0.075000 2.000000 0.010000 +v 0.065000 0.655676 0.000000 +v 0.075000 0.655676 0.010000 +v 0.065000 1.166712 0.000000 +v 0.075000 1.166712 0.010000 +v 0.065000 0.733440 0.000000 +v 0.075000 0.733440 0.010000 +v 0.065000 0.988637 0.000000 +v 0.075000 0.988637 0.010000 +v 0.065000 0.982661 0.000000 +v 0.075000 0.972661 0.010000 +v 0.065000 0.762401 0.000000 +v 0.075000 0.772401 0.010000 +v 0.020935 0.982661 0.000000 +v 0.030935 0.972661 0.010000 +v 0.020935 0.762401 0.000000 +v 0.030935 0.772401 0.010000 +v -0.065000 0.000000 0.000000 +v -0.075000 0.000000 0.010000 +v -0.065000 2.000000 0.000000 +v -0.075000 2.000000 0.010000 +v -0.065000 0.655676 0.000000 +v -0.075000 0.655676 0.010000 +v -0.065000 1.166712 0.000000 +v -0.075000 1.166712 0.010000 +v -0.065000 0.733440 0.000000 +v -0.075000 0.733440 0.010000 +v -0.065000 0.988637 0.000000 +v -0.075000 0.988637 0.010000 +v -0.065000 0.982661 0.000000 +v -0.075000 0.972661 0.010000 +v -0.065000 0.762401 0.000000 +v -0.075000 0.772401 0.010000 +v -0.020935 0.982661 0.000000 +v -0.030935 0.972661 0.010000 +v -0.020935 0.762401 0.000000 +v -0.030935 0.772401 0.010000 +v -0.075000 0.954424 0.911312 +v -0.075000 0.753307 0.911312 +v 0.075000 0.954424 0.911312 +v 0.075000 0.753307 0.911312 +v 0.075000 0.954424 1.000000 +v 0.075000 0.753307 1.000000 +v -0.075000 0.954424 1.000000 +v -0.075000 0.753307 1.000000 +v -0.053113 0.981602 0.127840 +v -0.053113 0.753528 0.127840 +v -0.066310 0.981602 0.120221 +v -0.066310 0.753528 0.120221 +v -0.066310 0.981602 0.104982 +v -0.066310 0.753528 0.104982 +v -0.053113 0.981602 0.097362 +v -0.053113 0.753528 0.097362 +v -0.039915 0.981602 0.104982 +v -0.039915 0.753528 0.104982 +v -0.039915 0.981602 0.120221 +v -0.039915 0.753528 0.120221 +v -0.032467 0.940925 -0.136816 +v -0.032467 0.927874 -0.136816 +v -0.032467 0.940925 0.131365 +v -0.032467 0.927874 0.131365 +v -0.073758 0.940925 -0.136816 +v -0.073758 0.927874 -0.136816 +v -0.073758 0.940925 0.131365 +v -0.073758 0.927874 0.131365 +v -0.032467 0.818858 -0.136816 +v -0.032467 0.805807 -0.136816 +v -0.032467 0.818858 0.131365 +v -0.032467 0.805807 0.131365 +v -0.073758 0.818858 -0.136816 +v -0.073758 0.805807 -0.136816 +v -0.073758 0.818858 0.131365 +v -0.073758 0.805807 0.131365 +v -0.053113 0.939957 -0.088549 +v -0.053113 0.813798 -0.088550 +v -0.071903 0.939957 -0.099398 +v -0.071903 0.813798 -0.099398 +v -0.071903 0.939957 -0.121096 +v -0.071903 0.813798 -0.121096 +v -0.053113 0.939957 -0.131945 +v -0.053113 0.813798 -0.131945 +v -0.034322 0.939957 -0.121096 +v -0.034322 0.813798 -0.121096 +v -0.034322 0.939957 -0.099398 +v -0.034322 0.813798 -0.099398 +v 0.012500 1.861312 0.861312 +v 0.012500 0.138688 0.861312 +v 0.012500 0.138688 0.138688 +v 0.012500 1.861312 0.138688 +v 0.012500 0.733440 0.267519 +v 0.012500 0.988637 0.267519 +v 0.012500 1.166712 0.138688 +v 0.012500 0.655676 0.138688 +v 0.012500 0.753307 0.861312 +v 0.011573 0.758010 0.866015 +v 0.012500 0.753307 0.267519 +v 0.011573 0.758010 0.262816 +v 0.012500 0.834000 0.861312 +v 0.011573 0.829297 0.866015 +v 0.012500 0.834000 0.267519 +v 0.011573 0.829297 0.262816 +v 0.012500 0.873731 0.861312 +v 0.011573 0.878434 0.866015 +v 0.012500 0.873731 0.267519 +v 0.011573 0.878434 0.262816 +v 0.012500 0.954424 0.861312 +v 0.011573 0.949722 0.866015 +v 0.012500 0.954424 0.267519 +v 0.011573 0.949722 0.262816 +v -0.012500 1.861312 0.861312 +v -0.012500 0.138688 0.861312 +v -0.012500 0.138688 0.138688 +v -0.012500 1.861312 0.138688 +v -0.012500 0.733440 0.267519 +v -0.012500 0.988637 0.267519 +v -0.012500 1.166712 0.138688 +v -0.012500 0.655676 0.138688 +v -0.012500 0.753307 0.861312 +v -0.011573 0.758010 0.866015 +v -0.012500 0.753307 0.267519 +v -0.011573 0.758010 0.262816 +v -0.012500 0.834000 0.861312 +v -0.011573 0.829297 0.866015 +v -0.012500 0.834000 0.267519 +v -0.011573 0.829297 0.262816 +v -0.012500 0.873731 0.861312 +v -0.011573 0.878434 0.866015 +v -0.012500 0.873731 0.267519 +v -0.011573 0.878434 0.262816 +v -0.012500 0.954424 0.861312 +v -0.011573 0.949722 0.866015 +v -0.012500 0.954424 0.267519 +v -0.011573 0.949722 0.262816 +vt 0.727731 0.909684 +vt 0.717217 0.861903 +vt 0.727731 0.861903 +vt 0.994311 0.103548 +vt 0.958521 0.339756 +vt 0.958521 0.103548 +vt 0.883586 0.940828 +vt 0.877670 0.942230 +vt 0.878053 0.940634 +vt 0.857471 0.136616 +vt 0.838387 0.302232 +vt 0.838387 0.124694 +vt 0.401117 0.005690 +vt 0.559691 0.026850 +vt 0.401117 0.026850 +vt 0.413762 0.782316 +vt 0.549042 0.763542 +vt 0.549042 0.782317 +vt 0.819625 0.302232 +vt 0.425692 0.801413 +vt 0.711314 0.382154 +vt 0.692217 0.566498 +vt 0.692217 0.370225 +vt 0.248180 0.728437 +vt 0.063836 0.709339 +vt 0.260109 0.709340 +vt 0.804820 0.331268 +vt 0.769031 0.580736 +vt 0.769031 0.331268 +vt 0.136754 0.051912 +vt 0.353132 0.045947 +vt 0.353132 0.051912 +vt 0.075766 0.734402 +vt 0.075766 0.728437 +vt 0.091858 0.900883 +vt 0.092397 0.931216 +vt 0.073304 0.931621 +vt 0.048047 0.923951 +vt 0.547761 0.045947 +vt 0.401117 0.051912 +vt 0.401117 0.045947 +vt 0.090428 0.866950 +vt 0.132915 0.885725 +vt 0.090428 0.885725 +vt 0.132915 0.836212 +vt 0.085677 0.848454 +vt 0.128164 0.817715 +vt 0.873687 0.631974 +vt 0.894191 0.606510 +vt 0.904705 0.631974 +vt 0.612014 0.873137 +vt 0.564233 0.873137 +vt 0.560421 0.857213 +vt 0.927871 0.057405 +vt 0.917358 0.090994 +vt 0.917358 0.057405 +vt 0.863432 0.302232 +vt 0.857471 0.302232 +vt 0.353132 0.041548 +vt 0.136754 0.045947 +vt 0.621310 0.857213 +vt 0.587837 0.842515 +vt 0.711314 0.554568 +vt 0.717279 0.382154 +vt 0.717279 0.554568 +vt 0.124668 0.812883 +vt 0.909280 0.919388 +vt 0.903479 0.920905 +vt 0.903374 0.919265 +vt 0.598908 0.941632 +vt 0.599882 0.924151 +vt 0.599882 0.942747 +vt 0.912069 0.938667 +vt 0.913157 0.921031 +vt 0.913157 0.939831 +vt 0.595651 0.923166 +vt 0.595950 0.921479 +vt 0.590064 0.923387 +vt 0.589668 0.921765 +vt 0.909011 0.940828 +vt 0.909311 0.942491 +vt 0.918708 0.873065 +vt 0.912874 0.871208 +vt 0.918408 0.871402 +vt 0.595840 0.942876 +vt 0.596024 0.944398 +vt 0.909105 0.920915 +vt 0.921466 0.869241 +vt 0.922554 0.851605 +vt 0.922554 0.870405 +vt 0.886645 0.938667 +vt 0.887733 0.921031 +vt 0.887733 0.939831 +vt 0.381864 0.045947 +vt 0.372385 0.051912 +vt 0.372385 0.045947 +vt 0.883680 0.920915 +vt 0.883856 0.919388 +vt 0.918502 0.851489 +vt 0.918677 0.849962 +vt 0.912876 0.851479 +vt 0.912771 0.849839 +vt 0.883887 0.942491 +vt 0.200475 0.935830 +vt 0.183466 0.786038 +vt 0.200475 0.786038 +vt 0.392602 0.916184 +vt 0.542394 0.899175 +vt 0.542394 0.916184 +vt 0.144294 0.786038 +vt 0.155376 0.935830 +vt 0.144294 0.935830 +vt 0.736376 0.566497 +vt 0.757536 0.351450 +vt 0.757536 0.587658 +vt 0.760166 0.808558 +vt 0.749652 0.842147 +vt 0.749652 0.808558 +vt 0.761319 0.909684 +vt 0.761319 0.861903 +vt 0.542394 0.860003 +vt 0.392602 0.871085 +vt 0.392602 0.860003 +vt 0.392602 0.888093 +vt 0.542394 0.888093 +vt 0.560421 0.838116 +vt 0.568584 0.832151 +vt 0.568584 0.838116 +vt 0.597317 0.838116 +vt 0.587837 0.832151 +vt 0.597317 0.832151 +vt 0.172385 0.935830 +vt 0.172385 0.786038 +vt 0.590227 0.942930 +vt 0.621310 0.838116 +vt 0.616570 0.832151 +vt 0.621310 0.832151 +vt 0.110951 0.900478 +vt 0.097503 0.934298 +vt 0.903477 0.940634 +vt 0.549042 0.801413 +vt 0.425692 0.807378 +vt 0.211854 0.900206 +vt 0.222368 0.852425 +vt 0.222368 0.900206 +vt 0.882516 0.302232 +vt 0.863432 0.136616 +vt 0.882516 0.124694 +vt 0.559691 0.071009 +vt 0.401117 0.092169 +vt 0.401117 0.071009 +vt 0.413762 0.826475 +vt 0.549042 0.845250 +vt 0.392602 0.845250 +vt 0.901278 0.302232 +vt 0.549042 0.826475 +vt 0.549042 0.807378 +vt 0.736376 0.370225 +vt 0.063837 0.753498 +vt 0.248180 0.734401 +vt 0.260109 0.753498 +vt 0.124594 0.920643 +vt 0.106040 0.951381 +vt 0.124594 0.970155 +vt 0.066099 0.833322 +vt 0.061559 0.787093 +vt 0.108586 0.802584 +vt 0.082180 0.843621 +vt 0.045062 0.774659 +vt 0.560421 0.813054 +vt 0.612014 0.797130 +vt 0.621310 0.813054 +vt 0.917358 0.005689 +vt 0.927871 0.039278 +vt 0.917358 0.039278 +vt 0.353132 0.071009 +vt 0.124824 0.071009 +vt 0.597317 0.827753 +vt 0.587837 0.827753 +vt 0.585860 0.943106 +vt 0.587029 0.925646 +vt 0.586842 0.941897 +vt 0.899112 0.920791 +vt 0.900475 0.938441 +vt 0.899407 0.939584 +vt 0.585893 0.924471 +vt 0.903094 0.942230 +vt 0.590140 0.944568 +vt 0.900106 0.921973 +vt 0.908509 0.851365 +vt 0.909872 0.869015 +vt 0.908804 0.870158 +vt 0.873687 0.920791 +vt 0.875051 0.938442 +vt 0.873983 0.939584 +vt 0.912492 0.872804 +vt 0.878055 0.920905 +vt 0.874681 0.921973 +vt 0.909503 0.852547 +vt 0.155376 0.786038 +vt 0.542394 0.871085 +vt 0.692387 0.083838 +vt 0.725975 0.073325 +vt 0.725975 0.083838 +vt 0.255956 0.852425 +vt 0.255956 0.900206 +vt 0.045062 0.688179 +vt 0.817642 0.952534 +vt 0.781852 0.716326 +vt 0.817642 0.716326 +vt 0.877950 0.919265 +vt 0.561847 0.910100 +vt 0.560421 0.906726 +vt 0.564233 0.906726 +vt 0.053706 0.941940 +vt 0.056692 0.940368 +vt 0.132915 0.889099 +vt 0.394988 0.760168 +vt 0.549042 0.760168 +vt 0.816200 0.302233 +vt 0.819626 0.103548 +vt 0.621310 0.906726 +vt 0.614400 0.910100 +vt 0.612014 0.906726 +vt 0.757780 0.845521 +vt 0.747266 0.845521 +vt 0.764693 0.859517 +vt 0.925485 0.054031 +vt 0.991925 0.343130 +vt 0.994311 0.339756 +vt 0.784238 0.712952 +vt 0.561847 0.760168 +vt 0.560421 0.763542 +vt 0.560421 0.760168 +vt 0.106040 0.970155 +vt 0.124594 0.973530 +vt 0.106040 0.973530 +vt 0.045062 0.826392 +vt 0.058354 0.786038 +vt 0.549042 0.848624 +vt 0.904705 0.105933 +vt 0.904705 0.302233 +vt 0.621310 0.763542 +vt 0.614400 0.760168 +vt 0.621310 0.760168 +vt 0.689012 0.075710 +vt 0.692387 0.073325 +vt 0.259330 0.850040 +vt 0.259330 0.902592 +vt 0.925485 0.042652 +vt 0.914972 0.042652 +vt 0.671057 0.351450 +vt 0.124824 0.026850 +vt 0.353132 0.005690 +vt 0.353132 0.026850 +vt 0.769031 0.283283 +vt 0.804820 0.283283 +vt 0.353132 0.092169 +vt 0.103663 0.092169 +vt 0.401117 0.056310 +vt 0.547761 0.051912 +vt 0.381864 0.056310 +vt 0.372385 0.056310 +vt 0.769031 0.103548 +vt 0.804820 0.103548 +vt 0.372385 0.041548 +vt 0.381864 0.041548 +vt 0.458081 0.526437 +vt 0.607011 0.526438 +vt 0.462895 0.670321 +vt 0.831325 0.715192 +vt 0.840009 0.715191 +vt 0.840030 0.844974 +vt 0.295376 0.106106 +vt 0.439436 0.106106 +vt 0.439436 0.114406 +vt 0.557651 0.368753 +vt 0.560208 0.513936 +vt 0.557674 0.512813 +vt 0.007994 0.658645 +vt 0.016699 0.788428 +vt 0.008015 0.788429 +vt 0.106169 0.527870 +vt 0.250053 0.527870 +vt 0.250053 0.532684 +vt 0.717217 0.909684 +vt 0.580852 0.005690 +vt 0.392602 0.763542 +vt 0.804820 0.580736 +vt 0.904705 0.510044 +vt 0.904705 0.552531 +vt 0.894191 0.553957 +vt 0.904705 0.553958 +vt 0.873688 0.313612 +vt 0.904705 0.313612 +vt 0.873687 0.553957 +vt 0.873687 0.552531 +vt 0.884201 0.553957 +vt 0.873687 0.510044 +vt 0.873687 0.613420 +vt 0.873687 0.606510 +vt 0.884201 0.606510 +vt 0.904705 0.606510 +vt 0.904705 0.613420 +vt 0.873687 0.786029 +vt 0.904705 0.786029 +vt 0.927871 0.090994 +vt 0.568584 0.842515 +vt 0.587837 0.838116 +vt 0.597317 0.842515 +vt 0.616570 0.838116 +vt 0.616570 0.842515 +vt 0.598757 0.925348 +vt 0.912182 0.922144 +vt 0.921579 0.852718 +vt 0.886758 0.922144 +vt 0.381864 0.051912 +vt 0.183466 0.935830 +vt 0.392602 0.899175 +vt 0.760166 0.842147 +vt 0.560421 0.832151 +vt 0.116057 0.903560 +vt 0.211854 0.852425 +vt 0.580852 0.092169 +vt 0.901278 0.103548 +vt 0.048267 0.827448 +vt 0.281270 0.774659 +vt 0.564233 0.797130 +vt 0.564233 0.763542 +vt 0.612014 0.763542 +vt 0.927871 0.005689 +vt 0.353132 0.056310 +vt 0.568584 0.827753 +vt 0.616570 0.827753 +vt 0.281270 0.688179 +vt 0.781852 0.952534 +vt 0.560421 0.910100 +vt 0.045062 0.925523 +vt 0.090428 0.889099 +vt 0.816199 0.105971 +vt 0.621310 0.910100 +vt 0.764693 0.912070 +vt 0.914972 0.054031 +vt 0.960907 0.343130 +vt 0.815256 0.712952 +vt 0.394988 0.848624 +vt 0.689012 0.086224 +vt 0.671057 0.587658 +vt 0.401117 0.041548 +vt 0.103663 0.005689 +vt 0.607011 0.701538 +vt 0.481738 0.701538 +vt 0.458081 0.670321 +vt 0.455526 0.672827 +vt 0.455550 0.525315 +vt 0.831346 0.844976 +vt 0.829021 0.847215 +vt 0.829021 0.714139 +vt 0.842335 0.712952 +vt 0.842335 0.846028 +vt 0.292867 0.103548 +vt 0.440560 0.103572 +vt 0.470692 0.326126 +vt 0.295376 0.326126 +vt 0.470692 0.157609 +vt 0.337654 0.512849 +vt 0.506142 0.337506 +vt 0.337625 0.337533 +vt 0.549350 0.368754 +vt 0.560208 0.366244 +vt 0.016678 0.658644 +vt 0.019004 0.656405 +vt 0.019004 0.789481 +vt 0.005690 0.790668 +vt 0.005689 0.657592 +vt 0.281270 0.551527 +vt 0.281270 0.676800 +vt 0.106169 0.676800 +vt 0.103663 0.525315 +vt 0.251175 0.525339 +vt 0.264782 0.924581 +vt 0.211854 0.921044 +vt 0.264782 0.921044 +vt 0.264782 0.928117 +vt 0.211854 0.924580 +vt 0.211854 0.931653 +vt 0.211854 0.928117 +vt 0.264782 0.935190 +vt 0.264782 0.931653 +vt 0.264782 0.917508 +vt 0.211854 0.913971 +vt 0.264782 0.913971 +vt 0.211854 0.917508 +vt 0.643612 0.591953 +vt 0.640583 0.529718 +vt 0.643612 0.529718 +vt 0.627972 0.591953 +vt 0.631001 0.601535 +vt 0.627972 0.601535 +vt 0.631001 0.529718 +vt 0.631001 0.591953 +vt 0.627972 0.520135 +vt 0.627972 0.529718 +vt 0.618390 0.529718 +vt 0.618390 0.591953 +vt 0.640583 0.591953 +vt 0.030911 0.873865 +vt 0.027882 0.811629 +vt 0.030911 0.811629 +vt 0.015272 0.873865 +vt 0.018300 0.883447 +vt 0.015272 0.883447 +vt 0.018300 0.811629 +vt 0.018300 0.873865 +vt 0.015272 0.802047 +vt 0.015272 0.811629 +vt 0.005689 0.811629 +vt 0.005689 0.873865 +vt 0.027883 0.873865 +vt 0.858298 0.868664 +vt 0.829021 0.863629 +vt 0.858298 0.863629 +vt 0.829021 0.873700 +vt 0.829021 0.868664 +vt 0.858298 0.878735 +vt 0.858298 0.873700 +vt 0.858298 0.883770 +vt 0.829021 0.878735 +vt 0.858298 0.888806 +vt 0.829021 0.883770 +vt 0.829021 0.858594 +vt 0.858298 0.858594 +vt 0.211854 0.935190 +vt 0.631001 0.520135 +vt 0.018300 0.802047 +vt 0.829021 0.888806 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.6247 0.0000 0.7809 +vn 1.0000 0.0000 0.0000 +vn 0.6247 0.7809 0.0000 +vn 0.6247 -0.7809 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.3821 -0.7912 0.4776 +vn 0.5439 0.4919 0.6799 +vn 0.6247 0.0000 -0.7809 +vn 0.0000 0.5862 0.8102 +vn 0.0000 -0.7071 -0.7071 +vn -0.5602 0.0000 0.8283 +vn -0.5602 0.0000 -0.8283 +vn 0.4634 0.6706 0.5793 +vn 0.0000 0.7071 0.7071 +vn 0.4634 0.6706 -0.5793 +vn 0.0000 0.7071 -0.7071 +vn 0.4634 -0.6706 0.5792 +vn 0.4634 -0.6706 -0.5792 +vn 0.4634 -0.6706 -0.5793 +vn 0.4634 -0.6706 0.5793 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.8561 0.5168 +vn -0.6247 0.0000 0.7809 +vn -0.6247 0.7809 0.0000 +vn -0.6247 -0.7809 0.0000 +vn -0.3821 -0.7912 0.4776 +vn -0.5439 0.4919 0.6799 +vn -0.6247 0.0000 -0.7809 +vn 0.5602 0.0000 0.8283 +vn 0.5602 0.0000 -0.8283 +vn -0.4637 0.6689 0.5810 +vn -0.4634 0.6706 -0.5793 +vn -0.4634 -0.6706 0.5792 +vn -0.4637 -0.6689 -0.5810 +vn -0.4634 -0.6706 0.5793 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.9811 -0.1935 0.0000 +vn 0.4637 0.6689 0.5810 +vn 0.4637 0.6689 -0.5810 +vn 0.4637 -0.6689 0.5810 +vn 0.4637 -0.6689 -0.5810 +vn -0.5603 0.0000 0.8283 +vn -0.4634 0.6706 0.5793 +vn -0.4637 0.6689 -0.5810 +vn -0.4637 -0.6689 0.5810 +vn -0.4634 -0.6706 -0.5792 +vn 0.5603 0.0000 0.8283 +vn -0.4634 -0.6706 -0.5793 +vn 0.9811 0.1935 0.0000 +vn 0.9811 -0.1935 0.0000 +vn -0.9811 0.1935 0.0000 +vn -0.8660 0.0000 0.5000 +vn -0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 0.5000 +vn 0.5773 0.5773 0.5773 +vn 0.5773 -0.5773 -0.5773 +vn 0.5773 0.5773 -0.5773 +vn -0.5773 0.5773 0.5773 +vn 0.5773 -0.5773 0.5773 +vn -0.5773 -0.5773 -0.5773 +vn -0.5773 -0.5773 0.5773 +vn -0.5773 0.5773 -0.5773 +s off +f 2/1/1 61/2/1 1/3/1 +f 7/4/2 148/5/2 69/6/2 +f 52/7/3 113/8/3 114/9/3 +f 12/10/4 16/11/4 6/12/4 +f 170/13/5 3/14/5 168/15/5 +f 5/16/5 130/17/5 15/18/5 +f 132/19/5 6/12/5 16/11/5 +f 15/18/4 11/20/4 5/16/4 +f 11/21/6 3/22/6 5/23/6 +f 9/24/7 6/25/7 4/26/7 +f 169/27/8 69/28/8 171/29/8 +f 71/30/1 49/31/1 111/32/1 +f 9/24/9 74/33/9 12/34/9 +f 19/35/10 18/36/10 15/37/10 +f 15/37/5 134/38/5 19/35/5 +f 10/39/1 91/40/1 29/41/1 +f 16/42/5 136/43/5 132/44/5 +f 20/45/11 17/46/11 14/47/11 +f 149/48/1 143/49/1 129/50/1 +f 61/51/5 62/52/5 20/53/5 +f 138/54/9 2/55/9 142/56/9 +f 12/10/8 79/57/8 17/58/8 +f 41/59/12 49/31/12 9/60/12 +f 19/61/4 20/53/4 37/62/4 +f 10/63/2 73/64/2 72/65/2 +f 17/46/13 76/66/13 14/47/13 +f 33/67/14 96/68/14 95/69/14 +f 28/70/15 21/71/15 27/72/15 +f 24/73/16 25/74/16 23/75/16 +f 21/71/17 32/76/17 31/77/17 +f 31/77/18 94/78/18 93/79/18 +f 30/80/19 23/75/19 29/81/19 +f 45/82/20 108/83/20 46/84/20 +f 36/85/21 27/72/21 35/86/21 +f 25/74/22 34/87/22 33/67/22 +f 40/88/16 41/89/16 39/90/16 +f 44/91/15 37/92/15 43/93/15 +f 33/94/1 107/95/1 45/96/1 +f 46/84/19 39/90/19 45/82/19 +f 37/92/17 48/97/17 47/98/17 +f 41/89/23 50/99/23 49/100/23 +f 49/100/14 112/101/14 111/102/14 +f 52/7/24 43/93/24 51/103/24 +f 53/104/5 56/105/5 55/106/5 +f 57/107/5 60/108/5 59/109/5 +f 55/110/9 115/111/9 53/112/9 +f 65/113/25 146/114/25 70/115/25 +f 61/116/2 144/117/2 1/118/2 +f 142/119/5 1/3/5 144/120/5 +f 59/121/9 119/122/9 57/123/9 +f 60/108/2 120/124/2 122/125/2 +f 14/126/8 113/127/8 51/128/8 +f 35/129/8 109/130/8 97/131/8 +f 56/105/2 116/132/2 118/133/2 +f 35/86/3 98/134/3 36/85/3 +f 13/135/8 93/136/8 75/137/8 +f 13/138/26 80/139/26 18/36/26 +f 29/81/20 92/140/20 30/80/20 +f 18/141/8 73/142/8 11/20/8 +f 123/143/1 64/144/1 63/145/1 +f 78/146/27 74/147/27 68/148/27 +f 65/149/25 172/150/25 166/151/25 +f 67/152/25 150/153/25 146/154/25 +f 68/148/25 152/155/25 78/146/25 +f 77/156/27 73/142/27 80/157/27 +f 65/113/28 73/64/28 67/158/28 +f 68/159/29 71/160/29 66/161/29 +f 80/139/30 81/162/30 77/163/30 +f 154/164/25 77/163/25 81/162/25 +f 78/165/25 156/166/25 82/167/25 +f 82/167/31 79/168/31 78/165/31 +f 66/161/25 148/169/25 68/159/25 +f 82/170/25 123/171/25 81/172/25 +f 64/173/9 158/174/9 162/175/9 +f 165/176/32 66/177/32 71/30/32 +f 81/172/27 89/178/27 99/179/27 +f 89/180/33 84/181/33 90/182/33 +f 87/183/34 86/184/34 85/185/34 +f 83/186/35 94/78/35 84/181/35 +f 85/185/36 92/140/36 91/187/36 +f 89/180/37 98/134/37 97/188/37 +f 87/183/38 96/68/38 88/189/38 +f 103/190/34 102/191/34 101/192/34 +f 99/193/33 106/194/33 105/195/33 +f 101/192/36 108/83/36 107/196/36 +f 99/193/35 110/197/35 100/198/35 +f 103/190/38 112/101/38 104/199/38 +f 105/195/39 114/9/39 113/8/39 +f 118/133/25 115/111/25 117/200/25 +f 122/125/25 119/122/25 121/201/25 +f 164/202/2 123/203/2 63/204/2 +f 63/145/25 162/205/25 164/206/25 +f 128/207/5 4/26/5 6/25/5 +f 8/208/9 146/209/9 126/210/9 +f 47/98/18 110/197/18 109/211/18 +f 137/212/40 136/213/40 138/214/40 +f 129/215/40 134/38/40 130/216/40 +f 135/217/40 132/44/40 136/43/40 +f 130/17/40 125/218/40 129/219/40 +f 131/220/40 128/221/40 132/19/40 +f 134/222/40 139/223/40 140/224/40 +f 144/117/20 139/225/20 143/226/20 +f 143/227/40 142/119/40 144/120/40 +f 142/56/14 137/228/14 138/54/14 +f 127/229/2 148/5/2 128/230/2 +f 145/231/9 126/210/9 146/209/9 +f 157/232/41 156/233/41 155/234/41 +f 150/235/41 153/236/41 149/237/41 +f 156/166/41 151/238/41 155/239/41 +f 149/240/41 146/154/41 150/153/41 +f 152/155/41 147/241/41 151/242/41 +f 154/243/41 159/244/41 153/245/41 +f 164/202/20 159/246/20 160/247/20 +f 164/206/41 161/248/41 163/249/41 +f 162/175/14 157/250/14 161/251/14 +f 3/22/5 126/252/5 5/23/5 +f 168/15/12 3/14/12 10/39/12 +f 4/253/5 169/254/5 167/255/5 +f 169/27/8 172/256/8 170/257/8 +f 66/177/25 171/258/25 69/259/25 +f 85/260/32 91/40/32 72/261/32 +f 87/262/32 165/176/32 101/263/32 +f 166/151/25 171/258/25 165/176/25 +f 170/257/8 70/264/8 8/265/8 +f 169/254/5 168/15/5 167/255/5 +f 39/266/12 167/255/12 25/267/12 +f 221/268/5 214/269/5 217/270/5 +f 229/271/5 225/272/5 227/273/5 +f 233/274/5 235/275/5 218/276/5 +f 259/277/42 258/278/42 257/279/42 +f 255/280/25 249/281/25 253/282/25 +f 245/283/25 247/284/25 241/285/25 +f 2/1/1 62/286/1 61/2/1 +f 7/4/2 128/230/2 148/5/2 +f 52/7/3 51/103/3 113/8/3 +f 12/10/4 17/58/4 16/11/4 +f 170/13/5 8/287/5 3/14/5 +f 5/16/5 126/288/5 130/17/5 +f 132/19/5 128/221/5 6/12/5 +f 15/18/4 18/141/4 11/20/4 +f 11/21/6 10/63/6 3/22/6 +f 9/24/7 12/34/7 6/25/7 +f 169/27/8 7/289/8 69/28/8 +f 71/30/1 9/60/1 49/31/1 +f 9/24/9 71/160/9 74/33/9 +f 19/35/10 13/138/10 18/36/10 +f 15/37/5 130/216/5 134/38/5 +f 10/39/1 72/261/1 91/40/1 +f 16/42/5 20/45/5 136/43/5 +f 20/45/11 16/42/11 17/46/11 +f 131/290/1 135/291/1 141/292/1 +f 135/291/1 137/293/1 141/292/1 +f 147/294/1 127/295/1 131/290/1 +f 157/296/1 155/297/1 161/298/1 +f 155/297/1 151/299/1 161/298/1 +f 151/299/1 147/294/1 131/290/1 +f 151/299/1 131/290/1 141/292/1 +f 153/300/1 159/301/1 163/302/1 +f 161/298/1 151/299/1 141/292/1 +f 149/48/1 153/300/1 163/302/1 +f 163/302/1 161/298/1 141/292/1 +f 143/49/1 139/303/1 133/304/1 +f 163/302/1 141/292/1 143/49/1 +f 145/305/1 149/48/1 129/50/1 +f 149/48/1 163/302/1 143/49/1 +f 129/50/1 125/306/1 145/305/1 +f 143/49/1 133/304/1 129/50/1 +f 19/61/5 134/222/5 61/51/5 +f 134/222/5 140/224/5 61/51/5 +f 138/214/5 136/213/5 62/52/5 +f 136/213/5 20/53/5 62/52/5 +f 19/61/5 61/51/5 20/53/5 +f 138/54/9 62/307/9 2/55/9 +f 12/10/8 74/147/8 79/57/8 +f 4/253/12 167/255/12 9/60/12 +f 167/255/12 41/59/12 9/60/12 +f 14/126/4 51/128/4 43/308/4 +f 37/62/4 47/309/4 35/129/4 +f 20/53/4 14/126/4 43/308/4 +f 37/62/4 35/129/4 27/310/4 +f 20/53/4 43/308/4 37/62/4 +f 31/311/4 13/135/4 21/312/4 +f 13/135/4 19/61/4 21/312/4 +f 37/62/4 27/310/4 19/61/4 +f 27/310/4 21/312/4 19/61/4 +f 10/63/2 11/21/2 73/64/2 +f 17/46/13 79/168/13 76/66/13 +f 33/67/14 34/87/14 96/68/14 +f 28/70/15 22/313/15 21/71/15 +f 24/73/16 26/314/16 25/74/16 +f 21/71/43 22/313/43 32/76/43 +f 31/77/18 32/76/18 94/78/18 +f 30/80/44 24/73/44 23/75/44 +f 45/82/20 107/196/20 108/83/20 +f 36/85/45 28/70/45 27/72/45 +f 25/74/46 26/314/46 34/87/46 +f 40/88/16 42/315/16 41/89/16 +f 44/91/47 38/316/47 37/92/47 +f 33/94/1 95/317/1 107/95/1 +f 46/84/44 40/88/44 39/90/44 +f 37/92/43 38/316/43 48/97/43 +f 41/89/46 42/315/46 50/99/46 +f 49/100/14 50/99/14 112/101/14 +f 52/7/45 44/91/45 43/93/45 +f 53/104/5 54/318/5 56/105/5 +f 57/107/5 58/319/5 60/108/5 +f 55/110/9 117/200/9 115/111/9 +f 65/113/25 67/158/25 146/114/25 +f 61/116/2 140/320/2 144/117/2 +f 142/119/5 2/1/5 1/3/5 +f 59/121/9 121/201/9 119/122/9 +f 60/108/2 58/319/2 120/124/2 +f 14/126/8 76/321/8 113/127/8 +f 35/129/8 47/309/8 109/130/8 +f 56/105/2 54/318/2 116/132/2 +f 35/86/3 97/188/3 98/134/3 +f 13/135/8 31/311/8 93/136/8 +f 13/138/26 75/322/26 80/139/26 +f 29/81/20 91/187/20 92/140/20 +f 18/141/8 80/157/8 73/142/8 +f 123/143/1 124/323/1 64/144/1 +f 78/146/27 79/57/27 74/147/27 +f 65/149/25 70/324/25 172/150/25 +f 67/152/25 77/156/25 150/153/25 +f 68/148/25 148/325/25 152/155/25 +f 77/156/27 67/152/27 73/142/27 +f 65/113/28 72/65/28 73/64/28 +f 68/159/29 74/33/29 71/160/29 +f 80/139/30 75/322/30 81/162/30 +f 154/164/25 150/235/25 77/163/25 +f 78/165/25 152/326/25 156/166/25 +f 82/167/31 76/66/31 79/168/31 +f 66/161/25 69/327/25 148/169/25 +f 82/170/25 156/233/25 124/328/25 +f 156/233/25 158/329/25 124/328/25 +f 160/330/25 154/243/25 123/171/25 +f 154/243/25 81/172/25 123/171/25 +f 82/170/25 124/328/25 123/171/25 +f 64/173/9 124/331/9 158/174/9 +f 111/32/32 103/332/32 71/30/32 +f 103/332/32 165/176/32 71/30/32 +f 105/333/27 113/127/27 76/321/27 +f 81/172/27 75/137/27 83/334/27 +f 75/137/27 93/136/27 83/334/27 +f 105/333/27 76/321/27 82/170/27 +f 97/131/27 109/130/27 99/179/27 +f 99/179/27 105/333/27 82/170/27 +f 82/170/27 81/172/27 99/179/27 +f 81/172/27 83/334/27 89/178/27 +f 89/178/27 97/131/27 99/179/27 +f 89/180/33 83/186/33 84/181/33 +f 87/183/34 88/189/34 86/184/34 +f 83/186/48 93/79/48 94/78/48 +f 85/185/49 86/184/49 92/140/49 +f 89/180/50 90/182/50 98/134/50 +f 87/183/51 95/69/51 96/68/51 +f 103/190/34 104/199/34 102/191/34 +f 99/193/52 100/198/52 106/194/52 +f 101/192/49 102/191/49 108/83/49 +f 99/193/48 109/211/48 110/197/48 +f 103/190/53 111/102/53 112/101/53 +f 105/195/50 106/194/50 114/9/50 +f 118/133/25 116/132/25 115/111/25 +f 122/125/25 120/124/25 119/122/25 +f 164/202/2 160/247/2 123/203/2 +f 63/145/25 64/144/25 162/205/25 +f 128/207/5 7/335/5 4/26/5 +f 8/208/9 70/336/9 146/209/9 +f 47/98/18 48/97/18 110/197/18 +f 137/212/40 135/337/40 136/213/40 +f 129/215/40 133/338/40 134/38/40 +f 135/217/40 131/339/40 132/44/40 +f 130/17/40 126/288/40 125/218/40 +f 131/220/40 127/340/40 128/221/40 +f 134/222/40 133/341/40 139/223/40 +f 144/117/20 140/320/20 139/225/20 +f 143/227/40 141/342/40 142/119/40 +f 142/56/14 141/343/14 137/228/14 +f 127/229/2 147/344/2 148/5/2 +f 145/231/9 125/345/9 126/210/9 +f 157/232/41 158/329/41 156/233/41 +f 150/235/41 154/164/41 153/236/41 +f 156/166/41 152/326/41 151/238/41 +f 149/240/41 145/346/41 146/154/41 +f 152/155/41 148/325/41 147/241/41 +f 154/243/41 160/330/41 159/244/41 +f 164/202/20 163/347/20 159/246/20 +f 164/206/41 162/205/41 161/248/41 +f 162/175/14 158/174/14 157/250/14 +f 3/22/5 8/348/5 126/252/5 +f 29/41/12 23/349/12 10/39/12 +f 23/349/12 168/15/12 10/39/12 +f 4/253/5 7/350/5 169/254/5 +f 169/27/8 171/29/8 172/256/8 +f 66/177/25 165/176/25 171/258/25 +f 65/149/32 166/151/32 72/261/32 +f 166/151/32 85/260/32 72/261/32 +f 101/263/32 107/95/32 95/317/32 +f 87/262/32 85/260/32 166/151/32 +f 101/263/32 95/317/32 87/262/32 +f 165/176/32 103/332/32 101/263/32 +f 87/262/32 166/151/32 165/176/32 +f 166/151/25 172/150/25 171/258/25 +f 170/257/8 172/256/8 70/264/8 +f 169/254/5 170/13/5 168/15/5 +f 33/94/12 45/96/12 39/266/12 +f 39/266/12 41/59/12 167/255/12 +f 167/255/12 168/15/12 25/267/12 +f 168/15/12 23/349/12 25/267/12 +f 25/267/12 33/94/12 39/266/12 +f 215/351/5 220/352/5 217/270/5 +f 223/353/54 224/354/54 222/355/54 +f 214/269/5 215/351/5 217/270/5 +f 217/270/5 223/353/5 221/268/5 +f 223/353/54 222/355/54 221/268/54 +f 231/356/54 232/357/54 229/271/54 +f 232/357/54 230/358/54 229/271/54 +f 226/359/55 228/360/55 227/273/55 +f 227/273/5 231/356/5 229/271/5 +f 225/272/55 226/359/55 227/273/55 +f 233/274/55 234/361/55 236/362/55 +f 233/274/55 236/362/55 235/275/55 +f 216/363/5 213/364/5 219/365/5 +f 213/364/5 233/274/5 219/365/5 +f 219/365/5 233/274/5 218/276/5 +f 257/279/25 237/366/25 243/367/25 +f 237/366/25 240/368/25 243/367/25 +f 257/279/25 243/367/25 242/369/25 +f 259/277/42 260/370/42 258/278/42 +f 242/369/25 259/277/25 257/279/25 +f 251/371/42 252/372/42 249/281/42 +f 252/372/42 250/373/42 249/281/42 +f 254/374/56 256/375/56 255/280/56 +f 255/280/25 251/371/25 249/281/25 +f 253/282/56 254/374/56 255/280/56 +f 241/285/25 244/376/25 239/377/25 +f 239/377/25 238/378/25 241/285/25 +f 238/378/25 245/283/25 241/285/25 +f 245/283/56 246/379/56 248/380/56 +f 245/283/56 248/380/56 247/284/56 +s 1 +f 175/381/57 174/382/8 173/383/8 +f 177/384/58 176/385/57 175/381/57 +f 177/384/58 180/386/1 178/387/58 +f 181/388/59 180/386/1 179/389/1 +f 183/390/60 182/391/59 181/392/59 +f 173/383/8 184/393/60 183/390/60 +f 187/394/61 186/395/62 185/396/63 +f 191/397/64 188/398/65 187/399/61 +f 191/397/64 190/400/66 192/401/67 +f 185/402/63 190/400/66 189/403/68 +f 185/404/63 191/397/64 187/405/61 +f 190/400/66 188/406/65 192/401/67 +f 195/407/61 194/408/62 193/409/63 +f 199/410/64 196/411/65 195/412/61 +f 199/410/64 198/413/66 200/414/67 +f 193/415/63 198/413/66 197/416/68 +f 193/417/63 199/410/64 195/418/61 +f 198/413/66 196/419/65 200/414/67 +f 203/420/57 202/421/8 201/422/8 +f 203/420/57 206/423/58 204/424/57 +f 207/425/1 206/423/58 205/426/58 +f 209/427/59 208/428/1 207/425/1 +f 211/429/60 210/430/59 209/427/59 +f 201/422/8 212/431/60 211/432/60 +f 175/381/57 176/385/57 174/382/8 +f 177/384/58 178/387/58 176/385/57 +f 177/384/58 179/389/1 180/386/1 +f 181/388/59 182/433/59 180/386/1 +f 183/390/60 184/393/60 182/391/59 +f 173/383/8 174/382/8 184/393/60 +f 187/394/61 188/406/65 186/395/62 +f 191/397/64 192/401/67 188/398/65 +f 191/397/64 189/403/68 190/400/66 +f 185/402/63 186/434/62 190/400/66 +f 185/404/63 189/403/68 191/397/64 +f 190/400/66 186/395/62 188/406/65 +f 195/407/61 196/419/65 194/408/62 +f 199/410/64 200/414/67 196/411/65 +f 199/410/64 197/416/68 198/413/66 +f 193/415/63 194/435/62 198/413/66 +f 193/417/63 197/416/68 199/410/64 +f 198/413/66 194/408/62 196/419/65 +f 203/420/57 204/424/57 202/421/8 +f 203/420/57 205/426/58 206/423/58 +f 207/425/1 208/428/1 206/423/58 +f 209/427/59 210/430/59 208/428/1 +f 211/429/60 212/436/60 210/430/59 +f 201/422/8 202/421/8 212/431/60 +o rightDoor +v 0.030935 0.772401 -0.150776 +v 0.030935 0.972661 -0.150776 +v 0.075000 0.088688 -0.911312 +v 0.075000 1.911312 -0.911312 +v 0.075000 0.088688 -0.088688 +v 0.075000 1.911312 -0.088688 +v 0.075000 2.000000 -1.000000 +v 0.075000 0.000000 -1.000000 +v 0.012500 1.861312 -0.861312 +v 0.012500 0.138688 -0.861312 +v 0.012500 0.138688 -0.138688 +v 0.012500 1.861312 -0.138688 +v 0.012500 0.733440 -0.267519 +v 0.012500 0.988637 -0.267519 +v 0.075000 0.655676 -0.088688 +v 0.075000 1.166712 -0.088688 +v 0.012500 1.166712 -0.138688 +v 0.012500 0.655676 -0.138688 +v 0.075000 0.733440 -0.217519 +v 0.075000 0.988637 -0.217519 +v 0.026895 0.753307 -0.256002 +v 0.023223 0.758010 -0.253518 +v 0.026895 0.753307 -0.872828 +v 0.023223 0.758010 -0.875312 +v 0.026895 0.834000 -0.872828 +v 0.023223 0.829297 -0.875312 +v 0.026895 0.834000 -0.256002 +v 0.023223 0.829297 -0.253518 +v 0.012500 0.753307 -0.861312 +v 0.011573 0.758010 -0.866015 +v 0.012500 0.753307 -0.267519 +v 0.011573 0.758010 -0.262816 +v 0.012500 0.834000 -0.861312 +v 0.011573 0.829297 -0.866015 +v 0.012500 0.834000 -0.267519 +v 0.011573 0.829297 -0.262816 +v 0.026895 0.873731 -0.256002 +v 0.023223 0.878434 -0.253518 +v 0.026895 0.873731 -0.872828 +v 0.023223 0.878434 -0.875312 +v 0.026895 0.954424 -0.872828 +v 0.023223 0.949722 -0.875312 +v 0.026895 0.954424 -0.256002 +v 0.023223 0.949722 -0.253518 +v 0.012500 0.873731 -0.861312 +v 0.011573 0.878434 -0.866015 +v 0.012500 0.873731 -0.267519 +v 0.011573 0.878434 -0.262816 +v 0.012500 0.954424 -0.861312 +v 0.011573 0.949722 -0.866015 +v 0.012500 0.954424 -0.267519 +v 0.011573 0.949722 -0.262816 +v 0.023223 0.758010 -0.252557 +v 0.023223 0.829297 -0.252557 +v 0.023223 0.758010 -0.880367 +v 0.023223 0.829297 -0.880367 +v 0.023223 0.878434 -0.252557 +v 0.023223 0.949722 -0.252557 +v 0.023223 0.878434 -0.880367 +v 0.023223 0.949722 -0.880367 +v 0.075000 0.772401 -0.150776 +v 0.075000 0.972661 -0.150776 +v -0.030935 0.772401 -0.150776 +v -0.030935 0.972661 -0.150776 +v -0.075000 0.088688 -0.911312 +v -0.075000 1.911312 -0.911312 +v -0.075000 0.088688 -0.088688 +v -0.075000 1.911312 -0.088688 +v -0.075000 2.000000 -1.000000 +v -0.075000 0.000000 -1.000000 +v -0.012500 1.861312 -0.861312 +v -0.012500 0.138688 -0.861312 +v -0.012500 0.138688 -0.138688 +v -0.012500 1.861312 -0.138688 +v -0.012500 0.733440 -0.267519 +v -0.012500 0.988637 -0.267519 +v -0.075000 0.655676 -0.088688 +v -0.075000 1.166712 -0.088688 +v -0.012500 1.166712 -0.138688 +v -0.012500 0.655676 -0.138688 +v -0.075000 0.733440 -0.217519 +v -0.075000 0.988637 -0.217519 +v -0.026895 0.753307 -0.256002 +v -0.023223 0.758010 -0.253518 +v -0.026895 0.753307 -0.872828 +v -0.023223 0.758010 -0.875312 +v -0.026895 0.834000 -0.872828 +v -0.023223 0.829297 -0.875312 +v -0.026895 0.834000 -0.256002 +v -0.023223 0.829297 -0.253518 +v -0.012500 0.753307 -0.861312 +v -0.011573 0.758010 -0.866015 +v -0.012500 0.753307 -0.267519 +v -0.011573 0.758010 -0.262816 +v -0.012500 0.834000 -0.861312 +v -0.011573 0.829297 -0.866015 +v -0.012500 0.834000 -0.267519 +v -0.011573 0.829297 -0.262816 +v -0.026895 0.873731 -0.256002 +v -0.023223 0.878434 -0.253518 +v -0.026895 0.873731 -0.872828 +v -0.023223 0.878434 -0.875312 +v -0.026895 0.954424 -0.872828 +v -0.023223 0.949722 -0.875312 +v -0.026895 0.954424 -0.256002 +v -0.023223 0.949722 -0.253518 +v -0.012500 0.873731 -0.861312 +v -0.011573 0.878434 -0.866015 +v -0.012500 0.873731 -0.267519 +v -0.011573 0.878434 -0.262816 +v -0.012500 0.954424 -0.861312 +v -0.011573 0.949722 -0.866015 +v -0.012500 0.954424 -0.267519 +v -0.011573 0.949722 -0.262816 +v -0.023223 0.758010 -0.252557 +v -0.023223 0.829297 -0.252557 +v -0.023223 0.758010 -0.880367 +v -0.023223 0.829297 -0.880367 +v -0.023223 0.878434 -0.252557 +v -0.023223 0.949722 -0.252557 +v -0.023223 0.878434 -0.880367 +v -0.023223 0.949722 -0.880367 +v -0.075000 0.772401 -0.150776 +v -0.075000 0.972661 -0.150776 +v 0.065000 0.000000 0.000000 +v 0.075000 0.000000 -0.010000 +v 0.065000 2.000000 0.000000 +v 0.075000 2.000000 -0.010000 +v 0.065000 0.655676 0.000000 +v 0.075000 0.655676 -0.010000 +v 0.065000 1.166712 0.000000 +v 0.075000 1.166712 -0.010000 +v 0.065000 0.733440 0.000000 +v 0.075000 0.733440 -0.010000 +v 0.065000 0.988637 0.000000 +v 0.075000 0.988637 -0.010000 +v 0.065000 0.982661 0.000000 +v 0.075000 0.972661 -0.010000 +v 0.065000 0.762401 0.000000 +v 0.075000 0.772401 -0.010000 +v 0.020935 0.982661 0.000000 +v 0.030935 0.972661 -0.010000 +v 0.020935 0.762401 0.000000 +v 0.030935 0.772401 -0.010000 +v -0.065000 0.000000 0.000000 +v -0.075000 0.000000 -0.010000 +v -0.065000 2.000000 0.000000 +v -0.075000 2.000000 -0.010000 +v -0.065000 0.655676 0.000000 +v -0.075000 0.655676 -0.010000 +v -0.065000 1.166712 0.000000 +v -0.075000 1.166712 -0.010000 +v -0.065000 0.733440 0.000000 +v -0.075000 0.733440 -0.010000 +v -0.065000 0.988637 0.000000 +v -0.075000 0.988637 -0.010000 +v -0.065000 0.982661 0.000000 +v -0.075000 0.972661 -0.010000 +v -0.065000 0.762401 0.000000 +v -0.075000 0.772401 -0.010000 +v -0.020935 0.982661 0.000000 +v -0.030935 0.972661 -0.010000 +v -0.020935 0.762401 0.000000 +v -0.030935 0.772401 -0.010000 +v -0.075000 0.954424 -0.911312 +v -0.075000 0.753307 -0.911312 +v -0.075000 0.954424 -1.000000 +v -0.075000 0.753307 -1.000000 +v 0.075000 0.954424 -1.000000 +v 0.075000 0.753307 -1.000000 +v 0.075000 0.954424 -0.911312 +v 0.075000 0.753307 -0.911312 +v 0.053113 0.765130 -0.133291 +v 0.053113 0.993204 -0.133291 +v 0.066310 0.765130 -0.125672 +v 0.066310 0.993204 -0.125672 +v 0.066310 0.765130 -0.110433 +v 0.066310 0.993204 -0.110433 +v 0.053113 0.765130 -0.102813 +v 0.053113 0.993204 -0.102813 +v 0.039915 0.765130 -0.110433 +v 0.039915 0.993204 -0.110433 +v 0.039915 0.765130 -0.125672 +v 0.039915 0.993204 -0.125672 +v 0.032467 0.805807 0.131365 +v 0.032467 0.818858 0.131365 +v 0.032467 0.805807 -0.136816 +v 0.032467 0.818858 -0.136816 +v 0.073758 0.805807 0.131365 +v 0.073758 0.818858 0.131365 +v 0.073758 0.805807 -0.136816 +v 0.073758 0.818858 -0.136816 +v 0.032467 0.927874 0.131365 +v 0.032467 0.940925 0.131365 +v 0.032467 0.927874 -0.136816 +v 0.032467 0.940925 -0.136816 +v 0.073758 0.927874 0.131365 +v 0.073758 0.940925 0.131365 +v 0.073758 0.927874 -0.136816 +v 0.073758 0.940925 -0.136816 +v 0.053113 0.806775 0.083099 +v 0.053113 0.932934 0.083099 +v 0.071903 0.806775 0.093947 +v 0.071903 0.932934 0.093947 +v 0.071903 0.806775 0.115645 +v 0.071903 0.932934 0.115645 +v 0.053113 0.806775 0.126494 +v 0.053113 0.932934 0.126494 +v 0.034322 0.806775 0.115645 +v 0.034322 0.932934 0.115645 +v 0.034322 0.806775 0.093947 +v 0.034322 0.932934 0.093947 +v 0.012500 1.861312 -0.861312 +v 0.012500 0.138688 -0.861312 +v 0.012500 0.138688 -0.138688 +v 0.012500 1.861312 -0.138688 +v 0.012500 0.733440 -0.267519 +v 0.012500 0.988637 -0.267519 +v 0.012500 1.166712 -0.138688 +v 0.012500 0.655676 -0.138688 +v 0.012500 0.753307 -0.861312 +v 0.011573 0.758010 -0.866015 +v 0.012500 0.753307 -0.267519 +v 0.011573 0.758010 -0.262816 +v 0.012500 0.834000 -0.861312 +v 0.011573 0.829297 -0.866015 +v 0.012500 0.834000 -0.267519 +v 0.011573 0.829297 -0.262816 +v 0.012500 0.873731 -0.861312 +v 0.011573 0.878434 -0.866015 +v 0.012500 0.873731 -0.267519 +v 0.011573 0.878434 -0.262816 +v 0.012500 0.954424 -0.861312 +v 0.011573 0.949722 -0.866015 +v 0.012500 0.954424 -0.267519 +v 0.011573 0.949722 -0.262816 +v -0.012500 1.861312 -0.861312 +v -0.012500 0.138688 -0.861312 +v -0.012500 0.138688 -0.138688 +v -0.012500 1.861312 -0.138688 +v -0.012500 0.733440 -0.267519 +v -0.012500 0.988637 -0.267519 +v -0.012500 1.166712 -0.138688 +v -0.012500 0.655676 -0.138688 +v -0.012500 0.753307 -0.861312 +v -0.011573 0.758010 -0.866015 +v -0.012500 0.753307 -0.267519 +v -0.011573 0.758010 -0.262816 +v -0.012500 0.834000 -0.861312 +v -0.011573 0.829297 -0.866015 +v -0.012500 0.834000 -0.267519 +v -0.011573 0.829297 -0.262816 +v -0.012500 0.873731 -0.861312 +v -0.011573 0.878434 -0.866015 +v -0.012500 0.873731 -0.267519 +v -0.011573 0.878434 -0.262816 +v -0.012500 0.954424 -0.861312 +v -0.011573 0.949722 -0.866015 +v -0.012500 0.954424 -0.267519 +v -0.011573 0.949722 -0.262816 +vt 0.482071 0.316646 +vt 0.492599 0.268801 +vt 0.492599 0.316646 +vt 0.916084 0.591352 +vt 0.951921 0.827876 +vt 0.916084 0.827876 +vt 0.934488 0.940835 +vt 0.928582 0.942288 +vt 0.928948 0.940645 +vt 0.817339 0.635132 +vt 0.651502 0.654242 +vt 0.639564 0.635132 +vt 0.026878 0.462326 +vt 0.005689 0.303540 +vt 0.026878 0.303540 +vt 0.314827 0.781356 +vt 0.296028 0.916817 +vt 0.296028 0.760168 +vt 0.817339 0.616345 +vt 0.314827 0.916817 +vt 0.333950 0.793302 +vt 0.333949 0.916817 +vt 0.736463 0.318882 +vt 0.717341 0.134293 +vt 0.736463 0.122348 +vt 0.594271 0.285212 +vt 0.613394 0.469801 +vt 0.594271 0.481746 +vt 0.542450 0.748788 +vt 0.292649 0.712952 +vt 0.542450 0.712952 +vt 0.046001 0.255490 +vt 0.051973 0.038824 +vt 0.051973 0.255490 +vt 0.619366 0.297157 +vt 0.613394 0.297157 +vt 0.666555 0.886644 +vt 0.652881 0.859517 +vt 0.683660 0.878096 +vt 0.702460 0.859517 +vt 0.051973 0.303540 +vt 0.046001 0.450380 +vt 0.046001 0.303540 +vt 0.680036 0.827073 +vt 0.633746 0.831619 +vt 0.649257 0.784529 +vt 0.690349 0.810970 +vt 0.926611 0.283306 +vt 0.916084 0.257808 +vt 0.936615 0.283306 +vt 0.066659 0.592068 +vt 0.014998 0.608014 +vt 0.005690 0.592068 +vt 0.749656 0.760168 +vt 0.760183 0.793801 +vt 0.749656 0.793801 +vt 0.817339 0.660210 +vt 0.817339 0.654242 +vt 0.026878 0.255490 +vt 0.026878 0.026878 +vt 0.046001 0.038824 +vt 0.029715 0.577350 +vt 0.039207 0.577350 +vt 0.711368 0.134293 +vt 0.717341 0.306937 +vt 0.711368 0.306937 +vt 0.664409 0.764925 +vt 0.659570 0.768426 +vt 0.570526 0.921544 +vt 0.564753 0.923072 +vt 0.564622 0.921479 +vt 0.717217 0.945045 +vt 0.718388 0.927567 +vt 0.718195 0.943853 +vt 0.560421 0.922992 +vt 0.561787 0.940663 +vt 0.560713 0.941820 +vt 0.717245 0.926378 +vt 0.721467 0.925304 +vt 0.727061 0.925087 +vt 0.721087 0.923635 +vt 0.727381 0.923449 +vt 0.564833 0.942859 +vt 0.564468 0.944502 +vt 0.010061 0.896685 +vt 0.015903 0.894826 +vt 0.015602 0.896491 +vt 0.721550 0.944905 +vt 0.721435 0.946497 +vt 0.561410 0.924159 +vt 0.019754 0.916314 +vt 0.018664 0.898655 +vt 0.019754 0.897489 +vt 0.924536 0.920778 +vt 0.925902 0.938449 +vt 0.924828 0.939606 +vt 0.051973 0.274769 +vt 0.046001 0.284261 +vt 0.046001 0.274769 +vt 0.928868 0.920858 +vt 0.925525 0.921945 +vt 0.015696 0.916430 +vt 0.018777 0.915200 +vt 0.010063 0.916440 +vt 0.015871 0.917960 +vt 0.009957 0.918083 +vt 0.903593 0.022721 +vt 0.753601 0.005689 +vt 0.903593 0.005689 +vt 0.592231 0.044914 +vt 0.742222 0.061946 +vt 0.592231 0.061946 +vt 0.753601 0.050849 +vt 0.903593 0.061946 +vt 0.753601 0.061946 +vt 0.692245 0.318882 +vt 0.671057 0.103548 +vt 0.692246 0.122348 +vt 0.674255 0.075714 +vt 0.640621 0.086241 +vt 0.640621 0.075714 +vt 0.526232 0.268801 +vt 0.526232 0.316646 +vt 0.742222 0.016786 +vt 0.592231 0.005689 +vt 0.742222 0.005689 +vt 0.742222 0.033818 +vt 0.592231 0.033818 +vt 0.058485 0.566973 +vt 0.066659 0.572946 +vt 0.058485 0.572946 +vt 0.039207 0.566973 +vt 0.029715 0.572946 +vt 0.029715 0.566973 +vt 0.753601 0.033817 +vt 0.903593 0.033818 +vt 0.727149 0.944802 +vt 0.010436 0.566973 +vt 0.005689 0.572946 +vt 0.005689 0.566973 +vt 0.663468 0.891757 +vt 0.635775 0.868065 +vt 0.570373 0.943049 +vt 0.339922 0.793302 +vt 0.222382 0.836271 +vt 0.211854 0.788427 +vt 0.222382 0.788427 +vt 0.651502 0.660211 +vt 0.817339 0.679320 +vt 0.639564 0.679320 +vt 0.092284 0.303540 +vt 0.071096 0.462326 +vt 0.071096 0.303540 +vt 0.359045 0.781356 +vt 0.377844 0.916817 +vt 0.359045 0.916817 +vt 0.817339 0.698107 +vt 0.619367 0.469801 +vt 0.638489 0.285211 +vt 0.638489 0.481746 +vt 0.633095 0.892296 +vt 0.663874 0.910875 +vt 0.656193 0.936166 +vt 0.713709 0.802712 +vt 0.732509 0.760168 +vt 0.732509 0.802712 +vt 0.682930 0.760168 +vt 0.695188 0.807469 +vt 0.659678 0.266412 +vt 0.014998 0.531905 +vt 0.062842 0.531905 +vt 0.066659 0.547851 +vt 0.553906 0.269791 +vt 0.543379 0.303424 +vt 0.543379 0.269791 +vt 0.056378 0.255490 +vt 0.005690 0.547851 +vt 0.039207 0.562569 +vt 0.730271 0.943568 +vt 0.731254 0.926081 +vt 0.731254 0.944703 +vt 0.573397 0.940891 +vt 0.574481 0.923217 +vt 0.574481 0.942042 +vt 0.570696 0.944663 +vt 0.727318 0.946384 +vt 0.570366 0.923131 +vt 0.007055 0.898880 +vt 0.005689 0.916555 +vt 0.005985 0.897737 +vt 0.937512 0.938677 +vt 0.938596 0.921004 +vt 0.938596 0.939828 +vt 0.009677 0.895087 +vt 0.934481 0.920918 +vt 0.934641 0.919331 +vt 0.934811 0.942449 +vt 0.903593 0.050849 +vt 0.592231 0.016786 +vt 0.592231 0.073325 +vt 0.625864 0.083852 +vt 0.592231 0.083852 +vt 0.256015 0.836271 +vt 0.256015 0.788427 +vt 0.573083 0.266412 +vt 0.852036 0.316991 +vt 0.816199 0.553514 +vt 0.816199 0.316991 +vt 0.928736 0.919265 +vt 0.066659 0.641647 +vt 0.065231 0.645026 +vt 0.062842 0.641647 +vt 0.705838 0.878096 +vt 0.702460 0.878096 +vt 0.674154 0.844929 +vt 0.632689 0.834828 +vt 0.292649 0.762557 +vt 0.292649 0.916817 +vt 0.618390 0.616345 +vt 0.817340 0.612914 +vt 0.005690 0.641647 +vt 0.012609 0.645026 +vt 0.005690 0.645026 +vt 0.677633 0.083852 +vt 0.677633 0.073325 +vt 0.529611 0.319035 +vt 0.757794 0.797179 +vt 0.747266 0.797179 +vt 0.949531 0.587974 +vt 0.951921 0.591352 +vt 0.849647 0.313612 +vt 0.065231 0.494893 +vt 0.066659 0.498272 +vt 0.062842 0.498272 +vt 0.657767 0.939155 +vt 0.672632 0.927510 +vt 0.674207 0.930499 +vt 0.735888 0.802712 +vt 0.735888 0.760168 +vt 0.381223 0.762557 +vt 0.381223 0.916817 +vt 0.620816 0.701538 +vt 0.817340 0.701537 +vt 0.012609 0.494893 +vt 0.005690 0.498272 +vt 0.005690 0.494893 +vt 0.629242 0.075714 +vt 0.629242 0.086241 +vt 0.259394 0.838661 +vt 0.259394 0.786038 +vt 0.551517 0.266412 +vt 0.540990 0.266412 +vt 0.757652 0.103548 +vt 0.757652 0.340071 +vt 0.041596 0.303540 +vt 0.005689 0.255490 +vt 0.005690 0.005690 +vt 0.590499 0.748788 +vt 0.590499 0.712952 +vt 0.071096 0.026878 +vt 0.092284 0.255490 +vt 0.071096 0.255490 +vt 0.051973 0.450380 +vt 0.056378 0.274769 +vt 0.056378 0.284261 +vt 0.770473 0.748789 +vt 0.770473 0.712952 +vt 0.041596 0.284261 +vt 0.041596 0.274769 +vt 0.839729 0.699298 +vt 0.831045 0.699299 +vt 0.831024 0.569515 +vt 0.323689 0.368753 +vt 0.326247 0.513936 +vt 0.323712 0.512813 +vt 0.484577 0.106103 +vt 0.628460 0.106103 +vt 0.628460 0.110917 +vt 0.300041 0.670357 +vt 0.295227 0.670357 +vt 0.295227 0.526483 +vt 0.089048 0.626916 +vt 0.080343 0.497134 +vt 0.089027 0.497132 +vt 0.106172 0.106106 +vt 0.250233 0.114407 +vt 0.281488 0.157609 +vt 0.482071 0.268801 +vt 0.005689 0.483514 +vt 0.292649 0.748789 +vt 0.947142 0.335929 +vt 0.947142 0.337357 +vt 0.936615 0.335929 +vt 0.947142 0.379901 +vt 0.947142 0.576595 +vt 0.916084 0.576595 +vt 0.916084 0.379901 +vt 0.916084 0.337357 +vt 0.926611 0.335929 +vt 0.916084 0.335929 +vt 0.947142 0.276387 +vt 0.947142 0.283306 +vt 0.947142 0.257808 +vt 0.916084 0.283306 +vt 0.916084 0.276387 +vt 0.947142 0.103548 +vt 0.916084 0.103548 +vt 0.062842 0.608014 +vt 0.014998 0.641647 +vt 0.760183 0.760168 +vt 0.041596 0.255490 +vt 0.058485 0.577350 +vt 0.010436 0.577350 +vt 0.010436 0.572946 +vt 0.039207 0.572946 +vt 0.051973 0.284261 +vt 0.753601 0.022721 +vt 0.742222 0.044914 +vt 0.671057 0.340071 +vt 0.674255 0.086241 +vt 0.066659 0.566973 +vt 0.632689 0.873178 +vt 0.339922 0.916817 +vt 0.211854 0.836271 +vt 0.092284 0.483514 +vt 0.377844 0.760168 +vt 0.618390 0.698107 +vt 0.659678 0.502935 +vt 0.014998 0.498272 +vt 0.553906 0.303424 +vt 0.058485 0.562569 +vt 0.029715 0.562569 +vt 0.010436 0.562569 +vt 0.730133 0.927265 +vt 0.573497 0.924351 +vt 0.006685 0.915371 +vt 0.937612 0.922137 +vt 0.625864 0.073325 +vt 0.573082 0.502935 +vt 0.852036 0.553514 +vt 0.066659 0.645026 +vt 0.705838 0.859517 +vt 0.673097 0.848138 +vt 0.620778 0.612914 +vt 0.529611 0.266412 +vt 0.918473 0.587974 +vt 0.818588 0.313612 +vt 0.066659 0.494893 +vt 0.092284 0.005689 +vt 0.056378 0.303540 +vt 0.839707 0.569514 +vt 0.842033 0.567275 +vt 0.842033 0.700351 +vt 0.828719 0.701538 +vt 0.828719 0.568462 +vt 0.103692 0.512849 +vt 0.272181 0.337506 +vt 0.103663 0.337533 +vt 0.315389 0.368754 +vt 0.326247 0.366244 +vt 0.659678 0.129760 +vt 0.659678 0.255033 +vt 0.484577 0.255033 +vt 0.482071 0.103548 +vt 0.629582 0.103572 +vt 0.444147 0.526484 +vt 0.444147 0.701573 +vt 0.318883 0.701573 +vt 0.292649 0.672839 +vt 0.292673 0.525315 +vt 0.080364 0.626918 +vt 0.078038 0.629157 +vt 0.078038 0.496080 +vt 0.091352 0.494893 +vt 0.091352 0.627970 +vt 0.281488 0.326127 +vt 0.106172 0.326127 +vt 0.103663 0.103548 +vt 0.251356 0.103572 +vt 0.250233 0.106106 +vt 0.030383 0.669552 +vt 0.079577 0.666265 +vt 0.079577 0.669552 +vt 0.030383 0.666265 +vt 0.079577 0.662978 +vt 0.030383 0.662978 +vt 0.079577 0.659692 +vt 0.030383 0.659692 +vt 0.079577 0.656405 +vt 0.030383 0.676126 +vt 0.079577 0.672839 +vt 0.079577 0.676126 +vt 0.030383 0.672839 +vt 0.882594 0.884444 +vt 0.940438 0.887259 +vt 0.882594 0.887259 +vt 0.949344 0.898980 +vt 0.940438 0.896165 +vt 0.949344 0.896165 +vt 0.940438 0.898980 +vt 0.882594 0.896165 +vt 0.882594 0.898980 +vt 0.873687 0.896165 +vt 0.940438 0.907886 +vt 0.897130 0.806314 +vt 0.894315 0.864159 +vt 0.894315 0.806314 +vt 0.882594 0.873065 +vt 0.885409 0.864159 +vt 0.885409 0.873065 +vt 0.882594 0.864159 +vt 0.885409 0.806314 +vt 0.882594 0.806314 +vt 0.885409 0.797408 +vt 0.873687 0.864159 +vt 0.833701 0.900185 +vt 0.838381 0.927396 +vt 0.833701 0.927396 +vt 0.838381 0.900185 +vt 0.843061 0.927396 +vt 0.843061 0.900185 +vt 0.847741 0.927396 +vt 0.847741 0.900185 +vt 0.852421 0.927396 +vt 0.852421 0.900185 +vt 0.857101 0.927396 +vt 0.829021 0.900185 +vt 0.829021 0.927396 +vt 0.030383 0.656405 +vt 0.940438 0.884444 +vt 0.873687 0.898980 +vt 0.882594 0.907886 +vt 0.897130 0.864159 +vt 0.882594 0.797408 +vt 0.873687 0.806314 +vt 0.857101 0.900185 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.6247 0.0000 -0.7809 +vn 1.0000 0.0000 0.0000 +vn 0.6247 0.7809 0.0000 +vn 0.6247 -0.7809 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.3821 -0.7912 -0.4776 +vn 0.5439 0.4919 -0.6799 +vn 0.6247 0.0000 0.7809 +vn 0.0000 0.5862 -0.8102 +vn 0.0000 -0.7071 0.7071 +vn -0.5602 0.0000 -0.8283 +vn -0.5602 0.0000 0.8283 +vn 0.4637 0.6689 -0.5810 +vn 0.0000 0.7071 -0.7071 +vn 0.4634 0.6706 0.5793 +vn 0.0000 0.7071 0.7071 +vn 0.4634 -0.6706 -0.5792 +vn 0.4637 -0.6689 0.5810 +vn 0.4634 -0.6706 -0.5793 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.8561 -0.5168 +vn -0.6247 0.0000 -0.7809 +vn -0.6247 0.7809 0.0000 +vn -0.6247 -0.7809 0.0000 +vn -0.3821 -0.7912 -0.4776 +vn -0.5439 0.4919 -0.6799 +vn -0.6247 0.0000 0.7809 +vn 0.5602 0.0000 -0.8283 +vn 0.5602 0.0000 0.8283 +vn -0.4634 0.6706 -0.5793 +vn -0.4634 0.6706 0.5793 +vn -0.4634 -0.6706 -0.5792 +vn -0.4634 -0.6706 0.5792 +vn -0.4634 -0.6706 0.5793 +vn -0.4634 -0.6706 -0.5793 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.9811 -0.1935 0.0000 +vn 0.4634 0.6706 -0.5793 +vn 0.4637 0.6689 0.5810 +vn 0.4637 -0.6689 -0.5810 +vn 0.4634 -0.6706 0.5792 +vn -0.5603 0.0000 -0.8283 +vn 0.4634 -0.6706 0.5793 +vn -0.4637 0.6689 -0.5810 +vn -0.4637 0.6689 0.5810 +vn -0.4637 -0.6689 -0.5810 +vn -0.4637 -0.6689 0.5810 +vn 0.5603 0.0000 -0.8283 +vn 0.9811 0.1935 -0.0000 +vn -0.9811 0.1935 0.0000 +vn -0.9811 -0.1935 -0.0000 +vn 0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 0.5000 +vn -0.8660 0.0000 0.5000 +vn -0.8660 0.0000 -0.5000 +vn -0.5773 0.5773 0.5773 +vn -0.5773 -0.5773 -0.5773 +vn -0.5773 -0.5773 0.5773 +vn -0.5773 0.5773 -0.5773 +vn 0.5773 -0.5773 -0.5773 +vn 0.5773 0.5773 -0.5773 +vn 0.5773 -0.5773 0.5773 +vn 0.5773 0.5773 0.5773 +s off +f 321/437/69 262/438/69 261/439/69 +f 408/440/70 267/441/70 329/442/70 +f 374/443/71 311/444/71 312/445/71 +f 276/446/72 272/447/72 266/448/72 +f 263/449/73 430/450/73 432/451/73 +f 265/452/73 390/453/73 386/454/73 +f 266/448/73 392/455/73 276/446/73 +f 275/456/72 271/457/72 278/458/72 +f 263/459/74 271/460/74 265/461/74 +f 266/462/75 269/463/75 264/464/75 +f 427/465/76 267/466/76 429/467/76 +f 309/468/69 331/469/69 371/470/69 +f 334/471/77 269/463/77 272/472/77 +f 278/473/78 279/474/78 275/475/78 +f 394/476/73 275/475/73 279/474/73 +f 351/477/69 270/478/69 289/479/69 +f 276/480/73 396/481/73 280/482/73 +f 280/482/79 277/483/79 276/480/79 +f 423/484/69 409/485/69 403/486/69 +f 280/487/73 321/488/73 279/489/73 +f 262/490/77 398/491/77 402/492/77 +f 339/493/76 272/447/76 277/494/76 +f 431/495/80 264/496/80 269/497/80 +f 279/489/72 287/498/72 297/499/72 +f 333/500/70 270/501/70 332/502/70 +f 336/503/81 277/483/81 274/504/81 +f 355/505/82 294/506/82 293/507/82 +f 287/508/83 282/509/83 288/510/83 +f 285/511/84 284/512/84 283/513/84 +f 281/514/85 292/515/85 282/509/85 +f 354/516/86 291/517/86 353/518/86 +f 283/513/87 290/519/87 289/520/87 +f 368/521/88 305/522/88 306/523/88 +f 287/508/89 296/524/89 295/525/89 +f 285/511/90 294/506/90 286/526/90 +f 301/527/84 300/528/84 299/529/84 +f 297/530/83 304/531/83 303/532/83 +f 367/533/69 293/534/69 305/535/69 +f 299/529/87 306/523/87 305/522/87 +f 297/530/85 308/536/85 298/537/85 +f 301/527/90 310/538/90 302/539/90 +f 372/540/82 309/541/82 371/542/82 +f 303/532/91 312/445/91 311/444/91 +f 316/543/73 313/544/73 315/545/73 +f 320/546/73 317/547/73 319/548/73 +f 375/549/77 315/550/77 313/551/77 +f 325/552/92 406/553/92 327/554/92 +f 404/555/70 321/556/70 261/557/70 +f 261/439/73 402/558/73 404/559/73 +f 379/560/77 319/561/77 317/562/77 +f 380/563/70 320/546/70 382/564/70 +f 373/565/76 274/566/76 311/567/76 +f 369/568/76 295/569/76 357/570/76 +f 376/571/70 316/543/70 378/572/70 +f 358/573/71 295/525/71 296/524/71 +f 353/574/76 273/575/76 335/576/76 +f 340/577/93 273/578/93 278/473/93 +f 352/579/88 289/520/88 290/519/88 +f 333/580/76 278/458/76 271/457/76 +f 324/581/69 383/582/69 323/583/69 +f 334/584/94 338/585/94 328/586/94 +f 428/587/92 325/588/92 426/589/92 +f 327/590/92 410/591/92 337/592/92 +f 412/593/92 328/586/92 338/585/92 +f 337/592/94 333/580/94 327/590/94 +f 333/500/95 325/552/95 327/554/95 +f 331/594/96 328/595/96 326/596/96 +f 341/597/97 340/577/97 337/598/97 +f 337/598/92 414/599/92 341/597/92 +f 338/600/92 416/601/92 412/602/92 +f 342/603/98 339/604/98 336/503/98 +f 408/605/92 326/596/92 328/595/92 +f 383/606/92 384/607/92 342/608/92 +f 418/609/77 324/610/77 422/611/77 +f 363/612/99 371/470/99 331/469/99 +f 341/613/94 342/608/94 359/614/94 +f 350/615/100 343/616/100 349/617/100 +f 346/618/101 347/619/101 345/620/101 +f 343/616/102 354/516/102 353/518/102 +f 352/579/103 345/620/103 351/621/103 +f 358/573/104 349/617/104 357/622/104 +f 347/619/105 356/623/105 355/505/105 +f 362/624/101 363/625/101 361/626/101 +f 366/627/100 359/628/100 365/629/100 +f 368/521/103 361/626/103 367/630/103 +f 359/628/102 370/631/102 369/632/102 +f 363/625/106 372/540/106 371/542/106 +f 374/443/107 365/629/107 373/633/107 +f 375/549/92 378/572/92 377/634/92 +f 379/560/92 382/564/92 381/635/92 +f 383/636/70 424/637/70 323/638/70 +f 422/639/92 323/583/92 424/640/92 +f 264/464/73 388/641/73 266/462/73 +f 406/642/77 268/643/77 386/644/77 +f 370/631/86 307/645/86 369/632/86 +f 396/646/108 397/647/108 398/648/108 +f 394/476/108 389/649/108 390/650/108 +f 392/651/108 395/652/108 396/481/108 +f 385/653/108 390/453/108 389/654/108 +f 388/655/108 391/656/108 392/455/108 +f 394/657/108 399/658/108 393/659/108 +f 399/660/88 404/555/88 403/661/88 +f 402/558/108 403/662/108 404/559/108 +f 402/492/82 397/663/82 401/664/82 +f 408/440/70 387/665/70 388/666/70 +f 386/644/77 405/667/77 406/642/77 +f 417/668/109 416/669/109 418/670/109 +f 413/671/109 410/672/109 409/673/109 +f 411/674/109 416/601/109 415/675/109 +f 410/591/109 405/676/109 409/677/109 +f 407/678/109 412/593/109 411/679/109 +f 419/680/109 414/681/109 413/682/109 +f 424/637/88 419/683/88 423/684/88 +f 421/685/109 424/640/109 423/686/109 +f 417/687/82 422/611/82 421/688/82 +f 263/459/73 386/689/73 268/690/73 +f 283/691/80 289/479/80 270/478/80 +f 264/496/73 429/692/73 267/693/73 +f 428/694/76 429/467/76 430/695/76 +f 326/696/92 427/697/92 425/698/92 +f 426/589/99 325/588/99 332/699/99 +f 361/700/99 425/698/99 347/701/99 +f 427/697/92 426/589/92 425/698/92 +f 330/702/76 430/695/76 268/703/76 +f 432/451/73 429/692/73 431/495/73 +f 285/704/80 431/495/80 299/705/80 +f 485/706/73 489/707/73 491/708/73 +f 495/709/110 494/710/110 493/711/110 +f 481/712/73 483/713/73 477/714/73 +f 501/715/92 507/716/92 505/717/92 +f 511/718/92 513/719/92 509/720/92 +f 517/721/92 502/722/92 503/723/92 +f 321/437/69 322/724/69 262/438/69 +f 408/440/70 388/666/70 267/441/70 +f 374/443/71 373/633/71 311/444/71 +f 276/446/72 277/494/72 272/447/72 +f 263/449/73 268/725/73 430/450/73 +f 265/452/73 275/456/73 390/453/73 +f 266/448/73 388/655/73 392/455/73 +f 275/456/72 265/452/72 271/457/72 +f 263/459/74 270/501/74 271/460/74 +f 266/462/75 272/472/75 269/463/75 +f 427/465/76 329/726/76 267/466/76 +f 309/468/69 269/497/69 331/469/69 +f 334/471/77 331/594/77 269/463/77 +f 278/473/78 273/578/78 279/474/78 +f 394/476/73 390/650/73 275/475/73 +f 351/477/69 332/699/69 270/478/69 +f 276/480/73 392/651/73 396/481/73 +f 280/482/79 274/504/79 277/483/79 +f 397/727/69 395/728/69 401/729/69 +f 395/728/69 391/730/69 401/729/69 +f 391/730/69 387/731/69 407/732/69 +f 411/733/69 415/734/69 421/735/69 +f 415/734/69 417/736/69 421/735/69 +f 391/730/69 407/732/69 411/733/69 +f 393/737/69 399/738/69 403/486/69 +f 401/729/69 391/730/69 411/733/69 +f 389/739/69 393/737/69 403/486/69 +f 423/484/69 419/740/69 413/741/69 +f 401/729/69 411/733/69 421/735/69 +f 423/484/69 413/741/69 409/485/69 +f 401/729/69 421/735/69 423/484/69 +f 385/742/69 389/739/69 405/743/69 +f 389/739/69 403/486/69 409/485/69 +f 405/743/69 389/739/69 409/485/69 +f 403/486/69 401/729/69 423/484/69 +f 280/487/73 396/646/73 322/744/73 +f 396/646/73 398/648/73 322/744/73 +f 400/745/73 394/657/73 321/488/73 +f 394/657/73 279/489/73 321/488/73 +f 280/487/73 322/744/73 321/488/73 +f 262/490/77 322/746/77 398/491/77 +f 339/493/76 334/584/76 272/447/76 +f 309/468/80 301/747/80 269/497/80 +f 301/747/80 431/495/80 269/497/80 +f 303/748/72 311/567/72 274/566/72 +f 279/489/72 273/575/72 281/749/72 +f 273/575/72 291/750/72 281/749/72 +f 303/748/72 274/566/72 280/487/72 +f 295/569/72 307/751/72 297/499/72 +f 297/499/72 303/748/72 280/487/72 +f 280/487/72 279/489/72 297/499/72 +f 279/489/72 281/749/72 287/498/72 +f 287/498/72 295/569/72 297/499/72 +f 333/500/70 271/460/70 270/501/70 +f 336/503/81 339/604/81 277/483/81 +f 355/505/82 356/623/82 294/506/82 +f 287/508/83 281/514/83 282/509/83 +f 285/511/84 286/526/84 284/512/84 +f 281/514/111 291/517/111 292/515/111 +f 354/516/86 292/515/86 291/517/86 +f 283/513/112 284/512/112 290/519/112 +f 368/521/88 367/630/88 305/522/88 +f 287/508/113 288/510/113 296/524/113 +f 285/511/114 293/507/114 294/506/114 +f 301/527/84 302/539/84 300/528/84 +f 297/530/115 298/537/115 304/531/115 +f 367/533/69 355/752/69 293/534/69 +f 299/529/112 300/528/112 306/523/112 +f 297/530/111 307/645/111 308/536/111 +f 301/527/116 309/541/116 310/538/116 +f 372/540/82 310/538/82 309/541/82 +f 303/532/113 304/531/113 312/445/113 +f 316/543/73 314/753/73 313/544/73 +f 320/546/73 318/754/73 317/547/73 +f 375/549/77 377/634/77 315/550/77 +f 325/552/92 330/755/92 406/553/92 +f 404/555/70 400/756/70 321/556/70 +f 261/439/73 262/438/73 402/558/73 +f 379/560/77 381/635/77 319/561/77 +f 380/563/70 318/754/70 320/546/70 +f 373/565/76 336/757/76 274/566/76 +f 369/568/76 307/751/76 295/569/76 +f 376/571/70 314/753/70 316/543/70 +f 358/573/71 357/622/71 295/525/71 +f 353/574/76 291/750/76 273/575/76 +f 340/577/93 335/758/93 273/578/93 +f 352/579/88 351/621/88 289/520/88 +f 333/580/76 340/759/76 278/458/76 +f 324/581/69 384/760/69 383/582/69 +f 334/584/94 339/493/94 338/585/94 +f 428/587/92 330/761/92 325/588/92 +f 327/590/92 406/762/92 410/591/92 +f 412/593/92 408/763/92 328/586/92 +f 337/592/94 340/759/94 333/580/94 +f 333/500/95 332/502/95 325/552/95 +f 331/594/96 334/471/96 328/595/96 +f 341/597/97 335/758/97 340/577/97 +f 337/598/92 410/672/92 414/599/92 +f 338/600/92 342/603/92 416/601/92 +f 342/603/98 338/600/98 339/604/98 +f 408/605/92 329/764/92 326/596/92 +f 341/613/92 414/681/92 383/606/92 +f 414/681/92 420/765/92 383/606/92 +f 418/670/92 416/669/92 384/607/92 +f 416/669/92 342/608/92 384/607/92 +f 341/613/92 383/606/92 342/608/92 +f 418/609/77 384/766/77 324/610/77 +f 326/696/99 425/698/99 331/469/99 +f 425/698/99 363/612/99 331/469/99 +f 336/757/94 373/565/94 365/767/94 +f 359/614/94 369/568/94 357/570/94 +f 342/608/94 336/757/94 365/767/94 +f 359/614/94 357/570/94 349/768/94 +f 342/608/94 365/767/94 359/614/94 +f 353/574/94 335/576/94 343/769/94 +f 335/576/94 341/613/94 343/769/94 +f 359/614/94 349/768/94 341/613/94 +f 349/768/94 343/769/94 341/613/94 +f 350/615/100 344/770/100 343/616/100 +f 346/618/101 348/771/101 347/619/101 +f 343/616/117 344/770/117 354/516/117 +f 352/579/118 346/618/118 345/620/118 +f 358/573/119 350/615/119 349/617/119 +f 347/619/120 348/771/120 356/623/120 +f 362/624/101 364/772/101 363/625/101 +f 366/627/121 360/773/121 359/628/121 +f 368/521/118 362/624/118 361/626/118 +f 359/628/117 360/773/117 370/631/117 +f 363/625/120 364/772/120 372/540/120 +f 374/443/119 366/627/119 365/629/119 +f 375/549/92 376/571/92 378/572/92 +f 379/560/92 380/563/92 382/564/92 +f 383/636/70 420/774/70 424/637/70 +f 422/639/92 324/581/92 323/583/92 +f 264/464/73 267/775/73 388/641/73 +f 406/642/77 330/776/77 268/643/77 +f 370/631/86 308/536/86 307/645/86 +f 396/646/108 395/777/108 397/647/108 +f 394/476/108 393/778/108 389/649/108 +f 392/651/108 391/779/108 395/652/108 +f 385/653/108 386/454/108 390/453/108 +f 388/655/108 387/780/108 391/656/108 +f 394/657/108 400/745/108 399/658/108 +f 399/660/88 400/756/88 404/555/88 +f 402/558/108 401/781/108 403/662/108 +f 402/492/82 398/491/82 397/663/82 +f 408/440/70 407/782/70 387/665/70 +f 386/644/77 385/783/77 405/667/77 +f 417/668/109 415/784/109 416/669/109 +f 413/671/109 414/599/109 410/672/109 +f 411/674/109 412/602/109 416/601/109 +f 410/591/109 406/762/109 405/676/109 +f 407/678/109 408/763/109 412/593/109 +f 419/680/109 420/765/109 414/681/109 +f 424/637/88 420/774/88 419/683/88 +f 421/685/109 422/639/109 424/640/109 +f 417/687/82 418/609/82 422/611/82 +f 263/459/73 265/461/73 386/689/73 +f 263/449/80 432/451/80 270/478/80 +f 432/451/80 283/691/80 270/478/80 +f 264/496/73 431/495/73 429/692/73 +f 428/694/76 427/465/76 429/467/76 +f 326/696/92 329/785/92 427/697/92 +f 351/477/99 345/786/99 332/699/99 +f 345/786/99 426/589/99 332/699/99 +f 355/752/99 367/533/99 361/700/99 +f 361/700/99 363/612/99 425/698/99 +f 425/698/99 426/589/99 347/701/99 +f 426/589/99 345/786/99 347/701/99 +f 347/701/99 355/752/99 361/700/99 +f 427/697/92 428/587/92 426/589/92 +f 330/702/76 428/694/76 430/695/76 +f 432/451/73 430/450/73 429/692/73 +f 299/705/80 305/535/80 293/534/80 +f 285/704/80 283/691/80 432/451/80 +f 299/705/80 293/534/80 285/704/80 +f 431/495/80 301/747/80 299/705/80 +f 285/704/80 432/451/80 431/495/80 +f 487/787/110 488/788/110 485/706/110 +f 488/788/110 486/789/110 485/706/110 +f 490/790/122 492/791/122 491/708/122 +f 491/708/73 487/787/73 485/706/73 +f 489/707/122 490/790/122 491/708/122 +f 493/711/73 473/792/73 479/793/73 +f 473/792/73 476/794/73 479/793/73 +f 493/711/73 479/793/73 478/795/73 +f 495/709/110 496/796/110 494/710/110 +f 478/795/73 495/709/73 493/711/73 +f 480/797/73 475/798/73 477/714/73 +f 475/798/73 474/799/73 477/714/73 +f 481/712/122 482/800/122 484/801/122 +f 474/799/73 481/712/73 477/714/73 +f 481/712/122 484/801/122 483/713/122 +f 498/802/92 499/803/92 501/715/92 +f 499/803/92 504/804/92 501/715/92 +f 508/805/123 506/806/123 505/717/123 +f 505/717/92 498/802/92 501/715/92 +f 507/716/123 508/805/123 505/717/123 +f 515/807/123 516/808/123 513/719/123 +f 516/808/123 514/809/123 513/719/123 +f 510/810/124 512/811/124 511/718/124 +f 511/718/92 515/807/92 513/719/92 +f 509/720/124 510/810/124 511/718/124 +f 500/812/92 497/813/92 503/723/92 +f 497/813/92 517/721/92 503/723/92 +f 517/721/124 518/814/124 520/815/124 +f 517/721/124 520/815/124 519/816/124 +f 517/721/92 519/816/92 502/722/92 +s 1 +f 434/817/76 435/818/125 433/819/76 +f 436/820/125 437/821/126 435/818/125 +f 438/822/126 439/823/69 437/821/126 +f 440/824/69 441/825/127 439/823/69 +f 442/826/127 443/827/128 441/828/127 +f 444/829/128 433/819/76 443/827/128 +f 446/830/129 447/831/130 445/832/131 +f 448/833/132 451/834/133 447/835/130 +f 452/836/134 449/837/135 451/834/133 +f 450/838/136 445/839/131 449/837/135 +f 451/834/133 445/832/131 447/831/130 +f 448/840/132 450/838/136 452/836/134 +f 454/841/129 455/842/130 453/843/131 +f 456/844/132 459/845/133 455/846/130 +f 460/847/134 457/848/135 459/845/133 +f 458/849/136 453/850/131 457/848/135 +f 459/845/133 453/843/131 455/842/130 +f 456/851/132 458/849/136 460/847/134 +f 462/852/76 463/853/125 461/854/76 +f 464/855/125 465/856/126 463/853/125 +f 466/857/126 467/858/69 465/856/126 +f 468/859/69 469/860/127 467/858/69 +f 470/861/127 471/862/128 469/860/127 +f 472/863/128 461/854/76 471/864/128 +f 434/817/76 436/820/125 435/818/125 +f 436/820/125 438/822/126 437/821/126 +f 438/822/126 440/824/69 439/823/69 +f 440/824/69 442/865/127 441/825/127 +f 442/826/127 444/829/128 443/827/128 +f 444/829/128 434/817/76 433/819/76 +f 446/830/129 448/866/132 447/831/130 +f 448/833/132 452/836/134 451/834/133 +f 452/836/134 450/838/136 449/837/135 +f 450/838/136 446/867/129 445/839/131 +f 451/834/133 449/837/135 445/832/131 +f 448/840/132 446/868/129 450/838/136 +f 454/841/129 456/869/132 455/842/130 +f 456/844/132 460/847/134 459/845/133 +f 460/847/134 458/849/136 457/848/135 +f 458/849/136 454/870/129 453/850/131 +f 459/845/133 457/848/135 453/843/131 +f 456/851/132 454/871/129 458/849/136 +f 462/852/76 464/855/125 463/853/125 +f 464/855/125 466/857/126 465/856/126 +f 466/857/126 468/859/69 467/858/69 +f 468/859/69 470/861/127 469/860/127 +f 470/861/127 472/872/128 471/862/128 +f 472/863/128 462/852/76 461/854/76 diff --git a/src/main/resources/assets/hbm/models/doors/round_airlock_door.obj b/src/main/resources/assets/hbm/models/doors/round_airlock_door.obj new file mode 100644 index 000000000..1a9ada200 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/round_airlock_door.obj @@ -0,0 +1,3160 @@ +# Blender v2.92.0 OBJ File: 'airlock.blend' +# www.blender.org +o frame +v -0.500000 0.000000 2.000000 +v -0.500000 4.000000 2.000000 +v -0.500000 0.000000 -2.000000 +v -0.500000 4.000000 -2.000000 +v 0.500000 0.000000 2.000000 +v 0.500000 4.000000 2.000000 +v 0.500000 0.000000 -2.000000 +v 0.500000 4.000000 -2.000000 +v 0.500000 1.990837 -1.903622 +v -0.500000 1.990837 -1.903622 +v 0.500000 2.466150 -1.706741 +v -0.500000 2.466150 -1.706741 +v 0.500000 1.480763 -1.970774 +v -0.500000 1.480763 -1.970774 +v 0.500000 0.970688 -1.903621 +v -0.500000 0.970688 -1.903622 +v 0.500000 0.495375 -1.706740 +v -0.500000 0.495375 -1.706740 +v 0.500000 2.874311 -1.393548 +v -0.500000 2.874311 -1.393548 +v 0.500000 0.056024 -1.443547 +v -0.500000 0.056024 -1.443547 +v 0.500000 3.187504 -0.985387 +v -0.500000 3.187504 -0.985387 +v 0.500000 0.056026 1.443549 +v -0.500000 0.056026 1.443549 +v 0.500000 3.384384 -0.510074 +v -0.500000 3.384384 -0.510074 +v 0.500000 3.451537 -0.000000 +v -0.500000 3.451537 -0.000000 +v 0.500000 3.384385 0.510074 +v -0.500000 3.384385 0.510074 +v 0.500000 3.187504 0.985387 +v -0.500000 3.187504 0.985387 +v 0.500000 2.874311 1.393548 +v -0.500000 2.874311 1.393548 +v 0.500000 2.466151 1.706741 +v -0.500000 2.466151 1.706741 +v 0.500000 1.990837 1.903622 +v -0.500000 1.990837 1.903622 +v 0.500000 1.480764 1.970774 +v -0.500000 1.480763 1.970774 +v 0.500000 0.970690 1.903622 +v -0.500000 0.970690 1.903622 +v 0.500000 0.495377 1.706741 +v -0.500000 0.495376 1.706741 +v -0.533603 1.476714 -2.000000 +v -0.533603 1.994352 -1.931852 +v -0.533603 2.476714 -1.732051 +v -0.533603 2.890928 -1.414214 +v -0.533603 3.208765 -1.000000 +v -0.533603 3.408566 -0.517638 +v -0.533603 3.476714 -0.000000 +v -0.533603 3.408566 0.517638 +v -0.533603 3.208765 1.000000 +v -0.533603 2.890928 1.414213 +v -0.533603 2.476715 1.732051 +v -0.533603 1.994353 1.931852 +v -0.533603 1.476715 2.000000 +v -0.533603 0.959077 1.931852 +v -0.533603 0.476715 1.732051 +v -0.533603 0.062501 1.414214 +v -0.533603 0.062500 -1.414213 +v -0.533603 0.476713 -1.732050 +v -0.533603 0.959075 -1.931851 +v 0.533603 1.476714 -2.000000 +v 0.533603 1.994352 -1.931852 +v 0.533603 2.476714 -1.732051 +v 0.533603 2.890928 -1.414214 +v 0.533603 3.208765 -1.000000 +v 0.533603 3.408566 -0.517638 +v 0.533603 3.476714 -0.000000 +v 0.533603 3.408566 0.517638 +v 0.533603 3.208765 1.000000 +v 0.533603 2.890928 1.414213 +v 0.533603 2.476715 1.732051 +v 0.533603 1.994353 1.931852 +v 0.533603 1.476715 2.000000 +v 0.533603 0.959077 1.931852 +v 0.533603 0.476715 1.732051 +v 0.533603 0.062501 1.414214 +v 0.533603 0.062500 -1.414213 +v 0.533603 0.476713 -1.732050 +v 0.533603 0.959074 -1.931851 +v -0.533603 1.970088 -1.841296 +v -0.533603 1.476714 -1.906250 +v -0.533603 2.429839 -1.650861 +v -0.533603 2.824636 -1.347922 +v -0.533603 3.127575 -0.953125 +v -0.533603 3.318010 -0.493374 +v -0.533603 3.382964 -0.000000 +v -0.533603 3.318010 0.493374 +v -0.533603 3.127575 0.953125 +v -0.533603 2.824636 1.347922 +v -0.533603 2.429840 1.650861 +v -0.533603 1.970088 1.841296 +v -0.533603 1.476715 1.906250 +v -0.533603 0.983341 1.841296 +v -0.533603 0.523590 1.650861 +v -0.533603 0.523588 -1.650860 +v -0.533603 0.983339 -1.841296 +v 0.533603 1.970088 -1.841296 +v 0.533603 1.476714 -1.906250 +v 0.533603 2.429839 -1.650861 +v 0.533603 2.824636 -1.347922 +v 0.533603 3.127575 -0.953125 +v 0.533603 3.318010 -0.493374 +v 0.533603 3.382964 -0.000000 +v 0.533603 3.318010 0.493374 +v 0.533603 3.127575 0.953125 +v 0.533603 2.824637 1.347922 +v 0.533603 2.429840 1.650861 +v 0.533603 1.970088 1.841296 +v 0.533603 1.476715 1.906250 +v 0.533603 0.983341 1.841296 +v 0.533603 0.523590 1.650861 +v 0.533603 0.523588 -1.650860 +v 0.533603 0.983339 -1.841296 +v 0.533603 -0.000000 -1.414213 +v -0.533603 -0.000000 -1.414213 +v -0.533603 0.000001 1.414214 +v 0.533603 0.000001 1.414214 +v 0.166667 0.062500 -1.414213 +v -0.166667 0.062500 -1.414213 +v -0.166667 0.062501 1.414214 +v 0.166667 0.062501 1.414214 +v 0.166667 3.382964 -0.000000 +v -0.166667 3.382964 -0.000000 +v -0.166667 3.318010 0.493374 +v 0.166667 3.318010 0.493374 +v -0.166667 0.523588 -1.650860 +v 0.166667 0.523588 -1.650860 +v 0.166667 0.523590 1.650861 +v -0.166667 0.523590 1.650861 +v -0.166667 3.127575 0.953125 +v 0.166667 3.127575 0.953125 +v -0.166667 0.983339 -1.841296 +v 0.166667 0.983339 -1.841296 +v 0.166667 1.476714 -1.906250 +v -0.166667 1.476714 -1.906250 +v -0.166667 1.970088 -1.841296 +v 0.166667 1.970088 -1.841296 +v -0.166667 2.824637 1.347922 +v 0.166667 2.824637 1.347922 +v -0.166667 2.429839 -1.650861 +v 0.166667 2.429839 -1.650861 +v -0.166667 2.429840 1.650861 +v 0.166667 2.429840 1.650861 +v -0.166667 2.824636 -1.347922 +v 0.166667 2.824636 -1.347922 +v -0.166667 1.970088 1.841296 +v 0.166667 1.970088 1.841296 +v -0.166667 3.127575 -0.953125 +v 0.166667 3.127575 -0.953125 +v -0.166667 1.476715 1.906250 +v 0.166667 1.476715 1.906250 +v -0.166667 3.318010 -0.493374 +v 0.166667 3.318010 -0.493374 +v -0.166667 0.983341 1.841296 +v 0.166667 0.983341 1.841296 +v 0.500000 -0.000000 -1.414213 +v -0.500000 -0.000000 -1.414213 +v -0.500000 0.000001 1.414214 +v 0.500000 0.000001 1.414214 +v -0.166667 0.048000 1.923243 +v -0.166667 0.047998 -1.923243 +v 0.166667 0.048000 1.923243 +v 0.166667 0.047998 -1.923243 +v -0.166667 0.978943 1.923243 +v -0.166667 0.516453 1.923243 +v 0.166667 0.978943 1.923243 +v 0.166667 0.516453 1.923243 +v -0.166667 3.334424 -1.923243 +v -0.166667 3.399957 -0.000000 +v 0.166667 3.334424 -1.923243 +v 0.166667 3.399957 -0.000000 +v -0.166667 1.476715 1.923243 +v 0.166667 1.476715 1.923243 +v -0.166667 3.142291 -1.923243 +v 0.166667 3.142291 -1.923243 +v -0.166667 1.974486 1.923243 +v 0.166667 1.974486 1.923243 +v -0.166667 2.836652 -1.923243 +v 0.166667 2.836652 -1.923243 +v -0.166667 2.438336 1.923243 +v 0.166667 2.438336 1.923243 +v -0.166667 2.438335 -1.923243 +v 0.166667 2.438335 -1.923243 +v -0.166667 2.836652 1.923243 +v 0.166667 2.836653 1.923243 +v -0.166667 1.974486 -1.923243 +v 0.166667 1.974486 -1.923243 +v -0.166667 0.978941 -1.923243 +v -0.166667 1.476714 -1.923243 +v 0.166667 0.978941 -1.923243 +v 0.166667 1.476714 -1.923243 +v -0.166667 3.142291 1.923243 +v 0.166667 3.142291 1.923243 +v -0.166667 0.516451 -1.923243 +v 0.166667 0.516451 -1.923243 +v -0.166667 3.334424 1.923243 +v 0.166667 3.334424 1.923243 +v 0.500000 0.476715 1.732051 +v 0.500000 0.959077 1.931852 +v 0.500000 1.476715 2.000000 +v 0.500000 1.994353 1.931852 +v 0.500000 2.476715 1.732051 +v 0.500000 2.890928 1.414213 +v 0.500000 3.208765 1.000000 +v 0.500000 3.408566 0.517638 +v 0.500000 3.476714 -0.000000 +v 0.500000 3.408566 -0.517638 +v 0.500000 3.208765 -1.000000 +v 0.500000 2.890928 -1.414214 +v 0.500000 2.476714 -1.732051 +v 0.500000 1.994352 -1.931852 +v 0.500000 1.476714 -2.000000 +v 0.500000 0.959074 -1.931851 +v 0.500000 0.476713 -1.732050 +v -0.500000 0.476715 1.732051 +v -0.500000 0.959077 1.931852 +v -0.500000 1.476715 2.000000 +v -0.500000 1.994353 1.931852 +v -0.500000 2.476715 1.732051 +v -0.500000 2.890928 1.414213 +v -0.500000 3.208765 1.000000 +v -0.500000 3.408566 0.517638 +v -0.500000 3.476714 -0.000000 +v -0.500000 3.408566 -0.517638 +v -0.500000 3.208765 -1.000000 +v -0.500000 2.890928 -1.414214 +v -0.500000 2.476714 -1.732051 +v -0.500000 1.994352 -1.931852 +v -0.500000 1.476714 -2.000000 +v -0.500000 0.959075 -1.931851 +v -0.500000 0.476713 -1.732050 +vt 0.068980 0.323539 +vt 0.067373 0.076025 +vt 0.101951 0.199335 +vt 0.320032 0.005495 +vt 0.321765 0.069092 +vt 0.647589 0.225990 +vt 0.647578 0.043005 +vt 0.651413 0.005495 +vt 0.067840 0.386736 +vt 0.321765 0.328100 +vt 0.320625 0.391296 +vt 0.386516 0.069092 +vt 0.007101 0.323941 +vt 0.005495 0.076427 +vt 0.317926 0.106905 +vt 0.431125 0.134236 +vt 0.435293 0.166263 +vt 0.397517 0.258065 +vt 0.132225 0.655744 +vt 0.163488 0.645688 +vt 0.165025 0.651426 +vt 0.421694 0.342907 +vt 0.403923 0.370450 +vt 0.416559 0.339942 +vt 0.100963 0.645688 +vt 0.099425 0.651426 +vt 0.409650 0.371984 +vt 0.399613 0.403189 +vt 0.071831 0.633622 +vt 0.068860 0.638766 +vt 0.409650 0.434393 +vt 0.403923 0.435928 +vt 0.042614 0.618627 +vt 0.416560 0.466435 +vt 0.526107 0.529682 +vt 0.557311 0.519644 +vt 0.558846 0.525372 +vt 0.027618 0.589410 +vt 0.022474 0.592380 +vt 0.421695 0.463471 +vt 0.436662 0.492633 +vt 0.589354 0.512735 +vt 0.015551 0.560278 +vt 0.009813 0.561816 +vt 0.440855 0.488440 +vt 0.462860 0.512735 +vt 0.011435 0.529016 +vt 0.005495 0.529016 +vt 0.465825 0.507600 +vt 0.493368 0.525372 +vt 0.619504 0.313743 +vt 0.615551 0.492633 +vt 0.615551 0.313743 +vt 0.358254 0.687384 +vt 0.381505 0.655852 +vt 0.381505 0.687384 +vt 0.381505 0.972483 +vt 0.358254 0.939643 +vt 0.381505 0.939643 +vt 0.358254 0.435125 +vt 0.381505 0.402285 +vt 0.381505 0.435125 +vt 0.358254 0.655852 +vt 0.381505 0.624319 +vt 0.381505 0.908111 +vt 0.358254 0.876578 +vt 0.381505 0.845046 +vt 0.381505 0.876578 +vt 0.358254 0.624319 +vt 0.381505 0.592787 +vt 0.358254 0.813513 +vt 0.381505 0.813513 +vt 0.358254 0.592787 +vt 0.381505 0.561255 +vt 0.358254 0.781981 +vt 0.381505 0.781981 +vt 0.358254 0.561255 +vt 0.381505 0.529722 +vt 0.381505 0.750449 +vt 0.358254 0.498190 +vt 0.381505 0.498190 +vt 0.358254 0.750449 +vt 0.381505 0.718916 +vt 0.381505 0.466657 +vt 0.358254 0.718916 +vt 0.440854 0.317937 +vt 0.436662 0.313744 +vt 0.195590 0.638765 +vt 0.132223 0.408225 +vt 0.099423 0.406604 +vt 0.132223 0.402285 +vt 0.465824 0.298777 +vt 0.462859 0.293642 +vt 0.100960 0.412342 +vt 0.068858 0.419264 +vt 0.493367 0.281005 +vt 0.698707 0.252092 +vt 0.662402 0.254221 +vt 0.662402 0.252092 +vt 0.046812 0.443605 +vt 0.042612 0.439404 +vt 0.526106 0.276695 +vt 0.494902 0.286732 +vt 0.195588 0.419263 +vt 0.163486 0.412341 +vt 0.165023 0.406603 +vt 0.027617 0.468621 +vt 0.022472 0.465651 +vt 0.557310 0.286732 +vt 0.558845 0.281005 +vt 0.009812 0.496216 +vt 0.589353 0.293641 +vt 0.494902 0.519645 +vt 0.015550 0.497753 +vt 0.108173 0.933725 +vt 0.106043 0.897420 +vt 0.108173 0.897420 +vt 0.087859 0.930852 +vt 0.085729 0.963935 +vt 0.085729 0.930852 +vt 0.714219 0.524745 +vt 0.747302 0.526874 +vt 0.714219 0.526874 +vt 0.020742 0.931104 +vt 0.018613 0.964186 +vt 0.018613 0.931104 +vt 0.551923 0.901930 +vt 0.549793 0.935013 +vt 0.549793 0.901930 +vt 0.461565 0.291956 +vt 0.435368 0.312058 +vt 0.434975 0.312450 +vt 0.414873 0.338648 +vt 0.414596 0.339129 +vt 0.401959 0.369636 +vt 0.401816 0.370172 +vt 0.397506 0.402911 +vt 0.397506 0.403466 +vt 0.401816 0.436205 +vt 0.401960 0.436741 +vt 0.414596 0.467249 +vt 0.414874 0.467729 +vt 0.434976 0.493927 +vt 0.435368 0.494319 +vt 0.461566 0.514421 +vt 0.462047 0.514699 +vt 0.492555 0.527335 +vt 0.493090 0.527479 +vt 0.525829 0.531789 +vt 0.526384 0.531789 +vt 0.559123 0.527479 +vt 0.559659 0.527335 +vt 0.590167 0.514698 +vt 0.225797 0.618625 +vt 0.221836 0.439403 +vt 0.225797 0.439403 +vt 0.619504 0.492633 +vt 0.831188 0.746127 +vt 0.807937 0.925350 +vt 0.807937 0.746127 +vt 0.192618 0.424408 +vt 0.586388 0.298776 +vt 0.221836 0.618625 +vt 0.192620 0.633620 +vt 0.773697 0.746127 +vt 0.796948 0.925350 +vt 0.773697 0.925350 +vt 0.926346 0.069867 +vt 0.949597 0.038335 +vt 0.949597 0.069867 +vt 0.949597 0.322126 +vt 0.926346 0.290593 +vt 0.949597 0.290593 +vt 0.926346 0.101399 +vt 0.949597 0.101399 +vt 0.926346 0.353658 +vt 0.949597 0.353658 +vt 0.949597 0.132932 +vt 0.926346 0.385190 +vt 0.949597 0.385190 +vt 0.949597 0.164464 +vt 0.926346 0.132932 +vt 0.926346 0.416723 +vt 0.949597 0.416723 +vt 0.949597 0.195996 +vt 0.926346 0.164464 +vt 0.949597 0.448255 +vt 0.926346 0.511320 +vt 0.949597 0.479788 +vt 0.949597 0.511320 +vt 0.949597 0.227529 +vt 0.926346 0.195996 +vt 0.926346 0.479788 +vt 0.926346 0.542852 +vt 0.949597 0.542852 +vt 0.926346 0.259061 +vt 0.949597 0.259061 +vt 0.926346 0.038335 +vt 0.949597 0.005495 +vt 0.926346 0.575693 +vt 0.949597 0.575693 +vt 0.622626 0.313752 +vt 0.622626 0.492642 +vt 0.635215 0.820032 +vt 0.632634 0.967885 +vt 0.632634 0.820018 +vt 0.815877 0.291846 +vt 0.877345 0.278740 +vt 0.877345 0.290914 +vt 0.640163 0.633315 +vt 0.641239 0.601777 +vt 0.641240 0.633315 +vt 0.860085 0.456842 +vt 0.877344 0.486978 +vt 0.845090 0.486059 +vt 0.579768 0.737922 +vt 0.641240 0.751029 +vt 0.550636 0.749989 +vt 0.872152 0.365186 +vt 0.877345 0.335517 +vt 0.877345 0.364908 +vt 0.623981 0.572926 +vt 0.641239 0.542793 +vt 0.641239 0.572474 +vt 0.634692 0.396460 +vt 0.633615 0.428001 +vt 0.633615 0.396460 +vt 0.636047 0.664578 +vt 0.641240 0.694248 +vt 0.623980 0.693710 +vt 0.650875 0.456855 +vt 0.633615 0.486991 +vt 0.633615 0.457307 +vt 0.398583 0.633314 +vt 0.397506 0.601771 +vt 0.402699 0.602049 +vt 0.650876 0.336062 +vt 0.633615 0.310283 +vt 0.670072 0.311044 +vt 0.414766 0.572916 +vt 0.397506 0.542778 +vt 0.429762 0.543697 +vt 0.786746 0.279780 +vt 0.755485 0.274588 +vt 0.414766 0.693709 +vt 0.397506 0.719487 +vt 0.397506 0.694248 +vt 0.695090 0.291847 +vt 0.633615 0.278740 +vt 0.724224 0.279780 +vt 0.519374 0.755181 +vt 0.519374 0.754105 +vt 0.860086 0.336056 +vt 0.877345 0.310279 +vt 0.458978 0.737922 +vt 0.397506 0.751029 +vt 0.397506 0.738854 +vt 0.638808 0.427723 +vt 0.915357 0.920578 +vt 0.894235 0.676845 +vt 0.915357 0.676845 +vt 0.894235 0.005495 +vt 0.915357 0.035178 +vt 0.894235 0.035178 +vt 0.915357 0.064484 +vt 0.894235 0.064484 +vt 0.915357 0.096025 +vt 0.894235 0.096025 +vt 0.894235 0.127566 +vt 0.915357 0.127566 +vt 0.915357 0.156958 +vt 0.894235 0.156958 +vt 0.915357 0.182197 +vt 0.894235 0.182197 +vt 0.915357 0.201564 +vt 0.894235 0.201564 +vt 0.915357 0.213739 +vt 0.894235 0.213739 +vt 0.915357 0.335675 +vt 0.894235 0.335675 +vt 0.915357 0.457612 +vt 0.894235 0.457612 +vt 0.915357 0.469787 +vt 0.894235 0.469787 +vt 0.915357 0.489153 +vt 0.894235 0.489153 +vt 0.915357 0.514393 +vt 0.894235 0.514393 +vt 0.915357 0.543784 +vt 0.894235 0.543784 +vt 0.915357 0.575326 +vt 0.894235 0.575326 +vt 0.894235 0.606867 +vt 0.915357 0.606867 +vt 0.915357 0.636173 +vt 0.894235 0.636173 +vt 0.894235 0.665856 +vt 0.915357 0.665856 +vt 0.488111 0.749989 +vt 0.876268 0.396447 +vt 0.877345 0.427988 +vt 0.872152 0.427710 +vt 0.397506 0.664856 +vt 0.397506 0.633314 +vt 0.755485 0.275664 +vt 0.433962 0.718726 +vt 0.633615 0.364917 +vt 0.638808 0.365195 +vt 0.633615 0.290915 +vt 0.604785 0.718726 +vt 0.641240 0.738854 +vt 0.641240 0.664857 +vt 0.840892 0.311041 +vt 0.760850 0.958917 +vt 0.762194 0.823957 +vt 0.762194 0.969333 +vt 0.877345 0.396447 +vt 0.402699 0.664577 +vt 0.990032 0.493759 +vt 0.992233 0.561870 +vt 0.990889 0.551453 +vt 0.636047 0.602055 +vt 0.633615 0.335523 +vt 0.397506 0.572463 +vt 0.877345 0.457294 +vt 0.641240 0.719488 +vt 0.462046 0.291678 +vt 0.493090 0.278898 +vt 0.526383 0.274588 +vt 0.559658 0.279041 +vt 0.005495 0.931104 +vt 0.007624 0.964186 +vt 0.005495 0.964186 +vt 0.198058 0.922286 +vt 0.200187 0.955369 +vt 0.198058 0.955369 +vt 0.536675 0.901930 +vt 0.538804 0.935013 +vt 0.536675 0.935013 +vt 0.742779 0.252092 +vt 0.709696 0.254221 +vt 0.709696 0.252092 +vt 0.753769 0.254221 +vt 0.786851 0.252092 +vt 0.786851 0.254221 +vt 0.072611 0.930852 +vt 0.074740 0.963935 +vt 0.072611 0.963935 +vt 0.187069 0.955369 +vt 0.184940 0.922286 +vt 0.187069 0.922286 +vt 0.960586 0.538006 +vt 0.962716 0.571089 +vt 0.960586 0.571089 +vt 0.341384 0.897681 +vt 0.343513 0.930765 +vt 0.341384 0.930765 +vt 0.871547 0.531064 +vt 0.869418 0.497980 +vt 0.871547 0.497980 +vt 0.328265 0.897681 +vt 0.330395 0.930765 +vt 0.328265 0.930765 +vt 0.741558 0.930395 +vt 0.743688 0.963478 +vt 0.741558 0.963478 +vt 0.620683 0.494401 +vt 0.590532 0.514503 +vt 0.620683 0.311975 +vt 0.223103 0.324116 +vt 0.221951 0.074040 +vt 0.190475 0.078944 +vt 0.191904 0.319517 +vt 0.162864 0.306928 +vt 0.161326 0.091754 +vt 0.136494 0.111633 +vt 0.137910 0.287105 +vt 0.118657 0.261353 +vt 0.117599 0.137327 +vt 0.105823 0.167232 +vt 0.106317 0.231450 +vt 0.065640 0.012427 +vt 0.651413 0.263598 +vt 0.552691 0.259238 +vt 0.586679 0.255595 +vt 0.618394 0.243259 +vt 0.586883 0.013251 +vt 0.552820 0.009503 +vt 0.618445 0.025671 +vt 0.386516 0.328100 +vt 0.257044 0.320347 +vt 0.288698 0.307876 +vt 0.256415 0.077528 +vt 0.288704 0.089685 +vt 0.317917 0.290484 +vt 0.397506 0.010132 +vt 0.521402 0.014143 +vt 0.521401 0.254494 +vt 0.492084 0.026804 +vt 0.466891 0.046640 +vt 0.492220 0.241702 +vt 0.467071 0.221661 +vt 0.447526 0.072318 +vt 0.435314 0.102161 +vt 0.447526 0.196031 +vt 0.132225 0.649804 +vt 0.405542 0.403189 +vt 0.046814 0.614426 +vt 0.526107 0.523753 +vt 0.586389 0.507600 +vt 0.358254 0.972483 +vt 0.358254 0.402285 +vt 0.358254 0.908110 +vt 0.358254 0.845046 +vt 0.358254 0.529722 +vt 0.358254 0.466657 +vt 0.071828 0.424409 +vt 0.698707 0.254221 +vt 0.526106 0.282624 +vt 0.106043 0.933725 +vt 0.087859 0.963935 +vt 0.747302 0.524745 +vt 0.020742 0.964186 +vt 0.551923 0.935013 +vt 0.831188 0.925350 +vt 0.796948 0.746127 +vt 0.926346 0.322126 +vt 0.926346 0.448255 +vt 0.926346 0.227529 +vt 0.926346 0.005495 +vt 0.635215 0.967900 +vt 0.608988 0.543712 +vt 0.665870 0.486072 +vt 0.894235 0.920578 +vt 0.915357 0.005495 +vt 0.759993 0.901223 +vt 0.992233 0.416493 +vt 0.492554 0.279041 +vt 0.525828 0.274588 +vt 0.559122 0.278898 +vt 0.590166 0.291678 +vt 0.007624 0.931104 +vt 0.200187 0.922286 +vt 0.538804 0.901930 +vt 0.742779 0.254221 +vt 0.753769 0.252092 +vt 0.074740 0.930852 +vt 0.184940 0.955369 +vt 0.962716 0.538006 +vt 0.343513 0.897681 +vt 0.869418 0.531064 +vt 0.330395 0.897681 +vt 0.743688 0.930395 +vt 0.590532 0.291873 +vn -1.0000 -0.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.9659 -0.2588 +vn 0.0000 0.4566 0.8897 +vn 0.0000 0.4200 0.9075 +vn -0.0000 0.4200 -0.9075 +vn -0.0000 0.4566 -0.8897 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 0.2588 0.9659 +vn -0.0000 -0.2588 0.9659 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.2588 -0.9659 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.9659 0.2588 +vn -0.0000 0.2588 -0.9659 +vn 0.0000 -0.5547 -0.8320 +vn 0.0000 -0.4710 -0.8822 +vn 0.0000 -0.4710 0.8822 +vn 0.0000 -0.5547 0.8320 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.9659 0.2588 +vn 0.0000 0.9659 -0.2588 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.9994 0.0341 +vn 0.0000 -0.9994 -0.0341 +s 1 +f 2/1/1 4/2/1 30/3/1 +f 4/2/2 7/4/2 3/5/2 +f 21/6/3 25/7/3 5/8/3 +f 6/9/4 1/10/4 5/11/4 +f 7/12/5 1/10/5 3/5/5 +f 4/2/6 6/13/6 8/14/6 +f 22/15/1 3/5/1 1/10/1 +f 29/16/3 27/17/3 8/18/3 +f 59/19/1 98/20/1 60/21/1 +f 110/22/3 73/23/3 74/24/3 +f 96/25/1 59/19/1 58/26/1 +f 109/27/3 72/28/3 73/23/3 +f 95/29/1 58/26/1 57/30/1 +f 72/28/3 107/31/3 71/32/3 +f 56/33/1 95/29/1 57/30/1 +f 107/31/3 70/34/3 71/32/3 +f 66/35/3 118/36/3 84/37/3 +f 93/38/1 56/33/1 55/39/1 +f 106/40/3 69/41/3 70/34/3 +f 118/36/3 83/42/3 84/37/3 +f 92/43/1 55/39/1 54/44/1 +f 105/45/3 68/46/3 69/41/3 +f 91/47/1 54/44/1 53/48/1 +f 104/49/3 67/50/3 68/46/3 +f 122/51/3 82/52/3 81/53/3 +f 108/54/5 130/55/7 127/56/5 +f 123/57/8 117/58/9 132/59/9 +f 116/60/10 126/61/11 133/62/10 +f 109/63/7 136/64/12 130/55/7 +f 117/58/9 138/65/13 132/59/9 +f 103/66/4 142/67/14 139/68/4 +f 110/69/12 144/70/15 136/64/12 +f 138/65/13 103/66/4 139/68/4 +f 142/67/14 104/71/16 146/72/16 +f 111/73/15 148/74/17 144/70/15 +f 146/72/16 105/75/18 150/76/18 +f 112/77/17 152/78/19 148/74/17 +f 105/75/18 154/79/20 150/76/18 +f 152/78/19 114/80/2 156/81/2 +f 106/82/20 158/83/21 154/79/20 +f 114/80/2 160/84/22 156/81/2 +f 107/85/21 127/56/5 158/83/21 +f 160/84/22 116/60/10 133/62/10 +f 111/86/3 74/24/3 75/87/3 +f 98/20/1 61/88/1 60/21/1 +f 86/89/1 48/90/1 47/91/1 +f 112/92/3 75/87/3 76/93/3 +f 85/94/1 49/95/1 48/90/1 +f 77/96/3 112/92/3 76/93/3 +f 162/97/23 64/98/24 236/99/24 +f 49/95/1 88/100/1 50/101/1 +f 78/102/3 113/103/3 77/96/3 +f 64/104/1 101/105/1 65/106/1 +f 50/101/1 89/107/1 51/108/1 +f 115/109/3 78/102/3 79/110/3 +f 65/106/1 86/89/1 47/91/1 +f 89/107/1 52/111/1 51/108/1 +f 80/112/3 115/109/3 79/110/3 +f 102/113/3 66/35/3 67/50/3 +f 90/114/1 53/48/1 52/111/1 +f 220/115/25 121/116/26 163/117/26 +f 60/118/14 220/119/25 221/120/14 +f 59/121/4 221/122/14 222/123/4 +f 58/124/13 222/125/4 223/126/13 +f 57/127/27 223/128/13 224/129/27 +f 207/130/27 75/87/28 208/131/28 +f 208/132/28 74/24/29 209/133/29 +f 209/134/29 73/23/30 210/135/30 +f 210/136/30 72/28/6 211/137/6 +f 211/138/6 71/32/31 212/139/31 +f 212/140/31 70/34/32 213/141/32 +f 213/142/32 69/41/33 214/143/33 +f 214/144/33 68/46/34 215/145/34 +f 215/146/34 67/50/22 216/147/22 +f 216/148/22 66/35/2 217/149/2 +f 217/150/2 84/37/19 218/151/19 +f 218/152/19 83/42/24 219/153/24 +f 121/154/1 63/155/1 120/156/1 +f 83/42/3 82/52/3 119/157/3 +f 125/158/6 63/159/6 62/160/6 +f 64/104/1 63/155/1 100/161/1 +f 80/112/3 81/53/3 116/162/3 +f 62/163/1 61/88/1 99/164/1 +f 126/165/6 82/166/6 123/167/6 +f 159/168/22 99/169/10 98/170/22 +f 90/171/21 128/172/5 91/173/5 +f 155/174/2 98/170/22 97/175/2 +f 153/176/20 90/171/21 89/177/20 +f 96/178/19 155/174/2 97/175/2 +f 149/179/18 89/177/20 88/180/18 +f 95/181/17 151/182/19 96/178/19 +f 145/183/16 88/180/18 87/184/16 +f 94/185/15 147/186/17 95/181/17 +f 85/187/14 145/183/16 87/184/16 +f 137/188/13 86/189/4 101/190/13 +f 93/191/12 143/192/15 94/185/15 +f 140/193/4 85/187/14 86/189/4 +f 131/194/9 101/190/13 100/195/9 +f 129/196/7 93/191/12 92/197/7 +f 134/198/10 62/199/11 99/169/10 +f 124/200/8 100/195/9 63/201/8 +f 128/172/5 92/197/7 91/173/5 +f 119/157/5 164/202/5 161/203/5 +f 162/204/5 121/205/5 120/206/5 +f 154/207/1 175/208/1 180/209/1 +f 140/210/3 193/211/3 194/212/3 +f 132/213/1 168/214/1 123/215/1 +f 153/216/3 173/217/3 157/218/3 +f 142/219/1 188/220/1 192/221/1 +f 131/222/3 166/223/3 199/224/3 +f 156/225/1 171/226/1 178/227/1 +f 141/228/3 187/229/3 145/230/3 +f 133/231/1 167/232/1 172/233/1 +f 155/234/3 169/235/3 159/236/3 +f 148/237/1 190/238/1 144/239/1 +f 134/240/3 165/241/3 125/242/3 +f 158/243/1 176/244/1 175/208/1 +f 147/245/3 189/246/3 185/247/3 +f 136/248/1 202/249/1 130/250/1 +f 157/218/3 174/251/3 128/252/3 +f 146/253/1 184/254/1 188/220/1 +f 135/255/3 201/256/3 197/257/3 +f 160/258/1 172/233/1 171/226/1 +f 165/259/6 168/260/6 166/261/6 +f 166/262/4 200/263/4 199/264/4 +f 199/264/4 195/265/4 193/266/4 +f 193/266/4 196/267/4 194/268/4 +f 191/269/4 196/267/4 192/270/4 +f 191/269/4 188/271/4 187/272/4 +f 187/272/4 184/273/4 183/274/4 +f 183/274/4 180/275/4 179/276/4 +f 179/276/4 175/277/4 173/278/4 +f 173/278/35 176/279/5 174/280/5 +f 174/280/5 202/281/36 201/282/36 +f 201/282/2 198/283/2 197/284/2 +f 197/284/2 190/285/2 189/286/2 +f 189/286/2 186/287/2 185/288/2 +f 185/288/2 182/289/2 181/290/2 +f 181/290/2 178/291/2 177/292/2 +f 169/293/2 178/291/2 171/294/2 +f 169/293/2 172/295/2 170/296/2 +f 165/297/2 172/295/2 167/298/2 +f 129/299/3 174/251/3 201/256/3 +f 139/300/1 195/301/1 138/302/1 +f 155/234/3 181/303/3 177/304/3 +f 130/250/1 176/244/1 127/305/1 +f 143/306/3 197/257/3 189/246/3 +f 156/225/1 182/307/1 152/308/1 +f 144/239/1 198/309/1 136/248/1 +f 149/310/3 179/311/3 153/216/3 +f 140/210/3 191/312/3 141/228/3 +f 150/313/1 180/209/1 184/254/1 +f 124/314/3 165/315/3 166/316/3 +f 139/300/1 192/221/1 196/317/1 +f 151/318/3 185/247/3 181/303/3 +f 123/319/1 167/320/1 126/321/1 +f 137/322/3 199/224/3 193/211/3 +f 152/308/1 186/323/1 148/237/1 +f 159/236/3 170/324/3 134/240/3 +f 138/302/1 200/325/1 132/213/1 +f 145/230/3 183/326/3 149/310/3 +f 207/327/27 77/96/13 76/93/27 +f 206/328/13 78/102/4 77/96/13 +f 205/329/4 79/110/14 78/102/4 +f 204/330/14 80/112/25 79/110/14 +f 57/331/27 225/332/28 56/333/28 +f 56/334/28 226/335/29 55/336/29 +f 55/337/29 227/338/30 54/339/30 +f 54/340/30 228/341/6 53/342/6 +f 53/343/6 229/344/31 52/345/31 +f 52/346/31 230/347/32 51/348/32 +f 51/349/32 231/350/33 50/351/33 +f 50/352/33 232/353/34 49/354/34 +f 49/355/34 233/356/22 48/357/22 +f 48/358/22 234/359/2 47/360/2 +f 47/361/2 235/362/19 65/363/19 +f 65/364/19 236/365/24 64/366/24 +f 83/42/24 161/367/23 219/368/24 +f 80/112/25 164/369/26 122/51/26 +f 42/370/1 1/10/1 2/1/1 +f 4/2/1 3/5/1 14/371/1 +f 4/2/1 14/371/1 10/372/1 +f 40/373/1 42/370/1 2/1/1 +f 38/374/1 40/373/1 2/1/1 +f 4/2/1 10/372/1 12/375/1 +f 4/2/1 12/375/1 20/376/1 +f 36/377/1 38/374/1 2/1/1 +f 34/378/1 36/377/1 2/1/1 +f 4/2/1 20/376/1 24/379/1 +f 4/2/1 24/379/1 28/380/1 +f 32/381/1 34/378/1 2/1/1 +f 4/2/1 28/380/1 30/3/1 +f 30/3/1 32/381/1 2/1/1 +f 4/2/2 8/382/2 7/4/2 +f 7/383/3 13/384/3 15/385/3 +f 7/383/3 15/385/3 17/386/3 +f 43/387/3 41/388/3 5/8/3 +f 45/389/3 43/387/3 5/8/3 +f 7/383/3 17/386/3 21/6/3 +f 25/7/3 45/389/3 5/8/3 +f 7/383/3 21/6/3 5/8/3 +f 6/9/4 2/1/4 1/10/4 +f 7/12/5 5/390/5 1/10/5 +f 4/2/6 2/1/6 6/13/6 +f 1/10/1 42/370/1 44/391/1 +f 1/10/1 44/391/1 46/392/1 +f 16/393/1 14/371/1 3/5/1 +f 18/394/1 16/393/1 3/5/1 +f 1/10/1 46/392/1 26/395/1 +f 22/15/1 18/394/1 3/5/1 +f 1/10/1 26/395/1 22/15/1 +f 6/396/3 5/8/3 41/388/3 +f 6/396/3 41/388/3 39/397/3 +f 13/384/3 7/383/3 8/18/3 +f 9/398/3 13/384/3 8/18/3 +f 6/396/3 39/397/3 37/399/3 +f 6/396/3 37/399/3 35/400/3 +f 11/401/3 9/398/3 8/18/3 +f 19/402/3 11/401/3 8/18/3 +f 6/396/3 35/400/3 33/403/3 +f 6/396/3 33/403/3 31/404/3 +f 23/405/3 19/402/3 8/18/3 +f 27/17/3 23/405/3 8/18/3 +f 8/18/3 6/396/3 29/16/3 +f 6/396/3 31/404/3 29/16/3 +f 59/19/1 97/406/1 98/20/1 +f 110/22/3 109/27/3 73/23/3 +f 96/25/1 97/406/1 59/19/1 +f 109/27/3 108/407/3 72/28/3 +f 95/29/1 96/25/1 58/26/1 +f 72/28/3 108/407/3 107/31/3 +f 56/33/1 94/408/1 95/29/1 +f 107/31/3 106/40/3 70/34/3 +f 66/35/3 103/409/3 118/36/3 +f 93/38/1 94/408/1 56/33/1 +f 106/40/3 105/45/3 69/41/3 +f 118/36/3 117/410/3 83/42/3 +f 92/43/1 93/38/1 55/39/1 +f 105/45/3 104/49/3 68/46/3 +f 91/47/1 92/43/1 54/44/1 +f 104/49/3 102/113/3 67/50/3 +f 122/51/3 119/157/3 82/52/3 +f 108/54/5 109/63/7 130/55/7 +f 123/57/8 82/411/8 117/58/9 +f 116/60/10 81/412/11 126/61/11 +f 109/63/7 110/69/12 136/64/12 +f 117/58/9 118/413/13 138/65/13 +f 103/66/4 102/414/14 142/67/14 +f 110/69/12 111/73/15 144/70/15 +f 138/65/13 118/413/13 103/66/4 +f 142/67/14 102/414/14 104/71/16 +f 111/73/15 112/77/17 148/74/17 +f 146/72/16 104/71/16 105/75/18 +f 112/77/17 113/415/19 152/78/19 +f 105/75/18 106/82/20 154/79/20 +f 152/78/19 113/415/19 114/80/2 +f 106/82/20 107/85/21 158/83/21 +f 114/80/2 115/416/22 160/84/22 +f 107/85/21 108/54/5 127/56/5 +f 160/84/22 115/416/22 116/60/10 +f 111/86/3 110/22/3 74/24/3 +f 98/20/1 99/164/1 61/88/1 +f 86/89/1 85/94/1 48/90/1 +f 112/92/3 111/86/3 75/87/3 +f 85/94/1 87/417/1 49/95/1 +f 77/96/3 113/103/3 112/92/3 +f 162/97/23 120/418/23 64/98/24 +f 49/95/1 87/417/1 88/100/1 +f 78/102/3 114/419/3 113/103/3 +f 64/104/1 100/161/1 101/105/1 +f 50/101/1 88/100/1 89/107/1 +f 115/109/3 114/419/3 78/102/3 +f 65/106/1 101/105/1 86/89/1 +f 89/107/1 90/114/1 52/111/1 +f 80/112/3 116/162/3 115/109/3 +f 102/113/3 103/409/3 66/35/3 +f 90/114/1 91/47/1 53/48/1 +f 220/115/25 61/420/25 121/116/26 +f 60/118/14 61/421/25 220/119/25 +f 59/121/4 60/422/14 221/122/14 +f 58/124/13 59/423/4 222/125/4 +f 57/127/27 58/424/13 223/128/13 +f 207/130/27 76/93/27 75/87/28 +f 208/132/28 75/87/28 74/24/29 +f 209/134/29 74/24/29 73/23/30 +f 210/136/30 73/23/30 72/28/6 +f 211/138/6 72/28/6 71/32/31 +f 212/140/31 71/32/31 70/34/32 +f 213/142/32 70/34/32 69/41/33 +f 214/144/33 69/41/33 68/46/34 +f 215/146/34 68/46/34 67/50/22 +f 216/148/22 67/50/22 66/35/2 +f 217/150/2 66/35/2 84/37/19 +f 218/152/19 84/37/19 83/42/24 +f 121/154/1 62/163/1 63/155/1 +f 83/42/3 117/410/3 82/52/3 +f 125/158/6 124/425/6 63/159/6 +f 64/104/1 120/156/1 63/155/1 +f 80/112/3 122/51/3 81/53/3 +f 62/163/1 121/154/1 61/88/1 +f 126/165/6 81/426/6 82/166/6 +f 159/168/22 134/198/10 99/169/10 +f 90/171/21 157/427/21 128/172/5 +f 155/174/2 159/168/22 98/170/22 +f 153/176/20 157/427/21 90/171/21 +f 96/178/19 151/182/19 155/174/2 +f 149/179/18 153/176/20 89/177/20 +f 95/181/17 147/186/17 151/182/19 +f 145/183/16 149/179/18 88/180/18 +f 94/185/15 143/192/15 147/186/17 +f 85/187/14 141/428/14 145/183/16 +f 137/188/13 140/193/4 86/189/4 +f 93/191/12 135/429/12 143/192/15 +f 140/193/4 141/428/14 85/187/14 +f 131/194/9 137/188/13 101/190/13 +f 129/196/7 135/429/12 93/191/12 +f 134/198/10 125/430/11 62/199/11 +f 124/200/8 131/194/9 100/195/9 +f 128/172/5 129/196/7 92/197/7 +f 119/157/5 122/51/5 164/202/5 +f 162/204/5 163/431/5 121/205/5 +f 154/207/1 158/243/1 175/208/1 +f 140/210/3 137/322/3 193/211/3 +f 132/213/1 200/325/1 168/214/1 +f 153/216/3 179/311/3 173/217/3 +f 142/219/1 146/253/1 188/220/1 +f 131/222/3 124/432/3 166/223/3 +f 156/225/1 160/258/1 171/226/1 +f 141/228/3 191/312/3 187/229/3 +f 133/231/1 126/433/1 167/232/1 +f 155/234/3 177/304/3 169/235/3 +f 148/237/1 186/323/1 190/238/1 +f 134/240/3 170/324/3 165/241/3 +f 158/243/1 127/305/1 176/244/1 +f 147/245/3 143/306/3 189/246/3 +f 136/248/1 198/309/1 202/249/1 +f 157/218/3 173/217/3 174/251/3 +f 146/253/1 150/313/1 184/254/1 +f 135/255/3 129/299/3 201/256/3 +f 160/258/1 133/231/1 172/233/1 +f 165/259/6 167/434/6 168/260/6 +f 166/262/4 168/435/4 200/263/4 +f 199/264/4 200/263/4 195/265/4 +f 193/266/4 195/265/4 196/267/4 +f 191/269/4 194/268/4 196/267/4 +f 191/269/4 192/270/4 188/271/4 +f 187/272/4 188/271/4 184/273/4 +f 183/274/4 184/273/4 180/275/4 +f 179/276/4 180/275/4 175/277/4 +f 173/278/35 175/277/35 176/279/5 +f 174/280/5 176/279/5 202/281/36 +f 201/282/2 202/281/2 198/283/2 +f 197/284/2 198/283/2 190/285/2 +f 189/286/2 190/285/2 186/287/2 +f 185/288/2 186/287/2 182/289/2 +f 181/290/2 182/289/2 178/291/2 +f 169/293/2 177/292/2 178/291/2 +f 169/293/2 171/294/2 172/295/2 +f 165/297/2 170/296/2 172/295/2 +f 129/299/3 128/252/3 174/251/3 +f 139/300/1 196/317/1 195/301/1 +f 155/234/3 151/318/3 181/303/3 +f 130/250/1 202/249/1 176/244/1 +f 143/306/3 135/255/3 197/257/3 +f 156/225/1 178/227/1 182/307/1 +f 144/239/1 190/238/1 198/309/1 +f 149/310/3 183/326/3 179/311/3 +f 140/210/3 194/212/3 191/312/3 +f 150/313/1 154/207/1 180/209/1 +f 124/314/3 125/436/3 165/315/3 +f 139/300/1 142/219/1 192/221/1 +f 151/318/3 147/245/3 185/247/3 +f 123/319/1 168/437/1 167/320/1 +f 137/322/3 131/222/3 199/224/3 +f 152/308/1 182/307/1 186/323/1 +f 159/236/3 169/235/3 170/324/3 +f 138/302/1 195/301/1 200/325/1 +f 145/230/3 187/229/3 183/326/3 +f 207/327/27 206/438/13 77/96/13 +f 206/328/13 205/439/4 78/102/4 +f 205/329/4 204/440/14 79/110/14 +f 204/330/14 203/441/25 80/112/25 +f 57/331/27 224/442/27 225/332/28 +f 56/334/28 225/443/28 226/335/29 +f 55/337/29 226/444/29 227/338/30 +f 54/340/30 227/445/30 228/341/6 +f 53/343/6 228/446/6 229/344/31 +f 52/346/31 229/447/31 230/347/32 +f 51/349/32 230/448/32 231/350/33 +f 50/352/33 231/449/33 232/353/34 +f 49/355/34 232/450/34 233/356/22 +f 48/358/22 233/451/22 234/359/2 +f 47/361/2 234/452/2 235/362/19 +f 65/364/19 235/453/19 236/365/24 +f 83/42/24 119/157/23 161/367/23 +f 80/112/25 203/454/25 164/369/26 +o doorRight +v 0.166667 0.183059 -1.291355 +v 0.166667 0.574264 -1.541358 +v 0.166667 1.014811 -1.723840 +v 0.166667 1.476714 -1.784650 +v 0.166667 1.938615 -1.723840 +v 0.166667 2.369039 -1.545552 +v 0.166667 2.738652 -1.261938 +v 0.166667 3.022266 -0.892325 +v 0.166667 3.200554 -0.461901 +v 0.168084 0.047997 -1.426236 +v 0.166667 0.183060 -0.183059 +v 0.168084 3.345687 -0.497568 +v 0.168084 3.153632 -0.961228 +v 0.166667 3.245492 -0.183060 +v 0.168084 2.848119 -1.359382 +v 0.168084 2.449965 -1.664895 +v 0.168084 1.986305 -1.856950 +v 0.168084 0.991167 -1.856950 +v 0.168084 1.488737 -1.922456 +v 0.168084 0.527508 -1.664895 +v 0.107558 0.183060 -0.183059 +v 0.107558 3.245492 -0.183060 +v 0.107558 0.183059 -1.291355 +v 0.107558 3.200554 -0.461901 +v 0.107558 3.022266 -0.892325 +v 0.107558 2.738652 -1.261938 +v 0.107558 2.369039 -1.545552 +v 0.107558 1.938615 -1.723840 +v 0.107558 1.014811 -1.723840 +v 0.107558 1.476714 -1.784650 +v 0.107558 0.574264 -1.541358 +v 0.166667 0.047998 -0.100000 +v 0.166667 3.039069 -0.100000 +v 0.166667 2.708339 -0.100000 +v 0.166667 2.377609 -0.100000 +v 0.166667 2.046879 -0.100000 +v 0.166667 1.716149 -0.100000 +v 0.166667 1.385420 -0.100000 +v 0.166667 1.054690 -0.100000 +v 0.166667 0.723960 -0.100000 +v 0.166667 0.393230 -0.100000 +v 0.116667 0.393230 0.100000 +v 0.166667 0.393230 0.050000 +v 0.166667 0.047998 0.050000 +v 0.116667 0.047998 0.100000 +v 0.116667 3.039069 0.100000 +v 0.166667 3.039069 0.050000 +v 0.166667 2.708339 0.050000 +v 0.116667 2.708339 0.100000 +v 0.116667 2.377609 0.100000 +v 0.166667 2.377609 0.050000 +v 0.166667 2.046879 0.050000 +v 0.116667 2.046879 0.100000 +v 0.116667 1.716149 0.100000 +v 0.166667 1.716149 0.050000 +v 0.166667 1.385420 0.050000 +v 0.116667 1.385420 0.100000 +v 0.116667 1.054690 0.100000 +v 0.166667 1.054690 0.050000 +v 0.166667 0.723960 0.050000 +v 0.116667 0.723960 0.100000 +v -0.166666 0.183059 -1.291355 +v -0.166666 0.574264 -1.541358 +v -0.166666 1.014811 -1.723840 +v -0.166666 1.476714 -1.784650 +v -0.166666 1.938615 -1.723840 +v -0.166666 2.369039 -1.545552 +v -0.166666 2.738652 -1.261938 +v -0.166666 3.022266 -0.892325 +v -0.166666 3.200554 -0.461901 +v -0.168083 0.047997 -1.426236 +v -0.166666 0.183060 -0.183059 +v -0.168083 3.345687 -0.497568 +v -0.168083 3.153632 -0.961228 +v -0.166666 3.245492 -0.183060 +v -0.168083 2.848119 -1.359382 +v -0.168083 2.449965 -1.664895 +v -0.168083 1.986305 -1.856950 +v -0.168083 0.991167 -1.856950 +v -0.168083 1.488737 -1.922456 +v -0.168083 0.527508 -1.664895 +v -0.107558 0.183060 -0.183059 +v -0.107557 3.245492 -0.183060 +v -0.107558 0.183059 -1.291355 +v -0.107557 3.200554 -0.461901 +v -0.107557 3.022266 -0.892325 +v -0.107557 2.738652 -1.261938 +v -0.107558 2.369039 -1.545552 +v -0.107558 1.938615 -1.723840 +v -0.107558 1.014811 -1.723840 +v -0.107557 1.476714 -1.784650 +v -0.107558 0.574264 -1.541358 +v -0.168083 3.397916 -0.100850 +v -0.166666 3.039069 -0.100000 +v -0.166666 2.708339 -0.100000 +v -0.166666 2.377609 -0.100000 +v -0.166666 2.046879 -0.100000 +v -0.166666 1.716149 -0.100000 +v -0.166666 1.385420 -0.100000 +v -0.166666 1.054690 -0.100000 +v -0.166666 0.723960 -0.100000 +v -0.166666 0.393230 -0.100000 +v -0.116666 0.393230 0.100000 +v -0.166666 0.393230 0.050000 +v -0.166666 0.047998 0.050000 +v -0.116666 0.047998 0.100000 +v -0.116666 3.039069 0.100000 +v -0.166666 3.039069 0.050000 +v -0.166666 2.708339 0.050000 +v -0.116666 2.708339 0.100000 +v -0.116666 2.377609 0.100000 +v -0.166666 2.377609 0.050000 +v -0.166666 2.046879 0.050000 +v -0.116666 2.046879 0.100000 +v -0.116666 1.716149 0.100000 +v -0.166666 1.716149 0.050000 +v -0.166666 1.385420 0.050000 +v -0.116666 1.385420 0.100000 +v -0.116666 1.054690 0.100000 +v -0.166666 1.054690 0.050000 +v -0.166666 0.723960 0.050000 +v -0.116666 0.723960 0.100000 +v 0.166667 0.047998 -0.183059 +v -0.166666 0.047998 -0.183059 +v 0.057399 2.947922 -0.628826 +v 0.057399 2.811188 -0.572189 +v 0.057399 2.754550 -0.435454 +v 0.057399 2.811188 -0.298720 +v 0.057399 2.947922 -0.242083 +v 0.057399 3.084657 -0.298720 +v 0.057399 3.141294 -0.435454 +v 0.057399 3.084657 -0.572189 +v 0.134706 2.811188 -0.572189 +v 0.134706 2.947922 -0.628826 +v 0.134706 2.754550 -0.435454 +v 0.134706 2.811188 -0.298720 +v 0.134706 2.947922 -0.242083 +v 0.134706 3.084657 -0.298720 +v 0.134706 3.141294 -0.435454 +v 0.134706 3.084657 -0.572189 +v -0.057398 2.947922 -0.628826 +v -0.057398 2.811188 -0.572189 +v -0.057398 2.754550 -0.435454 +v -0.057398 2.811188 -0.298720 +v -0.057398 2.947922 -0.242083 +v -0.057398 3.084657 -0.298720 +v -0.057398 3.141294 -0.435454 +v -0.057398 3.084657 -0.572189 +v -0.134705 2.811188 -0.572189 +v -0.134705 2.947922 -0.628826 +v -0.134705 2.754550 -0.435454 +v -0.134705 2.811188 -0.298720 +v -0.134705 2.947922 -0.242083 +v -0.134705 3.084657 -0.298720 +v -0.134705 3.141294 -0.435454 +v -0.134705 3.084657 -0.572189 +v 0.168084 3.397916 -0.100850 +v -0.166666 0.047998 -0.100000 +v 0.168084 3.397916 -0.184616 +v -0.168083 3.397916 -0.184616 +v 0.090995 0.595453 -0.114216 +v 0.090995 0.707781 -0.114216 +v 0.090995 0.595453 -1.616943 +v 0.090995 0.707781 -1.616943 +v 0.159155 0.609494 -0.114216 +v 0.159155 0.693740 -0.114216 +v 0.159155 0.609494 -1.616943 +v 0.159155 0.693740 -1.616943 +v 0.090995 1.262953 -0.114216 +v 0.090995 1.375282 -0.114216 +v 0.090995 1.262953 -1.841179 +v 0.090995 1.375282 -1.841179 +v 0.159155 1.276994 -0.114216 +v 0.159155 1.361241 -0.114216 +v 0.159155 1.276994 -1.841179 +v 0.159155 1.361241 -1.841179 +v 0.090995 1.930453 -0.114216 +v 0.090995 2.042782 -0.114216 +v 0.090995 1.930453 -1.753672 +v 0.090995 2.042782 -1.753672 +v 0.159155 1.944494 -0.114216 +v 0.159155 2.028741 -0.114216 +v 0.159155 1.944494 -1.753672 +v 0.159155 2.028741 -1.753672 +v 0.090995 2.597953 -0.114216 +v 0.090995 2.710282 -0.114216 +v 0.090995 2.597953 -1.403646 +v 0.090995 2.710282 -1.403646 +v 0.159155 2.611994 -0.114216 +v 0.159155 2.696241 -0.114216 +v 0.159155 2.611994 -1.403646 +v 0.159155 2.696241 -1.403646 +v -0.090994 0.595453 -0.114216 +v -0.090994 0.707781 -0.114216 +v -0.090994 0.595453 -1.616943 +v -0.090994 0.707781 -1.616943 +v -0.159155 0.609494 -0.114216 +v -0.159155 0.693740 -0.114216 +v -0.159155 0.609494 -1.616943 +v -0.159155 0.693740 -1.616943 +v -0.090994 1.262953 -0.114216 +v -0.090994 1.375282 -0.114216 +v -0.090994 1.262953 -1.841179 +v -0.090994 1.375282 -1.841179 +v -0.159155 1.276994 -0.114216 +v -0.159155 1.361241 -0.114216 +v -0.159155 1.276994 -1.841179 +v -0.159155 1.361241 -1.841179 +v -0.090994 1.930453 -0.114216 +v -0.090994 2.042782 -0.114216 +v -0.090994 1.930453 -1.753672 +v -0.090994 2.042782 -1.753672 +v -0.159155 1.944494 -0.114216 +v -0.159155 2.028741 -0.114216 +v -0.159155 1.944494 -1.753672 +v -0.159155 2.028741 -1.753672 +v -0.090994 2.597953 -0.114216 +v -0.090994 2.710282 -0.114216 +v -0.090994 2.597953 -1.403646 +v -0.090994 2.710282 -1.403646 +v -0.159155 2.611994 -0.114216 +v -0.159155 2.696241 -0.114216 +v -0.159155 2.611994 -1.403646 +v -0.159155 2.696241 -1.403646 +vt 0.633615 0.502400 +vt 0.743307 0.497980 +vt 0.743307 0.502401 +vt 0.739233 0.919405 +vt 0.744584 0.823957 +vt 0.744584 0.919405 +vt 0.749004 0.823957 +vt 0.749004 0.919405 +vt 0.734812 0.919405 +vt 0.739233 0.823957 +vt 0.772094 0.236682 +vt 0.662402 0.231331 +vt 0.772094 0.231331 +vt 0.662402 0.226911 +vt 0.772094 0.226911 +vt 0.772094 0.241103 +vt 0.662402 0.236682 +vt 0.005495 0.876659 +vt 0.109628 0.882010 +vt 0.005495 0.882010 +vt 0.109628 0.886430 +vt 0.005495 0.886430 +vt 0.005495 0.872239 +vt 0.109628 0.876659 +vt 0.261809 0.876921 +vt 0.343710 0.882272 +vt 0.261809 0.882272 +vt 0.343710 0.886692 +vt 0.261809 0.886692 +vt 0.261809 0.872501 +vt 0.343710 0.876921 +vt 0.633615 0.507752 +vt 0.743307 0.507752 +vt 0.633615 0.512172 +vt 0.743307 0.512172 +vt 0.719403 0.823957 +vt 0.723823 0.919405 +vt 0.719403 0.919405 +vt 0.709632 0.823957 +vt 0.714052 0.919405 +vt 0.709632 0.919405 +vt 0.714052 0.823957 +vt 0.858429 0.502401 +vt 0.754296 0.507752 +vt 0.754296 0.502401 +vt 0.418177 0.958691 +vt 0.413756 0.876791 +vt 0.418177 0.876791 +vt 0.427948 0.958691 +vt 0.423528 0.876791 +vt 0.427948 0.876791 +vt 0.423528 0.958691 +vt 0.858429 0.507752 +vt 0.754296 0.512172 +vt 0.858429 0.497980 +vt 0.754296 0.497980 +vt 0.633615 0.497980 +vt 0.734812 0.823957 +vt 0.662402 0.241102 +vt 0.109628 0.872239 +vt 0.343710 0.872501 +vt 0.723823 0.823957 +vt 0.413756 0.958691 +vt 0.858429 0.512172 +vt 0.993787 0.200005 +vt 0.990032 0.005495 +vt 0.993787 0.005495 +vt 0.960586 0.378465 +vt 0.964341 0.348873 +vt 0.964341 0.378465 +vt 0.960586 0.497528 +vt 0.964341 0.467240 +vt 0.964341 0.497528 +vt 0.947698 0.768695 +vt 0.926346 0.736818 +vt 0.947698 0.736818 +vt 0.676169 0.690209 +vt 0.656390 0.665899 +vt 0.664845 0.662870 +vt 0.717658 0.731702 +vt 0.687992 0.720640 +vt 0.694182 0.713686 +vt 0.762708 0.745883 +vt 0.742731 0.752246 +vt 0.744997 0.743027 +vt 0.347265 0.411967 +vt 0.327288 0.405604 +vt 0.347166 0.402285 +vt 0.329554 0.414822 +vt 0.297838 0.417804 +vt 0.302215 0.426148 +vt 0.272550 0.437210 +vt 0.278739 0.444163 +vt 0.253145 0.462500 +vt 0.260726 0.467640 +vt 0.240947 0.491951 +vt 0.245539 0.524318 +vt 0.240946 0.555159 +vt 0.236786 0.523555 +vt 0.249402 0.494980 +vt 0.249401 0.553657 +vt 0.253144 0.584609 +vt 0.276870 0.606488 +vt 0.260991 0.581640 +vt 0.038696 0.698926 +vt 0.062172 0.680912 +vt 0.107223 0.861250 +vt 0.960586 0.082619 +vt 0.964341 0.112210 +vt 0.960586 0.112210 +vt 0.960586 0.005495 +vt 0.964341 0.023434 +vt 0.960586 0.023434 +vt 0.960586 0.200985 +vt 0.964341 0.231273 +vt 0.960586 0.231273 +vt 0.964341 0.141802 +vt 0.960586 0.141802 +vt 0.964341 0.053027 +vt 0.960586 0.053026 +vt 0.964341 0.260761 +vt 0.960586 0.260761 +vt 0.960586 0.171394 +vt 0.964341 0.200985 +vt 0.964341 0.082619 +vt 0.599944 0.947302 +vt 0.596189 0.876906 +vt 0.599943 0.876906 +vt 0.964341 0.171394 +vt 0.993787 0.210994 +vt 0.990032 0.405504 +vt 0.990032 0.210994 +vt 0.685939 0.766554 +vt 0.664932 0.776082 +vt 0.664932 0.766554 +vt 0.261809 0.897681 +vt 0.284602 0.918944 +vt 0.261809 0.919034 +vt 0.173950 0.922286 +vt 0.152778 0.943293 +vt 0.152778 0.922286 +vt 0.141789 0.922286 +vt 0.120617 0.943293 +vt 0.120617 0.922286 +vt 0.504679 0.901930 +vt 0.525686 0.923102 +vt 0.504679 0.923102 +vt 0.752490 0.800264 +vt 0.742962 0.779257 +vt 0.752490 0.779257 +vt 0.564552 0.766170 +vt 0.543545 0.775698 +vt 0.543545 0.766170 +vt 0.621955 0.766170 +vt 0.600948 0.775698 +vt 0.600948 0.766170 +vt 0.507149 0.795010 +vt 0.485221 0.799501 +vt 0.485221 0.795010 +vt 0.664932 0.780573 +vt 0.685939 0.776082 +vt 0.685939 0.780573 +vt 0.600948 0.780189 +vt 0.621955 0.775698 +vt 0.621955 0.780189 +vt 0.738471 0.779257 +vt 0.742962 0.800264 +vt 0.738471 0.800264 +vt 0.543545 0.780189 +vt 0.564552 0.775698 +vt 0.564552 0.780189 +vt 0.485221 0.809029 +vt 0.507149 0.799501 +vt 0.507149 0.809029 +vt 0.723651 0.800264 +vt 0.564552 0.795010 +vt 0.485221 0.780189 +vt 0.519852 0.798186 +vt 0.510325 0.798186 +vt 0.493690 0.901930 +vt 0.472517 0.922937 +vt 0.472517 0.901930 +vt 0.530841 0.777013 +vt 0.540369 0.777013 +vt 0.741647 0.766554 +vt 0.741647 0.776082 +vt 0.588244 0.777013 +vt 0.597772 0.777013 +vt 0.652229 0.777397 +vt 0.661756 0.777397 +vt 0.947698 0.948231 +vt 0.926346 0.928078 +vt 0.947698 0.928078 +vt 0.668587 0.573240 +vt 0.692313 0.551361 +vt 0.676434 0.576210 +vt 0.960586 0.319281 +vt 0.964341 0.289690 +vt 0.964341 0.319281 +vt 0.713281 0.740046 +vt 0.668588 0.695350 +vt 0.660982 0.633531 +vt 0.656389 0.602691 +vt 0.664844 0.604193 +vt 0.118212 0.748902 +vt 0.122074 0.719563 +vt 0.219940 0.666733 +vt 0.960586 0.408057 +vt 0.964341 0.408057 +vt 0.960586 0.289690 +vt 0.964341 0.271750 +vt 0.964341 0.437648 +vt 0.960586 0.467240 +vt 0.664932 0.799885 +vt 0.685939 0.809412 +vt 0.664932 0.809412 +vt 0.960586 0.348873 +vt 0.614687 0.876906 +vt 0.610933 0.947302 +vt 0.610933 0.876906 +vt 0.960586 0.527017 +vt 0.964341 0.527017 +vt 0.543545 0.799501 +vt 0.564552 0.809029 +vt 0.543545 0.809029 +vt 0.719159 0.779257 +vt 0.709632 0.800264 +vt 0.709632 0.779257 +vt 0.600948 0.799501 +vt 0.621955 0.809029 +vt 0.600948 0.809029 +vt 0.685939 0.799885 +vt 0.664932 0.795393 +vt 0.685939 0.795393 +vt 0.485221 0.775698 +vt 0.507149 0.780189 +vt 0.621955 0.799501 +vt 0.600948 0.795010 +vt 0.621955 0.795010 +vt 0.564552 0.799501 +vt 0.543545 0.795010 +vt 0.719159 0.800264 +vt 0.723651 0.779257 +vt 0.507149 0.775698 +vt 0.485221 0.766170 +vt 0.507149 0.766170 +vt 0.762708 0.542778 +vt 0.762708 0.551357 +vt 0.347265 0.615072 +vt 0.268302 0.615067 +vt 0.472517 0.777013 +vt 0.577255 0.798186 +vt 0.720475 0.812968 +vt 0.634658 0.798186 +vt 0.698643 0.798569 +vt 0.926346 0.896201 +vt 0.947698 0.896201 +vt 0.926346 0.864325 +vt 0.947698 0.864325 +vt 0.926346 0.832448 +vt 0.947698 0.832448 +vt 0.926346 0.800571 +vt 0.947698 0.800571 +vt 0.926346 0.768695 +vt 0.652229 0.634295 +vt 0.926346 0.704941 +vt 0.947698 0.704941 +vt 0.926346 0.670920 +vt 0.947698 0.670920 +vt 0.947608 0.591958 +vt 0.926436 0.591957 +vt 0.947698 0.953551 +vt 0.926346 0.948231 +vt 0.443847 0.895592 +vt 0.438937 0.904993 +vt 0.438937 0.895592 +vt 0.443847 0.904993 +vt 0.438937 0.914393 +vt 0.443847 0.914393 +vt 0.438937 0.923794 +vt 0.443847 0.923794 +vt 0.438937 0.933194 +vt 0.443847 0.933194 +vt 0.438937 0.942595 +vt 0.443847 0.942595 +vt 0.438937 0.951995 +vt 0.443847 0.876791 +vt 0.438937 0.886191 +vt 0.438937 0.876791 +vt 0.443847 0.886191 +vt 0.454837 0.923794 +vt 0.459747 0.933194 +vt 0.454837 0.933194 +vt 0.454837 0.914393 +vt 0.459747 0.923794 +vt 0.454837 0.904993 +vt 0.459747 0.914393 +vt 0.454837 0.895592 +vt 0.459747 0.904993 +vt 0.454837 0.886191 +vt 0.459747 0.895592 +vt 0.454837 0.876791 +vt 0.459747 0.886191 +vt 0.454837 0.942595 +vt 0.459747 0.951995 +vt 0.454837 0.951995 +vt 0.459747 0.942595 +vt 0.025527 0.900082 +vt 0.029124 0.908767 +vt 0.004560 0.908767 +vt 0.863808 0.746128 +vt 0.858532 0.958902 +vt 0.858487 0.746127 +vt 0.842223 0.746128 +vt 0.847498 0.958897 +vt 0.842177 0.958898 +vt 0.042481 0.916865 +vt 0.038915 0.908257 +vt 0.063262 0.908257 +vt 0.990032 0.200005 +vt 0.762609 0.755565 +vt 0.107223 0.666733 +vt 0.089512 0.669587 +vt 0.036827 0.861250 +vt 0.020948 0.836401 +vt 0.009357 0.808419 +vt 0.005495 0.779081 +vt 0.009357 0.749742 +vt 0.020681 0.722403 +vt 0.964341 0.005495 +vt 0.596189 0.947302 +vt 0.993787 0.405504 +vt 0.284602 0.897771 +vt 0.173950 0.943293 +vt 0.141789 0.943293 +vt 0.525686 0.901930 +vt 0.510325 0.777013 +vt 0.519852 0.777013 +vt 0.493690 0.922937 +vt 0.540369 0.798186 +vt 0.530841 0.798186 +vt 0.720475 0.776082 +vt 0.720475 0.766554 +vt 0.597772 0.798186 +vt 0.588244 0.798186 +vt 0.661756 0.798569 +vt 0.652229 0.798569 +vt 0.683745 0.542783 +vt 0.149544 0.666733 +vt 0.133665 0.691581 +vt 0.219940 0.861250 +vt 0.202229 0.858395 +vt 0.174890 0.847071 +vt 0.151413 0.829057 +vt 0.133399 0.805580 +vt 0.122074 0.778241 +vt 0.960586 0.271750 +vt 0.960586 0.437648 +vt 0.614687 0.947302 +vt 0.347265 0.606493 +vt 0.482045 0.798186 +vt 0.472517 0.798186 +vt 0.482045 0.777013 +vt 0.567728 0.777013 +vt 0.577255 0.777013 +vt 0.567728 0.798186 +vt 0.741647 0.803440 +vt 0.741647 0.812968 +vt 0.720475 0.803440 +vt 0.625130 0.777013 +vt 0.634658 0.777013 +vt 0.625130 0.798186 +vt 0.689115 0.777397 +vt 0.698643 0.777397 +vt 0.689115 0.798569 +vt 0.926436 0.586682 +vt 0.947608 0.586682 +vt 0.926346 0.953551 +vt 0.443847 0.951995 +vt 0.459747 0.876791 +vt 0.025527 0.917452 +vt 0.016842 0.921049 +vt 0.008157 0.917452 +vt 0.008157 0.900082 +vt 0.016842 0.896485 +vt 0.863808 0.958903 +vt 0.847498 0.746127 +vt 0.042481 0.899649 +vt 0.051089 0.896083 +vt 0.059697 0.899649 +vt 0.059697 0.916865 +vt 0.051089 0.920430 +vn -0.2018 0.9794 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.2018 -0.9794 0.0000 +vn 0.2018 0.9794 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.2018 -0.9794 0.0000 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.4624 0.8867 +vn 0.0000 0.2588 0.9659 +vn 0.0000 -0.2588 -0.9659 +vn -1.0000 -0.0049 0.0086 +vn -0.9999 -0.0027 0.0097 +vn -0.9999 -0.0025 0.0097 +vn -1.0000 -0.0083 0.0048 +vn -1.0000 -0.0069 0.0068 +vn -1.0000 -0.0068 0.0069 +vn -1.0000 -0.0093 0.0015 +vn -1.0000 -0.0091 0.0026 +vn 1.0000 -0.0093 0.0015 +vn 1.0000 -0.0091 0.0026 +vn 1.0000 -0.0083 0.0048 +vn 1.0000 -0.0069 0.0068 +vn 1.0000 -0.0068 0.0069 +vn 1.0000 -0.0050 0.0085 +vn 1.0000 -0.0049 0.0086 +vn 0.9999 -0.0027 0.0097 +vn 0.9999 0.0001 0.0103 +vn 0.9999 0.0027 0.0102 +vn 0.9999 -0.0001 0.0103 +vn 0.9999 -0.0025 0.0097 +vn 0.9999 0.0028 0.0101 +vn 0.9999 0.0047 0.0093 +vn 1.0000 0.0067 0.0038 +vn 0.9999 0.0051 0.0096 +vn 0.0000 -0.9873 0.1591 +vn 0.0000 -0.9621 0.2727 +vn 0.0000 -0.2588 0.9659 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.5385 0.8426 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.0024 1.0000 +vn 0.7071 0.0000 0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.9966 -0.0826 +vn 0.0000 0.9613 -0.2754 +vn -0.9999 0.0047 0.0093 +vn -1.0000 0.0067 0.0038 +vn -0.9999 0.0051 0.0096 +vn -1.0000 -0.0050 0.0085 +vn -0.9999 0.0001 0.0103 +vn -0.9999 0.0027 0.0102 +vn -0.9999 0.0028 0.0101 +vn -0.7071 0.0000 0.7071 +vn -1.0000 0.0007 0.0001 +vn 1.0000 0.0007 0.0001 +vn 1.0000 0.0058 0.0047 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 0.2588 -0.9659 +vn -0.9999 -0.0001 0.0103 +vn 0.0000 -0.4144 -0.9101 +vn 0.0000 -0.4456 -0.8952 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 1.0000 -0.0004 0.0000 +vn -1.0000 -0.0004 0.0000 +vn -1.0000 0.0058 0.0047 +s off +f 442/455/37 440/456/37 444/457/37 +f 404/458/38 401/459/38 403/460/38 +f 403/460/39 397/461/39 399/462/39 +f 400/463/40 402/464/40 404/458/40 +f 412/465/38 409/466/38 411/467/38 +f 411/467/39 405/468/39 407/469/39 +f 408/470/40 410/471/40 412/465/40 +f 420/472/38 417/473/38 419/474/38 +f 419/474/39 413/475/39 415/476/39 +f 416/477/40 418/478/40 420/472/40 +f 428/479/38 425/480/38 427/481/38 +f 427/481/39 421/482/39 423/483/39 +f 424/484/40 426/485/40 428/479/40 +f 441/486/41 444/457/41 443/487/41 +f 437/488/42 443/487/42 439/489/42 +f 434/490/37 432/491/37 436/492/37 +f 429/493/42 435/494/42 431/495/42 +f 433/496/41 436/492/41 435/494/41 +f 449/497/41 452/498/41 451/499/41 +f 458/500/37 456/501/37 460/502/37 +f 453/503/42 459/504/42 455/505/42 +f 457/506/41 460/502/41 459/504/41 +f 450/507/37 448/508/37 452/498/37 +f 445/509/42 451/499/42 447/510/42 +f 442/455/37 438/511/37 440/456/37 +f 404/458/38 402/464/38 401/459/38 +f 403/460/39 401/459/39 397/461/39 +f 400/463/40 398/512/40 402/464/40 +f 412/465/38 410/471/38 409/466/38 +f 411/467/39 409/466/39 405/468/39 +f 408/470/40 406/513/40 410/471/40 +f 420/472/38 418/478/38 417/473/38 +f 419/474/39 417/473/39 413/475/39 +f 416/477/40 414/514/40 418/478/40 +f 428/479/38 426/485/38 425/480/38 +f 427/481/39 425/480/39 421/482/39 +f 424/484/40 422/515/40 426/485/40 +f 441/486/41 442/455/41 444/457/41 +f 437/488/42 441/486/42 443/487/42 +f 434/490/37 430/516/37 432/491/37 +f 429/493/42 433/496/42 435/494/42 +f 433/496/41 434/490/41 436/492/41 +f 449/497/41 450/507/41 452/498/41 +f 458/500/37 454/517/37 456/501/37 +f 453/503/42 457/506/42 459/504/42 +f 457/506/41 458/500/41 460/502/41 +f 450/507/37 446/518/37 448/508/37 +f 445/509/42 449/497/42 451/499/42 +s 1 +f 247/519/43 258/520/43 250/521/43 +f 324/522/44 304/523/45 303/524/44 +f 328/525/46 300/526/47 299/527/46 +f 316/528/43 254/529/48 315/530/48 +f 303/531/49 314/532/50 302/533/51 +f 305/534/52 312/535/53 304/536/54 +f 311/537/55 309/538/56 306/539/56 +f 250/540/57 248/541/58 395/542/57 +f 245/543/58 249/544/59 248/541/58 +f 244/545/59 251/546/60 249/544/59 +f 243/547/61 252/548/62 251/546/60 +f 242/549/63 253/550/64 252/548/62 +f 240/551/65 254/552/66 255/553/67 +f 241/554/68 255/553/67 253/550/64 +f 239/555/69 256/556/70 254/552/66 +f 237/557/71 256/556/70 238/558/72 +f 262/559/38 261/560/38 257/561/38 +f 243/562/45 263/563/44 242/564/44 +f 250/565/73 260/566/74 245/567/74 +f 239/568/47 267/569/46 238/570/46 +f 242/564/44 264/571/75 241/572/75 +f 245/567/74 261/573/76 244/574/76 +f 238/570/46 259/575/77 237/576/77 +f 240/577/78 265/578/47 239/568/47 +f 244/574/76 262/579/45 243/562/45 +f 237/580/79 257/581/79 247/582/79 +f 241/572/75 266/583/78 240/577/78 +f 319/584/43 308/585/43 311/586/43 +f 269/587/38 284/588/38 270/589/38 +f 329/590/80 269/591/80 393/592/80 +f 331/593/78 271/594/78 270/595/78 +f 333/596/78 273/597/78 272/598/78 +f 335/599/78 275/600/78 274/601/78 +f 273/602/38 292/603/38 274/604/38 +f 275/605/38 296/606/38 276/607/38 +f 271/608/38 288/609/38 272/610/38 +f 281/611/81 279/612/81 278/613/81 +f 285/614/81 283/615/81 282/616/81 +f 289/617/81 287/618/81 286/619/81 +f 293/620/81 291/621/81 290/622/81 +f 297/623/81 295/624/81 294/625/81 +f 277/626/38 280/627/38 268/628/38 +f 351/629/78 293/620/78 290/622/78 +f 355/630/78 297/623/78 294/625/78 +f 339/631/78 281/611/78 278/613/78 +f 268/632/82 280/633/82 281/611/82 +f 337/634/78 277/635/78 276/636/78 +f 276/637/82 296/638/82 297/623/82 +f 274/639/82 292/640/82 293/620/82 +f 272/641/82 288/642/82 289/617/82 +f 270/643/82 284/644/82 285/614/82 +f 396/645/83 248/646/84 309/647/84 +f 317/648/85 298/649/86 299/650/87 +f 322/651/76 306/652/74 305/653/76 +f 306/539/56 310/654/52 305/534/52 +f 304/536/54 313/655/88 303/531/49 +f 301/656/89 315/657/90 300/658/91 +f 327/659/41 326/660/41 318/661/41 +f 300/658/91 317/648/85 299/650/87 +f 325/662/75 303/524/44 302/663/75 +f 321/664/74 311/665/73 306/652/74 +f 301/666/78 325/662/75 302/663/75 +f 326/667/47 301/666/78 300/526/47 +f 345/668/41 330/669/41 331/670/41 +f 323/671/45 305/653/76 304/523/45 +f 318/672/79 298/673/79 308/674/79 +f 320/675/77 299/527/46 298/676/77 +f 357/677/41 336/678/41 337/679/41 +f 353/680/41 334/681/41 335/682/41 +f 349/683/41 332/684/41 333/685/41 +f 344/686/92 346/687/92 343/688/92 +f 340/689/92 342/690/92 339/631/92 +f 348/691/92 350/692/92 347/693/92 +f 356/694/92 358/695/92 355/630/92 +f 352/696/92 354/697/92 351/629/92 +f 341/698/41 338/699/41 394/700/41 +f 298/649/86 360/701/93 308/702/41 +f 347/693/78 289/617/78 286/619/78 +f 237/557/71 359/703/94 246/704/95 +f 343/688/78 285/614/78 282/616/78 +f 339/631/79 278/613/79 338/705/79 +f 355/630/79 294/625/79 336/706/79 +f 351/629/79 290/622/79 334/707/79 +f 347/693/79 286/619/79 332/708/79 +f 343/688/79 282/616/79 330/709/79 +f 309/647/84 249/710/96 310/711/96 +f 310/711/96 251/712/97 312/713/97 +f 312/713/97 252/714/98 313/715/98 +f 313/715/98 253/716/99 314/717/99 +f 316/528/43 253/716/99 255/718/43 +f 302/533/51 316/719/100 301/656/89 +f 315/530/48 256/720/101 317/721/101 +f 317/721/101 246/722/102 307/723/102 +f 360/724/82 246/722/82 359/725/82 +f 329/726/79 395/727/83 396/645/83 +f 370/728/43 362/729/103 361/730/43 +f 369/731/103 363/732/82 362/729/103 +f 371/733/82 364/734/45 363/732/82 +f 372/735/45 365/736/78 364/734/45 +f 373/737/78 366/738/104 365/736/78 +f 374/739/104 367/740/79 366/738/104 +f 375/741/79 368/742/97 367/743/79 +f 376/744/97 361/730/43 368/742/97 +f 378/745/103 386/746/43 377/747/43 +f 379/748/82 385/749/103 378/745/103 +f 380/750/45 387/751/82 379/748/82 +f 381/752/78 388/753/45 380/750/45 +f 382/754/104 389/755/78 381/752/78 +f 383/756/79 390/757/104 382/754/104 +f 384/758/97 391/759/79 383/760/79 +f 377/747/43 392/761/97 384/758/97 +f 392/762/41 386/763/41 389/764/41 +f 393/765/105 359/766/105 395/767/105 +f 360/768/106 329/769/106 396/770/106 +f 372/771/38 371/772/38 375/773/38 +f 247/519/43 257/774/43 258/520/43 +f 324/522/44 323/671/45 304/523/45 +f 328/525/46 326/667/47 300/526/47 +f 316/528/43 255/718/43 254/529/48 +f 303/531/49 313/655/88 314/532/50 +f 305/534/52 310/654/52 312/535/53 +f 311/537/55 396/775/55 309/538/56 +f 250/540/57 245/543/58 248/541/58 +f 245/543/58 244/545/59 249/544/59 +f 244/545/59 243/547/61 251/546/60 +f 243/547/61 242/549/63 252/548/62 +f 242/549/63 241/554/68 253/550/64 +f 240/551/65 239/555/69 254/552/66 +f 241/554/68 240/551/65 255/553/67 +f 239/555/69 238/558/72 256/556/70 +f 237/557/71 246/704/95 256/556/70 +f 258/776/38 257/561/38 260/777/38 +f 257/561/38 259/778/38 267/779/38 +f 260/777/38 257/561/38 261/560/38 +f 267/779/38 265/780/38 257/561/38 +f 265/780/38 266/781/38 257/561/38 +f 266/781/38 264/782/38 257/561/38 +f 264/782/38 263/783/38 257/561/38 +f 263/783/38 262/559/38 257/561/38 +f 243/562/45 262/579/45 263/563/44 +f 250/565/73 258/784/73 260/566/74 +f 239/568/47 265/578/47 267/569/46 +f 242/564/44 263/563/44 264/571/75 +f 245/567/74 260/566/74 261/573/76 +f 238/570/46 267/569/46 259/575/77 +f 240/577/78 266/583/78 265/578/47 +f 244/574/76 261/573/76 262/579/45 +f 237/580/79 259/785/79 257/581/79 +f 241/572/75 264/571/75 266/583/78 +f 319/584/43 318/786/43 308/585/43 +f 269/587/38 283/615/38 284/588/38 +f 329/590/80 330/787/80 269/591/80 +f 331/593/78 332/788/78 271/594/78 +f 333/596/78 334/789/78 273/597/78 +f 335/599/78 336/790/78 275/600/78 +f 273/602/38 291/621/38 292/603/38 +f 275/605/38 295/624/38 296/606/38 +f 271/608/38 287/618/38 288/609/38 +f 281/611/81 280/627/81 279/612/81 +f 285/614/81 284/588/81 283/615/81 +f 289/617/81 288/609/81 287/618/81 +f 293/620/81 292/603/81 291/621/81 +f 297/623/81 296/606/81 295/624/81 +f 277/626/38 279/612/38 280/627/38 +f 351/629/78 354/697/78 293/620/78 +f 355/630/78 358/695/78 297/623/78 +f 339/631/78 342/690/78 281/611/78 +f 281/611/82 342/690/82 268/632/82 +f 342/690/82 341/791/82 394/792/82 +f 268/632/82 342/690/82 394/792/82 +f 337/634/78 338/793/78 277/635/78 +f 297/623/82 358/695/82 276/637/82 +f 358/695/82 357/794/82 337/795/82 +f 276/637/82 358/695/82 337/795/82 +f 293/620/82 354/697/82 274/639/82 +f 354/697/82 353/796/82 335/797/82 +f 274/639/82 354/697/82 335/797/82 +f 289/617/82 350/692/82 272/641/82 +f 350/692/82 349/798/82 333/799/82 +f 272/641/82 350/692/82 333/799/82 +f 285/614/82 346/687/82 270/643/82 +f 346/687/82 345/800/82 331/801/82 +f 270/643/82 346/687/82 331/801/82 +f 396/645/83 395/727/83 248/646/84 +f 317/648/85 307/802/107 298/649/86 +f 322/651/76 321/664/74 306/652/74 +f 306/539/56 309/538/56 310/654/52 +f 304/536/54 312/535/53 313/655/88 +f 301/656/89 316/719/100 315/657/90 +f 320/803/41 318/661/41 328/804/41 +f 318/661/41 319/805/41 321/806/41 +f 328/804/41 318/661/41 326/660/41 +f 321/806/41 322/807/41 318/661/41 +f 322/807/41 323/808/41 318/661/41 +f 323/808/41 324/809/41 318/661/41 +f 324/809/41 325/810/41 318/661/41 +f 325/810/41 327/659/41 318/661/41 +f 300/658/91 315/657/90 317/648/85 +f 325/662/75 324/522/44 303/524/44 +f 321/664/74 319/811/73 311/665/73 +f 301/666/78 327/812/78 325/662/75 +f 326/667/47 327/812/78 301/666/78 +f 345/668/41 344/686/41 330/669/41 +f 323/671/45 322/651/76 305/653/76 +f 318/672/79 320/813/79 298/673/79 +f 320/675/77 328/525/46 299/527/46 +f 357/677/41 356/694/41 336/678/41 +f 353/680/41 352/696/41 334/681/41 +f 349/683/41 348/691/41 332/684/41 +f 344/686/92 345/668/92 346/687/92 +f 340/689/92 341/698/92 342/690/92 +f 348/691/92 349/683/92 350/692/92 +f 356/694/92 357/677/92 358/695/92 +f 352/696/92 353/680/92 354/697/92 +f 341/698/41 340/689/41 338/699/41 +f 298/649/86 307/802/107 360/701/93 +f 347/693/78 350/692/78 289/617/78 +f 237/557/71 247/814/38 359/703/94 +f 343/688/78 346/687/78 285/614/78 +f 279/815/79 277/816/79 278/613/79 +f 277/816/79 338/705/79 278/613/79 +f 338/705/79 340/817/79 339/631/79 +f 295/818/79 275/819/79 294/625/79 +f 275/819/79 336/706/79 294/625/79 +f 336/706/79 356/820/79 355/630/79 +f 291/821/79 273/822/79 290/622/79 +f 273/822/79 334/707/79 290/622/79 +f 334/707/79 352/823/79 351/629/79 +f 287/824/79 271/825/79 286/619/79 +f 271/825/79 332/708/79 286/619/79 +f 332/708/79 348/826/79 347/693/79 +f 283/827/79 269/828/79 282/616/79 +f 269/828/79 330/709/79 282/616/79 +f 330/709/79 344/829/79 343/688/79 +f 309/647/84 248/646/84 249/710/96 +f 310/711/96 249/710/96 251/712/97 +f 312/713/97 251/712/97 252/714/98 +f 313/715/98 252/714/98 253/716/99 +f 316/528/43 314/717/99 253/716/99 +f 302/533/51 314/532/50 316/719/100 +f 315/530/48 254/529/48 256/720/101 +f 317/721/101 256/720/101 246/722/102 +f 268/830/82 394/831/82 360/724/82 +f 360/724/82 307/723/82 246/722/82 +f 359/725/82 268/830/82 360/724/82 +f 329/726/79 393/832/79 395/727/83 +f 370/728/43 369/731/103 362/729/103 +f 369/731/103 371/733/82 363/732/82 +f 371/733/82 372/735/45 364/734/45 +f 372/735/45 373/737/78 365/736/78 +f 373/737/78 374/739/104 366/738/104 +f 374/739/104 375/833/79 367/740/79 +f 375/741/79 376/744/97 368/742/97 +f 376/744/97 370/728/43 361/730/43 +f 378/745/103 385/749/103 386/746/43 +f 379/748/82 387/751/82 385/749/103 +f 380/750/45 388/753/45 387/751/82 +f 381/752/78 389/755/78 388/753/45 +f 382/754/104 390/757/104 389/755/78 +f 383/756/79 391/834/79 390/757/104 +f 384/758/97 392/761/97 391/759/79 +f 377/747/43 386/746/43 392/761/97 +f 386/763/41 385/835/41 389/764/41 +f 385/835/41 387/836/41 389/764/41 +f 387/836/41 388/837/41 389/764/41 +f 389/764/41 390/838/41 391/839/41 +f 391/839/41 392/762/41 389/764/41 +f 393/765/105 268/840/105 359/766/105 +f 360/768/106 394/841/106 329/769/106 +f 371/772/38 369/842/38 375/773/38 +f 369/842/38 370/843/38 375/773/38 +f 370/843/38 376/844/38 375/773/38 +f 375/773/38 374/845/38 373/846/38 +f 373/846/38 372/771/38 375/773/38 +o doorLeft +v 0.166667 0.183059 1.291355 +v 0.166667 0.574264 1.541358 +v 0.166667 1.014811 1.723840 +v 0.166667 1.476714 1.784650 +v 0.166667 1.938615 1.723840 +v 0.166667 2.369039 1.545552 +v 0.166667 2.738652 1.261938 +v 0.166667 3.022266 0.892325 +v 0.166667 3.200554 0.461901 +v 0.168084 0.047998 1.426236 +v 0.166667 0.183060 0.183059 +v 0.168084 3.345687 0.497568 +v 0.168084 3.153632 0.961228 +v 0.166667 3.245492 0.183060 +v 0.168084 2.848119 1.359382 +v 0.168084 2.449965 1.664895 +v 0.168084 1.986305 1.856950 +v 0.168084 0.991167 1.856950 +v 0.168084 1.488737 1.922456 +v 0.168084 0.527508 1.664895 +v 0.107558 0.183060 0.183059 +v 0.107558 3.245492 0.183060 +v 0.107558 0.183059 1.291355 +v 0.107558 3.200554 0.461901 +v 0.107558 3.022266 0.892325 +v 0.107558 2.738652 1.261938 +v 0.107558 2.369039 1.545552 +v 0.107558 1.938615 1.723840 +v 0.107558 1.014811 1.723840 +v 0.107558 1.476714 1.784650 +v 0.107558 0.574264 1.541358 +v 0.168084 3.397916 0.100850 +v 0.166667 3.039069 0.100000 +v 0.166667 2.708339 0.100000 +v 0.166667 2.377609 0.100000 +v 0.166667 2.046879 0.100000 +v 0.166667 1.716149 0.100000 +v 0.166667 1.385420 0.100000 +v 0.166667 1.054690 0.100000 +v 0.166667 0.723960 0.100000 +v 0.166667 0.393230 0.100000 +v -0.166666 0.183059 1.291355 +v -0.166666 0.574264 1.541358 +v -0.166666 1.014811 1.723840 +v -0.166666 1.476714 1.784650 +v -0.166666 1.938615 1.723840 +v -0.166666 2.369039 1.545552 +v -0.166666 2.738652 1.261938 +v -0.166666 3.022266 0.892325 +v -0.166666 3.200554 0.461901 +v -0.168083 0.047998 1.426236 +v -0.166666 0.183060 0.183059 +v -0.168083 3.345687 0.497568 +v -0.168083 3.153632 0.961228 +v -0.166666 3.245492 0.183060 +v -0.168083 2.848119 1.359382 +v -0.168083 2.449965 1.664895 +v -0.168083 1.986305 1.856950 +v -0.168083 0.991167 1.856950 +v -0.168083 1.488737 1.922456 +v -0.168083 0.527508 1.664895 +v -0.107558 0.183060 0.183059 +v -0.107557 3.245492 0.183060 +v -0.107558 0.183059 1.291355 +v -0.107557 3.200554 0.461901 +v -0.107557 3.022266 0.892325 +v -0.107557 2.738652 1.261938 +v -0.107558 2.369039 1.545552 +v -0.107558 1.938615 1.723840 +v -0.107558 1.014811 1.723840 +v -0.107557 1.476714 1.784650 +v -0.107558 0.574264 1.541358 +v -0.166666 3.039069 0.100000 +v -0.166666 2.708339 0.100000 +v -0.166666 2.377609 0.100000 +v -0.166666 2.046879 0.100000 +v -0.166666 1.716149 0.100000 +v -0.166666 1.385420 0.100000 +v -0.166666 1.054690 0.100000 +v -0.166666 0.723960 0.100000 +v -0.166666 0.393230 0.100000 +v 0.166667 0.047999 0.183059 +v -0.168083 3.397916 0.184616 +v 0.168084 3.397916 -0.050425 +v 0.117658 3.397916 -0.100850 +v 0.116667 3.039069 -0.100000 +v 0.166667 3.039069 -0.050000 +v 0.166667 2.708339 -0.050000 +v 0.116667 2.708339 -0.100000 +v 0.116667 2.377609 -0.100000 +v 0.166667 2.377609 -0.050000 +v 0.166667 2.046879 -0.050000 +v 0.116667 2.046879 -0.100000 +v 0.116667 1.716149 -0.100000 +v 0.166667 1.716149 -0.050000 +v 0.166667 1.385420 -0.050000 +v 0.116667 1.385420 -0.100000 +v 0.116667 1.054690 -0.100000 +v 0.166667 1.054690 -0.050000 +v 0.166667 0.723960 -0.050000 +v 0.116667 0.723960 -0.100000 +v 0.116667 0.393230 -0.100000 +v 0.166667 0.393230 -0.050000 +v -0.168083 3.397916 -0.050425 +v -0.117658 3.397916 -0.100850 +v -0.116666 3.039069 -0.100000 +v -0.166666 3.039069 -0.050000 +v -0.166666 2.708339 -0.050000 +v -0.116666 2.708339 -0.100000 +v -0.116666 2.377609 -0.100000 +v -0.166666 2.377609 -0.050000 +v -0.166666 2.046879 -0.050000 +v -0.116666 2.046879 -0.100000 +v -0.116666 1.716149 -0.100000 +v -0.166666 1.716149 -0.050000 +v -0.166666 1.385420 -0.050000 +v -0.116666 1.385420 -0.100000 +v -0.116666 1.054690 -0.100000 +v -0.166666 1.054690 -0.050000 +v -0.166666 0.723960 -0.050000 +v -0.116666 0.723960 -0.100000 +v -0.116666 0.393230 -0.100000 +v -0.166666 0.393230 -0.050000 +v 0.057399 2.947922 0.628826 +v 0.057399 2.811188 0.572189 +v 0.057399 2.754550 0.435454 +v 0.057399 2.811188 0.298720 +v 0.057399 2.947922 0.242083 +v 0.057399 3.084657 0.298720 +v 0.057399 3.141294 0.435454 +v 0.057399 3.084657 0.572189 +v 0.134706 2.811188 0.572189 +v 0.134706 2.947922 0.628826 +v 0.134706 2.754550 0.435454 +v 0.134706 2.811188 0.298720 +v 0.134706 2.947922 0.242083 +v 0.134706 3.084657 0.298720 +v 0.134706 3.141294 0.435454 +v 0.134706 3.084657 0.572189 +v -0.057398 2.947922 0.628826 +v -0.057398 2.811188 0.572189 +v -0.057398 2.754550 0.435454 +v -0.057398 2.811188 0.298720 +v -0.057398 2.947922 0.242083 +v -0.057398 3.084657 0.298720 +v -0.057398 3.141294 0.435454 +v -0.057398 3.084657 0.572189 +v -0.134705 2.811188 0.572189 +v -0.134705 2.947922 0.628826 +v -0.134705 2.754550 0.435454 +v -0.134705 2.811188 0.298720 +v -0.134705 2.947922 0.242083 +v -0.134705 3.084657 0.298720 +v -0.134705 3.141294 0.435454 +v -0.134705 3.084657 0.572189 +v 0.166667 2.212244 0.100000 +v -0.166666 2.212244 0.100000 +v 0.090995 0.595453 0.114216 +v 0.090995 0.707781 0.114216 +v 0.090995 0.595453 1.616943 +v 0.090995 0.707781 1.616943 +v 0.159155 0.609494 0.114216 +v 0.159155 0.693740 0.114216 +v 0.159155 0.609494 1.616943 +v 0.159155 0.693740 1.616943 +v 0.090995 1.262953 0.114216 +v 0.090995 1.375282 0.114216 +v 0.090995 1.262953 1.841179 +v 0.090995 1.375282 1.841179 +v 0.159155 1.276994 0.114216 +v 0.159155 1.361241 0.114216 +v 0.159155 1.276994 1.841179 +v 0.159155 1.361241 1.841179 +v 0.090995 1.930453 0.114216 +v 0.090995 2.042782 0.114216 +v 0.090995 1.930453 1.753672 +v 0.090995 2.042782 1.753672 +v 0.159155 1.944494 0.114216 +v 0.159155 2.028741 0.114216 +v 0.159155 1.944494 1.753672 +v 0.159155 2.028741 1.753672 +v 0.090995 2.597953 0.114216 +v 0.090995 2.710282 0.114216 +v 0.090995 2.597953 1.403646 +v 0.090995 2.710282 1.403646 +v 0.159155 2.611994 0.114216 +v 0.159155 2.696241 0.114216 +v 0.159155 2.611994 1.403646 +v 0.159155 2.696241 1.403646 +v -0.090994 0.595453 0.114216 +v -0.090994 0.707781 0.114216 +v -0.090994 0.595453 1.616943 +v -0.090994 0.707781 1.616943 +v -0.159155 0.609494 0.114216 +v -0.159155 0.693740 0.114216 +v -0.159155 0.609494 1.616943 +v -0.159155 0.693740 1.616943 +v -0.090994 1.262953 0.114216 +v -0.090994 1.375282 0.114216 +v -0.090994 1.262953 1.841179 +v -0.090994 1.375282 1.841179 +v -0.159155 1.276994 0.114216 +v -0.159155 1.361241 0.114216 +v -0.159155 1.276994 1.841179 +v -0.159155 1.361241 1.841179 +v -0.090994 1.930453 0.114216 +v -0.090994 2.042782 0.114216 +v -0.090994 1.930453 1.753672 +v -0.090994 2.042782 1.753672 +v -0.159155 1.944494 0.114216 +v -0.159155 2.028741 0.114216 +v -0.159155 1.944494 1.753672 +v -0.159155 2.028741 1.753672 +v -0.090994 2.597953 0.114216 +v -0.090994 2.710282 0.114216 +v -0.090994 2.597953 1.403646 +v -0.090994 2.710282 1.403646 +v -0.159155 2.611994 0.114216 +v -0.159155 2.696241 0.114216 +v -0.159155 2.611994 1.403646 +v -0.159155 2.696241 1.403646 +v 0.166667 0.047999 0.100000 +v -0.166666 0.047999 0.100000 +v -0.168083 3.397916 0.100850 +v 0.168084 3.397916 0.184616 +v -0.166666 0.047999 0.183059 +vt 0.345261 0.851848 +vt 0.236786 0.847477 +vt 0.345261 0.847477 +vt 0.783083 0.236574 +vt 0.877473 0.231282 +vt 0.877473 0.236574 +vt 0.783083 0.240945 +vt 0.877473 0.240945 +vt 0.783083 0.231282 +vt 0.877473 0.226911 +vt 0.661892 0.928877 +vt 0.656600 0.820401 +vt 0.661892 0.820401 +vt 0.666263 0.928877 +vt 0.666263 0.820401 +vt 0.656600 0.928877 +vt 0.652229 0.820401 +vt 0.686915 0.923380 +vt 0.681624 0.820401 +vt 0.686915 0.820401 +vt 0.691287 0.923380 +vt 0.691287 0.820401 +vt 0.681624 0.923380 +vt 0.677252 0.820401 +vt 0.120617 0.906925 +vt 0.201609 0.901634 +vt 0.201609 0.906925 +vt 0.120617 0.911296 +vt 0.201609 0.911296 +vt 0.120617 0.901634 +vt 0.201609 0.897262 +vt 0.345261 0.857140 +vt 0.236786 0.851848 +vt 0.246449 0.872501 +vt 0.241157 0.966891 +vt 0.241157 0.872501 +vt 0.250820 0.872501 +vt 0.246449 0.966891 +vt 0.236786 0.966891 +vt 0.236786 0.872501 +vt 0.553510 0.890940 +vt 0.472517 0.886569 +vt 0.553510 0.886569 +vt 0.345261 0.861511 +vt 0.236786 0.857140 +vt 0.120617 0.881902 +vt 0.223595 0.886273 +vt 0.120617 0.886273 +vt 0.472517 0.881277 +vt 0.553510 0.881278 +vt 0.472517 0.876906 +vt 0.553510 0.876906 +vt 0.120617 0.872239 +vt 0.223595 0.876610 +vt 0.120617 0.876610 +vt 0.223595 0.881902 +vt 0.783083 0.226911 +vt 0.652229 0.928877 +vt 0.677252 0.923380 +vt 0.120617 0.897262 +vt 0.250820 0.966891 +vt 0.472517 0.890940 +vt 0.236786 0.861511 +vt 0.223595 0.872239 +vt 0.990793 0.982377 +vt 0.994505 0.790024 +vt 0.994505 0.982377 +vt 0.975330 0.140291 +vt 0.979043 0.169554 +vt 0.975330 0.169554 +vt 0.958688 0.735153 +vt 0.979803 0.703630 +vt 0.979803 0.735153 +vt 0.686077 0.070125 +vt 0.666517 0.094166 +vt 0.678580 0.065042 +vt 0.754142 0.017893 +vt 0.722778 0.020841 +vt 0.751901 0.008776 +vt 0.346040 0.826913 +vt 0.326285 0.833206 +vt 0.328526 0.824090 +vt 0.297161 0.821141 +vt 0.301490 0.812889 +vt 0.272153 0.801950 +vt 0.278274 0.795074 +vt 0.252964 0.776940 +vt 0.260460 0.771857 +vt 0.240900 0.747817 +vt 0.249262 0.744821 +vt 0.245442 0.715808 +vt 0.240900 0.685309 +vt 0.249262 0.686794 +vt 0.236786 0.716563 +vt 0.252963 0.656185 +vt 0.260723 0.659122 +vt 0.276425 0.634549 +vt 0.782646 0.086752 +vt 0.786465 0.057739 +vt 0.883246 0.005495 +vt 0.975330 0.374451 +vt 0.979043 0.345187 +vt 0.979043 0.374451 +vt 0.975330 0.286661 +vt 0.979043 0.268920 +vt 0.979043 0.286661 +vt 0.975330 0.492194 +vt 0.979043 0.462242 +vt 0.979043 0.492194 +vt 0.975330 0.403715 +vt 0.979043 0.403715 +vt 0.975330 0.315924 +vt 0.979043 0.315924 +vt 0.975330 0.521356 +vt 0.979043 0.521356 +vt 0.975330 0.462242 +vt 0.979043 0.432979 +vt 0.975330 0.345187 +vt 0.633615 0.523161 +vt 0.703230 0.526874 +vt 0.633615 0.526874 +vt 0.975330 0.023236 +vt 0.979043 0.052499 +vt 0.975330 0.052499 +vt 0.486381 0.832580 +vt 0.501037 0.853354 +vt 0.486381 0.853354 +vt 0.593125 0.832580 +vt 0.588684 0.853354 +vt 0.588684 0.832580 +vt 0.514901 0.853354 +vt 0.505479 0.832580 +vt 0.514901 0.832580 +vt 0.958688 0.703630 +vt 0.979803 0.669986 +vt 0.975330 0.198817 +vt 0.979043 0.228769 +vt 0.975330 0.228769 +vt 0.979043 0.081763 +vt 0.975330 0.081763 +vt 0.990793 0.586682 +vt 0.994505 0.779035 +vt 0.990792 0.779035 +vt 0.703891 0.046908 +vt 0.697769 0.040032 +vt 0.702042 0.207434 +vt 0.678579 0.185797 +vt 0.686339 0.182860 +vt 0.979043 0.111027 +vt 0.975330 0.111027 +vt 0.979043 0.198817 +vt 0.771656 0.215922 +vt 0.693569 0.215917 +vt 0.212598 0.897262 +vt 0.216311 0.966877 +vt 0.212598 0.966877 +vt 0.481939 0.832580 +vt 0.472517 0.853354 +vt 0.472517 0.832580 +vt 0.979043 0.257931 +vt 0.975330 0.257931 +vt 0.346040 0.626061 +vt 0.346040 0.634544 +vt 0.589985 0.820018 +vt 0.610922 0.820018 +vt 0.607782 0.832580 +vt 0.958688 0.892770 +vt 0.979803 0.861246 +vt 0.979803 0.892770 +vt 0.448966 0.780214 +vt 0.452106 0.777073 +vt 0.461528 0.777073 +vt 0.958688 0.829723 +vt 0.979803 0.798200 +vt 0.979803 0.829723 +vt 0.958688 0.944222 +vt 0.979803 0.924293 +vt 0.979803 0.944222 +vt 0.674878 0.155188 +vt 0.666516 0.156673 +vt 0.806530 0.574614 +vt 0.829747 0.556800 +vt 0.874297 0.735138 +vt 0.958688 0.949484 +vt 0.979803 0.949484 +vt 0.958688 0.766676 +vt 0.979803 0.766676 +vt 0.958688 0.798200 +vt 0.413756 0.798100 +vt 0.413756 0.776984 +vt 0.426426 0.780152 +vt 0.424479 0.819903 +vt 0.445417 0.819903 +vt 0.442276 0.832465 +vt 0.442276 0.853239 +vt 0.445417 0.856380 +vt 0.445417 0.865802 +vt 0.504178 0.856495 +vt 0.504178 0.865917 +vt 0.554409 0.853354 +vt 0.557550 0.856495 +vt 0.557550 0.865917 +vt 0.958688 0.861246 +vt 0.483240 0.820018 +vt 0.504178 0.820018 +vt 0.501037 0.832580 +vt 0.536613 0.820018 +vt 0.557550 0.820018 +vt 0.554409 0.832580 +vt 0.295591 0.929608 +vt 0.316365 0.950546 +vt 0.295591 0.950545 +vt 0.568273 0.853354 +vt 0.558851 0.832580 +vt 0.568273 0.832580 +vt 0.426437 0.799412 +vt 0.449030 0.808733 +vt 0.426490 0.808914 +vt 0.539753 0.832580 +vt 0.535312 0.853354 +vt 0.535312 0.832580 +vt 0.427620 0.832465 +vt 0.423178 0.853239 +vt 0.423178 0.832465 +vt 0.413756 0.853239 +vt 0.413756 0.832465 +vt 0.525890 0.853354 +vt 0.525890 0.832580 +vt 0.456139 0.853239 +vt 0.446718 0.832465 +vt 0.456139 0.832465 +vt 0.621645 0.853354 +vt 0.612223 0.832580 +vt 0.621645 0.832580 +vt 0.426426 0.794932 +vt 0.448977 0.799312 +vt 0.448977 0.775772 +vt 0.426437 0.775672 +vt 0.612223 0.853354 +vt 0.446718 0.853239 +vt 0.558851 0.853354 +vt 0.449030 0.766351 +vt 0.426490 0.766170 +vt 0.427620 0.853239 +vt 0.607782 0.853354 +vt 0.593125 0.853354 +vt 0.448966 0.794870 +vt 0.610922 0.856495 +vt 0.610922 0.865917 +vt 0.958777 0.591899 +vt 0.979714 0.586682 +vt 0.979714 0.591899 +vt 0.282747 0.940410 +vt 0.261809 0.950797 +vt 0.261809 0.940410 +vt 0.481939 0.853355 +vt 0.295591 0.897681 +vt 0.317276 0.918619 +vt 0.295591 0.918619 +vt 0.060116 0.930852 +vt 0.039179 0.951626 +vt 0.039179 0.930852 +vt 0.958688 0.924293 +vt 0.771657 0.015069 +vt 0.771558 0.005495 +vt 0.730569 0.930395 +vt 0.709632 0.951169 +vt 0.709632 0.930395 +vt 0.727106 0.029093 +vt 0.671059 0.126175 +vt 0.662402 0.125419 +vt 0.979043 0.140291 +vt 0.674878 0.097162 +vt 0.975330 0.005495 +vt 0.979043 0.023236 +vt 0.579262 0.853354 +vt 0.579262 0.832580 +vt 0.539753 0.853354 +vt 0.580344 0.923388 +vt 0.585200 0.932684 +vt 0.580344 0.932684 +vt 0.580344 0.914091 +vt 0.585200 0.923388 +vt 0.580344 0.904795 +vt 0.585200 0.914091 +vt 0.580344 0.895499 +vt 0.585200 0.904795 +vt 0.580344 0.886202 +vt 0.585200 0.895499 +vt 0.580344 0.876906 +vt 0.585200 0.886202 +vt 0.580344 0.941980 +vt 0.585200 0.951277 +vt 0.580344 0.951277 +vt 0.585200 0.941980 +vt 0.041812 0.917230 +vt 0.038254 0.908641 +vt 0.062546 0.908641 +vt 0.564499 0.932684 +vt 0.569355 0.923388 +vt 0.569355 0.932684 +vt 0.564499 0.923388 +vt 0.569355 0.914091 +vt 0.564499 0.914091 +vt 0.569355 0.904795 +vt 0.564499 0.904795 +vt 0.569355 0.895499 +vt 0.564499 0.895499 +vt 0.569355 0.886202 +vt 0.564499 0.886202 +vt 0.569355 0.876906 +vt 0.564499 0.951277 +vt 0.569355 0.941980 +vt 0.569355 0.951277 +vt 0.564499 0.941980 +vt 0.092421 0.900053 +vt 0.095979 0.908641 +vt 0.071686 0.908641 +vt 0.282747 0.930023 +vt 0.261809 0.930023 +vt 0.874841 0.746128 +vt 0.880058 0.956548 +vt 0.874797 0.956549 +vt 0.402767 0.766172 +vt 0.397550 0.976585 +vt 0.397506 0.766170 +vt 0.990792 0.790024 +vt 0.345942 0.836488 +vt 0.267953 0.626065 +vt 0.813631 0.005495 +vt 0.797928 0.030067 +vt 0.883246 0.197854 +vt 0.865731 0.195031 +vt 0.838695 0.183833 +vt 0.815479 0.166018 +vt 0.797664 0.142802 +vt 0.786465 0.115766 +vt 0.975330 0.268920 +vt 0.975330 0.432979 +vt 0.703230 0.523161 +vt 0.505479 0.853354 +vt 0.958688 0.669986 +vt 0.994505 0.586682 +vt 0.771657 0.207438 +vt 0.216311 0.897262 +vt 0.610922 0.829440 +vt 0.589985 0.829440 +vt 0.461528 0.798011 +vt 0.452106 0.798011 +vt 0.874297 0.542778 +vt 0.856783 0.545601 +vt 0.804682 0.735138 +vt 0.788979 0.710565 +vt 0.777517 0.682893 +vt 0.773697 0.653880 +vt 0.777517 0.624867 +vt 0.788716 0.597831 +vt 0.423258 0.776984 +vt 0.423258 0.798100 +vt 0.445417 0.829325 +vt 0.424479 0.829325 +vt 0.424479 0.865802 +vt 0.424479 0.856380 +vt 0.483240 0.865917 +vt 0.483240 0.856495 +vt 0.536613 0.865917 +vt 0.536613 0.856495 +vt 0.504178 0.829440 +vt 0.483240 0.829440 +vt 0.557550 0.829440 +vt 0.536613 0.829440 +vt 0.316365 0.929608 +vt 0.589985 0.865917 +vt 0.589985 0.856495 +vt 0.958777 0.586682 +vt 0.282747 0.950797 +vt 0.317276 0.897681 +vt 0.060116 0.951626 +vt 0.730569 0.951169 +vt 0.979043 0.005495 +vt 0.585200 0.876906 +vt 0.041812 0.900053 +vt 0.050400 0.896495 +vt 0.058989 0.900053 +vt 0.058989 0.917230 +vt 0.050400 0.920787 +vt 0.564499 0.876906 +vt 0.092421 0.917230 +vt 0.083833 0.920787 +vt 0.075244 0.917230 +vt 0.075244 0.900052 +vt 0.083833 0.896495 +vt 0.880058 0.746127 +vt 0.402767 0.976587 +vn -0.2018 -0.9794 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.2018 -0.9794 0.0000 +vn 0.2018 0.9794 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.2018 0.9794 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -0.2588 -0.9659 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.2588 0.9659 +vn 0.0000 -0.4144 0.9101 +vn -1.0000 -0.0049 -0.0086 +vn -0.9999 -0.0027 -0.0097 +vn -1.0000 -0.0050 -0.0085 +vn -1.0000 -0.0091 -0.0026 +vn -1.0000 -0.0083 -0.0048 +vn 1.0000 -0.0093 -0.0015 +vn 1.0000 -0.0091 -0.0026 +vn 1.0000 -0.0083 -0.0048 +vn 1.0000 -0.0069 -0.0068 +vn 1.0000 -0.0068 -0.0069 +vn 1.0000 -0.0050 -0.0085 +vn 1.0000 -0.0049 -0.0086 +vn 0.9999 -0.0027 -0.0097 +vn 0.9999 -0.0025 -0.0097 +vn 0.9999 0.0001 -0.0103 +vn 0.9999 0.0027 -0.0102 +vn 0.9999 0.0028 -0.0101 +vn 0.9999 -0.0001 -0.0103 +vn 0.9999 0.0047 -0.0093 +vn 0.9999 0.0051 -0.0096 +vn 1.0000 0.0067 -0.0038 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.9621 -0.2727 +vn 0.0000 -0.9873 -0.1591 +vn 0.0000 0.4624 -0.8867 +vn 0.0000 0.2588 -0.9659 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 0.5385 -0.8426 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 -0.4456 0.8952 +vn -1.0000 -0.0068 -0.0069 +vn -1.0000 -0.0069 -0.0068 +vn -1.0000 0.0067 -0.0038 +vn -0.9999 0.0047 -0.0093 +vn -0.9999 0.0051 -0.0096 +vn -1.0000 0.0007 -0.0001 +vn -1.0000 0.0058 -0.0047 +vn 1.0000 0.0007 -0.0001 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.2588 0.9659 +vn 0.0000 0.9966 0.0826 +vn 0.0000 0.9613 0.2754 +vn -0.9999 0.0028 -0.0101 +vn -0.9999 0.0027 -0.0102 +vn -1.0000 -0.0039 0.0000 +vn -0.7071 -0.0036 -0.7071 +vn 0.7071 -0.0036 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 1.0000 -0.0039 0.0000 +vn 0.0000 -0.0024 -1.0000 +vn -1.0000 -0.0093 -0.0015 +vn -0.9999 0.0001 -0.0103 +vn -0.9999 -0.0001 -0.0103 +vn -0.9999 -0.0025 -0.0097 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 1.0000 -0.0004 0.0000 +vn -1.0000 -0.0004 0.0000 +vn 1.0000 0.0058 -0.0047 +s off +f 664/847/108 658/848/108 660/849/108 +f 622/850/109 625/851/109 624/852/109 +f 618/853/110 624/852/110 620/854/110 +f 623/855/111 621/856/111 625/851/111 +f 630/857/109 633/858/109 632/859/109 +f 626/860/110 632/859/110 628/861/110 +f 631/862/111 629/863/111 633/858/111 +f 638/864/109 641/865/109 640/866/109 +f 634/867/110 640/866/110 636/868/110 +f 639/869/111 637/870/111 641/865/111 +f 646/871/109 649/872/109 648/873/109 +f 642/874/110 648/873/110 644/875/110 +f 647/876/111 645/877/111 649/872/111 +f 665/878/112 662/879/112 664/847/112 +f 657/880/112 654/881/112 656/882/112 +f 653/883/113 655/884/113 657/880/113 +f 656/882/108 650/885/108 652/886/108 +f 677/887/113 679/888/113 681/889/113 +f 661/890/113 663/891/113 665/878/113 +f 672/892/108 666/893/108 668/894/108 +f 681/889/112 678/895/112 680/896/112 +f 680/896/108 674/897/108 676/898/108 +f 669/899/113 671/900/113 673/901/113 +f 673/901/112 670/902/112 672/892/112 +f 664/847/108 662/879/108 658/848/108 +f 622/850/109 623/855/109 625/851/109 +f 618/853/110 622/850/110 624/852/110 +f 623/855/111 619/903/111 621/856/111 +f 630/857/109 631/862/109 633/858/109 +f 626/860/110 630/857/110 632/859/110 +f 631/862/111 627/904/111 629/863/111 +f 638/864/109 639/869/109 641/865/109 +f 634/867/110 638/864/110 640/866/110 +f 639/869/111 635/905/111 637/870/111 +f 646/871/109 647/876/109 649/872/109 +f 642/874/110 646/871/110 648/873/110 +f 647/876/111 643/906/111 645/877/111 +f 665/878/112 663/891/112 662/879/112 +f 657/880/112 655/884/112 654/881/112 +f 653/883/113 651/907/113 655/884/113 +f 656/882/108 654/881/108 650/885/108 +f 677/887/113 675/908/113 679/888/113 +f 661/890/113 659/909/113 663/891/113 +f 672/892/108 670/902/108 666/893/108 +f 681/889/112 679/888/112 678/895/112 +f 680/896/108 678/895/108 674/897/108 +f 669/899/113 667/910/113 671/900/113 +f 673/901/112 671/900/112 670/902/112 +s 1 +f 482/911/114 471/912/114 474/913/114 +f 506/914/115 531/915/116 505/916/116 +f 519/917/117 480/918/118 478/919/117 +f 507/920/119 518/921/120 517/922/121 +f 510/923/122 514/924/123 513/925/122 +f 474/926/124 472/927/125 469/928/125 +f 469/928/125 473/929/126 468/930/126 +f 468/930/126 475/931/127 467/932/128 +f 467/932/128 476/933/129 466/934/130 +f 466/934/130 477/935/131 465/936/132 +f 464/937/133 478/938/134 463/939/135 +f 465/936/132 479/940/136 464/937/133 +f 463/939/135 480/941/137 462/942/138 +f 480/941/137 461/943/139 462/942/138 +f 490/944/109 489/945/109 481/946/109 +f 487/947/140 467/948/141 466/949/140 +f 484/950/142 474/951/143 469/952/142 +f 491/953/144 463/954/145 462/955/144 +f 488/956/115 466/949/140 465/957/115 +f 485/958/146 469/952/142 468/959/146 +f 483/960/147 462/955/144 461/961/147 +f 489/962/145 464/963/116 463/954/145 +f 486/964/141 468/959/146 467/948/141 +f 481/965/148 461/966/148 471/967/148 +f 464/963/116 488/956/115 465/957/115 +f 510/968/142 526/969/146 509/970/146 +f 577/971/116 558/972/116 578/973/116 +f 569/974/149 571/975/149 568/976/149 +f 499/977/109 556/978/109 498/979/109 +f 521/980/118 470/981/150 480/918/118 +f 504/982/145 532/983/144 503/984/144 +f 509/970/146 527/985/141 508/986/141 +f 512/987/114 523/988/114 515/989/114 +f 508/990/151 517/922/121 516/991/152 +f 502/992/153 521/993/154 503/994/155 +f 508/986/141 528/995/140 507/996/140 +f 505/916/116 530/997/145 504/982/145 +f 502/992/153 686/998/156 511/999/157 +f 502/1000/148 522/1001/148 512/1002/148 +f 576/1003/112 539/1004/112 538/1005/112 +f 503/984/144 524/1006/147 502/1007/147 +f 461/943/139 542/1008/158 471/1009/109 +f 534/1010/148 494/1011/148 549/1012/148 +f 514/1013/159 475/1014/160 473/1015/159 +f 546/1016/161 547/1017/161 493/1018/161 +f 517/1019/162 477/1020/163 476/1021/162 +f 543/1022/164 472/1023/165 685/1024/164 +f 504/1025/166 521/993/154 519/1026/167 +f 527/1027/112 526/1028/112 522/1029/112 +f 684/1030/148 685/1024/164 492/1031/148 +f 520/1032/114 478/919/117 479/1033/114 +f 520/1032/114 477/1020/163 518/1034/163 +f 684/1035/148 492/1036/148 545/1037/148 +f 536/1038/148 496/1039/148 553/1040/148 +f 554/1041/161 555/1042/161 497/1043/161 +f 558/972/161 559/1044/161 499/1045/161 +f 562/1046/161 563/1047/161 501/1048/161 +f 516/1049/160 476/1021/162 475/1014/160 +f 538/1050/148 498/1051/148 557/1052/148 +f 540/1053/148 500/1054/148 561/1055/148 +f 540/1056/116 499/1057/116 500/1058/116 +f 501/1059/109 560/1060/109 500/1061/109 +f 564/1062/168 533/1063/168 684/1064/168 +f 581/1065/149 583/1066/149 580/1067/149 +f 573/1068/149 575/1069/149 572/1070/149 +f 572/1070/112 537/1071/112 536/1072/112 +f 580/1067/112 541/1073/112 540/1074/112 +f 497/1075/109 552/1076/109 496/1077/109 +f 495/1078/109 548/1079/109 494/1080/109 +f 565/1081/169 567/1082/169 564/1062/169 +f 547/1083/170 545/1037/170 544/1084/170 +f 551/1085/171 549/1012/171 548/1079/171 +f 555/1086/171 553/1040/171 552/1076/171 +f 556/978/171 558/972/171 557/1052/171 +f 563/1087/171 561/1055/171 560/1060/171 +f 493/1088/172 544/1084/172 492/1089/172 +f 573/1068/116 554/1041/116 574/1090/116 +f 569/974/116 550/1091/116 570/1092/116 +f 565/1081/173 546/1016/173 566/1093/173 +f 550/1091/161 551/1094/161 495/1095/161 +f 686/1096/161 682/1097/161 542/1098/161 +f 617/1099/116 495/1100/116 616/1101/116 +f 576/1003/149 578/973/149 579/1102/149 +f 683/1103/116 501/1104/116 682/1105/116 +f 538/1106/116 497/1107/116 498/1108/116 +f 513/1109/165 473/1015/159 472/1023/165 +f 515/1110/174 513/925/122 543/1111/174 +f 534/1112/116 493/1113/116 494/1114/116 +f 509/1115/123 516/991/152 514/924/123 +f 505/1116/175 519/1026/167 520/1117/176 +f 507/996/140 529/1118/115 506/914/115 +f 506/1119/177 520/1117/176 518/921/120 +f 515/1120/143 525/1121/142 510/968/142 +f 568/976/112 535/1122/112 534/1123/112 +f 581/1065/116 562/1046/116 582/1124/116 +f 585/1125/178 593/1126/114 584/1127/114 +f 586/1128/161 592/1129/178 585/1125/178 +f 587/1130/141 594/1131/161 586/1128/161 +f 588/1132/116 595/1133/141 587/1130/141 +f 589/1134/179 596/1135/116 588/1132/116 +f 590/1136/148 597/1137/179 589/1134/179 +f 591/1138/160 598/1139/148 590/1140/148 +f 584/1127/114 599/1141/160 591/1138/160 +f 599/1142/109 593/1143/109 596/1144/109 +f 609/1145/114 601/1146/178 600/1147/114 +f 608/1148/178 602/1149/161 601/1146/178 +f 610/1150/161 603/1151/141 602/1149/161 +f 611/1152/141 604/1153/116 603/1151/141 +f 612/1154/116 605/1155/179 604/1153/116 +f 613/1156/179 606/1157/148 605/1155/179 +f 614/1158/148 607/1159/160 606/1160/148 +f 615/1161/160 600/1147/114 607/1159/160 +f 611/1162/112 610/1163/112 614/1164/112 +f 536/1165/116 616/1101/116 496/1166/116 +f 542/1167/180 492/1168/180 685/1169/180 +f 684/1170/181 686/1171/181 543/1172/181 +f 482/911/114 481/1173/114 471/912/114 +f 506/914/115 529/1118/115 531/915/116 +f 519/917/117 521/980/118 480/918/118 +f 507/920/119 506/1119/177 518/921/120 +f 510/923/122 509/1115/123 514/924/123 +f 474/926/124 685/1174/124 472/927/125 +f 469/928/125 472/927/125 473/929/126 +f 468/930/126 473/929/126 475/931/127 +f 467/932/128 475/931/127 476/933/129 +f 466/934/130 476/933/129 477/935/131 +f 464/937/133 479/940/136 478/938/134 +f 465/936/132 477/935/131 479/940/136 +f 463/939/135 478/938/134 480/941/137 +f 480/941/137 470/1175/182 461/943/139 +f 483/1176/109 481/946/109 491/1177/109 +f 481/946/109 482/1178/109 484/1179/109 +f 491/1177/109 481/946/109 489/945/109 +f 484/1179/109 485/1180/109 481/946/109 +f 485/1180/109 486/1181/109 481/946/109 +f 486/1181/109 487/1182/109 481/946/109 +f 487/1182/109 488/1183/109 481/946/109 +f 488/1183/109 490/944/109 481/946/109 +f 487/947/140 486/964/141 467/948/141 +f 484/950/142 482/1184/143 474/951/143 +f 491/953/144 489/962/145 463/954/145 +f 488/956/115 487/947/140 466/949/140 +f 485/958/146 484/950/142 469/952/142 +f 483/960/147 491/953/144 462/955/144 +f 489/962/145 490/1185/116 464/963/116 +f 486/964/141 485/958/146 468/959/146 +f 481/965/148 483/1186/148 461/966/148 +f 464/963/116 490/1185/116 488/956/115 +f 510/968/142 525/1121/142 526/969/146 +f 577/971/116 557/1052/116 558/972/116 +f 569/974/149 570/1092/149 571/975/149 +f 499/977/109 559/1187/109 556/978/109 +f 521/980/118 511/1188/150 470/981/150 +f 504/982/145 530/997/145 532/983/144 +f 509/970/146 526/969/146 527/985/141 +f 512/987/114 522/1189/114 523/988/114 +f 508/990/151 507/920/119 517/922/121 +f 502/992/153 511/999/157 521/993/154 +f 508/986/141 527/985/141 528/995/140 +f 505/916/116 531/915/116 530/997/145 +f 502/992/153 512/1190/112 686/998/156 +f 502/1000/148 524/1191/148 522/1001/148 +f 576/1003/112 579/1102/112 539/1004/112 +f 503/984/144 532/983/144 524/1006/147 +f 461/943/139 470/1175/182 542/1008/158 +f 548/1192/148 549/1012/148 494/1011/148 +f 549/1012/148 569/974/148 534/1010/148 +f 569/974/148 568/1193/148 534/1010/148 +f 514/1013/159 516/1049/160 475/1014/160 +f 493/1018/161 533/1194/161 566/1093/161 +f 533/1194/161 567/1195/161 566/1093/161 +f 566/1093/161 546/1016/161 493/1018/161 +f 517/1019/162 518/1034/163 477/1020/163 +f 543/1022/164 513/1109/165 472/1023/165 +f 504/1025/166 503/994/155 521/993/154 +f 523/1196/112 522/1029/112 525/1197/112 +f 522/1029/112 524/1198/112 532/1199/112 +f 525/1197/112 522/1029/112 526/1028/112 +f 532/1199/112 530/1200/112 522/1029/112 +f 530/1200/112 531/1201/112 522/1029/112 +f 531/1201/112 529/1202/112 522/1029/112 +f 529/1202/112 528/1203/112 522/1029/112 +f 528/1203/112 527/1027/112 522/1029/112 +f 684/1030/148 543/1022/164 685/1024/164 +f 520/1032/114 519/917/117 478/919/117 +f 520/1032/114 479/1033/114 477/1020/163 +f 544/1204/148 545/1037/148 492/1036/148 +f 545/1037/148 565/1081/148 684/1035/148 +f 565/1081/148 564/1205/148 684/1035/148 +f 552/1206/148 553/1040/148 496/1039/148 +f 553/1040/148 573/1068/148 536/1038/148 +f 573/1068/148 572/1207/148 536/1038/148 +f 497/1043/161 537/1208/161 574/1090/161 +f 537/1208/161 575/1209/161 574/1090/161 +f 574/1090/161 554/1041/161 497/1043/161 +f 499/1045/161 539/1210/161 578/973/161 +f 539/1210/161 579/1211/161 578/973/161 +f 578/973/161 558/972/161 499/1045/161 +f 501/1048/161 541/1212/161 582/1124/161 +f 541/1212/161 583/1213/161 582/1124/161 +f 582/1124/161 562/1046/161 501/1048/161 +f 516/1049/160 517/1019/162 476/1021/162 +f 556/1214/148 557/1052/148 498/1051/148 +f 557/1052/148 577/971/148 538/1050/148 +f 577/971/148 576/1215/148 538/1050/148 +f 560/1216/148 561/1055/148 500/1054/148 +f 561/1055/148 581/1065/148 540/1053/148 +f 581/1065/148 580/1217/148 540/1053/148 +f 540/1056/116 539/1218/116 499/1057/116 +f 501/1059/109 563/1087/109 560/1060/109 +f 564/1062/168 567/1082/168 533/1063/168 +f 581/1065/149 582/1124/149 583/1066/149 +f 573/1068/149 574/1090/149 575/1069/149 +f 572/1070/112 575/1069/112 537/1071/112 +f 580/1067/112 583/1066/112 541/1073/112 +f 497/1075/109 555/1086/109 552/1076/109 +f 495/1078/109 551/1085/109 548/1079/109 +f 565/1081/169 566/1093/169 567/1082/169 +f 547/1083/170 546/1016/170 545/1037/170 +f 551/1085/171 550/1091/171 549/1012/171 +f 555/1086/171 554/1041/171 553/1040/171 +f 556/978/171 559/1187/171 558/972/171 +f 563/1087/171 562/1046/171 561/1055/171 +f 493/1088/172 547/1083/172 544/1084/172 +f 573/1068/116 553/1040/116 554/1041/116 +f 569/974/116 549/1012/116 550/1091/116 +f 565/1081/173 545/1037/173 546/1016/173 +f 495/1095/161 535/1219/161 570/1092/161 +f 535/1219/161 571/1220/161 570/1092/161 +f 570/1092/161 550/1091/161 495/1095/161 +f 542/1098/161 470/981/161 511/1188/161 +f 686/1096/161 683/1221/161 682/1097/161 +f 542/1098/161 511/1188/161 686/1096/161 +f 617/1099/116 535/1222/116 495/1100/116 +f 576/1003/149 577/971/149 578/973/149 +f 683/1103/116 541/1223/116 501/1104/116 +f 538/1106/116 537/1224/116 497/1107/116 +f 513/1109/165 514/1013/159 473/1015/159 +f 515/1110/174 510/923/122 513/925/122 +f 534/1112/116 533/1225/116 493/1113/116 +f 509/1115/123 508/990/151 516/991/152 +f 505/1116/175 504/1025/166 519/1026/167 +f 507/996/140 528/995/140 529/1118/115 +f 506/1119/177 505/1116/175 520/1117/176 +f 515/1120/143 523/1226/143 525/1121/142 +f 568/976/112 571/975/112 535/1122/112 +f 581/1065/116 561/1055/116 562/1046/116 +f 585/1125/178 592/1129/178 593/1126/114 +f 586/1128/161 594/1131/161 592/1129/178 +f 587/1130/141 595/1133/141 594/1131/161 +f 588/1132/116 596/1135/116 595/1133/141 +f 589/1134/179 597/1137/179 596/1135/116 +f 590/1136/148 598/1227/148 597/1137/179 +f 591/1138/160 599/1141/160 598/1139/148 +f 584/1127/114 593/1126/114 599/1141/160 +f 593/1143/109 592/1228/109 596/1144/109 +f 592/1228/109 594/1229/109 596/1144/109 +f 594/1229/109 595/1230/109 596/1144/109 +f 596/1144/109 597/1231/109 598/1232/109 +f 598/1232/109 599/1142/109 596/1144/109 +f 609/1145/114 608/1148/178 601/1146/178 +f 608/1148/178 610/1150/161 602/1149/161 +f 610/1150/161 611/1152/141 603/1151/141 +f 611/1152/141 612/1154/116 604/1153/116 +f 612/1154/116 613/1156/179 605/1155/179 +f 613/1156/179 614/1233/148 606/1157/148 +f 614/1158/148 615/1161/160 607/1159/160 +f 615/1161/160 609/1145/114 600/1147/114 +f 610/1163/112 608/1234/112 614/1164/112 +f 608/1234/112 609/1235/112 614/1164/112 +f 609/1235/112 615/1236/112 614/1164/112 +f 614/1164/112 613/1237/112 612/1238/112 +f 612/1238/112 611/1162/112 614/1164/112 +f 536/1165/116 617/1099/116 616/1101/116 +f 542/1167/180 682/1239/180 492/1168/180 +f 684/1170/181 683/1240/181 686/1171/181 diff --git a/src/main/resources/assets/hbm/models/doors/sliding_seal_door.obj b/src/main/resources/assets/hbm/models/doors/sliding_seal_door.obj new file mode 100644 index 000000000..dc0017cc3 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/sliding_seal_door.obj @@ -0,0 +1,2522 @@ +# Blender v2.92.0 OBJ File: 'sliding_seal_door.blend' +# www.blender.org +o frame +v 0.125000 2.000000 -0.500000 +v 0.125000 0.000000 -0.500000 +v 0.125000 0.000000 0.500000 +v 0.125000 2.000000 0.500000 +v 0.125000 0.076037 0.228141 +v 0.125000 0.271859 0.423963 +v 0.125000 0.102272 0.326052 +v 0.125000 0.173948 0.397728 +v 0.125000 1.728141 0.423963 +v 0.125000 1.923963 0.228141 +v 0.125000 1.826052 0.397728 +v 0.125000 1.897728 0.326052 +v 0.125000 0.271859 -0.423963 +v 0.125000 0.076037 -0.228141 +v 0.125000 0.173948 -0.397728 +v 0.125000 0.102272 -0.326052 +v 0.125000 1.923963 -0.228141 +v 0.125000 1.728141 -0.423963 +v 0.125000 1.897728 -0.326052 +v 0.125000 1.826052 -0.397728 +v 0.089033 1.728141 -0.423963 +v 0.089033 1.826052 -0.397728 +v 0.089033 1.897728 -0.326052 +v 0.089033 1.923963 -0.228141 +v 0.089033 0.076037 -0.228141 +v 0.089033 0.102272 -0.326052 +v 0.089033 0.173948 -0.397728 +v 0.089033 0.271859 -0.423963 +v 0.089033 0.271859 0.423963 +v 0.089033 0.173948 0.397728 +v 0.089033 0.102272 0.326052 +v 0.089033 0.076037 0.228141 +v 0.089033 1.923963 0.228141 +v 0.089033 1.897728 0.326052 +v 0.089033 1.826052 0.397728 +v 0.089033 1.728141 0.423963 +v 0.089033 0.036209 -0.233384 +v 0.089033 0.036209 0.233384 +v 0.089033 1.846138 0.432517 +v 0.089033 1.733384 0.463791 +v 0.089033 1.932517 0.346138 +v 0.089033 1.963791 0.233384 +v 0.089033 0.067483 0.346138 +v 0.089033 0.153862 0.432517 +v 0.089033 0.266616 0.463791 +v 0.089033 0.036209 -0.432517 +v 0.089033 0.036209 -0.477970 +v 0.089033 0.036209 -0.346138 +v 0.089033 1.963791 -0.346138 +v 0.089033 1.963791 -0.233384 +v 0.089033 1.963791 -0.432517 +v 0.089033 1.963791 -0.477970 +v 0.125000 0.053035 0.242267 +v 0.125000 0.253733 0.450214 +v 0.125000 0.079924 0.346241 +v 0.125000 0.153384 0.422355 +v 0.125000 1.746267 0.450214 +v 0.125000 1.946965 0.242267 +v 0.125000 1.846616 0.422355 +v 0.125000 1.920076 0.346241 +v 0.125000 0.253733 -0.450214 +v 0.125000 0.053035 -0.242267 +v 0.125000 0.153384 -0.422355 +v 0.125000 0.079924 -0.346241 +v 0.125000 1.946965 -0.242267 +v 0.125000 1.746267 -0.450214 +v 0.125000 1.920076 -0.346241 +v 0.125000 1.846616 -0.422355 +v 0.139289 0.068129 0.233128 +v 0.139289 0.094589 0.333179 +v 0.139289 0.166878 0.406422 +v 0.139289 0.265627 0.433231 +v 0.139289 1.734373 0.433231 +v 0.139289 1.833122 0.406422 +v 0.139289 1.905411 0.333179 +v 0.139289 1.931871 0.233128 +v 0.139289 0.265627 -0.433231 +v 0.139289 0.166878 -0.406422 +v 0.139289 0.094589 -0.333179 +v 0.139289 0.068129 -0.233128 +v 0.139289 1.931871 -0.233128 +v 0.139289 1.905411 -0.333179 +v 0.139289 1.833122 -0.406422 +v 0.139289 1.734373 -0.433231 +v 0.139289 0.058093 0.238676 +v 0.139289 0.084837 0.341109 +v 0.139289 0.157905 0.416095 +v 0.139289 0.257718 0.443541 +v 0.139289 1.742282 0.443541 +v 0.139289 1.842094 0.416095 +v 0.139289 1.915163 0.341109 +v 0.139289 1.941907 0.238676 +v 0.139289 0.257718 -0.443541 +v 0.139289 0.157905 -0.416095 +v 0.139289 0.084837 -0.341109 +v 0.139289 0.058093 -0.238676 +v 0.139289 1.941907 -0.238676 +v 0.139289 1.915163 -0.341109 +v 0.139289 1.842094 -0.416095 +v 0.139289 1.742282 -0.443541 +v -0.125000 2.000000 -0.500000 +v -0.125000 0.000000 -0.500000 +v -0.125000 0.000000 0.500000 +v -0.125000 2.000000 0.500000 +v -0.125000 0.076037 0.228141 +v -0.125000 0.271859 0.423963 +v -0.125000 0.102272 0.326052 +v -0.125000 0.173948 0.397728 +v -0.125000 1.728141 0.423963 +v -0.125000 1.923963 0.228141 +v -0.125000 1.826052 0.397728 +v -0.125000 1.897728 0.326052 +v -0.125000 0.271859 -0.423963 +v -0.125000 0.076037 -0.228141 +v -0.125000 0.173948 -0.397728 +v -0.125000 0.102272 -0.326052 +v -0.125000 1.923963 -0.228141 +v -0.125000 1.728141 -0.423963 +v -0.125000 1.897728 -0.326052 +v -0.125000 1.826052 -0.397728 +v -0.089033 1.728141 -0.423963 +v -0.089033 1.826052 -0.397728 +v -0.089033 1.897728 -0.326052 +v -0.089033 1.923963 -0.228141 +v -0.089033 0.076037 -0.228141 +v -0.089033 0.102272 -0.326052 +v -0.089033 0.173948 -0.397728 +v -0.089033 0.271859 -0.423963 +v -0.089033 0.271859 0.423963 +v -0.089033 0.173948 0.397728 +v -0.089033 0.102272 0.326052 +v -0.089033 0.076037 0.228141 +v -0.089033 1.923963 0.228141 +v -0.089033 1.897728 0.326052 +v -0.089033 1.826052 0.397728 +v -0.089033 1.728141 0.423963 +v -0.089033 0.036209 -0.233384 +v -0.089033 0.036209 0.233384 +v -0.089033 1.846138 0.432517 +v -0.089033 1.733384 0.463791 +v -0.089033 1.932517 0.346138 +v -0.089033 1.963791 0.233384 +v -0.089033 0.067483 0.346138 +v -0.089033 0.153862 0.432517 +v -0.089033 0.266616 0.463791 +v -0.089033 0.036209 -0.432517 +v -0.089033 0.036209 -0.477970 +v -0.089033 0.036209 -0.346138 +v -0.089033 1.963791 -0.346138 +v -0.089033 1.963791 -0.233384 +v -0.089033 1.963791 -0.432517 +v -0.089033 1.963791 -0.477970 +v -0.125000 0.053035 0.242267 +v -0.125000 0.253733 0.450214 +v -0.125000 0.079924 0.346241 +v -0.125000 0.153384 0.422355 +v -0.125000 1.746267 0.450214 +v -0.125000 1.946965 0.242267 +v -0.125000 1.846616 0.422355 +v -0.125000 1.920076 0.346241 +v -0.125000 0.253733 -0.450214 +v -0.125000 0.053035 -0.242267 +v -0.125000 0.153384 -0.422355 +v -0.125000 0.079924 -0.346241 +v -0.125000 1.946965 -0.242267 +v -0.125000 1.746267 -0.450214 +v -0.125000 1.920076 -0.346241 +v -0.125000 1.846616 -0.422355 +v -0.139289 0.068129 0.233128 +v -0.139289 0.094589 0.333179 +v -0.139289 0.166878 0.406422 +v -0.139289 0.265627 0.433231 +v -0.139289 1.734373 0.433231 +v -0.139289 1.833122 0.406422 +v -0.139289 1.905411 0.333179 +v -0.139289 1.931871 0.233128 +v -0.139289 0.265627 -0.433231 +v -0.139289 0.166878 -0.406422 +v -0.139289 0.094589 -0.333179 +v -0.139289 0.068129 -0.233128 +v -0.139289 1.931871 -0.233128 +v -0.139289 1.905411 -0.333179 +v -0.139289 1.833122 -0.406422 +v -0.139289 1.734373 -0.433231 +v -0.139289 0.058093 0.238676 +v -0.139289 0.084837 0.341109 +v -0.139289 0.157905 0.416095 +v -0.139289 0.257718 0.443541 +v -0.139289 1.742282 0.443541 +v -0.139289 1.842094 0.416095 +v -0.139289 1.915163 0.341109 +v -0.139289 1.941907 0.238676 +v -0.139289 0.257718 -0.443541 +v -0.139289 0.157905 -0.416095 +v -0.139289 0.084837 -0.341109 +v -0.139289 0.058093 -0.238676 +v -0.139289 1.941907 -0.238676 +v -0.139289 1.915163 -0.341109 +v -0.139289 1.842094 -0.416095 +v -0.139289 1.742282 -0.443541 +v 0.000000 0.036209 0.233384 +v 0.000000 1.846138 0.432517 +v 0.000000 1.932517 0.346138 +v 0.000000 1.963791 0.233384 +v 0.000000 0.067483 0.346138 +v 0.000000 0.153862 0.432517 +v 0.000000 0.266616 0.463791 +v 0.000000 0.036209 -0.432517 +v 0.000000 0.036209 -0.346138 +v 0.000000 1.963791 -0.346138 +v 0.000000 1.963791 -0.432517 +v 0.000000 1.963791 -0.477970 +v 0.000000 0.036209 -0.233384 +v 0.000000 1.733384 0.463791 +v 0.000000 0.036209 -0.477970 +v 0.000000 1.963791 -0.233384 +vt 0.904854 0.827347 +vt 0.912404 0.923128 +vt 0.904854 0.923128 +vt 0.182166 0.407583 +vt 0.214442 0.424360 +vt 0.160340 0.413227 +vt 0.730026 0.958073 +vt 0.722475 0.652378 +vt 0.730026 0.652378 +vt 0.912404 0.806069 +vt 0.912404 0.827347 +vt 0.904854 0.784791 +vt 0.912404 0.763512 +vt 0.912404 0.784791 +vt 0.904854 0.806069 +vt 0.932696 0.944406 +vt 0.940246 0.923128 +vt 0.940246 0.944406 +vt 0.932696 0.965684 +vt 0.940246 0.965684 +vt 0.932695 0.784790 +vt 0.940246 0.763512 +vt 0.940246 0.784790 +vt 0.932695 0.806068 +vt 0.940246 0.806068 +vt 0.932695 0.827347 +vt 0.940246 0.827347 +vt 0.904854 0.944406 +vt 0.912404 0.944406 +vt 0.904854 0.965684 +vt 0.912404 0.965684 +vt 0.966711 0.756750 +vt 0.974261 0.451055 +vt 0.974261 0.756750 +vt 0.932696 0.923128 +vt 0.932696 0.986962 +vt 0.940246 0.986962 +vt 0.422073 0.482879 +vt 0.433410 0.838040 +vt 0.422073 0.788572 +vt 0.295881 0.650980 +vt 0.282013 0.670433 +vt 0.288578 0.646764 +vt 0.295881 0.787867 +vt 0.282013 0.810216 +vt 0.282013 0.792083 +vt 0.369446 0.638910 +vt 0.340532 0.622066 +vt 0.389999 0.633403 +vt 0.354400 0.790843 +vt 0.340532 0.771391 +vt 0.348893 0.770290 +vt 0.310927 0.802913 +vt 0.282013 0.819757 +vt 0.354400 0.653956 +vt 0.340532 0.631607 +vt 0.365229 0.813192 +vt 0.347097 0.795059 +vt 0.904854 0.986962 +vt 0.912404 0.986962 +vt 0.631115 0.055869 +vt 0.649805 0.032200 +vt 0.649805 0.055869 +vt 0.631115 0.611283 +vt 0.649805 0.586720 +vt 0.649805 0.611283 +vt 0.631115 0.561077 +vt 0.649805 0.536515 +vt 0.649805 0.561077 +vt 0.290374 0.767314 +vt 0.290374 0.671533 +vt 0.282013 0.768414 +vt 0.306711 0.628631 +vt 0.310927 0.635934 +vt 0.340532 0.673409 +vt 0.348893 0.674509 +vt 0.369446 0.805889 +vt 0.388898 0.819757 +vt 0.340532 0.649740 +vt 0.949298 0.452156 +vt 0.957659 0.758947 +vt 0.949298 0.757847 +vt 0.330379 0.622066 +vt 0.331480 0.630427 +vt 0.198143 0.392163 +vt 0.203991 0.371098 +vt 0.214442 0.004526 +vt 0.865192 0.817262 +vt 0.858261 0.797178 +vt 0.861696 0.796063 +vt 0.852813 0.799151 +vt 0.859566 0.820210 +vt 0.856513 0.821732 +vt 0.592572 0.439565 +vt 0.585588 0.459661 +vt 0.589275 0.437907 +vt 0.580143 0.457706 +vt 0.586941 0.436609 +vt 0.583470 0.458607 +vt 0.602693 0.421328 +vt 0.599653 0.419257 +vt 0.583884 0.435080 +vt 0.597329 0.418076 +vt 0.615681 0.405976 +vt 0.618533 0.408287 +vt 0.610906 0.402422 +vt 0.594693 0.416061 +vt 0.858132 0.697391 +vt 0.861606 0.698513 +vt 0.865116 0.677295 +vt 0.861819 0.675637 +vt 0.852687 0.695436 +vt 0.859486 0.674339 +vt 0.856014 0.696337 +vt 0.875237 0.659059 +vt 0.872197 0.656987 +vt 0.856428 0.672810 +vt 0.869873 0.655806 +vt 0.888224 0.643707 +vt 0.891076 0.646018 +vt 0.883449 0.640153 +vt 0.867237 0.653791 +vt 0.981481 0.010131 +vt 0.985505 0.237997 +vt 0.981527 0.237046 +vt 0.203992 0.057788 +vt 0.198143 0.036724 +vt 0.182166 0.021303 +vt 0.160340 0.015659 +vt 0.004526 0.004526 +vt 0.058629 0.015659 +vt 0.036803 0.021303 +vt 0.020825 0.036724 +vt 0.014977 0.057789 +vt 0.004528 0.424360 +vt 0.014978 0.371099 +vt 0.020826 0.392163 +vt 0.036803 0.407583 +vt 0.058629 0.413227 +vt 0.585717 0.559449 +vt 0.583550 0.560522 +vt 0.589353 0.581187 +vt 0.587023 0.582481 +vt 0.597374 0.600993 +vt 0.599696 0.599816 +vt 0.613430 0.614296 +vt 0.615683 0.613092 +vt 0.989529 0.239202 +vt 0.985466 0.008672 +vt 0.989522 0.005561 +vt 0.885969 0.642498 +vt 0.856093 0.798250 +vt 0.861896 0.818916 +vt 0.869918 0.838723 +vt 0.872239 0.837545 +vt 0.885973 0.852026 +vt 0.888226 0.850822 +vt 0.012574 0.918273 +vt 0.008511 0.687744 +vt 0.012567 0.684632 +vt 0.613425 0.404768 +vt 0.004526 0.689203 +vt 0.008550 0.917069 +vt 0.004572 0.916117 +vt 0.867284 0.840731 +vt 0.875277 0.835481 +vt 0.883455 0.854365 +vt 0.580270 0.561422 +vt 0.589153 0.558335 +vt 0.589062 0.460784 +vt 0.993618 0.239807 +vt 0.993618 0.004526 +vt 0.583970 0.584003 +vt 0.592648 0.579533 +vt 0.594741 0.603002 +vt 0.602733 0.597751 +vt 0.016663 0.918878 +vt 0.016663 0.683597 +vt 0.610912 0.616635 +vt 0.631115 0.732934 +vt 0.649805 0.709265 +vt 0.649805 0.732934 +vt 0.631115 0.751066 +vt 0.649805 0.751066 +vt 0.631115 0.014067 +vt 0.649805 0.004526 +vt 0.649805 0.014067 +vt 0.631115 0.032200 +vt 0.631115 0.228619 +vt 0.649805 0.204057 +vt 0.649805 0.228619 +vt 0.631115 0.204057 +vt 0.649805 0.178414 +vt 0.631115 0.586720 +vt 0.631115 0.178414 +vt 0.649805 0.153851 +vt 0.004526 0.674545 +vt 0.214442 0.622066 +vt 0.214442 0.674545 +vt 0.677547 0.004526 +vt 0.730026 0.424358 +vt 0.677547 0.424358 +vt 0.631116 0.760608 +vt 0.649805 0.760608 +vt 0.461152 0.807049 +vt 0.479841 0.402422 +vt 0.479841 0.807049 +vt 0.631115 0.536515 +vt 0.631115 0.709265 +vt 0.631115 0.153851 +vt 0.677547 0.643326 +vt 0.730026 0.433410 +vt 0.730026 0.643326 +vt 0.190397 0.881984 +vt 0.094616 0.874434 +vt 0.190397 0.874434 +vt 0.255771 0.407583 +vt 0.277596 0.413227 +vt 0.223495 0.424360 +vt 0.713423 0.652379 +vt 0.705873 0.958073 +vt 0.705873 0.652379 +vt 0.073338 0.881984 +vt 0.094616 0.881984 +vt 0.030782 0.881984 +vt 0.052060 0.874434 +vt 0.052060 0.881984 +vt 0.073338 0.874434 +vt 0.602077 0.869276 +vt 0.623356 0.861726 +vt 0.623356 0.869276 +vt 0.644634 0.861726 +vt 0.644634 0.869276 +vt 0.442462 0.869276 +vt 0.463740 0.861726 +vt 0.463740 0.869276 +vt 0.485018 0.861726 +vt 0.485018 0.869276 +vt 0.506296 0.861726 +vt 0.506296 0.869276 +vt 0.211675 0.874434 +vt 0.211675 0.881984 +vt 0.232953 0.874434 +vt 0.232953 0.881984 +vt 0.964879 0.004526 +vt 0.972429 0.310220 +vt 0.964879 0.310220 +vt 0.602077 0.861726 +vt 0.665912 0.861726 +vt 0.665912 0.869276 +vt 0.916191 0.004526 +vt 0.904854 0.359687 +vt 0.904855 0.053992 +vt 0.237362 0.790843 +vt 0.223494 0.771391 +vt 0.231855 0.770290 +vt 0.237362 0.653956 +vt 0.223494 0.631607 +vt 0.252408 0.638910 +vt 0.739078 0.631101 +vt 0.767991 0.614257 +vt 0.788545 0.619764 +vt 0.739078 0.481777 +vt 0.752945 0.462324 +vt 0.747438 0.482877 +vt 0.223494 0.622066 +vt 0.272961 0.633403 +vt 0.739078 0.621560 +vt 0.752945 0.599211 +vt 0.763775 0.439975 +vt 0.767991 0.447278 +vt 0.254232 0.874434 +vt 0.254232 0.881984 +vt 0.668494 0.055869 +vt 0.668494 0.611283 +vt 0.668494 0.561077 +vt 0.231855 0.674510 +vt 0.223494 0.673409 +vt 0.248192 0.813192 +vt 0.252408 0.805889 +vt 0.739078 0.579758 +vt 0.747438 0.578658 +vt 0.787444 0.433410 +vt 0.788545 0.441771 +vt 0.955827 0.004526 +vt 0.947465 0.311311 +vt 0.947466 0.005627 +vt 0.271861 0.819757 +vt 0.272961 0.811396 +vt 0.239793 0.392163 +vt 0.233945 0.371098 +vt 0.223494 0.004526 +vt 0.862987 0.061715 +vt 0.869917 0.041630 +vt 0.866422 0.062829 +vt 0.864292 0.038682 +vt 0.857539 0.059741 +vt 0.861238 0.037160 +vt 0.869842 0.404863 +vt 0.862858 0.384768 +vt 0.866332 0.383645 +vt 0.857413 0.386723 +vt 0.864212 0.407819 +vt 0.861155 0.409348 +vt 0.879963 0.423098 +vt 0.866546 0.406520 +vt 0.874599 0.426351 +vt 0.871964 0.428366 +vt 0.892950 0.438449 +vt 0.895802 0.436138 +vt 0.888175 0.442003 +vt 0.862858 0.161501 +vt 0.866332 0.160379 +vt 0.869842 0.181597 +vt 0.857413 0.163457 +vt 0.864212 0.184553 +vt 0.861155 0.186082 +vt 0.879963 0.199833 +vt 0.866545 0.183254 +vt 0.874599 0.203086 +vt 0.871964 0.205101 +vt 0.892950 0.215184 +vt 0.895802 0.212873 +vt 0.888175 0.218738 +vt 0.987299 0.699025 +vt 0.983360 0.926896 +vt 0.983313 0.700458 +vt 0.233945 0.057789 +vt 0.239793 0.036724 +vt 0.255771 0.021303 +vt 0.277597 0.015659 +vt 0.433410 0.004526 +vt 0.379308 0.015659 +vt 0.401134 0.021304 +vt 0.417111 0.036724 +vt 0.422960 0.057789 +vt 0.433410 0.424360 +vt 0.422959 0.371097 +vt 0.417111 0.392162 +vt 0.401133 0.407583 +vt 0.379308 0.413227 +vt 0.860741 0.385822 +vt 0.862986 0.284980 +vt 0.860818 0.283907 +vt 0.866621 0.263241 +vt 0.864291 0.261947 +vt 0.874643 0.243433 +vt 0.890699 0.230129 +vt 0.876965 0.244611 +vt 0.987338 0.927885 +vt 0.991379 0.695962 +vt 0.991386 0.929157 +vt 0.876923 0.201904 +vt 0.890695 0.216393 +vt 0.860741 0.162555 +vt 0.860819 0.060642 +vt 0.866622 0.039976 +vt 0.874644 0.020169 +vt 0.890699 0.006865 +vt 0.876965 0.021346 +vt 0.987338 0.683984 +vt 0.991379 0.452060 +vt 0.991386 0.685255 +vt 0.876923 0.425169 +vt 0.890694 0.439658 +vt 0.987299 0.455123 +vt 0.983360 0.682994 +vt 0.983313 0.456556 +vt 0.872010 0.018160 +vt 0.880002 0.023411 +vt 0.888181 0.004526 +vt 0.892952 0.008069 +vt 0.895802 0.010374 +vt 0.857538 0.283007 +vt 0.866421 0.286094 +vt 0.995474 0.694957 +vt 0.995474 0.929807 +vt 0.861238 0.260425 +vt 0.869917 0.264894 +vt 0.872009 0.241424 +vt 0.880002 0.246675 +vt 0.995474 0.451055 +vt 0.995474 0.685905 +vt 0.888181 0.227790 +vt 0.892952 0.231334 +vt 0.895802 0.233638 +vt 0.668494 0.732934 +vt 0.668494 0.751066 +vt 0.668494 0.014067 +vt 0.668494 0.032200 +vt 0.668494 0.228619 +vt 0.668494 0.204057 +vt 0.668494 0.586720 +vt 0.668494 0.178414 +vt 0.668494 0.760608 +vt 0.442462 0.402422 +vt 0.442462 0.807049 +vt 0.668494 0.536515 +vt 0.668494 0.709265 +vt 0.668494 0.153851 +vt 0.739078 0.424358 +vt 0.791557 0.004526 +vt 0.791557 0.424358 +vt 0.722475 0.958073 +vt 0.904854 0.763512 +vt 0.932695 0.763512 +vt 0.966711 0.451055 +vt 0.433410 0.433412 +vt 0.331480 0.808420 +vt 0.389999 0.811396 +vt 0.957659 0.451055 +vt 0.891076 0.848518 +vt 0.618533 0.610788 +vt 0.631115 0.004526 +vt 0.004526 0.622066 +vt 0.730026 0.004526 +vt 0.461151 0.402422 +vt 0.677547 0.433410 +vt 0.713423 0.958073 +vt 0.030782 0.874434 +vt 0.442462 0.861726 +vt 0.972429 0.004526 +vt 0.916191 0.409154 +vt 0.230059 0.795060 +vt 0.223494 0.649740 +vt 0.745642 0.458108 +vt 0.739078 0.603427 +vt 0.955827 0.312412 +vt 0.668494 0.004526 +vt 0.739078 0.004526 +vn 0.0000 -0.9914 -0.1305 +vn 0.0000 -0.9914 0.1305 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.1305 -0.9914 +vn 0.0000 -0.1305 -0.9914 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.9914 -0.1305 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.1305 0.9914 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.9914 0.1305 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 -0.1305 0.9914 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.9909 -0.1349 +vn 0.0000 -0.8638 -0.5038 +vn 0.0000 -0.5038 -0.8638 +vn 0.0000 -0.1349 -0.9909 +vn 0.5785 -0.7172 0.3885 +vn 0.5147 -0.8479 0.1271 +vn 0.5072 -0.8566 0.0950 +vn 0.3608 0.9232 -0.1322 +vn 0.4265 0.7984 -0.4251 +vn 0.4330 0.7770 -0.4570 +vn 0.5785 0.7172 0.3885 +vn 0.5147 0.8479 0.1271 +vn 0.5847 0.6955 0.4177 +vn 0.3608 -0.9232 -0.1322 +vn 0.4265 -0.7984 -0.4251 +vn 0.3550 -0.9290 -0.1043 +vn 0.6108 0.3862 0.6912 +vn 0.6133 0.4076 0.6765 +vn 0.4330 -0.7770 -0.4570 +vn 0.4732 -0.4444 -0.7607 +vn 0.5767 0.1242 0.8074 +vn 0.5686 0.0871 0.8180 +vn 0.4489 -0.1331 -0.8836 +vn 0.4742 -0.4551 -0.7537 +vn 0.5147 -0.8479 -0.1271 +vn 0.5072 -0.8566 -0.0950 +vn 0.5785 -0.7172 -0.3885 +vn 0.5847 -0.6955 -0.4177 +vn 0.3608 0.9232 0.1322 +vn 0.4265 0.7984 0.4251 +vn 0.3550 0.9290 0.1043 +vn 0.6108 -0.3862 -0.6912 +vn 0.6133 -0.4076 -0.6765 +vn 0.4330 0.7770 0.4570 +vn 0.4732 0.4444 0.7607 +vn 0.5767 -0.1242 -0.8074 +vn 0.5686 -0.0871 -0.8180 +vn 0.4489 0.1331 0.8836 +vn 0.4742 0.4551 0.7537 +vn 0.5767 0.1242 -0.8074 +vn 0.5686 0.0871 -0.8180 +vn 0.5767 -0.1242 0.8074 +vn 0.5686 -0.0871 0.8180 +vn 0.4732 0.4444 -0.7607 +vn 0.4742 0.4551 -0.7537 +vn 0.6108 -0.3862 0.6912 +vn 0.5847 -0.6955 0.4177 +vn 0.4489 0.1331 -0.8836 +vn 0.4446 0.1047 -0.8896 +vn 0.6133 -0.4076 0.6765 +vn 0.3550 -0.9290 0.1043 +vn 0.3608 -0.9232 0.1322 +vn 0.5072 0.8566 -0.0950 +vn 0.5072 0.8566 0.0950 +vn 0.4489 -0.1331 0.8836 +vn 0.4446 0.1047 0.8896 +vn 0.4265 -0.7984 0.4251 +vn 0.4330 -0.7770 0.4570 +vn 0.5785 0.7172 -0.3885 +vn 0.5147 0.8479 -0.1271 +vn 0.3550 0.9290 -0.1043 +vn 0.4732 -0.4444 0.7607 +vn 0.4742 -0.4551 0.7537 +vn 0.6108 0.3862 -0.6912 +vn 0.5847 0.6955 -0.4177 +vn 0.4446 -0.1047 -0.8896 +vn 0.4446 -0.1047 0.8896 +vn 0.6133 0.4076 -0.6765 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.1349 -0.9909 +vn 0.0000 0.5038 -0.8638 +vn 0.0000 0.8638 -0.5038 +vn 0.0000 0.9909 -0.1349 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.5147 -0.8479 0.1271 +vn -0.5785 -0.7172 0.3885 +vn -0.5072 -0.8566 0.0950 +vn -0.4265 0.7984 -0.4251 +vn -0.3608 0.9232 -0.1322 +vn -0.4330 0.7770 -0.4570 +vn -0.5785 0.7172 0.3885 +vn -0.5147 0.8479 0.1271 +vn -0.5072 0.8566 0.0950 +vn -0.3608 -0.9232 -0.1322 +vn -0.4265 -0.7984 -0.4251 +vn -0.4330 -0.7770 -0.4570 +vn -0.6108 0.3862 0.6912 +vn -0.5847 0.6955 0.4177 +vn -0.4732 -0.4444 -0.7607 +vn -0.4742 -0.4551 -0.7537 +vn -0.5767 0.1242 0.8074 +vn -0.5686 0.0871 0.8180 +vn -0.4489 -0.1331 -0.8836 +vn -0.5147 -0.8479 -0.1271 +vn -0.5072 -0.8566 -0.0950 +vn -0.5785 -0.7172 -0.3885 +vn -0.3608 0.9232 0.1322 +vn -0.4265 0.7984 0.4251 +vn -0.4330 0.7770 0.4570 +vn -0.6108 -0.3862 -0.6912 +vn -0.5847 -0.6955 -0.4177 +vn -0.4732 0.4444 0.7607 +vn -0.4742 0.4551 0.7537 +vn -0.5767 -0.1242 -0.8074 +vn -0.5686 -0.0871 -0.8180 +vn -0.4489 0.1331 0.8836 +vn -0.5767 0.1242 -0.8074 +vn -0.5686 0.0871 -0.8180 +vn -0.5767 -0.1242 0.8074 +vn -0.5686 -0.0871 0.8180 +vn -0.4732 0.4444 -0.7607 +vn -0.4742 0.4551 -0.7537 +vn -0.5847 -0.6955 0.4177 +vn -0.6108 -0.3862 0.6912 +vn -0.4489 0.1331 -0.8836 +vn -0.3550 -0.9290 0.1043 +vn -0.3608 -0.9232 0.1322 +vn -0.5072 0.8566 -0.0950 +vn -0.4446 0.1047 0.8896 +vn -0.4489 -0.1331 0.8836 +vn -0.4265 -0.7984 0.4251 +vn -0.4330 -0.7770 0.4570 +vn -0.5147 0.8479 -0.1271 +vn -0.5785 0.7172 -0.3885 +vn -0.3550 0.9290 -0.1043 +vn -0.4732 -0.4444 0.7607 +vn -0.4742 -0.4551 0.7537 +vn -0.5847 0.6955 -0.4177 +vn -0.6108 0.3862 -0.6912 +vn -0.4446 -0.1047 -0.8896 +vn -0.3550 -0.9290 -0.1043 +vn -0.6133 0.4076 0.6765 +vn -0.3550 0.9290 0.1043 +vn -0.6133 -0.4076 -0.6765 +vn -0.6133 -0.4076 0.6765 +vn -0.4446 0.1047 -0.8896 +vn -0.4446 -0.1047 0.8896 +vn -0.6133 0.4076 -0.6765 +s 1 +f 10/1/1 24/2/2 17/3/2 +f 67/4/3 1/5/3 65/6/3 +f 6/7/4 36/8/5 9/9/5 +f 10/1/1 34/10/6 33/11/1 +f 11/12/7 36/13/5 35/14/7 +f 12/15/6 35/14/7 34/10/6 +f 7/16/8 32/17/9 31/18/8 +f 8/19/10 31/18/8 30/20/10 +f 15/21/11 28/22/12 27/23/11 +f 16/24/13 27/23/11 26/25/13 +f 14/26/14 26/25/13 25/27/14 +f 19/28/15 24/2/2 23/29/15 +f 20/30/16 23/29/15 22/31/16 +f 13/32/12 21/33/17 28/34/12 +f 14/26/14 32/17/9 5/35/9 +f 6/36/4 30/20/10 29/37/4 +f 21/38/18 47/39/18 28/40/18 +f 31/41/18 38/42/18 43/43/18 +f 26/44/18 46/45/18 48/46/18 +f 22/47/18 52/48/18 21/49/18 +f 34/50/18 42/51/18 33/52/18 +f 27/53/18 47/54/18 46/45/18 +f 23/55/18 51/56/18 22/47/18 +f 34/50/18 39/57/18 41/58/18 +f 18/59/17 22/31/16 21/60/17 +f 37/61/19 209/62/19 213/63/19 +f 42/64/20 203/65/21 204/66/20 +f 39/67/22 214/68/23 202/69/22 +f 25/70/18 38/42/18 32/71/18 +f 26/44/18 37/72/18 25/70/18 +f 31/41/18 44/73/18 30/74/18 +f 33/52/18 50/75/18 24/76/18 +f 35/77/18 40/78/18 39/57/18 +f 23/55/18 50/75/18 49/79/18 +f 29/80/18 40/81/18 36/82/18 +f 30/74/18 45/83/18 29/84/18 +f 1/5/3 67/4/3 68/85/3 +f 68/85/3 66/86/3 1/5/3 +f 66/86/3 2/87/3 1/5/3 +f 19/88/24 81/89/25 17/90/26 +f 65/91/27 98/92/28 67/93/29 +f 16/94/30 80/95/31 79/96/32 +f 62/97/33 95/98/34 96/99/35 +f 15/100/36 79/96/32 78/101/37 +f 64/102/38 94/103/39 95/98/34 +f 15/100/36 77/104/40 13/105/41 +f 61/106/42 94/103/39 63/107/43 +f 17/90/26 76/108/44 10/109/45 +f 12/110/46 76/108/44 75/111/47 +f 58/112/48 91/113/49 92/114/50 +f 11/115/51 75/111/47 74/116/52 +f 60/117/53 90/118/54 91/113/49 +f 11/115/51 73/119/55 9/120/56 +f 57/121/57 90/118/54 59/122/58 +f 9/123/56 72/124/59 6/125/60 +f 61/126/3 63/127/3 2/87/3 +f 64/128/3 2/87/3 63/127/3 +f 62/129/3 2/87/3 64/128/3 +f 62/129/3 3/130/3 2/87/3 +f 53/131/3 55/132/3 3/130/3 +f 56/133/3 3/130/3 55/132/3 +f 54/134/3 3/130/3 56/133/3 +f 54/134/3 4/135/3 3/130/3 +f 57/136/3 59/137/3 4/135/3 +f 60/138/3 4/135/3 59/137/3 +f 58/139/3 4/135/3 60/138/3 +f 58/139/3 1/5/3 4/135/3 +f 96/99/3 79/96/3 80/95/3 +f 96/99/3 69/140/3 85/141/3 +f 85/141/3 70/142/3 86/143/3 +f 87/144/3 70/142/3 71/145/3 +f 88/146/3 71/145/3 72/147/3 +f 88/148/3 73/149/3 89/150/3 +f 89/151/3 74/116/3 90/118/3 +f 90/118/3 75/111/3 91/113/3 +f 92/114/3 75/111/3 76/108/3 +f 92/114/3 81/89/3 97/152/3 +f 97/152/3 82/153/3 98/92/3 +f 99/154/3 82/153/3 83/155/3 +f 100/156/3 83/155/3 84/157/3 +f 100/158/3 77/159/3 93/160/3 +f 93/161/3 78/101/3 94/103/3 +f 94/103/3 79/96/3 95/98/3 +f 13/162/41 84/163/61 18/164/62 +f 67/93/29 99/154/63 68/165/64 +f 20/166/65 82/153/66 19/88/24 +f 66/167/67 99/154/63 100/156/68 +f 20/166/65 84/157/61 83/155/69 +f 62/97/33 85/141/70 53/168/71 +f 5/169/72 80/95/31 14/170/73 +f 54/171/74 89/150/75 57/172/57 +f 53/168/71 86/143/76 55/173/77 +f 7/174/78 69/140/79 5/169/72 +f 58/112/48 97/152/80 65/91/27 +f 55/173/77 87/144/81 56/175/82 +f 8/176/83 70/142/84 7/174/78 +f 66/177/67 93/160/85 61/178/42 +f 54/179/74 87/144/81 88/146/86 +f 8/176/83 72/147/59 71/145/87 +f 49/180/88 216/181/88 210/182/88 +f 51/183/88 210/182/88 211/184/88 +f 46/185/19 215/186/19 208/187/19 +f 48/188/19 208/187/19 209/62/19 +f 45/189/89 206/190/90 207/191/89 +f 44/192/90 205/193/91 206/190/90 +f 41/194/21 202/69/22 203/65/21 +f 43/195/91 201/196/92 205/193/91 +f 102/197/88 3/198/88 103/199/88 +f 101/200/93 2/201/93 102/202/93 +f 52/203/88 211/184/88 212/204/88 +f 212/205/94 47/206/94 52/207/94 +f 207/191/89 40/208/23 45/189/89 +f 204/66/20 50/209/88 42/64/20 +f 213/63/19 38/210/92 37/61/19 +f 101/211/19 4/212/19 1/213/19 +f 124/214/2 110/215/1 117/216/2 +f 167/217/18 165/218/18 101/219/18 +f 136/220/5 106/221/4 109/222/5 +f 134/223/6 110/215/1 133/224/1 +f 136/225/5 111/226/7 135/227/7 +f 135/227/7 112/228/6 134/223/6 +f 132/229/9 107/230/8 131/231/8 +f 131/231/8 108/232/10 130/233/10 +f 128/234/12 115/235/11 127/236/11 +f 127/236/11 116/237/13 126/238/13 +f 126/238/13 114/239/14 125/240/14 +f 124/214/2 119/241/15 123/242/15 +f 123/242/15 120/243/16 122/244/16 +f 121/245/17 113/246/12 128/247/12 +f 132/229/9 114/239/14 105/248/9 +f 130/233/10 106/249/4 129/250/4 +f 147/251/3 121/252/3 128/253/3 +f 131/254/3 138/255/3 132/256/3 +f 126/257/3 146/258/3 127/259/3 +f 152/260/3 122/261/3 121/262/3 +f 142/263/3 134/264/3 133/265/3 +f 127/259/3 147/266/3 128/267/3 +f 151/268/3 123/269/3 122/261/3 +f 134/264/3 139/270/3 135/271/3 +f 122/244/16 118/272/17 121/273/17 +f 209/62/19 137/274/19 213/63/19 +f 203/65/21 142/275/20 204/66/20 +f 214/68/23 139/276/22 202/69/22 +f 138/255/3 125/277/3 132/256/3 +f 137/278/3 126/257/3 125/277/3 +f 144/279/3 131/254/3 130/280/3 +f 150/281/3 133/265/3 124/282/3 +f 135/271/3 140/283/3 136/284/3 +f 123/269/3 150/281/3 124/282/3 +f 140/285/3 129/286/3 136/287/3 +f 145/288/3 130/280/3 129/289/3 +f 101/219/18 168/290/18 167/217/18 +f 168/290/18 101/219/18 166/291/18 +f 102/292/18 166/291/18 101/219/18 +f 181/293/95 119/294/96 117/295/97 +f 198/296/98 165/297/99 167/298/100 +f 116/299/101 180/300/102 114/301/103 +f 162/302/104 195/303/105 164/304/106 +f 115/305/107 179/306/108 116/299/101 +f 164/304/106 194/307/109 163/308/110 +f 177/309/111 115/305/107 113/310/112 +f 194/307/109 161/311/113 163/308/110 +f 176/312/114 117/295/97 110/313/115 +f 112/314/116 176/312/114 110/313/115 +f 158/315/117 191/316/118 160/317/119 +f 111/318/120 175/319/121 112/314/116 +f 160/317/119 190/320/122 159/321/123 +f 173/322/124 111/318/120 109/323/125 +f 190/320/122 157/324/126 159/321/123 +f 172/325/127 109/326/125 106/327/128 +f 161/328/18 102/292/18 163/329/18 +f 164/330/18 163/329/18 102/292/18 +f 162/331/18 164/330/18 102/292/18 +f 103/332/18 162/331/18 102/292/18 +f 153/333/18 103/332/18 155/334/18 +f 156/335/18 155/334/18 103/332/18 +f 154/336/18 156/335/18 103/332/18 +f 104/337/18 154/336/18 103/332/18 +f 157/338/18 104/337/18 159/339/18 +f 160/340/18 159/339/18 104/337/18 +f 158/341/18 160/340/18 104/337/18 +f 101/219/18 158/341/18 104/337/18 +f 179/306/18 196/342/18 180/300/18 +f 169/343/18 196/342/18 185/344/18 +f 170/345/18 185/344/18 186/346/18 +f 187/347/18 170/345/18 186/346/18 +f 188/348/18 171/349/18 187/347/18 +f 173/350/18 188/351/18 189/352/18 +f 174/353/18 189/354/18 190/320/18 +f 175/319/18 190/320/18 191/316/18 +f 192/355/18 175/319/18 191/316/18 +f 181/293/18 192/355/18 197/356/18 +f 182/357/18 197/356/18 198/296/18 +f 199/358/18 182/357/18 198/296/18 +f 200/359/18 183/360/18 199/358/18 +f 177/361/18 200/362/18 193/363/18 +f 178/364/18 193/365/18 194/307/18 +f 179/306/18 194/307/18 195/303/18 +f 184/366/129 113/367/112 118/368/130 +f 199/358/131 167/298/100 168/369/132 +f 182/357/133 120/370/134 119/294/96 +f 166/371/135 199/358/131 168/369/132 +f 120/370/134 184/372/129 118/373/130 +f 185/344/136 162/302/104 153/374/137 +f 180/300/102 105/375/138 114/301/103 +f 189/352/139 154/376/140 157/377/126 +f 186/346/141 153/374/137 155/378/142 +f 169/343/143 107/379/144 105/375/138 +f 197/356/145 158/315/117 165/297/99 +f 187/347/146 155/378/142 156/380/147 +f 170/345/148 108/381/149 107/379/144 +f 193/363/150 166/382/135 161/383/113 +f 154/384/140 187/347/146 156/380/147 +f 108/381/149 172/385/127 106/386/128 +f 216/181/88 149/387/88 210/182/88 +f 210/182/88 151/388/88 211/184/88 +f 215/186/19 146/389/19 208/187/19 +f 208/187/19 148/390/19 209/62/19 +f 206/190/90 145/391/89 207/191/89 +f 205/193/91 144/392/90 206/190/90 +f 202/69/22 141/393/21 203/65/21 +f 201/196/92 143/394/91 205/193/91 +f 211/184/88 152/395/88 212/204/88 +f 147/396/94 212/205/94 152/397/94 +f 140/398/23 207/191/89 145/391/89 +f 150/399/88 204/66/20 142/275/20 +f 138/400/92 213/63/19 137/274/19 +f 104/401/94 3/402/94 4/403/94 +f 10/1/1 33/11/1 24/2/2 +f 6/7/4 29/404/4 36/8/5 +f 10/1/1 12/15/6 34/10/6 +f 11/12/7 9/405/5 36/13/5 +f 12/15/6 11/12/7 35/14/7 +f 7/16/8 5/35/9 32/17/9 +f 8/19/10 7/16/8 31/18/8 +f 15/21/11 13/406/12 28/22/12 +f 16/24/13 15/21/11 27/23/11 +f 14/26/14 16/24/13 26/25/13 +f 19/28/15 17/3/2 24/2/2 +f 20/30/16 19/28/15 23/29/15 +f 13/32/12 18/407/17 21/33/17 +f 14/26/14 25/27/14 32/17/9 +f 6/36/4 8/19/10 30/20/10 +f 21/38/18 52/408/18 47/39/18 +f 31/41/18 32/71/18 38/42/18 +f 26/44/18 27/53/18 46/45/18 +f 22/47/18 51/56/18 52/48/18 +f 34/50/18 41/58/18 42/51/18 +f 27/53/18 28/409/18 47/54/18 +f 23/55/18 49/79/18 51/56/18 +f 34/50/18 35/77/18 39/57/18 +f 18/59/17 20/30/16 22/31/16 +f 37/61/19 48/188/19 209/62/19 +f 42/64/20 41/194/21 203/65/21 +f 39/67/22 40/208/23 214/68/23 +f 25/70/18 37/72/18 38/42/18 +f 26/44/18 48/46/18 37/72/18 +f 31/41/18 43/43/18 44/73/18 +f 33/52/18 42/51/18 50/75/18 +f 35/77/18 36/410/18 40/78/18 +f 23/55/18 24/76/18 50/75/18 +f 29/80/18 45/411/18 40/81/18 +f 30/74/18 44/73/18 45/83/18 +f 66/86/3 61/126/3 2/87/3 +f 19/88/24 82/153/66 81/89/25 +f 65/91/27 97/152/80 98/92/28 +f 16/94/30 14/170/73 80/95/31 +f 62/97/33 64/102/38 95/98/34 +f 15/100/36 16/94/30 79/96/32 +f 64/102/38 63/107/43 94/103/39 +f 15/100/36 78/101/37 77/104/40 +f 61/106/42 93/161/85 94/103/39 +f 17/90/26 81/89/25 76/108/44 +f 12/110/46 10/109/45 76/108/44 +f 58/112/48 60/117/53 91/113/49 +f 11/115/51 12/110/46 75/111/47 +f 60/117/53 59/122/58 90/118/54 +f 11/115/51 74/116/52 73/119/55 +f 57/121/57 89/151/75 90/118/54 +f 9/123/56 73/149/55 72/124/59 +f 62/129/3 53/131/3 3/130/3 +f 54/134/3 57/136/3 4/135/3 +f 58/139/3 65/6/3 1/5/3 +f 96/99/3 95/98/3 79/96/3 +f 96/99/3 80/95/3 69/140/3 +f 85/141/3 69/140/3 70/142/3 +f 87/144/3 86/143/3 70/142/3 +f 88/146/3 87/144/3 71/145/3 +f 88/148/3 72/124/3 73/149/3 +f 89/151/3 73/119/3 74/116/3 +f 90/118/3 74/116/3 75/111/3 +f 92/114/3 91/113/3 75/111/3 +f 92/114/3 76/108/3 81/89/3 +f 97/152/3 81/89/3 82/153/3 +f 99/154/3 98/92/3 82/153/3 +f 100/156/3 99/154/3 83/155/3 +f 100/158/3 84/163/3 77/159/3 +f 93/161/3 77/104/3 78/101/3 +f 94/103/3 78/101/3 79/96/3 +f 13/162/41 77/159/40 84/163/61 +f 67/93/29 98/92/28 99/154/63 +f 20/166/65 83/155/69 82/153/66 +f 66/167/67 68/165/64 99/154/63 +f 20/166/65 18/412/62 84/157/61 +f 62/97/33 96/99/35 85/141/70 +f 5/169/72 69/140/79 80/95/31 +f 54/171/74 88/148/86 89/150/75 +f 53/168/71 85/141/70 86/143/76 +f 7/174/78 70/142/84 69/140/79 +f 58/112/48 92/114/50 97/152/80 +f 55/173/77 86/143/76 87/144/81 +f 8/176/83 71/145/87 70/142/84 +f 66/177/67 100/158/68 93/160/85 +f 54/179/74 56/175/82 87/144/81 +f 8/176/83 6/413/60 72/147/59 +f 49/180/88 50/209/88 216/181/88 +f 51/183/88 49/180/88 210/182/88 +f 46/185/19 47/414/19 215/186/19 +f 48/188/19 46/185/19 208/187/19 +f 45/189/89 44/192/90 206/190/90 +f 44/192/90 43/195/91 205/193/91 +f 41/194/21 39/67/22 202/69/22 +f 43/195/91 38/210/92 201/196/92 +f 102/197/88 2/415/88 3/198/88 +f 101/200/93 1/416/93 2/201/93 +f 52/203/88 51/183/88 211/184/88 +f 212/205/94 215/417/94 47/206/94 +f 207/191/89 214/68/23 40/208/23 +f 204/66/20 216/181/88 50/209/88 +f 213/63/19 201/196/92 38/210/92 +f 101/211/19 104/418/19 4/212/19 +f 124/214/2 133/224/1 110/215/1 +f 136/220/5 129/419/4 106/221/4 +f 134/223/6 112/228/6 110/215/1 +f 136/225/5 109/420/5 111/226/7 +f 135/227/7 111/226/7 112/228/6 +f 132/229/9 105/248/9 107/230/8 +f 131/231/8 107/230/8 108/232/10 +f 128/234/12 113/421/12 115/235/11 +f 127/236/11 115/235/11 116/237/13 +f 126/238/13 116/237/13 114/239/14 +f 124/214/2 117/216/2 119/241/15 +f 123/242/15 119/241/15 120/243/16 +f 121/245/17 118/422/17 113/246/12 +f 132/229/9 125/240/14 114/239/14 +f 130/233/10 108/232/10 106/249/4 +f 147/251/3 152/423/3 121/252/3 +f 131/254/3 143/424/3 138/255/3 +f 126/257/3 148/425/3 146/258/3 +f 152/260/3 151/268/3 122/261/3 +f 142/263/3 141/426/3 134/264/3 +f 127/259/3 146/258/3 147/266/3 +f 151/268/3 149/427/3 123/269/3 +f 134/264/3 141/426/3 139/270/3 +f 122/244/16 120/243/16 118/272/17 +f 209/62/19 148/390/19 137/274/19 +f 203/65/21 141/393/21 142/275/20 +f 214/68/23 140/398/23 139/276/22 +f 138/255/3 137/278/3 125/277/3 +f 137/278/3 148/425/3 126/257/3 +f 144/279/3 143/424/3 131/254/3 +f 150/281/3 142/263/3 133/265/3 +f 135/271/3 139/270/3 140/283/3 +f 123/269/3 149/427/3 150/281/3 +f 140/285/3 145/428/3 129/286/3 +f 145/288/3 144/279/3 130/280/3 +f 102/292/18 161/328/18 166/291/18 +f 181/293/95 182/357/133 119/294/96 +f 198/296/98 197/356/145 165/297/99 +f 116/299/101 179/306/108 180/300/102 +f 162/302/104 196/342/151 195/303/105 +f 115/305/107 178/364/152 179/306/108 +f 164/304/106 195/303/105 194/307/109 +f 177/309/111 178/364/152 115/305/107 +f 194/307/109 193/365/150 161/311/113 +f 176/312/114 181/293/95 117/295/97 +f 112/314/116 175/319/121 176/312/114 +f 158/315/117 192/355/153 191/316/118 +f 111/318/120 174/353/154 175/319/121 +f 160/317/119 191/316/118 190/320/122 +f 173/322/124 174/353/154 111/318/120 +f 190/320/122 189/354/139 157/324/126 +f 172/325/127 173/350/124 109/326/125 +f 103/332/18 153/333/18 162/331/18 +f 104/337/18 157/338/18 154/336/18 +f 101/219/18 165/218/18 158/341/18 +f 179/306/18 195/303/18 196/342/18 +f 169/343/18 180/300/18 196/342/18 +f 170/345/18 169/343/18 185/344/18 +f 187/347/18 171/349/18 170/345/18 +f 188/348/18 172/385/18 171/349/18 +f 173/350/18 172/325/18 188/351/18 +f 174/353/18 173/322/18 189/354/18 +f 175/319/18 174/353/18 190/320/18 +f 192/355/18 176/312/18 175/319/18 +f 181/293/18 176/312/18 192/355/18 +f 182/357/18 181/293/18 197/356/18 +f 199/358/18 183/360/18 182/357/18 +f 200/359/18 184/372/18 183/360/18 +f 177/361/18 184/366/18 200/362/18 +f 178/364/18 177/309/18 193/365/18 +f 179/306/18 178/364/18 194/307/18 +f 184/366/129 177/361/111 113/367/112 +f 199/358/131 198/296/98 167/298/100 +f 182/357/133 183/360/155 120/370/134 +f 166/371/135 200/359/156 199/358/131 +f 120/370/134 183/360/155 184/372/129 +f 185/344/136 196/342/151 162/302/104 +f 180/300/102 169/343/143 105/375/138 +f 189/352/139 188/351/157 154/376/140 +f 186/346/141 185/344/136 153/374/137 +f 169/343/143 170/345/148 107/379/144 +f 197/356/145 192/355/153 158/315/117 +f 187/347/146 186/346/141 155/378/142 +f 170/345/148 171/349/158 108/381/149 +f 193/363/150 200/362/156 166/382/135 +f 154/384/140 188/348/157 187/347/146 +f 108/381/149 171/349/158 172/385/127 +f 216/181/88 150/399/88 149/387/88 +f 210/182/88 149/387/88 151/388/88 +f 215/186/19 147/429/19 146/389/19 +f 208/187/19 146/389/19 148/390/19 +f 206/190/90 144/392/90 145/391/89 +f 205/193/91 143/394/91 144/392/90 +f 202/69/22 139/276/22 141/393/21 +f 201/196/92 138/400/92 143/394/91 +f 211/184/88 151/388/88 152/395/88 +f 147/396/94 215/417/94 212/205/94 +f 140/398/23 214/68/23 207/191/89 +f 150/399/88 216/181/88 204/66/20 +f 138/400/92 201/196/92 213/63/19 +f 104/401/94 103/430/94 3/402/94 +o door +v 0.089033 0.062912 -0.229749 +v 0.089033 0.062912 0.229749 +v 0.089033 1.832227 0.408665 +v 0.089033 1.908665 0.332227 +v 0.089033 1.937088 0.229749 +v 0.089033 0.091335 0.332227 +v 0.089033 0.167773 0.408665 +v 0.089033 0.167773 -0.408665 +v 0.089033 0.091335 -0.332227 +v 0.089033 1.908665 -0.332227 +v 0.089033 1.937088 -0.229749 +v 0.089033 1.832227 -0.408665 +v 0.089033 0.036209 0.233384 +v 0.089033 0.036209 -0.233384 +v 0.089033 1.846138 0.432517 +v 0.089033 1.733384 0.463791 +v 0.089033 1.932517 0.346138 +v 0.089033 1.963791 0.233384 +v 0.089033 0.067483 0.346138 +v 0.089033 0.153862 0.432517 +v 0.089033 0.266616 0.463791 +v 0.089033 0.153862 -0.432517 +v 0.089033 0.266616 -0.463791 +v 0.089033 0.067483 -0.346138 +v 0.089033 1.932517 -0.346138 +v 0.089033 1.963791 -0.233384 +v 0.089033 1.846138 -0.432517 +v 0.089033 1.733384 -0.463791 +v 0.089033 1.440030 -0.463791 +v 0.089033 0.559970 0.463791 +v 0.089033 0.559970 -0.463791 +v 0.089033 0.853323 -0.463791 +v 0.089033 1.146677 -0.463791 +v 0.089033 1.440030 0.463791 +v 0.089033 1.146677 0.463791 +v 0.089033 0.853323 0.463791 +v 0.067522 0.088680 0.216673 +v 0.067522 0.088680 -0.216673 +v 0.067522 1.809342 0.385405 +v 0.067522 1.883679 0.313317 +v 0.067522 1.911320 0.216673 +v 0.067522 0.116321 0.313317 +v 0.067522 0.190658 0.385405 +v 0.067522 0.190658 -0.385405 +v 0.067522 0.116321 -0.313317 +v 0.067522 1.883679 -0.313317 +v 0.067522 1.911320 -0.216673 +v 0.067522 1.809342 -0.385405 +v 0.089033 1.719954 0.437088 +v 0.089033 1.737910 0.432067 +v 0.089033 1.732162 0.454811 +v 0.089033 0.262090 0.432067 +v 0.089033 0.280046 0.437088 +v 0.089033 0.267838 0.454811 +v 0.089033 0.280046 -0.437088 +v 0.089033 0.262090 -0.432067 +v 0.089033 0.267838 -0.454811 +v 0.089033 1.737910 -0.432067 +v 0.089033 1.719954 -0.437088 +v 0.089033 1.732162 -0.454811 +v 0.089033 0.568817 -0.437088 +v 0.089033 0.551123 -0.437088 +v 0.089033 0.559970 -0.454975 +v 0.089033 0.861853 -0.437088 +v 0.089033 0.844794 -0.437088 +v 0.089033 0.853323 -0.454975 +v 0.089033 1.155206 -0.437088 +v 0.089033 1.138147 -0.437088 +v 0.089033 1.146677 -0.454975 +v 0.089033 1.448877 -0.437088 +v 0.089033 1.431183 -0.437088 +v 0.089033 1.440030 -0.454975 +v 0.089033 1.431183 0.437088 +v 0.089033 1.448877 0.437088 +v 0.089033 1.440030 0.454975 +v 0.089033 1.138147 0.437088 +v 0.089033 1.155206 0.437088 +v 0.089033 1.146677 0.454975 +v 0.089033 0.844794 0.437088 +v 0.089033 0.861853 0.437088 +v 0.089033 0.853323 0.454975 +v 0.089033 0.551123 0.437088 +v 0.089033 0.568817 0.437088 +v 0.089033 0.559970 0.454975 +v 0.067522 1.689992 -0.412210 +v 0.067522 1.727860 -0.407321 +v 0.067522 1.727860 0.407321 +v 0.067522 1.689992 0.412210 +v 0.067522 0.310008 -0.412210 +v 0.067522 0.272139 -0.407321 +v 0.067522 0.310008 0.412210 +v 0.067522 0.272139 0.407321 +v 0.067522 0.553441 -0.412210 +v 0.067522 0.590698 -0.412210 +v 0.067522 0.590698 0.412210 +v 0.067522 0.553441 0.412210 +v 0.067522 0.839382 -0.412210 +v 0.067522 0.875331 -0.412210 +v 0.067522 0.839382 0.412210 +v 0.067522 0.875331 0.412210 +v 0.067522 1.124669 -0.412210 +v 0.067522 1.160618 -0.412210 +v 0.067522 1.124669 0.412210 +v 0.067522 1.160618 0.412210 +v 0.067522 1.409302 -0.412210 +v 0.067522 1.446559 -0.412210 +v 0.067522 1.446559 0.412210 +v 0.067522 1.409302 0.412210 +v 0.079726 1.134115 0.439682 +v 0.079726 1.151172 0.439682 +v 0.079726 0.848828 0.439682 +v 0.079726 0.865885 0.439682 +v 0.079726 0.300058 -0.434752 +v 0.079726 0.282090 -0.429863 +v 0.079726 1.699942 -0.434752 +v 0.079726 1.717910 -0.429863 +v 0.079726 1.717910 0.434792 +v 0.079726 1.699942 0.439682 +v 0.079726 0.300058 0.439682 +v 0.079726 0.282090 0.434792 +v 0.079726 0.563230 -0.434752 +v 0.079726 0.580909 -0.434752 +v 0.079726 0.580909 0.439682 +v 0.079726 0.563230 0.439682 +v 0.079726 0.848828 -0.434752 +v 0.079726 0.865885 -0.434752 +v 0.079726 1.134115 -0.434752 +v 0.079726 1.151172 -0.434752 +v 0.079726 1.419091 -0.434752 +v 0.079726 1.436770 -0.434752 +v 0.079726 1.436770 0.439682 +v 0.079726 1.419091 0.439682 +v -0.089033 0.062912 -0.229749 +v -0.089033 0.062912 0.229749 +v -0.089033 1.832227 0.408665 +v -0.089033 1.908665 0.332227 +v -0.089033 1.937088 0.229749 +v -0.089033 0.091335 0.332227 +v -0.089033 0.167773 0.408665 +v -0.089033 0.167773 -0.408665 +v -0.089033 0.091335 -0.332227 +v -0.089033 1.908665 -0.332227 +v -0.089033 1.937088 -0.229749 +v -0.089033 1.832227 -0.408665 +v -0.089033 0.036209 0.233384 +v -0.089033 0.036209 -0.233384 +v -0.089033 1.846138 0.432517 +v -0.089033 1.733384 0.463791 +v -0.089033 1.932517 0.346138 +v -0.089033 1.963791 0.233384 +v -0.089033 0.067483 0.346138 +v -0.089033 0.153862 0.432517 +v -0.089033 0.266616 0.463791 +v -0.089033 0.153862 -0.432517 +v -0.089033 0.266616 -0.463791 +v -0.089033 0.067483 -0.346138 +v -0.089033 1.932517 -0.346138 +v -0.089033 1.963791 -0.233384 +v -0.089033 1.846138 -0.432517 +v -0.089033 1.733384 -0.463791 +v -0.089033 1.440030 -0.463791 +v -0.089033 0.559970 0.463791 +v -0.089033 0.559970 -0.463791 +v -0.089033 0.853323 -0.463791 +v -0.089033 1.146677 -0.463791 +v -0.089033 1.440030 0.463791 +v -0.089033 1.146677 0.463791 +v -0.089033 0.853323 0.463791 +v -0.067522 0.088680 0.216673 +v -0.067522 0.088680 -0.216673 +v -0.067522 1.809342 0.385405 +v -0.067522 1.883679 0.313317 +v -0.067522 1.911320 0.216673 +v -0.067522 0.116321 0.313317 +v -0.067522 0.190658 0.385405 +v -0.067522 0.190658 -0.385405 +v -0.067522 0.116321 -0.313317 +v -0.067522 1.883679 -0.313317 +v -0.067522 1.911320 -0.216673 +v -0.067522 1.809342 -0.385405 +v -0.089033 1.719954 0.437088 +v -0.089033 1.737910 0.432067 +v -0.089033 1.732162 0.454811 +v -0.089033 0.262090 0.432067 +v -0.089033 0.280046 0.437088 +v -0.089033 0.267838 0.454811 +v -0.089033 0.280046 -0.437088 +v -0.089033 0.262090 -0.432067 +v -0.089033 0.267838 -0.454811 +v -0.089033 1.737910 -0.432067 +v -0.089033 1.719954 -0.437088 +v -0.089033 1.732162 -0.454811 +v -0.089033 0.568817 -0.437088 +v -0.089033 0.551123 -0.437088 +v -0.089033 0.559970 -0.454975 +v -0.089033 0.861853 -0.437088 +v -0.089033 0.844794 -0.437088 +v -0.089033 0.853323 -0.454975 +v -0.089033 1.155206 -0.437088 +v -0.089033 1.138147 -0.437088 +v -0.089033 1.146677 -0.454975 +v -0.089033 1.448877 -0.437088 +v -0.089033 1.431183 -0.437088 +v -0.089033 1.440030 -0.454975 +v -0.089033 1.431183 0.437088 +v -0.089033 1.448877 0.437088 +v -0.089033 1.440030 0.454975 +v -0.089033 1.138147 0.437088 +v -0.089033 1.155206 0.437088 +v -0.089033 1.146677 0.454975 +v -0.089033 0.844794 0.437088 +v -0.089033 0.861853 0.437088 +v -0.089033 0.853323 0.454975 +v -0.089033 0.551123 0.437088 +v -0.089033 0.568817 0.437088 +v -0.089033 0.559970 0.454975 +v -0.067522 1.689992 -0.412210 +v -0.067522 1.727860 -0.407321 +v -0.067522 1.727860 0.407321 +v -0.067522 1.689992 0.412210 +v -0.067522 0.310008 -0.412210 +v -0.067522 0.272139 -0.407321 +v -0.067522 0.310008 0.412210 +v -0.067522 0.272139 0.407321 +v -0.067522 0.553441 -0.412210 +v -0.067522 0.590698 -0.412210 +v -0.067522 0.590698 0.412210 +v -0.067522 0.553441 0.412210 +v -0.067522 0.839382 -0.412210 +v -0.067522 0.875331 -0.412210 +v -0.067522 0.839382 0.412210 +v -0.067522 0.875331 0.412210 +v -0.067522 1.124669 -0.412210 +v -0.067522 1.160618 -0.412210 +v -0.067522 1.124669 0.412210 +v -0.067522 1.160618 0.412210 +v -0.067522 1.409302 -0.412210 +v -0.067522 1.446559 -0.412210 +v -0.067522 1.446559 0.412210 +v -0.067522 1.409302 0.412210 +v -0.079726 1.134115 0.439682 +v -0.079726 1.151172 0.439682 +v -0.079726 0.848828 0.439682 +v -0.079726 0.865885 0.439682 +v -0.079726 0.300058 -0.434752 +v -0.079726 0.282090 -0.429863 +v -0.079726 1.699942 -0.434752 +v -0.079726 1.717910 -0.429863 +v -0.079726 1.717910 0.434792 +v -0.079726 1.699942 0.439682 +v -0.079726 0.300058 0.439682 +v -0.079726 0.282090 0.434792 +v -0.079726 0.563230 -0.434752 +v -0.079726 0.580909 -0.434752 +v -0.079726 0.580909 0.439682 +v -0.079726 0.563230 0.439682 +v -0.079726 0.848828 -0.434752 +v -0.079726 0.865885 -0.434752 +v -0.079726 1.134115 -0.434752 +v -0.079726 1.151172 -0.434752 +v -0.079726 1.419091 -0.434752 +v -0.079726 1.436770 -0.434752 +v -0.079726 1.436770 0.439682 +v -0.079726 1.419091 0.439682 +vt 0.783593 0.831993 +vt 0.770625 0.819241 +vt 0.786830 0.825688 +vt 0.904889 0.572687 +vt 0.904889 0.512544 +vt 0.910360 0.514355 +vt 0.764922 0.653705 +vt 0.756727 0.675027 +vt 0.750214 0.670777 +vt 0.934743 0.510728 +vt 0.927961 0.461088 +vt 0.934717 0.454799 +vt 0.744799 0.692104 +vt 0.751356 0.783421 +vt 0.744526 0.786188 +vt 0.904889 0.632829 +vt 0.910364 0.574436 +vt 0.783665 0.646709 +vt 0.761647 0.649126 +vt 0.783850 0.640153 +vt 0.739383 0.691433 +vt 0.910357 0.694788 +vt 0.917138 0.744427 +vt 0.910383 0.750717 +vt 0.821727 0.653705 +vt 0.801970 0.668151 +vt 0.818451 0.649126 +vt 0.807019 0.670776 +vt 0.796188 0.691433 +vt 0.749803 0.807573 +vt 0.739078 0.786824 +vt 0.764620 0.824799 +vt 0.744748 0.810146 +vt 0.910357 0.510728 +vt 0.917138 0.461089 +vt 0.917112 0.511201 +vt 0.840397 0.831993 +vt 0.827430 0.819241 +vt 0.843635 0.825688 +vt 0.745166 0.668151 +vt 0.806608 0.807573 +vt 0.795882 0.786824 +vt 0.801331 0.786188 +vt 0.821424 0.824799 +vt 0.801552 0.810145 +vt 0.934743 0.694788 +vt 0.927961 0.744427 +vt 0.927987 0.694314 +vt 0.840556 0.838653 +vt 0.818043 0.829441 +vt 0.801604 0.692104 +vt 0.783752 0.838653 +vt 0.761239 0.829441 +vt 0.770853 0.659218 +vt 0.934736 0.574436 +vt 0.927993 0.628317 +vt 0.927993 0.577199 +vt 0.934736 0.634577 +vt 0.927993 0.686669 +vt 0.927993 0.635687 +vt 0.910364 0.634578 +vt 0.917107 0.686670 +vt 0.910360 0.691161 +vt 0.840470 0.646709 +vt 0.827657 0.659218 +vt 0.917106 0.628317 +vt 0.910364 0.631080 +vt 0.910364 0.570938 +vt 0.917107 0.518846 +vt 0.917106 0.569829 +vt 0.295529 0.438043 +vt 0.345528 0.607370 +vt 0.295529 0.607370 +vt 0.052365 0.438043 +vt 0.102363 0.607367 +vt 0.052365 0.607367 +vt 0.393369 0.567210 +vt 0.387691 0.587060 +vt 0.355688 0.606368 +vt 0.112420 0.438043 +vt 0.163496 0.607367 +vt 0.112420 0.607367 +vt 0.042205 0.439048 +vt 0.042206 0.606362 +vt 0.004526 0.567206 +vt 0.173340 0.438043 +vt 0.224551 0.607368 +vt 0.173340 0.607369 +vt 0.234395 0.438043 +vt 0.285472 0.607370 +vt 0.234395 0.607370 +vt 0.940211 0.512544 +vt 0.940246 0.452090 +vt 0.751649 0.694916 +vt 0.813531 0.675027 +vt 0.940210 0.572687 +vt 0.934739 0.514355 +vt 0.813165 0.803316 +vt 0.808453 0.694916 +vt 0.940210 0.632828 +vt 0.934736 0.631080 +vt 0.756360 0.803316 +vt 0.940211 0.692971 +vt 0.934739 0.691161 +vt 0.940246 0.753425 +vt 0.934717 0.750716 +vt 0.904889 0.692971 +vt 0.904854 0.753426 +vt 0.934736 0.570939 +vt 0.927993 0.518846 +vt 0.904854 0.452090 +vt 0.910383 0.454799 +vt 0.808160 0.783421 +vt 0.911333 0.754460 +vt 0.906690 0.753196 +vt 0.911333 0.451055 +vt 0.906690 0.452320 +vt 0.933767 0.451055 +vt 0.938409 0.452320 +vt 0.933767 0.754460 +vt 0.938409 0.753195 +vt 0.938406 0.512543 +vt 0.938402 0.572687 +vt 0.938402 0.632828 +vt 0.938406 0.692972 +vt 0.906694 0.692973 +vt 0.906697 0.632829 +vt 0.906697 0.572687 +vt 0.906694 0.512543 +vt 0.917106 0.635687 +vt 0.927076 0.453302 +vt 0.045440 0.434418 +vt 0.045441 0.612005 +vt 0.166666 0.433413 +vt 0.166667 0.613011 +vt 0.918024 0.453302 +vt 0.918024 0.752213 +vt 0.927987 0.511202 +vt 0.927993 0.569829 +vt 0.927076 0.752213 +vt 0.917112 0.694314 +vt 0.840655 0.640153 +vt 0.352454 0.612010 +vt 0.348762 0.433413 +vt 0.352453 0.434417 +vt 0.049131 0.613009 +vt 0.049131 0.433413 +vt 0.109207 0.613009 +vt 0.105575 0.433414 +vt 0.109207 0.433414 +vt 0.170170 0.613011 +vt 0.170170 0.433413 +vt 0.231225 0.613012 +vt 0.227721 0.433413 +vt 0.231224 0.433413 +vt 0.292316 0.613013 +vt 0.288684 0.433414 +vt 0.292316 0.433414 +vt 0.355688 0.439047 +vt 0.227721 0.613012 +vt 0.105576 0.613009 +vt 0.348763 0.613014 +vt 0.288685 0.613013 +vt 0.534518 0.522925 +vt 0.571091 0.462674 +vt 0.571091 0.522925 +vt 0.525466 0.462674 +vt 0.488893 0.522925 +vt 0.488893 0.462674 +vt 0.525466 0.522925 +vt 0.488893 0.583177 +vt 0.525466 0.583177 +vt 0.488893 0.643428 +vt 0.103937 0.865381 +vt 0.079904 0.828809 +vt 0.103937 0.828809 +vt 0.079904 0.865381 +vt 0.054814 0.828809 +vt 0.525466 0.402422 +vt 0.488893 0.402422 +vt 0.054814 0.865381 +vt 0.030782 0.828809 +vt 0.525466 0.643428 +vt 0.488893 0.703680 +vt 0.442462 0.816101 +vt 0.466495 0.852674 +vt 0.442462 0.852674 +vt 0.466495 0.816101 +vt 0.491585 0.852674 +vt 0.491585 0.816101 +vt 0.515617 0.852674 +vt 0.515617 0.816101 +vt 0.611486 0.852674 +vt 0.611486 0.816101 +vt 0.635519 0.852674 +vt 0.635519 0.816101 +vt 0.660609 0.852674 +vt 0.534518 0.703680 +vt 0.571091 0.643428 +vt 0.571091 0.703680 +vt 0.660609 0.816101 +vt 0.684642 0.852674 +vt 0.534518 0.462674 +vt 0.571091 0.402422 +vt 0.272961 0.865381 +vt 0.248929 0.828809 +vt 0.272961 0.828809 +vt 0.248929 0.865381 +vt 0.223838 0.828809 +vt 0.223838 0.865381 +vt 0.199806 0.828809 +vt 0.199806 0.865381 +vt 0.534518 0.583177 +vt 0.571091 0.583177 +vt 0.845124 0.011186 +vt 0.832156 0.023938 +vt 0.826151 0.018380 +vt 0.406715 0.685366 +vt 0.412185 0.743698 +vt 0.406711 0.741949 +vt 0.818257 0.168152 +vt 0.826453 0.189473 +vt 0.811744 0.172402 +vt 0.937528 0.014559 +vt 0.930746 0.064198 +vt 0.930772 0.008270 +vt 0.812887 0.059757 +vt 0.806330 0.151074 +vt 0.806057 0.056990 +vt 0.406711 0.745446 +vt 0.412185 0.803840 +vt 0.406711 0.802091 +vt 0.823177 0.194053 +vt 0.845196 0.196470 +vt 0.800914 0.151745 +vt 0.399936 0.915438 +vt 0.406718 0.865799 +vt 0.406692 0.921727 +vt 0.826453 0.397025 +vt 0.806696 0.382579 +vt 0.811744 0.379954 +vt 0.800913 0.359297 +vt 0.806330 0.358626 +vt 0.800609 0.056354 +vt 0.811335 0.035605 +vt 0.806279 0.033033 +vt 0.406718 0.681738 +vt 0.399936 0.632099 +vt 0.406692 0.625810 +vt 0.845124 0.218738 +vt 0.832156 0.231489 +vt 0.826151 0.225932 +vt 0.806696 0.175027 +vt 0.800609 0.263906 +vt 0.811335 0.243157 +vt 0.806057 0.264542 +vt 0.806279 0.240585 +vt 0.930746 0.248259 +vt 0.937528 0.297898 +vt 0.930772 0.304187 +vt 0.845283 0.212078 +vt 0.845754 0.213902 +vt 0.845283 0.004526 +vt 0.845755 0.006350 +vt 0.832384 0.183961 +vt 0.930753 0.127906 +vt 0.937496 0.181787 +vt 0.930753 0.184550 +vt 0.930753 0.188048 +vt 0.937496 0.240140 +vt 0.930750 0.244631 +vt 0.399968 0.857680 +vt 0.406711 0.805588 +vt 0.406714 0.862172 +vt 0.832383 0.391513 +vt 0.845196 0.404022 +vt 0.399969 0.799328 +vt 0.399968 0.689857 +vt 0.448109 0.052365 +vt 0.617432 0.102364 +vt 0.448109 0.102362 +vt 0.448105 0.295531 +vt 0.617433 0.345528 +vt 0.448106 0.345530 +vt 0.597123 0.010205 +vt 0.611928 0.025473 +vt 0.616429 0.042208 +vt 0.448105 0.234396 +vt 0.617432 0.285472 +vt 0.448105 0.285473 +vt 0.577272 0.393368 +vt 0.488267 0.393370 +vt 0.616429 0.355686 +vt 0.448106 0.173341 +vt 0.617432 0.224552 +vt 0.448106 0.224552 +vt 0.448108 0.112421 +vt 0.617433 0.163498 +vt 0.448108 0.163497 +vt 0.925278 0.066015 +vt 0.818257 0.375704 +vt 0.930750 0.067825 +vt 0.930753 0.124409 +vt 0.925279 0.126158 +vt 0.817892 0.247415 +vt 0.817892 0.039863 +vt 0.925279 0.186299 +vt 0.925278 0.246442 +vt 0.412186 0.863982 +vt 0.937496 0.072317 +vt 0.412186 0.683555 +vt 0.812887 0.267309 +vt 0.410384 0.924207 +vt 0.405742 0.925471 +vt 0.405742 0.622066 +vt 0.410384 0.623331 +vt 0.927080 0.005791 +vt 0.931722 0.004526 +vt 0.931722 0.307931 +vt 0.927080 0.306666 +vt 0.927083 0.066014 +vt 0.927086 0.126158 +vt 0.927086 0.186299 +vt 0.927083 0.246443 +vt 0.410381 0.863983 +vt 0.410378 0.803840 +vt 0.410378 0.743698 +vt 0.410381 0.683554 +vt 0.399969 0.806698 +vt 0.399969 0.740840 +vt 0.938413 0.006773 +vt 0.449109 0.355690 +vt 0.621059 0.352452 +vt 0.622062 0.231225 +vt 0.617432 0.234395 +vt 0.399051 0.624313 +vt 0.399963 0.682212 +vt 0.399051 0.923224 +vt 0.937501 0.064672 +vt 0.937496 0.123300 +vt 0.937496 0.130670 +vt 0.937496 0.189157 +vt 0.937501 0.247785 +vt 0.938413 0.305684 +vt 0.399963 0.865325 +vt 0.823177 0.401605 +vt 0.622063 0.049133 +vt 0.443471 0.045440 +vt 0.621059 0.045442 +vt 0.442462 0.348765 +vt 0.622063 0.348762 +vt 0.622062 0.292316 +vt 0.442463 0.288686 +vt 0.622062 0.288685 +vt 0.442463 0.227723 +vt 0.622062 0.227721 +vt 0.622062 0.170171 +vt 0.442464 0.166668 +vt 0.622062 0.166667 +vt 0.622062 0.109209 +vt 0.442466 0.105576 +vt 0.622062 0.105578 +vt 0.449115 0.042205 +vt 0.617432 0.173341 +vt 0.617432 0.295529 +vt 0.617433 0.052367 +vt 0.617433 0.112422 +vt 0.534518 0.643428 +vt 0.784307 0.641951 +vt 0.841028 0.836829 +vt 0.784223 0.836829 +vt 0.786830 0.652929 +vt 0.843635 0.652929 +vt 0.917106 0.577199 +vt 0.345528 0.438043 +vt 0.102362 0.438043 +vt 0.372423 0.601866 +vt 0.372423 0.443548 +vt 0.387691 0.458355 +vt 0.393369 0.478205 +vt 0.163496 0.438043 +vt 0.025471 0.601860 +vt 0.010204 0.587055 +vt 0.004526 0.478204 +vt 0.010203 0.458355 +vt 0.025470 0.443549 +vt 0.224551 0.438043 +vt 0.285471 0.438043 +vt 0.841112 0.641951 +vt 0.030782 0.865381 +vt 0.525466 0.703680 +vt 0.684642 0.816101 +vt 0.534518 0.402422 +vt 0.848361 0.017491 +vt 0.813179 0.148262 +vt 0.845838 0.201228 +vt 0.845381 0.203026 +vt 0.822770 0.013738 +vt 0.848361 0.225043 +vt 0.822770 0.221290 +vt 0.848361 0.190250 +vt 0.848361 0.397802 +vt 0.399969 0.748210 +vt 0.488272 0.004526 +vt 0.453616 0.025470 +vt 0.468422 0.010203 +vt 0.577274 0.004528 +vt 0.468417 0.387693 +vt 0.453611 0.372426 +vt 0.611928 0.372422 +vt 0.597122 0.387690 +vt 0.925243 0.005561 +vt 0.813179 0.355814 +vt 0.925243 0.306896 +vt 0.412221 0.924437 +vt 0.412221 0.623101 +vt 0.443467 0.352456 +vt 0.442463 0.231227 +vt 0.845838 0.408780 +vt 0.845381 0.410578 +vt 0.442467 0.049131 +vt 0.442463 0.292318 +vt 0.442464 0.170171 +vt 0.442466 0.109207 +vn 0.7790 0.1642 -0.6052 +vn 0.8198 0.2555 -0.5126 +vn 0.7857 0.1313 -0.6045 +vn 1.0000 0.0000 -0.0000 +vn 0.8258 0.2898 0.4837 +vn 0.8225 0.4962 0.2778 +vn 0.8229 0.4869 0.2928 +vn 0.7564 0.0000 0.6541 +vn 0.7693 0.0222 0.6385 +vn 0.7802 0.0915 0.6187 +vn 0.7889 0.6067 0.0976 +vn 0.7831 0.6180 -0.0704 +vn 0.7889 0.6067 -0.0976 +vn 0.7564 0.0000 -0.6541 +vn 0.7693 -0.0222 -0.6385 +vn 0.7802 -0.0915 -0.6187 +vn 0.7693 0.0222 -0.6385 +vn 0.7790 -0.1642 0.6052 +vn 0.8198 -0.2555 0.5126 +vn 0.7857 -0.1313 0.6045 +vn 0.7693 -0.0222 0.6385 +vn 0.7790 0.1642 0.6052 +vn 0.8198 0.2555 0.5126 +vn 0.7790 -0.1642 -0.6052 +vn 0.8198 -0.2555 -0.5126 +vn 0.8258 -0.2898 -0.4837 +vn 0.7831 0.6180 0.0704 +vn 0.8225 -0.4962 -0.2778 +vn 0.8229 -0.4869 -0.2928 +vn 0.7889 -0.6067 0.0976 +vn 0.8225 -0.4962 0.2778 +vn 0.8229 -0.4869 0.2928 +vn 0.7889 -0.6067 -0.0976 +vn 0.7831 -0.6180 -0.0704 +vn 0.8258 -0.2898 0.4837 +vn 0.8225 0.4962 -0.2778 +vn 0.8229 0.4869 -0.2928 +vn 0.8258 0.2898 -0.4837 +vn 0.7831 -0.6180 0.0704 +vn 0.7857 0.1313 0.6045 +vn 0.6319 -0.7750 0.0000 +vn 0.6121 -0.7908 0.0000 +vn 0.7802 0.0915 -0.6187 +vn 0.7857 -0.1313 -0.6045 +vn 0.7802 -0.0915 0.6187 +vn 0.6121 0.7908 0.0000 +vn 0.6257 0.7800 0.0000 +vn 0.6319 0.7750 0.0000 +vn 0.6257 -0.7800 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.9909 -0.1349 +vn 0.0000 -0.8638 -0.5038 +vn 0.0000 -0.5038 -0.8638 +vn 0.0000 -0.1349 -0.9909 +vn 0.0000 0.1349 -0.9909 +vn 0.0000 0.5038 -0.8638 +vn 0.0000 0.8638 -0.5038 +vn 0.0000 0.9909 -0.1349 +vn 0.0000 0.9909 0.1349 +vn 0.0000 0.8638 0.5038 +vn 0.0000 0.5038 0.8638 +vn 0.0000 0.1349 0.9909 +vn 0.0000 -0.1349 0.9909 +vn 0.0000 -0.5038 0.8638 +vn 0.0000 -0.8638 0.5038 +vn 0.0000 -0.9909 0.1349 +vn -0.7790 0.1642 -0.6052 +vn -0.8198 0.2555 -0.5126 +vn -0.8258 0.2898 -0.4837 +vn -1.0000 0.0000 0.0000 +vn -0.8225 0.4962 0.2778 +vn -0.8258 0.2898 0.4837 +vn -0.8229 0.4869 0.2928 +vn -0.7693 0.0222 0.6385 +vn -0.7564 0.0000 0.6541 +vn -0.7802 0.0915 0.6187 +vn -0.7831 0.6180 -0.0704 +vn -0.7889 0.6067 0.0976 +vn -0.7889 0.6067 -0.0976 +vn -0.7693 -0.0222 -0.6385 +vn -0.7564 0.0000 -0.6541 +vn -0.7802 -0.0915 -0.6187 +vn -0.7693 0.0222 -0.6385 +vn -0.7802 0.0915 -0.6187 +vn -0.7790 -0.1642 0.6052 +vn -0.8198 -0.2555 0.5126 +vn -0.8258 -0.2898 0.4837 +vn -0.7693 -0.0222 0.6385 +vn -0.7802 -0.0915 0.6187 +vn -0.8198 0.2555 0.5126 +vn -0.7790 0.1642 0.6052 +vn -0.8198 -0.2555 -0.5126 +vn -0.7790 -0.1642 -0.6052 +vn -0.8258 -0.2898 -0.4837 +vn -0.8225 -0.4962 -0.2778 +vn -0.8229 -0.4869 -0.2928 +vn -0.8225 -0.4962 0.2778 +vn -0.7889 -0.6067 0.0976 +vn -0.8229 -0.4869 0.2928 +vn -0.7889 -0.6067 -0.0976 +vn -0.8225 0.4962 -0.2778 +vn -0.8229 0.4869 -0.2928 +vn -0.7831 -0.6180 0.0704 +vn -0.7857 0.1313 0.6045 +vn -0.6319 -0.7750 0.0000 +vn -0.6121 -0.7908 0.0000 +vn -0.7857 0.1313 -0.6045 +vn -0.7857 -0.1313 -0.6045 +vn -0.7857 -0.1313 0.6045 +vn -0.6121 0.7908 0.0000 +vn -0.6257 0.7800 0.0000 +vn -0.6319 0.7750 0.0000 +vn -0.6257 -0.7800 0.0000 +vn -0.7831 0.6180 0.0704 +vn -0.7831 -0.6180 -0.0704 +s 1 +f 268/431/159 259/432/160 308/433/161 +f 252/434/162 246/435/162 299/436/162 +f 224/437/163 261/438/164 225/439/165 +f 278/440/166 305/441/167 271/442/168 +f 217/443/169 253/444/170 218/445/171 +f 251/446/162 252/434/162 296/447/162 +f 272/448/162 238/449/162 239/450/162 +f 218/445/162 230/451/162 217/443/162 +f 290/452/172 304/453/173 265/454/174 +f 219/455/162 233/456/162 231/457/162 +f 220/458/162 234/459/162 233/456/162 +f 222/460/162 229/461/162 218/445/162 +f 223/462/162 235/463/162 222/460/162 +f 298/464/172 307/465/175 312/466/172 +f 274/467/176 264/468/177 302/469/178 +f 225/439/162 238/449/162 224/437/162 +f 225/439/162 230/451/162 240/470/162 +f 226/471/162 242/472/162 227/473/162 +f 228/474/162 241/475/162 226/471/162 +f 286/476/166 301/477/179 322/478/166 +f 274/467/162 244/479/162 243/480/162 +f 227/473/162 234/459/162 221/481/162 +f 268/431/162 237/482/162 236/483/162 +f 272/448/180 260/484/181 224/437/163 +f 280/485/166 317/486/166 314/487/166 +f 283/488/166 321/489/166 318/490/166 +f 293/491/172 324/492/172 289/493/172 +f 266/494/182 255/495/183 219/455/184 +f 296/447/172 319/496/172 292/497/172 +f 295/498/172 311/499/172 315/500/172 +f 322/501/162 304/502/162 323/503/162 +f 305/504/162 312/505/162 307/506/162 +f 257/507/162 256/508/162 303/509/162 +f 310/510/162 315/511/162 311/512/162 +f 306/513/162 308/514/162 253/515/162 +f 314/516/162 319/517/162 316/518/162 +f 318/519/162 324/520/162 320/521/162 +f 247/522/162 271/442/162 239/523/162 +f 217/443/169 261/438/164 254/524/185 +f 219/455/184 256/525/186 220/458/187 +f 248/526/162 277/527/162 247/522/162 +f 227/473/188 262/528/189 226/471/190 +f 221/481/191 256/525/186 257/529/192 +f 248/526/162 249/530/162 284/531/162 +f 228/474/193 262/528/189 264/468/177 +f 218/445/171 258/532/194 222/460/195 +f 249/530/162 245/533/162 287/534/162 +f 245/533/162 244/535/162 275/536/162 +f 223/462/196 258/532/194 259/432/160 +f 250/537/162 265/454/162 232/538/162 +f 281/539/166 310/540/166 277/527/166 +f 246/435/162 237/541/162 269/542/162 +f 251/446/162 289/493/162 250/537/162 +f 221/481/191 263/543/197 227/473/188 +f 265/454/162 266/544/162 267/545/162 +f 268/546/162 269/542/162 270/547/162 +f 271/442/162 272/548/162 273/549/162 +f 274/550/162 275/536/162 276/551/162 +f 277/527/162 278/440/162 279/552/162 +f 280/485/162 281/539/162 282/553/162 +f 283/488/162 284/531/162 285/554/162 +f 286/476/162 287/534/162 288/555/162 +f 289/493/162 290/452/162 291/556/162 +f 292/497/162 293/491/162 294/557/162 +f 295/498/162 296/447/162 297/558/162 +f 298/464/162 299/436/162 300/559/162 +f 320/560/172 292/497/172 319/496/172 +f 315/500/172 296/447/172 295/498/172 +f 271/442/168 306/561/198 272/548/180 +f 308/514/199 330/562/199 336/563/199 +f 315/511/200 341/564/200 327/565/200 +f 308/566/161 269/542/201 268/546/159 +f 299/436/172 312/466/172 311/499/172 +f 265/454/174 303/567/202 266/544/182 +f 277/527/166 309/568/166 278/440/166 +f 280/485/166 313/569/166 281/539/166 +f 318/490/166 284/531/166 283/488/166 +f 322/478/166 287/534/166 286/476/166 +f 275/536/203 302/570/178 301/477/179 +f 289/493/172 323/571/172 290/452/172 +f 266/494/162 231/457/162 232/572/162 +f 333/573/162 331/574/162 332/575/162 +f 335/576/162 330/562/162 329/577/162 +f 339/578/162 337/579/162 338/580/162 +f 328/581/162 341/564/162 342/582/162 +f 326/583/162 343/584/162 344/585/162 +f 347/586/162 345/587/162 346/588/162 +f 320/521/204 344/585/204 318/519/204 +f 311/512/205 338/580/205 310/510/205 +f 303/509/206 332/575/206 302/589/206 +f 319/517/200 343/584/200 325/590/200 +f 312/505/207 337/579/207 340/591/207 +f 304/502/199 331/574/199 334/592/199 +f 323/503/205 346/588/205 322/501/205 +f 307/506/206 329/577/206 305/504/206 +f 316/518/204 342/582/204 314/516/204 +f 324/520/207 345/587/207 348/593/207 +f 384/594/208 246/595/208 252/596/208 +f 379/597/209 248/598/209 247/599/209 +f 380/600/209 249/601/209 248/598/209 +f 381/602/209 245/603/209 249/601/209 +f 362/604/210 240/605/211 230/606/210 +f 372/607/211 238/608/212 240/605/211 +f 371/609/213 247/599/209 239/610/213 +f 370/611/212 239/612/213 238/608/212 +f 377/613/209 244/614/214 245/603/209 +f 376/615/214 243/616/215 244/617/214 +f 375/618/215 241/619/216 243/616/215 +f 373/620/216 242/621/217 241/619/216 +f 374/622/217 234/623/218 242/621/217 +f 366/624/218 233/625/219 234/623/218 +f 365/626/219 231/627/220 233/625/219 +f 364/628/221 250/629/208 232/630/221 +f 363/631/220 232/632/221 231/627/220 +f 378/633/208 237/634/222 246/595/208 +f 369/635/222 236/636/223 237/637/222 +f 368/638/223 235/639/224 236/636/223 +f 367/640/224 229/641/225 235/639/224 +f 361/642/225 230/606/210 229/641/225 +f 383/643/208 252/596/208 251/644/208 +f 400/645/226 391/646/227 355/647/228 +f 431/648/229 384/649/229 427/650/229 +f 393/651/230 356/652/231 357/653/232 +f 437/654/233 410/655/234 403/656/235 +f 385/657/236 349/658/237 350/659/238 +f 428/660/229 383/661/229 424/662/229 +f 370/663/229 356/652/229 404/664/229 +f 362/665/229 350/659/229 349/658/229 +f 436/666/239 422/667/240 397/668/241 +f 351/669/229 365/670/229 352/671/229 +f 352/671/229 366/672/229 353/673/229 +f 361/674/229 354/675/229 350/659/229 +f 367/676/229 355/647/229 354/675/229 +f 430/677/240 439/678/242 401/679/243 +f 406/680/244 396/681/245 360/682/246 +f 356/652/229 372/683/229 357/653/229 +f 357/653/229 362/665/229 349/658/229 +f 374/684/229 358/685/229 359/686/229 +f 373/687/229 360/682/229 358/685/229 +f 418/688/234 433/689/247 407/690/248 +f 376/691/229 408/692/229 406/680/229 +f 366/672/229 359/686/229 353/673/229 +f 369/693/229 402/694/229 400/645/229 +f 392/695/249 404/664/250 356/652/231 +f 412/696/234 449/697/234 416/698/234 +f 415/699/234 453/700/234 419/701/234 +f 456/702/240 425/703/240 421/704/240 +f 387/705/251 398/706/252 351/669/253 +f 451/707/240 428/660/240 424/662/240 +f 427/650/240 443/708/240 431/648/240 +f 436/709/229 454/710/229 455/711/229 +f 444/712/229 437/713/229 439/714/229 +f 394/715/229 396/716/229 434/717/229 +f 447/718/229 442/719/229 443/720/229 +f 386/721/229 385/722/229 438/723/229 +f 451/724/229 446/725/229 448/726/229 +f 456/727/229 450/728/229 452/729/229 +f 403/656/229 410/655/229 379/730/229 +f 349/658/237 393/651/230 357/653/232 +f 388/731/254 351/669/253 352/671/255 +f 409/732/229 413/733/229 380/734/229 +f 394/735/256 359/686/257 358/685/258 +f 353/673/259 388/731/254 352/671/255 +f 416/698/229 380/734/229 412/696/229 +f 360/682/246 394/735/256 358/685/258 +f 390/736/260 350/659/238 354/675/261 +f 419/701/229 381/737/229 415/699/229 +f 407/690/229 377/738/229 418/688/229 +f 355/647/228 390/736/260 354/675/261 +f 397/668/229 422/667/229 382/739/229 +f 442/740/234 413/733/234 409/732/234 +f 401/679/229 378/741/229 430/677/229 +f 421/704/229 425/703/229 383/661/229 +f 395/742/262 353/673/259 359/686/257 +f 397/668/229 399/743/229 398/744/229 +f 400/745/229 402/746/229 401/679/229 +f 403/656/229 405/747/229 404/748/229 +f 406/749/229 408/750/229 407/690/229 +f 409/732/229 411/751/229 410/655/229 +f 412/696/229 414/752/229 413/733/229 +f 415/699/229 417/753/229 416/698/229 +f 418/688/229 420/754/229 419/701/229 +f 421/704/229 423/755/229 422/667/229 +f 424/662/229 426/756/229 425/703/229 +f 427/650/229 429/757/229 428/660/229 +f 430/677/229 432/758/229 431/648/229 +f 452/759/240 424/662/240 425/703/240 +f 428/660/240 447/760/240 427/650/240 +f 403/656/235 438/761/263 437/654/233 +f 440/762/264 462/763/264 438/723/264 +f 447/718/265 473/764/265 445/765/265 +f 401/679/243 440/766/266 400/745/226 +f 444/767/240 431/648/240 443/708/240 +f 397/668/241 435/768/267 436/666/239 +f 409/732/234 441/769/234 442/740/234 +f 412/696/234 445/770/234 446/771/234 +f 416/698/234 450/772/234 415/699/234 +f 419/701/234 454/773/234 418/688/234 +f 434/774/268 407/690/248 433/689/247 +f 421/704/240 455/775/240 456/702/240 +f 363/776/229 351/669/229 398/706/229 +f 463/777/229 465/778/229 464/779/229 +f 462/763/229 467/780/229 461/781/229 +f 469/782/229 471/783/229 470/784/229 +f 473/764/229 460/785/229 474/786/229 +f 475/787/229 458/788/229 476/789/229 +f 477/790/229 479/791/229 478/792/229 +f 476/789/269 452/729/269 450/728/269 +f 470/784/270 443/720/270 442/719/270 +f 464/779/271 435/793/271 434/717/271 +f 451/724/265 475/787/265 449/794/265 +f 444/712/272 469/782/272 441/795/272 +f 436/709/264 463/777/264 433/796/264 +f 478/792/270 455/711/270 454/710/270 +f 461/781/271 439/714/271 437/713/271 +f 474/786/269 448/726/269 446/725/269 +f 456/727/272 477/790/272 453/797/272 +f 382/798/208 251/644/208 250/629/208 +f 268/431/159 223/462/196 259/432/160 +f 246/435/162 300/559/162 299/436/162 +f 299/436/162 295/498/162 252/434/162 +f 295/498/162 297/558/162 252/434/162 +f 224/437/163 260/484/181 261/438/164 +f 278/440/166 309/568/166 305/441/167 +f 217/443/169 254/524/185 253/444/170 +f 252/434/162 297/558/162 296/447/162 +f 296/447/162 292/497/162 251/446/162 +f 292/497/162 294/557/162 251/446/162 +f 239/450/162 273/799/162 272/448/162 +f 272/448/162 224/437/162 238/449/162 +f 218/445/162 229/461/162 230/451/162 +f 290/452/172 323/571/172 304/453/173 +f 219/455/162 220/458/162 233/456/162 +f 220/458/162 221/481/162 234/459/162 +f 222/460/162 235/463/162 229/461/162 +f 223/462/162 236/483/162 235/463/162 +f 298/464/172 269/542/201 307/465/175 +f 274/467/176 228/474/193 264/468/177 +f 225/439/162 240/470/162 238/449/162 +f 225/439/162 217/443/162 230/451/162 +f 226/471/162 241/475/162 242/472/162 +f 228/474/162 243/480/162 241/475/162 +f 286/476/166 275/536/203 301/477/179 +f 243/480/162 228/474/162 274/467/162 +f 274/467/162 276/800/162 244/479/162 +f 227/473/162 242/472/162 234/459/162 +f 236/483/162 223/462/162 268/431/162 +f 268/431/162 270/801/162 237/482/162 +f 272/448/180 306/802/198 260/484/181 +f 280/485/166 284/531/166 317/486/166 +f 283/488/166 287/534/166 321/489/166 +f 293/491/172 320/560/172 324/492/172 +f 266/494/182 303/803/202 255/495/183 +f 296/447/172 316/804/172 319/496/172 +f 295/498/172 299/436/172 311/499/172 +f 322/501/162 301/805/162 304/502/162 +f 305/504/162 309/806/162 312/505/162 +f 255/807/162 303/509/162 256/508/162 +f 303/509/162 302/589/162 257/507/162 +f 302/589/162 264/808/162 262/809/162 +f 262/809/162 263/810/162 302/589/162 +f 263/810/162 257/507/162 302/589/162 +f 310/510/162 313/811/162 315/511/162 +f 259/812/162 258/813/162 308/514/162 +f 258/813/162 253/515/162 308/514/162 +f 253/515/162 254/814/162 306/513/162 +f 254/814/162 261/815/162 306/513/162 +f 261/815/162 260/816/162 306/513/162 +f 314/516/162 317/817/162 319/517/162 +f 318/519/162 321/818/162 324/520/162 +f 247/522/162 279/552/162 278/440/162 +f 278/440/162 271/442/162 247/522/162 +f 271/442/162 273/549/162 239/523/162 +f 217/443/169 225/439/165 261/438/164 +f 219/455/184 255/495/183 256/525/186 +f 248/526/162 282/553/162 281/539/162 +f 281/539/162 277/527/162 248/526/162 +f 277/527/162 279/552/162 247/522/162 +f 227/473/188 263/543/197 262/528/189 +f 221/481/191 220/458/187 256/525/186 +f 249/530/162 285/554/162 284/531/162 +f 284/531/162 280/485/162 248/526/162 +f 280/485/162 282/553/162 248/526/162 +f 228/474/193 226/471/190 262/528/189 +f 218/445/171 253/444/170 258/532/194 +f 245/533/162 288/555/162 287/534/162 +f 287/534/162 283/488/162 249/530/162 +f 283/488/162 285/554/162 249/530/162 +f 244/535/162 276/551/162 275/536/162 +f 275/536/162 286/476/162 245/533/162 +f 286/476/162 288/555/162 245/533/162 +f 223/462/196 222/460/195 258/532/194 +f 250/537/162 291/556/162 290/452/162 +f 290/452/162 265/454/162 250/537/162 +f 265/454/162 267/545/162 232/538/162 +f 281/539/166 313/569/166 310/540/166 +f 237/541/162 270/547/162 269/542/162 +f 269/542/162 298/464/162 246/435/162 +f 298/464/162 300/559/162 246/435/162 +f 251/446/162 294/557/162 293/491/162 +f 293/491/162 289/493/162 251/446/162 +f 289/493/162 291/556/162 250/537/162 +f 221/481/191 257/529/192 263/543/197 +f 320/560/172 293/491/172 292/497/172 +f 315/500/172 316/804/172 296/447/172 +f 271/442/168 305/441/167 306/561/198 +f 308/514/199 306/513/199 330/562/199 +f 315/511/200 313/811/200 341/564/200 +f 308/566/161 307/465/175 269/542/201 +f 299/436/172 298/464/172 312/466/172 +f 265/454/174 304/453/173 303/567/202 +f 277/527/166 310/540/166 309/568/166 +f 280/485/166 314/487/166 313/569/166 +f 318/490/166 317/486/166 284/531/166 +f 322/478/166 321/489/166 287/534/166 +f 275/536/203 274/550/176 302/570/178 +f 289/493/172 324/492/172 323/571/172 +f 232/572/162 267/819/162 266/494/162 +f 266/494/162 219/455/162 231/457/162 +f 333/573/162 334/592/162 331/574/162 +f 335/576/162 336/563/162 330/562/162 +f 339/578/162 340/591/162 337/579/162 +f 328/581/162 327/565/162 341/564/162 +f 326/583/162 325/590/162 343/584/162 +f 347/586/162 348/593/162 345/587/162 +f 320/521/204 326/583/204 344/585/204 +f 311/512/205 339/578/205 338/580/205 +f 303/509/206 333/573/206 332/575/206 +f 319/517/200 317/817/200 343/584/200 +f 312/505/207 309/806/207 337/579/207 +f 304/502/199 301/805/199 331/574/199 +f 323/503/205 347/586/205 346/588/205 +f 307/506/206 335/576/206 329/577/206 +f 316/518/204 328/581/204 342/582/204 +f 324/520/207 321/818/207 345/587/207 +f 384/594/208 378/633/208 246/595/208 +f 379/597/209 380/600/209 248/598/209 +f 380/600/209 381/602/209 249/601/209 +f 381/602/209 377/613/209 245/603/209 +f 362/604/210 372/607/211 240/605/211 +f 372/607/211 370/611/212 238/608/212 +f 371/609/213 379/597/209 247/599/209 +f 370/611/212 371/820/213 239/612/213 +f 377/613/209 376/821/214 244/614/214 +f 376/615/214 375/618/215 243/616/215 +f 375/618/215 373/620/216 241/619/216 +f 373/620/216 374/622/217 242/621/217 +f 374/622/217 366/624/218 234/623/218 +f 366/624/218 365/626/219 233/625/219 +f 365/626/219 363/631/220 231/627/220 +f 364/628/221 382/798/208 250/629/208 +f 363/631/220 364/822/221 232/632/221 +f 378/633/208 369/823/222 237/634/222 +f 369/635/222 368/638/223 236/636/223 +f 368/638/223 367/640/224 235/639/224 +f 367/640/224 361/642/225 229/641/225 +f 361/642/225 362/604/210 230/606/210 +f 383/643/208 384/594/208 252/596/208 +f 400/645/226 440/824/266 391/646/227 +f 431/648/229 432/758/229 378/741/229 +f 378/741/229 384/649/229 431/648/229 +f 384/649/229 429/757/229 427/650/229 +f 393/651/230 392/695/249 356/652/231 +f 437/654/233 441/769/234 410/655/234 +f 385/657/236 386/825/273 349/658/237 +f 428/660/229 429/757/229 384/649/229 +f 384/649/229 383/661/229 428/660/229 +f 383/661/229 426/756/229 424/662/229 +f 404/664/229 405/826/229 371/827/229 +f 371/827/229 370/663/229 404/664/229 +f 362/665/229 361/674/229 350/659/229 +f 436/666/239 455/775/240 422/667/240 +f 351/669/229 363/776/229 365/670/229 +f 352/671/229 365/670/229 366/672/229 +f 361/674/229 367/676/229 354/675/229 +f 367/676/229 368/828/229 355/647/229 +f 430/677/240 444/767/240 439/678/242 +f 406/680/244 434/829/268 396/681/245 +f 356/652/229 370/663/229 372/683/229 +f 357/653/229 372/683/229 362/665/229 +f 374/684/229 373/687/229 358/685/229 +f 373/687/229 375/830/229 360/682/229 +f 418/688/234 454/773/234 433/689/247 +f 406/680/229 360/682/229 375/830/229 +f 375/830/229 376/691/229 406/680/229 +f 366/672/229 374/684/229 359/686/229 +f 400/645/229 355/647/229 368/828/229 +f 368/828/229 369/693/229 400/645/229 +f 392/695/249 438/831/263 404/664/250 +f 412/696/234 446/771/234 449/697/234 +f 415/699/234 450/772/234 453/700/234 +f 456/702/240 452/759/240 425/703/240 +f 387/705/251 435/832/267 398/706/252 +f 451/707/240 448/833/240 428/660/240 +f 427/650/240 447/760/240 443/708/240 +f 436/709/229 433/796/229 454/710/229 +f 444/712/229 441/795/229 437/713/229 +f 434/717/229 435/793/229 389/834/229 +f 435/793/229 387/835/229 388/836/229 +f 389/834/229 435/793/229 388/836/229 +f 389/834/229 395/837/229 434/717/229 +f 395/837/229 394/715/229 434/717/229 +f 447/718/229 445/765/229 442/719/229 +f 385/722/229 390/838/229 440/762/229 +f 390/838/229 391/839/229 440/762/229 +f 440/762/229 438/723/229 385/722/229 +f 438/723/229 392/840/229 393/841/229 +f 393/841/229 386/721/229 438/723/229 +f 451/724/229 449/794/229 446/725/229 +f 456/727/229 453/797/229 450/728/229 +f 410/655/229 411/751/229 379/730/229 +f 379/730/229 371/842/229 403/656/229 +f 371/842/229 405/747/229 403/656/229 +f 349/658/237 386/825/273 393/651/230 +f 388/731/254 387/705/251 351/669/253 +f 413/733/229 414/752/229 380/734/229 +f 380/734/229 379/730/229 409/732/229 +f 379/730/229 411/751/229 409/732/229 +f 394/735/256 395/742/262 359/686/257 +f 353/673/259 389/843/274 388/731/254 +f 416/698/229 417/753/229 381/737/229 +f 381/737/229 380/734/229 416/698/229 +f 380/734/229 414/752/229 412/696/229 +f 360/682/246 396/681/245 394/735/256 +f 390/736/260 385/657/236 350/659/238 +f 419/701/229 420/754/229 377/738/229 +f 377/738/229 381/737/229 419/701/229 +f 381/737/229 417/753/229 415/699/229 +f 407/690/229 408/750/229 376/844/229 +f 376/844/229 377/738/229 407/690/229 +f 377/738/229 420/754/229 418/688/229 +f 355/647/228 391/646/227 390/736/260 +f 422/667/229 423/755/229 382/739/229 +f 382/739/229 364/845/229 397/668/229 +f 364/845/229 399/743/229 397/668/229 +f 442/740/234 445/770/234 413/733/234 +f 401/679/229 402/746/229 369/846/229 +f 369/846/229 378/741/229 401/679/229 +f 378/741/229 432/758/229 430/677/229 +f 425/703/229 426/756/229 383/661/229 +f 383/661/229 382/739/229 421/704/229 +f 382/739/229 423/755/229 421/704/229 +f 395/742/262 389/843/274 353/673/259 +f 452/759/240 451/707/240 424/662/240 +f 428/660/240 448/833/240 447/760/240 +f 403/656/235 404/748/250 438/761/263 +f 440/762/264 468/847/264 462/763/264 +f 447/718/265 459/848/265 473/764/265 +f 401/679/243 439/678/242 440/766/266 +f 444/767/240 430/677/240 431/648/240 +f 397/668/241 398/744/252 435/768/267 +f 409/732/234 410/655/234 441/769/234 +f 412/696/234 413/733/234 445/770/234 +f 416/698/234 449/697/234 450/772/234 +f 419/701/234 453/700/234 454/773/234 +f 434/774/268 406/749/244 407/690/248 +f 421/704/240 422/667/240 455/775/240 +f 398/706/229 399/849/229 364/850/229 +f 364/850/229 363/776/229 398/706/229 +f 463/777/229 466/851/229 465/778/229 +f 462/763/229 468/847/229 467/780/229 +f 469/782/229 472/852/229 471/783/229 +f 473/764/229 459/848/229 460/785/229 +f 475/787/229 457/853/229 458/788/229 +f 477/790/229 480/854/229 479/791/229 +f 476/789/269 458/788/269 452/729/269 +f 470/784/270 471/783/270 443/720/270 +f 464/779/271 465/778/271 435/793/271 +f 451/724/265 457/853/265 475/787/265 +f 444/712/272 472/852/272 469/782/272 +f 436/709/264 466/851/264 463/777/264 +f 478/792/270 479/791/270 455/711/270 +f 461/781/271 467/780/271 439/714/271 +f 474/786/269 460/785/269 448/726/269 +f 456/727/272 480/854/272 477/790/272 +f 382/798/208 383/643/208 251/644/208 diff --git a/src/main/resources/assets/hbm/models/doors/water_door.obj b/src/main/resources/assets/hbm/models/doors/water_door.obj new file mode 100644 index 000000000..6dfaabcff --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/water_door.obj @@ -0,0 +1,7570 @@ +# Blender v2.92.0 OBJ File: 'water_door.blend' +# www.blender.org +o bolt +v 0.165037 2.447428 -0.486393 +v 0.165037 2.563211 -0.486393 +v 0.165037 2.447428 -1.450890 +v 0.165037 2.563211 -1.450890 +v 0.197443 2.447428 -0.486393 +v 0.197443 2.563211 -0.486393 +v 0.197443 2.447428 -1.450890 +v 0.197443 2.563211 -1.450890 +v 0.165037 0.441220 -0.486393 +v 0.165037 0.557003 -0.486393 +v 0.165037 0.441220 -1.450890 +v 0.165037 0.557003 -1.450890 +v 0.197443 0.441220 -0.486393 +v 0.197443 0.557003 -0.486393 +v 0.197443 0.441220 -1.450890 +v 0.197443 0.557003 -1.450890 +vt 0.017052 0.475044 +vt 0.410579 0.522284 +vt 0.017052 0.522285 +vt 0.423801 0.461821 +vt 0.410579 0.414580 +vt 0.423801 0.414580 +vt 0.410579 0.461821 +vt 0.017052 0.414580 +vt 0.017052 0.461821 +vt 0.003830 0.414580 +vt 0.017052 0.401357 +vt 0.410579 0.401358 +vt 0.410579 0.475043 +vt 0.478701 0.414580 +vt 0.431462 0.808107 +vt 0.431460 0.414580 +vt 0.491925 0.821329 +vt 0.539166 0.808106 +vt 0.539166 0.821329 +vt 0.491925 0.808106 +vt 0.539165 0.414580 +vt 0.491924 0.414580 +vt 0.539165 0.401357 +vt 0.552388 0.414579 +vt 0.552388 0.808106 +vt 0.478703 0.808106 +vt 0.003830 0.461821 +vt 0.491924 0.401357 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/6/2 +f 8/7/3 5/8/3 7/5/3 +f 6/9/4 1/10/4 5/8/4 +f 7/5/5 1/11/5 3/12/5 +f 4/13/6 6/9/6 8/7/6 +f 10/14/1 11/15/1 9/16/1 +f 12/17/2 15/18/2 11/19/2 +f 16/20/3 13/21/3 15/18/3 +f 14/22/4 9/23/4 13/21/4 +f 15/18/5 9/24/5 11/25/5 +f 12/26/6 14/22/6 16/20/6 +f 2/1/1 4/13/1 3/2/1 +f 4/4/2 8/7/2 7/5/2 +f 8/7/3 6/9/3 5/8/3 +f 6/9/4 2/27/4 1/10/4 +f 7/5/5 5/8/5 1/11/5 +f 4/13/6 2/1/6 6/9/6 +f 10/14/1 12/26/1 11/15/1 +f 12/17/2 16/20/2 15/18/2 +f 16/20/3 14/22/3 13/21/3 +f 14/22/4 10/28/4 9/23/4 +f 15/18/5 13/21/5 9/24/5 +f 12/26/6 10/14/6 14/22/6 +o door +v 0.101040 2.807820 -0.722241 +v 0.101040 2.743416 -0.939834 +v 0.101040 2.807820 0.722241 +v 0.101040 2.743416 0.939834 +v 0.101040 2.325418 -1.144342 +v 0.101040 2.325418 1.144342 +v 0.101040 0.674582 -1.144342 +v 0.101040 0.674582 1.144342 +v 0.101040 0.256584 -0.939834 +v 0.101040 0.256584 0.939834 +v 0.101040 0.192180 -0.722241 +v 0.101040 0.192180 0.722241 +v 0.125000 2.848552 -0.726781 +v 0.125000 2.780064 -0.958169 +v 0.125000 2.848552 0.726781 +v 0.125000 2.780064 0.958169 +v 0.125000 2.330607 -1.179983 +v 0.125000 2.330607 1.179983 +v 0.125000 0.669393 -1.179983 +v 0.125000 0.669393 1.179983 +v 0.125000 0.219935 -0.958169 +v 0.125000 0.219935 0.958169 +v 0.125000 0.151448 -0.726781 +v 0.125000 0.151448 0.726781 +v 0.125000 2.848552 -0.108504 +v 0.125000 2.848552 0.108504 +v 0.125000 0.151448 0.108504 +v 0.125000 0.151448 -0.108504 +v 0.101040 2.807820 -0.108504 +v 0.101040 2.807820 0.108504 +v 0.101040 0.192180 0.108504 +v 0.101040 0.192180 -0.108504 +v 0.133246 2.807820 -0.071231 +v 0.133246 2.807820 0.071231 +v 0.133246 0.192180 0.071231 +v 0.133246 0.192180 -0.071231 +v 0.101040 2.325418 0.722241 +v 0.101040 2.325418 0.108504 +v 0.133246 2.324229 0.071231 +v 0.133246 2.324229 -0.071231 +v 0.101040 2.325418 -0.108504 +v 0.101040 2.325418 -0.722241 +v 0.101040 0.674582 0.722241 +v 0.101040 0.674582 0.108504 +v 0.133246 0.675771 0.071231 +v 0.133246 0.675771 -0.071231 +v 0.101040 0.674582 -0.108504 +v 0.101040 0.674582 -0.722241 +v 0.130922 1.829642 -0.108504 +v 0.130922 1.906068 -0.108504 +v 0.130922 1.093932 -0.108504 +v 0.130922 1.170358 -0.108504 +v 0.130922 1.906068 0.108504 +v 0.130922 1.829642 0.108504 +v 0.130922 1.170358 0.108504 +v 0.130922 1.093932 0.108504 +v 0.130922 1.829642 1.144342 +v 0.130922 1.906068 1.144342 +v 0.130922 1.906068 0.722241 +v 0.130922 1.829642 0.722241 +v 0.130922 1.170358 0.722241 +v 0.130922 1.093932 0.722241 +v 0.130922 1.093932 1.144342 +v 0.130922 1.170358 1.144342 +v 0.130922 1.829642 -0.722241 +v 0.130922 1.906068 -0.722241 +v 0.130922 1.906068 -1.144342 +v 0.130922 1.829642 -1.144342 +v 0.130922 1.170358 -1.144342 +v 0.130922 1.093932 -1.144342 +v 0.130922 1.093932 -0.722241 +v 0.130922 1.170358 -0.722241 +v 0.125000 1.075880 -1.179983 +v 0.125000 1.188410 -1.179983 +v 0.125000 1.811590 -1.179983 +v 0.125000 1.924120 -1.179983 +v 0.125000 1.924120 1.179983 +v 0.125000 1.811590 1.179983 +v 0.125000 1.188410 1.179983 +v 0.125000 1.075880 1.179983 +v 0.101040 1.075880 -1.144342 +v 0.101040 1.188410 -1.144342 +v 0.101040 1.811590 -1.144342 +v 0.101040 1.924120 -1.144342 +v 0.101040 1.924120 1.144342 +v 0.101040 1.811590 1.144342 +v 0.101040 1.188410 1.144342 +v 0.101040 1.075880 1.144342 +v 0.133246 1.075880 -0.071231 +v 0.133246 1.188410 -0.071231 +v 0.133246 1.811590 -0.071231 +v 0.133246 1.924120 -0.071231 +v 0.101040 1.924120 -0.108504 +v 0.101040 1.811590 -0.108504 +v 0.101040 1.188410 -0.108504 +v 0.101040 1.075880 -0.108504 +v 0.101040 1.075880 0.722241 +v 0.101040 1.188410 0.722241 +v 0.101040 1.811590 0.722241 +v 0.101040 1.924120 0.722241 +v 0.101040 1.075880 0.108504 +v 0.101040 1.188410 0.108504 +v 0.101040 1.811590 0.108504 +v 0.101040 1.924120 0.108504 +v 0.133246 1.075880 0.071231 +v 0.133246 1.188410 0.071231 +v 0.133246 1.811590 0.071231 +v 0.133246 1.924120 0.071231 +v 0.101040 1.924120 -0.722241 +v 0.101040 1.811590 -0.722241 +v 0.101040 1.188410 -0.722241 +v 0.101040 1.075880 -0.722241 +v 0.101040 0.392644 1.051717 +v 0.101040 0.605411 1.126214 +v 0.124987 0.404961 1.120039 +v 0.101040 0.605411 -1.126213 +v 0.101040 0.392644 -1.051717 +v 0.124987 0.404961 -1.120039 +v 0.101040 0.392642 -0.722241 +v 0.101040 0.605412 -0.722241 +v 0.101040 0.392635 -0.108504 +v 0.101040 0.605416 -0.108504 +v 0.133246 0.392635 -0.071231 +v 0.133246 0.605416 -0.071231 +v 0.133246 0.392635 0.071231 +v 0.133246 0.605416 0.071231 +v 0.101040 0.392635 0.108504 +v 0.101040 0.605416 0.108504 +v 0.101040 0.605412 0.722241 +v 0.101040 0.392642 0.722241 +v 0.124996 0.586645 1.161225 +v 0.124996 0.586645 -1.161225 +v 0.148339 0.594584 0.722241 +v 0.148339 0.403470 0.722241 +v 0.148339 0.403463 0.108504 +v 0.148339 0.594588 0.108504 +v 0.148339 0.403463 -0.108504 +v 0.148339 0.594588 -0.108504 +v 0.148339 0.403470 -0.722241 +v 0.148339 0.594584 -0.722241 +v 0.101040 2.603477 -1.033087 +v 0.101040 2.403613 -1.126622 +v 0.124987 2.595039 -1.120039 +v 0.101040 2.403613 1.126622 +v 0.101040 2.600861 1.034830 +v 0.124987 2.595039 1.120039 +v 0.101040 2.590124 0.722241 +v 0.101040 2.403611 0.722241 +v 0.101040 2.590129 0.108504 +v 0.101040 2.403606 0.108504 +v 0.133246 2.590129 0.071231 +v 0.133246 2.403606 0.071231 +v 0.133246 2.590129 -0.071231 +v 0.133246 2.403606 -0.071231 +v 0.101040 2.590129 -0.108504 +v 0.101040 2.403606 -0.108504 +v 0.101040 2.403611 -0.722241 +v 0.101040 2.590124 -0.722241 +v 0.124996 2.411551 -1.161633 +v 0.124996 2.411551 1.161633 +v 0.148339 2.579340 -0.108504 +v 0.148339 2.414395 -0.108504 +v 0.148339 2.414400 -0.722241 +v 0.148339 2.579335 -0.722241 +v 0.148339 2.579340 0.108504 +v 0.148339 2.414395 0.108504 +v 0.148339 2.579335 0.722241 +v 0.148339 2.414400 0.722241 +v -0.101040 2.807820 -0.722241 +v -0.101040 2.743416 -0.939834 +v -0.101040 2.807820 0.722241 +v -0.101040 2.743416 0.939834 +v -0.101040 2.325418 -1.144342 +v -0.101040 2.325418 1.144342 +v -0.101040 0.674582 -1.144342 +v -0.101040 0.674582 1.144342 +v -0.101040 0.256584 -0.939834 +v -0.101040 0.256584 0.939834 +v -0.101040 0.192180 -0.722241 +v -0.101040 0.192180 0.722241 +v -0.125000 2.848552 -0.726781 +v -0.125000 2.780064 -0.958169 +v -0.125000 2.848552 0.726781 +v -0.125000 2.780064 0.958169 +v -0.125000 2.330607 -1.179983 +v -0.125000 2.330607 1.179983 +v -0.125000 0.669393 -1.179983 +v -0.125000 0.669393 1.179983 +v -0.125000 0.219935 -0.958169 +v -0.125000 0.219935 0.958169 +v -0.125000 0.151448 -0.726781 +v -0.125000 0.151448 0.726781 +v -0.125000 2.848552 -0.108504 +v -0.125000 2.848552 0.108504 +v -0.125000 0.151448 0.108504 +v -0.125000 0.151448 -0.108504 +v -0.101040 2.807820 -0.108504 +v -0.101040 2.807820 0.108504 +v -0.101040 0.192180 0.108504 +v -0.101040 0.192180 -0.108504 +v -0.133246 2.807820 -0.071231 +v -0.133246 2.807820 0.071231 +v -0.133246 0.192180 0.071231 +v -0.133246 0.192180 -0.071231 +v -0.101040 2.325418 0.722241 +v -0.101040 2.325418 0.108504 +v -0.133246 2.324229 0.071231 +v -0.133246 2.324229 -0.071231 +v -0.101040 2.325418 -0.108504 +v -0.101040 2.325418 -0.722241 +v -0.101040 0.674582 0.722241 +v -0.101040 0.674582 0.108504 +v -0.133246 0.675771 0.071231 +v -0.133246 0.675771 -0.071231 +v -0.101040 0.674582 -0.108504 +v -0.101040 0.674582 -0.722241 +v -0.130922 1.829642 -0.108504 +v -0.130922 1.906068 -0.108504 +v -0.130922 1.093932 -0.108504 +v -0.130922 1.170358 -0.108504 +v -0.130922 1.906068 0.108504 +v -0.130922 1.829642 0.108504 +v -0.130922 1.170358 0.108504 +v -0.130922 1.093932 0.108504 +v -0.130922 1.829642 1.144342 +v -0.130922 1.906068 1.144342 +v -0.130922 1.906068 0.722241 +v -0.130922 1.829642 0.722241 +v -0.130922 1.170358 0.722241 +v -0.130922 1.093932 0.722241 +v -0.130922 1.093932 1.144342 +v -0.130922 1.170358 1.144342 +v -0.130922 1.829642 -0.722241 +v -0.130922 1.906068 -0.722241 +v -0.130922 1.906068 -1.144342 +v -0.130922 1.829642 -1.144342 +v -0.130922 1.170358 -1.144342 +v -0.130922 1.093932 -1.144342 +v -0.130922 1.093932 -0.722241 +v -0.130922 1.170358 -0.722241 +v -0.125000 1.075880 -1.179983 +v -0.125000 1.188410 -1.179983 +v -0.125000 1.811590 -1.179983 +v -0.125000 1.924120 -1.179983 +v -0.125000 1.924120 1.179983 +v -0.125000 1.811590 1.179983 +v -0.125000 1.188410 1.179983 +v -0.125000 1.075880 1.179983 +v -0.101040 1.075880 -1.144342 +v -0.101040 1.188410 -1.144342 +v -0.101040 1.811590 -1.144342 +v -0.101040 1.924120 -1.144342 +v -0.101040 1.924120 1.144342 +v -0.101040 1.811590 1.144342 +v -0.101040 1.188410 1.144342 +v -0.101040 1.075880 1.144342 +v -0.133246 1.075880 -0.071231 +v -0.133246 1.188410 -0.071231 +v -0.133246 1.811590 -0.071231 +v -0.133246 1.924120 -0.071231 +v -0.101040 1.924120 -0.108504 +v -0.101040 1.811590 -0.108504 +v -0.101040 1.188410 -0.108504 +v -0.101040 1.075880 -0.108504 +v -0.101040 1.075880 0.722241 +v -0.101040 1.188410 0.722241 +v -0.101040 1.811590 0.722241 +v -0.101040 1.924120 0.722241 +v -0.101040 1.075880 0.108504 +v -0.101040 1.188410 0.108504 +v -0.101040 1.811590 0.108504 +v -0.101040 1.924120 0.108504 +v -0.133246 1.075880 0.071231 +v -0.133246 1.188410 0.071231 +v -0.133246 1.811590 0.071231 +v -0.133246 1.924120 0.071231 +v -0.101040 1.924120 -0.722241 +v -0.101040 1.811590 -0.722241 +v -0.101040 1.188410 -0.722241 +v -0.101040 1.075880 -0.722241 +v -0.101040 0.392644 1.051717 +v -0.101040 0.605411 1.126214 +v -0.124987 0.404961 1.120039 +v -0.101040 0.605411 -1.126213 +v -0.101040 0.392644 -1.051717 +v -0.124987 0.404961 -1.120039 +v -0.101040 0.392642 -0.722241 +v -0.101040 0.605412 -0.722241 +v -0.101040 0.392635 -0.108504 +v -0.101040 0.605416 -0.108504 +v -0.133246 0.392635 -0.071231 +v -0.133246 0.605416 -0.071231 +v -0.133246 0.392635 0.071231 +v -0.133246 0.605416 0.071231 +v -0.101040 0.392635 0.108504 +v -0.101040 0.605416 0.108504 +v -0.101040 0.605412 0.722241 +v -0.101040 0.392642 0.722241 +v -0.124996 0.586645 1.161225 +v -0.124996 0.586645 -1.161225 +v -0.148339 0.594584 0.722241 +v -0.148339 0.403470 0.722241 +v -0.148339 0.403463 0.108504 +v -0.148339 0.594588 0.108504 +v -0.148339 0.403463 -0.108504 +v -0.148339 0.594588 -0.108504 +v -0.148339 0.403470 -0.722241 +v -0.148339 0.594584 -0.722241 +v -0.101040 2.603477 -1.033087 +v -0.101040 2.403613 -1.126622 +v -0.124987 2.595039 -1.120039 +v -0.101040 2.403613 1.126622 +v -0.101040 2.600861 1.034830 +v -0.124987 2.595039 1.120039 +v -0.101040 2.590124 0.722241 +v -0.101040 2.403611 0.722241 +v -0.101040 2.590129 0.108504 +v -0.101040 2.403606 0.108504 +v -0.133246 2.590129 0.071231 +v -0.133246 2.403606 0.071231 +v -0.133246 2.590129 -0.071231 +v -0.133246 2.403606 -0.071231 +v -0.101040 2.590129 -0.108504 +v -0.101040 2.403606 -0.108504 +v -0.101040 2.403611 -0.722241 +v -0.101040 2.590124 -0.722241 +v -0.124996 2.411551 -1.161633 +v -0.124996 2.411551 1.161633 +v -0.148339 2.579340 -0.108504 +v -0.148339 2.414395 -0.108504 +v -0.148339 2.414400 -0.722241 +v -0.148339 2.579335 -0.722241 +v -0.148339 2.579340 0.108504 +v -0.148339 2.414395 0.108504 +v -0.148339 2.579335 0.722241 +v -0.148339 2.414400 0.722241 +v 0.197647 2.347521 -0.528361 +v 0.197647 2.645470 -0.528361 +v 0.197647 2.347521 -0.647202 +v 0.197647 2.645470 -0.647202 +v 0.226225 2.347521 -0.528361 +v 0.226225 2.645470 -0.528361 +v 0.226225 2.347521 -0.647202 +v 0.226225 2.645470 -0.647202 +v 0.097240 2.347521 -0.528361 +v 0.097240 2.645470 -0.528361 +v 0.097240 2.347521 -0.647202 +v 0.097240 2.645470 -0.647202 +v 0.164155 2.347521 -0.528361 +v 0.164155 2.645470 -0.528361 +v 0.164155 2.347521 -0.647202 +v 0.164155 2.645470 -0.647202 +v 0.203265 2.586435 -0.575212 +v 0.203265 2.612117 -0.575212 +v 0.203265 2.586435 -0.600894 +v 0.203265 2.612117 -0.600894 +v 0.244293 2.612117 -0.600894 +v 0.244293 2.586435 -0.600894 +v 0.244293 2.586435 -0.575212 +v 0.244293 2.612117 -0.575212 +v 0.161929 2.564306 -0.571122 +v 0.161929 2.582345 -0.553083 +v 0.161929 2.616207 -0.553083 +v 0.161929 2.634246 -0.571122 +v 0.161929 2.582345 -0.623023 +v 0.161929 2.564306 -0.604984 +v 0.161929 2.634246 -0.604984 +v 0.161929 2.616207 -0.623023 +v 0.203265 2.616207 -0.623023 +v 0.203265 2.634246 -0.604984 +v 0.203265 2.621491 -0.610268 +v 0.203265 2.564306 -0.604984 +v 0.203265 2.582345 -0.623023 +v 0.203265 2.577062 -0.610268 +v 0.203265 2.582345 -0.553083 +v 0.203265 2.564306 -0.571122 +v 0.203265 2.577062 -0.565838 +v 0.203265 2.634246 -0.571122 +v 0.203265 2.616207 -0.553083 +v 0.203265 2.621491 -0.565838 +v 0.203265 2.384638 -0.575212 +v 0.203265 2.410320 -0.575212 +v 0.203265 2.384638 -0.600894 +v 0.203265 2.410320 -0.600894 +v 0.244293 2.410320 -0.600894 +v 0.244293 2.384638 -0.600894 +v 0.244293 2.384638 -0.575212 +v 0.244293 2.410320 -0.575212 +v 0.161929 2.362509 -0.571122 +v 0.161929 2.380548 -0.553083 +v 0.161929 2.414410 -0.553083 +v 0.161929 2.432449 -0.571122 +v 0.161929 2.380548 -0.623023 +v 0.161929 2.362509 -0.604984 +v 0.161929 2.432449 -0.604984 +v 0.161929 2.414410 -0.623023 +v 0.203265 2.414410 -0.623023 +v 0.203265 2.432449 -0.604984 +v 0.203265 2.419693 -0.610268 +v 0.203265 2.362509 -0.604984 +v 0.203265 2.380548 -0.623023 +v 0.203265 2.375264 -0.610268 +v 0.203265 2.380548 -0.553083 +v 0.203265 2.362509 -0.571122 +v 0.203265 2.375264 -0.565838 +v 0.203265 2.432449 -0.571122 +v 0.203265 2.414410 -0.553083 +v 0.203265 2.419693 -0.565838 +v 0.197647 0.341313 -0.866632 +v 0.197647 0.639262 -0.866632 +v 0.197647 0.341313 -0.985472 +v 0.197647 0.639262 -0.985472 +v 0.226225 0.341313 -0.866632 +v 0.226225 0.639262 -0.866632 +v 0.226225 0.341313 -0.985472 +v 0.226225 0.639262 -0.985472 +v 0.097240 0.341313 -0.866632 +v 0.097240 0.639262 -0.866632 +v 0.097240 0.341313 -0.985472 +v 0.097240 0.639262 -0.985472 +v 0.164155 0.341313 -0.866632 +v 0.164155 0.639262 -0.866632 +v 0.164155 0.341313 -0.985472 +v 0.164155 0.639262 -0.985472 +v 0.203265 0.580227 -0.913483 +v 0.203265 0.605909 -0.913483 +v 0.203265 0.580227 -0.939164 +v 0.203265 0.605909 -0.939164 +v 0.244293 0.605909 -0.939164 +v 0.244293 0.580227 -0.939164 +v 0.244293 0.580227 -0.913483 +v 0.244293 0.605909 -0.913483 +v 0.161929 0.558098 -0.909392 +v 0.161929 0.576137 -0.891353 +v 0.161929 0.609999 -0.891353 +v 0.161929 0.628038 -0.909392 +v 0.161929 0.576137 -0.961294 +v 0.161929 0.558098 -0.943255 +v 0.161929 0.628038 -0.943255 +v 0.161929 0.609999 -0.961294 +v 0.203265 0.609999 -0.961294 +v 0.203265 0.628038 -0.943255 +v 0.203265 0.615283 -0.948538 +v 0.203265 0.558098 -0.943255 +v 0.203265 0.576137 -0.961294 +v 0.203265 0.570854 -0.948538 +v 0.203265 0.576137 -0.891353 +v 0.203265 0.558098 -0.909392 +v 0.203265 0.570854 -0.904109 +v 0.203265 0.628038 -0.909392 +v 0.203265 0.609999 -0.891353 +v 0.203265 0.615283 -0.904109 +v 0.203265 0.378430 -0.913483 +v 0.203265 0.404112 -0.913483 +v 0.203265 0.378430 -0.939164 +v 0.203265 0.404112 -0.939164 +v 0.244293 0.404112 -0.939164 +v 0.244293 0.378430 -0.939164 +v 0.244293 0.378430 -0.913483 +v 0.244293 0.404112 -0.913483 +v 0.161929 0.356301 -0.909392 +v 0.161929 0.374340 -0.891353 +v 0.161929 0.408202 -0.891353 +v 0.161929 0.426241 -0.909392 +v 0.161929 0.374340 -0.961294 +v 0.161929 0.356301 -0.943255 +v 0.161929 0.426241 -0.943255 +v 0.161929 0.408202 -0.961294 +v 0.203265 0.408202 -0.961294 +v 0.203265 0.426241 -0.943255 +v 0.203265 0.413486 -0.948538 +v 0.203265 0.356301 -0.943255 +v 0.203265 0.374340 -0.961294 +v 0.203265 0.369056 -0.948538 +v 0.203265 0.374340 -0.891353 +v 0.203265 0.356301 -0.909392 +v 0.203265 0.369056 -0.904109 +v 0.203265 0.426241 -0.909392 +v 0.203265 0.408202 -0.891353 +v 0.203265 0.413486 -0.904109 +v 0.197647 0.341313 -0.528361 +v 0.197647 0.639262 -0.528361 +v 0.197647 0.341313 -0.647202 +v 0.197647 0.639262 -0.647202 +v 0.226225 0.341313 -0.528361 +v 0.226225 0.639262 -0.528361 +v 0.226225 0.341313 -0.647202 +v 0.226225 0.639262 -0.647202 +v 0.097240 0.341313 -0.528361 +v 0.097240 0.639262 -0.528361 +v 0.097240 0.341313 -0.647202 +v 0.097240 0.639262 -0.647202 +v 0.164155 0.341313 -0.528361 +v 0.164155 0.639262 -0.528361 +v 0.164155 0.341313 -0.647202 +v 0.164155 0.639262 -0.647202 +v 0.203265 0.580227 -0.575212 +v 0.203265 0.605909 -0.575212 +v 0.203265 0.580227 -0.600894 +v 0.203265 0.605909 -0.600894 +v 0.244293 0.605909 -0.600894 +v 0.244293 0.580227 -0.600894 +v 0.244293 0.580227 -0.575212 +v 0.244293 0.605909 -0.575212 +v 0.161929 0.558098 -0.571122 +v 0.161929 0.576137 -0.553083 +v 0.161929 0.609999 -0.553083 +v 0.161929 0.628038 -0.571122 +v 0.161929 0.576137 -0.623023 +v 0.161929 0.558098 -0.604984 +v 0.161929 0.628038 -0.604984 +v 0.161929 0.609999 -0.623023 +v 0.203265 0.609999 -0.623023 +v 0.203265 0.628038 -0.604984 +v 0.203265 0.615283 -0.610268 +v 0.203265 0.558098 -0.604984 +v 0.203265 0.576137 -0.623023 +v 0.203265 0.570854 -0.610268 +v 0.203265 0.576137 -0.553083 +v 0.203265 0.558098 -0.571122 +v 0.203265 0.570854 -0.565839 +v 0.203265 0.628038 -0.571122 +v 0.203265 0.609999 -0.553083 +v 0.203265 0.615283 -0.565839 +v 0.203265 0.378430 -0.575212 +v 0.203265 0.404112 -0.575212 +v 0.203265 0.378430 -0.600894 +v 0.203265 0.404112 -0.600894 +v 0.244293 0.404112 -0.600894 +v 0.244293 0.378430 -0.600894 +v 0.244293 0.378430 -0.575212 +v 0.244293 0.404112 -0.575212 +v 0.161929 0.356301 -0.571122 +v 0.161929 0.374340 -0.553083 +v 0.161929 0.408202 -0.553083 +v 0.161929 0.426241 -0.571122 +v 0.161929 0.374340 -0.623023 +v 0.161929 0.356301 -0.604984 +v 0.161929 0.426241 -0.604984 +v 0.161929 0.408202 -0.623023 +v 0.203265 0.408202 -0.623023 +v 0.203265 0.426241 -0.604984 +v 0.203265 0.413486 -0.610268 +v 0.203265 0.356301 -0.604984 +v 0.203265 0.374340 -0.623023 +v 0.203265 0.369056 -0.610268 +v 0.203265 0.374340 -0.553083 +v 0.203265 0.356301 -0.571122 +v 0.203265 0.369056 -0.565839 +v 0.203265 0.426241 -0.571122 +v 0.203265 0.408202 -0.553083 +v 0.203265 0.413486 -0.565839 +v 0.197647 2.347521 -0.866632 +v 0.197647 2.645470 -0.866632 +v 0.197647 2.347521 -0.985472 +v 0.197647 2.645470 -0.985472 +v 0.226225 2.347521 -0.866632 +v 0.226225 2.645470 -0.866632 +v 0.226225 2.347521 -0.985472 +v 0.226225 2.645470 -0.985472 +v 0.097240 2.347521 -0.866632 +v 0.097240 2.645470 -0.866632 +v 0.097240 2.347521 -0.985472 +v 0.097240 2.645470 -0.985472 +v 0.164155 2.347521 -0.866632 +v 0.164155 2.645470 -0.866632 +v 0.164155 2.347521 -0.985472 +v 0.164155 2.645470 -0.985472 +v 0.203265 2.586436 -0.913483 +v 0.203265 2.612117 -0.913483 +v 0.203265 2.586436 -0.939164 +v 0.203265 2.612117 -0.939164 +v 0.244293 2.612117 -0.939164 +v 0.244293 2.586436 -0.939164 +v 0.244293 2.586436 -0.913483 +v 0.244293 2.612117 -0.913483 +v 0.161929 2.564306 -0.909392 +v 0.161929 2.582345 -0.891353 +v 0.161929 2.616208 -0.891353 +v 0.161929 2.634247 -0.909392 +v 0.161929 2.582345 -0.961294 +v 0.161929 2.564306 -0.943255 +v 0.161929 2.634247 -0.943255 +v 0.161929 2.616208 -0.961294 +v 0.203265 2.616208 -0.961294 +v 0.203265 2.634247 -0.943255 +v 0.203265 2.621491 -0.948538 +v 0.203265 2.564306 -0.943255 +v 0.203265 2.582345 -0.961294 +v 0.203265 2.577062 -0.948538 +v 0.203265 2.582345 -0.891353 +v 0.203265 2.564306 -0.909392 +v 0.203265 2.577062 -0.904109 +v 0.203265 2.634247 -0.909392 +v 0.203265 2.616208 -0.891353 +v 0.203265 2.621491 -0.904109 +v 0.203265 2.384638 -0.913483 +v 0.203265 2.410320 -0.913483 +v 0.203265 2.384638 -0.939164 +v 0.203265 2.410320 -0.939164 +v 0.244293 2.410320 -0.939164 +v 0.244293 2.384638 -0.939164 +v 0.244293 2.384638 -0.913483 +v 0.244293 2.410320 -0.913483 +v 0.161929 2.362509 -0.909392 +v 0.161929 2.380548 -0.891353 +v 0.161929 2.414410 -0.891353 +v 0.161929 2.432449 -0.909392 +v 0.161929 2.380548 -0.961294 +v 0.161929 2.362509 -0.943255 +v 0.161929 2.432449 -0.943255 +v 0.161929 2.414410 -0.961294 +v 0.203265 2.414410 -0.961294 +v 0.203265 2.432449 -0.943255 +v 0.203265 2.419694 -0.948538 +v 0.203265 2.362509 -0.943255 +v 0.203265 2.380548 -0.961294 +v 0.203265 2.375265 -0.948538 +v 0.203265 2.380548 -0.891353 +v 0.203265 2.362509 -0.909392 +v 0.203265 2.375265 -0.904109 +v 0.203265 2.432449 -0.909392 +v 0.203265 2.414410 -0.891353 +v 0.203265 2.419694 -0.904109 +vt 0.511490 0.377541 +vt 0.478344 0.390762 +vt 0.478345 0.377541 +vt 0.194788 0.944062 +vt 0.161643 0.947241 +vt 0.161643 0.944062 +vt 0.194788 0.947241 +vt 0.161643 0.960462 +vt 0.194788 0.960462 +vt 0.161643 0.963641 +vt 0.158463 0.960462 +vt 0.158463 0.947241 +vt 0.197968 0.947241 +vt 0.882134 0.687732 +vt 0.874690 0.654587 +vt 0.882134 0.654587 +vt 0.874690 0.687732 +vt 0.861469 0.654587 +vt 0.861469 0.687732 +vt 0.854025 0.654587 +vt 0.861469 0.647143 +vt 0.874690 0.647143 +vt 0.874690 0.695177 +vt 0.034978 0.968702 +vt 0.034978 0.972469 +vt 0.032517 0.969157 +vt 0.423791 0.822353 +vt 0.419227 0.819496 +vt 0.423791 0.819496 +vt 0.032972 0.979074 +vt 0.029205 0.974476 +vt 0.032972 0.974476 +vt 0.027198 0.972469 +vt 0.022599 0.968702 +vt 0.027198 0.968702 +vt 0.039577 0.972469 +vt 0.039577 0.968702 +vt 0.032517 0.972014 +vt 0.029660 0.972014 +vt 0.029205 0.966695 +vt 0.032972 0.966695 +vt 0.029660 0.969157 +vt 0.416370 0.816639 +vt 0.419227 0.813782 +vt 0.419227 0.816639 +vt 0.423791 0.816639 +vt 0.423791 0.825210 +vt 0.419227 0.822353 +vt 0.423791 0.813782 +vt 0.033559 0.973057 +vt 0.033559 0.968114 +vt 0.028617 0.968114 +vt 0.028617 0.973057 +vt 0.039577 0.965864 +vt 0.034978 0.965864 +vt 0.034978 0.975307 +vt 0.039577 0.975307 +vt 0.027198 0.965864 +vt 0.022599 0.965864 +vt 0.022599 0.975307 +vt 0.027198 0.975307 +vt 0.029205 0.962097 +vt 0.032972 0.962097 +vt 0.701874 0.977962 +vt 0.701874 0.974195 +vt 0.704336 0.977507 +vt 0.689065 0.943870 +vt 0.684500 0.941013 +vt 0.689065 0.941013 +vt 0.703881 0.967590 +vt 0.707648 0.972188 +vt 0.703881 0.972188 +vt 0.709655 0.974195 +vt 0.714253 0.977962 +vt 0.709655 0.977962 +vt 0.697276 0.974195 +vt 0.697276 0.977962 +vt 0.704336 0.974650 +vt 0.707193 0.974650 +vt 0.707648 0.979969 +vt 0.703881 0.979969 +vt 0.707193 0.977507 +vt 0.681643 0.938156 +vt 0.684500 0.935299 +vt 0.684500 0.938156 +vt 0.689065 0.938156 +vt 0.689065 0.946727 +vt 0.684500 0.943870 +vt 0.689065 0.935299 +vt 0.703293 0.973607 +vt 0.703293 0.978550 +vt 0.708236 0.978550 +vt 0.708236 0.973607 +vt 0.697276 0.980800 +vt 0.701874 0.980800 +vt 0.701874 0.971357 +vt 0.697276 0.971357 +vt 0.709655 0.980800 +vt 0.714253 0.980800 +vt 0.714253 0.971357 +vt 0.709655 0.971357 +vt 0.707648 0.984567 +vt 0.703881 0.984567 +vt 0.889793 0.647143 +vt 0.903014 0.680288 +vt 0.889793 0.680288 +vt 0.493260 0.943731 +vt 0.460114 0.946910 +vt 0.460114 0.943731 +vt 0.493260 0.946910 +vt 0.460114 0.960131 +vt 0.493260 0.960131 +vt 0.460114 0.963310 +vt 0.456935 0.960131 +vt 0.456935 0.946910 +vt 0.496439 0.946910 +vt 0.772543 0.890867 +vt 0.805689 0.883423 +vt 0.805689 0.890867 +vt 0.772543 0.883423 +vt 0.805689 0.870202 +vt 0.772543 0.870202 +vt 0.805689 0.862758 +vt 0.813133 0.870202 +vt 0.813133 0.883423 +vt 0.765099 0.883423 +vt 0.408141 0.976041 +vt 0.404374 0.976041 +vt 0.407686 0.973579 +vt 0.867301 0.965358 +vt 0.862737 0.962501 +vt 0.867301 0.962501 +vt 0.397769 0.974034 +vt 0.402367 0.970267 +vt 0.402367 0.974034 +vt 0.404374 0.968260 +vt 0.408141 0.963662 +vt 0.408141 0.968260 +vt 0.404374 0.980639 +vt 0.408141 0.980639 +vt 0.404829 0.973579 +vt 0.404829 0.970722 +vt 0.410148 0.970267 +vt 0.410148 0.974034 +vt 0.407686 0.970722 +vt 0.859880 0.959644 +vt 0.862737 0.956788 +vt 0.862737 0.959644 +vt 0.867301 0.959644 +vt 0.867301 0.968215 +vt 0.862737 0.965358 +vt 0.867301 0.956788 +vt 0.403786 0.974622 +vt 0.408729 0.974622 +vt 0.408729 0.969679 +vt 0.403786 0.969679 +vt 0.410979 0.980639 +vt 0.410979 0.976041 +vt 0.401536 0.976041 +vt 0.401536 0.980639 +vt 0.410979 0.968260 +vt 0.410979 0.963662 +vt 0.401536 0.963662 +vt 0.401536 0.968260 +vt 0.414746 0.970267 +vt 0.414746 0.974034 +vt 0.443840 0.950804 +vt 0.443840 0.954571 +vt 0.441378 0.951259 +vt 0.054658 0.970667 +vt 0.050093 0.967811 +vt 0.054658 0.967811 +vt 0.441833 0.961177 +vt 0.438066 0.956578 +vt 0.441833 0.956578 +vt 0.436059 0.954571 +vt 0.431460 0.950804 +vt 0.436059 0.950804 +vt 0.448438 0.954571 +vt 0.448438 0.950804 +vt 0.441378 0.954116 +vt 0.438521 0.954116 +vt 0.438066 0.948798 +vt 0.441833 0.948798 +vt 0.438521 0.951259 +vt 0.047236 0.964954 +vt 0.050093 0.962097 +vt 0.050093 0.964954 +vt 0.054658 0.964954 +vt 0.054658 0.973525 +vt 0.050093 0.970667 +vt 0.054657 0.962097 +vt 0.442421 0.955159 +vt 0.442421 0.950217 +vt 0.437478 0.950217 +vt 0.437478 0.955159 +vt 0.448438 0.947966 +vt 0.443840 0.947966 +vt 0.443840 0.957409 +vt 0.448438 0.957409 +vt 0.436059 0.947966 +vt 0.431460 0.947966 +vt 0.431461 0.957409 +vt 0.436059 0.957409 +vt 0.438066 0.944199 +vt 0.441833 0.944199 +vt 0.675687 0.855341 +vt 0.688907 0.888487 +vt 0.675687 0.888487 +vt 0.058924 0.934858 +vt 0.025779 0.938038 +vt 0.025779 0.934858 +vt 0.058924 0.938038 +vt 0.025779 0.951258 +vt 0.058924 0.951258 +vt 0.025779 0.954437 +vt 0.022599 0.951258 +vt 0.022599 0.938038 +vt 0.062104 0.938038 +vt 0.861382 0.862758 +vt 0.828236 0.870202 +vt 0.828236 0.862758 +vt 0.861382 0.870202 +vt 0.828236 0.883423 +vt 0.861382 0.883423 +vt 0.828236 0.890867 +vt 0.820792 0.883423 +vt 0.820792 0.870202 +vt 0.868826 0.870202 +vt 0.376465 0.974034 +vt 0.376465 0.970267 +vt 0.378927 0.973579 +vt 0.797157 0.964005 +vt 0.792593 0.961147 +vt 0.797157 0.961147 +vt 0.378472 0.963662 +vt 0.382239 0.968260 +vt 0.378472 0.968260 +vt 0.384246 0.970267 +vt 0.388845 0.974034 +vt 0.384246 0.974034 +vt 0.371867 0.970267 +vt 0.371867 0.974034 +vt 0.378927 0.970722 +vt 0.381784 0.970722 +vt 0.382239 0.976041 +vt 0.378472 0.976041 +vt 0.381784 0.973579 +vt 0.789736 0.958290 +vt 0.792593 0.955434 +vt 0.792593 0.958290 +vt 0.797157 0.958290 +vt 0.797157 0.966861 +vt 0.792593 0.964005 +vt 0.797157 0.955434 +vt 0.377884 0.969679 +vt 0.377884 0.974622 +vt 0.382827 0.974622 +vt 0.382827 0.969679 +vt 0.371867 0.976872 +vt 0.376465 0.976872 +vt 0.376465 0.967429 +vt 0.371867 0.967429 +vt 0.384246 0.976872 +vt 0.388845 0.976872 +vt 0.388844 0.967429 +vt 0.384246 0.967429 +vt 0.382239 0.980639 +vt 0.378472 0.980639 +vt 0.775471 0.967813 +vt 0.771704 0.967813 +vt 0.775016 0.965351 +vt 0.756238 0.968067 +vt 0.751673 0.965210 +vt 0.756238 0.965210 +vt 0.765099 0.965806 +vt 0.769697 0.962039 +vt 0.769697 0.965806 +vt 0.771704 0.960032 +vt 0.775471 0.955434 +vt 0.775471 0.960032 +vt 0.771704 0.972411 +vt 0.775471 0.972411 +vt 0.772159 0.965351 +vt 0.772159 0.962494 +vt 0.777478 0.962039 +vt 0.777478 0.965806 +vt 0.775016 0.962494 +vt 0.748816 0.962353 +vt 0.751673 0.959496 +vt 0.751673 0.962353 +vt 0.756238 0.962353 +vt 0.756238 0.970924 +vt 0.751673 0.968067 +vt 0.756238 0.959496 +vt 0.771116 0.966394 +vt 0.776059 0.966394 +vt 0.776059 0.961451 +vt 0.771116 0.961451 +vt 0.778309 0.972411 +vt 0.778309 0.967813 +vt 0.768866 0.967813 +vt 0.768866 0.972411 +vt 0.778309 0.960032 +vt 0.778309 0.955434 +vt 0.768866 0.955434 +vt 0.768866 0.960032 +vt 0.782076 0.962039 +vt 0.782076 0.965806 +vt 0.512483 0.943731 +vt 0.525704 0.976877 +vt 0.512483 0.976877 +vt 0.074406 0.963605 +vt 0.107552 0.960426 +vt 0.107552 0.963605 +vt 0.074406 0.960426 +vt 0.107552 0.947205 +vt 0.074406 0.947205 +vt 0.107552 0.944026 +vt 0.110731 0.947205 +vt 0.110731 0.960426 +vt 0.071227 0.960426 +vt 0.030043 0.901723 +vt 0.063189 0.894279 +vt 0.063189 0.901723 +vt 0.030043 0.894279 +vt 0.063189 0.881059 +vt 0.030043 0.881059 +vt 0.063189 0.873614 +vt 0.070633 0.881059 +vt 0.070633 0.894279 +vt 0.022599 0.894279 +vt 0.660584 0.966766 +vt 0.656817 0.966766 +vt 0.660129 0.964304 +vt 0.977236 0.397669 +vt 0.972672 0.394812 +vt 0.977236 0.394812 +vt 0.650212 0.964759 +vt 0.654810 0.960992 +vt 0.654810 0.964759 +vt 0.656817 0.958985 +vt 0.660584 0.954387 +vt 0.660584 0.958985 +vt 0.656817 0.971364 +vt 0.660584 0.971364 +vt 0.657272 0.964304 +vt 0.657272 0.961447 +vt 0.662591 0.960992 +vt 0.662591 0.964759 +vt 0.660129 0.961447 +vt 0.969815 0.391955 +vt 0.972672 0.389098 +vt 0.972672 0.391955 +vt 0.977236 0.391955 +vt 0.977236 0.400526 +vt 0.972672 0.397669 +vt 0.977236 0.389098 +vt 0.656229 0.965347 +vt 0.661172 0.965347 +vt 0.661172 0.960404 +vt 0.656229 0.960404 +vt 0.663422 0.971364 +vt 0.663422 0.966766 +vt 0.653979 0.966766 +vt 0.653979 0.971364 +vt 0.663422 0.958985 +vt 0.663422 0.954387 +vt 0.653979 0.954387 +vt 0.653979 0.958985 +vt 0.667189 0.960992 +vt 0.667189 0.964759 +vt 0.352279 0.963111 +vt 0.348512 0.963111 +vt 0.351824 0.960649 +vt 0.558839 0.924580 +vt 0.563403 0.927437 +vt 0.558839 0.927437 +vt 0.341907 0.961105 +vt 0.346505 0.957337 +vt 0.346505 0.961105 +vt 0.348512 0.955331 +vt 0.352279 0.950732 +vt 0.352279 0.955331 +vt 0.348512 0.967710 +vt 0.352279 0.967710 +vt 0.348967 0.960649 +vt 0.348967 0.957793 +vt 0.354286 0.957337 +vt 0.354286 0.961105 +vt 0.351824 0.957793 +vt 0.566260 0.930294 +vt 0.563403 0.933151 +vt 0.563403 0.930294 +vt 0.558839 0.930294 +vt 0.558839 0.921723 +vt 0.563403 0.924580 +vt 0.558839 0.933151 +vt 0.347924 0.961692 +vt 0.352867 0.961692 +vt 0.352867 0.956750 +vt 0.347924 0.956750 +vt 0.355117 0.967710 +vt 0.355117 0.963111 +vt 0.345674 0.963111 +vt 0.345674 0.967710 +vt 0.355117 0.955331 +vt 0.355117 0.950732 +vt 0.345674 0.950732 +vt 0.345674 0.955331 +vt 0.358885 0.957337 +vt 0.358885 0.961105 +vt 0.511490 0.390762 +vt 0.194788 0.963641 +vt 0.197968 0.960462 +vt 0.854025 0.687732 +vt 0.861469 0.695177 +vt 0.029205 0.979074 +vt 0.022599 0.972469 +vt 0.416370 0.813782 +vt 0.419227 0.825210 +vt 0.707648 0.967590 +vt 0.714253 0.974195 +vt 0.681643 0.935299 +vt 0.684500 0.946727 +vt 0.903014 0.647143 +vt 0.493260 0.963310 +vt 0.496439 0.960131 +vt 0.772543 0.862758 +vt 0.765099 0.870202 +vt 0.397769 0.970267 +vt 0.404374 0.963662 +vt 0.859880 0.956788 +vt 0.862737 0.968215 +vt 0.438066 0.961177 +vt 0.431460 0.954571 +vt 0.047236 0.962097 +vt 0.050093 0.973525 +vt 0.688907 0.855341 +vt 0.058924 0.954437 +vt 0.062104 0.951258 +vt 0.861382 0.890867 +vt 0.868826 0.883423 +vt 0.382239 0.963662 +vt 0.388844 0.970267 +vt 0.789736 0.955434 +vt 0.792593 0.966861 +vt 0.765099 0.962039 +vt 0.771704 0.955434 +vt 0.748816 0.959496 +vt 0.751673 0.970924 +vt 0.525704 0.943731 +vt 0.074406 0.944026 +vt 0.071227 0.947205 +vt 0.030043 0.873614 +vt 0.022599 0.881059 +vt 0.650212 0.960992 +vt 0.656817 0.954387 +vt 0.969815 0.389098 +vt 0.972672 0.400526 +vt 0.341907 0.957337 +vt 0.348512 0.950732 +vt 0.566260 0.933151 +vt 0.563403 0.921723 +vt 0.962155 0.498815 +vt 0.946315 0.483530 +vt 0.951470 0.482388 +vt 0.292551 0.908723 +vt 0.297329 0.864080 +vt 0.297329 0.909300 +vt 0.702534 0.910123 +vt 0.698853 0.936428 +vt 0.697276 0.909630 +vt 0.377124 0.887972 +vt 0.384948 0.956002 +vt 0.371867 0.888476 +vt 0.373391 0.861674 +vt 0.378558 0.862768 +vt 0.095346 0.841810 +vt 0.078293 0.866016 +vt 0.079778 0.831435 +vt 0.411927 0.362717 +vt 0.436133 0.345664 +vt 0.436133 0.369882 +vt 0.697276 0.721157 +vt 0.705975 0.766143 +vt 0.697276 0.766143 +vt 0.697277 0.834419 +vt 0.705975 0.834419 +vt 0.574383 0.786681 +vt 0.621341 0.717354 +vt 0.621341 0.786681 +vt 0.180764 0.899749 +vt 0.165628 0.923956 +vt 0.158463 0.899749 +vt 0.140691 0.868091 +vt 0.125555 0.843884 +vt 0.140691 0.831438 +vt 0.861720 0.571207 +vt 0.854025 0.526267 +vt 0.861720 0.524250 +vt 0.604921 0.904982 +vt 0.601436 0.878650 +vt 0.606591 0.879793 +vt 0.612106 0.973083 +vt 0.599659 0.905436 +vt 0.949800 0.457198 +vt 0.944539 0.456744 +vt 0.140691 0.936367 +vt 0.118390 0.868091 +vt 0.478418 0.836683 +vt 0.546694 0.828988 +vt 0.546694 0.836683 +vt 0.854026 0.639483 +vt 0.854025 0.571207 +vt 0.710224 0.842078 +vt 0.715387 0.843068 +vt 0.956985 0.389098 +vt 0.962155 0.390049 +vt 0.929895 0.931209 +vt 0.924414 0.939908 +vt 0.924414 0.931077 +vt 0.701542 0.386315 +vt 0.701542 0.391795 +vt 0.696582 0.388057 +vt 0.949162 0.319186 +vt 0.944539 0.339181 +vt 0.944539 0.323332 +vt 0.929894 0.947567 +vt 0.924414 0.969867 +vt 0.924414 0.947567 +vt 0.903086 0.747560 +vt 0.908566 0.739865 +vt 0.908566 0.747692 +vt 0.676304 0.386315 +vt 0.676304 0.392525 +vt 0.671927 0.389227 +vt 0.688923 0.391795 +vt 0.683963 0.388057 +vt 0.688923 0.386315 +vt 0.739610 0.391572 +vt 0.734440 0.388131 +vt 0.739610 0.386315 +vt 0.753440 0.931842 +vt 0.748816 0.951837 +vt 0.748816 0.927696 +vt 0.906363 0.639483 +vt 0.906363 0.571207 +vt 0.333757 0.943873 +vt 0.309540 0.959721 +vt 0.309540 0.943873 +vt 0.333757 0.938393 +vt 0.309540 0.938393 +vt 0.504409 0.345664 +vt 0.504409 0.369882 +vt 0.750618 0.834419 +vt 0.903086 0.947567 +vt 0.908566 0.969867 +vt 0.903086 0.969867 +vt 0.689617 0.717354 +vt 0.689617 0.786681 +vt 0.977306 0.524250 +vt 0.985809 0.571207 +vt 0.977306 0.571207 +vt 0.908566 0.804721 +vt 0.903086 0.874048 +vt 0.903086 0.804721 +vt 0.929895 0.886566 +vt 0.924415 0.886566 +vt 0.834425 0.786823 +vt 0.765099 0.739865 +vt 0.834425 0.739865 +vt 0.431460 0.881326 +vt 0.478418 0.881326 +vt 0.924415 0.874048 +vt 0.908566 0.874048 +vt 0.903086 0.886566 +vt 0.908566 0.931077 +vt 0.903086 0.931209 +vt 0.924415 0.792203 +vt 0.908566 0.792203 +vt 0.834425 0.855099 +vt 0.765099 0.786823 +vt 0.908566 0.886566 +vt 0.850784 0.808141 +vt 0.895427 0.855099 +vt 0.850784 0.855099 +vt 0.416370 0.599271 +vt 0.421147 0.529944 +vt 0.421147 0.599271 +vt 0.590697 0.386315 +vt 0.635340 0.391092 +vt 0.590119 0.391092 +vt 0.906363 0.524250 +vt 0.705975 0.719185 +vt 0.750618 0.766143 +vt 0.546694 0.881326 +vt 0.903086 0.792203 +vt 0.929895 0.804721 +vt 0.929895 0.874048 +vt 0.850784 0.739865 +vt 0.895427 0.808141 +vt 0.929895 0.792203 +vt 0.924415 0.747692 +vt 0.929895 0.747560 +vt 0.560047 0.823690 +vt 0.564825 0.868333 +vt 0.560047 0.868333 +vt 0.470685 0.382319 +vt 0.401359 0.377541 +vt 0.470685 0.377541 +vt 0.960886 0.173680 +vt 0.964770 0.241956 +vt 0.960886 0.241956 +vt 0.960886 0.334373 +vt 0.964770 0.381331 +vt 0.960886 0.381331 +vt 0.989692 0.778858 +vt 0.985809 0.731901 +vt 0.989692 0.731901 +vt 0.924415 0.804721 +vt 0.985809 0.663625 +vt 0.989692 0.663625 +vt 0.989692 0.571207 +vt 0.985809 0.524250 +vt 0.989692 0.524250 +vt 0.912276 0.191579 +vt 0.896428 0.260905 +vt 0.896428 0.191579 +vt 0.118390 0.965355 +vt 0.140690 0.970835 +vt 0.118390 0.970835 +vt 0.560047 0.770811 +vt 0.564825 0.815454 +vt 0.560047 0.815454 +vt 0.964770 0.334373 +vt 0.973272 0.381331 +vt 0.977306 0.731901 +vt 0.985809 0.778858 +vt 0.977306 0.778858 +vt 0.964770 0.126722 +vt 0.973272 0.173680 +vt 0.964770 0.173680 +vt 0.977306 0.663625 +vt 0.973272 0.241956 +vt 0.985809 0.639483 +vt 0.977306 0.639483 +vt 0.964770 0.266097 +vt 0.973272 0.334373 +vt 0.973423 0.571207 +vt 0.973423 0.639483 +vt 0.960886 0.126722 +vt 0.977156 0.241956 +vt 0.977156 0.173680 +vt 0.989692 0.639483 +vt 0.977156 0.381331 +vt 0.977156 0.334373 +vt 0.960886 0.266097 +vt 0.973272 0.126722 +vt 0.977156 0.126722 +vt 0.973272 0.266097 +vt 0.973423 0.524250 +vt 0.973423 0.663625 +vt 0.973423 0.731901 +vt 0.973423 0.778858 +vt 0.977156 0.266097 +vt 0.937554 0.874470 +vt 0.941182 0.873085 +vt 0.941182 0.877578 +vt 0.900865 0.689333 +vt 0.904493 0.687948 +vt 0.904493 0.692441 +vt 0.937554 0.900498 +vt 0.941182 0.897390 +vt 0.941182 0.901883 +vt 0.889793 0.689802 +vt 0.893206 0.687948 +vt 0.893206 0.692725 +vt 0.974157 0.408185 +vt 0.973894 0.412060 +vt 0.969815 0.410177 +vt 0.870080 0.728312 +vt 0.870080 0.732196 +vt 0.865882 0.729914 +vt 0.937554 0.886623 +vt 0.941182 0.885237 +vt 0.941182 0.889731 +vt 0.862539 0.389233 +vt 0.862539 0.393117 +vt 0.858341 0.390835 +vt 0.937554 0.741874 +vt 0.941573 0.752384 +vt 0.937554 0.750376 +vt 0.974157 0.420558 +vt 0.937554 0.831087 +vt 0.941573 0.820577 +vt 0.941573 0.833096 +vt 0.937554 0.790731 +vt 0.941573 0.780221 +vt 0.941573 0.792740 +vt 0.180764 0.831473 +vt 0.158464 0.831473 +vt 0.908566 0.947567 +vt 0.924415 0.739865 +vt 0.929895 0.739865 +vt 0.617276 0.863365 +vt 0.615741 0.855341 +vt 0.974840 0.486710 +vt 0.969815 0.494974 +vt 0.970038 0.487022 +vt 0.292551 0.918134 +vt 0.297576 0.926398 +vt 0.292774 0.926086 +vt 0.118889 0.775223 +vt 0.123843 0.706772 +vt 0.124265 0.775055 +vt 0.756046 0.920036 +vt 0.748816 0.898762 +vt 0.756046 0.894958 +vt 0.150421 0.614029 +vt 0.145357 0.682370 +vt 0.145048 0.614189 +vt 0.148468 0.577451 +vt 0.145067 0.569966 +vt 0.433477 0.828988 +vt 0.478418 0.828988 +vt 0.123824 0.682440 +vt 0.124085 0.614116 +vt 0.145233 0.774949 +vt 0.145374 0.706709 +vt 0.145361 0.819164 +vt 0.124627 0.565415 +vt 0.121057 0.569182 +vt 0.118719 0.613964 +vt 0.148744 0.811669 +vt 0.150597 0.775094 +vt 0.150804 0.706823 +vt 0.118390 0.682322 +vt 0.121349 0.820020 +vt 0.124930 0.823778 +vt 0.121773 0.702573 +vt 0.147427 0.686567 +vt 0.842086 0.739865 +vt 0.842085 0.808141 +vt 0.102511 0.866016 +vt 0.078293 0.934292 +vt 0.309540 0.965201 +vt 0.333757 0.959721 +vt 0.333757 0.965201 +vt 0.908566 0.939908 +vt 0.903086 0.939908 +vt 0.390110 0.847611 +vt 0.387329 0.838144 +vt 0.715387 0.950181 +vt 0.704017 0.935324 +vt 0.969815 0.504122 +vt 0.974617 0.513041 +vt 0.969816 0.513041 +vt 0.436262 0.968836 +vt 0.431460 0.977756 +vt 0.431461 0.968836 +vt 0.163923 0.682368 +vt 0.182432 0.706700 +vt 0.163904 0.706645 +vt 0.161863 0.686545 +vt 0.159554 0.579292 +vt 0.164151 0.614096 +vt 0.158785 0.614004 +vt 0.182420 0.682417 +vt 0.184482 0.686608 +vt 0.158622 0.775163 +vt 0.164011 0.775077 +vt 0.842085 0.853127 +vt 0.182190 0.775035 +vt 0.182308 0.614138 +vt 0.162601 0.569894 +vt 0.183172 0.565415 +vt 0.162456 0.819349 +vt 0.187684 0.614037 +vt 0.186007 0.820003 +vt 0.187559 0.775139 +vt 0.187859 0.706817 +vt 0.012567 0.964099 +vt 0.003830 0.944483 +vt 0.012567 0.939896 +vt 0.158507 0.682251 +vt 0.012607 0.907688 +vt 0.003830 0.927287 +vt 0.007897 0.906755 +vt 0.159300 0.809760 +vt 0.186122 0.569220 +vt 0.896428 0.317934 +vt 0.912276 0.273424 +vt 0.912276 0.317934 +vt 0.313424 0.704790 +vt 0.321926 0.680648 +vt 0.321926 0.704790 +vt 0.576159 0.949773 +vt 0.579645 0.923442 +vt 0.581315 0.948631 +vt 0.890948 0.117046 +vt 0.898643 0.072106 +vt 0.898643 0.119063 +vt 0.301881 0.633691 +vt 0.232554 0.680649 +vt 0.232554 0.633691 +vt 0.626712 0.878650 +vt 0.642552 0.863365 +vt 0.631868 0.879792 +vt 0.728304 0.891885 +vt 0.724624 0.865580 +vt 0.729788 0.866684 +vt 0.240249 0.858158 +vt 0.284892 0.811201 +vt 0.284892 0.858158 +vt 0.081500 0.569163 +vt 0.084333 0.614085 +vt 0.078962 0.613908 +vt 0.896428 0.134549 +vt 0.912276 0.126722 +vt 0.912276 0.134549 +vt 0.896428 0.179060 +vt 0.912276 0.179060 +vt 0.309540 0.862457 +vt 0.326593 0.838251 +vt 0.333758 0.862457 +vt 0.202683 0.923955 +vt 0.217819 0.899749 +vt 0.217819 0.936402 +vt 0.592000 0.965058 +vt 0.590465 0.973082 +vt 0.364208 0.874797 +vt 0.349071 0.850590 +vt 0.364208 0.838144 +vt 0.399293 0.932471 +vt 0.403026 0.906173 +vt 0.404460 0.931377 +vt 0.105273 0.706731 +vt 0.105312 0.682391 +vt 0.107368 0.686578 +vt 0.689617 0.847682 +vt 0.621341 0.803039 +vt 0.689617 0.803039 +vt 0.219353 0.614177 +vt 0.200968 0.682546 +vt 0.201178 0.614191 +vt 0.917756 0.260905 +vt 0.917756 0.191579 +vt 0.301881 0.688308 +vt 0.232554 0.735265 +vt 0.232554 0.688308 +vt 0.689617 0.794341 +vt 0.621341 0.794340 +vt 0.104848 0.774990 +vt 0.083730 0.706630 +vt 0.937554 0.862318 +vt 0.941182 0.860933 +vt 0.941182 0.865426 +vt 0.961879 0.778858 +vt 0.965763 0.731901 +vt 0.965763 0.778858 +vt 0.576354 0.794340 +vt 0.630197 0.904981 +vt 0.416370 0.806123 +vt 0.421147 0.761480 +vt 0.421147 0.806123 +vt 0.546649 0.369882 +vt 0.614925 0.345664 +vt 0.614925 0.369882 +vt 0.969815 0.470786 +vt 0.974840 0.479050 +vt 0.970038 0.478738 +vt 0.081713 0.686492 +vt 0.083790 0.682300 +vt 0.105279 0.614229 +vt 0.108851 0.577554 +vt 0.110638 0.614094 +vt 0.200938 0.706829 +vt 0.195717 0.775183 +vt 0.195523 0.706937 +vt 0.862724 0.448315 +vt 0.854026 0.516591 +vt 0.854025 0.448315 +vt 0.554691 0.967948 +vt 0.560171 0.943731 +vt 0.560171 0.967948 +vt 0.854025 0.403329 +vt 0.232554 0.926434 +vt 0.240249 0.926434 +vt 0.558839 0.910259 +vt 0.566068 0.888985 +vt 0.566068 0.914064 +vt 0.586830 0.855341 +vt 0.592000 0.856293 +vt 0.637382 0.973082 +vt 0.642552 0.972131 +vt 0.416012 0.946534 +vt 0.413231 0.956002 +vt 0.224624 0.775254 +vt 0.219458 0.706797 +vt 0.224895 0.706914 +vt 0.714161 0.391795 +vt 0.709202 0.390052 +vt 0.714161 0.386315 +vt 0.110226 0.775160 +vt 0.110731 0.706859 +vt 0.195518 0.899749 +vt 0.217819 0.831473 +vt 0.917756 0.273424 +vt 0.917756 0.318066 +vt 0.953377 0.571207 +vt 0.949494 0.639483 +vt 0.949494 0.571207 +vt 0.313424 0.773066 +vt 0.309540 0.820023 +vt 0.309540 0.773066 +vt 0.012607 0.898163 +vt 0.003830 0.878565 +vt 0.012607 0.873614 +vt 0.313424 0.565415 +vt 0.309540 0.612372 +vt 0.309540 0.565415 +vt 0.321926 0.773066 +vt 0.325810 0.704790 +vt 0.325810 0.773066 +vt 0.838696 0.345664 +vt 0.838696 0.350441 +vt 0.835284 0.347518 +vt 0.953377 0.639483 +vt 0.961879 0.571207 +vt 0.961879 0.639483 +vt 0.313424 0.612372 +vt 0.309540 0.680648 +vt 0.850682 0.393117 +vt 0.846484 0.391514 +vt 0.850682 0.389233 +vt 0.943286 0.003830 +vt 0.943286 0.072106 +vt 0.974157 0.444854 +vt 0.969815 0.442862 +vt 0.973894 0.440979 +vt 0.313424 0.680648 +vt 0.321926 0.612372 +vt 0.621341 0.847682 +vt 0.574383 0.803039 +vt 0.953377 0.663625 +vt 0.961879 0.663625 +vt 0.907367 0.401357 +vt 0.862724 0.401357 +vt 0.416370 0.606930 +vt 0.421147 0.676257 +vt 0.416370 0.676257 +vt 0.949162 0.375128 +vt 0.944539 0.355133 +vt 0.949162 0.350987 +vt 0.953377 0.778858 +vt 0.961879 0.731901 +vt 0.321926 0.820023 +vt 0.325810 0.820023 +vt 0.917756 0.134417 +vt 0.917756 0.126722 +vt 0.965763 0.639483 +vt 0.858223 0.732196 +vt 0.854025 0.729914 +vt 0.858223 0.728312 +vt 0.313424 0.820023 +vt 0.941573 0.760043 +vt 0.937554 0.770554 +vt 0.937554 0.762051 +vt 0.943286 0.119063 +vt 0.309540 0.704790 +vt 0.140690 0.944026 +vt 0.118390 0.949506 +vt 0.118390 0.944026 +vt 0.965763 0.663625 +vt 0.364207 0.943073 +vt 0.341907 0.874797 +vt 0.325810 0.612372 +vt 0.325810 0.680648 +vt 0.721821 0.388057 +vt 0.726781 0.386315 +vt 0.726781 0.391795 +vt 0.890948 0.179060 +vt 0.890948 0.134417 +vt 0.953377 0.731901 +vt 0.416370 0.683917 +vt 0.421147 0.753243 +vt 0.416370 0.753243 +vt 0.197431 0.569219 +vt 0.195796 0.614081 +vt 0.735994 0.959930 +vt 0.741157 0.958941 +vt 0.688907 0.916141 +vt 0.684284 0.896147 +vt 0.688907 0.900293 +vt 0.890948 0.003830 +vt 0.898643 0.003830 +vt 0.890948 0.318066 +vt 0.896428 0.326765 +vt 0.890948 0.326765 +vt 0.859880 0.944541 +vt 0.868617 0.924925 +vt 0.868617 0.949128 +vt 0.941573 0.800399 +vt 0.937554 0.810909 +vt 0.937554 0.802407 +vt 0.301881 0.565415 +vt 0.232554 0.565415 +vt 0.554691 0.943731 +vt 0.538843 0.967948 +vt 0.538843 0.943731 +vt 0.140690 0.965355 +vt 0.140690 0.949506 +vt 0.965763 0.571207 +vt 0.284892 0.926434 +vt 0.890948 0.191579 +vt 0.890948 0.260905 +vt 0.105485 0.570061 +vt 0.890948 0.273424 +vt 0.747269 0.388131 +vt 0.752440 0.386315 +vt 0.752440 0.391572 +vt 0.912276 0.260905 +vt 0.560047 0.717931 +vt 0.564825 0.762574 +vt 0.560047 0.762574 +vt 0.961879 0.524250 +vt 0.835284 0.361023 +vt 0.838696 0.358101 +vt 0.838696 0.362878 +vt 0.533363 0.967948 +vt 0.533363 0.943731 +vt 0.104784 0.819259 +vt 0.083864 0.775023 +vt 0.664268 0.392525 +vt 0.659891 0.389612 +vt 0.664268 0.386315 +vt 0.941573 0.840755 +vt 0.937554 0.851265 +vt 0.937554 0.842763 +vt 0.917756 0.179060 +vt 0.953377 0.524250 +vt 0.949494 0.524250 +vt 0.907367 0.448315 +vt 0.862724 0.516591 +vt 0.896428 0.273424 +vt 0.937554 0.912650 +vt 0.941182 0.909542 +vt 0.941182 0.914035 +vt 0.974157 0.432481 +vt 0.219475 0.682519 +vt 0.221529 0.686702 +vt 0.912276 0.326765 +vt 0.080747 0.819998 +vt 0.078491 0.775165 +vt 0.917756 0.326765 +vt 0.232554 0.813217 +vt 0.240249 0.811200 +vt 0.741157 0.851828 +vt 0.652232 0.391117 +vt 0.643313 0.386315 +vt 0.652232 0.386315 +vt 0.448724 0.978069 +vt 0.443922 0.969150 +vt 0.448724 0.968836 +vt 0.198886 0.702648 +vt 0.223890 0.809813 +vt 0.219241 0.775160 +vt 0.220975 0.569932 +vt 0.200390 0.565415 +vt 0.195518 0.682427 +vt 0.321926 0.565415 +vt 0.301881 0.735265 +vt 0.232554 0.803541 +vt 0.297329 0.811200 +vt 0.292551 0.855843 +vt 0.292551 0.811200 +vt 0.748817 0.842655 +vt 0.753594 0.887298 +vt 0.748816 0.887298 +vt 0.224010 0.579344 +vt 0.224725 0.614094 +vt 0.110731 0.682286 +vt 0.201081 0.775087 +vt 0.197195 0.820002 +vt 0.974840 0.452513 +vt 0.969815 0.460777 +vt 0.970038 0.452825 +vt 0.410851 0.838144 +vt 0.416012 0.839143 +vt 0.949494 0.778858 +vt 0.949494 0.731901 +vt 0.949494 0.663625 +vt 0.309540 0.930733 +vt 0.333758 0.930733 +vt 0.108202 0.811773 +vt 0.965763 0.524250 +vt 0.325810 0.565415 +vt 0.522443 0.362717 +vt 0.546649 0.345664 +vt 0.078342 0.682167 +vt 0.078293 0.706739 +vt 0.835284 0.373460 +vt 0.838696 0.370537 +vt 0.838696 0.375315 +vt 0.896428 0.126722 +vt 0.890948 0.126722 +vt 0.224895 0.682411 +vt 0.220721 0.819387 +vt 0.200139 0.823813 +vt 0.249890 0.529944 +vt 0.181109 0.557756 +vt 0.181109 0.529944 +vt 0.925415 0.126722 +vt 0.953227 0.171943 +vt 0.925415 0.171943 +vt 0.953227 0.184461 +vt 0.925415 0.184461 +vt 0.953227 0.253788 +vt 0.925415 0.253788 +vt 0.088187 0.529944 +vt 0.061342 0.557756 +vt 0.061342 0.529944 +vt 0.033993 0.557754 +vt 0.033993 0.529946 +vt 0.914023 0.581989 +vt 0.941834 0.651315 +vt 0.914023 0.651315 +vt 0.914023 0.569470 +vt 0.941834 0.581989 +vt 0.811014 0.013269 +vt 0.811013 0.003830 +vt 0.838824 0.013269 +vt 0.156968 0.557756 +vt 0.156968 0.529944 +vt 0.088187 0.557756 +vt 0.838825 0.181109 +vt 0.811013 0.156968 +vt 0.838825 0.156968 +vt 0.838823 0.304084 +vt 0.811013 0.276736 +vt 0.838825 0.276736 +vt 0.838825 0.249890 +vt 0.811013 0.181109 +vt 0.811013 0.249891 +vt 0.013063 0.557755 +vt 0.003830 0.557756 +vt 0.013063 0.529945 +vt 0.914023 0.524250 +vt 0.941834 0.569470 +vt 0.838825 0.061342 +vt 0.811015 0.033993 +vt 0.838823 0.033993 +vt 0.325014 0.557755 +vt 0.304084 0.557754 +vt 0.325014 0.529945 +vt 0.304084 0.529946 +vt 0.276735 0.557756 +vt 0.276735 0.529944 +vt 0.941834 0.663834 +vt 0.914023 0.663834 +vt 0.953227 0.266306 +vt 0.925415 0.266306 +vt 0.953227 0.311527 +vt 0.925415 0.311527 +vt 0.811014 0.324809 +vt 0.811015 0.304084 +vt 0.838824 0.324809 +vt 0.941834 0.709054 +vt 0.914023 0.709054 +vt 0.838825 0.088187 +vt 0.811013 0.061342 +vt 0.811013 0.088187 +vt 0.249890 0.557756 +vt 0.960620 0.506839 +vt 0.292551 0.864080 +vt 0.390110 0.955002 +vt 0.401359 0.346858 +vt 0.574383 0.717354 +vt 0.180764 0.936403 +vt 0.617276 0.972131 +vt 0.118391 0.936367 +vt 0.861720 0.639483 +vt 0.929895 0.939908 +vt 0.949162 0.343327 +vt 0.929894 0.969867 +vt 0.903086 0.739865 +vt 0.753440 0.947690 +vt 0.431460 0.836683 +vt 0.765099 0.855099 +vt 0.416370 0.529944 +vt 0.635340 0.386315 +vt 0.750618 0.719186 +vt 0.895427 0.739865 +vt 0.564825 0.823113 +vt 0.401359 0.382319 +vt 0.564825 0.770234 +vt 0.941573 0.739865 +vt 0.970202 0.422690 +vt 0.937554 0.822585 +vt 0.937554 0.782229 +vt 0.974840 0.496149 +vt 0.297576 0.916959 +vt 0.118391 0.706895 +vt 0.750927 0.919379 +vt 0.150804 0.682252 +vt 0.121754 0.686636 +vt 0.147444 0.702513 +vt 0.102511 0.934292 +vt 0.712839 0.959930 +vt 0.974617 0.503808 +vt 0.436262 0.978069 +vt 0.158463 0.706753 +vt 0.161839 0.702446 +vt 0.184497 0.702510 +vt 0.187859 0.682307 +vt 0.183054 0.823814 +vt 0.007855 0.965022 +vt 0.012607 0.932237 +vt 0.574383 0.922987 +vt 0.890948 0.072106 +vt 0.301881 0.680649 +vt 0.641017 0.855341 +vt 0.723046 0.892378 +vt 0.085084 0.565415 +vt 0.310734 0.827683 +vt 0.397769 0.905669 +vt 0.107356 0.702525 +vt 0.624936 0.905436 +vt 0.416370 0.760902 +vt 0.974840 0.469611 +vt 0.081667 0.702429 +vt 0.232554 0.858158 +vt 0.560950 0.889642 +vt 0.195519 0.831472 +vt 0.007897 0.899096 +vt 0.574383 0.847682 +vt 0.421147 0.606930 +vt 0.944539 0.370981 +vt 0.941573 0.772562 +vt 0.341907 0.943073 +vt 0.421147 0.683917 +vt 0.684284 0.920288 +vt 0.863905 0.924002 +vt 0.941573 0.812918 +vt 0.564825 0.717354 +vt 0.084313 0.823776 +vt 0.941573 0.853273 +vt 0.907367 0.516591 +vt 0.970202 0.430349 +vt 0.221528 0.702603 +vt 0.738610 0.842078 +vt 0.642999 0.391117 +vt 0.443923 0.978069 +vt 0.198893 0.686746 +vt 0.301881 0.803541 +vt 0.297329 0.856421 +vt 0.753594 0.842078 +vt 0.974840 0.461952 +vt 0.512068 0.347149 +vt 0.953227 0.126722 +vt 0.838825 0.003830 +vt 0.003830 0.529944 +vt 0.941834 0.524250 +vt 0.334248 0.529944 +vt 0.334248 0.557756 +vt 0.838825 0.334248 +vt 0.811013 0.334248 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.8722 0.3210 -0.3692 +vn 0.8648 0.4236 -0.2696 +vn 0.8609 0.4168 -0.2918 +vn 0.8326 0.0701 -0.5495 +vn 0.8299 0.0000 -0.5579 +vn 0.8355 0.0676 -0.5453 +vn 0.8632 -0.4995 0.0739 +vn 0.8725 -0.4038 0.2752 +vn 0.8632 -0.4998 0.0712 +vn 0.8632 -0.4995 -0.0739 +vn 0.8619 -0.5070 0.0000 +vn 0.8632 -0.4998 -0.0712 +vn 0.8725 -0.4037 -0.2752 +vn 0.8580 -0.3995 -0.3228 +vn 0.8632 0.4995 0.0739 +vn 0.8648 0.4236 0.2696 +vn 0.8609 0.4168 0.2918 +vn 0.8619 0.5070 0.0000 +vn 0.8632 0.4998 0.0712 +vn 0.8632 0.4995 -0.0739 +vn 0.8632 0.4998 -0.0712 +vn 0.7567 0.0000 -0.6538 +vn 0.7439 -0.1827 0.6428 +vn 0.7477 -0.1538 0.6460 +vn 0.6913 -0.4066 0.5973 +vn 0.9801 -0.1984 0.0000 +vn 0.9930 -0.1185 0.0000 +vn 0.7567 0.0000 0.6538 +vn 0.7477 0.1538 0.6460 +vn 0.6913 0.4066 0.5973 +vn 0.7439 0.1827 0.6428 +vn 0.7477 0.1538 -0.6460 +vn 0.6913 0.4066 -0.5973 +vn 0.7439 0.1827 -0.6428 +vn 0.6913 -0.4066 -0.5973 +vn 0.7477 -0.1538 -0.6460 +vn 0.7439 -0.1827 -0.6428 +vn 0.9930 0.1185 0.0000 +vn 0.9801 0.1984 0.0000 +vn 0.9957 0.0000 -0.0928 +vn 0.8324 -0.0604 0.5508 +vn 0.8299 0.0000 0.5579 +vn 0.8325 -0.0626 0.5505 +vn 0.8324 -0.0604 -0.5508 +vn 0.5171 0.8559 0.0000 +vn 0.5116 0.8469 0.1446 +vn 0.5123 0.8481 0.1351 +vn 0.5123 0.8481 -0.1351 +vn -0.7477 0.1538 -0.6460 +vn -0.7567 0.0000 -0.6538 +vn -0.7439 0.1827 -0.6428 +vn 0.8326 0.0701 0.5495 +vn 0.9957 0.0000 0.0928 +vn 0.5171 -0.8559 0.0000 +vn 0.5123 -0.8481 0.1351 +vn 0.5116 -0.8469 -0.1446 +vn 0.5123 -0.8481 -0.1351 +vn 0.4884 0.8085 0.3283 +vn 0.4884 -0.8085 0.3283 +vn 0.5116 -0.8469 0.1446 +vn 0.4884 -0.8085 -0.3283 +vn 0.5116 0.8469 -0.1446 +vn 0.4884 0.8085 -0.3283 +vn 0.9865 0.0000 0.1639 +vn 0.9865 0.0000 -0.1639 +vn 0.8722 0.3210 0.3692 +vn 0.8751 0.3187 0.3642 +vn 0.8430 0.1242 -0.5234 +vn 0.8430 0.1242 0.5234 +vn 0.8355 0.0676 0.5453 +vn 0.2232 0.9748 -0.0000 +vn 0.2779 0.9581 -0.0692 +vn 0.2324 0.9726 -0.0011 +vn -0.8691 -0.1186 -0.4803 +vn -0.9219 -0.1215 -0.3680 +vn -0.9296 -0.1218 -0.3478 +vn 0.2231 -0.9748 0.0000 +vn 0.2779 -0.9581 0.0692 +vn 0.2284 -0.9736 0.0008 +vn 0.3872 -0.9217 0.0253 +vn 0.3960 -0.9179 0.0267 +vn 0.9996 0.0000 0.0293 +vn 0.9996 -0.0016 0.0284 +vn 0.9996 0.0000 -0.0293 +vn 0.9985 -0.0090 -0.0543 +vn 0.9996 -0.0016 -0.0284 +vn 0.9985 -0.0090 0.0543 +vn 0.9985 -0.0120 0.0529 +vn 0.5589 0.8281 0.0432 +vn 0.2324 0.9726 0.0011 +vn 0.3872 -0.9217 -0.0253 +vn 0.2284 -0.9736 -0.0008 +vn 0.2779 -0.9581 -0.0692 +vn 0.2226 -0.9725 -0.0683 +vn 0.2226 0.9725 0.0683 +vn 0.2779 0.9581 0.0692 +vn 0.5589 0.8281 -0.0432 +vn 0.5742 0.8175 -0.0453 +vn 0.4856 0.8723 -0.0568 +vn 0.4856 -0.8723 0.0568 +vn 0.9214 -0.2503 -0.2971 +vn 0.9294 -0.2431 -0.2778 +vn 0.9206 -0.2516 0.2987 +vn 0.8580 -0.3995 0.3228 +vn 0.8318 -0.1227 0.5413 +vn 0.8318 -0.1227 -0.5413 +vn 0.4844 0.8730 0.0566 +vn 0.2769 0.9584 0.0690 +vn 0.2769 0.9584 -0.0690 +vn 0.2981 0.9543 -0.0206 +vn 0.2249 0.9743 -0.0160 +vn 0.2223 0.9748 -0.0168 +vn 0.2769 -0.9584 -0.0690 +vn 0.2769 -0.9584 0.0690 +vn 0.4844 -0.8730 0.0566 +vn 0.2223 0.9747 0.0210 +vn 0.2275 0.9736 0.0196 +vn 0.9996 0.0017 -0.0286 +vn 0.9996 0.0000 0.0297 +vn 0.9996 0.0017 0.0286 +vn 0.9985 0.0094 0.0543 +vn 0.9985 0.0121 0.0531 +vn 0.9985 0.0094 -0.0543 +vn 0.9996 0.0000 -0.0297 +vn 0.2224 -0.9750 0.0000 +vn 0.2241 -0.9746 0.0002 +vn 0.2978 -0.9546 -0.0094 +vn 0.2241 -0.9746 -0.0002 +vn 0.2219 -0.9727 -0.0680 +vn -0.8671 0.1251 0.4821 +vn -0.9420 0.1285 0.3099 +vn -0.9524 0.1286 0.2764 +vn 0.2219 0.9727 0.0680 +vn -0.8674 0.1251 -0.4816 +vn -0.9426 0.1285 -0.3081 +vn -0.8318 0.1227 -0.5413 +vn 0.3700 0.9289 0.0158 +vn 0.3782 0.9256 0.0143 +vn 0.2978 -0.9546 0.0094 +vn 0.3015 -0.9534 0.0098 +vn -0.8648 0.4236 0.2696 +vn -0.8632 0.4995 0.0739 +vn -0.8609 0.4168 0.2918 +vn -0.8648 0.4236 -0.2696 +vn -0.8722 0.3210 -0.3692 +vn -0.8609 0.4168 -0.2918 +vn -0.8632 -0.4995 0.0739 +vn -0.8725 -0.4038 0.2752 +vn -0.8580 -0.3995 0.3228 +vn -0.5589 0.8281 -0.0432 +vn -0.2324 0.9726 -0.0011 +vn -0.2232 0.9748 -0.0000 +vn -0.8722 0.3210 0.3692 +vn -0.8751 0.3187 0.3642 +vn -0.8725 -0.4037 -0.2752 +vn -0.8632 -0.4995 -0.0739 +vn -0.8580 -0.3995 -0.3228 +vn -0.2779 -0.9581 0.0692 +vn -0.2779 -0.9581 -0.0692 +vn -0.4856 -0.8723 -0.0568 +vn -0.9996 0.0000 0.0297 +vn -0.9996 0.0017 0.0286 +vn -0.7567 0.0000 0.6538 +vn -0.9996 0.0000 0.0293 +vn -0.5123 -0.8481 0.1351 +vn -0.5116 -0.8469 0.1446 +vn -0.4884 -0.8085 0.3283 +vn -0.5116 0.8469 0.1446 +vn -0.5171 0.8559 0.0000 +vn -0.5123 0.8481 0.1351 +vn -0.8632 0.4995 -0.0739 +vn -0.8299 0.0000 -0.5579 +vn -0.8324 -0.0604 -0.5508 +vn -0.8430 0.1242 -0.5234 +vn -0.8355 0.0676 -0.5453 +vn -0.8326 0.0701 -0.5495 +vn -0.4856 0.8723 -0.0568 +vn -0.2779 0.9581 -0.0692 +vn -0.2779 0.9581 0.0692 +vn -0.2284 -0.9736 -0.0008 +vn -0.3872 -0.9217 -0.0253 +vn -0.2231 -0.9748 -0.0000 +vn -0.2769 -0.9584 -0.0690 +vn -0.2224 -0.9750 -0.0000 +vn -0.2219 -0.9727 -0.0680 +vn -0.7439 -0.1827 -0.6428 +vn 0.9219 -0.1215 -0.3680 +vn 0.8691 -0.1186 -0.4803 +vn 0.9296 -0.1218 -0.3478 +vn -0.8619 0.5070 0.0000 +vn -0.9214 -0.2503 -0.2971 +vn -0.9294 -0.2431 -0.2778 +vn -0.2223 0.9747 0.0210 +vn -0.2769 0.9584 -0.0690 +vn -0.2219 0.9727 -0.0680 +vn -0.7439 -0.1827 0.6428 +vn -0.6913 -0.4066 0.5973 +vn -0.7477 -0.1538 0.6460 +vn -0.2226 -0.9725 0.0683 +vn -0.5171 -0.8559 0.0000 +vn -0.5123 0.8481 -0.1351 +vn 0.8674 0.1251 -0.4816 +vn 0.9426 0.1285 -0.3081 +vn 0.9528 0.1286 -0.2749 +vn -0.5123 -0.8481 -0.1351 +vn -0.4884 -0.8085 -0.3283 +vn -0.5116 -0.8469 -0.1446 +vn -0.9801 0.1984 0.0000 +vn -0.9930 0.1185 0.0000 +vn -0.9957 0.0000 -0.0928 +vn -0.4884 0.8085 0.3283 +vn -0.9957 0.0000 0.0928 +vn -0.9865 0.0000 0.1639 +vn -0.7477 0.1538 0.6460 +vn -0.7439 0.1827 0.6428 +vn -0.6913 0.4066 0.5973 +vn -0.8299 0.0000 0.5579 +vn -0.2978 -0.9546 0.0094 +vn -0.2241 -0.9746 0.0002 +vn -0.8619 -0.5070 0.0000 +vn -0.9930 -0.1185 0.0000 +vn -0.9801 -0.1984 0.0000 +vn 0.9420 0.1285 0.3099 +vn 0.8671 0.1251 0.4821 +vn 0.9524 0.1286 0.2764 +vn -0.9865 0.0000 -0.1639 +vn -0.9996 -0.0016 -0.0284 +vn -0.9985 -0.0090 -0.0543 +vn -0.9996 0.0000 -0.0293 +vn -0.6913 0.4066 -0.5973 +vn -0.8324 -0.0604 0.5508 +vn -0.5116 0.8469 -0.1446 +vn -0.4884 0.8085 -0.3283 +vn -0.9985 -0.0090 0.0543 +vn -0.9996 -0.0016 0.0284 +vn -0.6913 -0.4066 -0.5973 +vn -0.7477 -0.1538 -0.6460 +vn -0.2769 0.9584 0.0690 +vn -0.4844 0.8730 0.0566 +vn -0.2324 0.9726 0.0011 +vn -0.5589 0.8281 0.0432 +vn -0.9206 -0.2516 0.2987 +vn -0.8318 -0.1227 0.5413 +vn -0.8318 -0.1227 -0.5413 +vn -0.8325 -0.0626 -0.5505 +vn -0.4844 -0.8730 -0.0566 +vn -0.2769 -0.9584 0.0690 +vn -0.3700 0.9289 0.0158 +vn -0.2275 0.9736 0.0196 +vn -0.9985 0.0094 0.0543 +vn -0.9985 0.0121 0.0531 +vn -0.2219 -0.9727 0.0680 +vn -0.8326 0.0701 0.5495 +vn -0.2249 0.9743 -0.0160 +vn -0.2981 0.9543 -0.0206 +vn -0.2223 0.9748 -0.0168 +vn -0.2226 -0.9725 -0.0683 +vn -0.2241 -0.9746 -0.0002 +vn -0.2978 -0.9546 -0.0094 +vn -0.8355 0.0676 0.5453 +vn -0.8430 0.1242 0.5234 +vn -0.9996 0.0017 -0.0286 +vn -0.3872 -0.9217 0.0253 +vn -0.2284 -0.9736 0.0008 +vn -0.2226 0.9725 -0.0683 +vn -0.2226 0.9725 0.0683 +vn -0.2219 0.9727 0.0680 +vn -0.9985 0.0094 -0.0543 +vn -0.9985 0.0121 -0.0531 +vn 0.0000 0.9897 0.1434 +vn 0.0000 -0.1112 0.9938 +vn 0.0000 0.9897 -0.1434 +vn 0.0000 0.8420 -0.5396 +vn 0.0000 0.4536 -0.8912 +vn 0.0000 -0.2211 0.9753 +vn 0.0000 -0.4536 -0.8912 +vn 0.0000 -0.8420 -0.5396 +vn 0.0000 -0.9897 -0.1434 +vn 0.0000 0.2211 -0.9753 +vn 0.0000 0.1112 -0.9938 +vn 0.0000 -0.8420 0.5396 +vn 0.0000 -0.4536 0.8912 +vn 0.0000 0.2211 0.9753 +vn 0.0000 0.4536 0.8912 +vn 0.0000 0.8420 0.5396 +vn 0.0000 0.1112 0.9938 +vn 0.0000 -0.2211 -0.9753 +vn 0.0000 -0.1112 -0.9938 +vn 0.0000 -0.9897 0.1434 +vn 0.8751 0.3187 -0.3642 +vn 0.8325 -0.0626 -0.5505 +vn 0.8478 0.1172 -0.5172 +vn 0.8478 0.1172 0.5172 +vn 0.2226 0.9725 -0.0683 +vn -0.8478 -0.1172 -0.5172 +vn 0.2226 -0.9725 0.0683 +vn 0.9985 -0.0120 -0.0529 +vn 0.5742 0.8175 0.0453 +vn 0.3960 -0.9179 -0.0267 +vn 0.4856 0.8723 0.0568 +vn 0.4856 -0.8723 -0.0568 +vn 0.9285 -0.2445 0.2794 +vn 0.2219 0.9727 -0.0680 +vn 0.4844 0.8730 -0.0566 +vn 0.3024 0.9530 -0.0199 +vn 0.4844 -0.8730 -0.0566 +vn 0.2219 -0.9727 0.0680 +vn 0.9985 0.0121 -0.0531 +vn 0.3015 -0.9534 -0.0098 +vn -0.8318 0.1227 0.5413 +vn -0.9528 0.1286 -0.2749 +vn -0.8632 0.4998 0.0712 +vn -0.8751 0.3187 -0.3642 +vn -0.8632 -0.4998 0.0712 +vn -0.5742 0.8175 -0.0453 +vn -0.8632 -0.4998 -0.0712 +vn -0.4856 -0.8723 0.0568 +vn -0.8632 0.4998 -0.0712 +vn -0.8478 0.1172 -0.5172 +vn -0.4856 0.8723 0.0568 +vn -0.3960 -0.9179 -0.0267 +vn 0.8478 -0.1172 -0.5172 +vn 0.8318 0.1227 -0.5413 +vn -0.3015 -0.9534 0.0098 +vn 0.8318 0.1227 0.5413 +vn -0.9985 -0.0120 -0.0529 +vn -0.8325 -0.0626 0.5505 +vn -0.9985 -0.0120 0.0529 +vn -0.4844 0.8730 -0.0566 +vn -0.5742 0.8175 0.0453 +vn -0.9285 -0.2445 0.2794 +vn -0.4844 -0.8730 0.0566 +vn -0.3782 0.9256 0.0143 +vn -0.3024 0.9530 -0.0199 +vn -0.3015 -0.9534 -0.0098 +vn -0.8478 0.1172 0.5172 +vn -0.9996 0.0000 -0.0297 +vn -0.3960 -0.9179 0.0267 +s off +f 354/29/7 355/30/7 353/31/7 +f 356/32/8 359/33/8 355/34/8 +f 360/35/9 357/36/9 359/33/9 +f 358/37/10 353/38/10 357/36/10 +f 359/33/11 353/39/11 355/40/11 +f 356/41/12 358/37/12 360/35/12 +f 364/42/8 367/43/8 363/44/8 +f 368/45/9 365/46/9 367/43/9 +f 366/47/10 361/48/10 365/46/10 +f 367/43/11 361/49/11 363/50/11 +f 364/51/12 366/47/12 368/45/12 +f 389/52/9 385/53/9 371/54/9 +f 370/55/12 373/56/12 372/57/12 +f 383/58/12 394/59/12 386/60/12 +f 395/61/10 378/62/10 391/63/10 +f 384/64/8 389/52/8 381/65/8 +f 386/60/9 394/59/9 372/66/9 +f 395/61/9 391/63/9 370/67/9 +f 392/68/9 388/69/9 369/70/9 +f 373/71/9 375/72/9 374/73/9 +f 372/57/8 374/73/8 371/74/8 +f 369/75/10 376/76/10 370/55/10 +f 371/74/11 375/72/11 369/77/11 +f 385/53/9 386/60/9 387/78/9 +f 388/69/9 389/52/9 390/79/9 +f 391/63/9 392/68/9 393/80/9 +f 394/59/9 395/61/9 396/81/9 +f 382/82/13 389/52/13 388/83/13 +f 386/84/14 384/64/14 383/85/14 +f 392/86/15 378/62/15 377/87/15 +f 380/88/16 395/61/16 394/89/16 +f 388/69/11 377/90/11 382/91/11 +f 417/92/9 413/93/9 399/94/9 +f 398/95/12 401/96/12 400/97/12 +f 411/98/12 422/99/12 414/100/12 +f 423/101/10 406/102/10 419/103/10 +f 412/104/8 417/92/8 409/105/8 +f 414/100/9 422/99/9 400/106/9 +f 423/101/9 419/103/9 398/107/9 +f 420/108/9 416/109/9 397/110/9 +f 401/111/9 403/112/9 402/113/9 +f 400/97/8 402/113/8 399/114/8 +f 397/115/10 404/116/10 398/95/10 +f 399/114/11 403/112/11 397/117/11 +f 413/93/9 414/100/9 415/118/9 +f 416/109/9 417/92/9 418/119/9 +f 419/103/9 420/108/9 421/120/9 +f 422/99/9 423/101/9 424/121/9 +f 410/122/13 417/92/13 416/123/13 +f 414/124/14 412/104/14 411/125/14 +f 420/126/15 406/102/15 405/127/15 +f 408/128/16 423/101/16 422/129/16 +f 416/109/11 405/130/11 410/131/11 +f 426/132/7 427/133/7 425/134/7 +f 428/135/8 431/136/8 427/137/8 +f 432/138/9 429/139/9 431/136/9 +f 430/140/10 425/141/10 429/139/10 +f 431/136/11 425/142/11 427/143/11 +f 428/144/12 430/140/12 432/138/12 +f 436/145/8 439/146/8 435/147/8 +f 440/148/9 437/149/9 439/146/9 +f 438/150/10 433/151/10 437/149/10 +f 439/146/11 433/152/11 435/153/11 +f 436/154/12 438/150/12 440/148/12 +f 461/155/9 457/156/9 443/157/9 +f 442/158/12 445/159/12 444/160/12 +f 455/161/12 466/162/12 458/163/12 +f 467/164/10 450/165/10 463/166/10 +f 456/167/8 461/155/8 453/168/8 +f 458/163/9 466/162/9 444/169/9 +f 467/164/9 463/166/9 442/170/9 +f 464/171/9 460/172/9 441/173/9 +f 445/174/9 447/175/9 446/176/9 +f 444/160/8 446/176/8 443/177/8 +f 441/178/10 448/179/10 442/158/10 +f 443/177/11 447/175/11 441/180/11 +f 457/156/9 458/163/9 459/181/9 +f 460/172/9 461/155/9 462/182/9 +f 463/166/9 464/171/9 465/183/9 +f 466/162/9 467/164/9 468/184/9 +f 454/185/13 461/155/13 460/186/13 +f 458/187/14 456/167/14 455/188/14 +f 464/189/15 450/165/15 449/190/15 +f 452/191/16 467/164/16 466/192/16 +f 460/172/11 449/193/11 454/194/11 +f 489/195/9 485/196/9 471/197/9 +f 470/198/12 473/199/12 472/200/12 +f 483/201/12 494/202/12 486/203/12 +f 495/204/10 478/205/10 491/206/10 +f 484/207/8 489/195/8 481/208/8 +f 486/203/9 494/202/9 472/209/9 +f 495/204/9 491/206/9 470/210/9 +f 492/211/9 488/212/9 469/213/9 +f 473/214/9 475/215/9 474/216/9 +f 472/200/8 474/216/8 471/217/8 +f 469/218/10 476/219/10 470/198/10 +f 471/217/11 475/215/11 469/220/11 +f 485/196/9 486/203/9 487/221/9 +f 488/212/9 489/195/9 490/222/9 +f 491/206/9 492/211/9 493/223/9 +f 494/202/9 495/204/9 496/224/9 +f 482/225/13 489/195/13 488/226/13 +f 486/227/14 484/207/14 483/228/14 +f 492/229/15 478/205/15 477/230/15 +f 480/231/16 495/204/16 494/232/16 +f 488/212/11 477/233/11 482/234/11 +f 498/235/7 499/236/7 497/237/7 +f 500/238/8 503/239/8 499/240/8 +f 504/241/9 501/242/9 503/239/9 +f 502/243/10 497/244/10 501/242/10 +f 503/239/11 497/245/11 499/246/11 +f 500/247/12 502/243/12 504/241/12 +f 508/248/8 511/249/8 507/250/8 +f 512/251/9 509/252/9 511/249/9 +f 510/253/10 505/254/10 509/252/10 +f 511/249/11 505/255/11 507/256/11 +f 508/257/12 510/253/12 512/251/12 +f 533/258/9 529/259/9 515/260/9 +f 514/261/12 517/262/12 516/263/12 +f 527/264/12 538/265/12 530/266/12 +f 539/267/10 522/268/10 535/269/10 +f 528/270/8 533/258/8 525/271/8 +f 530/266/9 538/265/9 516/272/9 +f 539/267/9 535/269/9 514/273/9 +f 536/274/9 532/275/9 513/276/9 +f 517/277/9 519/278/9 518/279/9 +f 516/263/8 518/279/8 515/280/8 +f 513/281/10 520/282/10 514/261/10 +f 515/280/11 519/278/11 513/283/11 +f 529/259/9 530/266/9 531/284/9 +f 532/275/9 533/258/9 534/285/9 +f 535/269/9 536/274/9 537/286/9 +f 538/265/9 539/267/9 540/287/9 +f 526/288/13 533/258/13 532/289/13 +f 530/290/14 528/270/14 527/291/14 +f 536/292/15 522/268/15 521/293/15 +f 524/294/16 539/267/16 538/295/16 +f 532/275/11 521/296/11 526/297/11 +f 561/298/9 557/299/9 543/300/9 +f 542/301/12 545/302/12 544/303/12 +f 555/304/12 566/305/12 558/306/12 +f 567/307/10 550/308/10 563/309/10 +f 556/310/8 561/298/8 553/311/8 +f 558/306/9 566/305/9 544/312/9 +f 567/307/9 563/309/9 542/313/9 +f 564/314/9 560/315/9 541/316/9 +f 545/317/9 547/318/9 546/319/9 +f 544/303/8 546/319/8 543/320/8 +f 541/321/10 548/322/10 542/301/10 +f 543/320/11 547/318/11 541/323/11 +f 557/299/9 558/306/9 559/324/9 +f 560/315/9 561/298/9 562/325/9 +f 563/309/9 564/314/9 565/326/9 +f 566/305/9 567/307/9 568/327/9 +f 554/328/13 561/298/13 560/329/13 +f 558/330/14 556/310/14 555/331/14 +f 564/332/15 550/308/15 549/333/15 +f 552/334/16 567/307/16 566/335/16 +f 560/315/11 549/336/11 554/337/11 +f 570/338/7 571/339/7 569/340/7 +f 572/341/8 575/342/8 571/343/8 +f 576/344/9 573/345/9 575/342/9 +f 574/346/10 569/347/10 573/345/10 +f 575/342/11 569/348/11 571/349/11 +f 572/350/12 574/346/12 576/344/12 +f 580/351/8 583/352/8 579/353/8 +f 584/354/9 581/355/9 583/352/9 +f 582/356/10 577/357/10 581/355/10 +f 583/352/11 577/358/11 579/359/11 +f 580/360/12 582/356/12 584/354/12 +f 605/361/9 601/362/9 587/363/9 +f 586/364/12 589/365/12 588/366/12 +f 599/367/12 610/368/12 602/369/12 +f 611/370/10 594/371/10 607/372/10 +f 600/373/8 605/361/8 597/374/8 +f 602/369/9 610/368/9 588/375/9 +f 611/370/9 607/372/9 586/376/9 +f 608/377/9 604/378/9 585/379/9 +f 589/380/9 591/381/9 590/382/9 +f 588/366/8 590/382/8 587/383/8 +f 585/384/10 592/385/10 586/364/10 +f 587/383/11 591/381/11 585/386/11 +f 601/362/9 602/369/9 603/387/9 +f 604/378/9 605/361/9 606/388/9 +f 607/372/9 608/377/9 609/389/9 +f 610/368/9 611/370/9 612/390/9 +f 598/391/13 605/361/13 604/392/13 +f 602/393/14 600/373/14 599/394/14 +f 608/395/15 594/371/15 593/396/15 +f 596/397/16 611/370/16 610/398/16 +f 604/378/11 593/399/11 598/400/11 +f 633/401/9 629/402/9 615/403/9 +f 614/404/12 617/405/12 616/406/12 +f 627/407/12 638/408/12 630/409/12 +f 639/410/10 622/411/10 635/412/10 +f 628/413/8 633/401/8 625/414/8 +f 630/409/9 638/408/9 616/415/9 +f 639/410/9 635/412/9 614/416/9 +f 636/417/9 632/418/9 613/419/9 +f 617/420/9 619/421/9 618/422/9 +f 616/406/8 618/422/8 615/423/8 +f 613/424/10 620/425/10 614/404/10 +f 615/423/11 619/421/11 613/426/11 +f 629/402/9 630/409/9 631/427/9 +f 632/418/9 633/401/9 634/428/9 +f 635/412/9 636/417/9 637/429/9 +f 638/408/9 639/410/9 640/430/9 +f 626/431/13 633/401/13 632/432/13 +f 630/433/14 628/413/14 627/434/14 +f 636/435/15 622/411/15 621/436/15 +f 624/437/16 639/410/16 638/438/16 +f 632/418/11 621/439/11 626/440/11 +f 354/29/7 356/441/7 355/30/7 +f 356/32/8 360/35/8 359/33/8 +f 360/35/9 358/37/9 357/36/9 +f 358/37/10 354/442/10 353/38/10 +f 359/33/11 357/36/11 353/39/11 +f 356/41/12 354/443/12 358/37/12 +f 364/42/8 368/45/8 367/43/8 +f 368/45/9 366/47/9 365/46/9 +f 366/47/10 362/444/10 361/48/10 +f 367/43/11 365/46/11 361/49/11 +f 364/51/12 362/445/12 366/47/12 +f 387/78/9 372/66/9 385/53/9 +f 372/66/9 371/54/9 385/53/9 +f 371/54/9 390/79/9 389/52/9 +f 370/55/12 376/76/12 373/56/12 +f 383/58/12 380/446/12 394/59/12 +f 395/61/10 379/447/10 378/62/10 +f 384/64/8 385/53/8 389/52/8 +f 396/81/9 370/67/9 394/59/9 +f 370/67/9 372/66/9 394/59/9 +f 372/66/9 387/78/9 386/60/9 +f 393/80/9 369/70/9 391/63/9 +f 369/70/9 370/67/9 391/63/9 +f 370/67/9 396/81/9 395/61/9 +f 390/79/9 371/54/9 388/69/9 +f 371/54/9 369/70/9 388/69/9 +f 369/70/9 393/80/9 392/68/9 +f 373/71/9 376/448/9 375/72/9 +f 372/57/8 373/56/8 374/73/8 +f 369/75/10 375/449/10 376/76/10 +f 371/74/11 374/73/11 375/72/11 +f 382/82/13 381/65/13 389/52/13 +f 386/84/14 385/53/14 384/64/14 +f 392/86/15 391/63/15 378/62/15 +f 380/88/16 379/447/16 395/61/16 +f 388/69/11 392/68/11 377/90/11 +f 415/118/9 400/106/9 413/93/9 +f 400/106/9 399/94/9 413/93/9 +f 399/94/9 418/119/9 417/92/9 +f 398/95/12 404/116/12 401/96/12 +f 411/98/12 408/450/12 422/99/12 +f 423/101/10 407/451/10 406/102/10 +f 412/104/8 413/93/8 417/92/8 +f 424/121/9 398/107/9 422/99/9 +f 398/107/9 400/106/9 422/99/9 +f 400/106/9 415/118/9 414/100/9 +f 421/120/9 397/110/9 419/103/9 +f 397/110/9 398/107/9 419/103/9 +f 398/107/9 424/121/9 423/101/9 +f 418/119/9 399/94/9 416/109/9 +f 399/94/9 397/110/9 416/109/9 +f 397/110/9 421/120/9 420/108/9 +f 401/111/9 404/452/9 403/112/9 +f 400/97/8 401/96/8 402/113/8 +f 397/115/10 403/453/10 404/116/10 +f 399/114/11 402/113/11 403/112/11 +f 410/122/13 409/105/13 417/92/13 +f 414/124/14 413/93/14 412/104/14 +f 420/126/15 419/103/15 406/102/15 +f 408/128/16 407/451/16 423/101/16 +f 416/109/11 420/108/11 405/130/11 +f 426/132/7 428/454/7 427/133/7 +f 428/135/8 432/138/8 431/136/8 +f 432/138/9 430/140/9 429/139/9 +f 430/140/10 426/455/10 425/141/10 +f 431/136/11 429/139/11 425/142/11 +f 428/144/12 426/456/12 430/140/12 +f 436/145/8 440/148/8 439/146/8 +f 440/148/9 438/150/9 437/149/9 +f 438/150/10 434/457/10 433/151/10 +f 439/146/11 437/149/11 433/152/11 +f 436/154/12 434/458/12 438/150/12 +f 459/181/9 444/169/9 457/156/9 +f 444/169/9 443/157/9 457/156/9 +f 443/157/9 462/182/9 461/155/9 +f 442/158/12 448/179/12 445/159/12 +f 455/161/12 452/459/12 466/162/12 +f 467/164/10 451/460/10 450/165/10 +f 456/167/8 457/156/8 461/155/8 +f 468/184/9 442/170/9 466/162/9 +f 442/170/9 444/169/9 466/162/9 +f 444/169/9 459/181/9 458/163/9 +f 465/183/9 441/173/9 463/166/9 +f 441/173/9 442/170/9 463/166/9 +f 442/170/9 468/184/9 467/164/9 +f 462/182/9 443/157/9 460/172/9 +f 443/157/9 441/173/9 460/172/9 +f 441/173/9 465/183/9 464/171/9 +f 445/174/9 448/461/9 447/175/9 +f 444/160/8 445/159/8 446/176/8 +f 441/178/10 447/462/10 448/179/10 +f 443/177/11 446/176/11 447/175/11 +f 454/185/13 453/168/13 461/155/13 +f 458/187/14 457/156/14 456/167/14 +f 464/189/15 463/166/15 450/165/15 +f 452/191/16 451/460/16 467/164/16 +f 460/172/11 464/171/11 449/193/11 +f 487/221/9 472/209/9 485/196/9 +f 472/209/9 471/197/9 485/196/9 +f 471/197/9 490/222/9 489/195/9 +f 470/198/12 476/219/12 473/199/12 +f 483/201/12 480/463/12 494/202/12 +f 495/204/10 479/464/10 478/205/10 +f 484/207/8 485/196/8 489/195/8 +f 496/224/9 470/210/9 494/202/9 +f 470/210/9 472/209/9 494/202/9 +f 472/209/9 487/221/9 486/203/9 +f 493/223/9 469/213/9 491/206/9 +f 469/213/9 470/210/9 491/206/9 +f 470/210/9 496/224/9 495/204/9 +f 490/222/9 471/197/9 488/212/9 +f 471/197/9 469/213/9 488/212/9 +f 469/213/9 493/223/9 492/211/9 +f 473/214/9 476/465/9 475/215/9 +f 472/200/8 473/199/8 474/216/8 +f 469/218/10 475/466/10 476/219/10 +f 471/217/11 474/216/11 475/215/11 +f 482/225/13 481/208/13 489/195/13 +f 486/227/14 485/196/14 484/207/14 +f 492/229/15 491/206/15 478/205/15 +f 480/231/16 479/464/16 495/204/16 +f 488/212/11 492/211/11 477/233/11 +f 498/235/7 500/467/7 499/236/7 +f 500/238/8 504/241/8 503/239/8 +f 504/241/9 502/243/9 501/242/9 +f 502/243/10 498/468/10 497/244/10 +f 503/239/11 501/242/11 497/245/11 +f 500/247/12 498/469/12 502/243/12 +f 508/248/8 512/251/8 511/249/8 +f 512/251/9 510/253/9 509/252/9 +f 510/253/10 506/470/10 505/254/10 +f 511/249/11 509/252/11 505/255/11 +f 508/257/12 506/471/12 510/253/12 +f 531/284/9 516/272/9 529/259/9 +f 516/272/9 515/260/9 529/259/9 +f 515/260/9 534/285/9 533/258/9 +f 514/261/12 520/282/12 517/262/12 +f 527/264/12 524/472/12 538/265/12 +f 539/267/10 523/473/10 522/268/10 +f 528/270/8 529/259/8 533/258/8 +f 540/287/9 514/273/9 538/265/9 +f 514/273/9 516/272/9 538/265/9 +f 516/272/9 531/284/9 530/266/9 +f 537/286/9 513/276/9 535/269/9 +f 513/276/9 514/273/9 535/269/9 +f 514/273/9 540/287/9 539/267/9 +f 534/285/9 515/260/9 532/275/9 +f 515/260/9 513/276/9 532/275/9 +f 513/276/9 537/286/9 536/274/9 +f 517/277/9 520/474/9 519/278/9 +f 516/263/8 517/262/8 518/279/8 +f 513/281/10 519/475/10 520/282/10 +f 515/280/11 518/279/11 519/278/11 +f 526/288/13 525/271/13 533/258/13 +f 530/290/14 529/259/14 528/270/14 +f 536/292/15 535/269/15 522/268/15 +f 524/294/16 523/473/16 539/267/16 +f 532/275/11 536/274/11 521/296/11 +f 559/324/9 544/312/9 557/299/9 +f 544/312/9 543/300/9 557/299/9 +f 543/300/9 562/325/9 561/298/9 +f 542/301/12 548/322/12 545/302/12 +f 555/304/12 552/476/12 566/305/12 +f 567/307/10 551/477/10 550/308/10 +f 556/310/8 557/299/8 561/298/8 +f 568/327/9 542/313/9 566/305/9 +f 542/313/9 544/312/9 566/305/9 +f 544/312/9 559/324/9 558/306/9 +f 565/326/9 541/316/9 563/309/9 +f 541/316/9 542/313/9 563/309/9 +f 542/313/9 568/327/9 567/307/9 +f 562/325/9 543/300/9 560/315/9 +f 543/300/9 541/316/9 560/315/9 +f 541/316/9 565/326/9 564/314/9 +f 545/317/9 548/478/9 547/318/9 +f 544/303/8 545/302/8 546/319/8 +f 541/321/10 547/479/10 548/322/10 +f 543/320/11 546/319/11 547/318/11 +f 554/328/13 553/311/13 561/298/13 +f 558/330/14 557/299/14 556/310/14 +f 564/332/15 563/309/15 550/308/15 +f 552/334/16 551/477/16 567/307/16 +f 560/315/11 564/314/11 549/336/11 +f 570/338/7 572/480/7 571/339/7 +f 572/341/8 576/344/8 575/342/8 +f 576/344/9 574/346/9 573/345/9 +f 574/346/10 570/481/10 569/347/10 +f 575/342/11 573/345/11 569/348/11 +f 572/350/12 570/482/12 574/346/12 +f 580/351/8 584/354/8 583/352/8 +f 584/354/9 582/356/9 581/355/9 +f 582/356/10 578/483/10 577/357/10 +f 583/352/11 581/355/11 577/358/11 +f 580/360/12 578/484/12 582/356/12 +f 603/387/9 588/375/9 601/362/9 +f 588/375/9 587/363/9 601/362/9 +f 587/363/9 606/388/9 605/361/9 +f 586/364/12 592/385/12 589/365/12 +f 599/367/12 596/485/12 610/368/12 +f 611/370/10 595/486/10 594/371/10 +f 600/373/8 601/362/8 605/361/8 +f 612/390/9 586/376/9 610/368/9 +f 586/376/9 588/375/9 610/368/9 +f 588/375/9 603/387/9 602/369/9 +f 609/389/9 585/379/9 607/372/9 +f 585/379/9 586/376/9 607/372/9 +f 586/376/9 612/390/9 611/370/9 +f 606/388/9 587/363/9 604/378/9 +f 587/363/9 585/379/9 604/378/9 +f 585/379/9 609/389/9 608/377/9 +f 589/380/9 592/487/9 591/381/9 +f 588/366/8 589/365/8 590/382/8 +f 585/384/10 591/488/10 592/385/10 +f 587/383/11 590/382/11 591/381/11 +f 598/391/13 597/374/13 605/361/13 +f 602/393/14 601/362/14 600/373/14 +f 608/395/15 607/372/15 594/371/15 +f 596/397/16 595/486/16 611/370/16 +f 604/378/11 608/377/11 593/399/11 +f 631/427/9 616/415/9 629/402/9 +f 616/415/9 615/403/9 629/402/9 +f 615/403/9 634/428/9 633/401/9 +f 614/404/12 620/425/12 617/405/12 +f 627/407/12 624/489/12 638/408/12 +f 639/410/10 623/490/10 622/411/10 +f 628/413/8 629/402/8 633/401/8 +f 640/430/9 614/416/9 638/408/9 +f 614/416/9 616/415/9 638/408/9 +f 616/415/9 631/427/9 630/409/9 +f 637/429/9 613/419/9 635/412/9 +f 613/419/9 614/416/9 635/412/9 +f 614/416/9 640/430/9 639/410/9 +f 634/428/9 615/403/9 632/418/9 +f 615/403/9 613/419/9 632/418/9 +f 613/419/9 637/429/9 636/417/9 +f 617/420/9 620/491/9 619/421/9 +f 616/406/8 617/405/8 618/422/8 +f 613/424/10 619/492/10 620/425/10 +f 615/423/11 618/422/11 619/421/11 +f 626/431/13 625/414/13 633/401/13 +f 630/433/14 629/402/14 628/413/14 +f 636/435/15 635/412/15 622/411/15 +f 624/437/16 623/490/16 639/410/16 +f 632/418/11 636/417/11 621/439/11 +s 1 +f 129/493/17 38/494/18 26/495/19 +f 24/496/20 96/497/21 36/498/22 +f 17/499/23 30/500/24 29/501/25 +f 19/502/26 42/503/27 31/504/28 +f 19/502/26 32/505/29 20/506/30 +f 18/507/9 174/508/9 157/509/9 +f 20/510/9 163/511/9 19/512/9 +f 160/513/9 53/514/9 164/515/9 +f 166/516/9 53/514/9 54/517/9 +f 98/518/9 126/519/9 127/520/9 +f 146/521/9 26/522/9 28/523/9 +f 135/524/9 25/525/9 133/526/9 +f 64/527/9 132/528/9 23/529/9 +f 27/530/31 37/531/32 25/532/33 +f 27/530/31 44/533/34 39/534/35 +f 28/535/36 38/494/18 40/536/37 +f 137/537/9 27/538/9 135/524/9 +f 59/539/9 144/540/9 60/541/9 +f 64/527/9 138/542/9 136/543/9 +f 17/499/23 41/544/27 45/545/27 +f 28/535/36 43/546/34 47/547/34 +f 57/548/38 170/549/38 56/550/38 +f 46/551/39 50/552/40 42/553/41 +f 43/554/42 52/555/43 51/556/43 +f 143/557/44 51/558/45 141/559/44 +f 60/560/44 142/561/44 61/562/44 +f 43/563/46 51/564/45 47/565/47 +f 52/566/48 44/567/49 48/568/50 +f 41/569/51 49/570/52 45/571/53 +f 50/572/54 41/573/55 42/574/55 +f 112/575/9 64/527/9 128/576/9 +f 167/577/9 49/578/54 50/579/54 +f 165/580/44 50/579/40 46/581/39 +f 19/512/9 165/582/9 46/583/9 +f 53/514/9 120/584/9 54/517/9 +f 137/585/38 52/586/48 48/587/50 +f 127/520/9 110/588/9 111/589/9 +f 86/590/56 88/591/9 87/592/9 +f 122/593/44 119/594/44 118/595/44 +f 109/596/38 56/550/38 108/597/38 +f 114/598/9 102/599/9 103/600/9 +f 104/601/9 59/539/9 113/602/9 +f 122/593/9 107/603/9 123/604/9 +f 120/605/44 55/606/44 54/607/44 +f 61/562/9 105/608/9 121/609/9 +f 118/610/9 115/611/9 114/598/9 +f 124/612/9 56/550/9 55/606/9 +f 58/613/9 100/614/9 21/615/9 +f 94/616/21 103/617/21 102/618/21 +f 21/619/57 92/620/58 33/621/59 +f 128/576/9 23/529/9 97/622/9 +f 22/623/9 116/624/9 53/514/9 +f 113/602/9 60/541/9 117/625/9 +f 117/626/44 61/562/44 121/609/44 +f 107/603/38 111/627/38 110/628/38 +f 57/629/9 125/630/9 58/613/9 +f 112/631/38 62/632/38 63/633/38 +f 22/634/60 93/635/21 101/636/21 +f 90/637/58 99/638/58 98/639/58 +f 116/640/61 69/641/61 120/642/61 +f 125/643/61 83/644/62 100/645/63 +f 103/646/64 77/647/61 114/648/61 +f 121/609/44 118/595/44 117/626/44 +f 120/605/44 123/604/44 124/612/44 +f 121/609/9 106/649/9 122/593/9 +f 108/597/9 123/604/9 107/603/9 +f 114/648/61 71/650/61 118/651/61 +f 127/652/61 85/653/62 98/654/63 +f 108/597/38 110/628/38 109/596/38 +f 112/631/38 106/649/38 105/608/38 +f 290/655/7 275/656/7 274/657/7 +f 220/658/65 305/659/66 216/660/67 +f 23/661/68 89/662/58 97/663/58 +f 82/664/9 84/665/56 83/644/56 +f 78/666/9 80/667/69 79/668/69 +f 74/669/69 76/670/9 75/671/9 +f 72/672/9 77/647/9 78/666/9 +f 75/671/9 70/673/9 69/641/9 +f 87/592/9 68/674/9 67/675/9 +f 66/676/9 81/677/9 82/664/9 +f 128/678/70 67/675/70 112/679/70 +f 101/680/64 75/671/61 116/640/61 +f 119/681/70 76/670/70 115/682/70 +f 111/683/61 88/591/61 127/652/61 +f 99/684/71 81/677/70 126/685/70 +f 109/686/61 82/664/61 125/643/61 +f 115/682/70 73/687/72 102/688/73 +f 69/641/9 65/689/9 66/676/9 +f 97/690/71 87/592/70 128/678/70 +f 117/691/70 78/666/70 113/692/70 +f 113/692/70 79/668/72 104/693/73 +f 126/685/70 65/689/70 110/694/70 +f 119/681/70 65/689/70 70/673/70 +f 66/676/61 120/642/61 69/641/61 +f 118/651/61 68/674/61 111/683/61 +f 67/675/9 71/650/9 72/672/9 +f 117/691/70 67/675/70 72/672/70 +f 98/695/63 85/696/62 90/697/74 +f 100/698/63 83/699/62 92/700/74 +f 99/701/71 91/702/75 84/703/76 +f 86/704/76 97/705/71 89/706/75 +f 104/707/73 79/708/72 96/709/77 +f 80/710/78 103/711/64 95/712/79 +f 102/713/73 73/714/72 94/715/77 +f 74/716/78 101/717/64 93/718/79 +f 74/719/69 94/720/80 73/721/69 +f 80/722/69 96/709/80 79/708/69 +f 85/723/56 89/724/81 90/725/81 +f 83/726/56 91/727/81 92/728/81 +f 143/729/9 28/523/9 47/730/9 +f 51/558/43 139/731/9 141/559/9 +f 142/561/9 62/632/9 61/562/9 +f 63/633/38 140/732/38 138/733/38 +f 133/734/82 37/531/32 134/735/83 +f 36/736/22 130/737/84 24/738/20 +f 132/739/85 35/740/86 23/741/68 +f 136/742/87 154/743/88 156/744/89 +f 132/745/90 134/746/91 133/747/92 +f 146/748/93 151/749/94 150/750/95 +f 129/751/96 150/750/95 131/752/97 +f 59/539/9 130/753/9 145/754/9 +f 150/750/98 152/755/9 149/756/99 +f 155/757/100 154/743/9 153/758/9 +f 134/759/101 156/744/102 155/757/100 +f 131/752/103 149/756/99 147/760/104 +f 130/761/105 149/756/106 145/762/87 +f 133/763/107 155/757/108 135/764/93 +f 135/764/93 153/758/109 137/765/110 +f 144/766/111 149/756/106 152/755/112 +f 132/767/113 156/744/89 148/768/114 +f 152/755/112 154/743/88 140/769/115 +f 141/770/116 153/758/109 151/749/94 +f 152/755/9 153/758/9 154/743/9 +f 172/771/9 58/613/9 173/772/9 +f 17/773/9 171/774/9 174/508/9 +f 45/775/53 169/776/38 171/777/38 +f 55/606/9 170/549/9 168/778/9 +f 54/607/44 168/778/44 166/779/44 +f 161/780/117 32/505/29 162/781/118 +f 157/782/119 30/500/24 18/783/120 +f 21/784/57 175/785/121 158/786/121 +f 176/787/122 22/788/60 160/789/122 +f 181/790/9 178/791/9 177/792/9 +f 167/793/123 181/790/124 177/792/125 +f 161/794/126 183/795/127 163/796/128 +f 178/791/129 182/797/130 168/798/131 +f 174/799/132 177/792/125 180/800/133 +f 158/801/9 58/613/9 21/615/9 +f 179/802/134 177/792/9 178/791/9 +f 182/797/9 183/795/135 184/803/136 +f 184/803/136 162/804/137 176/805/138 +f 179/802/134 159/806/139 180/800/140 +f 164/807/141 182/797/130 184/803/142 +f 158/808/143 179/802/144 173/809/141 +f 173/809/141 178/791/129 172/810/145 +f 160/811/146 162/812/147 161/813/148 +f 163/796/128 181/790/124 165/814/149 +f 158/815/150 159/816/151 175/817/152 +f 157/818/153 180/800/133 159/806/154 +f 160/819/155 184/803/142 176/805/156 +f 224/820/7 292/821/7 223/822/7 +f 239/823/7 235/824/7 240/825/7 +f 205/826/157 195/827/158 193/828/159 +f 300/829/7 232/830/7 191/831/7 +f 294/832/7 266/833/7 295/834/7 +f 206/835/160 297/836/161 194/837/162 +f 185/838/163 198/839/164 186/840/165 +f 227/841/7 272/842/7 281/843/7 +f 300/844/166 324/845/167 304/846/168 +f 230/847/7 310/848/7 229/849/7 +f 273/850/7 229/849/7 289/851/7 +f 331/852/7 188/853/7 187/854/7 +f 193/855/7 303/856/7 301/857/7 +f 205/826/157 301/858/169 302/859/170 +f 314/860/7 194/861/7 297/862/7 +f 200/863/171 187/864/172 188/865/173 +f 319/866/174 321/867/175 307/868/176 +f 288/869/7 221/870/7 222/871/7 +f 351/872/177 350/873/7 352/874/178 +f 287/875/179 290/655/179 286/876/179 +f 270/877/7 282/878/7 271/879/7 +f 334/880/7 221/870/7 332/881/7 +f 318/882/180 320/883/7 319/866/7 +f 267/884/181 252/885/182 259/886/183 +f 251/887/184 293/888/185 268/889/186 +f 221/870/7 328/890/7 332/881/7 +f 196/891/187 206/835/160 194/837/162 +f 261/892/188 190/893/189 269/894/188 +f 185/895/7 339/896/7 213/897/7 +f 298/898/190 204/899/191 192/900/192 +f 308/901/193 322/902/194 320/883/195 +f 323/903/196 301/904/197 303/905/198 +f 346/906/199 341/907/200 340/908/201 +f 226/909/7 340/910/7 341/911/7 +f 337/912/66 213/913/202 339/914/66 +f 326/915/7 226/909/7 341/911/7 +f 312/916/7 227/841/7 228/917/7 +f 302/918/203 300/919/204 301/920/205 +f 195/827/158 212/921/206 216/922/206 +f 211/923/206 196/891/187 215/924/206 +f 200/863/171 329/925/207 330/926/208 +f 342/927/209 345/928/210 339/929/211 +f 214/930/212 210/931/213 218/932/214 +f 314/933/198 319/866/174 311/934/215 +f 195/935/7 305/936/7 303/856/7 +f 223/822/179 288/937/179 222/938/179 +f 244/939/216 287/940/216 283/941/216 +f 320/883/7 321/867/7 319/866/7 +f 245/942/185 271/943/217 282/944/185 +f 326/945/218 327/946/219 325/947/220 +f 253/948/184 295/949/185 266/950/186 +f 246/951/216 285/952/216 281/953/216 +f 270/954/221 262/955/222 241/956/223 +f 238/957/7 243/958/7 237/959/7 +f 256/960/185 279/961/185 295/949/185 +f 254/962/182 257/963/183 265/964/181 +f 232/830/7 280/965/7 296/966/7 +f 272/967/221 264/968/222 247/969/223 +f 236/970/7 255/971/7 235/824/7 +f 284/972/7 190/973/7 221/870/7 +f 233/974/7 237/959/7 234/975/7 +f 268/976/7 226/909/7 189/977/7 +f 271/978/188 262/979/188 270/980/188 +f 209/981/224 218/982/225 210/983/224 +f 252/984/226 250/985/7 251/887/226 +f 247/986/223 281/953/216 272/987/221 +f 228/988/179 310/848/179 312/989/179 +f 288/990/185 234/975/185 237/959/185 +f 266/991/186 258/992/227 253/993/184 +f 248/994/228 246/951/7 247/986/228 +f 262/995/229 242/996/228 241/997/228 +f 191/831/7 296/966/7 265/998/7 +f 239/823/185 282/944/185 286/999/185 +f 311/1000/179 219/1001/230 215/1002/231 +f 250/985/185 277/1003/185 293/888/185 +f 311/1004/7 196/1005/7 314/860/7 +f 235/824/216 296/1006/216 280/1007/216 +f 211/1008/232 215/1009/231 219/1010/230 +f 230/847/66 280/1011/66 231/1012/66 +f 236/970/185 286/999/185 279/961/185 +f 249/1013/7 234/975/7 250/985/7 +f 267/1014/233 258/1015/233 266/1016/233 +f 328/1017/234 352/874/235 332/1018/200 +f 209/1019/236 185/838/163 213/1020/236 +f 220/1021/237 211/1022/238 219/1023/237 +f 232/830/7 306/1024/7 231/1025/7 +f 225/1026/66 338/1027/66 340/1028/66 +f 330/1029/239 328/1030/240 329/1031/241 +f 258/1032/242 254/1033/226 253/1034/226 +f 278/1035/7 295/834/7 279/1036/7 +f 217/1037/225 335/1038/7 218/1039/225 +f 307/1040/7 219/1001/237 309/1041/7 +f 237/959/185 284/1042/185 288/990/185 +f 228/917/7 281/843/7 285/1043/7 +f 279/1044/66 275/656/66 278/1045/66 +f 324/845/243 302/1046/244 323/903/245 +f 277/1047/66 224/820/66 225/1026/66 +f 220/1048/65 216/1049/67 212/1050/246 +f 291/1051/179 288/937/179 292/821/179 +f 189/1052/247 260/1053/233 268/1054/233 +f 244/939/7 242/1055/228 243/958/7 +f 248/1056/248 263/1057/249 271/1058/217 +f 218/1039/214 333/1059/179 214/1060/212 +f 299/1061/250 317/1062/251 318/882/180 +f 209/1063/252 213/1064/202 217/1065/253 +f 260/1066/242 252/1067/226 251/1068/226 +f 289/851/7 274/657/7 273/850/7 +f 245/942/7 240/825/7 246/951/7 +f 285/1069/179 229/849/179 228/988/179 +f 274/657/66 280/1011/66 273/850/66 +f 241/1070/223 283/941/216 270/1071/221 +f 293/1072/7 225/1073/7 226/909/7 +f 276/1074/7 291/1051/7 292/821/7 +f 235/824/216 285/952/216 240/825/216 +f 268/1075/186 260/1076/227 251/1077/184 +f 264/968/229 248/1078/228 247/969/228 +f 286/876/179 289/851/179 285/1069/179 +f 345/928/210 349/1079/254 335/1080/255 +f 338/1027/7 223/822/7 336/1081/7 +f 317/1062/256 298/1082/257 313/1083/168 +f 336/1081/179 222/938/179 334/1084/179 +f 227/841/7 298/1085/7 192/1086/7 +f 198/839/164 325/1087/258 186/840/165 +f 343/1088/259 189/1089/247 326/1090/259 +f 344/1091/260 190/1092/189 202/1093/261 +f 338/1094/262 350/873/263 346/906/199 +f 325/1095/264 348/1096/265 342/927/209 +f 346/906/7 349/1079/7 345/928/7 +f 330/1097/266 352/874/178 344/1098/267 +f 332/1018/200 350/873/263 334/1099/268 +f 256/960/7 254/1100/226 255/971/7 +f 283/1101/7 286/1102/7 282/878/7 +f 257/1103/233 191/1104/269 265/1105/233 +f 192/1106/192 264/1107/188 272/1108/188 +f 278/1045/66 276/1074/66 277/1047/66 +f 351/872/270 329/1109/271 331/1110/272 +f 321/867/175 303/905/198 305/1111/273 +f 347/1112/274 326/1113/275 341/907/200 +f 203/1114/276 300/1115/277 191/1116/269 +f 322/902/7 323/903/245 321/867/7 +f 187/864/172 210/1117/236 214/1118/236 +f 345/928/7 347/1112/278 346/906/7 +f 249/1013/216 267/1119/181 294/1120/216 +f 233/974/216 294/1120/216 278/1121/216 +f 333/1122/7 187/854/7 214/1123/7 +f 297/1124/279 318/882/280 314/933/198 +f 243/958/185 269/1125/217 284/1042/185 +f 255/971/216 265/1126/181 296/1006/216 +f 233/974/216 287/940/216 238/957/216 +f 186/1127/7 342/1128/7 185/895/7 +f 324/845/167 306/1129/281 304/846/168 +f 320/883/195 313/1083/168 312/1130/282 +f 242/1131/248 261/1132/249 269/1133/217 +f 308/1134/66 231/1012/66 306/1135/66 +f 349/1079/254 331/1110/272 333/1136/283 +f 347/1112/278 327/1137/284 343/1138/285 +f 199/1139/286 42/1140/12 210/1141/12 +f 204/1142/287 96/1143/10 264/1144/10 +f 264/1144/10 95/1145/10 263/1146/10 +f 263/1146/10 94/1147/10 262/1148/10 +f 197/1149/288 30/1150/289 198/1151/289 +f 198/1151/289 159/1152/290 327/1153/290 +f 259/1154/8 90/1155/8 258/1156/8 +f 260/1157/8 91/1158/8 259/1154/8 +f 147/1159/291 36/1160/287 315/1161/291 +f 210/1141/12 41/1162/12 209/1163/12 +f 209/1163/12 29/1164/288 197/1149/288 +f 212/1165/11 43/1166/11 211/1167/11 +f 302/1168/292 37/1169/293 205/1170/293 +f 207/1171/294 44/1172/11 212/1165/11 +f 205/1170/293 39/1173/294 207/1171/294 +f 175/1174/295 33/1175/296 343/1176/295 +f 201/1177/296 92/1178/8 260/1157/8 +f 206/1179/297 131/1180/298 299/1181/298 +f 176/1182/299 162/1183/300 344/1184/299 +f 330/1185/300 32/1186/301 200/1187/301 +f 258/1156/8 89/1188/8 257/1189/8 +f 262/1148/10 93/1190/10 261/1191/10 +f 261/1191/10 34/1192/302 202/1193/302 +f 148/1194/303 134/1195/292 316/1196/303 +f 257/1189/8 35/1197/304 203/1198/304 +f 208/1199/305 38/1200/297 206/1179/297 +f 211/1167/11 40/1201/305 208/1199/305 +f 200/1187/301 31/1202/286 199/1139/286 +f 129/493/17 131/1203/306 38/494/18 +f 24/496/20 104/1204/21 96/497/21 +f 17/499/23 18/783/120 30/500/24 +f 19/502/26 46/1205/27 42/503/27 +f 19/502/26 31/504/28 32/505/29 +f 18/507/9 17/773/9 174/508/9 +f 20/510/9 161/1206/9 163/511/9 +f 160/513/9 22/623/9 53/514/9 +f 166/516/9 164/515/9 53/514/9 +f 98/518/9 99/1207/9 126/519/9 +f 146/521/9 129/1208/9 26/522/9 +f 135/524/9 27/538/9 25/525/9 +f 64/527/9 136/543/9 132/528/9 +f 27/530/31 39/534/35 37/531/32 +f 27/530/31 48/1209/34 44/533/34 +f 28/535/36 26/495/19 38/494/18 +f 137/537/9 48/1210/9 27/538/9 +f 59/539/9 145/754/9 144/540/9 +f 64/527/9 63/1211/9 138/542/9 +f 17/499/23 29/501/25 41/544/27 +f 28/535/36 40/536/37 43/546/34 +f 57/548/38 172/1212/38 170/549/38 +f 43/554/42 44/1213/42 52/555/43 +f 143/557/44 47/1214/47 51/558/45 +f 60/560/44 144/1215/44 142/561/44 +f 50/572/54 49/1216/54 41/573/55 +f 112/575/9 63/1211/9 64/527/9 +f 167/577/9 169/776/9 49/578/54 +f 165/580/44 167/577/44 50/579/40 +f 19/512/9 163/511/9 165/582/9 +f 53/514/9 116/624/9 120/584/9 +f 137/585/38 139/731/38 52/586/48 +f 127/520/9 126/519/9 110/588/9 +f 86/590/56 85/653/56 88/591/9 +f 122/593/44 123/604/44 119/594/44 +f 109/596/38 57/548/38 56/550/38 +f 114/598/9 115/611/9 102/599/9 +f 104/601/9 24/1217/9 59/539/9 +f 122/593/9 106/649/9 107/603/9 +f 120/605/44 124/612/44 55/606/44 +f 61/562/9 62/632/9 105/608/9 +f 118/610/9 119/1218/9 115/611/9 +f 124/612/9 108/597/9 56/550/9 +f 58/613/9 125/630/9 100/614/9 +f 94/616/21 95/1219/21 103/617/21 +f 21/619/57 100/1220/58 92/620/58 +f 128/576/9 64/527/9 23/529/9 +f 22/623/9 101/1221/9 116/624/9 +f 113/602/9 59/539/9 60/541/9 +f 117/626/44 60/560/44 61/562/44 +f 107/603/38 106/649/38 111/627/38 +f 57/629/9 109/1222/9 125/630/9 +f 112/631/38 105/608/38 62/632/38 +f 22/634/60 34/1223/307 93/635/21 +f 90/637/58 91/1224/58 99/638/58 +f 116/640/61 75/671/61 69/641/61 +f 125/643/61 82/664/61 83/644/62 +f 103/646/64 80/667/78 77/647/61 +f 121/609/44 122/593/44 118/595/44 +f 120/605/44 119/594/44 123/604/44 +f 121/609/9 105/608/9 106/649/9 +f 108/597/9 124/612/9 123/604/9 +f 114/648/61 77/647/61 71/650/61 +f 127/652/61 88/591/61 85/653/62 +f 108/597/38 107/603/38 110/628/38 +f 112/631/38 111/627/38 106/649/38 +f 290/655/7 291/1051/7 275/656/7 +f 220/658/65 307/1040/66 305/659/66 +f 23/661/68 35/1225/86 89/662/58 +f 82/664/9 81/677/9 84/665/56 +f 78/666/9 77/647/9 80/667/69 +f 74/669/69 73/687/69 76/670/9 +f 72/672/9 71/650/9 77/647/9 +f 75/671/9 76/670/9 70/673/9 +f 87/592/9 88/591/9 68/674/9 +f 66/676/9 65/689/9 81/677/9 +f 128/678/70 87/592/70 67/675/70 +f 101/680/64 74/669/78 75/671/61 +f 119/681/70 70/673/70 76/670/70 +f 111/683/61 68/674/61 88/591/61 +f 99/684/71 84/665/76 81/677/70 +f 109/686/61 66/676/61 82/664/61 +f 115/682/70 76/670/70 73/687/72 +f 69/641/9 70/673/9 65/689/9 +f 97/690/71 86/590/76 87/592/70 +f 117/691/70 72/672/70 78/666/70 +f 113/692/70 78/666/70 79/668/72 +f 126/685/70 81/677/70 65/689/70 +f 119/681/70 110/694/70 65/689/70 +f 66/676/61 109/686/61 120/642/61 +f 118/651/61 71/650/61 68/674/61 +f 67/675/9 68/674/9 71/650/9 +f 117/691/70 112/679/70 67/675/70 +f 74/719/69 93/1226/80 94/720/80 +f 80/722/69 95/1227/80 96/709/80 +f 85/723/56 86/1228/56 89/724/81 +f 83/726/56 84/1229/56 91/727/81 +f 143/729/9 146/521/9 28/523/9 +f 51/558/43 52/586/43 139/731/9 +f 142/561/9 140/732/9 62/632/9 +f 63/633/38 62/632/38 140/732/38 +f 133/734/82 25/532/33 37/531/32 +f 36/736/22 147/1230/308 130/737/84 +f 132/739/85 148/1231/309 35/740/86 +f 136/742/87 138/1232/310 154/743/88 +f 132/745/90 148/1233/311 134/746/91 +f 146/748/93 143/1234/312 151/749/94 +f 129/751/96 146/748/93 150/750/95 +f 59/539/9 24/1217/9 130/753/9 +f 150/750/98 151/749/9 152/755/9 +f 155/757/100 156/744/102 154/743/9 +f 134/759/101 148/768/313 156/744/102 +f 131/752/103 150/750/98 149/756/99 +f 130/761/105 147/760/314 149/756/106 +f 133/763/107 134/759/315 155/757/108 +f 135/764/93 155/757/108 153/758/109 +f 144/766/111 145/762/87 149/756/106 +f 132/767/113 136/742/87 156/744/89 +f 142/1235/316 144/766/111 152/755/112 +f 154/743/88 138/1232/310 140/769/115 +f 140/769/115 142/1235/316 152/755/112 +f 139/1236/317 137/765/110 153/758/109 +f 151/749/94 143/1234/312 141/770/116 +f 141/770/116 139/1236/317 153/758/109 +f 152/755/9 151/749/9 153/758/9 +f 172/771/9 57/629/9 58/613/9 +f 17/773/9 45/1237/9 171/774/9 +f 45/775/53 49/578/52 169/776/38 +f 55/606/9 56/550/9 170/549/9 +f 54/607/44 55/606/44 168/778/44 +f 161/780/117 20/506/30 32/505/29 +f 157/782/119 159/1238/318 30/500/24 +f 21/784/57 33/1239/59 175/785/121 +f 176/787/122 34/1240/307 22/788/60 +f 181/790/9 182/797/9 178/791/9 +f 177/792/125 171/1241/319 169/1242/320 +f 167/793/123 165/814/149 181/790/124 +f 177/792/125 169/1242/320 167/793/123 +f 161/794/126 162/804/321 183/795/127 +f 170/1243/322 172/810/145 178/791/129 +f 182/797/130 166/1244/323 168/798/131 +f 168/798/131 170/1243/322 178/791/129 +f 174/799/132 171/1241/319 177/792/125 +f 158/801/9 173/772/9 58/613/9 +f 179/802/134 180/800/140 177/792/9 +f 182/797/9 181/790/9 183/795/135 +f 184/803/136 183/795/135 162/804/137 +f 179/802/134 175/1245/324 159/806/139 +f 164/807/141 166/1244/323 182/797/130 +f 158/808/143 175/1245/325 179/802/144 +f 173/809/141 179/802/144 178/791/129 +f 160/811/146 176/1246/326 162/812/147 +f 163/796/128 183/795/127 181/790/124 +f 158/815/150 157/1247/327 159/816/151 +f 157/818/153 174/799/132 180/800/133 +f 160/819/155 164/807/141 184/803/142 +f 224/820/7 276/1074/7 292/821/7 +f 239/823/7 236/970/7 235/824/7 +f 205/826/157 207/1248/328 195/827/158 +f 300/829/7 304/1249/7 232/830/7 +f 294/832/7 267/1250/7 266/833/7 +f 206/835/160 299/1251/329 297/836/161 +f 185/838/163 197/1252/330 198/839/164 +f 227/841/7 192/1086/7 272/842/7 +f 300/844/166 316/1253/331 324/845/167 +f 230/847/7 308/1134/7 310/848/7 +f 273/850/7 230/847/7 229/849/7 +f 331/852/7 329/1254/7 188/853/7 +f 193/855/7 195/935/7 303/856/7 +f 205/826/157 193/828/159 301/858/169 +f 314/860/7 196/1005/7 194/861/7 +f 200/863/171 199/1255/332 187/864/172 +f 309/1256/333 311/934/215 319/866/174 +f 321/867/175 305/1111/273 307/868/176 +f 307/868/176 309/1256/333 319/866/174 +f 288/869/7 284/972/7 221/870/7 +f 351/872/177 349/1079/7 350/873/7 +f 287/875/179 291/1051/179 290/655/179 +f 270/877/7 283/1101/7 282/878/7 +f 334/880/7 222/871/7 221/870/7 +f 318/882/180 317/1062/251 320/883/7 +f 251/887/184 250/985/185 293/888/185 +f 221/870/7 190/973/7 328/890/7 +f 196/891/187 208/1257/334 206/835/160 +f 261/892/188 202/1258/261 190/893/189 +f 185/895/7 342/1128/7 339/896/7 +f 298/898/190 315/1259/335 204/899/191 +f 320/883/195 312/1130/282 310/1260/336 +f 308/901/193 306/1129/281 322/902/194 +f 320/883/195 310/1260/336 308/901/193 +f 323/903/196 302/1046/337 301/904/197 +f 346/906/199 347/1112/274 341/907/200 +f 226/909/7 225/1073/7 340/910/7 +f 337/912/66 217/1037/253 213/913/202 +f 326/915/7 189/977/7 226/909/7 +f 312/916/7 313/1261/7 227/841/7 +f 302/918/203 316/1262/338 300/919/204 +f 195/827/158 207/1248/328 212/921/206 +f 211/923/206 208/1257/334 196/891/187 +f 200/863/171 188/865/173 329/925/207 +f 342/927/209 348/1096/265 345/928/210 +f 314/933/198 318/882/280 319/866/174 +f 195/935/7 216/1263/7 305/936/7 +f 223/822/179 292/821/179 288/937/179 +f 244/939/216 238/957/216 287/940/216 +f 320/883/7 322/902/7 321/867/7 +f 245/942/185 248/994/248 271/943/217 +f 326/945/218 343/1264/339 327/946/219 +f 253/948/184 256/960/185 295/949/185 +f 246/951/216 240/825/216 285/952/216 +f 238/957/7 244/939/7 243/958/7 +f 256/960/185 236/970/185 279/961/185 +f 232/830/7 231/1025/7 280/965/7 +f 236/970/7 256/960/7 255/971/7 +f 284/972/7 269/1265/7 190/973/7 +f 233/974/7 238/957/7 237/959/7 +f 268/976/7 293/1072/7 226/909/7 +f 271/978/188 263/1266/188 262/979/188 +f 209/981/224 217/1267/225 218/982/225 +f 252/984/226 249/1013/7 250/985/7 +f 247/986/223 246/951/216 281/953/216 +f 228/988/179 229/849/179 310/848/179 +f 288/990/185 277/1003/185 234/975/185 +f 248/994/228 245/942/7 246/951/7 +f 262/995/229 261/1268/229 242/996/228 +f 191/831/7 232/830/7 296/966/7 +f 239/823/185 245/942/185 282/944/185 +f 311/1000/179 309/1041/179 219/1001/230 +f 250/985/185 234/975/185 277/1003/185 +f 311/1004/7 215/1269/7 196/1005/7 +f 235/824/216 255/971/216 296/1006/216 +f 230/847/66 273/850/66 280/1011/66 +f 236/970/185 239/823/185 286/999/185 +f 249/1013/7 233/974/7 234/975/7 +f 267/1014/233 259/1270/233 258/1015/233 +f 328/1017/234 344/1098/340 352/874/235 +f 209/1019/236 197/1252/330 185/838/163 +f 220/1021/237 212/1271/238 211/1022/238 +f 232/830/7 304/1249/7 306/1024/7 +f 225/1026/66 224/820/66 338/1027/66 +f 330/1029/239 344/1272/341 328/1030/240 +f 258/1032/242 257/1273/242 254/1033/226 +f 278/1035/7 294/832/7 295/834/7 +f 217/1037/225 337/912/7 335/1038/7 +f 307/1040/7 220/658/237 219/1001/237 +f 237/959/185 243/958/185 284/1042/185 +f 228/917/7 227/841/7 281/843/7 +f 279/1044/66 274/657/66 275/656/66 +f 324/845/243 316/1253/342 302/1046/244 +f 277/1047/66 276/1074/66 224/820/66 +f 291/1051/179 287/875/179 288/937/179 +f 189/1052/247 201/1274/343 260/1053/233 +f 244/939/7 241/1070/228 242/1055/228 +f 218/1039/214 335/1038/179 333/1059/179 +f 299/1061/250 315/1275/344 317/1062/251 +f 260/1066/242 259/1276/242 252/1067/226 +f 289/851/7 290/655/7 274/657/7 +f 245/942/7 239/823/7 240/825/7 +f 285/1069/179 289/851/179 229/849/179 +f 274/657/66 279/1044/66 280/1011/66 +f 241/1070/223 244/939/216 283/941/216 +f 293/1072/7 277/1277/7 225/1073/7 +f 276/1074/7 275/656/7 291/1051/7 +f 235/824/216 280/1007/216 285/952/216 +f 264/968/229 263/1278/229 248/1078/228 +f 286/876/179 290/655/179 289/851/179 +f 337/1279/345 339/929/211 345/928/210 +f 349/1079/254 333/1136/283 335/1080/255 +f 335/1080/255 337/1279/345 345/928/210 +f 338/1027/7 224/820/7 223/822/7 +f 317/1062/256 315/1275/346 298/1082/257 +f 336/1081/179 223/822/179 222/938/179 +f 227/841/7 313/1261/7 298/1085/7 +f 198/839/164 327/1280/347 325/1087/258 +f 343/1088/259 201/1281/343 189/1089/247 +f 344/1091/260 328/1282/260 190/1092/189 +f 336/1283/348 334/1099/268 350/873/263 +f 346/906/199 340/908/201 338/1094/262 +f 338/1094/262 336/1283/348 350/873/263 +f 325/1095/264 327/1137/349 348/1096/265 +f 346/906/7 350/873/7 349/1079/7 +f 330/1097/266 351/872/177 352/874/178 +f 332/1018/200 352/874/235 350/873/263 +f 256/960/7 253/948/226 254/1100/226 +f 283/1101/7 287/1284/7 286/1102/7 +f 257/1103/233 203/1285/276 191/1104/269 +f 192/1106/192 204/1286/191 264/1107/188 +f 278/1045/66 275/656/66 276/1074/66 +f 351/872/270 330/1097/350 329/1109/271 +f 321/867/175 323/903/196 303/905/198 +f 347/1112/274 343/1138/351 326/1113/275 +f 203/1114/276 316/1287/352 300/1115/277 +f 322/902/7 324/845/243 323/903/245 +f 187/864/172 199/1255/332 210/1117/236 +f 345/928/7 348/1096/353 347/1112/278 +f 249/1013/216 252/984/182 267/1119/181 +f 233/974/216 249/1013/216 294/1120/216 +f 333/1122/7 331/852/7 187/854/7 +f 297/1124/279 299/1061/354 318/882/280 +f 243/958/185 242/1055/248 269/1125/217 +f 255/971/216 254/1100/182 265/1126/181 +f 233/974/216 278/1121/216 287/940/216 +f 186/1127/7 325/1288/7 342/1128/7 +f 324/845/167 322/902/194 306/1129/281 +f 320/883/195 317/1062/256 313/1083/168 +f 308/1134/66 230/847/66 231/1012/66 +f 349/1079/254 351/872/270 331/1110/272 +f 347/1112/278 348/1096/353 327/1137/284 +f 199/1139/286 31/1202/286 42/1140/12 +f 204/1142/287 36/1289/287 96/1143/10 +f 264/1144/10 96/1143/10 95/1145/10 +f 263/1146/10 95/1145/10 94/1147/10 +f 197/1149/288 29/1164/288 30/1150/289 +f 198/1151/289 30/1150/289 159/1152/290 +f 259/1154/8 91/1158/8 90/1155/8 +f 260/1157/8 92/1178/8 91/1158/8 +f 36/1160/287 204/1290/287 315/1161/291 +f 315/1161/291 299/1181/298 131/1180/298 +f 131/1180/298 147/1159/291 315/1161/291 +f 210/1141/12 42/1140/12 41/1162/12 +f 209/1163/12 41/1162/12 29/1164/288 +f 212/1165/11 44/1172/11 43/1166/11 +f 302/1168/292 134/1195/292 37/1169/293 +f 207/1171/294 39/1173/294 44/1172/11 +f 205/1170/293 37/1169/293 39/1173/294 +f 33/1175/296 201/1291/296 343/1176/295 +f 343/1176/295 327/1153/290 159/1152/290 +f 159/1152/290 175/1174/295 343/1176/295 +f 201/1177/296 33/1292/296 92/1178/8 +f 206/1179/297 38/1200/297 131/1180/298 +f 162/1183/300 330/1185/300 344/1184/299 +f 344/1184/299 202/1293/302 34/1294/302 +f 34/1294/302 176/1182/299 344/1184/299 +f 330/1185/300 162/1183/300 32/1186/301 +f 258/1156/8 90/1155/8 89/1188/8 +f 262/1148/10 94/1147/10 93/1190/10 +f 261/1191/10 93/1190/10 34/1192/302 +f 134/1195/292 302/1168/292 316/1196/303 +f 316/1196/303 203/1295/304 35/1296/304 +f 35/1296/304 148/1194/303 316/1196/303 +f 257/1189/8 89/1188/8 35/1197/304 +f 208/1199/305 40/1201/305 38/1200/297 +f 211/1167/11 43/1166/11 40/1201/305 +f 200/1187/301 32/1186/301 31/1202/286 +o frame +v -0.125000 0.000000 1.500000 +v -0.125000 3.000000 1.500000 +v -0.125000 0.000000 -1.500000 +v -0.125000 3.000000 -1.500000 +v 0.125000 0.000000 1.500000 +v 0.125000 3.000000 1.500000 +v 0.125000 0.000000 -1.500000 +v 0.125000 3.000000 -1.500000 +v 0.125000 2.937500 0.737027 +v -0.125000 2.937500 0.737027 +v 0.125000 2.857760 -0.997420 +v -0.125000 2.857760 -0.997420 +v 0.125000 2.937500 -0.737027 +v -0.125000 2.937500 -0.737027 +v 0.125000 2.857760 0.997420 +v -0.125000 2.857760 0.997420 +v 0.125000 2.639908 -1.188040 +v -0.125000 2.639908 -1.188040 +v 0.125000 2.342317 -1.257812 +v -0.125000 2.342317 -1.257812 +v 0.125000 2.639908 1.188040 +v -0.125000 2.639908 1.188040 +v 0.125000 0.657683 -1.257812 +v -0.125000 0.657683 -1.257812 +v 0.125000 2.342317 1.257812 +v -0.125000 2.342317 1.257812 +v 0.125000 0.657683 1.257812 +v -0.125000 0.657683 1.257812 +v 0.125000 0.360092 -1.188040 +v -0.125000 0.360092 -1.188040 +v 0.125000 0.360092 1.188040 +v -0.125000 0.360092 1.188040 +v 0.125000 0.142239 0.997420 +v -0.125000 0.142239 0.997420 +v 0.125000 0.142239 -0.997420 +v -0.125000 0.142239 -0.997420 +v 0.125000 0.062500 -0.737027 +v -0.125000 0.062500 -0.737027 +v 0.125000 0.062500 0.737027 +v -0.125000 0.062500 0.737027 +v -0.125000 2.848552 0.726781 +v -0.125000 2.848552 -0.726781 +v 0.125000 2.848552 -0.726781 +v 0.125000 2.780064 -0.958169 +v -0.125000 2.780064 -0.958169 +v 0.125000 2.848552 0.726781 +v 0.125000 2.780064 0.958169 +v -0.125000 2.780064 0.958169 +v 0.125000 2.595050 -1.120056 +v 0.125000 2.330607 -1.179983 +v -0.125000 2.595050 -1.120056 +v -0.125000 2.330607 -1.179983 +v -0.125000 2.595050 1.120056 +v 0.125000 2.595050 1.120056 +v 0.125000 2.330607 1.179983 +v -0.125000 2.330607 1.179983 +v 0.125000 0.669393 -1.179983 +v -0.125000 0.669393 -1.179983 +v -0.125000 0.669393 1.179983 +v 0.125000 0.669393 1.179983 +v 0.125000 0.404949 1.120056 +v -0.125000 0.404949 1.120056 +v 0.125000 0.404949 -1.120056 +v -0.125000 0.404949 -1.120056 +v 0.125000 0.219935 -0.958169 +v -0.125000 0.219935 -0.958169 +v -0.125000 0.219935 0.958169 +v 0.125000 0.219935 0.958169 +v 0.125000 0.151448 -0.726781 +v -0.125000 0.151448 -0.726781 +v -0.125000 0.151448 0.726781 +v 0.125000 0.151448 0.726781 +v -0.165200 2.915023 0.725503 +v -0.165200 2.915023 -0.725503 +v 0.165200 2.912970 -0.724451 +v 0.165200 2.834591 -0.980400 +v -0.165200 2.836530 -0.981824 +v 0.165200 2.912970 0.724451 +v 0.165200 2.834591 0.980400 +v -0.165200 2.836530 0.981824 +v 0.165200 2.620457 -1.167768 +v 0.165200 2.327943 -1.236349 +v -0.165200 2.622084 -1.169464 +v -0.165200 2.329146 -1.238145 +v -0.165200 2.622084 1.169464 +v 0.165200 2.620457 1.167768 +v 0.165200 2.327943 1.236349 +v -0.165200 2.329146 1.238145 +v 0.165200 0.672056 -1.236349 +v -0.165200 0.670854 -1.238145 +v -0.165200 0.670854 1.238145 +v 0.165200 0.672056 1.236349 +v 0.165200 0.379543 1.167768 +v -0.165200 0.377916 1.169464 +v 0.165200 0.379543 -1.167768 +v -0.165200 0.377916 -1.169464 +v 0.165200 0.165408 -0.980400 +v -0.165200 0.163470 -0.981824 +v -0.165200 0.163470 0.981824 +v 0.165200 0.165408 0.980400 +v 0.165200 0.087030 -0.724451 +v -0.165200 0.084977 -0.725503 +v -0.165200 0.084977 0.725503 +v 0.165200 0.087030 0.724451 +v 0.165200 2.848552 -0.726781 +v 0.165200 0.669393 -1.179983 +v 0.165200 2.330607 -1.179983 +v -0.165200 0.219935 -0.958169 +v -0.165200 0.151448 -0.726781 +v -0.165200 2.848552 0.726781 +v -0.165200 2.848552 -0.726781 +v -0.165200 2.330607 1.179983 +v -0.165200 2.595050 1.120056 +v 0.165200 0.151448 -0.726781 +v 0.165200 0.219935 -0.958169 +v 0.165200 2.330607 1.179983 +v 0.165200 0.404949 1.120056 +v 0.165200 0.219935 0.958169 +v 0.165200 2.780064 0.958169 +v 0.165200 2.595050 1.120056 +v 0.165200 2.780064 -0.958169 +v -0.165200 2.780064 -0.958169 +v 0.165200 2.848552 0.726781 +v -0.165200 2.780064 0.958169 +v 0.165200 2.595050 -1.120056 +v -0.165200 2.595050 -1.120056 +v -0.165200 2.330607 -1.179983 +v -0.165200 0.669393 -1.179983 +v -0.165200 0.669393 1.179983 +v 0.165200 0.669393 1.179983 +v -0.165200 0.404949 1.120056 +v 0.165200 0.404949 -1.120056 +v -0.165200 0.404949 -1.120056 +v -0.165200 0.219935 0.958169 +v -0.165200 0.151448 0.726781 +v 0.165200 0.151448 0.726781 +v 0.230582 0.420818 -1.368763 +v 0.080675 0.420818 -1.368763 +v 0.080675 0.577552 -1.368763 +v 0.230582 0.577552 -1.368763 +v 0.080675 0.559258 -1.358201 +v 0.230582 0.559258 -1.358201 +v 0.080675 0.559258 -1.337076 +v 0.230582 0.559258 -1.337076 +v 0.080675 0.577552 -1.326513 +v 0.230582 0.577552 -1.326513 +v 0.080675 0.595847 -1.337076 +v 0.230582 0.595847 -1.337076 +v 0.080675 0.595847 -1.358201 +v 0.230582 0.595847 -1.358201 +v 0.080675 0.402524 -1.358201 +v 0.230582 0.402524 -1.358201 +v 0.080675 0.402524 -1.337076 +v 0.230582 0.402524 -1.337076 +v 0.080675 0.420819 -1.326513 +v 0.230582 0.420819 -1.326513 +v 0.080675 0.439113 -1.337076 +v 0.230582 0.439113 -1.337076 +v 0.080675 0.439113 -1.358201 +v 0.230582 0.439113 -1.358201 +v 0.198458 0.382969 -1.310873 +v 0.198458 0.398839 -1.286747 +v 0.198458 0.597258 -1.286747 +v 0.198458 0.613127 -1.310873 +v 0.198458 0.398839 -1.408400 +v 0.198458 0.382969 -1.384274 +v 0.198458 0.613127 -1.384274 +v 0.198458 0.597258 -1.408400 +v 0.218101 0.398839 -1.316452 +v 0.218101 0.382969 -1.340579 +v 0.218101 0.613127 -1.340579 +v 0.218101 0.597258 -1.316452 +v 0.218101 0.382969 -1.354568 +v 0.218101 0.398839 -1.378695 +v 0.218101 0.597258 -1.378695 +v 0.218101 0.613127 -1.354568 +v 0.117133 0.382969 -1.306907 +v 0.117133 0.398839 -1.286747 +v 0.117133 0.597258 -1.286747 +v 0.117133 0.613127 -1.306907 +v 0.117133 0.398839 -1.408400 +v 0.117133 0.382969 -1.388240 +v 0.117133 0.613127 -1.388240 +v 0.117133 0.597258 -1.408400 +v 0.164418 0.398839 -1.288175 +v 0.164418 0.382969 -1.308335 +v 0.164418 0.613127 -1.308335 +v 0.164418 0.597257 -1.288175 +v 0.164418 0.382969 -1.386812 +v 0.164418 0.398839 -1.406973 +v 0.164418 0.597257 -1.406973 +v 0.164418 0.613127 -1.386812 +v 0.230582 2.427027 -1.368763 +v 0.080675 2.427027 -1.368763 +v 0.080675 2.583760 -1.368763 +v 0.230582 2.583760 -1.368763 +v 0.080675 2.565465 -1.358201 +v 0.230582 2.565465 -1.358201 +v 0.080675 2.565465 -1.337076 +v 0.230582 2.565465 -1.337076 +v 0.080675 2.583760 -1.326513 +v 0.230582 2.583760 -1.326513 +v 0.080675 2.602055 -1.337076 +v 0.230582 2.602055 -1.337076 +v 0.080675 2.602055 -1.358201 +v 0.230582 2.602055 -1.358201 +v 0.080675 2.408732 -1.358201 +v 0.230582 2.408732 -1.358201 +v 0.080675 2.408732 -1.337076 +v 0.230582 2.408732 -1.337076 +v 0.080675 2.427027 -1.326513 +v 0.230582 2.427027 -1.326513 +v 0.080675 2.445322 -1.337076 +v 0.230582 2.445322 -1.337076 +v 0.080675 2.445322 -1.358201 +v 0.230582 2.445322 -1.358201 +v 0.198458 2.389177 -1.310873 +v 0.198458 2.405047 -1.286747 +v 0.198458 2.603466 -1.286747 +v 0.198458 2.619336 -1.310873 +v 0.198458 2.405047 -1.408400 +v 0.198458 2.389177 -1.384273 +v 0.198458 2.619336 -1.384273 +v 0.198458 2.603466 -1.408400 +v 0.218101 2.405047 -1.316452 +v 0.218101 2.389177 -1.340578 +v 0.218101 2.619336 -1.340578 +v 0.218101 2.603466 -1.316452 +v 0.218101 2.389177 -1.354568 +v 0.218101 2.405047 -1.378694 +v 0.218101 2.603466 -1.378694 +v 0.218101 2.619336 -1.354568 +v 0.117133 2.389177 -1.306907 +v 0.117133 2.405047 -1.286747 +v 0.117133 2.603466 -1.286747 +v 0.117133 2.619336 -1.306907 +v 0.117133 2.405047 -1.408400 +v 0.117133 2.389177 -1.388240 +v 0.117133 2.619336 -1.388240 +v 0.117133 2.603466 -1.408400 +v 0.164418 2.405047 -1.288174 +v 0.164418 2.389177 -1.308335 +v 0.164418 2.619336 -1.308335 +v 0.164418 2.603466 -1.288174 +v 0.164418 2.389177 -1.386812 +v 0.164418 2.405047 -1.406972 +v 0.164418 2.603466 -1.406972 +v 0.164418 2.619336 -1.386812 +vt 0.523106 0.381508 +vt 0.545208 0.377541 +vt 0.545208 0.381508 +vt 0.546975 0.384195 +vt 0.545208 0.388441 +vt 0.801271 0.940418 +vt 0.796004 0.931517 +vt 0.801271 0.931358 +vt 0.521338 0.385754 +vt 0.519150 0.380887 +vt 0.521338 0.384195 +vt 0.767060 0.321658 +vt 0.768828 0.324345 +vt 0.767060 0.335209 +vt 0.523105 0.392408 +vt 0.545208 0.392408 +vt 0.772134 0.929272 +vt 0.794236 0.924002 +vt 0.794236 0.929272 +vt 0.794236 0.942505 +vt 0.765099 0.940418 +vt 0.770366 0.931517 +vt 0.770366 0.940259 +vt 0.794236 0.947774 +vt 0.772134 0.942505 +vt 0.811367 0.391021 +vt 0.809329 0.387491 +vt 0.813405 0.387491 +vt 0.793185 0.331070 +vt 0.776487 0.333423 +vt 0.776487 0.331070 +vt 0.930721 0.719067 +vt 0.914023 0.721420 +vt 0.914023 0.719067 +vt 0.793185 0.333423 +vt 0.776487 0.335777 +vt 0.930721 0.716713 +vt 0.914023 0.716713 +vt 0.793185 0.321658 +vt 0.776487 0.324011 +vt 0.776487 0.321658 +vt 0.930721 0.723773 +vt 0.914023 0.726126 +vt 0.914023 0.723773 +vt 0.930721 0.728479 +vt 0.914023 0.730832 +vt 0.914023 0.728479 +vt 0.793185 0.324011 +vt 0.776487 0.326364 +vt 0.834837 0.386315 +vt 0.836875 0.387491 +vt 0.836875 0.389844 +vt 0.930721 0.726126 +vt 0.793185 0.326364 +vt 0.776487 0.328717 +vt 0.930721 0.721420 +vt 0.793185 0.328717 +vt 0.547515 0.390166 +vt 0.547515 0.386200 +vt 0.520798 0.390166 +vt 0.523105 0.388441 +vt 0.547515 0.379783 +vt 0.520798 0.379783 +vt 0.520798 0.383750 +vt 0.797093 0.947706 +vt 0.797093 0.942437 +vt 0.769277 0.947706 +vt 0.772134 0.947774 +vt 0.797093 0.924070 +vt 0.769277 0.924070 +vt 0.769277 0.929339 +vt 0.546975 0.385754 +vt 0.549163 0.380886 +vt 0.549163 0.389063 +vt 0.209594 0.970120 +vt 0.205627 0.948018 +vt 0.209594 0.948018 +vt 0.212281 0.946250 +vt 0.216527 0.948018 +vt 0.666628 0.910555 +vt 0.657727 0.915822 +vt 0.657568 0.910555 +vt 0.213840 0.971888 +vt 0.208972 0.974076 +vt 0.212281 0.971888 +vt 0.580692 0.377541 +vt 0.582460 0.380228 +vt 0.580692 0.391092 +vt 0.220494 0.970120 +vt 0.220494 0.948018 +vt 0.655481 0.939692 +vt 0.650212 0.917590 +vt 0.655482 0.917590 +vt 0.668715 0.917590 +vt 0.666628 0.946727 +vt 0.657727 0.941460 +vt 0.666469 0.941460 +vt 0.673984 0.939692 +vt 0.673984 0.917590 +vt 0.821064 0.387491 +vt 0.823102 0.386315 +vt 0.825140 0.387491 +vt 0.679555 0.971085 +vt 0.677202 0.954387 +vt 0.679555 0.954387 +vt 0.738611 0.969943 +vt 0.721913 0.972296 +vt 0.721913 0.969943 +vt 0.677202 0.971085 +vt 0.674849 0.954387 +vt 0.738611 0.967590 +vt 0.721913 0.967590 +vt 0.688968 0.971085 +vt 0.686615 0.954387 +vt 0.688968 0.954387 +vt 0.738611 0.974649 +vt 0.721913 0.977002 +vt 0.721913 0.974649 +vt 0.738611 0.979355 +vt 0.721913 0.981709 +vt 0.721913 0.979355 +vt 0.686615 0.971085 +vt 0.684261 0.954387 +vt 0.562085 0.875993 +vt 0.564123 0.877169 +vt 0.564123 0.879522 +vt 0.738611 0.977002 +vt 0.684261 0.971085 +vt 0.681908 0.954387 +vt 0.738611 0.972296 +vt 0.681908 0.971085 +vt 0.218252 0.945711 +vt 0.214285 0.945711 +vt 0.218252 0.972427 +vt 0.216527 0.970120 +vt 0.207869 0.945711 +vt 0.207869 0.972427 +vt 0.211835 0.972427 +vt 0.673916 0.914733 +vt 0.668647 0.914733 +vt 0.673916 0.942549 +vt 0.668715 0.939692 +vt 0.650280 0.914733 +vt 0.650280 0.942549 +vt 0.655549 0.942549 +vt 0.213840 0.946250 +vt 0.208972 0.944062 +vt 0.217149 0.944062 +vt 0.523106 0.377541 +vt 0.796004 0.940259 +vt 0.519150 0.389063 +vt 0.768828 0.332521 +vt 0.744958 0.335209 +vt 0.744958 0.321658 +vt 0.743190 0.332521 +vt 0.743190 0.324345 +vt 0.772134 0.924002 +vt 0.765099 0.931358 +vt 0.813405 0.389844 +vt 0.809329 0.389844 +vt 0.811367 0.386315 +vt 0.793185 0.335777 +vt 0.930721 0.730832 +vt 0.834837 0.391021 +vt 0.832799 0.389844 +vt 0.832799 0.387491 +vt 0.520798 0.386200 +vt 0.547515 0.383750 +vt 0.769277 0.942437 +vt 0.797093 0.929339 +vt 0.205627 0.970120 +vt 0.666469 0.915822 +vt 0.217148 0.974075 +vt 0.582460 0.388405 +vt 0.558590 0.391092 +vt 0.558590 0.377541 +vt 0.556823 0.388405 +vt 0.556823 0.380228 +vt 0.650212 0.939692 +vt 0.657568 0.946727 +vt 0.825140 0.389844 +vt 0.823102 0.391021 +vt 0.821064 0.389844 +vt 0.674849 0.971085 +vt 0.738611 0.981709 +vt 0.562085 0.880699 +vt 0.560047 0.879522 +vt 0.560047 0.877169 +vt 0.214285 0.972427 +vt 0.211836 0.945711 +vt 0.668647 0.942549 +vt 0.655549 0.914733 +vt 0.401359 0.003830 +vt 0.408321 0.088818 +vt 0.401361 0.338004 +vt 0.393699 0.365850 +vt 0.365852 0.031678 +vt 0.393699 0.031678 +vt 0.280864 0.038640 +vt 0.031677 0.031680 +vt 0.031677 0.365850 +vt 0.003830 0.031680 +vt 0.031677 0.003832 +vt 0.365852 0.003830 +vt 0.365852 0.393698 +vt 0.365852 0.365850 +vt 0.841888 0.485825 +vt 0.846366 0.647738 +vt 0.841888 0.647738 +vt 0.769577 0.647738 +vt 0.765099 0.485825 +vt 0.769577 0.485825 +vt 0.697356 0.474001 +vt 0.708945 0.447031 +vt 0.702588 0.475501 +vt 0.743270 0.076473 +vt 0.748362 0.239849 +vt 0.743190 0.241352 +vt 0.116663 0.358888 +vt 0.814040 0.485825 +vt 0.809562 0.458945 +vt 0.814040 0.458945 +vt 0.797425 0.485825 +vt 0.801903 0.647738 +vt 0.797425 0.647738 +vt 0.628662 0.637787 +vt 0.640527 0.664610 +vt 0.635711 0.667109 +vt 0.754815 0.268328 +vt 0.750109 0.270703 +vt 0.841888 0.458945 +vt 0.846366 0.485825 +vt 0.797425 0.458945 +vt 0.801902 0.485825 +vt 0.702448 0.637376 +vt 0.697276 0.638880 +vt 0.560135 0.473269 +vt 0.571963 0.446453 +vt 0.565468 0.474876 +vt 0.728569 0.253018 +vt 0.735531 0.003830 +vt 0.735531 0.338004 +vt 0.814040 0.647738 +vt 0.809562 0.485825 +vt 0.765099 0.458945 +vt 0.769577 0.458945 +vt 0.586568 0.692218 +vt 0.571913 0.664610 +vt 0.590826 0.688728 +vt 0.769577 0.702002 +vt 0.765099 0.674618 +vt 0.769577 0.674618 +vt 0.841888 0.674618 +vt 0.814040 0.702002 +vt 0.814040 0.674618 +vt 0.841888 0.702002 +vt 0.814040 0.732206 +vt 0.814040 0.431561 +vt 0.841888 0.401357 +vt 0.841888 0.431561 +vt 0.797425 0.674618 +vt 0.797425 0.702002 +vt 0.878810 0.196531 +vt 0.850962 0.381573 +vt 0.850963 0.196531 +vt 0.769577 0.732206 +vt 0.797425 0.732206 +vt 0.797425 0.431561 +vt 0.769577 0.431561 +vt 0.797425 0.401357 +vt 0.769577 0.401357 +vt 0.850962 0.188872 +vt 0.878810 0.003830 +vt 0.878810 0.188872 +vt 0.769214 0.021788 +vt 0.754859 0.049503 +vt 0.750154 0.047134 +vt 0.801903 0.702002 +vt 0.769193 0.296049 +vt 0.773358 0.292689 +vt 0.801903 0.458945 +vt 0.586590 0.418847 +vt 0.567148 0.443960 +vt 0.765099 0.431561 +vt 0.797900 0.313998 +vt 0.801475 0.310034 +vt 0.801903 0.431561 +vt 0.615740 0.401357 +vt 0.590849 0.422333 +vt 0.765099 0.401357 +vt 0.797897 0.003830 +vt 0.773379 0.025144 +vt 0.801903 0.732206 +vt 0.615746 0.709695 +vt 0.619388 0.705598 +vt 0.765099 0.702002 +vt 0.979972 0.974174 +vt 0.974896 0.788118 +vt 0.979972 0.786518 +vt 0.883288 0.381573 +vt 0.878810 0.381573 +vt 0.572625 0.636718 +vt 0.578156 0.662994 +vt 0.634082 0.474876 +vt 0.641239 0.636718 +vt 0.633938 0.636178 +vt 0.955972 0.972704 +vt 0.949494 0.787822 +vt 0.955973 0.787985 +vt 0.565324 0.636178 +vt 0.710061 0.475048 +vt 0.931894 0.505372 +vt 0.925415 0.320490 +vt 0.931894 0.320653 +vt 0.748502 0.077974 +vt 0.755924 0.240301 +vt 0.646770 0.662995 +vt 0.989892 0.128323 +vt 0.996170 0.313071 +vt 0.989892 0.312775 +vt 0.761304 0.266651 +vt 0.710010 0.637828 +vt 0.755560 0.707562 +vt 0.731650 0.685815 +vt 0.757439 0.701378 +vt 0.572689 0.474336 +vt 0.659463 0.422333 +vt 0.689616 0.411717 +vt 0.663366 0.426670 +vt 0.594728 0.684386 +vt 0.646819 0.448064 +vt 0.640577 0.446453 +vt 0.974896 0.972573 +vt 0.968618 0.787822 +vt 0.641303 0.474336 +vt 0.755975 0.077521 +vt 0.621002 0.699326 +vt 0.708900 0.665856 +vt 0.715389 0.664178 +vt 0.801472 0.007790 +vt 0.777586 0.029541 +vt 0.659440 0.688728 +vt 0.689617 0.699326 +vt 0.688002 0.705598 +vt 0.621002 0.411717 +vt 0.594752 0.426670 +vt 0.755558 0.405318 +vt 0.731671 0.427068 +vt 0.727464 0.422672 +vt 0.777564 0.288288 +vt 0.803354 0.303850 +vt 0.663342 0.684386 +vt 0.578204 0.448064 +vt 0.715432 0.448705 +vt 0.727443 0.690216 +vt 0.761346 0.051177 +vt 0.560047 0.637787 +vt 0.628749 0.473269 +vt 0.765099 0.647738 +vt 0.846366 0.674618 +vt 0.567097 0.667109 +vt 0.801903 0.674618 +vt 0.809562 0.647738 +vt 0.704195 0.668230 +vt 0.846366 0.431561 +vt 0.684360 0.709695 +vt 0.809562 0.401357 +vt 0.814040 0.401357 +vt 0.751982 0.401357 +vt 0.723300 0.419316 +vt 0.846366 0.458945 +vt 0.655182 0.692219 +vt 0.809562 0.431561 +vt 0.704240 0.444662 +vt 0.809562 0.674618 +vt 0.723279 0.693576 +vt 0.846366 0.702002 +vt 0.655204 0.418847 +vt 0.635762 0.443960 +vt 0.846366 0.732206 +vt 0.841888 0.732206 +vt 0.684355 0.401357 +vt 0.809562 0.702002 +vt 0.751986 0.711526 +vt 0.846484 0.003830 +vt 0.850963 0.003830 +vt 0.984815 0.126722 +vt 0.984816 0.314376 +vt 0.883288 0.188872 +vt 0.936879 0.506839 +vt 0.936879 0.319186 +vt 0.846484 0.196531 +vt 0.960957 0.974171 +vt 0.960957 0.786518 +vt 0.662272 0.030807 +vt 0.474619 0.030807 +vt 0.441471 0.303256 +vt 0.474619 0.311027 +vt 0.417204 0.282023 +vt 0.441470 0.038579 +vt 0.417203 0.059813 +vt 0.408322 0.253018 +vt 0.338874 0.292590 +vt 0.338874 0.104938 +vt 0.066426 0.071790 +vt 0.058654 0.104939 +vt 0.087659 0.047523 +vt 0.331102 0.071789 +vt 0.309869 0.047522 +vt 0.116664 0.038641 +vt 0.003830 0.365850 +vt 0.031677 0.393698 +vt 0.058654 0.292591 +vt 0.331102 0.325739 +vt 0.309869 0.350006 +vt 0.066426 0.325740 +vt 0.087659 0.350006 +vt 0.280864 0.358888 +vt 0.662272 0.311027 +vt 0.695421 0.038579 +vt 0.719687 0.059812 +vt 0.695421 0.303255 +vt 0.719687 0.282022 +vt 0.728569 0.088816 +vt 0.801903 0.401357 +vt 0.619384 0.405449 +vt 0.765099 0.732206 +vt 0.883288 0.196531 +vt 0.949494 0.972866 +vt 0.925415 0.505535 +vt 0.996170 0.128027 +vt 0.687998 0.405449 +vt 0.968617 0.972870 +vt 0.803354 0.013970 +vt 0.757439 0.411498 +vt 0.846366 0.401357 +vt 0.809562 0.732206 +vt 0.846484 0.188872 +vt 0.883288 0.003830 +vt 0.846484 0.381573 +vn 0.8341 0.0000 0.5516 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.8341 0.0000 -0.5516 +vn 0.0302 0.0000 0.9995 +vn 0.0302 0.0000 -0.9995 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 0.5000 0.8660 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.5000 -0.8660 +vn 0.6392 -0.6425 -0.4226 +vn 0.6392 0.6425 -0.4226 +vn 0.6392 -0.6425 0.4226 +vn 0.6391 0.6425 0.4226 +vn 0.0187 -0.7856 -0.6184 +vn 0.0187 0.7856 -0.6184 +vn 0.0187 -0.7856 0.6184 +vn 0.0187 0.7856 0.6184 +vn 0.6392 0.6425 0.4227 +vn 0.6391 -0.6425 0.4226 +vn 0.6392 0.6425 0.4226 +vn 0.6391 -0.6425 0.4227 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.9897 0.1434 +vn 0.0000 -0.9897 -0.1434 +vn 0.0000 0.9897 -0.1434 +vn 0.0000 0.9897 0.1434 +vn -0.5135 0.8467 -0.1398 +vn -0.5473 0.7055 -0.4502 +vn -0.5093 0.8532 -0.1126 +vn -0.5135 -0.8467 0.1398 +vn -0.5093 -0.8532 -0.1126 +vn -0.5135 -0.8467 -0.1398 +vn 0.0000 -0.9589 0.2838 +vn 0.0000 -0.8420 0.5395 +vn 0.5469 0.8259 -0.1371 +vn 0.5809 0.6864 -0.4376 +vn 0.5811 0.6808 -0.4458 +vn -0.5473 -0.7055 -0.4502 +vn -0.5475 -0.7002 -0.4582 +vn 0.0000 0.8420 0.5395 +vn -0.5093 0.8532 0.1126 +vn -0.5135 0.8467 0.1398 +vn 0.5469 -0.8259 -0.1371 +vn 0.5809 -0.6864 -0.4376 +vn 0.5424 -0.8330 -0.1090 +vn 0.0000 0.9589 0.2838 +vn 0.5589 -0.3954 0.7289 +vn 0.5809 -0.6864 0.4376 +vn 0.5529 -0.3591 0.7519 +vn 0.0000 0.4536 -0.8912 +vn 0.0000 0.6585 -0.7526 +vn 0.0000 0.8420 -0.5395 +vn 0.0000 -0.8420 -0.5395 +vn 0.0000 -0.4536 -0.8912 +vn 0.0000 -0.1112 -0.9938 +vn 0.0000 -0.4536 0.8912 +vn 0.0000 -0.1112 0.9938 +vn 0.0000 0.1112 -0.9938 +vn 0.0000 0.4536 0.8912 +vn 0.0000 0.1112 0.9938 +vn -0.5253 -0.4049 0.7484 +vn -0.5473 -0.7055 0.4502 +vn -0.5475 -0.7002 0.4582 +vn -0.5253 -0.4049 -0.7484 +vn -0.5198 -0.3697 -0.7702 +vn 0.0000 0.6585 0.7526 +vn 0.5589 -0.3954 -0.7289 +vn 0.5811 -0.6808 -0.4458 +vn -0.4669 -0.1159 -0.8767 +vn -0.4604 -0.0861 -0.8835 +vn 0.4994 -0.1145 -0.8588 +vn 0.5529 -0.3591 -0.7519 +vn -0.4669 -0.1159 0.8767 +vn -0.5198 -0.3697 0.7702 +vn 0.4994 -0.1145 0.8588 +vn 0.4924 -0.0833 0.8664 +vn 0.4924 0.0833 0.8664 +vn 0.4994 0.1145 0.8588 +vn 0.5424 -0.8330 0.1090 +vn 0.5469 -0.8259 0.1371 +vn 0.5469 0.8259 0.1371 +vn 0.5424 0.8330 -0.1090 +vn 0.0000 -0.9589 -0.2838 +vn 0.5811 -0.6808 0.4458 +vn 0.5809 0.6864 0.4376 +vn 0.5424 0.8330 0.1090 +vn 0.0000 0.9589 -0.2838 +vn -0.5093 -0.8532 0.1126 +vn -0.5473 0.7055 0.4502 +vn -0.5475 0.7002 0.4582 +vn 0.4994 0.1145 -0.8588 +vn 0.5529 0.3591 -0.7519 +vn 0.4924 0.0833 -0.8664 +vn -0.4669 0.1159 -0.8767 +vn -0.5198 0.3697 -0.7702 +vn -0.5253 0.4049 -0.7484 +vn 0.0000 -0.6585 0.7526 +vn 0.5589 0.3954 -0.7289 +vn -0.5475 0.7002 -0.4582 +vn 0.0000 -0.6585 -0.7526 +vn -0.5253 0.4049 0.7484 +vn -0.5198 0.3697 0.7702 +vn 0.5589 0.3954 0.7289 +vn 0.5811 0.6808 0.4458 +vn 0.5529 0.3591 0.7519 +vn -0.4669 0.1159 0.8767 +vn -0.4604 0.0861 0.8835 +vn 0.4924 -0.0833 -0.8664 +vn -0.4605 0.0861 -0.8835 +vn -0.4605 -0.0861 0.8835 +s off +f 812/1297/355 802/1298/355 809/1299/355 +f 809/1299/356 810/1300/356 814/1301/356 +f 822/1302/357 826/1303/357 817/1304/357 +f 816/1305/358 804/1306/358 811/1307/358 +f 805/1308/359 806/1309/359 802/1310/359 +f 808/1311/360 814/1301/360 805/1312/360 +f 828/1313/361 818/1314/361 825/1315/361 +f 825/1315/356 826/1303/356 830/1316/356 +f 823/1317/358 827/1318/358 832/1319/358 +f 821/1320/362 831/1321/362 830/1316/362 +f 777/1322/356 798/1323/356 794/1324/356 +f 780/1325/363 781/1326/363 779/1327/363 +f 796/1328/364 797/1329/364 795/1330/364 +f 782/1331/357 783/1332/357 781/1326/357 +f 794/1333/365 795/1330/365 793/1334/365 +f 784/1335/365 785/1336/365 783/1337/365 +f 800/1338/366 778/1339/366 799/1340/366 +f 792/1341/357 793/1342/357 791/1343/357 +f 786/1344/364 787/1345/364 785/1336/364 +f 788/1346/356 786/1347/356 784/1348/356 +f 777/1349/363 791/1343/363 778/1339/363 +f 788/1350/358 789/1351/358 787/1345/358 +f 798/1352/358 799/1340/358 797/1329/358 +f 790/1353/366 779/1327/366 789/1351/366 +f 806/1354/367 814/1301/367 813/1355/367 +f 807/1356/368 815/1357/368 808/1311/368 +f 801/1358/369 809/1299/369 802/1298/369 +f 804/1359/370 812/1297/370 811/1360/370 +f 822/1361/371 830/1316/371 829/1362/371 +f 823/1363/372 831/1321/372 824/1364/372 +f 817/1365/373 825/1315/373 818/1314/373 +f 820/1366/374 828/1313/374 827/1367/374 +f 813/1368/357 801/1369/357 806/1370/357 +f 868/1371/355 858/1372/355 865/1373/355 +f 865/1373/356 866/1374/356 870/1375/356 +f 878/1376/357 882/1377/357 873/1378/357 +f 872/1379/358 860/1380/358 867/1381/358 +f 861/1382/359 862/1383/359 858/1384/359 +f 864/1385/360 870/1375/360 861/1386/360 +f 884/1387/361 874/1388/361 881/1389/361 +f 881/1389/356 882/1377/356 886/1390/356 +f 879/1391/358 883/1392/358 888/1393/358 +f 880/1394/362 886/1390/362 877/1395/362 +f 854/1396/356 852/1397/356 850/1398/356 +f 836/1399/363 837/1400/363 835/1401/363 +f 852/1402/364 853/1403/364 851/1404/364 +f 838/1405/357 839/1406/357 837/1400/357 +f 850/1407/365 851/1404/365 849/1408/365 +f 840/1409/365 841/1410/365 839/1411/365 +f 856/1412/366 834/1413/366 855/1414/366 +f 848/1415/357 849/1416/357 847/1417/357 +f 842/1418/364 843/1419/364 841/1410/364 +f 844/1420/356 842/1421/356 840/1422/356 +f 833/1423/363 847/1417/363 834/1413/363 +f 844/1424/358 845/1425/358 843/1419/358 +f 854/1426/358 855/1414/358 853/1403/358 +f 846/1427/366 835/1401/366 845/1425/366 +f 862/1428/367 870/1375/367 869/1429/367 +f 863/1430/368 871/1431/368 864/1385/368 +f 857/1432/369 865/1373/369 858/1372/369 +f 860/1433/375 868/1371/375 867/1434/375 +f 878/1435/371 886/1390/371 885/1436/371 +f 879/1437/372 887/1438/372 880/1394/372 +f 873/1439/373 881/1389/373 874/1388/373 +f 876/1440/374 884/1387/374 883/1441/374 +f 869/1442/357 857/1443/357 862/1444/357 +f 812/1297/355 803/1445/355 802/1298/355 +f 810/1300/356 813/1368/356 814/1301/356 +f 814/1301/356 815/1357/356 812/1297/356 +f 815/1357/356 816/1305/356 812/1297/356 +f 816/1305/356 811/1307/356 812/1297/356 +f 812/1297/356 809/1299/356 814/1301/356 +f 822/1302/357 829/1446/357 826/1303/357 +f 816/1305/358 807/1447/358 804/1306/358 +f 806/1309/359 801/1448/359 802/1310/359 +f 802/1310/359 803/1449/359 808/1450/359 +f 803/1449/359 804/1451/359 808/1450/359 +f 804/1451/359 807/1452/359 808/1450/359 +f 808/1450/359 805/1308/359 802/1310/359 +f 808/1311/360 815/1357/360 814/1301/360 +f 828/1313/361 819/1453/361 818/1314/361 +f 826/1303/356 829/1446/356 830/1316/356 +f 830/1316/356 831/1321/356 828/1313/356 +f 831/1321/356 832/1319/356 828/1313/356 +f 832/1319/356 827/1318/356 828/1313/356 +f 828/1313/356 825/1315/356 830/1316/356 +f 823/1317/358 820/1454/358 827/1318/358 +f 821/1320/362 824/1364/362 831/1321/362 +f 794/1324/356 792/1455/356 777/1322/356 +f 777/1322/356 800/1456/356 798/1323/356 +f 798/1323/356 796/1457/356 794/1324/356 +f 780/1325/363 782/1331/363 781/1326/363 +f 796/1328/364 798/1352/364 797/1329/364 +f 782/1331/357 784/1458/357 783/1332/357 +f 794/1333/365 796/1328/365 795/1330/365 +f 784/1335/365 786/1344/365 785/1336/365 +f 800/1338/366 777/1349/366 778/1339/366 +f 792/1341/357 794/1459/357 793/1342/357 +f 786/1344/364 788/1350/364 787/1345/364 +f 784/1348/356 782/1460/356 788/1346/356 +f 782/1460/356 780/1461/356 788/1346/356 +f 780/1461/356 790/1462/356 788/1346/356 +f 777/1349/363 792/1341/363 791/1343/363 +f 788/1350/358 790/1353/358 789/1351/358 +f 798/1352/358 800/1338/358 799/1340/358 +f 790/1353/366 780/1325/366 779/1327/366 +f 806/1354/367 805/1312/367 814/1301/367 +f 807/1356/368 816/1463/368 815/1357/368 +f 801/1358/376 810/1464/376 809/1299/376 +f 804/1359/377 803/1445/377 812/1297/377 +f 822/1361/371 821/1320/371 830/1316/371 +f 823/1363/372 832/1465/372 831/1321/372 +f 817/1365/373 826/1466/373 825/1315/373 +f 820/1366/374 819/1453/374 828/1313/374 +f 813/1368/357 810/1300/357 801/1369/357 +f 868/1371/355 859/1467/355 858/1372/355 +f 866/1374/356 869/1442/356 870/1375/356 +f 870/1375/356 871/1431/356 868/1371/356 +f 871/1431/356 872/1379/356 868/1371/356 +f 872/1379/356 867/1381/356 868/1371/356 +f 868/1371/356 865/1373/356 870/1375/356 +f 878/1376/357 885/1468/357 882/1377/357 +f 872/1379/358 863/1469/358 860/1380/358 +f 862/1383/359 857/1470/359 858/1384/359 +f 858/1384/359 859/1471/359 864/1472/359 +f 859/1471/359 860/1473/359 864/1472/359 +f 860/1473/359 863/1474/359 864/1472/359 +f 864/1472/359 861/1382/359 858/1384/359 +f 864/1385/360 871/1431/360 870/1375/360 +f 884/1387/361 875/1475/361 874/1388/361 +f 882/1377/356 885/1468/356 886/1390/356 +f 886/1390/356 887/1438/356 884/1387/356 +f 887/1438/356 888/1393/356 884/1387/356 +f 888/1393/356 883/1392/356 884/1387/356 +f 884/1387/356 881/1389/356 886/1390/356 +f 879/1391/358 876/1476/358 883/1392/358 +f 880/1394/362 887/1438/362 886/1390/362 +f 850/1398/356 848/1477/356 854/1396/356 +f 848/1477/356 833/1478/356 854/1396/356 +f 833/1478/356 856/1479/356 854/1396/356 +f 836/1399/363 838/1405/363 837/1400/363 +f 852/1402/364 854/1426/364 853/1403/364 +f 838/1405/357 840/1480/357 839/1406/357 +f 850/1407/365 852/1402/365 851/1404/365 +f 840/1409/365 842/1418/365 841/1410/365 +f 856/1412/366 833/1423/366 834/1413/366 +f 848/1415/357 850/1481/357 849/1416/357 +f 842/1418/364 844/1424/364 843/1419/364 +f 840/1422/356 838/1482/356 844/1420/356 +f 838/1482/356 836/1483/356 844/1420/356 +f 836/1483/356 846/1484/356 844/1420/356 +f 833/1423/363 848/1415/363 847/1417/363 +f 844/1424/358 846/1427/358 845/1425/358 +f 854/1426/358 856/1412/358 855/1414/358 +f 846/1427/366 836/1399/366 835/1401/366 +f 862/1428/367 861/1386/367 870/1375/367 +f 863/1430/368 872/1485/368 871/1431/368 +f 857/1432/378 866/1486/378 865/1373/378 +f 860/1433/375 859/1467/375 868/1371/375 +f 878/1435/371 877/1395/371 886/1390/371 +f 879/1437/372 888/1487/372 887/1438/372 +f 873/1439/373 882/1488/373 881/1389/373 +f 876/1440/374 875/1475/374 884/1387/374 +f 869/1442/357 866/1374/357 857/1443/357 +s 1 +f 641/1489/359 680/1490/359 643/1491/359 +f 644/1492/379 647/1493/379 643/1494/379 +f 647/1493/356 677/1495/356 645/1496/356 +f 646/1497/380 641/1498/380 645/1496/380 +f 647/1493/357 641/1499/357 643/1500/357 +f 644/1501/358 646/1497/358 648/1502/358 +f 683/1503/381 763/1504/382 686/1505/382 +f 712/1506/383 754/1507/384 709/1508/384 +f 654/1509/385 717/1510/386 714/1511/387 +f 680/1512/388 742/1513/389 678/1514/390 +f 649/1515/356 648/1502/356 646/1497/356 +f 682/1516/381 762/1517/391 685/1518/392 +f 710/1519/384 775/1520/383 711/1521/383 +f 653/1522/393 716/1523/394 651/1524/395 +f 678/1514/390 738/1525/396 676/1526/397 +f 684/1527/392 745/1528/381 683/1503/381 +f 706/1529/398 749/1530/384 710/1519/384 +f 654/1509/385 713/1531/399 650/1532/400 +f 677/1533/401 737/1534/402 741/1535/403 +f 654/1536/359 642/1537/359 644/1538/359 +f 681/1539/382 751/1540/381 682/1516/381 +f 709/1508/384 755/1541/404 705/1542/398 +f 671/1543/405 740/1544/406 733/1545/407 +f 701/1546/408 758/1547/409 708/1548/410 +f 687/1549/411 693/1550/412 688/1551/411 +f 694/1552/412 696/1553/413 693/1550/412 +f 686/1505/382 688/1551/411 681/1539/382 +f 683/1503/381 681/1539/382 682/1516/381 +f 691/1554/414 690/1555/415 689/1556/414 +f 712/1506/383 710/1519/384 711/1521/383 +f 682/1516/381 684/1527/392 683/1503/381 +f 685/1518/392 689/1556/414 684/1527/392 +f 701/1546/408 707/1557/410 702/1558/408 +f 708/1548/410 711/1521/383 707/1557/410 +f 706/1529/398 709/1508/384 705/1542/398 +f 695/1559/413 699/1560/416 696/1561/413 +f 700/1562/416 702/1558/408 699/1563/416 +f 704/1564/417 705/1542/398 703/1565/417 +f 698/1566/418 703/1565/417 697/1567/418 +f 697/1568/418 692/1569/415 698/1570/418 +f 672/1571/419 739/1572/420 674/1573/421 +f 707/1557/410 771/1574/408 702/1558/408 +f 670/1575/422 738/1525/396 736/1576/423 +f 704/1564/417 748/1577/424 706/1529/398 +f 669/1578/425 737/1534/402 675/1579/426 +f 705/1542/398 772/1580/417 703/1565/417 +f 664/1581/427 736/1576/423 730/1582/428 +f 698/1566/418 773/1583/417 704/1564/417 +f 663/1584/429 735/1585/430 669/1578/425 +f 703/1565/417 746/1586/418 697/1567/418 +f 668/1587/431 734/1588/432 672/1571/419 +f 702/1558/408 769/1589/416 699/1563/416 +f 667/1590/433 733/1545/407 732/1591/434 +f 700/1562/416 757/1592/408 701/1546/408 +f 667/1593/433 727/1594/435 665/1595/436 +f 695/1559/413 770/1596/416 700/1597/416 +f 740/1544/356 776/1598/356 758/1599/356 +f 718/1600/356 745/1601/356 715/1602/356 +f 728/1603/359 769/1604/359 731/1605/359 +f 741/1535/356 776/1598/356 744/1606/356 +f 717/1510/359 751/1607/359 714/1511/359 +f 730/1608/359 767/1609/359 724/1610/359 +f 743/1611/359 749/1612/359 742/1513/359 +f 716/1523/356 745/1601/356 761/1613/356 +f 722/1614/356 746/1615/356 729/1616/356 +f 738/1525/359 749/1612/359 748/1617/359 +f 714/1511/359 750/1618/359 713/1531/359 +f 728/1619/359 753/1620/359 752/1621/359 +f 737/1534/356 754/1622/356 741/1535/356 +f 726/1623/356 756/1624/356 760/1625/356 +f 733/1545/356 758/1599/356 757/1626/356 +f 726/1623/356 759/1627/356 719/1628/356 +f 732/1629/356 756/1630/356 727/1594/356 +f 719/1628/356 763/1631/356 718/1600/356 +f 739/1572/359 775/1632/359 743/1611/359 +f 733/1545/356 770/1633/356 732/1591/356 +f 720/1634/359 750/1618/359 764/1635/359 +f 731/1636/359 771/1637/359 734/1588/359 +f 721/1638/356 747/1639/356 722/1640/356 +f 735/1585/356 746/1641/356 772/1642/356 +f 724/1643/359 766/1644/359 723/1645/359 +f 730/1582/359 773/1646/359 768/1647/359 +f 721/1638/356 761/1613/356 765/1648/356 +f 735/1585/356 755/1649/356 737/1534/356 +f 723/1645/359 762/1650/359 717/1510/359 +f 736/1576/359 748/1617/359 773/1646/359 +f 725/1651/359 764/1635/359 753/1620/359 +f 734/1588/359 774/1652/359 739/1572/359 +f 677/1533/401 744/1606/437 679/1653/438 +f 649/1654/439 715/1602/440 653/1522/393 +f 708/1548/410 776/1655/383 712/1506/383 +f 686/1505/382 759/1656/441 687/1549/411 +f 679/1653/438 740/1544/406 673/1657/442 +f 649/1654/439 719/1628/443 718/1600/444 +f 711/1521/383 774/1658/445 707/1557/410 +f 688/1551/411 750/1659/382 681/1539/382 +f 680/1512/388 739/1572/420 743/1611/446 +f 650/1532/400 720/1634/447 656/1660/448 +f 690/1555/415 765/1661/414 689/1556/414 +f 659/1662/449 721/1638/450 722/1640/451 +f 691/1554/414 767/1663/415 692/1664/415 +f 660/1665/452 723/1645/453 658/1666/454 +f 689/1556/414 761/1667/455 684/1527/392 +f 657/1668/456 716/1523/394 721/1638/450 +f 685/1518/392 766/1669/414 691/1554/414 +f 658/1666/454 717/1510/386 652/1670/457 +f 693/1550/412 764/1671/458 688/1551/411 +f 662/1672/459 720/1634/447 725/1651/460 +f 687/1549/411 760/1673/412 694/1552/412 +f 661/1674/461 719/1628/443 655/1675/462 +f 694/1552/412 756/1676/413 695/1677/413 +f 665/1678/436 726/1623/463 661/1674/461 +f 696/1553/413 753/1679/412 693/1550/412 +f 666/1680/464 725/1651/460 728/1619/465 +f 697/1568/418 747/1681/415 690/1682/415 +f 659/1683/449 729/1616/466 663/1684/429 +f 692/1569/415 768/1685/418 698/1570/418 +f 664/1686/427 724/1610/467 660/1687/452 +f 699/1560/416 752/1688/413 696/1561/413 +f 666/1689/464 731/1605/468 668/1690/431 +f 641/1489/359 642/1537/359 666/1691/359 +f 641/1489/359 666/1691/359 668/1692/359 +f 670/1693/359 664/1694/359 643/1491/359 +f 676/1695/359 670/1693/359 643/1491/359 +f 641/1489/359 668/1692/359 672/1696/359 +f 641/1489/359 672/1696/359 674/1697/359 +f 678/1698/359 676/1695/359 643/1491/359 +f 641/1489/359 674/1697/359 680/1490/359 +f 680/1490/359 678/1698/359 643/1491/359 +f 644/1492/379 648/1502/379 647/1493/379 +f 647/1493/356 648/1502/356 659/1699/356 +f 647/1493/356 659/1699/356 663/1700/356 +f 671/1701/356 667/1702/356 645/1496/356 +f 673/1703/356 671/1701/356 645/1496/356 +f 647/1493/356 663/1700/356 669/1704/356 +f 647/1493/356 669/1704/356 675/1705/356 +f 679/1706/356 673/1703/356 645/1496/356 +f 647/1493/356 675/1705/356 677/1495/356 +f 677/1495/356 679/1706/356 645/1496/356 +f 646/1497/380 642/1707/380 641/1498/380 +f 647/1493/357 645/1496/357 641/1499/357 +f 644/1501/358 642/1708/358 646/1497/358 +f 683/1503/381 745/1528/381 763/1504/382 +f 712/1506/383 776/1655/383 754/1507/384 +f 654/1509/385 652/1670/457 717/1510/386 +f 680/1512/388 743/1611/446 742/1513/389 +f 646/1497/356 645/1496/356 667/1702/356 +f 646/1497/356 667/1702/356 665/1709/356 +f 657/1710/356 659/1699/356 648/1502/356 +f 651/1711/356 657/1710/356 648/1502/356 +f 646/1497/356 665/1709/356 661/1712/356 +f 646/1497/356 661/1712/356 655/1713/356 +f 653/1714/356 651/1711/356 648/1502/356 +f 646/1497/356 655/1713/356 649/1515/356 +f 649/1515/356 653/1714/356 648/1502/356 +f 682/1516/381 751/1540/381 762/1517/391 +f 710/1519/384 749/1530/384 775/1520/383 +f 653/1522/393 715/1602/440 716/1523/394 +f 678/1514/390 742/1513/389 738/1525/396 +f 684/1527/392 761/1667/391 745/1528/381 +f 706/1529/398 748/1577/404 749/1530/384 +f 654/1509/385 714/1511/387 713/1531/399 +f 677/1533/401 675/1579/426 737/1534/402 +f 644/1538/359 643/1491/359 664/1694/359 +f 644/1538/359 664/1694/359 660/1715/359 +f 662/1716/359 666/1691/359 642/1537/359 +f 656/1717/359 662/1716/359 642/1537/359 +f 644/1538/359 660/1715/359 658/1718/359 +f 644/1538/359 658/1718/359 652/1719/359 +f 650/1720/359 656/1717/359 642/1537/359 +f 644/1538/359 652/1719/359 654/1536/359 +f 654/1536/359 650/1720/359 642/1537/359 +f 681/1539/382 750/1659/382 751/1540/381 +f 709/1508/384 754/1507/384 755/1541/404 +f 671/1543/405 673/1657/442 740/1544/406 +f 701/1546/408 757/1592/408 758/1547/409 +f 687/1549/411 694/1552/412 693/1550/412 +f 694/1552/412 695/1677/413 696/1553/413 +f 686/1505/382 687/1549/411 688/1551/411 +f 683/1503/381 686/1505/382 681/1539/382 +f 691/1554/414 692/1664/415 690/1555/415 +f 712/1506/383 709/1508/384 710/1519/384 +f 682/1516/381 685/1518/392 684/1527/392 +f 685/1518/392 691/1554/414 689/1556/414 +f 701/1546/408 708/1548/410 707/1557/410 +f 708/1548/410 712/1506/383 711/1521/383 +f 706/1529/398 710/1519/384 709/1508/384 +f 695/1559/413 700/1597/416 699/1560/416 +f 700/1562/416 701/1546/408 702/1558/408 +f 704/1564/417 706/1529/398 705/1542/398 +f 698/1566/418 704/1564/417 703/1565/417 +f 697/1568/418 690/1682/415 692/1569/415 +f 672/1571/419 734/1588/432 739/1572/420 +f 707/1557/410 774/1658/409 771/1574/408 +f 670/1575/422 676/1526/397 738/1525/396 +f 704/1564/417 773/1583/417 748/1577/424 +f 669/1578/425 735/1585/430 737/1534/402 +f 705/1542/398 755/1541/424 772/1580/417 +f 664/1581/427 670/1575/422 736/1576/423 +f 698/1566/418 768/1721/418 773/1583/417 +f 663/1584/429 729/1722/466 735/1585/430 +f 703/1565/417 772/1580/417 746/1586/418 +f 668/1587/431 731/1636/468 734/1588/432 +f 702/1558/408 771/1574/408 769/1589/416 +f 667/1590/433 671/1543/405 733/1545/407 +f 700/1562/416 770/1723/416 757/1592/408 +f 667/1593/433 732/1629/434 727/1594/435 +f 695/1559/413 756/1724/413 770/1596/416 +f 740/1544/356 744/1606/356 776/1598/356 +f 718/1600/356 763/1631/356 745/1601/356 +f 728/1603/359 752/1725/359 769/1604/359 +f 741/1535/356 754/1622/356 776/1598/356 +f 717/1510/359 762/1650/359 751/1607/359 +f 730/1608/359 768/1726/359 767/1609/359 +f 743/1611/359 775/1632/359 749/1612/359 +f 716/1523/356 715/1602/356 745/1601/356 +f 722/1614/356 747/1727/356 746/1615/356 +f 738/1525/359 742/1513/359 749/1612/359 +f 714/1511/359 751/1607/359 750/1618/359 +f 728/1619/359 725/1651/359 753/1620/359 +f 737/1534/356 755/1649/356 754/1622/356 +f 726/1623/356 727/1728/356 756/1624/356 +f 733/1545/356 740/1544/356 758/1599/356 +f 726/1623/356 760/1625/356 759/1627/356 +f 732/1629/356 770/1729/356 756/1630/356 +f 719/1628/356 759/1627/356 763/1631/356 +f 739/1572/359 774/1652/359 775/1632/359 +f 733/1545/356 757/1626/356 770/1633/356 +f 720/1634/359 713/1531/359 750/1618/359 +f 731/1636/359 769/1730/359 771/1637/359 +f 721/1638/356 765/1648/356 747/1639/356 +f 735/1585/356 729/1722/356 746/1641/356 +f 724/1643/359 767/1731/359 766/1644/359 +f 730/1582/359 736/1576/359 773/1646/359 +f 721/1638/356 716/1523/356 761/1613/356 +f 735/1585/356 772/1642/356 755/1649/356 +f 723/1645/359 766/1644/359 762/1650/359 +f 736/1576/359 738/1525/359 748/1617/359 +f 725/1651/359 720/1634/359 764/1635/359 +f 734/1588/359 771/1637/359 774/1652/359 +f 677/1533/401 741/1535/403 744/1606/437 +f 649/1654/439 718/1600/444 715/1602/440 +f 708/1548/410 758/1547/445 776/1655/383 +f 686/1505/382 763/1504/382 759/1656/441 +f 679/1653/438 744/1606/437 740/1544/406 +f 649/1654/439 655/1675/462 719/1628/443 +f 711/1521/383 775/1520/383 774/1658/445 +f 688/1551/411 764/1671/441 750/1659/382 +f 680/1512/388 674/1573/421 739/1572/420 +f 650/1532/400 713/1531/399 720/1634/447 +f 690/1555/415 747/1732/415 765/1661/414 +f 659/1662/449 657/1668/456 721/1638/450 +f 691/1554/414 766/1669/414 767/1663/415 +f 660/1665/452 724/1643/467 723/1645/453 +f 689/1556/414 765/1661/414 761/1667/455 +f 657/1668/456 651/1524/395 716/1523/394 +f 685/1518/392 762/1517/455 766/1669/414 +f 658/1666/454 723/1645/453 717/1510/386 +f 693/1550/412 753/1679/412 764/1671/458 +f 662/1672/459 656/1660/448 720/1634/447 +f 687/1549/411 759/1656/458 760/1673/412 +f 661/1674/461 726/1623/463 719/1628/443 +f 694/1552/412 760/1673/412 756/1676/413 +f 665/1678/436 727/1728/435 726/1623/463 +f 696/1553/413 752/1733/413 753/1679/412 +f 666/1680/464 662/1672/459 725/1651/460 +f 697/1568/418 746/1734/418 747/1681/415 +f 659/1683/449 722/1614/451 729/1616/466 +f 692/1569/415 767/1735/415 768/1685/418 +f 664/1686/427 730/1608/428 724/1610/467 +f 699/1560/416 769/1736/416 752/1688/413 +f 666/1689/464 728/1603/465 731/1605/468 +o spinny_lower +v 0.127409 0.571053 -0.570525 +v 0.311433 0.571053 -0.573891 +v 0.127409 0.586056 -0.579187 +v 0.311433 0.583141 -0.580870 +v 0.127409 0.586056 -0.596510 +v 0.311433 0.583141 -0.594827 +v 0.127409 0.571053 -0.605172 +v 0.311433 0.571053 -0.601806 +v 0.127409 0.556051 -0.596510 +v 0.311433 0.558966 -0.594827 +v 0.127409 0.556051 -0.579187 +v 0.311433 0.558966 -0.580870 +v 0.296158 0.571053 -0.570525 +v 0.244484 0.571053 -0.570525 +v 0.244484 0.586056 -0.579187 +v 0.296158 0.586056 -0.579187 +v 0.244484 0.586056 -0.596510 +v 0.296158 0.586056 -0.596510 +v 0.244484 0.571053 -0.605172 +v 0.296158 0.571053 -0.605172 +v 0.244484 0.556051 -0.596510 +v 0.296158 0.556051 -0.596510 +v 0.244484 0.556051 -0.579187 +v 0.296158 0.556051 -0.579187 +v 0.248187 0.538846 -0.569253 +v 0.292455 0.538846 -0.569253 +v 0.292455 0.571053 -0.550658 +v 0.248187 0.571053 -0.550658 +v 0.248187 0.538846 -0.606444 +v 0.292455 0.538846 -0.606444 +v 0.248187 0.571053 -0.625039 +v 0.292455 0.571053 -0.625039 +v 0.248187 0.603261 -0.606444 +v 0.292455 0.603261 -0.606444 +v 0.248187 0.603261 -0.569253 +v 0.292455 0.603261 -0.569253 +v 0.264576 0.585795 -0.571215 +v 0.375908 0.798690 -0.587129 +v 0.252583 0.591199 -0.579309 +v 0.363915 0.804094 -0.595223 +v 0.252527 0.590075 -0.594713 +v 0.363860 0.802970 -0.610627 +v 0.264465 0.583548 -0.602023 +v 0.375797 0.796443 -0.617937 +v 0.276457 0.578144 -0.593929 +v 0.387789 0.791039 -0.609843 +v 0.276513 0.579268 -0.578525 +v 0.387845 0.792162 -0.594439 +v 0.265024 0.589041 -0.594850 +v 0.375908 0.639695 -0.806877 +v 0.253032 0.583014 -0.602490 +v 0.363915 0.633667 -0.814518 +v 0.252976 0.568017 -0.606182 +v 0.363859 0.618670 -0.818209 +v 0.264913 0.559048 -0.602232 +v 0.375797 0.609701 -0.814260 +v 0.276906 0.565075 -0.594592 +v 0.387789 0.615728 -0.806619 +v 0.276962 0.580072 -0.590900 +v 0.387845 0.630725 -0.802928 +v 0.264576 0.567567 -0.605240 +v 0.375908 0.382270 -0.719820 +v 0.252583 0.558438 -0.601869 +v 0.363915 0.373140 -0.716448 +v 0.252527 0.550293 -0.588746 +v 0.363859 0.364995 -0.703326 +v 0.264465 0.551277 -0.578996 +v 0.375797 0.365980 -0.693575 +v 0.276457 0.560406 -0.582368 +v 0.387789 0.375109 -0.696947 +v 0.276513 0.568551 -0.595490 +v 0.387845 0.383254 -0.710069 +v 0.264576 0.551049 -0.588028 +v 0.375908 0.388167 -0.450017 +v 0.252583 0.551435 -0.578304 +v 0.363915 0.388553 -0.440293 +v 0.252527 0.561398 -0.566502 +v 0.363860 0.398516 -0.428491 +v 0.264465 0.570975 -0.564425 +v 0.375797 0.408094 -0.426414 +v 0.276457 0.570589 -0.574150 +v 0.387789 0.407708 -0.436139 +v 0.276513 0.560626 -0.585951 +v 0.387845 0.397745 -0.447940 +v 0.269238 0.562315 -0.566999 +v 0.375908 0.648259 -0.361717 +v 0.257245 0.571682 -0.564361 +v 0.363915 0.657627 -0.359079 +v 0.257189 0.585985 -0.570190 +v 0.363860 0.671929 -0.364907 +v 0.269127 0.590920 -0.578657 +v 0.375797 0.676864 -0.373374 +v 0.281119 0.581552 -0.581295 +v 0.387789 0.667496 -0.376013 +v 0.281175 0.567249 -0.575466 +v 0.387845 0.653194 -0.370184 +v 0.380466 0.828227 -0.481324 +v 0.398360 0.821379 -0.484160 +v 0.405772 0.804848 -0.491008 +v 0.398360 0.788316 -0.497855 +v 0.380466 0.781468 -0.500692 +v 0.362572 0.788316 -0.497855 +v 0.355160 0.804848 -0.491008 +v 0.362572 0.821379 -0.484160 +v 0.380466 0.677578 -0.330675 +v 0.398360 0.674742 -0.337523 +v 0.405772 0.667894 -0.354054 +v 0.398360 0.661046 -0.370586 +v 0.380466 0.658210 -0.377434 +v 0.362572 0.661046 -0.370586 +v 0.355160 0.667894 -0.354054 +v 0.362572 0.674742 -0.337523 +v 0.380466 0.464529 -0.330675 +v 0.398360 0.467365 -0.337523 +v 0.405772 0.474213 -0.354054 +v 0.398360 0.481060 -0.370586 +v 0.380466 0.483897 -0.377434 +v 0.362572 0.481060 -0.370586 +v 0.355160 0.474213 -0.354054 +v 0.362572 0.467365 -0.337523 +v 0.380466 0.313880 -0.481324 +v 0.398360 0.320727 -0.484160 +v 0.405772 0.337259 -0.491008 +v 0.398360 0.353791 -0.497856 +v 0.380466 0.360639 -0.500692 +v 0.362572 0.353791 -0.497856 +v 0.355160 0.337259 -0.491008 +v 0.362572 0.320727 -0.484160 +v 0.380466 0.313880 -0.694373 +v 0.398360 0.320727 -0.691537 +v 0.405772 0.337259 -0.684689 +v 0.398360 0.353791 -0.677842 +v 0.380466 0.360639 -0.675005 +v 0.362572 0.353791 -0.677842 +v 0.355160 0.337259 -0.684689 +v 0.362572 0.320727 -0.691537 +v 0.380466 0.464529 -0.845022 +v 0.398360 0.467365 -0.838174 +v 0.405772 0.474213 -0.821643 +v 0.398360 0.481060 -0.805111 +v 0.380466 0.483897 -0.798263 +v 0.362572 0.481060 -0.805111 +v 0.355160 0.474213 -0.821643 +v 0.362572 0.467365 -0.838174 +v 0.380466 0.677578 -0.845022 +v 0.398360 0.674742 -0.838174 +v 0.405772 0.667894 -0.821643 +v 0.398360 0.661047 -0.805111 +v 0.380466 0.658210 -0.798263 +v 0.362572 0.661047 -0.805111 +v 0.355160 0.667894 -0.821643 +v 0.362572 0.674742 -0.838174 +v 0.380466 0.828227 -0.694373 +v 0.398360 0.821379 -0.691537 +v 0.405772 0.804848 -0.684689 +v 0.398360 0.788316 -0.677842 +v 0.380466 0.781468 -0.675005 +v 0.362572 0.788316 -0.677842 +v 0.355160 0.804848 -0.684689 +v 0.362572 0.821379 -0.691537 +v -0.044410 0.571053 -0.570525 +v -0.228434 0.571053 -0.573891 +v -0.044410 0.586056 -0.579187 +v -0.228434 0.583141 -0.580870 +v -0.044410 0.586056 -0.596510 +v -0.228434 0.583141 -0.594827 +v -0.044410 0.571053 -0.605172 +v -0.228434 0.571053 -0.601806 +v -0.044410 0.556051 -0.596510 +v -0.228434 0.558966 -0.594827 +v -0.044410 0.556051 -0.579187 +v -0.228434 0.558966 -0.580870 +v -0.213159 0.571053 -0.570525 +v -0.161485 0.571053 -0.570525 +v -0.161485 0.586056 -0.579187 +v -0.213159 0.586056 -0.579187 +v -0.161485 0.586056 -0.596510 +v -0.213159 0.586056 -0.596510 +v -0.161485 0.571053 -0.605172 +v -0.213159 0.571053 -0.605172 +v -0.161485 0.556051 -0.596510 +v -0.213159 0.556051 -0.596510 +v -0.161485 0.556051 -0.579187 +v -0.213159 0.556051 -0.579187 +v -0.165188 0.538846 -0.569253 +v -0.209456 0.538846 -0.569253 +v -0.209456 0.571053 -0.550658 +v -0.165188 0.571053 -0.550658 +v -0.165188 0.538846 -0.606444 +v -0.209456 0.538846 -0.606444 +v -0.165188 0.571053 -0.625039 +v -0.209456 0.571053 -0.625039 +v -0.165188 0.603261 -0.606444 +v -0.209456 0.603261 -0.606444 +v -0.165188 0.603261 -0.569253 +v -0.209456 0.603261 -0.569253 +v -0.181577 0.585795 -0.571215 +v -0.292909 0.798690 -0.587129 +v -0.169584 0.591199 -0.579309 +v -0.280916 0.804094 -0.595223 +v -0.169529 0.590076 -0.594713 +v -0.280861 0.802970 -0.610627 +v -0.181466 0.583548 -0.602023 +v -0.292798 0.796443 -0.617937 +v -0.193459 0.578144 -0.593929 +v -0.304791 0.791039 -0.609843 +v -0.193514 0.579268 -0.578525 +v -0.304846 0.792162 -0.594439 +v -0.182026 0.589041 -0.594850 +v -0.292909 0.639695 -0.806877 +v -0.170033 0.583014 -0.602490 +v -0.280916 0.633667 -0.814518 +v -0.169977 0.568017 -0.606182 +v -0.280861 0.618670 -0.818209 +v -0.181915 0.559048 -0.602232 +v -0.292798 0.609701 -0.814260 +v -0.193907 0.565075 -0.594592 +v -0.304791 0.615728 -0.806620 +v -0.193963 0.580072 -0.590901 +v -0.304846 0.630725 -0.802928 +v -0.181577 0.567567 -0.605240 +v -0.292909 0.382270 -0.719820 +v -0.169584 0.558438 -0.601869 +v -0.280916 0.373140 -0.716448 +v -0.169529 0.550293 -0.588746 +v -0.280861 0.364995 -0.703326 +v -0.181466 0.551277 -0.578996 +v -0.292798 0.365980 -0.693575 +v -0.193459 0.560406 -0.582368 +v -0.304791 0.375109 -0.696947 +v -0.193514 0.568551 -0.595490 +v -0.304846 0.383254 -0.710069 +v -0.181577 0.551049 -0.588028 +v -0.292909 0.388168 -0.450017 +v -0.169584 0.551435 -0.578304 +v -0.280916 0.388553 -0.440293 +v -0.169529 0.561398 -0.566502 +v -0.280861 0.398516 -0.428491 +v -0.181466 0.570975 -0.564425 +v -0.292798 0.408094 -0.426414 +v -0.193459 0.570589 -0.574150 +v -0.304791 0.407708 -0.436139 +v -0.193514 0.560626 -0.585951 +v -0.304846 0.397745 -0.447940 +v -0.186239 0.562315 -0.566999 +v -0.292909 0.648259 -0.361717 +v -0.174246 0.571682 -0.564361 +v -0.280916 0.657627 -0.359079 +v -0.174191 0.585985 -0.570190 +v -0.280861 0.671929 -0.364907 +v -0.186128 0.590920 -0.578657 +v -0.292798 0.676864 -0.373374 +v -0.198121 0.581552 -0.581295 +v -0.304791 0.667497 -0.376013 +v -0.198176 0.567249 -0.575466 +v -0.304846 0.653194 -0.370184 +v -0.297467 0.828227 -0.481324 +v -0.315361 0.821379 -0.484160 +v -0.322773 0.804848 -0.491008 +v -0.315361 0.788316 -0.497855 +v -0.297467 0.781468 -0.500692 +v -0.279573 0.788316 -0.497855 +v -0.272162 0.804848 -0.491008 +v -0.279573 0.821379 -0.484160 +v -0.297467 0.677578 -0.330675 +v -0.315361 0.674742 -0.337523 +v -0.322773 0.667894 -0.354054 +v -0.315361 0.661047 -0.370586 +v -0.297467 0.658210 -0.377434 +v -0.279573 0.661047 -0.370586 +v -0.272162 0.667894 -0.354054 +v -0.279573 0.674742 -0.337523 +v -0.297467 0.464529 -0.330675 +v -0.315361 0.467365 -0.337523 +v -0.322773 0.474213 -0.354054 +v -0.315361 0.481060 -0.370586 +v -0.297467 0.483897 -0.377434 +v -0.279573 0.481060 -0.370586 +v -0.272162 0.474213 -0.354054 +v -0.279573 0.467365 -0.337523 +v -0.297467 0.313880 -0.481324 +v -0.315361 0.320727 -0.484160 +v -0.322773 0.337259 -0.491008 +v -0.315361 0.353791 -0.497856 +v -0.297467 0.360639 -0.500692 +v -0.279573 0.353791 -0.497856 +v -0.272162 0.337259 -0.491008 +v -0.279573 0.320727 -0.484160 +v -0.297467 0.313880 -0.694373 +v -0.315361 0.320727 -0.691537 +v -0.322773 0.337259 -0.684689 +v -0.315361 0.353791 -0.677842 +v -0.297467 0.360639 -0.675005 +v -0.279573 0.353791 -0.677842 +v -0.272162 0.337259 -0.684689 +v -0.279573 0.320727 -0.691537 +v -0.297467 0.464529 -0.845022 +v -0.315361 0.467365 -0.838175 +v -0.322773 0.474213 -0.821643 +v -0.315361 0.481060 -0.805111 +v -0.297467 0.483897 -0.798263 +v -0.279573 0.481060 -0.805111 +v -0.272162 0.474213 -0.821643 +v -0.279573 0.467365 -0.838175 +v -0.297467 0.677578 -0.845022 +v -0.315361 0.674742 -0.838174 +v -0.322773 0.667894 -0.821643 +v -0.315361 0.661047 -0.805111 +v -0.297467 0.658210 -0.798263 +v -0.279573 0.661047 -0.805111 +v -0.272162 0.667894 -0.821643 +v -0.279573 0.674742 -0.838174 +v -0.297467 0.828227 -0.694373 +v -0.315361 0.821379 -0.691537 +v -0.322773 0.804848 -0.684689 +v -0.315361 0.788316 -0.677842 +v -0.297467 0.781468 -0.675005 +v -0.279573 0.788316 -0.677842 +v -0.272162 0.804848 -0.684689 +v -0.279573 0.821379 -0.691537 +vt 0.799635 0.362279 +vt 0.827262 0.359326 +vt 0.827222 0.362762 +vt 0.800448 0.375165 +vt 0.827415 0.369730 +vt 0.827624 0.373751 +vt 0.799726 0.370763 +vt 0.827275 0.366229 +vt 0.799597 0.366415 +vt 0.762423 0.391682 +vt 0.760099 0.390340 +vt 0.762423 0.386315 +vt 0.800031 0.354283 +vt 0.827395 0.355916 +vt 0.827624 0.352523 +vt 0.788264 0.364363 +vt 0.785449 0.361184 +vt 0.788551 0.361047 +vt 0.784514 0.366272 +vt 0.787270 0.367605 +vt 0.783039 0.368301 +vt 0.785025 0.370236 +vt 0.783984 0.355430 +vt 0.785188 0.350017 +vt 0.787304 0.353840 +vt 0.788273 0.357581 +vt 0.791373 0.353216 +vt 0.796382 0.357395 +vt 0.797036 0.352990 +vt 0.799724 0.358261 +vt 0.796056 0.361474 +vt 0.791701 0.357754 +vt 0.795690 0.365588 +vt 0.791589 0.361641 +vt 0.791021 0.365400 +vt 0.795191 0.370261 +vt 0.789634 0.369320 +vt 0.786082 0.373815 +vt 0.795397 0.378285 +vt 0.799279 0.347383 +vt 0.801389 0.350415 +vt 0.286473 0.934138 +vt 0.283504 0.980386 +vt 0.283504 0.934093 +vt 0.301319 0.934093 +vt 0.298350 0.980386 +vt 0.298350 0.934093 +vt 0.295381 0.934138 +vt 0.295381 0.980430 +vt 0.292412 0.934182 +vt 0.292412 0.980475 +vt 0.289442 0.934183 +vt 0.286473 0.980430 +vt 0.867854 0.901496 +vt 0.820842 0.898526 +vt 0.867866 0.898526 +vt 0.820842 0.916343 +vt 0.867852 0.913373 +vt 0.867866 0.916343 +vt 0.820829 0.913373 +vt 0.867827 0.910404 +vt 0.820804 0.910404 +vt 0.867815 0.907434 +vt 0.820805 0.904465 +vt 0.867828 0.904465 +vt 0.820830 0.901496 +vt 0.548210 0.936048 +vt 0.551180 0.889032 +vt 0.551180 0.936071 +vt 0.533363 0.936071 +vt 0.536332 0.889032 +vt 0.536332 0.936072 +vt 0.539302 0.936049 +vt 0.539302 0.889009 +vt 0.542271 0.936025 +vt 0.542271 0.888986 +vt 0.545241 0.936025 +vt 0.548210 0.889008 +vt 0.837375 0.924047 +vt 0.834405 0.970295 +vt 0.834405 0.924002 +vt 0.852221 0.924002 +vt 0.849251 0.970295 +vt 0.849251 0.924002 +vt 0.846282 0.924046 +vt 0.846282 0.970339 +vt 0.843313 0.924091 +vt 0.843313 0.970384 +vt 0.840344 0.924091 +vt 0.837374 0.970339 +vt 0.434430 0.936466 +vt 0.431460 0.889069 +vt 0.434429 0.889017 +vt 0.449276 0.936519 +vt 0.446307 0.889090 +vt 0.449276 0.889069 +vt 0.443337 0.936508 +vt 0.443337 0.889059 +vt 0.440368 0.936456 +vt 0.440368 0.889006 +vt 0.437399 0.936435 +vt 0.437399 0.888985 +vt 0.400992 0.791352 +vt 0.397193 0.754418 +vt 0.400852 0.754391 +vt 0.394091 0.791397 +vt 0.393709 0.754385 +vt 0.390187 0.754324 +vt 0.390588 0.791361 +vt 0.386451 0.754283 +vt 0.382815 0.791366 +vt 0.382712 0.754242 +vt 0.379184 0.754177 +vt 0.407987 0.754399 +vt 0.404551 0.791300 +vt 0.404509 0.754364 +vt 0.401029 0.830484 +vt 0.397466 0.791406 +vt 0.393644 0.828434 +vt 0.390393 0.827137 +vt 0.386724 0.791360 +vt 0.387036 0.826636 +vt 0.383603 0.827212 +vt 0.379180 0.791346 +vt 0.408711 0.828478 +vt 0.408040 0.791308 +vt 0.405031 0.829914 +vt 0.401081 0.569288 +vt 0.397276 0.530538 +vt 0.401303 0.529944 +vt 0.397510 0.569275 +vt 0.393569 0.531995 +vt 0.394002 0.569210 +vt 0.390094 0.533390 +vt 0.390377 0.569117 +vt 0.386663 0.533954 +vt 0.386493 0.569035 +vt 0.383340 0.533443 +vt 0.382642 0.568946 +vt 0.380148 0.532152 +vt 0.407993 0.569370 +vt 0.405237 0.530579 +vt 0.408711 0.531968 +vt 0.404608 0.569300 +vt 0.397153 0.606277 +vt 0.393668 0.606235 +vt 0.390146 0.606165 +vt 0.386408 0.606121 +vt 0.382669 0.606079 +vt 0.379138 0.568835 +vt 0.407945 0.606274 +vt 0.404466 0.606234 +vt 0.400804 0.643287 +vt 0.400811 0.606255 +vt 0.393655 0.643272 +vt 0.390136 0.643206 +vt 0.386405 0.643166 +vt 0.379155 0.643060 +vt 0.379143 0.606013 +vt 0.404468 0.643264 +vt 0.400813 0.680323 +vt 0.397140 0.643310 +vt 0.397149 0.680346 +vt 0.393664 0.680308 +vt 0.390145 0.680243 +vt 0.386415 0.680202 +vt 0.382675 0.643125 +vt 0.382685 0.680161 +vt 0.407962 0.680337 +vt 0.407952 0.643302 +vt 0.404477 0.680299 +vt 0.400825 0.717358 +vt 0.393676 0.717344 +vt 0.390157 0.717280 +vt 0.382696 0.717198 +vt 0.379166 0.680096 +vt 0.404489 0.717335 +vt 0.397161 0.717382 +vt 0.386427 0.717239 +vt 0.379176 0.717133 +vt 0.407973 0.717373 +vt 0.720912 0.364623 +vt 0.693285 0.361670 +vt 0.720872 0.361187 +vt 0.721066 0.354219 +vt 0.694098 0.348783 +vt 0.721275 0.350197 +vt 0.720925 0.357719 +vt 0.693377 0.353186 +vt 0.693247 0.357533 +vt 0.777055 0.387656 +vt 0.777055 0.390340 +vt 0.774731 0.391682 +vt 0.721046 0.368033 +vt 0.693374 0.365687 +vt 0.721275 0.371425 +vt 0.693682 0.369665 +vt 0.682202 0.362901 +vt 0.678936 0.360105 +vt 0.681915 0.359585 +vt 0.680920 0.356343 +vt 0.678164 0.357676 +vt 0.676690 0.355648 +vt 0.678676 0.353713 +vt 0.678838 0.373931 +vt 0.677634 0.368519 +vt 0.680955 0.370109 +vt 0.678692 0.365585 +vt 0.681923 0.366367 +vt 0.685023 0.370733 +vt 0.690686 0.370958 +vt 0.690033 0.366554 +vt 0.689707 0.362474 +vt 0.685352 0.366194 +vt 0.688841 0.353688 +vt 0.679099 0.362764 +vt 0.685239 0.362307 +vt 0.684671 0.358548 +vt 0.683285 0.354629 +vt 0.689047 0.345664 +vt 0.679733 0.350133 +vt 0.682787 0.378285 +vt 0.692930 0.376566 +vt 0.695039 0.373533 +vt 0.953914 0.104208 +vt 0.950945 0.057960 +vt 0.953914 0.057915 +vt 0.968761 0.104252 +vt 0.965791 0.057960 +vt 0.968761 0.057960 +vt 0.962822 0.104208 +vt 0.965791 0.104253 +vt 0.959853 0.104163 +vt 0.962822 0.057916 +vt 0.956883 0.104163 +vt 0.959853 0.057871 +vt 0.956883 0.057871 +vt 0.901087 0.717683 +vt 0.854075 0.720652 +vt 0.854064 0.717683 +vt 0.901085 0.705805 +vt 0.854075 0.702836 +vt 0.901099 0.702836 +vt 0.901060 0.708775 +vt 0.854062 0.705805 +vt 0.901048 0.711744 +vt 0.854037 0.708775 +vt 0.854038 0.714714 +vt 0.854025 0.711744 +vt 0.901062 0.714714 +vt 0.459905 0.936048 +vt 0.456935 0.889032 +vt 0.459905 0.889008 +vt 0.474752 0.936071 +vt 0.471782 0.889032 +vt 0.474752 0.889032 +vt 0.468813 0.936049 +vt 0.471782 0.936072 +vt 0.465844 0.936025 +vt 0.468813 0.889009 +vt 0.462874 0.936025 +vt 0.465844 0.888986 +vt 0.462874 0.888985 +vt 0.891332 0.918016 +vt 0.894301 0.964265 +vt 0.891332 0.964309 +vt 0.876485 0.917972 +vt 0.879455 0.964264 +vt 0.876486 0.964265 +vt 0.882424 0.918016 +vt 0.879455 0.917972 +vt 0.885393 0.918061 +vt 0.882424 0.964309 +vt 0.888363 0.918061 +vt 0.885393 0.964353 +vt 0.888363 0.964354 +vt 0.890948 0.381894 +vt 0.893917 0.334497 +vt 0.893917 0.381947 +vt 0.905794 0.381873 +vt 0.908763 0.334445 +vt 0.908763 0.381894 +vt 0.902824 0.334456 +vt 0.905794 0.334424 +vt 0.902824 0.381905 +vt 0.899855 0.334508 +vt 0.899855 0.381957 +vt 0.896886 0.334529 +vt 0.896886 0.381978 +vt 0.359961 0.606011 +vt 0.363760 0.569076 +vt 0.363621 0.606038 +vt 0.356860 0.569032 +vt 0.360235 0.569022 +vt 0.356477 0.606043 +vt 0.353356 0.569068 +vt 0.349219 0.606145 +vt 0.352955 0.606105 +vt 0.345583 0.569063 +vt 0.349493 0.569068 +vt 0.341953 0.606252 +vt 0.345481 0.606186 +vt 0.367278 0.606065 +vt 0.370809 0.569120 +vt 0.370756 0.606029 +vt 0.367319 0.569128 +vt 0.359879 0.530591 +vt 0.363797 0.529944 +vt 0.353162 0.533291 +vt 0.356412 0.531994 +vt 0.349805 0.533792 +vt 0.342919 0.531808 +vt 0.346372 0.533216 +vt 0.371479 0.531950 +vt 0.367800 0.530514 +vt 0.364071 0.830484 +vt 0.360279 0.791154 +vt 0.363850 0.791140 +vt 0.356338 0.828434 +vt 0.360044 0.829890 +vt 0.353146 0.791312 +vt 0.356770 0.791219 +vt 0.349432 0.826474 +vt 0.352863 0.827038 +vt 0.346108 0.826986 +vt 0.349262 0.791394 +vt 0.341907 0.791593 +vt 0.345411 0.791482 +vt 0.368006 0.829850 +vt 0.370761 0.791058 +vt 0.371479 0.828460 +vt 0.367376 0.791128 +vt 0.363579 0.754173 +vt 0.359921 0.754151 +vt 0.352914 0.754263 +vt 0.356437 0.754193 +vt 0.349176 0.754307 +vt 0.345438 0.754350 +vt 0.367235 0.754194 +vt 0.370713 0.754154 +vt 0.363572 0.717142 +vt 0.356423 0.717157 +vt 0.359908 0.717119 +vt 0.352904 0.717222 +vt 0.349174 0.717263 +vt 0.341923 0.717369 +vt 0.345443 0.717304 +vt 0.370720 0.717126 +vt 0.367236 0.717164 +vt 0.363582 0.680106 +vt 0.356432 0.680121 +vt 0.359918 0.680083 +vt 0.349184 0.680226 +vt 0.352914 0.680186 +vt 0.341934 0.680332 +vt 0.345453 0.680267 +vt 0.370731 0.680091 +vt 0.367246 0.680129 +vt 0.363594 0.643070 +vt 0.356444 0.643084 +vt 0.359930 0.643046 +vt 0.352925 0.643149 +vt 0.349195 0.643189 +vt 0.345464 0.643230 +vt 0.370742 0.643055 +vt 0.367257 0.643093 +vt 0.341944 0.643295 +vt 0.760099 0.387656 +vt 0.764747 0.387656 +vt 0.764747 0.390340 +vt 0.785286 0.363844 +vt 0.782109 0.352463 +vt 0.785042 0.358363 +vt 0.789136 0.345664 +vt 0.301319 0.980386 +vt 0.289442 0.980475 +vt 0.820792 0.907434 +vt 0.533363 0.889032 +vt 0.545241 0.888985 +vt 0.852221 0.970295 +vt 0.840343 0.970384 +vt 0.431460 0.936519 +vt 0.446306 0.936540 +vt 0.397110 0.829838 +vt 0.380151 0.828621 +vt 0.772406 0.390340 +vt 0.772406 0.387656 +vt 0.774731 0.386315 +vt 0.675759 0.371485 +vt 0.689340 0.358360 +vt 0.950945 0.104252 +vt 0.901099 0.720652 +vt 0.456935 0.936071 +vt 0.894301 0.917972 +vt 0.890948 0.334445 +vt 0.341949 0.569082 +vt 0.342916 0.828276 +vt 0.341912 0.754415 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 -0.8660 -0.5000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.8660 0.5000 +vn 0.2152 -0.8457 -0.4883 +vn 0.2152 -0.8457 0.4883 +vn 0.2152 -0.0000 -0.9766 +vn 0.2152 0.8457 -0.4883 +vn 0.2152 0.8457 0.4883 +vn 0.2152 -0.0000 0.9766 +vn 0.9831 0.1587 -0.0916 +vn 0.9831 0.1587 0.0916 +vn -0.9831 0.1587 0.0916 +vn -0.9831 0.0000 0.1832 +vn -0.9831 -0.1587 0.0916 +vn -0.9831 -0.1587 -0.0916 +vn 0.9831 -0.0000 0.1832 +vn -0.9831 -0.0000 -0.1832 +vn 0.9831 0.0000 -0.1832 +vn 0.9831 -0.1587 0.0916 +vn 0.9831 -0.1587 -0.0916 +vn -0.9831 0.1587 -0.0916 +vn -0.0013 0.0752 0.9972 +vn -0.7649 0.4355 0.4747 +vn -0.7674 0.4364 0.4698 +vn -0.7685 0.3624 -0.5273 +vn -0.7709 0.3641 -0.5227 +vn -0.0085 -0.0701 -0.9975 +vn 0.0013 -0.0752 -0.9972 +vn 0.7649 -0.4355 -0.4747 +vn 0.7674 -0.4364 -0.4698 +vn 0.7685 -0.3624 0.5273 +vn 0.0085 0.0701 0.9975 +vn 0.0036 0.9722 0.2341 +vn -0.7691 0.5824 -0.2631 +vn -0.7690 0.5826 -0.2630 +vn -0.7757 -0.3873 -0.4982 +vn -0.7736 -0.3916 -0.4981 +vn -0.0076 -0.9717 -0.2361 +vn -0.0036 -0.9722 -0.2341 +vn 0.7691 -0.5824 0.2631 +vn 0.7757 0.3873 0.4982 +vn 0.7736 0.3916 0.4981 +vn 0.0076 0.9717 0.2361 +vn 0.0010 0.5263 -0.8503 +vn -0.7687 -0.0687 -0.6359 +vn -0.7701 -0.0706 -0.6341 +vn -0.7723 -0.5975 0.2158 +vn -0.7736 -0.5967 0.2134 +vn -0.0061 -0.5286 0.8489 +vn -0.0010 -0.5264 0.8503 +vn 0.7687 0.0687 0.6359 +vn 0.7701 0.0706 0.6341 +vn 0.7723 0.5975 -0.2158 +vn 0.0061 0.5286 -0.8489 +vn -0.0013 -0.6470 -0.7625 +vn -0.7649 -0.6313 -0.1281 +vn -0.7674 -0.6292 -0.1236 +vn -0.7685 0.0167 0.6397 +vn -0.7709 0.0127 0.6369 +vn -0.0085 0.6431 0.7658 +vn 0.0013 0.6470 0.7625 +vn 0.7649 0.6313 0.1281 +vn 0.7674 0.6292 0.1236 +vn 0.7685 -0.0167 -0.6397 +vn 0.0085 -0.6431 -0.7658 +vn 0.0020 -0.9228 0.3853 +vn -0.7755 -0.3271 0.5399 +vn 0.0114 -0.9245 0.3811 +vn -0.7797 -0.3191 0.5388 +vn -0.7840 0.6009 0.1558 +vn -0.0114 0.9245 -0.3811 +vn -0.0020 0.9228 -0.3853 +vn 0.7755 0.3271 -0.5399 +vn 0.7797 0.3191 -0.5388 +vn 0.7840 -0.6009 -0.1558 +vn 0.7846 -0.6000 -0.1565 +vn -0.0000 0.3827 0.9239 +vn 0.6630 0.6916 0.2865 +vn 0.0000 0.9239 0.3827 +vn 0.9955 0.0363 0.0876 +vn 0.9955 0.0876 0.0363 +vn 0.7574 -0.6033 -0.2499 +vn 0.7574 -0.2499 -0.6033 +vn 0.0000 -0.9239 -0.3827 +vn -0.7574 -0.2499 -0.6033 +vn -0.7574 -0.6033 -0.2499 +vn -0.9955 0.0876 0.0363 +vn -0.6630 0.2865 0.6916 +vn -0.6630 0.6916 0.2865 +vn 0.0000 -0.3827 0.9239 +vn 0.6630 0.2865 0.6916 +vn 0.9955 -0.0363 0.0876 +vn 0.7574 0.2499 -0.6033 +vn 0.0000 -0.3827 -0.9239 +vn -0.0000 0.3827 -0.9239 +vn -0.7574 0.2499 -0.6033 +vn -0.9955 0.0363 0.0876 +vn -0.9955 -0.0363 0.0876 +vn -0.6630 -0.2865 0.6916 +vn 0.0000 -0.9239 0.3827 +vn 0.6630 -0.2865 0.6916 +vn 0.6630 -0.6916 0.2865 +vn 0.9955 -0.0876 0.0363 +vn 0.7574 0.6033 -0.2499 +vn 0.0000 0.9239 -0.3827 +vn -0.7574 0.6033 -0.2499 +vn -0.9955 -0.0876 0.0363 +vn -0.6630 -0.6916 0.2865 +vn 0.6630 -0.6916 -0.2865 +vn 0.9955 -0.0876 -0.0363 +vn 0.7574 0.6033 0.2499 +vn -0.7574 0.6033 0.2499 +vn -0.9955 -0.0876 -0.0363 +vn -0.6630 -0.6916 -0.2865 +vn 0.9955 -0.0363 -0.0876 +vn 0.7574 0.2499 0.6033 +vn -0.9955 -0.0363 -0.0876 +vn -0.6630 -0.2865 -0.6916 +vn 0.6630 -0.2865 -0.6916 +vn 0.6630 0.2865 -0.6916 +vn 0.9955 0.0363 -0.0876 +vn 0.7574 -0.2499 0.6033 +vn -0.7574 0.2499 0.6033 +vn -0.7574 -0.2499 0.6033 +vn -0.9955 0.0363 -0.0876 +vn -0.6630 0.2865 -0.6916 +vn 0.9955 0.0876 -0.0363 +vn 0.7574 -0.6033 0.2499 +vn -0.7574 -0.6033 0.2499 +vn -0.6630 0.6916 -0.2865 +vn 0.6630 0.6916 -0.2865 +vn -0.9955 0.0876 -0.0363 +vn -1.0000 0.0000 0.0000 +vn -0.2152 -0.8457 0.4883 +vn -0.2152 -0.8457 -0.4883 +vn -0.2152 -0.0000 -0.9766 +vn -0.2152 0.8457 -0.4883 +vn -0.2152 0.8457 0.4883 +vn -0.2152 0.0000 0.9766 +vn 0.0013 0.0752 0.9972 +vn 0.7649 0.4355 0.4747 +vn -0.0085 0.0701 0.9975 +vn 0.7674 0.4364 0.4698 +vn 0.7685 0.3625 -0.5273 +vn 0.0085 -0.0701 -0.9975 +vn 0.7709 0.3641 -0.5227 +vn -0.7649 -0.4355 -0.4747 +vn -0.0013 -0.0752 -0.9972 +vn -0.7685 -0.3624 0.5273 +vn -0.7674 -0.4364 -0.4698 +vn -0.7709 -0.3641 0.5227 +vn -0.0036 0.9722 0.2341 +vn 0.7691 0.5824 -0.2631 +vn -0.0076 0.9717 0.2361 +vn 0.7757 -0.3873 -0.4982 +vn 0.7690 0.5826 -0.2630 +vn 0.0076 -0.9717 -0.2361 +vn 0.7736 -0.3916 -0.4981 +vn -0.7691 -0.5824 0.2631 +vn 0.0036 -0.9722 -0.2341 +vn -0.7757 0.3873 0.4982 +vn -0.7691 -0.5826 0.2630 +vn -0.7736 0.3916 0.4981 +vn -0.0010 0.5263 -0.8503 +vn 0.7687 -0.0687 -0.6359 +vn -0.0061 0.5286 -0.8489 +vn 0.7701 -0.0706 -0.6341 +vn 0.7723 -0.5975 0.2158 +vn 0.0061 -0.5286 0.8489 +vn 0.7736 -0.5967 0.2134 +vn -0.7687 0.0687 0.6359 +vn 0.0010 -0.5263 0.8503 +vn -0.7723 0.5975 -0.2158 +vn -0.7701 0.0706 0.6341 +vn -0.7736 0.5967 -0.2134 +vn 0.0013 -0.6470 -0.7625 +vn 0.7649 -0.6313 -0.1281 +vn -0.0085 -0.6431 -0.7658 +vn 0.7674 -0.6292 -0.1236 +vn 0.7685 0.0167 0.6397 +vn 0.0085 0.6431 0.7658 +vn 0.7709 0.0127 0.6369 +vn -0.7649 0.6313 0.1281 +vn -0.0013 0.6470 0.7625 +vn -0.7685 -0.0167 -0.6397 +vn -0.7674 0.6292 0.1236 +vn -0.7709 -0.0127 -0.6369 +vn 0.7755 -0.3271 0.5399 +vn -0.0020 -0.9228 0.3853 +vn -0.0114 -0.9245 0.3811 +vn 0.7840 0.6009 0.1558 +vn 0.7797 -0.3191 0.5388 +vn 0.0114 0.9245 -0.3811 +vn 0.7846 0.6000 0.1565 +vn 0.0020 0.9228 -0.3853 +vn -0.7755 0.3271 -0.5399 +vn -0.7797 0.3191 -0.5388 +vn -0.7840 -0.6009 -0.1558 +vn -0.7846 -0.6000 -0.1565 +vn 0.7709 -0.3641 0.5227 +vn 0.7690 -0.5826 0.2630 +vn 0.7736 0.5967 -0.2134 +vn 0.7709 -0.0127 -0.6369 +vn -0.7846 0.6000 0.1565 +s 1 +f 911/1737/469 889/1738/470 899/1739/469 +f 905/1740/471 895/1741/472 893/1742/471 +f 907/1743/472 897/1744/473 895/1741/472 +f 909/1745/473 899/1739/469 897/1744/473 +f 896/1746/474 894/1747/474 890/1748/474 +f 889/1738/470 903/1749/475 891/1750/475 +f 903/1749/475 893/1751/471 891/1750/475 +f 910/1752/476 900/1753/477 912/1754/477 +f 896/1755/478 910/1752/476 908/1756/478 +f 894/1757/479 908/1756/478 906/1758/479 +f 892/1759/480 906/1760/479 904/1761/480 +f 901/1762/481 892/1759/480 904/1761/480 +f 906/1760/482 924/1763/483 904/1761/483 +f 903/1749/484 916/1764/485 923/1765/484 +f 902/1766/485 913/1767/486 916/1764/485 +f 909/1745/487 913/1767/486 911/1737/486 +f 904/1761/483 915/1768/488 901/1762/488 +f 907/1743/489 917/1769/487 909/1745/487 +f 900/1753/477 901/1762/481 912/1754/477 +f 915/1768/470 913/1767/469 914/1770/469 +f 914/1770/469 917/1769/473 918/1771/473 +f 918/1771/473 919/1772/472 920/1773/472 +f 922/1774/471 919/1772/472 921/1775/471 +f 924/1763/475 921/1776/471 923/1765/475 +f 924/1763/475 916/1764/470 915/1768/470 +f 908/1756/490 922/1774/482 906/1758/482 +f 901/1762/488 914/1770/491 912/1754/491 +f 910/1752/492 920/1773/490 908/1756/490 +f 903/1749/484 921/1776/493 905/1777/493 +f 912/1754/491 918/1771/492 910/1752/492 +f 905/1740/493 919/1772/489 907/1743/489 +f 925/1778/494 928/1779/495 927/1780/496 +f 927/1781/496 930/1782/497 929/1783/498 +f 930/1782/497 931/1784/499 929/1783/498 +f 932/1785/500 933/1786/501 931/1784/499 +f 934/1787/502 935/1788/503 933/1786/501 +f 935/1788/503 926/1789/504 925/1778/494 +f 937/1790/505 940/1791/506 939/1792/507 +f 940/1793/506 941/1794/508 939/1795/507 +f 942/1796/509 943/1797/510 941/1794/508 +f 944/1798/511 945/1799/512 943/1797/510 +f 945/1799/512 948/1800/513 947/1801/514 +f 947/1801/514 938/1802/515 937/1790/505 +f 949/1803/516 952/1804/517 951/1805/518 +f 951/1806/518 954/1807/519 953/1808/520 +f 954/1807/519 955/1809/521 953/1808/520 +f 956/1810/522 957/1811/523 955/1809/521 +f 958/1812/524 959/1813/525 957/1811/523 +f 959/1813/525 950/1814/526 949/1803/516 +f 961/1815/527 964/1816/528 963/1817/529 +f 963/1818/529 966/1819/530 965/1820/531 +f 966/1819/530 967/1821/532 965/1820/531 +f 968/1822/533 969/1823/534 967/1821/532 +f 970/1824/535 971/1825/536 969/1823/534 +f 971/1825/536 962/1826/537 961/1815/527 +f 974/1827/538 975/1828/539 973/1829/540 +f 976/1830/541 977/1831/542 975/1832/539 +f 977/1831/542 980/1833/543 979/1834/544 +f 979/1834/544 982/1835/545 981/1836/546 +f 981/1836/546 984/1837/547 983/1838/548 +f 984/1837/547 973/1829/540 983/1838/548 +f 993/1839/549 986/1840/550 985/1841/551 +f 986/1840/550 995/1842/552 987/1843/553 +f 995/1842/552 988/1844/554 987/1843/553 +f 996/1845/555 989/1846/556 988/1844/554 +f 989/1846/556 998/1847/557 990/1848/558 +f 998/1847/557 991/1849/559 990/1848/558 +f 991/1850/559 1000/1851/560 992/1852/561 +f 1000/1851/560 985/1841/551 992/1852/561 +f 1001/1853/562 994/1854/563 993/1839/549 +f 994/1854/563 1003/1855/564 995/1842/552 +f 1003/1855/564 996/1845/555 995/1842/552 +f 1004/1856/565 997/1857/566 996/1845/555 +f 1005/1858/567 998/1847/557 997/1857/566 +f 1006/1859/568 999/1860/569 998/1847/557 +f 1007/1861/570 1000/1851/560 999/1862/569 +f 1008/1863/571 993/1839/549 1000/1851/560 +f 1009/1864/572 1002/1865/573 1001/1866/562 +f 1010/1867/574 1003/1868/564 1002/1865/573 +f 1011/1869/575 1004/1870/565 1003/1868/564 +f 1012/1871/576 1005/1872/567 1004/1870/565 +f 1013/1873/577 1006/1874/568 1005/1872/567 +f 1014/1875/578 1007/1876/570 1006/1874/568 +f 1015/1877/579 1008/1878/571 1007/1879/570 +f 1016/1880/580 1001/1866/562 1008/1878/571 +f 1009/1864/572 1018/1881/581 1010/1867/574 +f 1018/1881/581 1011/1869/575 1010/1867/574 +f 1019/1882/582 1012/1871/576 1011/1869/575 +f 1020/1883/583 1013/1873/577 1012/1871/576 +f 1021/1884/551 1014/1875/578 1013/1873/577 +f 1022/1885/584 1015/1886/579 1014/1875/578 +f 1023/1887/585 1016/1880/580 1015/1877/579 +f 1024/1888/586 1009/1864/572 1016/1880/580 +f 1025/1889/566 1018/1881/581 1017/1890/556 +f 1018/1881/581 1027/1891/587 1019/1882/582 +f 1019/1882/582 1028/1892/588 1020/1883/583 +f 1020/1883/583 1029/1893/549 1021/1884/551 +f 1029/1893/549 1022/1885/584 1021/1884/551 +f 1022/1885/584 1031/1894/589 1023/1895/585 +f 1023/1887/585 1032/1896/590 1024/1888/586 +f 1032/1896/590 1017/1890/556 1024/1888/586 +f 1033/1897/567 1026/1898/591 1025/1889/566 +f 1034/1899/592 1027/1891/587 1026/1898/591 +f 1035/1900/593 1028/1892/588 1027/1891/587 +f 1036/1901/594 1029/1893/549 1028/1892/588 +f 1037/1902/562 1030/1903/595 1029/1893/549 +f 1038/1904/596 1031/1894/589 1030/1903/595 +f 1039/1905/597 1032/1896/590 1031/1906/589 +f 1040/1907/598 1025/1889/566 1032/1896/590 +f 1041/1908/577 1034/1899/592 1033/1897/567 +f 1034/1899/592 1043/1909/599 1035/1900/593 +f 1043/1909/599 1036/1901/594 1035/1900/593 +f 1044/1910/600 1037/1902/562 1036/1901/594 +f 1037/1902/562 1046/1911/601 1038/1904/596 +f 1046/1911/601 1039/1912/597 1038/1904/596 +f 1039/1905/597 1048/1913/602 1040/1907/598 +f 1048/1913/602 1033/1897/567 1040/1907/598 +f 985/1841/551 1042/1914/603 1041/1908/577 +f 986/1840/550 1043/1909/599 1042/1914/603 +f 987/1843/553 1044/1910/600 1043/1909/599 +f 988/1844/554 1045/1915/572 1044/1910/600 +f 989/1846/556 1046/1911/601 1045/1915/572 +f 990/1848/558 1047/1916/604 1046/1911/601 +f 991/1850/559 1048/1913/602 1047/1917/604 +f 1048/1913/602 985/1841/551 1041/1908/577 +f 1049/1918/470 1071/1919/469 1059/1920/469 +f 1055/1921/472 1065/1922/471 1053/1923/471 +f 1057/1924/473 1067/1925/472 1055/1921/472 +f 1059/1920/469 1069/1926/473 1057/1924/473 +f 1058/1927/605 1060/1928/605 1050/1929/605 +f 1051/1930/475 1062/1931/470 1049/1918/470 +f 1053/1932/471 1063/1933/475 1051/1930/475 +f 1072/1934/606 1058/1935/607 1070/1936/607 +f 1068/1937/608 1058/1935/607 1056/1938/608 +f 1068/1937/608 1054/1939/609 1066/1940/609 +f 1066/1941/609 1052/1942/610 1064/1943/610 +f 1064/1943/610 1050/1944/611 1061/1945/611 +f 1084/1946/484 1066/1941/493 1064/1943/484 +f 1083/1947/483 1062/1931/488 1063/1933/483 +f 1076/1948/488 1071/1919/491 1062/1931/488 +f 1073/1949/491 1069/1926/492 1071/1919/491 +f 1075/1950/485 1064/1943/484 1061/1945/485 +f 1069/1926/492 1079/1951/490 1067/1925/490 +f 1072/1934/606 1050/1944/611 1060/1952/606 +f 1074/1953/469 1076/1948/470 1075/1950/470 +f 1078/1954/473 1073/1949/469 1074/1953/469 +f 1079/1951/472 1078/1954/473 1080/1955/472 +f 1081/1956/471 1080/1955/472 1082/1957/471 +f 1083/1947/475 1082/1958/471 1084/1946/475 +f 1076/1948/470 1084/1946/475 1075/1950/470 +f 1066/1940/493 1080/1955/489 1068/1937/489 +f 1074/1953/486 1061/1945/485 1072/1934/486 +f 1068/1937/489 1078/1954/487 1070/1936/487 +f 1081/1959/482 1063/1933/483 1065/1960/482 +f 1078/1954/487 1072/1934/486 1070/1936/487 +f 1079/1951/490 1065/1922/482 1067/1925/490 +f 1085/1961/612 1088/1962/613 1086/1963/614 +f 1087/1964/615 1090/1965/616 1088/1966/613 +f 1091/1967/617 1090/1965/616 1089/1968/618 +f 1093/1969/619 1092/1970/620 1091/1967/617 +f 1095/1971/621 1094/1972/622 1093/1969/619 +f 1095/1971/621 1086/1963/614 1096/1973/623 +f 1097/1974/624 1100/1975/625 1098/1976/626 +f 1101/1977/627 1100/1978/625 1099/1979/628 +f 1103/1980/629 1102/1981/630 1101/1977/627 +f 1105/1982/631 1104/1983/632 1103/1980/629 +f 1105/1982/631 1108/1984/633 1106/1985/634 +f 1107/1986/635 1098/1976/626 1108/1984/633 +f 1109/1987/636 1112/1988/637 1110/1989/638 +f 1111/1990/639 1114/1991/640 1112/1992/637 +f 1115/1993/641 1114/1991/640 1113/1994/642 +f 1117/1995/643 1116/1996/644 1115/1993/641 +f 1119/1997/645 1118/1998/646 1117/1995/643 +f 1119/1997/645 1110/1989/638 1120/1999/647 +f 1121/2000/648 1124/2001/649 1122/2002/650 +f 1123/2003/651 1126/2004/652 1124/2005/649 +f 1127/2006/653 1126/2004/652 1125/2007/654 +f 1129/2008/655 1128/2009/656 1127/2006/653 +f 1131/2010/657 1130/2011/658 1129/2008/655 +f 1131/2010/657 1122/2002/650 1132/2012/659 +f 1135/2013/660 1134/2014/661 1133/2015/662 +f 1137/2016/663 1136/2017/664 1135/2018/660 +f 1137/2016/663 1140/2019/665 1138/2020/666 +f 1139/2021/667 1142/2022/668 1140/2019/665 +f 1141/2023/669 1144/2024/670 1142/2022/668 +f 1133/2015/662 1144/2024/670 1143/2025/671 +f 1146/2026/561 1153/2027/549 1145/2028/551 +f 1146/2026/561 1155/2029/569 1154/2030/560 +f 1147/2031/559 1156/2032/557 1155/2029/569 +f 1149/2033/556 1156/2032/557 1148/2034/558 +f 1149/2033/556 1158/2035/555 1157/2036/566 +f 1151/2037/553 1158/2035/555 1150/2038/554 +f 1152/2039/550 1159/2040/552 1151/2041/553 +f 1145/2028/551 1160/2042/563 1152/2039/550 +f 1153/2027/549 1162/2043/571 1161/2044/562 +f 1155/2029/569 1162/2043/571 1154/2030/560 +f 1155/2029/569 1164/2045/568 1163/2046/570 +f 1157/2036/566 1164/2045/568 1156/2032/557 +f 1158/2035/555 1165/2047/567 1157/2036/566 +f 1158/2035/555 1167/2048/564 1166/2049/565 +f 1160/2042/563 1167/2050/564 1159/2040/552 +f 1153/2027/549 1168/2051/573 1160/2042/563 +f 1161/2052/562 1170/2053/580 1169/2054/572 +f 1163/2055/570 1170/2053/580 1162/2056/571 +f 1163/2055/570 1172/2057/578 1171/2058/579 +f 1165/2059/567 1172/2057/578 1164/2060/568 +f 1166/2061/565 1173/2062/577 1165/2059/567 +f 1166/2061/565 1175/2063/575 1174/2064/576 +f 1168/2065/573 1175/2066/575 1167/2067/564 +f 1161/2052/562 1176/2068/574 1168/2065/573 +f 1170/2053/580 1177/2069/556 1169/2054/572 +f 1171/2058/579 1178/2070/586 1170/2053/580 +f 1171/2058/579 1180/2071/584 1179/2072/585 +f 1173/2062/577 1180/2071/584 1172/2057/578 +f 1174/2064/576 1181/2073/551 1173/2062/577 +f 1175/2063/575 1182/2074/583 1174/2064/576 +f 1175/2066/575 1184/2075/581 1183/2076/582 +f 1169/2054/572 1184/2075/581 1176/2068/574 +f 1178/2070/586 1185/2077/566 1177/2069/556 +f 1178/2070/586 1187/2078/589 1186/2079/590 +f 1180/2071/584 1187/2078/589 1179/2072/585 +f 1181/2073/551 1188/2080/595 1180/2071/584 +f 1182/2074/583 1189/2081/549 1181/2073/551 +f 1182/2074/583 1191/2082/587 1190/2083/588 +f 1184/2075/581 1191/2084/587 1183/2076/582 +f 1184/2075/581 1185/2077/566 1192/2085/591 +f 1186/2079/590 1193/2086/567 1185/2077/566 +f 1186/2079/590 1195/2087/597 1194/2088/598 +f 1188/2080/595 1195/2087/597 1187/2078/589 +f 1188/2080/595 1197/2089/562 1196/2090/596 +f 1190/2083/588 1197/2089/562 1189/2081/549 +f 1190/2083/588 1199/2091/593 1198/2092/594 +f 1192/2085/591 1199/2093/593 1191/2084/587 +f 1185/2077/566 1200/2094/592 1192/2085/591 +f 1194/2088/598 1201/2095/577 1193/2086/567 +f 1194/2088/598 1203/2096/604 1202/2097/602 +f 1196/2090/596 1203/2096/604 1195/2087/597 +f 1197/2089/562 1204/2098/601 1196/2090/596 +f 1198/2092/594 1205/2099/572 1197/2089/562 +f 1199/2091/593 1206/2100/600 1198/2092/594 +f 1200/2094/592 1207/2101/599 1199/2093/593 +f 1193/2086/567 1208/2102/603 1200/2094/592 +f 1202/2097/602 1145/2028/551 1201/2095/577 +f 1202/2097/602 1147/2031/559 1146/2026/561 +f 1204/2098/601 1147/2031/559 1203/2096/604 +f 1204/2098/601 1149/2033/556 1148/2034/558 +f 1206/2100/600 1149/2033/556 1205/2099/572 +f 1207/2103/599 1150/2038/554 1206/2100/600 +f 1208/2102/603 1151/2041/553 1207/2101/599 +f 1201/2095/577 1152/2039/550 1208/2102/603 +f 911/1737/469 902/1766/470 889/1738/470 +f 905/1740/471 907/1743/472 895/1741/472 +f 907/1743/472 909/1745/473 897/1744/473 +f 909/1745/473 911/1737/469 899/1739/469 +f 894/1747/474 892/2104/474 890/1748/474 +f 890/1748/474 900/2105/474 898/2106/474 +f 898/2106/474 896/1746/474 890/1748/474 +f 889/1738/470 902/1766/470 903/1749/475 +f 903/1749/475 905/1777/471 893/1751/471 +f 910/1752/476 898/2107/476 900/1753/477 +f 896/1755/478 898/2107/476 910/1752/476 +f 894/1757/479 896/1755/478 908/1756/478 +f 892/1759/480 894/2108/479 906/1760/479 +f 901/1762/481 890/2109/481 892/1759/480 +f 906/1760/482 922/2110/482 924/1763/483 +f 903/1749/484 902/1766/485 916/1764/485 +f 902/1766/485 911/1737/486 913/1767/486 +f 909/1745/487 917/1769/487 913/1767/486 +f 904/1761/483 924/1763/483 915/1768/488 +f 907/1743/489 919/1772/489 917/1769/487 +f 900/1753/477 890/2109/481 901/1762/481 +f 915/1768/470 916/1764/470 913/1767/469 +f 914/1770/469 913/1767/469 917/1769/473 +f 918/1771/473 917/1769/473 919/1772/472 +f 922/1774/471 920/1773/472 919/1772/472 +f 924/1763/475 922/2110/471 921/1776/471 +f 924/1763/475 923/1765/475 916/1764/470 +f 908/1756/490 920/1773/490 922/1774/482 +f 901/1762/488 915/1768/488 914/1770/491 +f 910/1752/492 918/1771/492 920/1773/490 +f 903/1749/484 923/1765/484 921/1776/493 +f 912/1754/491 914/1770/491 918/1771/492 +f 905/1740/493 921/1775/493 919/1772/489 +f 925/1778/494 926/1789/504 928/1779/495 +f 927/1781/496 928/2111/495 930/1782/497 +f 930/1782/497 932/1785/500 931/1784/499 +f 932/1785/500 934/1787/502 933/1786/501 +f 934/1787/502 936/2112/672 935/1788/503 +f 935/1788/503 936/2112/672 926/1789/504 +f 937/1790/505 938/1802/515 940/1791/506 +f 940/1793/506 942/1796/509 941/1794/508 +f 942/1796/509 944/1798/511 943/1797/510 +f 944/1798/511 946/2113/673 945/1799/512 +f 945/1799/512 946/2113/673 948/1800/513 +f 947/1801/514 948/1800/513 938/1802/515 +f 949/1803/516 950/1814/526 952/1804/517 +f 951/1806/518 952/2114/517 954/1807/519 +f 954/1807/519 956/1810/522 955/1809/521 +f 956/1810/522 958/1812/524 957/1811/523 +f 958/1812/524 960/2115/674 959/1813/525 +f 959/1813/525 960/2115/674 950/1814/526 +f 961/1815/527 962/1826/537 964/1816/528 +f 963/1818/529 964/2116/528 966/1819/530 +f 966/1819/530 968/1822/533 967/1821/532 +f 968/1822/533 970/1824/535 969/1823/534 +f 970/1824/535 972/2117/675 971/1825/536 +f 971/1825/536 972/2117/675 962/1826/537 +f 974/1827/538 976/2118/541 975/1828/539 +f 976/1830/541 978/2119/676 977/1831/542 +f 977/1831/542 978/2119/676 980/1833/543 +f 979/1834/544 980/1833/543 982/1835/545 +f 981/1836/546 982/1835/545 984/1837/547 +f 984/1837/547 974/1827/538 973/1829/540 +f 993/1839/549 994/1854/563 986/1840/550 +f 986/1840/550 994/1854/563 995/1842/552 +f 995/1842/552 996/1845/555 988/1844/554 +f 996/1845/555 997/1857/566 989/1846/556 +f 989/1846/556 997/1857/566 998/1847/557 +f 998/1847/557 999/1860/569 991/1849/559 +f 991/1850/559 999/1862/569 1000/1851/560 +f 1000/1851/560 993/1839/549 985/1841/551 +f 1001/1853/562 1002/2120/573 994/1854/563 +f 994/1854/563 1002/2120/573 1003/1855/564 +f 1003/1855/564 1004/1856/565 996/1845/555 +f 1004/1856/565 1005/1858/567 997/1857/566 +f 1005/1858/567 1006/1859/568 998/1847/557 +f 1006/1859/568 1007/2121/570 999/1860/569 +f 1007/1861/570 1008/1863/571 1000/1851/560 +f 1008/1863/571 1001/1853/562 993/1839/549 +f 1009/1864/572 1010/1867/574 1002/1865/573 +f 1010/1867/574 1011/1869/575 1003/1868/564 +f 1011/1869/575 1012/1871/576 1004/1870/565 +f 1012/1871/576 1013/1873/577 1005/1872/567 +f 1013/1873/577 1014/1875/578 1006/1874/568 +f 1014/1875/578 1015/1886/579 1007/1876/570 +f 1015/1877/579 1016/1880/580 1008/1878/571 +f 1016/1880/580 1009/1864/572 1001/1866/562 +f 1009/1864/572 1017/1890/556 1018/1881/581 +f 1018/1881/581 1019/1882/582 1011/1869/575 +f 1019/1882/582 1020/1883/583 1012/1871/576 +f 1020/1883/583 1021/1884/551 1013/1873/577 +f 1021/1884/551 1022/1885/584 1014/1875/578 +f 1022/1885/584 1023/1895/585 1015/1886/579 +f 1023/1887/585 1024/1888/586 1016/1880/580 +f 1024/1888/586 1017/1890/556 1009/1864/572 +f 1025/1889/566 1026/1898/591 1018/1881/581 +f 1018/1881/581 1026/1898/591 1027/1891/587 +f 1019/1882/582 1027/1891/587 1028/1892/588 +f 1020/1883/583 1028/1892/588 1029/1893/549 +f 1029/1893/549 1030/1903/595 1022/1885/584 +f 1022/1885/584 1030/1903/595 1031/1894/589 +f 1023/1887/585 1031/1906/589 1032/1896/590 +f 1032/1896/590 1025/1889/566 1017/1890/556 +f 1033/1897/567 1034/1899/592 1026/1898/591 +f 1034/1899/592 1035/1900/593 1027/1891/587 +f 1035/1900/593 1036/1901/594 1028/1892/588 +f 1036/1901/594 1037/1902/562 1029/1893/549 +f 1037/1902/562 1038/1904/596 1030/1903/595 +f 1038/1904/596 1039/1912/597 1031/1894/589 +f 1039/1905/597 1040/1907/598 1032/1896/590 +f 1040/1907/598 1033/1897/567 1025/1889/566 +f 1041/1908/577 1042/1914/603 1034/1899/592 +f 1034/1899/592 1042/1914/603 1043/1909/599 +f 1043/1909/599 1044/1910/600 1036/1901/594 +f 1044/1910/600 1045/1915/572 1037/1902/562 +f 1037/1902/562 1045/1915/572 1046/1911/601 +f 1046/1911/601 1047/1916/604 1039/1912/597 +f 1039/1905/597 1047/1917/604 1048/1913/602 +f 1048/1913/602 1041/1908/577 1033/1897/567 +f 985/1841/551 986/1840/550 1042/1914/603 +f 986/1840/550 987/1843/553 1043/1909/599 +f 987/1843/553 988/1844/554 1044/1910/600 +f 988/1844/554 989/1846/556 1045/1915/572 +f 989/1846/556 990/1848/558 1046/1911/601 +f 990/1848/558 991/1849/559 1047/1916/604 +f 991/1850/559 992/1852/561 1048/1913/602 +f 1048/1913/602 992/1852/561 985/1841/551 +f 1049/1918/470 1062/1931/470 1071/1919/469 +f 1055/1921/472 1067/1925/472 1065/1922/471 +f 1057/1924/473 1069/1926/473 1067/1925/472 +f 1059/1920/469 1071/1919/469 1069/1926/473 +f 1050/1929/605 1052/2122/605 1054/2123/605 +f 1054/2123/605 1056/2124/605 1050/1929/605 +f 1056/2124/605 1058/1927/605 1050/1929/605 +f 1051/1930/475 1063/1933/475 1062/1931/470 +f 1053/1932/471 1065/1960/471 1063/1933/475 +f 1072/1934/606 1060/1952/606 1058/1935/607 +f 1068/1937/608 1070/1936/607 1058/1935/607 +f 1068/1937/608 1056/1938/608 1054/1939/609 +f 1066/1941/609 1054/2125/609 1052/1942/610 +f 1064/1943/610 1052/1942/610 1050/1944/611 +f 1084/1946/484 1082/1958/493 1066/1941/493 +f 1083/1947/483 1076/1948/488 1062/1931/488 +f 1076/1948/488 1073/1949/491 1071/1919/491 +f 1073/1949/491 1077/2126/492 1069/1926/492 +f 1075/1950/485 1084/1946/484 1064/1943/484 +f 1069/1926/492 1077/2126/492 1079/1951/490 +f 1072/1934/606 1061/1945/611 1050/1944/611 +f 1074/1953/469 1073/1949/469 1076/1948/470 +f 1078/1954/473 1077/2126/473 1073/1949/469 +f 1079/1951/472 1077/2126/473 1078/1954/473 +f 1081/1956/471 1079/1951/472 1080/1955/472 +f 1083/1947/475 1081/1959/471 1082/1958/471 +f 1076/1948/470 1083/1947/475 1084/1946/475 +f 1066/1940/493 1082/1957/493 1080/1955/489 +f 1074/1953/486 1075/1950/485 1061/1945/485 +f 1068/1937/489 1080/1955/489 1078/1954/487 +f 1081/1959/482 1083/1947/483 1063/1933/483 +f 1078/1954/487 1074/1953/486 1072/1934/486 +f 1079/1951/490 1081/1956/482 1065/1922/482 +f 1085/1961/612 1087/2127/615 1088/1962/613 +f 1087/1964/615 1089/1968/618 1090/1965/616 +f 1091/1967/617 1092/1970/620 1090/1965/616 +f 1093/1969/619 1094/1972/622 1092/1970/620 +f 1095/1971/621 1096/1973/623 1094/1972/622 +f 1095/1971/621 1085/1961/612 1086/1963/614 +f 1097/1974/624 1099/2128/628 1100/1975/625 +f 1101/1977/627 1102/1981/630 1100/1978/625 +f 1103/1980/629 1104/1983/632 1102/1981/630 +f 1105/1982/631 1106/1985/634 1104/1983/632 +f 1105/1982/631 1107/1986/635 1108/1984/633 +f 1107/1986/635 1097/1974/624 1098/1976/626 +f 1109/1987/636 1111/2129/639 1112/1988/637 +f 1111/1990/639 1113/1994/642 1114/1991/640 +f 1115/1993/641 1116/1996/644 1114/1991/640 +f 1117/1995/643 1118/1998/646 1116/1996/644 +f 1119/1997/645 1120/1999/647 1118/1998/646 +f 1119/1997/645 1109/1987/636 1110/1989/638 +f 1121/2000/648 1123/2130/651 1124/2001/649 +f 1123/2003/651 1125/2007/654 1126/2004/652 +f 1127/2006/653 1128/2009/656 1126/2004/652 +f 1129/2008/655 1130/2011/658 1128/2009/656 +f 1131/2010/657 1132/2012/659 1130/2011/658 +f 1131/2010/657 1121/2000/648 1122/2002/650 +f 1135/2013/660 1136/2131/664 1134/2014/661 +f 1137/2016/663 1138/2020/666 1136/2017/664 +f 1137/2016/663 1139/2021/667 1140/2019/665 +f 1139/2021/667 1141/2023/669 1142/2022/668 +f 1141/2023/669 1143/2025/671 1144/2024/670 +f 1133/2015/662 1134/2014/661 1144/2024/670 +f 1146/2026/561 1154/2030/560 1153/2027/549 +f 1146/2026/561 1147/2031/559 1155/2029/569 +f 1147/2031/559 1148/2034/558 1156/2032/557 +f 1149/2033/556 1157/2036/566 1156/2032/557 +f 1149/2033/556 1150/2038/554 1158/2035/555 +f 1151/2037/553 1159/2132/552 1158/2035/555 +f 1152/2039/550 1160/2042/563 1159/2040/552 +f 1145/2028/551 1153/2027/549 1160/2042/563 +f 1153/2027/549 1154/2030/560 1162/2043/571 +f 1155/2029/569 1163/2046/570 1162/2043/571 +f 1155/2029/569 1156/2032/557 1164/2045/568 +f 1157/2036/566 1165/2047/567 1164/2045/568 +f 1158/2035/555 1166/2049/565 1165/2047/567 +f 1158/2035/555 1159/2132/552 1167/2048/564 +f 1160/2042/563 1168/2051/573 1167/2050/564 +f 1153/2027/549 1161/2044/562 1168/2051/573 +f 1161/2052/562 1162/2056/571 1170/2053/580 +f 1163/2055/570 1171/2058/579 1170/2053/580 +f 1163/2055/570 1164/2060/568 1172/2057/578 +f 1165/2059/567 1173/2062/577 1172/2057/578 +f 1166/2061/565 1174/2064/576 1173/2062/577 +f 1166/2061/565 1167/2133/564 1175/2063/575 +f 1168/2065/573 1176/2068/574 1175/2066/575 +f 1161/2052/562 1169/2054/572 1176/2068/574 +f 1170/2053/580 1178/2070/586 1177/2069/556 +f 1171/2058/579 1179/2072/585 1178/2070/586 +f 1171/2058/579 1172/2057/578 1180/2071/584 +f 1173/2062/577 1181/2073/551 1180/2071/584 +f 1174/2064/576 1182/2074/583 1181/2073/551 +f 1175/2063/575 1183/2134/582 1182/2074/583 +f 1175/2066/575 1176/2068/574 1184/2075/581 +f 1169/2054/572 1177/2069/556 1184/2075/581 +f 1178/2070/586 1186/2079/590 1185/2077/566 +f 1178/2070/586 1179/2072/585 1187/2078/589 +f 1180/2071/584 1188/2080/595 1187/2078/589 +f 1181/2073/551 1189/2081/549 1188/2080/595 +f 1182/2074/583 1190/2083/588 1189/2081/549 +f 1182/2074/583 1183/2134/582 1191/2082/587 +f 1184/2075/581 1192/2085/591 1191/2084/587 +f 1184/2075/581 1177/2069/556 1185/2077/566 +f 1186/2079/590 1194/2088/598 1193/2086/567 +f 1186/2079/590 1187/2078/589 1195/2087/597 +f 1188/2080/595 1196/2090/596 1195/2087/597 +f 1188/2080/595 1189/2081/549 1197/2089/562 +f 1190/2083/588 1198/2092/594 1197/2089/562 +f 1190/2083/588 1191/2082/587 1199/2091/593 +f 1192/2085/591 1200/2094/592 1199/2093/593 +f 1185/2077/566 1193/2086/567 1200/2094/592 +f 1194/2088/598 1202/2097/602 1201/2095/577 +f 1194/2088/598 1195/2087/597 1203/2096/604 +f 1196/2090/596 1204/2098/601 1203/2096/604 +f 1197/2089/562 1205/2099/572 1204/2098/601 +f 1198/2092/594 1206/2100/600 1205/2099/572 +f 1199/2091/593 1207/2103/599 1206/2100/600 +f 1200/2094/592 1208/2102/603 1207/2101/599 +f 1193/2086/567 1201/2095/577 1208/2102/603 +f 1202/2097/602 1146/2026/561 1145/2028/551 +f 1202/2097/602 1203/2096/604 1147/2031/559 +f 1204/2098/601 1148/2034/558 1147/2031/559 +f 1204/2098/601 1205/2099/572 1149/2033/556 +f 1206/2100/600 1150/2038/554 1149/2033/556 +f 1207/2103/599 1151/2037/553 1150/2038/554 +f 1208/2102/603 1152/2039/550 1151/2041/553 +f 1201/2095/577 1145/2028/551 1152/2039/550 +o spinny_upper +v 0.127409 2.435693 -0.570525 +v 0.311433 2.435693 -0.573891 +v 0.127409 2.450696 -0.579187 +v 0.311433 2.447781 -0.580870 +v 0.127409 2.450696 -0.596510 +v 0.311433 2.447781 -0.594827 +v 0.127409 2.435693 -0.605172 +v 0.311433 2.435693 -0.601806 +v 0.127409 2.420691 -0.596510 +v 0.311433 2.423605 -0.594827 +v 0.127409 2.420691 -0.579187 +v 0.311433 2.423605 -0.580870 +v 0.296158 2.435693 -0.570525 +v 0.244484 2.435693 -0.570525 +v 0.244484 2.450696 -0.579187 +v 0.296158 2.450696 -0.579187 +v 0.244484 2.450696 -0.596510 +v 0.296158 2.450696 -0.596510 +v 0.244484 2.435693 -0.605172 +v 0.296158 2.435693 -0.605172 +v 0.244484 2.420691 -0.596510 +v 0.296158 2.420691 -0.596510 +v 0.244484 2.420691 -0.579187 +v 0.296158 2.420691 -0.579187 +v 0.248187 2.403485 -0.569253 +v 0.292455 2.403485 -0.569253 +v 0.292455 2.435693 -0.550658 +v 0.248187 2.435693 -0.550658 +v 0.248187 2.403485 -0.606444 +v 0.292455 2.403485 -0.606444 +v 0.248187 2.435693 -0.625039 +v 0.292455 2.435693 -0.625039 +v 0.248187 2.467901 -0.606444 +v 0.292455 2.467901 -0.606444 +v 0.248187 2.467901 -0.569253 +v 0.292455 2.467901 -0.569253 +v 0.264576 2.450435 -0.571215 +v 0.375908 2.663330 -0.587129 +v 0.252583 2.455839 -0.579309 +v 0.363915 2.668733 -0.595223 +v 0.252527 2.454715 -0.594713 +v 0.363860 2.667610 -0.610627 +v 0.264465 2.448188 -0.602023 +v 0.375797 2.661082 -0.617937 +v 0.276457 2.442784 -0.593929 +v 0.387789 2.655678 -0.609843 +v 0.276513 2.443907 -0.578525 +v 0.387845 2.656802 -0.594439 +v 0.265024 2.453681 -0.594850 +v 0.375908 2.504334 -0.806877 +v 0.253032 2.447653 -0.602490 +v 0.363915 2.498306 -0.814518 +v 0.252976 2.432656 -0.606182 +v 0.363859 2.483309 -0.818209 +v 0.264913 2.423687 -0.602232 +v 0.375797 2.474340 -0.814260 +v 0.276906 2.429715 -0.594592 +v 0.387789 2.480368 -0.806619 +v 0.276962 2.444712 -0.590900 +v 0.387845 2.495365 -0.802928 +v 0.264576 2.432207 -0.605240 +v 0.375908 2.246909 -0.719820 +v 0.252583 2.423077 -0.601869 +v 0.363915 2.237780 -0.716448 +v 0.252527 2.414932 -0.588746 +v 0.363859 2.229635 -0.703326 +v 0.264465 2.415917 -0.578996 +v 0.375797 2.230619 -0.693575 +v 0.276457 2.425046 -0.582368 +v 0.387789 2.239748 -0.696947 +v 0.276513 2.433191 -0.595490 +v 0.387845 2.247894 -0.710069 +v 0.264576 2.415689 -0.588028 +v 0.375908 2.252807 -0.450017 +v 0.252583 2.416074 -0.578304 +v 0.363915 2.253193 -0.440293 +v 0.252527 2.426037 -0.566502 +v 0.363860 2.263156 -0.428491 +v 0.264465 2.435615 -0.564425 +v 0.375797 2.272733 -0.426414 +v 0.276457 2.435229 -0.574150 +v 0.387789 2.272347 -0.436139 +v 0.276513 2.425266 -0.585951 +v 0.387845 2.262384 -0.447940 +v 0.269238 2.426954 -0.566999 +v 0.375908 2.512899 -0.361717 +v 0.257245 2.436322 -0.564361 +v 0.363915 2.522266 -0.359079 +v 0.257189 2.450624 -0.570190 +v 0.363860 2.536569 -0.364907 +v 0.269127 2.455559 -0.578657 +v 0.375797 2.541504 -0.373374 +v 0.281119 2.446192 -0.581295 +v 0.387789 2.532136 -0.376013 +v 0.281175 2.431889 -0.575466 +v 0.387845 2.517833 -0.370184 +v 0.380466 2.692867 -0.481324 +v 0.398360 2.686019 -0.484160 +v 0.405772 2.669487 -0.491008 +v 0.398360 2.652956 -0.497855 +v 0.380466 2.646108 -0.500692 +v 0.362572 2.652956 -0.497855 +v 0.355160 2.669487 -0.491008 +v 0.362572 2.686019 -0.484160 +v 0.380466 2.542218 -0.330675 +v 0.398360 2.539381 -0.337523 +v 0.405772 2.532534 -0.354054 +v 0.398360 2.525686 -0.370586 +v 0.380466 2.522850 -0.377434 +v 0.362572 2.525686 -0.370586 +v 0.355160 2.532534 -0.354054 +v 0.362572 2.539381 -0.337523 +v 0.380466 2.329168 -0.330675 +v 0.398360 2.332005 -0.337523 +v 0.405772 2.338852 -0.354054 +v 0.398360 2.345700 -0.370586 +v 0.380466 2.348536 -0.377434 +v 0.362572 2.345700 -0.370586 +v 0.355160 2.338852 -0.354054 +v 0.362572 2.332005 -0.337523 +v 0.380466 2.178519 -0.481324 +v 0.398360 2.185367 -0.484160 +v 0.405772 2.201899 -0.491008 +v 0.398360 2.218431 -0.497856 +v 0.380466 2.225278 -0.500692 +v 0.362572 2.218431 -0.497856 +v 0.355160 2.201899 -0.491008 +v 0.362572 2.185367 -0.484160 +v 0.380466 2.178519 -0.694373 +v 0.398360 2.185367 -0.691537 +v 0.405772 2.201899 -0.684689 +v 0.398360 2.218431 -0.677842 +v 0.380466 2.225278 -0.675005 +v 0.362572 2.218431 -0.677842 +v 0.355160 2.201899 -0.684689 +v 0.362572 2.185367 -0.691537 +v 0.380466 2.329168 -0.845022 +v 0.398360 2.332005 -0.838174 +v 0.405772 2.338852 -0.821643 +v 0.398360 2.345700 -0.805111 +v 0.380466 2.348536 -0.798263 +v 0.362572 2.345700 -0.805111 +v 0.355160 2.338852 -0.821643 +v 0.362572 2.332005 -0.838174 +v 0.380466 2.542218 -0.845022 +v 0.398360 2.539382 -0.838174 +v 0.405772 2.532534 -0.821643 +v 0.398360 2.525686 -0.805111 +v 0.380466 2.522850 -0.798263 +v 0.362572 2.525686 -0.805111 +v 0.355160 2.532534 -0.821643 +v 0.362572 2.539382 -0.838174 +v 0.380466 2.692867 -0.694373 +v 0.398360 2.686019 -0.691537 +v 0.405772 2.669487 -0.684689 +v 0.398360 2.652956 -0.677842 +v 0.380466 2.646108 -0.675005 +v 0.362572 2.652956 -0.677842 +v 0.355160 2.669487 -0.684689 +v 0.362572 2.686019 -0.691537 +v -0.044410 2.435693 -0.570525 +v -0.228434 2.435693 -0.573891 +v -0.044410 2.450695 -0.579187 +v -0.228434 2.447781 -0.580870 +v -0.044410 2.450695 -0.596510 +v -0.228434 2.447781 -0.594827 +v -0.044410 2.435693 -0.605172 +v -0.228434 2.435693 -0.601806 +v -0.044410 2.420690 -0.596510 +v -0.228434 2.423605 -0.594827 +v -0.044410 2.420690 -0.579187 +v -0.228434 2.423605 -0.580870 +v -0.213159 2.435693 -0.570525 +v -0.161486 2.435693 -0.570525 +v -0.161486 2.450695 -0.579187 +v -0.213159 2.450695 -0.579187 +v -0.161486 2.450695 -0.596510 +v -0.213159 2.450695 -0.596510 +v -0.161486 2.435693 -0.605172 +v -0.213159 2.435693 -0.605172 +v -0.161486 2.420690 -0.596510 +v -0.213159 2.420690 -0.596510 +v -0.161486 2.420690 -0.579187 +v -0.213159 2.420690 -0.579187 +v -0.165188 2.403485 -0.569253 +v -0.209457 2.403485 -0.569253 +v -0.209457 2.435693 -0.550658 +v -0.165188 2.435693 -0.550658 +v -0.165188 2.403485 -0.606444 +v -0.209457 2.403485 -0.606444 +v -0.165188 2.435693 -0.625039 +v -0.209457 2.435693 -0.625039 +v -0.165188 2.467901 -0.606444 +v -0.209457 2.467901 -0.606444 +v -0.165188 2.467901 -0.569253 +v -0.209457 2.467901 -0.569253 +v -0.181577 2.450435 -0.571215 +v -0.292909 2.663329 -0.587129 +v -0.169584 2.455838 -0.579309 +v -0.280916 2.668733 -0.595223 +v -0.169529 2.454715 -0.594713 +v -0.280861 2.667610 -0.610627 +v -0.181466 2.448187 -0.602023 +v -0.292798 2.661082 -0.617937 +v -0.193459 2.442784 -0.593929 +v -0.304791 2.655678 -0.609843 +v -0.193514 2.443907 -0.578525 +v -0.304846 2.656802 -0.594439 +v -0.182026 2.453681 -0.594850 +v -0.292909 2.504334 -0.806877 +v -0.170033 2.447653 -0.602490 +v -0.280916 2.498306 -0.814518 +v -0.169977 2.432656 -0.606182 +v -0.280861 2.483309 -0.818209 +v -0.181915 2.423687 -0.602232 +v -0.292798 2.474340 -0.814260 +v -0.193907 2.429715 -0.594592 +v -0.304791 2.480368 -0.806620 +v -0.193963 2.444712 -0.590901 +v -0.304846 2.495365 -0.802928 +v -0.181577 2.432206 -0.605240 +v -0.292909 2.246909 -0.719820 +v -0.169584 2.423077 -0.601869 +v -0.280916 2.237780 -0.716448 +v -0.169529 2.414932 -0.588746 +v -0.280861 2.229635 -0.703326 +v -0.181466 2.415916 -0.578996 +v -0.292798 2.230619 -0.693575 +v -0.193459 2.425046 -0.582368 +v -0.304791 2.239748 -0.696947 +v -0.193514 2.433191 -0.595490 +v -0.304846 2.247893 -0.710069 +v -0.181577 2.415688 -0.588028 +v -0.292909 2.252807 -0.450017 +v -0.169584 2.416074 -0.578304 +v -0.280916 2.253192 -0.440293 +v -0.169529 2.426037 -0.566502 +v -0.280861 2.263155 -0.428491 +v -0.181466 2.435614 -0.564425 +v -0.292798 2.272733 -0.426414 +v -0.193459 2.435229 -0.574150 +v -0.304791 2.272347 -0.436139 +v -0.193514 2.425266 -0.585951 +v -0.304846 2.262384 -0.447940 +v -0.186239 2.426954 -0.566999 +v -0.292909 2.512898 -0.361717 +v -0.174246 2.436321 -0.564361 +v -0.280916 2.522266 -0.359079 +v -0.174191 2.450624 -0.570190 +v -0.280861 2.536569 -0.364907 +v -0.186128 2.455559 -0.578657 +v -0.292798 2.541503 -0.373374 +v -0.198121 2.446191 -0.581295 +v -0.304791 2.532136 -0.376013 +v -0.198176 2.431889 -0.575466 +v -0.304846 2.517833 -0.370184 +v -0.297467 2.692866 -0.481324 +v -0.315361 2.686019 -0.484160 +v -0.322773 2.669487 -0.491008 +v -0.315361 2.652955 -0.497855 +v -0.297467 2.646108 -0.500692 +v -0.279574 2.652955 -0.497855 +v -0.272162 2.669487 -0.491008 +v -0.279574 2.686019 -0.484160 +v -0.297467 2.542217 -0.330675 +v -0.315361 2.539381 -0.337523 +v -0.322773 2.532533 -0.354054 +v -0.315361 2.525686 -0.370586 +v -0.297467 2.522849 -0.377434 +v -0.279574 2.525686 -0.370586 +v -0.272162 2.532533 -0.354054 +v -0.279574 2.539381 -0.337523 +v -0.297467 2.329168 -0.330675 +v -0.315361 2.332004 -0.337523 +v -0.322773 2.338852 -0.354054 +v -0.315361 2.345700 -0.370586 +v -0.297467 2.348536 -0.377434 +v -0.279574 2.345700 -0.370586 +v -0.272162 2.338852 -0.354054 +v -0.279574 2.332004 -0.337523 +v -0.297467 2.178519 -0.481324 +v -0.315361 2.185367 -0.484160 +v -0.322773 2.201899 -0.491008 +v -0.315361 2.218430 -0.497856 +v -0.297467 2.225278 -0.500692 +v -0.279574 2.218430 -0.497856 +v -0.272162 2.201899 -0.491008 +v -0.279574 2.185367 -0.484160 +v -0.297467 2.178519 -0.694373 +v -0.315361 2.185367 -0.691537 +v -0.322773 2.201899 -0.684689 +v -0.315361 2.218430 -0.677842 +v -0.297467 2.225278 -0.675005 +v -0.279574 2.218430 -0.677842 +v -0.272162 2.201899 -0.684689 +v -0.279574 2.185367 -0.691537 +v -0.297467 2.329168 -0.845022 +v -0.315361 2.332004 -0.838175 +v -0.322773 2.338852 -0.821643 +v -0.315361 2.345700 -0.805111 +v -0.297467 2.348536 -0.798263 +v -0.279574 2.345700 -0.805111 +v -0.272162 2.338852 -0.821643 +v -0.279574 2.332004 -0.838175 +v -0.297467 2.542218 -0.845022 +v -0.315361 2.539381 -0.838174 +v -0.322773 2.532534 -0.821643 +v -0.315361 2.525686 -0.805111 +v -0.297467 2.522850 -0.798263 +v -0.279574 2.525686 -0.805111 +v -0.272162 2.532534 -0.821643 +v -0.279574 2.539381 -0.838174 +v -0.297467 2.692866 -0.694373 +v -0.315361 2.686019 -0.691537 +v -0.322773 2.669487 -0.684689 +v -0.315361 2.652955 -0.677842 +v -0.297467 2.646107 -0.675005 +v -0.279574 2.652955 -0.677842 +v -0.272162 2.669487 -0.684689 +v -0.279574 2.686019 -0.691537 +vt 0.667698 0.362762 +vt 0.640199 0.358261 +vt 0.667737 0.359326 +vt 0.640924 0.375165 +vt 0.667891 0.369730 +vt 0.668100 0.373751 +vt 0.640202 0.370763 +vt 0.667750 0.366229 +vt 0.640072 0.366415 +vt 0.797021 0.387656 +vt 0.799345 0.386315 +vt 0.801670 0.390340 +vt 0.640507 0.354283 +vt 0.667871 0.355916 +vt 0.668100 0.352523 +vt 0.625761 0.363844 +vt 0.629027 0.361047 +vt 0.628740 0.364363 +vt 0.624989 0.366272 +vt 0.627746 0.367605 +vt 0.623515 0.368301 +vt 0.625501 0.370236 +vt 0.624459 0.355430 +vt 0.625663 0.350017 +vt 0.627780 0.353840 +vt 0.625518 0.358363 +vt 0.628748 0.357581 +vt 0.631848 0.353216 +vt 0.636858 0.357395 +vt 0.637511 0.352990 +vt 0.640110 0.362279 +vt 0.636532 0.361474 +vt 0.632177 0.357754 +vt 0.636165 0.365588 +vt 0.632064 0.361641 +vt 0.631496 0.365400 +vt 0.635666 0.370261 +vt 0.630110 0.369320 +vt 0.626558 0.373815 +vt 0.635872 0.378285 +vt 0.639755 0.347383 +vt 0.641864 0.350415 +vt 0.272875 0.980430 +vt 0.275844 0.934182 +vt 0.275844 0.980475 +vt 0.258029 0.980475 +vt 0.260998 0.934183 +vt 0.260998 0.980475 +vt 0.263967 0.980430 +vt 0.263967 0.934138 +vt 0.266937 0.980386 +vt 0.266937 0.934093 +vt 0.269906 0.980386 +vt 0.272875 0.934138 +vt 0.069661 0.912352 +vt 0.022650 0.909383 +vt 0.069673 0.909383 +vt 0.022650 0.927199 +vt 0.069660 0.924230 +vt 0.069673 0.927199 +vt 0.022636 0.924230 +vt 0.069634 0.921260 +vt 0.022611 0.921260 +vt 0.069622 0.918291 +vt 0.022613 0.915321 +vt 0.069636 0.915321 +vt 0.022638 0.912352 +vt 0.510857 0.889009 +vt 0.507887 0.936025 +vt 0.507887 0.888986 +vt 0.525704 0.888986 +vt 0.522734 0.936025 +vt 0.522734 0.888985 +vt 0.519765 0.889008 +vt 0.519765 0.936048 +vt 0.516795 0.889032 +vt 0.516795 0.936071 +vt 0.513826 0.889032 +vt 0.510856 0.936049 +vt 0.235523 0.934138 +vt 0.232554 0.980386 +vt 0.232554 0.934093 +vt 0.250369 0.934093 +vt 0.247400 0.980386 +vt 0.247400 0.934093 +vt 0.244431 0.934138 +vt 0.244431 0.980430 +vt 0.241462 0.934182 +vt 0.241462 0.980475 +vt 0.238492 0.934183 +vt 0.235523 0.980431 +vt 0.653181 0.902823 +vt 0.650212 0.855426 +vt 0.653181 0.855373 +vt 0.668027 0.902875 +vt 0.665058 0.855446 +vt 0.668027 0.855426 +vt 0.662089 0.902864 +vt 0.662089 0.855415 +vt 0.659120 0.902812 +vt 0.659120 0.855362 +vt 0.656150 0.902791 +vt 0.656150 0.855341 +vt 0.025683 0.826823 +vt 0.021884 0.789889 +vt 0.025544 0.789862 +vt 0.018782 0.826867 +vt 0.018400 0.789856 +vt 0.014878 0.789795 +vt 0.015279 0.826832 +vt 0.011142 0.789754 +vt 0.011415 0.826831 +vt 0.007404 0.789713 +vt 0.007506 0.826837 +vt 0.003876 0.789648 +vt 0.032732 0.826779 +vt 0.029201 0.789834 +vt 0.032679 0.789870 +vt 0.029242 0.826771 +vt 0.025720 0.865955 +vt 0.022157 0.826877 +vt 0.021801 0.865308 +vt 0.015085 0.862608 +vt 0.011727 0.862107 +vt 0.008295 0.862683 +vt 0.003872 0.826817 +vt 0.029722 0.865385 +vt 0.025994 0.565415 +vt 0.022202 0.604746 +vt 0.021967 0.566009 +vt 0.018260 0.567466 +vt 0.018693 0.604681 +vt 0.014786 0.568861 +vt 0.015069 0.604588 +vt 0.011355 0.569425 +vt 0.011185 0.604506 +vt 0.008031 0.568914 +vt 0.007334 0.604417 +vt 0.004839 0.567623 +vt 0.032684 0.604841 +vt 0.029929 0.566050 +vt 0.033402 0.567439 +vt 0.029299 0.604771 +vt 0.025502 0.641726 +vt 0.025772 0.604759 +vt 0.021844 0.641748 +vt 0.018359 0.641706 +vt 0.014837 0.641636 +vt 0.011099 0.641592 +vt 0.007360 0.641550 +vt 0.003830 0.604306 +vt 0.032636 0.641745 +vt 0.029158 0.641705 +vt 0.021831 0.678781 +vt 0.018346 0.678743 +vt 0.014827 0.678677 +vt 0.011097 0.678636 +vt 0.007366 0.678596 +vt 0.003834 0.641484 +vt 0.032643 0.678773 +vt 0.029159 0.678735 +vt 0.025505 0.715793 +vt 0.025495 0.678758 +vt 0.021841 0.715817 +vt 0.014836 0.715714 +vt 0.011107 0.715673 +vt 0.003857 0.715567 +vt 0.003846 0.678531 +vt 0.029169 0.715770 +vt 0.025517 0.752829 +vt 0.021853 0.752853 +vt 0.018355 0.715779 +vt 0.018367 0.752815 +vt 0.014848 0.752751 +vt 0.011118 0.752710 +vt 0.007376 0.715632 +vt 0.007387 0.752669 +vt 0.032664 0.752844 +vt 0.032653 0.715808 +vt 0.029180 0.752806 +vt 0.003867 0.752604 +vt 0.774087 0.364623 +vt 0.746460 0.361670 +vt 0.774047 0.361187 +vt 0.774240 0.354219 +vt 0.747273 0.348783 +vt 0.774450 0.350197 +vt 0.774100 0.357719 +vt 0.746551 0.353186 +vt 0.746422 0.357533 +vt 0.789362 0.387656 +vt 0.789362 0.390340 +vt 0.787038 0.391682 +vt 0.774220 0.368033 +vt 0.746549 0.365687 +vt 0.774450 0.371425 +vt 0.746857 0.369665 +vt 0.735376 0.362901 +vt 0.732111 0.360105 +vt 0.735089 0.359585 +vt 0.731339 0.357676 +vt 0.734095 0.356343 +vt 0.729864 0.355648 +vt 0.731851 0.353713 +vt 0.732013 0.373931 +vt 0.730809 0.368519 +vt 0.734129 0.370109 +vt 0.731867 0.365585 +vt 0.735098 0.366367 +vt 0.738198 0.370733 +vt 0.743861 0.370958 +vt 0.743208 0.366554 +vt 0.742881 0.362474 +vt 0.738526 0.366194 +vt 0.742016 0.353688 +vt 0.732274 0.362764 +vt 0.738414 0.362307 +vt 0.737846 0.358548 +vt 0.736460 0.354629 +vt 0.742222 0.345664 +vt 0.732908 0.350133 +vt 0.735961 0.378285 +vt 0.746104 0.376566 +vt 0.748214 0.373533 +vt 0.811899 0.970339 +vt 0.808930 0.924091 +vt 0.811899 0.924046 +vt 0.826746 0.970383 +vt 0.823776 0.924091 +vt 0.826746 0.924091 +vt 0.820807 0.970339 +vt 0.823776 0.970384 +vt 0.817838 0.970295 +vt 0.820807 0.924047 +vt 0.814869 0.970294 +vt 0.817838 0.924002 +vt 0.814869 0.924002 +vt 0.812160 0.913373 +vt 0.765149 0.916343 +vt 0.765137 0.913373 +vt 0.812159 0.901496 +vt 0.765149 0.898526 +vt 0.812172 0.898526 +vt 0.812134 0.904465 +vt 0.765136 0.901496 +vt 0.812122 0.907434 +vt 0.765111 0.904465 +vt 0.765112 0.910404 +vt 0.765099 0.907434 +vt 0.812135 0.910404 +vt 0.485381 0.936048 +vt 0.482411 0.889032 +vt 0.485381 0.889008 +vt 0.500228 0.936071 +vt 0.497258 0.889032 +vt 0.500228 0.889032 +vt 0.494289 0.936049 +vt 0.497258 0.936072 +vt 0.491320 0.936025 +vt 0.494289 0.889009 +vt 0.488350 0.936025 +vt 0.491320 0.888986 +vt 0.488350 0.888985 +vt 0.965791 0.003874 +vt 0.968760 0.050123 +vt 0.965791 0.050167 +vt 0.950945 0.003830 +vt 0.953915 0.050122 +vt 0.950945 0.050123 +vt 0.956884 0.003874 +vt 0.953914 0.003830 +vt 0.959853 0.003919 +vt 0.956884 0.050167 +vt 0.962822 0.003919 +vt 0.959853 0.050211 +vt 0.962822 0.050212 +vt 0.876485 0.910228 +vt 0.879454 0.862831 +vt 0.879454 0.910281 +vt 0.891331 0.910207 +vt 0.894301 0.862779 +vt 0.894301 0.910228 +vt 0.888362 0.862790 +vt 0.891331 0.862758 +vt 0.888362 0.910239 +vt 0.885393 0.862842 +vt 0.885393 0.910291 +vt 0.882424 0.862863 +vt 0.882424 0.910312 +vt 0.062775 0.641509 +vt 0.059389 0.604493 +vt 0.062914 0.604547 +vt 0.055631 0.641514 +vt 0.059115 0.641481 +vt 0.052110 0.641576 +vt 0.056014 0.604503 +vt 0.048373 0.641616 +vt 0.052511 0.604539 +vt 0.044635 0.641657 +vt 0.048647 0.604539 +vt 0.041107 0.641723 +vt 0.044738 0.604533 +vt 0.066432 0.641536 +vt 0.069963 0.604591 +vt 0.069910 0.641500 +vt 0.066474 0.604599 +vt 0.062951 0.565415 +vt 0.059033 0.566062 +vt 0.055567 0.567465 +vt 0.052316 0.568762 +vt 0.048959 0.569263 +vt 0.042074 0.567279 +vt 0.045526 0.568687 +vt 0.070633 0.567421 +vt 0.066954 0.565985 +vt 0.063226 0.865955 +vt 0.059433 0.826625 +vt 0.063004 0.826611 +vt 0.055492 0.863905 +vt 0.059198 0.865361 +vt 0.052300 0.826783 +vt 0.055924 0.826690 +vt 0.048586 0.861945 +vt 0.052017 0.862509 +vt 0.045263 0.862457 +vt 0.048416 0.826865 +vt 0.041061 0.827064 +vt 0.044565 0.826953 +vt 0.067160 0.865320 +vt 0.069915 0.826529 +vt 0.070633 0.863931 +vt 0.066530 0.826599 +vt 0.059076 0.789622 +vt 0.062734 0.789644 +vt 0.052068 0.789734 +vt 0.055591 0.789664 +vt 0.048331 0.789778 +vt 0.044592 0.789821 +vt 0.069867 0.789625 +vt 0.066389 0.789665 +vt 0.062727 0.752612 +vt 0.055577 0.752628 +vt 0.059063 0.752589 +vt 0.052058 0.752693 +vt 0.048328 0.752734 +vt 0.041077 0.752840 +vt 0.044597 0.752774 +vt 0.069875 0.752597 +vt 0.066390 0.752635 +vt 0.062736 0.715577 +vt 0.055587 0.715592 +vt 0.059072 0.715554 +vt 0.048338 0.715697 +vt 0.052068 0.715657 +vt 0.041088 0.715803 +vt 0.044608 0.715738 +vt 0.069885 0.715562 +vt 0.066400 0.715600 +vt 0.062748 0.678541 +vt 0.059084 0.678517 +vt 0.052079 0.678620 +vt 0.055599 0.678555 +vt 0.048349 0.678660 +vt 0.044619 0.678701 +vt 0.066411 0.678564 +vt 0.069896 0.678526 +vt 0.041098 0.678766 +vt 0.801670 0.387656 +vt 0.799345 0.391682 +vt 0.797021 0.390340 +vt 0.625924 0.361184 +vt 0.622584 0.352463 +vt 0.629612 0.345664 +vt 0.258029 0.934182 +vt 0.269906 0.934093 +vt 0.022599 0.918291 +vt 0.525704 0.936025 +vt 0.513826 0.936072 +vt 0.250369 0.980386 +vt 0.238492 0.980475 +vt 0.650212 0.902875 +vt 0.665058 0.902896 +vt 0.018335 0.863905 +vt 0.004842 0.864092 +vt 0.033402 0.863949 +vt 0.784714 0.390340 +vt 0.784714 0.387656 +vt 0.787038 0.386315 +vt 0.728934 0.371485 +vt 0.742515 0.358360 +vt 0.808930 0.970383 +vt 0.812172 0.916343 +vt 0.482411 0.936071 +vt 0.968760 0.003830 +vt 0.876485 0.862779 +vt 0.041103 0.604553 +vt 0.042071 0.863747 +vt 0.041066 0.789886 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 -0.8660 -0.5000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.8660 0.5000 +vn 0.2152 -0.8457 -0.4883 +vn 0.2152 -0.8457 0.4883 +vn 0.2152 0.0000 -0.9766 +vn 0.2152 0.8457 -0.4883 +vn 0.2152 0.8457 0.4883 +vn 0.2152 -0.0000 0.9766 +vn 0.9831 0.1587 -0.0916 +vn 0.9831 0.1587 0.0916 +vn -0.9831 0.1587 0.0916 +vn -0.9831 0.0000 0.1832 +vn -0.9831 -0.1587 0.0916 +vn -0.9831 -0.1587 -0.0916 +vn 0.9831 -0.0000 0.1832 +vn -0.9831 -0.0000 -0.1832 +vn 0.9831 0.0000 -0.1832 +vn 0.9831 -0.1587 0.0916 +vn 0.9831 -0.1587 -0.0916 +vn -0.9831 0.1587 -0.0916 +vn -0.0013 0.0752 0.9972 +vn -0.7649 0.4355 0.4747 +vn -0.7674 0.4364 0.4698 +vn -0.7685 0.3625 -0.5273 +vn -0.7709 0.3641 -0.5227 +vn -0.0085 -0.0701 -0.9975 +vn 0.0013 -0.0752 -0.9972 +vn 0.7649 -0.4355 -0.4747 +vn 0.7674 -0.4364 -0.4698 +vn 0.7685 -0.3625 0.5273 +vn 0.0084 0.0701 0.9975 +vn 0.0036 0.9722 0.2341 +vn -0.7691 0.5824 -0.2631 +vn -0.7690 0.5826 -0.2630 +vn -0.7757 -0.3873 -0.4982 +vn -0.7736 -0.3916 -0.4981 +vn -0.0076 -0.9717 -0.2361 +vn -0.0036 -0.9722 -0.2341 +vn 0.7691 -0.5824 0.2631 +vn 0.7757 0.3873 0.4982 +vn 0.7736 0.3916 0.4981 +vn 0.0076 0.9717 0.2361 +vn 0.0010 0.5263 -0.8503 +vn -0.7687 -0.0687 -0.6359 +vn -0.7701 -0.0706 -0.6341 +vn -0.7723 -0.5975 0.2158 +vn -0.7736 -0.5967 0.2134 +vn -0.0061 -0.5286 0.8489 +vn -0.0010 -0.5264 0.8503 +vn 0.7687 0.0687 0.6359 +vn 0.7701 0.0706 0.6341 +vn 0.7723 0.5975 -0.2158 +vn 0.0061 0.5286 -0.8489 +vn -0.0013 -0.6470 -0.7625 +vn -0.7649 -0.6313 -0.1281 +vn -0.7674 -0.6292 -0.1236 +vn -0.7685 0.0167 0.6397 +vn -0.7709 0.0127 0.6369 +vn -0.0084 0.6431 0.7658 +vn 0.0013 0.6470 0.7625 +vn 0.7649 0.6313 0.1281 +vn 0.7674 0.6292 0.1236 +vn 0.7685 -0.0167 -0.6397 +vn 0.0084 -0.6431 -0.7658 +vn 0.0020 -0.9228 0.3853 +vn -0.7755 -0.3271 0.5400 +vn 0.0114 -0.9245 0.3811 +vn -0.7797 -0.3191 0.5387 +vn -0.7840 0.6009 0.1558 +vn -0.0114 0.9245 -0.3811 +vn -0.0020 0.9228 -0.3853 +vn 0.7755 0.3271 -0.5399 +vn 0.7797 0.3191 -0.5388 +vn 0.7840 -0.6009 -0.1558 +vn 0.7846 -0.6000 -0.1565 +vn -0.0000 0.3827 0.9239 +vn 0.6630 0.6916 0.2865 +vn -0.0000 0.9239 0.3827 +vn 0.9955 0.0363 0.0876 +vn 0.9955 0.0876 0.0363 +vn 0.7574 -0.6033 -0.2499 +vn 0.7574 -0.2499 -0.6033 +vn 0.0000 -0.9239 -0.3827 +vn -0.0000 -0.3827 -0.9239 +vn -0.7574 -0.6033 -0.2499 +vn -0.7574 -0.2499 -0.6033 +vn -0.9955 0.0876 0.0363 +vn -0.9955 0.0363 0.0876 +vn -0.6630 0.6916 0.2865 +vn -0.6630 0.2865 0.6916 +vn 0.0000 -0.3827 0.9239 +vn 0.6630 0.2865 0.6916 +vn 0.6630 -0.2865 0.6916 +vn 0.7574 0.2499 -0.6033 +vn 0.0000 0.3827 -0.9239 +vn -0.7574 0.2499 -0.6033 +vn -0.6630 -0.2865 0.6916 +vn 0.6630 -0.6916 0.2865 +vn 0.9955 -0.0363 0.0876 +vn 0.9955 -0.0876 0.0363 +vn 0.7574 0.6033 -0.2499 +vn 0.0000 0.9239 -0.3827 +vn -0.7574 0.6033 -0.2499 +vn -0.9955 -0.0363 0.0876 +vn -0.9955 -0.0876 0.0363 +vn -0.6630 -0.6916 0.2865 +vn 0.0000 -0.9239 0.3827 +vn 0.6630 -0.6916 -0.2865 +vn 0.9955 -0.0876 -0.0363 +vn 0.7574 0.6033 0.2499 +vn -0.7574 0.6033 0.2499 +vn -0.9955 -0.0876 -0.0363 +vn -0.6630 -0.6916 -0.2865 +vn 0.6630 -0.2865 -0.6916 +vn 0.9955 -0.0363 -0.0876 +vn 0.7574 0.2499 0.6033 +vn -0.7574 0.2499 0.6033 +vn -0.9955 -0.0363 -0.0876 +vn -0.6630 -0.2865 -0.6916 +vn 0.6630 0.2865 -0.6916 +vn 0.7574 -0.2499 0.6033 +vn -0.9955 0.0363 -0.0876 +vn -0.6630 0.2865 -0.6916 +vn 0.6630 0.6916 -0.2865 +vn 0.9955 0.0363 -0.0876 +vn 0.9955 0.0876 -0.0363 +vn 0.7574 -0.6033 0.2499 +vn -0.7574 -0.2499 0.6033 +vn -0.7574 -0.6033 0.2499 +vn -0.9955 0.0876 -0.0363 +vn -0.6630 0.6916 -0.2865 +vn -1.0000 -0.0000 0.0000 +vn -0.2152 -0.8457 0.4883 +vn -0.2152 -0.8457 -0.4883 +vn -0.2152 -0.0000 -0.9766 +vn -0.2152 0.8457 -0.4883 +vn -0.2152 0.8457 0.4883 +vn -0.2152 0.0000 0.9766 +vn 0.0013 0.0752 0.9972 +vn 0.7649 0.4355 0.4747 +vn -0.0085 0.0701 0.9975 +vn 0.7674 0.4364 0.4698 +vn 0.7685 0.3624 -0.5273 +vn 0.0084 -0.0701 -0.9975 +vn 0.7709 0.3641 -0.5227 +vn -0.7649 -0.4355 -0.4747 +vn -0.0013 -0.0752 -0.9972 +vn -0.7685 -0.3625 0.5273 +vn -0.7674 -0.4364 -0.4698 +vn -0.7709 -0.3641 0.5227 +vn -0.0036 0.9722 0.2341 +vn 0.7691 0.5824 -0.2631 +vn -0.0076 0.9717 0.2361 +vn 0.7757 -0.3873 -0.4982 +vn 0.7690 0.5826 -0.2630 +vn 0.0076 -0.9717 -0.2361 +vn 0.7736 -0.3916 -0.4981 +vn -0.7691 -0.5824 0.2631 +vn 0.0035 -0.9722 -0.2341 +vn -0.7758 0.3873 0.4982 +vn -0.7691 -0.5826 0.2630 +vn -0.7736 0.3916 0.4981 +vn -0.0010 0.5264 -0.8503 +vn 0.7687 -0.0687 -0.6359 +vn -0.0061 0.5286 -0.8489 +vn 0.7701 -0.0706 -0.6341 +vn 0.7723 -0.5975 0.2158 +vn 0.0061 -0.5286 0.8489 +vn 0.7736 -0.5967 0.2134 +vn -0.7687 0.0687 0.6359 +vn 0.0010 -0.5263 0.8503 +vn -0.7723 0.5975 -0.2158 +vn -0.7701 0.0706 0.6341 +vn -0.7736 0.5967 -0.2134 +vn 0.0013 -0.6470 -0.7625 +vn 0.7649 -0.6313 -0.1281 +vn -0.0085 -0.6431 -0.7658 +vn 0.7674 -0.6292 -0.1236 +vn 0.7685 0.0167 0.6397 +vn 0.0085 0.6431 0.7658 +vn 0.7709 0.0127 0.6369 +vn -0.7649 0.6313 0.1281 +vn -0.0013 0.6470 0.7625 +vn -0.7685 -0.0167 -0.6397 +vn -0.7674 0.6292 0.1236 +vn -0.7709 -0.0127 -0.6369 +vn 0.7755 -0.3271 0.5399 +vn -0.0020 -0.9228 0.3853 +vn -0.0114 -0.9245 0.3811 +vn 0.7840 0.6009 0.1558 +vn 0.7797 -0.3191 0.5388 +vn 0.0114 0.9245 -0.3811 +vn 0.7846 0.6000 0.1565 +vn 0.0020 0.9228 -0.3853 +vn -0.7755 0.3271 -0.5399 +vn -0.7797 0.3191 -0.5387 +vn -0.7840 -0.6009 -0.1558 +vn -0.7846 -0.6000 -0.1565 +vn 0.7709 -0.3641 0.5227 +vn 0.7690 -0.5826 0.2630 +vn 0.7736 0.5967 -0.2134 +vn 0.7709 -0.0127 -0.6369 +vn -0.7846 0.6000 0.1565 +s 1 +f 1219/2135/677 1222/2136/678 1209/2137/678 +f 1225/2138/679 1215/2139/680 1213/2140/679 +f 1227/2141/680 1217/2142/681 1215/2139/680 +f 1229/2143/681 1219/2135/677 1217/2142/681 +f 1216/2144/682 1214/2145/682 1210/2146/682 +f 1209/2137/678 1223/2147/683 1211/2148/683 +f 1223/2147/683 1213/2149/679 1211/2148/683 +f 1218/2150/684 1232/2151/685 1230/2152/684 +f 1216/2153/686 1230/2152/684 1228/2154/686 +f 1214/2155/687 1228/2154/686 1226/2156/687 +f 1212/2157/688 1226/2158/687 1224/2159/688 +f 1210/2160/689 1224/2159/688 1221/2161/689 +f 1226/2158/690 1244/2162/691 1224/2159/691 +f 1223/2147/692 1236/2163/693 1243/2164/692 +f 1231/2165/694 1236/2163/693 1222/2136/693 +f 1229/2143/695 1233/2166/694 1231/2165/694 +f 1224/2159/691 1235/2167/696 1221/2161/696 +f 1227/2141/697 1237/2168/695 1229/2143/695 +f 1232/2151/685 1210/2160/689 1221/2161/689 +f 1235/2167/678 1233/2166/677 1234/2169/677 +f 1234/2169/677 1237/2168/681 1238/2170/681 +f 1238/2170/681 1239/2171/680 1240/2172/680 +f 1242/2173/679 1239/2171/680 1241/2174/679 +f 1244/2162/683 1241/2175/679 1243/2164/683 +f 1244/2162/683 1236/2163/678 1235/2167/678 +f 1228/2154/698 1242/2173/690 1226/2156/690 +f 1221/2161/696 1234/2169/699 1232/2151/699 +f 1230/2152/700 1240/2172/698 1228/2154/698 +f 1223/2147/692 1241/2175/701 1225/2176/701 +f 1232/2151/699 1238/2170/700 1230/2152/700 +f 1225/2138/701 1239/2171/697 1227/2141/697 +f 1245/2177/702 1248/2178/703 1247/2179/704 +f 1247/2180/704 1250/2181/705 1249/2182/706 +f 1250/2181/705 1251/2183/707 1249/2182/706 +f 1252/2184/708 1253/2185/709 1251/2183/707 +f 1254/2186/710 1255/2187/711 1253/2185/709 +f 1255/2187/711 1246/2188/712 1245/2177/702 +f 1257/2189/713 1260/2190/714 1259/2191/715 +f 1260/2192/714 1261/2193/716 1259/2194/715 +f 1262/2195/717 1263/2196/718 1261/2193/716 +f 1264/2197/719 1265/2198/720 1263/2196/718 +f 1265/2198/720 1268/2199/721 1267/2200/722 +f 1267/2200/722 1258/2201/723 1257/2189/713 +f 1269/2202/724 1272/2203/725 1271/2204/726 +f 1271/2205/726 1274/2206/727 1273/2207/728 +f 1274/2206/727 1275/2208/729 1273/2207/728 +f 1276/2209/730 1277/2210/731 1275/2208/729 +f 1278/2211/732 1279/2212/733 1277/2210/731 +f 1279/2212/733 1270/2213/734 1269/2202/724 +f 1281/2214/735 1284/2215/736 1283/2216/737 +f 1283/2217/737 1286/2218/738 1285/2219/739 +f 1286/2218/738 1287/2220/740 1285/2219/739 +f 1288/2221/741 1289/2222/742 1287/2220/740 +f 1290/2223/743 1291/2224/744 1289/2222/742 +f 1291/2224/744 1282/2225/745 1281/2214/735 +f 1294/2226/746 1295/2227/747 1293/2228/748 +f 1296/2229/749 1297/2230/750 1295/2231/747 +f 1297/2230/750 1300/2232/751 1299/2233/752 +f 1299/2233/752 1302/2234/753 1301/2235/754 +f 1301/2235/754 1304/2236/755 1303/2237/756 +f 1304/2236/755 1293/2228/748 1303/2237/756 +f 1313/2238/757 1306/2239/758 1305/2240/759 +f 1306/2239/758 1315/2241/760 1307/2242/761 +f 1315/2241/760 1308/2243/762 1307/2242/761 +f 1316/2244/763 1309/2245/764 1308/2243/762 +f 1317/2246/765 1310/2247/766 1309/2245/764 +f 1318/2248/767 1311/2249/768 1310/2247/766 +f 1319/2250/769 1312/2251/770 1311/2252/768 +f 1320/2253/771 1305/2240/759 1312/2251/770 +f 1321/2254/772 1314/2255/773 1313/2238/757 +f 1322/2256/774 1315/2241/760 1314/2255/773 +f 1315/2241/760 1324/2257/775 1316/2244/763 +f 1316/2244/763 1325/2258/776 1317/2246/765 +f 1325/2258/776 1318/2248/767 1317/2246/765 +f 1326/2259/777 1319/2260/769 1318/2248/767 +f 1319/2250/769 1328/2261/778 1320/2253/771 +f 1328/2261/778 1313/2238/757 1320/2253/771 +f 1321/2262/772 1330/2263/779 1322/2264/774 +f 1330/2263/779 1323/2265/780 1322/2264/774 +f 1331/2266/781 1324/2267/775 1323/2265/780 +f 1332/2268/782 1325/2269/776 1324/2267/775 +f 1333/2270/783 1326/2271/777 1325/2269/776 +f 1334/2272/784 1327/2273/785 1326/2271/777 +f 1335/2274/786 1328/2275/778 1327/2276/785 +f 1336/2277/787 1321/2262/772 1328/2275/778 +f 1337/2278/764 1330/2263/779 1329/2279/788 +f 1338/2280/789 1331/2266/781 1330/2263/779 +f 1339/2281/790 1332/2268/782 1331/2266/781 +f 1340/2282/791 1333/2270/783 1332/2268/782 +f 1341/2283/759 1334/2272/784 1333/2270/783 +f 1342/2284/792 1335/2285/786 1334/2272/784 +f 1343/2286/793 1336/2277/787 1335/2274/786 +f 1344/2287/794 1329/2279/788 1336/2277/787 +f 1337/2278/764 1346/2288/795 1338/2280/789 +f 1338/2280/789 1347/2289/796 1339/2281/790 +f 1347/2289/796 1340/2282/791 1339/2281/790 +f 1348/2290/797 1341/2283/759 1340/2282/791 +f 1349/2291/757 1342/2284/792 1341/2283/759 +f 1350/2292/798 1343/2293/793 1342/2284/792 +f 1351/2294/799 1344/2287/794 1343/2286/793 +f 1352/2295/800 1337/2278/764 1344/2287/794 +f 1353/2296/776 1346/2288/795 1345/2297/765 +f 1354/2298/801 1347/2289/796 1346/2288/795 +f 1347/2289/796 1356/2299/802 1348/2290/797 +f 1356/2299/802 1349/2291/757 1348/2290/797 +f 1357/2300/772 1350/2292/798 1349/2291/757 +f 1350/2292/798 1359/2301/803 1351/2302/799 +f 1351/2294/799 1360/2303/804 1352/2295/800 +f 1360/2303/804 1345/2297/765 1352/2295/800 +f 1361/2304/783 1354/2298/801 1353/2296/776 +f 1362/2305/805 1355/2306/806 1354/2298/801 +f 1363/2307/807 1356/2299/802 1355/2306/806 +f 1364/2308/808 1357/2300/772 1356/2299/802 +f 1365/2309/788 1358/2310/809 1357/2300/772 +f 1366/2311/810 1359/2301/803 1358/2310/809 +f 1367/2312/811 1360/2303/804 1359/2313/803 +f 1368/2314/812 1353/2296/776 1360/2303/804 +f 1305/2240/759 1362/2305/805 1361/2304/783 +f 1306/2239/758 1363/2307/807 1362/2305/805 +f 1307/2242/761 1364/2308/808 1363/2307/807 +f 1308/2243/762 1365/2309/788 1364/2308/808 +f 1309/2245/764 1366/2311/810 1365/2309/788 +f 1310/2247/766 1367/2315/811 1366/2311/810 +f 1311/2252/768 1368/2314/812 1367/2312/811 +f 1312/2251/770 1361/2304/783 1368/2314/812 +f 1369/2316/678 1391/2317/677 1379/2318/677 +f 1375/2319/680 1385/2320/679 1373/2321/679 +f 1377/2322/681 1387/2323/680 1375/2319/680 +f 1379/2318/677 1389/2324/681 1377/2322/681 +f 1378/2325/813 1380/2326/813 1370/2327/813 +f 1371/2328/683 1382/2329/678 1369/2316/678 +f 1373/2330/679 1383/2331/683 1371/2328/683 +f 1392/2332/814 1378/2333/815 1390/2334/815 +f 1390/2334/815 1376/2335/816 1388/2336/816 +f 1388/2336/816 1374/2337/817 1386/2338/817 +f 1386/2339/817 1372/2340/818 1384/2341/818 +f 1384/2341/818 1370/2342/819 1381/2343/819 +f 1404/2344/692 1386/2339/701 1384/2341/692 +f 1403/2345/691 1382/2329/696 1383/2331/691 +f 1396/2346/696 1391/2317/699 1382/2329/696 +f 1393/2347/699 1389/2324/700 1391/2317/699 +f 1395/2348/693 1384/2341/692 1381/2343/693 +f 1389/2324/700 1399/2349/698 1387/2323/698 +f 1392/2332/814 1370/2342/819 1380/2350/814 +f 1393/2347/677 1395/2348/678 1394/2351/677 +f 1398/2352/681 1393/2347/677 1394/2351/677 +f 1399/2349/680 1398/2352/681 1400/2353/680 +f 1401/2354/679 1400/2353/680 1402/2355/679 +f 1403/2345/683 1402/2356/679 1404/2344/683 +f 1396/2346/678 1404/2344/683 1395/2348/678 +f 1402/2355/701 1388/2336/697 1386/2338/701 +f 1394/2351/694 1381/2343/693 1392/2332/694 +f 1400/2353/697 1390/2334/695 1388/2336/697 +f 1401/2357/690 1383/2331/691 1385/2358/690 +f 1398/2352/695 1392/2332/694 1390/2334/695 +f 1399/2349/698 1385/2320/690 1387/2323/698 +f 1405/2359/820 1408/2360/821 1406/2361/822 +f 1407/2362/823 1410/2363/824 1408/2364/821 +f 1411/2365/825 1410/2363/824 1409/2366/826 +f 1413/2367/827 1412/2368/828 1411/2365/825 +f 1415/2369/829 1414/2370/830 1413/2367/827 +f 1415/2369/829 1406/2361/822 1416/2371/831 +f 1417/2372/832 1420/2373/833 1418/2374/834 +f 1421/2375/835 1420/2376/833 1419/2377/836 +f 1423/2378/837 1422/2379/838 1421/2375/835 +f 1425/2380/839 1424/2381/840 1423/2378/837 +f 1425/2380/839 1428/2382/841 1426/2383/842 +f 1427/2384/843 1418/2374/834 1428/2382/841 +f 1429/2385/844 1432/2386/845 1430/2387/846 +f 1431/2388/847 1434/2389/848 1432/2390/845 +f 1435/2391/849 1434/2389/848 1433/2392/850 +f 1437/2393/851 1436/2394/852 1435/2391/849 +f 1439/2395/853 1438/2396/854 1437/2393/851 +f 1439/2395/853 1430/2387/846 1440/2397/855 +f 1441/2398/856 1444/2399/857 1442/2400/858 +f 1443/2401/859 1446/2402/860 1444/2403/857 +f 1447/2404/861 1446/2402/860 1445/2405/862 +f 1449/2406/863 1448/2407/864 1447/2404/861 +f 1451/2408/865 1450/2409/866 1449/2406/863 +f 1451/2408/865 1442/2400/858 1452/2410/867 +f 1455/2411/868 1454/2412/869 1453/2413/870 +f 1457/2414/871 1456/2415/872 1455/2416/868 +f 1457/2414/871 1460/2417/873 1458/2418/874 +f 1459/2419/875 1462/2420/876 1460/2417/873 +f 1461/2421/877 1464/2422/878 1462/2420/876 +f 1453/2413/870 1464/2422/878 1463/2423/879 +f 1465/2424/759 1474/2425/771 1473/2426/757 +f 1467/2427/768 1474/2425/771 1466/2428/770 +f 1468/2429/766 1475/2430/769 1467/2427/768 +f 1469/2431/764 1476/2432/767 1468/2429/766 +f 1470/2433/762 1477/2434/765 1469/2431/764 +f 1471/2435/761 1478/2436/763 1470/2433/762 +f 1472/2437/758 1479/2438/760 1471/2439/761 +f 1472/2437/758 1473/2426/757 1480/2440/773 +f 1474/2425/771 1481/2441/772 1473/2426/757 +f 1475/2430/769 1482/2442/778 1474/2425/771 +f 1476/2432/767 1483/2443/785 1475/2430/769 +f 1477/2434/765 1484/2444/777 1476/2432/767 +f 1478/2436/763 1485/2445/776 1477/2434/765 +f 1478/2436/763 1487/2446/780 1486/2447/775 +f 1480/2440/773 1487/2448/780 1479/2438/760 +f 1473/2426/757 1488/2449/774 1480/2440/773 +f 1481/2450/772 1490/2451/787 1489/2452/788 +f 1483/2453/785 1490/2451/787 1482/2454/778 +f 1483/2453/785 1492/2455/784 1491/2456/786 +f 1485/2457/776 1492/2455/784 1484/2458/777 +f 1486/2459/775 1493/2460/783 1485/2457/776 +f 1486/2459/775 1495/2461/781 1494/2462/782 +f 1488/2463/774 1495/2464/781 1487/2465/780 +f 1481/2450/772 1496/2466/779 1488/2463/774 +f 1489/2452/788 1498/2467/794 1497/2468/764 +f 1491/2456/786 1498/2467/794 1490/2451/787 +f 1491/2456/786 1500/2469/792 1499/2470/793 +f 1493/2460/783 1500/2469/792 1492/2455/784 +f 1494/2462/782 1501/2471/759 1493/2460/783 +f 1495/2461/781 1502/2472/791 1494/2462/782 +f 1496/2466/779 1503/2473/790 1495/2464/781 +f 1489/2452/788 1504/2474/789 1496/2466/779 +f 1498/2467/794 1505/2475/765 1497/2468/764 +f 1498/2467/794 1507/2476/799 1506/2477/800 +f 1500/2469/792 1507/2476/799 1499/2470/793 +f 1501/2471/759 1508/2478/798 1500/2469/792 +f 1502/2472/791 1509/2479/757 1501/2471/759 +f 1502/2472/791 1511/2480/796 1510/2481/797 +f 1504/2474/789 1511/2482/796 1503/2473/790 +f 1504/2474/789 1505/2475/765 1512/2483/795 +f 1506/2477/800 1513/2484/776 1505/2475/765 +f 1506/2477/800 1515/2485/803 1514/2486/804 +f 1508/2478/798 1515/2485/803 1507/2476/799 +f 1508/2478/798 1517/2487/772 1516/2488/809 +f 1510/2481/797 1517/2487/772 1509/2479/757 +f 1510/2481/797 1519/2489/806 1518/2490/802 +f 1512/2483/795 1519/2491/806 1511/2482/796 +f 1505/2475/765 1520/2492/801 1512/2483/795 +f 1514/2486/804 1521/2493/783 1513/2484/776 +f 1515/2485/803 1522/2494/812 1514/2486/804 +f 1515/2485/803 1524/2495/810 1523/2496/811 +f 1517/2487/772 1524/2495/810 1516/2488/809 +f 1518/2490/802 1525/2497/788 1517/2487/772 +f 1519/2489/806 1526/2498/808 1518/2490/802 +f 1519/2491/806 1528/2499/805 1527/2500/807 +f 1513/2484/776 1528/2499/805 1520/2492/801 +f 1522/2494/812 1465/2424/759 1521/2493/783 +f 1522/2494/812 1467/2427/768 1466/2428/770 +f 1524/2495/810 1467/2427/768 1523/2496/811 +f 1525/2497/788 1468/2429/766 1524/2495/810 +f 1526/2498/808 1469/2431/764 1525/2497/788 +f 1527/2501/807 1470/2433/762 1526/2498/808 +f 1528/2499/805 1471/2439/761 1527/2500/807 +f 1521/2493/783 1472/2437/758 1528/2499/805 +f 1219/2135/677 1231/2165/677 1222/2136/678 +f 1225/2138/679 1227/2141/680 1215/2139/680 +f 1227/2141/680 1229/2143/681 1217/2142/681 +f 1229/2143/681 1231/2165/677 1219/2135/677 +f 1214/2145/682 1212/2502/682 1210/2146/682 +f 1210/2146/682 1220/2503/682 1218/2504/682 +f 1218/2504/682 1216/2144/682 1210/2146/682 +f 1209/2137/678 1222/2136/678 1223/2147/683 +f 1223/2147/683 1225/2176/679 1213/2149/679 +f 1218/2150/684 1220/2505/685 1232/2151/685 +f 1216/2153/686 1218/2150/684 1230/2152/684 +f 1214/2155/687 1216/2153/686 1228/2154/686 +f 1212/2157/688 1214/2506/687 1226/2158/687 +f 1210/2160/689 1212/2157/688 1224/2159/688 +f 1226/2158/690 1242/2507/690 1244/2162/691 +f 1223/2147/692 1222/2136/693 1236/2163/693 +f 1231/2165/694 1233/2166/694 1236/2163/693 +f 1229/2143/695 1237/2168/695 1233/2166/694 +f 1224/2159/691 1244/2162/691 1235/2167/696 +f 1227/2141/697 1239/2171/697 1237/2168/695 +f 1232/2151/685 1220/2505/685 1210/2160/689 +f 1235/2167/678 1236/2163/678 1233/2166/677 +f 1234/2169/677 1233/2166/677 1237/2168/681 +f 1238/2170/681 1237/2168/681 1239/2171/680 +f 1242/2173/679 1240/2172/680 1239/2171/680 +f 1244/2162/683 1242/2507/679 1241/2175/679 +f 1244/2162/683 1243/2164/683 1236/2163/678 +f 1228/2154/698 1240/2172/698 1242/2173/690 +f 1221/2161/696 1235/2167/696 1234/2169/699 +f 1230/2152/700 1238/2170/700 1240/2172/698 +f 1223/2147/692 1243/2164/692 1241/2175/701 +f 1232/2151/699 1234/2169/699 1238/2170/700 +f 1225/2138/701 1241/2174/701 1239/2171/697 +f 1245/2177/702 1246/2188/712 1248/2178/703 +f 1247/2180/704 1248/2508/703 1250/2181/705 +f 1250/2181/705 1252/2184/708 1251/2183/707 +f 1252/2184/708 1254/2186/710 1253/2185/709 +f 1254/2186/710 1256/2509/880 1255/2187/711 +f 1255/2187/711 1256/2509/880 1246/2188/712 +f 1257/2189/713 1258/2201/723 1260/2190/714 +f 1260/2192/714 1262/2195/717 1261/2193/716 +f 1262/2195/717 1264/2197/719 1263/2196/718 +f 1264/2197/719 1266/2510/881 1265/2198/720 +f 1265/2198/720 1266/2510/881 1268/2199/721 +f 1267/2200/722 1268/2199/721 1258/2201/723 +f 1269/2202/724 1270/2213/734 1272/2203/725 +f 1271/2205/726 1272/2511/725 1274/2206/727 +f 1274/2206/727 1276/2209/730 1275/2208/729 +f 1276/2209/730 1278/2211/732 1277/2210/731 +f 1278/2211/732 1280/2512/882 1279/2212/733 +f 1279/2212/733 1280/2512/882 1270/2213/734 +f 1281/2214/735 1282/2225/745 1284/2215/736 +f 1283/2217/737 1284/2513/736 1286/2218/738 +f 1286/2218/738 1288/2221/741 1287/2220/740 +f 1288/2221/741 1290/2223/743 1289/2222/742 +f 1290/2223/743 1292/2514/883 1291/2224/744 +f 1291/2224/744 1292/2514/883 1282/2225/745 +f 1294/2226/746 1296/2515/749 1295/2227/747 +f 1296/2229/749 1298/2516/884 1297/2230/750 +f 1297/2230/750 1298/2516/884 1300/2232/751 +f 1299/2233/752 1300/2232/751 1302/2234/753 +f 1301/2235/754 1302/2234/753 1304/2236/755 +f 1304/2236/755 1294/2226/746 1293/2228/748 +f 1313/2238/757 1314/2255/773 1306/2239/758 +f 1306/2239/758 1314/2255/773 1315/2241/760 +f 1315/2241/760 1316/2244/763 1308/2243/762 +f 1316/2244/763 1317/2246/765 1309/2245/764 +f 1317/2246/765 1318/2248/767 1310/2247/766 +f 1318/2248/767 1319/2260/769 1311/2249/768 +f 1319/2250/769 1320/2253/771 1312/2251/770 +f 1320/2253/771 1313/2238/757 1305/2240/759 +f 1321/2254/772 1322/2256/774 1314/2255/773 +f 1322/2256/774 1323/2517/780 1315/2241/760 +f 1315/2241/760 1323/2517/780 1324/2257/775 +f 1316/2244/763 1324/2257/775 1325/2258/776 +f 1325/2258/776 1326/2259/777 1318/2248/767 +f 1326/2259/777 1327/2518/785 1319/2260/769 +f 1319/2250/769 1327/2519/785 1328/2261/778 +f 1328/2261/778 1321/2254/772 1313/2238/757 +f 1321/2262/772 1329/2279/788 1330/2263/779 +f 1330/2263/779 1331/2266/781 1323/2265/780 +f 1331/2266/781 1332/2268/782 1324/2267/775 +f 1332/2268/782 1333/2270/783 1325/2269/776 +f 1333/2270/783 1334/2272/784 1326/2271/777 +f 1334/2272/784 1335/2285/786 1327/2273/785 +f 1335/2274/786 1336/2277/787 1328/2275/778 +f 1336/2277/787 1329/2279/788 1321/2262/772 +f 1337/2278/764 1338/2280/789 1330/2263/779 +f 1338/2280/789 1339/2281/790 1331/2266/781 +f 1339/2281/790 1340/2282/791 1332/2268/782 +f 1340/2282/791 1341/2283/759 1333/2270/783 +f 1341/2283/759 1342/2284/792 1334/2272/784 +f 1342/2284/792 1343/2293/793 1335/2285/786 +f 1343/2286/793 1344/2287/794 1336/2277/787 +f 1344/2287/794 1337/2278/764 1329/2279/788 +f 1337/2278/764 1345/2297/765 1346/2288/795 +f 1338/2280/789 1346/2288/795 1347/2289/796 +f 1347/2289/796 1348/2290/797 1340/2282/791 +f 1348/2290/797 1349/2291/757 1341/2283/759 +f 1349/2291/757 1350/2292/798 1342/2284/792 +f 1350/2292/798 1351/2302/799 1343/2293/793 +f 1351/2294/799 1352/2295/800 1344/2287/794 +f 1352/2295/800 1345/2297/765 1337/2278/764 +f 1353/2296/776 1354/2298/801 1346/2288/795 +f 1354/2298/801 1355/2306/806 1347/2289/796 +f 1347/2289/796 1355/2306/806 1356/2299/802 +f 1356/2299/802 1357/2300/772 1349/2291/757 +f 1357/2300/772 1358/2310/809 1350/2292/798 +f 1350/2292/798 1358/2310/809 1359/2301/803 +f 1351/2294/799 1359/2313/803 1360/2303/804 +f 1360/2303/804 1353/2296/776 1345/2297/765 +f 1361/2304/783 1362/2305/805 1354/2298/801 +f 1362/2305/805 1363/2307/807 1355/2306/806 +f 1363/2307/807 1364/2308/808 1356/2299/802 +f 1364/2308/808 1365/2309/788 1357/2300/772 +f 1365/2309/788 1366/2311/810 1358/2310/809 +f 1366/2311/810 1367/2315/811 1359/2301/803 +f 1367/2312/811 1368/2314/812 1360/2303/804 +f 1368/2314/812 1361/2304/783 1353/2296/776 +f 1305/2240/759 1306/2239/758 1362/2305/805 +f 1306/2239/758 1307/2242/761 1363/2307/807 +f 1307/2242/761 1308/2243/762 1364/2308/808 +f 1308/2243/762 1309/2245/764 1365/2309/788 +f 1309/2245/764 1310/2247/766 1366/2311/810 +f 1310/2247/766 1311/2249/768 1367/2315/811 +f 1311/2252/768 1312/2251/770 1368/2314/812 +f 1312/2251/770 1305/2240/759 1361/2304/783 +f 1369/2316/678 1382/2329/678 1391/2317/677 +f 1375/2319/680 1387/2323/680 1385/2320/679 +f 1377/2322/681 1389/2324/681 1387/2323/680 +f 1379/2318/677 1391/2317/677 1389/2324/681 +f 1370/2327/813 1372/2520/813 1374/2521/813 +f 1374/2521/813 1376/2522/813 1370/2327/813 +f 1376/2522/813 1378/2325/813 1370/2327/813 +f 1371/2328/683 1383/2331/683 1382/2329/678 +f 1373/2330/679 1385/2358/679 1383/2331/683 +f 1392/2332/814 1380/2350/814 1378/2333/815 +f 1390/2334/815 1378/2333/815 1376/2335/816 +f 1388/2336/816 1376/2335/816 1374/2337/817 +f 1386/2339/817 1374/2523/817 1372/2340/818 +f 1384/2341/818 1372/2340/818 1370/2342/819 +f 1404/2344/692 1402/2356/701 1386/2339/701 +f 1403/2345/691 1396/2346/696 1382/2329/696 +f 1396/2346/696 1393/2347/699 1391/2317/699 +f 1393/2347/699 1397/2524/700 1389/2324/700 +f 1395/2348/693 1404/2344/692 1384/2341/692 +f 1389/2324/700 1397/2524/700 1399/2349/698 +f 1392/2332/814 1381/2343/819 1370/2342/819 +f 1393/2347/677 1396/2346/678 1395/2348/678 +f 1398/2352/681 1397/2524/681 1393/2347/677 +f 1399/2349/680 1397/2524/681 1398/2352/681 +f 1401/2354/679 1399/2349/680 1400/2353/680 +f 1403/2345/683 1401/2357/679 1402/2356/679 +f 1396/2346/678 1403/2345/683 1404/2344/683 +f 1402/2355/701 1400/2353/697 1388/2336/697 +f 1394/2351/694 1395/2348/693 1381/2343/693 +f 1400/2353/697 1398/2352/695 1390/2334/695 +f 1401/2357/690 1403/2345/691 1383/2331/691 +f 1398/2352/695 1394/2351/694 1392/2332/694 +f 1399/2349/698 1401/2354/690 1385/2320/690 +f 1405/2359/820 1407/2525/823 1408/2360/821 +f 1407/2362/823 1409/2366/826 1410/2363/824 +f 1411/2365/825 1412/2368/828 1410/2363/824 +f 1413/2367/827 1414/2370/830 1412/2368/828 +f 1415/2369/829 1416/2371/831 1414/2370/830 +f 1415/2369/829 1405/2359/820 1406/2361/822 +f 1417/2372/832 1419/2526/836 1420/2373/833 +f 1421/2375/835 1422/2379/838 1420/2376/833 +f 1423/2378/837 1424/2381/840 1422/2379/838 +f 1425/2380/839 1426/2383/842 1424/2381/840 +f 1425/2380/839 1427/2384/843 1428/2382/841 +f 1427/2384/843 1417/2372/832 1418/2374/834 +f 1429/2385/844 1431/2527/847 1432/2386/845 +f 1431/2388/847 1433/2392/850 1434/2389/848 +f 1435/2391/849 1436/2394/852 1434/2389/848 +f 1437/2393/851 1438/2396/854 1436/2394/852 +f 1439/2395/853 1440/2397/855 1438/2396/854 +f 1439/2395/853 1429/2385/844 1430/2387/846 +f 1441/2398/856 1443/2528/859 1444/2399/857 +f 1443/2401/859 1445/2405/862 1446/2402/860 +f 1447/2404/861 1448/2407/864 1446/2402/860 +f 1449/2406/863 1450/2409/866 1448/2407/864 +f 1451/2408/865 1452/2410/867 1450/2409/866 +f 1451/2408/865 1441/2398/856 1442/2400/858 +f 1455/2411/868 1456/2529/872 1454/2412/869 +f 1457/2414/871 1458/2418/874 1456/2415/872 +f 1457/2414/871 1459/2419/875 1460/2417/873 +f 1459/2419/875 1461/2421/877 1462/2420/876 +f 1461/2421/877 1463/2423/879 1464/2422/878 +f 1453/2413/870 1454/2412/869 1464/2422/878 +f 1465/2424/759 1466/2428/770 1474/2425/771 +f 1467/2427/768 1475/2430/769 1474/2425/771 +f 1468/2429/766 1476/2432/767 1475/2430/769 +f 1469/2431/764 1477/2434/765 1476/2432/767 +f 1470/2433/762 1478/2436/763 1477/2434/765 +f 1471/2435/761 1479/2530/760 1478/2436/763 +f 1472/2437/758 1480/2440/773 1479/2438/760 +f 1472/2437/758 1465/2424/759 1473/2426/757 +f 1474/2425/771 1482/2442/778 1481/2441/772 +f 1475/2430/769 1483/2443/785 1482/2442/778 +f 1476/2432/767 1484/2444/777 1483/2443/785 +f 1477/2434/765 1485/2445/776 1484/2444/777 +f 1478/2436/763 1486/2447/775 1485/2445/776 +f 1478/2436/763 1479/2530/760 1487/2446/780 +f 1480/2440/773 1488/2449/774 1487/2448/780 +f 1473/2426/757 1481/2441/772 1488/2449/774 +f 1481/2450/772 1482/2454/778 1490/2451/787 +f 1483/2453/785 1491/2456/786 1490/2451/787 +f 1483/2453/785 1484/2458/777 1492/2455/784 +f 1485/2457/776 1493/2460/783 1492/2455/784 +f 1486/2459/775 1494/2462/782 1493/2460/783 +f 1486/2459/775 1487/2531/780 1495/2461/781 +f 1488/2463/774 1496/2466/779 1495/2464/781 +f 1481/2450/772 1489/2452/788 1496/2466/779 +f 1489/2452/788 1490/2451/787 1498/2467/794 +f 1491/2456/786 1499/2470/793 1498/2467/794 +f 1491/2456/786 1492/2455/784 1500/2469/792 +f 1493/2460/783 1501/2471/759 1500/2469/792 +f 1494/2462/782 1502/2472/791 1501/2471/759 +f 1495/2461/781 1503/2532/790 1502/2472/791 +f 1496/2466/779 1504/2474/789 1503/2473/790 +f 1489/2452/788 1497/2468/764 1504/2474/789 +f 1498/2467/794 1506/2477/800 1505/2475/765 +f 1498/2467/794 1499/2470/793 1507/2476/799 +f 1500/2469/792 1508/2478/798 1507/2476/799 +f 1501/2471/759 1509/2479/757 1508/2478/798 +f 1502/2472/791 1510/2481/797 1509/2479/757 +f 1502/2472/791 1503/2532/790 1511/2480/796 +f 1504/2474/789 1512/2483/795 1511/2482/796 +f 1504/2474/789 1497/2468/764 1505/2475/765 +f 1506/2477/800 1514/2486/804 1513/2484/776 +f 1506/2477/800 1507/2476/799 1515/2485/803 +f 1508/2478/798 1516/2488/809 1515/2485/803 +f 1508/2478/798 1509/2479/757 1517/2487/772 +f 1510/2481/797 1518/2490/802 1517/2487/772 +f 1510/2481/797 1511/2480/796 1519/2489/806 +f 1512/2483/795 1520/2492/801 1519/2491/806 +f 1505/2475/765 1513/2484/776 1520/2492/801 +f 1514/2486/804 1522/2494/812 1521/2493/783 +f 1515/2485/803 1523/2496/811 1522/2494/812 +f 1515/2485/803 1516/2488/809 1524/2495/810 +f 1517/2487/772 1525/2497/788 1524/2495/810 +f 1518/2490/802 1526/2498/808 1525/2497/788 +f 1519/2489/806 1527/2501/807 1526/2498/808 +f 1519/2491/806 1520/2492/801 1528/2499/805 +f 1513/2484/776 1521/2493/783 1528/2499/805 +f 1522/2494/812 1466/2428/770 1465/2424/759 +f 1522/2494/812 1523/2496/811 1467/2427/768 +f 1524/2495/810 1468/2429/766 1467/2427/768 +f 1525/2497/788 1469/2431/764 1468/2429/766 +f 1526/2498/808 1470/2433/762 1469/2431/764 +f 1527/2501/807 1471/2435/761 1470/2433/762 +f 1528/2499/805 1472/2437/758 1471/2439/761 +f 1521/2493/783 1465/2424/759 1472/2437/758 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 484174398..b550633a4 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -70,6 +70,14 @@ "door.garage_move": { "category": "block", "sounds": [{"name": "block/door/garage_move", "stream": false}] }, "door.garage_stop": { "category": "block", "sounds": [{"name": "block/door/garage_stop", "stream": false}] }, + "block.door.lever": {"category": "player", "sounds": [{"name": "hbm:block/doors/lever1", "stream": false}]}, + "block.door.wgh_big_start": {"category": "player", "sounds": [{"name": "hbm:block/doors/door_wgh_big_start", "stream": false}]}, + "block.door.wgh_big_stop": {"category": "player", "sounds": [{"name": "hbm:block/doors/door_wgh_big_stop", "stream": false}]}, + "block.door.qe_sliding_shut": {"category": "player", "sounds": [{"name": "hbm:block/doors/doorshut_1", "stream": false}]}, + "block.door.qe_sliding_opened": {"category": "player", "sounds": [{"name": "hbm:block/doors/doorslide_opened1", "stream": false}]}, + "block.door.qe_sliding_opening": {"category": "player", "sounds": [{"name": "hbm:block/doors/doorslide_opening1", "stream": false}]}, + "block.door.sliding_seal_open": {"category": "player", "sounds": [{"name": "hbm:block/doors/doormove2", "stream": false}]}, + "block.door.sliding_seal_stop": {"category": "player", "sounds": [{"name": "hbm:block/doors/metal_stop1", "stream": false}]}, "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_start.ogg b/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_start.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e85c687ae6c5ba6d184d72e1516389b3e728f8c8 GIT binary patch literal 69062 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_stop.ogg b/src/main/resources/assets/hbm/sounds/block/door/door_wgh_big_stop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c5322cd1acc91f86a1abac618eeec311a1bbdab1 GIT binary patch literal 24339 zcmagFWmH`~&@j3W?!}6`dvSM%;%*0bD^77*+$j#li)(QyP+HvGwYa+!zlT2WC-=u) zH!CMhGRY*FOfr+~LD|Ym9e@JzVVp2P|A1zY z@@vcg9bQ|$VvNGv!q9AA{;z-m{T~@d2v*0&$(lvk#fr?{##HMcaWXkFc2+iaR(4hn zGCE}kM;j*>3s(zAH~QBx;X!`tA1vKGOt^MGLg>xn{KLJI_l0sxgO9)onDD^4&vfw&6(CXx84-4VXH0>)<|b_M+* zYS(!3f?V-%eY#KM@tVMEgD|m=*ujxv2;{-kLOKaSv_cRloDWiF^IC>3{=X6_K5Gb8 z41qX!la&`GXq)#hQLq%B4mzZ4k1Y6&cymTj1s|j`6_>0^5FFngQSfgjy2#Jntj##V zFkE!epSM{1r-P8i!!v^9xc(9ZTZw(d`L7QuG1>SaII(`bU}-VP2;lgdv4e-iN(h1( z_z*~g$vDm50`UNln@<;+Pltp~P>Tfg0|2_HDt4bU(ZCm?ff^!Y1XNwv*Tq19)RT=Y zkd57vO`y_Ep#B$kBFdPCYX3#{f6Zk9Kt&Zr${8E}UpsREK*;5dEYyiCw2s^jk3|R$ zt$+do0RRTl4X1>LUFI(bjm4XE3~$IgjoeXJYh1Aeu_A_>7na2n1Vc6PxkA1_H^pc&UAT|61ny zO6p&7(6djJiS?Q-X>UpSI^F|;lzaDAGtvKdm4EgAF&Q#nQS{IllVy5@$z5wQX$(^W z_I}h zX-R%G`w&yz@V|ursG<%{0EMj^U4pT)TTR`8YgWhZgl{(^s9sCYuChT*p1v?i4e1~M z$RNBIhr>6ISAC^y8ctuF>4L;i@*g|NUY7;{lrM-TFo^$8JSQ5%pjO3%MCK`Wt|@gX zO?QjA6nEVwKmGX-@U7npB>r_b(Mhq;{eQ*(rViP9WDsHhZzA-)c&@{IdsIp2|7)6% z1qGb2W&X*VTrJi6Nve@aCgn>`Wh^08Y^fDF)U|B7Jve^bN+0R99@`UDF4giYR9DmhW>eg;4k?sZ2-ZqUVU@+MHpB~aTW zSb3$Cq-X4>XET)js{)|ER(TDPMIR$eKSq{(jNJ=Quue}YDa~LUEIMkfI{g2O$o~YK z3IN=wWL&6Z)TpG?AizKF2BN%jm#B-4O3H<4Xp-~4IZj{+K^Us-_TQoLKMMc=C%M{kR3ZC{t)H!%$YoUZfJ$nVkAb+bmrthj+q9~D zO%Wc4Jawan-DV~vdq7u6@IH#T5Zf%W2GR(Chy0N9#^c|DM6m(j6S^7_eMpk&DE)4{ z+92Bwky<2Qai;nxA6-_`ARkRuA|`!drWpjAnKUZ5otZc(M+cFQP7vfLPRD631)$Rc z>rO-?iJXeq)QVVA%Glr;EUB4f&Jj*7RSiu=Y{eN3O3yOEnFSQ|Vyr>TA8w=nAm zo^?0Dd!;-#C5sypXrq@ih~ZLz?krF#R}hc)hNc+#3P?&=;PM(!3y&F)6Jj^N$4#u)pDLAJvV zjz?)XBi@vmM*3<;Ol0P zn#11&q6<0$p#jlAM2p;i;*kjeLGiBP^ax)}AFDRammfB27o}RivMcx*} z44t8`zm#K7~)F&^2BSp1d$YEsDAjk8!uad|Y*(tUyC8qO<_pjE=fDK`olPkU&3@ zxe3n|4MIvSq6UJ9qVK~o8^thFfslf9PG4BBC2w2lq9hL?H7q6vA@yF4-f~p#fUICz zOy-r896e-I_7GC<<=7hWTpj5f3FK`cr0nGAdm*Hl8<+VJDnm3(Q3|`~O@~_=wCw(M zUO`>BXj;(#=^VANTSu+*wMBW&9G=+-eWQVT6ju|TPZe{Mp(~njgO+O~{TzR|DzXp>mc4f_Uw`v=`58w5Hck-L9b#&qs-Q z*1+|oy_YD+wsHqTioP+^uBv@*`7;v$82{UH!R#v5{qg`A5&*D{&L_-?~6?Ja_A)ys8 zfEoxui8a&Bw#q289g3y)%BCwTDnDqX)Xk=iEGsK(bnwcihx~1=s?z^g(ppu1m~Hc~ zgz2yY(yFYiigBppLs=Q*q=lFjXJ5+>S|KI1$H?V}gSAXcjgEv}2dxl`qtW4T&>2$c zp`(UKrm^awmG!aL33BcV{sI9douM-rN|C)#$gfACIb?{vWaj8<{ba!qeM%pkqy|w* za6|wAr9cP$Z`k>eGoPZOVOGzq5|Tu{LUxr9mHAI^{(mMQKn)8GPqhLEUM-mpUyj8@j5XE)0CmrTK~W|qJWT^tVxoPx05 z+qmlhfmX`w)Bjokgy1C8VMwPE@@zY=rb^gEF$-n5}SEJx1MV$WCeiFkmlqd01g4k z5(xYS`n^lG2ZIpH4FF={!{`yAA?s(km}C@1P=VbrAqGIn_h#82&4Db?2ID;tWse|^ z{#l1e6okmj`zMrk^(>e$Ggn>XfDA$xqCtUm5U}11P*7xa^^ec5@16Yx5Fv^Y67Yb( z0Kh957#_aE%FfBn%P%M_Dh`o}|3YA3;6FeVk_HC;cP|mO{8t3L-b-F9l0EZaP|#D5 zl9N(U(9z}>7o{a+ek;t$&WKA*|5B8Yl9gXnSe#QSx$yQ7KH~P)t^v(hK2GQ^c5C(L zwg`_!#FKkF(^|2*%)55@n{YgOklQvGHSGB*q2R64@Cy(BX$8HY-=XyI@0rZwyF2$u zF=bA-UB4^r7kWim0J?re`on!>s!a!x)^>)=wm#t*C#=D~pXa3j0QI*Ic=NkTNlnM~ zd2zv$K~S*y$9D00u9&R-w%_c~v$jz>0MlvZ8y$`n#;L z^hpmaiOf;oLNMn}8h zEk5g!>QF~;$SjQ^iokMb;QcV$UNw}m`S_Chyi@HZ`0T@f{H^(RW+o<;$5zIZL`yUG z%Y4{F^B}OfW@X5$@BR=&Y#Bq>6 z)2!nZ+|qcB#c_J7kGs9&sGTxPyC}_0g$AEEU0M*g#ZPx|P;Bt*=E9`_LWb{0-vHuo zQFdlBwIZxbR54S`_h{ubo2qzRb0jk-Q{|GxoY|o}I=(wkOIku*FWy{*ix<xKN)qAv`G~3jDk8MYnAY0JUkt2*e@Cka-lla}c3|*b~kr~|;(zQoqf#}%_Aj6ED+vdS}htdAw z-I8EQTe~jDnuoGB?{EynXJIBV!NJ5Xg_Ks9tIouP4J9&^6*YdK7wyPSCJvIYe zIz6^VduEjl+0fDVdV(c#~6~)F+|UrgoQHv@9xqTeA`Jp=_>ik{Z8jp z3pe)<BK&Bkofong%K#d6{Yik<5fn1N~iepzz?86LW<{wTqGnweFD`$Hn)|p}qMeYb?f_@Zf3^GX7sag_lq2rcgACvKiZr!>Mx3fE{BVfrS%41i8T0LP`oVG z({>(Uka&?Lo=d=u-YEgUO0+uk6VZ$;wz!A#gYwnXu=MWid--xgF^)SR%l1=3>B`d9< zaj}oAS&zMTw)VX{G08kHMMae6?4)Vo{R#CfE45wsPo3L>T5V0Nm`BwrA0mr&Zdso| zUL3Ob>N=*$qYC?4hnvv3&{#k=lkntEa&`1Ewywj)#U$zB@Z5c!@%dh#0Wmts`-z`! zaw*j^afj`HDiU$EXB@^#qB{G%JnE9;R2&C+W3SREMUdawN`%_g`Fd#uYz6Qh2{6U! zVB(dmh3&22>tppr-VluG7nMAyWomz6N_Q*TYChrlsI_TYl~qPhnXup|njge!1vt*f z%HfKxFGahH%11+uivcqL&|$y&v=f0E^!?4*6Nwu4!WZ!b45|`)d*ks>Pzcoy$9?+T zw*r^Mi-M{9+~;h>3ieU*zO#(%%$-0l5%6rhlNTvri3%XlPeBXJ#EdLSesu3#!j+fOO zKvZA_WfK`bo&MdkkLLNBx-gW!?I_8-OI0bmSN?^1529Y{J9bjymgey7x9hdc3@4Y5 z$M=X_s||_LyXrA;U90nvX091GzLPRjwndmAPC^~xHlh7$vs@CR+$g(pdv>YdRgmto z+1r-5=SJoNf6SDh4cR^eLKUR#4tSfy2X;3&kk*djKdNpsIX@Z7BU}`Ku3^(Up=p6t zLdT0WNp`p!P?dmsbe;v8r3gp-6nUUZvUl0ql4=uuBI)II*TT8xN~+;a!^cfMO(iei zM%`t;&n`86CM_BB4l5{GK-uquwR~9o5y9eC0BMA>BE(RUEz6~c!aS6%> z8|OQ350i~eOdz-spkYD9=sD5b8OrT1kef@ma0QMKU`jHKNOygtvE+s}@DB6=vJF-b ze~KYFeQ=>#osPDUag%A{{X895`}WEd9t1NsMsqU2Cs1Q(>Y;pVzkX*R?m7NT*a1dr zs96Wp&M){qr_sx2$`Lavh0i;*$?L9;PaAJfhVQdoJzI;j3 z6>x9-Y}i*porg7qS-%si5mJ#gd*+NU3w#eue#e^us{rsL1BNJu8;rkk5Ozi0A`Tw+ zW4Hz{FTbrTYDf_X7BBI>oiF7RKfbeisCoE3siPC2ocNEWiVsG+a}!ScCN${zE|_pRQX{Fr9|i6F_7 zRX=oEK!xv5ixt*kN)JQ=CJnCDhHwNjjhO}9Z#DVJU5TtO)d3ssNkush*WjMnfF^V~ z7J*c?)%-lY(M3<*NuNV1ZH6hP&wr19hZ~ICvJX_X@ZuZMnpX&S`<}mvm;Aj!zYF7M zoJZ`Yck{)}dOvj_Z>@w;1*_X0+&i@lZH&1@)ctgIWt0nr%mg_hR#SeStA0ngbs+ip z##L-bhfoG#JU2s{+8u#xnq%Pc<)j?(gUwU5$U%y+;{n&VubWJk{(gc@v}JBF%Bx<4 zM}C}C&z-!2t2I}VDIle_=|oLo6XNvbODuNnukq8{Ylz3C>xHMa0r8j`Kcb?g$!)aO z;vYn(S)#6d8q2LC=gy&k*o};GBvjoG(A>Jl2@0LefH2YO!_F@Tr&xUdYGo|NEUW0@ zS+?(;71HWQWY|zK@9=znQig5EI*01-L@AmoTjgl3Ti*L!NwOxOI$}uG(ajylQ(J_%2QBE}!l==Y&-rJ# z0!90!ls`X3^#-%YZJ7_{-WW+#jU>UrGhwEa=FCM4$j%PddsFPhTG@Stn*kM@Mk`jW z)y;isc++5$O(iRv$6t!Ht|bpW(b|bo5}jD z8P_)`cqO}TLrzDD+ME6QEek6><@U7;N~Lm5aZl?sYhcI~;$E`-#PnB_7ROi`-L?eL zO)h57sF2<)<9OoG2Fb$G1D1+@PNO1@5LVr=gZ!!VShLs{D?Qfl702>L84ejxCGfyA z;p&v9B*|WyvWrT`+KdAUvFYw`d`v-JI`;|m2|D>jO7O$5=iwWVcU@Mdi=HoEc6lf; z5srewY`MGHHTtV_O#{jvXNN^4r66ur-ej_S z9!3Q~Mam@rvJa1s1Wcf}E@@BkK zY#y>JG4Lo)HG}bX?+`4t7G{iET|ddq??wzC;8-ON@6R#{>MK=5jBHCKCNT-;^ViN! z^RJMoz-FDiH7{VgkUe|68Ok*0$SJL{%TY`E|X z5Wpedf9qUkm(NH-&>BnL$pHY*OIgEf#;Eg&zn-!^D0eWt-Q>rajBo1Ily=F6R};!O zgLxvX)j1pn8pp2F*aP5j8PIA*q%d$<-(X_i3SgI2{K$64m<#GY9vZUEc_&<7`fQ|h zf3t0lGs3&~heiAAeK%#%q-cymnzb|IEbcc7qt-?EJ#BK|kFB>YiAygd?8?#Lb3`%G z6d2I~jiBG(XoLnN^VUS#bOD-l$VW5(AJ<23iD_A%)2P>W_Pup=jrKE|_jCd^6^)rC zsl%OyIqr@VG9O?c?7)3!HE82#SNm!wAgNi9D=w#*cHbIk>Q<2sCw4s=VkLdIv8| zwz|F4+x!9|n1$(rktH*88g2!)U%!s)lU^1qJ7@4SPv9+~~*K>Ws_!ocU1>0MbVj!>NEX#zc-{gU7Y%#UvX zl4bC9PTH?Du{G}IXOf8<{@y%CZZ$Uw1vM<4MU|p3G1}b668a$v>}r1V%qM(h?u^G%zQodJ(ukf(0Lf=L7@y zo*za%1Mr6dgqMXL*Www!!w21#xn_FzRH2m-T)Xg_r(OA)$Q_G}Ehyx2+C>(J{Crx@ zxOv=hmuqKH%yTfQk(bBpwqgN^7GKaqmwn^n(tI?P=|0D& z=4`4$Q!4GaYKyRR`o?1x2oDP_@6dni6zY5;zG>~t{EAbml!eOLJB@}3v=K@FJ-}a5lEBM< zP^i41y=hFjwa1i=sFE+000kFsG>FaAy|05tq*nF6Hr2l zi?UmNTm2X(n@(9E$1cvphw2$%NAR3H9guON%A7N(zwfbat*1X(2VWf|CnPAyu-Q=L zWZ!|~F35|?)`QlbbF^K9)aT`uYPiA}Co|75loof9TFFjro#Tm4rl$M@&PW0K3r*_C z$!H?{X|3Y4qB4SQ&}Smj9}eIhp|s`wzwe~oufekTW;Y=r;id6(t9rKp1k*iaRT)V2pBRxs#A!fy1V+@fMQ>Dz+cGunR4s^P;1aY2S*DNXDg`$!R%3>y zxi7U=NqyhOI{z;3;rO9o>2t%dbiyT%ImOylN${Ni~#WfOPa*2U;^QQRm|X3ti;BM5f{R57^)|Hj|IAmPiNFL(c>- zMLvY5Kd|5z~Ed_ya#Ydk8>%2SfG3+YuMCNIf`Ts!W{Gqs?{j>iUnQ z8tiVSgR9U)a|r@(Zo6mDR10toPx4t%X6~%VLgsTp8h}vG+U4OD^E-fKbdIP`oD`jDO_uk>qUbUZmq z_J8advWe53KCrF221(S5Yd5&)2gb?}2ck-o%wbv#j$lcTb_M2(uk76uSaHglvr-=< z6BaukH_@v4e}19Me_3IYiWtfY)_%B-&^ z;dk6lAGxhu+Yk|v9dAVJSPDD*n8yy z{3RUYY{^Ra!yFRJFMx+4hYw43hpk=^s{n!fU%r8P#gZ82QwvVG-N zLnwJ=m}2JOQ(&Z1dP_|3r0u13MjEvzEZruuMq$sW*zrKdYUAWr9k9?!ytnfALB{C{ zK#nN%DnWb9?Kn9)rf$D|E0WcZ>~CF68iiBRP=Rffp%Z&{Mn_)ReUAbmxDdyM9`@?O z(-XUmEvmsL!O0VWS#Twxqker;Kg+#Q8s(6+nPB1ln>^>MF=Vk@36UfRT ze2Uu-DbnyVs$c9THADJHbH)cTfbZKHeCQB{2g&uT_wM{659ZOnCoc~<$J1Z_bU6L? zJD;j{n@v3LdD-ofJo-1Z{bcM`sHca(O1t{rkt*)zdT#BIc zL9Ao|l1+YUoFbmBd_j-#3K}$1ZU8{gao?7qZyAQ2)NA_W_~Ue`L1(3c6*`JR%116d zi96Q+=Xtu3~x@b3>M7MS`P6wJmpj86DUY|j7tU8y`5WAw&;4kkr`2-LE zbkAUVj@a#K0hxqMP=Gug3;_5ED2cQ_vxr3YjaB<;=_vE|MI_A{P&I^jDwW(Vgys+B zJlg1O@3Uu2X)eTX1!BjeAnqvXe>0w>iE#^x@Di)TT)!^f4|}OP|LdaGq*p#u zPdo44;?qM?h&UtJhpB=T7!hIE8Lm)u;3k!KBGv%<4UMWo8VLJ*|5&ob8Kl#K+_&$J zwxY?RK^LxAKTwK97qKJX89rwP) zj7(4G;|-F7UhTEmE*3OPnmz4Ys?w1(hc02mLFQZEvMgRaZ=2q|ywGX%Of9^b%h;~C zb^b`U=2&=@xhCUKPE>EC<@4;$$PD`}5|i>*8^&_abQGtb(#=Q-ZE}Apixi2M`wWo7 zgYo`oi~mS{ix_3ao!z|216|`*gi`3`e_ql0FSI+EedLS@E#SOsidnp-d=GtyBz;7s z_V*`mto|EM?fU22nJTOl{ct$J1M+dQ@4XU_YWtO528^X>G;cH{!mLH%DY4NB%KA~vFfaMjeK%q~19=!jRK7VyG%bQZfc^P@niO zh-eH=N%=5|#Q0BL0ph+)roLKAt9u7*i~a}F4Dh|5Rz5+ZJaf@5)tI98x0mNk9NBB< z5tFWqrNyS-o;6M-q7{FP)=EjmbqkI#WY%7wsm7KJCaYPf0y${c61T>0cWHezXI9f< zp43RZyjF^~`d3&y(hYg<`L2($exc{*+c2sPhn|*=Vfpvq>`w0Qg$RWbsQ8sqg|Sj+ z4x}%S?X^6v5k?%jDIQM!wDXMEdg~O~&PZ>&5Z*UBvT*NPCUiaZjnyjpFBH?jgWAH5 zAXTJ~GlZWl9+8rQZs297!KQ`w<-_Nt|fo&Fe1;4Om!pneZasLfK8 zO1O_M1*-xN6NHY?1_k7%rxAS~rk@%MGt06A$>!o9{?99gDE)tK=bbxuZE;!^NeY~|BF z@Q7X4ZTBx7BK!sVGC4o}Z+PEHPWGuDZ?8EI@I`*P?8lFE8p`EEf{&{)33;D9p`Q{O zd_7CMc-WzW-=xCC3?IHW#u6an`vX|Z$LXM&@UY!=3$WtQwX&zQ7KrL?+V zja7X}N*SKh7j~Uw9Dm!qyq5P*vH#n2w_Kr4+)lVvr1m{pGJkaC#!Qzx`7FZf=+PO< zy>9}t0J=wilHHnq<8bvpALo^tC^~=?dtURK)bmZy#6F0pYkhVG2fiv%^&w;q(~Ct7Wzmyeh!XEB7^T{GZ~%=Tus|5YsBZ_ z7Pi*6s7NT?;qb{NftbJ>EL}_X^oDi<-h6H~3M^xqJ%}CYf4|&grv;TBoz7=ogzIg@ z(>Q7|LWO8v$gxGnUbxRIq#DO{NiQ(c62g8xD0z(Gug*MMzQZZh{{7HVFkQ9I`v#du z2o(Gv+*@6Uc9s#35>%H2%@XRG-*IKCD_~%}sJ6|p=ZozI_<}&$1VS5>jxqQj z)k9CYab0CVLDDp;(B(xQ=m5G!*cX?+cuG!@h?j)NdX|P&f<~Xf)e?(b(LlOEI!g@> z^AleT0oX$N(lKUPi)e%=QRkn{=a>Dp z)s|KXxopzYLN}$3=QadoWW5i>HKVB{!&@aB0S?UFUm~R*B?T!ACBs*(xn^Q2?RtH* zBf_CSsCT!3gK4w|=WlZ=8nklR7{Uy@(&vgA@m4tRIr1v=RUGoM?>vIBO+ANT@b~IN z6AW7D83{O z&3yNqJ{dEAY*&qGwm3v+6P6?BgT>^W6$^1wZkecebe8(^72@Dh-d=wyTaJCyJ%8=l zEcf+9784#wM!nsK*lhB=n}!$pCCQD4hcfrom>rF8CssBl^Sc+&NPf6U<9KKXpFO{S znx5ZJJ(+zmSg^Yq7=z;3vi530N_{v?ytgXc)#s~P z{MH{Gs_QW)x`bwMtUuP+CMYCkRShj`*+aR_txZq$kB^s5qs}|d-_S7V)R5ca`}Xd* z64udpWwy9G)Y)!!BG_ASpq4RvEU%KtgO6}T0mJ!^?uxx4Cf-c7^*VxtabEE6IScA7w4 z;4gog9Np*nF*&_ON;;5r&Bj(6x6qO-vxlt;deNtG^2WEDh8lbCSN4y%J3}j1LSW%}4`*t!RjE5r7U! zT+$DGdr<|&`aW%c?Mw?%>tS}{UG|VdkUC+UfHGeExUr81`@yCg3R@zBQJB_jhW*I+ zKaYKX$<_rEzU%tC)s{xFR0Y>Ut9ia<&zpfpe_LdT^hGoyXOfY^wQ!OYO?fdz5F=0G z%91gU94vK0B`fLIpRDsH59ZCqkh9N++FP{G>h;@LhCY6cR!;Cw_MNwxgbsVbjaF~? z1Iwh_t#H&B_DQDf3bSkOXv~h8i%yD#W`*0i?|l?b4co0W*b13f+36 zK*35VI4PGb>Fim99o{)~xlpd0S`~HgUt_=&A3u(w(tb-1TvbB^;H%$^3@e-<7H_~9 zeb<5g6$?gmsOI@JnmmAh8;OJfSDYf-uy_`?A-b}>GV%My zmtA8pp^OjBThAX1cXwRD>oqvU;1p_&eL+PnTSFcgRcH*;`0qRsGD6?qO+X%U+Y73L z*=SZHLJp4;_@?n29mecAxA>!zdQV+rnQr5rxp_qHtFw#!UP$7;{BTThoA{#26h2+H zrGLU+;NioIq*y3>La`*U1RjQZvo@phZmRq#zm+KD+`VP%DNk*NJ>#L6ZIU`ZD{GC^ zn9w+E`G%TC^9LuTdXUo(no6>P9;o%y_XX)DeitK*6nWi<_q48VmF9eTT!c`;p171) zY5~wd2f@mqOorP!;$Jj}w76BTerykQ(Mg4JViY ztRkS@uX3)(&;5wVivaIJ&cbLUwo^G7rb+Fu$@{~kgh*PrE_A=Wq@YsH@3r(nVv}e6 zX*!G2xsdPTbTCNHOdt~dm6U2XlgJE%N=BqI!Z9OaH;KyL9tn)!$Y`_-jc?KJeoyn1yYE~23?X{at0#6y z)YV(=&c^(@5Ei9Gfj9b|rA}q`sN83hqpB)cJ6S?4pz`!15a`frzw<$WcV-X1^u*1K z-a9fRApcZgS(z71+f`))5z6N_3a|V6%)e;(oD8-?jssr8XWsr0$==(ay)6oi{*p`YUSlU zj6ZxnUOXljnM`quy`8i#r7&)dG>4I)U-{*$np;AY`({$^SDqxjPz!B#)fY;FzlTZ? zr&R*K13QK!xlG;*Ayegv=osQ?2U#+Wx2I&FP8oqQjdj3jtogFh#s80O%UiEvYX6H< zKLdTKCTlxUP~bWmEP(QjpOIZ&4@wnP|MRi}hdft#H_P-7`_*c>4CV6%nXhK_C)PTb zY?yAMJ8u}3%9_+CTdJ)u1z&o)7fz-<$xsQHg(!zMkwLJnNYn7lf`$Xc8toK8C}W@2 zQ#u7ydtnyU;p>BmzC?pO@WGQ@Ot64(K*Rk9A@(xb#42sE&`vR95eD8}?18A2Si( z#?Rx3pkrl|>*0QxDh7&1ezggFK@!=9=<{+ge0>2%r$b$-zUAE80v>Ah$BBWN2A2{w zzOMne=r`ms>m~?r*C4Qr62InP1kVz|A1R7)+P%L>0M!(jpJdo}D( zru(xb1F@gV#s>1aK+bu$dmFirlv>vfeXxG%FVT`k8JKWghcI4i@>s#cgJ19Er~6nr zGfh~(c2mt9yry(?+QQQ*NN{PpsOCjX7HZSbs)X0o#pT{N#~v$F>9o(=0c^ND-RsQ< zc++!TWf8&Yb)tnE@PdGN37|yI^wX|A|?4(2Ux%_ZD zAu<<<)$6%;UE6jq$0 z`BE`X1z**lPA`~^=r*W}4}VchG4*9h((96M)9akMYBVaEYQ6EoH@XE6zu0&?uYS(u zClm>}-QatiK^D1l@Sh_PU8DaErGh4Zn_Yt>4vr2}-LYN1P2$3>Z&6yZ|5Z#)8Q)Q6 zoQ@n3g2%>@96M`^&*UE8=0f0>7o`wG(e0ZUHhDD-^kC9u9pL$-ZDkw-4)Y1uS6Kns;>D>VzC&#fcpYyV2{Rw**1KcnVIu1OaM3s@xpR_}fH86}@|ta;66 z7$J`-jamGjMeaq-5(WJV0a@TwKN-7`Rl1kLodC04pIl`VuGAKw4aih--i!37A4DI&4QjI5D# z<;sRm70+}g-A^X`lEWuIHc3aq?YYL|Jes@m$z|3{WU@*V76MqgA|R^&`G=60|MLO? z@$>-J!fJlw=jIfZm1gDSl;@Nem*jtiyh400Ey^ga$jrX?ZFP_g;;jGekhq6uJOoKmN#Lo>ePC7TyiN}qbHTmipbdjCS!MKpg4oJ_2z1t zoI;#unhg_o&7-^LqHu^Y-_lg8n@*VXDpsB94Ms(!40L?-P%6f(-8M_DFUGvlB~2sm zu1m(>U#zJE0^B_n#p;WgAz5D;rT28Sg;TI;-m`)B2&g(cpkYYveZ!Gk=EizUI4uv4 zd%D1THCgf}LZ1Cemk2`bK5h0dcgMzk7Cs*Ds-ux%X3cKbCB-3djr#+e|8_G0G zL+uCz0{gflb3>v|ndhUE0qr+ZPzw_02Ek1$ja}c#2&E^tl>+CZV;2>fy-;OqiV1%@ zBS%`Hy5G6Mx|FN4P-qVxfIcyU04;KKYIEtxI62WV2Z^d~QLK>K)o0^>~1e=77THbi?L z!y6?bQrh`beIe8G7Rn~$+1bRPys%DQoP774_~g}zrIrIKpSmDN#57H%cYOUx1F2(Ur?LdG^0z2o(sX9mehV@|1cd%1=PJ$&T>9uZxLBd4E>2PnQ z?!PSv-Bvf5te}Xz(ZBvtIFB#0PYSXZ`U1$}dZwS3@0cGGP=-z}UA#P-UyILE`w$QC z)c|<8K=miMI+$255kqZ^i2ACqPt$>PAb{llvBI@XLdAuhxVVXJBTHMa!8(_a)rzk@ zHAt5H_EcvUmqAa?tYG8f-F`siTW1^EbBc1}WCr#Kq6r7x3aU@V(TNNsH5g6TK`X+G zk+b4vyndrJxO)YY_7ghgI{EW;7bbm0qqgGKsT_beeCx^FQ*gh=H|v4wD$g@P?*|2A z5DIGKyj$8`CskqUtUd<=s-iV469JNxH^2-3{{)E}cH{uQ`TTYr)BR@x3Tw>ftE7$* zD`cp98*nejAqbbjzqQAA{b~!9#HGj8tgE_5=bgGSZ&q~q zf82|YBP`z)ztYybOa>=s**!u`>@|_BuP=zWg=qCCgcs0WUuXb6*0T9OU2y+Q@BfbL zUpL3CyV*I0t235IaRWRU0R^Cfj$v!nW7K?aln)9_e3I}*0092^{M|ZKe1O0?+rP~9 z#X3n~M>Z^=az=NM03bOI!!hI_L*lm*;1$f?s< zU71zW)x;eqn|DWlwc@OwM%>164k%EiPBC2&jG;l_-5?o50O0=s z0RH*>w-%V@14`tatG_ZXLa)}lI*=e>rsZDjFj9Pmbb0m&@$_02kNHnn7&&~lv)=nX ziK?`GheKp_c@)cP<85rJsd*Q;)Y@fVDr(}ISOfCqvUCp3R~M4WtlcwvzRR~buQ3{c z&np4xP{k0Gnsdtwo@=-0d;jjQnPtz3Oj)a&E2+dxHrp5gGpWFmYj^Xg*t<@QAoK!s z0B;Qd-ue7nQ<_3HYT-EDjU3NT8ok`;T0Fs21*;nz!w~ln2$>`7!01ANG8+RV3 zH+R%~l`T$=6nBeTS}=0%oSbSULG0rwv8&inDIAY^siNe@8HUyXt>Bd1y@xBllAo>i z2O`rGn2mz2F`ERg?#(qSTttp0qa#o5vMom<8+dI%N#ZJp}U3`zWIjYe&ZRPU7 zu&5@BdBOw9z27*99BE>N2Zjj+F3%g-h8Mc~d#naWWXr7u$U!U2Q-*I{u4x!=o%zMA zXJtqMVVv)gAzct!4&iFRmHIn24G0>%0y=;{0W4nm{OXl#`3Ho=Ia`0};+1RVGBSY$ zW)=5RlrTJX_WaP<))WcLyJI0G>FZ~X;r%q;ir2$2v?y#`i7J!y9?k%a$Mp;nFTIGt z@mLs74&}1`MV)(D0P1su=P2wp$X(Xn??W#AfdaRsi5XkOBVqe6@*e=?kPt zlU(1Oi6UQ&MIQ%zAORq`BM2|EbxGf15EFt2yifoDlt0c!e|RdCKl=VoNA8Z8@z4Eb z9J!)8Mz6}{WvRE=pNvBy{uo*X42$IZ{p@e=6gw7S17T7u&RUmK)WnbQ)?s*Hcq*i{ zo;r=}Dp}EtBiX+1f@+fj?eFbWMVbImvJDh4@s-o=y-&hDlxp70bc^JzWMyM z_CygA6-TbjcWW_n>`Im8^kPJ$+%C&;`2U4)g!qon-;BR`HhP@bUdM@Qs^C`7AUVuq zM(_fh_!oHp(L1xDzJrcVY!@fLv?yKhgUENHcUAteqF)Ef*oxRT8BQmSdanRJFA$I@ zW902*AXmlRl>N)cmZ}qRv5QMA*$X~Osg-NV*0iP3GWZ01qM;RlgdP^C4?qJR`FzjQ ztO7Ct4f9Jp)58+185YoI@eTq2q)tc~za4fa?R`i4(;bo)R|yT*JfioAiURWUb<{wAs4<}7--xd|*5mv?$)8HpQW{p72K`3WoVZDy^FZmVt$ zkfJ?;mL^=~;A_gq)v|4M@h+_Se*%PpNR?*sQc-A(^RW=BXOJfmgT8ghXORmEpaTSG zlm!4@`TR4Rgd&4#!1PMngwDp+i>3)nndv)pypXcIG`VZ@N|N}=Sn_VwO7uogm!oQ_ z&f2Sf^B`ZYk;EsO%w68^OWONCqA!#f-9r>7?2SDWnRb|CF3@&(hbK>+@QTUxPQWgv zeRJoh?$LuE=F;|~xTkp#s&&||rTmTV~9XrW)S(J`7be&ag zD!Tv}05m`?0Dk%Wy*F_EnB*EcWa}HcYr%^MEkOWP<@8d=NWsLz#1X?=-k~;++IRQX zZEjg&E5)gOZpj~bLyC54_+qMbL>%W3;e$0B5h>qa951Tsllz`QXJXIL?AI0)vlUO? zeA|lML#Ez??#rD4$k=JT3O7>j{;bCG6aD#kR^-de?&kGWwbJFcF2)}a^wy%v_V`U} z?C^Ssgt6}aP`9j7uvmce004gYd`)GV3W1Pl$mUmV#I+5bM@sDWCK?qN?;rs{-izVz z_cqTr;%&ayvFi&tuW!DVq~}3L3jhE_`1K5b1yRK<2@kJSRsu6!eMOjElj!t#p2gDL zCWGHhuiEjVyspxI+n36iI=k!&o+|vCtTccs+!J(vJ^%LPcXnyyok&9!ZZ(q6wW4NA$AZh;UY;0uDrNq|7YUk3pG z`20>K0c0Qz&hz(LJw)iVmM{P)>zy4007zn_u&R9REr0E$f5%8#{(JY4yi%#wPyhgM zfkIny<5OvX_{?e~f0Ny}xb zpax8C%415tK27|o^b~K(B7Ri5;!j}JcEtW<_UtTcba|sATkfHF8!${w(jB)#{xw(S zl0d?v0l*tz0Ur7M@eM+J48+VSn_mj?6j3L+y@qWIP*ptSbcpc0+D4d_zoEa0=X%?k zliD-hpx)aLB~xEo&1NhH1zF6L$<^_-yzH~;cA_oyb&oKWA4Rl{FH*G5s8vYTN~K=; zcZ?>Wis2~Kc)bg)Njg(`3tK!Q@{HS8wMCZ`eRMysK#c&9G=N$e0Mz)Y1IEdzOPb}j z0V5~?{0IPk`25gyDuqadM8ov7`HgNmGhvqis5qm&6ctjEqmH%h*yiDH6=s^`Au%=Y zRG&0|Trrwnrzhk(ex3^Y(Z-CGQ@IV?{?$lM19Ms zd0&>la9p=yt=oe@%HdOo?U9MNIBT6hozve%E4)3QD+n_$nmx%31^HZ0H}v zjz7SiT$O|Cbpa-TjtBeR003V2e7i>8;$sstb3?A)j%YnD#?pw(M*B>U3`OU4&tw2;^={145g)A&bR3p zCir3M!@%lc(Q-^ofO9*Hq%=Ee>jg<>#Cvb2Gs3rHE`xRgc}_s=yffufrM^5L8Spm5 zk>~2lo=Bd)t0blfr0n@7=A!w?lSY~L7^gZ=!vi|}1`8hf{FQu`LO?Q;O_zD=JESIO zRiz#g2~*}y=FB66N*6uXwQFUvU1-2u$C3^#;=O5tsNl&ioi&HN) z@Hv;SwXfVxZQi+J>+~r{OzAyMT<`mK|CV*mKk90p{^sjEd5o;fW2=0bH2$z0M2P5n z4=wmUk0ODfiJdZ%P1tsA-)yxwenbcAFTvcjyJA-CE?i0WieVRkx04V+8l8ck+RKt7 zqsHGf%!s(74$d8`ESc^5^KKRU*L$7KQ|b!5J5lI>8f2=lh&+l{>UQ%4dO#>8c{WP2 z00~Ng1-|(FXbo2VKn|R8`EGZQ9Vv~}J!2c~QyoFLzq6%{H79wIW1Rl1sdqH7XV{s2E%A`p%?pIak+JJPno5tnNn9}{&8L`mVkpU zKwsAn050vVtIlv|Xfp;;TMl&Rk&oW3r{ZU-JmB(>Y?s!Iu1bMs(g)_Qc2>Ijr!dP{ z?CheHc};ja02TlM9{K#Wq%21UF(%6?8}5d_(*T=YK}CCc5dyo=|B)u?j&Fuz{Qdpu zq&_#jp4`_tnR%bEA5%QnCcca@F3y1K!*g49g~_Xz(MVLU63#ryTU^((xbvs@=9X3I+to4#pqbmZ`ZS_t!@TJm;e?40RH!U zjd2!EfB?C0Pg_rs!XB;4<_=~6U`0jX&?Qu^C++AqcGdTpR^CfOSC{tlPVxTNHPv;XvRWrRAi&Nf37Q&L5zbBn*Wj0v?Prgfk>Ii1^7S&ZjG-O4VZ4+m zj-hW12*R>A zdVjJ1;7BcS=MX90{PPHqg6d*<+%f6cU5?`=^``%R8Y8NE)#rd~%e&~70cDrWPHd^$ z?j=q50F8J7iT)BU!nLZhyr!mnQh7m2CuTvd@c_7;fB+u&{8(b^0@;utn|@0+o3y$! z>IDJGtjb>U1mQJg4<~zv3ZA5-?MV75A#12g%D2{WT<`28#_*M8b^aT^74)VccERva zpu`Fn4;`TfuvTqM=+mZC-`$%=g`P{tmojAJ+(k(r&$n(G|ty^q*&fGCz*u9};A4YT1(sjU7B^*acoph+F@ z7$5@P_k5i7fFlslkPEj%_gqS1Gxf^o4gvtgj+jEOzI#Z6wJ(qL07t+9DCNV;UoXeW zRiWQvbIao>>0n;n-|s9cWI1?IrMm1s{E3W+Y@h|pKA3-GakcaT>pn16 zsGCtAI)b^Sz!rv~Jf+UP`ls60|LC@yd!OhQDFBKr3|(0OBTEOfb3)epD5|OKIy&Vm zc9LrVvh`c^yRpmjwB>gRocB-zAbD+CSm%+B8OPR zK+jzdcjn1vSS7jr`DM-&I)bt@vmcR!7>+4%-Tg~HsTIbLCA~^v3x-}D+@Au_-NHc~ zs96#B-gc@X?OBv>EAb{sKrKK6e)oLNK20L+BH)|{A8VucUZ{iZ27oHdy&Ok^wGOXMhbJ82vbFCd@!g9Qoxn+Ym73u>pZy zW)=6=dm)@{Ny)!wi-`?qV}$c9F24|_#N>5P%X1r5t}S1pR}n7>6GGBkQ%^G>wN7k5 zETinFfD5YIq{6X(k_J2P)V)}iw(?t7=ODr3Hc68L!Rr?i{&tP5TUdLvh2lfEhz|!- z-V9WceLj3QrYMR|-t^ylxo?S4b5ww+?G)s$s5y{OMhqN6(qIB#Kn4K5_k3(ya0q0a zvf+0{W@lJx8vzTTs-i>Q5yK;EnvA$K$w~i@R3nN?$- z(tMn?VA|vSa!p-h1ZK1^ZD+i`h;j*m+w8J}vX0CXU>~9hJhxW z1@huMtMs?7FFEnBCRyudJNL21Nx4ZdPqNPp%Jgrg`cLQhx*dwR$Xu1ND!x&s#={Hn z7oY<^_k8RnNC;${vf(bWsI{n@Q8S~xme5%ke1x z{!sE(b(N2jN558&=NlKNM`2#6biMlvaQo(4{@sx;F8iYSXT% zFiAqxmPX2M%09iSE9zQn4G`Rz{<|>y0=T6M# zCQ2rxyhKF~7P9uW@%QyejfSQ5^uDk-3+an3ejlr!A5L$_b*FuM*t90ZCx*vzSV$b! zT#_zM##48l@i5eddY6Vs?FEELwRm6X{$QQzyb)JFLOgIh>HymA+?dl9Yr6477A5R2 zQrsq^ebaib{o$cbzJsp<+tS5Wl8Y7W_Rcxf;}uEOttoT5V3?&lRGKkRMLf;Ytt`55aiy8Q8Gj;;T79){yX-;}gCRc4n*>B1 z(jY|b107Q4YU~$Ntm08c-h~K_NA}mfCaFSH7ch(e}4*p}sWeFSNTKmi^XeVjg^pwn3JO=rEWyQ$|6u>jVr zih3LMLQ3&HrrucnjC#)Xm^)O?mQdA~9%EK3zI#s|#bP&8hK585T)u=+9_O=EnImLY z{apM!zrHnwV z{^$`gang?-J zYsD~-Lg*zqbG=%}nnj~*%u`B&6py{k4!l+M^^jj&E2;VW*Zlc!wN>6ul)&)Uf8>a| z7ACiPq;_Am{D-iM6O|E*meXoP5VPdJsx4c!c!)RI8Ww%#)*36g4&pnMZxdZslBvNo zwbY@+L;y>8w)a%A-ql%cr_$1QQ?y?a(mjM5VzC;=W;iy=mRY1TR*Y$@_M8GIfTnc{ z&;Y0f2p$)GTxt*kbcH3iQ<@325N5?rtc(ib=VL6DG)-=pX>Qji=OusE-1+mVszy{f zi{~R}%`rD~i`T=a;)MZn!S&>ehT^+Df&3`F=BC>J_DqQq*Omw2q78kiO~&@+$9sN# z$E2cNj>1BVF)7dqM_bBA>vvIU<|3|U&-qF@=$#2ENRptU%H!tAq(CV1)=j5YHmi2= z;5pi=^r!z)#MF6cR0DMB3INXlY`!ObKkAM;h*hZI>gAR_w3(Sxz2q6;9@p{upCs>3 z@8av%<;M9@_tx|2YGwTO1G>@*v(J|9yAWlG9sQ5tEe$RDSZt2F{_p#lis&1#A zH#$ZJG4vs%*PU{{EanTr7cB!F_ScA=-?d`9GmhBk>)RPEf3+b~&T%WCo*ur6xhgVg}*qG*fO2psc2 z(Y%BN0D#rU8Lo;gpiWQkH!;f{F>QWYXF5}Wp|_HGnpeRsg9C7fHPk%)yoqW44iB)H OEr0VEo`_9$U&C!Va_MSF2v5o$@z@_k0>0{ zzbB2<8!b411OPziM$9Z*>_!-hO)8~EvP~{EX@5c@^%f_Xocpc*7`br0hU^Od zA`g`j(!qwc9Z-d0Nws8zR0+Wb)A7lxg&+$ZkcalNGDQXVbG8tMBJwfC1n+PT&xfE( zMP!61@ckkUwU+cE{5J=kqpvG3;zQBtN)w1|DwwS0BY(lWnA!I{Kc~X08sJ-ql$H+ify9yBjQj(!>ix{fdBv^Y#QD- z8X|JZ(o>q?C8*=-|H}F)mLz}CVLHT~wY4foj^IQfLH@fAFg5~lqB#2l|EuIcVnxgX z)M}y4tnEBq%nZdkA&M;dChx?|s8*rfqr<7WV%P`8)2fl40^nV28(=t^rYI_idejhNZe6q~XZ7sAGR7w4V{usHJCL-2_qu7AJ$y{_2kkrh6%55{r2CXUb*~ zz|t&NH0H8@>ZE#J8UR4`2l)&R#sAHhbS7XHpk63ry&D|ST3bNbesM4zlIs! z`me+CFNmp5ily%VC;t;2b^=hrjQyV=z(HcSaiIgcWbFTn30qLWJAApn_NGuzr!-49 zG0Up@lUEf_R2^Stju$*bV5lzOsLpRW$7iU)ZwS_M)J}2KheB3UEmv>-H~&{QeDPOA zTmV2gkrtRp15Df&jH6SKuo-3sNFYD&$fzx*xNX5iI)y}f+eB;cl(O`U!}J{HioZhu z*v~_rQ&fppRJm7FnOEFFM50Z4N?CaZ%V^0-Tg~zRE2IB4a5@0Molee`P7XvT1A+m6 zwHx^IS-a$YTy!$7tYfph|74uO6NM>M+x_36@t*|%0A7xK#vhv@SH`7Z0I`8J*cL!C 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/door/doorslide_opened1.ogg b/src/main/resources/assets/hbm/sounds/block/door/doorslide_opened1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4e9f5cd4e259c862f970205b972dc11682706de7 GIT binary patch literal 13499 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/door/doorslide_opening1.ogg b/src/main/resources/assets/hbm/sounds/block/door/doorslide_opening1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ded65d1a19fa48153dacf37de42a88fb0c119984 GIT binary patch literal 14886 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%0DuMnE_S+d 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/door/metal_stop1.ogg b/src/main/resources/assets/hbm/sounds/block/door/metal_stop1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e131a539b0cf78253536b08b02d7bbfa70199b8f GIT binary patch literal 16388 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 VO6D2mzADfH2sH<4L)WSx{}1ntfbjqT literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/doors/large_vehicle_door.png b/src/main/resources/assets/hbm/textures/models/doors/large_vehicle_door.png new file mode 100644 index 0000000000000000000000000000000000000000..3085d29d2be4f5ab73f8cd8e8985a52441d0268c GIT binary patch literal 87580 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 z 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%0A%n1(;$Y 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 z zJRc4_hR+sYOR1g@j`mOz7?iG3H%&`>m}ju+~sNuX*x; zS#wb6dHp3dvsb<{=eA{QPCL!(3+VXK4)-sXwJ5tWFyOjjDMMRFZ#et_*vMaWvCiT6+p|wDIQWRi|L_7H8?$a@B$B@8&e)u}ls+>iHL6aC$vGot-d3jb9@m-%s%R zM;?8I1e$a*W_P-5S{(@qLys-Li7Vy`c_4!6=7M!qLNpU3uT+DSn7CT_IDt2r5c0n;}@w`S5b0J+S07_NZc`tt{$er`ttJ zE0Dx2IVmoz7P-psb8dt)nAb2}cB2RobXti!8cS?BwxC#kC68hg^GDb-x&%m(tewmf zzhvckNWlXY2N|v`=#N4ZEh;SieaQvD^@NpBsTH*(e0&Dh?RP)ueXNTuPBfaw)@FX= zFP`U?pI*V*63mn?X!2lEv?|F-;+vC)AnyP!%{F7~i416=WNHx8G(;1rCD;4|X65_t zc(=T7mFv~=@4mRb zS}I}n-T%ll-0{YL<|wf?nV-*-1mIGE1p+IR6q_V*7kU2tUVK$d>*h2J7hB7@cr*$~hF z{vq%?>D0&mq!%%Y6cZuf8o#&_-@2q!KM(qO!QZ=w4{FoI!{Zjhl!KFk<8}FjD=hv8uTQrW?th77FCDpVdMs$7Ls7_xy5iCc z7N2vW@Q4Y=rRSb5l7XNe^k_CwQ~_Zj5}8=q9g(QvQWT>9h<5A&05w5X5G_zsdvNt! zf5pY$TYNslL91-_V@LxXB^yX66;{j~KC|o&#w_>b8MRxpIhiGv4ljWusj`{bby{qm zm*!JXW2<3*<+41C$X#**&Z79$Aa2J%OlR!kgm{y_0Iz*a%p6Ryt$;c?{sJe18H zP-3L0iWcjdYaa?06^1Ji|8Hp~;@%N;m6hR&^#;73ztEn=1*thPAR35+>u9<1EIG_u z3~{%|(HZhXKr8`&5;O?;y?})A49q>T4%rtzIHmMZy=`E=EZae6Fz`-{ky6flKoa?S% za=vJMw9F~j^W_FTelRK!Q_KeWzzmOU(=xr!5CYX2(uspT%r~Gmrcrb`lZBFGiFoS` zm>;dn-gwPr7o2_SrRSc;{4i1ER5Ln~iZHJIE-NAcz(8h|UE10(B$6+POg~qreY7qa-i9v+>#W* zK9Jpj#wpt4Pp)C}ARE{`6t%J~SyXNf;gDKAfAjg7ObR4&#@>AR5#ayH%%vh0XKb<3 zusC3_E~`a>%e?yBANdyR&Y6%hF5%CA@v8)Y+3+VE7k4`b0->!aA1D=!w_HyN4v-=k z_BE_cn}rM-h1<)B_4+ky*0m-L-pZgvy`iOIB7x=!V-xv>KgQ5(Wp*<4Y$d)Z-skrY z{-n}HNLiE!7KHqJQ4eGmcr3PBDhso$2oo}zkPOfkuV6f4dP0l%;A`MHGEIhj3GFl| zJHUXcz*;nz9~O^^WOcb3WJN}|wr!X|25w?%m}F)I3CZLGM#l8AjO+o8S@M{AD!|oZ zmKC)^E~N@j2{92VL%m=RfT72}XPmf4DJbEE4Gqkw*N6d4NtSMm@sPvG!dZ!K;5i6$&3-s*Tl61`Jx;`{X%5WjHYg5E=v$Vf_k;+(7TNG+9j7jo+v7? zQC5);2|L4G85e3Hm%^*1EsY7cy;xaBL#~W&LLM%qaOf14bSA@+NDe(|p7|`dXEu-v zh)voQu(mL39)X_F=rBC6@DA`hj#xwnEPsk9-6)7O4;5@*6iUM$M|=zNvYvOLCc1c2 zM{*vXGR#5v6kA}Y9d~@~wH1s_zCl8(boNCOTC+pLJUqJI^m(7bzCgpo(<(3=+SY+W zAGl*F!~Er4H?aXwM@x16>%I5?~fn<+_=7pf)qea3VUOh4<(m;Ju0glNn0FTf{PP~OACzBye7AwQE7c13Lp&$UX5RQcTCE?!Y zARCGuW|j>n7OYSM*{bM;JdbvL=|&7m@ouYlp7B6FEHFbdHcb?{Xci_&NfPraV3CVM zsV2cL>`qPHLL_rO&1^)IfoQ~%{IfJ76ng0{DDM*1Z99)3KxWt z&x7HL@`-arxCT$lpPaxgZB8dM!|ZFdAPtX8iH#1*B-0JMT=Th{7MoMZw%K%h{Jdap z+2=fmW<$~gf>K~Bq{`mc5`#quAQlkx4B1V9QcD~hT=fb=BSEHE!GaQw9`uJ9D$j#f z!4h+Q$dv1t&-@{aj?f^Y#G5>)%i~6o6UHQCtUbQ$4k){P$%UwtEz5v;V`LWTfyb4a ze|YBUo}M1YiP6IstT@o^cIHLgSv9H}>MuR}Tp}KgM8*KM;I>+>8FSG*qgBRQjxyNW_T<;yKniUrW-{EsU;AvSZ*cBDcyy=akn(Ugn`C7vIW#Vg93LZ<9JA^>LTQ7?9g7_hY(NE7fL znQ9DNt!)I0;0|`LUA-D7E^-epq1Zsq!ILX#^cZ2NKFCa#gs2?pqb!%WzHq$Y!G=6# z8ASqUyqU+O)5alv}AV~3t%VA07L^|RnBa;eY!hVLY z3x{VZ>eW=f*x4DzqlKRUS7{V1%3v=<4OJ&;YJ3wlStgumWW5@g6taIe9@=oIo-N(H{ISFK+fArZ%Czvd z!7hs~lMA;Bx1!iUDEz%69gnjCV4&DCaxqyXp51`9qZIO@$U-49C-R8MS+rv@=4CcC zhX(r+1VpwS<-F_;#PVUso%-IzH~!mB?(MYBsUPEMT*_#*`$G1GhaCFM@1ERak3BNc z4XBZDaW*HZ9Ly$BPM#L>l#m{ZHIjkY9Q+%`X0`y-i0y&cWLuYMKZq_QYldc3L-BoM z#T&>DrWKO|#elU$M&ojV%K(o|x(GzZ9su18uq`T7kP=uzB5;_-W&^`OQx!CZZ8EC} zOj|d^$EVCLHZ*+AtfOdC0A&@YtA^2?MS|&b1%dQ}O1TUm8o2B*E7+p2b9Nj~i;>X? z5>FmgM81Br&9_m@;sPEX8{6`;o4@+X>j)L>A(B98How_s_#)p%VN`AtcW3d~qahbm zC)Qtf0QO>~v|+;rmU>!WUsQAHXv7bd>TvEc@Mn(r7SeKI zL(0>pP2aF#EjxiHfByMDOQ?bGh@6yrRF66K(YtSi_20kjdY_vXTlI>rYBO1K@sg?2 z@Z%q^zvR-+qQhR(y@Lk^8O{tdSa&d}`2EpUtC$LxmZXi)f${eQ z!9^B>k)i^LJi^48ilmySgCsghi#lV`5flDRt!cT&DVe((CFukgcD#m6Gyu1=TB`{12RG4bKqQV%KN zDv(8l>oc{&fu!ucf*mQW14zJ12{}$2iCN?XaWxVhW3egFrXa&in<#WHJ(fceD+s|_ ztK|vJ*zCnz8kizTgO8bXQCHx@;O9X)CBjm`p%lf10(iB{+TR_*6955iG0=&}xrtgM ztW8hulPI7Kz;KkH-8d3W1cHuSwhU(#>bEPnMYUD0@ATQZK8GD|C@!*Wp_;*l(KWqE z7Xx?Rc1!liqgmhAUt1wY$kkV108$T0E!nV6C)NJqK}V~EDGGbyd5nJl`V``UOnrAGGm*a#JTuX0D z6KsaHQyj_E!KL%bB$=1U93k)b4qjXARx}ox@F9L{h1>zBUv%RY=di|<0mw&qmx@Ky zBVN4sC8%B1pRnj_!b0jb8(9f(c7cgS5#;(XF)UpT&Ra{XVnd6?tOYOOYOFmSNHc0~ z&x4K{zhXOg{}@?2cbUx9+Rx#O;}3TG&zAUH3M@-2i-8X{@#DgPaVA1iNH*|M*yNA~ z{2N4lLVGL{L{AG@#SGw_{%c2kp9?}api|L8isdDee9q$U!+o)0;BEZNl9SAcyNNS-u8+kS3G_8oQ&9@p^Y*1#HIMA* zblOJ9U#-?`4jY0DeVOGT(#B$pFzS)>yibsn+m{?tAdJNO@?@*go&9esuOM zUbl|%so+mG07S!Hq}z@8;tQL(V(rQ$8&7k4S}cF#*R+3_Tm8zF7@^Hs8!tHVYOOOj z&cCpF=yl`qPfvUAgp*G^0mA*uGc)MX{hbpU7G0G_7`Q;Xx;kH9wJNVxZdSbLsVHOe z4N*iyEwSHvJAZxskOMJ3g|q05KEG$buk0vNSKk~ST90ca6z;|vAV`dN3yj{aciJt` z5o+D`l|TOhMka-`@OhRP$%%NvFvayX{W^aY-XYd7)=;C)h2~@MzWHuMr$UQhrPha(JoLpAx(q; z;KYWy@$Q?h5*ICDW1L;0)JPK1wp+|)Z*)sr1IcNHaljHKE@Q^tpd${@5s z7iOkqvT+unLRE`-`0YzC{!#Xl(SY(Qmt{G1jqTk?z-Hz49&DEHR>lZ zB(Pyn9-Q0FHKW-+axZQ@yFss3sunvE58%2gIkVzf63e9lKZY}Yb=IuM9(@GS(b?G* zi;jwew^H_cJO>_h=v|ACwb)FtOu57))pe&_w=tsJB8=-UJC|*TE9Ja%8k=nuc-&HyJWWP?I5yvCOeS!2R;s1n}@EXFjsI;Wy5P*)>HDMp< zKF~L`iV?)N;e9dd0eLsFxAUm82q^45*qKRy_ck6VJ4hSh@hl$Oik-l!AOAyN4$5bP3hmGzJFFc1K@K7qQ~|{_2%g%(Mj{u zh;pi_1lU?27(zPT;@gKiC5-M|=+(htBNj){jJnMq|-LCKgSO#515l z4UHzUg-R@;mdZ4XBO+F@85#~Vu{rKn6?P+)AHprMy$E{2Y()Bq)yaXSh_NTR{b*@I z>>2|ERS!2aH|Gh^95@?bom{PvWRsDmWrIWrgwtHej0X!Ah#=CQQk>nSQQ(xs(aYFb zeMZdH@tYA=E9Ud5e7?%H8yKoMf+jNU(GaPWR8uFf~D51ntptFj$O@e zh>Ro@LSX3f264uSr@_$7Ws)q0bJ?=ir5K^0RzarN*0mZTTqcwyBi$W8wc@1Lf!=Ds z%}O}e%AAcq045fmBPXsm;YU0^)`~c&8gy1A#Q?V;yGVOO7KANMZ9OkQs=~D2YvIx3 z7uvL5u;_;$dlCaiUFqr!V4kwM#fxsH^&N2*u&eUmuAmp;$`y^A@GXNcQ%W-?uC&}kQ2`1Pgeq$C6-&{c?5`Gfi)^s*R zgvQ(CIT0t?lOmbK2Ov3{;!VfbMf6kznpMNXK{G5!b}f1a9xA~=ks4*eszD^Rx-(J> zNWB3AWyDxYFjuZZDm4yxp840ymwD`_Mp=(J6Eqv8DUn2jHXfiZ&}^Zpw~nPUKf1!2 zOciE+X12kUn>`QDv^d!R@`AVCNS4YYv5|HE{eYqt4PKwZpqTI4wLf|K%RBtPFK_?g zw(}p`Vg8d}+KGCG-#;jOfMK%tnJZaJDcb_v4SPWEcUU|&GnO?Q5+en;F(!fGzxOzl z8+fH>7O94;E`bo{k&VD>v|If5Vuo=t&VE@!CPI2;OKy5yfB4bw_x6lm^ppPrf*??` z*MW;5k98YHNM}NEWL_W+6b#6jq8T83y&&2XKF9w6&;UVxnOp&z01HMVDIsK`EC@lI z((=PfAS9VYJcGBBCIA2+07*naRI0cWP#Z+FVh0O%G+|OBNtw$EkxgOi4fF=qUDz{e z%2YXvq?K==^DxzLa`qLwij#qoM0X;Jq}5zVse|kg0Sv^WV$>>BiD04`6PH4m@E`P! zX)E4po|8v}Kk^YD< zjj<(4Pzx40@db$+7ILgR9~f*(TrIg>7R_U3Bx%e8==pocaYql1#u8((k&X^On`_BM zfwxwzEvofE*nqM^RQ|q)bB{ip^#=TkTPfvhH{5_lDgi9$@6V6j&w3$k5H+QS9#1_p z4{rPNTYuWx)#xugHrrWp42(1c(W}K8`LmESf&ipITfd&x3@j55J8=V0TP)%d4VBt- zZ7zgM05*nCkfCBV6H-PHvxk{(1W-pukf&jbVCb})H4L-e0Bt|5{T#mdF`m|bsSkWG zEFsb-(DETg)JBHMETc4&HvzR;aTdB<@o1DteJkiqO%L1)<|-wZLIYwqaUcbld3Xf0 zXH_ivx(Rjz9~T!8s+2b06u3}Jj-E}t4+u7r%yG1#QbJ`AF^U8YbVXo5d4ibB4OuLm zVrUzHZx9tE;3&RWa-02L6kX|1MU+R{4^iP3%ae(M!lT&pB>h@9)@C5XAXCkt z5Khf=i`QG!C)ro1#d3eq9JG$`#$-* zCnbhJLT|B*DalTzG~+9~?{(Xw{~gblDQ2_UjQLtUUzK*QtwrDE^Wp2eizl6G^*Wuv z;z!1!H{akm{rl^ZSr`ybGc)-TPd~kdzPb8qd-YYD9bR|hp1bVxw}!hw)O7^_{ZzC- zv|T!4iO4RNNZtXN%9TiFkWolq;worE1+`{%O7K;(5ixElGlor|?3BvndXn+Zpg7_q z8<3J%50t;KSh8f~^N_(*){+)EkFC!{;6xR^XwXvvLS!VJ%e20~ssDy1FzX?7XgROu zm}34EtX4Q{p%|x=pB$1+$vnUuVe1ZuOU>rkD5Ces9+0g74KsN#PPBS-66gsUA|DT| z9zqD5fnm@1H6osFVw7oW7X@kiSCRGNlf6J8TKud=lEI zjImmvkAT~Oc@4qA?O;o&zudWKQ3x|oju=m*v2C;jq$(A9uy58EVZwe=B$tM|pQhLV zTA>9-4_i$%c&utL9r#lu6N&(8n6xcq8!{@{LBaq2(jW1kZ?W|MolmKe0u(@ zKKU3~&HB|E;jUgX)ge^~8X<;!L*7By4Sfjx4*+Yc#OL%~`ijr*H5$vF$ zv?x`4!V;jz0>OzKWctkJeGmVbD`nq%p8xBA;h|*J>9MRNr&2sNKJc}{^0!lhh=NiS zTN84i*1ldRcucbocsZ_gSr1XBg}9keLM_lAtOuHeY9SRCh7>d)|H*VkGiTm0C&{1+ z2L0=XA`XfMtLA38;8fh=r_j)NYNlE&St54pwhJx@l$wCOnItks?Tgpv#{-kfWV_ww zipepfC%hpNsprY>rTJV1io|t;wg9RKD1wn#QUc7uAW$VNBI}1@go&BT6-fs5I$h;_ zjD2deTkJXzd89cz4kfXbQN#=ev^Nq^*(B^6_A*=_y$kbDh(v2ZL}DL1|KNp(vtS=6 z&%b-q1Ff}$sJ``$LlKWxUV9ze%WO@h$GUQb4L@IMKl-R>U-#U|Sj=w1B_I`f?6Xun zNy164Sia@<=Ds7kJ@@N3n1D+LmY%JH9AHiZG)mwvlc6i{_gw1#Yl8i_@3-)%lc8Y754UEiyMv$% z!n47S#Swu&8t*6$68^_MFPJF44v*Jip3@uhP+AMso28{1#7FSUfv1_5CCq zR@b{M((IL;W!Be8bt%$R%B>Vj`BXCd>Y5Gj3`gUjj-^!s!kDcj!Amx%(SQ@3oyG=8 zrUY0v5=%uAz#HTFEsc&P;Gxh3F41_p9F%31Yzx?6N097ni6p}pp-7Pc=p`tG>?Z@T z1_n}XIw>``lV0|BQ}UlJ%Qp@^_|St6fC@Qb@u?>Z{42 zEL3WPWNL^8qdWVDO%g+9&+MmP&SOuRfA_HHVB8w*&8VxEvMCzAdYNg#qpGgXmw&fr z7%wfVPpuIR_bTa33Jr&Rcy8%&c|@Xu6$cVBY!3GWtV|YDbU976q3Eheeib?r5*z=q zxD`-m$<4xl1gB@5lza(W5#B(rQ_4qJ-j5#nKbw(H;QL@4z!%XgATnkd8d8jg5^0ip zquoQJk%HzLvcsjB7BY71(#;T)s1DvYFEnqxrV43ZGOeGaUNKS6RZFDuL5~;84tu>D zhRQRi^>ohJwr{fr{!lDVn2zKvaxY5VNpllMB}xU;3|;cCs2w8rML5I5-p6R6Dr0C^ zdG}qmB?QvlJAGir47}#=JBX5W77R*LnLiC>AMG}qokogOz-J@neq=`H&lhWM zf1z0>X>W7CXH8l~wv3>dkaLwANS9Y$|1;a7BiD8Xd;|(#{oAX)AT6kE;SMj`fJ72; z>KOH`V?qn(v(uq{;*p|Df<`FihA4ov2qzDV0a^=W1b$RkSe<=2_mA4E>AvcQ{a#Il!b?nCi6v-s_YIsObb+U)|DSE zB&EkTgekdQQuJeWIB=Uvdm*pCck`W@m^s_xf55S3{cv(@O(Ca!8Bc>>Zx~<*x8?yvO3?tV#1b_7RCEV`FiAdibf(Dka2#X3r*- za15KFE(4>Q28)WlOVkYNXHg|fn9ze_|Jsp~2*5Fsk+k07_hc5h{hSZH+P{6;zw}^c zw=p)H4hHZ-7#kT1DQwin<0*kCDj6wKaVVIB*q|iA;$fDo(lEeI$o}X(@JlZF%{c7#!a0O2L+)f9MU+NFPxo31VrZ<8k z;)79&_AkbxaC5C*+>ler%a_Wy@vEWkvyqPa=3(N`A=JX}0xZT#rtW5=D40EGp&46ZriDYNHn zmWV|XnR3u&A*GkLd5EN&Us+4+4+oUX8OUcX$yC!~8(wmS?T~M-o;|%&)H!q*dJ_=1 zK#3Al3_mGPMB*c{9~qQ{7}x`Rps9Qk4CXaXW(jQz02TmVRa$vQV;R7MMFLK(qqAo# zD1Kx#hT9$yPc#%CO}0`=;t0c=OompaN_3sTV6`ZvWR&oth?5hA7Xs<7Mah^w9l#q_ zSAbnIN2C5teUiSs|2MRdznM4*c11QzM^>5-U|WJe1qL;p)&D^Sg8CWqk>5N-bU4&A z(X;XMYSu-gaox?gwI+n!f)z3vOIND4GtN)oBWTnI$o8kc2PKwy~{&~PRzLQF;B&UMZr=nAf0!?&C9AjkEXauuya4p{d zt-}`*uYhYH9K~+Y?3bV2bnA6D{XG}xyT{ubw)pH>Zd4eGc`m&qQ>edf)`d%zxTY!T z&RQHzrrz!d_ii@N-qBaTfBEcH>o)-BN5sPE_QR;-B9;x*>*0-!C*yc5sdR&74~~rO zw9`9%GrN1bJF3NIz~6n#%_>R|Ys9DQTVgzjDDHyBBfAv5O~KJ)pSHq;;uaEX8vy`F zI{724Hs$J&KKay$1)_9(Pk>9O*1^n(Tqm60s0aK$>`~Nt%BW%LYJk9}S=O$*@s?|@UpnzLUeDi3fBxBytFP&xAOTlcEKxq^Z1P%% zzy$ zCPE%Ar(@xMM#bf>8cb`}tZb;}9e0v~MD{N13XdpHD1IHVBvAcvqLK;)FT->rxGSt) ztNGwJNi0wU)x9`8q{2{IL@J$KA&dy@q4y1GQ~#56Hxi#%Fld~x0A3(wfI<^GO?3F( zRyz@4(Re&QUuSoh$!6~f`DXU_B8XW45@ksg8yXz`{9%93_uAAaAH}uFepiaj(~fl0NaYLl4@YWC1jO)F6?JdLxW~;tAugL!kiqvbkioTmuHm6p2QU z`ns`P*8_Cy!pSQj33k#wE~fdYjF;E#vYr1!Qjp9c-;74RbHN@SmJ@F8blPPHz~Hgos%1Psq)+3^BDgN$4-pT7 z0w7&skP#38{153*o^2M#6Dg`z3z?0Gp^1WTd{mqC3#vlXImv^-R}hQFX!oAe}ns2dqdVTQXA6eHA4U=m}IAyCHXg`&}Hi*{r6$==I z`VnFi_1clg50`QT&M0c^ciBvWJ0PKP*fmPMtO~As{8BW1MJwHGu07mg+kDn^BIuO4 zop-j?pac|;8t#$i!PC2Z#QWTeX?mC6ub4-3Wpe%T<^$S8_}`Grmsm_({m2#MJ-0y< z@_Ribz2VFf3TP05Y52YF9ztMb)=jO0F=`Dq1PGd7BnHI5II(jgJMqw3z_EPqSEW#R(-0{jHGfTAxaAgJR4e0kQVd7>qO!a-mfxg zr;;Fqg2X$d5#}-*LD3k})HqyDnioosc=SW+6X7&e`V#OanFp7sM9-xwho%dO;ivEF z2qaP&a-xkE5WxiRYHG~GM~=eOsCeAcTew^(#np|9fM`78SHZC&xnwuI=kEMxS2Hww zpZ!w+w+dB0Or2UP>g(mP=nALZ(LwE(+1xj<_UfysLsG*5UydFWit~cAqd4V~DlN(l zK(b+~QK5h`jybMj)d+ffB3WIxj#z%>`0v&ZK46;9Wg8kDC4a}~a-qWDzi|_`$KPqj zmX^c{C^=QC)A|MP7XCY+@ddP*gE8+a~%x zt&>?pnsVaq6PFpBg+wr1oRl&ai$oI@f!dM+6!JXtRU+duOOid;G`k$m9e3Mr6CL=! z`q*21@gUO466q{mA^~e@eI4Zof@x{aOv^`J^SpD1s5K$GWJYiIvO60dPYB-+{WkIQ zqtlNhi>XmcZHyORRwT$ZmQ0iU2a};vPpbhE>Vy&{#4El`$+IXHBz}G^J8k8N_0m50B&Qj|k6%_<}3I!p5ZD|=$ zDwQM%RHpEr>}o+x!+;hnTdy~yNx6?4=B9Ll)9EHA;>7!4p!GCR38dH3SF#Dr&Ul=03M;;0~-XSs+Blnc41X41e_vB)gNc`>BUWgxktS(pADR#@iym^0nK>*UO`I(k~P_0u^ zYQn=)C>OFRoRBzzh)c2$z%Jl+L?5f3KZ}X7D zrQjy$2!eU~DLU4!U4si~V4!c_tmzCJZyBV8Y(%BTI-1NxbawUto<*tckIq-Z-3nRS z-QjuX{FtVvQgc9*?ZxM_JMU)CXYFdXcK2N->``5Vc0^K`=5Ud+Mb-`pvk*PVss_54 zA*}J^g+qaCM)$+ht1g?}?;V)lYu@*O|GN0X8Mviz<*Rwh!pKLWq6^Kf5ilV$q|2&J zx|P-q;ZP7na*h7A4Ip`6=)(qbP6>vg666br2$FEgH_8(apUgNnp>uGnnXKT6XNQM| zv6IBlORHMAlu=L56$B+%BstQe47#)!zWSlj$cmQ%w@hc#nXSLD_a-#b|NK!!5?0F_ zMuy*bd!1ZO(|OQC#3wnqgQOj*DTv*=I^TNtjaNzNmptf(!0i+&4WH9~?{eMBl{S}S zt{eOe$2M18N?rm0;QFAAk_;3PGM7={;Y}in!P!Q&M{Gx938zP)5#=F=L@UiVf$AyM z-tOqi9d=k02PbS@Gtj9hAoHT0lI_|Q&}Fzkj4l>Wc6D`7Yr`I3Oejh?_z1MA1#APU z))s6HLDvv7hm84g8~@*PCNNRsSC}|y?N|G^Piw!_2i~-G8tq9^W9syQK7=cYkalrr z!vdr;6s8fl*Z3Q7wviwY90<-nx7WLFI6`(D>C6+Ku>GbJKOGcIZ{)C;1Bil16?kOWJH z_B<6JW^qqv^Mz~?Xm#2y)-S*i0nPFqg^nQd5VnLY9W67ze0+I1bWFKEB(hm-Scx6c`0b$T&z`)oTI};}{a8M9cHJZuc zgTMh7*2+F6v+7gkoOqlfA98{zb0O-oFRmC)v3GzCgKlEmw@ z_x1Le=xf9l5kCh-P?)wh=?0YUMd3}WRWG($O|WcvXy zFYV5a;MdZc1+xhYp-^l298f#Smc>x3)h&3F8*iflKyY#5j}Z734E z>%OSlKReu2!ZsU>;ejs##W_3{3-~-}EBL06PUbd?oplI#$|f zq8@2)3iJ|i+ua?040Vd4H?>v!i06f`qu8Ovk`O^Go{%t+ae@F|0p4d)SYIh8=LG(6 zm`nkxfk9KjODcll({)JGa#~Z`1l)^}Ga;~TCXHuN@g?lWYK@FOrIk0OCf4G_hPFIVkv8-36+;gNm74ck;N% z_7yZJcD7_e@CQNw`67slCbdHEMBt&oI8y|45^bQ_JaLQeNe*>WIZbN5(Fg&c1R+$a zzxm5RnL73mQ5V*h1X_wwrLx0lbUMvn2)k+i<41XPOBKPV>HsHfrx4IO6;J>m8+^vh z6?)6$Splu2uKn3Ao!$NKuAu7=O^}EOG_F{Zx_z0AoHPn{!y$jYGJN$l)(|aL>vigK zA9~c{FdKUOPC@}5g^-r8U`i#?P7p#MKO(46Vb;GD^*Rf=OyZ7P^jpoJGrhZ$;(gSX zd`^YUqu_{%s|P`YFtE|ns8je#Givxf*(_X4+EHQZ(X)+?B0+jlQOO1jAC17INd$TE zW?f#5m+SWr<+h%iZms&b)jyF4+C2d6r?sEM6+Xt(+AqcR+i%)Bjd&luw_s&Xe?ZM< zfqy|(Qg$kNH|VQ#o%{oslj16y5q$tWJp z8Jo?CM@Cbzl8OFd%3!`~$i%Y>J?%2JOD}JpcV_qS$k;1yuJ${Ctd~r6%rpE>*lD7N zT1+(W!7jxZzz%VSeZ}e+jJm4xUVn}AymRYa0e`6&7ciJqS}@_xaGQ*5n`VMcLS;gW~oDMuUsoWYI@K^tY zv=rO4uCNpt0G8o(3tpWRsk1<>pherq4 zPwCjngW}%yx$J(oJrC3aMU@(+9_^+D^GMTYF>CY$#Xw(SYtds((tzmuQmcEV-6X!% zVm>?7yg;Cl5KUxN@rSYi%#?tD;WUnE@hJSXoJh05k&G zf;pgQC4j=}fFUAv0=5Tgd$pd(s~}!uZ+l%EK@}%GvG)lD}5%TjttUoC;;c-Y9oo!GkzF|MAn(@x|MIgMPJB!?~}Hr zm|zY%F_XE_q@^8XD)at6a_&sKjewYCR&VbSM@7aWyt-FB;}VZiK}Ar5x6zcLF)DDFB(#E*_n;BuG?0$?Xj6|`!!!GV7<>E6G=nzeR{*dqe{iD;)TtToF z#ym7Kvh3dJ<;Iw=D{9hrHMM?okRXhla`~ONoxAvqTC+mii$**WL)=216sfWxOuIOz z*@*Q9fbyhk)+)u#=j(?fqaLs*i@Cn8@U1t3Y89rDAL=UqAuLGvWux+>@l+w2C|c_I zQZ8$uEj*uN2{=tg1=nsA9&lLcNH?V>ViJQPQsQ>m$vUQ7wk7|_ z6(CYB`TCPP6eoBBHuP=1&hz@KV;$0PHn{f9#1BsMLfOzN5f;U4D&$r4oC6Mw7!6*3 zSA)Pa2!|*s7{jsyVM-*cX~pY!BS=+TyGH-3UvDvEhJ*ajTA4;7)hm9SEahx08UamU zyUK!-dcd}agogpKm~ny%aDE!1@BY?e({sgnYb zGua#-Ai8wMaVOVA&)4|y$3Go^r~S0{b2#~9JgxmwT)+LM8o;z_J{Jl&X+cLxD@#JFn2FaMzuNe~Cw@Bq=44K5Kj*`rfBfQ; zJni3pu#i(vhgaMy0EOfI7tIizS%hSB;x#|y`JessUuX9B)XVj|m-W_+X}>S6reoLM zgl56KLW%lg7WMq*iE1$x2a0UooEgV`XXu`LItMxnWO^casR0A3huRcMTY#z|8xI6m zqF4o+?wxnmpK!8z*DcD+E9^dh0Db=ETS;T7i^S4GIxHj@(Iix3*je0RQzd1vE0`9r zcx)JBu_lm4C{iGIGdLrT4t*IJK{1TOY6$A;UfM)d(SRpw?o3>jPxxyb$?$xyhXzuD z_CdH1{U+#B+!_Wk(Qne$F}ixfK0JQ_VO1+&GgGste8R`|u|FRCu~MftrIamT3gSVB zn@SYP*_^Ci@P(~Eirc~ZPeZ9spg`{-jk13@fU>+vU+79HfGGr-HQy+H-M z6w3g7k5ilV1@sszg3dbRbb-Kba#9LLbkm@PKJf)olfZ}?g-RLcACV56e=t8J2;IC> zCP%Jn%2P)07s1)*4f3h){V~3?-mS`baQWg3!_#Nhv zjDR$K>=gD1zhEp|c7n`ovmpd<3ebxV`s?yJNR*%ClM9WTOjll}3wAq#-Ksy>cgJ#S zY9u357`0Bn?dNpw4i(&P7fp0X``>RtWc@k{SsJIE_#Glx9d>iTRCnv7p9>g1SZ8Q8 zi9%y~4{g4{?(WQ%V!P~CJnJlHcW0M?`AKS{ZteOJ3TniJz=)u!2koz<*CVb@Ndf>B zooXDO3k+znY$yX@hml`|b%-+vC9jCAGtkYd-0QWH6*|eGZbGNc?g`-fv5^j;1vwse$EW_^bi2EN z0}ewB8DT5c#!9s;o%|?cGLY7<3o3LOY@B{Z>6BB;UT@KE=|?r|>r0)ncodU?hjQCZ z!47YczUAbN>d|Nf(M+11N?|twtxnS@3Gv8Q&E*+k(4Yci7wZrGX!%Zj6-5D;!8#bE7r1F3DLSeCfL!Rssmiv z236Dav!U}Vb-hY*Dju4u$mRQdh{oc4!#-#DfWtmKX4dTC)g=Hcd_| zNvYD`F_KWxh_>5uuBxiL?>l6)VxTn!*Nk<9{77^j62mt{+}Nn|E94x}<(mpgDKZBB z92tSj8#7o>HVpiYGGOxaP<8G(VC zr?sEM$sgls?U&;E?Kd4ijUovqf)?yVz9D*K9Nk1P!l=?_$*HQQbDY7-hrnM}i!NKC zP#cOCriY!j%*MRH|9_uXtJ|JTW`{>tp0e0{_F1(z zRNt0)z-6VbFck=l4mL3>eXh zwO%cg3j3KZNA#`1iKCh#uMLK^kt~V1SVF`A>76EdA{I*!=t?PyU;=A2oAp}tGddMI zJC3D_^n1n%o+87a^e}pYN_<_MLO~RF&4DO6ITD?c*wLhpS6*$t{Try*<8#glxIOOpnD{BsZ>K9bvbjbBo0g!33InT2dK{Nw zhe($zLj34+{2!1icrso{_cBCdamhawmxvB&(5#i;8O>FF&Pfe)lR60pke8lu;B9EW zZP=RAN|sfI<_wJ8D1FF5y=>+IXiBOvveI32k*Q=wY<#+ov|6zTm15I`-h%Q?Ko?z{ z9ROKPaw5Y1d}p7fqsw&TEwOpC`eyX?H5#7LA@?2&w$344OI4TCv+I{fs*O}UO``PB z(i>-BE#n13DREd$>8cq(H!KhMH`#G6N;2?pHtXLw+IIWWF2w@01bee;sFx2sh(0Dk zEOf-nNU`Q&eT~5V6B?5WU-|$czQ9~2q&!|;_ z0gBLV(U}WV4H}V^>*?|utRMl2mIJY)GFqDD&RPxc1nj_U094E<(8mV-hJ3Xv;DDFp z%QYnOBv*aPoVFoah~!WUQL+oLPk2B48zO^cOmd7{ZI7cR`K$X<G=@_wwtn&z&*j+ef*4o{-zylZd8&dac&Hum+SO-IS$UJ0y$`l=;UmG?vQu z1)Y_W-sQ5~d~0ytteJ!p6o(64>4NjoUr=xe-Zh8wRkzLJby-MGHPa5#NQo4Pu`duI;6v-whHk7e1-(F-lFm;@Yhr}(6`H}&{wkhL z*_f3k3L~{}ID!xXpg{C1ro>p5TDmXH?<5aqlB+&tP7{=*LcLV3&!5>1-?Jk|iOdoTBXiZD zr%5C*__0h8yP4e!=8aG~*TP0nG4kkeC|zNw4B!o70!BL(`0zN*M&Q(3MvbP6P86vr zcK~?@2nudrsvszTBp#yTKd=JJ(TiTn~{G*KwWl2dLbK4L&L z{YLMBtdj9GoK@6+d?$3+woNuk-eBV)D~w$ z&1SJBGij&OHLbh%J0}u>!q=0by#;iSOFrze1RWS?Mmw%p8b8+Sey4>@w{p2LytXm8 zc6HT|JM`cR&QOQsRf!bU^aG9MifxnDotO(&5)Z zUo<8tU#ur{6$CfNK(V1qWQu_6O|^;msPPQviVl;mR%%w`IWa1c2tf3dt904=jgPQe40NrsJovsk_i4>w0nni3#EoQ!^F2Nf#MO zxlMY~14)@Jp&u4&ae)`shkQz@(&*~3O}ys#)jnh@COORZOMUqBkKb{Ur%in9@$a_Z zwEZ+YHYJ5Ac9SY0a+C%s#^n`cHu2>4ON~F+!H2F2I0??$&`R#O*-ryimmi7S_u3m9 zw9;O^!_c?<{=fnI{4t%$sr7nysN<|3N=X(WNK%0+G#JIwcdjV)_ zmC^$NN0yYh2pv&r3CdR`LEcm?z{Q85-AOFQ2yV41UN|j_hmd)hK;120^ zewUe@#;w6iC$Wc~7Qj_ul8+*etJQp^dc~41FwlL9g?1XB-)-}sF6F73cz&E-H#moh zd^Mk?6RyOA;p(Ej$-xG|MG9|k=(;+5nN+UBY9Nz<^-?X_U8IHJbE~m#ADHv{`C#N%TcIOAZF_H z`$r?OMaRI~LPR;`k-bR@`bFKIhzJ@^t zT8i08w2|Eb{ET?efRpU$bcd?abw>-Fd=ei2|Lz$&>~IDXAR1kMtWbf_(~>)h6iyZ{ z4IJ~=R<6Q0-Dbz>aQv{R`s^R`exI+uuNU1D8ryQaip@0GtQfZ1-gD5Q8Nc5rk^%PI zY~se*YIYagcvepcjU1e5LbSXIzowbXJL?9mbV_Q}ciDZV06SUzaQ5y_prIQslDkBR z8-iXpW=1wAu6*_`_5u4y5>#1Z@*QaRgJDdjH)5iKs3AUPB1XgxCt2E*E7sFwW@jfm z)c?C>`H$~ZBv39zt~%m=64iuJpxf$oxvD->H{%4dkrHJxBc$IR$qXk-DYuIZM3=|? zAK!TsyMUT40h4S}NQ|Ow97HItbIc}E;wCwgWGd@-*_QlRpGnlqYMp$`Cw^avr7{~L zWBA|LP-mY$-RYm*q+d_7w8Qp&=bxztJubNsT6(ei&TtxnE>e|3_6|XNK&vdK-M5+k zy>Hj&%?{^NNpj^nyq;r^&8=Mps|fd;aPBGflls;OL#=uIY_P37|7Tww+XVME`P z)i|lC$H+EY=mW}@VjBQIO?U%AgDT9aHk+v<;2X@Fl=U(^Xf%Rn+OPx^|4% ztt^G!;Inl~sZx(O^03LyXMa2<0hK9pGcmNC43Sbe%O4+Nx@oc$b31<_eAgzf} z{TdA%Ps1s7=6e}n6Al0I3265Kw4c^~4qyKmPiwyv*Kfb+_-TY!oDK~DMWP%CJ|jQ_ z=}aN$wIU#4GcW~-#aK)ZJ!pOviw((1BPn&_HOH^^AyYBQVYXlD!=Hcrj*~oX;$x40 zxBaH=r{!zLu~gbeA&ikqNDW)6LE0Gp8U4hQ+b=c#V39=X;Rn2HS6SzNc4k)npFjTD z>2Wy~kCU7_$dPm)f{uw;a^HQe4?g5gr{D1g!jTc_Z%4!W@SJT{zVtln13`+}T@@Um zY@yoO+yBg;{9Dg|-fT_7wL!Km3viu&{Tkh9=J;vb>fZj#ssa(JmaCNgNcDZ4{80QMQ_u!LjFLct zxMMA`e_;!_4`>rl)|8|?fRKbEfXWYaq-s6rbLI*x0BrA5CjsDsF3LsV1y(CXU}Qm{ zLSTSS9xSJ;Gi_CheFKfGnpk>`DN4dwJT`0QoLn}EK;de3=+tVYKk1@F;!Dm8y0%Ix zHn97fyZqNSsaO=B50PiQHln%+YnB}Tr=I#9`s<(nV5dH3X0I=uBQL_b^Jo9d68KVU zdvCVGg3aFB=&j8;^!ooo{k(@Ng|dTFs9A05d~PSbDZ^zS5wUsG%z3As2qzf_qCfAF(M1*Y3;Z&K0%I1r> zbjVdJm8%|y^njs}GpG%)?2y+|$b4A;!rm>mZ9OnMhYpZ33{WU|ixFYa%$e2^Nf+^Z zpcK`?6SDR&UtpbU&P1pf!l0uahrS`E8wf}>3eqQHRT`~y+U=C+$D zht<+(i7!re)u+sa!5|8_2dPOBt|)kLkPcb2+D4evC<7hSyThMrno3t+oRl&nfX6GP zB^T-TKTw4klcclo8;$89Blo}u4fMcX`>k;pa(v?R`LIQ^<=Svunm3b$O&}TP9n6bw zVNB!aaXYQ##s%C87_S0wHo1d#@=Yp-$*rU4hKK|9GRQ%YIS?3Rq2g1eFdh-$F65e4 zt8Dx!cVOs?R0R*m90NBUuRii zwqRlrovqKFSvz^L{YMv+5(O8%kE)Hzw@<`007@}mDj5`up-fY-B5-jH5}fly0Q7*I z*U1W^$q68~_$bm@FmX*C$byqj6`e}4k`&hw4i7Cpv;7$%XGw-*`6cX2kDziH|EkX= zxPK&l83ZC+4;(CYW7R-MxFg7JYro2-{|>D~Kp1Xj(z=JA<@D(j0S5x>;xP(!+`) zM76HfETj)q4`Bt|cePqZ1;mo%U820O^75`<*qMSaf?PZqg)-*TPj7!jBp3uOCHFX? z7zzH-Qn^8{L?}QaQ5}K6C)7Sj+w4j$O4Yp0JZ|GpH2lXeJ^tzVJME{npTo%?<7w@e z;`;43ZJqYQlfU9q%3-jEhQSNyH2W5 zn|RIkn@;@nUz&~fOMS@mk6*dVv%i*2WfFF)vgK!u$=GnX$1k|UO+#KabOdYpoa_7xLf2lI zTRm9Kq|(qQW$;w4ki?QJd8ztI@5eP${ z5<3?u#Y4XD*)U|}=`rchg9+@B5)1`UMW0b=AyXv@8-FVfZ|ojgB$APxrjzB=IuNh; zfpg5O)I!$*+J+Mqq_MIwl_4z%4uWTm;+R^gVOY6-40vJegrr*aDwB==OqmIbB~_Gd z)PFL^$QsjJVJHV6M-eZd)Un-;zBA4YOz-Z%3j{>U4cC}F-f&abX*T-Hb%?OJ_`Iyu zLAZ@Oq;}ii)f={ACqS8)92yEsLxMKI-qO0UN(XCLbUj0B8Gw8Q_6lf2;sc_T5$PHp z9>lVPkHg!M>YIONUi%|r01G@iaHCR7CMeQk-r)9DS@61n^mlnfYb-1;2sBr!58ZQP z`-L{$cSK^!?xyd#bVFnQpnXa6GTRD8gu4Jrl7a=BVDNO^!O=j;Je+1UrEa>T{`a1o zx^R}uhm5``sMZ1UZs&-{VQ>+@LjO~q-u{72 z1nernNr5F0NJs)j2)%3}RG3f!WRb#7fT)b^fQT%uw5#2D_WM0Eo!{vR%4%l}D&iE# zzAJ`)+`jj_-*+DWbH4MKY|p*pt?f6yagG-TrD@rw_|;ec?BRFolUF;`?Pr>;W1NxP zJ0j9-z^8-0`R<{b1Rj9Mdn`6tje{)!9{Q)OQGPn5l1Hcp$da{lNZ5a4(&nlaoNS2Fa)4@>5 z_(p7mDStK+87l8|Br?z@ph^OTyopjEeqwh#q)vFjE&bmuGhp#RWn-hY+8k(3As-%O zfC{E*Vb9bJ+U<1Hx#FPT`>nT?$DK?uf9BSB^O03Cm(jijVI8O)V0{t1D^E7w`qszV zn+RgK9QyfY7po<4J&M+l;0}XC+vBY$ z61w-mFw@-r@m8bRMD6+lF)P9#PR>Y*rE0v(XA-(73d)v&Ha}l}V!ip`CvVw%t!LvW zEMC#zzz@OC;>Z57jXb}VAPG$0RA`Vo+fwp`F=kSk6OH~<@2h0L-D*D5RKREBUwx?2>{sR%mk!UIb#D4& zA35{zVr9^3ObImcAKp7uqO4jib=61T%HI6ZVyjgnzyT+l@IVeM8Y?u-@dW`l9mwKx ztP$7~J)ISqMztyF+I2Rag~d=5g%fNG6pGne?ZDn4xmpxjbh%==f>YSh3_;>Ao63S! z;o+L-PqriYeJlxIAB{|IE0b<^``k&VdcK~z^l5G;pYJ_w?>T?7r|rF?>+ij()099I z1%wBta$d+2fe-hGA|z1E9ql=iEN|0yJetoJR%8q$lTWTS6#7|=;? zFVRLsbRxRVt38*|Nsl!R?+7zu07vNmaCEu?V&uyIpZJ;EI3Z20%O;;|Gy2?d%;OMT5}bE~a^b4*o~n4iorn}J}{_N;sG z?_j{9aZL#XJQfd?uIu+~*%CjRHC(e5SdaUcwM?*euV^<4gbL59^&iSl8%u8BD}LJZVfW zUtEMf6Lo{=i>fcQ02P+jBc}CJhUX{yqnMl zK3@W&D3W41StyR5T>Udai0^v$=0?4xJ`E@@66m-hp>}C(baCB8mT+WmV;klf1!Zjl z(90GG9+()SK^h)4Wn;{iu-E&H(62DZP(-O5*wJvlqSKyDAo_>Wh@VV%7^X>?io+#C zGcXqYMJCEu-+A-<_POZy_D5g&+*FIDUkrBVhK7XQlVs7 zgwjsH3*aGw66~cXQ@`|!ulTkr{~P~$@S{JTKlaGik~5><{T&XT%#kw=H`mvt*zoZ1 zFaFb?sP81wM-E>w9B!O*&Y=%~IN9rW?LMupZLFj+`AD5N(n0JIa< ze3oI3Otg3oz~hQ`ccKG;atB7f=U_eHrP*q=!j$pCUISw#%8N$d`t4S?Bm8>0Rf+`0 z(>*t0kppBjH3_1Y;3qzM-JZ*S?|$&#K6`(g92*SFWdY@KJ|mVZoXSz`KzBefgj>VG zXk~qUu2habBC$DcibEPqz20F1lrlmL>0dHqVl&8M`1ZcruK(VB?C)q~sEQx>{yT4} zmJ3C#sPoy{LRGyS#I88`#_EaNZokv)5Fez2{V?Zz+xwh*-n`JNbAMpD**Xc~j7I%l zr&+DdUHq~N@&q+`7hdRpH8$50A zrCk3re{d`CW=BtpD;S3T8V=tuyZ}J{tu(eLQPP}gsmXk0&U}>fg{}rsTecYWamZTi zt>Lzu7*TP06`G=g&!U=*n(_tk^Y$Cx_mYc$ar%hy=R1DPeaFA|YTxl`doN|Qr(F#( zfDLzk^xB2WeB{igv`^4gC1xt@&dIjY&AD=wC`5zdIaFmGw9_uNJ0ZJYec=H? zH>zxJa522aM9vQ8vQ%&tLKS-N*i}|NS2i{!y>fkvAm7m89nnFng>X+v%Y(O;0d@KXhdZ2-Nz= z#=ECmZ#3r$`Ov1|X6!Jsv}OU~tw|XfcrL=m&(vY1$RSXrSb@XO-1DDa{L)|eu0Qqv z;{fP1l>Ld@KAg|yiyHLOkmf8k(^PdWD@1Cb?6Uf`?&7VJy)cX2{@~I}fByE{KmIN5 ze)m0Fg~HrlJ+=vG*89!R{pa)A?al4su?HX6AY?9LW z)3{)5yM)iO7AEKQeoM*J$XuJV2DckPo%`-b#w>^YnpxFzF&1Gh`vQc?B z-R||Xxy(>;$(e~KGVB~(DX~a%z<9uL`=n#HahfAxuV*mmZug0K!w$Q@-FBndOs3QC zC?0`i=#*-O2SYerdM6Vo(M53C1NYzIwI8~LSoRBF`MT4l{{P3@(XfB~SX-b0G%P^P zY@5Jtw@YLgy?#Wzkk)LM+)Zz&#Od)zcifaK7L41v3-yzLOZ33j$P^8*l)!Z-hB#0d zOPHWaIr&H`cieOLJr`YkF-a1;!V@g;(Ob_aaw-_l%_iJ<$-7HH!EGFb)Eh8xX}hBMF} zYE7twq(6NG1M4G9Mh+LsWlTosW|G7$+TQ9nn@R69(TiXLdvyzFU^wUnu#l|=nIS5L zRP8G{BUFJBywq8wn>Sif`6#-qC6cA-R>gED!sCT2SI@sN^O+x%Lo%_nP(HcQ2Ecd^ zvYCYJq-hnSnYGROa&5tS^3BqqmR2aMfL0u**gVx?vT%;IhilCUM%DC*VB=mWWHV^A z)ox>F_uAUA+hvYJr$@Mp;*y0D2LLz;>a5orwOXmy>1Xl;K@^L2FHdBsez2P!YhBF> z3Zdti8NT74yZh$%(ZsGsG5QwmVV*NFSUL4_naW(*Gcvx>XQ`NP zclx21rePcNa}p8Rj)O|6M0p`*{Lh(1@4;o3n9d!KcDntZAC3ki@r?Og(b6=B3f*PH zvm098X|$Y}jtCQQ6^_5c%uc&E@QE-O^AL!_Myw%+cvN~xH!BRIu@yTo+& zU3Xn_$;FXU7zlIg)mL6|{S7ysN@q{KZZ(c(=hCmfs(Hn0H=lFH;m1#&JpY_?FM8?8 zfAAw^7qr=R_(JixY2{iy z`)J1`AWkceHKOt%TNy)+hRtTAgGK9iTX&}n_^I)Dk^JW`{}rI5r9+M0W#c{)IZ#u- zD9gBul8IBXUC3qSpg{{tQnRl&Ivq&5-W8}VjDE{DHHTn1Hc-_Y+HN?Sb+}B;{d6`E z2u|Q^!ifED*9ifQ*pAj}dqz71`wUZW>`uL*6JJ!I52zHdYer-e8bV=~X|7V*=(Zs| z{;tY=0nH&MG(xZ~&R21F{4jiU0nGyl^5u`W_-ftPO?_)5CJ6Q6T0JnWya}`Wi!ne_ zHjf1kV|Qk!69MjtzINgQZiT`6VM6Q3{L(`8ML+!u&3B-QT!CeudW$FPfIhNsUn9blYXxlkfcXhK4Ws%<@5s?-IleoexaS;g=MNuRUS2+Ioxk$cwmZTgqwcsj zDF5oOl^1KX;uqAX3O~dDan;SNH%T@w%8+H&86*ywwH56%%pMUL6C2xM0T`I<(Mce$ zzLErGR3wZ4V|MR>wc z40}{4R3TpsVTDj2mYwZFZg##`3kFqp2@*m0(>aeATvV14DR05}(6X7>*$1?8dCO{&ILh;1Y#pV? zd}0~_Cz5rj{#mgg`$@6xY`!pEH=7kh{JB&uSV?;rjb<0xiz*4tCO*Mn4AAamQcfm1 zo~TsvYqJqcA*H+DH(J=imhD1q!8R(r2gZnEh`pkz5OFaEC_gw9D$Y_p9QttD8X_pl zLOaoehm_fw^jgZ6s1gvKfTxZ-@4WNpF8n!i&dJz3+%t*f>t1!mwI6(%D#(@|O(uRi zm+ch`-S=NN_o5d+)a!N@7ixlQS{-6#Ql6jbbsrk^X5a9p#M|Cndg8>%4)Gj{hz2Iq z!kSg7|OO2#fHfc@7pK+*!A_8*UxkUGB? zXH5yPi6Jh&6H#%Nif}09HF2HBiVhtga{tJx|7QP8+$HXsDQ zv~&Q_q#34k!yHv0yT_)YMlxAiKI)QF@SZ0x+(1u2n#;9P+9E{hM%5j?#fz4Wq0IilN&z5`D6hpX~7J|1G;C{S1v>|MaR%2cfXNa zvW-SNwtBEf;O~%q!eqiAjCOLfh-!{KF`b!R;@PZk-gMJV#sd;#8uPNVC17Ct^{;u= zRagA7Gj~sW=Wm~1m>;%V--u-Oo%)|Vu*^dNx>P`pup!g$xMpT?kxt7u*2ZtX=16L? zdG^5t#B2H5e01A3rV@=-&v-1QdvW{t()iY!Emt5Y`RE6|&?ocrHN*$USt$FN=yl)K zd>S7=#n9>>pyuG_WNNuq+exM&5(D)K^PK!7s6kKc0dy?Y=G*;ftZNOzm7sG|HjC`m z*XyQ|<=$zxvbxLe=(E)HD7!i>o5|sA!<|N01Sxq)k0q4Jt5$fTAk-{0Ow*;aX;4^3 z5*$NzTBKpOBO)chp(t*kY70bB$|zlLHbw(|zOy1!7HbQwwuoiapYqn|x*d(qxT`BM zeXg`U5%v~Z45wLaRzWUo!FUkK83=K|!#x8#^@D}H4pqZCn@UZbL$2dwf&i77G%C&D z%t}DPuu6mzdoZ?8Kr;7n2hITF!NEw)PBV*$RR*zm{@|ObpGs3VFy!RgxNty&Mjm46CW%iMs;2)=+a)bn$Os@an2b^!Au{j=Nk~-UcU-7b+ zUUlVVPJiO)W0(GmFFx;wUP!^8{hULU%F?y(%}MRe7s9C@s4rQ%@MYgP?|d^nT&Qkb z^V>gAsi^HN|9EyX*1}<@(Q0skGB*Te(sHCm#H279!;csY!r@%^K&46 zQ38_1Cf7YJ`vx3O7s_z0Uy=G`5?$Wmxr#l)3}n2~Xh6B*OdzX;AooD&=4gIlfxyuS z&;1G+A+;1$tSIxwnb7~*#(HkHz~$q^Kx6wI6c-4AI$hJROh`~~Finu7A;CNxq&A$9 zxMxI2Zp}gLdfpn#6!m~Sj-U^p?Fvp`IVEP7apl6iXFydZS(($BJ(x%ABGuOE_KAsR zvxzd~=F-W7A;hTe?1EXfb{ow$|3RbIF*Ybjzo7MI^g;8y-1%e^6GhS+?d2B1vlxRW z@+|f`(^(D^tQgNlB>@oOCk%ryG(}*x>G0#Zo^}LvBoa5@ay!`72m&?sn2ynT!Jomo$od2HRV|~c^N}O2PICJToH(&ik_2As< z>aa35dBblWCvXfBTLypT)WcFaD;#%#9~mHP-hjAmYKx2Ud5YABxclvP>nDHmr)ERJ zB$pOzfWp&;`^`7|Gk_-*SK%KDM?|p!Bqtnn3D-!pk_=F^JyKDy$LyOVIlo|54qCKf z?zEAG{~MbPNSbssV?j^MAL>bX1^-}@$BEUF6m;MjkQ!^1Cv>4w+7ge^YTBVT9kc|z zYZVSGREQlAAE~ou48m3jA?lZ6muw2EG0frF@%6agog@SC&rwEw3A%_(dxq$0)uicmO1I|00= zxK^ytn6uhn3BJDcYN6ipEb+~Y8g4i11+WqM(IcFbedKYw?WX^cyNqTt_OwYk<;@@b;k~!raX0Q#kz~1= z$;}dTJGtcKy6ZngH8oXn7>urZ&3Jva_wb*u{I9S7Rb|m$YNyD>G#Z_;Sn2k=zj>GTa(0QyN$pt z9D|o&QAVWzg@n&DT#%-W+9K9a3Ez#$BN%Og5m(S5Ez4U^>Ji>2R_Yp-9xf&G=}9%G z;jwM9GIPTsz2J=bzkk-DE6+dZnGfbOpm1qcv81m1aL=D}_7RI}2g>cNDG1AlK-7|3 z$5z&PM6nKGXEM-Bf7qYmUbZ2^3PIjzcknHs$SaH#_&Vggn!5dFYzA2%=EYi-b+W)K zwKH>aJrbG-a?T|{miTA8pfEAB#u@l5d=@w%4&%3et{k%yW$58at6;Aq^c3X|%4Fp? z0qEKrDt80lOaW(!Jg@;vyK_l}SsSV}K%@H1GWVw))X6M91J}>V^$8k|4OC=90kNV& z&$2)`d~jd@96TAy2jzv%GXugDbmSEQPx((ZHcKJq$}DNP%jnGKAw2g2GxnXFr#`&n z-g|HS_}%KslnR-u0?(nsW|pdps=+mzjm?eLTi!l?{IRo2`Q=9*{et^5IamUkWgMuL zyRGJUC-<&*>PuAJrSgLZs%OX%uFXBSknXg)0+V7pa-hHjX6IO>Y_&|a#H7kjE|YoA z$+hP{|A);CQC_RnrYG$WX!jR#FMZ{|67Js{sVWg-gWM7>x7zF!wMeq`qLBO;pq`kVkbDAljx5)0MMmc z<RiRD+o^yz=x#OSJq1kl zl9yff)N-Esf+!w#*ztYBwW;+8G;afLxK%3TkRv;CYr9KB!U6Qv6h|evqlx|4blhbC z{!QS7=`n5mrsX!T<&!5?NtPqk%!*Eg+4NV2GiT-#y+mept&z@Wm=LJCHHVBT9oC;EMBtF8~1jAu53bIB~is8|RuVTIkTac{N;z&Wz-{Qb>gI?#IH+<|ZuX$y2 zXZCmB`+jWpo_FPc_3DmNG;+BHd Date: Thu, 23 Nov 2023 16:59:17 +0100 Subject: [PATCH 129/207] feat: add translations(pls work) --- src/main/resources/assets/hbm/lang/en_US.lang | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index da1e3e2f9..696ebe517 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5537,6 +5537,14 @@ tile.watz_pump.name=Watz Pressure Pump tile.yellow_barrel.name=Radioactive Barrel tile.zirnox_destroyed.name=Destroyed ZIRNOX +tile.large_vehicle_door.name=Large Vehicle Door +tile.water_door.name=Water Door +tile.qe_containment.name=QE Containment Door +tile.qe_sliding.name=QE Sliding Door +tile.round_airlock_door.name=Round Airlock Door +tile.secure_access_door.name=Secure Access Door +tile.sliding_seal_door.name=Sliding Seal Door + trait.asbestos=Asbestos trait.blinding=Blinding trait.coal=Coal Dust From 862488d4215c7d453e7c97bf75db109272ce9f6e Mon Sep 17 00:00:00 2001 From: KoblizekXD Date: Thu, 23 Nov 2023 17:02:18 +0100 Subject: [PATCH 130/207] feat: add recipes for ass embler --- .../java/com/hbm/inventory/recipes/AssemblerRecipes.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index de360a362..e5e0d5bef 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -1214,6 +1214,13 @@ public class AssemblerRecipes { new ComparableStack(ModItems.bolt_dura_steel, 8), new ComparableStack(ModItems.motor, 2) }, 200); + makeRecipe(new ComparableStack(ModBlocks.large_vehicle_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 36), new OreDictStack("plateAdvancedAlloy", 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 4), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack("dyeGreen", 4)}, 500); + makeRecipe(new ComparableStack(ModBlocks.water_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new OreDictStack("plateAdvancedAlloy", 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack("dyeRed", 1)}, 500); + makeRecipe(new ComparableStack(ModBlocks.qe_containment, 1), new AStack[]{new OreDictStack(STEEL.plate(), 24), new OreDictStack("plateAdvancedAlloy", 8), new ComparableStack(ModItems.plate_polymer, 8), new OreDictStack("blockSteel", 2), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.bolt_dura_steel, 16), new OreDictStack("dyeBlack", 4)}, 500); + makeRecipe(new ComparableStack(ModBlocks.qe_sliding_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack("dyeWhite", 4), new ComparableStack(Blocks.glass, 4)}, 200); + makeRecipe(new ComparableStack(ModBlocks.round_airlock_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 32), new OreDictStack("plateAdvancedAlloy", 12), new ComparableStack(ModItems.plate_polymer, 12), new OreDictStack("blockSteel", 6), new ComparableStack(ModItems.motor, 6), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack("dyeGreen", 4)}, 500); + makeRecipe(new ComparableStack(ModBlocks.secure_access_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 48), new OreDictStack("plateAdvancedAlloy", 16), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 6), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.bolt_dura_steel, 24), new OreDictStack("dyeRed", 8)}, 1000); + makeRecipe(new ComparableStack(ModBlocks.sliding_seal_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new OreDictStack("plateAdvancedAlloy", 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack("dyeWhite", 2)}, 500); if(Loader.isModLoaded("Mekanism")) { From 4af44b880d1a494d4cef85e247faaec78c8975bf Mon Sep 17 00:00:00 2001 From: KoblizekXD Date: Thu, 23 Nov 2023 19:09:06 +0100 Subject: [PATCH 131/207] fix: fix problematic sounds (minor skill issue) --- src/main/java/com/hbm/tileentity/DoorDecl.java | 2 +- src/main/resources/assets/hbm/sounds.json | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index 40e1c7047..64b073fd6 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -568,7 +568,7 @@ public abstract class DoorDecl { }; @Override public String getCloseSoundEnd() { - return "hbmsound:door.qe_sliding_shut"; + return "hbm:door.qe_sliding_shut"; }; @Override public String getOpenSoundLoop() { diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index b550633a4..8c1d73bde 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -70,14 +70,14 @@ "door.garage_move": { "category": "block", "sounds": [{"name": "block/door/garage_move", "stream": false}] }, "door.garage_stop": { "category": "block", "sounds": [{"name": "block/door/garage_stop", "stream": false}] }, - "block.door.lever": {"category": "player", "sounds": [{"name": "hbm:block/doors/lever1", "stream": false}]}, - "block.door.wgh_big_start": {"category": "player", "sounds": [{"name": "hbm:block/doors/door_wgh_big_start", "stream": false}]}, - "block.door.wgh_big_stop": {"category": "player", "sounds": [{"name": "hbm:block/doors/door_wgh_big_stop", "stream": false}]}, - "block.door.qe_sliding_shut": {"category": "player", "sounds": [{"name": "hbm:block/doors/doorshut_1", "stream": false}]}, - "block.door.qe_sliding_opened": {"category": "player", "sounds": [{"name": "hbm:block/doors/doorslide_opened1", "stream": false}]}, - "block.door.qe_sliding_opening": {"category": "player", "sounds": [{"name": "hbm:block/doors/doorslide_opening1", "stream": false}]}, - "block.door.sliding_seal_open": {"category": "player", "sounds": [{"name": "hbm:block/doors/doormove2", "stream": false}]}, - "block.door.sliding_seal_stop": {"category": "player", "sounds": [{"name": "hbm:block/doors/metal_stop1", "stream": false}]}, + "door.lever": {"category": "player", "sounds": [{"name": "block/door/lever1", "stream": false}]}, + "door.wgh_big_start": {"category": "player", "sounds": [{"name": "block/door/door_wgh_big_start", "stream": false}]}, + "door.wgh_big_stop": {"category": "player", "sounds": [{"name": "block/door/door_wgh_big_stop", "stream": false}]}, + "door.qe_sliding_shut": {"category": "player", "sounds": [{"name": "block/door/doorshut_1", "stream": false}]}, + "door.qe_sliding_opened": {"category": "player", "sounds": [{"name": "block/door/doorslide_opened1", "stream": false}]}, + "door.qe_sliding_opening": {"category": "player", "sounds": [{"name": "block/door/doorslide_opening1", "stream": false}]}, + "door.sliding_seal_open": {"category": "player", "sounds": [{"name": "block/door/doormove2", "stream": false}]}, + "door.sliding_seal_stop": {"category": "player", "sounds": [{"name": "block/door/metal_stop1", "stream": false}]}, "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, From f84696714acf394660645cde9eca7a2f90414c08 Mon Sep 17 00:00:00 2001 From: KoblizekXD Date: Thu, 23 Nov 2023 20:12:06 +0100 Subject: [PATCH 132/207] *sound* --- src/main/resources/assets/hbm/sounds.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 8c1d73bde..fdea12a18 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -70,14 +70,14 @@ "door.garage_move": { "category": "block", "sounds": [{"name": "block/door/garage_move", "stream": false}] }, "door.garage_stop": { "category": "block", "sounds": [{"name": "block/door/garage_stop", "stream": false}] }, - "door.lever": {"category": "player", "sounds": [{"name": "block/door/lever1", "stream": false}]}, - "door.wgh_big_start": {"category": "player", "sounds": [{"name": "block/door/door_wgh_big_start", "stream": false}]}, - "door.wgh_big_stop": {"category": "player", "sounds": [{"name": "block/door/door_wgh_big_stop", "stream": false}]}, - "door.qe_sliding_shut": {"category": "player", "sounds": [{"name": "block/door/doorshut_1", "stream": false}]}, - "door.qe_sliding_opened": {"category": "player", "sounds": [{"name": "block/door/doorslide_opened1", "stream": false}]}, - "door.qe_sliding_opening": {"category": "player", "sounds": [{"name": "block/door/doorslide_opening1", "stream": false}]}, - "door.sliding_seal_open": {"category": "player", "sounds": [{"name": "block/door/doormove2", "stream": false}]}, - "door.sliding_seal_stop": {"category": "player", "sounds": [{"name": "block/door/metal_stop1", "stream": false}]}, + "door.lever": {"category": "block", "sounds": [{"name": "block/door/lever1", "stream": false}]}, + "door.wgh_big_start": {"category": "block", "sounds": [{"name": "block/door/door_wgh_big_start", "stream": false}]}, + "door.wgh_big_stop": {"category": "block", "sounds": [{"name": "block/door/door_wgh_big_stop", "stream": false}]}, + "door.qe_sliding_shut": {"category": "block", "sounds": [{"name": "block/door/doorshut_1", "stream": false}]}, + "door.qe_sliding_opened": {"category": "block", "sounds": [{"name": "block/door/doorslide_opened1", "stream": false}]}, + "door.qe_sliding_opening": {"category": "block", "sounds": [{"name": "block/door/doorslide_opening1", "stream": false}]}, + "door.sliding_seal_open": {"category": "block", "sounds": [{"name": "block/door/doormove2", "stream": false}]}, + "door.sliding_seal_stop": {"category": "block", "sounds": [{"name": "block/door/metal_stop1", "stream": false}]}, "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, From 8fac493947382446a6495241f0ab5ed88f21c6e9 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 27 Nov 2023 16:00:19 +0100 Subject: [PATCH 133/207] post merge fixes, radar-launchable custom missiles, more stuff --- changelog | 54 +- src/main/java/com/hbm/blocks/ModBlocks.java | 25 +- .../com/hbm/blocks/bomb/CompactLauncher.java | 2 +- .../java/com/hbm/blocks/bomb/LaunchTable.java | 2 +- .../container/ContainerLaunchPadTier1.java | 1 - src/main/java/com/hbm/lib/HbmWorldGen.java | 4 +- src/main/java/com/hbm/main/ClientProxy.java | 1 - .../java/com/hbm/tileentity/DoorDecl.java | 2127 +++++++++-------- .../bomb/TileEntityCompactLauncher.java | 28 +- .../bomb/TileEntityLaunchTable.java | 48 +- .../gui/processing/gui_exposure_chamber.png | Bin 0 -> 3129 bytes 11 files changed, 1152 insertions(+), 1140 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_exposure_chamber.png diff --git a/changelog b/changelog index e707528ba..441e8123c 100644 --- a/changelog +++ b/changelog @@ -1,52 +1,12 @@ ## Added -* Nitra - * Dropped by the painsaw ability when killing a mob - * Can be used to quickly craft standard ammo types in the 2x2 crafting grid - * Can also refill empty syringes, making stimpaks -* Latex - * Can be made from dandelions or from pressing jungle wood - * Replaces insulator in many recipes where electrical insulation that is potentially made from brick doesn't make sense, like rubber gas masks, jackets, tools and so on - * Latex is interchangable with rubber in all recipes where it's used, but not the other way round - * The old insulator is now mainly used for electrical and heat insulation as well as PWR rods -* Radar screen - * Radars can be linked to one radar screen, which will display all detected blips - * Right-clicking the radar screen will open the GUI of the radar that it is linked to +* Doors! + * Your favorites from 1.12, the 7 remaining doors have finally been ported + * Thanks to KoblizekXD for biting the bullet ## Changed -* Light oil and cracked light oil can now be reformed into large quantities of aromatic hydrocarbons a well as some reformate gas -* The painsaw ability no longer drops ammo and syringes, instead it drops nitra -* Radars have been completely rewritten - * Dots will now move smoothly across the screen, instead of jittering and being bound to the pixel grid - * Radars no longer use CPU-intensive full scans of the map, instead of using an optimized search for nearby scannable entities - * There's now a dedicated toggle for detecting artillery shells - * Radars now have a local area map that can be enabled - * The map scans up to 100 points per tick, the display can show 40,000 points - * The map will scan loaded chunks instantly, unloaded chunks have a limit 10 chunkloads per tick to prevent excessive lag. Chunks that have not yet been generated yet will show up as black spots, and will never be loaded - * The chunk load limit as well as whether chunks should be generated can be adjusted in the machine config file - * The map will show terrain height between Y:50 and Y:128, anything outside that range is truncated - * Radars now have a second GUI which allows the use of a battery, as well as linking the radar to other machines - * By using the number keys, the radar can now launch missiles, ABMs or artillery at the current aimed at position - * Radars can be linked to one additional radar screen which shows part of the radar's GUI in-world -* The turbofan's afterburner now adds a 33% efficiency bonus for every level. This means that instead of the efficiency remaining constant between levels, a tier 3 upgrade will yield double efficiency. -* Reduced the flarestack's base energy efficiency -* Trenchmaster armor is now unbreakable -* The arc welder recipe for advanced circuits now uses simple insulator instead of gold dust -* The arc welder recipes for enhanced and advanced circuits now use only 100mB of fluid instead of 250mB -* Completely rewrote the missile base code, missiles now accelerate smoothly instead of in increments and use interpolated movement, making them less jittery -* Missiles now have a slightly higher top-speed -* Remodeled tier 1, 2 and 3 missiles as well as the anti-ballistic missile -* Anti-ballistic missiles now use predictive targeting as well as a heightened sensor range of 1,000 blocks (instead of 500) which should make them a lot more effective -* Anti-ballistic missiles accelerate 4x faster than normal missiles and have a 50% higher top-speed -* Anti-ballistic missiles can now load their own chunks, allowing them to get to far away incoming missiles without getting stuck -* PWRs that have recently been close to unloaded chunks now have a 40 tick timeframe where they are "frozen", only trying to connect to a fluid network but not doing any fission, this should reduce the amount of meltdowns caused by chunkloading -* Glyphid hive blocks now have some color variance -* Glpyhid spawners now have a unique texture +* Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high +* Custom missiles are now launchable using the radar +* NTM's structures should no longer spawn in dimensions besides the overworld. Ores will still generate, assuming the config option is set. ## Fixed -* Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer -* Fixed custom machine NEI slots going out of bounds after the third slot -* Fixed bismuth billets not being oredicted, making BFB PWR rods uncraftable -* Fixed missile chunkloading having rounding issues, sometimes causing them to get stuck in unloaded chunks while crossing chunk borders -* Fixed drones not being listed in the creative tabs -* Fixed pre-defined fluid duct items not being being able to be placed where replacable blocks are, eg. water -* Fixed horrible gamebreaking bug where the reinforced glass pane has too much blast resistance \ No newline at end of file +* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 98442c95e..60f325e78 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2144,20 +2144,19 @@ public class ModBlocks { seal_controller = new BlockSeal(Material.iron).setBlockName("seal_controller").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab); seal_hatch = new BlockHatch(Material.iron).setBlockName("seal_hatch").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":seal_hatch_3"); - vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door"); - blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door"); + vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door"); + blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door"); - sliding_blast_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDE_DOOR).setBlockName("sliding_blast_door").setHardness(150.0F).setResistance(7500.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":sliding_blast_door"); - - fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); - transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); - secure_access_door = new BlockDoorGeneric(Material.iron, DoorDecl.SECURE_ACCESS_DOOR).setBlockName("secure_access_door").setHardness(200.0F).setResistance(20000.0F).setCreativeTab(MainRegistry.machineTab); - large_vehicle_door = new BlockDoorGeneric(Material.iron, DoorDecl.LARGE_VEHICLE_DOOR).setBlockName("large_vehicle_door").setHardness(100.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); - qe_containment = new BlockDoorGeneric(Material.iron, DoorDecl.QE_CONTAINMENT).setBlockName("qe_containment").setHardness(100.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); - qe_sliding_door = new BlockDoorGeneric(Material.iron, DoorDecl.QE_SLIDING).setBlockName("qe_sliding_door").setHardness(100.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); - round_airlock_door = new BlockDoorGeneric(Material.iron, DoorDecl.ROUND_AIRLOCK_DOOR).setBlockName("round_airlock_door").setHardness(100.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); - sliding_seal_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDING_SEAL_DOOR).setBlockName("sliding_seal_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); - water_door = new BlockDoorGeneric(Material.iron, DoorDecl.WATER_DOOR).setBlockName("water_door").setHardness(50.0F).setResistance(500.0F).setCreativeTab(MainRegistry.machineTab); + sliding_blast_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDE_DOOR).setBlockName("sliding_blast_door").setHardness(10.0F).setResistance(750.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":sliding_blast_door"); + fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); + transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); + secure_access_door = new BlockDoorGeneric(Material.iron, DoorDecl.SECURE_ACCESS_DOOR).setBlockName("secure_access_door").setHardness(20.0F).setResistance(2_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + large_vehicle_door = new BlockDoorGeneric(Material.iron, DoorDecl.LARGE_VEHICLE_DOOR).setBlockName("large_vehicle_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + qe_containment = new BlockDoorGeneric(Material.iron, DoorDecl.QE_CONTAINMENT).setBlockName("qe_containment").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + qe_sliding_door = new BlockDoorGeneric(Material.iron, DoorDecl.QE_SLIDING).setBlockName("qe_sliding_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + round_airlock_door = new BlockDoorGeneric(Material.iron, DoorDecl.ROUND_AIRLOCK_DOOR).setBlockName("round_airlock_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + sliding_seal_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDING_SEAL_DOOR).setBlockName("sliding_seal_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + water_door = new BlockDoorGeneric(Material.iron, DoorDecl.WATER_DOOR).setBlockName("water_door").setHardness(5.0F).setResistance(50.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal"); door_office = new BlockModDoor(Material.iron).setBlockName("door_office").setHardness(10.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":door_office"); diff --git a/src/main/java/com/hbm/blocks/bomb/CompactLauncher.java b/src/main/java/com/hbm/blocks/bomb/CompactLauncher.java index 10f7547aa..eb9764411 100644 --- a/src/main/java/com/hbm/blocks/bomb/CompactLauncher.java +++ b/src/main/java/com/hbm/blocks/bomb/CompactLauncher.java @@ -123,7 +123,7 @@ public class CompactLauncher extends BlockContainer implements IMultiblock, IBom TileEntityCompactLauncher entity = (TileEntityCompactLauncher) world.getTileEntity(x, y, z); if(entity.canLaunch()) { - entity.launch(); + entity.launchFromDesignator(); return BombReturnCode.LAUNCHED; } diff --git a/src/main/java/com/hbm/blocks/bomb/LaunchTable.java b/src/main/java/com/hbm/blocks/bomb/LaunchTable.java index 3170cea1c..e5f194f59 100644 --- a/src/main/java/com/hbm/blocks/bomb/LaunchTable.java +++ b/src/main/java/com/hbm/blocks/bomb/LaunchTable.java @@ -163,7 +163,7 @@ public class LaunchTable extends BlockContainer implements IMultiblock, IBomb { TileEntityLaunchTable entity = (TileEntityLaunchTable) world.getTileEntity(x, y, z); if(entity.canLaunch()) { - entity.launch(); + entity.launchFromDesignator(); return BombReturnCode.LAUNCHED; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java index 0abda201e..a19e9a385 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java +++ b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadTier1.java @@ -5,7 +5,6 @@ import com.hbm.tileentity.bomb.TileEntityLaunchPad; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index e233d59d2..d8019a7ea 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -236,7 +236,7 @@ public class HbmWorldGen implements IWorldGenerator { enableDungeons = provider.hasDungeons; } - if(GeneralConfig.enableDungeons && world.provider.isSurfaceWorld() && enableDungeons) { + if(GeneralConfig.enableDungeons && world.provider.dimensionId == 0 && enableDungeons) { if(MobConfig.enableHives && rand.nextInt(MobConfig.hiveSpawn) == 0) { int x = i + rand.nextInt(16) + 8; @@ -670,7 +670,7 @@ public class HbmWorldGen implements IWorldGenerator { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z) - rand.nextInt(10); - (new Meteorite()).generate(world, rand, x, y, z, false, false, false); + if(y > 1) (new Meteorite()).generate(world, rand, x, y, z, false, false, false); } if (GeneralConfig.enableNITAN) { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 8ee506eb5..2babe6244 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -2062,4 +2062,3 @@ public class ClientProxy extends ServerProxy { Minecraft.getMinecraft().getSoundHandler().playSound(new PositionedSoundRecord(new ResourceLocation(sound), volume, pitch, (float) x, (float) y, (float) z)); } } - diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index 64b073fd6..704e7b97a 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -5,1076 +5,1077 @@ import com.hbm.animloader.Animation; import com.hbm.lib.Library; import com.hbm.main.ResourceManager; import com.hbm.render.loader.WavefrontObjDisplayList; -import com.hbm.sound.MovingSoundPlayerLoop; import com.hbm.util.BobMathUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.event.sound.SoundEvent; import org.lwjgl.opengl.GL11; public abstract class DoorDecl { - public static final DoorDecl TRANSITION_SEAL = new DoorDecl() { - - @Override - public String getOpenSoundStart() { - return "hbm:door.TransitionSealOpen"; - } - - @Override - public float getSoundVolume() { - return 6; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if (!partName.equals("base")) { - set(trans, 0, 3.5F * getNormTime(openTicks), 0); - } else { - super.getTranslation(partName, openTicks, child, trans); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glTranslated(0, 0, 0.5); - } - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return super.getClippingPlanes(); - } - - @Override - public int timeToOpen() { - return 480; - } - - @Override - public int[][] getDoorOpenRanges() { - //3 is tall - //4 is wide - return new int[][]{{-9, 2, 0, 20, 20, 1}}; - } - - @Override - public int[] getDimensions() { - return new int[]{23, 0, 0, 0, 13, 12}; - } - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - return super.getBlockBound(x, y, z, open); - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return ResourceManager.transition_seal_tex; - } - - @Override - @SideOnly(Side.CLIENT) - public Animation getAnim() { - return ResourceManager.transition_seal_anim; - } - - @Override - @SideOnly(Side.CLIENT) - public AnimatedModel getAnimatedModel() { - return ResourceManager.transition_seal; - } - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { - return null; - } - }; - - public static final DoorDecl FIRE_DOOR = new DoorDecl() { - - @Override - public String getOpenSoundEnd() { - return "hbm:door.wghStop"; - } - - @Override - public String getOpenSoundLoop() { - return "hbm:door.wghStart"; - } - - @Override - public String getSoundLoop2() { - return "hbm:door.alarm6"; - } - - @Override - public float getSoundVolume() { - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if (!partName.equals("frame")) { - set(trans, 0, 3 * getNormTime(openTicks), 0); - } else { - super.getTranslation(partName, openTicks, child, trans); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glTranslated(0, 0, 0.5); - } - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{{0, -1, 0, 3.0001}}; - } - - @Override - public int timeToOpen() { - return 160; - } - - @Override - public int[][] getDoorOpenRanges() { - return new int[][]{{-1, 0, 0, 3, 4, 1}}; - } - - @Override - public int[] getDimensions() { - return new int[]{2, 0, 0, 0, 2, 1}; - } - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if (!open) - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); - if (z == 1) { - return AxisAlignedBB.getBoundingBox(0.5, 0, 0, 1, 1, 1); - } else if (z == -2) { - return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.5, 1, 1); - } else if (y > 1) { - return AxisAlignedBB.getBoundingBox(0, 0.75, 0, 1, 1, 1); - } else if (y == 0) { - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.1, 1); - } else { - return super.getBlockBound(x, y, z, open); - } - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return ResourceManager.fire_door_tex; - } - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel() { - return ResourceManager.fire_door; - } - }; - - public static final DoorDecl SLIDE_DOOR = new DoorDecl() { - @Override - public String getOpenSoundEnd() { - return "hbm:door.sliding_door_opened"; - } - - @Override - public String getCloseSoundEnd() { - return "hbm:door.sliding_door_shut"; - } - - @Override - public String getOpenSoundLoop() { - return "hbm:door.sliding_door_opening"; - } - - @Override - public String getSoundLoop2() { - return "hbm:door.sliding_door_opening"; - } - - @Override - public float getSoundVolume() { - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glRotated(-90, 0, 1, 0); - } - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{ - {-1, 0, 0, 3.50001}, - {1, 0, 0, 3.50001} - }; - } - - @Override - public int timeToOpen() { - return 24; - } - - @Override - public int[][] getDoorOpenRanges() { - return new int[][]{{-2, 0, 0, 4, 5, 1}}; - } - - @Override - public int[] getDimensions() { - return new int[]{3, 0, 0, 0, 3, 3}; - } - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if (open) { - if (y == 3) { - return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1); - } else if (y == 0) { - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.08, 1); - } - } - return super.getBlockBound(x, y, z, open); - } - - @Override - public boolean hasSkins() { - return true; - } - - @Override - public int getSkinCount() { - return 3; - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return new ResourceLocation[] { - ResourceManager.sliding_blast_door_tex, - ResourceManager.sliding_blast_door_variant1_tex, - ResourceManager.sliding_blast_door_variant2_tex - }[skinIndex]; - } - - @Override - public WavefrontObjDisplayList getModel() { - return null; - } - - @Override - public Animation getAnim() { - return ResourceManager.sliding_blast_door_anim; - } - - @Override - public AnimatedModel getAnimatedModel() { - return ResourceManager.sliding_blast_door; - } - }; - - public static final DoorDecl SLIDING_SEAL_DOOR = new DoorDecl(){ - - @Override - public String getOpenSoundEnd() { - return "hbm:door.sliding_seal_stop"; - } - - @Override - public String getOpenSoundStart() { - return "hbm:door.sliding_seal_open"; - } - - public float getSoundVolume(){ - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if(partName.startsWith("door")){ - set(trans, 0, 0, Library.smoothstep(getNormTime(openTicks), 0, 1)); - } else { - set(trans, 0, 0, 0); - } - }; - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{{0, 0, -1, 0.5001}}; - }; - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glTranslated(0.375, 0, 0); - }; - - @Override - public int timeToOpen() { - return 20; - }; - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if(open){ - if(y == 0) - return AxisAlignedBB.getBoundingBox(0, 0, 1-0.25, 1, 0.125, 1); - return super.getBlockBound(x, y, z, open); - } else { - return AxisAlignedBB.getBoundingBox(0, 0, 1-0.25, 1, 1, 1); - } - }; - - @Override - public int[][] getDoorOpenRanges(){ - return new int[][]{{0, 0, 0, 1, 2, 2}}; - } - - @Override - public int[] getDimensions(){ - return new int[]{1, 0, 0, 0, 0, 0}; - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ - return ResourceManager.sliding_seal_door_tex; - } - - @Override - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return ResourceManager.sliding_seal_door_tex; - } - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ - return ResourceManager.sliding_seal_door; - } - }; - - public static final DoorDecl SECURE_ACCESS_DOOR = new DoorDecl(){ - - @Override - public String getCloseSoundLoop() { - return "hbm:door.garage_move"; - } - - @Override - public String getCloseSoundEnd() { - return "hbm:door.garage_stop"; - } - - @Override - public String getOpenSoundEnd() { - return "hbm:door.garage_stop"; - } - - @Override - public String getOpenSoundLoop() { - return "hbm:door.garage_move"; - } - - @Override - public float getSoundVolume(){ - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if(!partName.equals("base")){ - set(trans, 0, 3.5F*getNormTime(openTicks), 0); - } else { - super.getTranslation(partName, openTicks, child, trans); - } - }; - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glRotated(90, 0, 1, 0); - }; - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{{0, -1, 0, 5}}; - }; - - @Override - public int timeToOpen() { - return 120; - }; - - @Override - public int[][] getDoorOpenRanges(){ - return new int[][]{{-2, 1, 0, 4, 5, 1}}; - } - - @Override - public int[] getDimensions(){ - return new int[]{4, 0, 0, 0, 2, 2}; - } - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if(!open){ - if(y > 0){ - return AxisAlignedBB.getBoundingBox(0, 0, 0.375, 1, 1, 0.625); - } - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); - } - if(y == 1) { - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1); - } else if(y == 4){ - return AxisAlignedBB.getBoundingBox(0, 0.5, 0.15, 1, 1, 0.85); - } else { - return super.getBlockBound(x, y, z, open); - } - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ - return ResourceManager.secure_access_door_tex; - } - - @Override - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return ResourceManager.secure_access_door_tex; - } - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ - return ResourceManager.secure_access_door; - } - }; - - public static final DoorDecl ROUND_AIRLOCK_DOOR = new DoorDecl(){ - - @Override - public String getOpenSoundEnd() { - return "hbm:door.garage_stop"; - } - - @Override - public String getOpenSoundLoop() { - return "hbm:door.garage_move"; - } - - public float getSoundVolume(){ - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if("doorLeft".equals(partName)){ - set(trans, 0, 0, 1.5F*getNormTime(openTicks)); - } else if("doorRight".equals(partName)){ - set(trans, 0, 0, -1.5F*getNormTime(openTicks)); - } else { - super.getTranslation(partName, openTicks, child, trans); - } - }; - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glTranslated(0, 0, 0.5); - }; - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{{0.0, 0.0, 1.0, 2.0001}, {0.0, 0.0, -1.0, 2.0001}}; - }; - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if(!open) - return super.getBlockBound(x, y, z, open); - if(z == 1){ - return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1); - } else if(z == -2){ - return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.6, 1, 1); - } else if(y == 3){ - return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1); - } else if(y == 0){ - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1); - } - return super.getBlockBound(x, y, z, open); - }; - - @Override - public int timeToOpen() { - return 60; - }; - - @Override - public int[][] getDoorOpenRanges(){ - return new int[][]{{0, 0, 0, -2, 4, 2}, {0, 0, 0, 3, 4, 2}}; - } - - @Override - public int[] getDimensions() { - return new int[]{3, 0, 0, 0, 2, 1}; - }; - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ - return ResourceManager.round_airlock_door_tex; - } - - @Override - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return ResourceManager.round_airlock_door_tex; - } - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ - return ResourceManager.round_airlock_door; - } - }; - - public static final DoorDecl QE_SLIDING = new DoorDecl(){ - - @Override - public String getOpenSoundEnd() { - return "hbm:door.qe_sliding_opened"; - }; - @Override - public String getCloseSoundEnd() { - return "hbm:door.qe_sliding_shut"; - }; - @Override - public String getOpenSoundLoop() { - return "hbm:door.qe_sliding_opening"; - }; - - public float getSoundVolume(){ - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if(partName.startsWith("left")){ - set(trans, 0, 0, 1*getNormTime(openTicks)); - } else { - set(trans, 0, 0, -1*getNormTime(openTicks)); - } - }; - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glTranslated(0.4375, 0, 0.5); - }; - - @Override - public int timeToOpen() { - return 10; - }; - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if(open){ - if(z == 0){ - return AxisAlignedBB.getBoundingBox(1-0.125, 0, 1-0.125, 1, 1, 1); - } else { - return AxisAlignedBB.getBoundingBox(0, 0, 1-0.125, 0.125, 1, 1); - } - } else { - return AxisAlignedBB.getBoundingBox(0, 0, 1-0.125, 1, 1, 1); - } - }; - - @Override - public int[][] getDoorOpenRanges(){ - return new int[][]{{0, 0, 0, 2, 2, 2}}; - } - - @Override - public int[] getDimensions(){ - return new int[]{1, 0, 0, 0, 1, 0}; - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ - return ResourceManager.qe_sliding_door_tex; - } - - @Override - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return getTextureForPart(partName); - } - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ - return ResourceManager.qe_sliding_door; - } - - }; - - public static final DoorDecl QE_CONTAINMENT = new DoorDecl(){ - - @Override - public String getOpenSoundEnd() { - return "hbm:door.wgh_stop"; - }; - @Override - public String getOpenSoundLoop() { - return "hbm:door.wgh_start"; - }; - - @Override - public float getSoundVolume(){ - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if(!partName.equals("frame")){ - set(trans, 0, 3*getNormTime(openTicks), 0); - } else { - super.getTranslation(partName, openTicks, child, trans); - } - }; - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glTranslated(0.25, 0, 0); - }; - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{{0, -1, 0, 3.0001}}; - }; - - @Override - public int timeToOpen() { - return 160; - }; - - @Override - public int[][] getDoorOpenRanges(){ - return new int[][]{{-1, 0, 0, 3, 3, 1}}; - } - - @Override - public int[] getDimensions(){ - return new int[]{2, 0, 0, 0, 1, 1}; - } - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if(!open) - return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 1, 1); - if(y > 1) - return AxisAlignedBB.getBoundingBox(0, 0.5, 0.5, 1, 1, 1); - else if(y == 0) - return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 0.1, 1); - return super.getBlockBound(x, y, z, open); - }; - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ - if(partName.equals("decal")) - return ResourceManager.qe_containment_decal; - return ResourceManager.qe_containment_tex; - } - - @Override - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return getTextureForPart(partName); - } - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ - return ResourceManager.qe_containment; - } - - }; - - public static final DoorDecl WATER_DOOR = new DoorDecl(){ - - @Override - public String getOpenSoundEnd() { - return "hbm:door.wgh_big_stop"; - }; - @Override - public String getOpenSoundLoop() { - return "hbm:door.wgh_big_start"; - }; - @Override - public String getOpenSoundStart() { - return "hbm:door.door.lever"; - }; - @Override - public String getCloseSoundStart() { - return null; - }; - @Override - public String getCloseSoundEnd() { - return "hbm:door.door.lever"; - }; - - @Override - public float getSoundVolume(){ - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if("bolt".equals(partName)){ - set(trans, 0, 0, 0.4F*Library.smoothstep(getNormTime(openTicks, 0, 30), 0, 1)); - } else { - set(trans, 0, 0, 0); - } - }; - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform(){ - GL11.glTranslated(0.375, 0, 0); - } - - @Override - @SideOnly(Side.CLIENT) - public void getOrigin(String partName, float[] orig) { - if("door".equals(partName) || "bolt".equals(partName)){ - set(orig, 0.125F, 1.5F, 1.18F); - return; - } else if("spinny_upper".equals(partName)){ - set(orig, 0.041499F, 2.43569F, -0.587849F); - return; - } else if("spinny_lower".equals(partName)){ - set(orig, 0.041499F, 0.571054F, -0.587849F); - return; - } - super.getOrigin(partName, orig); - }; - - @Override - @SideOnly(Side.CLIENT) - public void getRotation(String partName, float openTicks, float[] rot) { - if(partName.startsWith("spinny")){ - set(rot, Library.smoothstep(getNormTime(openTicks, 0, 30), 0, 1)*360, 0, 0); - return; - } else if("door".equals(partName) || "bolt".equals(partName)){ - set(rot, 0, Library.smoothstep(getNormTime(openTicks, 30, 60), 0, 1)*-134, 0); - return; - } - super.getRotation(partName, openTicks, rot); - }; - - @Override - @SideOnly(Side.CLIENT) - public boolean doesRender(String partName, boolean child) { - return child || !partName.startsWith("spinny"); - }; - - @Override - @SideOnly(Side.CLIENT) - public String[] getChildren(String partName) { - if("door".equals(partName)) - return new String[]{"spinny_lower", "spinny_upper"}; - return super.getChildren(partName); - }; - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if(!open){ - return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 1, 1); - } else if(y > 1) { - return AxisAlignedBB.getBoundingBox(0, 0.85, 0.75, 1, 1, 1); - } else if(y == 0){ - return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 0.15, 1); - } - return super.getBlockBound(x, y, z, open); - }; - - @Override - public int timeToOpen() { - return 60; - }; - - @Override - public int[][] getDoorOpenRanges(){ - return new int[][]{{1, 0, 0, -3, 3, 2}}; - } - - public float getDoorRangeOpenTime(int ticks, int idx) { - return getNormTime(ticks, 35, 40); - }; - - @Override - public int[] getDimensions(){ - return new int[]{2, 0, 0, 0, 1, 1}; - } - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ - return ResourceManager.water_door_tex; - } - - @Override - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return ResourceManager.water_door_tex; - } - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ - return ResourceManager.water_door; - } - - }; - - public static final DoorDecl LARGE_VEHICLE_DOOR = new DoorDecl(){ - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if("doorLeft".equals(partName)){ - set(trans, 0, 0, 3*getNormTime(openTicks)); - } else if("doorRight".equals(partName)){ - set(trans, 0, 0, -3*getNormTime(openTicks)); - } else { - super.getTranslation(partName, openTicks, child, trans); - } - }; - - @Override - public String getOpenSoundEnd() { - return "hbm:door.garage_stop"; - } - - @Override - public String getOpenSoundLoop() { - return "hbm:door.garage_move"; - }; - - public float getSoundVolume(){ - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{{0.0, 0.0, 1.0, 3.50001}, {0.0, 0.0, -1.0, 3.50001}}; - }; - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if(!open) - return super.getBlockBound(x, y, z, open); - if(z == 3){ - return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1); - } else if(z == -3){ - return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.6, 1, 1); - } - return super.getBlockBound(x, y, z, open); - }; - - @Override - public int timeToOpen() { - return 60; - }; - - @Override - public int[][] getDoorOpenRanges(){ - return new int[][]{{0, 0, 0, -4, 6, 2}, {0, 0, 0, 4, 6, 2}}; - } - - @Override - public int[] getDimensions() { - return new int[]{5, 0, 0, 0, 3, 3}; - }; - - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ - return ResourceManager.large_vehicle_door_tex; - } - - @Override - public ResourceLocation getTextureForPart(int skinIndex, String partName) { - return ResourceManager.large_vehicle_door_tex; - } - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ - return ResourceManager.large_vehicle_door; - } - - }; - - //Format: x, y, z, tangent amount 1 (how long the door would be if it moved up), tangent amount 2 (door places blocks in this direction), axis (0-x, 1-y, 2-z) - public abstract int[][] getDoorOpenRanges(); - - public abstract int[] getDimensions(); - - public float getDoorRangeOpenTime(int ticks, int idx) { - return getNormTime(ticks); - } - - public int timeToOpen() { - return 20; - } - - public float getNormTime(float time) { - return getNormTime(time, 0, timeToOpen()); - } - - public float getNormTime(float time, float min, float max) { - return BobMathUtil.remap01_clamp(time, min, max); - } - - public boolean hasSkins() { - return false; - } - - public int getSkinCount() { - return 0; - } - - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName) { - return getTextureForPart(0, partName); - } - - @SideOnly(Side.CLIENT) - public abstract ResourceLocation getTextureForPart(int skinIndex, String partName); - - @SideOnly(Side.CLIENT) - public abstract WavefrontObjDisplayList getModel(); - - @SideOnly(Side.CLIENT) - public AnimatedModel getAnimatedModel() { - return null; - } - - @SideOnly(Side.CLIENT) - public Animation getAnim() { - return null; - } - - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - set(trans, 0, 0, 0); - } - - @SideOnly(Side.CLIENT) - public void getRotation(String partName, float openTicks, float[] rot) { - set(rot, 0, 0, 0); - } - - @SideOnly(Side.CLIENT) - public void getOrigin(String partName, float[] orig) { - set(orig, 0, 0, 0); - } - - @SideOnly(Side.CLIENT) - public boolean doesRender(String partName, boolean child) { - return true; - } - - private static final String[] nothing = new String[]{}; - - @SideOnly(Side.CLIENT) - public String[] getChildren(String partName) { - return nothing; - } - - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{}; - } - - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - } - - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - return open ? AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0) : AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); - } - - public boolean isLadder(boolean open) { - return false; - } - - public String getOpenSoundLoop() { - return null; - } - - //Hack - public String getSoundLoop2() { - return null; - } - - public String getCloseSoundLoop() { - return getOpenSoundLoop(); - } - - public String getOpenSoundStart() { - return null; - } - - public String getCloseSoundStart() { - return getOpenSoundStart(); - } - - public String getOpenSoundEnd() { - return null; - } - - public String getCloseSoundEnd() { - return getOpenSoundEnd(); - } - - public float getSoundVolume() { - return 1; - } - - public float[] set(float[] f, float x, float y, float z) { - f[0] = x; - f[1] = y; - f[2] = z; - return f; - } + public static final DoorDecl TRANSITION_SEAL = new DoorDecl() { + + @Override + public String getOpenSoundStart() { + return "hbm:door.TransitionSealOpen"; + } + + @Override + public float getSoundVolume() { + return 6; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(!partName.equals("base")) { + set(trans, 0, 3.5F * getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0, 0, 0.5); + } + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return super.getClippingPlanes(); + } + + @Override + public int timeToOpen() { + return 480; + } + + @Override + public int[][] getDoorOpenRanges() { + // 3 is tall + // 4 is wide + return new int[][] { { -9, 2, 0, 20, 20, 1 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 23, 0, 0, 0, 13, 12 }; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + return super.getBlockBound(x, y, z, open); + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.transition_seal_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public Animation getAnim() { + return ResourceManager.transition_seal_anim; + } + + @Override + @SideOnly(Side.CLIENT) + public AnimatedModel getAnimatedModel() { + return ResourceManager.transition_seal; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return null; + } + }; + + public static final DoorDecl FIRE_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.wghStop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.wghStart"; + } + + @Override + public String getSoundLoop2() { + return "hbm:door.alarm6"; + } + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(!partName.equals("frame")) { + set(trans, 0, 3 * getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0, 0, 0.5); + } + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0, -1, 0, 3.0001 } }; + } + + @Override + public int timeToOpen() { + return 160; + } + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { -1, 0, 0, 3, 4, 1 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 2, 0, 0, 0, 2, 1 }; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + if(z == 1) { + return AxisAlignedBB.getBoundingBox(0.5, 0, 0, 1, 1, 1); + } else if(z == -2) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.5, 1, 1); + } else if(y > 1) { + return AxisAlignedBB.getBoundingBox(0, 0.75, 0, 1, 1, 1); + } else if(y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.1, 1); + } else { + return super.getBlockBound(x, y, z, open); + } + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.fire_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.fire_door; + } + }; + + public static final DoorDecl SLIDE_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.sliding_door_opened"; + } + + @Override + public String getCloseSoundEnd() { + return "hbm:door.sliding_door_shut"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.sliding_door_opening"; + } + + @Override + public String getSoundLoop2() { + return "hbm:door.sliding_door_opening"; + } + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glRotated(-90, 0, 1, 0); + } + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { -1, 0, 0, 3.50001 }, { 1, 0, 0, 3.50001 } }; + } + + @Override + public int timeToOpen() { + return 24; + } + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { -2, 0, 0, 4, 5, 1 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 3, 0, 0, 0, 3, 3 }; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(open) { + if(y == 3) { + return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1); + } else if(y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.08, 1); + } + } + return super.getBlockBound(x, y, z, open); + } + + @Override + public boolean hasSkins() { + return true; + } + + @Override + public int getSkinCount() { + return 3; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return new ResourceLocation[] { ResourceManager.sliding_blast_door_tex, ResourceManager.sliding_blast_door_variant1_tex, ResourceManager.sliding_blast_door_variant2_tex }[skinIndex]; + } + + @Override + public WavefrontObjDisplayList getModel() { + return null; + } + + @Override + public Animation getAnim() { + return ResourceManager.sliding_blast_door_anim; + } + + @Override + public AnimatedModel getAnimatedModel() { + return ResourceManager.sliding_blast_door; + } + }; + + public static final DoorDecl SLIDING_SEAL_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.sliding_seal_stop"; + } + + @Override + public String getOpenSoundStart() { + return "hbm:door.sliding_seal_open"; + } + + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(partName.startsWith("door")) { + set(trans, 0, 0, Library.smoothstep(getNormTime(openTicks), 0, 1)); + } else { + set(trans, 0, 0, 0); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0, 0, -1, 0.5001 } }; + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.375, 0, 0); + }; + + @Override + public int timeToOpen() { + return 20; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(open) { + if(y == 0) + return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 0.125, 1); + return super.getBlockBound(x, y, z, open); + } else { + return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 1, 1); + } + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 0, 0, 0, 1, 2, 2 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 1, 0, 0, 0, 0, 0 }; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.sliding_seal_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.sliding_seal_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.sliding_seal_door; + } + }; + + public static final DoorDecl SECURE_ACCESS_DOOR = new DoorDecl() { + + @Override + public String getCloseSoundLoop() { + return "hbm:door.garage_move"; + } + + @Override + public String getCloseSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.garage_move"; + } + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(!partName.equals("base")) { + set(trans, 0, 3.5F * getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glRotated(90, 0, 1, 0); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0, -1, 0, 5 } }; + }; + + @Override + public int timeToOpen() { + return 120; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { -2, 1, 0, 4, 5, 1 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 4, 0, 0, 0, 2, 2 }; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) { + if(y > 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0.375, 1, 1, 0.625); + } + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + } + if(y == 1) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1); + } else if(y == 4) { + return AxisAlignedBB.getBoundingBox(0, 0.5, 0.15, 1, 1, 0.85); + } else { + return super.getBlockBound(x, y, z, open); + } + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.secure_access_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.secure_access_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.secure_access_door; + } + }; + + public static final DoorDecl ROUND_AIRLOCK_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.garage_move"; + } + + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if("doorLeft".equals(partName)) { + set(trans, 0, 0, 1.5F * getNormTime(openTicks)); + } else if("doorRight".equals(partName)) { + set(trans, 0, 0, -1.5F * getNormTime(openTicks)); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0, 0, 0.5); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0.0, 0.0, 1.0, 2.0001 }, { 0.0, 0.0, -1.0, 2.0001 } }; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return super.getBlockBound(x, y, z, open); + if(z == 1) { + return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1); + } else if(z == -2) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.6, 1, 1); + } else if(y == 3) { + return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1); + } else if(y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1); + } + return super.getBlockBound(x, y, z, open); + }; + + @Override + public int timeToOpen() { + return 60; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 0, 0, 0, -2, 4, 2 }, { 0, 0, 0, 3, 4, 2 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 3, 0, 0, 0, 2, 1 }; + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.round_airlock_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.round_airlock_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.round_airlock_door; + } + }; + + public static final DoorDecl QE_SLIDING = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.qe_sliding_opened"; + }; + + @Override + public String getCloseSoundEnd() { + return "hbm:door.qe_sliding_shut"; + }; + + @Override + public String getOpenSoundLoop() { + return "hbm:door.qe_sliding_opening"; + }; + + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(partName.startsWith("left")) { + set(trans, 0, 0, 1 * getNormTime(openTicks)); + } else { + set(trans, 0, 0, -1 * getNormTime(openTicks)); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.4375, 0, 0.5); + }; + + @Override + public int timeToOpen() { + return 10; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(open) { + if(z == 0) { + return AxisAlignedBB.getBoundingBox(1 - 0.125, 0, 1 - 0.125, 1, 1, 1); + } else { + return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.125, 0.125, 1, 1); + } + } else { + return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.125, 1, 1, 1); + } + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 0, 0, 0, 2, 2, 2 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 1, 0, 0, 0, 1, 0 }; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.qe_sliding_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return getTextureForPart(partName); + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.qe_sliding_door; + } + + }; + + public static final DoorDecl QE_CONTAINMENT = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.wgh_stop"; + }; + + @Override + public String getOpenSoundLoop() { + return "hbm:door.wgh_start"; + }; + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if(!partName.equals("frame")) { + set(trans, 0, 3 * getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.25, 0, 0); + }; + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0, -1, 0, 3.0001 } }; + }; + + @Override + public int timeToOpen() { + return 160; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { -1, 0, 0, 3, 3, 1 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 2, 0, 0, 0, 1, 1 }; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 1, 1); + if(y > 1) + return AxisAlignedBB.getBoundingBox(0, 0.5, 0.5, 1, 1, 1); + else if(y == 0) + return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 0.1, 1); + return super.getBlockBound(x, y, z, open); + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + if(partName.equals("decal")) + return ResourceManager.qe_containment_decal; + return ResourceManager.qe_containment_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return getTextureForPart(partName); + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.qe_containment; + } + + }; + + public static final DoorDecl WATER_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.wgh_big_stop"; + }; + + @Override + public String getOpenSoundLoop() { + return "hbm:door.wgh_big_start"; + }; + + @Override + public String getOpenSoundStart() { + return "hbm:door.door.lever"; + }; + + @Override + public String getCloseSoundStart() { + return null; + }; + + @Override + public String getCloseSoundEnd() { + return "hbm:door.door.lever"; + }; + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if("bolt".equals(partName)) { + set(trans, 0, 0, 0.4F * Library.smoothstep(getNormTime(openTicks, 0, 30), 0, 1)); + } else { + set(trans, 0, 0, 0); + } + }; + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0.375, 0, 0); + } + + @Override + @SideOnly(Side.CLIENT) + public void getOrigin(String partName, float[] orig) { + if("door".equals(partName) || "bolt".equals(partName)) { + set(orig, 0.125F, 1.5F, 1.18F); + return; + } else if("spinny_upper".equals(partName)) { + set(orig, 0.041499F, 2.43569F, -0.587849F); + return; + } else if("spinny_lower".equals(partName)) { + set(orig, 0.041499F, 0.571054F, -0.587849F); + return; + } + super.getOrigin(partName, orig); + }; + + @Override + @SideOnly(Side.CLIENT) + public void getRotation(String partName, float openTicks, float[] rot) { + if(partName.startsWith("spinny")) { + set(rot, Library.smoothstep(getNormTime(openTicks, 0, 30), 0, 1) * 360, 0, 0); + return; + } else if("door".equals(partName) || "bolt".equals(partName)) { + set(rot, 0, Library.smoothstep(getNormTime(openTicks, 30, 60), 0, 1) * -134, 0); + return; + } + super.getRotation(partName, openTicks, rot); + }; + + @Override + @SideOnly(Side.CLIENT) + public boolean doesRender(String partName, boolean child) { + return child || !partName.startsWith("spinny"); + }; + + @Override + @SideOnly(Side.CLIENT) + public String[] getChildren(String partName) { + if("door".equals(partName)) + return new String[] { "spinny_lower", "spinny_upper" }; + return super.getChildren(partName); + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) { + return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 1, 1); + } else if(y > 1) { + return AxisAlignedBB.getBoundingBox(0, 0.85, 0.75, 1, 1, 1); + } else if(y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 0.15, 1); + } + return super.getBlockBound(x, y, z, open); + }; + + @Override + public int timeToOpen() { + return 60; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 1, 0, 0, -3, 3, 2 } }; + } + + public float getDoorRangeOpenTime(int ticks, int idx) { + return getNormTime(ticks, 35, 40); + }; + + @Override + public int[] getDimensions() { + return new int[] { 2, 0, 0, 0, 1, 1 }; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.water_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.water_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.water_door; + } + + }; + + public static final DoorDecl LARGE_VEHICLE_DOOR = new DoorDecl() { + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if("doorLeft".equals(partName)) { + set(trans, 0, 0, 3 * getNormTime(openTicks)); + } else if("doorRight".equals(partName)) { + set(trans, 0, 0, -3 * getNormTime(openTicks)); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + }; + + @Override + public String getOpenSoundEnd() { + return "hbm:door.garage_stop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.garage_move"; + }; + + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] { { 0.0, 0.0, 1.0, 3.50001 }, { 0.0, 0.0, -1.0, 3.50001 } }; + }; + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if(!open) + return super.getBlockBound(x, y, z, open); + if(z == 3) { + return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1); + } else if(z == -3) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.6, 1, 1); + } + return super.getBlockBound(x, y, z, open); + }; + + @Override + public int timeToOpen() { + return 60; + }; + + @Override + public int[][] getDoorOpenRanges() { + return new int[][] { { 0, 0, 0, -4, 6, 2 }, { 0, 0, 0, 4, 6, 2 } }; + } + + @Override + public int[] getDimensions() { + return new int[] { 5, 0, 0, 0, 3, 3 }; + }; + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return ResourceManager.large_vehicle_door_tex; + } + + @Override + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.large_vehicle_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.large_vehicle_door; + } + + }; + + // Format: x, y, z, tangent amount 1 (how long the door would be if it moved + // up), tangent amount 2 (door places blocks in this direction), axis (0-x, + // 1-y, 2-z) + public abstract int[][] getDoorOpenRanges(); + + public abstract int[] getDimensions(); + + public float getDoorRangeOpenTime(int ticks, int idx) { + return getNormTime(ticks); + } + + public int timeToOpen() { + return 20; + } + + public float getNormTime(float time) { + return getNormTime(time, 0, timeToOpen()); + } + + public float getNormTime(float time, float min, float max) { + return BobMathUtil.remap01_clamp(time, min, max); + } + + public boolean hasSkins() { + return false; + } + + public int getSkinCount() { + return 0; + } + + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return getTextureForPart(0, partName); + } + + @SideOnly(Side.CLIENT) + public abstract ResourceLocation getTextureForPart(int skinIndex, String partName); + + @SideOnly(Side.CLIENT) + public abstract WavefrontObjDisplayList getModel(); + + @SideOnly(Side.CLIENT) + public AnimatedModel getAnimatedModel() { + return null; + } + + @SideOnly(Side.CLIENT) + public Animation getAnim() { + return null; + } + + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + set(trans, 0, 0, 0); + } + + @SideOnly(Side.CLIENT) + public void getRotation(String partName, float openTicks, float[] rot) { + set(rot, 0, 0, 0); + } + + @SideOnly(Side.CLIENT) + public void getOrigin(String partName, float[] orig) { + set(orig, 0, 0, 0); + } + + @SideOnly(Side.CLIENT) + public boolean doesRender(String partName, boolean child) { + return true; + } + + private static final String[] nothing = new String[] {}; + + @SideOnly(Side.CLIENT) + public String[] getChildren(String partName) { + return nothing; + } + + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][] {}; + } + + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + } + + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + return open ? AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0) : AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + } + + public boolean isLadder(boolean open) { + return false; + } + + public String getOpenSoundLoop() { + return null; + } + + // Hack + public String getSoundLoop2() { + return null; + } + + public String getCloseSoundLoop() { + return getOpenSoundLoop(); + } + + public String getOpenSoundStart() { + return null; + } + + public String getCloseSoundStart() { + return getOpenSoundStart(); + } + + public String getOpenSoundEnd() { + return null; + } + + public String getCloseSoundEnd() { + return getOpenSoundEnd(); + } + + public float getSoundVolume() { + return 1; + } + + public float[] set(float[] f, float x, float y, float z) { + f[0] = x; + f[1] = y; + f[2] = z; + return f; + } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 24a739811..6dd6a97be 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -23,6 +23,7 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -47,7 +48,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCompactLauncher extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyUser, IFluidStandardReceiver, IGUIProvider { +public class TileEntityCompactLauncher extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyUser, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver { private ItemStack slots[]; @@ -207,7 +208,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I for(int z = -1; z <= 1; z++) { if(worldObj.isBlockIndirectlyGettingPowered(xCoord + x, yCoord, zCoord + z) && canLaunch()) { - launch(); + launchFromDesignator(); break outer; } } @@ -268,14 +269,31 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I return false; } - - public void launch() { - worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + @Override + public boolean sendCommandEntity(Entity target) { + return sendCommandPosition((int) Math.floor(target.posX), yCoord, (int) Math.floor(target.posX)); + } + + @Override + public boolean sendCommandPosition(int x, int y, int z) { + if(!canLaunch()) return false; + this.launchTo(x, z); + return true; + } + + public void launchFromDesignator() { int tX = slots[1].stackTagCompound.getInteger("xCoord"); int tZ = slots[1].stackTagCompound.getInteger("zCoord"); + this.launchTo(tX, tZ); + } + + public void launchTo(int tX, int tZ) { + + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + ItemMissile chip = (ItemMissile) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "chip")); float c = (Float)chip.attributes[0]; float f = 1.0F; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 1b1281ead..709db4fdb 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -25,6 +25,7 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; @@ -39,19 +40,22 @@ import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent { +public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver { private ItemStack slots[]; @@ -216,7 +220,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide for(int z = -4; z <= 4; z++) { if(worldObj.isBlockIndirectlyGettingPowered(xCoord + x, yCoord, zCoord + z) && canLaunch()) { - launch(); + launchFromDesignator(); break outer; } } @@ -262,15 +266,47 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide return false; } - - public void launch() { - worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + @Override + public boolean sendCommandEntity(Entity target) { + return sendCommandPosition((int) Math.floor(target.posX), yCoord, (int) Math.floor(target.posX)); + } + + @Override + public boolean sendCommandPosition(int x, int y, int z) { + if(!canLaunch()) return false; + this.launchTo(x, z); + return true; + } + + public void launchFromDesignator() { int tX = slots[1].stackTagCompound.getInteger("xCoord"); int tZ = slots[1].stackTagCompound.getInteger("zCoord"); - EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX, tZ, getStruct(slots[0])); + this.launchTo(tX, tZ); + } + + public void launchTo(int tX, int tZ) { + + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + + ItemMissile chip = (ItemMissile) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "chip")); + float c = (Float)chip.attributes[0]; + float f = 1.0F; + + if(getStruct(slots[0]).fins != null) { + ItemMissile fins = (ItemMissile) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "stability")); + f = (Float) fins.attributes[0]; + } + + Vec3 target = Vec3.createVectorHelper(xCoord - tX, 0, zCoord - tZ); + target.xCoord *= c * f; + target.zCoord *= c * f; + + target.rotateAroundY(worldObj.rand.nextFloat() * 360); + + EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX + (int)target.xCoord, tZ + (int)target.zCoord, getStruct(slots[0])); worldObj.spawnEntityInWorld(missile); subtractFuel(); diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_exposure_chamber.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_exposure_chamber.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e65f885b185b69ccee70f84c46e4b082cb4f5d GIT binary patch literal 3129 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 Date: Tue, 14 Nov 2023 18:17:03 -0600 Subject: [PATCH 134/207] first commit on new shit --- .../machine/TileEntityPWRController.java | 42 +++++++++++++++++++ .../machine/rbmk/TileEntityRBMKStorage.java | 37 +--------------- 2 files changed, 43 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 2fa44fcf8..8fa21dd0f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -25,8 +25,12 @@ import com.hbm.util.EnumUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -37,6 +41,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IFluidStandardTransceiver { public FluidTank[] tanks; @@ -521,6 +526,43 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG } } + + public String getComponentName() { + return "ntm_pwr_control"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {coreHeat, hullHeat}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFlux(Context context, Arguments args) { + return new Object[] {flux}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getLevel(Context context, Arguments args) { + return new Object[] {rodTarget}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {coreHeat, hullHeat, flux, rodTarget}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setLevel(Context context, Arguments args) { + rodTarget = MathHelper.clamp_int(args.checkInteger(0), 0, 100); + this.markChanged(); + return new Object[] {true}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerPWR(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java index baa22c2c3..a670b6c09 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -4,21 +4,15 @@ import com.hbm.inventory.container.ContainerRBMKStorage; import com.hbm.inventory.gui.GUIRBMKStorage; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; -import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable, SimpleComponent { +public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable { public TileEntityRBMKStorage() { super(12); @@ -91,35 +85,6 @@ public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements slots[0] = null; } - @Override - public String getComponentName() { - return "rbmk_storage_rod"; - } - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getCoordinates(Context context, Arguments args) { - return new Object[] {xCoord, yCoord, zCoord}; - } - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getHeat(Context context, Arguments args) { - return new Object[] {heat}; - } - - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getStored(Context context, Arguments args) { - return new Object[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11]}; - } - - @Callback(direct = true, limit = 8) - @Optional.Method(modid = "OpenComputers") - public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11], xCoord, yCoord, zCoord}; - } - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKStorage(player.inventory, this); From b311525574240c2bf623f8b9b7a646ef9ea231c5 Mon Sep 17 00:00:00 2001 From: JameH2 <75378928+JameH2@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:02:08 -0700 Subject: [PATCH 135/207] ribbit --- src/main/java/com/hbm/blocks/network/FluidDuctStandard.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index e58d7ab02..7a6ab966b 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.test.TestPipe; import com.hbm.inventory.fluid.FluidType; import com.hbm.items.ModItems; @@ -15,6 +16,7 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; From 6bc0a2de4aabfc2b6167fa3fdb04bc7e2b5e1b46 Mon Sep 17 00:00:00 2001 From: JameH2 <75378928+JameH2@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:17:45 -0700 Subject: [PATCH 136/207] wow i cant believe you forgot these kill yours --- src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java | 1 + src/main/java/com/hbm/blocks/machine/MachineOrbus.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index 300f9b019..e0a494ede 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -14,6 +14,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; +import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java index 445956358..902c24672 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java @@ -12,6 +12,7 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; From 34865547c49a2c048e434b2c5f658805d82a072e Mon Sep 17 00:00:00 2001 From: sdddddf80 <2980187979@qq.com> Date: Wed, 8 Nov 2023 16:23:28 +0800 Subject: [PATCH 137/207] Transferred a bunch of text to lang file Transferred a bunch of text to lang file(not all) --- .../java/com/hbm/blocks/ITooltipProvider.java | 5 +- .../hbm/blocks/machine/BlockFluidBarrel.java | 53 +- .../hbm/blocks/machine/BlockHadronCooler.java | 5 +- .../hbm/blocks/machine/MachineCapacitor.java | 5 +- .../hbm/blocks/machine/MachineGasFlare.java | 11 +- .../com/hbm/blocks/network/PylonLarge.java | 6 +- .../com/hbm/blocks/network/PylonRedWire.java | 5 +- .../com/hbm/blocks/network/Substation.java | 5 +- .../hbm/handler/nei/CustomMachineHandler.java | 3 +- .../com/hbm/inventory/fluid/FluidType.java | 5 +- .../inventory/fluid/trait/FT_Combustible.java | 17 +- .../inventory/fluid/trait/FT_Coolable.java | 5 +- .../inventory/fluid/trait/FT_Corrosive.java | 5 +- .../inventory/fluid/trait/FT_Flammable.java | 5 +- .../inventory/fluid/trait/FT_Heatable.java | 5 +- .../fluid/trait/FT_PWRModerator.java | 5 +- .../hbm/inventory/fluid/trait/FT_Poison.java | 3 +- .../hbm/inventory/fluid/trait/FT_Toxin.java | 2 +- .../fluid/trait/FT_VentRadiation.java | 3 +- .../fluid/trait/FluidTraitSimple.java | 19 +- .../java/com/hbm/items/armor/ArmorDNT.java | 2 +- .../com/hbm/items/armor/ArmorFSBPowered.java | 3 +- .../com/hbm/items/armor/ItemArmorMod.java | 2 +- .../java/com/hbm/items/armor/ItemModAuto.java | 3 +- .../com/hbm/items/armor/ItemModBandaid.java | 5 +- .../com/hbm/items/armor/ItemModBathwater.java | 5 +- .../com/hbm/items/armor/ItemModCharm.java | 12 +- .../com/hbm/items/armor/ItemModCladding.java | 5 +- .../com/hbm/items/armor/ItemModDefuser.java | 5 +- .../com/hbm/items/armor/ItemModGasmask.java | 6 +- .../com/hbm/items/armor/ItemModHealth.java | 7 +- .../java/com/hbm/items/armor/ItemModInk.java | 7 +- .../com/hbm/items/armor/ItemModInsert.java | 21 +- .../java/com/hbm/items/armor/ItemModIron.java | 5 +- .../com/hbm/items/armor/ItemModKnife.java | 8 +- .../java/com/hbm/items/armor/ItemModLens.java | 5 +- .../com/hbm/items/armor/ItemModLodestone.java | 7 +- .../java/com/hbm/items/armor/ItemModMilk.java | 5 +- .../hbm/items/armor/ItemModMorningGlory.java | 5 +- .../com/hbm/items/armor/ItemModObsidian.java | 5 +- .../java/com/hbm/items/armor/ItemModPads.java | 9 +- .../com/hbm/items/armor/ItemModPolish.java | 5 +- .../com/hbm/items/armor/ItemModQuartz.java | 5 +- .../com/hbm/items/armor/ItemModRevive.java | 19 +- .../com/hbm/items/armor/ItemModSensor.java | 7 +- .../com/hbm/items/armor/ItemModSerum.java | 5 +- .../com/hbm/items/armor/ItemModServos.java | 17 +- .../com/hbm/items/armor/ItemModShackles.java | 11 +- .../com/hbm/items/armor/ItemModTesla.java | 5 +- .../com/hbm/items/armor/ItemModTwoKick.java | 7 +- .../java/com/hbm/items/armor/ItemModV1.java | 5 +- .../java/com/hbm/items/armor/ItemModWD40.java | 5 +- .../java/com/hbm/items/armor/JetpackBase.java | 3 +- .../com/hbm/items/armor/JetpackBooster.java | 7 +- .../com/hbm/items/armor/JetpackBreak.java | 6 +- .../com/hbm/items/armor/JetpackRegular.java | 3 +- .../hbm/items/armor/JetpackVectorized.java | 5 +- .../hbm/items/block/ItemBlockBlastInfo.java | 3 +- .../com/hbm/items/block/ItemBlockLore.java | 27 +- .../hbm/items/block/ItemCustomMachine.java | 3 +- .../java/com/hbm/items/bomb/ItemFleija.java | 5 +- .../hbm/items/bomb/ItemMissileShuttle.java | 10 +- src/main/java/com/hbm/items/bomb/ItemN2.java | 6 +- .../hbm/items/bomb/ItemPrototypeBlock.java | 7 +- .../java/com/hbm/items/bomb/ItemSolinium.java | 5 +- .../java/com/hbm/items/food/ItemLemon.java | 52 +- .../com/hbm/items/food/ItemTemFlakes.java | 7 +- .../com/hbm/items/machine/ItemBattery.java | 9 +- .../hbm/items/machine/ItemMachineUpgrade.java | 162 +- .../com/hbm/items/machine/ItemPWRFuel.java | 8 +- .../com/hbm/items/machine/ItemPlateFuel.java | 7 +- .../com/hbm/items/machine/ItemRBMKPellet.java | 15 +- .../com/hbm/items/machine/ItemRBMKRod.java | 18 +- .../com/hbm/items/machine/ItemWatzPellet.java | 19 +- .../com/hbm/items/special/ItemAMSCore.java | 44 +- .../com/hbm/items/special/ItemGlitch.java | 75 +- .../java/com/hbm/items/special/ItemRag.java | 5 +- .../java/com/hbm/items/special/ItemSoyuz.java | 9 +- .../com/hbm/items/tool/ItemAnchorRemote.java | 7 +- .../com/hbm/items/tool/ItemCMStructure.java | 7 +- .../com/hbm/items/tool/ItemDetonator.java | 13 +- src/main/java/com/hbm/items/tool/ItemMS.java | 3 +- .../hbm/items/tool/ItemSwordMeteorite.java | 49 +- .../java/com/hbm/items/tool/ItemWand.java | 13 +- .../java/com/hbm/items/tool/ItemWandS.java | 7 +- .../com/hbm/items/tool/WeaponSpecial.java | 45 +- .../com/hbm/main/ModEventHandlerClient.java | 20 +- .../java/com/hbm/util/function/Function.java | 11 +- src/main/resources/assets/hbm/lang/en_US.lang | 174 ++ src/main/resources/assets/hbm/lang/zh_CN.lang | 1593 ++++++++++------- 90 files changed, 1613 insertions(+), 1244 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ITooltipProvider.java b/src/main/java/com/hbm/blocks/ITooltipProvider.java index e959db070..4ca8d3678 100644 --- a/src/main/java/com/hbm/blocks/ITooltipProvider.java +++ b/src/main/java/com/hbm/blocks/ITooltipProvider.java @@ -21,9 +21,8 @@ public interface ITooltipProvider { if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray(((Block)this).getUnlocalizedName() + ".desc")) list.add(EnumChatFormatting.YELLOW + s); } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index 41ab8cba8..834195f35 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -15,6 +15,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.machine.storage.TileEntityBarrel; +import com.hbm.util.I18nUtil; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.Block; @@ -208,47 +209,47 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { if(this == ModBlocks.barrel_plastic) { - list.add(EnumChatFormatting.AQUA + "Capacity: 12,000mB"); - list.add(EnumChatFormatting.YELLOW + "Cannot store hot fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","12,000")); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[1]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[4]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); } if(this == ModBlocks.barrel_corroded) { - list.add(EnumChatFormatting.AQUA + "Capacity: 6,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); - list.add(EnumChatFormatting.RED + "Leaky"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","6,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("trait.tile.barrel.leak")); } if(this == ModBlocks.barrel_iron) { - list.add(EnumChatFormatting.AQUA + "Capacity: 8,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids properly"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","8,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[3]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); } if(this == ModBlocks.barrel_steel) { - list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store highly corrosive fluids properly"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","16,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[1]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[2]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); } if(this == ModBlocks.barrel_antimatter) { - list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); - list.add(EnumChatFormatting.GREEN + "Can store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","16,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[0]); } if(this == ModBlocks.barrel_tcalloy) { - list.add(EnumChatFormatting.AQUA + "Capacity: 24,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","24,000")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); } } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java index a242772e2..c2c220ff8 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java +++ b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java @@ -59,9 +59,8 @@ public class BlockHadronCooler extends BlockMulti implements ITooltipProvider { if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray(this.getUnlocalizedName(stack) + ".desc")) list.add(EnumChatFormatting.YELLOW + s); } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java index be083f6e3..e55f4844b 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -113,9 +113,8 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray("tile.capacitor.desc")) list.add(EnumChatFormatting.YELLOW + s); } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java b/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java index 4567cf760..db5bd32f5 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java +++ b/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java @@ -7,6 +7,7 @@ import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineGasFlare; +import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -61,13 +62,7 @@ public class MachineGasFlare extends BlockDummyable implements ITooltipProvider @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - - list.add(EnumChatFormatting.GOLD + "Can burn fluids and vent gasses"); - list.add(EnumChatFormatting.GOLD + "Burns up to " + EnumChatFormatting.RED + "10mB/t"); - list.add(EnumChatFormatting.GOLD + "Vents up to " + EnumChatFormatting.RED + "50mB/t"); - list.add(""); - list.add(EnumChatFormatting.YELLOW + "Fuel efficiency:"); - list.add(EnumChatFormatting.YELLOW + "-Flammable Gasses: " + EnumChatFormatting.RED + "50%"); - list.add(EnumChatFormatting.YELLOW + "-Flammable Liquids: " + EnumChatFormatting.RED + "10%"); + for(String s : I18nUtil.resolveKeyArray("tile.machine_flare.desc")) + list.add(EnumChatFormatting.GOLD + s); } } diff --git a/src/main/java/com/hbm/blocks/network/PylonLarge.java b/src/main/java/com/hbm/blocks/network/PylonLarge.java index 395b27dd1..65605d4d3 100644 --- a/src/main/java/com/hbm/blocks/network/PylonLarge.java +++ b/src/main/java/com/hbm/blocks/network/PylonLarge.java @@ -7,6 +7,7 @@ import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntityPylonLarge; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -33,9 +34,8 @@ public class PylonLarge extends BlockDummyable implements ITooltipProvider { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Quadruple"); - list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "100m"); - list.add(EnumChatFormatting.GOLD + "This pylon requires a substation!"); + for(String s : I18nUtil.resolveKeyArray("tile.red_pylon_large.desc")) + list.add(EnumChatFormatting.GOLD + s); } @Override diff --git a/src/main/java/com/hbm/blocks/network/PylonRedWire.java b/src/main/java/com/hbm/blocks/network/PylonRedWire.java index 79a44f541..9b9d8750b 100644 --- a/src/main/java/com/hbm/blocks/network/PylonRedWire.java +++ b/src/main/java/com/hbm/blocks/network/PylonRedWire.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.tileentity.network.TileEntityPylon; +import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -24,7 +25,7 @@ public class PylonRedWire extends PylonBase { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Single"); - list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "25m"); + for(String s : I18nUtil.resolveKeyArray("tile.red_pylon.desc")) + list.add(EnumChatFormatting.GOLD + s); } } diff --git a/src/main/java/com/hbm/blocks/network/Substation.java b/src/main/java/com/hbm/blocks/network/Substation.java index 7499992fd..4f61cf58d 100644 --- a/src/main/java/com/hbm/blocks/network/Substation.java +++ b/src/main/java/com/hbm/blocks/network/Substation.java @@ -8,6 +8,7 @@ import com.hbm.tileentity.TileEntityProxyConductor; import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntitySubstation; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -37,8 +38,8 @@ public class Substation extends BlockDummyable implements ITooltipProvider { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Quadruple"); - list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "20m"); + for(String s : I18nUtil.resolveKeyArray("tile.substation.desc")) + list.add(EnumChatFormatting.GOLD + s); } @Override diff --git a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java index 844af6e60..659289307 100644 --- a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java +++ b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java @@ -14,6 +14,7 @@ import com.hbm.inventory.recipes.CustomMachineRecipes; import com.hbm.inventory.recipes.CustomMachineRecipes.CustomMachineRecipe; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.Tuple.Pair; @@ -104,7 +105,7 @@ public class CustomMachineHandler extends TemplateRecipeHandler { @Override public String getRecipeName() { - return conf.localizedName; + return (I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name").startsWith("tile.cm_")) ? conf.localizedName : I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name"); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index d6fa4d759..e6015725b 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -218,9 +218,8 @@ public class FluidType { info.addAll(hidden); } else { - info.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + info.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java index a297d40ca..9d566e0fb 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java @@ -7,6 +7,7 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Combustible extends FluidTrait { @@ -25,11 +26,11 @@ public class FT_Combustible extends FluidTrait { public void addInfo(List info) { super.addInfo(info); - info.add(EnumChatFormatting.GOLD + "[Combustible]"); + info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible","","")[0]); if(combustionEnergy > 0) { - info.add(EnumChatFormatting.GOLD + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(combustionEnergy) + "HE " + EnumChatFormatting.GOLD + "per bucket"); - info.add(EnumChatFormatting.GOLD + "Fuel grade: " + EnumChatFormatting.RED + this.fuelGrade.getGrade()); + info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible",BobMathUtil.getShortNumber(combustionEnergy),"")[1]); + info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible","",this.fuelGrade.getGrade())[2]); } } @@ -42,11 +43,11 @@ public class FT_Combustible extends FluidTrait { } public static enum FuelGrade { - LOW("Low"), //heating and industrial oil < star engine, iGen - MEDIUM("Medium"), //petroil < diesel generator - HIGH("High"), //diesel, gasoline < HP engine - AERO("Aviation"), //kerosene and other light aviation fuels < turbofan - GAS("Gaseous"); //fuel gasses like NG, PG and syngas < gas turbine + LOW(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[0]), //heating and industrial oil < star engine, iGen + MEDIUM(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[1]), //petroil < diesel generator + HIGH(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[2]), //diesel, gasoline < HP engine + AERO(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[3]), //kerosene and other light aviation fuels < turbofan + GAS(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[4]); //fuel gasses like NG, PG and syngas < gas turbine private String grade; diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java index 1bb6d3574..a0aae7d54 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java @@ -10,6 +10,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Coolable extends FluidTrait { @@ -42,14 +43,14 @@ public class FT_Coolable extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.AQUA + "Thermal capacity: " + heatEnergy + " TU"); + info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable",heatEnergy,"")[0]); for(CoolingType type : CoolingType.values()) { double eff = getEfficiency(type); if(eff > 0) { info.add(EnumChatFormatting.AQUA + "[" + type.name + "]"); - info.add(EnumChatFormatting.AQUA + "Efficiency: " + ((int) (eff * 100D)) + "%"); + info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable","",((int) (eff * 100D)))[1]); } } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java index 2a459e25c..8387b0e23 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java @@ -6,6 +6,7 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Corrosive extends FluidTrait { @@ -31,9 +32,9 @@ public class FT_Corrosive extends FluidTrait { public void addInfo(List info) { if(isHighlyCorrosive()) - info.add(EnumChatFormatting.GOLD + "[Strongly Corrosive]"); + info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Corrosive")[0]); else - info.add(EnumChatFormatting.YELLOW + "[Corrosive]"); + info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("hbmfluid.Trait.Corrosive")[1]); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java index 82e309ef9..e2f35ff3c 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java @@ -7,6 +7,7 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Flammable extends FluidTrait { @@ -28,10 +29,10 @@ public class FT_Flammable extends FluidTrait { public void addInfo(List info) { super.addInfo(info); - info.add(EnumChatFormatting.YELLOW + "[Flammable]"); + info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("hbmfluid.Trait.Flammable","")[0]); if(energy > 0) - info.add(EnumChatFormatting.YELLOW + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(energy) + "TU " + EnumChatFormatting.YELLOW + "per bucket"); + info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("hbmfluid.Trait.Flammable",BobMathUtil.getShortNumber(energy))[1]); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java index c828858b8..7ce3ee4fc 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java @@ -6,6 +6,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; import java.io.IOException; @@ -42,14 +43,14 @@ public class FT_Heatable extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.AQUA + "Thermal capacity: " + this.getFirstStep().heatReq + " TU"); + info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable",this.getFirstStep().heatReq,"")[0]); for(HeatingType type : HeatingType.values()) { double eff = getEfficiency(type); if(eff > 0) { info.add(EnumChatFormatting.AQUA + "[" + type.name + "]"); - info.add(EnumChatFormatting.AQUA + "Efficiency: " + ((int) (eff * 100D)) + "%"); + info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable","",((int) (eff * 100D)))[1]); } } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java index 65386405a..3e5aad50c 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java @@ -6,6 +6,7 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_PWRModerator extends FluidTrait { @@ -22,13 +23,13 @@ public class FT_PWRModerator extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.BLUE + "[PWR Flux Multiplier]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("hbmfluid.Trait.PWRModerator","","")[0]); } @Override public void addInfoHidden(List info) { int mult = (int) (multiplier * 100 - 100); - info.add(EnumChatFormatting.BLUE + "Core flux " + (mult >= 0 ? "+" : "") + mult + "%"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("hbmfluid.Trait.PWRModerator",(mult >= 0 ? "+" : ""),mult)[1]); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java index 335c182cb..39d31bc25 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java @@ -6,6 +6,7 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; @Deprecated //use FT_Toxin instead @@ -31,7 +32,7 @@ public class FT_Poison extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.GREEN + "[Toxic Fumes]"); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("hbmfluid.Trait.Poison")); } @Override public void serializeJSON(JsonWriter writer) throws IOException { diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java index fe814219e..b7234584c 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java @@ -31,7 +31,7 @@ public class FT_Toxin extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.LIGHT_PURPLE + "[Toxin]"); + info.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("hbmfluid.Trait.Toxin")); for(ToxinEntry entry : entries) { entry.addInfo(info); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java index 516ef0e81..ef090d9d9 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java @@ -8,6 +8,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; @@ -32,7 +33,7 @@ public class FT_VentRadiation extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.YELLOW + "[Radioactive]"); + info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hbmfluid.Trait.VentRadiation")); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java index d282cea42..19e2c5369 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java @@ -2,63 +2,64 @@ package com.hbm.inventory.fluid.trait; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FluidTraitSimple { public static class FT_Gaseous extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Gaseous]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Gaseous")); } } /** gaseous at room temperature, for cryogenic hydrogen for example */ public static class FT_Gaseous_ART extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Gaseous at Room Temperature]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Gaseous_ART")); } } public static class FT_Liquid extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Liquid]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Liquid")); } } /** to viscous to be sprayed/turned into a mist */ public static class FT_Viscous extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Viscous]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Viscous")); } } public static class FT_Plasma extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.LIGHT_PURPLE + "[Plasma]"); + info.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Plasma")); } } public static class FT_Amat extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.DARK_RED + "[Antimatter]"); + info.add(EnumChatFormatting.DARK_RED + I18nUtil.resolveKey("hbmfluid.TraitSimple.Amat")); } } public static class FT_LeadContainer extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.DARK_RED + "[Requires hazardous material tank to hold]"); + info.add(EnumChatFormatting.DARK_RED + I18nUtil.resolveKey("hbmfluid.TraitSimple.LeadContainer")); } } public static class FT_Delicious extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.DARK_GREEN + "[Delicious]"); + info.add(EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKey("hbmfluid.TraitSimple.Delicious")); } } public static class FT_Leaded extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + "[Leaded Fuel]"); + info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Leaded")); } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index 068ae49f1..37e4d6bc3 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -173,7 +173,7 @@ public class ArmorDNT extends ArmorFSBPowered { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(maxPower)); + list.add(I18nUtil.resolveKey("armor.charge",BobMathUtil.getShortNumber(getCharge(stack)),BobMathUtil.getShortNumber(maxPower))); list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java index 139df77fe..c5ab83d19 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.util.BobMathUtil; import api.hbm.energy.IBatteryItem; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -31,7 +32,7 @@ public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(maxPower)); + list.add(I18nUtil.resolveKey("armor.charge",BobMathUtil.getShortNumber(getCharge(stack)),BobMathUtil.getShortNumber(maxPower))); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/ItemArmorMod.java b/src/main/java/com/hbm/items/armor/ItemArmorMod.java index 505028648..fac21dec9 100644 --- a/src/main/java/com/hbm/items/armor/ItemArmorMod.java +++ b/src/main/java/com/hbm/items/armor/ItemArmorMod.java @@ -53,7 +53,7 @@ public class ItemArmorMod extends Item { if(boots) list.add(" " + I18nUtil.resolveKey("armorMod.boots")); } - list.add(EnumChatFormatting.DARK_PURPLE + "Slot:"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("armorMod.slot")); switch(this.type) { case ArmorModHandler.helmet_only: list.add(" " + I18nUtil.resolveKey("armorMod.type.helmet")); break; diff --git a/src/main/java/com/hbm/items/armor/ItemModAuto.java b/src/main/java/com/hbm/items/armor/ItemModAuto.java index 4dd232198..7b64bd4e6 100644 --- a/src/main/java/com/hbm/items/armor/ItemModAuto.java +++ b/src/main/java/com/hbm/items/armor/ItemModAuto.java @@ -6,6 +6,7 @@ import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; import com.hbm.potion.HbmPotion; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -21,7 +22,7 @@ public class ItemModAuto extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.BLUE + "Imported from Japsterdam."); + list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("armorMod.mod.auto")); list.add(""); super.addInformation(stack, player, list, bool); diff --git a/src/main/java/com/hbm/items/armor/ItemModBandaid.java b/src/main/java/com/hbm/items/armor/ItemModBandaid.java index c04751443..7705f9cfb 100644 --- a/src/main/java/com/hbm/items/armor/ItemModBandaid.java +++ b/src/main/java/com/hbm/items/armor/ItemModBandaid.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -18,14 +19,14 @@ public class ItemModBandaid extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.RED + "3% chance for full heal when damaged"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.bandaid")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (3% chance for full heal)"); + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.bandaid")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModBathwater.java b/src/main/java/com/hbm/items/armor/ItemModBathwater.java index c0d077197..595e381c1 100644 --- a/src/main/java/com/hbm/items/armor/ItemModBathwater.java +++ b/src/main/java/com/hbm/items/armor/ItemModBathwater.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -29,7 +30,7 @@ public class ItemModBathwater extends ItemArmorMod { if(this == ModItems.bathwater_mk2) color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.GREEN : EnumChatFormatting.YELLOW); - list.add(color + "Inflicts poison on the attacker"); + list.add(color + I18nUtil.resolveKeyArray("armorMod.mod.bathwater")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @@ -42,7 +43,7 @@ public class ItemModBathwater extends ItemArmorMod { if(this == ModItems.bathwater_mk2) color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.GREEN : EnumChatFormatting.YELLOW); - list.add(color + " " + stack.getDisplayName() + " (Poisons attackers)"); + list.add(color + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.bathwater")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModCharm.java b/src/main/java/com/hbm/items/armor/ItemModCharm.java index 2d68ff328..a8c52707c 100644 --- a/src/main/java/com/hbm/items/armor/ItemModCharm.java +++ b/src/main/java/com/hbm/items/armor/ItemModCharm.java @@ -6,6 +6,7 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -20,16 +21,15 @@ public class ItemModCharm extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.AQUA + "You feel blessed."); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("armorMod.mod.charm")); if(this == ModItems.protection_charm) { - list.add(EnumChatFormatting.AQUA + "Diverts meteors away from the player."); - list.add(EnumChatFormatting.AQUA + "Meteors no longer destroy blocks."); - list.add(EnumChatFormatting.AQUA + "Halves broadcaster damage"); + for(String s : I18nUtil.resolveKeyArray( "armorMod.mod.charm.protection")) + list.add(s); } if(this == ModItems.meteor_charm) { - list.add(EnumChatFormatting.AQUA + "Disables meteorite spawning."); - list.add(EnumChatFormatting.AQUA + "Negates broadcaster damage"); + for(String s : I18nUtil.resolveKeyArray( "armorMod.mod.charm.meteor")) + list.add(s); } super.addInformation(stack, player, list, bool); diff --git a/src/main/java/com/hbm/items/armor/ItemModCladding.java b/src/main/java/com/hbm/items/armor/ItemModCladding.java index a71b8cb28..18d1f5e24 100644 --- a/src/main/java/com/hbm/items/armor/ItemModCladding.java +++ b/src/main/java/com/hbm/items/armor/ItemModCladding.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.armor.ItemArmorMod; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -20,13 +21,13 @@ public class ItemModCladding extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + "+" + rad + " rad-resistance"); + list.add(EnumChatFormatting.YELLOW + "+" + rad + I18nUtil.resolveKeyArray("armorMod.mod.cladding")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (+" + rad + " radiation resistence)"); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (+" + rad + I18nUtil.resolveKeyArray("armorMod.mod.cladding")[1]); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModDefuser.java b/src/main/java/com/hbm/items/armor/ItemModDefuser.java index 48eb2afe9..d540f9f55 100644 --- a/src/main/java/com/hbm/items/armor/ItemModDefuser.java +++ b/src/main/java/com/hbm/items/armor/ItemModDefuser.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAICreeperSwell; import net.minecraft.entity.ai.EntityAITasks.EntityAITaskEntry; @@ -25,14 +26,14 @@ public class ItemModDefuser extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + "Defuses nearby creepers"); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.defuser")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (Defuses creepers)"); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.defuser")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModGasmask.java b/src/main/java/com/hbm/items/armor/ItemModGasmask.java index 7c8fd77f6..62b04a129 100644 --- a/src/main/java/com/hbm/items/armor/ItemModGasmask.java +++ b/src/main/java/com/hbm/items/armor/ItemModGasmask.java @@ -40,7 +40,7 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.GREEN + "Gas protection"); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("armorMod.mod.gasmask")[0]); list.add(""); super.addInformation(stack, player, list, bool); @@ -50,7 +50,7 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { List haz = getBlacklist(stack, player); if(!haz.isEmpty()) { - list.add(EnumChatFormatting.RED + "Will never protect against:"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.gasmask")[1]); for(HazardClass clazz : haz) { list.add(EnumChatFormatting.DARK_RED + " -" + I18nUtil.resolveKey(clazz.lang)); @@ -61,7 +61,7 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.GREEN + " " + stack.getDisplayName() + " (gas protection)"); + list.add(EnumChatFormatting.GREEN + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.gasmask")[2]); ArmorUtil.addGasMaskTooltip(stack, MainRegistry.proxy.me(), list, false); } diff --git a/src/main/java/com/hbm/items/armor/ItemModHealth.java b/src/main/java/com/hbm/items/armor/ItemModHealth.java index 6e757153a..5f3e59fe9 100644 --- a/src/main/java/com/hbm/items/armor/ItemModHealth.java +++ b/src/main/java/com/hbm/items/armor/ItemModHealth.java @@ -6,6 +6,7 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -27,11 +28,11 @@ public class ItemModHealth extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.RED : EnumChatFormatting.LIGHT_PURPLE); - list.add(color + "+" + (Math.round(health * 10 / 2) * 0.1) + " health"); + list.add(color + "+" + (Math.round(health * 10 / 2) * 0.1) + I18nUtil.resolveKeyArray("armorMod.mod.health")[0]); list.add(""); if(this == ModItems.black_diamond) { - list.add(EnumChatFormatting.DARK_GRAY + "Nostalgia"); + list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.health")[1]); list.add(""); } @@ -43,7 +44,7 @@ public class ItemModHealth extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.RED : EnumChatFormatting.LIGHT_PURPLE); - list.add(color + " " + stack.getDisplayName() + " (+" + (Math.round(health * 10 / 2) * 0.1) + " health)"); + list.add(color + " " + stack.getDisplayName() + " (+" + (Math.round(health * 10 / 2) * 0.1) + I18nUtil.resolveKeyArray("armorMod.mod.health")[0]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModInk.java b/src/main/java/com/hbm/items/armor/ItemModInk.java index f8604c8f2..88da55114 100644 --- a/src/main/java/com/hbm/items/armor/ItemModInk.java +++ b/src/main/java/com/hbm/items/armor/ItemModInk.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -19,15 +20,15 @@ public class ItemModInk extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + "10% chance to nullify damage"); - list.add(EnumChatFormatting.LIGHT_PURPLE + "Flowers!"); + list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Ink")[0]); + list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Ink")[1]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + " (10% chance to nullify damage)"); + list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Ink")[2]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModInsert.java b/src/main/java/com/hbm/items/armor/ItemModInsert.java index a8f114c95..ae539765d 100644 --- a/src/main/java/com/hbm/items/armor/ItemModInsert.java +++ b/src/main/java/com/hbm/items/armor/ItemModInsert.java @@ -8,6 +8,7 @@ import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -37,18 +38,18 @@ public class ItemModInsert extends ItemArmorMod { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(damageMod != 1F) - list.add(EnumChatFormatting.RED + (damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + "% damage"); + list.add(EnumChatFormatting.RED + (damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[0]); if(projectileMod != 1F) - list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - projectileMod) * 100) + "% projectile damage"); + list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - projectileMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[1]); if(explosionMod != 1F) - list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - explosionMod) * 100) + "% explosion damage"); + list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - explosionMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[2]); if(speed != 1F) - list.add(EnumChatFormatting.BLUE + "-" + Math.round((1F - speed) * 100) + "% speed"); + list.add(EnumChatFormatting.BLUE + "-" + Math.round((1F - speed) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[3]); if(this == ModItems.insert_polonium) list.add(EnumChatFormatting.DARK_RED + "+100 RAD/s"); - list.add((stack.getMaxDamage() - stack.getItemDamage()) + "/" + stack.getMaxDamage() + "HP"); + list.add((stack.getMaxDamage() - stack.getItemDamage()) + "/" + stack.getMaxDamage() + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[4]); list.add(""); super.addInformation(stack, player, list, bool); @@ -60,20 +61,20 @@ public class ItemModInsert extends ItemArmorMod { List desc = new ArrayList(); if(damageMod != 1F) - desc.add((damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + "% dmg"); + desc.add((damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[0]); if(projectileMod != 1F) - desc.add("-" + Math.round((1F - projectileMod) * 100) + "% proj"); + desc.add("-" + Math.round((1F - projectileMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[1]); if(explosionMod != 1F) - desc.add("-" + Math.round((1F - explosionMod) * 100) + "% exp"); + desc.add("-" + Math.round((1F - explosionMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[2]); if(explosionMod != 1F) - desc.add("-" + Math.round((1F - speed) * 100) + "% speed"); + desc.add("-" + Math.round((1F - speed) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[3]); if(this == ModItems.insert_polonium) desc.add("+100 RAD/s"); String join = String.join(" / ", desc); - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (" + join + " / " + (stack.getMaxDamage() - stack.getItemDamage()) + "HP)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (" + join + " / " + (stack.getMaxDamage() - stack.getItemDamage()) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[4] + ")"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModIron.java b/src/main/java/com/hbm/items/armor/ItemModIron.java index 99b7fc753..17b9aa4e8 100644 --- a/src/main/java/com/hbm/items/armor/ItemModIron.java +++ b/src/main/java/com/hbm/items/armor/ItemModIron.java @@ -5,6 +5,7 @@ import java.util.List; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -20,14 +21,14 @@ public class ItemModIron extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.WHITE + "+0.5 knockback resistance"); + list.add(EnumChatFormatting.WHITE + I18nUtil.resolveKeyArray("armorMod.mod.Iron")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + " (+0.5 knockback resistence)"); + list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Iron")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModKnife.java b/src/main/java/com/hbm/items/armor/ItemModKnife.java index 9d61d7e2e..9742a2af4 100644 --- a/src/main/java/com/hbm/items/armor/ItemModKnife.java +++ b/src/main/java/com/hbm/items/armor/ItemModKnife.java @@ -8,6 +8,7 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -29,11 +30,8 @@ public class ItemModKnife extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add(EnumChatFormatting.RED + "Pain."); - list.add(""); - list.add(EnumChatFormatting.RED + "Hurts, doesn't it?"); - + for(String s : I18nUtil.resolveKeyArray("armorMod.mod.Knife")) + list.add(EnumChatFormatting.RED + s); list.add(""); super.addInformation(stack, player, list, bool); } diff --git a/src/main/java/com/hbm/items/armor/ItemModLens.java b/src/main/java/com/hbm/items/armor/ItemModLens.java index a9df9cfff..68e27a3a4 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLens.java +++ b/src/main/java/com/hbm/items/armor/ItemModLens.java @@ -11,6 +11,7 @@ import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteScanner; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -30,7 +31,7 @@ public class ItemModLens extends ItemArmorMod implements ISatChip { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.AQUA + "Satellite Frequency: " + this.getFreq(itemstack)); + list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("armorMod.mod.Lens")[0] + this.getFreq(itemstack)); list.add(""); super.addInformation(itemstack, player, list, bool); @@ -38,7 +39,7 @@ public class ItemModLens extends ItemArmorMod implements ISatChip { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.AQUA + " " + stack.getDisplayName() + " (Freq: " + getFreq(stack) + ")"); + list.add(EnumChatFormatting.AQUA + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Lens",getFreq(stack))[1] ); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModLodestone.java b/src/main/java/com/hbm/items/armor/ItemModLodestone.java index 9939244b7..ae7c4039a 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLodestone.java +++ b/src/main/java/com/hbm/items/armor/ItemModLodestone.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -23,15 +24,15 @@ public class ItemModLodestone extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.DARK_GRAY + "Attracts nearby items"); - list.add(EnumChatFormatting.DARK_GRAY + "Item attraction range: " + range); + list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.Lodestone")[0]); + list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.Lodestone",range)[1]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + " (Magnetic range: " + range + ")"); + list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Lodestone",range)[2] ); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModMilk.java b/src/main/java/com/hbm/items/armor/ItemModMilk.java index 1985c6b17..455d449b8 100644 --- a/src/main/java/com/hbm/items/armor/ItemModMilk.java +++ b/src/main/java/com/hbm/items/armor/ItemModMilk.java @@ -8,6 +8,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.potion.HbmPotion; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -24,14 +25,14 @@ public class ItemModMilk extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.WHITE + "Removes bad potion effects"); + list.add(EnumChatFormatting.WHITE + I18nUtil.resolveKeyArray("armorMod.mod.Milk")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + " (Removes bad potion effects)"); + list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Milk")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java b/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java index b33bbfa30..625db4ef3 100644 --- a/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java +++ b/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -21,14 +22,14 @@ public class ItemModMorningGlory extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + "5% chance to apply resistance when hit, wither immunity"); + list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.MorningGlory")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + " (5% for resistance, wither immunity)"); + list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.MorningGlory")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModObsidian.java b/src/main/java/com/hbm/items/armor/ItemModObsidian.java index 2227c1dd1..16b5726a8 100644 --- a/src/main/java/com/hbm/items/armor/ItemModObsidian.java +++ b/src/main/java/com/hbm/items/armor/ItemModObsidian.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -16,13 +17,13 @@ public class ItemModObsidian extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.DARK_PURPLE + "Makes dropped armor indestructible"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Obsidian")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Item indestructible)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Obsidian")[1]); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModPads.java b/src/main/java/com/hbm/items/armor/ItemModPads.java index 9e7d62556..39234d5d2 100644 --- a/src/main/java/com/hbm/items/armor/ItemModPads.java +++ b/src/main/java/com/hbm/items/armor/ItemModPads.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -25,10 +26,10 @@ public class ItemModPads extends ItemArmorMod { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(damageMod != 1F) - list.add(EnumChatFormatting.RED + "-" + Math.round((1F - damageMod) * 100) + "% fall damage"); + list.add(EnumChatFormatting.RED + "-" + Math.round((1F - damageMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[0]); if(this == ModItems.pads_static) - list.add(EnumChatFormatting.DARK_PURPLE + "Passively charges electric armor when walking"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[1]); list.add(""); super.addInformation(itemstack, player, list, bool); @@ -38,9 +39,9 @@ public class ItemModPads extends ItemArmorMod { public void addDesc(List list, ItemStack stack, ItemStack armor) { if(this == ModItems.pads_static) - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + "% fall dmg / passive charge)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[2]); else - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + "% fall dmg)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[0]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModPolish.java b/src/main/java/com/hbm/items/armor/ItemModPolish.java index b35e13480..96c803442 100644 --- a/src/main/java/com/hbm/items/armor/ItemModPolish.java +++ b/src/main/java/com/hbm/items/armor/ItemModPolish.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -18,14 +19,14 @@ public class ItemModPolish extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.BLUE + "5% chance to nullify damage"); + list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("armorMod.mod.Polish")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + " (5% chance to nullify damage)"); + list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Polish")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModQuartz.java b/src/main/java/com/hbm/items/armor/ItemModQuartz.java index 9179681b2..90bcf6833 100644 --- a/src/main/java/com/hbm/items/armor/ItemModQuartz.java +++ b/src/main/java/com/hbm/items/armor/ItemModQuartz.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -19,14 +20,14 @@ public class ItemModQuartz extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.DARK_GRAY + "Taking damage removes 10 RAD"); + list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.Quartz")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + " (-10 RAD when hit)"); + list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Quartz")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModRevive.java b/src/main/java/com/hbm/items/armor/ItemModRevive.java index 57519ed89..055017430 100644 --- a/src/main/java/com/hbm/items/armor/ItemModRevive.java +++ b/src/main/java/com/hbm/items/armor/ItemModRevive.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -20,23 +21,19 @@ public class ItemModRevive extends ItemArmorMod { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.scrumpy) { - list.add(EnumChatFormatting.GOLD + "But how did you survive?"); - list.add(EnumChatFormatting.RED + "I was drunk."); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("armorMod.mod.Revive.scrumpy")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.Revive.scrumpy")[1]); } if(this == ModItems.wild_p) { - list.add(EnumChatFormatting.DARK_GRAY + "Explosive " + EnumChatFormatting.RED + "Reactive " + EnumChatFormatting.DARK_GRAY + "Plot " + EnumChatFormatting.RED + "Armor"); + list.add(I18nUtil.resolveKey("armorMod.mod.Revive.wild_p")); } if(this == ModItems.fabsols_vodka) { - list.add(EnumChatFormatting.ITALIC + "In the news:"); - list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "Man literally too angry to die."); - list.add(""); - list.add(EnumChatFormatting.ITALIC + "\"I ain't got time to die\" says local"); - list.add(EnumChatFormatting.ITALIC + "man after ripping the physical manifestation"); - list.add(EnumChatFormatting.ITALIC + "of disaster itself in half."); + for(String s : I18nUtil.resolveKeyArray("armorMod.mod.Revive.fabsols_vodka")) + list.add(EnumChatFormatting.ITALIC + s); } list.add(""); - list.add(EnumChatFormatting.GOLD + "" + (stack.getMaxDamage() - stack.getItemDamage()) + " revives left"); + list.add(EnumChatFormatting.GOLD + "" + (stack.getMaxDamage() - stack.getItemDamage()) + I18nUtil.resolveKey("armorMod.mod.Revive")); list.add(""); super.addInformation(stack, player, list, bool); } @@ -44,6 +41,6 @@ public class ItemModRevive extends ItemArmorMod { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (" + (stack.getMaxDamage() - stack.getItemDamage()) + " revives left)"); + list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (" + (stack.getMaxDamage() - stack.getItemDamage()) + I18nUtil.resolveKey("armorMod.mod.Revive") + ")"); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModSensor.java b/src/main/java/com/hbm/items/armor/ItemModSensor.java index cfdec7ff9..4ab0619d2 100644 --- a/src/main/java/com/hbm/items/armor/ItemModSensor.java +++ b/src/main/java/com/hbm/items/armor/ItemModSensor.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -22,15 +23,15 @@ public class ItemModSensor extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + "Beeps near hazardous gasses"); - list.add(EnumChatFormatting.YELLOW + "Works in the inventory or when applied to armor"); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.Sensor")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.Sensor")[1]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (Detects gasses)"); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Sensor")[2]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModSerum.java b/src/main/java/com/hbm/items/armor/ItemModSerum.java index 29988e37b..3d9d91049 100644 --- a/src/main/java/com/hbm/items/armor/ItemModSerum.java +++ b/src/main/java/com/hbm/items/armor/ItemModSerum.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -20,14 +21,14 @@ public class ItemModSerum extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.GREEN + "Cures poison and gives strength"); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("armorMod.mod.Serum")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + " (replaces poison with strength)"); + list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Serum")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModServos.java b/src/main/java/com/hbm/items/armor/ItemModServos.java index cb07d46f3..a014d2305 100644 --- a/src/main/java/com/hbm/items/armor/ItemModServos.java +++ b/src/main/java/com/hbm/items/armor/ItemModServos.java @@ -6,6 +6,7 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -26,12 +27,12 @@ public class ItemModServos extends ItemArmorMod { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste I / Damage +50%"); - list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed +25% / Jump II"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[0]); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[1]); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste III / Damage +150%"); - list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed +50% / Jump III"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[0]); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[1]); } list.add(""); @@ -46,20 +47,20 @@ public class ItemModServos extends ItemArmorMod { if(item.armorType == 1) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste I / Damage +50%)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[2]); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste III / Damage +150%)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[2]); } } if(item.armorType == 2) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed +25% / Jump II)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[3]); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed +50% / Jump III)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[3]); } } } diff --git a/src/main/java/com/hbm/items/armor/ItemModShackles.java b/src/main/java/com/hbm/items/armor/ItemModShackles.java index 306dd3c2a..aad9cfcce 100644 --- a/src/main/java/com/hbm/items/armor/ItemModShackles.java +++ b/src/main/java/com/hbm/items/armor/ItemModShackles.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -17,12 +18,12 @@ public class ItemModShackles extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.RED + "You will speak when I ask you to."); - list.add(EnumChatFormatting.RED + "You will eat when I tell you to."); - list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "You will die when I allow you to."); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[1]); + list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[2]); list.add(""); - list.add(EnumChatFormatting.GOLD + "∞ revives left"); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[3]); list.add(""); super.addInformation(stack, player, list, bool); } @@ -30,6 +31,6 @@ public class ItemModShackles extends ItemArmorMod { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (∞ revives left)"); + list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[4]); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModTesla.java b/src/main/java/com/hbm/items/armor/ItemModTesla.java index b09a37770..cfddd60ea 100644 --- a/src/main/java/com/hbm/items/armor/ItemModTesla.java +++ b/src/main/java/com/hbm/items/armor/ItemModTesla.java @@ -7,6 +7,7 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.render.model.ModelBackTesla; import com.hbm.tileentity.machine.TileEntityTesla; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; @@ -30,14 +31,14 @@ public class ItemModTesla extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + "Zaps nearby entities (requires full electric set)"); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.Tesla")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @SideOnly(Side.CLIENT) public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + stack.getDisplayName() + " (zaps nearby entities)"); + list.add(EnumChatFormatting.YELLOW + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Tesla")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModTwoKick.java b/src/main/java/com/hbm/items/armor/ItemModTwoKick.java index a93ab9574..f647e509f 100644 --- a/src/main/java/com/hbm/items/armor/ItemModTwoKick.java +++ b/src/main/java/com/hbm/items/armor/ItemModTwoKick.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -17,14 +18,14 @@ public class ItemModTwoKick extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.ITALIC + "\"I've had worse\""); - list.add(EnumChatFormatting.YELLOW + "Punches fire 12 gauge shells"); + list.add(EnumChatFormatting.ITALIC + I18nUtil.resolveKeyArray("armorMod.mod.TwoKick")[0]); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.TwoKick")[1]); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (Shotgun punches)"); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.TwoKick")[2]); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModV1.java b/src/main/java/com/hbm/items/armor/ItemModV1.java index bb5d8a3a6..e7e67f8d3 100644 --- a/src/main/java/com/hbm/items/armor/ItemModV1.java +++ b/src/main/java/com/hbm/items/armor/ItemModV1.java @@ -7,6 +7,7 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.interfaces.IArmorModDash; +import com.hbm.util.I18nUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -31,14 +32,14 @@ public class ItemModV1 extends ItemArmorMod implements IArmorModDash { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.RED + "BLOOD IS FUEL"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.V1")[0]); list.add(""); super.addInformation(stack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (BLOOD IS FUEL)"); + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.V1")[1]); } public int getDashes() { diff --git a/src/main/java/com/hbm/items/armor/ItemModWD40.java b/src/main/java/com/hbm/items/armor/ItemModWD40.java index b01f48217..ace751d25 100644 --- a/src/main/java/com/hbm/items/armor/ItemModWD40.java +++ b/src/main/java/com/hbm/items/armor/ItemModWD40.java @@ -6,6 +6,7 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -27,7 +28,7 @@ public class ItemModWD40 extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.BLUE : EnumChatFormatting.YELLOW); - list.add(color + "Highly reduces damage taken by armor, +2 HP"); + list.add(color + I18nUtil.resolveKeyArray("armorMod.mod.WD40")[0]); list.add(""); super.addInformation(itemstack, player, list, bool); } @@ -37,7 +38,7 @@ public class ItemModWD40 extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.BLUE : EnumChatFormatting.YELLOW); - list.add(color + " " + stack.getDisplayName() + " (-80% armor wear / +2 HP)"); + list.add(color + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.WD40")[1]); } @Override diff --git a/src/main/java/com/hbm/items/armor/JetpackBase.java b/src/main/java/com/hbm/items/armor/JetpackBase.java index e5701e3d8..ff96db4cc 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBase.java +++ b/src/main/java/com/hbm/items/armor/JetpackBase.java @@ -8,6 +8,7 @@ import com.hbm.render.model.ModelJetPack; import com.hbm.util.ArmorUtil; import api.hbm.fluid.IFillableItem; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; @@ -40,7 +41,7 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem list.add(EnumChatFormatting.LIGHT_PURPLE + fuel.getLocalizedName() + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); list.add(""); super.addInformation(itemstack, player, list, bool); - list.add(EnumChatFormatting.GOLD + "Can be worn on its own!"); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("item.jetpack.desc")); } @Override diff --git a/src/main/java/com/hbm/items/armor/JetpackBooster.java b/src/main/java/com/hbm/items/armor/JetpackBooster.java index 09b90947b..a7a0084ec 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBooster.java +++ b/src/main/java/com/hbm/items/armor/JetpackBooster.java @@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -14,6 +15,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -67,9 +69,8 @@ public class JetpackBooster extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - - list.add("High-powered vectorized jetpack."); - list.add("Highly increased fuel consumption."); + for(String s : I18nUtil.resolveKeyArray("item.jetpack_boost.desc")) + list.add(s); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackBreak.java b/src/main/java/com/hbm/items/armor/JetpackBreak.java index 340fd2f09..92da43169 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBreak.java +++ b/src/main/java/com/hbm/items/armor/JetpackBreak.java @@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -77,9 +78,8 @@ public class JetpackBreak extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add("Regular jetpack that will automatically hover mid-air."); - list.add("Sneaking will stop hover mode."); - list.add("Hover mode will consume less fuel and increase air-mobility."); + for(String s : I18nUtil.resolveKeyArray("item.jetpack_break.desc")) + list.add(s); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackRegular.java b/src/main/java/com/hbm/items/armor/JetpackRegular.java index cbf04933b..5c3da193b 100644 --- a/src/main/java/com/hbm/items/armor/JetpackRegular.java +++ b/src/main/java/com/hbm/items/armor/JetpackRegular.java @@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -56,7 +57,7 @@ public class JetpackRegular extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add("Regular jetpack for simple upwards momentum."); + list.add(I18nUtil.resolveKey("item.jetpack_fly.desc")); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackVectorized.java b/src/main/java/com/hbm/items/armor/JetpackVectorized.java index d95312f80..d878a4d6d 100644 --- a/src/main/java/com/hbm/items/armor/JetpackVectorized.java +++ b/src/main/java/com/hbm/items/armor/JetpackVectorized.java @@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -68,8 +69,8 @@ public class JetpackVectorized extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add("High-mobility jetpack."); - list.add("Higher fuel consumption."); + for(String s : I18nUtil.resolveKeyArray("item.jetpack_vector.desc")) + list.add(s); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java b/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java index 4ded08d51..a278ad15d 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java +++ b/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java @@ -2,6 +2,7 @@ package com.hbm.items.block; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -25,6 +26,6 @@ public class ItemBlockBlastInfo extends ItemBlockBase { if(block == null) return; - list.add(EnumChatFormatting.GOLD + "Blast Resistance: " + block.getExplosionResistance(null)); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("desc.block.blastinfo", block.getExplosionResistance(null))); } } diff --git a/src/main/java/com/hbm/items/block/ItemBlockLore.java b/src/main/java/com/hbm/items/block/ItemBlockLore.java index 6d26836e0..24d86b52c 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockLore.java +++ b/src/main/java/com/hbm/items/block/ItemBlockLore.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.RedBarrel; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; @@ -21,35 +22,21 @@ public class ItemBlockLore extends ItemBlockBase { super.addInformation(itemstack, player, list, bool); if(this.field_150939_a instanceof RedBarrel) { - list.add("Static fluid barrel"); + list.add(I18nUtil.resolveKey("tile.red_barrel.desc")); } if(this.field_150939_a == ModBlocks.meteor_battery) { - list.add("Provides infinite charge to tesla coils"); + list.add(I18nUtil.resolveKey("tile.meteor_battery.desc")); } if(this.field_150939_a == ModBlocks.ore_oil) { - list.add("You weren't supposed to mine that."); - list.add("Come on, get a derrick you doofus."); + for(String s : I18nUtil.resolveKeyArray("tile.ore_oil.desc")) + list.add(s); } if(this.field_150939_a == ModBlocks.gravel_diamond) { - list.add("There is some kind of joke here,"); - list.add("but I can't quite tell what it is."); - list.add(""); - list.add("Update, 2020-07-04:"); - list.add("We deny any implications of a joke on"); - list.add("the basis that it was so severely unfunny"); - list.add("that people started stabbing their eyes out."); - list.add(""); - list.add("Update, 2020-17-04:"); - list.add("As it turns out, \"Diamond Gravel\" was"); - list.add("never really a thing, rendering what might"); - list.add("have been a joke as totally nonsensical."); - list.add("We apologize for getting your hopes up with"); - list.add("this non-joke that hasn't been made."); - list.add(""); - list.add("i added an item for a joke that isn't even here, what am i, stupid? can't even tell the difference between gravel and a gavel, how did i not forget how to breathe yet?"); + for(String s : I18nUtil.resolveKeyArray("tile.gravel_diamond.desc")) + list.add(s); } } diff --git a/src/main/java/com/hbm/items/block/ItemCustomMachine.java b/src/main/java/com/hbm/items/block/ItemCustomMachine.java index 61b1cf00c..b1c1199ad 100644 --- a/src/main/java/com/hbm/items/block/ItemCustomMachine.java +++ b/src/main/java/com/hbm/items/block/ItemCustomMachine.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.config.CustomMachineConfigJSON; import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -37,7 +38,7 @@ public class ItemCustomMachine extends ItemBlock { MachineConfiguration conf = CustomMachineConfigJSON.niceList.get(id); if(conf != null) { - return conf.localizedName; + return (I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name").startsWith("tile.cm_")) ? conf.localizedName : I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name"); } } diff --git a/src/main/java/com/hbm/items/bomb/ItemFleija.java b/src/main/java/com/hbm/items/bomb/ItemFleija.java index d9424f67e..0ef739264 100644 --- a/src/main/java/com/hbm/items/bomb/ItemFleija.java +++ b/src/main/java/com/hbm/items/bomb/ItemFleija.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; @@ -14,8 +15,8 @@ public class ItemFleija extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Used in:"); - list.add("F.L.E.I.J.A."); + for(String s : I18nUtil.resolveKeyArray( "tile.nuke_fleija.desc")) + list.add(s); super.addInformation(itemstack, player, list, bool); } diff --git a/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java b/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java index edbcbc693..707be6ba1 100644 --- a/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java +++ b/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java @@ -2,6 +2,7 @@ package com.hbm.items.bomb; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -10,12 +11,7 @@ public class ItemMissileShuttle extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Tonite, on bo''om gear:"); - list.add("James huffs leaded gasoline and"); - list.add("goes insane, Richard spends the"); - list.add("entire budget on a broken .PNG,"); - list.add("And I forget to set the infinite"); - list.add("Water tanks on our RBMK to flow"); - list.add("out, blowing up our entire base"); + for(String s : I18nUtil.resolveKeyArray( "item.missile_shuttle.desc")) + list.add(s); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/items/bomb/ItemN2.java b/src/main/java/com/hbm/items/bomb/ItemN2.java index c837fee78..f1a5ce766 100644 --- a/src/main/java/com/hbm/items/bomb/ItemN2.java +++ b/src/main/java/com/hbm/items/bomb/ItemN2.java @@ -2,17 +2,19 @@ package com.hbm.items.bomb; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; public class ItemN2 extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Used in:"); - list.add("N² Mine"); + for(String s : I18nUtil.resolveKeyArray( "tile.nuke_n2.desc")) + list.add(s); } } diff --git a/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java b/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java index 6335866f3..53a79c575 100644 --- a/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java +++ b/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java @@ -2,6 +2,7 @@ package com.hbm.items.bomb; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; @@ -16,10 +17,8 @@ public class ItemPrototypeBlock extends ItemBlock { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("It didn't have to be like this."); - list.add(""); - list.add("You monster."); - + for(String s : I18nUtil.resolveKeyArray( "tile.nuke_prototype.desc")) + list.add(s); /*list.add("In memory of Euphemia."); list.add(""); list.add("Rest in spaghetti, never forgetti.");*/ diff --git a/src/main/java/com/hbm/items/bomb/ItemSolinium.java b/src/main/java/com/hbm/items/bomb/ItemSolinium.java index a04321ecb..01776fa26 100644 --- a/src/main/java/com/hbm/items/bomb/ItemSolinium.java +++ b/src/main/java/com/hbm/items/bomb/ItemSolinium.java @@ -2,6 +2,7 @@ package com.hbm.items.bomb; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -11,8 +12,8 @@ public class ItemSolinium extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Used in:"); - list.add("Solinium Bomb"); + for(String s : I18nUtil.resolveKeyArray( "tile.nuke_solinium.desc")) + list.add(s); super.addInformation(itemstack, player, list, bool); } } diff --git a/src/main/java/com/hbm/items/food/ItemLemon.java b/src/main/java/com/hbm/items/food/ItemLemon.java index 25bb74a9e..b2d332c51 100644 --- a/src/main/java/com/hbm/items/food/ItemLemon.java +++ b/src/main/java/com/hbm/items/food/ItemLemon.java @@ -6,6 +6,7 @@ import com.hbm.items.ModItems; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; @@ -30,72 +31,57 @@ public class ItemLemon extends ItemFood { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.lemon) { - list.add("Eh, good enough."); + list.add(I18nUtil.resolveKey("item.lemon.desc")); } if(this == ModItems.definitelyfood) { - list.add("A'right, I got sick and tired of"); - list.add("having to go out, kill things just"); - list.add("to get food and not die, so here is "); - list.add("my absolutely genius solution:"); - list.add(""); - list.add("Have some edible dirt."); + for(String s : I18nUtil.resolveKeyArray("item.definitelyfood.desc")) + list.add(s); } if(this == ModItems.med_ipecac) { - list.add("Bitter juice that will cause your stomach"); - list.add("to forcefully eject its contents."); + for(String s : I18nUtil.resolveKeyArray("item.med_ipecac.desc")) + list.add(s); } if(this == ModItems.med_ptsd) { - list.add("This isn't even PTSD mediaction, it's just"); - list.add("Ipecac in a different bottle!"); + for(String s : I18nUtil.resolveKeyArray("item.med_ptsd.desc")) + list.add(s); } if(this == ModItems.med_schizophrenia) { - list.add("Makes the voices go away. Just for a while."); - list.add(""); - list.add("..."); - list.add("Better not take it."); - } - - if(this == ModItems.med_schizophrenia) { - list.add("Makes the voices go away. Just for a while."); - list.add(""); - list.add("..."); - list.add("Better not take it."); + for(String s : I18nUtil.resolveKeyArray("item.med_schiziphrenia.desc")) + list.add(s); } if(this == ModItems.loops) { - list.add("Brøther, may I have some lööps?"); + list.add(I18nUtil.resolveKey("item.loops.desc")); } if(this == ModItems.loop_stew) { - list.add("A very, very healthy breakfast."); + list.add(I18nUtil.resolveKey("item.loop_stew.desc")); } if(this == ModItems.twinkie) { - list.add("Expired 600 years ago!"); + list.add(I18nUtil.resolveKey("item.twinkie.desc")); } if(this == ModItems.pudding) { - list.add("What if he did?"); - list.add("What if he didn't?"); - list.add("What if the world was made of pudding?"); + for(String s : I18nUtil.resolveKeyArray("item.pudding.desc")) + list.add(s); } if(this == ModItems.ingot_semtex) { - list.add("Semtex H Plastic Explosive"); - list.add("Performant explosive for many applications."); - list.add("Edible"); + for(String s : I18nUtil.resolveKeyArray("item.ingot_semtex.desc")) + list.add(s); } if(this == ModItems.peas) { - list.add("He accepts your offering."); + list.add(I18nUtil.resolveKey("item.peas.desc")); } if(this == ModItems.quesadilla) { - list.add("That's what a 50 year old yeast infection does to you."); + list.add(I18nUtil.resolveKey("item.cheese_quesadilla.desc")); } } diff --git a/src/main/java/com/hbm/items/food/ItemTemFlakes.java b/src/main/java/com/hbm/items/food/ItemTemFlakes.java index d6eee715b..b0435244d 100644 --- a/src/main/java/com/hbm/items/food/ItemTemFlakes.java +++ b/src/main/java/com/hbm/items/food/ItemTemFlakes.java @@ -2,6 +2,7 @@ package com.hbm.items.food; import java.util.List; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.creativetab.CreativeTabs; @@ -39,15 +40,15 @@ public class ItemTemFlakes extends ItemFood { { if(itemstack.getItemDamage() == 0) { - list.add("Heals 2HP DISCOUNT FOOD OF TEM!!!"); + list.add(I18nUtil.resolveKeyArray("item.tem_flakes.desc")[0]); } if(itemstack.getItemDamage() == 1) { - list.add("Heals 2HP food of tem"); + list.add(I18nUtil.resolveKeyArray("item.tem_flakes.desc")[1]); } if(itemstack.getItemDamage() == 2) { - list.add("Heals food of tem (expensiv)"); + list.add(I18nUtil.resolveKeyArray("item.tem_flakes.desc")[2]); } } diff --git a/src/main/java/com/hbm/items/machine/ItemBattery.java b/src/main/java/com/hbm/items/machine/ItemBattery.java index 4f0fda9a7..3de7fd67b 100644 --- a/src/main/java/com/hbm/items/machine/ItemBattery.java +++ b/src/main/java/com/hbm/items/machine/ItemBattery.java @@ -6,6 +6,7 @@ import com.hbm.items.ModItems; import com.hbm.util.BobMathUtil; import api.hbm.energy.IBatteryItem; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.creativetab.CreativeTabs; @@ -34,14 +35,14 @@ public class ItemBattery extends Item implements IBatteryItem { charge = getCharge(itemstack); if(itemstack.getItem() != ModItems.fusion_core && itemstack.getItem() != ModItems.energy_core) { - list.add("Energy stored: " + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE"); + list.add(I18nUtil.resolveKey("desc.item.battery.charge",BobMathUtil.getShortNumber(charge),BobMathUtil.getShortNumber(maxCharge))); } else { String charge1 = BobMathUtil.getShortNumber((charge * 100) / this.maxCharge); - list.add("Charge: " + charge1 + "%"); + list.add(I18nUtil.resolveKey("desc.item.battery.chargePerc", charge1)); list.add("(" + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE)"); } - list.add("Charge rate: " + BobMathUtil.getShortNumber(chargeRate) + "HE/t"); - list.add("Discharge rate: " + BobMathUtil.getShortNumber(dischargeRate) + "HE/t"); + list.add(I18nUtil.resolveKey("desc.item.battery.chargeRate",BobMathUtil.getShortNumber(chargeRate))); + list.add(I18nUtil.resolveKey("desc.item.battery.dischargeRate",BobMathUtil.getShortNumber(dischargeRate))); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java index 1a04a4649..5fb6e7a76 100644 --- a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java +++ b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -33,132 +34,131 @@ public class ItemMachineUpgrade extends Item { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this.type == UpgradeType.SPEED) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Delay -" + (15 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Laser Miner:"); - list.add("Delay ÷" + (1 + this.tier) + " / Consumption +" + (625 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Electric Furnace:"); - list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (50 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Assembly Machine:"); - list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Chemical Plant:"); - list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Oil Wells:"); - list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (25 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Crystallizer:"); - list.add("Delay -" + (20 * this.tier) + "% / Consumption +" + (1000 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Cyclotron:"); - list.add("Speed x" + (1 + this.tier)); - list.add(EnumChatFormatting.RED + "Flare Stack:"); - list.add("Speed x" + (1 + this.tier)); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Damage +" + (0.25 * (double)this.tier) + "dmg/t"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(15 * this.tier),(300 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[1]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","",(1 + this.tier),(625 * this.tier),"","","","")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[2]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(25 * this.tier),(50 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[3]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(25 * this.tier),(300 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[4]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(25 * this.tier),(300 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[5]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","",(25 * this.tier),(25 * this.tier),"","")[2]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[6]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(20 * this.tier),(1000 * this.tier),"","","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[7]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","","","",(1 + this.tier),"")[3]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[8]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","","","",(1 + this.tier),"")[3]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","","","","",(0.25 * (double)this.tier))[4]); } if(this.type == UpgradeType.EFFECT) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Radius +" + this.tier + "m / Consumption +" + (80 * this.tier) + "HE/t"); - list.add(EnumChatFormatting.RED + "Crystallizer:"); - list.add("+" + (5 * this.tier) + "% chance of not consuming an item / Acid consumption +" + (1000 * this.tier) + "mB"); - list.add(EnumChatFormatting.RED + "Cyclotron:"); - list.add("-" + (100 - 100 / (this.tier + 1)) + "% chance of incrementing overheat counter"); - list.add(EnumChatFormatting.RED + "Flare Stack:"); - list.add("+" + (100 * this.tier / 3) + "% power production"); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Range +" + (3 * this.tier) + "m"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect",this.tier,(80 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[6]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","",(5 * this.tier),(1000 * this.tier),"","","")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[7]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","","","",(100 - 100 / (this.tier + 1)),"","")[2]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[8]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","","","","",(100 * this.tier / 3),"")[3]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","","","","","",(3 * this.tier))[4]); } if(this.type == UpgradeType.POWER) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Electric Furnace:"); - list.add("Consumption -" + (15 * this.tier) + "HE/t / Delay +" + (10 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Assembly Machine:"); - list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Chemical Plant:"); - list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Oil Wells:"); - list.add("Consumption -" + (25 * this.tier) + "% / Delay +" + (10 * this.tier) + "%"); - list.add(EnumChatFormatting.RED + "Cyclotron:"); - list.add("Consumption -" + (100 * this.tier) + "kHE/t"); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Consumption -" + (150 * this.tier) + "HE/t"); - list.add("Consumption when firing -" + (1500 * this.tier) + "HE/t"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(30 * this.tier),(5 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[2]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(15 * this.tier),(10 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[3]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(30 * this.tier),(5 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[4]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(30 * this.tier),(5 * this.tier),"","","","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[5]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","",(25 * this.tier),(10 * this.tier),"","","")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[7]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","","","",(100 * this.tier),"","")[2]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","","","","",(150 * this.tier),"")[3]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","","","","","",(1500 * this.tier))[4]); } if(this == ModItems.upgrade_fortune_1) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Fortune +1 / Delay +15"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.fortune","1","15")); } if(this == ModItems.upgrade_fortune_2) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Fortune +2 / Delay +30"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.fortune","2","30")); } if(this == ModItems.upgrade_fortune_3) { - list.add(EnumChatFormatting.RED + "Mining Drill:"); - list.add("Fortune +3 / Delay +45"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.fortune","3","45")); } if(this.type == UpgradeType.AFTERBURN) { - list.add(EnumChatFormatting.RED + "Turbofan:"); - list.add("Production x" + (this.tier + 1) + " / Consumption x" + (this.tier + 2)); - list.add(EnumChatFormatting.RED + "Maxwell:"); - list.add("Afterburn +" + (this.tier * 3) + "s"); - list.add(EnumChatFormatting.RED + "Oil Wells:"); - list.add("Burn " + (this.tier * 10) + "mB of gas for " + (this.tier * 50) + "HE/t"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[10]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.afterburn",(this.tier + 1),(this.tier + 2),"","","")[0]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.afterburn","","",(this.tier * 3),"","")[1]); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[5]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.afterburn","","","",(this.tier * 10),(this.tier * 50))[2]); } if(this == ModItems.upgrade_radius) { - list.add(EnumChatFormatting.RED + "Forcefield Range Upgrade"); - list.add("Radius +16 / Consumption +500"); - list.add("Stacks to 16"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[11]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield","16","500")[0]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield")[2]); } if(this == ModItems.upgrade_health) { - list.add(EnumChatFormatting.RED + "Forcefield Health Upgrade"); - list.add("Max. Health +50 / Consumption +250"); - list.add("Stacks to 16"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[12]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield","50","250")[1]); + list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield")[2]); } if(this == ModItems.upgrade_smelter) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("Smelts blocks. Easy enough."); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.smelter")); } if(this == ModItems.upgrade_shredder) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("Crunches ores"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.shredder")); } if(this == ModItems.upgrade_centrifuge) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("Hopefully self-explanatory"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.centrifuge")); } if(this == ModItems.upgrade_crystallizer) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("Your new best friend"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + list.add(I18nUtil.resolveKey("desc.item.upgrade.crystallizer")); } if(this == ModItems.upgrade_screm) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("It's like in Super Mario where all blocks are"); - list.add("actually Toads, but here it's Half-Life scientists"); - list.add("and they scream. A lot."); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + for(String s : I18nUtil.resolveKeyArray("desc.item.upgrade.screm")) + list.add(s); } if(this == ModItems.upgrade_nullifier) { - list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); - list.add("50% chance to override worthless items with /dev/zero"); - list.add("50% chance to move worthless items to /dev/null"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); + for(String s : I18nUtil.resolveKeyArray("desc.item.upgrade.nullifier")) + list.add(s); } if(this == ModItems.upgrade_gc_speed) { - list.add(EnumChatFormatting.RED + "Gas Centrifuge Upgrade"); - list.add("Allows for total isotopic separation of HEUF6"); - list.add(EnumChatFormatting.YELLOW + "also your centrifuge goes sicko mode"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[14]); + for(String s : I18nUtil.resolveKeyArray("desc.item.upgrade.gc_speed")) + list.add(s); } } diff --git a/src/main/java/com/hbm/items/machine/ItemPWRFuel.java b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java index db802776a..70bd64d81 100644 --- a/src/main/java/com/hbm/items/machine/ItemPWRFuel.java +++ b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.items.ItemEnumMulti; import com.hbm.util.EnumUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.function.Function; import com.hbm.util.function.Function.FunctionLogarithmic; import com.hbm.util.function.Function.FunctionSqrt; @@ -55,10 +56,7 @@ public class ItemPWRFuel extends ItemEnumMulti { EnumPWRFuel num = EnumUtil.grabEnumSafely(EnumPWRFuel.class, stack.getItemDamage()); String color = EnumChatFormatting.GOLD + ""; - String reset = EnumChatFormatting.RESET + ""; - - list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); - list.add(color + "Reacton function: " + reset + num.function.getLabelForFuel()); - list.add(color + "Fuel type: " + reset + num.function.getDangerFromFuel()); + for(String s : I18nUtil.resolveKeyArray("trait.pwr_fuel" , num.heatEmission, num.function.getLabelForFuel(), num.function.getDangerFromFuel())) + list.add(color + s); } } diff --git a/src/main/java/com/hbm/items/machine/ItemPlateFuel.java b/src/main/java/com/hbm/items/machine/ItemPlateFuel.java index f30978de9..6f76853b2 100644 --- a/src/main/java/com/hbm/items/machine/ItemPlateFuel.java +++ b/src/main/java/com/hbm/items/machine/ItemPlateFuel.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -27,10 +28,8 @@ public class ItemPlateFuel extends ItemFuelRod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add(EnumChatFormatting.YELLOW + "[Research Reactor Plate Fuel]"); - list.add(EnumChatFormatting.DARK_AQUA + " " + getFunctionDesc()); - list.add(EnumChatFormatting.DARK_AQUA + " Yield of " + BobMathUtil.getShortNumber(lifeTime) + " events"); + for(String s : I18nUtil.resolveKeyArray("trait.platefuel", getFunctionDesc(), BobMathUtil.getShortNumber(lifeTime))) + list.add(EnumChatFormatting.YELLOW + s); super.addInformation(itemstack, player, list, bool); } diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java b/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java index e50dbcd66..09f5a359a 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.items.special.ItemNuclearWaste; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -77,20 +78,20 @@ public class ItemRBMKPellet extends ItemNuclearWaste { super.addInformation(stack, player, list, bool); list.add(EnumChatFormatting.ITALIC + this.fullName); - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "Pellet for recycling"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[0]); int meta = rectify(stack.getItemDamage()); switch(meta % 5) { - case 0: list.add(EnumChatFormatting.GOLD + "Brand New"); break; - case 1: list.add(EnumChatFormatting.YELLOW + "Barely Depleted"); break; - case 2: list.add(EnumChatFormatting.GREEN + "Moderately Depleted"); break; - case 3: list.add(EnumChatFormatting.DARK_GREEN + "Highly Depleted"); break; - case 4: list.add(EnumChatFormatting.DARK_GRAY + "Fully Depleted"); break; + case 0: list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[1]); break; + case 1: list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[2]); break; + case 2: list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[3]); break; + case 3: list.add(EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[4]); break; + case 4: list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[5]); break; } if(hasXenon(meta)) - list.add(EnumChatFormatting.DARK_PURPLE + "High Xenon Poison"); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[6]); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index 960a84874..9808cf170 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -223,15 +223,15 @@ public class ItemRBMKRod extends Item { } public static enum EnumBurnFunc { - PASSIVE(EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"), //const, no reactivity - LOG_TEN(EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"), //log10(x + 1) * reactivity * 50 - PLATEU(EnumChatFormatting.GREEN + "SAFE / EULER"), //(1 - e^(-x/25)) * reactivity * 100 - ARCH(EnumChatFormatting.RED + "DANGEROUS / NEGATIVE-QUADRATIC"), //x-(x²/1000) * reactivity - SIGMOID(EnumChatFormatting.GREEN + "SAFE / SIGMOID"), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 ! - SQUARE_ROOT(EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"), //sqrt(x) * 10 * reactivity - LINEAR(EnumChatFormatting.RED + "DANGEROUS / LINEAR"), //x * reactivity - QUADRATIC(EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"), //x^2 / 100 * reactivity - EXPERIMENTAL(EnumChatFormatting.RED + "EXPERIMENTAL / SINE SLOPE"); //x * (sin(x) + 1) + PASSIVE(EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[0]), //const, no reactivity + LOG_TEN(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[1]), //log10(x + 1) * reactivity * 50 + PLATEU(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[2]), //(1 - e^(-x/25)) * reactivity * 100 + ARCH(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[3]), //x-(x²/1000) * reactivity + SIGMOID(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[4]), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 ! + SQUARE_ROOT(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[5]), //sqrt(x) * 10 * reactivity + LINEAR(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[6]), //x * reactivity + QUADRATIC(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[7]), //x^2 / 100 * reactivity + EXPERIMENTAL(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[8]); //x * (sin(x) + 1) public String title = ""; diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index be5e0ad7f..73971bb41 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -9,6 +9,7 @@ import com.hbm.main.MainRegistry; import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; import com.hbm.render.icon.TextureAtlasSpriteMutatable; import com.hbm.util.EnumUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.function.Function; import com.hbm.util.function.Function.*; @@ -127,23 +128,23 @@ public class ItemWatzPellet extends ItemEnumMulti { if(this != ModItems.watz_pellet) return; EnumWatzType num = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - - list.add(EnumChatFormatting.GREEN + "Depletion: " + String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D) + "%"); + + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.watz_pellet", String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D))); String color = EnumChatFormatting.GOLD + ""; String reset = EnumChatFormatting.RESET + ""; if(num.passive > 0){ - list.add(color + "Base fission rate: " + reset + num.passive); - list.add(EnumChatFormatting.RED + "Self-igniting!"); + list.add(color + I18nUtil.resolveKeyArray("trait.watz_pellet.passive")[0] + reset + num.passive); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.watz_pellet.passive")[1]); } - if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); + if(num.heatEmission > 0) list.add(color + I18nUtil.resolveKey("trait.watz_pellet.heatEmission") + reset + num.heatEmission + " TU"); if(num.burnFunc != null) { - list.add(color + "Reacton function: " + reset + num.burnFunc.getLabelForFuel()); - list.add(color + "Fuel type: " + reset + num.burnFunc.getDangerFromFuel()); + list.add(color + I18nUtil.resolveKeyArray("trait.watz_pellet.burnFunc")[0] + reset + num.burnFunc.getLabelForFuel()); + list.add(color + I18nUtil.resolveKeyArray("trait.watz_pellet.burnFunc")[1] + reset + num.burnFunc.getDangerFromFuel()); } - if(num.heatDiv != null) list.add(color + "Thermal multiplier: " + reset + num.heatDiv.getLabelForFuel() + " TUâ»Â¹"); - if(num.absorbFunc != null) list.add(color + "Flux capture: " + reset + num.absorbFunc.getLabelForFuel()); + if(num.heatDiv != null) list.add(color + I18nUtil.resolveKey("trait.watz_pellet.heatDiv") + reset + num.heatDiv.getLabelForFuel() + " TUâ»Â¹"); + if(num.absorbFunc != null) list.add(color + I18nUtil.resolveKey("trait.watz_pellet.absorbFunc") + reset + num.absorbFunc.getLabelForFuel()); } @Override diff --git a/src/main/java/com/hbm/items/special/ItemAMSCore.java b/src/main/java/com/hbm/items/special/ItemAMSCore.java index 6a4fb569f..68c12677f 100644 --- a/src/main/java/com/hbm/items/special/ItemAMSCore.java +++ b/src/main/java/com/hbm/items/special/ItemAMSCore.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -28,51 +29,26 @@ public class ItemAMSCore extends Item { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if (this == ModItems.ams_core_sing) { - list.add("A modified undefined state of spacetime"); - list.add("used to aid in inter-gluon fusion and"); - list.add("spacetime annihilation. Yes, this destroys"); - list.add("the universe itself, slowly but steadily,"); - list.add("but at least you can power your toaster with"); - list.add("this, so it's all good."); + for(String s : I18nUtil.resolveKeyArray("item.ams_core_sing.desc")) + list.add(s); } if (this == ModItems.ams_core_wormhole) { - list.add("A cloud of billions of nano-wormholes which"); - list.add("deliberately fail at tunneling matter from"); - list.add("another dimension, rather it converts all"); - list.add("that matter into pure energy. That means"); - list.add("you're actively contributing to the destruction"); - list.add("of another dimension, sucking it dry like a"); - list.add("juicebox."); - list.add("That dimension probably sucked, anyways. I"); - list.add("bet it was full of wasps or some crap, man,"); - list.add("I hate these things."); + for(String s : I18nUtil.resolveKeyArray("item.ams_core_wormhole.desc")) + list.add(s); } if (this == ModItems.ams_core_eyeofharmony) { - list.add("A star collapsing in on itself, mere nanoseconds"); - list.add("away from being turned into a black hole,"); - list.add("frozen in time. If I didn't know better I"); - list.add("would say this is some deep space magic"); - list.add("bullcrap some guy made up to sound intellectual."); - list.add("Probably Steve from accounting. You still owe me"); - list.add("ten bucks."); + for(String s : I18nUtil.resolveKeyArray("item.ams_core_eyeofharmony.desc")) + list.add(s); } if (this == ModItems.ams_core_thingy) { if(MainRegistry.polaroidID == 11) { - list.add("Yeah I'm not even gonna question that one."); + list.add(I18nUtil.resolveKey("item.ams_core_thingy_hide.desc")); } else { - list.add("..."); - list.add("..."); - list.add("...am I even holding this right?"); - list.add("It's a small metal thing. I dunno where it's from"); - list.add("or what it does, maybe they found it on a"); - list.add("junkyard and sold it as some kind of antique"); - list.add("artifact. If it weren't for the fact that I can"); - list.add("actually stuff this into some great big laser"); - list.add("reactor thing, I'd probably bring it back to where"); - list.add("it belongs. In the trash."); + for(String s : I18nUtil.resolveKeyArray("item.ams_core_thingy.desc")) + list.add(s); } } } diff --git a/src/main/java/com/hbm/items/special/ItemGlitch.java b/src/main/java/com/hbm/items/special/ItemGlitch.java index 9942c4754..f44dab7ec 100644 --- a/src/main/java/com/hbm/items/special/ItemGlitch.java +++ b/src/main/java/com/hbm/items/special/ItemGlitch.java @@ -13,6 +13,7 @@ import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import api.hbm.energy.IBatteryItem; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; @@ -39,10 +40,10 @@ public class ItemGlitch extends Item implements IBatteryItem { if(!world.isRemote) switch(itemRand.nextInt(31)) { case 0: - player.addChatMessage(new ChatComponentText("Sorry nothing.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[0])); break; case 1: - player.addChatMessage(new ChatComponentText("Prometheus was punished by the gods by giving the gift of knowledge to man. He was cast into the bowels of the earth and pecked by birds.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[1])); break; case 2: player.attackEntityFrom(ModDamageSource.radiation, 1000); @@ -66,7 +67,7 @@ public class ItemGlitch extends Item implements IBatteryItem { break; case 8: player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_container, 10)); - player.addChatMessage(new ChatComponentText("Oh, and by the way: The polaroid shifts reality. Things can be different if the polaroid is broken.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[2])); break; case 9: player.inventory.addItemStackToInventory(new ItemStack(ModItems.nuke_advanced_kit, 1)); @@ -94,7 +95,7 @@ public class ItemGlitch extends Item implements IBatteryItem { player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_pip)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.bottle_sparkle)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.geiger_counter)); - player.addChatMessage(new ChatComponentText("Have some free stuff. You'll need it for that one cryptic achievement.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[3])); break; case 14: player.inventory.dropAllItems(); @@ -105,43 +106,43 @@ public class ItemGlitch extends Item implements IBatteryItem { player.inventory.addItemStackToInventory(new ItemStack(Blocks.dirt, 64)); break; case 16: - player.addChatMessage(new ChatComponentText("v yvxr lbhe nggvghqr!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[4])); break; case 17: - player.addChatMessage(new ChatComponentText("89% of magic tricks are not magic. Technically, they are sorcery.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[5])); break; case 18: player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_lever_action)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge, 12)); - player.addChatMessage(new ChatComponentText("Here ya go.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[6])); break; case 19: - player.addChatMessage(new ChatComponentText("Ë")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[7])); break; case 20: - player.addChatMessage(new ChatComponentText("Good day, I am text")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[8])); break; case 21: player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_nuclear)); - player.addChatMessage(new ChatComponentText("73616d706c652074657874!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[9])); break; case 22: - player.addChatMessage(new ChatComponentText("Budget cuts, no effect for you.")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[10])); break; case 23: - player.addChatMessage(new ChatComponentText("oof")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[11])); break; case 24: player.addPotionEffect(new PotionEffect(Potion.resistance.id, 60 * 20, 9)); - player.addChatMessage(new ChatComponentText("Tank!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[12])); break; case 25: player.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 60 * 20, 9)); - player.addChatMessage(new ChatComponentText("More devastating than a falling boxcar!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[13])); break; case 26: player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 60 * 20, 9)); - player.addChatMessage(new ChatComponentText("Ha!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[14])); break; case 27: EntityVortex vortex = new EntityVortex(world, 2.5F); @@ -156,15 +157,15 @@ public class ItemGlitch extends Item implements IBatteryItem { mirv.posY = player.posY + 100; mirv.posZ = player.posZ; world.spawnEntityInWorld(mirv); - player.addChatMessage(new ChatComponentText("Watch your head!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[15])); break; case 29: ExplosionLarge.spawnBurst(world, player.posX, player.posY, player.posZ, 27, 3); - player.addChatMessage(new ChatComponentText("Bam!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[16])); break; case 30: player.inventory.addItemStackToInventory(new ItemStack(ModItems.plate_saturnite)); - player.addChatMessage(new ChatComponentText("It's dangerous to go alone, take this!")); + player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[17])); break; } @@ -176,62 +177,62 @@ public class ItemGlitch extends Item implements IBatteryItem { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("It's a gamble!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[0]); list.add(""); switch(MainRegistry.polaroidID) { case 1: - list.add("Click-click-click!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[1]); break; case 2: - list.add("Creek!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[2]); break; case 3: - list.add("Bzzzt!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[3]); break; case 4: - list.add("TS staring off into space."); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[4]); break; case 5: - list.add("BANG!!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[5]); break; case 6: - list.add("Woop!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[6]); break; case 7: - list.add("Poow!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[7]); break; case 8: - list.add("Pft!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[8]); break; case 9: - list.add("GF fgnevat bss vagb fcnpr."); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[9]); break; case 10: - list.add("Backup memory #8 on 1.44 million bytes."); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[10]); break; case 11: - list.add("PTANG!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[11]); break; case 12: - list.add("Bzzt-zrrt!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[12]); break; case 13: - list.add("Clang, click-brrthththrtrtrtrtrtr!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[13]); break; case 14: - list.add("KABLAM!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[14]); break; case 15: - list.add("PLENG!"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[15]); break; case 16: - list.add("Wheeeeeeee-"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[16]); break; case 17: - list.add("Thump."); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[17]); break; case 18: - list.add("BANG! Choo-chooo! B A N G ! ! !"); + list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[18]); break; } } diff --git a/src/main/java/com/hbm/items/special/ItemRag.java b/src/main/java/com/hbm/items/special/ItemRag.java index bb883f6eb..f94b5ba49 100644 --- a/src/main/java/com/hbm/items/special/ItemRag.java +++ b/src/main/java/com/hbm/items/special/ItemRag.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -39,7 +40,7 @@ public class ItemRag extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Drop into water to make damp cloth."); - list.add("Right-click to urinate on the cloth."); + for(String s : I18nUtil.resolveKeyArray("item.rag.desc")) + list.add(s); } } diff --git a/src/main/java/com/hbm/items/special/ItemSoyuz.java b/src/main/java/com/hbm/items/special/ItemSoyuz.java index 7644a0880..adfe591cd 100644 --- a/src/main/java/com/hbm/items/special/ItemSoyuz.java +++ b/src/main/java/com/hbm/items/special/ItemSoyuz.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -50,12 +51,12 @@ public class ItemSoyuz extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add("Skin:"); + list.add(I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[0]); switch(stack.getItemDamage()) { - case 0: list.add(EnumChatFormatting.GOLD + "Original"); break; - case 1: list.add(EnumChatFormatting.BLUE + "Luna Space Center"); break; - case 2: list.add(EnumChatFormatting.GREEN + "Post War"); break; + case 0: list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[1]); break; + case 1: list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[2]); break; + case 2: list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[3]); break; } } diff --git a/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java b/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java index 9fb384f23..927ae5165 100644 --- a/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java +++ b/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java @@ -7,6 +7,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -27,14 +28,14 @@ public class ItemAnchorRemote extends ItemBattery { charge = getCharge(itemstack); if(itemstack.getItem() != ModItems.fusion_core && itemstack.getItem() != ModItems.energy_core) { - list.add("Energy stored: " + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE"); + list.add(I18nUtil.resolveKey("desc.item.battery.charge",BobMathUtil.getShortNumber(charge),BobMathUtil.getShortNumber(maxCharge))); } else { String charge1 = BobMathUtil.getShortNumber((charge * 100) / this.maxCharge); - list.add("Charge: " + charge1 + "%"); + list.add(I18nUtil.resolveKey("desc.item.battery.chargePerc", charge1)); list.add("(" + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE)"); } - list.add("Charge rate: " + BobMathUtil.getShortNumber(chargeRate) + "HE/t"); + list.add(I18nUtil.resolveKey("desc.item.battery.chargeRate",BobMathUtil.getShortNumber(chargeRate))); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemCMStructure.java b/src/main/java/com/hbm/items/tool/ItemCMStructure.java index 6c46decee..415076832 100644 --- a/src/main/java/com/hbm/items/tool/ItemCMStructure.java +++ b/src/main/java/com/hbm/items/tool/ItemCMStructure.java @@ -7,6 +7,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; @@ -156,10 +157,8 @@ public class ItemCMStructure extends Item implements ILookOverlay { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { super.addInformation(stack, player, list, ext); - list.add(EnumChatFormatting.YELLOW + "Click Custom Machine Structure Positioning Anchor to"); - list.add(EnumChatFormatting.YELLOW + "Confirm the location of the custom machine core block."); - list.add(EnumChatFormatting.YELLOW + "Output all blocks between Position1 and Position2 with"); - list.add(EnumChatFormatting.YELLOW + "metadata to \"CMstructureOutput.txt\" in hbmConfig."); + for(String s : I18nUtil.resolveKeyArray("item.structure_custommachine.desc")) + list.add(EnumChatFormatting.YELLOW + s); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemDetonator.java b/src/main/java/com/hbm/items/tool/ItemDetonator.java index 201f60c5a..c34742f75 100644 --- a/src/main/java/com/hbm/items/tool/ItemDetonator.java +++ b/src/main/java/com/hbm/items/tool/ItemDetonator.java @@ -2,6 +2,7 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.util.I18nUtil; import org.apache.logging.log4j.Level; import com.hbm.config.GeneralConfig; @@ -21,12 +22,12 @@ public class ItemDetonator extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Shift right-click to set position,"); - list.add("right-click to detonate!"); + for(String s : I18nUtil.resolveKeyArray("item.detonator.desc")) + list.add(s); if(itemstack.getTagCompound() == null) { - list.add(EnumChatFormatting.RED + "No position set!"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("item.detonator.pos.desc")[0]); } else { - list.add(EnumChatFormatting.YELLOW + "Linked to " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z")); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("item.detonator.pos.desc" , itemstack.stackTagCompound.getInteger("x") , itemstack.stackTagCompound.getInteger("y") , itemstack.stackTagCompound.getInteger("z"))[1]); } } @@ -45,7 +46,7 @@ public class ItemDetonator extends Item { player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) .next("] ").color(EnumChatFormatting.DARK_AQUA) - .next("Position set!").color(EnumChatFormatting.GREEN).flush()); + .next(I18nUtil.resolveKeyArray("desc.item.detonator")[0]).color(EnumChatFormatting.GREEN).flush()); } world.playSoundAtEntity(player, "hbm:item.techBoop", 2.0F, 1.0F); @@ -64,7 +65,7 @@ public class ItemDetonator extends Item { player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) .next("] ").color(EnumChatFormatting.DARK_AQUA) - .next("No position set!").color(EnumChatFormatting.RED).flush()); + .next(I18nUtil.resolveKeyArray("desc.item.detonator")[1]).color(EnumChatFormatting.RED).flush()); } } else { int x = stack.stackTagCompound.getInteger("x"); diff --git a/src/main/java/com/hbm/items/tool/ItemMS.java b/src/main/java/com/hbm/items/tool/ItemMS.java index 77495a356..bcb3b7c7f 100644 --- a/src/main/java/com/hbm/items/tool/ItemMS.java +++ b/src/main/java/com/hbm/items/tool/ItemMS.java @@ -7,6 +7,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -18,7 +19,7 @@ public class ItemMS extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Lost but not forgotten"); + list.add(I18nUtil.resolveKey("item.mysteryshovel.desc")); } public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float a, float b, float c) diff --git a/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java b/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java index eefbae55d..bf8b970b3 100644 --- a/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java +++ b/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -26,63 +27,63 @@ public class ItemSwordMeteorite extends ItemSwordAbility { super.addInformation(stack, player, list, ext); if(this == ModItems.meteorite_sword) { - list.add(EnumChatFormatting.ITALIC + "Forged from a fallen star"); - list.add(EnumChatFormatting.ITALIC + "Sharper than most terrestrial blades"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_seared) { - list.add(EnumChatFormatting.ITALIC + "Fire strengthens the blade"); - list.add(EnumChatFormatting.ITALIC + "Making it even more powerful"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_seared.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_reforged) { - list.add(EnumChatFormatting.ITALIC + "The sword has been reforged"); - list.add(EnumChatFormatting.ITALIC + "To rectify past imperfections"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_reforged.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_hardened) { - list.add(EnumChatFormatting.ITALIC + "Extremely high pressure has been used"); - list.add(EnumChatFormatting.ITALIC + "To harden the blade further"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_hardened.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_alloyed) { - list.add(EnumChatFormatting.ITALIC + "Cobalt fills the fissures"); - list.add(EnumChatFormatting.ITALIC + "Strengthening the sword"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_alloyed.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_machined) { - list.add(EnumChatFormatting.ITALIC + "Advanced machinery was used"); - list.add(EnumChatFormatting.ITALIC + "To refine the blade even more"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_machined.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_treated) { - list.add(EnumChatFormatting.ITALIC + "Chemicals have been applied"); - list.add(EnumChatFormatting.ITALIC + "Making the sword more powerful"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_treated.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_etched) { - list.add(EnumChatFormatting.ITALIC + "Acids clean the material"); - list.add(EnumChatFormatting.ITALIC + "To make this the perfect sword"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_etched.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_bred) { - list.add(EnumChatFormatting.ITALIC + "Immense heat and radiation"); - list.add(EnumChatFormatting.ITALIC + "Compress the material"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_bred.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_irradiated) { - list.add(EnumChatFormatting.ITALIC + "The power of the Atom"); - list.add(EnumChatFormatting.ITALIC + "Gives the sword might"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_irradiated.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_fused) { - list.add(EnumChatFormatting.ITALIC + "This blade has met"); - list.add(EnumChatFormatting.ITALIC + "With the forces of the stars"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_fused.desc")) + list.add(EnumChatFormatting.ITALIC + s); } if(this == ModItems.meteorite_sword_baleful) { - list.add(EnumChatFormatting.ITALIC + "This sword has met temperatures"); - list.add(EnumChatFormatting.ITALIC + "Far beyond what normal material can endure"); + for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_baleful.desc")) + list.add(EnumChatFormatting.ITALIC + s); } /* diff --git a/src/main/java/com/hbm/items/tool/ItemWand.java b/src/main/java/com/hbm/items/tool/ItemWand.java index 9bb6dc6ca..d3a532941 100644 --- a/src/main/java/com/hbm/items/tool/ItemWand.java +++ b/src/main/java/com/hbm/items/tool/ItemWand.java @@ -2,6 +2,7 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -15,22 +16,20 @@ public class ItemWand extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Creative-only item"); - list.add("\"Destruction brings creation\""); - list.add("(Set positions with right click,"); - list.add("set block with shift-right click!)"); + for(String s : I18nUtil.resolveKeyArray( "item.wand_k.desc")) + list.add(s); if(itemstack.stackTagCompound != null && !(itemstack.stackTagCompound.getInteger("x") == 0 && itemstack.stackTagCompound.getInteger("y") == 0 && itemstack.stackTagCompound.getInteger("z") == 0)) { - list.add("Pos: " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z")); + list.add(I18nUtil.resolveKey("item.wand_k.pos" , itemstack.stackTagCompound.getInteger("x") , itemstack.stackTagCompound.getInteger("y") , itemstack.stackTagCompound.getInteger("z"))); } else { - list.add("Positions not set!"); + list.add(I18nUtil.resolveKey("item.wand_k.null")); } if(itemstack.stackTagCompound != null) - list.add("Block saved: " + Block.getBlockById(itemstack.stackTagCompound.getInteger("block")).getUnlocalizedName()); + list.add(I18nUtil.resolveKey("item.wand_k.block" , Block.getBlockById(itemstack.stackTagCompound.getInteger("block")).getUnlocalizedName())); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemWandS.java b/src/main/java/com/hbm/items/tool/ItemWandS.java index ea7ba07fa..f2985ac02 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandS.java +++ b/src/main/java/com/hbm/items/tool/ItemWandS.java @@ -3,6 +3,7 @@ package com.hbm.items.tool; import java.util.List; import java.util.Random; +import com.hbm.util.I18nUtil; import com.hbm.world.machine.FWatz; import com.hbm.world.machine.NuclearReactor; import com.hbm.world.machine.Watz; @@ -19,10 +20,8 @@ public class ItemWandS extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Creative-only item"); - list.add("\"Instant structures for everyone!\""); - list.add("(Cycle with shift-right click,"); - list.add("spawn structures with right click!)"); + for(String s : I18nUtil.resolveKeyArray( "item.wand_s.desc")) + list.add(s); if(itemstack.stackTagCompound != null) { switch(itemstack.stackTagCompound.getInteger("building")) diff --git a/src/main/java/com/hbm/items/tool/WeaponSpecial.java b/src/main/java/com/hbm/items/tool/WeaponSpecial.java index c59daa016..ca10cc59a 100644 --- a/src/main/java/com/hbm/items/tool/WeaponSpecial.java +++ b/src/main/java/com/hbm/items/tool/WeaponSpecial.java @@ -12,6 +12,7 @@ import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorUtil; +import com.hbm.util.I18nUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -249,58 +250,52 @@ public class WeaponSpecial extends ItemSword { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.schrabidium_hammer) { - list.add("Even though it says \"+1000000000"); - list.add("damage\", it's actually \"onehit anything\""); + for(String s : I18nUtil.resolveKeyArray("item.schrabidium_hammer.desc")) + list.add(s); } if(this == ModItems.ullapool_caber) { - list.add("High-yield Scottish face removal."); - list.add("A sober person would throw it..."); + for(String s : I18nUtil.resolveKeyArray("item.ullapool_caber.desc")) + list.add(s); } if(this == ModItems.bottle_opener) { - list.add("My very own bottle opener."); - list.add("Use with caution!"); + for(String s : I18nUtil.resolveKeyArray("item.bottle_opener.desc")) + list.add(s); } if(this == ModItems.shimmer_sledge) { if(MainRegistry.polaroidID == 11) { - list.add("shimmer no"); - list.add("drop that hammer"); - list.add("you're going to hurt somebody"); - list.add("shimmer no"); - list.add("shimmer pls"); + for(String s : I18nUtil.resolveKeyArray("item.shimmer_sledge.desc.hide")) + list.add(s); } else { - list.add("Breaks everything, even portals."); + list.add(I18nUtil.resolveKey("item.shimmer_sledge.desc")); } } if(this == ModItems.shimmer_axe) { if(MainRegistry.polaroidID == 11) { - list.add("shim's toolbox does an e-x-p-a-n-d"); + list.add(I18nUtil.resolveKey("item.shimmer_axe.desc.hide")); } else { - list.add("Timber!"); + list.add(I18nUtil.resolveKey("item.shimmer_axe.desc")); } } if(this == ModItems.wrench) { - list.add("Mechanic Richard"); + list.add(I18nUtil.resolveKey("item.wrench.desc")); } if(this == ModItems.wrench_flipped) { - list.add("Wrench 2: The Wrenchening"); + list.add(I18nUtil.resolveKey("item.wrench_flipped.desc")); } if(this == ModItems.memespoon) { - list.add(EnumChatFormatting.DARK_GRAY + "Level 10 Shovel"); - list.add(EnumChatFormatting.AQUA + "Deals crits while the wielder is rocket jumping"); - list.add(EnumChatFormatting.RED + "20% slower firing speed"); - list.add(EnumChatFormatting.RED + "No random critical hits"); + for(String s : I18nUtil.resolveKeyArray("item.memespoon.desc")) + list.add(s); } if(this == ModItems.wood_gavel) { - list.add("Thunk!"); + list.add(I18nUtil.resolveKey("item.wood_gavel.desc")); } if(this == ModItems.lead_gavel) { - list.add("You are hereby sentenced to lead poisoning."); + list.add(I18nUtil.resolveKey("item.lead_gavel.desc")); } if(this == ModItems.diamond_gavel) { - list.add("The joke! It makes sense now!!"); - list.add(""); - list.add(EnumChatFormatting.BLUE + "Deals as much damage as it needs to."); + for(String s : I18nUtil.resolveKeyArray("item.diamond_gavel.desc")) + list.add(s); } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 7e3226470..dc43341b9 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -717,9 +717,8 @@ public class ModEventHandlerClient { } } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display protection info"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + I18nUtil.resolveKey("tooltip.show" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); } } @@ -733,13 +732,12 @@ public class ModEventHandlerClient { if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && !(Minecraft.getMinecraft().currentScreen instanceof GUIArmorTable)) { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + - EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + - EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display installed armor mods"); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + I18nUtil.resolveKey("tooltip.armormodsshow" , + EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT" )); } else { - list.add(EnumChatFormatting.YELLOW + "Mods:"); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("tooltip.armormods")); ItemStack[] mods = ArmorModHandler.pryMods(stack); @@ -760,12 +758,12 @@ public class ModEventHandlerClient { List names = ItemStackUtil.getOreDictNames(stack); if(names.size() > 0) { - list.add(EnumChatFormatting.BLUE + "Ore Dict:"); + list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("tooltip.oredict")); for(String s : names) { list.add(EnumChatFormatting.AQUA + " -" + s); } } else { - list.add(EnumChatFormatting.RED + "No Ore Dict data!"); + list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("tooltip.oredict.null")); } } @@ -786,10 +784,10 @@ public class ModEventHandlerClient { list.add(""); if(entry.entry == EnumEntryType.ADD) - list.add(EnumChatFormatting.GOLD + "Adds " + entry.value + " to the custom nuke stage " + entry.type); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("tooltip.customnuke",entry.value,entry.type)); if(entry.entry == EnumEntryType.MULT) - list.add(EnumChatFormatting.GOLD + "Adds multiplier " + entry.value + " to the custom nuke stage " + entry.type); + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("tooltip.customnukemultiplier",entry.value ,entry.type)); } try { diff --git a/src/main/java/com/hbm/util/function/Function.java b/src/main/java/com/hbm/util/function/Function.java index 9dd32272c..0e82a7f07 100644 --- a/src/main/java/com/hbm/util/function/Function.java +++ b/src/main/java/com/hbm/util/function/Function.java @@ -4,6 +4,7 @@ import java.util.Locale; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; /** @@ -50,21 +51,21 @@ public abstract class Function { public FunctionLogarithmic(double level) { super(level); this.withOff(1D); } @Override public double effonix(double x) { return Math.log10(getX(x)) * level; } @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format(Locale.US, "%,.1f", this.level); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[1]; } } public static class FunctionPassive extends FunctionSingleArg { public FunctionPassive(double level) { super(level); } @Override public double effonix(double x) { return this.level; } @Override public String getLabelForFuel() { return "" + String.format(Locale.US, "%,.1f", this.level); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[0]; } } public static class FunctionSqrt extends FunctionSingleArg { public FunctionSqrt(double level) { super(level); } @Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; } @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format(Locale.US, "%,.3f", this.level); } //not entirely correct but good enough - @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[5]; } } public static class FunctionSqrtFalling extends FunctionSqrt { @@ -78,7 +79,7 @@ public abstract class Function { public FunctionLinear(double level) { super(level); } @Override public double effonix(double x) { return getX(x) * this.level; } @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format(Locale.US, "%,.1f", this.level); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[6]; } } public static class FunctionQuadratic extends FunctionDoubleArg { @@ -86,6 +87,6 @@ public abstract class Function { public FunctionQuadratic(double level, double vOff) { super(level, vOff); } @Override public double effonix(double x) { return getX(x) * getX(x) * this.level + this.vOff; } @Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format(Locale.US, "%,.1f", this.level) + (vOff != 0 ? (" + " + String.format(Locale.US, "%,.1f", vOff)) : ""); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[7]; } } } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 696ebe517..9da4ffbd0 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -131,6 +131,7 @@ achievement.ZIRNOXBoom=CIRNOX armor.blastProtection=Damage modifier of %s against explosions armor.cap=Hard damage cap of %s +armor.charge=Charge: %s / %s armor.damageModifier=Damage modifier of %s against %s armor.dash=Grants %s dashes armor.electricJetpack=Ion Jetpack @@ -164,6 +165,42 @@ armorMod.chestplates=Chestplates armorMod.helmets=Helmets armorMod.insertHere=Insert armor to modify... armorMod.leggings=Leggings +armorMod.slot=Slot: +armorMod.mod.auto=Imported from Japsterdam. +armorMod.mod.bandaid=3%% chance for full heal when damaged$ (3%% chance for full heal) +armorMod.mod.bathwater=Inflicts poison on the attacker$ (Poisons attackers) +armorMod.mod.charm=You feel blessed. +armorMod.mod.charm.protection=Diverts meteors away from the player.$Meteors no longer destroy blocks.$Halves broadcaster damage +armorMod.mod.charm.meteor=Disables meteorite spawning.$Negates broadcaster damage +armorMod.mod.cladding= rad-resistance$ radiation resistence) +armorMod.mod.defuser=Defuses nearby creepers$ (Defuses creepers) +armorMod.mod.gasmask=Gas protection$Will never protect against:$ (gas protection) +armorMod.mod.health= health$Nostalgia +armorMod.mod.Ink=10%% chance to nullify damage$Flowers!$ (10%% chance to nullify damage) +armorMod.mod.Insert=%% damage$%% projectile damage$%% explosion damage$%% speed$HP +armorMod.mod.Iron=+0.5 knockback resistance$ (+0.5 knockback resistence) +armorMod.mod.Knife=Pain.$ $Hurts, doesn't it? +armorMod.mod.Lens=Satellite Frequency: $ (Freq: %%d) +armorMod.mod.Lodestone=Attracts nearby items$Item attraction range: %%d$ (Magnetic range: %%d) +armorMod.mod.Milk=Removes bad potion effects$ (Removes bad potion effects) +armorMod.mod.MorningGlory=5%% chance to apply resistance when hit, wither immunity$ (5%% for resistance, wither immunity) +armorMod.mod.Obsidian=Makes dropped armor indestructible$ (Item indestructible) +armorMod.mod.Pads=%% fall damage$Passively charges electric armor when walking$%% fall dmg / passive charge) +armorMod.mod.Polish=5%% chance to nullify damage$ (5%% chance to nullify damage) +armorMod.mod.Quartz=Taking damage removes 10 RAD$ (-10 RAD when hit) +armorMod.mod.Revive= revives left +armorMod.mod.Revive.scrumpy=But how did you survive?$I was drunk. +armorMod.mod.Revive.wild_p=§8Explosive §cReactive "§8Plot §cArmor +armorMod.mod.Revive.fabsols_vodka=In the news:$§c§lMan literally too angry to die.$ $§o"I ain't got time to die" says local$man after ripping the physical manifestation$of disaster itself in half. +armorMod.mod.Sensor=Beeps near hazardous gasses$Works in the inventory or when applied to armor$ (Detects gasses) +armorMod.mod.Serum=Cures poison and gives strength$ (replaces poison with strength) +armorMod.mod.Servos=Chestplate: Haste I / Damage +50%%$Leggings: Speed +25%% / Jump II$ (Haste I / Damage +50%%)$ (Speed +25%% / Jump II) +armorMod.mod.Servos.desh=Chestplate: Haste III / Damage +150%%$Leggings: Speed +50%% / Jump III$ (Haste III / Damage +150%%)$ (Speed +50%% / Jump III) +armorMod.mod.Shackles=You will speak when I ask you to.$You will eat when I tell you to.$You will die when I allow you to.$∞ revives left$ (∞ revives left) +armorMod.mod.Tesla=Zaps nearby entities (requires full electric set)$ (zaps nearby entities) +armorMod.mod.TwoKick="I've had worse"$ (Shotgun punches) +armorMod.mod.V1=BLOOD IS FUEL$ (BLOOD IS FUEL) +armorMod.mod.WD40=Highly reduces damage taken by armor, +2 HP$ (-80%% armor wear / +2 HP) armorMod.type.boots=Boots armorMod.type.chestplate=Chestplate armorMod.type.cladding=Cladding @@ -866,6 +903,7 @@ death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. death.attack.teleporter=%1$s was teleported into nothingness. +desc.block.blastinfo=Blast Resistance: %s desc.gui.assembler.warning=§cError:§r This machine requires an assembly template! desc.gui.chemplant.warning=§cError:§r This machine requires an chemistry template! desc.gui.gasCent.enrichment=§2Enrichment§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. @@ -980,6 +1018,7 @@ desc.item.battery.charge=Charge: %s / %sHE desc.item.battery.chargePerc=Charge: %s%% desc.item.battery.chargeRate=Charge rate: %sHE/tick desc.item.battery.dischargeRate=Discharge rate: %sHE/tick +desc.item.detonator=Position set!$No position set! desc.item.durability=Durability: %s desc.item.grenade.fuse=Fuse: %s desc.item.grenade.fuseImpact=Impact @@ -1022,6 +1061,20 @@ desc.misc.noPos=No position set! desc.misc.pos=Set pos to: %s, %s, %s desc.misc.posSet=Position set! desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum +desc.item.upgrade.machine=Mining Drill:§r$Laser Miner:$Electric Furnace:§r$Assembly Machine:§r$Chemical Plant:§r$Oil Wells:§r$Crystallizer:§r$Cyclotron:§r$Flare Stack:§r$Maxwell:§r$Turbofan:§r$Forcefield Range Upgrade§r$Forcefield Health Upgrade§r$Mining Laser Upgrade§r$Gas Centrifuge Upgrade§r$ +desc.item.upgrade.speed=Delay -%s%% / Consumption +%sHE/t$Delay ÷%s / Consumption +%sHE/t$Delay -%s%% / Consumption +%s%%$Speed x%s$Damage +%sdmg/t +desc.item.upgrade.effect=Radius +%sm / Consumption +%sHE/t$+%s%% chance of not consuming an item / Acid consumption +%smB$-%s%% chance of incrementing overheat counter$+%s%% power production$Range +%sm +desc.item.upgrade.power=Consumption -%sHE/t / Delay +%s%%$Consumption -%s%% / Delay +%s%%$Consumption -%skHE/t$Consumption -%sHE/t$Consumption when firing -%sHE/t +desc.item.upgrade.fortune=Fortune +%s / Delay +%s +desc.item.upgrade.afterburn=Production x%s / Consumption x%s$Afterburn +%ss$Burn %smB of gas for %sHE/t +desc.item.upgrade.forcefield=Radius +16 / Consumption +500$Max. Health +50 / Consumption +250$Stacks to 16 +desc.item.upgrade.smelter=Smelts blocks. Easy enough. +desc.item.upgrade.shredder=Crunches ores +desc.item.upgrade.centrifuge=Hopefully self-explanatory +desc.item.upgrade.crystallizer=Your new best friend +desc.item.upgrade.screm=It's like in Super Mario where all blocks are$actually Toads, but here it's Half-Life scientists$and they scream. A lot. +desc.item.upgrade.nullifier=50%% chance to override worthless items with /dev/zero$50%% chance to move worthless items to /dev/null +desc.item.upgrade.gc_speed=Allows for total isotopic separation of HEUF6$§ealso your centrifuge goes sicko mode desc.item.zirnoxBreedingRod=§2[ZIRNOX Breeding Rod]$§ePlace next to fuel rods to breed$§eLasts %d ticks desc.item.zirnoxRod=§a[ZIRNOX Fuel Rod]$§eGenerates %1$d heat per tick$§eLasts %2$d ticks @@ -1404,6 +1457,26 @@ hbmfluid.woodoil=Wood Oil hbmfluid.xenon=Xenon Gas hbmfluid.xpjuice=Experience Juice hbmfluid.xylene=BTX + +hbmfluid.Trait.Combustible=[Combustible]$Provides §c%sHE §6per bucket$Fuel grade: §c%s +hbmfluid.Trait.Combustible.FuelGrade=Low$Medium$High$Aviation$Gaseous +hbmfluid.Trait.Coolable=Thermal capacity: %s TU$Efficiency: %s%% +hbmfluid.Trait.Corrosive=[Strongly Corrosive]$[Corrosive] +hbmfluid.Trait.Flammable=[Flammable]$Provides §c%sTU §eper bucket +hbmfluid.Trait.Poison=[Toxic Fumes] +hbmfluid.Trait.PWRModerator=[PWR Flux Multiplier]$"Core flux %s%s%% +hbmfluid.Trait.Toxin=[Toxin] +hbmfluid.Trait.VentRadiation=[Radioactive] +hbmfluid.TraitSimple.Amat=[Antimatter] +hbmfluid.TraitSimple.Delicious=[Delicious] +hbmfluid.TraitSimple.Gaseous=[Gaseous] +hbmfluid.TraitSimple.Gaseous_ART=[Gaseous at Room Temperature] +hbmfluid.TraitSimple.LeadContainer=[Requires hazardous material tank to hold] +hbmfluid.TraitSimple.Leaded=[Leaded Fuel] +hbmfluid.TraitSimple.Liquid=[Liquid] +hbmfluid.TraitSimple.Plasma=[Plasma] +hbmfluid.TraitSimple.Viscous=[Viscous] + hbmpseudofluid.none=Empty hbmpseudofluid.heuf6=Highly Enriched UF6 hbmpseudofluid.meuf6=Medium Enriched UF6 @@ -1752,9 +1825,14 @@ item.ams_catalyst_strontium.name=Strontium Reaction Catalyst item.ams_catalyst_thorium.name=Thorium Reaction Catalyst item.ams_catalyst_tungsten.name=Tungsten Reaction Catalyst item.ams_core_eyeofharmony.name=Eye of Harmony (AMS/DFC Core) +item.ams_core_eyeofharmony.desc=A star collapsing in on itself, mere nanoseconds$away from being turned into a black hole,$frozen in time. If I didn't know better I$would say this is some deep space magic$bullcrap some guy made up to sound intellectual.$Probably Steve from accounting. You still owe me$ten bucks. item.ams_core_sing.name=Vibrant Singularity (AMS/DFC Core) +item.ams_core_sing.desc=A modified undefined state of spacetime$used to aid in inter-gluon fusion and$spacetime annihilation. Yes, this destroys$the universe itself, slowly but steadily,$but at least you can power your toaster with$this, so it's all good. item.ams_core_thingy.name=Thingy (AMS/DFC Core) +item.ams_core_thingy.desc=...$"...$...am I even holding this right?$It's a small metal thing. I dunno where it's from$or what it does, maybe they found it on a$junkyard and sold it as some kind of antique$artifact. If it weren't for the fact that I can$actually stuff this into some great big laser$reactor thing, I'd probably bring it back to where$it belongs. In the trash. +item.ams_core_thingy_hide.desc=Yeah I'm not even gonna question that one. item.ams_core_wormhole.name=Tiny Wormhole (AMS/DFC Core) +item.ams_core_wormhole.desc=A cloud of billions of nano-wormholes which$deliberately fail at tunneling matter from$another dimension, rather it converts all$that matter into pure energy. That means$you're actively contributing to the destruction$of another dimension, sucking it dry like a$juicebox.$That dimension probably sucked, anyways. I$bet it was full of wasps or some crap, man,$I hate these things. item.ams_focus_blank.name=Blank Stabilizer Focus item.ams_focus_booster.name=Boosting Stabilizer Focus item.ams_focus_booster.desc=Weaker restriction field and core energy injection:$More heat generation, extra energy. @@ -1966,6 +2044,7 @@ item.bottle_empty.name=Empty Bomb-Shaped Bottle item.bottle_mercury.name=Bottle of Mercury item.bottle_nuka.name=Bottle of Nuka Cola item.bottle_opener.name=Hbm's Own Self-Made Bottle Opener +item.bottle_opener.desc=My very own bottle opener.$Use with caution! item.bottle_quantum.name=Bottle of Nuka Cola Quantum item.bottle_rad.name=Bottle of S~Cola RAD item.bottle_sparkle.name=Bottle of S~Cola @@ -2120,6 +2199,7 @@ item.centrifuge_tower.name=Centrifuge Tower item.chainsaw.name=Chainsaw item.cheese.name=Cheese item.cheese_quesadilla.name=Cheese Quesadilla +item.cheese_quesadilla.desc=That's what a 50 year old yeast infection does to you. item.chemical_dye.black.name=Chemical Dye (Black) item.chemical_dye.blue.name=Chemical Dye (Blue) item.chemical_dye.brown.name=Chemical Dye (Brown) @@ -2362,6 +2442,7 @@ item.debris_graphite.name=Hot Graphite Chunk item.debris_metal.name=Broken Metal Bar item.debris_shrapnel.name=Walkway Shrapnel item.definitelyfood.name=TotallyNotDirt-Brand MRE +item.definitelyfood.desc=A'right, I got sick and tired of$having to go out, kill things just$to get food and not die, so here is $my absolutely genius solution:$ $Have some edible dirt. item.defuser.name=High-Tech Bomb Defusing Device item.defuser_gold.name=Golden Wire Cutter item.demon_core_closed.name=Closed Demon Core @@ -2376,12 +2457,15 @@ item.designator_arty_range.name=Long Range Artillery Remote item.designator_manual.name=Manual Target Designator item.designator_range.name=Long Range Target Designator item.detonator.name=Detonator +item.detonator.desc=Shift right-click to set position,$right-click to detonate! +item.detonator.pos.desc=No position set!$Linked to %s, %s, %s item.detonator_de.name=Dead Man's Explosive item.detonator_deadman.name=Dead Man's Detonator item.detonator_laser.name=Laser Detonator item.detonator_multi.name=Multi Detonator item.deuterium_filter.name=Deuterium Filter item.diamond_gavel.name=Diamond Gavel +item.diamond_gavel.desc=The joke! It makes sense now!!$ $§9Deals as much damage as it needs to. item.dieselsuit_boots.name=Diesel-Powered High Heels item.dieselsuit_helmet.name=Diesel-Powered Head-Mounted Environmental Sensor item.dieselsuit_legs.name=Diesel-Powered Leg Servos @@ -2565,6 +2649,8 @@ item.gem_volcanic.name=Volcanic Gem item.generator_front.name=Generator Front item.generator_steel.name=Generator Body item.glitch.name=Glitch +item.glitch.desc=It's a gamble!$Click-click-click!$Creek!$Bzzzt!$TS staring off into space.$BANG!!$Woop!$Poow!$Pft!$GF fgnevat bss vagb fcnpr.$Backup memory #8 on 1.44 million bytes.$PTANG!$Bzzt-zrrt!$Clang, click-brrthththrtrtrtrtrtr!$KABLAM!$PLENG!$Wheeeeeeee-$Thump.$BANG! Choo-chooo! B A N G ! ! ! +item.glitch.message=Sorry nothing.$Prometheus was punished by the gods by giving the gift of knowledge to man. He was cast into the bowels of the earth and pecked by birds.$Oh, and by the way: The polaroid shifts reality. Things can be different if the polaroid is broken.$Have some free stuff. You'll need it for that one cryptic achievement.$v yvxr lbhe nggvghqr!$89%% of magic tricks are not magic. Technically, they are sorcery.$Here ya go.$Ë$Good day, I am text$73616d706c652074657874!$Budget cuts, no effect for you.$oof$Tank!$More devastating than a falling boxcar!$Ha!$Watch your head!$Bam!$t's dangerous to go alone, take this! item.glowing_stew.name=Glowing Mushroom Stew item.glyphid_meat.name=Glyphid Meat item.glyphid_meat_grilled.name=Grilled Glyphid Meat @@ -2878,6 +2964,7 @@ item.ingot_schrabidium_fuel.name=Ingot of Schrabidium Fuel item.ingot_schraranium.name=Schraranium Ingot item.ingot_schraranium.desc=Made from uranium in a schrabidium transmutator item.ingot_semtex.name=Bar of Semtex +item.ingot_semtex.desc=Semtex H Plastic Explosive$Performant explosive for many applications.$Edible item.ingot_smore.name=S'more Ingot item.ingot_solinium.name=Solinium Ingot item.ingot_sr90.name=Strontium-90 Ingot @@ -2923,11 +3010,16 @@ item.iv_xp.name=Experience Bag item.iv_xp_empty.name=Empty Experience Bag item.jackt.name=Damn Stylish Ballistic Jacket item.jackt2.name=Damn Stylish Ballistic Jacket 2: Tokyo Drift +item.jetpack.desc=Can be worn on its own! item.jetpack_boost.name=Boostpack +item.jetpack_boost.desc=High-powered vectorized jetpack.$Highly increased fuel consumption. item.jetpack_break.name=Builder's Jetpack +item.jetpack_break.desc=Regular jetpack that will automatically hover mid-air.$Sneaking will stop hover mode.$Hover mode will consume less fuel and increase air-mobility. item.jetpack_fly.name=Jetpack +item.jetpack_fly.desc=Regular jetpack for simple upwards momentum. item.jetpack_tank.name=Jetpack Reserve Fuel Tank item.jetpack_vector.name=Vectored Jetpack +item.jetpack_vector.desc=High-mobility jetpack.$Higher fuel consumption. item.journal_bj.name=Whiskey Drenched Notebook item.journal_pip.name=Survivalist's Journal item.journal_silver.name=Contractor's Notes @@ -2949,7 +3041,9 @@ item.laser_crystal_digamma.name=Digamma Laser Crystal item.laser_crystal_dnt.desc=Dineutronium-Spark Fermion Supercrystal item.laser_crystal_dnt.name=Spark Laser Crystal item.lead_gavel.name=Leaden Gavel +item.lead_gavel.desc=You are hereby sentenced to lead poisoning. item.lemon.name="Lemon" +item.lemon.desc=Eh, good enough. item.letter.name=Express Mail item.levitation_unit.name=Gravity Manipulator item.lignite.name=Lignite @@ -2962,7 +3056,9 @@ item.liquidator_plate.name=Liquidator Suit Chestplate item.lithium.name=Lithium Cube item.lodestone.name=Lodestone item.loop_stew.name=IT Breakfast +item.loop_stew.desc=A very, very healthy breakfast. item.loops.name=Lööps +item.loops.desc=Brøther, may I have some lööps? item.loot_10.name=Size 10 Missile Loot Crate item.loot_15.name=Size 15 Missile Loot Crate item.loot_misc.name=General Missile Loot Crate @@ -2989,28 +3085,44 @@ item.mechanism_rifle_2.name=Advanced Rifle Mechanism item.mechanism_special.name=High-Tech Weapon Mechanism item.med_bag.name=Doctor's Bag item.med_ipecac.name=Ipecac Syrup +item.med_ipecac.desc=Bitter juice that will cause your stomach$to forcefully eject its contents. item.med_ptsd.name=PTSD Medication +item.med_ptsd.desc=This isn't even PTSD mediaction, it's just$Ipecac in a different bottle! item.med_schiziphrenia.name=Schizophrenia Medication +item.med_schiziphrenia.desc=Makes the voices go away. Just for a while.$ $...$Better not take it. item.medal_liquidator.name=Liquidator Medal item.meltdown_tool.name=Dyatlov Instant Meltdown Applicator item.memespoon.name=§eMarket Gardener +item.memespoon.desc=§8Level 10 Shovel$§bDeals crits while the wielder is rocket jumping$§c20%% slower firing speed$§cNo random critical hits item.memory.name=item.null.name item.mese_gavel.name=Mese Gavel item.mese_pickaxe.name=Mese Pickaxe item.meteor_charm.name=Meteor Charm item.meteor_remote.name=Meteorite Remote item.meteorite_sword.name=Meteorite Sword +item.meteorite_sword.desc=Forged from a fallen star$Sharper than most terrestrial blades item.meteorite_sword_seared.name=Meteorite Sword (Seared) +item.meteorite_sword_seared.desc=Fire strengthens the blade$Making it even more powerful item.meteorite_sword_reforged.name=Meteorite Sword (Reforged) +item.meteorite_sword_reforged.desc=The sword has been reforged$To rectify past imperfections item.meteorite_sword_hardened.name=Meteorite Sword (Hardened) +item.meteorite_sword_hardened.desc=Extremely high pressure has been used$To harden the blade further item.meteorite_sword_alloyed.name=Meteorite Sword (Alloyed) +item.meteorite_sword_alloyed.desc=Cobalt fills the fissures$Strengthening the sword item.meteorite_sword_machined.name=Meteorite Sword (Machined) +item.meteorite_sword_machined.desc=Advanced machinery was used$To refine the blade even more item.meteorite_sword_treated.name=Meteorite Sword (Treated) +item.meteorite_sword_treated.desc=Chemicals have been applied$Making the sword more powerful item.meteorite_sword_etched.name=Meteorite Sword (Etched) +item.meteorite_sword_etched.desc=Acids clean the material$To make this the perfect sword item.meteorite_sword_bred.name=Meteorite Sword (Bred) +item.meteorite_sword_bred.desc=Immense heat and radiation$Compress the material item.meteorite_sword_irradiated.name=Meteorite Sword (Irradiated) +item.meteorite_sword_irradiated.desc=The power of the Atom$Gives the sword might item.meteorite_sword_fused.name=Meteorite Sword (Fused) +item.meteorite_sword_fused.desc=This blade has met$With the forces of the stars item.meteorite_sword_baleful.name=Meteorite Sword (Baleful) +item.meteorite_sword_baleful.desc=This sword has met temperatures$Far beyond what normal material can endure item.mike_cooling_unit.name=Deuterium Cooling Unit item.mike_core.name=Uranium Coated Deuterium Tank item.mike_deut.name=Deuterium Tank @@ -3045,6 +3157,7 @@ item.missile_nuclear_cluster.name=Thermonuclear Missile item.missile_rain.name=Bomblet Rain item.missile_schrabidium.name=Schrabidium Missile item.missile_shuttle.name=Reliant Robin Space Shuttle +item.missile_shuttle.desc=Tonite, on bo''om gear:$James huffs leaded gasoline and$goes insane, Richard spends the$entire budget on a broken .PNG,$And I forget to set the infinite$Water tanks on our RBMK to flow$out, blowing up our entire base item.missile_skin_camo.name=Missile Skin: Camo item.missile_skin_color.desc=I can't find my missile anymore! item.missile_skin_desert.name=Missile Skin: Desert Camo @@ -3064,6 +3177,7 @@ item.missile_skin_soviet_glory.desc=уÑлуга перевода недоÑту item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it. item.missile_soyuz.name=Soyuz-FG +item.missile_soyuz.desc=Skin:$Original$Luna Space Center$Post War item.missile_soyuz_lander.name=Orbital Module item.missile_soyuz_lander.desc=Doubles as a crappy lander! item.missile_strong.name=Strong HE Missile @@ -3210,6 +3324,7 @@ item.multitool_miner.name=Power Fist (Extracting Mining Laser) item.multitool_silk.name=Power Fist (Silk Touch Claw) item.multitool_sky.name=Power Fist (Crack the Sky) item.mysteryshovel.name=Brittle Spade +item.mysteryshovel.desc=Lost but not forgotten item.n2_charge.name=Large Explosive Charge item.neutrino_lens.name=Neutrino Lens item.neutron_reflector.name=Neutron Reflector @@ -3393,6 +3508,7 @@ item.particle_strange.name=Strange Quark Capsule item.particle_tachyon.name=Tachyon Capsule item.parts_legendary.name=Legendary Parts item.peas.name=Peas +item.peas.desc=He accepts your offering. item.pedestal_steel.name=Steel Pedestal item.pellet_advanced.name=Advanced Watz Performance Improver item.pellet_antimatter.name=Antimatter Cluster @@ -3649,6 +3765,7 @@ item.primer_buckshot.name=Buckshot Primer (x12) item.protection_charm.name=Charm of Protection item.prototype_kit.name=Prototype Kit item.pudding.name=Pudding +item.pudding.desc=What if he did?$What if he didn't?$What if the world was made of pudding? item.pwr_fuel.bfb_am_mix.name=Fuel Grade Americium PWR BFB Rod item.pwr_fuel.bfb_pu241.name=Plutonium-241 PWR BFB Rod item.pwr_fuel.hea242.name=HEA-242 PWR Fuel Rod @@ -3702,6 +3819,7 @@ item.radaway_strong.name=Strong RadAway item.radx.name=Rad-X item.radx.desc=Increases radiation resistance by 0.2 (37%%) for 3 minutes item.rag.name=Cloth +item.rag.desc=Drop into water to make damp cloth.$Right-click to urinate on the cloth. item.rag_damp.name=Damp Cloth item.rag_piss.name=Piss-Soaked Rag item.rbmk_fuel_balefire.name=Balefire RBMK Fuel Rod @@ -4008,6 +4126,7 @@ item.schnitzel_vegan.name=Vegan Schnitzel item.schrabidium_axe.name=Schrabidium Axe item.schrabidium_boots.name=Schrabidium Boots item.schrabidium_hammer.name=Schrabidium Hammer +item.schrabidium_hammer.desc=Even though it says "+1000000000"$damage", it's actually "onehit anything" item.schrabidium_helmet.name=Schrabidium Helmet item.schrabidium_hoe.name=Schrabidium Hoe item.schrabidium_legs.name=Schrabidium Leggings @@ -4036,10 +4155,14 @@ item.servo_set.name=Servo Set item.servo_set_desh.name=Desh Servo Set item.shackles.name=Shackles item.shimmer_axe.name=Shimmer Axe +item.shimmer_axe.desc=Timber! +item.shimmer_axe.desc.hide=shim's toolbox does an e-x-p-a-n-d item.shimmer_axe_head.name=Heavy Axe Head item.shimmer_handle.name=Reinforced Polymer Handle item.shimmer_head.name=Heavy Hammer Head item.shimmer_sledge.name=Shimmer Sledge +item.shimmer_sledge.desc=Breaks everything, even portals. +item.shimmer_sledge.desc.hide=shimmer no$drop that hammer$you're going to hurt somebody$shimmer no$shimmer pls item.singularity.name=Singularity item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity item.singularity_micro.name=Micro Singularity @@ -4161,6 +4284,7 @@ item.tank_waste_7.name=Mud Container item.tank_waste_8.name=Mud Container item.telepad.name=Telepad item.tem_flakes.name=Tem Flakes +item.tem_flakes.desc=Heals 2HP DISCOUNT FOOD OF TEM!!!$Heals 2HP food of tem$Heals food of tem (expensiv) item.template_folder.name=Machine Template Folder item.template_folder.desc=Machine Templates: Paper + Dye$Fluid IDs: Iron Plate + Dye$Press Stamps: Flat Stamp$Siren Tracks: Insulator + Steel Plate item.test_nuke_igniter.name=Igniter @@ -4214,7 +4338,9 @@ item.turret_rocket_ammo.name=Rocket Turret 2x4 Ammunition item.turret_spitfire_ammo.name=AA-Shell item.turret_tau_ammo.name=Tau Turret Uranium Ammo item.twinkie.name=Twinkie +item.twinkie.desc=Expired 600 years ago! item.ullapool_caber.name=Ullapool Caber +item.ullapool_caber.desc=High-yield Scottish face removal.$A sober person would throw it... item.undefined.name=Undefined item.upgrade_5g.name=5G Radiation Emitter Upgrade item.upgrade_afterburn_1.name=Afterburner Upgrade Mk.I @@ -4255,8 +4381,14 @@ item.v1.name=V1 item.volcanic_pickaxe.name=Molten Pickaxe item.wand_d.name=Debug Wand item.wand_k.name=Construction Wand +item.wand_k.block=Block saved: %s +item.wand_k.desc=Creative-only item$"Destruction brings creation"$(Set positions with right click,$set block with shift-right click!) +item.wand_k.null=Positions not set! +item.wand_k.pos=Pos: %s, %s, %s item.wand_s.name=Structure Wand +item.wand_s.desc=Creative-only item$"Instant structures for everyone!"$(Cycle with shift-right click,$spawn structures with right click!) item.structure_custommachine.name=Custom Machine Structure Output Wand +item.structure_custommachine.desc=Click Custom Machine Structure Positioning Anchor to$Confirm the location of the custom machine core block.$Output all blocks between Position1 and Position2 with$metadata to \"CMstructureOutput.txt\" in hbmConfig. item.warhead_buster_large.name=Large Bunker Buster Warhead item.warhead_buster_medium.name=Medium Bunker Buster Warhead item.warhead_buster_small.name=Small Bunker Buster Warhead @@ -4339,9 +4471,12 @@ item.wire_schrabidium.name=Schrabidium Wire item.wire_tungsten.name=Tungsten Wire item.wiring_red_copper.name=Cable Drum item.wood_gavel.name=Wooden Gavel +item.wood_gavel.desc=Thunk! item.wrench.name=Pipe Wrench +item.wrench.desc=Mechanic Richard item.wrench_archineer.name=Archineer's Wrench item.wrench_flipped.name=Blade on a Wrench +item.wrench_flipped.desc=Wrench 2: The Wrenchening item.xanax.name=NAXA Anti-Digamma Medication item.xanax.desc=Removes 500mDRX item.zirconium_legs.name=Zirconium Pants @@ -4705,6 +4840,7 @@ tile.cm_tank.alloy.name=Advanced Alloy Tank tile.cm_tank.desh.name=Desh Tank tile.cm_tank.steel.name=Steel Tank tile.cm_tank.tcalloy.name=Technetium Steel Tank +tile.cm_paperPress.name=Paper Press tile.cmb_brick.name=CMB Steel Tile tile.cmb_brick_reinforced.name=Reinforced CMB Bricks tile.compact_launcher.name=Compact Launch Pad @@ -4958,6 +5094,7 @@ tile.gneiss_brick.name=Schist Brick tile.gneiss_chiseled.name=Chiseled Schist tile.gneiss_tile.name=Schist Tile tile.gravel_diamond.name=Diamond Gravel +tile.gravel_diamond.desc=There is some kind of joke here,$but I can't quite tell what it is.$ $Update, 2020-07-04:$We deny any implications of a joke on$the basis that it was so severely unfunny$that people started stabbing their eyes out.$$Update, 2020-17-04:$As it turns out, "Diamond Gravel" was$never really a thing, rendering what might$have been a joke as totally nonsensical.$We apologize for getting your hopes up with$this non-joke that hasn't been made.$$i added an item for a joke that isn't even here, what am i, stupid? can't even tell the difference between gravel and a gavel, how did i not forget how to breathe yet? tile.gravel_obsidian.name=Crushed Obsidian tile.hadron_access.name=Particle Accelerator Access Terminal tile.hadron_analysis.name=Particle Accelerator Analysis Chamber Wall @@ -5088,6 +5225,7 @@ tile.machine_excavator.name=Large Mining Drill tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU tile.machine_flare.name=Flare Stack +tile.machine_flare.desc=Can burn fluids and vent gasses$Burns up to §c10mB/t$Vents up to §c50mB/t$ $§eFuel efficiency:$§e-Flammable Gasses: §c50%%$§e-Flammable Liquids: §c10%% tile.machine_fluidtank.name=Tank tile.machine_forcefield.name=Forcefield Emitter tile.machine_fraction_tower.name=Fractioning Tower @@ -5179,6 +5317,7 @@ tile.machine_zirnox.name=ZIRNOX Nuclear Reactor tile.marker_structure.name=Multiblock Structure Marker tile.mass_storage.name=Mass Storage Unit tile.meteor_battery.name=Starmetal Static Electricity Generator +tile.meteor_battery.desc=Provides infinite charge to tesla coils tile.meteor_brick.name=Meteor Bricks tile.meteor_brick_chiseled.name=Chiseled Meteor Bricks tile.meteor_brick_cracked.name=Cracked Meteor Bricks @@ -5198,14 +5337,18 @@ tile.ntm_dirt.name=Dirt tile.nuke_boy.name=Little Boy tile.nuke_custom.name=Custom Nuke tile.nuke_fleija.name=F.L.E.I.J.A. +tile.nuke_fleija.desc=Used in:$F.L.E.I.J.A. tile.nuke_fstbmb.name=Balefire Bomb tile.nuke_gadget.name=The Gadget tile.nuke_man.name=Fat Man tile.nuke_mike.name=Ivy Mike tile.nuke_n2.name=N² Mine +tile.nuke_n2.desc=Used in:$N² Mine tile.nuke_n45.name=N45 Naval Mine tile.nuke_prototype.name=The Prototype +tile.nuke_prototype.desc=It didn't have to be like this.$ $You monster. tile.nuke_solinium.name=The Blue Rinse +tile.nuke_solinium.desc=Used in:$Solinium Bomb tile.nuke_tsar.name=Tsar Bomba tile.oil_duct.name=Oil Pipe tile.oil_duct_solid.name=Coated Oil Pipe @@ -5264,6 +5407,7 @@ tile.ore_nether_uranium.name=Nether Uranium Ore tile.ore_nether_uranium_scorched.name=Scorched Nether Uranium Ore tile.ore_niter.name=Niter Ore tile.ore_oil.name=Oil Deposit +tile.ore_oil.desc=You weren't supposed to mine that.$Come on, get a derrick you doofus. tile.ore_oil_empty.name=Empty Oil Deposit tile.ore_oil_sand.name=Tar Sand tile.ore_random.name=%s Ore @@ -5378,6 +5522,7 @@ tile.reactor_element.name=Reactor Chamber tile.reactor_hatch.name=Reactor Access Hatch tile.reactor_inserter.name=Reactor Fuel Inserter tile.red_barrel.name=Explosive Barrel +tile.red_barrel.desc=Static fluid barrel tile.red_cable.name=Red Copper Cable tile.red_cable_classic.name=Red Copper Cable (Classic) tile.red_cable_gauge.name=Power Gauge @@ -5385,7 +5530,9 @@ tile.red_cable_gauge.desc=Cable that displays how much power$moves within the ne tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole +tile.red_pylon.desc=Connection Type: §eSingle$Connection Range: §e25m tile.red_pylon_large.name=Large Electricity Pylon +tile.red_pylon_large.desc=Connection Type: §eQuadruple$Connection Range: §e100m$This pylon requires a substation! tile.red_wire_coated.name=Coated Red Copper Cable tile.reinforced_brick.name=Reinforced Stone tile.reinforced_brick_stairs.name=Reinforced Stone Stairs @@ -5470,6 +5617,7 @@ tile.struct_scaffold.name=Launch Pad Scaffold Block tile.struct_soyuz_core.name=Soyuz Launcher Core Component tile.struct_watz_core.name=Watz Powerplant Core Component tile.substation.name=Substation +tile.substation.desc=Connection Type: §eQuadruple$Connection Range: §e20m tile.sulfuric_acid_block.name=Sulfuric Acid tile.taint.name=Taint tile.taint_barrel.name=IMP Residue Barrel @@ -5560,6 +5708,10 @@ trait.hydro=Hydroreactive trait.radioactive=Radioactive trait.radResistance=Radiation resistance: %s +trait.platefuel=[Research Reactor Plate Fuel]$§3 %s$§3 Yield of %s events +trait.pwr_fuel=Heat per flux: §r%s TU$Reacton function: §r%s$Fuel type: §r%s + +trait.rbmk.BurnFunc=SAFE / PASSIVE$MEDIUM / LOGARITHMIC$SAFE / EULER$DANGEROUS / NEGATIVE-QUADRATIC$SAFE / SIGMOID$MEDIUM / SQUARE ROOT$DANGEROUS / LINEAR$DANGEROUS / QUADRATIC$EXPERIMENTAL / SINE SLOPE trait.rbmk.coreTemp=Core temp: %s trait.rbmk.depletion=Depletion: %s trait.rbmk.diffusion=Diffusion: %s @@ -5596,8 +5748,21 @@ trait.rbmx.xenon=Lead poison: %s trait.rbmx.xenonBurn=Lead destruction function: %s trait.rbmx.xenonGen=Lead creation function: %s +trait.rbmk_pellet=Pellet for recycling$Brand New$Barely Depleted$Moderately Depleted$Highly Depleted$Fully Depleted$High Xenon Poison +trait.watz_pellet=Depletion: %s%% +trait.watz_pellet.passive=Base fission rate: $Self-igniting! +trait.watz_pellet.heatEmission=Heat per flux: +trait.watz_pellet.burnFunc=Reacton function: $Fuel type: +trait.watz_pellet.heatDiv=Thermal multiplier: +trait.watz_pellet.absorbFunc=Flux capture: + trait.tile.cluster=Drops only when broken by a player trait.tile.depth=Can only be destroyed by explosions +trait.tile.barrel.capacity=Capacity: %smB +trait.tile.barrel.hot=Can store hot fluids$Cannot store hot fluids +trait.tile.barrel.corrosive=Can store highly corrosive fluids$Can store corrosive fluids$Cannot store highly corrosive fluids properly$Cannot store corrosive fluids properly$Cannot store corrosive fluids +trait.tile.barrel.antimatter=Can store antimatter$Cannot store antimatter +trait.tile.barrel.leak=Leaky tool.ability.centrifuge=Auto-Centrifuge tool.ability.crystallizer=Auto-Crystallizer @@ -5611,6 +5776,15 @@ tool.ability.shredder=Auto-Shredder tool.ability.silktouch=Silk Touch tool.ability.smelter=Auto-Smelter +tooltip.armormods=Mods: +tooltip.armormodsshow=Hold < %s §8§o> to display installed armor mods§r +tooltip.block=Hold < %s §8§o> to display more info§r +tooltip.customnuke=Adds %s to the custom nuke stage %s +tooltip.customnukemultiplier=Adds multiplier %s to the custom nuke stage %s +tooltip.oredict=Ore Dict: +tooltip.oredict.null=No Ore Dict data! +tooltip.show=Hold < %s §8§o> to display protection info§r + turret.animals=Target Passive: %s turret.arty.artillery=§eArtillery Mode$Grace: 250m$Range: 3,000m turret.arty.cannon=§eCannon Mode$Grace: 32m$Range: 250m diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 4bd5871e0..7610a1c62 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -52,13 +52,13 @@ achievement.fiend2=残å¿2:æ›´æ®‹å¿ achievement.fiend=æ®‹å¿ achievement.freytag.desc=英勇的救生员 achievement.freytag=弗雷塔格 -achievement.fusion.desc=æ°˜æ ¸ã€æµ·å«ä¸€ä¸Žèƒ½é‡çš„舞蹈。 -achievement.fusion=èšåˆ -achievement.gasCent.desc=è´«é“€è®¨åŽŒä»–ï¼ -achievement.gasCent=é“¾å¼ +achievement.fusion.desc=氘核, 氚核和能é‡ä¹‹èˆž. +achievement.fusion=热核èšå˜å应 +achievement.gasCent.desc=æœªæµ“ç¼©çš„é“€è®¨åŽŒä»–ï¼ +achievement.gasCent=æ‹‰é“¾å¼ achievement.goFish.desc=航海åå­—æž¶ achievement.goFish=去钓鱼 -achievement.hidden.desc=使用一节å è½çš„è½¦åŽ¢æ€æ­»ä¸€åªæ±¡æŸ“苦力怕 +achievement.hidden.desc=使用一节å è½çš„è½¦åŽ¢æ€æ­»ä¸€åªæ±¡æŸ“爬行者 achievement.hidden=éšè—目录 achievement.horizonsBonus.desc=说实è¯ï¼Œä½ åˆ°åº•怎么了 achievement.horizonsBonus=åœ°å¹³çº¿ï¼ @@ -72,14 +72,14 @@ achievement.inferno.desc=â€œæŠŠå®ƒå˜æˆç°çƒ¬ï¼è¿™è¿˜ä¸å¤Ÿï¼æŠ•更多的炸 achievement.inferno=食人行动 achievement.manhattan.desc=1945å¹´8月6æ—¥ 8:15 achievement.manhattan=曼哈顿计划 -achievement.meltdown.desc=你走了这么远,怎么能把事情æžç ¸ï¼Ÿ -achievement.meltdown=快速éžè®¡åˆ’æ‹†å¸ -achievement.no9.desc=“我希望我开采的铅能被用在你的油漆里†-achievement.no9=æ—§æ•°å­—9 -achievement.omega12.desc=è§£å†³åœ¨è¿™ä¸ªå¯æ€œçš„æ˜Ÿçƒä¸Šç»§ç»­ç”Ÿå­˜çš„问题 -achievement.omega12=欧米茄-12ç²’å­åŠ é€Ÿå™¨ -achievement.polymer.desc=美味ã€ç¾Žå‘³çš„微塑料。 -achievement.polymer=特氟隆 +achievement.meltdown.desc=你都走到了这一步,怎么还能把事情æžç ¸? +achievement.meltdown="快速"æ‹†å¸ +achievement.no9.desc="我希望我开采的铅能被用于你的绘画" +achievement.no9=è€ä¹å· +achievement.omega12.desc=解决在这个è’凉的的星çƒä¸Šç»§ç»­ç”Ÿå­˜çš„问题. +achievement.omega12=欧米伽-12å·ç²’å­åŠ é€Ÿå™¨ +achievement.polymer.desc=美味,美味的微塑料. +achievement.polymer=特氟隆 èšå››æ°Ÿä¹™çƒ¯ achievement.potato.desc=ä½ å±…ç„¶æ…æˆ‘ï¼ä½ æ€Žâ€”å–”å“¦å“¦å“¦å“¦å“¦ï¼ achievement.potato=æµæ°“AI achievement.radDeath.desc=居里夫人开创了放射性ç†è®ºã€æ”¾å°„性治疗和放射性死亡。。。。 @@ -124,30 +124,32 @@ achievement.watzBoom.desc=下次记得把毒泥浆容器清空 achievement.watzBoom=ä»¤äººåŽŒæ¶ achievement.watz.desc=å¯èƒ½åŒ…括Fólkvangr弗尔克范格场 achievement.watz=126å·å…ƒç´ çš„åŠ›é‡ -achievement.witchtaunter.desc=é‚£äº›å¤æ€ªçš„ç”Ÿç‰©å¯¹ä½ æ¯«æ— å…´è¶£ï¼ -achievement.witchtaunter=巫婆陶æ©ç‰¹ -achievement.ZIRNOXBoom.desc=处ç†, 看,满地是残骸碎片 -achievement.ZIRNOXBoom=锆诺克斯 -armor.blastProtection=修正 %s 的爆炸伤害 -armor.cap=ä¼¤å®³ä¸Šé™ %s -armor.damageModifier=修正 %s 对 %s 的伤害 -armor.dash=给予 %s 冲刺 -armor.electricJetpack=离å­å–·å°„背包 +achievement.witchtaunter.desc=那些怪胎什么都没å‘现! +achievement.witchtaunter=女巫陶æ©ç‰¹ +achievement.ZIRNOXBoom.desc=处ç†, é地都是, 残骸碎片 +achievement.ZIRNOXBoom=CIRNOX + +armor.blastProtection=åªå—%s的爆炸伤害 +armor.cap=ç¡¬ä¼¤ä¸Šé™ %s +armor.charge=电é‡: %s / %s +armor.damageModifier=åªå—%sçš„%s伤害 +armor.dash=æä¾› %s 次冲刺 +armor.electricJetpack=ç­‰ç¦»å­æŽ¨è¿›å™¨ armor.explosionImmune=å…疫除爆炸伤害外的一切伤害 armor.fasterReload=快速装填 armor.fastFall=快速é™è½ armor.fireproof=é˜²ç« -armor.fullSetBonus=全套效果: -armor.geigerHUD=ç›–é©è®¡æ•°å™¨HUD -armor.geigerSound=ç›–é©è®¡æ•°å™¨è­¦æŠ¥ -armor.glider=滑翔 -armor.gravity=é‡åŠ›ä¿®æ­£ %s -armor.hardLanding=硬ç€é™† -armor.ignoreLimit=防御值ä¸å—防御上é™çš„å½±å“ -armor.modifier=伤害修正 %s +armor.fullSetBonus=完整套装增益: +armor.geigerHUD=内置盖格计数器 +armor.geigerSound=å¬è§‰å¼ç›–é©è®¡æ•°å™¨ +armor.glider=按下潜行以滑翔 +armor.gravity=é‡åŠ›æ•ˆæžœè°ƒæ•´ä¸º%s +armor.hardLanding=å åœ°AOE伤害 +armor.ignoreLimit=防御值ä¸å—防御值上é™çš„å½±å“ +armor.modifier=åªå—%s的一般伤害 armor.moreAmmo=æ›´å¤šå¼¹è¯ -armor.nullDamage=å…ç–« %s 伤害 -armor.projectileProtection=å…ç–« %s 的弹射物伤害 +armor.nullDamage=å…疫所有的%s伤害 +armor.projectileProtection=åªå—%s的弹射物伤害 armor.rocketBoots=ç«ç®­é´ armor.sprintBoost=冲刺辅助加速 armor.stepSize=步长:%s @@ -162,8 +164,44 @@ armorMod.chestplates=胸甲 armorMod.helmets=头盔 armorMod.insertHere=æ’入装甲以改装。。。 armorMod.leggings=护腿 -armorMod.type.boots=é´å­ -armorMod.type.chestplate=胸甲 +armorMod.slot=æ§½ä½: +armorMod.mod.auto=从日本进å£. +armorMod.mod.bandaid=3%% 的几率让你å—到伤害时HP回满$ (3%% 的几率HP回满) +armorMod.mod.bathwater=使攻击者中毒$ (让攻击者中毒) +armorMod.mod.charm=你感å—到了ç¥ç¦. +armorMod.mod.charm.protection=使陨石å移以远离玩家.$陨石ä¸å†ç ´åæ–¹å—.$å°†è…化广播的伤害å‡åŠ +armorMod.mod.charm.meteor=ç¦æ­¢é™¨çŸ³ç”Ÿæˆ.$无视è…化广播的伤害 +armorMod.mod.cladding= è¾å°„抗性$ è¾å°„抗性) +armorMod.mod.defuser=拆除附近爬行者引信$ (拆除爬行者引信) +armorMod.mod.gasmask=有毒气体防护$ç»å¯¹ä¸ä¼šæä¾›çš„å±å®³é˜²æŠ¤:$ (有毒气体防护) +armorMod.mod.health= 生命值$怀旧 +armorMod.mod.Ink=10%% 的几率å…疫伤害$花朵的护佑!$ (10%% 的几率å…疫伤害) +armorMod.mod.Insert=%% 伤害$%% 弹射物伤害$%% 爆炸伤害$%% 移动速度$è€ä¹… +armorMod.mod.Iron=+0.5 抗击退性$ (+0.5 抗击退性) +armorMod.mod.Knife=痛苦.$ $很疼, 䏿˜¯å—? +armorMod.mod.Lens=嫿˜Ÿé¢‘é“: $ (频é“: %%d) +armorMod.mod.Lodestone=å¸å¼•附近的掉è½ç‰©$掉è½ç‰©å¸å¼•范围: %%d$ (ç£åŠ›èŒƒå›´: %%d) +armorMod.mod.Milk=ç§»é™¤è´Ÿé¢æ•ˆæžœ$ (ç§»é™¤è´Ÿé¢æ•ˆæžœ) +armorMod.mod.MorningGlory=5%% 的几率在被击中时得到抗性æå‡æ•ˆæžœ, å…疫凋零效果$ (5%% 的几率得到抗性æå‡æ•ˆæžœ, å…疫凋零效果) +armorMod.mod.Obsidian=使掉è½çš„盔甲åšä¸å¯æ‘§$ (使掉è½çš„盔甲åšä¸å¯æ‘§) +armorMod.mod.Pads=%% æ‘”è½ä¼¤å®³$行走时å¯ä¸ºç›”甲充电$%% æ‘”è½ä¼¤å®³ / 行走时å¯ä¸ºç›”甲充电) +armorMod.mod.Polish=5%% 的几率å…疫伤害$ (5%% 的几率å…疫伤害) +armorMod.mod.Quartz=æ¯å—一次å—到伤害将移除 10 RAD$ (æ¯å—一次å—到伤害将移除10 RAD) +armorMod.mod.Revive= æ¡é¢å¤–生命 +armorMod.mod.Revive.scrumpy=但,但你是怎么活下æ¥çš„?$我当时å–醉了. +armorMod.mod.Revive.wild_p=§8爆炸 §cå应 §8局部 §c装甲 +armorMod.mod.Revive.fabsols_vodka=æ–°é—»:$§c§l一男å­åœ¨æžåº¦æ„¤æ€’çš„æƒ…å†µä¸‹æ‹’ç»æ­»äº¡.$ $§o"我没这功夫去死" 该å当地$ç”·å­åœ¨æŠŠç¾éš¾æœ¬èº«åœ¨ç‰©ç†å±‚é¢ä¸Šçš„体现$æ’•æˆä¸¤åŠåŽå¦‚是说é“. +armorMod.mod.Sensor=有å±é™©æ°”体在附近时å‘出蜂鸣音$在背包中或装é…于装甲时工作$ (检测气体) +armorMod.mod.Serum=解除中毒效果并替æ¢ä¸ºåЛ釿•ˆæžœ$ (解除中毒效果并替æ¢ä¸ºåЛ釿•ˆæžœ) +armorMod.mod.Servos=装é…于胸甲时: 给予 急迫 I / 伤害 +50%%$装é…于护腿时: 移动速度 +25%% / 给予 跳跃æå‡ II$ (给予 急迫 I / 伤害 +50%%)$ (移动速度 +25%% / 给予 跳跃æå‡p II) +armorMod.mod.Servos.desh=装é…于胸甲时: 给予 急迫 III / 伤害 +150%%$装é…于护腿时: 移动速度d +50%% / 给予 跳跃æå‡ III$ (给予 急迫 III / 伤害e +150%%)$ (移动速度 +50%% / 给予 跳跃æå‡ III) +armorMod.mod.Shackles=æˆ‘è®©ä½ è¯´è¯æ—¶,ä½ æ‰èƒ½è¯´è¯.$æˆ‘è®©ä½ åƒæ—¶,ä½ æ‰èƒ½åƒ.$我让你死时,ä½ æ‰èƒ½æ­».$∞ æ¡é¢å¤–生命$ (∞ æ¡é¢å¤–生命) +armorMod.mod.Tesla=电击附近的生物 (需è¦å…¨å¥—电动套装)$ (电击附近的生物) +armorMod.mod.TwoKick="我还有更糟的"$ (Shotgun punches) +armorMod.mod.V1=é²œè¡€å³æ˜¯ç‡ƒæ–™$ (é²œè¡€å³æ˜¯ç‡ƒæ–™) +armorMod.mod.WD40=-80%%对盔甲的è€ä¹…æŸè€—度, +2 生命值$ (-80%% 对盔甲的è€ä¹…æŸè€—度 / +2 生命值) +armorMod.type.boots=é´å­é…ä»¶ +armorMod.type.chestplate=胸甲é…ä»¶ armorMod.type.cladding=覆层 armorMod.type.helmet=头盔 armorMod.type.insert=æ’æ¿ @@ -205,11 +243,12 @@ book.error.page5=§l错误类型:§r "错误_错误区段" §læè¿°:§r ç²’å­ book.error.title6=错误 0x06 [分æžå®¤è¿‡é•¿] book.error.page6=§l错误类型:§r "错误_分æžå®¤è¿‡é•¿" §læè¿°:§r ç²’å­å·²é€šè¿‡ä¸‰ä¸ªä»¥ä¸Šæ‰€éœ€çš„æœ‰æ•ˆåˆ†æžå®¤æ®µã€‚ §lä¿®å¤æ–¹å¼:§r ç¡®ä¿çŽ¯å½¢åŠ é€Ÿå™¨çš„åˆ†æžå®¤é•¿åº¦æ­£å¥½ä¸º3个方å—, 直线加速器的分æžå®¤é•¿åº¦è‡³å°‘为2个方å—。 è¿˜è¦æ£€æŸ¥ç²’å­æ˜¯å¦æœªé€šè¿‡åˆ†æ”¯æˆ– 环形加速器中的多个分æžå®¤ã€‚ book.error.title7=错误 0x07 [分æžå®¤è¿‡çŸ­] -book.error.page7=§l错误类型:§r "错误_分æžå®¤è¿‡çŸ­" §læè¿°:§r ç²’å­å·²ç¦»å¼€åˆ†æžå®¤ï¼Œå°½ç®¡ä¸ç¬¦åˆé•¿åº¦è¦æ±‚。 §lä¿®å¤æ–¹å¼:§r ç¡®ä¿çŽ¯å½¢åŠ é€Ÿå™¨ä¸Šçš„åˆ†æžå®¤æ­£å¥½æœ‰3个方å—长。 æœ‰æ•ˆçš„åˆ†æžæ®µæ²¡æœ‰çº¿åœˆï¼Œé•€å±‚完全由分æžå®¤å£/窗组æˆã€‚ 带有线圈的分æžå®¤è¢«è§†ä¸ºè§„则段。 -book.error.title8=错误 0x08 [二æžç®¡æ–¹å‘错误] -book.error.page8=§l错误类型:§r "错误_二æžç®¡æ–¹å‘错误" §læè¿°:§r 该粒å­ä¸Žè‚–特基粒å­äºŒæžç®¡çš„éžè¾“入侧碰撞。§lä¿®å¤æ–¹å¼:§r 检查二æžç®¡çš„é…ç½®æ˜¯å¦æ­£ç¡®ã€‚ ç²’å­åªèƒ½ä»Žå¸¦æœ‰ç»¿è‰²å‘内箭头的侧é¢è¿›å…¥äºŒæžç®¡ã€‚ -book.error.title9=错误 0x09 [多处分支] -book.error.page9=§l错误类型:§r "错误_多处分支" §læè¿°:§r ç²’å­åˆ°è¾¾å…·æœ‰å¤šä¸ªå‡ºå£çš„转弯处。§lä¿®å¤æ–¹å¼:§r 如果你的对撞机是正常的,检查所有需è¦çš„线圈是å¦éƒ½å­˜åœ¨ï¼ˆå³çº¿åœˆä¸­æ²¡æœ‰ç¼ºæ¼ï¼‰ã€‚å¦‚æžœè½¬å¼¯å¤„æ‰“ç®—è¿›è¡Œåˆ†æ”¯ï¼Œåˆ™éœ€è¦æ­£ç¡®æ”¾ç½®çš„肖特基粒å­äºŒæžç®¡ã€‚ +book.error.page7=§l错误åç§°:§r "错误_分æžå®¤è¿‡çŸ­" §l说明:§r ç²’å­ç¦»å¼€äº†åˆ†æžå®¤,尽管分æžå®¤ä¸ç¬¦åˆé•¿åº¦è¦æ±‚. §l解决方法:§r ç¡®ä¿çŽ¯åž‹åŠ é€Ÿå™¨ä¸Šçš„åˆ†æžå®¤æ­£å¥½æœ‰3格长. 有效的分æžå®¤éƒ¨åˆ†æ²¡æœ‰çº¿åœˆ, 镀层完全由分æžå®¤å£/窗组æˆ. 带有线圈的分æžå®¤ä¼šè¢«è§†ä¸ºæ™®é€šåŠ é€Ÿéƒ¨åˆ†. +book.error.title8=错误 0x08 [ç²’å­ä¸Žè‚–特基粒å­äºŒæžç®¡ç¢°æ’ž] +book.error.page8=§l错误åç§°:§r "错误_ç²’å­ä¸Žè‚–特基粒å­äºŒæžç®¡ç¢°æ’ž" §l说明:§r 该粒å­ä¸Žè‚–特基粒å­äºŒæžç®¡çš„éžè¾“入侧碰撞. §l解决方法:§r 检查二æžç®¡çš„æ–¹å‘é…ç½®æ˜¯å¦æ­£ç¡®. ç²’å­åªèƒ½ä»Žå¸¦æœ‰ç»¿è‰²å‘内箭头的侧é¢è¿›å…¥äºŒæžç®¡. +book.error.title9=错误 0x09 [转弯处分岔] +book.error.page9=§l错误åç§°:§r "错误_转弯处分岔" §l说明:§r ç²’å­å·²åˆ°è¾¾å…·æœ‰å¤šä¸ªå‡ºå£çš„转弯处. §l解决方法:§r 如果你的æ‹å¼¯å¤„是正常的, 检查所有需è¦çš„线圈是å¦éƒ½å­˜åœ¨(å³çº¿åœˆå±‚中没有孔). 如果转弯处打算进行分支, åˆ™éœ€è¦æ­£ç¡®é…置的肖特基粒å­äºŒæžç®¡. + book.rbmk.cover=$我的第一个$RBMK石墨å¼å应堆:$建造一个$å应堆$的基础知识 book.rbmk.title1=ä»‹ç» book.rbmk.page1=§lRBMK石墨å¼å应堆§r是一个完全模å—化的核å应堆. 与大多数其他å应堆ä¸åŒçš„æ˜¯, 该å应堆没有"多方å—结构核心"和尺寸上的é™åˆ¶, 而å应堆的性能和效率仅å–决于你是如何建造它的, 以åŠå„个组件如何相互作用. @@ -221,15 +260,15 @@ book.rbmk.title4=控制棒 book.rbmk.page4=å应堆中的 §l控制棒§r å°†å‡å°‘中å­é€šè¿‡å®ƒçš„æ•°é‡. 完全æ’入时, 它会阻挡所有中å­; 当æ’å…¥ä¸€åŠæ—¶, 它åªä¼šé˜»æŒ¡ä¸€åŠä¸­å­. 控制棒用于调节å应堆的活跃状æ€å’Œä½¿å…¶å…³é—­. book.rbmk.title5=控制棒 - 使用 book.rbmk.title5.scale=0.9 -book.rbmk.page5=å½“å‰æŽ§åˆ¶æ£’æ’入的程度将显示在GUI的中心. 边的彩色按钮将把控制棒添加到ä¸åŒçš„颜色组中, 这对于在 §lRBMK石墨å¼å应堆§r 控制å°ä¸Šå¿«é€Ÿé€‰æ‹©å±å¹•上ä¸åŒåŒºåŸŸçš„æŽ§åˆ¶æ£’éžå¸¸æœ‰ç”¨. å³ä¾§çš„æŒ‰é’®å…è®¸æ‚¨ä»¥æ¯æ¬¡25%çš„å¢žé‡æ‰‹åЍæ’å…¥. +book.rbmk.page5=å½“å‰æŽ§åˆ¶æ£’æ’入的程度将显示在GUI的中心. 边的彩色按钮将把控制棒添加到ä¸åŒçš„颜色组中, 这对于在 §lRBMK石墨å¼å应堆§r 控制å°ä¸Šå¿«é€Ÿé€‰æ‹©å±å¹•上ä¸åŒåŒºåŸŸçš„æŽ§åˆ¶æ£’éžå¸¸æœ‰ç”¨. å³ä¾§çš„æŒ‰é’®å…è®¸æ‚¨ä»¥æ¯æ¬¡25%%çš„å¢žé‡æ‰‹åЍæ’å…¥. book.rbmk.title6=自动控制棒 book.rbmk.page6=§L自动控制棒§r 与常规控制棒几乎相åŒ, 但它们ä¸èƒ½æ‰‹åŠ¨è°ƒæ•´, 而是根æ®å½“剿¸©åº¦æ¥è°ƒæ•´æŽ§åˆ¶æ£’æ’入的程度. 使用哪ç§åŠŸèƒ½, 在多少的温度æ’入多少的深度必须被事先设定好. book.rbmk.title7=è’¸æ±½ç®¡é“ book.rbmk.page7=å应堆中的 §l蒸汽管é“§r 是唯一能有效é™ä½Žå应堆热水平的组件. 如果一个蒸汽管é“组件的沸点高于其设定的蒸汽类型的沸点, 那么它将试图消耗尽å¯èƒ½å¤šçš„æ°´ 并产生尽å¯èƒ½å¤šçš„蒸汽æ¥å†·å´åˆ°æ²¸ç‚¹ä»¥ä¸‹. book.rbmk.title8=碳化钨中å­å射器 -book.rbmk.page8=å应堆中的 §l碳化钨中å­å射器§r 将阻止中å­çš„通过, 相å,中å­å°†è¢«å射回它们æ¥è‡ªçš„燃料棒上. è¿™å¯¹äºŽä½¿ç”¨ä¸­å­æ˜¯æœ‰ç”¨çš„, å¦åˆ™è¿™äº›ä¸­å­ä¸€æ—¦ç¦»å¼€å应堆就会被浪费掉. +book.rbmk.page8=å应堆中的 §l碳化钨中å­å射器§r 将阻止中å­çš„通过, 相å, 中å­å°†è¢«å射回它们æ¥è‡ªçš„燃料棒上. è¿™å¯¹äºŽä½¿ç”¨ä¸­å­æ˜¯æœ‰ç”¨çš„, å¦åˆ™è¿™äº›ä¸­å­ä¸€æ—¦ç¦»å¼€å应堆就会被浪费掉. book.rbmk.title9=硼中å­å¸æ”¶å™¨ -book.rbmk.page9=§l硼中å­å¸æ”¶å™¨Â§r åªæ˜¯é˜»æŒ¡ä¸­å­. è¢«å¸æ”¶çš„中å­ä¸ä¼šäº§ç”Ÿçƒ­é‡ï¼Œä¼šè¢«æœ‰æ•ˆåœ°å¸æ”¶. 这有助于防止燃料棒å‘生过度å应从而超出临界值. +book.rbmk.page9=§l硼中å­å¸æ”¶å™¨Â§r åªæ˜¯é˜»æŒ¡ä¸­å­. è¢«å¸æ”¶çš„中å­ä¸ä¼šäº§ç”Ÿçƒ­é‡, ä¼šè¢«æœ‰æ•ˆåœ°å¸æ”¶. 这有助于防止燃料棒å‘生过度å应从而超出临界值. book.rbmk.title10=石墨慢化剂 book.rbmk.page10=§l石墨慢化剂§r 把穿过它的快中å­è½¬æ¢æˆæ…¢ä¸­å­. 大多数核燃料å应释放出快中å­, 而引起裂å˜éœ€è¦æ…¢ä¸­å­, 所以强烈建议使用慢化剂. book.rbmk.title11=结构柱 @@ -237,180 +276,164 @@ book.rbmk.page11=§l结构柱§r 坹䏭孿²¡æœ‰ä»»ä½•å½±å“也没有任何特 book.rbmk.title12=æŽ§åˆ¶å° book.rbmk.page12=§lRBMK石墨å¼å应堆控制å°Â§r å…许你远程控制å应堆. 使用 §lRBMK石墨å¼å应堆连接装置记录å应堆§r ç„¶åŽæ½œè¡Œå³å‡»æŽ§åˆ¶å°å°±èƒ½æŠŠå应堆和控制å°è¿žæŽ¥èµ·æ¥. 一个控制å°åªèƒ½æŽ§åˆ¶15x15个组件, 对于大型å应堆å¯ä»¥ä½¿ç”¨å¤šä¸ªæŽ§åˆ¶å°. book.rbmk.title13=控制å°çš„使用 -book.rbmk.page13=å•击å±å¹•ä¸Šçš„ç»„ä»¶å°†é€‰æ‹©æˆ–å–æ¶ˆé€‰æ‹©å®ƒä»¬. 使用彩色按钮,å¯ä»¥å¿«é€Ÿé€‰æ‹©è¯¥é¢œè‰²ç»„中的所有控制棒. 按钮“Aâ€å°†é€‰æ‹©æ‰€æœ‰æŽ§åˆ¶æ£’, “Xâ€å°†å–消选择所有控制棒. +book.rbmk.page13=å•击å±å¹•ä¸Šçš„ç»„ä»¶å°†é€‰æ‹©æˆ–å–æ¶ˆé€‰æ‹©å®ƒä»¬. 使用彩色按钮, å¯ä»¥å¿«é€Ÿé€‰æ‹©è¯¥é¢œè‰²ç»„中的所有控制棒. 按钮“Aâ€å°†é€‰æ‹©æ‰€æœ‰æŽ§åˆ¶æ£’, “Xâ€å°†å–消选择所有控制棒. book.rbmk.page14=在绿色框中输入一个介于0å’Œ100之间的数字, ç„¶åŽæŒ‰ä¸‹æ—边的按钮, 将所有选定的控制棒拔出程度设置到该ä½ç½®. 按钮“AZ-5â€å°†ä½¿æ‰€æœ‰æŽ§åˆ¶æ£’完全æ’å…¥. book.rbmk.title15=核燃料 book.rbmk.page15= §l核燃料§r çš„å应å–决于许多因素. ä¸»è¦æ˜¯ §l核燃料强度§r, §l氙中毒程度§r 和接收到的 §l䏭孿•°é‡Â§r. 氙元素会在核燃料的中å­å«é‡è¾ƒä½Žæ—¶ç§¯èšèµ·æ¥, 并在正常è¿è¡Œæ—¶ç‡ƒçƒ§æ®†å°½. 中å­çš„æ•ˆçއå–决于其类型, 大多数核燃料 §l用慢中å­è½°å‡»æ¥è£‚å˜æ•ˆæžœæœ€å¥½Â§r. book.rbmk.title16=ç†”æ¯ book.rbmk.page16=§4§lå°½é‡é¿å…å‘生, ä½ ä¸ä¼šæƒ³è®©è¿™æ ·ä¸€åœºæ ¸ç¾éš¾å‘生在你的存档或æœåŠ¡å™¨é‡Œçš„. -book.starter.cover=é‡å»º$社会的实业家$æŒ‡å— + +book.starter.cover=é‡å»ºå·¥ä¸šç¤¾ä¼šçš„$一本实业家$çš„æŒ‡å— book.starter.title1=ä»‹ç» -book.starter.page1=如果你正在读这篇文章,很å¯èƒ½ç¤¾ä¼šå·²ç»å› è¿™æ ·æˆ– 那样的方å¼å®Œå…¨å´©æºƒäº†ã€‚政府ã€å›½å®¶å’Œæƒå¨æ˜¯è¿‡åŽ»çš„æ¦‚å¿µï¼Œ ä»¥åŠæ–‡æ˜Žç”Ÿæ´»çš„æ‰€æœ‰ä¾¿åˆ©è®¾æ–½ã€‚因此,本指å—å°† å‘Šè¯‰æ‚¨å¦‚ä½•é€šè¿‡é‡æ–°åˆ›é€ è¿‡åŽ»çš„è¡Œä¸šå’ŒæŠ€æœ¯ æ¥æ”¹å–„自己的生活,从而改å˜è¿™ç§çŠ¶å†µã€‚ -book.starter.title2=ç…¤å’ŒèŠ¥å­æ°” -book.starter.page2=虽然无法预测世界末日åŽçš„实际状æ€ï¼Œ 但目å‰å½¢å¼çš„æˆ˜äº‰å’Œå·¥ä¸šä¸å¤ªå¯èƒ½æ²¡æœ‰ç»“æŸã€‚ ä¸ºäº†ä¿æŠ¤è‡ªå·±çš„è‚ºéƒ¨ï¼Œä¸€ç§æœ‰æ•ˆä¸”廉价的方法是 在§L布§r上å°ä¾¿ï¼Œåˆ¶ä½œä¸€ä¸ªÂ§L防毒é¢å…·Â§r, 以使你å…å—ç…¤å°˜æˆ–èŠ¥å­æ°”的伤害. -book.starter.title3=é“砧和锻压机 -book.starter.page3=开始工业振兴的精髓是§l砧§r和§lç«åŠ›é”»åŽ‹æœºÂ§r. é“ç §å°†å…è®¸æ‚¨æ‰‹åŠ¨ç»„åˆæ—©æœŸæœºæ¢°ï¼Œå¦‚组装机, 而ç«åŠ›é”»åŽ‹æœºå°†å…许您制作 无法用é“ç §åˆ¶ä½œçš„æ¿æã€ç”µçº¿å’Œç”µè·¯. +book.starter.page1=如果你读到这篇文章, 那么很有å¯èƒ½ç¤¾ä¼šå·²ç»ä»¥è¿™æ ·æˆ–那样的方å¼å®Œå…¨å´©æºƒäº†. 政府,国家和æƒå¨å·²ç»æ˜¯è¿‡åŽ»çš„æ¦‚å¿µâ€”â€”ä»¥åŠæ–‡æ˜Žç”Ÿæ´» 的所有便利设施. å› æ­¤,本指å—å°†å‘Šè¯‰ä½ å¦‚ä½•é€šè¿‡é‡æ–°åˆ›é€ è¿‡åŽ»çš„è¡Œä¸šå’Œ 科学技术 æ¥æ”¹å–„你自己的生活. +book.starter.title2=ç…¤å°˜ä¸ŽèŠ¥å­æ°” +book.starter.page2=虽然ä¸å¯èƒ½é¢„测世界在åŽä¸–界末日时代的实际状æ€, 但目å‰å½¢å¼çš„æˆ˜äº‰å’Œå·¥ä¸šæ´»åЍä¸å¤ªå¯èƒ½æ²¡æœ‰ç»“æŸ. ä¸ºäº†ä¿æŠ¤è‡ªå·±çš„è‚ºéƒ¨, ä¸€ç§æœ‰æ•ˆä¸”廉价的方法是在一些 §l布料§r上å°ä¾¿æ¥åˆ¶ä½œä¸€ä¸ª §l战壕版粗制防护é¢ç½©Â§r, ä»¥ä¿æŠ¤ä½ å…å—ç…¤å°˜æˆ–èŠ¥å­æ°”的伤害, 以防你é‡åˆ°å…¶ä¸­ä»»ä½•ä¸€ç§æƒ…况. +book.starter.title3=砧与锻压机 +book.starter.page3=开始你的工业振兴的核心是一个§lEåˆå‰æœŸçš„æœºæ¢°, 如组装机, 而ç«åŠ›é”»åŽ‹æœºå°†å…è®¸æ‚¨åˆ¶ä½œæ— æ³•ç”¨ç §é”¤å‡»åœ¨ä¸€èµ·çš„æ¿æ, 金属线和电路. book.starter.title4=æ¨¡æ¿ -book.starter.page4=ä¸ºäº†å°†é‡‘å±žå†²åŽ‹æˆæœ‰ç”¨çš„ 形状ã€ç»„装机械和执行 化学å应,您需è¦åˆ›å»º 一个§Læœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹Â§r, 以创建å³ä¾§æ˜¾ç¤ºçš„ å„ç§é”»æ¨¡ä»¥åŠé…方。 -book.starter.title5=废墟探索 -book.starter.page5=æ ¹æ®æœ€åˆçš„世界末日事件对世界现有结构的影å“程度, 有å¯èƒ½ç›´æŽ¥ä»Žä¸­æŠ¢æ•‘å‡ºè®¸å¤šæœ‰ç”¨çš„ææ–™å’Œæœºå™¨ã€‚ é’¢é“等金属åˆé‡‘ã€ç”µè·¯ç­‰éƒ¨ä»¶ï¼Œç”šè‡³æ ¸ç”µç«™çš„ è£‚å˜ææ–™éƒ½å¯èƒ½åœ¨ç­‰ç€ä½ ã€‚ 然而,è¦å°å¿ƒæŸäº›åºŸå¢Ÿï¼Œå› ä¸ºé‚£é‡Œå¯èƒ½æ½œä¼ç€è¿‡åº¦çš„å±é™©ï¼Œ å°±åƒè‰ä¸›ä¸­çš„蛇一样; 等待ç€ç”¨è¾å°„ã€é™·é˜±æˆ–æ— æ³•å½¢å®¹çš„ææ€–袭击你... +book.starter.page4=ä¸ºäº†å°†é‡‘å±žå†²åŽ‹æˆæœ‰ç”¨çš„ 形状,ç»„è£…æˆæœºå™¨å¹¶è¿›è¡ŒåŒ– å­¦å应,您需è¦åˆ›å»ºä¸€ä¸ª §læœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹Â§ræ¥åˆ¶é€ å³ 侧显示的å„ç§å†²åŽ‹å’Œæ¨¡æ¿. +book.starter.title5=æ‹¾è’ +book.starter.page5=æ ¹æ®æœ€åˆçš„世界末日事件对世界现有建筑的破å程度, 你有å¯èƒ½ç›´æŽ¥ä»Žä¸­å›žæ”¶è®¸å¤šæœ‰ç”¨çš„ææ–™å’Œæœºå™¨. é’¢é“等金属åˆé‡‘, 电路等零件, 甚至核电站的å¯è£‚å˜ç‰©è´¨éƒ½å¯èƒ½åœ¨ç­‰ç€ä½ . 然而, è¦å°å¿ƒæŸäº›åºŸå¢Ÿ, 因为那里å¯èƒ½æ½œä¼ç€è¿‡åº¦çš„å±é™©, å°±åƒè‰ä¸›ä¸­çš„蛇一样; ç­‰ç€ç”¨è¾å°„, é™·é˜±æˆ–å…¶ä»–æ— æ³•å½¢å®¹çš„ææ€–袭击你... book.starter.title6=早期机械 -book.starter.page6a=您应首先装é…çš„ä¸¤å°æœºå™¨æ˜¯Â§l高炉§r和§lè£…é…æœºÂ§r. å‰è€…å…许您制造åˆé‡‘,如§L钢§rã€Â§l工业级铜§r和§l高级åˆé‡‘§rï¼› 你需è¦å°†è¿™äº›é‡‘属用于机器的机身〠电路的布线ã€é«˜çº§ç”µç£é“ç­‰. -book.starter.page6b=汇编程åºå°†ç”¨äºŽåˆ›å»ºæœ¬æŒ‡å—中æè¿°çš„几乎所有其他机器. 您需è¦ä¸€ä¸ªç”µæºï¼Œå¦‚§Lç«åŠ›Â§r§Lå‘电机§r或§L太阳能锅炉§r. -book.starter.page7a=§l粉碎机§r以åŠä¸€å¯¹ç²‰ç¢Žæœºåˆ€ç‰‡å°†ä¼šéžå¸¸æœ‰ç”¨ï¼Œ 能将大多数矿石粉碎æˆå¯ç†”ç‚¼çš„ç²‰æœ«ï¼Œä½¿å…¶äº§é‡æé«˜ä¸€å€. 这些粉末对于开始为å„ç§æœºå™¨åˆ¶ä½œç”µè·¯ä¹Ÿè‡³å…³é‡è¦ï¼Œ 例如§l增强电路§r和§l超频电路§r。 -book.starter.page7b=使用您的新机器,您å¯ä»¥åˆ›å»ºÂ§L化工厂§r, ç”¨äºŽåˆæˆæ›´å¥½çš„ç”µè·¯ã€æ··å‡åœŸæˆ–进行石化产å“加工等。 +book.starter.page6a=æ‚¨åº”è¯¥é¦–å…ˆç»„è£…çš„ä¸¤å°æœºå™¨æ˜¯Â§l高炉§r 和§lè£…é…æœºÂ§r. å‰è€…å°†å…许您制造åˆé‡‘, 如§l钢§r, §l紫铜§r, 和§l高级åˆé‡‘§r; 你需è¦å°†è¿™äº›é‡‘属用于机器的机身, 电路的布线, 先进的电ç£é“等等. +book.starter.page6b=è£…é…æœºå°†ç”¨äºŽåˆ¶é€ æœ¬æŒ‡å—中æè¿°çš„几乎所有其他机器. 您需è¦ä¸€ä¸ªç”µæº, 如§lç«åŠ›Â§r§lå‘电机§r或§l太阳能锅炉§r. +book.starter.page7a=§l粉碎机§r以åŠä¸€å¯¹ç²‰ç¢Žæœºåˆ€ç‰‡å°†éžå¸¸æœ‰ç”¨, å¯ä»¥é€šè¿‡ç²‰ç¢Žæˆå¯å†¶ç‚¼çš„粉末, å°†å¤§å¤šæ•°çŸ¿çŸ³çš„äº§é‡æé«˜ä¸€å€. è¿™äº›ç²‰æœ«å¯¹äºŽå¼€å§‹ä¸ºåˆæˆå„ç§æœºå™¨è€Œåˆ¶é€ çš„电路 也至关é‡è¦,例如§l增强§r和§l超频§r电路. +book.starter.page7b=使用您的新机器, 您å¯ä»¥ç»„装出§l化工装置§r, ç”¨äºŽåˆæˆæ›´å¥½çš„电路, æ··å‡åœŸ, 石化产å“ç­‰. book.starter.title8=黑金 -book.starter.page8a=使用§l石油§l储层§r§l探测仪§r, 您å¯ä»¥é€šè¿‡æµ‹é‡ä¸€ä¸ªåŒºåŸŸ æ¥å‘现地下的油岩以 放置§l石油钻机§r或 §l钻油塔§ræ¥å¼€é‡‡ è®°ä½,石油储备会éšç€æ—¶é—´ 的推移而耗尽 +book.starter.page8a=使用§l石油§l储层§r§l探测仪§r, 您å¯ä»¥é€šè¿‡æµ‹é‡ä¸€ä¸ªåŒºåŸŸ æ¥å‘现地下石油沉积物以 放置§læ¢å¼æŠ½æ²¹æœºÂ§r或 §l石油钻井塔§r. è®°ä½,石油储备会éšç€æ—¶é—´ 的推移而耗尽. book.starter.page8b=在§l炼油厂§r中æç‚¼å’Œåˆ†ç¦»çŸ³æ²¹ æˆåˆ†ä¹‹å‰,你必须在§l锅炉§r中将 石油加热至300°C. -book.starter.title9=çŸ³æ²¹åŒ–å·¥äº§å“ -book.starter.page9=使用§l化工厂§r, §l分é¦Â§r§l塔§r和§l催化裂化§r§l塔§r, ä½ å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“. §l催化裂化§r§l塔§r, å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“。 例如:§lèšåˆç‰©Â§r或§l电木§r, è€ç”¨åˆæŸ”性的塑料; §lDesh§r, 一ç§éžå¸¸è€ç”¨å’Œè€çƒ­çš„稀土金属åˆé‡‘; §l固体燃料§r, å¯ç‡ƒçƒ§èŽ·å–能é‡; 甚至是§l液体燃料§r, 比如§l汽油§r, §l柴油§r, §l煤油§r等等。 -book.starter.title10=先进的机械 -book.starter.page10=通过一套æˆç†Ÿçš„石油加工系统,您å¯ä»¥åˆ¶é€ Â§l离心机§r, 这将使矿石的产é‡å¢žåР䏉å€; §l矿物§l结晶机§rå°† 矿石结晶åŽ,产é‡å°†è¿›ä¸€æ­¥æé«˜; 以åŠÂ§lSILEXåŒä½ç´ æ¿€å…‰åˆ†ç¦»å®¤+§lFEL§r, 这两个现代工程的奇迹å¯ä»¥è½»æ¾åœ°åˆ†ç¦»ææ–™çš„åŒä½ç´ . ä½ éœ€è¦æ›´å¤šçš„èƒ½é‡æ¥é©±åŠ¨è¿™äº›; å¯é€šè¿‡Â§l柴油å‘电机§r,§l工业å‘电机§r, 甚至核ååº”å †ç­‰æ¥æºèŽ·å–æ›´å¤šçš„能é‡ã€‚ -book.starter.title11=特殊地层 -book.starter.page11=在你行走的地é¢ä¹‹ä¸‹ï¼Œæœ‰å‡ ä¸ª 自然形æˆçš„§l岩层§r,或者说特殊的 矿层和岩层。 §l片岩地层§r是è“色的å«é”‚层, 其中有铀ã€é“ã€é“œã€çŸ³æ£‰å’Œå…¶ä»–矿石 å¯ä¾›ä½ ä½¿ç”¨ã€‚ §læ·±æ¿å²©å±‚§r嫿œ‰å¤§é‡ç¨€æœ‰çŸ¿ç‰©, 如§l锆§rã€Â§l硼§r和§l朱砂§r等, 但你需è¦ç‚¸è¯æ‰èƒ½é‡‡é›† +book.starter.title9=石油化工 +book.starter.page9=使用§l化工厂§r, §l分é¦Â§r§l塔§r和§l催化裂化§r§l塔§r, ä½ å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“. §l催化裂化§r§l塔§r, å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“. 例如:§lèšåˆç‰©Â§r或§l电木§r, è€ç”¨åˆæŸ”性的塑料; §l德什§r, 一ç§éžå¸¸è€ç”¨å’Œè€çƒ­çš„稀土金属åˆé‡‘; §l固体燃料§r, å¯ç‡ƒçƒ§èŽ·å–能é‡; 甚至是§l液体燃料§r, 比如§l汽油§r, §l柴油§r, §l煤油§r等等. +book.starter.title10=高级机械 +book.starter.page10=通过一套æˆç†Ÿçš„石油加工系统,您å¯ä»¥åˆ¶é€ Â§l离心机§r, 这将使矿石的产é‡å¢žåР䏉å€; §l矿物§l结晶机§rå°† 矿石结晶åŽ,产é‡å°†è¿›ä¸€æ­¥æé«˜; 以åŠÂ§lSILEXåŒä½ç´ æ¿€å…‰åˆ†ç¦»å®¤+§lFEL§r, 这两个现代工程的奇迹å¯ä»¥è½»æ¾åœ°åˆ†ç¦»ææ–™çš„åŒä½ç´ . ä½ éœ€è¦æ›´å¤šçš„èƒ½é‡æ¥é©±åŠ¨è¿™äº›; å¯é€šè¿‡Â§l柴油å‘电机§r,§l工业å‘电机§r, 甚至核ååº”å †ç­‰æ¥æºèŽ·å–æ›´å¤šçš„能é‡. +book.starter.title11=特殊岩层 +book.starter.page11=在你行走的地é¢ä¹‹ä¸‹ï¼Œæœ‰å‡ ä¸ªè‡ª ç„¶å½¢æˆçš„§l岩层§r,或者说特殊的矿 层和岩层. §l片岩地层§r是è“色的å«é”‚层,填充 有铀,é“,铜,石棉和其他矿石å¯ä¾› 你自己使用. §læ·±æ¿å²©å±‚§r嫿œ‰å¤§é‡ç¨€æœ‰çŸ¿ç‰©, 如§l锆§r和§l硼§r,但 需è¦ç‚¸è¯æ‰èƒ½é‡‡é›†. book.starter.title12=è¾å°„ -book.starter.page12a=本书其余部分将讨论与è¾å°„有关的问题。 为了您和他人的安全,我将æä¾›ä¸€äº›å»ºè®®ä»¥è¯´æ˜Žå¦‚ä½•ç¼“è§£å’Œå¤„ç†æš´éœ²äºŽæ­¤çš„风险。 -book.starter.page12b=充分暴露在è¾å°„中会导致身体伤害. 第一步是预防; 一定è¦é™åˆ¶æŽ¥è§¦ï¼Œå¹¶ç©¿æˆ´é˜²æŠ¤è£…备,如§l防è¾å°„套装§r, æˆ–åœ¨è¡£æœæˆ–盔甲上加装§l防è¾å°„覆层/涂料§r; 你也å¯ä»¥æœç”¨Â§lRad-X防è¾å°„è¯Â§ræ¥é™åˆ¶ä½ çš„è¾å°„é‡. 多äºäº†çŽ°ä»£åŒ»å­¦ï¼Œç¬¬äºŒæ­¥å¯ä»¥åœ¨å¿…è¦æ—¶ç§»é™¤; 例如,§l玩家§l去污器§r将缓慢å‡å°‘èº«ä½“å¸æ”¶çš„è¾å°„. §l消è¾å®Â§r还å¯ä»¥ç”¨ä½œæš´éœ²åŽé¢„防,快速有效地逆转 电离è¾å°„对身体造æˆçš„æŸå®³ã€‚ +book.starter.page12a=§o本书其余部分将讨论与§oè¾å°„有关的问题. 为了您和其他人的安全,我将æä¾›Â§oä¸€äº›å»ºè®®ä»¥è¯´æ˜Žå¦‚ä½•ç¼“è§£å’Œå¤„ç†æš´éœ²äºŽæ­¤çš„风险.§r +book.starter.page12b=充分暴露在è¾å°„中会导致身体伤害. 第一步是预防; 一定è¦é™åˆ¶æŽ¥è§¦ï¼Œå¹¶ç©¿æˆ´é˜²æŠ¤è£…备,如§l防è¾å°„套装§r, æˆ–åœ¨è¡£æœæˆ–盔甲上加装§l防è¾å°„覆层/涂料§r; 你也å¯ä»¥æœç”¨Â§lRad-X防è¾å°„è¯Â§ræ¥é™åˆ¶ä½ çš„è¾å°„é‡. 多äºäº†çŽ°ä»£åŒ»å­¦ï¼Œç¬¬äºŒæ­¥å¯ä»¥åœ¨å¿…è¦æ—¶ç§»é™¤; 例如,§l玩家§l去污器§r将缓慢å‡å°‘èº«ä½“å¸æ”¶çš„è¾å°„. §l消è¾å®Â§r还å¯ä»¥ç”¨ä½œæš´éœ²åŽé¢„防,快速有效地逆转 电离è¾å°„对身体造æˆçš„æŸå®³. book.starter.title13=铀浓缩 -book.starter.page13=æ ¸å应堆的燃料有几个简å•的选择; 例如,§l天然铀§r或§lé’燃料§r。 然而, 如果你寻找更强力的东西,你å¯ä»¥è®¾ç½®ä¸¤å°Â§l气体离心机§r 的浓缩级è”,用剩余的§lé“€-238§r生产§l铀燃料§r. 你必须将天然铀转化为§l黄饼§rï¼Œç„¶åŽæ˜¯Â§l六氟化§l铀§r. +book.starter.page13=æ ¸å应堆的燃料有几个简å•的选择; 例如,§l天然铀§r或§lé’燃料§r. 然而, 如果你寻找更强力的东西,你å¯ä»¥è®¾ç½®ä¸¤å°Â§l气体离心机§r 的浓缩级è”,用剩余的§lé“€-238§r生产§l铀燃料§r. 你必须将天然铀转化为§l黄饼§rï¼Œç„¶åŽæ˜¯Â§l六氟化§l铀§r. book.starter.title14=èŠåŠ å“¥å应堆 -book.starter.page14=或者,您å¯ä»¥ä½¿ç”¨Â§lèŠåŠ å“¥å应堆§r从天然铀中增殖出 §lå应堆级钚§rï¼Œè¿™æ˜¯ä¸€ç§æ›´å¼ºå¤§çš„燃料. 通过堆å çŸ³å¢¨å—并在其中钻孔,您å¯ä»¥å°†ç‡ƒæ–™æ£’æ’入钚 å’Œä¸­å­æºæ£’,例如§lé•­226-é“䏭孿ºÂ§r,以开始å应. ç¡®ä¿æµ‹è¯•你的设计;为防止过热, å¯èƒ½éœ€è¦éš”开或é™åˆ¶çŸ³å¢¨å—的数é‡ã€‚ +book.starter.page14=或者,您å¯ä»¥ä½¿ç”¨Â§lèŠåŠ å“¥å应堆§r从天然铀中增殖出 §lå应堆级钚§rï¼Œè¿™æ˜¯ä¸€ç§æ›´å¼ºå¤§çš„燃料. 通过堆å çŸ³å¢¨å—并在其中钻孔,您å¯ä»¥å°†ç‡ƒæ–™æ£’æ’入钚 å’Œä¸­å­æºæ£’,例如§lé•­226-é“䏭孿ºÂ§r,以开始å应. ç¡®ä¿æµ‹è¯•你的设计;为防止过热, å¯èƒ½éœ€è¦éš”开或é™åˆ¶çŸ³å¢¨å—的数é‡. book.starter.title15=ZIRNOX锆诺克斯 -book.starter.page15=最终,你å¯ä»¥åˆ¶é€ ä½ çš„第一个§o真正§rçš„èƒ½æºæ¥æº: §lZIRNOX§ræ ¸å应堆. ä¸Žå…¶ä»–èƒ½é‡æºç›¸æ¯”,核ååº”å †éœ€è¦æ›´å¤šçš„准备; é¦–å…ˆï¼Œä½ éœ€è¦æœ‰ä¸€ä¸ªå¼ºæ‚的水æºï¼Œæ¯”如§lé‡åž‹Â§læ— é™æ°´ç½Â§r. è¦ä»Žå应堆堆芯中排出热é‡å¹¶å°†æ°´ç…®æ²¸æˆè’¸æ±½, 你需è¦è¶³å¤Ÿçš„§l二氧化碳§r. ä½ åªéœ€è¦è¶³å¤Ÿçš„压力, ä¸è¦è®©åŽ‹åŠ›Â§o太§r大! 你还需è¦ä¸‰ä¸ªè’¸æ±½æ¶¡è½®æœºæ¥åˆ©ç”¨äº§ç”Ÿçš„蒸汽æ¥åˆ¶é€ èƒ½é‡; §l蒸汽§l轮机§r或§l大型工业§l汽轮机§r将是最佳的. 最åŽï¼Œéœ€è¦ä¸€ä¸ªÂ§l冷å‡å™¨Â§r或§l冷å´å¡”§ræ¥å°†æ®‹ä½™è’¸æ±½å†·å‡æˆæ°´, 在这个冷å´å›žè·¯ä¸­å¯ä»¥å°†å…¶æŽ’空或回收。 +book.starter.page15=最终,你å¯ä»¥åˆ¶é€ ä½ çš„第一个§o真正§rçš„èƒ½æºæ¥æº: §lZIRNOX§ræ ¸å应堆. ä¸Žå…¶ä»–èƒ½é‡æºç›¸æ¯”,核ååº”å †éœ€è¦æ›´å¤šçš„准备; é¦–å…ˆï¼Œä½ éœ€è¦æœ‰ä¸€ä¸ªå¼ºæ‚的水æºï¼Œæ¯”如§lé‡åž‹Â§læ— é™æ°´ç½Â§r. è¦ä»Žå应堆堆芯中排出热é‡å¹¶å°†æ°´ç…®æ²¸æˆè’¸æ±½, 你需è¦è¶³å¤Ÿçš„§l二氧化碳§r. ä½ åªéœ€è¦è¶³å¤Ÿçš„压力, ä¸è¦è®©åŽ‹åŠ›Â§o太§r大! 你还需è¦ä¸‰ä¸ªè’¸æ±½æ¶¡è½®æœºæ¥åˆ©ç”¨äº§ç”Ÿçš„蒸汽æ¥åˆ¶é€ èƒ½é‡; §l蒸汽§l轮机§r或§l大型工业§l汽轮机§r将是最佳的. 最åŽï¼Œéœ€è¦ä¸€ä¸ªÂ§l冷å‡å™¨Â§r或§l冷å´å¡”§ræ¥å°†æ®‹ä½™è’¸æ±½å†·å‡æˆæ°´, 在这个冷å´å›žè·¯ä¸­å¯ä»¥å°†å…¶æŽ’空或回收. book.starter.title16=结论 book.starter.page16=如果你已ç»èµ°åˆ°äº†è¿™ä¸€æ­¥ï¼Œä½ å·²ç»èµ°åœ¨é‡å»ºæ–‡æ˜Žå¤§é“上了. ä½ å·²ç»æˆåŠŸåœ°ç”¨æ ¸èƒ½, çŸ³æ²¹åŒ–å·¥ç­‰é‡æ–°åˆ¶é€ äº†ä¸–界末日å‰çš„那些先进机器. 我ä¸çŸ¥é“你将如何利用这些新å‘现的科技, 但我个人希望你利用这些优势是为了自己和他人的利益 - 或者至少是为了自å«. å†è§! book.starter.title18=关于作者 -book.starter.page18=v?råªæ˜¯ä¸€ä¸ªè¢«å›°åœ¨"传声头åƒ"的§o《一生一次》§r中的 ç°è‰²è™šç©ºä¸­å¤ªä¹…的人. 有一次, ä»–å‘现了一扇工作室的门, 但令他沮丧的是, ä»–å‘现那是一个纸æ¿å‰ªå‡ºæ¥çš„ -#book.rbmk.cover=HOW 2 RBMK:$The Basics$of Reactor$Construction -#book.rbmk.title1=Introduction -#book.rbmk.page1=The §lRBMK§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. -#book.rbmk.title2=Heat -#book.rbmk.page2=As the reactor operates, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a §lsteam channel§r which cools the reactor and produces steam. -#book.rbmk.title3=Fuel Rod -#book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the §lfuel§r used. -#book.rbmk.title4=Control Rod -#book.rbmk.page4=The §lcontrol rod§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. -#book.rbmk.title5=Control Rod - Usage -#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the §lRBMK console§r. The buttons on the right allow for manual insertion in increments of 25%%. -#book.rbmk.title6=Automatic Control Rod -#book.rbmk.page6=§lAutomatic control rods§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. -#book.rbmk.title7=Steam Channel -#book.rbmk.page7=The §lsteam channel§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. -#book.rbmk.title8=Neutron Reflector -#book.rbmk.page8=The §lneutron reflector§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. -#book.rbmk.title9=Neutron Absorber -#book.rbmk.page9=The §lneutron absorber§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. -#book.rbmk.title10=Graphite Moderator -#book.rbmk.page10=The §lgraphite moderator§r will convert fast neutrons passing through it into slow neutrons. Most fuels fission into fast neutrons while needing slow neutrons to split, so using moderators is strongly recommended. -#book.rbmk.title11=Structural Column -#book.rbmk.page11=The §lstructural column§r will not interfere with neutrons, nor does it have special uses. It is recommended to fill the reactor with structural columns where no other parts will be, because structural columns are capable of transporting heat. -#book.rbmk.title12=Console -#book.rbmk.page12=The §lRBMK console§r lets you control the reactor from afar. Using the §lRBMK§r §lconsole linking device§r on an RBMK part and then the console will link the reactor to the console. The console can only manage 15x15 parts, for larger reactors you might want to use multiple consoles. -#book.rbmk.title13=Console Usage -#book.rbmk.page13=Clicking on the parts will select and deselect them. Using the colored buttons, you can quickly select all control rods of that color group. Button 'A' will select all control rods, 'X' will deselect all. -#book.rbmk.page14=Entering a number 0-100 in the green box and then hitting the button next to it will set all selected control rods to this position. Button 'AZ-5' will cause all control rods to fully insert. -#book.rbmk.title15=Fuel -#book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. -#book.rbmk.title16=Meltdown -#book.rbmk.page16=§4§lAvoid. -book_lore.author=ç”±%s +book.starter.page18=væråªæ˜¯ä¸€ä¸ªè¢«å›°åœ¨"传声头åƒ"的§o《一生一次》§r中的 ç°è‰²è™šç©ºä¸­å¤ªä¹…的人. 有一次, ä»–å‘现了一扇工作室的门, 但令他沮丧的是, ä»–å‘现那是一个纸æ¿å‰ªå‡ºæ¥çš„. + + +book_lore.author= %s è‘— book_lore.test.name=测试 book_lore.test.author=那个家伙 -book_lore.test.page.0=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual -book_lore.test.page.1=>你好,在我开始之å‰ï¼Œè®©æˆ‘æ¾„æ¸…æˆ‘ä¸æ˜¯åŒæ€§æ‹ã€‚>åšæˆ‘>今天晚上>18>和我最好的朋å‹å’Œæˆ‘的父æ¯å‡ºåŽ»çŽ©äº†å‡ å¤©>æˆ‘ä»¬å·²ç»æ˜¯æœ€å¥½çš„æœ‹å‹ä¸€å¹´äº†>å–äº†ç‚¹é…’ï¼ŒçŽ©äº†å¾ˆå¤šç”µå­æ¸¸æˆï¼Œè¿˜ç‚¹äº†ä¸€ä»½æŠ«è¨>我们玩得很开心>在晚上的æŸä¸ªæ—¶å€™ï¼Œæ¯”如9点左å³ï¼Œä»–开了一个éžå¸¸æœ‰è¶£çš„玩笑,我ä¸è®°å¾—了,但我知é“这让我们俩都笑得很厉害>æ²¡æœ‰æˆ‘æƒ³æˆ‘ç”¨å³æ‰‹æ‘¸äº†æ‘¸ä»–é‚£åŠå·æ›²çš„黑å‘,然åŽå«ä»–一个有趣的男孩>他脸红了>我æ„识到我很慌张>我们有点亲密>çªç„¶ä»–å»äº†æˆ‘,出于æŸç§åŽŸå› æˆ‘åˆå»äº†ä»–>我们åšçˆ±>拥抱在一起ç¡ç€äº†>åŠå¤œé†’æ¥æ—¶ï¼Œä»–的头贴在我的胸部和颈部>æ„Ÿè§‰å¾ˆå¥½ï¼Œä½†æˆ‘ä¸æ˜¯åŒæ€§æ‹ -book_lore.test.page.2=他在我怀里ç¡ç€æ—¶ï¼Œæˆ‘正在打字。我怎么æ‰èƒ½è®©æˆ‘最好的朋å‹å¤±æœ›å‘¢ï¼Ÿæˆ‘䏿ƒ³æˆä¸º[编辑]/b/ -book_lore.test.page.3=3 +book_lore.test.page.0=>在我开始之å‰,请å…许我 æ¾„æ¸…æˆ‘ä¸æ˜¯åŒæ€§æ‹. >åšæˆ‘ >今晚 >18点 >è¶æˆ‘的父æ¯èµ°äº†å‡ å¤©ï¼Œå’Œæˆ‘最好 的朋å‹ä¸€èµ·å‡ºåŽ»çŽ© >æˆ‘ä»¬å·²ç»æ˜¯ä¸€å¹´çš„好朋å‹äº† >å–äº†ç‚¹é…’ï¼ŒçŽ©äº†å¾ˆå¤šç”µå­æ¸¸æˆï¼Œ 还点了一个比è¨é¥¼ >我们玩得很开心 >在晚上的æŸä¸ªæ—¶åˆ»ï¼Œæ¯”如9点 å·¦å³ï¼Œä»–开了一个éžå¸¸æœ‰è¶£çš„ 玩笑,我ä¸è®°å¾—了, 但我知é“这让我们都笑得很开心 > 我ä¸å‡æ€ç´¢åœ°ç”¨å³æ‰‹ +book_lore.test.page.1=拂过他åŠå·æ›²çš„黑å‘, 说他真是一个有趣的男孩 >他脸红了 >我æ„识到我很慌乱 >我们有点太亲近了 >çªç„¶ä»–å»äº†æˆ‘,出于æŸç§åŽŸå›  我回å»äº†ä»– >我们åšçˆ±äº† >拥抱在一起ç¡ç€äº† >åŠå¤œé†’æ¥ï¼Œä»–的头紧贴在我的 胸å£å’Œè„–å­ä¸Š >这感觉很好, ä½†æˆ‘ä»æ˜¯ä¸ªé’¢é“ç›´ç”· +book_lore.test.page.2=我在他在我怀里ç¡ç€çš„æ—¶å€™ 写了这个. 我怎么能让我最好的 朋å‹å¤±æœ›å‘¢? 我å¯ä¸æƒ³æˆä¸ºä¸€ä¸ª [弱智] /b/ +book_lore.test.page.3=4 book_lore.test.page.4=4 + book_lore.book_iodine.name=笔记 book_lore.book_iodine.author=戴夫 -book_lore.book_iodine.page.0=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: -book_lore.book_iodine.page.1=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: -book_lore.book_iodine.page.2=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious. +book_lore.book_iodine.page.0=好å§ï¼Œä½ ä¸ä¼šç›¸ä¿¡çš„, 但自从两周å‰ç¦»å¼€åŽï¼Œè¿™ä½è€äººç»ˆäºŽå†æ¬¡å‡ºçŽ°äº†ã€‚æ›´ä»¤äººæƒŠè®¶çš„æ˜¯ï¼Œä»–ç«Ÿç„¶å†³å®šæŠŠä»–ä»¬åœ¨å³¡è°·é‡Œçš„æ‰€ä½œæ‰€ä¸ºæ³„éœ²å‡ºåŽ»: +book_lore.book_iodine.page.1=显然,研å‘部门的白痴们å‘现了一ç§ä¸»è¦æ˜¯æ— æœºçš„化åˆç‰©, 很åƒè‡ªç„¶ç•Œä¸­çš„æ¯’ç´ , 但è¦è®°ä½ï¼šæ¿’æ­»çš„ç»†èƒžä¼šç¹æ®–毒素并通过皮肤排出, 产生一ç§å…·æœ‰é«˜åº¦ä¼ æŸ“性的气溶胶. +book_lore.book_iodine.page.2=å°±åƒç—…毒一样, 但䏿˜¯ç—…毒. 它的æˆåˆ†å¾ˆå¥‡æ€ª, ä½ å¯ä»¥æŠŠå®ƒæ”¾åœ¨ä»»ä½•家用瓶å­é‡Œï¼Œä½†ä½ å¿…须把顺åºå¼„对. åšå£«å‘Šè¯‰æˆ‘ç¬¬ä¸€ç§æˆåˆ†æ˜¯ç²‰æœ«çŠ¶çš„ç¢˜æ™¶ä½“ï¼Œè¦æ”¾è¿›æ§½ %d + book_lore.book_phosphorous.name=笔记 book_lore.book_phosphorous.author=戴夫 -book_lore.book_phosphorous.page.0=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second -book_lore.book_phosphorous.page.1=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second +book_lore.book_phosphorous.page.0=å˜¿ï¼Œåˆæ˜¯æˆ‘. 我想你收到了我最åŽçš„备忘录,åšå£«å¯¹æ­¤ä¸å¤ªé«˜å…´. 我得动作快点, ç ”å‘部门的笨蛋们现在åˆåœ¨æŠ±æ€¨äº†, å¯èƒ½æ˜¯å› ä¸ºé’±, åˆä¸€æ¬¡. 无论如何, é£Žå‘æ ‡åšå£«å‘çŽ°ç¬¬äºŒç§ +book_lore.book_phosphorous.page.1=æˆåˆ†æ˜¯çº¢ç£·, 必须将其混入 %d槽中 + book_lore.book_dust.name=笔记 book_lore.book_dust.author=戴夫 -book_lore.book_dust.page.0=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not -book_lore.book_dust.page.1=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not -book_lore.book_dust.page.2=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most +book_lore.book_dust.page.0=当åšå£«å‘现研å‘人员ä¿ç•™äº†å‰©ä¸‹çš„一个样本时,他大å‘雷霆, 大喊大å«è¯´è¿™æ˜¯ä¸¥é‡çš„ç–忽,简直是世界末日的剧本. 我告诉他冷é™ä¸€åˆ†é’Ÿ, ç´§å¼ èµ·æ¥å¯¹ä»–的血压没有好处, å¹¶ +book_lore.book_dust.page.1=䏿˜¯è¯´ä»–还剩下很多血. 一个研å‘部的白痴在上周的通告中é€éœ²äº†æ›´å¤šä¿¡æ¯, 他们称他们那å®è´æ··åˆç‰© \"MKU\" ,鬼知é“è¿™æ˜¯å•¥æ„æ€, å®ƒå«æœ‰è´§çœŸä»·å®žçš„家用棉绒. 你能相信å—? 这是他们 +book_lore.book_dust.page.2=最å±é™©çš„呿˜Žä¹‹ä¸€è€Œå®ƒå«æœ‰ç°å°˜. 奇怪的是,他们还æåˆ°å®ƒä¼šè¿›å…¥æ§½ %d + book_lore.book_mercury.name=笔记 book_lore.book_mercury.author=戴夫 -book_lore.book_mercury.page.0=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being -book_lore.book_mercury.page.1=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being +book_lore.book_mercury.page.0=好å§ï¼Œè¿™å°±è¯´å¾—通了. ä¸åŒ…括呕å的血液部分, 毒ç†å­¦æŠ¥å‘Šè¡¨æ˜Žå…¶ä¸»è¦ç±»ä¼¼äºŽæ±žä¸­æ¯’. 为什么? å› ä¸ºæˆ‘ä»¬çš„å°æ··åˆç‰©ä¹Ÿå«æœ‰æ±ž! æˆ‘åªæ˜¯æƒ³çŸ¥é“当这些东西 +book_lore.book_mercury.page.1=被身体å¤åˆ¶æ—¶ï¼Œå®ƒä»¬ä»Žå“ªæ¥? ä¸ç®¡æ€Žæ ·ï¼Œæ°´é“¶è¦è¿›å…¥æ§½ %d + book_lore.book_flower.name=笔记 book_lore.book_flower.author=戴夫 -book_lore.book_flower.page.0=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, -book_lore.book_flower.page.1=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, +book_lore.book_flower.page.0=还记得我在第一份备忘录中æåˆ°çš„化åˆç‰©å¤§å¤šæ˜¯æ— æœºçš„å—? 好å§ï¼Œä½ çŒœæ€Žä¹ˆç€, 那个è€å®¶ä¼™åˆ†äº«äº†ç¬¬å››ç§é…æ–™: 牵牛花, 花的一属. 就是喇å­èб! å¯èƒ½æ˜¯å› ä¸ºå®ƒçš„ç¡«å«é‡ä½Ž, ä¸ç®¡æ˜¯ä»€ä¹ˆæƒ…况, +book_lore.book_flower.page.1=其他花就是ä¸èµ·ä½œç”¨. ç‰µç‰›èŠ±è¦æ”¾å…¥æ§½ %d + book_lore.book_syringe.name=笔记 book_lore.book_syringe.author=戴夫 -book_lore.book_syringe.page.0=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal -book_lore.book_syringe.page.1=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal +book_lore.book_syringe.page.0=我第五æ¡ç•™è¨€çš„一个å°é™„录, 显然你必须把这些å«MKU的东西放在一个容器里. ç ”å‘人员使用的是从医疗机构购买的普通金属注射器. 我猜是多余的, 他们有æˆåƒä¸Šä¸‡çš„针头. +book_lore.book_syringe.page.1=é‡‘å±žæ³¨å°„å™¨è¦æ”¾å…¥æ§½ %d + book_lore.resignation_note.name=辞èŒä¿¡ book_lore.resignation_note.author=科斯马 -book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and -book_lore.resignation_note.page.1=管ç†å±‚昨天åˆå¯¹æˆ‘们的部门进行è£å‘˜äº†ã€‚é‚£ç¾¤ç™½ç—´è¦æ€ªåªèƒ½æ€ªä»–们自己,我都ä¸çŸ¥é“他们在那场惨败åŽè¿˜åœ¨æœŸå¾…什么。到底是è°ä»–妈泄露了那ç§ç¨‹åº¦çš„ä¿¡æ¯ï¼Ÿ -book_lore.resignation_note.page.2=我们æŸå¤±äº†å‡ ç™¾ä¸‡ï¼Œè€Œä¸”现在失业的还是爷。è€å­å¸Œæœ›ä½ ä»¬è¿™å¸®æ··è›‹æœ€åŽèƒ½ä»Žä½ ä»¬çš„一堆问题中学到点教训然åŽç»™çˆ·æ»šåŽ»è‡ªé—­ã€‚ -book_lore.memo_stocks.name=å…¬å¸å†…部备忘录 -book_lore.memo_stocks.page.0=投资者关系 - $ $ 最新季度报告æä¾›çš„æ•°æ®å­˜åœ¨ä¸€äº›æ˜Žæ˜¾å·®å¼‚。财务部门åšå‡ºä¸€äº›è°ƒæ•´æ˜¯è°¨æ…Žçš„,所以ä¸å¿…有任何担忧。 +book_lore.resignation_note.page.0=管ç†å±‚昨天åˆç¼©å‡äº†æˆ‘们的 部门.那帮白痴åªèƒ½æ€ªè‡ªå·±, 我ä¸çŸ¥é“ä»–ä»¬åœ¨é‚£åœºæƒ¨è´¥åŽ è¿˜åœ¨æœŸå¾…ä»€ä¹ˆ. åˆ°åº•æ˜¯è°æ³„露了这ç§ä¿¡æ¯? 我们æŸå¤±äº†æ•°ç™¾ä¸‡ +book_lore.resignation_note.page.1=现在è€å­å¤±ä¸šäº†. æˆ‘æ˜¯é‚£ä¸ªè¢«è¦æ±‚辞èŒçš„人. 我希望你们这帮混蛋们终于 从自己的错误中å¸å–点教训, 把那根æ£å­ä»Žå±è‚¡é‡Œæ‹¿å‡ºæ¥. +book_lore.resignation_note.page.2=我星期五ä¸ä¼šå›žæ¥çš„. å‘工资就行了. + +book_lore.memo_stocks.name=内部备忘录 +book_lore.memo_stocks.page.0=投资者关系部 - $ $ 最新季度报告中æä¾›çš„æ•°æ® 存在一些明显的差异. 让财务部门进行一些调整是 è°¨æ…Žçš„åšæ³•, 所以ä¸ç”¨æœ‰ä»»ä½•顾虑. + book_lore.memo_schrab_gsa.name=内部备忘录 -book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum -book_lore.memo_schrab_gsa.page.1=åˆåŒç®¡ç†è®°å½• - 法务部在与美国国防部åŽå‹¤å±€çš„谈判中å–得了çªç ´ã€‚他们批准了450亿的è”邦采购æœåŠ¡æ€»ç½²æŠ•èµ„èµ„é‡‘ç”¨äºŽå¼‚å˜é‡‘属的采购与研究。 +book_lore.memo_schrab_gsa.page.0=åˆåŒç®¡ç†éƒ¨ - $ $ 法律部与DLAå–得了çªç ´. 他们授予我们450亿GSA计划, 用于进一步采购和研究saralloy. æ ¹æ®ç›®å‰çš„估计 +book_lore.memo_schrab_gsa.page.1=相关业务的利润至少为 40%%, æ›´ä¸ç”¨è¯´æœªæ¥åˆåŒçš„å¯èƒ½æ€§äº†. 由于ä¿å¯†æ€§è´¨ï¼Œæ‰€æœ‰è´¢åŠ¡è¯æ® 都应ä¿å¯†. + book_lore.memo_schrab_rd.name=内部备忘录 -book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. -book_lore.memo_schrab_rd.page.1=ç ”å‘ - ç›®å‰æˆ‘们主è¦ç”Ÿäº§æ–¹æ³•是使用新型粒å­åŠ é€Ÿå™¨ã€‚ç„¶è€Œï¼Œä¸Žäº§å‡ºé‡ç›¸æ¯”ï¼Œèƒ½æºæˆæœ¬é«˜å¾—惊人。 -book_lore.memo_schrab_rd.page.2=然而,Schrabaueråšå£«å‘现了一ç§å…¨æ–°çš„ç›¸äº’ä½œç”¨â€”â€”æš‚ç§°ä¸ºâ€œå¥‡å¼‚è½»å­æŒ¯è¡â€â€”—该作用å¯ä»¥æ˜¾è‘—é™ä½Žç”Ÿäº§æˆæœ¬ã€‚é€šè¿‡ä¸€ä¸ªç›®å‰æœªè¢«å®Œå…¨ç†è§£çš„的过程,æä¾›çš„电å­è¢«ä¸€ç§å¥‡ç‰¹çš„“魔力â€è½¬åŒ–为æžé«˜èƒ½é‡çš„å…‰å­ã€‚ -book_lore.memo_schrab_rd.page.3=这是许多已明确的粒å­è½¬æ¢å®šå¾‹çš„æžç«¯ä¾‹å¤–ã€‚ä½†åˆæ­¥å®žéªŒè¯æ˜Žï¼Œè¿™äº›è´¨å­å…ˆè½¬å˜ä¸ºä¸Šä¸‹å¤¸å…‹ï¼Œæœ€ç»ˆå½¢æˆäº†å¼‚å˜é‡‘属。奇怪的是,原型机中需è¦é’¨ä¸Žå°‘é‡å¼‚å˜é‡‘属åˆé‡‘化所得到的åˆé‡‘。 +book_lore.memo_schrab_rd.page.0=研究与开å‘部 - $ $ 我们生产saralloyçš„ä¸»è¦æ–¹æ³•是 使用新型粒å­åŠ é€Ÿå™¨. 然而, 与产é‡ç›¸æ¯”ï¼Œèƒ½æºæˆæœ¬è¿‡é«˜. +book_lore.memo_schrab_rd.page.1=然而,Schrabaueråšå£«å‘现 äº†ä¸€ç§æ–°çš„相互作用, 称为 "å¥‡å¼‚è½»å­æŒ¯è¡",å¯ä»¥ 显著é™ä½Žæˆæœ¬. 通过一个ä¸å®Œ 全被ç†è§£çš„过程, 所æä¾›çš„电 å­é€šè¿‡ä¸€ç§ +book_lore.memo_schrab_rd.page.2=奇特的作用被转化为æžé«˜èƒ½ é‡çš„å…‰å­. è¿™æ˜¯è®¸å¤šæ—¢å®šç²’å­ è½¬åŒ–å®šå¾‹çš„æžç«¯ä¾‹å¤–, ä½†åˆæ­¥ å®žéªŒè¯æ˜Žï¼Œè¿™äº›è´¨å­è½¬å˜ä¸º 上下夸克,最终形æˆäº† saralloy. +book_lore.memo_schrab_rd.page.3=奇怪的是,原型需è¦é’¨åˆé‡‘ 和少é‡çš„ saralloy. 此外, 需è¦ä¸€ä¸ªç‰¹æ®Šçš„ç”µå®¹å™¨æ¥ æŠµæ¶ˆå‰©ä½™çš„æ­£ç”µè·. + book_lore.memo_schrab_nuke.name=研究报告 book_lore.memo_schrab_nuke.author=Schrabaueråšå£« -book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. -book_lore.memo_schrab_nuke.page.1=æœ€è¿‘çš„è°ƒæŸ¥ä½¿æˆ‘ä»¬äº†è§£äº†æ ¸çˆ†ç‚¸å¯¹ææ–™é€ æˆçš„å½±å“。多äºå¤–界给我们的赠款,我们*æ„外地*æµ‹è¯•äº†é“€ç›´æŽ¥åˆæˆå¼‚å˜é‡‘属的ç†è®ºã€‚ -book_lore.memo_schrab_nuke.page.2=è€Œæ­¤å‰æˆ‘们åªåœ¨å›žæ—‹åŠ é€Ÿå™¨ä¸­åˆ¶ä½œå‡ºå¼‚å˜é‡‘属。但这次,我们在对Everwerpençš„åœ°ä¸‹æ‹æ‘„中,在该地点的铀矿石中å‘现了微é‡çš„异å˜é‡‘属。其附近所有的纯金属铀则都å‘生了裂å˜ã€‚ +book_lore.memo_schrab_nuke.page.0=我们最近的调查使我们了 è§£äº†æ ¸çˆ†ç‚¸å¯¹ææ–™çš„å½±å“. 感谢给我们的赠款, 我们 *æ„外地* 测试了 æˆ‘ä»¬ä»Žé“€ç›´æŽ¥åˆæˆ saralloyçš„ç†è®º. +book_lore.memo_schrab_nuke.page.1=以å‰åªæœ‰æˆ‘们的回旋加速 器真正创造了saralloy. 然而,在我们在埃弗沃彭 çš„åœ°ä¸‹æ‹æ‘„中,在现场的 铀矿中å‘现了微é‡çš„saralloy. 附近所有纯金属铀都å‘生了 裂å˜. +book_lore.memo_schrab_nuke.page.2=因此,如果有足够多的铀 矿石集中在炸è¯å‘¨å›´ï¼Œ 甚至å¯èƒ½æ˜¯ä¸€æžšå¯Œå«å¯è£‚ å˜ææ–™çš„è„弹,人们å¯ä»¥ ç†è®ºä¸Šåˆ¶é€ å‡ºè¶³å¤Ÿå¤šçš„ saralloyæ¥äººå·¥æ”¶é›†. + book_lore.bf_bomb_1.name=ç§äººç¬”è®° book_lore.bf_bomb_1.author=M. 波特 -book_lore.bf_bomb_1.page.0=Took long enough, but my transfer was accepted. Those new grads were already hard to handle, let alone all the unprofessionalism of the lead. $ Not all good news - this lab was withholding further detail, and I didn't need more chaos over another magic new discovery. -book_lore.bf_bomb_1.page.1=Of course that was the case. The alumni had their doubts (surprising, considering how bright-eyed they were), but my only... competent? colleague actually got his hands on the primer hand-out. Must have more connections than I thought. His memo is discouraging: -book_lore.bf_bomb_1.page.2=apparently, there's yet ANOTHER miracle material that they prodded out of some concoction of antimatter and a fringe isotope. The brochure calls it "SWIRLMAT" - hell if I know - and that's it. No wonder they wanted a theoretical physicist, -book_lore.bf_bomb_1.page.3=they don't even know what it is yet. Either way, practically any job would be better than my old position, so I can't complain much about sketchiness. +book_lore.bf_bomb_1.page.0=花了足够长的时间, 但我的转会被接å—了. 那些应届毕业生已ç»å¾ˆéš¾åº”付了, æ›´ä¸ç”¨è¯´é‚£äº›ä¸ä¸“业的领导了. $ è¿™è¿˜ä¸æ˜¯æ‰€æœ‰çš„å¥½æ¶ˆæ¯ - 这个实验室éšçž’了更多的细节, 我ä¸éœ€è¦åœ¨å¦ä¸€ä¸ªç¥žå¥‡çš„æ–°å‘现上碰到更多的混乱. +book_lore.bf_bomb_1.page.1=当然是这样. 毕业生们有他们的疑虑 (考虑到他们的眼ç›å¤šä¹ˆçº¯çœŸï¼ŒçœŸæ˜¯ä»¤äººæƒŠè®¶), 但我唯一... 有能力的? åŒäº‹å®žé™…上拿到了项目介ç»èµ„æ–™. 一定比我想象的有更多的关系. 他的备忘录令人沮丧: +book_lore.bf_bomb_1.page.2=显然, 他们从å物质和边缘åŒä½ç´ çš„æ··åˆç‰©ä¸­åˆå‘现了 å¦ ä¸€ ç§ ç¥žå¥‡çš„ç‰©è´¨. å°å†Œå­ä¸Šç§°ä¹‹ä¸º "SWIRLMAT" - é¬¼çŸ¥é“æ˜¯å•¥ - 就这样. 难怪他们想è¦ä¸€ä¸ªç†è®ºç‰©ç†å­¦å®¶, +book_lore.bf_bomb_1.page.3=他们甚至还ä¸çŸ¥é“它是什么. ä¸ç®¡æ€Žæ ·, 实际上任何一份工作都会比我以å‰çš„èŒä½å¥½, 我ä¸èƒ½å¯¹è¿™äº›ç²—糙之处抱怨太多. + book_lore.bf_bomb_2.name=ç§äººç¬”è®° book_lore.bf_bomb_2.author=M. 波特 -book_lore.bf_bomb_2.page.0=Despite the absence of information in that primer, I still had some hope they knew a bit more. Not at all. Every other senior researcher has a blind faith in this material; their propositions were practically biblical. I was near speechless. -book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no goddamn sense - it is completely unlike any other substance I've seen before. Its appearance was near frightening, a literal mass of swirling colors, with darker lines permeating through the neon green surface. -book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters. -book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy -book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be -book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. - - +book_lore.bf_bomb_2.page.0=尽管项目介ç»èµ„料中缺ä¹ä¿¡æ¯, ä½†æˆ‘ä»æŠ±ç€ä»–们或许了解更多的希望. 完全相åï¼ æ¯ä¸€ä½è€ç ”ç©¶å‘˜éƒ½å¯¹è¿™ç§ææ–™æŠ±æœ‰ç›²ç›®çš„ä¿¡å¿µ; 他们的主张跟圣ç»ä¼¼çš„. 我几乎无言以对. +book_lore.bf_bomb_2.page.1=但我甚至ä¸èƒ½è´£æ€ªä»–们. Swirlmat 完全ä¸åˆå¸¸ç† - 它与我以å‰è§è¿‡çš„任何其他物质都完全ä¸åŒ. å®ƒçš„å¤–è§‚å‡ ä¹Žä»¤äººææƒ§, 一团漩涡般的色彩, æ·±è‰²çš„çº¿æ¡æ¸—é€åˆ°éœ“虹绿的表é¢. +book_lore.bf_bomb_2.page.2=更糟糕的是, 这个东西是一ç§èƒ½é‡æº. 我们的样本的存在è¿å了ALARAåˆç†æœ€ä½Žå‰‚é‡åŽŸåˆ™: 实验室在它到达时被清场了, 唯一一个足够勇敢的人 (Dr. Melfyn) ç©¿ç€a级å±é™©é˜²æŠ¤æœ,åªä¸ºäº†æŠŠå®ƒæŠ¬20ç±³. +book_lore.bf_bomb_2.page.3=ç»éªŒæ•°æ®ä¹Ÿå¥½ä¸åˆ°å“ªé‡ŒåŽ», 为我们正在用它è¾å°„çš„èƒ½é‡æ‰“破热力学第一定律. 在那东西附近的任何地方 - 甚至是一米厚的铅åŽé¢ - éƒ½æ˜¯å¯æ€•çš„. 光谱分æžç»“æŸåŽï¼Œæˆ‘们迅速跑出了房间 +book_lore.bf_bomb_2.page.4=而且我们并没有从中得到什么新的东西. 科学团队中的那些白痴, 天啊, 在这一切之åŽç”šè‡³æ²¡æœ‰äº§ç”Ÿä¸€ä¸åŠ¨æ‘‡. å在那里进行这些"讨论" 坿€•çš„; 首席研究员中的一ä½åŠåŠå­ç”šè‡³æ‰¬è¨€è¯´æµ‹è¯•ç¦ä»¤å°†è¢«å–消, 这样我们就å¯èƒ½ +book_lore.bf_bomb_2.page.5=在未æ¥å‡ å‘¨å†…用这鬼玩æ„制造出炸弹, 哪个脑袋正常的人会去干这事? 真è§é¬¼, ä¸€ä¸ªç†æ™ºçš„助手 (Andrew) 给它起了个绰å·"balefire" - 因为相比之下,在ç«è‘¬æŸ´å †ä¸Šçƒ§æ­»æ›´å¥½å—. + book_lore.bf_bomb_3.name=ç§äººç¬”è®° book_lore.bf_bomb_3.author=M. 波特 -book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze -book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some -book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into -book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. - - -book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through -book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people... +book_lore.bf_bomb_3.page.0=我和团队å–得了一些çªç ´. ä¸»è¦æ˜¯é åˆ†ç¦» - 将我自己与那些神ç»å…®å…®çš„人隔离开æ¥è®©åœ¨è¿™é‡Œå·¥ä½œå˜å¾—更容易å¿å—. 虽然我们ä»ç„¶ä¸çŸ¥é“balefire的实际性质 (很难分æžä¼š +book_lore.bf_bomb_3.page.1=炸烂设备的样å“) ä½†äº‹å®žè¯æ˜Žå®ƒä¸Žå…¶ä»–ç‰©è´¨çš„ç›¸äº’ä½œç”¨æ˜¯å¯Œæœ‰æˆæ•ˆçš„. 值得注æ„的是, ä»–ä»¬åˆæˆäº†ä¸€ç§"æ°”æ€" å½¢å¼: 在所有人中, Andrew, 告诉我,这实际上是一ç§èƒ¶ä½“, 由悬浮在æŸç§æƒ°æ€§æ°”体中的微å°balefireé¢—ç²’ç»„æˆ +book_lore.bf_bomb_3.page.2=æ¯ä¸ªç²’å­éƒ½å……满被带正电的电离气体的'气泡'包裹, 阻止其沉é™. è°èƒ½æƒ³åˆ°è‡´å‘½çš„伽马射线有好处? åæ­£ä¸æ˜¯æˆ‘. $ 我选择ä¸åŽ»æƒ³ä»–ä»¬æ˜¯å¦‚ä½•å°†æ ·æœ¬è½¬åŒ–ä¸ºé¢—ç²’çš„ +book_lore.bf_bomb_3.page.3=, 但我ä¸èƒ½ä½Žä¼°è¿™ç§æ°”æ€balefire的效用 - 它使实验更加安全. $ 说到安全, 首席研究员 (ä»¥ä¸€ç§æ— è§†å®‰å…¨çš„行为) åšå‡ºäº†ä¸€ä¸ªå‡ ä¹Žè®©ä»–大åƒä¸€æƒŠçš„å‘现. +book_lore.bf_bomb_3.page.4=他决定让我们新胶体的一个细胞与一些éžå¸¸æ˜‚贵的å物质直接相互作用æ¥â€œæŽ¨è¿›â€å®žéªŒ: 由此产生的爆炸将它所在的桌å­å˜æˆäº†ä¸€å—è¾å°„漂白的渣å­, 在顶部雕刻出一个近乎完美的åŠçƒ +book_lore.bf_bomb_3.page.5=, 并给予头部å¥åº·å‰‚é‡çš„ARS. 我想我们现在知é“如何让它爆炸了, 但天哪, 有些人... + book_lore.bf_bomb_4.name=ç§äººç¬”è®° book_lore.bf_bomb_4.author=M. 波特 -book_lore.bf_bomb_4.page.0=I just can't escape my old work. They're the only place that's hiring despite all this godforsaken turmoil, but I'm not going back into that hole. $ They only tempted me because I need out, fast. Remember that atmospheric testing treaty we withdrew from a week ago? -book_lore.bf_bomb_4.page.1=Well, the dipshit in charge of our lab got something right for once. The denunciation came with a flurry of new "scientists" joining, just so we could weaponize balefire. The lack of critical thought here is honestly baffling - bless him, Andrew even jumped ship the -book_lore.bf_bomb_4.page.2=second the first fucking BOMB DESIGN was drafted. That ass Melfyn looked so happy with his little mechanism - perhaps he got brainworms from carrying that sample? - which involved some stupid shit using the solidified, base balefire and an HV -book_lore.bf_bomb_4.page.3=battery. $ Apparently, the form matters for energy output and activation method or whatever, kind of like uranium versus plutonium in regular nukes, but the end result is an initial shock starting the explosion. I find it funny, hilarious even. -book_lore.bf_bomb_4.page.4=All of them place such emphasis on the activation; they ignore the actual mechanism of it all because they don't have a single clue how it works! It may as well be magic at this point, and yet they're still trying to twist and bend it - just for more weapons of war. +book_lore.bf_bomb_4.page.0=我就是逃é¿ä¸äº†ä»¥å‰çš„工作. 他们是唯一一个在ç»åŽ†äº†è¿™åœºæ··ä¹±ä¹‹åŽä»åœ¨æ‹›è˜çš„地方, 但我ä¸ä¼šå†å›žåˆ°é‚£ä¸ªå‘里了. $ ä»–ä»¬åªæ˜¯è¯±æƒ‘我,因为我需è¦å‡ºåŽ»ï¼Œè¦å¾ˆå¿«å‡ºåŽ». 还记得我们一周å‰é€€å‡ºçš„大气试验æ¡çº¦å—? +book_lore.bf_bomb_4.page.1=好å§, 我们实验室的负责人这一次åšå¯¹äº†. è°´è´£éšç€ä¸€æ‰¹æ–°çš„ "科学家"的加入而æ¥, åªæ˜¯ä¸ºäº†è®©æˆ‘们å¯ä»¥å°†balefire武器化. è¿™é‡Œç¼ºä¹æ‰¹åˆ¤æ€§æ€ç»´ç¡®å®žä»¤äººå›°æƒ‘ - ç¥ç¦ä»–,安德é²ç”šè‡³åœ¨ç¬¬ä¸€ä¸ªè¯¥æ­»çš„ +book_lore.bf_bomb_4.page.2=炸 å¼¹ 设 计 èµ·è‰çš„第二天就跳槽了. 那个混蛋Melfyn看起æ¥å¯¹ä»–的那些å°çŽ©æ„å¾ˆæ»¡æ„ - 也许他æºå¸¦æ ·æœ¬æ—¶è„‘å­é‡Œè¿›äº†å•¥ä¸œè¥¿? - 其中包括一些愚蠢的垃圾,使用固化的 +book_lore.bf_bomb_4.page.3=基础balefire和高压电池. $ 显然,这ç§å½¢å¼å¯¹èƒ½é‡è¾“出和激活方法或其他什么都很é‡è¦, 有点åƒå¸¸è§„核武器中的铀与钚, 但最终结果是引å‘爆炸的åˆå§‹å†²å‡». 我觉得它很有趣, 甚至很æžç¬‘. +book_lore.bf_bomb_4.page.4=所有这些都强调激活; 他们忽略了这一切的实际机制,因为他们根本ä¸çŸ¥é“它是如何工作的! 在这一点上,这å¯èƒ½å¾ˆç¥žå¥‡, 但他们ä»åœ¨è¯•图扭转和弯曲它 - åªæ˜¯ä¸ºäº†èŽ·å¾—æ›´å¤šçš„æˆ˜äº‰æ­¦å™¨. + book_lore.bf_bomb_5.name=ç§äººç¬”è®° book_lore.bf_bomb_5.author=M. 波特 -book_lore.bf_bomb_5.page.0=I just... can't come to grips with it, even days after. It was a foregone conclusion, really, with how flippant the science team was with safety. $ $ Doctor Melfyn, M.S., is gone. Dead, maybe. I saw it happen before my own eyes, in their test chamber. -book_lore.bf_bomb_5.page.1=We had just gotten another batch of pure balefire, and he had recovered electrical equipment and an energy source to test his proposal. I don't know what caused it (was the power on? had he begun too soon?), but it seemingly progressed in agonizingly slow motion, -book_lore.bf_bomb_5.page.2=as the green-tinted light consumed the table, the battery, and Dr. Melfyn standing only a meter away. Even when the table had degraded into a pool of broiling metal on the floor, he did not burn. I don't know what I saw in his eyes... $ $ Terror, or awe -book_lore.bf_bomb_5.page.3=over his continued survival, maybe? Whatever our "miracle" material was, it didn't care. With a bright blaze of light, he disappeared in the next moment. Was he evaporated? incinerated? annihilated? sent to fucking hell itself, I don't know anymore! -book_lore.bf_bomb_5.page.4=The head researcher sickens me. Said we could be more careful, keep trucking, whatever other morale-improving filth he spewed. That dipshit won't ever figure out that playing with fire will get you burned. $ I didn't bother -book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hills. Not like it matters, anyway; considering the lack of calls, and the mushroom cloud that rose over my (now former) workplace, they've either blown everything up or entered full-on military jurisdiction. -book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows! -book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back -book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself... +book_lore.bf_bomb_5.page.0=æˆ‘åªæ˜¯... å³ä½¿å‡ å¤©åŽä¹Ÿæ— æ³•应对. 事实上, 科学团队对安全问题的轻率æ€åº¦å·²æˆå®šå±€. $ $ Doctor Melfyn, M.S., ä¸åœ¨äº†. 也许死了. 我亲眼目ç¹äº†è¿™ä¸€åˆ‡, 在他们的试验室里. +book_lore.bf_bomb_5.page.1=我们刚刚得到了å¦ä¸€æ‰¹çº¯balefire, ä»–å·²ç»æ‰¾åˆ°äº†ç”µæ°”è®¾å¤‡å’Œèƒ½æºæ¥æµ‹è¯•ä»–çš„æè®®. 我ä¸çŸ¥é“是什么原因造æˆçš„ (电æºå¼€äº†? 他开始得太早了?), 但它似乎以令人痛苦的慢动作进行, +book_lore.bf_bomb_5.page.2=绿色的光芒åžå™¬äº†æ¡Œå­, 电池, Dr. Melfyn就站在一米外. å³ä½¿æ¡Œå­å·²ç»åŒ–æˆåœ°æ¿ä¸Šçš„一池ç¼çƒ­çš„金属, 他也没有被烧伤. ä¸çŸ¥é“我从他的眼ç›é‡Œçœ‹åˆ°äº†ä»€ä¹ˆ... $ $ 也许是对他继续生存 +book_lore.bf_bomb_5.page.3=çš„ææƒ§ï¼Œæˆ–者敬ç•? ä¸ç®¡æˆ‘ä»¬çš„â€œå¥‡è¿¹â€ææ–™æ˜¯ä»€ä¹ˆ, 它都ä¸åœ¨ä¹Ž. éšç€ä¸€é“明亮的光, 他在下一刻消失了. ä»–è’¸å‘了å—? 烧æˆç°çƒ¬äº†? 完全湮ç­äº†? 被é€è¿›ä»–妈的地狱了? 我å†ä¹Ÿä¸ä¼šçŸ¥é“了! +book_lore.bf_bomb_5.page.4=首席研究员让我æ¶å¿ƒ. 他说我们å¯ä»¥æ›´åŠ å°å¿ƒ, 继续用å¡è½¦è¿è¾“, 或者其他什么能æé«˜å£«æ°”çš„å±è¯. 那个混蛋永远ä¸ä¼šæ˜Žç™½çŽ©ç«ç»ˆä¼šè‡ªç„š. $ æˆ‘æ²¡æœ‰è¾žèŒ +book_lore.bf_bomb_5.page.5=, æˆ‘åªæ˜¯æŠ“起我的那点破烂往山上跑. 无论如何,现在这些都ä¸é‡è¦äº†; 考虑到没有电è¯, 加上我 (现在是以å‰çš„了) 工作场所上空å‡èµ·çš„蘑è‡äº‘, 他们è¦ä¹ˆç‚¸æ¯äº†ä¸€åˆ‡è¦ä¹ˆå®Œå…¨è¿›å…¥äº†å†›äº‹ç®¡è¾–模å¼. +book_lore.bf_bomb_5.page.6=解剖和 æ´» 体 è§£ 剖 之间有一个é‡è¦çš„区别, è¿™ä¸€ç‚¹åœ¨ä»–ä»¬èº«ä¸Šæ˜¾ç„¶å·²ç»æ¶ˆå¤±äº†. 们å¯ä»¥éšå¿ƒæ‰€æ¬²åœ°è§£å‰–金属或原å­, ä½†æ’•è£‚ã€æ´»ä½“解剖现实本身åªä¼šä»¥æ›´å¤šçš„Dr. Melfyns而告终. è°çŸ¥é“å‘¢! +book_lore.bf_bomb_5.page.7=毕竟政府想把这些玩æ„装进炸弹里, 也许我们会看到更多的战争, 数百万人å¬å¤©ç”±å‘½. 他们ä¸èƒ½æ°¸è¿œéšçž’这件事. $ $ 我ä¸åœ¨ä¹Ž. å†ä¹Ÿä¸äº†. 求你了, 上å¸, 让我回到 +book_lore.bf_bomb_5.page.8=实际的科学上æ¥. $ $ 妈的, Mae, ä¿æŒå†·é™... + book_lore.beacon.name=ä¿¡å·ä¿¡æ ‡è¯´æ˜Žä¹¦ book_lore.beacon.author=Flim Flam工业 book_lore.beacon.page.0=感谢您购买Mk.2照明信å·ä¿¡æ ‡ï¼ˆç‰ˆæœ¬1.3)ï¼è¿™æœ¬å°å†Œå­å°†ç®€è¦ä»‹ç»ä¿¡æ ‡çš„æ“ä½œåŠå…¶å†…部工作原ç†ã€‚ @@ -594,10 +617,11 @@ commands.satellite.not_a_satellite=æŒæœ‰çš„物å“䏿˜¯å«æ˜Ÿï¼ commands.satellite.satellite_descended=嫿˜ŸæˆåŠŸé™è½ã€‚ commands.satellite.satellite_orbited=嫿˜Ÿå‘射。 commands.satellite.should_be_run_as_player=此命令应该由玩家è¿è¡Œï¼ -container.amsBase=AMS基座(装饰) -container.amsEmitter=AMSå‘å°„æž(装饰) -container.amsLimiter=AMS稳能器(装饰) -container.anvil=ç § + +container.amsBase=AMS基座 [装饰] +container.amsEmitter=AMSæ¿€å‘装置 [装饰] +container.amsLimiter=AMS稳定力场å‘生装置 [装饰] +container.anvil=%s 级砧 container.arcFurnace=电弧炉 container.armorTable=è£…ç”²æ”¹è£…å° container.ashpit=å‚¨ç°æ§½ @@ -659,9 +683,10 @@ container.heaterOven=加热炉 container.iGenerator=工业å‘电机 container.keyForge=é”匠桌 container.launchPad=导弹å‘å°„å° -container.launchTable=大型å‘å°„å° -container.leadBox=安全盒 -container.machineBoiler=锅炉 +container.launchTable=大型导弹å‘å°„å° +container.leadBox=安全箱 +container.machineArcWelder=弧焊机 +container.machineBoiler=原油加热器 container.machineCMB=CMB炼钢炉 container.machineCoal=ç«åŠ›å‘电机 container.machineCoker=焦化装置 @@ -681,9 +706,9 @@ container.machineShredder=粉碎机 container.machineSILEX=激光åŒä½ç´ åˆ†ç¦»å®¤ container.machineSolidifier=固化机 container.machineTurbine=汽轮机 -container.machineTurbofan=涡扇å‘动机 -container.machine_schrabidium_transmutator=Sa326嬗å˜è£…ç½® -container.massStorage=存储 +container.machineTurbofan=涡扇å‘电机 +container.machine_schrabidium_transmutator=Sa326异å˜é“€é‡‘属嬗å˜è£…ç½® +container.massStorage=存储器 container.microwave=微波炉 container.miningDrill=自动采矿钻机 container.miningLaser=采矿激光 @@ -765,97 +790,100 @@ crucible.hematite=赤é“çŸ¿ç‚¼é“ crucible.hss=高速钢生产 crucible.malachite=孔雀石炼铜 crucible.redcopper=紫铜生产 -crucible.steel=é’¢é“生产 -crucible.steelMeteoric=陨é“炼钢 -crucible.steelPig=生é“炼钢 -crucible.steelWrought=é”»é“炼钢 -crucible.tcalloy=é”é’¢åˆé‡‘生产 -death.attack.acid=%1$s 掉进了酸里 -death.attack.acidPlayer=%1$s 被 %2$s 溶解 -death.attack.ams=%1$s æ²æµ´åœ¨å°šæœªè¢«äººç±»ç§‘学命å的致命粒å­ä¸­ -death.attack.amsCore=%1$s 在奇点之ç«ä¸­è’¸å‘ -death.attack.asbestos=%1$s现在有æƒèŽ·å¾—ç»æµŽè¡¥å¿ -death.attack.bang=%1$s 被炸æˆå°å—碎片 -death.attack.blackhole=%1$s 粉身碎骨 -death.attack.blender=%1$s 被切æˆå°å— -death.attack.boat=%1$s 被船撞了 -death.attack.boil=%1$s被%2$s活活煮沸 -death.attack.boxcar=%1$s 被一节å è½çš„车厢撞死了...å¥½å§ -death.attack.broadcast=%1$s 的大脑èžåŒ–了 -death.attack.building=%1$s 被从天而é™çš„建筑砸中了 -death.attack.cheater=%1$s 的肠å­å˜æˆäº†ç‡•麦(???) -death.attack.chopperBullet=%1$s 被 %2$s å± æ€ -death.attack.cloud=%1$s åƒå†°æ£’一样在太阳下èžåŒ– -death.attack.cmb=%1$s 被 %2$s æžå¾—å˜¶å˜¶ä½œå“ -death.attack.digamma=%1$s è¸å…¥æ·±æ¸Š -death.attack.electricity=%1$s 被电死 -death.attack.electrified=%1$s 被 %2$s 电死 -death.attack.euthanized=%1$s 被 %2$s 安乿­» -death.attack.euthanizedSelf2=%1$s 获得了达尔文奖 -death.attack.euthanizedSelf=%1$s æŠŠè‡ªå·±å®‰ä¹æ­»äº†ï¼Œå¯çœŸå‚» -death.attack.exhaust=%1$s 被ç«ç®­çƒ¤æˆäº†ç¾Šè‚‰ä¸² -death.attack.flamethrower=%1$s 被 %2$s ç«åŒ– -death.attack.flamethrower.item=%1$s 被 %2$s 使用 %3$s ç«åŒ– -death.attack.ice=%1$s 被 %2$s åšæˆäº†å†°æ£’ -death.attack.laser=%1$s 被 %2$s å˜æˆäº†ç°çƒ¬ -death.attack.laser.item=%1$s 被 %2$s 使用 %3$s å˜æˆç°çƒ¬ -death.attack.lead=%1$s 死于铅中毒 -death.attack.lunar=%1$s 忘记了给é‡è¦å™¨å®˜å……电 -death.attack.meteorite=%1$s 被æ¥è‡ªå¤–太空的陨石击中 -death.attack.microwave=%1s 因微波è¾å°„爆炸 -death.attack.mku=%1$s æ­»äºŽä¸æ˜ŽåŽŸå›  -death.attack.monoxide=%1$s忘了æ¢ä¸€æ°§åŒ–碳探测器的电池 -death.attack.mudPoisoning=%1$s 死于毒泥浆中 -death.attack.nuclearBlast=%1$s 被核爆炸飞 -death.attack.overdose=%1$s ä¸Šç˜¾å¹¶çª’æ¯ -death.attack.pc=%1$s åœ¨ç²‰çº¢è‰²çš„äº‘ä¸­å˜æˆäº†ä¸€ä¸ªæ°´å‘ -death.attack.plasma=%1$s 被 %2$s 烧死 -death.attack.radiation=%1$s 死于è¾å°„ -death.attack.revolverBullet=%1$s 被 %2$s 用 %3$s 击中头部 -death.attack.revolverBullet.item=%1$s 被 %2$s 使用 %3$s 爆头 -death.attack.rubble=%1$s 被碎片压æ‰äº† -death.attack.shrapnel=%1$s 被榴弹碎片炸得åƒç–®ç™¾å­” -death.attack.spikes=%1$s被刺穿了 -death.attack.subAtomic1=%1$s 的原å­å·²è¢« %2$s 销æ¯. -death.attack.subAtomic2=%1$s 因为被 %2$s 篡改了实际速度,导致QPU没有对准 -death.attack.subAtomic3=由于 %2$s,1$s çš„å差下é™åˆ°1%以下 -death.attack.subAtomic4=%1$s 因为 %2$s 被零除了 -death.attack.subAtomic5=%1$s 因为 %2$s 无效了 -death.attack.suicide=%1$s 打爆了自己的头 -death.attack.taint=%1$s æ­»äºŽæ¶æ€§è‚¿ç˜¤ -death.attack.tau=%1$s 被 %2$s 用带负电è·çš„é™¶å­å°„ç©¿ -death.attack.tauBlast=%1$s 对XVL1456充能时间过长,被炸æˆç¢Žç‰‡ -death.attack.teleporter=%1$s 被传é€åˆ°è™šç©º -desc.gui.assembler.warning=§c错误:§r此机器需è¦è£…é…æœºæ¨¡æ¿ï¼ -desc.gui.chemplant.warning=§c错误:§r此机器需è¦åŒ–工厂模æ¿ï¼ -desc.gui.gasCent.enrichment=§2浓缩§r$浓缩铀需è¦ä¸²è”$两个离心机串è”将离心出$铀燃料,四个离心机串è”$将完全分离出铀235。 -desc.gui.gasCent.output=§6æµä½“输é€Â§r$æµä½“å¯é€šè¿‡è¾“出端å£è¾“é€è‡³å¦ä¸€å°ç¦»å¿ƒæœº$进行进一步处ç†ã€‚ -desc.gui.nukeBoy.desc=§1需è¦:§r$ * 中å­å±è”½ç½©$ * é“€-235弹头$ * 次临界铀-235æ ‡é¶$ * 炸è¯$ * 点ç«å™¨ -desc.gui.nukeGadget.desc=§1需è¦:§r$ * 4个 åˆä»£$ 炸è¯é€é•œé˜µåˆ—$ * 钚核心$ * 线路 -desc.gui.nukeMan.desc=§1需è¦:§r$ * 4个 åˆä»£$ 炸è¯é€é•œé˜µåˆ—$ * 钚核心$ * 点ç«å™¨ -desc.gui.nukeMike.desc=§1需è¦:§r$ * 4个 炸è¯é€é•œé˜µåˆ—$ * 钚核心$ * 氘冷å´è£…ç½®$ * é“€æ¶‚å±‚æ°˜ç½ * æ°˜ç½ -desc.gui.nukeTsar.desc=§1需è¦:§r$ * 4个 炸è¯é€é•œé˜µåˆ—$ * 钚核心$§9å¯é€‰:§r$ * 沙皇炸弹核心 -desc.gui.radiolysis.desc=§9说明§r$该RTG比其他RTG更高效,并且$é…备了一个用于$裂解和ç­èŒçš„è¾è§£å®¤ã€‚ -desc.gui.rtgBFurnace.desc=处ç†$金-198需è¦è‡³å°‘15热é‡ã€‚此外,热é‡è¶Šå¤šï¼Œè¿è¡Œé€Ÿåº¦è¶Šå¿«$金-198å¯èƒ½ä¼šè¡°å˜ä¸ºæ°´é“¶ -desc.gui.rtg.heat=§e当å‰çƒ­ç­‰çº§ï¼š%s -desc.gui.rtg.pellets=接å—çš„é¶ä¸¸ï¼š +crucible.steel=钢生产 +crucible.steelMeteoric=陨é“->é’¢ 生产 +crucible.steelPig=生é“->é’¢ 生产 +crucible.steelWrought=é”»é“->é’¢ 生产 +crucible.tcalloy=é”-é’¢åˆé‡‘生产 + +death.attack.acid=%1$s 掉进了酸里. +death.attack.acidPlayer=%1$s 被 %2$s 溶解了. +death.attack.ams=%1$s æ²æµ´åœ¨å°šæœªè¢«äººç±»ç§‘学命å的致命粒å­ä¸­. +death.attack.amsCore=%1$s 在高能奇点之ç«ä¸­è’¸å‘. +death.attack.asbestos=%1$s 现在有æƒèŽ·å¾—ç»æµŽè¡¥å¿. +death.attack.bang=%1$s 被炸æˆä¸€å£å¤§å°ç¢Žç‰‡. +death.attack.blackhole=%1$s 被黑洞拉æˆäº†æ„大利é¢. +death.attack.blender=%1$s 被切割æˆäº†å¾ˆå°çš„,以Byte计数的å•ä½. +death.attack.boat=%1$s 被船砸æ‰äº†. +death.attack.boil=%1$s 被 %2$s 活生生煮沸了. +death.attack.boxcar=%1$s 被一节å è½çš„车厢砸æ‰äº†...好å§. +death.attack.broadcast=%1$s 的大脑èžåŒ–了. +death.attack.building=%1$s 被从天而é™çš„建筑砸中了. +death.attack.cheater=%1$s 的内è„å˜æˆäº†ç‡•麦(???). +death.attack.chopperBullet=%1$s 被 %2$s å± æ€. +death.attack.cloud=%1$s åƒåœ¨å¤ªé˜³ä¸‹çš„冰棒一样èžåŒ–. +death.attack.cmb=%1$s 被 %2$s 电的焦脆. +death.attack.digamma=%1$s åœ¨è¿½æ±‚çœŸç†æ—¶æ­¥å…¥äº†æ·±æ¸Š. +death.attack.electricity=%1$s 被电死. +death.attack.electrified=%1$s 被 %2$s 电死. +death.attack.euthanized=%1$s 被 %2$s 安乿­». +death.attack.euthanizedSelf2=%1$s 获得了达尔文奖. +death.attack.euthanizedSelf=%1$s æŠŠè‡ªå·±å®‰ä¹æ­»äº†, 真鸡儿丢人. +death.attack.exhaust=%1$s 被ç«ç®­çƒ¤æˆäº†ç¾Šè‚‰ä¸². +death.attack.flamethrower=%1$s 被 %2$s ç«åŒ–. +death.attack.flamethrower.item=%1$s 被 %2$s 用 %3$sç«åŒ–. +death.attack.ice=%1$s 被 %2$s 冻æˆäº†å†°æ£’. +death.attack.laser=%1$s 被 %2$s å˜æˆäº†ç°çƒ¬. +death.attack.laser.item=%1$s 被 %2$s 用 %3$s å˜æˆäº†ç°çƒ¬. +death.attack.lead=%1$s 死于铅中毒. +death.attack.lunar=%1$s 忘了给他的é‡è¦å™¨å®˜ç»´æŒç³»ç»Ÿå……电. +death.attack.meteorite=%1$s 被æ¥è‡ªå¤–太空的陨石击中,ä»–å¯ä»¥åŽ»ä¹°å½©ç¥¨äº†. +death.attack.microwave=%1$s 被过é‡å¾®æ³¢è¾å°„而爆炸了. +death.attack.mku=%1$s 死于ä¸çŸ¥å的原因. +death.attack.monoxide=%1$s 忘了给一氧化碳探测器æ¢ç”µæ± . +death.attack.mudPoisoning=%1$s 死于毒泥浆中. +death.attack.nuclearBlast=%1$s 被核爆冲击波炸飞. +death.attack.overdose=%1$s æœè¯è¿‡é‡åŽçª’æ¯äº†. +death.attack.pc=%1$s åœ¨ç²‰çº¢è‰²çš„äº‘ä¸­å˜æˆäº†ä¸€æ»©æ°´. +death.attack.plasma=%1$s 被 %2$s 献祭了. +death.attack.radiation=%1$s 死于è¾å°„. +death.attack.revolverBullet=%1$s 被 %2$s 爆头. +death.attack.revolverBullet.item=%1$s 被 %2$s 用 %3$s 爆头. +death.attack.rubble=%1$s 被挤压æˆäº†ç¢Žç‰‡. +death.attack.shrapnel=%1$s 被榴弹碎片炸得åƒç–®ç™¾å­”. +death.attack.spikes=%1$s 被刺了个é€å¿ƒå‡‰. +death.attack.subAtomic1=%1$s 的原å­è¢« %2$s æ‘§æ¯. +death.attack.subAtomic2=%1$s 因为被 %2$s 篡改了实际速度, 导致QPU没有对准. +death.attack.subAtomic3=由于 %2$s, 1$s çš„å差下é™åˆ°1%以下. +death.attack.subAtomic4=%1$s 因为 %2$s 被零除了. +death.attack.subAtomic5=%1$s 因为 %2$s 无效了. +death.attack.suicide=%1$s 打爆了自己的头. +death.attack.taint=%1$s æ­»äºŽæ¶æ€§è‚¿ç˜¤. +death.attack.tau=%1$s 被 %2$s 用带负电è·çš„é™¶å­æ‰“å¾—åƒç–®ç™¾å­”. +death.attack.tauBlast=%1$s 对XVL1456充能时间过长, 被炸æˆç¢Žç‰‡. +death.attack.teleporter=%1$s 被传é€åˆ°è™šç©º. + +desc.block.blastinfo=æ–¹å—æŠ—çˆ†æ€§: %s +desc.gui.assembler.warning=§c错误:§r 错误:æ­¤è£…é…æœºéœ€è¦ç»„装机模æ¿! +desc.gui.chemplant.warning=§c错误:§r 此化工装置需è¦åŒ–学酿–¹æ¨¡æ¿! +desc.gui.gasCent.enrichment=§2浓缩§r$铀浓缩需è¦å¤šä¸ªç¦»å¿ƒæœºä¸²è”.$两个离心串è”$将仅分离出铀238,$四个离心串è”将完全分离六氟化铀. +desc.gui.gasCent.output=§6æµä½“传输§r$液体å¯ä»¥é€šè¿‡è¾“出端å£è½¬ç§»åˆ°$å¦ä¸€å°ç¦»å¿ƒæœºè¿›è¡Œè¿›ä¸€æ­¥å¤„ç†. +desc.gui.nukeBoy.desc=§1需è¦ç»„ä»¶:§r$ * 中å­å±è”½ç½©$ * é“€235弹头$ * 次临界铀235æ ‡é¶$ * 炸è¯$ * 点ç«å™¨ +desc.gui.nukeGadget.desc=§1需è¦ç»„ä»¶:§r$ * 4 个åˆä»£é«˜èƒ½$ 内爆炸è¯é˜µåˆ—$ * 大型钚核心$ * 线路 +desc.gui.nukeMan.desc=§1需è¦ç»„ä»¶:§r$ * 4 个åˆä»£é«˜èƒ½$ 内爆炸è¯é˜µåˆ—$ * 钚核心$ * 炸弹点ç«è£…ç½® +desc.gui.nukeMike.desc=§1需è¦ç»„ä»¶:§r$ * 4 个高能内爆炸è¯é˜µåˆ—$ * 钚核心$ * 氘冷å´è£…ç½®$ * 铀涂层氘ç½$ * æ°˜ç½ +desc.gui.nukeTsar.desc=§1需è¦ç»„ä»¶:§r$ * 4 个高能内爆炸è¯é˜µåˆ—$ * 钚核心$§9å¯é€‰:§r$ * 沙皇炸弹核心 +desc.gui.radiolysis.desc=§9说明§r$è¿™ç§RTG比其他RTG效率更高, $é…æœ‰ä¸€ä¸ªè¾è§£å®¤,$用于裂解和ç­èŒ. +desc.gui.rtgBFurnace.desc=需è¦è‡³å°‘15çº§çƒ­é‡æ¥è¿›è¡ŒåŠ å·¥$热é‡è¶Šå¤š,è¿è¡Œé€Ÿåº¦è¶Šå¿«$超过最大速度åŽå¤šä½™çš„热é‡ä¸ä¼šäº§ç”Ÿä»»ä½•å½±å“$短åŠè¡°æœŸçš„é¶ä¸¸å¯èƒ½ä¼šè¡°å˜ +desc.gui.rtg.heat=§e当å‰çƒ­é‡çº§åˆ«: %s +desc.gui.rtg.pellets=坿ޥå—çš„é¶ä¸¸: desc.gui.rtg.pelletHeat=%s (%s 热é‡) -desc.gui.rtg.pelletPower=%s (%s HE/刻) -desc.gui.template=§9模æ¿Â§r$模æ¿å¯ç”±$æœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹åˆ¶ä½œã€‚ -desc.gui.turbinegas.automode=§2è‡ªåŠ¨æ¶¡è½®æœºèŠ‚æµæ¨¡å¼Â§r$通过å•击“AUTOâ€æŒ‰é’®ï¼Œæ¶¡è½®æœº$将根æ®ç½‘络所需的功率自动调整å‘电é‡$ -desc.gui.turbinegas.fuels=§6坿ޥå—的燃料:§r -desc.gui.turbinegas.warning=§c燃油或润滑油液ä½ä½Žï¼Â§r -desc.gui.upgrade=§l坿ޥå—çš„å‡çº§ï¼šÂ§r -desc.gui.upgrade.afterburner=*§d加力燃烧§r:堆å è‡³3级 -desc.gui.upgrade.effectiveness=*§a效率§r:堆å è‡³3级 -desc.gui.upgrade.overdrive=*§7超速§r:堆å è‡³3级 -desc.gui.upgrade.power=*§1节能§r:堆å è‡³3级 -desc.gui.upgrade.speed=*§4速度§r:堆å è‡³3级 -desc.gui.zirnox.coolant=§3冷å´å‰‚§r$CO2将热é‡ä»Žå †èŠ¯è½¬ç§»åˆ°æ°´ä¸­$è¿™ä¼šä»¤å®ƒå˜æˆæˆè¶…热蒸汽$冷å´å’Œè’¸æ±½ç”Ÿäº§çš„æ•ˆçއå–决于压力。 -desc.gui.zirnox.pressure=§6压力§r$排放二氧化碳å¯ä»¥é™ä½ŽåŽ‹åŠ›$ç„¶è€Œï¼ŒåŽ‹åŠ›è¿‡ä½Žï¼Œå†·å´æ•ˆçŽ‡å’Œè’¸æ±½äº§é‡å°†é™ä½Ž$å°å¿ƒç†”æ¯ï¼ -desc.gui.zirnox.warning1=§c错误:§rå应堆正常è¿è¡Œéœ€è¦æ°´ï¼ -desc.gui.zirnox.warning2=§c错误:§r二氧化碳是å应堆正常è¿è¡Œæ‰€å¿…éœ€çš„ï¼ -desc.item.ammo.con_accuracy2=- 精度大幅é™ä½Ž +desc.gui.rtg.pelletPower=%s (%s HE/tick) +desc.gui.template=§9模æ¿Â§r$å¯ä»¥ä½¿ç”¨æœºå™¨æ¨¡æ¿$文件夹制作模æ¿. +desc.gui.turbinegas.automode=§2ç‡ƒæ±½è½®æœºè‡ªåŠ¨èŠ‚æµæ¨¡å¼Â§r$通过点击 "AUTO" 按钮, 燃汽轮机$将根æ®ç”µç½‘所需功率$自动调整å‘ç”µé‡ +desc.gui.turbinegas.fuels=§6坿ޥå—的燃气:§r$ +desc.gui.turbinegas.warning=§c燃油或润滑油液ä½ä½Ž!§r +desc.gui.upgrade=§l坿ޥå—çš„å‡çº§:§r +desc.gui.upgrade.afterburner= * §d加力燃烧§r: 最高为3级 +desc.gui.upgrade.effectiveness= * §a效率§r: 最高为3级 +desc.gui.upgrade.overdrive= * §7超频§r: 最高为3级 +desc.gui.upgrade.power= * §1节能§r: 最高为3级 +desc.gui.upgrade.speed= * §4速度§r: 最高为3级 +desc.gui.zirnox.coolant=§3冷å´Â§r$二氧化碳将热é‡ä»Žå应堆核心转移到水中.$这会把水加热æˆè’¸æ±½. $冷å´å’Œè’¸æ±½ç”Ÿäº§çš„$效率å–决于压力大å°. +desc.gui.zirnox.pressure=§6压力§r$å¯ä»¥é€šè¿‡å‡å°‘å应堆中的CO2釿¥é™ä½ŽåŽ‹åŠ›.$但是, 压力过低, 冷崿•ˆçŽ‡å’Œ$蒸汽产é‡ä¼šé™ä½Ž.$å°å¿ƒç†”æ¯! +desc.gui.zirnox.warning1=§c错误:§r å应堆正常è¿è¡Œ$éœ€è¦æ°´! +desc.gui.zirnox.warning2=§c错误:§r å应堆正常è¿è¡Œ$需è¦äºŒæ°§åŒ–碳! +desc.item.ammo.con_accuracy2=- 精确度大大é™ä½Ž desc.item.ammo.con_damage=- 伤害大幅é™ä½Ž desc.item.ammo.con_heavy_wear=- å¤§å¹…å¢žåŠ ç£¨æŸ desc.item.ammo.con_ling_fire=- 没有ç«ç„° @@ -880,27 +908,27 @@ desc.item.ammo.neu_boat=* 船 desc.item.ammo.neu_boxcar=* 车厢 desc.item.ammo.neu_building=* 建筑物 desc.item.ammo.neu_chlorophyte=* å¶ç»¿ -desc.item.ammo.neu_eraser=* 用于消除é‡å¤§é”™è¯¯ -desc.item.ammo.neu_fun=* 免家其乿— ç©·ï¼ -desc.item.ammo.neu_heavy_metal=* é‡é‡‘属 -desc.item.ammo.neu_homing=* 追踪 -desc.item.ammo.neu_jolt=* éœ‡è¡ +desc.item.ammo.neu_eraser=* 为了消除一些大麻烦 +desc.item.ammo.neu_fun=* 和你的核è°å®¶åº­ä¸€èµ·å¿«ä¹çš„æ¥æ”¾çƒŸèŠ±çŽ©è€å§! +desc.item.ammo.neu_heavy_metal=* å«é‡é‡‘属 +desc.item.ammo.neu_homing=* 自动追踪目标 +desc.item.ammo.neu_jolt=* 颠簸 desc.item.ammo.neu_leadburster=* 附ç€åœ¨è¡¨é¢å¹¶å–·å°„å­å¼¹ -desc.item.ammo.neu_less_bouncy=* å¼¹æ€§æ›´å° -desc.item.ammo.neu_maskman_flechette=* æ›³å…‰å¼¹ï¼ŒåŒæ—¶å¼•å‘一场贫铀飞镖弹风暴 -desc.item.ammo.neu_maskman_meteorite=* é«˜ä¼¤å®³ï¼ŒåŒæ—¶å¬å”¤å°é™¨çŸ³ -desc.item.ammo.neu_more_bouncy=* é¢å¤–弹性 -desc.item.ammo.neu_no_bounce=* 没有弹性 -desc.item.ammo.neu_no_con=* 没有缺点 -desc.item.ammo.neu_starmetal=* 星辉金属 -desc.item.ammo.neu_tracer=* 示踪剂 -desc.item.ammo.neu_uhh=* Uhhh -desc.item.ammo.neu_warcrime1=* 从技术上æ¥è®²è§¦çŠ¯äº†æˆ˜äº‰ç½ª -desc.item.ammo.neu_warcrime2=* 一å‘è§¦çŠ¯ä¸¤æ¡æˆ˜äº‰ç½ªï¼ -desc.item.ammo.pro_accurate1=+ æå‡ç²¾åº¦ -desc.item.ammo.pro_accurate2=+ 近乎完美的精度 -desc.item.ammo.pro_balefire=+ é‡Žç« -desc.item.ammo.pro_bomb_count=+ 炸弹数é‡å¢žåŠ  +desc.item.ammo.neu_less_bouncy=* 霰弹更少 +desc.item.ammo.neu_maskman_flechette=* å‘射一个能å¬å”¤å‡ºä¸€åœºé“€æ¶‚层镖弹碎片风暴的示踪剂 +desc.item.ammo.neu_maskman_meteorite=* å‘射高伤害的å­å¼¹å¹¶å¬å”¤ä¸€é¢—å°é™¨çŸ³ +desc.item.ammo.neu_more_bouncy=* 更多霰弹 +desc.item.ammo.neu_no_bounce=* éžéœ°å¼¹ +desc.item.ammo.neu_no_con=* 没有任何负é¢ä½œç”¨ lol +desc.item.ammo.neu_starmetal=* 嫿˜Ÿè¾‰é‡‘属 +desc.item.ammo.neu_tracer=* 曳光弹 +desc.item.ammo.neu_uhh=* 啊哈 +desc.item.ammo.neu_warcrime1=* 从技术上讲使用它是犯了战争罪 +desc.item.ammo.neu_warcrime2=* 一颗å­å¼¹çŠ¯ä¸‹ä¸¤æ¡æˆ˜äº‰ç½ª! +desc.item.ammo.pro_accurate1=+ 准确性æé«˜ +desc.item.ammo.pro_accurate2=+ 近乎完美的精确度 +desc.item.ammo.pro_balefire=+ B.F.é‡Žç« +desc.item.ammo.pro_bomb_count=+ å¢žåŠ ç‚¸å¼¹æ•°é‡ desc.item.ammo.pro_caustic=+ è…蚀性 desc.item.ammo.pro_chainsaw=+ 电锯 desc.item.ammo.pro_chlorine=+ 氯气 @@ -935,18 +963,19 @@ desc.item.ammo.pro_stunning=+ 眩晕 desc.item.ammo.pro_toxic=+ 剧毒 desc.item.ammo.pro_wear=+ å‡å°‘ç£¨æŸ desc.item.ammo.pro_withering=+ 凋零 -desc.item.armorMod.display=æ˜¾ç¤ºå·²å®‰è£…çš„è£…ç”²æ¨¡å— -desc.item.battery.charge=储能: %s / %sHE -desc.item.battery.chargePerc=储能: %s%% -desc.item.battery.chargeRate=充电效率: %sHE/刻 -desc.item.battery.dischargeRate=放电效率: %sHE/刻 -desc.item.durability=è€ä¹…: %s -desc.item.grenade.fuse=引信: %s -desc.item.grenade.fuseImpact=碰炸 -desc.item.grenade.fuseInstant=çž¬å‘ -desc.item.gun.ammo=å¼¹è¯ %s -desc.item.gun.ammoBelt=从背包中使用 -desc.item.gun.ammoEnergy=能耗; %sHE æ¯å‘ +desc.item.armorMod.display=æ¥æ˜¾ç¤ºè¯¥ç›”甲上所安装的é…件的效果 +desc.item.battery.charge=电é‡: %s / %sHE +desc.item.battery.chargePerc=电é‡: %s%% +desc.item.battery.chargeRate=充电速率: %sHE/tick +desc.item.battery.dischargeRate=放电速率: %sHE/tick +desc.item.detonator=已设置引爆ä½ç½®!$未设置引爆ä½ç½®! +desc.item.durability=è€ä¹…度: %s +desc.item.grenade.fuse=引爆延时: %s +desc.item.grenade.fuseImpact=接触爆炸 +desc.item.grenade.fuseInstant=å³çˆ† +desc.item.gun.ammo=å¼¹è¯é‡ %s +desc.item.gun.ammoBelt=自动从背包中装填 +desc.item.gun.ammoEnergy=能é‡; %sHE æ¯å‘ desc.item.gun.ammoEnergyAlt=%sHE æ¯å‘ desc.item.gun.ammoMag=%s / %s desc.item.gun.ammoType=å¼¹è¯ç±»åž‹: %s @@ -956,18 +985,16 @@ desc.item.gun.damageAlt=伤害: %s desc.item.gun.lore=查看深入的知识 desc.item.gun.loreFunc=查看深入功能 desc.item.gun.manufacturer=制造商: %s -desc.item.gun.name=åç§°: %s -desc.item.gun.pellets=弹丸数:%s-%s -desc.item.gun.penetration=装甲穿é€å€¼: %s -desc.item.kitArmor=装甲将被新的装备å–代。 -desc.item.kitHaz=装甲将被防护æœå–代。 -desc.item.kitPack=çœŸä¾¿å®œï¼ -desc.item.kitPool=è¯·åœ¨æ‰“å¼€å‰æ¸…ç©ºèƒŒåŒ…åº“å­˜ï¼ -desc.item.pileRod=§e使用钻孔石墨æ’å…¥$§E使用螺ä¸åˆ€æ‹”出$ - - -desc.item.rtgDecay=è¡°å˜ä¸ºï¼š%s -desc.item.rtgHeat=功率级别:%s +desc.item.gun.name=枪械åç§°: %s +desc.item.gun.pellets=弹丸: %s - %s +desc.item.gun.penetration=护甲穿é€å€¼: %s +desc.item.kitArmor=现穿的护甲将被新护甲å–代. +desc.item.kitHaz=防护æœå°†å–代现穿的护甲. +desc.item.kitPack=真便宜! +desc.item.kitPool=è¯·åœ¨æ‰“å¼€å‰æ¸…空你的背包! +desc.item.pileRod=§e用于æ’入钻削过的石墨$§e使用螺ä¸åˆ€ç¿˜å‡º$ +desc.item.rtgDecay=è¡°å˜ä¸º: %s +desc.item.rtgHeat=热é‡çº§åˆ«: %s desc.item.storage.capacity=å®¹é‡ %s%%s desc.item.storage.proscons=查看利弊列表 desc.misc.357=.357 é©¬æ ¼å— @@ -980,18 +1007,34 @@ desc.misc.lore=§n-- 知识 -- desc.misc.lshift=§8æŒ‰ä½ <§e§oå·¦SHIFT§8§o> %s desc.misc.luna=§o20x155mm Lunatic desc.misc.meltPoint=熔点: §c%s -desc.misc.noPos=未设置ä½ç½®ï¼ -desc.misc.pos=å°†ä½ç½®è®¾ç½®ä¸ºï¼š%s,%s,%s -desc.misc.posSet=ä½ç½®å·²è®¾ç½®ï¼ +desc.misc.noPos=未设置触å‘ä½ç½®! +desc.misc.pos=设置触å‘ä½ç½®ä¸º : %s, %s, %s +desc.misc.posSet=触å‘ä½ç½®å·²è®¾ç½®! desc.item.wasteCooling=在ä¹ç‡ƒæ–™æ± ä¸­å†·å´ -desc.item.zirnoxBreedingRod=§2[ZIRNOX增殖棒]$§e放在燃料棒æ—边增殖$§eæŒç»­ %d 刻 -desc.item.zirnoxRod=§a[ZIRNOX燃料棒]$§eæ¯åˆ»äº§ç”Ÿ %1$d 热é‡$§eæŒç»­ %2$d 刻 -digamma.playerDigamma=玩家F-迪伽马è¾ç…§æ°´å¹³: -digamma.playerHealth=玩家所å—F-迪伽马è¾ç…§å½±å“: -digamma.playerRes=玩家F-迪伽马防护水平: -digamma.title=玩家F-迪伽马è¾å°„自检器 -entity.entity_cyber_crab.name=èµ›åšèžƒèŸ¹ -entity.entity_elder_one.name=上å¤é¸­ç¥ž +desc.item.upgrade.machine=采矿钻机:§r$自动激光采矿钻机:$电炉:§r$è£…é…æœº:§r$化工厂:§r$油井:§r$矿物结晶机:§r$回旋加速器:§r$废气燃烧塔:§r$高能微波炮塔:§r$涡扇å‘电机:§r$力场范围å‡çº§Â§r$力场能é‡å‡çº§Â§r$采矿激光å‡çº§Â§r$气体离心机å‡çº§Â§r$ +desc.item.upgrade.speed=耗时 -%s%% / è€—ç”µé‡ +%sHE/t$耗时 ÷%s / è€—ç”µé‡ +%sHE/t$耗时 -%s%% / è€—ç”µé‡ +%s%%$对撞速度 x%s$伤害 +%sdmg/t +desc.item.upgrade.effect=åŠå¾„ +%sm / è€—ç”µé‡ +%sHE/t$+%s%% çš„å‡ çŽ‡ä¸æ¶ˆè€—ç‰©å“ / é…¸æ¶ˆè€—é‡ +%smB$-%s%% 的几率延长加速器过热缓冲时间$+%s%% å‘电é‡$攻击范围 +%sm +desc.item.upgrade.power=è€—ç”µé‡ -%sHE/t / 耗时 +%s%%$è€—ç”µé‡ -%s%% / 耗时 +%s%%$è€—ç”µé‡ -%skHE/t$è€—ç”µé‡ -%sHE/t$啿¬¡å¼€ç«è€—电 -%sHE/t +desc.item.upgrade.fortune=å¹¸è¿ +%s / 耗时 +%s +desc.item.upgrade.afterburn=å‘ç”µé‡ x%s / 燃料消耗 x%s$加力燃烧 +%ss$燃烧%smB燃气产生%sHE/t +desc.item.upgrade.forcefield=åŠå¾„ +16 / 耗电 +500$æœ€å¤§èƒ½é‡ +50 / 耗电 +250$最多堆å 16个 +desc.item.upgrade.smelter=èžåŒ–æ–¹å—.够简å•了. +desc.item.upgrade.shredder=自动粉碎矿石 +desc.item.upgrade.centrifuge=其作用ä¸è¨€è‡ªæ˜Ž +desc.item.upgrade.crystallizer=你新的最好的朋å‹:) +desc.item.upgrade.screm=å°±åƒåœ¨ã€Šè¶…级马里奥》里,所有的方å—都是蟾èœ$ä½†åœ¨è¿™é‡Œæ˜¯åŠæ¡å‘½çš„科学家.$他们在尖å«.很多尖å«. +desc.item.upgrade.nullifier=有50%%的几率用/dev/zero覆盖无用物å“$有50%%的几率将无用物å“移到/dev/null +desc.item.upgrade.gc_speed=å…许对六氟化铀进行全åŒä½ç´ åˆ†ç¦»$§eç¦»å¿ƒæœºä¹Ÿä¼šè¿›å…¥ç—…æ€æ¨¡å¼ +desc.item.zirnoxBreedingRod=§2[ZIRNOX锆诺克斯å应堆增殖棒]$§e放在燃料棒æ—边以增殖$§eæŒç»­ %d ticks +desc.item.zirnoxRod=§a[ZIRNOX锆诺克斯å应堆燃料棒]$§e产生 %1$d çƒ­é‡æ¯tick$§eæŒç»­ %2$d ticks + +digamma.playerDigamma=玩家Ϝ迪伽马è¾ç…§æ°´å¹³: +digamma.playerHealth=玩家所å—Ϝ迪伽马è¾ç…§å½±å“: +digamma.playerRes=玩家Ϝ迪伽马防护水平: +digamma.title=玩家Ϝ迪伽马è¾å°„自检器 + +entity.entity_cyber_crab.name=机械螃蟹 +entity.entity_elder_one.name=Quackoså¤è€è€… entity.entity_fucc_a_ducc.name=é¸­å­ entity.entity_glyphid.name=异虫 entity.entity_glyphid_behemoth.name=巨兽异虫 @@ -1011,20 +1054,24 @@ entity.entity_mob_nuclear_creeper.name=核爆爬行者 entity.entity_mob_phosgene_creeper.name=光气爬行者 entity.entity_mob_tainted_creeper.name=污染爬行者 entity.entity_mob_volatile_creeper.name=ä¸ç¨³å®šçˆ¬è¡Œè€… -entity.entity_taint_crab.name=污染螃蟹 -entity.entity_tesla_crab.name=ç£æš´èžƒèŸ¹ -entity.hbm.entity_balls_o_tron.name=机械蠕虫 -entity.hbm.entity_balls_o_tron_seg.name=机械蠕虫 +entity.entity_plastic_bag.name=塑料袋 +entity.entity_taint_crab.name=è…化机械螃蟹 +entity.entity_tesla_crab.name=ç£æš´æœºæ¢°èžƒèŸ¹ +entity.hbm.entity_balls_o_tron.name=世-界-æ¯-ç­-者 O-TRON +entity.hbm.entity_balls_o_tron_seg.name=世-界-æ¯-ç­-者 O-TRON 躯干 entity.hbm.entity_bullet.name=å­å¼¹ entity.hbm.entity_rocket.name=ç«ç®­å¼¹ -entity.hbm.entity_schrabnel.name=Schrabnel +entity.hbm.entity_schrabnel.name=弹片 + excavator.crusher=粉碎开关 excavator.drill=挖掘开关 excavator.silktouch=精准采集开关 excavator.veinminer=è¿žé”æŒ–矿开关 excavator.walling=填充开关 -flare.ignition=点ç«è£…ç½® -flare.valve=æµé‡é˜€ + +flare.ignition=点ç«å¼€å…³ +flare.valve=燃气阀门 + fluid.acid_fluid=é…¸ fluid.corium_fluid=堆芯熔èžç‰© fluid.mud_fluid=毒泥 @@ -1069,7 +1116,7 @@ gun.make.MANN=Open Mannå…¬å¸ gun.make.MAXIM=æµ·å‹’å§†Â·é©¬å…‹æ² gun.make.METRO=åœ°é“æžªæ‰‹ gun.make.MWT=MWT原型实验室 -gun.make.NAWS=Kayarm Industries +gun.make.NAWS=Kayarm工业 gun.make.ERFURT=埃尔ç¦ç‰¹æœºæ¢°åˆ¶é€ åŽ‚ gun.make.NONE=- gun.make.RAYTHEON=å¯¼å¼¹ç³»ç»Ÿå…¬å¸ @@ -1082,74 +1129,75 @@ gun.make.SACO=è¨ç§‘防å«å†›æ¢° gun.make.TULSKY=图拉武器厂 gun.make.UAC=è”åˆå®‡å®™èˆªç©ºå…¬å¸ gun.make.UNKNOWN=??? -gun.make.WESTTEK=WestTek研究设施 -gun.make.WGW=å¨å»‰Â·å¤æ–¯ç‰¹æ´›å¤«Â·ç»´å°”å…‹ -gun.make.WINCHESTER=æ¸©å½»æ–¯ç‰¹é€Ÿå°„æ­¦å™¨å…¬å¸ -gun.make.WINCHESTER_BIGMT=温彻斯特速射武器公å¸/大型MT -gun.name.ar15_50=AR-15 .50BMGåž‹ -gun.name.baeAR=英国制å¼çªå‡»æ­¥æžª -gun.name.bel=野ç«è›‹å‘射器 -gun.name.benelli=伯奈利M4 Super 90霰弹枪 -gun.name.benelliDrum=伯奈利M4 Super 90霰弹枪 (泵动供弹改进型) +gun.make.WESTTEK=西部科技 +gun.make.WGW=å¨å»‰Â·å¤æ–¯ç‰¹æ´›å¤«Â·æ²ƒå…‹ +gun.make.WINCHESTER=温彻斯特连å‘è½»æ­¦å™¨å…¬å¸ +gun.make.WINCHESTER_BIGMT=温彻斯特连å‘è½»æ­¦å™¨å…¬å¸ / 巨山研å‘中心 + +gun.name.ar15_50=AR-15 .50 BMG æ¨¡å¼ +gun.name.baeAR=ä¸åˆ—颠标准型çªå‡»æ­¥æžª +gun.name.bel=B.F.野ç«è›‹å¼¹å°„器 +gun.name.benelli=è´å†…利M4 Super 90霰弹枪 +gun.name.benelliDrum=è´å†…利M4 Super 90霰弹枪(弹鼓) gun.name.bio=RI No. 2 Mark 1 gun.name.bolter=Manticora Pattern爆弹枪 gun.name.congoLake=刚果湖水泵动榴弹å‘射器 gun.name.cPython=柯尔特蟒蛇 -gun.name.cz53=CZ53 å•兵转轮机枪 -gun.name.cz57=CZ57 å¤ä»‡è€…机枪 -gun.name.dart=针枪 -gun.name.deagle=ä»¥è‰²åˆ—å†›äº‹å·¥ä¸šå…¬å¸æ²™æ¼ ä¹‹é¹° -gun.name.emp=EMP投射器 -gun.name.extinguisher=PROTEXç­ç«å™¨6kg -gun.name.ffiV=FFI Viper -gun.name.ffiVInox=FFI Viper Inox -gun.name.ffiVLead=FFI Viper Lead -gun.name.ffiVN1=FFI Viper N1 -gun.name.ffiVN2=FFI Viper N2 -gun.name.ffiVUltra=FFI Viper Ultra -gun.name.ffivBling=FFI Viper Bling -gun.name.ffivSatur=FFI Viper D-25A -gun.name.g36=HK G36çªå‡»æ­¥æžª -gun.name.gPistol=HK69A1 手æŒå•呿¦´å¼¹å‘射器 -gun.name.gustav=å¡å°”Â·å¤æ–¯å¡”夫M1æ— åŽå力炮 -gun.name.ifHorseshoe=IF-18 è¹„é“ -gun.name.ifPit=IF-18 è¹„é“ Bottomless Pit -gun.name.ifScope=IF-18 è¹„é“ Scoped -gun.name.ifStorm=IF-18 è¹„é“ é“¶è‰²é£Žæš´ -gun.name.ifVanity=IF-18 è¹„é“ Vanity -gun.name.karl=M1 å¡å°”Â·å¤æ–¯å¡”夫 -gun.name.ks23=KS-23霰弹枪 -gun.name.lacunae=Auntie Lacunae -gun.name.lasetDet=éœæ™®ç»´å°”激光雷管 -gun.name.lunaAR=1986 Bishamontenå¼çªå‡»æ­¥æžª -gun.name.lunaGun=1978 RÄhula type Standard Issue Sidearm (Revision 2) -gun.name.lunaHLR=1944嫦娥å¼è½»æœºæžª -gun.name.lunaShotty=1978å¹´å…³ç¾½å¼æ•£å¼¹æžªï¼ˆç¬¬1次修订) -gun.name.lunaSMG=1956 Änanda type Submachine Gun -gun.name.lunaSniper=1915åŽç¾¿å¼åå™¨ææ­¥æžª +gun.name.cz53=CZ53å•å…µç«ç¥žç‚® +gun.name.cz57=CZ57å¤ä»‡ç«ç¥žç‚® +gun.name.dart=气动射针枪 +gun.name.deagle=IMI沙漠之鹰 +gun.name.emp=EMPç£æš´æ­¥æžª +gun.name.extinguisher=PROTEX6kgç­ç«å™¨ +gun.name.ffiV=普通左轮手枪 +gun.name.ffiVInox=强化左轮手枪 +gun.name.ffiVLead=æ ¸å­å·¦è½®æ‰‹æžª +gun.name.ffiVN1=梦魇左轮手枪(åˆä»£) +gun.name.ffiVN2=梦魇左轮手枪(黑暗) +gun.name.ffiVUltra=Sa326元素左轮手枪 +gun.name.ffivBling=黄金左轮手枪 +gun.name.ffivSatur=土星金属手枪 +gun.name.g36=黑克勒 & 科赫 G36çªå‡»æ­¥æžª +gun.name.gPistol=HK69榴弹手枪 +gun.name.gustav=M1å¡å°”Â·å¤æ–¯å¡”夫无åŽåº§åŠ›æ­¥æžª +gun.name.ifHorseshoe=IF-18蹄é“军工诺åŽå…‹ +gun.name.ifPit=IF-18蹄é“军工红钥匙左轮手枪 +gun.name.ifScope=å°çš®çš„IF-18蹄é“军工左轮手枪 +gun.name.ifStorm=IF-18蹄é“军工银色风暴 +gun.name.ifVanity=黑æ°å…‹çš„IF-18蹄é“军工五å‘装左轮枪 +gun.name.karl=M1å¡å°”ç«ç®­ç­’ +gun.name.ks23=è¨ç¼ªå°”-23大å£å¾„霰弹枪 +gun.name.lacunae=CZ33地狱ç«ç¥ž +gun.name.lasetDet=éœæ™®ç»´å°”激光引爆器 +gun.name.lunaAR=1986-â€æ¯˜æ²™é—¨å¤©â€œå¼çªå‡»æ­¥æžª +gun.name.lunaGun=1978-â€æ¯—çº½å¤©â€œå¼æ ‡é…è‡ªå«æ­¦å™¨ (2改型) +gun.name.lunaHLR=1944-“嫦娥â€å¼è½»æœºæžª +gun.name.lunaShotty=1978-â€å…³ç¾½â€œå¼éœ°å¼¹æžª (1改型) +gun.name.lunaSMG=1956-â€é˜¿éš¾ç­”“å¼å†²é”‹æžª +gun.name.lunaSniper=1915 “åŽç¾¿â€ å¼å物质æ¥å¤æžª gun.name.lunaTWR=时间扭曲步枪 -gun.name.m2=M2å¼å‹ƒæœ—å®å¤§å£å¾„釿œºæžª -gun.name.m42=M-42战术核弹å‘射器 -gun.name.m42MIRV=M-42实验MIRV -gun.name.m60=7.62毫米å£å¾„M60机枪 +gun.name.m2=.50å£å¾„å‹ƒæœ—å®æœºæžª, M2, HB +gun.name.m42=M-42战术核弹射器 +gun.name.m42MIRV=M-42 核弹弹射器"è¯•éªŒæ€§å­æ¯å¼¹å¤´ +gun.name.m60= 7.62 mmå£å¾„机枪, M60 gun.name.maxim=é©¬å…‹æ²æœºæžª -gun.name.maximDouble=åŒé‡é©¬å…‹æ²æœºæžª -gun.name.mg3=MG-42通用机枪 -gun.name.mp40=MP40冲锋枪 -gun.name.nerf=æŸäº›æ— è‰¯è®°è€…眼中的大规模æ€ä¼¤æ€§æ­¦å™¨ -gun.name.osipr=守望标准型脉冲步枪 -gun.name.panz=åå¦å…‹ç«ç®­æ¥å¤æžª 54 -gun.name.quadro=OpenQuadro便æºå¼å¯¼å¼¹å‘射器 +gun.name.maximDouble=åŒç®¡é©¬å…‹æ²æœºæžª +gun.name.mg3=通用MG3机枪 - .50 æ¨¡å¼ +gun.name.mp40=Mp40冲锋枪 +gun.name.nerf=设计者未知的NERFå‘射器 +gun.name.osipr=看守者暗能é‡è„‰å†²æ­¥æžª +gun.name.panz=å¦å…‹æ€æ‰‹54 +gun.name.quadro=å››è”装制导便æºå¼ç”µè§†åˆ¶å¯¼å¯¼å¼¹å‘射器 gun.name.remington870=雷明顿870 -gun.name.revolverCursed=ä¸åˆ—颠标准问题电动手枪 -gun.name.sauer=ç»å°”猎枪 -gun.name.spas12=弗兰基SPAS-12å¼12å·éœ°å¼¹æžª -gun.name.spiw=H&R SPIW -gun.name.stinger=FIM-92毒刺便æºå¼é˜²ç©ºç³»ç»Ÿ -gun.name.stingerOneSky=The One Sky 毒刺便æºå¼é˜²ç©ºç³»ç»Ÿ +gun.name.revolverCursed=被诅咒的ä¸åˆ—颠标准å‘行版左轮手枪 +gun.name.sauer=æ–¯å¦.索尔的è¨ç¼ªå°”-23霰 +gun.name.spas12= +gun.name.spiw=H&R弗莱切特镖 +gun.name.stinger=FIM-92“毒刺â€ä¾¿æºå¼é˜²ç©ºå¯¼å¼¹ +gun.name.stingerOneSky=天马防空导弹 gun.name.supershotty=åŒç®¡æˆ˜æ–—霰弹枪 -gun.name.tau=XVL1456 é™¶å­åŠ å†œç‚® -gun.name.tommy9=M1A1冲锋枪9毫米型 +gun.name.tau=XVL1456 è´Ÿé™¶å­åŠ å†œç‚®åŽŸåž‹ +gun.name.tommy9=9mmå£å¾„M1A1冲锋枪 gun.name.tommy=M1A1冲锋枪 gun.name.topaz=é‡åž‹ç«ç„°ç‡ƒçƒ§å™¨ gun.name.uacCarbine=UAC-41å¡å®¾æžª @@ -1249,14 +1297,15 @@ hbmfluid.death=锇酸溶液 hbmfluid.deuterium=æ°˜ hbmfluid.diesel=柴油 hbmfluid.diesel_crack=裂化柴油 -hbmfluid.diesel_crack_reform=高辛烷值裂化柴油 +hbmfluid.diesel_crack_reform=高辛烷值裂解柴油 hbmfluid.diesel_reform=高辛烷值柴油 hbmfluid.egg=蛋溶解液 hbmfluid.estradiol=雌二醇溶液 hbmfluid.ethanol=乙醇 -hbmfluid.enderjuice=æœ«å½±æžœæ± +hbmfluid.enderjuice=末影液 hbmfluid.fishoil=鱼油 hbmfluid.fracksol=压裂液 +hbmfluid.fullerene=富勒烯溶液 hbmfluid.gas=天然气 hbmfluid.gas_coker=焦化气 hbmfluid.gasoline=å«é“…汽油基油 @@ -1312,7 +1361,7 @@ hbmfluid.potassium_chloride=氯化钾溶液 hbmfluid.puf6=六氟化钚 hbmfluid.radiosolvent=高性能溶剂 hbmfluid.reclaimed=å†ç”Ÿæ²¹ -hbmfluid.redmud=红色泥浆 +hbmfluid.redmud=红泥浆 hbmfluid.reformate=釿•´æ²¹ hbmfluid.reformgas=釿•´æ°” hbmfluid.salient=绿色液体 @@ -1331,7 +1380,7 @@ hbmfluid.spentsteam=低压蒸汽 hbmfluid.steam=蒸汽 hbmfluid.sulfuric_acid=ç¡«é…¸ hbmfluid.sunfloweroil=葵花籽油 -hbmfluid.superhotsteam=超热蒸汽 +hbmfluid.superhotsteam=超热浓蒸汽 hbmfluid.syngas=åˆæˆæ°” hbmfluid.thorium_salt=æ¶²æ€é’ç› hbmfluid.thorium_salt_depleted=贫化液æ€é’ç› @@ -1347,7 +1396,27 @@ hbmfluid.watz=毒泥浆 hbmfluid.woodoil=木油 hbmfluid.xenon=氙气 hbmfluid.xpjuice=ç»éªŒæ± -hbmfluid.xylene=轻质芳烃(BTX) +hbmfluid.xylene=BTX苯-甲苯-二甲苯混åˆç‰© + +hbmfluid.Trait.Combustible=[å¯ç‡ƒçƒ§å‘电]$产生 §c%sHE §6æ¯æ¡¶$燃料等级: §c%s +hbmfluid.Trait.Combustible.FuelGrade=低$中$高$航空级$æ°”æ€ +hbmfluid.Trait.Coolable=热容é‡: %s TU$导热效率: %s%% +hbmfluid.Trait.Corrosive=[强è…蚀性]$[è…蚀性] +hbmfluid.Trait.Flammable=[å¯ç‡ƒçƒ§äº§çƒ­]$产生 §c%sTU §eæ¯æ¡¶ +hbmfluid.Trait.Poison=[有毒气体] +hbmfluid.Trait.PWRModerator=[PWR中å­é€šé‡å€å¢ž]$核心中å­é€šé‡ %s%s%% +hbmfluid.Trait.Toxin=[毒素] +hbmfluid.Trait.VentRadiation=[放射性] +hbmfluid.TraitSimple.Amat=[å物质] +hbmfluid.TraitSimple.Delicious=[美味] +hbmfluid.TraitSimple.Gaseous=[气体] +hbmfluid.TraitSimple.Gaseous_ART=[室温下为气体] +hbmfluid.TraitSimple.LeadContainer=[需è¦ç”¨å±é™©å“ç½å®¹çº³] +hbmfluid.TraitSimple.Leaded=[å«é“…燃料] +hbmfluid.TraitSimple.Liquid=[液体] +hbmfluid.TraitSimple.Plasma=[等离å­ä½“] +hbmfluid.TraitSimple.Viscous=[粘性] + hbmpseudofluid.none=空 hbmpseudofluid.heuf6=高浓缩六氟化铀 hbmpseudofluid.meuf6=中浓缩六氟化铀 @@ -1527,12 +1596,12 @@ item.ammo_4gauge_explosive.name=23mm榴弹 item.ammo_4gauge_flechette.name=4å·ç®­éœ°å¼¹ item.ammo_4gauge_flechette_phosphorus.name=4å·ç®­éœ°å¼¹[白磷] item.ammo_4gauge_kampf.name=23mmç«ç®­å¼¹ -item.ammo_4gauge_semtex.name=23mmé‡‡çŸ¿å¼¹è¯ -item.ammo_4gauge_sleek.name=4å·é¹¿å¼¹[IF-R&D] -item.ammo_4gauge_slug.name=å››å·å®žå¿ƒç‹¬å¤´å¼¹ -item.ammo_4gauge_titan.name=4å·Quacker鹿弹 -item.ammo_4gauge_vampire.name=4å·æœ¨ç­¾å¼¹ -item.ammo_4gauge_void.name=4å·ç”µç¦»ç²’å­å¼¹ +item.ammo_4gauge_semtex.name=23mm挖掘榴弹 +item.ammo_4gauge_sleek.name=4å£å¾„鹿弹[IF-R&D] +item.ammo_4gauge_slug.name=å››å£å¾„实心独头弹 +item.ammo_4gauge_titan.name=å››å£å¾„æ³°å¦æ€æ‰‹å¼¹ +item.ammo_4gauge_vampire.name=4å£å¾„åå¸è¡€é¬¼æœ¨æ¡©éœ°å¼¹ +item.ammo_4gauge_void.name=4å£å¾„电离å­éœ°å¼¹ item.ammo_50ae.name=.50AEå­å¼¹ item.ammo_50ae_ap.name=.50AEå­å¼¹[AP] item.ammo_50ae_chlorophyte.name=.50AEå­å¼¹[å¶ç»¿] @@ -1551,17 +1620,17 @@ item.ammo_50bmg_phosphorus.name=.50BMGå­å¼¹[白磷] item.ammo_50bmg_sleek.name=.50BMGå­å¼¹[IF-R&D] item.ammo_50bmg_star.name=.50BMGå­å¼¹[星辉] item.ammo_556.name=5.56mmå­å¼¹ -item.ammo_556_ap.name=5.56mmå­å¼¹[AP] -item.ammo_556_chlorophyte.name=5.56mmå­å¼¹[å¶ç»¿] -item.ammo_556_du.name=5.56mmå­å¼¹[è´«é“€] -item.ammo_556_flechette.name=5.56mm弗莱彻å­å¼¹ -item.ammo_556_flechette_chlorophyte.name=5.56mm弗莱彻å­å¼¹[å¶ç»¿] -item.ammo_556_flechette_du.name=5.56mm弗莱彻å­å¼¹ [贫铀穿甲] -item.ammo_556_flechette_incendiary.name=5.56mm弗莱彻å­å¼¹ [燃烧] -item.ammo_556_flechette_phosphorus.name=5.56mm弗莱彻å­å¼¹ [白磷穿甲] -item.ammo_556_flechette_sleek.name=5.56mm弗莱彻å­å¼¹[IF-R&D] +item.ammo_556_ap.name=5.56mmå­å¼¹[穿甲弹] +item.ammo_556_chlorophyte.name=5.56mmå¼¹è¯[绿藻] +item.ammo_556_du.name=5.56mmå­å¼¹[贫铀涂层] +item.ammo_556_flechette.name=5.56mm镖形弹 +item.ammo_556_flechette_chlorophyte.name=5.56mm镖形弹弹è¯[绿藻] +item.ammo_556_flechette_du.name=5.56mm镖形弹 [贫铀涂层] +item.ammo_556_flechette_incendiary.name=5.56mm镖形弹 [燃烧] +item.ammo_556_flechette_phosphorus.name=5.56mm镖形弹 [白磷弹] +item.ammo_556_flechette_sleek.name=5.56mm镖形弹[IF-R&D] item.ammo_556_k.name=5.56mm空包弹 -item.ammo_556_phosphorus.name=5.56mmå­å¼¹[白磷] +item.ammo_556_phosphorus.name=5.56mmå­å¼¹[白磷弹] item.ammo_556_sleek.name=5.56mmå­å¼¹[IF-R&D] item.ammo_556_star.name=5.56mmå­å¼¹ [星辉] item.ammo_556_tracer.name=5.56mm å­å¼¹[曳光弹] @@ -1601,13 +1670,13 @@ item.ammo_coilgun.name=钨制线圈枪å­å¼¹ item.ammo_coilgun_du.name=é“€é“åˆé‡‘制线圈枪å­å¼¹ item.ammo_coilgun_rubber.name=橡胶制线圈枪å­å¼¹ item.ammo_container.name=万能弹è¯ç›’ -item.ammo_dart.name=塑料镖[凋零] -item.ammo_dart_nerf.name=NERF 飞镖 -item.ammo_dart_nuclear.name=塑料镖[定时炸è¯] -item.ammo_dgk.name=åŒè”守门员近防系统200å‘å¼¹è¯ -item.ammo_fireext.name=ç­ç«å™¨ æ°´ç½ -item.ammo_fireext_foam.name=ç­ç«å™¨ æ³¡æ²«ç½ -item.ammo_fireext_sand.name=ç­ç«å™¨ ç¡¼ç ‚ç½ +item.ammo_dart.name=塑料飞镖 [凋零] +item.ammo_dart_nerf.name=NERF飞镖 +item.ammo_dart_nuclear.name=塑料飞镖 [定时爆炸] +item.ammo_dgk.name=200å‘åŒç®¡è¿‘防炮"éœåŽå¾·"å¼¹è¯ç®± +item.ammo_fireext.name=ç­ç«å™¨æ°´ç½ +item.ammo_fireext_foam.name=ç­ç«å™¨æ³¡æ²«ç½ +item.ammo_fireext_sand.name=ç­ç«å™¨ç¡¼ç ‚ç½ item.ammo_folly.name=é“¶å¼¹ item.ammo_folly_du.name=é“¶å¼¹[è´«é“€, ä¸çˆ†ç‚¸] item.ammo_folly_nuclear.name=é“¶å¼¹[æ ¸å­] @@ -1615,7 +1684,7 @@ item.ammo_fuel.name=æŸ´æ²¹ç½ item.ammo_fuel_gas.name=æ¯’æ°”ç½ item.ammo_fuel_napalm.name=å‡å›ºæ±½æ²¹ç½ item.ammo_fuel_phosphorus.name=ç™½ç£·ç½ -item.ammo_fuel_vaporizer.name=æ±½åŒ–ç½ +item.ammo_fuel_vaporizer.name=æŒ¥å‘æ€§ç‡ƒæ–™ç½ item.ammo_grenade.name=40mm榴弹 item.ammo_grenade_concussion.name=40mm榴弹[震è¡] item.ammo_grenade_finned.name=40mm榴弹[尾翼稳定] @@ -1649,8 +1718,8 @@ item.ammo_nuke_barrel.name=å°åž‹æ ¸åºŸæ–™æ¡¶ item.ammo_nuke_high.name=迷你核弹 (高当é‡) item.ammo_nuke_low.name=迷你核弹 (低当é‡) item.ammo_nuke_pumpkin.name=å—瓜炸弹 -item.ammo_nuke_safe.name=迷你核弹 (安全) -item.ammo_nuke_tots.name=迷你核弹 (幼体) +item.ammo_nuke_safe.name=迷你核弹 (安全) +item.ammo_nuke_tots.name=迷你核弹 (å°åž‹æ•£å°„弹丸) item.ammo_rocket.name=84mmç«ç®­å¼¹ item.ammo_rocket_canister.name=84mm ç«ç®­å¼¹[榴霰弹] item.ammo_rocket_digamma.name=§4å½’ 零§r @@ -1663,7 +1732,7 @@ item.ammo_rocket_phosphorus.name=84mmç«ç®­å¼¹[白磷] item.ammo_rocket_rpc.name=84mmç«ç®­å¼¹[飞行电锯] item.ammo_rocket_shrapnel.name=84mmç«ç®­å¼¹[破片] item.ammo_rocket_sleek.name=84mmç«ç®­å¼¹[IF-R&D] -item.ammo_rocket_toxic.name=84mmç«ç®­å¼¹[化学] +item.ammo_rocket_toxic.name=84mmç«ç®­å¼¹[化学毒气] item.ammo_shell.name=240mm炮弹 item.ammo_shell_apfsds_du.name=240mm 贫铀尾翼稳定脱壳穿甲弹 item.ammo_shell_apfsds_t.name=240mm 钨心尾翼稳定脱壳穿甲弹 @@ -1691,9 +1760,14 @@ item.ams_catalyst_strontium.name=é”¶å应催化剂 item.ams_catalyst_thorium.name=é’å应催化剂 item.ams_catalyst_tungsten.name=é’¨å应催化剂 item.ams_core_eyeofharmony.name=å’Œè°ä¹‹çœ¼[AMS/DFC核心] +item.ams_core_eyeofharmony.desc=ä¸€é¢—æ’æ˜Ÿè‡ªè¡Œå´©å¡Œ,$ä»…ä»…å‡ çº³ç§’å°±å˜æˆäº†é»‘æ´ž,$被时间冻结了.$如果我ä¸äº†è§£ç›¸å…³é¢†åŸŸçš„è¯,$我会说这是æŸä¸ªäººç¼–出æ¥çš„一些$关于深空魔法的故作高深的鬼è¯.$你还欠我åå—é’±. item.ams_core_sing.name=活跃奇点[AMS/DFC核心] -item.ams_core_thingy.name=Thingy[AMS/DFC核心] +item.ams_core_sing.desc=一ç§è¢«ä¿®æ­£çš„ã€æœªå®šä¹‰çš„æ—¶ç©ºçжæ€$用于å助胶å­é—´èšå˜å’Œæ—¶ç©ºæ¹®ç­.$是的,这会缓慢而稳定地摧æ¯$宇宙本身结构,但至少你å¯ä»¥ç”¨å®ƒç»™ä½ çš„$烤é¢åŒ…机供电$所以一切都安好. +item.ams_core_thingy.name=暮光闪闪的皇冠[AMS/DFC核心] +item.ams_core_thingy.desc=...$...$...我还拿ç€è¿™ä¸ªå—?$这是个å°é‡‘属制å“.$我ä¸çŸ¥é“它是从哪里æ¥çš„,也ä¸çŸ¥é“它是干什么的,$也许他们是在垃圾场å‘现的,$ç„¶åŽæŠŠå®ƒå½“ä½œæŸç§å¤è‘£è‰ºæœ¯å“喿މ.$äº‹å®žä¸Šå¦‚æžœä¸æ˜¯å› ä¸ºæˆ‘å¯ä»¥æŠŠå®ƒå¡žè¿›ä¸€ä¸ªå·¨å¤§çš„æ¿€å…‰å应堆里,$我å¯èƒ½ä¼šæŠŠå®ƒæ‰”回到它属于的地方$----垃圾桶. +item.ams_core_thingy_hide.desc=是的,我甚至ä¸ä¼šè´¨ç–‘这个. item.ams_core_wormhole.name=微型虫洞[AMS/DFC核心] +item.ams_core_wormhole.desc=æ•°å亿个纳米虫洞云无法主动从$å¦ä¸€ä¸ªç»´åº¦èŽ·å–物质$而是将所有物质转化为$纯能é‡.è¿™æ„味ç€$你正在积æžåœ°ç ´åå¦ä¸€ä¸ª$维度,åƒå¸ä¸€ç›’æžœæ±$一样å¸å¹²å®ƒ.$无论如何,这个维度å¯èƒ½å¾ˆç³Ÿç³•.$我敢打赌里é¢å…¨æ˜¯é»„蜂或是别的什么垃圾,伙计,$而我讨厌这些东西. item.ams_focus_blank.name=空白稳定器焦点 item.ams_focus_booster.name=较弱的约æŸåœºå’Œæ ¸å¿ƒèƒ½é‡æ³¨å…¥ï¼š$更多的热é‡äº§ç”Ÿï¼Œæ›´å¤šçš„能é‡ã€‚ item.ams_focus_booster.desc=较弱的约æŸåœºå’Œæ ¸å¿ƒèƒ½é‡æ³¨å…¥ï¼š$更多的热é‡äº§ç”Ÿï¼Œæ›´å¤šçš„能é‡ã€‚ @@ -1874,7 +1948,7 @@ item.blade_meteorite.name=陨石刀 item.blade_titanium.name=钛扇片 item.blade_tungsten.name=钨强化扇片 item.blades_advanced_alloy.name=高级åˆé‡‘刀片 -item.blades_desh.name=Desh制刀片 +item.blades_desh.name=德什制刀片 item.blades_steel.name=钢制刀片 item.blades_titanium.name=钛制刀片 item.blowtorch.name=å–·ç¯ @@ -1904,6 +1978,7 @@ item.bottle_empty.name=空å¯ä¹ç“¶ item.bottle_mercury.name=一瓶水银 item.bottle_nuka.name=æ ¸å­å¯ä¹ item.bottle_opener.name=Hbm自制开瓶器 +item.bottle_opener.desc=我自己的开瓶器.$谨慎使用! item.bottle_quantum.name=é‡å­æ ¸å­å¯ä¹ item.bottle_rad.name=è¾å°„S~æ ¸å­å¯ä¹ item.bottle_sparkle.name=S~æ ¸å­å¯ä¹ @@ -2013,7 +2088,7 @@ item.canned_yogurt.desc=å¯èƒ½å掉了,但管它呢 item.canteen_13.name=Vault13水壶 item.canteen_fab.name=æžå“ä¼ç‰¹åŠ  item.canteen_vodka.name=ä¼ç‰¹åŠ  -item.cap_fritz.name=弗里茨瓶盖 +item.cap_fritz.name=Fritz弗里茨å¯ä¹ç“¶ç›– item.cap_korl.name=Korlç“¶ç›– item.cap_nuka.name=æ ¸å­å¯ä¹ç“¶ç›– item.cap_quantum.name=樱桃味核å­å¯ä¹ç“¶ç›– @@ -2057,25 +2132,26 @@ item.centrifuge_element.name=离心元件 item.centrifuge_tower.name=离心塔 item.chainsaw.name=链锯 item.cheese.name=奶酪 -item.cheese_quesadilla.name=奶酪油炸玉米粉饼 -item.chemical_dye.black.name=化学染料(黑色) -item.chemical_dye.blue.name=化学染料(è“色) -item.chemical_dye.brown.name=化学染料(棕色) -item.chemical_dye.cyan.name=化学染料(é’色) -item.chemical_dye.gray.name=化学染料(ç°è‰²ï¼‰ -item.chemical_dye.green.name=化学染料(绿色) -item.chemical_dye.lightblue.name=化学染料(浅è“色) -item.chemical_dye.lime.name=化学染料(石ç°ï¼‰ -item.chemical_dye.magenta.name=化学染料(å“红色) -item.chemical_dye.orange.name=化学染料(橙色) -item.chemical_dye.pink.name=化学染料(粉色) -item.chemical_dye.purple.name=化学染料(紫色) -item.chemical_dye.red.name=化学染料(红色) -item.chemical_dye.silver.name=化学染料(浅ç°è‰²ï¼‰ -item.chemical_dye.white.name=化学染料(白色) -item.chemical_dye.yellow.name=化学染料(黄色) -item.chemistry_set.name=实验室玻璃器皿 -item.chemistry_set_boron.name=实验室玻璃器皿(硼玻璃) +item.cheese_quesadilla.name=墨西哥奶酪饼 +item.cheese_quesadilla.desc=这就是50å¹´ä»½çš„é…µæ¯æ„ŸæŸ“对你的影å“. +item.chemical_dye.black.name=化学染料 (黑色) +item.chemical_dye.blue.name=化学染料 (è“色) +item.chemical_dye.brown.name=化学染料 (棕色) +item.chemical_dye.cyan.name=化学染料 (é’色) +item.chemical_dye.gray.name=化学染料 (ç°è‰²) +item.chemical_dye.green.name=化学染料 (绿色) +item.chemical_dye.lightblue.name=化学染料 (æµ…è“色) +item.chemical_dye.lime.name=化学染料 (石ç°è‰²) +item.chemical_dye.magenta.name=化学染料 (洋红色) +item.chemical_dye.orange.name=化学染料 (橙色) +item.chemical_dye.pink.name=化学染料 (粉色) +item.chemical_dye.purple.name=化学染料 (紫色) +item.chemical_dye.red.name=化学染料 (红色) +item.chemical_dye.silver.name=化学染料 (æµ…ç°è‰²) +item.chemical_dye.white.name=化学染料 (白色) +item.chemical_dye.yellow.name=化学染料 (黄色) +item.chemistry_set.name=化学玻璃仪器 +item.chemistry_set_boron.name=化学玻璃仪器(硼玻璃) item.chemistry_template.name=化工厂模æ¿: item.chernobylsign.name=è¾å°„警告标志战斧 item.chlorine_pinwheel.name=氯气转轮 @@ -2300,6 +2376,7 @@ item.debris_graphite.name=çƒ­çŸ³å¢¨å— item.debris_metal.name=断裂金属棒 item.debris_shrapnel.name=èµ°é“碎片 item.definitelyfood.name=完全ä¸è„牌军粮 +item.definitelyfood.desc=是的,$我厌倦了ä¸å¾—ä¸å¤–出$为了找东西åƒè€Œä¸è‡³äºŽé¥¿æ­»,$所以这就是我天æ‰èˆ¬çš„解决的方案:$ $åƒç‚¹å¯é£Ÿç”¨çš„æ³¥åœŸ. item.defuser.name=高科技拆弹装置 item.defuser_gold.name=黄金剪线钳 item.demon_core_closed.name=å°é—­çš„æ¶é­”æ ¸å¿ƒ @@ -2314,13 +2391,16 @@ item.designator_arty_range.name=远程ç«ç‚®é¥æŽ§å™¨ item.designator_manual.name=手动目标指示器 item.designator_range.name=远程目标指示器 item.detonator.name=起爆器 +item.detonator.desc=Shiftå³å‡»æ¥è®¾ç½®è§¦å‘ä½ç½®,$å³å‡»æ¥è§¦å‘! +item.detonator.pos.desc=未设置触å‘ä½ç½®!$连接到: %s, %s, %s item.detonator_de.name=死亡炸弹 item.detonator_deadman.name=死亡雷管 item.detonator_laser.name=激光起爆器 item.detonator_multi.name=多å‘起爆器 item.deuterium_filter.name=氘过滤器 item.diamond_gavel.name=钻石槌 -item.dieselsuit_boots.name=柴油动力高跟鞋 +item.diamond_gavel.desc=那个关于钻石沙砾的笑è¯! 它现在终于讲得通了!!$ $§9能造æˆå°½å¯èƒ½å¤šçš„伤害. +item.dieselsuit_boots.name=æŸ´æ²¹åŠ¨åŠ›è£…ç”²é´ item.dieselsuit_helmet.name=柴油动力头戴å¼çŽ¯å¢ƒä¼ æ„Ÿå™¨ item.dieselsuit_legs.name=柴油动力腿部伺æœç³»ç»Ÿ item.dieselsuit_plate.name=柴油动力控制器 @@ -2389,17 +2469,17 @@ item.envsuit_boots.name=M1TTY环ä¿å¥—装é´å­ item.envsuit_helmet.name=M1TTY环ä¿å¥—装头盔 item.envsuit_legs.name=M1TTY环ä¿å¥—装护腿 item.envsuit_plate.name=M1TTY环ä¿å¥—装胸甲 -item.euphemium_boots.name=Epé´å­ -item.euphemium_capacitor.name=Ep电容 -item.euphemium_capacitor.desc=å…许被动分散累积的正能é‡ã€‚ -item.euphemium_helmet.name=Ep头盔 -item.euphemium_kit.name=Ep工具箱 -item.euphemium_legs.name=Ep护腿 -item.euphemium_plate.name=Ep胸甲 -item.euphemium_stopper.name=Ep-阻滞者 -item.explosive_lenses.name=炸è¯é€é•œé˜µåˆ— -item.explosive_lenses.desc=8个PBX炸è¯ç»„装的阵列,带有一个薄的$é“æŽ¨è¿›å™¨ã€ç¡¬é“外壳和$å°åž‹æ¡¥ä¸é›·ç®¡ã€‚ -item.fabsols_vodka.name=Fabsolä¼ç‰¹åŠ  +item.euphemium_boots.name=Ep元素é´å­ +item.euphemium_capacitor.name=Ep元素电容器 +item.euphemium_capacitor.desc=å…许被动分散累积的正能é‡. +item.euphemium_helmet.name=Ep元素头盔 +item.euphemium_kit.name=Ep元素工具箱 +item.euphemium_legs.name=Ep元素护腿 +item.euphemium_plate.name=Ep元素胸甲 +item.euphemium_stopper.name=Ep元素-阻滞者 +item.explosive_lenses.name=高能内爆炸è¯é˜µåˆ— +item.explosive_lenses.desc=ç”±8个PBXèšåˆç‰©ç²˜ç»“炸è¯è£…é…而æˆï¼Œå¸¦æœ‰ä¸€ä¸ªè–„åž‹é“æŽ¨è¿›å™¨, $硬é“外壳和å°åž‹æ¡¥ä¸å¼é›·ç®¡. +item.fabsols_vodka.name=Fabsolçš„ä¼ç‰¹åŠ  item.factory_core_advanced.name=高级工厂能æºç»„ä»¶ item.factory_core_titanium.name=工厂能æºç»„ä»¶ item.fallout.name=一堆è¾å°„å°˜ @@ -2442,8 +2522,8 @@ item.fluid_identifier_multi.info=通用æµä½“识别ç ï¼š item.fluid_identifier_multi.info2=次è¦ç±»åž‹ï¼š item.fluid_tank_empty.name=空通用æµä½“ç½ item.fluid_tank_full.name=通用æµä½“ç½: -item.fluid_tank_lead_empty.name=空å±é™©å“ç½ -item.fluid_tank_lead_full.name=å±é™©å“ç½ï¼š +item.fluid_tank_lead_empty.name=空的å±é™©å“æµä½“ç½ +item.fluid_tank_lead_full.name=å±é™©å“æµä½“ç½: item.fluorite.name=氟石粉 item.flywheel_beryllium.name=é“制飞轮 item.fmn.name=æ°Ÿç¡è¥¿æ³®ç‰‡ @@ -2472,7 +2552,7 @@ item.fusion_shield_chlorophyte.name=å¶ç»¿é‡‘属èšå˜å应堆覆层 item.fusion_shield_desh.name=Deshèšå˜å应堆覆层 item.fusion_shield_tungsten.name=é’¨èšå˜å应堆覆层 item.fusion_shield_vaporwave.name=蒸汽波å应堆覆层 -item.gadget_core.name=钚核心 +item.gadget_core.name=大型钚核心 item.gadget_explosive.name=ç‚¸è¯ item.gadget_kit.name=å°çŽ©æ„ å¥—ä»¶ item.gadget_wireing.name=线路 @@ -2556,7 +2636,7 @@ item.gun_avenger.name=CZ57å¤ä»‡è€…机枪 item.gun_b92.name=§9B92èƒ½é‡æ‰‹æžªÂ§r item.gun_b92_ammo.name=§9B92能é‡å•元§r item.gun_b93.name=§cB93èƒ½é‡æ‰‹æžªÂ§r -item.gun_benelli.name=伯奈利自动霰弹枪(Drum Mod) +item.gun_benelli.name=伯奈利自动霰弹枪(弹鼓) item.gun_bf.name=BEL item.gun_bf_ammo.name=Mk.Vå°åž‹AMAT-炮弹 –野ç«åž‹ item.gun_bio_revolver.name=Atlas @@ -2609,8 +2689,8 @@ item.gun_lever_action.name=é©¬è…¿æ æ†å¼éœ°å¼¹æžª[原版] item.gun_lever_action_ammo.name=12x74 鹿弹 item.gun_lever_action_dark.name=é©¬è…¿æ æ†å¼éœ°å¼¹æžª[黑暗] item.gun_lever_action_sonata.name=自æ€éœ°å¼¹ -item.gun_lever_action_sonata_2.name=§cSonata的麦克风§r -item.gun_lunatic_marksman.name=Lunatic狙击步枪 +item.gun_lever_action_sonata_2.name=§cå¥é¸£çš„麦克风§r +item.gun_lunatic_marksman.name=月都科技狙击步枪 item.gun_m2.name=勃朗å®M2HBåž‹é‡æœºæžª item.gun_minigun.name=CZ53机枪 item.gun_mirv.name=M42核弹å‘射器 "试验型MIRV" @@ -2671,9 +2751,9 @@ item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 鹿弹 item.gun_uzi.name=Uzi冲锋枪 item.gun_uzi_ammo.name=.22LRå­å¼¹ -item.gun_uzi_saturnite.name=土星Uzi冲锋枪 -item.gun_uzi_saturnite_silencer.name=带消音器的土星Uzi冲锋枪 -item.gun_uzi_silencer.name=带消音器的Uzi冲锋枪 +item.gun_uzi_saturnite.name=土星金属Uzi +item.gun_uzi_saturnite_silencer.name=带消音器的土星金属Uzi +item.gun_uzi_silencer.name=带消音器的Uzi item.gun_xvl1456.name=XVL1456é™¶å­åŠ å†œç‚®åŽŸåž‹æœº item.gun_xvl1456_ammo.name=贫化铀235å­å¼¹ item.gun_zomg.name=奇点能湮ç­å°„线“ZOMG炮†@@ -2751,8 +2831,9 @@ item.ingot_boron.name=硼锭 item.ingot_c4.name=一å—C-4 item.ingot_cadmium.name=镉锭 item.ingot_calcium.name=钙锭 -item.ingot_cdalloy.name=镉钢锭 -item.ingot_chainsteel.name=é‡é“¾é’¢ +item.ingot_cdalloy.name=镉钢åˆé‡‘é”­ +item.ingot_cft.name=结晶富勒烯 +item.ingot_chainsteel.name=沉é‡é“¾é’¢ item.ingot_co60.name=é’´-60é”­ item.ingot_cobalt.name=é’´é”­ item.ingot_combine_steel.name=CMB钢锭 @@ -2808,14 +2889,15 @@ item.ingot_red_copper.name=紫铜锭 item.ingot_reiium.name=é›·æ©é”­ item.ingot_rubber.name=橡胶锭 item.ingot_saturnite.name=土星锭 -item.ingot_schrabidate.name=Saé…¸é“é”­ -item.ingot_schrabidium.name=Sa326é”­ -item.ingot_schrabidium_fuel.name=Sa326燃料锭 -item.ingot_schraranium.name=低丰度Sa326é”­ -item.ingot_schraranium.desc=在Sa326嬗å˜å™¨ä¸­ç”±é“€åˆ¶æˆ -item.ingot_semtex.name=塞姆汀塑胶炸è¯å— -item.ingot_smore.name=S'more é”­ -item.ingot_solinium.name=Sa327é”­ +item.ingot_schrabidate.name=Sa326元素酸化é“é”­ +item.ingot_schrabidium.name=Sa326异å˜é“€é‡‘属锭 +item.ingot_schrabidium_fuel.name=Sa326异å˜é“€é‡‘属燃料锭 +item.ingot_schraranium.name=低丰度Sa326异å˜é“€é‡‘属锭 +item.ingot_schraranium.desc=在Sa326异å˜é“€é‡‘属嬗å˜å™¨ä¸­ç”±é“€é”­å¬—å˜è€Œæ¥ +item.ingot_semtex.name=å¡žå§†æ±€å¡‘èƒ¶ç‚¸è¯ +item.ingot_semtex.desc=塞姆汀H塑料炸è¯$适用于多ç§åº”用的明星炸è¯.$å¯é£Ÿç”¨ +item.ingot_smore.name=S'more饼干 +item.ingot_solinium.name=Sa327索林锭 item.ingot_sr90.name=é”¶-90é”­ item.ingot_starmetal.name=§9星辉锭§r item.ingot_steel.name=钢锭 @@ -2859,12 +2941,17 @@ item.iv_xp.name=ç»éªŒåŒ… item.iv_xp_empty.name=空的ç»éªŒåŒ… item.jackt.name=时尚防弹夹克 item.jackt2.name=时尚防弹夹克2:东京漂移 -item.jetpack_boost.name=弹跳背包 -item.jetpack_break.name=缓é™èƒŒåŒ… +item.jetpack.desc=本身å¯å•独穿戴! +item.jetpack_boost.name=强力喷气背包 +item.jetpack_boost.desc=拥有强劲动力的矢é‡å–·æ°”背包.$燃油消耗é‡å¤§å¹…增加. +item.jetpack_break.name=建筑工喷气背包 +item.jetpack_break.desc=å¯ä»¥è®©ä½ åœ¨ç©ºä¸­è‡ªåŠ¨æ‚¬åœçš„常规动力喷气背包.$æ½œè¡Œå°†å…³é—­æ‚¬åœæ¨¡å¼.$æ‚¬åœæ¨¡å¼å°†æ¶ˆè€—更少的燃料并增加你的空中机动性. item.jetpack_fly.name=喷气背包 +item.jetpack_fly.desc=常规动力喷气背包,æä¾›ç®€å•的上å‡åŠ¨åŠ›. item.jetpack_tank.name=å–·æ°”èƒŒåŒ…å¤‡ç”¨ç‡ƒæ–™ç½ item.jetpack_vector.name=矢é‡å–·æ°”背包 -item.journal_bj.name=被å¨å£«å¿Œæµ¸é€çš„笔记本 +item.jetpack_vector.desc=超高机动性喷气背包.$更高的燃料消耗率. +item.journal_bj.name=被å¨å£«å¿Œæ³¡æ¹¿é€çš„笔记本 item.journal_pip.name=生存主义者日记 item.journal_silver.name=承包商注释 item.key.name=钥匙 @@ -2885,7 +2972,9 @@ item.laser_crystal_digamma.name=Digamma迪伽马激光晶体 item.laser_crystal_dnt.desc=åŒèšæ€ä¸­å­-Spark费米å­è¶…晶体 item.laser_crystal_dnt.name=Spark激光晶体 item.lead_gavel.name=é“…æ§Œ +item.lead_gavel.desc=你被判决为铅中毒. item.lemon.name="柠檬" +item.lemon.desc=嗯,ä¸é”™. item.letter.name=å¿«æ·é‚®ä»¶ item.levitation_unit.name=é‡åŠ›æŽ§åˆ¶å™¨ item.lignite.name=è¤ç…¤ @@ -2898,7 +2987,9 @@ item.liquidator_plate.name=核废土清é“夫套装胸甲 item.lithium.name=锂锭 item.lodestone.name=ç£çŸ³ item.loop_stew.name=程åºçŒ¿ä¸“å±žæ—©é¤ +item.loop_stew.desc=一份éžå¸¸éžå¸¸éžå¸¸å¥åº·çš„æ—©é¤. item.loops.name=五彩麦圈 +item.loops.desc=bro,我能拿你一些麦圈å—? item.loot_10.name=10å·å¯¼å¼¹æˆ˜åˆ©ç®± item.loot_15.name=15å·å¯¼å¼¹æˆ˜åˆ©ç®± item.loot_misc.name=普通导弹战利箱 @@ -2925,28 +3016,44 @@ item.mechanism_rifle_2.name=先进步枪机构 item.mechanism_special.name=高科技武器机构 item.med_bag.name=医疗包 item.med_ipecac.name=åæ ¹é…Šå‚¬å剂 +item.med_ipecac.desc=苦涩的果æ±ä¼šä½¿ä½ çš„胃$强行排出里é¢çš„东西. item.med_ptsd.name=PTSD治疗è¯ç‰© +item.med_ptsd.desc=è¿™æ ¹æœ¬ä¸æ˜¯PTSD治疗è¯ç‰©,$åªæ˜¯æ¢äº†ä¸ªç“¶å­è£…çš„åæ ¹é…Š! item.med_schiziphrenia.name=抗精神分裂症è¯ç‰© +item.med_schiziphrenia.desc=求求了,让那声音消失,就一会儿.$ $...$最好ä¸è¦æœç”¨. item.medal_liquidator.name=核废土清é“夫勋章 item.meltdown_tool.name=达洛夫快速熔æ¯è£…ç½® -item.memespoon.name=§eeèŠ±å›­å›­ä¸ +item.memespoon.name=§eèŠ±å›­å›­ä¸ +item.memespoon.desc=§810级铲å­$§bæŒç”¨è€…在ç«ç®­è·³è·ƒæ—¶å¯é€ æˆæš´å‡»$§cå‡ç¼“ 20%% å¼€ç«é€Ÿåº¦$§cæ²¡æœ‰éšæœºçš„æš´å‡» item.memory.name=item.null.name item.mese_gavel.name=Meseæ§Œ item.mese_pickaxe.name=Meseé• item.meteor_charm.name=陨石项链 item.meteor_remote.name=陨石å¬å”¤å™¨ item.meteorite_sword.name=陨石剑 -item.meteorite_sword_seared.name=陨石剑(烧焦) -item.meteorite_sword_reforged.name=陨石剑(é‡é“¸) -item.meteorite_sword_hardened.name=陨石剑(硬化) -item.meteorite_sword_alloyed.name=陨石剑(åˆé‡‘) -item.meteorite_sword_machined.name=陨石剑(机械加工) -item.meteorite_sword_treated.name=陨石剑(精制) -item.meteorite_sword_etched.name=陨石剑(刻蚀) -item.meteorite_sword_bred.name=陨石剑(增殖) -item.meteorite_sword_irradiated.name=陨石剑(è¾ç…§) -item.meteorite_sword_fused.name=陨石剑(熔èž) -item.meteorite_sword_baleful.name=陨石剑(凶æ¶) +item.meteorite_sword.desc=由一颗å è½ä¹‹æ˜Ÿé”»é€ è€Œæˆ$比大多数地çƒä¸Šçš„刀刃锋利 +item.meteorite_sword_seared.name=陨石剑 (炽热) +item.meteorite_sword_seared.desc=ç«ç„°å¢žå¼ºäº†åˆ€åˆƒ$让它更加强大 +item.meteorite_sword_reforged.name=陨石剑 (é‡é“¸) +item.meteorite_sword_reforged.desc=这把剑已ç»è¢«é‡é“¸äº†$以改正过去的缺陷 +item.meteorite_sword_hardened.name=陨石剑 (硬化) +item.meteorite_sword_hardened.desc=æžé«˜çš„压力让$刀刃进一步的硬化了 +item.meteorite_sword_alloyed.name=陨石剑 (åˆé‡‘化) +item.meteorite_sword_alloyed.desc==钴元素填充剑身上的裂ç¼$进一步加强了这把剑 +item.meteorite_sword_machined.name=陨石剑 (机械加工) +item.meteorite_sword_machined.desc=使用了先进的机械æ¥$进一步改进刀刃 +item.meteorite_sword_treated.name=陨石剑 (治疗) +item.meteorite_sword_treated.desc=化学物质的应用使$这把剑更加强大 +item.meteorite_sword_etched.name=陨石剑 (蚀刻) +item.meteorite_sword_etched.desc=é…¸æ¸…æ´—äº†åŽŸææ–™,$打造出了这把完美的剑 +item.meteorite_sword_bred.name=陨石剑 (增殖) +item.meteorite_sword_bred.desc=巨大的热é‡å’Œè¾å°„$åŽ‹ç¼©äº†è¿™æŠŠå‰‘çš„ææ–™ +item.meteorite_sword_irradiated.name=陨石剑 (è¾ç…§å¤„ç†) +item.meteorite_sword_irradiated.desc=原å­çš„力é‡$èµ‹äºˆäº†è¿™æŠŠå‰‘æ–°çš„åŠ›é‡ +item.meteorite_sword_fused.name=陨石剑 (熔èž) +item.meteorite_sword_fused.desc=è¿™æŠŠå‰‘å·²ç»æ²æµ´è¿‡äº†$æ¥è‡ªæ˜Ÿæ˜Ÿçš„远å¤åŠ›é‡ +item.meteorite_sword_baleful.name=陨石剑 (B.F野ç«çƒ§ç‚¼å¤„ç†) +item.meteorite_sword_baleful.desc=这把剑在远远超过$æ­£å¸¸ææ–™æ‰€èƒ½æ‰¿å—çš„æ¸©åº¦ä¸‹è¢«é”»é€ å‡ºæ¥ item.mike_cooling_unit.name=氘冷å´è£…ç½® item.mike_core.name=é“€æ¶‚å±‚æ°˜ç½ item.mike_deut.name=æ°˜ç½ @@ -2981,6 +3088,7 @@ item.missile_nuclear_cluster.name=热核导弹 item.missile_rain.name=炸弹雨 item.missile_schrabidium.name=Sa326导弹 item.missile_shuttle.name=万金罗宾航天飞机 +item.missile_shuttle.desc=今夜, 在bo''om gear真人秀上:$Jameså¸å«é“…汽油å¸å—¨äº†,$Richard把整个项目的预算都花在了$一张æŸåçš„PNG色图文件上,$而我忘记了打开RBMKå应堆的$水循环系统,ç­‰å应过æ¥,$整个基地都被炸飞了. item.missile_skin_camo.name=导弹外壳:迷彩 item.missile_skin_color.desc=我å†ä¹Ÿæ‰¾ä¸åˆ°æˆ‘çš„å¯¼å¼¹äº†ï¼ item.missile_skin_desert.name=导弹外壳:沙漠迷彩 @@ -3000,6 +3108,7 @@ item.missile_skin_soviet_glory.desc=уÑлуга перевода недоÑту item.missile_skin_soviet_stank.name=导弹外壳:è‹ç»´åŸƒä¸æœ½ item.missile_skin_soviet_stank.desc=这个真的很有60年代的味é“。 item.missile_soyuz.name=è”盟-FGè¿è½½ç«ç®­ +item.missile_soyuz.desc=Skin:$Original$Luna Space Center$Post War item.missile_soyuz_lander.name=è”盟å·è½¨é“舱 item.missile_soyuz_lander.desc=劣质ç€é™†å™¨ï¼ item.missile_strong.name=强化型高爆导弹 @@ -3010,8 +3119,8 @@ item.mold_base.name=毛å¯é“¸é€ æ¨¡å…· item.mold.name=铸造模具 item.morning_glory.name=牵牛花 item.motor.name=马达 -item.motor_bismuth.name=铋马达 -item.motor_desh.name=Desh马达 +item.motor_bismuth.name=铋制马达 +item.motor_desh.name=德什制马达 item.mp_c_1.name=1级导弹制导芯片 item.mp_c_2.name=2级导弹制导芯片 item.mp_c_3.name=3级导弹制导芯片 @@ -3146,6 +3255,7 @@ item.multitool_miner.name=动力拳套[采矿激光] item.multitool_silk.name=动力拳套[精准采集] item.multitool_sky.name=动力拳套[划破天际] item.mysteryshovel.name=易碎锹 +item.mysteryshovel.desc=å¤±åŽ»äº†å´æ²¡æœ‰è¢«å¿˜è®° item.n2_charge.name=å¤§åž‹ç‚¸è¯ item.neutrino_lens.name=中å­é€é•œ item.neutron_reflector.name=中å­åå°„æ¿ @@ -3260,31 +3370,31 @@ item.ore.titanium=é’› item.ore.tungsten=é’¨ item.ore.thorium=é’ item.ore.uranium=é“€ -item.ore_bedrock.name=基岩%s矿 -item.ore_byproduct.b_aluminium.name=铿™¶ä½“碎片 -item.ore_byproduct.b_bismuth.name=铋晶体碎片 -item.ore_byproduct.b_calcium.name=钙晶体碎片 -item.ore_byproduct.b_copper.name=铜晶体碎片 -item.ore_byproduct.b_iron.name=铿™¶ä½“碎片 -item.ore_byproduct.b_lead.name=铅晶体碎片 -item.ore_byproduct.b_lithium.name=锂晶体碎片 -item.ore_byproduct.b_polonium.name=钋晶体碎片 -item.ore_byproduct.b_radium.name=镭晶体碎片 -item.ore_byproduct.b_silicon.name=硅晶体碎片 -item.ore_byproduct.b_sulfur.name=硫晶体碎片 -item.ore_byproduct.b_technetium.name=锿™¶ä½“碎片 -item.ore_byproduct.b_titanium.name=钛晶体碎片 -item.ore_byproduct.b_uranium.name=铀晶体碎片 -item.ore_centrifuged.name=离心%s矿 -item.ore_cleaned.name=清æ´%s矿 -item.ore_deepcleaned.name=深清æ´%s矿 -item.ore_enriched.name=富集%s矿 -item.ore_nitrated.name=ç¡åŒ–%s矿 -item.ore_nitrocrystalline.name=亚ç¡åŸºç»“æ™¶%s矿 -item.ore_purified.name=净化%s矿 -item.ore_radcleaned.name=ç»è¾å°„清æ´çš„%s矿 -item.ore_seared.name=ç¼çƒ­çš„%s矿 -item.ore_separated.name=分离的%s矿 +item.ore_bedrock.name=%s 基岩矿粉 +item.ore_byproduct.b_aluminium.name=结晶é“碎片 +item.ore_byproduct.b_bismuth.name=结晶铋碎片 +item.ore_byproduct.b_calcium.name=结晶钙碎片 +item.ore_byproduct.b_copper.name=结晶铜碎片 +item.ore_byproduct.b_iron.name=结晶é“碎片 +item.ore_byproduct.b_lead.name=结晶铅碎片 +item.ore_byproduct.b_lithium.name=结晶锂碎片 +item.ore_byproduct.b_polonium.name=结晶钋碎片 +item.ore_byproduct.b_radium.name=结晶镭碎片 +item.ore_byproduct.b_silicon.name=结晶硅碎片 +item.ore_byproduct.b_sulfur.name=结晶硫碎片 +item.ore_byproduct.b_technetium.name=结晶é”碎片 +item.ore_byproduct.b_titanium.name=结晶钛碎片 +item.ore_byproduct.b_uranium.name=结晶铀碎片 +item.ore_centrifuged.name=离心 %s 基岩矿粉 +item.ore_cleaned.name=洗净 %s 基岩矿粉 +item.ore_deepcleaned.name=æ·±åº¦æ¸…æ´ %s 基岩矿粉 +item.ore_enriched.name=富集 %s 基岩矿粉 +item.ore_nitrated.name=ç¡åŒ– %s 基岩矿粉 +item.ore_nitrocrystalline.name=ç¡åŒ–结晶 %s 基岩矿粉 +item.ore_purified.name=纯化 %s 基岩矿粉 +item.ore_radcleaned.name=è¾ç…§æ¸…æ´ %s 基岩矿粉 +item.ore_seared.name=ç¼çƒ§ %s 基岩矿粉 +item.ore_separated.name=分离æçº¯ %s 基岩矿粉 item.overfuse.name=奇异螺ä¸åˆ€ item.overfuse.desc=说啥? item.oxy_mask.name=æ°§æ°”é¢ç½© @@ -3325,6 +3435,7 @@ item.particle_strange.name=奇夸克胶囊 item.particle_tachyon.name=超光速粒å­å¯†å°èƒ¶å›Š item.parts_legendary.name=传奇零件 item.peas.name=豌豆 +item.peas.desc=他接å—了你的贡å“. item.pedestal_steel.name=钢底座 item.pellet_advanced.name=高级Watz性能增强剂 item.pellet_antimatter.name=å物质团 @@ -3411,6 +3522,7 @@ item.plan_c.desc=致死 item.plant_item.mustardwillow.name=èŠ¥å­æŸ³å¶ item.plant_item.rope.name=麻绳 item.plant_item.tobacco.name=çƒŸå¶ +item.plastic_bag.name=塑料袋 item.plate_advanced_alloy.name=高级åˆé‡‘æ¿ item.plate_aluminium.name=铿¿ item.plate_armor_ajr.name=é“çš®è£…ç”²æ¿ @@ -3446,6 +3558,7 @@ item.plate_saturnite.name=åœŸæ˜Ÿæ¿ item.plate_schrabidium.name=Sa326æ¿ item.plate_steel.name=é’¢æ¿ item.plate_titanium.name=é’›æ¿ +item.plate_welded.name=焊接的%sæ¿ item.polaroid.name=å光片 item.pollution_detector.name=污染探测器 item.powder_actinium.name=锕粉 @@ -3456,6 +3569,7 @@ item.powder_asbestos.name=石棉粉 item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r item.powder_ash.coal.name=ç…¤ç° item.powder_ash.fly.name=飞尘 +item.powder_ash.fullerene.name=富勒烯 item.powder_ash.misc.name=ç°å°˜ item.powder_ash.soot.name=ç»†çƒŸç° item.powder_ash.wood.name=æœ¨ç° @@ -3476,7 +3590,7 @@ item.powder_caesium.name=铯粉 item.powder_calcium.name=钙粉 item.powder_cerium.name=铈粉 item.powder_cerium_tiny.name=å°æ’®é“ˆç²‰ -item.powder_chlorocalcite.name=氯方解石 +item.powder_chlorocalcite.name=氯方解石粉 item.powder_chlorophyte.name=å¶ç»¿ç²‰ item.powder_cloud.name=云粉末 item.powder_co60.name=é’´-60粉 @@ -3498,8 +3612,8 @@ item.powder_diamond.name=钻石粉 item.powder_dineutronium.name=åŒèšä¸­å­æ€ç´ ç²‰ item.powder_dura_steel.name=高速钢粉 item.powder_emerald.name=绿å®çŸ³ç²‰ -item.powder_euphemium.name=Ep粉 -item.powder_euphemium.desc=粉红色$å°èµ·æ¥åƒè‰èŽ“ã€‚ +item.powder_euphemium.name=Ep元素粉 +item.powder_euphemium.desc=粉色的粉末..$å°èµ·æ¥åƒè‰èŽ“. item.powder_fertilizer.name=工业肥料 item.powder_fire.name=ç«ç„°ç²‰ item.powder_fire.desc=ç”¨äºŽå¤šç”¨é€”ç‚¸å¼¹ï¼šç‡ƒçƒ§å¼¹å¾ˆæœ‰è¶£ï¼ @@ -3578,6 +3692,7 @@ item.primer_buckshot.name=鹿弹底ç«[x12] item.protection_charm.name=守护项链 item.prototype_kit.name=原型 套件 item.pudding.name=å¸ƒä¸ +item.pudding.desc=如果他åšäº†å‘¢?$如果他没有呢?$如果这个世界是布ä¸åšçš„å‘¢? item.pwr_fuel.bfb_am_mix.name=燃料级镅压水堆BFB燃料棒 item.pwr_fuel.bfb_pu241.name=é’š-241压水堆BFB棒 item.pwr_fuel.hea242.name=HEA-242 高浓缩度镅-242压水堆燃料棒 @@ -3628,44 +3743,45 @@ item.radaway.name=消è¾å® item.radaway_flush.name=超级消è¾å® item.radaway_strong.name=强效消è¾å® item.radx.name=防è¾å°„è¯ -item.radx.desc=在3分钟内增加0.2(37%)的抗è¾å°„能力 -item.rag.name=布 -item.rag_damp.name=湿布 -item.rag_piss.name=沾有尿的布 -item.rbmk_fuel_balefire.name=RBMKå应堆野ç«ç‡ƒæ–™æ£’ -item.rbmk_fuel_balefire_gold.name=RBMKå应堆激活æ€é‡‘-198燃料棒 -item.rbmk_fuel_drx.name=§cRBMKå应堆F迪伽马粒å­ç‡ƒæ–™æ£’§r -item.rbmk_fuel_empty.name=空 RBMKå应堆燃料棒 -item.rbmk_fuel_flashlead.name=RBMKå应堆闪光铅燃料棒 -item.rbmk_fuel_hea241.name=HEA-241 RBMKå应堆高浓缩度镅-241燃料棒 -item.rbmk_fuel_hea242.name=HEA-242 RBMKå应堆高浓缩度镅-242燃料棒 -item.rbmk_fuel_heaus.name=HEAus RBMKå应堆高浓缩度奥斯燃料棒 -item.rbmk_fuel_hen.name=HEN RBMKå应堆高浓缩度镎燃料棒 -item.rbmk_fuel_hes.name=HES RBMKå应堆高浓缩度Sa326燃料棒 -item.rbmk_fuel_hep.name=HEP-239 RBMKå应堆高浓缩度钚-239燃料棒 -item.rbmk_fuel_hep241.name=HEP-241 RBMKå应堆高浓缩度钚-241燃料棒 -item.rbmk_fuel_heu233.name=HEU-233 RBMKå应堆高浓缩度铀-233燃料棒 -item.rbmk_fuel_heu235.name=HEU-235 RBMKå应堆高浓缩度铀-235燃料棒 -item.rbmk_fuel_lea.name=LEA RBMKå应堆低浓缩度镅-242燃料棒 -item.rbmk_fuel_leaus.name=LEAus RBMKå应堆低浓缩度奥斯燃料棒 -item.rbmk_fuel_lep.name=LEP RBMKå应堆低浓缩度钚-239燃料棒 -item.rbmk_fuel_les.name=LES RBMKå应堆低浓缩度Sa326燃料棒 -item.rbmk_fuel_mea.name=MEA RBMKå应堆中浓缩度镅-242燃料棒 -item.rbmk_fuel_men.name=MEN RBMKå应堆中浓缩度镎-237燃料棒 -item.rbmk_fuel_mep.name=MEP RBMKå应堆中浓缩度钚-239燃料棒 -item.rbmk_fuel_mes.name=MES RBMK中浓缩度Sa326燃料棒 -item.rbmk_fuel_meu.name=MEU RBMK中浓缩度铀-235燃料棒 -item.rbmk_fuel_mox.name=MOX RBMKå应堆燃料棒 -item.rbmk_fuel_po210be.name=é’‹210-é“ RBMKååº”å †ä¸­å­æº -item.rbmk_fuel_pu238be.name=é’š238-é“ RBMKååº”å †ä¸­å­æº -item.rbmk_fuel_ra226be.name=é•­226-é“ RBMKååº”å †ä¸­å­æº -item.rbmk_fuel_thmeu.name=ThMEU RBMKå应堆中浓缩度铀-233导å‘é’燃料棒 -item.rbmk_fuel_ueu.name=NU RBMKå应堆未浓缩铀燃料棒 -item.rbmk_fuel_zfb_am_mix.name=ZFB 燃料级镅RBMKå应堆燃料棒 -item.rbmk_fuel_zfb_bismuth.name=ZFB é“‹RBMKå应堆燃料棒 -item.rbmk_fuel_zfb_pu241.name=ZFB é’š-241RBMKå应堆燃料棒 -item.rbmk_lid.name=RBMKå应堆覆盖层 -item.rbmk_lid_glass.name=RBMKå应堆玻璃覆盖层 +item.radx.desc=增加0.2(37%%)的抗è¾å°„能力,æŒç»­3分钟 +item.rag.name=破布 +item.rag.desc=ä¸¢è¿›æ°´ä¸­åˆæˆæ¹¿ç ´å¸ƒ.$å³å‡»å°¿åœ¨ç ´å¸ƒä¸Š. +item.rag_damp.name=湿破布 +item.rag_piss.name=尿湿润的破布 +item.rbmk_fuel_balefire.name=RBMK石墨å¼å应堆野ç«ç‡ƒæ–™æ£’ +item.rbmk_fuel_balefire_gold.name=激活æ€é‡‘-198 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_drx.name=§cÏœè¿ªä¼½é©¬ç²’å­ RBMK石墨å¼å应堆燃料棒§r +item.rbmk_fuel_empty.name=空 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_flashlead.name=激活æ€é“… RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hea241.name=HEA-241 高浓缩度镅-241 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hea242.name=HEA-242 高浓缩度镅-242 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_heaus.name=HEAus 高浓缩度奥金 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hen.name=HEN 高浓缩度镎-237 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hes.name=HES 高浓缩度Sa-326 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hep.name=HEP-239 高浓缩度钚-239 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_hep241.name=HEP-241 高浓缩度钚-241 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_heu233.name=HEU-233 高浓缩度铀-233 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_heu235.name=HEU-235 高浓缩度铀-235 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_lea.name=LEA 低浓缩度镅-242 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_leaus.name=LEAus 低浓缩度奥金 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_lep.name=LEP 低浓缩度钚-239 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_les.name=LES 低浓缩度Sa-326 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_mea.name=MEA 中浓缩度镅-242 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_men.name=MEN 中浓缩度镎-237 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_mep.name=MEP 中浓缩度钚-239 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_mes.name=MES 中浓缩度Sa-326 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_meu.name=MEU 中浓缩度铀-235 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_mox.name=MOX é’š-铀混åˆRBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_po210be.name=é’‹210-é“RBMK石墨å¼ååº”å †ä¸­å­æº +item.rbmk_fuel_pu238be.name=é’š238-é“RBMK石墨å¼ååº”å †ä¸­å­æº +item.rbmk_fuel_ra226be.name=é•­226-é“RBMK石墨å¼ååº”å †ä¸­å­æº +item.rbmk_fuel_thmeu.name=ThMEU 中浓缩度铀-235导å‘é’ RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_ueu.name=NU 未浓缩铀 RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_zfb_am_mix.name=ZFB 锆混åˆå应堆级镅快速增殖å¼RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_zfb_bismuth.name=ZFB 锆混åˆé“‹å¿«é€Ÿå¢žæ®–å¼RBMK石墨å¼å应堆燃料棒 +item.rbmk_fuel_zfb_pu241.name=ZFB 锆混åˆé’š-241快速增殖å¼RBMK石墨å¼å应堆燃料棒 +item.rbmk_lid.name=RBMK石墨å¼å应堆覆盖层 +item.rbmk_lid_glass.name=RBMK石墨å¼å应堆玻璃覆盖层 item.rbmk_pellet_balefire.name=野ç«ç‡ƒæ–™èŠ¯å— item.rbmk_pellet_balefire_gold.name=激活æ€é‡‘-198ç‡ƒæ–™èŠ¯å— item.rbmk_pellet_drx.name=§cF迪伽马粒å­ç‡ƒæ–™èНå—§r @@ -3816,16 +3932,16 @@ item.rod_lithium.name=锂棒 item.rod_mox_fuel.name=æ ¸å应堆 MOX燃料棒 item.rod_mox_fuel_depleted.name=æ ¸å应堆 枯竭MOX燃料棒 item.rod_neptunium.name=镎燃料棒 -item.rod_of_discord.name=æ··æ²Œä¼ é€æ– +item.rod_of_discord.name=æ··æ²Œä¼ é€æ³•æ– item.rod_plutonium.name=钚棒 -item.rod_plutonium_fuel.name=æ ¸å应堆 钚燃料棒 -item.rod_plutonium_fuel_depleted.name=æ ¸å应堆 枯竭钚燃料棒 -item.rod_polonium.name=钋棒 -item.rod_pu238.name=é’š-238燃料棒 -item.rod_pu239.name=é’š-239燃料棒 -item.rod_pu240.name=é’š-240燃料棒 -item.rod_quad_balefire.name=å››è”野ç«ç‡ƒæ–™æ£’ -item.rod_quad_balefire_blazing.name=炽热的四è”野ç«ç‡ƒæ–™æ£’ +item.rod_plutonium_fuel.name=钚燃料棒 +item.rod_plutonium_fuel_depleted.name=枯竭钚燃料棒 +item.rod_polonium.name=é’‹-210棒 +item.rod_pu238.name=é’š238燃料棒 +item.rod_pu239.name=é’š239燃料棒 +item.rod_pu240.name=é’š240燃料棒 +item.rod_quad_balefire.name=å››è”BF燃料棒 +item.rod_quad_balefire_blazing.name=炽热的四è”BF燃料棒 item.rod_quad_coolant.name=å››è”燃料棒[冷崿¶²] item.rod_quad_euphemium.name=枯竭的四è”Sa326燃料棒 item.rod_quad_lead.name=å››è”铅棒 @@ -3933,16 +4049,18 @@ item.sat_resonator.name=Xæ™¶ä½“å…±æŒ¯å«æ˜Ÿ item.sat_scanner.name=ç»˜æµ‹å’Œèµ„æºæŽ¢æµ‹å«æ˜Ÿ item.sawblade.name=锯片 item.schnitzel_vegan.name=“素â€è‚‰æŽ’ -item.schrabidium_axe.name=Sa326æ–§ -item.schrabidium_boots.name=Sa326é´å­ -item.schrabidium_hammer.name=Sa326锤 -item.schrabidium_helmet.name=Sa326头盔 -item.schrabidium_hoe.name=Sa326锄 -item.schrabidium_legs.name=Sa326护腿 -item.schrabidium_pickaxe.name=Sa326é• -item.schrabidium_plate.name=Sa326胸甲 -item.schrabidium_shovel.name=Sa326锹 -item.schrabidium_sword.name=Sa326剑 + +item.schrabidium_axe.name=Sa326异å˜é“€é‡‘属斧 +item.schrabidium_boots.name=Sa326异å˜é“€é‡‘属é´å­ +item.schrabidium_hammer.name=Sa326异å˜é“€é‡‘属锤 +item.schrabidium_hammer.desc=尽管上é¢å†™ç€ "+1000000000"$的伤害", 但它实际上是 "一击必æ€ä»»ä½•东西" +item.schrabidium_helmet.name=Sa326异å˜é“€é‡‘属头盔 +item.schrabidium_hoe.name=Sa326异å˜é“€é‡‘属锄 +item.schrabidium_legs.name=Sa326异å˜é“€é‡‘属护腿 +item.schrabidium_pickaxe.name=Sa326异å˜é“€é‡‘å±žé• +item.schrabidium_plate.name=Sa326异å˜é“€é‡‘属胸甲 +item.schrabidium_shovel.name=Sa326异å˜é“€é‡‘属锹 +item.schrabidium_sword.name=Sa326异å˜é“€é‡‘属剑 item.scrap.name=废料 item.scrap_nuclear.name=放射性废料 item.scrap_oil.name=油性废料 @@ -3964,10 +4082,14 @@ item.servo_set.name=伺æœè£…ç½® item.servo_set_desh.name=Desh伺æœè£…ç½® item.shackles.name=æž·é” item.shimmer_axe.name=闪耀斧 +item.shimmer_axe.desc=木æ! +item.shimmer_axe.desc.hide=shim的工具箱得到了 扩-展 item.shimmer_axe_head.name=é‡åž‹æ–§å¤´ item.shimmer_handle.name=强化èšåˆç‰©æ‰‹æŸ„ item.shimmer_head.name=é‡åž‹é”¤å¤´ item.shimmer_sledge.name=闪耀锤 +item.shimmer_sledge.desc=å¯ä»¥ç ´å一切东西,甚至包括传é€é—¨æ–¹å—. +item.shimmer_sledge.desc.hide=shimmer别$放下那把锤å­$你会伤到别人的$shimmer别$shimmer求你了 item.singularity.name=奇点 item.singularity_counter_resonant.name=å¯æŽ§åæŒ¯è°å¥‡ç‚¹ item.singularity_micro.name=微型奇点 @@ -4055,7 +4177,7 @@ item.steel_shovel.name=钢锹 item.steel_sword.name=钢剑 item.stick_c4.name=C-4ç‚¸è¯æ£’ item.stick_dynamite.name=ç‚¸è¯æ£’ -item.stick_dynamite_fishing.name=æ•é±¼ç‚¸è¯æ£’ +item.stick_dynamite_fishing.name=ç‚¸é±¼ç”¨ç‚¸è¯æ£’ item.stick_semtex.name=å¡žå§†æ±€å¡‘èƒ¶ç‚¸è¯æ£’ item.stick_tnt.name=TNT棒 item.stopsign.name=åœè½¦æ ‡å¿—战斧 @@ -4089,6 +4211,7 @@ item.tank_waste_7.name=泥浆容器 item.tank_waste_8.name=泥浆容器 item.telepad.name=ä¼ é€éƒ¨ä»¶ item.tem_flakes.name=Tem薄片 +item.tem_flakes.desc=能回å¤ä¸€é¢—心的廉价Tem薄片!!!$能回å¤ä¸€é¢—心的Tem薄片$能回å¤ç”Ÿå‘½å€¼çš„Tem薄片(昂贵) item.template_folder.name=æœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹ item.template_folder.desc=机器模æ¿ï¼šçº¸å¼ +染料$æµä½“识别ç ï¼šé“æ¿+染料$锻模:空白锻模 $警报声轨:ç»ç¼˜ä½“+é’¢æ¿ item.test_nuke_igniter.name=点ç«å™¨ @@ -4119,10 +4242,10 @@ item.titanium_shovel.name=钛锹 item.titanium_sword.name=钛剑 item.toothpicks.name=牙签 item.train.cargo_tram.name=å¹³æ¿è½½è´§ç”µè½¦ -item.trenchmaster_boots.name=Trenchmasterçš„é´å­ -item.trenchmaster_helmet.name=Trenchmaster的头盔 -item.trenchmaster_legs.name=Trenchmaster的护腿 -item.trenchmaster_plate.name=Trenchmaster的胸甲 +item.trenchmaster_boots.name=战术大师的é´å­ +item.trenchmaster_helmet.name=战术大师的头盔 +item.trenchmaster_legs.name=战术大师的护腿 +item.trenchmaster_plate.name=战术大师的胸甲 item.trinitite.name=玻璃石 item.tritium_deuterium_cake.name=氚氘饼 item.tritium_deuterium_cake.desc=䏿˜¯çœŸæ­£çš„蛋糕,而是很棒的$èšå˜ç‡ƒæ–™ï¼ @@ -4142,7 +4265,9 @@ item.turret_rocket_ammo.name=ç«ç®­ç‚®å¡”å¼¹è¯ item.turret_spitfire_ammo.name=防空炮弹 item.turret_tau_ammo.name=é™¶å­ç‚®å¡”é“€å¼¹è¯ item.twinkie.name=å°è›‹ç³• +item.twinkie.desc=600å¹´å‰å°±è¿‡æœŸäº†! item.ullapool_caber.name=é˜¿å‹’æµ¦é•¿æœ¨æ† +item.ullapool_caber.desc=è‹æ ¼å…°å¼é«˜æ•ˆé¢éƒ¨åˆ‡é™¤æœ¯.$一个清醒的人会扔掉它... item.undefined.name=å½¢æ€æœªå®šä¹‰ç‰©è´¨ item.upgrade_5g.name=5Gè¾å°„å‘射器å‡çº§ item.upgrade_afterburn_1.name=一级粉色机器å‡çº§ @@ -4183,7 +4308,14 @@ item.v1.name=V1 item.volcanic_pickaxe.name=ç†”å²©é• item.wand_d.name=è°ƒè¯•é­”æ– item.wand_k.name=å»ºç­‘é­”æ– +item.wand_k.block=ä¿å­˜çš„æ–¹å—: %s +item.wand_k.desc=创造模å¼ä¸“有物å“$"æ¯ç­å¾€å¾€å¸¦æ¥åˆ›é€ "$(å³å‡»ä»¥é€‰æ‹©ç‚¹,$shiftå³å‡»é€‰æ‹©æ”¾ç½®æ–¹å—ç§ç±»!) +item.wand_k.null=未选择ä½ç½®! +item.wand_k.pos=åæ ‡: %s, %s, %s item.wand_s.name=ç»“æž„é­”æ– +item.wand_s.desc=创造模å¼ä¸“有物å“$"æ¯ä¸ªäººéƒ½èƒ½ä½¿ç”¨çš„快速建造多方å—结构的工具!"$(shiftå³å‡»ä»¥åˆ‡æ¢åˆ°ä¸‹ä¸€ç»“æž„,$å³å‡»ä»¥ç”Ÿæˆç»“æž„!) +item.structure_custommachine.name=è‡ªå®šä¹‰æœºå™¨ç»“æž„è¾“å‡ºæ– +item.structure_custommachine.desc=点击自定义机器结构定ä½é”šä»¥ç¡®è®¤$自定义机器核心å—çš„ä½ç½®.$å°†Position1å’ŒPosition2之间所有方å—$以åŠå…¶metadataæ•°æ®ä¸€èµ·è¾“出到hbmConfig下的"CMstructureOutput.txt". item.warhead_buster_large.name=大型掩体破å弹头 item.warhead_buster_medium.name=中型掩体破å弹头 item.warhead_buster_small.name=å°åž‹æŽ©ä½“ç ´å弹头 @@ -4265,22 +4397,27 @@ item.wire_schrabidium.name=Sa326线 item.wire_tungsten.name=钨线 item.wiring_red_copper.name=ç”µç¼†å· item.wood_gavel.name=木槌 +item.wood_gavel.desc=ç °ç °! item.wrench.name=ç®¡é“æ‰³æ‰‹ -item.wrench_archineer.name=Archineer扳手 +item.wrench.desc=æœºæ¢°å¸ˆç†æŸ¥å¾· +item.wrench_archineer.name=Archineer的扳手 item.wrench_flipped.name=刺刀扳手 -item.xanax.name=NAXA 抗迪伽马è¯ç‰© -item.xanax.desc=移除500mDRX迪伽马è¾å°„ +item.wrench_flipped.desc=扳手2:扳手 +item.xanax.name=NAXA 抗Ϝ迪伽马è¾å°„è¯ç‰© +item.xanax.desc=移除500mDRX的Ϝ迪伽马è¾å°„ item.zirconium_legs.name=锆质护腿 -itemGroup.tabBlocks=HBM çŸ¿çŸ³å’Œæ–¹å— -itemGroup.tabConsumable=HBM 食物和装备 -itemGroup.tabControl=HBM 机器项目和燃料 -itemGroup.tabMachine=HBM 机器 -itemGroup.tabMissile=HBM å¯¼å¼¹å’Œå«æ˜Ÿ -itemGroup.tabNuke=HBM 炸弹 -itemGroup.tabParts=HBM 资æºå’Œé›¶ä»¶ -itemGroup.tabTemplate=HBM æ¨¡æ¿ -itemGroup.tabTest=HBM的核科技mod测试项[S166ã€Bismarckã€nukesteveè”åˆæ±‰åŒ–] -itemGroup.tabWeapon=HBM 武器和炮塔 + +itemGroup.tabBlocks=æ ¸æŠ€æœ¯çŸ¿çŸ³å’Œæ–¹å— +itemGroup.tabConsumable=核技术食物和装备 +itemGroup.tabControl=核技术机器项目和燃料 +itemGroup.tabMachine=核技术机器 +itemGroup.tabMissile=æ ¸æŠ€æœ¯å¯¼å¼¹å’Œå«æ˜Ÿ +itemGroup.tabNuke=核技术炸弹 +itemGroup.tabParts=核技术资æºå’Œé›¶ä»¶ +itemGroup.tabTemplate=æ ¸æŠ€æœ¯æ¨¡æ¿ +itemGroup.tabTest=HBM的核科技mod测试项[S166, Bismarck, nukesteveè”åˆæ±‰åŒ–] +itemGroup.tabWeapon=核技术武器和炮塔 + potion.hbm_bang=! ! ! potion.hbm_death=é‡åº¦çªå˜ potion.hbm_lead=铅中毒 @@ -4384,8 +4521,8 @@ tile.basalt_fluorite.name=å¯Œå«æ°ŸçŸ³çš„玄武岩 tile.basalt_gem.name=富å«å®çŸ³çš„玄武岩 tile.basalt_polished.name=抛光玄武岩 tile.basalt_smooth.name=平滑玄武岩 -tile.basalt_sulfur.name=富å«ç¡«çš„玄武岩 -tile.basalt_tiles.name=玄武岩砖 +tile.basalt_sulfur.name=富硫玄武岩 +tile.basalt_tiles.name=玄武岩瓦 tile.blast_door.name=防爆闸门 tile.block_actinium.name=é”•å— tile.block_advanced_alloy.name=高级åˆé‡‘å— @@ -4396,16 +4533,16 @@ tile.block_bakelite.name=ç”µæœ¨å— tile.block_beryllium.name=é“å— tile.block_bismuth.name=é“‹å— tile.block_boron.name=ç¡¼å— -tile.block_c4.name=C-4å— +tile.block_c4.name=C-4炸è¯å— tile.block_cadmium.name=é•‰å— -tile.block_cap_fritz.name=å¼—é‡ŒèŒ¨ç“¶ç›–æ–¹å— -tile.block_cap_korl.name=Korlç“¶ç›–æ–¹å— -tile.block_cap_nuka.name=æ ¸å­å¯ä¹ç“¶ç›–æ–¹å— -tile.block_cap_quantum.name=樱桃味核å­å¯ä¹ç“¶ç›–æ–¹å— -tile.block_cap_rad.name=è¾å°„ S~æ ¸å­å¯ä¹ç“¶ç›–æ–¹å— -tile.block_cap_sparkle.name=æ ¸å­å¯ä¹ç“¶ç›–æ–¹å— -tile.block_cap_star.name=å¤•é˜³æ²™å£«æ˜Ÿæ˜Ÿç“¶ç›–æ–¹å— -tile.block_cap_sunset.name=å¤•é˜³æ²™å£«ç“¶ç›–æ–¹å— +tile.block_cap_fritz.name=Fritz弗里茨å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_korl.name=Korlåº“å°”å‹’ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_nuka.name=æ ¸å­å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_quantum.name=樱桃味é‡å­æ ¸å­å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_rad.name=è¾å°„S~闪闪å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_sparkle.name=S~闪闪å¯ä¹ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_star.name=å¤•é˜³æ²™å£«æ˜Ÿæ˜Ÿç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_sunset.name=å¤•é˜³æ²™å£«ç“¶ç›–åŽ‹ç¼©å— tile.block_cdalloy.name=é•‰é’¢å— tile.block_cobalt.name=é’´å— tile.block_coke.coal.name=ç…¤ç„¦ç‚­å— @@ -4568,9 +4705,9 @@ tile.charger.name=充电站 tile.cheater_virus.name=冻结Ep tile.cheater_virus_seed.name=ä¸ç¨³å®šEp Schrabideå— tile.chimney_brick.name=烟囱 -tile.chimney_brick.desc=使用排气管连接污染机器$å‡å°‘75%的污染排放 +tile.chimney_brick.desc=使用排气管连接污染机器$å‡å°‘75%%的污染排放 tile.chimney_industrial.name=工业烟囱 -tile.chimney_industrial.desc=使用排气管连接污染机器$å‡å°‘90%的污染排放 +tile.chimney_industrial.desc=使用排气管连接污染机器$å‡å°‘90%%的污染排放 tile.chlorine_gas.name=氯气 tile.cluster_aluminium.name=é“矿簇 tile.cluster_copper.name=铜矿簇 @@ -4579,6 +4716,7 @@ tile.cluster_depth_titanium.name=深层钛矿簇 tile.cluster_depth_tungsten.name=深层钨矿簇 tile.cluster_iron.name=é“矿簇 tile.cluster_titanium.name=钛矿簇 +tile.custom_machine_anchor.name=自定义机器结构定ä½é”š tile.cm_block.alloy.name=高级åˆé‡‘机器外壳 tile.cm_block.desh.name=Desh机器外壳 tile.cm_block.steel.name=钢制机器外壳 @@ -4603,6 +4741,7 @@ tile.cm_tank.alloy.name=高级åˆé‡‘å‚¨ç½ tile.cm_tank.desh.name=Deshå‚¨ç½ tile.cm_tank.steel.name=é’¢åˆ¶å‚¨ç½ tile.cm_tank.tcalloy.name=é”é’¢å‚¨ç½ +tile.cm_paperPress.name=压纸机 tile.cmb_brick.name=CMBé’¢ç“¦å— tile.cmb_brick_reinforced.name=加固CMBé’¢ç –å— tile.compact_launcher.name=紧凑型å‘å°„å° @@ -4630,22 +4769,22 @@ tile.concrete_colored.red.name=红色混å‡åœŸ tile.concrete_colored.silver.name=æ·¡ç°è‰²æ··å‡åœŸ tile.concrete_colored.white.name=白色混å‡åœŸ tile.concrete_colored.yellow.name=黄色混å‡åœŸ -tile.concrete_colored_ext.hazard.name=建筑商指定混å‡åœŸ-å±é™©åœ°å¸¦ -tile.concrete_colored_ext.indigo.name=建筑商指定混å‡åœŸ-æ·±é›è“ -tile.concrete_colored_ext.machine.name=建筑商指定混å‡åœŸ-工业风 -tile.concrete_colored_ext.machine_stripe.name=建筑商指定混å‡åœŸ-工业æ¡çº¹ -tile.concrete_colored_ext.pink.name=建筑商指定混å‡åœŸ-猛男粉 -tile.concrete_colored_ext.purple.name=建筑商指定混å‡åœŸ-神秘紫 +tile.concrete_colored_ext.hazard.name=建筑玩家首选混å‡åœŸ - 警示æ¡çº¹ +tile.concrete_colored_ext.indigo.name=建筑玩家首选混å‡åœŸ - æ·±é›è‰² +tile.concrete_colored_ext.machine.name=建筑玩家首选混å‡åœŸ - 工业风 +tile.concrete_colored_ext.machine_stripe.name=建筑玩家首选混å‡åœŸ - 工业æ¡çº¹ +tile.concrete_colored_ext.pink.name=建筑玩家首选混å‡åœŸ - 猛男粉 +tile.concrete_colored_ext.purple.name=建筑玩家首选混å‡åœŸ - 神秘紫 tile.concrete_pillar.name=钢筋混å‡åœŸæŸ± -tile.concrete_slab.concrete.name=æ··å‡åœŸç“·ç –æ¿ -tile.concrete_slab.concrete_asbestos.name=石棉混å‡åœŸæ¿ -tile.concrete_slab.concrete_smooth.name=æ··å‡åœŸæ¿ -tile.concrete_slab.ducrete.name=高密度贫铀混å‡åœŸç“·ç –æ¿ -tile.concrete_slab.ducrete_smooth.name=高密度贫铀混å‡åœŸæ¿ +tile.concrete_slab.concrete.name=æ··å‡åœŸç“·ç –å°é˜¶ +tile.concrete_slab.concrete_asbestos.name=石棉夹层混å‡åœŸå°é˜¶ +tile.concrete_slab.concrete_smooth.name=æ··å‡åœŸå°é˜¶ +tile.concrete_slab.ducrete.name=贫铀高密度混å‡åœŸç“¦å°é˜¶ +tile.concrete_slab.ducrete_smooth.name=贫铀高密度混å‡åœŸç –å°é˜¶ tile.concrete_smooth.name=æ··å‡åœŸ tile.concrete_smooth_stairs.name=æ··å‡åœŸæ¥¼æ¢¯ -tile.concrete_stairs.name=æ··å‡åœŸç“·ç –楼梯 -tile.concrete_super.name=überæ··å‡åœŸ +tile.concrete_stairs.name=æ··å‡åœŸç“¦æ¥¼æ¢¯ +tile.concrete_super.name=Überæ··å‡åœŸ tile.concrete_super_broken.name=å‘霉的碎片 tile.conveyor.name=输é€å¸¦ tile.conveyor.desc=移动掉在上é¢çš„物å“$å¯ä»¥ç”¨èžºä¸åˆ€é¡ºæ—¶é’ˆæ—‹è½¬$用螺ä¸åˆ€æŒ‰ä½Shifté”®å•击以转弯 @@ -4695,7 +4834,7 @@ tile.deco_aluminium.name=é“è£…é¥°å— tile.deco_asbestos.name=石棉瓦 tile.deco_beryllium.name=é“è£…é¥°å— tile.deco_computer.ibm_300pl.name=IBM个人电脑300PL -tile.deco_emitter.name=Decoå‘光体 +tile.deco_emitter.name=装饰性激光å‘射器 tile.deco_lead.name=é“…è£…é¥°å— tile.deco_rbmk.name=RBMKè£…é¥°å— tile.deco_rbmk_smooth.name=平滑RBMKè£…é¥°å— @@ -4755,10 +4894,10 @@ tile.drone_waypoint_request.name=ç‰©æµæ— äººæœºèˆªè·¯ç‚¹ tile.door_bunker.name=仓门 tile.door_metal.name=金属门 tile.door_office.name=办公室门 -tile.ducrete.name=高密度贫铀混å‡åœŸç“·ç – -tile.ducrete_stairs.name=高密度贫铀混å‡åœŸç“·ç –楼梯 -tile.ducrete_smooth.name=高密度贫铀混å‡åœŸ -tile.ducrete_smooth_stairs.name=高密度贫铀混å‡åœŸæ¥¼æ¢¯ +tile.ducrete.name=贫铀高密度混å‡åœŸç“¦ +tile.ducrete_stairs.name=贫铀高密度混å‡åœŸç“¦æ¥¼æ¢¯ +tile.ducrete_smooth.name=贫铀高密度混å‡åœŸ +tile.ducrete_smooth_stairs.name=贫铀高密度混å‡åœŸå°é˜¶ tile.dummy_block.name=è™šæ‹Ÿæ–¹å— tile.dummy_port.name=虚拟方å—[电力接å£] tile.dungeon_chain.name=金属链 @@ -4779,7 +4918,7 @@ tile.fence_metal.name=é“ä¸ç½‘å›´æ  tile.field_disturber.name=高能场干扰机 tile.filing_cabinet.green.name=蒙尘的文件柜 tile.filing_cabinet.steel.name=钢制文件柜 -tile.fire_digamma.name=挥之ä¸åŽ»çš„è¿ªä¼½é©¬ä¹‹ç« +tile.fire_digamma.name=挥之ä¸åŽ»çš„è¿ªä¼½çŽ›ä¹‹ç« tile.fire_door.name=防ç«é—¨ tile.fireworks.name=烟花箱 tile.fireworks.charges=已充能: %s @@ -4799,13 +4938,13 @@ tile.fluid_duct_solid.name=带涂层的通用æµä½“导管 tile.fluid_switch.name=红石æµä½“阀 tile.fluid_valve.name=æµä½“阀 tile.foam_layer.name=泡沫层 -tile.foundry_basin.name=铸造盘 -tile.foundry_channel.name=é“¸é€ æµ‡é“ -tile.foundry_tank.name=铸造池 -tile.foundry_mold.name=浅铸造池 -tile.foundry_outlet.name=æµ‡ç­‘å‡ºå£ -tile.foundry_slagtap.name=ç‚‰æ¸£å‡ºå£ -tile.fraction_spacer.name=分é¦å¡”分隔器 +tile.foundry_basin.name=浇筑盆 +tile.foundry_channel.name=æµ‡ç­‘é“ +tile.foundry_tank.name=储液池 +tile.foundry_mold.name=浅浇筑盆 +tile.foundry_outlet.name=æµ‡ç­‘å£ +tile.foundry_slagtap.name=é“¸é€ å‡ºæ¸£å£ +tile.fraction_spacer.name=分é¦å¡”分离器 tile.frozen_dirt.name=冰冻土 tile.frozen_grass.name=å†°å†»è‰ tile.frozen_log.name=冰冻原木 @@ -4856,6 +4995,7 @@ tile.gneiss_brick.name=页岩砖 tile.gneiss_chiseled.name=錾制页岩砖 tile.gneiss_tile.name=页岩瓷砖 tile.gravel_diamond.name=钻石砂砾 +tile.gravel_diamond.desc=这里有个笑è¯,$但我ä¸å¤ªæ¸…楚它是什么.$ $上传日期, 2020-07-04:$我们å¦è®¤ä¸€ä¸ªç¬‘è¯çš„任何å«ä¹‰,$å› ä¸ºå®ƒæ˜¯å¦‚æ­¤çš„ä»¤äººä¸æ„‰å¿«,$以至于让人们觉得眼ç›åˆºç—›.$$上传日期, 2020-17-04:$äº‹å®žè¯æ˜Ž,“粉碎钻石â€ä»Žæ¥å°±ä¸æ˜¯ä¸€ä¸ªçœŸæ­£çš„东西,$它让原本å¯èƒ½æ˜¯ä¸ªç¬‘è¯$的东西å˜å¾—毫无æ„义.$ tile.gravel_obsidian.name=碎黑曜石 tile.hadron_access.name=ç²’å­åŠ é€Ÿå™¨æŽ¥å…¥ç»ˆç«¯ tile.hadron_analysis.name=ç²’å­åŠ é€Ÿå™¨åˆ†æžå®¤å£ @@ -4872,32 +5012,32 @@ tile.hadron_coil_starmetal.name=密集星辉线圈 tile.hadron_cooler.name=ç²’å­åŠ é€Ÿå™¨å†·å´è£…ç½® tile.hadron_cooler.desc=冷å´åŠŸçŽ‡ï¼š10$过冷阈值:10$冷å´åŠ æˆï¼š+10%%$过冷惩罚:-25%% tile.hadron_cooler_mk2.name=ç²’å­åŠ é€Ÿå™¨å†·å´è£…ç½®-回文特制 -tile.hadron_cooler_mk2.desc=冷å´åŠŸçŽ‡ï¼š5$效率功能:2-(冷å´-15)2/225$最高惩罚:-90%% -tile.hadron_core.name=ç²’å­åŠ é€Ÿå™¨æ ¸å¿ƒç»„ä»¶ -tile.hadron_diode.name=肖基特二æžç®¡ -tile.hadron_plating.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ -tile.hadron_plating_black.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (黑) -tile.hadron_plating_blue.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (è“) -tile.hadron_plating_glass.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (窗å£) -tile.hadron_plating_striped.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚(低温å±é™©) -tile.hadron_plating_voltz.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (VOLTZ) -tile.hadron_plating_yellow.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚(Yello染料) -tile.hadron_power.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£ -tile.hadron_power_10m.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(10MHE) -tile.hadron_power_100m.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(100MHE) -tile.hadron_power_1g.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(1GHE) -tile.hadron_power_10g.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(10GHE) +tile.hadron_cooler_mk2.desc=冷å´åŠŸçŽ‡ï¼š5$效率函数:2-(冷å´åŠŸçŽ‡-15)²/225$最高惩罚:-90%% +tile.hadron_core.name=ç²’å­åŠ é€Ÿå™¨æ ¸å¿ƒéƒ¨ä»¶ +tile.hadron_diode.name=肖特基粒å­äºŒæžç®¡ +tile.hadron_plating.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ +tile.hadron_plating_black.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (黑色) +tile.hadron_plating_blue.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (è“色) +tile.hadron_plating_glass.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (窗å£) +tile.hadron_plating_striped.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (炫酷的警示æ¡çº¹) +tile.hadron_plating_voltz.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (VOLTZ) +tile.hadron_plating_yellow.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (黄色) +tile.hadron_power.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (1MHE) +tile.hadron_power_10m.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (10MHE) +tile.hadron_power_100m.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (100MHE) +tile.hadron_power_1g.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (1GHE) +tile.hadron_power_10g.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (10GHE) tile.hazmat.name=防è¾å°„å¸ƒå— tile.heater_electric.name=电加热器 -tile.heater_electric.desc=利用电能产生热é‡$以85%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡$å¯ä½¿ç”¨èžºä¸åˆ€è¿›è¡Œé…置。 +tile.heater_electric.desc=使用电能æ¥äº§ç”Ÿçƒ­é‡.$å¯ä»¥85%%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡.$å¯ç”¨èžºä¸åˆ€é…置效率. tile.heater_firebox.name=燃烧室 tile.heater_firebox.desc=燃烧固体燃料以产生热é‡ã€‚ tile.heater_heatex.name=æ¢çƒ­åŠ çƒ­å™¨ tile.heater_heatex.desc=从热æµä½“中产生热é‡ã€‚ tile.heater_oilburner.name=æµä½“燃烧器 tile.heater_oilburner.desc=燃烧å¯ç‡ƒæ¶²ä½“产生热é‡ã€‚ -tile.heater_oven.name=加热炉 -tile.heater_oven.desc=燃烧固体燃料以产生热é‡$以50%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡ã€‚ +tile.heater_oven.name=加热 +tile.heater_oven.desc=燃烧固体燃料以产生热é‡.$å¯ä»¥85%%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡. tile.hev_battery.name=盔甲电池 tile.impact_dirt.name=烧焦的泥土 tile.iter.name=èšå˜å应堆 @@ -4925,6 +5065,7 @@ tile.lox_barrel.name=液氧桶 tile.machine_amgen.name=环境è¾å°„å‘电机 tile.machine_arc_furnace_off.name=电弧炉 tile.machine_arc_furnace_on.name=电弧炉 +tile.machine_arc_welder.name=弧焊机 tile.machine_armor_table.name=è£…ç”²æ”¹è£…å° tile.machine_ashpit.name=å‚¨ç°æ§½ tile.machine_ashpit.desc=收集æ¥è‡ªç‡ƒçƒ§å®¤å’ŒåŠ çƒ­ç‚‰çš„ç°çƒ¬ @@ -4984,7 +5125,8 @@ tile.machine_epress.name=电动锻压机 tile.machine_excavator.name=大型采矿钻机 tile.machine_fel.name=FELè‡ªç”±ç”µå­æ¿€å…‰å™¨ tile.machine_fensu.name=FEnSU飞轮储能系统 -tile.machine_flare.name=高架ç«ç‚¬ +tile.machine_flare.name=废气燃烧塔 +tile.machine_flare.desc=å¯ç‡ƒçƒ§æ¶²ä½“和排出气体$燃烧速率 §c10mB/t$排放速率 §c50mB/t$ $§e燃料效率:$§e-易燃气体: §c50%%$§e-易燃液体: §c10%% tile.machine_fluidtank.name=å‚¨ç½ tile.machine_forcefield.name=力场å‘生器 tile.machine_fraction_tower.name=分é¦å¡” @@ -5050,7 +5192,7 @@ tile.machine_steam_engine.desc=效率:85% tile.machine_stirling.name=斯特林å‘电机 tile.machine_stirling.desc=它将热é‡è½¬åŒ–为能é‡ã€‚这需è¦å¤–部热æº$传热率:T*0.1 TU/T$最大进气é‡ï¼š300 TU/T$效率:50% tile.machine_stirling_creative.name=创造斯特林å‘动机 -tile.machine_stirling_creative.desc=将热é‡è½¬åŒ–为能é‡ã€‚需è¦å¤–部热æº$传热率:T*0.1 TU/T$æ— é™å¸çƒ­/T$效率:100% +tile.machine_stirling_creative.desc=将热é‡è½¬åŒ–为能é‡ã€‚需è¦å¤–部热æº$传热率:T*0.1 TU/T$æ— é™å¸çƒ­/T$效率:100%% tile.machine_stirling_steel.name=é‡åž‹æ–¯ç‰¹æž—å‘电机 tile.machine_stirling_steel.desc=它将热é‡è½¬åŒ–为能é‡ã€‚这需è¦å¤–部热æº$使用更é‡çš„é½¿è½®æ¥æ”¯æŒæ›´é«˜çš„æ¸©åº¦$传热率:T*0.1 TU/T$最大进气é‡ï¼š1500 TU/T$效率:50% tile.machine_storage_drum.name=æ ¸åºŸæ–™å¤„ç†æ¡¶ @@ -5074,6 +5216,7 @@ tile.machine_zirnox.name=锆诺克斯核å应堆 tile.marker_structure.name=多方å—结构信标 tile.mass_storage.name=大规模存储å•å…ƒ tile.meteor_battery.name=星辉é™ç”µå‘生器 +tile.meteor_battery.desc=为特斯拉线圈æä¾›æ— é™ç”µèƒ½ tile.meteor_brick.name=陨石砖 tile.meteor_brick_chiseled.name=錾制陨石砖 tile.meteor_brick_cracked.name=裂纹陨石砖 @@ -5093,14 +5236,18 @@ tile.ntm_dirt.name=泥土 tile.nuke_boy.name=å°ç”·å­© tile.nuke_custom.name=自定义核弹 tile.nuke_fleija.name=F.L.E.I.J.A. +tile.nuke_fleija.desc=适用于:$F.L.E.I.J.A. tile.nuke_fstbmb.name=BF炸弹 tile.nuke_gadget.name=å°çŽ©æ„ tile.nuke_man.name=èƒ–å­ tile.nuke_mike.name=常é’藤迈克 -tile.nuke_n2.name=N2炸弹 +tile.nuke_n2.name=N²炸弹 +tile.nuke_n2.desc=适用于:$N²炸弹 tile.nuke_n45.name=N45æ°´é›· tile.nuke_prototype.name=原型 +tile.nuke_prototype.desc=本ä¸å¿…如此的.$ $你这个怪物. tile.nuke_solinium.name=è”šè“æ´—礼 +tile.nuke_solinium.desc=适用于:$è”šè“æ´—礼 tile.nuke_tsar.name=沙皇炸弹 tile.oil_duct.name=输油管 tile.oil_duct_solid.name=粗输油管 @@ -5159,6 +5306,7 @@ tile.ore_nether_uranium.name=下界铀矿石 tile.ore_nether_uranium_scorched.name=烧焦的下界铀矿石 tile.ore_niter.name=ç¡çŸ³çŸ¿çŸ³ tile.ore_oil.name=油岩 +tile.ore_oil.desc=ä½ ä¸è¯¥æŠŠå®ƒæŒ–出æ¥çš„..$æ¥å§,去拿个井架,你这个笨蛋. tile.ore_oil_empty.name=空油岩 tile.ore_oil_sand.name=æ²¥é’ç ‚ tile.ore_random.name=%s 矿 @@ -5177,7 +5325,7 @@ tile.ore_uranium_scorched.name=烧焦的铀矿石 tile.ore_verticium.name=韦德赛矿石 tile.ore_volcano.name=åœ°çƒ­è£‚ç¼ tile.ore_weidanium.name=é­ä¸¹çŸ¿çŸ³ -tile.part_emitter.name=Decoç²’å­å‘射器 +tile.part_emitter.name=装饰性粒å­ç”Ÿæˆå™¨ tile.pink_barrel.name=煤油桶 tile.pink_log.name=粉色原木 tile.pink_planks.name=ç²‰è‰²æœ¨æ¿ @@ -5229,13 +5377,13 @@ tile.pwr_port.name=PWRæŽ¥å…¥ç«¯å£ tile.pwr_port.desc=å…许物å“和液体交æ¢$ä½ç½®ï¼šç»„ä»¶ tile.pwr_reflector.name=PWR中å­å射器 tile.pwr_reflector.desc=将中å­é€šé‡å射回燃料棒$ä½ç½®ï¼šç½‘格,用于增加å应速率$å¯ä½œä¸ºå¤–å£³ææ–™ -tile.radio_telex.name=Telex Machine -tile.radio_torch_counter.name=红石无线项目计数器 -tile.radio_torch_counter.desc=平颿ˆ–比较器兼容å—上的标牌$æ ¹æ®åŒ¹é…项目的数é‡å‘å‡ºä¿¡å· -tile.radio_torch_receiver.name=æ— çº¿çº¢çŸ³ä¿¡å·æŽ¥æ”¶å™¨ -tile.radio_torch_receiver.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–与比较器兼容的方å—上放置 -tile.radio_torch_sender.name=无线红石信å·å‘射器 -tile.radio_torch_sender.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–比较器兼容的方å—上放置$读å–çº¢çŸ³ä¿¡å·æˆ–比较器输入 +tile.radio_telex.name=电报机 +tile.radio_torch_counter.name=红石无线物å“计数器 +tile.radio_torch_counter.desc=平颿ˆ–比较器兼容å—上的标牌$æ ¹æ®åŒ¹é…物å“的数é‡å‘å‡ºä¿¡å· +tile.radio_torch_receiver.name=çº¢çŸ³æ— çº¿ä¿¡å·æŽ¥æ”¶å™¨ +tile.radio_torch_receiver.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–与比较器兼容的å—上放置 +tile.radio_torch_sender.name=红石无线信å·å‘é€å™¨ +tile.radio_torch_sender.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–与比较器兼容的å—上放置$读å–çº¢çŸ³ä¿¡å·æˆ–比较器输入 tile.radiobox.name=无线怪物清除箱 tile.radiorec.name=åæŽ‰çš„æ”¶éŸ³æœº tile.rail_booster.name=é«˜é€ŸåŠ¨åŠ›è½¨é“ @@ -5272,6 +5420,7 @@ tile.reactor_element.name=å应堆室 tile.reactor_hatch.name=ååº”å †ç«¯å£ tile.reactor_inserter.name=å应堆燃料æ’入器 tile.red_barrel.name=ç‚¸è¯æ¡¶ +tile.red_barrel.desc=陿€æµä½“æ¡¶ tile.red_cable.name=紫铜电线 tile.red_cable_classic.name=紫铜电缆(ç»å…¸åž‹ï¼‰ tile.red_cable_gauge.name=功率计 @@ -5279,13 +5428,15 @@ tile.red_cable_gauge.desc=显示æ¯åˆ»åœ¨ç½‘络中æµåŠ¨çš„ç”µåŠ›$的电缆$ç”± tile.red_cable_paintable.name=坿¶‚漆紫铜线 tile.red_connector.name=电力连接器 tile.red_pylon.name=ç”µçº¿æ† +tile.red_pylon.desc=连接类型: §eå•通é“$连接范围: §e25m tile.red_pylon_large.name=大型输电塔 +tile.red_pylon_large.desc=连接类型: §e四通é“$连接范围: §e100m$这个输电塔需è¦é…åˆå˜ç”µå™¨ä½¿ç”¨! tile.red_wire_coated.name=密å°ç´«é“œç”µç¼† tile.reinforced_brick.name=强化石头 tile.reinforced_brick_stairs.name=钢筋石楼梯 tile.reinforced_ducrete.name=加固高密度贫铀混å‡åœŸ tile.reinforced_glass.name=强化玻璃 -tile.reinforced_glass_pane.name=强化玻璃窗 +tile.reinforced_glass_pane.name=å¼ºåŒ–çŽ»ç’ƒæ¿ tile.reinforced_lamp_off.name=å¼ºåŒ–çº¢çŸ³ç¯ tile.reinforced_lamp_on.name=å¼ºåŒ–çº¢çŸ³ç¯ tile.reinforced_light.name=强化è¤çŸ³ @@ -5349,7 +5500,7 @@ tile.stone_depth.name=深层岩石 tile.stone_depth_nether.name=下界深层岩石 tile.stone_gneiss.name=石墨页岩 tile.stone_porous.name=多孔石 -tile.stone_resource.asbestos.name=温石棉 +tile.stone_resource.asbestos.name=蛇纹石石棉 tile.stone_resource.bauxite.name=é“土矿 tile.stone_resource.hematite.name=赤é“矿 tile.stone_resource.limestone.name=石ç°çŸ³ @@ -5362,8 +5513,9 @@ tile.struct_launcher_core_large.name=å‘å°„å°æ ¸å¿ƒç»„ä»¶ tile.struct_plasma_core.name=等离å­åŠ çƒ­å™¨æ ¸å¿ƒç»„ä»¶ tile.struct_scaffold.name=å‘å°„å°éª¨æž¶ tile.struct_soyuz_core.name=è”盟å·å‘射器核心组件 -tile.struct_watz_core.name=Watzå‘电厂核心组件 -tile.substation.name=å˜ç”µç«™ +tile.struct_watz_core.name=Watz瓦茨电厂核心组件 +tile.substation.name=å˜ç”µå™¨ +tile.substation.desc=连接类型: §e四通é“$连接范围: §e20m tile.sulfuric_acid_block.name=ç¡«é…¸ tile.taint.name=è…è´¨ tile.taint_barrel.name=IMP残渣桶 @@ -5388,10 +5540,10 @@ tile.turret_flamer.name=å–·ç«ç‚®å¡” tile.turret_friendly.name=轻机枪炮塔“å‹å¥½å…ˆç”Ÿâ€ tile.turret_fritz.name=é‡åž‹ç«ç„°å–·å°„器炮塔“弗里茨†tile.turret_heavy.name=é‡åž‹æœºæžªç‚®å¡” -tile.turret_himars.name=ç«ç®­ç‚®å¡”“亨利†-tile.turret_howard.name=åŒè”守门员近防系统“éœåŽå¾·â€ -tile.turret_howard_damaged.name=CIWSåŒè”守门员近防系统 "玛士撒拉" -tile.turret_jeremy.name=é‡ç‚®ç‚®å¡”“æ°é‡Œç±³â€ +tile.turret_himars.name=远程ç«ç®­å¼¹ç‚®å¡”"亨利" +tile.turret_howard.name=åŒç®¡è¿‘防炮"éœåŽå¾·" +tile.turret_howard_damaged.name=åŒç®¡è¿‘防炮 "玛土撒拉" +tile.turret_jeremy.name=é‡ç‚®ç‚®å°"æ°ç±³é‡Œ" tile.turret_light.name=轻型机枪炮塔 tile.turret_maxwell.name=高能微波炮塔 "麦克斯韦" tile.turret_rocket.name=ç«ç®­ç‚®å¡” @@ -5406,8 +5558,8 @@ tile.vent_chlorine.name=æ°¯æ°”æŽ’æ°”å£ tile.vent_chlorine_seal.name=氯气容器 tile.vent_cloud.name=äº‘æŽ’æ°”å£ tile.vent_pink_cloud.name=ç²‰è‰²äº‘æŽ’æ°”å£ -tile.vinyl_tile.large.name=大型乙烯基瓷砖 -tile.vinyl_tile.small.name=å°åž‹ä¹™çƒ¯åŸºç“·ç – +tile.vinyl_tile.large.name=大å—乙烯基瓷砖 +tile.vinyl_tile.small.name=å°å—乙烯基瓷砖 tile.vitrified_barrel.name=玻璃化核废料桶 tile.volcanic_lava_block.name=ç«å±±ç†”岩 tile.volcano_core.name=ç«å±±æ ¸å¿ƒ @@ -5444,6 +5596,11 @@ trait.hot=自燃/高温 trait.hydro=与水å应 trait.radioactive=放射性 trait.radResistance=è¾å°„抗性: %s + +trait.platefuel=[研究å应堆堆æ¿å¼ç‡ƒæ–™]$§3 %s$§3 %s事件的收益率 +trait.pwr_fuel=æ¯é€šé‡çƒ­é‡: §r%s TU$å应函数: §r%s$燃料类型: §r%s + +trait.rbmk.BurnFunc=安全 / 被动$中等 / 对数方程$安全 / 欧拉方程$å±é™© / 负二次方程$安全 / S型饱和函数$中等 / 平方根函数$å±é™© / 线性函数$å±é™© / 二次函数$实验性 / 正弦斜率函数 trait.rbmk.coreTemp=核心温度: %s trait.rbmk.depletion=燃料消耗: %s trait.rbmk.diffusion=扩散度: %s @@ -5478,8 +5635,23 @@ trait.rbmx.splitsWith=接å—: %s trait.rbmx.xenon=铅元素堆积程度: %s trait.rbmx.xenonBurn=铅元素寂ç­å‡½æ•°: %s trait.rbmx.xenonGen=铅元素产生函数: %s + +trait.rbmk_pellet=å¯å›žæ”¶èНå—$全新的$å°‘é‡è¡°å˜$中度衰å˜$高度衰å˜$完全衰å˜$大釿°™å…ƒç´ å †ç§¯ +trait.watz_pellet=消耗: %s%% +trait.watz_pellet.passive=基本裂å˜çއ: $自燃! +trait.watz_pellet.heatEmission=æ¯ä¸­å­é€šé‡äº§ç”Ÿçƒ­é‡: +trait.watz_pellet.burnFunc=å应函数: $燃料类型: +trait.watz_pellet.heatDiv=热å€å¢žç³»æ•°: +trait.watz_pellet.absorbFunc=中å­é€šé‡æ•获: + trait.tile.cluster=åªæœ‰åœ¨è¢«çŽ©å®¶ç ´åæ—¶æ‰ä¼šæŽ‰è½ trait.tile.depth=åªèƒ½è¢«çˆ†ç‚¸ç ´å +trait.tile.barrel.capacity=容é‡: %smB +trait.tile.barrel.hot=å¯ä»¥å‚¨å­˜çƒ­çš„æ¶²ä½“$ä¸èƒ½å‚¨å­˜çƒ­çš„æ¶²ä½“ +trait.tile.barrel.corrosive=å¯ä»¥å‚¨å­˜å¼ºè…蚀性液体$å¯ä»¥å‚¨å­˜è…蚀性液体$ä¸èƒ½é•¿æœŸåœ°å‚¨å­˜å¼ºè…蚀性液体$ä¸èƒ½é•¿æœŸåœ°å‚¨å­˜è…蚀性液体$ä¸èƒ½å‚¨å­˜è…蚀性液体 +trait.tile.barrel.antimatter=å¯ä»¥å‚¨å­˜å物质类物质$ä¸èƒ½å‚¨å­˜å物质类物质 +trait.tile.barrel.leak=泄露 + tool.ability.centrifuge=自动离心 tool.ability.crystallizer=自动结晶 tool.ability.explosion=爆破 @@ -5491,16 +5663,27 @@ tool.ability.recursion=è¿žé”æŒ–矿 tool.ability.shredder=自动粉碎 tool.ability.silktouch=精准采集 tool.ability.smelter=自动熔炼 -turret.animals=被动目标:%s -turret.arty.artillery=§eç«ç‚®æ¨¡å¼$最低射程: 250m$最大射程: 3,000m -turret.arty.cannon=§e炮塔模å¼$最低射程: 32m$射程: 250m -turret.arty.manual=§e手动模å¼$射程: 3,000m -turret.machines=以机械为目标: %s -turret.mobs=以怪物为目标: %s -turret.none=æ—  -turret.off=å…³ -turret.on=å¼€ -turret.players=以玩家为目标:%s + +tooltip.armormods=附件: +tooltip.armormodsshow=æŒ‰ä½ < %s §8§o> æ¥æ˜¾ç¤ºè¯¥ç›”甲上所安装的é…件的效果§r +tooltip.block=æŒ‰ä½ < %s §8§o>以显示更多信æ¯Â§r +tooltip.customnuke=增加 %s 给自定义核弹 %s 阶段 +tooltip.customnukemultiplier=å¢žåŠ å€æ•° %s 给自定义核弹 %s 阶段 +tooltip.oredict=矿物辞典: +tooltip.oredict.null=无矿物辞典数æ®! +tooltip.show=æŒ‰ä½ < %s §8§o> æ¥æ˜¾ç¤ºæ‰€èƒ½æä¾›çš„防护的信æ¯Â§r + +turret.animals=攻击中立生物: %s +turret.arty.artillery=§eé‡ç‚®æ¨¡å¼$宽度: 250m$范围: 3,000m +turret.arty.cannon=§e加农炮模å¼$宽度: 32m$范围: 250m +turret.arty.manual=§e手动模å¼$范围: 3,000m +turret.machines=攻击机器: %s +turret.mobs=攻击敌对生物: %s +turret.none=无白åå• +turret.off=OFF +turret.on=ON +turret.players=攻击玩家: %s + wavelengths.name.ir=红外线 wavelengths.name.visible=å¯è§å…‰ wavelengths.name.uv=紫外线 @@ -5526,7 +5709,41 @@ weapon.elecGun.glass_cannon.ir=红外线 weapon.elecGun.glass_cannon.visible=å¯è§å…‰ weapon.elecGun.glass_cannon.uv=紫外线 weapon.elecGun.glass_cannon.xray=X射线 -weapon.elecGun.glass_cannon.gamma=伽马射线 -hadron.error=错误! -container.reactor=增殖å应堆 -death.attack.subAtomic=%1$s 的原å­è¢« %2$s æ‘§æ¯ \ No newline at end of file +weapon.elecGun.glass_cannon.gamma=γ射线 + +#book_lore.insanity_1.author=Fergusonåšå£« +#book_lore.insanity_1.name=撕裂的书页 +#book_lore.insanity_1.page.1=8月6æ—¥$ $几个月,ä¸ï¼Œå‡ å¹´æ¥ï¼Œ 为了与投资者角力和è¿è¥ 北åŠçƒæœ€å¤§çš„能æºå¸‚场而 讨价还价,终于有了回报. +#book_lore.insanity_1.page.2=虽然我们ä¸èƒ½å®Œå…¨ç¡®å®š 我们到底å‘现了什么—— 考虑到我们在粒å­ä¸Šè¿›è¡Œäº† åƒå…†ä¼ç‰¹çš„碰撞,而这些 ç²’å­çš„记录ä»ç„¶å¾ˆå·®â€”— 但结果å†ä»¤äººå…´å¥‹ä¸è¿‡äº†. +#book_lore.insanity_1.page.3=我们还没有为我们å‘现的 这东西找到一个å字, 也ä¸ç¡®å®šæˆ‘们是å¦åœ¨å¯»æ‰¾ ä¸€ç§æ–°çš„ç²’å­ï¼Œ 一个通å‘å¦ä¸€ä¸ªç»´åº¦çš„虫洞, 或者撒旦的肛门, 但我相信我们的公关人员 å¯ä»¥æƒ³å‡ºä¸€äº›åŠžæ³•. +#book_lore.insanity_2.author=Fergusonåšå£« +#book_lore.insanity_2.name=撕裂的书页 +#book_lore.insanity_2.page.1=8月8æ—¥$ $过去几天,我们一直将 “The Thing†(是的,我们现在就是 这么称呼这玩æ„的) ä¿æŒåœ¨ç£éš”离状æ€ã€‚ 光谱测试最终æžå了 我们的光谱仪,但我们 设法获得了一些有用的数æ®. +#book_lore.insanity_2.page.2=首先,这东西åƒåœ£è¯žæ ‘ 一样å‘光,你能想到的 æ¯ç§æ³¢é•¿çš„è¾å°„å…‰å­éƒ½è¢« 强大的红外日冕所包围。 逻辑上的结论是, 用肉眼看它很å¯èƒ½ä¼šæ€æ­»ä½ ã€‚ +#book_lore.insanity_2.page.3=这就引出了一个问题: 这么å°çš„ç²’å­æ€Žä¹ˆèƒ½è¾å°„ 出如此巨大的能é‡ï¼Ÿ ä½ éšè—了些什么,å°å®¶ä¼™ï¼Ÿ +#book_lore.insanity_3.author=Fergusonåšå£« +#book_lore.insanity_3.name=撕裂的书页 +#book_lore.insanity_3.page.1=8月22æ—¥ $ $ 我已ç»å¥½å‡ å¤©æ²¡ç¡å¥½äº†ã€‚ 医生说他什么毛病都找ä¸åˆ°ã€‚ 现在我正在æœç”¨å„ç§è¯ç‰©ï¼Œ 但头痛åªä¼šåŠ é‡ã€‚ 实验室工作人员怀疑这 å¯èƒ½æ˜¯ä¸¤å‘¨å‰çš„äº‹ä»¶é€ æˆ çš„æ±¡æŸ“. +#book_lore.insanity_3.page.2=医生说ä¸å¤ªå¯èƒ½ï¼Œ 这症状和急性放射病ä¸åŒã€‚ å¦‚æžœè¿™ç§æƒ…况æŒç»­ä¸‹åŽ»ï¼Œ 我å¯èƒ½éœ€è¦ä¼‘æ¯ä¸€æ®µæ—¶é—´ã€‚ 实验人员推测, 如果约æŸç£åœºä¸‹é™ï¼Œ 整个综åˆä½“å»ºç­‘ç¾¤å°±ä¼šå˜æˆ 蘑è‡äº‘. +#book_lore.insanity_3.page.3=我ä¸çŸ¥é“行政部门如何 ä¿æŒå†·é™ï¼Œä½†æˆ‘没有被 æ”¯ä»˜è¶³å¤Ÿçš„è–ªæ°´æ¥æµªè´¹æ—¶é—´. +#book_lore.insanity_4.author=Fergusonåšå£« +#book_lore.insanity_4.name=撕裂的书页 +#book_lore.insanity_4.page.1=8月28æ—¥ $ $ 他们拒ç»äº†æˆ‘的请å‡è¯·æ±‚, 过去几天我一直在努力。 头痛越æ¥è¶Šä¸¥é‡äº†ã€‚ æˆ‘ä¹Ÿä¸æ˜¯å”¯ä¸€æœ‰è¿™ç§æ„Ÿ 觉的人。一些实验室的人员 也有类似的情况. +#book_lore.insanity_4.page.2=The Thing终于离开了综åˆä½“ -真tm棒。 昨天有几套西装è¿è¿‡æ¥ï¼Œ 天知é“在哪里。 一å实验室人员扎å¡é‡Œè¯´ï¼Œ 他们å¯èƒ½æ­£åœ¨æŠŠå¯†å°è£…ç½® 埋在沙漠里, +#book_lore.insanity_4.page.3=慢慢地试图让The Thing 远离文明æ¥â€œè™Žå¤´è›‡å°¾ 地结æŸâ€ã€‚è¦æˆ‘说我们应 把它射å‘太空。 ä¸ç”¨è¯´ï¼Œæˆ‘们的投资者 暂时削å‡äº†æ‰€æœ‰èµ„金。 我应该开始找å¦ä¸€ä»½å·¥ä½œäº†. +#book_lore.insanity_5.author=Fergusonåšå£« +#book_lore.insanity_5.name=撕裂的书页 +#book_lore.insanity_5.page.1=9月11æ—¥ $ $ 我正在åå¤åšä¸€åœºå™©æ¢¦ã€‚ 我在一å—空地上走æ¥èµ°åŽ»ï¼Œ 到处都是这些人, ç©¿ç€æ©¡èƒ¶æœå’Œé•¿ç€ç•¸å½¢çš„脸。 总是一样的噩梦, +#book_lore.insanity_5.page.2=和我最近交谈过的一个实验 室的åŒäº‹ä¹Ÿåšäº†åŒæ ·çš„æ¢¦ã€‚ ä¸Žæ­¤åŒæ—¶ï¼Œæˆ‘çš„å·¥ä½œå·²ç» ç›¸å½“æž¯ç‡¥äº†ï¼ŒåŠ é€Ÿå™¨å·²ç» å…³é—­ï¼Œæ‰€æœ‰æ­£åœ¨è¿›è¡Œçš„ é¡¹ç›®éƒ½åœæ­¢äº†ï¼Œæˆ‘们的 预算也在慢慢å‡å°‘. +#book_lore.insanity_5.page.3=有æŸç§ä¸œè¥¿åœ¨å‘Šè¯‰æˆ‘ The Thing还在æŸå¤„。 我能感觉到. +#book_lore.insanity_6.author=Fergusonåšå£« +#book_lore.insanity_6.name=撕裂的书页 +#book_lore.insanity_6.page.1=10月3æ—¥ $ $ 一åŠçš„å·¥ä½œäººå‘˜å·²ç»æ­»äº¡ï¼Œ 其余大部分在ICU。 我的病情在过去几周里 没有改å˜ï¼Œæ— è®ºæ˜¯å¥½æ˜¯å. +#book_lore.insanity_6.page.2=然而,现实开始å˜å¾—è¶Šæ¥è¶Š ä¸çœŸå®žã€‚ 有时我会在夜晚仰望天空, å¹»æƒ³ç€æˆ‘ä»¬åœ¨å‡ ä¸ªæ˜ŸæœŸå‰ å‘现的东西. +#book_lore.insanity_6.page.3=我们的分光计åå‡ºçš„åŒæ · ç¿çƒ‚的深红光泽。 我的医生说这是由这起事件 引起的精神错乱和压力, 也许他是对的, 但è¯ç‰©æ ¹æœ¬ä¸èµ·ä½œç”¨. +#book_lore.insanity_7.author=Fergusonåšå£« +#book_lore.insanity_7.name=撕裂的书页 +#book_lore.insanity_7.page.1=12月12æ—¥ $ $ 我已ç»å¤±ä¸šäº†ï¼Œä½†è€å®žè¯´ï¼Œ 我对此有些感激。 我以å‰çš„å·¥ä½œåœºæ‰€å·²ç» ä»˜ä¹‹ä¸€ç‚¬äº† ——他们这么说的. +#book_lore.insanity_7.page.2=å—部几英里处的地震观测站 连续几天记录到æŒç»­ä¸æ–­çš„ 地震,而其他任何人都ä¸ä¼š 注æ„到沙漠深处. +#book_lore.insanity_7.page.3=我的结论是,这个地方被 诅咒了,让æ¯ä¸ªäººéƒ½æ„Ÿåˆ°æ¶å¿ƒï¼Œ ç„¶åŽåƒåŸƒå¾·åŠ Â·çˆ±ä¼¦Â·å¡ ï¼ˆEdgar Allan Poe)的故事 一样å å…¥åœ°ç‹±ã€‚ 谢天谢地. + From 0f25aac3a2f6de968976b5929dba19490a99fc7f Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 14 Nov 2023 19:18:43 -0600 Subject: [PATCH 138/207] back at it again with the OC compat Now including: Optimizations Turbine Compat Compat handler for general functions other compat --- .../java/com/hbm/handler/CompatHandler.java | 31 +++++++++++++++ .../tileentity/machine/TileEntityChungus.java | 33 +++++++++++++++- .../machine/TileEntityCoreEmitter.java | 7 +--- .../machine/TileEntityCoreStabilizer.java | 7 +--- .../TileEntityMachineLargeTurbine.java | 39 ++++++++++++++++++- .../machine/TileEntityMachineTurbine.java | 33 +++++++++++++++- .../machine/TileEntityMicrowave.java | 19 ++++++++- .../machine/TileEntityReactorControl.java | 39 +++++-------------- .../machine/TileEntityReactorResearch.java | 8 +--- .../machine/rbmk/TileEntityRBMKBoiler.java | 16 ++------ .../machine/storage/TileEntityBarrel.java | 8 ++-- .../storage/TileEntityMachineBattery.java | 4 +- .../storage/TileEntityMachineFluidTank.java | 8 ++-- 13 files changed, 177 insertions(+), 75 deletions(-) create mode 100644 src/main/java/com/hbm/handler/CompatHandler.java diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java new file mode 100644 index 000000000..07d7fd20a --- /dev/null +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -0,0 +1,31 @@ +package com.hbm.handler; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; + + +/** + * General handler for OpenComputers compatibility. + *

    + * Mostly just functions used across many TEs. + */ +public class CompatHandler { + public static Object[] steamTypeToInt(FluidType type) { + if(type == Fluids.STEAM) {return new Object[] {0};} + else if(type == Fluids.HOTSTEAM) {return new Object[] {1};} + else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};} + return new Object[] {3}; + } + public static FluidType intToSteamType(int arg) { + switch(arg) { + default: + return Fluids.STEAM; + case(1): + return Fluids.HOTSTEAM; + case(2): + return Fluids.SUPERHOTSTEAM; + case(3): + return Fluids.ULTRAHOTSTEAM; + } + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 4a0226d96..e1dcddcf8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.fluid.FluidType; @@ -22,15 +23,20 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver, IFluidStandardTransceiver { +public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent { public long power; public static final long maxPower = 100000000000L; @@ -275,6 +281,31 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc this.power = power; } + @Override + public String getComponentName() { + return "ntm_large_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return CompatHandler.steamTypeToInt(tanks[1].getTankType()); + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setType(Context context, Arguments args) { + tanks[1].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + return new Object[] {true}; + } + + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index f19f9e586..9516a8246 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -315,12 +315,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); - if (newOutput > 100) { - newOutput = 100; - } else if (newOutput < 0) { - newOutput = 0; - } - watts = newOutput; + watts = MathHelper.clamp_int(newOutput, 0, 100); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 74673c332..3d7990286 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -209,12 +209,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); - if (newOutput > 100) { - newOutput = 100; - } else if (newOutput < 0) { - newOutput = 0; - } - watts = newOutput; + watts = MathHelper.clamp_int(newOutput, 0, 100); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 5f37053e9..fc22fe394 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -21,8 +22,13 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -32,7 +38,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 100000000; @@ -280,6 +287,36 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme return new FluidTank[] {tanks[0]}; } + @Override + public String getComponentName() { + return "ntm_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return CompatHandler.steamTypeToInt(tanks[1].getTankType()); + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setType(Context context, Arguments args) { + tanks[1].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + return new Object[] {true}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineLargeTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index eb4d3f731..a2857822a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -22,9 +23,14 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -35,7 +41,8 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, IGUIProvider, SimpleComponent { private ItemStack slots[]; @@ -376,6 +383,30 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS return tanks; } + @Override + public String getComponentName() { + return "ntm_small_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return CompatHandler.steamTypeToInt(tanks[1].getTankType()); + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setType(Context context, Arguments args) { + tanks[1].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + return new Object[] {true}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index 6b5846286..5253e4aec 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -7,8 +7,13 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -19,7 +24,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 50000; @@ -209,6 +215,17 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg nbt.setInteger("speed", speed); } + @Override + public String getComponentName() { + return "microwave"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] test(Context context, Arguments args) { + return new Object[] {"This is a testing device for everything OC."}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMicrowave(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 67c70eded..8d55eb799 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -272,36 +272,15 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I @Optional.Method(modid = "OpenComputers") public Object[] setParams(Context context, Arguments args) { //i hate my life int newFunction = args.checkInteger(0); - double newMaxheat = args.checkDouble(1); - double newMinheat = args.checkDouble(2); - double newMaxlevel = args.checkDouble(3)/100.0; - double newMinlevel = args.checkDouble(4)/100.0; - if (newFunction > 2) { //no more out of bounds for you (and yes there's integer values for functions, sue me) - newFunction = 0; - } else if (newFunction < 0) { - newFunction = 0; - } - if (newMaxheat < 0.0) { - newMaxheat = 0.0; - } - if (newMinheat < 0.0) { - newMinheat = 0.0; - } - if (newMaxlevel < 0.0) { - newMaxlevel = 0.0; - } else if (newMaxlevel > 1.0) { - newMaxlevel = 1.0; - } - if (newMinlevel < 0.0) { - newMinlevel = 0.0; - } else if (newMinlevel > 1.0) { - newMinlevel = 1.0; - } - function = RodFunction.values()[newFunction]; - heatUpper = newMaxheat; - heatLower = newMinheat; - levelUpper = newMaxlevel; - levelLower = newMinlevel; + double newMaxHeat = args.checkDouble(1); + double newMinHeat = args.checkDouble(2); + double newMaxLevel = args.checkDouble(3)/100.0; + double newMinLevel = args.checkDouble(4)/100.0; + function = RodFunction.values()[MathHelper.clamp_int(newFunction, 0, 2)]; + heatUpper = MathHelper.clamp_double(newMaxHeat, 0, 9999); + heatLower = MathHelper.clamp_double(newMinHeat, 0, 9999); + levelUpper = MathHelper.clamp_double(newMaxLevel, 0, 1); + levelLower = MathHelper.clamp_double(newMinLevel, 0, 1); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index a6ee7c13d..09525e8a4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -32,6 +32,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -429,12 +430,7 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; - if (newLevel > 1.0) { - newLevel = 1.0; - } else if (newLevel < 0.0) { - newLevel = 0.0; - } - targetLevel = newLevel; + targetLevel = MathHelper.clamp_double(newLevel, 0, 100.0); return new Object[] {}; } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 44baadde9..f025f1114 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -5,6 +5,7 @@ import api.hbm.fluid.IFluidUser; import api.hbm.fluid.IPipeNet; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; @@ -369,25 +370,14 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - FluidType type = steam.getTankType(); - Object type_1; - if(type == Fluids.STEAM) {type_1 = "0";} - else if(type == Fluids.HOTSTEAM) {type_1 = "1";} - else if(type == Fluids.SUPERHOTSTEAM) {type_1 = "2";} - else if(type == Fluids.ULTRAHOTSTEAM) {type_1 = "3";} - else {type_1 = "Unknown Error";} + int type_1 = (int) CompatHandler.steamTypeToInt(steam.getTankType())[0]; return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord}; } @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getSteamType(Context context, Arguments args) { - FluidType type = steam.getTankType(); - if(type == Fluids.STEAM) {return new Object[] {0};} - else if(type == Fluids.HOTSTEAM) {return new Object[] {1};} - else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};} - else if(type == Fluids.ULTRAHOTSTEAM) {return new Object[] {3};} - else {return new Object[] {"Unknown Error"};} + return CompatHandler.steamTypeToInt(steam.getTankType()); } @Callback(direct = true, limit = 16) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 495f38ca6..66ea25fcb 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -393,25 +393,25 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc return "ntm_fluid_tank"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluidStored(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getMaxStored(Context context, Arguments args) { return new Object[] {tank.getMaxFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { return new Object[] {tank.getTankType().getName()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index dc6a60f44..c27670d37 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -420,13 +420,13 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I return "ntm_energy_storage"; //ok if someone else can figure out how to do this that'd be nice (change the component name based on the type of storage block) } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 00486dfda..7e6d91be2 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -473,25 +473,25 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements return "ntm_tank"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluidStored(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getMaxStored(Context context, Arguments args) { return new Object[] {tank.getMaxFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { return new Object[] {tank.getTankType().getName()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; From dd5786bb607481760110f191700a889770dbc277 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 14 Nov 2023 19:41:10 -0600 Subject: [PATCH 139/207] Gas turbine compat!!! --- .../machine/TileEntityMachineTurbineGas.java | 80 ++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index b506f3f6b..efb36937f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -22,18 +22,25 @@ import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider, SimpleComponent { public long power; public static final long maxPower = 1000000L; @@ -546,6 +553,77 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement return dir != ForgeDirection.DOWN; } + @Override + public String getComponentName() { + return "ntm_gas_turbine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return new Object[] {tanks[0].getTankType().getName()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPower(Context context, Arguments args) { + return new Object[] {power}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getThrottle(Context context, Arguments args) { + return new Object[] {throttle}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getState(Context context, Arguments args) { + return new Object[] {state}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getAuto(Context context, Arguments args) { + return new Object[] {autoMode}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setThrottle(Context context, Arguments args) { + powerSliderPos = MathHelper.clamp_int(args.checkInteger(0) / 100 * 60, 0 , 60); + return new Object[] {true}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setAuto(Context context, Arguments args) { + autoMode = args.checkBoolean(0); + return new Object[] {true}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + + return new Object[] {throttle, state, + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill()}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineTurbineGas(player.inventory, this); From 533c87eb1a4008255e94740d3f68db56ab40af4c Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 14 Nov 2023 21:30:48 -0600 Subject: [PATCH 140/207] Large update to direct calls and limits for pulling values. --- .../hbm/blocks/network/FluidDuctGauge.java | 6 +-- .../machine/TileEntityCoreEmitter.java | 14 +++---- .../machine/TileEntityCoreInjector.java | 6 +-- .../machine/TileEntityCoreReceiver.java | 6 +-- .../machine/TileEntityCoreStabilizer.java | 10 ++--- .../tileentity/machine/TileEntityGeiger.java | 2 +- .../machine/TileEntityReactorControl.java | 8 ++-- .../machine/TileEntityReactorResearch.java | 12 +++--- .../machine/TileEntityReactorZirnox.java | 16 ++++---- .../machine/rbmk/TileEntityCraneConsole.java | 4 +- .../machine/rbmk/TileEntityRBMKBoiler.java | 40 ++++++------------- .../machine/rbmk/TileEntityRBMKControl.java | 20 ++++------ .../rbmk/TileEntityRBMKControlManual.java | 2 +- .../machine/rbmk/TileEntityRBMKCooler.java | 10 ++--- .../machine/rbmk/TileEntityRBMKHeater.java | 18 ++++----- .../machine/rbmk/TileEntityRBMKOutgasser.java | 12 +++--- .../machine/rbmk/TileEntityRBMKRod.java | 20 +++++----- 17 files changed, 93 insertions(+), 113 deletions(-) diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 8c2106abe..9c17a38c0 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -156,19 +156,19 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL return "ntm_fluid_gauge"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTransfer(Context context, Arguments args) { return new Object[] {deltaTick, deltaSecond}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { return new Object[] {getType().getName()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {deltaTick, deltaSecond, getType().getName(), xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 9516a8246..92a83d81b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -274,44 +274,44 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return "dfc_emitter"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower(), tank.getFill(), watts, isOn}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isActive(Context context, Arguments args) { return new Object[] {isOn}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { isOn = args.checkBoolean(0); return new Object[] {}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index bd2366acc..b0fb0c484 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -199,19 +199,19 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl return "dfc_injector"; } - @Callback(direct = true, limit = 2) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFuel(Context context, Arguments args) { return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTypes(Context context, Arguments args) { return new Object[] {tanks[0].getTankType().getName(), tanks[1].getTankType().getName()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {tanks[0].getFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getTankType().getName()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index 4a9adbebc..c3fbf28d6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -191,19 +191,19 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn return "dfc_receiver"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {joules, getPower()}; //literally only doing this for the consistency between components } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {joules, getPower(), tank.getFill()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 3d7990286..6e6413032 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -172,19 +172,19 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return "dfc_stabilizer"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDurability(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() == ModItems.ams_lens && ItemLens.getLensDamage(slots[0]) < ((ItemLens)ModItems.ams_lens).maxDamage) { @@ -193,7 +193,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object lens_damage_buf; @@ -205,7 +205,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {power, maxPower, watts, lens_damage_buf}; } - @Callback(direct = true, limit = 2) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java index ac7bddef0..4c43bf5fc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -68,7 +68,7 @@ public class TileEntityGeiger extends TileEntity implements SimpleComponent { return "ntm_geiger"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getRads(Context context, Arguments args) { return new Object[] {check()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 8d55eb799..63ea4818e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -256,19 +256,19 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I return "reactor_control"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isLinked(Context context, Arguments args) { return new Object[] {isLinked}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getReactor(Context context, Arguments args) { return new Object[] {getDisplayData()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setParams(Context context, Arguments args) { //i hate my life int newFunction = args.checkInteger(0); @@ -284,7 +284,7 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I return new Object[] {}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getParams(Context context, Arguments args) { return new Object[] {function.ordinal(), heatUpper, heatLower, levelUpper, levelLower}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index 09525e8a4..0bc646eee 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -396,37 +396,37 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements return "research_reactor"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTemp(Context context, Arguments args) { // or getHeat, whatever. return new Object[] {heat}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { return new Object[] {level * 100}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { return new Object[] {targetLevel}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFlux(Context context, Arguments args) { return new Object[] {totalFlux}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, level, targetLevel, totalFlux}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index c605f96d6..43536fedb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -545,49 +545,49 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF return "zirnox_reactor"; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTemp(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getPressure(Context context, Arguments args) { return new Object[] {pressure}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getWater(Context context, Arguments args) { return new Object[] {water.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCarbonDioxide(Context context, Arguments args) { return new Object[] {carbonDioxide.getFill()}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isActive(Context context, Arguments args) { return new Object[] {isOn}; } - @Callback + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, pressure, water.getFill(), steam.getFill(), carbonDioxide.getFill(), isOn}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { isOn = args.checkBoolean(0); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index f6e81933f..75097cd48 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -378,7 +378,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"Crane not found"}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { @@ -387,7 +387,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 4) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index f025f1114..dba203483 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -332,76 +332,60 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I public String getComponentName() { return "rbmk_boiler"; } - - @Callback(direct = true, limit = 16) + + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteamMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getWater(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getWaterMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { int type_1 = (int) CompatHandler.steamTypeToInt(steam.getTankType())[0]; return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteamType(Context context, Arguments args) { return CompatHandler.steamTypeToInt(steam.getTankType()); } - @Callback(direct = true, limit = 16) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setSteamType(Context context, Arguments args) { int type = args.checkInteger(0); - if(type > 3) { - type = 3; - } else if(type < 0) { - type = 0; - } - if(type == 0) { - steam.setTankType(Fluids.STEAM); - return new Object[] {true}; - } else if(type == 1) { - steam.setTankType(Fluids.HOTSTEAM); - return new Object[] {true}; - } else if(type == 2) { - steam.setTankType(Fluids.SUPERHOTSTEAM); - return new Object[] {true}; - } else { - steam.setTankType(Fluids.ULTRAHOTSTEAM); - return new Object[] {true}; - } + steam.setTankType(CompatHandler.intToSteamType(type)); + return new Object[] {true}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index 945638b7e..076e5afc6 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -9,6 +9,7 @@ import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent { @@ -126,46 +127,41 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im return "rbmk_control_rod"; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { return new Object[] {getMult() * 100}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { return new Object[] {targetLevel * 100}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, getMult() * 100, targetLevel * 100, xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; - if (newLevel > 1.0) { - newLevel = 1.0; - } else if (newLevel < 0.0) { - newLevel = 0.0; - } - targetLevel = newLevel; + targetLevel = MathHelper.clamp_double(newLevel, 0, 1); return new Object[] {}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index f22e00b47..1afb0cc8d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -133,7 +133,7 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement return data; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getColor(Context context, Arguments args) { return new Object[] {this.color}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index 8c15cd8d7..715eba42f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -149,31 +149,31 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc return "rbmk_cooler"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[]{heat}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryo(Context context, Arguments args) { return new Object[]{tank.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCryoMax(Context context, Arguments args) { return new Object[]{tank.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[]{heat, tank.getFill(), tank.getMaxFill(), xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index e9699b87f..38436e799 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -280,54 +280,54 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I return "rbmk_heater"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFill(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFillMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getExport(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getExportMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFillType(Context context, Arguments args) { return new Object[] {feed.getTankType().getName()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getExportType(Context context, Arguments args) { return new Object[] {steam.getTankType().getName()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getName(), steam.getTankType().getName(), xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index 8dbaa6360..1b74e6e92 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -226,37 +226,37 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return "rbmk_outgasser"; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGas(Context context, Arguments args) { return new Object[] {gas.getFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGasMax(Context context, Arguments args) { return new Object[] {gas.getMaxFill()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGasType(Context context, Arguments args) { return new Object[] {gas.getTankType().getID()}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getProgress(Context context, Arguments args) { return new Object[] {progress}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 8) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 2a432b5d7..d22b5ae13 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -389,25 +389,25 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return "rbmk_fuel_rod"; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluxSlow(Context context, Arguments args) { return new Object[] {fluxSlow}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluxFast(Context context, Arguments args) { return new Object[] {fluxFast}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -416,7 +416,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -425,7 +425,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoreHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -434,7 +434,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSkinHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -443,7 +443,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object OC_enrich_buf; @@ -464,13 +464,13 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {heat, OC_hull_buf, OC_core_buf, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getModerated(Context context, Arguments args) { return new Object[] {((RBMKRod)this.getBlockType()).moderated}; } - @Callback(direct = true, limit = 16) + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; From c86e52f5c026f6d2609b2f7c0dc6a77177d4082c Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 28 Nov 2023 21:28:54 -0600 Subject: [PATCH 141/207] pretty important fix where crane consoles would move 4x faster than possible --- src/main/java/com/hbm/handler/CompatHandler.java | 5 ++++- .../machine/rbmk/TileEntityCraneConsole.java | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java index 07d7fd20a..a8fec64c9 100644 --- a/src/main/java/com/hbm/handler/CompatHandler.java +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -10,12 +10,14 @@ import com.hbm.inventory.fluid.Fluids; * Mostly just functions used across many TEs. */ public class CompatHandler { + public static Object[] steamTypeToInt(FluidType type) { - if(type == Fluids.STEAM) {return new Object[] {0};} + if(type == Fluids.STEAM) {return new Object[] {0};} //switches break because objects else if(type == Fluids.HOTSTEAM) {return new Object[] {1};} else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};} return new Object[] {3}; } + public static FluidType intToSteamType(int arg) { switch(arg) { default: @@ -28,4 +30,5 @@ public class CompatHandler { return Fluids.ULTRAHOTSTEAM; } } + } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index 75097cd48..9f85dfc9e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -339,12 +339,13 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return "rbmk_crane"; } - @Callback(direct = true, limit = 4) + @Callback(direct = true, limit = 2) //yknow computers are more efficient than humans, lets give an incentive to use OC @Optional.Method(modid = "OpenComputers") public Object[] move(Context context, Arguments args) { if(setUpCrane) { - String textbruh = args.checkString(0); - switch(textbruh) { + String direction = args.checkString(0); + + switch(direction) { case "up": tiltFront = 30; if(!worldObj.isRemote) posFront += speed; @@ -368,7 +369,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"Crane not found"}; } - @Callback(direct = true, limit = 4) + @Callback @Optional.Method(modid = "OpenComputers") public Object[] load(Context context, Arguments args) { if (setUpCrane) { @@ -395,4 +396,9 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece } return new Object[] {"N/A"}; } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoords(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } } From c353334b21076e8e17e0eafd21e314aab282826e Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 28 Nov 2023 21:41:25 -0600 Subject: [PATCH 142/207] bruh --- .../machine/rbmk/TileEntityCraneConsole.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index 9f85dfc9e..d54042400 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -396,9 +396,14 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece } return new Object[] {"N/A"}; } + @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] getCoords(Context context, Arguments args) { - return new Object[] {xCoord, yCoord, zCoord}; + @Optional.Method(modid = "OpenComputers") //if this doesnt work im going to die + public Object[] getBoundPos(Context context, Arguments args) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection left = dir.getRotation(ForgeDirection.DOWN); + int x = (int)Math.floor(this.centerX - dir.offsetX * this.posFront - left.offsetX * this.posLeft + 0.5D); + int z = (int)Math.floor(this.centerZ - dir.offsetZ * this.posFront - left.offsetZ * this.posLeft + 0.5D); + return new Object[] {x, z}; } } From b0b37223a7e7a0c559b89b9e4c5a5d810bccc7ae Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 20 Sep 2023 22:31:32 -0500 Subject: [PATCH 143/207] oh get ready for this one huge commit yes i should have spread it out but im lazy :3 --- src/main/java/com/hbm/blocks/generic/BlockBobble.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/blocks/generic/BlockBobble.java b/src/main/java/com/hbm/blocks/generic/BlockBobble.java index 1ec769c03..afd48197b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBobble.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBobble.java @@ -191,7 +191,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { NOS( "Dr Nostalgia", "Dr Nostalgia", "SSG and Vortex models", "Take a picture, I'ma pose, paparazzi$I've been drinking, moving like a zombie", true, ScrapType.BOARD_TRANSISTOR), DRILLGON( "Drillgon200", "Drillgon200", "1.12 Port", null, false, ScrapType.CPU_LOGIC), CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK), - MICROWAVE( "Microwave", "Microwave", "OC compat", "they call me the food heater", true, ScrapType.BRIDGE_BIOS), + MICROWAVE( "Microwave", "Microwave", "OC Compatibility", "they call me the food heater", true, ScrapType.BRIDGE_BIOS), PEEP( "Peep", "LePeeperSauvage", "Coilgun, Leadburster and Congo Lake models, BDCL QC", "Fluffy ears can't hide in ash, nor snow.", true, ScrapType.CPU_CLOCK); public String name; //the title of the tooltip From b000105392e84e1dcdb561cb680b20e64cc2b25a Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Sun, 24 Sep 2023 17:01:24 -0500 Subject: [PATCH 144/207] attempt #2 --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 60f325e78..df7ebbf45 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -831,6 +831,7 @@ public class ModBlocks { public static Block crane_splitter; public static Block drone_waypoint; + public static Block drone_waypoint_request; public static Block drone_crate; public static Block drone_waypoint_request; public static Block drone_dock; @@ -2013,6 +2014,7 @@ public class ModBlocks { piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); + drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); drone_dock = new DroneDock().setBlockName("drone_dock").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_dock"); @@ -3296,6 +3298,7 @@ public class ModBlocks { register(conveyor_lift); register(crane_splitter); register(drone_waypoint); + register(drone_waypoint_request); register(drone_crate); register(drone_waypoint_request); register(drone_dock); From 42bf74c464d234470188d604770ec341561a964b Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Mon, 28 Aug 2023 16:24:38 -0500 Subject: [PATCH 145/207] jesus fine 7 here's your fucking fast conveyors --- .../item/EntityMovingConveyorObject.java | 8 +++++++- .../hbm/textures/blocks/conveyor_double.png | Bin 360 -> 4393 bytes .../blocks/conveyor_double_curve_left.png | Bin 1340 -> 4845 bytes .../blocks/conveyor_double_curve_right.png | Bin 1278 -> 4824 bytes .../hbm/textures/blocks/conveyor_triple.png | Bin 365 -> 4365 bytes .../blocks/conveyor_triple_curve_left.png | Bin 1363 -> 4716 bytes .../blocks/conveyor_triple_curve_right.png | Bin 1335 -> 4713 bytes 7 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java b/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java index 228c8230a..b13accbae 100644 --- a/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java +++ b/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java @@ -1,5 +1,7 @@ package com.hbm.entity.item; +import com.hbm.blocks.network.BlockConveyorDouble; +import com.hbm.blocks.network.BlockConveyorTriple; import com.hbm.lib.Library; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -148,7 +150,11 @@ public abstract class EntityMovingConveyorObject extends Entity { public abstract boolean onLeaveConveyor(); public double getMoveSpeed() { - return 0.0625D; + double speed = 0.0625D; // this worked first try + Block b = worldObj.getBlock((int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ)); + if (b.getClass().equals(BlockConveyorDouble.class)) return speed * 2; + else if (b.getClass().equals(BlockConveyorTriple.class)) return speed * 2.75; + else return speed; } @SideOnly(Side.CLIENT) diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_double.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_double.png index aa49e18c86beb2a36b5ea9be47796a5083419b3d..6d773232d77c206207b84f3706abb4fcc35cdb19 100644 GIT binary patch literal 4393 zcmeHKeNYo;8V^E?LO`tYS*UBUD3;BBZ|2bZlj_`z~1_$&zeHuxGWl zR#2g8Td(8bSUSpijMRQ0RhcT)TD4eYdhMJ=uVXD&+ZjEir$=vWd-rbmp6kpFGuQvf z%x3p}K7Q}>{GR7|XSdF_a(P@#T8vC4i?f*Xi{L#0UYnyL;s2eEyR+c!qYZY4SVRXA z!RO`pN`Qzp0zg2B=VY=_uiJJt?kpnzseF6G_2i>f=2y&redC+K>C0kP)l=O^BhwrD zZ_1B)&Lri0yJ!81sQ1>dPBS;rx0hyh^knQ~>$ZJq+Oq4$=U?ybyQk`ITUZsjBiQu* zf_BZSPw#b^E?}SiqKNqN>BA>?ePVt)wrv1iajfrta{CJ#{qpxSsoQFY$r# z#v_UPS6|!QqFvwSjqA;ev8kJORcY%Talbzm75OjSANjANZwjTEJ2&}G$z%~P@+Onb zVls{71G8w{xZ7wxo0ooWUGX_Z;;hHbRTpggZ(WbR;b?J0#U5(yX?fw|p>;h6=UJ+% z=B$m4e=esaV{Ky~AS6b8I5S~Q@`8fo?14>|rh=W(=YI|b`>O`y6ZWlc-e)B8zR1bk zU%TVPPc2slx696?ERA~QA=N#WBVsQP1ZK`%*Z*d2*Zpe;n7r)Q<#*~nBAOpg8hCKv zR`VhMR}13bdG}z#f!R-{h)ZrPf2&J*x=N|fxpQgPZtLaQ+iK4hC3ii2>64dMnty)gFVUwvG&}xW>?y+I@1DBy&+{og@5i>Kwg0@a@@nhs&VS3- z@)?_2XI$F2=d15ryEDs#hmRlsyX%KXgcFfFbHCp+Prv6tvn^*@fB9W&P1%o0->vgM zThaf`-G~cCYr1ruAI`&{dGl7_NF+{Gb*W-5S)I6*n@F)I2yPAd?eH7eFZ65G`PY635(bY`lkG zEU1Pc!vX!Ohu;pz6e|LLZ@|ZZf@VHpfm0yi}E!(E99TQ0X) zZKEC%1?9Y32zx=YCs>L+H%8Wk*d$Fjo$-M{_fgyl)+4!xjiHs*YRLC80VzC7zEL6V zZ(zL)&lp2G^oaPOn1Mj8ly|X`DnElBCpt;#fUHjf1jy{37jPfCL4>l|008 zYITH`Vx1^ZGbE~p#YHKK)S)U4=hTdza;nr|9K@489(E;NIX)^0iiJ=(rKhx$*VJ}Lk1g=!6!y2hD z2AB?{mX+AmOnv(9BQ@ ze!3d4;W#1Ikcx59o^k-skKu+Lk@LUO3;;Oww3B5}Elt5@;PfQwRO!?xL8?d%$Ke_c zH`Gs~=zcFJ25BEyQVw~9T)_qnbA>D%E>-r#Xo4;v)d5n5;uJbYnNEQXCyPlZ#z?lg z*njbn8#Wks#6Z6x89ch+Nr;Ueg~NQoSbxjka2Lok>6WwQ7)(iM@oaK&aQ zj211{g6Nym(`M;rVGpV2LD8Qq`Ah6n7gJ^@lgiX3No9idXhH=2V0T|)L}MuzA#b=1 ziqkuSg>+flQ|XIf; z{K&ttXKH delta 283 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 L4LGxW!}k9GO5`DO delta 1282 zcmV+d1^xQ%CA~OIJZGKO9nVY)IbYfkzVl%v^dxP1G85LjAvF7xx!5PE;G!R+2?tyYBWn?f=PGv z&!?V#OZA)n{H`*Ee4%obsjF@@jTU~#Q4iNMuh)NTmQ-)qTlD7lj`E^e)NMy;mHn8l z6epe|x1ae@iC^CBTwWb>o%-(Wx032&jh#`~QN5?;;rrWfhw7nopL%bj0&Sz`Nzwt*=7?jj{8;0xkxucRz5+*BL9N)x) zVGDnZLZ(p8k->XU$-tMtgn@Nx!Wf2uW+chEW~^6+5jPB@Xc>F=m#H_GUs5mm=y>vV zCGmKDM@c+hGp!iU(;N)OGjzc~JozFSy!V6*e0e7ftWy^T*3gWnWm7YHbHj*S!>C%u z{^zgh_xO3qN5_+?DTycQr}cGs7eO! zJtc$r2m|ZXh2i;knz2Ma!dP|;quVx&oMr6ckK6t9z4WR-5)b>scn1BFVtc}I>sWuG zJ;^8l1MM03EpAFVTd0!3d(X&VKEl8{HN7e0zGnQ~G&EzgGK^uvFqpA0_OAYQ-h8=# zm5;P1Q$T+hPd7MLY>)TgmK5VzbodCw6Su)YJe49Dy!VU@=?@uLr!EYC8feB69TY}y zZWzP1VN@++|I-g#^ZNbL@sw*y;_-i(593)k9fkIc!W9^3j~}+cKs@Cf8PcDL>5nk5 zPE8nNzpojaNmDbDz%T|a!>C%u!QlV>k@jGAD2XS!!`xsz*X|(($Rp+t7>vhjf{{O} z$6`(?3)a z&$f}m02zhJGZ<)37_&dwLOD~k;RE`q&<1`hwX{5_e$cKxoO3Cmh2DO<3*UQ3h`vCc6^JR8nuv?so4fPr`lIXk}2_z39_ z8JuCl;2Of%+Wu?iPqXBy41?~I4@8SPp2=A0XdXNK8< z_bdA`XX|%DhV+LF&M;w2qmE|Go?OkCbqr(b8b;MJ_W${=50{toOX7dQ`z7&=g0y0L z!VvvIdp1b`2HJBI^ZY7j3YnrEUngYf{_v>H*#2OK31hN8*NiYQ48LI*Rm(WIH%INu zeAWki9VOuj)=w#kr-ytNJm5RrcOLK;vMC?4RXe^;KS!_n!x<)wsN2_!C;X2f4DZe` z;tRtlTE>BIj@n=O=y*=@H8qd}9{G&rfOk26aDuJC2zkIaxG6Z`t9E?->W?ru!-O#y s2AZ)>T+JA-3}bw57&*(3{!F^ge;S$+dduoOrvLx|07*qoM6N<$g4Q#0F#rGn diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_double_curve_right.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_double_curve_right.png index fafd8b190002d0026bcbbb7971afc3a2ac191591..2ea981a7185696b31055aba05a9ae4549887a0b7 100644 GIT binary patch literal 4824 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 delta 284 zcmeBGddoCHOoNeug_(hY!K3DNEs$a?4sv&5Sa(k5C6L3C?&#~tz_78O`%fb4WF`TR z`b(ZJjv*e$&t5d-I%FVn?Bn!>7d9pYSgopHczvl)l1q|#S{HjpOCFzTUz20NalgKG zdmFABYuT*-(A)ZctNlM!Lw~p6iK-z{k>;mDMZ}-&>iH$C`8wbK?<5tuw7ng_Hb|!2 z)%<;T$zN+f?xM$==}R z|M^!O{l1;@5@AbcO#E=4F|j~Q0K~*fec0|GF^9F~U?iCOc>BvU-cF{d{5G}FB%p^G NJYD@<);T3K0RY>jaMJ() diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_triple_curve_left.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_triple_curve_left.png index f6411e3c5fc53f6c78cc8b87e642b2fd673cae11..ab4fda3be41ca18c90254e4d11e0fe27bbb539a9 100644 GIT binary patch literal 4716 zcmeHKYfuwe7LJb0wN(e3=cc$yvSn{gaL#o(F{bzSzYY(BWWQIl7*>RBBz#@9)*u@_fC8*4_#UQ{SjD)gwfw#I)!A#UY3QJLPB#E=(@GZ zMU|1Fq{_Vo-!-R?`}+E>WsJ9v_yy-$e_lM@?ekHdG}@?KGAc?bkBWMi56Gf;Re>z- zV#KuiP&a>OYSI>HoU%5f<^>?;q+|dCC)(~kIr$OPY)h2-~E{W_mlfw zOD4~sN=3HD9&cdPrm@5`pEdrqK+!aL{f7Dk&xWOq*VfIEMos%vwWVuqaf4$UbbWc% z^_HFoY$uP(LZ_d|t<0Q{W)!R*@0G4nu3Z~c;T;@!qtdVE*?QmXO-s0ELY6&9if|5@ zamA(2p|(blcQa9+0MonA-Fk6lYV+xdmENa%SEb&rn0)@N(-P7*yJAA)s%>}MwFLpo zj6T)X|JHU*H=Y@@S^BSS{^D&V2bD8NcWAm5naf^!v?rTaq;%Zx9(6TgQG@XO1%LR@ zWlz)dEe`)!@wz9zrq<8J-Sn^nzvBROmq7x3B`M-1s6od z6r5tHaSf@LF*|B%nG6z>F&7CGu)-LHYst7Q6P}ngPlaZspkjh)8P9Y4d zE>&-qSY=E*t^_>WhS^Mp-GoY!F_RQZMwG#XGx#h%3x;B>WCoWR?#PguFhY_LJ$nEG zyvdkaiZV*rY>UOhvhY|2lZMR^i^Xi1%jR++U;&vk^%P=-^yUB?L_bC}ZbnU{ks=Lx zh7A)@8`3EmlL_V-@8Z)L6^cQ4y?KBIzz5rk7}*>a%+~4HLp{t?Oa=fM2;&9wNH?K)Oa`u}0)|3h=%Bwb-IQui2SeF-Dy{>jX0R$}*pjhwg>ultMuCRZ8SP$x z>|vG^NxUa(SZuZ#dpbh{0q%pi!>r%sZZ`&23WX%vfTr8RlSj*#w)G{L0VOes{ZRzt zLJ?mLLtKFfgZKzn1c~`v9>f=Lag3`Lszo?F1WK+qQ-~hLZBPK5MFJdxOQ3w15J5bS znhWtcz*_`-A%c(NFo#13_ylJN#C#J8REeYxjmidv0jMxsh!F^aK`2ImX!t@Qq!xtn zAs9wsgc}wHAQ3whhDv4|OgaQ?C#gd;INPY#*e7g+OCptW8I#NE58OVYOhqUHIDi@; z^_an8es8QIb$B9$*!bjxiFvS)&*KP%VvxoV|An~8476xN<-jZ+-|lYP7zs!RP>a}< z3IOcmAR9@P2}dY{No6pk%9yqg7&gzrX$2@K455%{gu($R%;ia7k%Swj;_xI~frJB6 z7D(VB_6Ce3GXIygt$Y~L{!Nb~&0zgZ`%r&PCE{uQZ~d>Sq`jCJ40~Bf5VSu9Gm?R0 z_Ba7n{}if4^co!Wj{(8H8z+B53~D$G7O1%#h{MBxiuh_ZB;w#e5h4u1IAL5uBt(a! zn+*hIK}>k02Ji^D0s^&j#RwYMs^H=F7A!>HLnrfqnQLR{+o>i+m8jBXo_>^+61LknxDRM(Fw= z20qAmL|y+kx*Xphrf@y@0 zdL(YUTWhe~T}^52|wINfdWY4?~? z?!R(;nP_WSzG4HbOL}d^IM?;!y4^oTZpk3Rls8-}ZhSMLW;>(h_;u+9_We|8ka1n=N!_BNYd z<;)iAQut>>nyEv5-MuZ<^hb@iiWky#R%-d#@SU@)H)Ag&RD;9j=fU)OGtY~*OY6e7 zYF&xewaY8>4&U4H<)lKWW|A!bd33voj++5vpws&bS9`WQ*RcC4L z!<10eT)X9fVx0@x zF*#fr^y0f9jcyD5gd=}i(vtu&+V^Zv_RglIUka0tw)LIJZ(;bs^gh9h3!>`CRd@W> z`8?Qqq9?X=M|D?SP|I#=MpoK%jpM3DZF1?Y*nPRLyq!;ucFwvRT7_0T={-`BT7|x) Z?T@;DvFv5uO`r&xJZ4_>@lTem{tr}I+qeJ# delta 1285 zcmV+g1^W8zB-09z7AOG#1Oos707!i6eEs99IO_h#Ly)SiMHXO|I2SIaUHii2tSUy_q2?=ZXE{>+hS#Hq_ro zOdJVMR=kjP<0OgWSBET~<$0Vpi;UaS_MB-!9jh z^N;^5G2vC(*E{_p9De@IyUl3{eja{#{ptHMOD2UE=g%(SSIy!NZ?_+-%(^V8GrNBj zKmToeTx477?-OQo+ZDDOuqaB?=1F!WTb3yC|&kQSr!-Q9N&k1xE2)waX0S zsaU|EqYYp{Jg$Wdh$pEdW1id&=@ni@w285?@mw)%87f9T(Tt?68NOlcjf*d@xBKN) zJ}Mp#`CvTDQJGOZ53NIn@kk38bhLpV#rA)sgA9l#t>G({Su`SsEA0+3ARonWMW7hj zon~Y$&9Dq(|FZP`yG`>iQ-3HP5i)Ggn*{oU?YYX^RR-;;a0eJFA7E5GSNQk}EL)wr zaSQ!HMn!l(5d-p33~7goF`sD0ysa6~AH~=mSAYC>=fiq`C>}dt6wghs%CJ2TX$yZV z>Plhti>5y%2JzSqGO%n7>PD1}h#_tFsXvM#yg)G??lfcB(G15hcKLdBR5H6v+j zhHn^qkHwd7x5sP!QSm^3ust_XugHI}J?Q}Q!Fag!ULURj!;`kOkbz~R{zO^!4>8~= zEn+}Eis89|Vk~=_k##h~Hw@^{i}U~WhuU)l{h@eb$OqdK&zkT+h=)5D`f!aZ>T-)F z1=6e`BgtnIVtDePO$^9KF}zBs81Y0iZcjABxzvpPzp7vTzGFrP^P%=&f3SZ&Q3Uga z?HMeNVZI<9;XhVa{egJ6gA6QN4H;Rs=n=!^)E}BJ#c*Yy7=t^_h&q~K8OGl9@LRf0 zpYoyh2)LiIJ#jLG`NDYelPbe_Y{&Gch8126uUj7}y_TND(N;eNQv)Tbkh*#-3RmYx6}LEM(Z8B!T`=Jb4>l0r5!3T;?_U zD1tlqia0*Ksv%A9z=HRY0r7O}$hb}BLt;qbHHiWFD2C*rV&p^3 zh)*=bF^v7bUbS1R{Y6n5EMPaZ;Cs*wTJW&HFdonU@N_>H;1dYjM+U?bHINZy%Mmf) vDJ^0^K8nH3{z^xhadxa3mSL#=OiTX(qej|R)O_0^00000NkvXXu0mjfgm!L8 diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_triple_curve_right.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_triple_curve_right.png index 4c32e96e580ebf8a1a364868553e0efa031dda5b..7850549016d6ffc3a31cd3ab9a0df3fedfc2ce95 100644 GIT binary patch literal 4713 zcmeHKX;4#H77l_!M+F3wMQLJ01mtCXSxwkMViS!J6_svyd3i~mkcH$y0tzmOwn*#X zlxyLFqV1?Kt%KSwBMqq7u8d6E4x`uu?yVw<#sze40wPp*)s$7!|47x_?)}bp&-u=| zr*c=xrcWJ7_9K%>q>++@*d*|D2bavr5!_pg?uUcNnLK$4k%X8j2BThuXJQm0*MLzl z3$7xOEX`WkeAjx)h`0B=rbK%I=5}+^=r{hPmc!d zvbfv}ShZSQGS4R}erf%VwFmdY`>msn6wbcRe^5~;ug_f6<(cu~@#BBpT6)f5n7~n( zXZSpj@V*-s+;XnPfUDEjJRJV|=(npnhqe{YrCw}5XeE&xmg6xoGD%F#hk!sBW%;Gz zg!;&FXVQ|-P)CoNl8|*yw)N33&aEl?Qk;hGu58>__~Y)h#)|QhtSqn8;jRT?v;9-c zva=1Nooe0O=Xg(w^A71)EGdsGac=0gnA@|guI^iA?b#w`M*b8wVe8kck9F<4ZY?I& z`9wSY*@OK;sbUVl(vj^Jkk-Cabm8rd?Pz4krV&q9oo4PCJEmh;$D=*FO)ZmL4<4#; z-|jiXhlpyOT6KX|lSLDRJ-zs+Qt1`Xm0zDp^1krp#q%qsiDJghlz;QAsO$py9&~xZ z;mgg|+w>7*s@ISB8DB$PIx(Tvk*RTNencwnzqsCv|&Lp&msdio=c()DHsT4be$PiOgq%um3-iT3P8cbtAaTYv>MGYrYL`J1bm=qh| zO98&bR1HBGgmk*uY^IsnG`&$xX9@%YI)g=Lu^@neOu0G&u|PW01RF&UM=WMSjktlp z^*V};6H(~12{Dxl<|!Zi(;B4GK6;(0R|TL4-GUhCOd5l()zbT0n25L>K+@~b?^>AT zV4u>HFq1yph+=U$n2wmxpF)ZD*&DKrnf7p$C>_hhv;b-Xt1<^HIaMN+^;y^?P~%#I z-3o|307>Agk75n*%{F5Xr@te>ypMMP`a|q?FhEJA!dN|;ZF5f&E2i4k7b^8At`yo| zxlEo)!AD^TVW27q#z0OKEG`ei5R}Vcad>P7!t6&S(U}NDhhjD=Ku*H}4;x`9P##YK zvH2JSf|&{?#D^7p2;*W(g$h<-JQm!KVule1Rf%Nw_sT}41XL=Ni(*PX1}RjS5`y_m z4#ekxHxA6?B0LpWsbDeeR7zABuQzHDkWO5Ss4==hr?yYn1Q$lhBw{Ly)&sSV$TAT^ z1q{F*z;#N!+4K=C$F*28f!Oq9as_M#4`vH^93G#?=X?as#*8LVi#Ap!gU0TO$Cel& z2nR@u*eVqe*eyUb!Wbil5PG9rug?@yZ7xu3mVMJwu%VO)fy5#N21pq!wvfRWvbb_4 z8{CC#4#eOH8U65jC9cZ-UufI*p@@2to`9Rc`nmR@o;{U}W%YdZd}iYI%|xNtw}lWv zdqOZFIhfM!C*bOtLN$m^je-8rTd*I-@!u&1mv9{#`;0QKM^pQP`gT!V6bk^-Lu z9;~iGxjspOPXZ5C*Z)l}^2fszrUU9J4}YiSoFzvNDZEW6agJO zxv?Phx!C{5prD|{#KgIC=lc5ks#L1T$Vd){)AhF<^MKW7hJ?8$63MmBb~%g=p0)%G zIujCUobx>wKM%i&Vdn#>;Jn=~iH(v6UzxS8M&BfJ2S-gOg?j42zZaIJt*1^rT~O`l z5y%}qB(OEy*GCxVFn?x{cNrC1P_c5g=&y#{eWP=@RvYTg&T_qTi)$61txb8d_q*^1^8C9jMnvavFXzXt zwK?J|bJC>?*Sel;bktrwW_>tj#W#1hZhTJO@T!aj5n{`68C(-9gc~!qTDhO&JTCmdxltt^X+wpa;h7(1y7tm-!yJ zoqAC=id!A?BrBl&<`)s_Lcg}E8I7l2ZP+K7zgo1u@ibbsY+8gj6lFWO#JxRk_q3eIkhiU>VBG&Fjz{~`CIyQIfA7QA%qQrveZ zCcS~f*EhzWTr<(Dn@^rr5LmtZ4!JosS!J&1PH8&MyR~UE^t1SC+R^vV>m{Q!*~hoV zl)>e{j$$vL-H{jFwcurYfuU&p1WiC&boBiF@W#gFZxVuEmo}0&OxB1u^0++D4r{@_ ehi6Nyk0Xlx+wzzS&0bIqBuU)#*sAFCW&Z^e_u#<* delta 1257 zcmVo`M@hT~*-p|BsU`6pW`R^18-xI9nz#lQ zT}1_Zs;)BNP${caG8yDm5wtVQN$`+8pmN4& zMcID?UorONfx`F@#f(wHafQ*j&={+W9K#aTKli`=qx$ki!B3zBiRxC&f<*ml#)5!h zx+Dk~162$grUOBQF`#n3q8q0vW6T{lP#ENgF={x@#>(AmjWNH@F)UGE441dM?y#-rGM2%>*0dQ{FB?RAtf#uy(`803dBN;s|_rM1x* z)uS|L8euf`s*zV66NtR3qr9iNf0nby1##>L)(WS&d((TF-Ch6tr_Fo>-!3W`-^OpDEy4k z*=USalw(*_b9nSLKfV$q%FR<2g#Joc5HN5#1Oa38n4bWG2xD{#L5$H%mnmbQzof$8 z{18SB$E%Fdz10}=WsYId0Quyn#$vbFUrLauw?Y;qD(4vs0)`oopvU|mqIiG8pida1 z5P}$^6>TEMK!5cW2Iq$`N{-YR?TyA*ZE_5g$LUe!$L(T&DM2)!S&(Q#-{l7Zw$>BSJl7??jQ8&{M=#!&Ma7&RQn!vUk4YK(cBW7s@S&l=OG{l$VrqaCs! zcD7c8e<&g7j$x_gQvbEsU%nC~jCRC=MD;vlLBOy)67;yg@F=DaL4?sm`6Yj2v>(=-pTqG1 zzQY(ipUFlE$7$7`HQG_Wzb;08zjQMGfVe3_UQ|vFb-q8guUhnv)V_xqW zFl<`y5*Yu_=b?r5&iOSN@v Date: Wed, 20 Sep 2023 22:31:32 -0500 Subject: [PATCH 146/207] oh get ready for this one huge commit yes i should have spread it out but im lazy :3 --- src/main/java/com/hbm/main/MainRegistry.java | 1 + .../machine/TileEntityMachineReactorBreeding.java | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 6b933db58..5ce6be6ab 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -921,6 +921,7 @@ public class MainRegistry { World world = event.getServer().getEntityWorld(); RBMKDials.createDials(world); SiegeOrchestrator.createGameRules(world); + CompatHandler.createCompat(world); event.registerServerCommand(new CommandReloadRecipes()); event.registerServerCommand(new CommandDebugChunkLoad()); event.registerServerCommand(new CommandSatellites()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java index 3a8cec7ca..1a44314c0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.ReactorResearch; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMachineReactorBreeding; import com.hbm.inventory.gui.GUIMachineReactorBreeding; import com.hbm.inventory.recipes.BreederRecipes; @@ -15,7 +16,7 @@ import cpw.mods.fml.relauncher.SideOnly; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; +import li.cil.oc.api.network.SidedComponent; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -27,8 +28,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SimpleComponent, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SidedComponent", modid = "OpenComputers")}) +public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SidedComponent, IGUIProvider { public int flux; public float progress; @@ -216,11 +217,16 @@ public class TileEntityMachineReactorBreeding extends TileEntityMachineBase impl } // do some opencomputer stuff - @Override + public String getComponentName() { return "breeding_reactor"; } + @Override + public boolean canConnectNode(ForgeDirection side) { + return (CompatHandler.canConnect(worldObj, side, this)); + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] getFlux(Context context, Arguments args) { From ab9db6806c45bb18fe11821b94e0b064dd884b6e Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 8 Nov 2023 21:31:04 -0600 Subject: [PATCH 147/207] Revert "jesus fine 7 here's your fucking fast conveyors" This reverts commit 0f47e9ace0e8da9f10b9d9458bcee36b528b8b2d. --- .../item/EntityMovingConveyorObject.java | 8 +------- .../hbm/textures/blocks/conveyor_double.png | Bin 4393 -> 360 bytes .../blocks/conveyor_double_curve_left.png | Bin 4845 -> 1340 bytes .../blocks/conveyor_double_curve_right.png | Bin 4824 -> 1278 bytes .../hbm/textures/blocks/conveyor_triple.png | Bin 4365 -> 365 bytes .../blocks/conveyor_triple_curve_left.png | Bin 4716 -> 1363 bytes .../blocks/conveyor_triple_curve_right.png | Bin 4713 -> 1335 bytes 7 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java b/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java index b13accbae..228c8230a 100644 --- a/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java +++ b/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java @@ -1,7 +1,5 @@ package com.hbm.entity.item; -import com.hbm.blocks.network.BlockConveyorDouble; -import com.hbm.blocks.network.BlockConveyorTriple; import com.hbm.lib.Library; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -150,11 +148,7 @@ public abstract class EntityMovingConveyorObject extends Entity { public abstract boolean onLeaveConveyor(); public double getMoveSpeed() { - double speed = 0.0625D; // this worked first try - Block b = worldObj.getBlock((int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ)); - if (b.getClass().equals(BlockConveyorDouble.class)) return speed * 2; - else if (b.getClass().equals(BlockConveyorTriple.class)) return speed * 2.75; - else return speed; + return 0.0625D; } @SideOnly(Side.CLIENT) diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_double.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_double.png index 6d773232d77c206207b84f3706abb4fcc35cdb19..aa49e18c86beb2a36b5ea9be47796a5083419b3d 100644 GIT binary patch delta 283 zcmZ3f^nz)Em(6?+IEHu}KYPKDtJy&0*vILL&f9n_9rrjgyKYJ?C^-Fqmqoj5`n%SsSC1x0 zi+K4f$gLMVZGG6>g5y4SeVxjh%ZEf~tvY@7jr_`Q(pL-mM3x!0R(h-avFcsv*9`kB99Z|2bZlj_`z~1_$&zeHuxGWl zR#2g8Td(8bSUSpijMRQ0RhcT)TD4eYdhMJ=uVXD&+ZjEir$=vWd-rbmp6kpFGuQvf z%x3p}K7Q}>{GR7|XSdF_a(P@#T8vC4i?f*Xi{L#0UYnyL;s2eEyR+c!qYZY4SVRXA z!RO`pN`Qzp0zg2B=VY=_uiJJt?kpnzseF6G_2i>f=2y&redC+K>C0kP)l=O^BhwrD zZ_1B)&Lri0yJ!81sQ1>dPBS;rx0hyh^knQ~>$ZJq+Oq4$=U?ybyQk`ITUZsjBiQu* zf_BZSPw#b^E?}SiqKNqN>BA>?ePVt)wrv1iajfrta{CJ#{qpxSsoQFY$r# z#v_UPS6|!QqFvwSjqA;ev8kJORcY%Talbzm75OjSANjANZwjTEJ2&}G$z%~P@+Onb zVls{71G8w{xZ7wxo0ooWUGX_Z;;hHbRTpggZ(WbR;b?J0#U5(yX?fw|p>;h6=UJ+% z=B$m4e=esaV{Ky~AS6b8I5S~Q@`8fo?14>|rh=W(=YI|b`>O`y6ZWlc-e)B8zR1bk zU%TVPPc2slx696?ERA~QA=N#WBVsQP1ZK`%*Z*d2*Zpe;n7r)Q<#*~nBAOpg8hCKv zR`VhMR}13bdG}z#f!R-{h)ZrPf2&J*x=N|fxpQgPZtLaQ+iK4hC3ii2>64dMnty)gFVUwvG&}xW>?y+I@1DBy&+{og@5i>Kwg0@a@@nhs&VS3- z@)?_2XI$F2=d15ryEDs#hmRlsyX%KXgcFfFbHCp+Prv6tvn^*@fB9W&P1%o0->vgM zThaf`-G~cCYr1ruAI`&{dGl7_NF+{Gb*W-5S)I6*n@F)I2yPAd?eH7eFZ65G`PY635(bY`lkG zEU1Pc!vX!Ohu;pz6e|LLZ@|ZZf@VHpfm0yi}E!(E99TQ0X) zZKEC%1?9Y32zx=YCs>L+H%8Wk*d$Fjo$-M{_fgyl)+4!xjiHs*YRLC80VzC7zEL6V zZ(zL)&lp2G^oaPOn1Mj8ly|X`DnElBCpt;#fUHjf1jy{37jPfCL4>l|008 zYITH`Vx1^ZGbE~p#YHKK)S)U4=hTdza;nr|9K@489(E;NIX)^0iiJ=(rKhx$*VJ}Lk1g=!6!y2hD z2AB?{mX+AmOnv(9BQ@ ze!3d4;W#1Ikcx59o^k-skKu+Lk@LUO3;;Oww3B5}Elt5@;PfQwRO!?xL8?d%$Ke_c zH`Gs~=zcFJ25BEyQVw~9T)_qnbA>D%E>-r#Xo4;v)d5n5;uJbYnNEQXCyPlZ#z?lg z*njbn8#Wks#6Z6x89ch+Nr;Ueg~NQoSbxjka2Lok>6WwQ7)(iM@oaK&aQ zj211{g6Nym(`M;rVGpV2LD8Qq`Ah6n7gJ^@lgiX3No9idXhH=2V0T|)L}MuzA#b=1 ziqkuSg>+flQ|XIf; z{K&ttXKH diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_double_curve_left.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_double_curve_left.png index fe59acfe25447f009e2ee973c805bc771f68af3e..f5f4c4a8c824c2aef4e1529ea0c461e8248802ce 100644 GIT binary patch delta 1282 zcmV+d1^xQ%CA~OIJZGKO9nVY)IbYfkzVl%v^dxP1G85LjAvF7xx!5PE;G!R+2?tyYBWn?f=PGv z&!?V#OZA)n{H`*Ee4%obsjF@@jTU~#Q4iNMuh)NTmQ-)qTlD7lj`E^e)NMy;mHn8l z6epe|x1ae@iC^CBTwWb>o%-(Wx032&jh#`~QN5?;;rrWfhw7nopL%bj0&Sz`Nzwt*=7?jj{8;0xkxucRz5+*BL9N)x) zVGDnZLZ(p8k->XU$-tMtgn@Nx!Wf2uW+chEW~^6+5jPB@Xc>F=m#H_GUs5mm=y>vV zCGmKDM@c+hGp!iU(;N)OGjzc~JozFSy!V6*e0e7ftWy^T*3gWnWm7YHbHj*S!>C%u z{^zgh_xO3qN5_+?DTycQr}cGs7eO! zJtc$r2m|ZXh2i;knz2Ma!dP|;quVx&oMr6ckK6t9z4WR-5)b>scn1BFVtc}I>sWuG zJ;^8l1MM03EpAFVTd0!3d(X&VKEl8{HN7e0zGnQ~G&EzgGK^uvFqpA0_OAYQ-h8=# zm5;P1Q$T+hPd7MLY>)TgmK5VzbodCw6Su)YJe49Dy!VU@=?@uLr!EYC8feB69TY}y zZWzP1VN@++|I-g#^ZNbL@sw*y;_-i(593)k9fkIc!W9^3j~}+cKs@Cf8PcDL>5nk5 zPE8nNzpojaNmDbDz%T|a!>C%u!QlV>k@jGAD2XS!!`xsz*X|(($Rp+t7>vhjf{{O} z$6`(?3)a z&$f}m02zhJGZ<)37_&dwLOD~k;RE`q&<1`hwX{5_e$cKxoO3Cmh2DO<3*UQ3h`vCc6^JR8nuv?so4fPr`lIXk}2_z39_ z8JuCl;2Of%+Wu?iPqXBy41?~I4@8SPp2=A0XdXNK8< z_bdA`XX|%DhV+LF&M;w2qmE|Go?OkCbqr(b8b;MJ_W${=50{toOX7dQ`z7&=g0y0L z!VvvIdp1b`2HJBI^ZY7j3YnrEUngYf{_v>H*#2OK31hN8*NiYQ48LI*Rm(WIH%INu zeAWki9VOuj)=w#kr-ytNJm5RrcOLK;vMC?4RXe^;KS!_n!x<)wsN2_!C;X2f4DZe` z;tRtlTE>BIj@n=O=y*=@H8qd}9{G&rfOk26aDuJC2zkIaxG6Z`t9E?->W?ru!-O#y s2AZ)>T+JA-3}bw57&*(3{!F^ge;S$+dduoOrvLx|07*qoM6N<$g4Q#0F#rGn literal 4845 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 L4LGxW!}k9GO5`DO diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_double_curve_right.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_double_curve_right.png index 2ea981a7185696b31055aba05a9ae4549887a0b7..fafd8b190002d0026bcbbb7971afc3a2ac191591 100644 GIT binary patch delta 1220 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 NJYD@<);T3K0RY>jaMJ() literal 4365 zcmeHKeNYo;8V|(*A>Lq)}+ zmeT|8I-b?B=M`?w9?rFAt)89JDpowW!syg`t!*8tS9<3i;(6t6YOnY1hR?aq+%VJr zM`n`Uecs>md!Og`JkLAX{kC<*N%0HgB@#)J#cV1C*HrMe&58!U_x2910+%b>?d5za z5rX^yAH%w7h_Cn45FKV2i6s1?$M#Xu6)5qE^T5Honbq%RTjAiIgH`E^@=S*P15dis zp2_;O?`K=1o7!?VA)Rwk^Wmb8n|A-Ass+j{mXt~V{S)Ud>D9X5Hg7(;^UrA+D;{(_ z`lI>N4YzNtIsEX0<_-F;fkWM0ONx+|BX2hn{SDGw>t7q1{?<6}FDsH(#^JqB28yNc zpMA@@qj`UFQ4GlpFIm!@9!jq%sr+?XC&4KDTHV>-e5q=Eeqc`pY^v<=NF-5BY(as| zQcy6K4oKoyL#x4j#klxtRoPW|UfMI}+HTwN2X|xdm7gk~mC)YVe`?S5_Nx9@vn{o? zb1M^)pO=0_wKA>rVegMyt$pdu`>vK|_H60>!wYNm1&cS> zfAnbYv7Y$Pk@sreeDA}N&*X_2XMURa0ecYM^>j|_?zja(yKV2@+|Gr0%Ws@nI`XhN zYv+MV<@uG>pOqVvR_0tw`A_V{3;2sS%emH$KG}og z3+n*MXh7fU!P&u-%1dd^7YvYeVIA$|mrbUi$Z>yvFyI!`p-4IHrab`4fn60-wk)<- zZQ~w-1WwlD7rlVkQ;(AyQGKuE-bg5TKl_hj7wzzt<@)2!iWY+bjlHDU0kX zT5N8DXMh8k0oF_TLfiz{&U)xFo)Gj@s6p=e7>41PN`vMrCqNtN00(+eU{#QB^g5o-K65dC#O#S~u3*!UnBb73<9N52JG(~2rjIND5MIPO(I7|>Ej)jgOBPno1 z9UZAS;EF7fF2d`i!TB-Tuw!=iTbcnQ6*xwaYDA+Vl!%JPQN%%jLC2_kRHMcjilJyx zg>iPy$M7K{K(BTJ9f4M$K}D^g+|g3yO~r>?v`_~i8G>q%3CVC+KANmtI5Ebu)yw}! z54{MObi@F^hz%TF;3SlfABCfOfmpxK&uAUK&n+NmW|L{@J0sVOT+>ouTHu-PnvrW- z3QP+;(_P=0T=5exQ?wWS0}6pxrM5qDN5N}Wj;+LA=yJIXS=SdVSg?Hg@<6?p$h%Wf zQBhJ-QnT_OIF2(6V>BA?4{jX*_}PAQ1t*atUlzVm^K#cV0%I(1u@=UD9=C8#T>dYc zpFR&vFI!Bj?YVtqwLK$sBc+;C?YE}S{$Ws>LfrjL;-HE;e&^ENBe!n6*-u`Giyr80 ztbXp+btC?o>GImFo0n>G5Mz!0jm?*Tpue$se&aDFA$dR&bM4VfXYGdqX)zmn8qKe0 zql{a!9ltvLg>lQ;r`j@Fii}(C!ymUFd~I`T&Eg(YS3=fJQ_Q=i`dujW(!JSDQLoQk g4<+tvKNlS(sdBun>o#}sAWVs+aGmM&n(E#E1sr-E2><{9 diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_triple_curve_left.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_triple_curve_left.png index ab4fda3be41ca18c90254e4d11e0fe27bbb539a9..f6411e3c5fc53f6c78cc8b87e642b2fd673cae11 100644 GIT binary patch delta 1285 zcmV+g1^W8zB-09z7AOG#1Oos707!i6eEs99IO_h#Ly)SiMHXO|I2SIaUHii2tSUy_q2?=ZXE{>+hS#Hq_ro zOdJVMR=kjP<0OgWSBET~<$0Vpi;UaS_MB-!9jh z^N;^5G2vC(*E{_p9De@IyUl3{eja{#{ptHMOD2UE=g%(SSIy!NZ?_+-%(^V8GrNBj zKmToeTx477?-OQo+ZDDOuqaB?=1F!WTb3yC|&kQSr!-Q9N&k1xE2)waX0S zsaU|EqYYp{Jg$Wdh$pEdW1id&=@ni@w285?@mw)%87f9T(Tt?68NOlcjf*d@xBKN) zJ}Mp#`CvTDQJGOZ53NIn@kk38bhLpV#rA)sgA9l#t>G({Su`SsEA0+3ARonWMW7hj zon~Y$&9Dq(|FZP`yG`>iQ-3HP5i)Ggn*{oU?YYX^RR-;;a0eJFA7E5GSNQk}EL)wr zaSQ!HMn!l(5d-p33~7goF`sD0ysa6~AH~=mSAYC>=fiq`C>}dt6wghs%CJ2TX$yZV z>Plhti>5y%2JzSqGO%n7>PD1}h#_tFsXvM#yg)G??lfcB(G15hcKLdBR5H6v+j zhHn^qkHwd7x5sP!QSm^3ust_XugHI}J?Q}Q!Fag!ULURj!;`kOkbz~R{zO^!4>8~= zEn+}Eis89|Vk~=_k##h~Hw@^{i}U~WhuU)l{h@eb$OqdK&zkT+h=)5D`f!aZ>T-)F z1=6e`BgtnIVtDePO$^9KF}zBs81Y0iZcjABxzvpPzp7vTzGFrP^P%=&f3SZ&Q3Uga z?HMeNVZI<9;XhVa{egJ6gA6QN4H;Rs=n=!^)E}BJ#c*Yy7=t^_h&q~K8OGl9@LRf0 zpYoyh2)LiIJ#jLG`NDYelPbe_Y{&Gch8126uUj7}y_TND(N;eNQv)Tbkh*#-3RmYx6}LEM(Z8B!T`=Jb4>l0r5!3T;?_U zD1tlqia0*Ksv%A9z=HRY0r7O}$hb}BLt;qbHHiWFD2C*rV&p^3 zh)*=bF^v7bUbS1R{Y6n5EMPaZ;Cs*wTJW&HFdonU@N_>H;1dYjM+U?bHINZy%Mmf) vDJ^0^K8nH3{z^xhadxa3mSL#=OiTX(qej|R)O_0^00000NkvXXu0mjfgm!L8 literal 4716 zcmeHKYfuwe7LJb0wN(e3=cc$yvSn{gaL#o(F{bzSzYY(BWWQIl7*>RBBz#@9)*u@_fC8*4_#UQ{SjD)gwfw#I)!A#UY3QJLPB#E=(@GZ zMU|1Fq{_Vo-!-R?`}+E>WsJ9v_yy-$e_lM@?ekHdG}@?KGAc?bkBWMi56Gf;Re>z- zV#KuiP&a>OYSI>HoU%5f<^>?;q+|dCC)(~kIr$OPY)h2-~E{W_mlfw zOD4~sN=3HD9&cdPrm@5`pEdrqK+!aL{f7Dk&xWOq*VfIEMos%vwWVuqaf4$UbbWc% z^_HFoY$uP(LZ_d|t<0Q{W)!R*@0G4nu3Z~c;T;@!qtdVE*?QmXO-s0ELY6&9if|5@ zamA(2p|(blcQa9+0MonA-Fk6lYV+xdmENa%SEb&rn0)@N(-P7*yJAA)s%>}MwFLpo zj6T)X|JHU*H=Y@@S^BSS{^D&V2bD8NcWAm5naf^!v?rTaq;%Zx9(6TgQG@XO1%LR@ zWlz)dEe`)!@wz9zrq<8J-Sn^nzvBROmq7x3B`M-1s6od z6r5tHaSf@LF*|B%nG6z>F&7CGu)-LHYst7Q6P}ngPlaZspkjh)8P9Y4d zE>&-qSY=E*t^_>WhS^Mp-GoY!F_RQZMwG#XGx#h%3x;B>WCoWR?#PguFhY_LJ$nEG zyvdkaiZV*rY>UOhvhY|2lZMR^i^Xi1%jR++U;&vk^%P=-^yUB?L_bC}ZbnU{ks=Lx zh7A)@8`3EmlL_V-@8Z)L6^cQ4y?KBIzz5rk7}*>a%+~4HLp{t?Oa=fM2;&9wNH?K)Oa`u}0)|3h=%Bwb-IQui2SeF-Dy{>jX0R$}*pjhwg>ultMuCRZ8SP$x z>|vG^NxUa(SZuZ#dpbh{0q%pi!>r%sZZ`&23WX%vfTr8RlSj*#w)G{L0VOes{ZRzt zLJ?mLLtKFfgZKzn1c~`v9>f=Lag3`Lszo?F1WK+qQ-~hLZBPK5MFJdxOQ3w15J5bS znhWtcz*_`-A%c(NFo#13_ylJN#C#J8REeYxjmidv0jMxsh!F^aK`2ImX!t@Qq!xtn zAs9wsgc}wHAQ3whhDv4|OgaQ?C#gd;INPY#*e7g+OCptW8I#NE58OVYOhqUHIDi@; z^_an8es8QIb$B9$*!bjxiFvS)&*KP%VvxoV|An~8476xN<-jZ+-|lYP7zs!RP>a}< z3IOcmAR9@P2}dY{No6pk%9yqg7&gzrX$2@K455%{gu($R%;ia7k%Swj;_xI~frJB6 z7D(VB_6Ce3GXIygt$Y~L{!Nb~&0zgZ`%r&PCE{uQZ~d>Sq`jCJ40~Bf5VSu9Gm?R0 z_Ba7n{}if4^co!Wj{(8H8z+B53~D$G7O1%#h{MBxiuh_ZB;w#e5h4u1IAL5uBt(a! zn+*hIK}>k02Ji^D0s^&j#RwYMs^H=F7A!>HLnrfqnQLR{+o>i+m8jBXo_>^+61LknxDRM(Fw= z20qAmL|y+kx*Xphrf@y@0 zdL(YUTWhe~T}^52|wINfdWY4?~? z?!R(;nP_WSzG4HbOL}d^IM?;!y4^oTZpk3Rls8-}ZhSMLW;>(h_;u+9_We|8ka1n=N!_BNYd z<;)iAQut>>nyEv5-MuZ<^hb@iiWky#R%-d#@SU@)H)Ag&RD;9j=fU)OGtY~*OY6e7 zYF&xewaY8>4&U4H<)lKWW|A!bd33voj++5vpws&bS9`WQ*RcC4L z!<10eT)X9fVx0@x zF*#fr^y0f9jcyD5gd=}i(vtu&+V^Zv_RglIUka0tw)LIJZ(;bs^gh9h3!>`CRd@W> z`8?Qqq9?X=M|D?SP|I#=MpoK%jpM3DZF1?Y*nPRLyq!;ucFwvRT7_0T={-`BT7|x) Z?T@;DvFv5uO`r&xJZ4_>@lTem{tr}I+qeJ# diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_triple_curve_right.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_triple_curve_right.png index 7850549016d6ffc3a31cd3ab9a0df3fedfc2ce95..4c32e96e580ebf8a1a364868553e0efa031dda5b 100644 GIT binary patch delta 1257 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 From 57059d6a5e84655bc9d8f825195b7cbf448c31ca Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 29 Nov 2023 15:46:08 +0100 Subject: [PATCH 148/207] exposure chamber stuff --- src/main/java/com/hbm/blocks/ModBlocks.java | 5 +- .../machine/MachineExposureChamber.java | 37 ++++++++++++++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 6 +++ .../tileentity/RenderExposureChamber.java | 48 ++++++++++++++++++ .../hbm/tileentity/TileEntityMachineBase.java | 4 +- .../java/com/hbm/tileentity/TileMappings.java | 1 + .../TileEntityMachineExposureChamber.java | 49 +++++++++++++++++++ .../tileentity/machine/TileEntityWatz.java | 12 ++--- 9 files changed, 154 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 60f325e78..7196b59c5 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -728,8 +728,9 @@ public class ModBlocks { public static Block machine_generator; public static Block machine_industrial_generator; - + public static Block machine_cyclotron; + public static Block machine_exposure_chamber; public static Block hadron_plating; public static Block hadron_plating_blue; @@ -1892,6 +1893,7 @@ public class ModBlocks { machine_generator = new MachineGenerator(Material.iron).setBlockName("machine_generator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); machine_industrial_generator = new MachineIGenerator(Material.iron).setBlockName("machine_industrial_generator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":industrial_generator"); machine_cyclotron = new MachineCyclotron(Material.iron).setBlockName("machine_cyclotron").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cyclotron"); + machine_exposure_chamber = new MachineExposureChamber(Material.iron).setBlockName("machine_exposure_chamber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); machine_radgen = new MachineRadGen(Material.iron).setBlockName("machine_radgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_radgen"); hadron_plating = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating"); @@ -3190,6 +3192,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_industrial_generator, machine_industrial_generator.getUnlocalizedName()); GameRegistry.registerBlock(machine_radgen, machine_radgen.getUnlocalizedName()); GameRegistry.registerBlock(machine_cyclotron, machine_cyclotron.getUnlocalizedName()); + GameRegistry.registerBlock(machine_exposure_chamber, machine_exposure_chamber.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_grey, machine_rtg_grey.getUnlocalizedName()); GameRegistry.registerBlock(machine_geo, machine_geo.getUnlocalizedName()); GameRegistry.registerBlock(machine_amgen, machine_amgen.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java b/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java new file mode 100644 index 000000000..dbdb57627 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java @@ -0,0 +1,37 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineExposureChamber extends BlockDummyable { + + public MachineExposureChamber(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineExposureChamber(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 2, 2, 2, 2}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return super.standardOpenBehavior(world, x, y, z, player, 0); + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 2babe6244..acaaa0654 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -218,6 +218,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePuF6Tank.class, new RenderPuF6Tank()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineIGenerator.class, new RenderIGenerator()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCyclotron.class, new RenderCyclotron()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineExposureChamber.class, new RenderExposureChamber()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 8c1040c1c..10f658ff5 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -182,6 +182,9 @@ public class ResourceManager { //Cyclotron public static final IModelCustom cyclotron = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/cyclotron.obj")); + //Exposure Chamber + public static final IModelCustom exposure_chamber = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/exposure_chamber.obj")); + //RTG public static final IModelCustom rtg = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/rtg.obj")); @@ -593,6 +596,9 @@ public class ResourceManager { public static final ResourceLocation cyclotron_coin = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron_coin.png"); public static final ResourceLocation cyclotron_coin_filled = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron_coin_filled.png"); + //Exposure Chamber + public static final ResourceLocation exposure_chamber_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/exposure_chamber.png"); + //RTG public static final ResourceLocation rtg_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rtg.png"); public static final ResourceLocation rtg_cell_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rtg_cell.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java b/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java new file mode 100644 index 000000000..539cb72a1 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java @@ -0,0 +1,48 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderExposureChamber extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.exposure_chamber_tex); + ResourceManager.exposure_chamber.renderPart("Chamber"); + + GL11.glPushMatrix(); + GL11.glRotated((tileEntity.getWorldObj().getTotalWorldTime() % 360D + f) * 5, 0, 1, 0); + GL11.glTranslated(0, Math.sin((tileEntity.getWorldObj().getTotalWorldTime() % (Math.PI * 16D) + f) * 0.125) * 0.0625, 0); + ResourceManager.exposure_chamber.renderPart("Core"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotated((tileEntity.getWorldObj().getTotalWorldTime() % 360D + f) * 10, 0, 1, 0); + ResourceManager.exposure_chamber.renderPart("Magnets"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index f90a124e2..bf1318f0f 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -22,8 +22,8 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme private String customName; - public TileEntityMachineBase(int scount) { - slots = new ItemStack[scount]; + public TileEntityMachineBase(int slotCount) { + slots = new ItemStack[slotCount]; } /** The "chunks is modified, pls don't forget to save me" effect of markDirty, minus the block updates */ diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 4ba9495c5..0161679ba 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -90,6 +90,7 @@ public class TileMappings { put(TileEntityPartEmitter.class, "tileentity_partemitter"); put(TileEntityDummy.class, "tileentity_dummy"); put(TileEntityMachineCyclotron.class, "tileentity_cyclotron"); + put(TileEntityMachineExposureChamber.class, "tileentity_exposure_chamber"); put(TileEntityMachineRTG.class, "tileentity_machine_rtg"); put(TileEntityStructureMarker.class, "tileentity_structure_marker"); put(TileEntityMachineMiningDrill.class, "tileentity_mining_drill"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java new file mode 100644 index 000000000..dbe3dc5fa --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -0,0 +1,49 @@ +package com.hbm.tileentity.machine; + +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityMachineExposureChamber extends TileEntityMachineBase { + + public TileEntityMachineExposureChamber() { + super(7); + } + + @Override + public String getName() { + return "container.exposureChamber"; + } + + @Override + public void updateEntity() { + + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 2, + yCoord, + zCoord - 2, + xCoord + 3, + yCoord + 5, + zCoord + 3 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index 8991fb974..a1f6d8b65 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -443,6 +443,12 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand return bb; } + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + private void disassemble() { int count = 20; @@ -515,12 +521,6 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } } } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { From 30a5dee40dae0def8c15e5262277385e924aaea2 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 30 Nov 2023 15:26:49 +0100 Subject: [PATCH 149/207] I'M ON A BOAT --- changelog | 10 +- .../java/com/hbm/crafting/ToolRecipes.java | 1 + .../java/com/hbm/entity/EntityMappings.java | 1 + .../com/hbm/entity/item/EntityBoatRubber.java | 485 ++++++++++++++++++ src/main/java/com/hbm/items/ModItems.java | 5 +- .../hbm/items/block/ItemCustomMachine.java | 2 + .../com/hbm/items/tool/ItemBoatRubber.java | 102 ++++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ModEventHandler.java | 2 +- .../render/entity/item/RenderBoatRubber.java | 74 +++ .../machine/rbmk/TileEntityRBMKHeater.java | 5 +- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/entity/boat_rubber.png | Bin 0 -> 931 bytes .../assets/hbm/textures/items/boat_rubber.png | Bin 0 -> 286 bytes 15 files changed, 685 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/hbm/entity/item/EntityBoatRubber.java create mode 100644 src/main/java/com/hbm/items/tool/ItemBoatRubber.java create mode 100644 src/main/java/com/hbm/render/entity/item/RenderBoatRubber.java create mode 100644 src/main/resources/assets/hbm/textures/entity/boat_rubber.png create mode 100644 src/main/resources/assets/hbm/textures/items/boat_rubber.png diff --git a/changelog b/changelog index 441e8123c..a11e101f3 100644 --- a/changelog +++ b/changelog @@ -2,6 +2,10 @@ * Doors! * Your favorites from 1.12, the 7 remaining doors have finally been ported * Thanks to KoblizekXD for biting the bullet +* Rubber boat + * Made from latex or synthetic rubber + * A much less jankier alternative to the vanilla boat. Rotations are silky smooth and done via the strafe keys instead of based on the player's orientation + * Won't break from ramming into blocks ## Changed * Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high @@ -9,4 +13,8 @@ * NTM's structures should no longer spawn in dimensions besides the overworld. Ores will still generate, assuming the config option is set. ## Fixed -* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate \ No newline at end of file +* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate +* Fixed RBMK heat exchangers being able to use heatable fluids that don't have heat exchanger efficiency defined like liquid sodium, heavy water and thorium salt +* Fixed RBMK heat exchangers not using the heat exchanger efficiency variable to determine cooling power +* Fixed the ballistic gauntlet spawning a client-side ghost bullet that doesn't move or despawn +* Fixed bug where different custom machine cores would merge in a stack when picked up, turning them into the same type \ No newline at end of file diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index c0a1e2f74..3ab160158 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -155,6 +155,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.WOOD, EnumMinecart.EMPTY), new Object[] { "P P", "WPW", 'P',KEY_SLAB, 'W', KEY_PLANKS }); CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.EMPTY), new Object[] { "P P", "IPI", 'P', STEEL.plate(), 'I', STEEL.ingot() }); CraftingManager.addShapelessAuto(ItemModMinecart.createCartItem(EnumCartBase.PAINTED, EnumMinecart.EMPTY), new Object[] { ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.EMPTY), KEY_RED }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.boat_rubber), new Object[] { "L L", "LLL", 'L', ANY_RUBBER.ingot() }); for(EnumCartBase base : EnumCartBase.values()) { diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index cf6c7e0d1..18d585624 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -222,6 +222,7 @@ public class EntityMappings { addEntity(EntityMist.class, "entity_mist", 250, false); addEntity(EntityAcidBomb.class, "entity_acid_bomb", 1000); addEntity(EntityFallingBlockNT.class, "entity_falling_block_nt", 1000); + addEntity(EntityBoatRubber.class, "entity_rubber_boat", 250, false); addEntity(EntityItemWaste.class, "entity_item_waste", 100); addEntity(EntityItemBuoyant.class, "entity_item_buoyant", 100); diff --git a/src/main/java/com/hbm/entity/item/EntityBoatRubber.java b/src/main/java/com/hbm/entity/item/EntityBoatRubber.java new file mode 100644 index 000000000..3be552143 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityBoatRubber.java @@ -0,0 +1,485 @@ +package com.hbm.entity.item; + +import java.util.List; + +import com.hbm.items.ModItems; +import com.hbm.util.TrackerUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EntityTrackerEntry; +import net.minecraft.entity.item.EntityBoat; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; + +public class EntityBoatRubber extends Entity { + + private boolean isBoatEmpty; + private double speedMultiplier; + private int boatPosRotationIncrements; + private double boatX; + private double boatY; + private double boatZ; + private double boatYaw; + private double boatPitch; + @SideOnly(Side.CLIENT) private double velocityX; + @SideOnly(Side.CLIENT) private double velocityY; + @SideOnly(Side.CLIENT) private double velocityZ; + public float prevRenderYaw; + + public EntityBoatRubber(World world) { + super(world); + this.isBoatEmpty = true; + this.speedMultiplier = 0.07D; + this.preventEntitySpawning = true; + this.setSize(1.5F, 0.6F); + this.yOffset = this.height / 2.0F; + } + + public EntityBoatRubber(World world, double x, double y, double z) { + this(world); + this.setPosition(x, y + (double) this.yOffset, z); + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; + this.prevPosX = x; + this.prevPosY = y; + this.prevPosZ = z; + } + + protected void entityInit() { + this.dataWatcher.addObject(17, new Integer(0)); + this.dataWatcher.addObject(18, new Integer(1)); + this.dataWatcher.addObject(19, new Float(0.0F)); + } + + @Override + protected boolean canTriggerWalking() { + return false; + } + + @Override + public AxisAlignedBB getCollisionBox(Entity entity) { + return entity.boundingBox; + } + @Override + public AxisAlignedBB getBoundingBox() { + return this.boundingBox; + } + @Override + public boolean canBePushed() { + return true; + } + @Override + public double getMountedYOffset() { + return (double) this.height * 0.0D - 0.3D; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(this.isEntityInvulnerable()) { + return false; + } else if(!this.worldObj.isRemote && !this.isDead) { + this.setForwardDirection(-this.getForwardDirection()); + this.setTimeSinceHit(10); + this.setDamageTaken(this.getDamageTaken() + amount * 10.0F); + this.setBeenAttacked(); + boolean hitByCreative = source.getEntity() instanceof EntityPlayer && ((EntityPlayer) source.getEntity()).capabilities.isCreativeMode; + + if(hitByCreative || this.getDamageTaken() > 40.0F) { + if(this.riddenByEntity != null) { + this.riddenByEntity.mountEntity(this); + } + + if(!hitByCreative) { + this.dropBoat(); + } + + this.setDead(); + } + + return true; + } else { + return true; + } + } + + @Override + @SideOnly(Side.CLIENT) + public void performHurtAnimation() { + this.setForwardDirection(-this.getForwardDirection()); + this.setTimeSinceHit(10); + this.setDamageTaken(this.getDamageTaken() * 11.0F); + } + + @Override + public boolean canBeCollidedWith() { + return !this.isDead; + } + + @Override + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double x, double y, double z, float yaw, float pitch, int interp) { + if(this.isBoatEmpty) { + this.boatPosRotationIncrements = interp; + } else { + double d3 = x - this.posX; + double d4 = y - this.posY; + double d5 = z - this.posZ; + double d6 = d3 * d3 + d4 * d4 + d5 * d5; + + if(d6 <= 1.0D) { + return; + } + + this.boatPosRotationIncrements = 3; + } + + this.boatX = x; + this.boatY = y; + this.boatZ = z; + this.boatYaw = (double) yaw; + this.boatPitch = (double) pitch; + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + } + + @Override + @SideOnly(Side.CLIENT) + public void setVelocity(double x, double y, double z) { + this.velocityX = this.motionX = x; + this.velocityY = this.motionY = y; + this.velocityZ = this.motionZ = z; + } + + @Override + public void onUpdate() { + super.onUpdate(); + //this.prevRotationYaw = this.rotationYaw; + + if(this.getTimeSinceHit() > 0) { + this.setTimeSinceHit(this.getTimeSinceHit() - 1); + } + + if(this.getDamageTaken() > 0.0F) { + this.setDamageTaken(this.getDamageTaken() - 1.0F); + } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + byte b0 = 5; + double d0 = 0.0D; + + for(int i = 0; i < b0; ++i) { + double d1 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double) (i + 0) / (double) b0 - 0.125D; + double d3 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double) (i + 1) / (double) b0 - 0.125D; + AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox(this.boundingBox.minX, d1, this.boundingBox.minZ, this.boundingBox.maxX, d3, this.boundingBox.maxZ); + + if(this.worldObj.isAABBInMaterial(axisalignedbb, Material.water)) { + d0 += 1.0D / (double) b0; + } + } + + double prevSpeedSq = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + + if(prevSpeedSq > 0.2625D) { + double cosYaw = Math.cos(this.rotationYaw * Math.PI / 180.0D); + double sinYaw = Math.sin(this.rotationYaw * Math.PI / 180.0D); + + for(double j = 0; j < 1.0D + prevSpeedSq * 60.0D; ++j) { + double offset = (double) (this.rand.nextFloat() * 2.0F - 1.0F); + double side = (double) (this.rand.nextInt(2) * 2 - 1) * 0.7D; + double magX; + double magZ; + + if(this.rand.nextBoolean()) { + magX = this.posX - cosYaw * offset * 0.8D + sinYaw * side; + magZ = this.posZ - sinYaw * offset * 0.8D - cosYaw * side; + this.worldObj.spawnParticle("splash", magX, this.posY - 0.125D, magZ, this.motionX, this.motionY, this.motionZ); + } else { + magX = this.posX + cosYaw + sinYaw * offset * 0.7D; + magZ = this.posZ + sinYaw - cosYaw * offset * 0.7D; + this.worldObj.spawnParticle("splash", magX, this.posY - 0.125D, magZ, this.motionX, this.motionY, this.motionZ); + } + } + } + + if(this.worldObj.isRemote && this.isBoatEmpty) { + if(this.boatPosRotationIncrements > 0) { + double x = this.posX + (this.boatX - this.posX) / (double) this.boatPosRotationIncrements; + double y = this.posY + (this.boatY - this.posY) / (double) this.boatPosRotationIncrements; + double z = this.posZ + (this.boatZ - this.posZ) / (double) this.boatPosRotationIncrements; + double yaw = MathHelper.wrapAngleTo180_double(this.boatYaw - (double) this.rotationYaw); + this.rotationYaw = (float) ((double) this.rotationYaw + yaw / (double) this.boatPosRotationIncrements); + this.rotationPitch = (float) ((double) this.rotationPitch + (this.boatPitch - (double) this.rotationPitch) / (double) this.boatPosRotationIncrements); + --this.boatPosRotationIncrements; + this.setPosition(x, y, z); + //this.setRotation(this.rotationYaw, this.rotationPitch); + + } else { + double x = this.posX + this.motionX; + double y = this.posY + this.motionY; + double z = this.posZ + this.motionZ; + this.setPosition(x, y, z); + + if(this.onGround) { + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + + this.passiveDeccelerate(); + } + } else { + if(d0 < 1.0D) { + double d2 = d0 * 2.0D - 1.0D; + this.motionY += 0.04D * d2; + } else { + if(this.motionY < 0.0D) { + this.motionY /= 2.0D; + } + + this.motionY += 0.007000000216066837D; + } + + this.isAirBorne = false; + + if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase) { + EntityLivingBase entitylivingbase = (EntityLivingBase) this.riddenByEntity; + + if(entitylivingbase.moveForward != 0 || entitylivingbase.moveStrafing != 0) { + + Vec3 dir = Vec3.createVectorHelper(0, 0, 1); + dir.rotateAroundY((float) -((this.rotationYaw + 90) * Math.PI / 180D)); + this.motionX += dir.xCoord * this.speedMultiplier * entitylivingbase.moveForward * 0.05D; + this.motionZ += dir.zCoord * this.speedMultiplier * entitylivingbase.moveForward * 0.05D; + + float prevYaw = this.rotationYaw; + this.rotationYaw -= entitylivingbase.moveStrafing * 3; + + Vec3 newMotion = Vec3.createVectorHelper(motionX, 0, motionZ); + newMotion.rotateAroundY((float) (-(this.rotationYaw - prevYaw) * Math.PI / 180D)); + this.motionX = newMotion.xCoord; + this.motionZ = newMotion.zCoord; + + //HOLY HELL! if we don't shit ourselves over packets and send them at proper intervals, entities are suddenly smooth! who would have thought! mojang certainly didn't! + EntityTrackerEntry entry = TrackerUtil.getTrackerEntry((WorldServer) worldObj, this.getEntityId()); + entry.lastYaw = MathHelper.floor_float(this.rotationYaw * 256.0F / 360.0F) + 10; //force-trigger rotation update + } + } + + double speedSq = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + + if(speedSq > 0.35D) { + double d4 = 0.35D / speedSq; + this.motionX *= d4; + this.motionZ *= d4; + speedSq = 0.35D; + } + + if(speedSq > prevSpeedSq && this.speedMultiplier < 0.35D) { + this.speedMultiplier += (0.35D - this.speedMultiplier) / 35.0D; + + if(this.speedMultiplier > 0.35D) { + this.speedMultiplier = 0.35D; + } + } else { + this.speedMultiplier -= (this.speedMultiplier - 0.07D) / 35.0D; + + if(this.speedMultiplier < 0.07D) { + this.speedMultiplier = 0.07D; + } + } + + for(int index = 0; index < 4; ++index) { + int x = MathHelper.floor_double(this.posX + ((double) (index % 2) - 0.5D) * 0.8D); + int z = MathHelper.floor_double(this.posZ + ((double) (index / 2) - 0.5D) * 0.8D); + + for(int yOff = 0; yOff < 2; ++yOff) { + int y = MathHelper.floor_double(this.posY) + yOff; + Block block = this.worldObj.getBlock(x, y, z); + + if(block == Blocks.snow_layer) { + this.worldObj.setBlockToAir(x, y, z); + this.isCollidedHorizontally = false; + } else if(block == Blocks.waterlily) { + this.worldObj.func_147480_a(x, y, z, true); + this.isCollidedHorizontally = false; + } + } + } + + if(this.onGround) { + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + + if(this.isCollidedHorizontally && prevSpeedSq > 0.2D) { + this.motionX *= 0.25D; + this.motionY *= 0.25D; + this.motionZ *= 0.25D; + + } else { + this.passiveDeccelerate(); + } + + this.rotationPitch = 0.0F; + + if(!(this.riddenByEntity instanceof EntityLivingBase)) { + double yaw = (double) this.rotationYaw; + double deltaX = this.prevPosX - this.posX; + double deltaZ = this.prevPosZ - this.posZ; + + if(deltaX * deltaX + deltaZ * deltaZ > 0.001D) { + yaw = (double) ((float) (Math.atan2(deltaZ, deltaX) * 180.0D / Math.PI)); + } + + double rotationSpeed = MathHelper.wrapAngleTo180_double(yaw - (double) this.rotationYaw); + + if(rotationSpeed > 20.0D) { + rotationSpeed = 20.0D; + } + + if(rotationSpeed < -20.0D) { + rotationSpeed = -20.0D; + } + + this.rotationYaw = (float) ((double) this.rotationYaw + rotationSpeed); + } + + this.setRotation(this.rotationYaw, this.rotationPitch); + + if(!this.worldObj.isRemote) { + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(0.2D, 0.0D, 0.2D)); + + if(list != null && !list.isEmpty()) { + for(int k1 = 0; k1 < list.size(); ++k1) { + Entity entity = (Entity) list.get(k1); + + if(entity != this.riddenByEntity && entity.canBePushed() && (entity instanceof EntityBoatRubber || entity instanceof EntityBoat)) { + entity.applyEntityCollision(this); + } + } + } + + if(this.riddenByEntity != null && this.riddenByEntity.isDead) { + this.riddenByEntity = null; + } + } + } + } + + protected void passiveDeccelerate() { + this.motionX *= 0.99D; + this.motionY *= 0.95D; + this.motionZ *= 0.99D; + } + + @Override + public void updateRiderPosition() { + if(this.riddenByEntity != null) { + double offX = Math.cos((double) this.rotationYaw * Math.PI / 180.0D) * 0.4D; + double offZ = Math.sin((double) this.rotationYaw * Math.PI / 180.0D) * 0.4D; + this.riddenByEntity.setPosition(this.posX + offX, this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset(), this.posZ + offZ); + + if(this.riddenByEntity instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) this.riddenByEntity; + player.renderYawOffset = MathHelper.wrapAngleTo180_float(this.rotationYaw + 90F); + } + } + } + + @Override protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { } + @Override protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { } + + @Override + @SideOnly(Side.CLIENT) + public float getShadowSize() { + return 0.0F; + } + + @Override + public boolean interactFirst(EntityPlayer player) { + if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != player) { + return true; + } else { + if(!this.worldObj.isRemote) { + player.mountEntity(this); + } + + return true; + } + } + + @Override + protected void updateFallState(double fall, boolean onGround) { + int x = MathHelper.floor_double(this.posX); + int y = MathHelper.floor_double(this.posY); + int z = MathHelper.floor_double(this.posZ); + + if(onGround) { + if(this.fallDistance > 5.0F) { + this.fall(this.fallDistance); + + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + this.dropBoat(); + } + + this.fallDistance = 0.0F; + } + } else if(this.worldObj.getBlock(x, y - 1, z).getMaterial() != Material.water && fall < 0.0D) { + this.fallDistance = (float) ((double) this.fallDistance - fall); + } + } + + public void dropBoat() { + this.func_145778_a(ModItems.boat_rubber, 1, 0.0F); + } + + public void setDamageTaken(float amount) { + this.dataWatcher.updateObject(19, Float.valueOf(amount)); + } + + public float getDamageTaken() { + return this.dataWatcher.getWatchableObjectFloat(19); + } + + public void setTimeSinceHit(int time) { + this.dataWatcher.updateObject(17, Integer.valueOf(time)); + } + + public int getTimeSinceHit() { + return this.dataWatcher.getWatchableObjectInt(17); + } + + public void setForwardDirection(int dir) { + this.dataWatcher.updateObject(18, Integer.valueOf(dir)); + } + + public int getForwardDirection() { + return this.dataWatcher.getWatchableObjectInt(18); + } + + @SideOnly(Side.CLIENT) + public void setIsBoatEmpty(boolean empty) { + this.isBoatEmpty = empty; + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index c75fa9764..6f74b43d8 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1044,6 +1044,7 @@ public class ModItems { public static ItemEnumMulti canned_conserve; public static Item can_key; + public static Item boat_rubber; public static Item cart; public static Item train; public static Item drone; @@ -3473,6 +3474,7 @@ public class ModItems { canned_conserve = (ItemEnumMulti) new ItemConserve().setUnlocalizedName("canned_conserve").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned"); can_key = new Item().setUnlocalizedName("can_key").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_key"); + boat_rubber = new ItemBoatRubber().setUnlocalizedName("boat_rubber").setTextureName(RefStrings.MODID + ":boat_rubber"); cart = new ItemModMinecart().setUnlocalizedName("cart"); train = new ItemTrain().setUnlocalizedName("train"); drone = new ItemDrone().setUnlocalizedName("drone"); @@ -7726,7 +7728,8 @@ public class ModItems { GameRegistry.registerItem(injector_5htp, injector_5htp.getUnlocalizedName()); GameRegistry.registerItem(injector_knife, injector_knife.getUnlocalizedName()); - //Minecarts + //Vehicles + GameRegistry.registerItem(boat_rubber, boat_rubber.getUnlocalizedName()); GameRegistry.registerItem(cart, cart.getUnlocalizedName()); GameRegistry.registerItem(train, train.getUnlocalizedName()); GameRegistry.registerItem(drone, drone.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/block/ItemCustomMachine.java b/src/main/java/com/hbm/items/block/ItemCustomMachine.java index 61b1cf00c..30723223d 100644 --- a/src/main/java/com/hbm/items/block/ItemCustomMachine.java +++ b/src/main/java/com/hbm/items/block/ItemCustomMachine.java @@ -17,6 +17,8 @@ public class ItemCustomMachine extends ItemBlock { public ItemCustomMachine(Block block) { super(block); + this.setMaxDamage(0); + this.setHasSubtypes(true); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/items/tool/ItemBoatRubber.java b/src/main/java/com/hbm/items/tool/ItemBoatRubber.java new file mode 100644 index 000000000..c7b8ec137 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemBoatRubber.java @@ -0,0 +1,102 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.entity.item.EntityBoatRubber; + +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class ItemBoatRubber extends Item { + + public ItemBoatRubber() { + this.maxStackSize = 1; + this.setCreativeTab(CreativeTabs.tabTransport); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + float f = 1.0F; + float pitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * f; + float yaw = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * f; + double posX = player.prevPosX + (player.posX - player.prevPosX) * (double) f; + double posY = player.prevPosY + (player.posY - player.prevPosY) * (double) f + 1.62D - (double) player.yOffset; + double posZ = player.prevPosZ + (player.posZ - player.prevPosZ) * (double) f; + float compZ = MathHelper.cos(-yaw * 0.017453292F - (float) Math.PI); + float compX = MathHelper.sin(-yaw * 0.017453292F - (float) Math.PI); + float mult = -MathHelper.cos(-pitch * 0.017453292F); + float lookY = MathHelper.sin(-pitch * 0.017453292F); + float lookX = compX * mult; + float lookZ = compZ * mult; + double reach = 5.0D; + + Vec3 pos = Vec3.createVectorHelper(posX, posY, posZ); + Vec3 target = pos.addVector((double) lookX * reach, (double) lookY * reach, (double) lookZ * reach); + MovingObjectPosition mop = world.rayTraceBlocks(pos, target, true); + + if(mop == null) { + return stack; + + } else { + Vec3 look = player.getLook(f); + boolean flag = false; + double width = 1.0D; + List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(look.xCoord * reach, look.yCoord * reach, look.zCoord * reach).expand(width, width, width)); + + for(int i = 0; i < list.size(); ++i) { + Entity entity = (Entity) list.get(i); + + if(entity.canBeCollidedWith()) { + float f10 = entity.getCollisionBorderSize(); + AxisAlignedBB axisalignedbb = entity.boundingBox.expand((double) f10, (double) f10, (double) f10); + + if(axisalignedbb.isVecInside(pos)) { + flag = true; + } + } + } + + if(flag) { + return stack; + + } else { + if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { + int x = mop.blockX; + int y = mop.blockY; + int z = mop.blockZ; + + if(world.getBlock(x, y, z) == Blocks.snow_layer) { + --y; + } + + EntityBoatRubber entityboat = new EntityBoatRubber(world, (double) ((float) x + 0.5F), (double) ((float) y + 1.0F), (double) ((float) z + 0.5F)); + entityboat.rotationYaw = (float) (((MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3) - 1) * 90); + + if(!world.getCollidingBoundingBoxes(entityboat, entityboat.boundingBox.expand(-0.1D, -0.1D, -0.1D)).isEmpty()) { + return stack; + } + + if(!world.isRemote) { + world.spawnEntityInWorld(entityboat); + } + + if(!player.capabilities.isCreativeMode) { + --stack.stackSize; + } + } + + return stack; + } + } + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index acaaa0654..b970e1474 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -714,6 +714,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart()); RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart()); RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus()); + RenderingRegistry.registerEntityRenderingHandler(EntityBoatRubber.class, new RenderBoatRubber()); //trains RenderingRegistry.registerEntityRenderingHandler(SeatDummyEntity.class, new RenderEmpty()); RenderingRegistry.registerEntityRenderingHandler(BoundingBoxDummyEntity.class, new RenderEmpty()); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 4a1cda31b..944ea7587 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -822,7 +822,7 @@ public class ModEventHandler { EntityPlayer player = event.entityPlayer; ItemStack chestplate = player.inventory.armorInventory[2]; - if(player.getHeldItem() == null && chestplate != null && ArmorModHandler.hasMods(chestplate)) { + if(!player.worldObj.isRemote && player.getHeldItem() == null && chestplate != null && ArmorModHandler.hasMods(chestplate)) { ItemStack[] mods = ArmorModHandler.pryMods(chestplate); ItemStack servo = mods[ArmorModHandler.servos]; diff --git a/src/main/java/com/hbm/render/entity/item/RenderBoatRubber.java b/src/main/java/com/hbm/render/entity/item/RenderBoatRubber.java new file mode 100644 index 000000000..963c936d7 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderBoatRubber.java @@ -0,0 +1,74 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.item.EntityBoatRubber; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBoat; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class RenderBoatRubber extends Render { + + private static final ResourceLocation boatTextures = new ResourceLocation(RefStrings.MODID + ":textures/entity/boat_rubber.png"); + protected ModelBase modelBoat; + + public RenderBoatRubber() { + this.shadowSize = 0.5F; + this.modelBoat = new ModelBoat(); + } + + public void doRender(EntityBoatRubber entity, double x, double y, double z, float yaw, float interp) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(180.0F - yaw, 0.0F, 1.0F, 0.0F); + float f2 = (float) entity.getTimeSinceHit() - interp; + float f3 = entity.getDamageTaken() - interp; + + if(f3 < 0.0F) { + f3 = 0.0F; + } + + if(f2 > 0.0F) { + GL11.glRotatef(MathHelper.sin(f2) * f2 * f3 / 10.0F * (float) entity.getForwardDirection(), 1.0F, 0.0F, 0.0F); + } + + EntityPlayer me = Minecraft.getMinecraft().getMinecraft().thePlayer; + + if(entity.riddenByEntity == me) { + float diff = MathHelper.wrapAngleTo180_float(entity.rotationYaw - entity.prevRenderYaw); + me.rotationYaw += diff; + me.rotationYawHead += diff; + } + + entity.prevRenderYaw = entity.rotationYaw; + + float f4 = 0.75F; + GL11.glScalef(f4, f4, f4); + GL11.glScalef(1.0F / f4, 1.0F / f4, 1.0F / f4); + this.bindEntityTexture(entity); + GL11.glScalef(-1.0F, -1.0F, 1.0F); + this.modelBoat.render(entity, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); + GL11.glPopMatrix(); + } + + protected ResourceLocation getEntityTexture(EntityBoatRubber entity) { + return boatTextures; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityBoatRubber) entity); + } + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + this.doRender((EntityBoatRubber) entity, x, y, z, f0, f1); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index e9699b87f..903042283 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -65,9 +65,10 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I HeatingStep step = trait.getFirstStep(); steam.setTankType(step.typeProduced); double tempRange = this.heat - steam.getTankType().temperature; + double eff = trait.getEfficiency(HeatingType.HEATEXCHANGER); - if(tempRange > 0) { - double TU_PER_DEGREE = 2_000D; //based on 1mB of water absorbing 200 TU as well as 0.1°C from an RBMK column + if(tempRange > 0 && eff > 0) { + double TU_PER_DEGREE = 2_000D * eff; //based on 1mB of water absorbing 200 TU as well as 0.1°C from an RBMK column int inputOps = feed.getFill() / step.amountReq; int outputOps = (steam.getMaxFill() - steam.getFill()) / step.amountProduced; int tempOps = (int) Math.floor((tempRange * TU_PER_DEGREE) / step.heatReq); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index cd9d9adf1..27b8e8d17 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1280,6 +1280,7 @@ item.blades_steel.name=Stahlsägeblatt item.blades_titanium.name=Titansägeblatt item.blowtorch.name=Lötlampe item.board_copper.name=Kupfertafel +item.boat_rubber.name=Schlauchboot item.bobmazon_hidden.name=Versteckter Katalog item.bobmazon_machines.name=Bobmazon: Blöcke und Maschinen item.bobmazon_materials.name=Bobmazon: Ressourcen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 696ebe517..72eb5e087 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1941,6 +1941,7 @@ item.blades_steel.name=Steel Shredder Blades item.blades_titanium.name=Titanium Shredder Blades item.blowtorch.name=Blowtorch item.board_copper.name=Copper Panel +item.boat_rubber.name=Rubber Boat item.bobmazon_hidden.name=Hidden Catalog item.bobmazon_machines.name=Bobmazon: Blocks and Machines item.bobmazon_materials.name=Bobmazon: Materials diff --git a/src/main/resources/assets/hbm/textures/entity/boat_rubber.png b/src/main/resources/assets/hbm/textures/entity/boat_rubber.png new file mode 100644 index 0000000000000000000000000000000000000000..9cde414614a3530590f68975e71acd290f81678d GIT binary patch literal 931 zcmV;U16=%xP)f&U41J_zCs~iV6zg@^|NlM1&OuKF8g$KvWpM|Yw&bXG zg2n2FJ;0D9+k7-h(UeT+@cr9Y!C#CYKXT1xJ{&>Ns_TkLkbi+T5_SW51_aFJ2}_Ih9rw|*sT zZt(H(vG-E!v78rgxvp7!Y5BL{zb}Nc5%B!{yeR3?@^1lsH0Sl3T}+XM_~vqg1%T~# z3lYJ~%L|AI+wB$rlF!sQd*}Lbo4ZHnXlcG#12m262Z#u5>$}1QNqwGHWaA1gPE7f} zqBP&E0jerZ1$AA4nY-eJ5{2S+Q1UuYHC-uJnr{jhUjbdQF>`;!*Wz|O9zUPEmP2X2 zF)pS605}&GBw^JS7Aa|nO^0H7&!rbj^UWHduB&9Qt}9q;AtGQVFjJDC2EyBt)cJhw z<(K4}0t1&}6Nh8Gj-Ly?Tqx#3vNYcmEC8HNsin^620$S2K7^%nZFe>)T-Lod zbC=|sf(3x%F*VicbOsUkp%hwz2)b=6-MpC2)Va+48GN$_*lgAi5$yM2aJ^pjnVE=C zRTfoc(KHR5bJ-o8Yl@cR@rcjhn>9d;@p@Z}6b(ybOs|wGruU93IDLM~8>RWO1~?p2 zOC1hJcrWl?I@XH*Rqd;yp@IvaE&UUuO6r(C6SpP! zt}?*;dupn;w_jjpSZiU7fweZN(DJza%>{%y-?@;?^kqx)%^Kk0;Y*j5UlI3*RT?3; z$hf9HCmQ|_DoXQB;lnMl{)SGeTWjoCsqw<5B;VYY*l$#fNW1JEGp_&u002ovPDHLk FV1nnxy2$_l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/boat_rubber.png b/src/main/resources/assets/hbm/textures/items/boat_rubber.png new file mode 100644 index 0000000000000000000000000000000000000000..6a1d428df868ed5c979524ec1951aa6c7140c0d4 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfM}d*_FlR$-#LJ zs-?lsE@cO|Wq+?;P+RaeN5UoLXkP4l{+fSHVmCfW$pt Date: Thu, 30 Nov 2023 14:18:03 -0600 Subject: [PATCH 150/207] i fucking hate github this is to fix everything that github just broke including removing the shit from that one PR that broke everything --- changelog | 12 +- .../api/hbm/entity/IRadarDetectableNT.java | 23 + src/main/java/api/hbm/entity/RadarEntry.java | 19 +- .../java/com/hbm/blocks/ITooltipProvider.java | 5 +- src/main/java/com/hbm/blocks/ModBlocks.java | 3 - .../hbm/blocks/machine/BlockFluidBarrel.java | 53 +- .../hbm/blocks/machine/BlockHadronCooler.java | 5 +- .../blocks/machine/MachineBigAssTank9000.java | 1 - .../hbm/blocks/machine/MachineCapacitor.java | 5 +- .../hbm/blocks/machine/MachineGasFlare.java | 11 +- .../com/hbm/blocks/machine/MachineOrbus.java | 1 - .../hbm/blocks/network/FluidDuctStandard.java | 2 - .../com/hbm/blocks/network/PylonLarge.java | 6 +- .../com/hbm/blocks/network/PylonRedWire.java | 5 +- .../com/hbm/blocks/network/Substation.java | 5 +- .../hbm/handler/nei/CustomMachineHandler.java | 3 +- .../com/hbm/inventory/fluid/FluidType.java | 5 +- .../inventory/fluid/trait/FT_Combustible.java | 17 +- .../inventory/fluid/trait/FT_Coolable.java | 5 +- .../inventory/fluid/trait/FT_Corrosive.java | 5 +- .../inventory/fluid/trait/FT_Flammable.java | 5 +- .../inventory/fluid/trait/FT_Heatable.java | 5 +- .../fluid/trait/FT_PWRModerator.java | 5 +- .../hbm/inventory/fluid/trait/FT_Poison.java | 3 +- .../hbm/inventory/fluid/trait/FT_Toxin.java | 2 +- .../fluid/trait/FT_VentRadiation.java | 3 +- .../fluid/trait/FluidTraitSimple.java | 19 +- .../hbm/inventory/gui/GUIMachineRadarNT.java | 218 ++- .../java/com/hbm/items/armor/ArmorDNT.java | 2 +- .../com/hbm/items/armor/ArmorFSBPowered.java | 3 +- .../com/hbm/items/armor/ItemArmorMod.java | 2 +- .../java/com/hbm/items/armor/ItemModAuto.java | 3 +- .../com/hbm/items/armor/ItemModBandaid.java | 5 +- .../com/hbm/items/armor/ItemModBathwater.java | 5 +- .../com/hbm/items/armor/ItemModCharm.java | 12 +- .../com/hbm/items/armor/ItemModCladding.java | 5 +- .../com/hbm/items/armor/ItemModDefuser.java | 5 +- .../com/hbm/items/armor/ItemModGasmask.java | 6 +- .../com/hbm/items/armor/ItemModHealth.java | 7 +- .../java/com/hbm/items/armor/ItemModInk.java | 7 +- .../com/hbm/items/armor/ItemModInsert.java | 21 +- .../java/com/hbm/items/armor/ItemModIron.java | 5 +- .../com/hbm/items/armor/ItemModKnife.java | 8 +- .../java/com/hbm/items/armor/ItemModLens.java | 5 +- .../com/hbm/items/armor/ItemModLodestone.java | 7 +- .../java/com/hbm/items/armor/ItemModMilk.java | 5 +- .../hbm/items/armor/ItemModMorningGlory.java | 5 +- .../com/hbm/items/armor/ItemModObsidian.java | 5 +- .../java/com/hbm/items/armor/ItemModPads.java | 9 +- .../com/hbm/items/armor/ItemModPolish.java | 5 +- .../com/hbm/items/armor/ItemModQuartz.java | 5 +- .../com/hbm/items/armor/ItemModRevive.java | 19 +- .../com/hbm/items/armor/ItemModSensor.java | 7 +- .../com/hbm/items/armor/ItemModSerum.java | 5 +- .../com/hbm/items/armor/ItemModServos.java | 17 +- .../com/hbm/items/armor/ItemModShackles.java | 11 +- .../com/hbm/items/armor/ItemModTesla.java | 5 +- .../com/hbm/items/armor/ItemModTwoKick.java | 7 +- .../java/com/hbm/items/armor/ItemModV1.java | 5 +- .../java/com/hbm/items/armor/ItemModWD40.java | 5 +- .../java/com/hbm/items/armor/JetpackBase.java | 3 +- .../com/hbm/items/armor/JetpackBooster.java | 7 +- .../com/hbm/items/armor/JetpackBreak.java | 6 +- .../com/hbm/items/armor/JetpackRegular.java | 3 +- .../hbm/items/armor/JetpackVectorized.java | 5 +- .../hbm/items/block/ItemBlockBlastInfo.java | 3 +- .../com/hbm/items/block/ItemBlockLore.java | 27 +- .../hbm/items/block/ItemCustomMachine.java | 3 +- .../java/com/hbm/items/bomb/ItemFleija.java | 5 +- .../hbm/items/bomb/ItemMissileShuttle.java | 10 +- src/main/java/com/hbm/items/bomb/ItemN2.java | 6 +- .../hbm/items/bomb/ItemPrototypeBlock.java | 7 +- .../java/com/hbm/items/bomb/ItemSolinium.java | 5 +- .../java/com/hbm/items/food/ItemLemon.java | 52 +- .../com/hbm/items/food/ItemTemFlakes.java | 7 +- .../com/hbm/items/machine/ItemBattery.java | 9 +- .../hbm/items/machine/ItemMachineUpgrade.java | 162 +- .../com/hbm/items/machine/ItemPWRFuel.java | 8 +- .../com/hbm/items/machine/ItemPlateFuel.java | 7 +- .../com/hbm/items/machine/ItemRBMKPellet.java | 15 +- .../com/hbm/items/machine/ItemRBMKRod.java | 18 +- .../com/hbm/items/machine/ItemWatzPellet.java | 19 +- .../com/hbm/items/special/ItemAMSCore.java | 44 +- .../com/hbm/items/special/ItemGlitch.java | 75 +- .../java/com/hbm/items/special/ItemRag.java | 5 +- .../java/com/hbm/items/special/ItemSoyuz.java | 9 +- .../com/hbm/items/tool/ItemAnchorRemote.java | 7 +- .../com/hbm/items/tool/ItemCMStructure.java | 7 +- .../com/hbm/items/tool/ItemDetonator.java | 13 +- src/main/java/com/hbm/items/tool/ItemMS.java | 3 +- .../hbm/items/tool/ItemSwordMeteorite.java | 49 +- .../java/com/hbm/items/tool/ItemWand.java | 13 +- .../java/com/hbm/items/tool/ItemWandS.java | 7 +- .../com/hbm/items/tool/WeaponSpecial.java | 45 +- src/main/java/com/hbm/main/MainRegistry.java | 1 - .../com/hbm/main/ModEventHandlerClient.java | 20 +- src/main/java/com/hbm/packet/BufPacket.java | 6 + .../java/com/hbm/packet/PacketDispatcher.java | 6 - .../machine/TileEntityMachineRadar.java | 342 ---- .../machine/TileEntityMachineRadarNT.java | 375 +++- .../TileEntityMachineReactorBreeding.java | 14 +- .../java/com/hbm/util/function/Function.java | 11 +- src/main/resources/assets/hbm/lang/en_US.lang | 174 -- src/main/resources/assets/hbm/lang/zh_CN.lang | 1593 +++++++---------- .../hbm/textures/gui/machine/gui_radar_nt.png | Bin 21661 -> 20169 bytes 105 files changed, 1841 insertions(+), 2039 deletions(-) delete mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java diff --git a/changelog b/changelog index e03539fb7..441e8123c 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,12 @@ +## Added +* Doors! + * Your favorites from 1.12, the 7 remaining doors have finally been ported + * Thanks to KoblizekXD for biting the bullet + ## Changed -* Light oil and cracked light oil can now be refomred into large quantities of aromatic hydrocarbons a well as some reformate gas +* Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high +* Custom missiles are now launchable using the radar +* NTM's structures should no longer spawn in dimensions besides the overworld. Ores will still generate, assuming the config option is set. ## Fixed -* Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer -* Fixed custom machine NEI slots going out of bounds after the third slot \ No newline at end of file +* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate \ No newline at end of file diff --git a/src/main/java/api/hbm/entity/IRadarDetectableNT.java b/src/main/java/api/hbm/entity/IRadarDetectableNT.java index 83c4bf503..0b327620c 100644 --- a/src/main/java/api/hbm/entity/IRadarDetectableNT.java +++ b/src/main/java/api/hbm/entity/IRadarDetectableNT.java @@ -15,8 +15,31 @@ public interface IRadarDetectableNT { public static final int TIER_AB = 10; public static final int PLAYER = 11; public static final int ARTY = 12; + /** Reserved type that shows a unique purple blip. Used for when nothing else applies. */ + public static final int SPECIAL = 13; + /** Name use for radar display, uses I18n for lookup */ public String getUnlocalizedName(); + /** The type of dot to show on the radar as well as the redstone level in tier mode */ public int getBlipLevel(); + /** Whether the object can be seen by this type of radar */ public boolean canBeSeenBy(Object radar); + /** Whether the object is currently visible, as well as whether the radar's setting allow for picking this up */ + public boolean paramsApplicable(RadarScanParams params); + /** Whether this radar entry should be counted for the redstone output */ + public boolean suppliesRedstone(RadarScanParams params); + + public static class RadarScanParams { + public boolean scanMissiles = true; + public boolean scanShells = true; + public boolean scanPlayers = true; + public boolean smartMode = true; + + public RadarScanParams(boolean m, boolean s, boolean p, boolean smart) { + this.scanMissiles = m; + this.scanShells = s; + this.scanPlayers = p; + this.smartMode = smart; + } + } } diff --git a/src/main/java/api/hbm/entity/RadarEntry.java b/src/main/java/api/hbm/entity/RadarEntry.java index 56bb41df4..5dcc56845 100644 --- a/src/main/java/api/hbm/entity/RadarEntry.java +++ b/src/main/java/api/hbm/entity/RadarEntry.java @@ -7,34 +7,41 @@ import net.minecraft.entity.player.EntityPlayer; public class RadarEntry { + /** Name use for radar display, uses I18n for lookup */ public String unlocalizedName; + /** The type of dot to show on the radar as well as the redstone level in tier mode */ public int blipLevel; public int posX; public int posY; public int posZ; public int dim; + public int entityID; + /** Whether this radar entry should be counted for the redstone output */ + public boolean redstone; public RadarEntry() { } //blank ctor for packets - public RadarEntry(String name, int level, int x, int y, int z, int dim) { + public RadarEntry(String name, int level, int x, int y, int z, int dim, int entityID, boolean redstone) { this.unlocalizedName = name; this.blipLevel = level; this.posX = x; this.posY = y; this.posZ = z; this.dim = dim; + this.entityID = entityID; + this.redstone = redstone; } - public RadarEntry(IRadarDetectableNT detectable, Entity entity) { - this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension); + public RadarEntry(IRadarDetectableNT detectable, Entity entity, boolean redstone) { + this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, entity.getEntityId(), redstone); } public RadarEntry(IRadarDetectable detectable, Entity entity) { - this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension); + this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, entity.getEntityId(), entity.motionY < 0); } public RadarEntry(EntityPlayer player) { - this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension); + this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension, player.getEntityId(), true); } public void fromBytes(ByteBuf buf) { @@ -44,6 +51,7 @@ public class RadarEntry { this.posY = buf.readInt(); this.posZ = buf.readInt(); this.dim = buf.readShort(); + this.entityID = buf.readInt(); } public void toBytes(ByteBuf buf) { @@ -53,5 +61,6 @@ public class RadarEntry { buf.writeInt(this.posY); buf.writeInt(this.posZ); buf.writeShort(this.dim); + buf.writeInt(this.entityID); } } diff --git a/src/main/java/com/hbm/blocks/ITooltipProvider.java b/src/main/java/com/hbm/blocks/ITooltipProvider.java index 4ca8d3678..e959db070 100644 --- a/src/main/java/com/hbm/blocks/ITooltipProvider.java +++ b/src/main/java/com/hbm/blocks/ITooltipProvider.java @@ -21,8 +21,9 @@ public interface ITooltipProvider { if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray(((Block)this).getUnlocalizedName() + ".desc")) list.add(EnumChatFormatting.YELLOW + s); } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , - EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index df7ebbf45..60f325e78 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -831,7 +831,6 @@ public class ModBlocks { public static Block crane_splitter; public static Block drone_waypoint; - public static Block drone_waypoint_request; public static Block drone_crate; public static Block drone_waypoint_request; public static Block drone_dock; @@ -2014,7 +2013,6 @@ public class ModBlocks { piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); - drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); drone_dock = new DroneDock().setBlockName("drone_dock").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_dock"); @@ -3298,7 +3296,6 @@ public class ModBlocks { register(conveyor_lift); register(crane_splitter); register(drone_waypoint); - register(drone_waypoint_request); register(drone_crate); register(drone_waypoint_request); register(drone_dock); diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index 834195f35..41ab8cba8 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -15,7 +15,6 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.machine.storage.TileEntityBarrel; -import com.hbm.util.I18nUtil; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.Block; @@ -209,47 +208,47 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { if(this == ModBlocks.barrel_plastic) { - list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","12,000")); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[1]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[4]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); + list.add(EnumChatFormatting.AQUA + "Capacity: 12,000mB"); + list.add(EnumChatFormatting.YELLOW + "Cannot store hot fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); } if(this == ModBlocks.barrel_corroded) { - list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","6,000")); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[0]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("trait.tile.barrel.leak")); + list.add(EnumChatFormatting.AQUA + "Capacity: 6,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.RED + "Leaky"); } if(this == ModBlocks.barrel_iron) { - list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","8,000")); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[3]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); + list.add(EnumChatFormatting.AQUA + "Capacity: 8,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids properly"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); } if(this == ModBlocks.barrel_steel) { - list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","16,000")); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[1]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[2]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); + list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.GREEN + "Can store corrosive fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store highly corrosive fluids properly"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); } if(this == ModBlocks.barrel_antimatter) { - list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","16,000")); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[0]); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[0]); + list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); + list.add(EnumChatFormatting.GREEN + "Can store antimatter"); } if(this == ModBlocks.barrel_tcalloy) { - list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("trait.tile.barrel.capacity","24,000")); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.hot")[0]); - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.tile.barrel.corrosive")[0]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.tile.barrel.antimatter")[1]); + list.add(EnumChatFormatting.AQUA + "Capacity: 24,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); } } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java index c2c220ff8..a242772e2 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java +++ b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java @@ -59,8 +59,9 @@ public class BlockHadronCooler extends BlockMulti implements ITooltipProvider { if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray(this.getUnlocalizedName(stack) + ".desc")) list.add(EnumChatFormatting.YELLOW + s); } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , - EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index e0a494ede..300f9b019 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -14,7 +14,6 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; -import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java index e55f4844b..be083f6e3 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -113,8 +113,9 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray("tile.capacitor.desc")) list.add(EnumChatFormatting.YELLOW + s); } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , - EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java b/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java index db5bd32f5..4567cf760 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java +++ b/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java @@ -7,7 +7,6 @@ import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineGasFlare; -import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -62,7 +61,13 @@ public class MachineGasFlare extends BlockDummyable implements ITooltipProvider @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - for(String s : I18nUtil.resolveKeyArray("tile.machine_flare.desc")) - list.add(EnumChatFormatting.GOLD + s); + + list.add(EnumChatFormatting.GOLD + "Can burn fluids and vent gasses"); + list.add(EnumChatFormatting.GOLD + "Burns up to " + EnumChatFormatting.RED + "10mB/t"); + list.add(EnumChatFormatting.GOLD + "Vents up to " + EnumChatFormatting.RED + "50mB/t"); + list.add(""); + list.add(EnumChatFormatting.YELLOW + "Fuel efficiency:"); + list.add(EnumChatFormatting.YELLOW + "-Flammable Gasses: " + EnumChatFormatting.RED + "50%"); + list.add(EnumChatFormatting.YELLOW + "-Flammable Liquids: " + EnumChatFormatting.RED + "10%"); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java index 902c24672..445956358 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOrbus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOrbus.java @@ -12,7 +12,6 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; -import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index 7a6ab966b..e58d7ab02 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; -import com.hbm.blocks.ModBlocks; import com.hbm.blocks.test.TestPipe; import com.hbm.inventory.fluid.FluidType; import com.hbm.items.ModItems; @@ -16,7 +15,6 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; diff --git a/src/main/java/com/hbm/blocks/network/PylonLarge.java b/src/main/java/com/hbm/blocks/network/PylonLarge.java index 65605d4d3..395b27dd1 100644 --- a/src/main/java/com/hbm/blocks/network/PylonLarge.java +++ b/src/main/java/com/hbm/blocks/network/PylonLarge.java @@ -7,7 +7,6 @@ import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntityPylonLarge; -import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -34,8 +33,9 @@ public class PylonLarge extends BlockDummyable implements ITooltipProvider { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - for(String s : I18nUtil.resolveKeyArray("tile.red_pylon_large.desc")) - list.add(EnumChatFormatting.GOLD + s); + list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Quadruple"); + list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "100m"); + list.add(EnumChatFormatting.GOLD + "This pylon requires a substation!"); } @Override diff --git a/src/main/java/com/hbm/blocks/network/PylonRedWire.java b/src/main/java/com/hbm/blocks/network/PylonRedWire.java index 9b9d8750b..79a44f541 100644 --- a/src/main/java/com/hbm/blocks/network/PylonRedWire.java +++ b/src/main/java/com/hbm/blocks/network/PylonRedWire.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.tileentity.network.TileEntityPylon; -import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -25,7 +24,7 @@ public class PylonRedWire extends PylonBase { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - for(String s : I18nUtil.resolveKeyArray("tile.red_pylon.desc")) - list.add(EnumChatFormatting.GOLD + s); + list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Single"); + list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "25m"); } } diff --git a/src/main/java/com/hbm/blocks/network/Substation.java b/src/main/java/com/hbm/blocks/network/Substation.java index 4f61cf58d..7499992fd 100644 --- a/src/main/java/com/hbm/blocks/network/Substation.java +++ b/src/main/java/com/hbm/blocks/network/Substation.java @@ -8,7 +8,6 @@ import com.hbm.tileentity.TileEntityProxyConductor; import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntitySubstation; -import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -38,8 +37,8 @@ public class Substation extends BlockDummyable implements ITooltipProvider { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - for(String s : I18nUtil.resolveKeyArray("tile.substation.desc")) - list.add(EnumChatFormatting.GOLD + s); + list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Quadruple"); + list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "20m"); } @Override diff --git a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java index 659289307..844af6e60 100644 --- a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java +++ b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java @@ -14,7 +14,6 @@ import com.hbm.inventory.recipes.CustomMachineRecipes; import com.hbm.inventory.recipes.CustomMachineRecipes.CustomMachineRecipe; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.lib.RefStrings; -import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.Tuple.Pair; @@ -105,7 +104,7 @@ public class CustomMachineHandler extends TemplateRecipeHandler { @Override public String getRecipeName() { - return (I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name").startsWith("tile.cm_")) ? conf.localizedName : I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name"); + return conf.localizedName; } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index e6015725b..d6fa4d759 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -218,8 +218,9 @@ public class FluidType { info.addAll(hidden); } else { - info.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +I18nUtil.resolveKey("tooltip.block" , - EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); + info.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); } } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java index 9d566e0fb..a297d40ca 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java @@ -7,7 +7,6 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Combustible extends FluidTrait { @@ -26,11 +25,11 @@ public class FT_Combustible extends FluidTrait { public void addInfo(List info) { super.addInfo(info); - info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible","","")[0]); + info.add(EnumChatFormatting.GOLD + "[Combustible]"); if(combustionEnergy > 0) { - info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible",BobMathUtil.getShortNumber(combustionEnergy),"")[1]); - info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible","",this.fuelGrade.getGrade())[2]); + info.add(EnumChatFormatting.GOLD + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(combustionEnergy) + "HE " + EnumChatFormatting.GOLD + "per bucket"); + info.add(EnumChatFormatting.GOLD + "Fuel grade: " + EnumChatFormatting.RED + this.fuelGrade.getGrade()); } } @@ -43,11 +42,11 @@ public class FT_Combustible extends FluidTrait { } public static enum FuelGrade { - LOW(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[0]), //heating and industrial oil < star engine, iGen - MEDIUM(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[1]), //petroil < diesel generator - HIGH(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[2]), //diesel, gasoline < HP engine - AERO(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[3]), //kerosene and other light aviation fuels < turbofan - GAS(I18nUtil.resolveKeyArray("hbmfluid.Trait.Combustible.FuelGrade")[4]); //fuel gasses like NG, PG and syngas < gas turbine + LOW("Low"), //heating and industrial oil < star engine, iGen + MEDIUM("Medium"), //petroil < diesel generator + HIGH("High"), //diesel, gasoline < HP engine + AERO("Aviation"), //kerosene and other light aviation fuels < turbofan + GAS("Gaseous"); //fuel gasses like NG, PG and syngas < gas turbine private String grade; diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java index a0aae7d54..1bb6d3574 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java @@ -10,7 +10,6 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Coolable extends FluidTrait { @@ -43,14 +42,14 @@ public class FT_Coolable extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable",heatEnergy,"")[0]); + info.add(EnumChatFormatting.AQUA + "Thermal capacity: " + heatEnergy + " TU"); for(CoolingType type : CoolingType.values()) { double eff = getEfficiency(type); if(eff > 0) { info.add(EnumChatFormatting.AQUA + "[" + type.name + "]"); - info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable","",((int) (eff * 100D)))[1]); + info.add(EnumChatFormatting.AQUA + "Efficiency: " + ((int) (eff * 100D)) + "%"); } } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java index 8387b0e23..2a459e25c 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java @@ -6,7 +6,6 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Corrosive extends FluidTrait { @@ -32,9 +31,9 @@ public class FT_Corrosive extends FluidTrait { public void addInfo(List info) { if(isHighlyCorrosive()) - info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("hbmfluid.Trait.Corrosive")[0]); + info.add(EnumChatFormatting.GOLD + "[Strongly Corrosive]"); else - info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("hbmfluid.Trait.Corrosive")[1]); + info.add(EnumChatFormatting.YELLOW + "[Corrosive]"); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java index e2f35ff3c..82e309ef9 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java @@ -7,7 +7,6 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_Flammable extends FluidTrait { @@ -29,10 +28,10 @@ public class FT_Flammable extends FluidTrait { public void addInfo(List info) { super.addInfo(info); - info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("hbmfluid.Trait.Flammable","")[0]); + info.add(EnumChatFormatting.YELLOW + "[Flammable]"); if(energy > 0) - info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("hbmfluid.Trait.Flammable",BobMathUtil.getShortNumber(energy))[1]); + info.add(EnumChatFormatting.YELLOW + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(energy) + "TU " + EnumChatFormatting.YELLOW + "per bucket"); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java index 7ce3ee4fc..c828858b8 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java @@ -6,7 +6,6 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; import java.io.IOException; @@ -43,14 +42,14 @@ public class FT_Heatable extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable",this.getFirstStep().heatReq,"")[0]); + info.add(EnumChatFormatting.AQUA + "Thermal capacity: " + this.getFirstStep().heatReq + " TU"); for(HeatingType type : HeatingType.values()) { double eff = getEfficiency(type); if(eff > 0) { info.add(EnumChatFormatting.AQUA + "[" + type.name + "]"); - info.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("hbmfluid.Trait.Coolable","",((int) (eff * 100D)))[1]); + info.add(EnumChatFormatting.AQUA + "Efficiency: " + ((int) (eff * 100D)) + "%"); } } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java index 3e5aad50c..65386405a 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java @@ -6,7 +6,6 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FT_PWRModerator extends FluidTrait { @@ -23,13 +22,13 @@ public class FT_PWRModerator extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("hbmfluid.Trait.PWRModerator","","")[0]); + info.add(EnumChatFormatting.BLUE + "[PWR Flux Multiplier]"); } @Override public void addInfoHidden(List info) { int mult = (int) (multiplier * 100 - 100); - info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("hbmfluid.Trait.PWRModerator",(mult >= 0 ? "+" : ""),mult)[1]); + info.add(EnumChatFormatting.BLUE + "Core flux " + (mult >= 0 ? "+" : "") + mult + "%"); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java index 39d31bc25..335c182cb 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java @@ -6,7 +6,6 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; @Deprecated //use FT_Toxin instead @@ -32,7 +31,7 @@ public class FT_Poison extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("hbmfluid.Trait.Poison")); + info.add(EnumChatFormatting.GREEN + "[Toxic Fumes]"); } @Override public void serializeJSON(JsonWriter writer) throws IOException { diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java index b7234584c..fe814219e 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java @@ -31,7 +31,7 @@ public class FT_Toxin extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("hbmfluid.Trait.Toxin")); + info.add(EnumChatFormatting.LIGHT_PURPLE + "[Toxin]"); for(ToxinEntry entry : entries) { entry.addInfo(info); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java index ef090d9d9..516ef0e81 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java @@ -8,7 +8,6 @@ import com.google.gson.stream.JsonWriter; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; @@ -33,7 +32,7 @@ public class FT_VentRadiation extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hbmfluid.Trait.VentRadiation")); + info.add(EnumChatFormatting.YELLOW + "[Radioactive]"); } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java index 19e2c5369..d282cea42 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java @@ -2,64 +2,63 @@ package com.hbm.inventory.fluid.trait; import java.util.List; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; public class FluidTraitSimple { public static class FT_Gaseous extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Gaseous")); + info.add(EnumChatFormatting.BLUE + "[Gaseous]"); } } /** gaseous at room temperature, for cryogenic hydrogen for example */ public static class FT_Gaseous_ART extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Gaseous_ART")); + info.add(EnumChatFormatting.BLUE + "[Gaseous at Room Temperature]"); } } public static class FT_Liquid extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Liquid")); + info.add(EnumChatFormatting.BLUE + "[Liquid]"); } } /** to viscous to be sprayed/turned into a mist */ public static class FT_Viscous extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Viscous")); + info.add(EnumChatFormatting.BLUE + "[Viscous]"); } } public static class FT_Plasma extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Plasma")); + info.add(EnumChatFormatting.LIGHT_PURPLE + "[Plasma]"); } } public static class FT_Amat extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.DARK_RED + I18nUtil.resolveKey("hbmfluid.TraitSimple.Amat")); + info.add(EnumChatFormatting.DARK_RED + "[Antimatter]"); } } public static class FT_LeadContainer extends FluidTrait { @Override public void addInfo(List info) { - info.add(EnumChatFormatting.DARK_RED + I18nUtil.resolveKey("hbmfluid.TraitSimple.LeadContainer")); + info.add(EnumChatFormatting.DARK_RED + "[Requires hazardous material tank to hold]"); } } public static class FT_Delicious extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKey("hbmfluid.TraitSimple.Delicious")); + info.add(EnumChatFormatting.DARK_GREEN + "[Delicious]"); } } public static class FT_Leaded extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.TraitSimple.Leaded")); + info.add(EnumChatFormatting.BLUE + "[Leaded Fuel]"); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java index 3c91249bf..accefedf1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -5,22 +5,33 @@ import java.util.Arrays; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; +import api.hbm.entity.RadarEntry; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; public class GUIMachineRadarNT extends GuiScreen { - protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_nt.png"); + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_nt.png"); protected TileEntityMachineRadarNT radar; protected int xSize = 216; protected int ySize = 234; protected int guiLeft; protected int guiTop; + + public int lastMouseX; + public int lastMouseY; public GUIMachineRadarNT(TileEntityMachineRadarNT tile) { this.radar = tile; @@ -33,6 +44,29 @@ public class GUIMachineRadarNT extends GuiScreen { this.guiTop = (this.height - this.ySize) / 2; } + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + String cmd = null; + + if(checkClick(x, y, -10, 88, 8, 8)) cmd = "missiles"; + if(checkClick(x, y, -10, 98, 8, 8)) cmd = "shells"; + if(checkClick(x, y, -10, 108, 8, 8)) cmd = "players"; + if(checkClick(x, y, -10, 118, 8, 8)) cmd = "smart"; + if(checkClick(x, y, -10, 128, 8, 8)) cmd = "red"; + if(checkClick(x, y, -10, 138, 8, 8)) cmd = "map"; + if(checkClick(x, y, -10, 158, 8, 8)) cmd = "gui1"; + if(checkClick(x, y, -10, 178, 8, 8)) cmd = "clear"; + + if(cmd != null) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean(cmd, true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + } + } + @Override public void drawScreen(int mouseX, int mouseY, float f) { this.drawDefaultBackground(); @@ -40,24 +74,192 @@ public class GUIMachineRadarNT extends GuiScreen { GL11.glDisable(GL11.GL_LIGHTING); this.drawGuiContainerForegroundLayer(mouseX, mouseY); GL11.glEnable(GL11.GL_LIGHTING); + + this.lastMouseX = mouseX; + this.lastMouseY = mouseY; } - private void drawGuiContainerForegroundLayer(int x, int y) { - if(checkClick(x, y, -10, 88, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectMissiles")), x, y); - if(checkClick(x, y, -10, 98, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectShells")), x, y); - if(checkClick(x, y, -10, 108, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectPlayers")), x, y); - if(checkClick(x, y, -10, 118, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.smartMode")), x, y); - if(checkClick(x, y, -10, 128, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.redMode")), x, y); - if(checkClick(x, y, -10, 138, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.showMap")), x, y); + private void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + + if(checkClick(mouseX, mouseY, 8, 221, 200, 7)) this.func_146283_a(Arrays.asList(BobMathUtil.getShortNumber(radar.power) + "/" + BobMathUtil.getShortNumber(radar.maxPower) + "HE"), mouseX, mouseY); + + if(checkClick(mouseX, mouseY, -10, 88, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectMissiles")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 98, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectShells")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 108, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.detectPlayers")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 118, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.smartMode")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 128, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.redMode")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 138, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.showMap")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 158, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.toggleGui")), mouseX, mouseY); + if(checkClick(mouseX, mouseY, -10, 178, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.clearMap")), mouseX, mouseY); + + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + int x = guiLeft + (int)((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; + int z = guiTop + (int)((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; + + if(mouseX + 5 > x && mouseX - 4 <= x && mouseY + 5 > z && mouseY - 4 <= z) { + + String[] text = new String[] { I18nUtil.resolveKey(m.unlocalizedName), m.posX + " / " + m.posZ, "Alt.: " + m.posY }; + this.func_146283_a(Arrays.asList(text), x, z); + return; + } + } + } + + if(checkClick(mouseX, mouseY, 8, 17, 200, 200)) { + int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); + int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); + this.func_146283_a(Arrays.asList(tX + " / " + tZ), lastMouseX, lastMouseY); + } } private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + drawTexturedModalRect(guiLeft - 14, guiTop + 84, 224, 0, 14, 66); + drawTexturedModalRect(guiLeft - 14, guiTop + 154, 224, 66, 14, 36); + + if(radar.power > 0) { + int i = (int) (radar.power * 200 / radar.maxPower); + drawTexturedModalRect(guiLeft + 8, guiTop + 221, 0, 234, i, 16); + } + + if(radar.scanMissiles ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 88, 238, 4, 8, 8); + if(radar.scanShells ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 98, 238, 14, 8, 8); + if(radar.scanPlayers ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 108, 238, 24, 8, 8); + if(radar.smartMode ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 118, 238, 34, 8, 8); + if(radar.redMode ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 128, 238, 44, 8, 8); + if(radar.showMap ^ (radar.jammed && radar.getWorldObj().rand.nextBoolean())) drawTexturedModalRect(guiLeft - 10, guiTop + 138, 238, 54, 8, 8); + + if(radar.power < radar.consumption) return; + + if(radar.jammed) { + for(int i = 0; i < 5; i++) { + for(int j = 0; j < 5; j++) { + drawTexturedModalRect(guiLeft + 8 + i * 40, guiTop + 17 + j * 40, 216, 118 + radar.getWorldObj().rand.nextInt(81), 40, 40); + } + } + return; + } + + if(radar.showMap) { + Tessellator tess = Tessellator.instance; + GL11.glDisable(GL11.GL_TEXTURE_2D); + tess.startDrawingQuads(); + for(int i = 0; i < 40_000; i++) { + int iX = i % 200; + int iZ = i / 200; + byte b = radar.map[i]; + if(b > 0) { + int color = ((b - 50) * 255 / 78) << 8; + tess.setColorOpaque_I(color); + tess.addVertex(guiLeft + 8 + iX, guiTop + 18 + iZ, this.zLevel); + tess.addVertex(guiLeft + 9 + iX, guiTop + 18 + iZ, this.zLevel); + tess.addVertex(guiLeft + 9 + iX, guiTop + 17 + iZ, this.zLevel); + tess.addVertex(guiLeft + 8 + iX, guiTop + 17 + iZ, this.zLevel); + } + } + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + } + + Vec3 tr = Vec3.createVectorHelper(100, 0, 0); + Vec3 tl = Vec3.createVectorHelper(100, 0, 0); + Vec3 bl = Vec3.createVectorHelper(0, -5, 0); + float rot = (float) -Math.toRadians(radar.prevRotation + (radar.rotation - radar.prevRotation) * f + 180F); + tr.rotateAroundZ(rot); + tl.rotateAroundZ(rot + 0.25F); + bl.rotateAroundZ(rot); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_SMOOTH); + Tessellator tess = Tessellator.instance; + tess.startDrawingQuads(); + tess.setColorRGBA_I(0x00ff00, 0); tess.addVertex(guiLeft + 108, guiTop + 117, this.zLevel); + tess.setColorRGBA_I(0x00ff00, 255); tess.addVertex(guiLeft + 108 + tr.xCoord, guiTop + 117 + tr.yCoord, this.zLevel); + tess.setColorRGBA_I(0x00ff00, 0); tess.addVertex(guiLeft + 108 + tl.xCoord, guiTop + 117 + tl.yCoord, this.zLevel); + tess.setColorRGBA_I(0x00ff00, 0); tess.addVertex(guiLeft + 108 + bl.xCoord, guiTop + 117 + bl.yCoord, this.zLevel); + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glShadeModel(GL11.GL_FLAT); + + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + double x = (m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D; + double z = (m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D; + int t = m.blipLevel; + drawTexturedModalRectDouble(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8); + } + } + } + + public void drawTexturedModalRectDouble(double x, double y, int sourceX, int sourceY, int sizeX, int sizeY) { + float f = 0.00390625F; + float f1 = 0.00390625F; + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV(x, y + sizeY, this.zLevel, (sourceX + 0) * f, (sourceY + sizeY) * f1); + tessellator.addVertexWithUV(x + sizeX, y + sizeY, this.zLevel, (sourceX + sizeX) * f, (sourceY + sizeY) * f1); + tessellator.addVertexWithUV(x + sizeX, y, this.zLevel, (sourceX + sizeX) * f, (sourceY + 0) * f1); + tessellator.addVertexWithUV(x, y, this.zLevel, (sourceX + 0) * f, (sourceY + 0) * f1); + tessellator.draw(); } protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; } + + @Override + protected void keyTyped(char c, int key) { + if(key == 1 || key == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + } + + if(checkClick(lastMouseX, lastMouseY, 8, 17, 200, 200) && c >= '1' && c <= '8') { + + int id = c - '1'; + + if(!radar.entries.isEmpty()) { + for(RadarEntry m : radar.entries) { + int x = guiLeft + (int) ((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108; + int z = guiTop + (int) ((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117; + + if(lastMouseX + 5 > x && lastMouseX - 4 <= x && lastMouseY + 5 > z && lastMouseY - 4 <= z) { + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("launchEntity", m.entityID); + data.setInteger("link", id); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + return; + } + } + } + + int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord); + int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("launchPosX", tX); + data.setInteger("launchPosZ", tZ); + data.setInteger("link", id); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, radar.xCoord, radar.yCoord, radar.zCoord)); + } + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } + + @Override + public void updateScreen() { + super.updateScreen(); + + if(!this.mc.thePlayer.isEntityAlive() || this.mc.thePlayer.isDead) { + this.mc.thePlayer.closeScreen(); + } + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index 37e4d6bc3..068ae49f1 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -173,7 +173,7 @@ public class ArmorDNT extends ArmorFSBPowered { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(I18nUtil.resolveKey("armor.charge",BobMathUtil.getShortNumber(getCharge(stack)),BobMathUtil.getShortNumber(maxPower))); + list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(maxPower)); list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java index c5ab83d19..139df77fe 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.util.BobMathUtil; import api.hbm.energy.IBatteryItem; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -32,7 +31,7 @@ public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(I18nUtil.resolveKey("armor.charge",BobMathUtil.getShortNumber(getCharge(stack)),BobMathUtil.getShortNumber(maxPower))); + list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(maxPower)); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/ItemArmorMod.java b/src/main/java/com/hbm/items/armor/ItemArmorMod.java index fac21dec9..505028648 100644 --- a/src/main/java/com/hbm/items/armor/ItemArmorMod.java +++ b/src/main/java/com/hbm/items/armor/ItemArmorMod.java @@ -53,7 +53,7 @@ public class ItemArmorMod extends Item { if(boots) list.add(" " + I18nUtil.resolveKey("armorMod.boots")); } - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("armorMod.slot")); + list.add(EnumChatFormatting.DARK_PURPLE + "Slot:"); switch(this.type) { case ArmorModHandler.helmet_only: list.add(" " + I18nUtil.resolveKey("armorMod.type.helmet")); break; diff --git a/src/main/java/com/hbm/items/armor/ItemModAuto.java b/src/main/java/com/hbm/items/armor/ItemModAuto.java index 7b64bd4e6..4dd232198 100644 --- a/src/main/java/com/hbm/items/armor/ItemModAuto.java +++ b/src/main/java/com/hbm/items/armor/ItemModAuto.java @@ -6,7 +6,6 @@ import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; import com.hbm.potion.HbmPotion; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -22,7 +21,7 @@ public class ItemModAuto extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("armorMod.mod.auto")); + list.add(EnumChatFormatting.BLUE + "Imported from Japsterdam."); list.add(""); super.addInformation(stack, player, list, bool); diff --git a/src/main/java/com/hbm/items/armor/ItemModBandaid.java b/src/main/java/com/hbm/items/armor/ItemModBandaid.java index 7705f9cfb..c04751443 100644 --- a/src/main/java/com/hbm/items/armor/ItemModBandaid.java +++ b/src/main/java/com/hbm/items/armor/ItemModBandaid.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -19,14 +18,14 @@ public class ItemModBandaid extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.bandaid")[0]); + list.add(EnumChatFormatting.RED + "3% chance for full heal when damaged"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.bandaid")[1]); + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (3% chance for full heal)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModBathwater.java b/src/main/java/com/hbm/items/armor/ItemModBathwater.java index 595e381c1..c0d077197 100644 --- a/src/main/java/com/hbm/items/armor/ItemModBathwater.java +++ b/src/main/java/com/hbm/items/armor/ItemModBathwater.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -30,7 +29,7 @@ public class ItemModBathwater extends ItemArmorMod { if(this == ModItems.bathwater_mk2) color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.GREEN : EnumChatFormatting.YELLOW); - list.add(color + I18nUtil.resolveKeyArray("armorMod.mod.bathwater")[0]); + list.add(color + "Inflicts poison on the attacker"); list.add(""); super.addInformation(itemstack, player, list, bool); } @@ -43,7 +42,7 @@ public class ItemModBathwater extends ItemArmorMod { if(this == ModItems.bathwater_mk2) color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.GREEN : EnumChatFormatting.YELLOW); - list.add(color + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.bathwater")[1]); + list.add(color + " " + stack.getDisplayName() + " (Poisons attackers)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModCharm.java b/src/main/java/com/hbm/items/armor/ItemModCharm.java index a8c52707c..2d68ff328 100644 --- a/src/main/java/com/hbm/items/armor/ItemModCharm.java +++ b/src/main/java/com/hbm/items/armor/ItemModCharm.java @@ -6,7 +6,6 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -21,15 +20,16 @@ public class ItemModCharm extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("armorMod.mod.charm")); + list.add(EnumChatFormatting.AQUA + "You feel blessed."); if(this == ModItems.protection_charm) { - for(String s : I18nUtil.resolveKeyArray( "armorMod.mod.charm.protection")) - list.add(s); + list.add(EnumChatFormatting.AQUA + "Diverts meteors away from the player."); + list.add(EnumChatFormatting.AQUA + "Meteors no longer destroy blocks."); + list.add(EnumChatFormatting.AQUA + "Halves broadcaster damage"); } if(this == ModItems.meteor_charm) { - for(String s : I18nUtil.resolveKeyArray( "armorMod.mod.charm.meteor")) - list.add(s); + list.add(EnumChatFormatting.AQUA + "Disables meteorite spawning."); + list.add(EnumChatFormatting.AQUA + "Negates broadcaster damage"); } super.addInformation(stack, player, list, bool); diff --git a/src/main/java/com/hbm/items/armor/ItemModCladding.java b/src/main/java/com/hbm/items/armor/ItemModCladding.java index 18d1f5e24..a71b8cb28 100644 --- a/src/main/java/com/hbm/items/armor/ItemModCladding.java +++ b/src/main/java/com/hbm/items/armor/ItemModCladding.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.armor.ItemArmorMod; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -21,13 +20,13 @@ public class ItemModCladding extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + "+" + rad + I18nUtil.resolveKeyArray("armorMod.mod.cladding")[0]); + list.add(EnumChatFormatting.YELLOW + "+" + rad + " rad-resistance"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (+" + rad + I18nUtil.resolveKeyArray("armorMod.mod.cladding")[1]); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (+" + rad + " radiation resistence)"); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModDefuser.java b/src/main/java/com/hbm/items/armor/ItemModDefuser.java index d540f9f55..48eb2afe9 100644 --- a/src/main/java/com/hbm/items/armor/ItemModDefuser.java +++ b/src/main/java/com/hbm/items/armor/ItemModDefuser.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAICreeperSwell; import net.minecraft.entity.ai.EntityAITasks.EntityAITaskEntry; @@ -26,14 +25,14 @@ public class ItemModDefuser extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.defuser")[0]); + list.add(EnumChatFormatting.YELLOW + "Defuses nearby creepers"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.defuser")[1]); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (Defuses creepers)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModGasmask.java b/src/main/java/com/hbm/items/armor/ItemModGasmask.java index 62b04a129..7c8fd77f6 100644 --- a/src/main/java/com/hbm/items/armor/ItemModGasmask.java +++ b/src/main/java/com/hbm/items/armor/ItemModGasmask.java @@ -40,7 +40,7 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("armorMod.mod.gasmask")[0]); + list.add(EnumChatFormatting.GREEN + "Gas protection"); list.add(""); super.addInformation(stack, player, list, bool); @@ -50,7 +50,7 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { List haz = getBlacklist(stack, player); if(!haz.isEmpty()) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.gasmask")[1]); + list.add(EnumChatFormatting.RED + "Will never protect against:"); for(HazardClass clazz : haz) { list.add(EnumChatFormatting.DARK_RED + " -" + I18nUtil.resolveKey(clazz.lang)); @@ -61,7 +61,7 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.GREEN + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.gasmask")[2]); + list.add(EnumChatFormatting.GREEN + " " + stack.getDisplayName() + " (gas protection)"); ArmorUtil.addGasMaskTooltip(stack, MainRegistry.proxy.me(), list, false); } diff --git a/src/main/java/com/hbm/items/armor/ItemModHealth.java b/src/main/java/com/hbm/items/armor/ItemModHealth.java index 5f3e59fe9..6e757153a 100644 --- a/src/main/java/com/hbm/items/armor/ItemModHealth.java +++ b/src/main/java/com/hbm/items/armor/ItemModHealth.java @@ -6,7 +6,6 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -28,11 +27,11 @@ public class ItemModHealth extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.RED : EnumChatFormatting.LIGHT_PURPLE); - list.add(color + "+" + (Math.round(health * 10 / 2) * 0.1) + I18nUtil.resolveKeyArray("armorMod.mod.health")[0]); + list.add(color + "+" + (Math.round(health * 10 / 2) * 0.1) + " health"); list.add(""); if(this == ModItems.black_diamond) { - list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.health")[1]); + list.add(EnumChatFormatting.DARK_GRAY + "Nostalgia"); list.add(""); } @@ -44,7 +43,7 @@ public class ItemModHealth extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.RED : EnumChatFormatting.LIGHT_PURPLE); - list.add(color + " " + stack.getDisplayName() + " (+" + (Math.round(health * 10 / 2) * 0.1) + I18nUtil.resolveKeyArray("armorMod.mod.health")[0]); + list.add(color + " " + stack.getDisplayName() + " (+" + (Math.round(health * 10 / 2) * 0.1) + " health)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModInk.java b/src/main/java/com/hbm/items/armor/ItemModInk.java index 88da55114..f8604c8f2 100644 --- a/src/main/java/com/hbm/items/armor/ItemModInk.java +++ b/src/main/java/com/hbm/items/armor/ItemModInk.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -20,15 +19,15 @@ public class ItemModInk extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Ink")[0]); - list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Ink")[1]); + list.add(EnumChatFormatting.LIGHT_PURPLE + "10% chance to nullify damage"); + list.add(EnumChatFormatting.LIGHT_PURPLE + "Flowers!"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Ink")[2]); + list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + " (10% chance to nullify damage)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModInsert.java b/src/main/java/com/hbm/items/armor/ItemModInsert.java index ae539765d..a8f114c95 100644 --- a/src/main/java/com/hbm/items/armor/ItemModInsert.java +++ b/src/main/java/com/hbm/items/armor/ItemModInsert.java @@ -8,7 +8,6 @@ import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -38,18 +37,18 @@ public class ItemModInsert extends ItemArmorMod { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(damageMod != 1F) - list.add(EnumChatFormatting.RED + (damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[0]); + list.add(EnumChatFormatting.RED + (damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + "% damage"); if(projectileMod != 1F) - list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - projectileMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[1]); + list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - projectileMod) * 100) + "% projectile damage"); if(explosionMod != 1F) - list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - explosionMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[2]); + list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - explosionMod) * 100) + "% explosion damage"); if(speed != 1F) - list.add(EnumChatFormatting.BLUE + "-" + Math.round((1F - speed) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[3]); + list.add(EnumChatFormatting.BLUE + "-" + Math.round((1F - speed) * 100) + "% speed"); if(this == ModItems.insert_polonium) list.add(EnumChatFormatting.DARK_RED + "+100 RAD/s"); - list.add((stack.getMaxDamage() - stack.getItemDamage()) + "/" + stack.getMaxDamage() + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[4]); + list.add((stack.getMaxDamage() - stack.getItemDamage()) + "/" + stack.getMaxDamage() + "HP"); list.add(""); super.addInformation(stack, player, list, bool); @@ -61,20 +60,20 @@ public class ItemModInsert extends ItemArmorMod { List desc = new ArrayList(); if(damageMod != 1F) - desc.add((damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[0]); + desc.add((damageMod < 1 ? "-" : "+") + Math.abs(Math.round((1F - damageMod) * 100)) + "% dmg"); if(projectileMod != 1F) - desc.add("-" + Math.round((1F - projectileMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[1]); + desc.add("-" + Math.round((1F - projectileMod) * 100) + "% proj"); if(explosionMod != 1F) - desc.add("-" + Math.round((1F - explosionMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[2]); + desc.add("-" + Math.round((1F - explosionMod) * 100) + "% exp"); if(explosionMod != 1F) - desc.add("-" + Math.round((1F - speed) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[3]); + desc.add("-" + Math.round((1F - speed) * 100) + "% speed"); if(this == ModItems.insert_polonium) desc.add("+100 RAD/s"); String join = String.join(" / ", desc); - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (" + join + " / " + (stack.getMaxDamage() - stack.getItemDamage()) + I18nUtil.resolveKeyArray("armorMod.mod.Insert")[4] + ")"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (" + join + " / " + (stack.getMaxDamage() - stack.getItemDamage()) + "HP)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModIron.java b/src/main/java/com/hbm/items/armor/ItemModIron.java index 17b9aa4e8..99b7fc753 100644 --- a/src/main/java/com/hbm/items/armor/ItemModIron.java +++ b/src/main/java/com/hbm/items/armor/ItemModIron.java @@ -5,7 +5,6 @@ import java.util.List; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -21,14 +20,14 @@ public class ItemModIron extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.WHITE + I18nUtil.resolveKeyArray("armorMod.mod.Iron")[0]); + list.add(EnumChatFormatting.WHITE + "+0.5 knockback resistance"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Iron")[1]); + list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + " (+0.5 knockback resistence)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModKnife.java b/src/main/java/com/hbm/items/armor/ItemModKnife.java index 9742a2af4..9d61d7e2e 100644 --- a/src/main/java/com/hbm/items/armor/ItemModKnife.java +++ b/src/main/java/com/hbm/items/armor/ItemModKnife.java @@ -8,7 +8,6 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -30,8 +29,11 @@ public class ItemModKnife extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray("armorMod.mod.Knife")) - list.add(EnumChatFormatting.RED + s); + + list.add(EnumChatFormatting.RED + "Pain."); + list.add(""); + list.add(EnumChatFormatting.RED + "Hurts, doesn't it?"); + list.add(""); super.addInformation(stack, player, list, bool); } diff --git a/src/main/java/com/hbm/items/armor/ItemModLens.java b/src/main/java/com/hbm/items/armor/ItemModLens.java index 68e27a3a4..a9df9cfff 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLens.java +++ b/src/main/java/com/hbm/items/armor/ItemModLens.java @@ -11,7 +11,6 @@ import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteScanner; -import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -31,7 +30,7 @@ public class ItemModLens extends ItemArmorMod implements ISatChip { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKeyArray("armorMod.mod.Lens")[0] + this.getFreq(itemstack)); + list.add(EnumChatFormatting.AQUA + "Satellite Frequency: " + this.getFreq(itemstack)); list.add(""); super.addInformation(itemstack, player, list, bool); @@ -39,7 +38,7 @@ public class ItemModLens extends ItemArmorMod implements ISatChip { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.AQUA + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Lens",getFreq(stack))[1] ); + list.add(EnumChatFormatting.AQUA + " " + stack.getDisplayName() + " (Freq: " + getFreq(stack) + ")"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModLodestone.java b/src/main/java/com/hbm/items/armor/ItemModLodestone.java index ae7c4039a..9939244b7 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLodestone.java +++ b/src/main/java/com/hbm/items/armor/ItemModLodestone.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -24,15 +23,15 @@ public class ItemModLodestone extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.Lodestone")[0]); - list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.Lodestone",range)[1]); + list.add(EnumChatFormatting.DARK_GRAY + "Attracts nearby items"); + list.add(EnumChatFormatting.DARK_GRAY + "Item attraction range: " + range); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Lodestone",range)[2] ); + list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + " (Magnetic range: " + range + ")"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModMilk.java b/src/main/java/com/hbm/items/armor/ItemModMilk.java index 455d449b8..1985c6b17 100644 --- a/src/main/java/com/hbm/items/armor/ItemModMilk.java +++ b/src/main/java/com/hbm/items/armor/ItemModMilk.java @@ -8,7 +8,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.potion.HbmPotion; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -25,14 +24,14 @@ public class ItemModMilk extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.WHITE + I18nUtil.resolveKeyArray("armorMod.mod.Milk")[0]); + list.add(EnumChatFormatting.WHITE + "Removes bad potion effects"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Milk")[1]); + list.add(EnumChatFormatting.WHITE + " " + stack.getDisplayName() + " (Removes bad potion effects)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java b/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java index 625db4ef3..b33bbfa30 100644 --- a/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java +++ b/src/main/java/com/hbm/items/armor/ItemModMorningGlory.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -22,14 +21,14 @@ public class ItemModMorningGlory extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.MorningGlory")[0]); + list.add(EnumChatFormatting.LIGHT_PURPLE + "5% chance to apply resistance when hit, wither immunity"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.MorningGlory")[1]); + list.add(EnumChatFormatting.LIGHT_PURPLE + " " + stack.getDisplayName() + " (5% for resistance, wither immunity)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModObsidian.java b/src/main/java/com/hbm/items/armor/ItemModObsidian.java index 16b5726a8..2227c1dd1 100644 --- a/src/main/java/com/hbm/items/armor/ItemModObsidian.java +++ b/src/main/java/com/hbm/items/armor/ItemModObsidian.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -17,13 +16,13 @@ public class ItemModObsidian extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Obsidian")[0]); + list.add(EnumChatFormatting.DARK_PURPLE + "Makes dropped armor indestructible"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Obsidian")[1]); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Item indestructible)"); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModPads.java b/src/main/java/com/hbm/items/armor/ItemModPads.java index 39234d5d2..9e7d62556 100644 --- a/src/main/java/com/hbm/items/armor/ItemModPads.java +++ b/src/main/java/com/hbm/items/armor/ItemModPads.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -26,10 +25,10 @@ public class ItemModPads extends ItemArmorMod { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(damageMod != 1F) - list.add(EnumChatFormatting.RED + "-" + Math.round((1F - damageMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[0]); + list.add(EnumChatFormatting.RED + "-" + Math.round((1F - damageMod) * 100) + "% fall damage"); if(this == ModItems.pads_static) - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[1]); + list.add(EnumChatFormatting.DARK_PURPLE + "Passively charges electric armor when walking"); list.add(""); super.addInformation(itemstack, player, list, bool); @@ -39,9 +38,9 @@ public class ItemModPads extends ItemArmorMod { public void addDesc(List list, ItemStack stack, ItemStack armor) { if(this == ModItems.pads_static) - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[2]); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + "% fall dmg / passive charge)"); else - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + I18nUtil.resolveKeyArray("armorMod.mod.Pads")[0]); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + "% fall dmg)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModPolish.java b/src/main/java/com/hbm/items/armor/ItemModPolish.java index 96c803442..b35e13480 100644 --- a/src/main/java/com/hbm/items/armor/ItemModPolish.java +++ b/src/main/java/com/hbm/items/armor/ItemModPolish.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -19,14 +18,14 @@ public class ItemModPolish extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("armorMod.mod.Polish")[0]); + list.add(EnumChatFormatting.BLUE + "5% chance to nullify damage"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Polish")[1]); + list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + " (5% chance to nullify damage)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModQuartz.java b/src/main/java/com/hbm/items/armor/ItemModQuartz.java index 90bcf6833..9179681b2 100644 --- a/src/main/java/com/hbm/items/armor/ItemModQuartz.java +++ b/src/main/java/com/hbm/items/armor/ItemModQuartz.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -20,14 +19,14 @@ public class ItemModQuartz extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("armorMod.mod.Quartz")[0]); + list.add(EnumChatFormatting.DARK_GRAY + "Taking damage removes 10 RAD"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Quartz")[1]); + list.add(EnumChatFormatting.DARK_GRAY + " " + stack.getDisplayName() + " (-10 RAD when hit)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModRevive.java b/src/main/java/com/hbm/items/armor/ItemModRevive.java index 055017430..57519ed89 100644 --- a/src/main/java/com/hbm/items/armor/ItemModRevive.java +++ b/src/main/java/com/hbm/items/armor/ItemModRevive.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -21,19 +20,23 @@ public class ItemModRevive extends ItemArmorMod { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.scrumpy) { - list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("armorMod.mod.Revive.scrumpy")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.Revive.scrumpy")[1]); + list.add(EnumChatFormatting.GOLD + "But how did you survive?"); + list.add(EnumChatFormatting.RED + "I was drunk."); } if(this == ModItems.wild_p) { - list.add(I18nUtil.resolveKey("armorMod.mod.Revive.wild_p")); + list.add(EnumChatFormatting.DARK_GRAY + "Explosive " + EnumChatFormatting.RED + "Reactive " + EnumChatFormatting.DARK_GRAY + "Plot " + EnumChatFormatting.RED + "Armor"); } if(this == ModItems.fabsols_vodka) { - for(String s : I18nUtil.resolveKeyArray("armorMod.mod.Revive.fabsols_vodka")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "In the news:"); + list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "Man literally too angry to die."); + list.add(""); + list.add(EnumChatFormatting.ITALIC + "\"I ain't got time to die\" says local"); + list.add(EnumChatFormatting.ITALIC + "man after ripping the physical manifestation"); + list.add(EnumChatFormatting.ITALIC + "of disaster itself in half."); } list.add(""); - list.add(EnumChatFormatting.GOLD + "" + (stack.getMaxDamage() - stack.getItemDamage()) + I18nUtil.resolveKey("armorMod.mod.Revive")); + list.add(EnumChatFormatting.GOLD + "" + (stack.getMaxDamage() - stack.getItemDamage()) + " revives left"); list.add(""); super.addInformation(stack, player, list, bool); } @@ -41,6 +44,6 @@ public class ItemModRevive extends ItemArmorMod { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (" + (stack.getMaxDamage() - stack.getItemDamage()) + I18nUtil.resolveKey("armorMod.mod.Revive") + ")"); + list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (" + (stack.getMaxDamage() - stack.getItemDamage()) + " revives left)"); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModSensor.java b/src/main/java/com/hbm/items/armor/ItemModSensor.java index 4ab0619d2..cfdec7ff9 100644 --- a/src/main/java/com/hbm/items/armor/ItemModSensor.java +++ b/src/main/java/com/hbm/items/armor/ItemModSensor.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -23,15 +22,15 @@ public class ItemModSensor extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.Sensor")[0]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.Sensor")[1]); + list.add(EnumChatFormatting.YELLOW + "Beeps near hazardous gasses"); + list.add(EnumChatFormatting.YELLOW + "Works in the inventory or when applied to armor"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Sensor")[2]); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (Detects gasses)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModSerum.java b/src/main/java/com/hbm/items/armor/ItemModSerum.java index 3d9d91049..29988e37b 100644 --- a/src/main/java/com/hbm/items/armor/ItemModSerum.java +++ b/src/main/java/com/hbm/items/armor/ItemModSerum.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -21,14 +20,14 @@ public class ItemModSerum extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("armorMod.mod.Serum")[0]); + list.add(EnumChatFormatting.GREEN + "Cures poison and gives strength"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Serum")[1]); + list.add(EnumChatFormatting.BLUE + " " + stack.getDisplayName() + " (replaces poison with strength)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModServos.java b/src/main/java/com/hbm/items/armor/ItemModServos.java index a014d2305..cb07d46f3 100644 --- a/src/main/java/com/hbm/items/armor/ItemModServos.java +++ b/src/main/java/com/hbm/items/armor/ItemModServos.java @@ -6,7 +6,6 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -27,12 +26,12 @@ public class ItemModServos extends ItemArmorMod { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[0]); - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[1]); + list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste I / Damage +50%"); + list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed +25% / Jump II"); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[0]); - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[1]); + list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste III / Damage +150%"); + list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed +50% / Jump III"); } list.add(""); @@ -47,20 +46,20 @@ public class ItemModServos extends ItemArmorMod { if(item.armorType == 1) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[2]); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste I / Damage +50%)"); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[2]); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste III / Damage +150%)"); } } if(item.armorType == 2) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos")[3]); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed +25% / Jump II)"); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Servos.desh")[3]); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed +50% / Jump III)"); } } } diff --git a/src/main/java/com/hbm/items/armor/ItemModShackles.java b/src/main/java/com/hbm/items/armor/ItemModShackles.java index aad9cfcce..306dd3c2a 100644 --- a/src/main/java/com/hbm/items/armor/ItemModShackles.java +++ b/src/main/java/com/hbm/items/armor/ItemModShackles.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -18,12 +17,12 @@ public class ItemModShackles extends ItemArmorMod { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[1]); - list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[2]); + list.add(EnumChatFormatting.RED + "You will speak when I ask you to."); + list.add(EnumChatFormatting.RED + "You will eat when I tell you to."); + list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "You will die when I allow you to."); list.add(""); - list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[3]); + list.add(EnumChatFormatting.GOLD + "∞ revives left"); list.add(""); super.addInformation(stack, player, list, bool); } @@ -31,6 +30,6 @@ public class ItemModShackles extends ItemArmorMod { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Shackles")[4]); + list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (∞ revives left)"); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModTesla.java b/src/main/java/com/hbm/items/armor/ItemModTesla.java index cfddd60ea..b09a37770 100644 --- a/src/main/java/com/hbm/items/armor/ItemModTesla.java +++ b/src/main/java/com/hbm/items/armor/ItemModTesla.java @@ -7,7 +7,6 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.render.model.ModelBackTesla; import com.hbm.tileentity.machine.TileEntityTesla; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; @@ -31,14 +30,14 @@ public class ItemModTesla extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.Tesla")[0]); + list.add(EnumChatFormatting.YELLOW + "Zaps nearby entities (requires full electric set)"); list.add(""); super.addInformation(itemstack, player, list, bool); } @SideOnly(Side.CLIENT) public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.Tesla")[1]); + list.add(EnumChatFormatting.YELLOW + stack.getDisplayName() + " (zaps nearby entities)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModTwoKick.java b/src/main/java/com/hbm/items/armor/ItemModTwoKick.java index f647e509f..a93ab9574 100644 --- a/src/main/java/com/hbm/items/armor/ItemModTwoKick.java +++ b/src/main/java/com/hbm/items/armor/ItemModTwoKick.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -18,14 +17,14 @@ public class ItemModTwoKick extends ItemArmorMod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.ITALIC + I18nUtil.resolveKeyArray("armorMod.mod.TwoKick")[0]); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("armorMod.mod.TwoKick")[1]); + list.add(EnumChatFormatting.ITALIC + "\"I've had worse\""); + list.add(EnumChatFormatting.YELLOW + "Punches fire 12 gauge shells"); list.add(""); super.addInformation(itemstack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.TwoKick")[2]); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (Shotgun punches)"); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModV1.java b/src/main/java/com/hbm/items/armor/ItemModV1.java index e7e67f8d3..bb5d8a3a6 100644 --- a/src/main/java/com/hbm/items/armor/ItemModV1.java +++ b/src/main/java/com/hbm/items/armor/ItemModV1.java @@ -7,7 +7,6 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.interfaces.IArmorModDash; -import com.hbm.util.I18nUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -32,14 +31,14 @@ public class ItemModV1 extends ItemArmorMod implements IArmorModDash { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("armorMod.mod.V1")[0]); + list.add(EnumChatFormatting.RED + "BLOOD IS FUEL"); list.add(""); super.addInformation(stack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.V1")[1]); + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (BLOOD IS FUEL)"); } public int getDashes() { diff --git a/src/main/java/com/hbm/items/armor/ItemModWD40.java b/src/main/java/com/hbm/items/armor/ItemModWD40.java index ace751d25..b01f48217 100644 --- a/src/main/java/com/hbm/items/armor/ItemModWD40.java +++ b/src/main/java/com/hbm/items/armor/ItemModWD40.java @@ -6,7 +6,6 @@ import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.main.MainRegistry; -import com.hbm.util.I18nUtil; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -28,7 +27,7 @@ public class ItemModWD40 extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.BLUE : EnumChatFormatting.YELLOW); - list.add(color + I18nUtil.resolveKeyArray("armorMod.mod.WD40")[0]); + list.add(color + "Highly reduces damage taken by armor, +2 HP"); list.add(""); super.addInformation(itemstack, player, list, bool); } @@ -38,7 +37,7 @@ public class ItemModWD40 extends ItemArmorMod { String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.BLUE : EnumChatFormatting.YELLOW); - list.add(color + " " + stack.getDisplayName() + I18nUtil.resolveKeyArray("armorMod.mod.WD40")[1]); + list.add(color + " " + stack.getDisplayName() + " (-80% armor wear / +2 HP)"); } @Override diff --git a/src/main/java/com/hbm/items/armor/JetpackBase.java b/src/main/java/com/hbm/items/armor/JetpackBase.java index ff96db4cc..e5701e3d8 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBase.java +++ b/src/main/java/com/hbm/items/armor/JetpackBase.java @@ -8,7 +8,6 @@ import com.hbm.render.model.ModelJetPack; import com.hbm.util.ArmorUtil; import api.hbm.fluid.IFillableItem; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; @@ -41,7 +40,7 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem list.add(EnumChatFormatting.LIGHT_PURPLE + fuel.getLocalizedName() + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); list.add(""); super.addInformation(itemstack, player, list, bool); - list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("item.jetpack.desc")); + list.add(EnumChatFormatting.GOLD + "Can be worn on its own!"); } @Override diff --git a/src/main/java/com/hbm/items/armor/JetpackBooster.java b/src/main/java/com/hbm/items/armor/JetpackBooster.java index a7a0084ec..09b90947b 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBooster.java +++ b/src/main/java/com/hbm/items/armor/JetpackBooster.java @@ -7,7 +7,6 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -15,7 +14,6 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -69,8 +67,9 @@ public class JetpackBooster extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - for(String s : I18nUtil.resolveKeyArray("item.jetpack_boost.desc")) - list.add(s); + + list.add("High-powered vectorized jetpack."); + list.add("Highly increased fuel consumption."); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackBreak.java b/src/main/java/com/hbm/items/armor/JetpackBreak.java index 92da43169..340fd2f09 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBreak.java +++ b/src/main/java/com/hbm/items/armor/JetpackBreak.java @@ -7,7 +7,6 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -78,8 +77,9 @@ public class JetpackBreak extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - for(String s : I18nUtil.resolveKeyArray("item.jetpack_break.desc")) - list.add(s); + list.add("Regular jetpack that will automatically hover mid-air."); + list.add("Sneaking will stop hover mode."); + list.add("Hover mode will consume less fuel and increase air-mobility."); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackRegular.java b/src/main/java/com/hbm/items/armor/JetpackRegular.java index 5c3da193b..cbf04933b 100644 --- a/src/main/java/com/hbm/items/armor/JetpackRegular.java +++ b/src/main/java/com/hbm/items/armor/JetpackRegular.java @@ -7,7 +7,6 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -57,7 +56,7 @@ public class JetpackRegular extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(I18nUtil.resolveKey("item.jetpack_fly.desc")); + list.add("Regular jetpack for simple upwards momentum."); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackVectorized.java b/src/main/java/com/hbm/items/armor/JetpackVectorized.java index d878a4d6d..d95312f80 100644 --- a/src/main/java/com/hbm/items/armor/JetpackVectorized.java +++ b/src/main/java/com/hbm/items/armor/JetpackVectorized.java @@ -7,7 +7,6 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -69,8 +68,8 @@ public class JetpackVectorized extends JetpackBase { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - for(String s : I18nUtil.resolveKeyArray("item.jetpack_vector.desc")) - list.add(s); + list.add("High-mobility jetpack."); + list.add("Higher fuel consumption."); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java b/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java index a278ad15d..4ded08d51 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java +++ b/src/main/java/com/hbm/items/block/ItemBlockBlastInfo.java @@ -2,7 +2,6 @@ package com.hbm.items.block; import java.util.List; -import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -26,6 +25,6 @@ public class ItemBlockBlastInfo extends ItemBlockBase { if(block == null) return; - list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("desc.block.blastinfo", block.getExplosionResistance(null))); + list.add(EnumChatFormatting.GOLD + "Blast Resistance: " + block.getExplosionResistance(null)); } } diff --git a/src/main/java/com/hbm/items/block/ItemBlockLore.java b/src/main/java/com/hbm/items/block/ItemBlockLore.java index 24d86b52c..6d26836e0 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockLore.java +++ b/src/main/java/com/hbm/items/block/ItemBlockLore.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.RedBarrel; -import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; @@ -22,21 +21,35 @@ public class ItemBlockLore extends ItemBlockBase { super.addInformation(itemstack, player, list, bool); if(this.field_150939_a instanceof RedBarrel) { - list.add(I18nUtil.resolveKey("tile.red_barrel.desc")); + list.add("Static fluid barrel"); } if(this.field_150939_a == ModBlocks.meteor_battery) { - list.add(I18nUtil.resolveKey("tile.meteor_battery.desc")); + list.add("Provides infinite charge to tesla coils"); } if(this.field_150939_a == ModBlocks.ore_oil) { - for(String s : I18nUtil.resolveKeyArray("tile.ore_oil.desc")) - list.add(s); + list.add("You weren't supposed to mine that."); + list.add("Come on, get a derrick you doofus."); } if(this.field_150939_a == ModBlocks.gravel_diamond) { - for(String s : I18nUtil.resolveKeyArray("tile.gravel_diamond.desc")) - list.add(s); + list.add("There is some kind of joke here,"); + list.add("but I can't quite tell what it is."); + list.add(""); + list.add("Update, 2020-07-04:"); + list.add("We deny any implications of a joke on"); + list.add("the basis that it was so severely unfunny"); + list.add("that people started stabbing their eyes out."); + list.add(""); + list.add("Update, 2020-17-04:"); + list.add("As it turns out, \"Diamond Gravel\" was"); + list.add("never really a thing, rendering what might"); + list.add("have been a joke as totally nonsensical."); + list.add("We apologize for getting your hopes up with"); + list.add("this non-joke that hasn't been made."); + list.add(""); + list.add("i added an item for a joke that isn't even here, what am i, stupid? can't even tell the difference between gravel and a gavel, how did i not forget how to breathe yet?"); } } diff --git a/src/main/java/com/hbm/items/block/ItemCustomMachine.java b/src/main/java/com/hbm/items/block/ItemCustomMachine.java index b1c1199ad..61b1cf00c 100644 --- a/src/main/java/com/hbm/items/block/ItemCustomMachine.java +++ b/src/main/java/com/hbm/items/block/ItemCustomMachine.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.config.CustomMachineConfigJSON; import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -38,7 +37,7 @@ public class ItemCustomMachine extends ItemBlock { MachineConfiguration conf = CustomMachineConfigJSON.niceList.get(id); if(conf != null) { - return (I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name").startsWith("tile.cm_")) ? conf.localizedName : I18nUtil.resolveKey("tile.cm_" + conf.unlocalizedName + ".name"); + return conf.localizedName; } } diff --git a/src/main/java/com/hbm/items/bomb/ItemFleija.java b/src/main/java/com/hbm/items/bomb/ItemFleija.java index 0ef739264..d9424f67e 100644 --- a/src/main/java/com/hbm/items/bomb/ItemFleija.java +++ b/src/main/java/com/hbm/items/bomb/ItemFleija.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; @@ -15,8 +14,8 @@ public class ItemFleija extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray( "tile.nuke_fleija.desc")) - list.add(s); + list.add("Used in:"); + list.add("F.L.E.I.J.A."); super.addInformation(itemstack, player, list, bool); } diff --git a/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java b/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java index 707be6ba1..edbcbc693 100644 --- a/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java +++ b/src/main/java/com/hbm/items/bomb/ItemMissileShuttle.java @@ -2,7 +2,6 @@ package com.hbm.items.bomb; import java.util.List; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -11,7 +10,12 @@ public class ItemMissileShuttle extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray( "item.missile_shuttle.desc")) - list.add(s); + list.add("Tonite, on bo''om gear:"); + list.add("James huffs leaded gasoline and"); + list.add("goes insane, Richard spends the"); + list.add("entire budget on a broken .PNG,"); + list.add("And I forget to set the infinite"); + list.add("Water tanks on our RBMK to flow"); + list.add("out, blowing up our entire base"); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/items/bomb/ItemN2.java b/src/main/java/com/hbm/items/bomb/ItemN2.java index f1a5ce766..c837fee78 100644 --- a/src/main/java/com/hbm/items/bomb/ItemN2.java +++ b/src/main/java/com/hbm/items/bomb/ItemN2.java @@ -2,19 +2,17 @@ package com.hbm.items.bomb; import java.util.List; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; public class ItemN2 extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray( "tile.nuke_n2.desc")) - list.add(s); + list.add("Used in:"); + list.add("N² Mine"); } } diff --git a/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java b/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java index 53a79c575..6335866f3 100644 --- a/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java +++ b/src/main/java/com/hbm/items/bomb/ItemPrototypeBlock.java @@ -2,7 +2,6 @@ package com.hbm.items.bomb; import java.util.List; -import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; @@ -17,8 +16,10 @@ public class ItemPrototypeBlock extends ItemBlock { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray( "tile.nuke_prototype.desc")) - list.add(s); + list.add("It didn't have to be like this."); + list.add(""); + list.add("You monster."); + /*list.add("In memory of Euphemia."); list.add(""); list.add("Rest in spaghetti, never forgetti.");*/ diff --git a/src/main/java/com/hbm/items/bomb/ItemSolinium.java b/src/main/java/com/hbm/items/bomb/ItemSolinium.java index 01776fa26..a04321ecb 100644 --- a/src/main/java/com/hbm/items/bomb/ItemSolinium.java +++ b/src/main/java/com/hbm/items/bomb/ItemSolinium.java @@ -2,7 +2,6 @@ package com.hbm.items.bomb; import java.util.List; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -12,8 +11,8 @@ public class ItemSolinium extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray( "tile.nuke_solinium.desc")) - list.add(s); + list.add("Used in:"); + list.add("Solinium Bomb"); super.addInformation(itemstack, player, list, bool); } } diff --git a/src/main/java/com/hbm/items/food/ItemLemon.java b/src/main/java/com/hbm/items/food/ItemLemon.java index b2d332c51..25bb74a9e 100644 --- a/src/main/java/com/hbm/items/food/ItemLemon.java +++ b/src/main/java/com/hbm/items/food/ItemLemon.java @@ -6,7 +6,6 @@ import com.hbm.items.ModItems; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; @@ -31,57 +30,72 @@ public class ItemLemon extends ItemFood { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.lemon) { - list.add(I18nUtil.resolveKey("item.lemon.desc")); + list.add("Eh, good enough."); } if(this == ModItems.definitelyfood) { - for(String s : I18nUtil.resolveKeyArray("item.definitelyfood.desc")) - list.add(s); + list.add("A'right, I got sick and tired of"); + list.add("having to go out, kill things just"); + list.add("to get food and not die, so here is "); + list.add("my absolutely genius solution:"); + list.add(""); + list.add("Have some edible dirt."); } if(this == ModItems.med_ipecac) { - for(String s : I18nUtil.resolveKeyArray("item.med_ipecac.desc")) - list.add(s); + list.add("Bitter juice that will cause your stomach"); + list.add("to forcefully eject its contents."); } if(this == ModItems.med_ptsd) { - for(String s : I18nUtil.resolveKeyArray("item.med_ptsd.desc")) - list.add(s); + list.add("This isn't even PTSD mediaction, it's just"); + list.add("Ipecac in a different bottle!"); } if(this == ModItems.med_schizophrenia) { - for(String s : I18nUtil.resolveKeyArray("item.med_schiziphrenia.desc")) - list.add(s); + list.add("Makes the voices go away. Just for a while."); + list.add(""); + list.add("..."); + list.add("Better not take it."); + } + + if(this == ModItems.med_schizophrenia) { + list.add("Makes the voices go away. Just for a while."); + list.add(""); + list.add("..."); + list.add("Better not take it."); } if(this == ModItems.loops) { - list.add(I18nUtil.resolveKey("item.loops.desc")); + list.add("Brøther, may I have some lööps?"); } if(this == ModItems.loop_stew) { - list.add(I18nUtil.resolveKey("item.loop_stew.desc")); + list.add("A very, very healthy breakfast."); } if(this == ModItems.twinkie) { - list.add(I18nUtil.resolveKey("item.twinkie.desc")); + list.add("Expired 600 years ago!"); } if(this == ModItems.pudding) { - for(String s : I18nUtil.resolveKeyArray("item.pudding.desc")) - list.add(s); + list.add("What if he did?"); + list.add("What if he didn't?"); + list.add("What if the world was made of pudding?"); } if(this == ModItems.ingot_semtex) { - for(String s : I18nUtil.resolveKeyArray("item.ingot_semtex.desc")) - list.add(s); + list.add("Semtex H Plastic Explosive"); + list.add("Performant explosive for many applications."); + list.add("Edible"); } if(this == ModItems.peas) { - list.add(I18nUtil.resolveKey("item.peas.desc")); + list.add("He accepts your offering."); } if(this == ModItems.quesadilla) { - list.add(I18nUtil.resolveKey("item.cheese_quesadilla.desc")); + list.add("That's what a 50 year old yeast infection does to you."); } } diff --git a/src/main/java/com/hbm/items/food/ItemTemFlakes.java b/src/main/java/com/hbm/items/food/ItemTemFlakes.java index b0435244d..d6eee715b 100644 --- a/src/main/java/com/hbm/items/food/ItemTemFlakes.java +++ b/src/main/java/com/hbm/items/food/ItemTemFlakes.java @@ -2,7 +2,6 @@ package com.hbm.items.food; import java.util.List; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.creativetab.CreativeTabs; @@ -40,15 +39,15 @@ public class ItemTemFlakes extends ItemFood { { if(itemstack.getItemDamage() == 0) { - list.add(I18nUtil.resolveKeyArray("item.tem_flakes.desc")[0]); + list.add("Heals 2HP DISCOUNT FOOD OF TEM!!!"); } if(itemstack.getItemDamage() == 1) { - list.add(I18nUtil.resolveKeyArray("item.tem_flakes.desc")[1]); + list.add("Heals 2HP food of tem"); } if(itemstack.getItemDamage() == 2) { - list.add(I18nUtil.resolveKeyArray("item.tem_flakes.desc")[2]); + list.add("Heals food of tem (expensiv)"); } } diff --git a/src/main/java/com/hbm/items/machine/ItemBattery.java b/src/main/java/com/hbm/items/machine/ItemBattery.java index 3de7fd67b..4f0fda9a7 100644 --- a/src/main/java/com/hbm/items/machine/ItemBattery.java +++ b/src/main/java/com/hbm/items/machine/ItemBattery.java @@ -6,7 +6,6 @@ import com.hbm.items.ModItems; import com.hbm.util.BobMathUtil; import api.hbm.energy.IBatteryItem; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.creativetab.CreativeTabs; @@ -35,14 +34,14 @@ public class ItemBattery extends Item implements IBatteryItem { charge = getCharge(itemstack); if(itemstack.getItem() != ModItems.fusion_core && itemstack.getItem() != ModItems.energy_core) { - list.add(I18nUtil.resolveKey("desc.item.battery.charge",BobMathUtil.getShortNumber(charge),BobMathUtil.getShortNumber(maxCharge))); + list.add("Energy stored: " + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE"); } else { String charge1 = BobMathUtil.getShortNumber((charge * 100) / this.maxCharge); - list.add(I18nUtil.resolveKey("desc.item.battery.chargePerc", charge1)); + list.add("Charge: " + charge1 + "%"); list.add("(" + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE)"); } - list.add(I18nUtil.resolveKey("desc.item.battery.chargeRate",BobMathUtil.getShortNumber(chargeRate))); - list.add(I18nUtil.resolveKey("desc.item.battery.dischargeRate",BobMathUtil.getShortNumber(dischargeRate))); + list.add("Charge rate: " + BobMathUtil.getShortNumber(chargeRate) + "HE/t"); + list.add("Discharge rate: " + BobMathUtil.getShortNumber(dischargeRate) + "HE/t"); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java index 5fb6e7a76..1a04a4649 100644 --- a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java +++ b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -34,131 +33,132 @@ public class ItemMachineUpgrade extends Item { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this.type == UpgradeType.SPEED) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(15 * this.tier),(300 * this.tier),"","","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[1]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","",(1 + this.tier),(625 * this.tier),"","","","")[1]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[2]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(25 * this.tier),(50 * this.tier),"","","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[3]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(25 * this.tier),(300 * this.tier),"","","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[4]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(25 * this.tier),(300 * this.tier),"","","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[5]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","",(25 * this.tier),(25 * this.tier),"","")[2]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[6]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed",(20 * this.tier),(1000 * this.tier),"","","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[7]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","","","",(1 + this.tier),"")[3]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[8]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","","","",(1 + this.tier),"")[3]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.speed","","","","","","","",(0.25 * (double)this.tier))[4]); + list.add(EnumChatFormatting.RED + "Mining Drill:"); + list.add("Delay -" + (15 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); + list.add(EnumChatFormatting.RED + "Laser Miner:"); + list.add("Delay ÷" + (1 + this.tier) + " / Consumption +" + (625 * this.tier) + "HE/t"); + list.add(EnumChatFormatting.RED + "Electric Furnace:"); + list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (50 * this.tier) + "HE/t"); + list.add(EnumChatFormatting.RED + "Assembly Machine:"); + list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); + list.add(EnumChatFormatting.RED + "Chemical Plant:"); + list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); + list.add(EnumChatFormatting.RED + "Oil Wells:"); + list.add("Delay -" + (25 * this.tier) + "% / Consumption +" + (25 * this.tier) + "%"); + list.add(EnumChatFormatting.RED + "Crystallizer:"); + list.add("Delay -" + (20 * this.tier) + "% / Consumption +" + (1000 * this.tier) + "HE/t"); + list.add(EnumChatFormatting.RED + "Cyclotron:"); + list.add("Speed x" + (1 + this.tier)); + list.add(EnumChatFormatting.RED + "Flare Stack:"); + list.add("Speed x" + (1 + this.tier)); + list.add(EnumChatFormatting.RED + "Maxwell:"); + list.add("Damage +" + (0.25 * (double)this.tier) + "dmg/t"); } if(this.type == UpgradeType.EFFECT) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect",this.tier,(80 * this.tier),"","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[6]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","",(5 * this.tier),(1000 * this.tier),"","","")[1]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[7]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","","","",(100 - 100 / (this.tier + 1)),"","")[2]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[8]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","","","","",(100 * this.tier / 3),"")[3]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.effect","","","","","","",(3 * this.tier))[4]); + list.add(EnumChatFormatting.RED + "Mining Drill:"); + list.add("Radius +" + this.tier + "m / Consumption +" + (80 * this.tier) + "HE/t"); + list.add(EnumChatFormatting.RED + "Crystallizer:"); + list.add("+" + (5 * this.tier) + "% chance of not consuming an item / Acid consumption +" + (1000 * this.tier) + "mB"); + list.add(EnumChatFormatting.RED + "Cyclotron:"); + list.add("-" + (100 - 100 / (this.tier + 1)) + "% chance of incrementing overheat counter"); + list.add(EnumChatFormatting.RED + "Flare Stack:"); + list.add("+" + (100 * this.tier / 3) + "% power production"); + list.add(EnumChatFormatting.RED + "Maxwell:"); + list.add("Range +" + (3 * this.tier) + "m"); } if(this.type == UpgradeType.POWER) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(30 * this.tier),(5 * this.tier),"","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[2]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(15 * this.tier),(10 * this.tier),"","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[3]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(30 * this.tier),(5 * this.tier),"","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[4]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power",(30 * this.tier),(5 * this.tier),"","","","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[5]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","",(25 * this.tier),(10 * this.tier),"","","")[1]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[7]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","","","",(100 * this.tier),"","")[2]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","","","","",(150 * this.tier),"")[3]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.power","","","","","","",(1500 * this.tier))[4]); + list.add(EnumChatFormatting.RED + "Mining Drill:"); + list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); + list.add(EnumChatFormatting.RED + "Electric Furnace:"); + list.add("Consumption -" + (15 * this.tier) + "HE/t / Delay +" + (10 * this.tier) + "%"); + list.add(EnumChatFormatting.RED + "Assembly Machine:"); + list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); + list.add(EnumChatFormatting.RED + "Chemical Plant:"); + list.add("Consumption -" + (30 * this.tier) + "HE/t / Delay +" + (5 * this.tier) + "%"); + list.add(EnumChatFormatting.RED + "Oil Wells:"); + list.add("Consumption -" + (25 * this.tier) + "% / Delay +" + (10 * this.tier) + "%"); + list.add(EnumChatFormatting.RED + "Cyclotron:"); + list.add("Consumption -" + (100 * this.tier) + "kHE/t"); + list.add(EnumChatFormatting.RED + "Maxwell:"); + list.add("Consumption -" + (150 * this.tier) + "HE/t"); + list.add("Consumption when firing -" + (1500 * this.tier) + "HE/t"); } if(this == ModItems.upgrade_fortune_1) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); - list.add(I18nUtil.resolveKey("desc.item.upgrade.fortune","1","15")); + list.add(EnumChatFormatting.RED + "Mining Drill:"); + list.add("Fortune +1 / Delay +15"); } if(this == ModItems.upgrade_fortune_2) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); - list.add(I18nUtil.resolveKey("desc.item.upgrade.fortune","2","30")); + list.add(EnumChatFormatting.RED + "Mining Drill:"); + list.add("Fortune +2 / Delay +30"); } if(this == ModItems.upgrade_fortune_3) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[0]); - list.add(I18nUtil.resolveKey("desc.item.upgrade.fortune","3","45")); + list.add(EnumChatFormatting.RED + "Mining Drill:"); + list.add("Fortune +3 / Delay +45"); } if(this.type == UpgradeType.AFTERBURN) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[10]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.afterburn",(this.tier + 1),(this.tier + 2),"","","")[0]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[9]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.afterburn","","",(this.tier * 3),"","")[1]); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[5]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.afterburn","","","",(this.tier * 10),(this.tier * 50))[2]); + list.add(EnumChatFormatting.RED + "Turbofan:"); + list.add("Production x" + (this.tier + 1) + " / Consumption x" + (this.tier + 2)); + list.add(EnumChatFormatting.RED + "Maxwell:"); + list.add("Afterburn +" + (this.tier * 3) + "s"); + list.add(EnumChatFormatting.RED + "Oil Wells:"); + list.add("Burn " + (this.tier * 10) + "mB of gas for " + (this.tier * 50) + "HE/t"); } if(this == ModItems.upgrade_radius) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[11]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield","16","500")[0]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield")[2]); + list.add(EnumChatFormatting.RED + "Forcefield Range Upgrade"); + list.add("Radius +16 / Consumption +500"); + list.add("Stacks to 16"); } if(this == ModItems.upgrade_health) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[12]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield","50","250")[1]); - list.add(I18nUtil.resolveKeyArray("desc.item.upgrade.forcefield")[2]); + list.add(EnumChatFormatting.RED + "Forcefield Health Upgrade"); + list.add("Max. Health +50 / Consumption +250"); + list.add("Stacks to 16"); } if(this == ModItems.upgrade_smelter) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); - list.add(I18nUtil.resolveKey("desc.item.upgrade.smelter")); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); + list.add("Smelts blocks. Easy enough."); } if(this == ModItems.upgrade_shredder) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); - list.add(I18nUtil.resolveKey("desc.item.upgrade.shredder")); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); + list.add("Crunches ores"); } if(this == ModItems.upgrade_centrifuge) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); - list.add(I18nUtil.resolveKey("desc.item.upgrade.centrifuge")); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); + list.add("Hopefully self-explanatory"); } if(this == ModItems.upgrade_crystallizer) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); - list.add(I18nUtil.resolveKey("desc.item.upgrade.crystallizer")); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); + list.add("Your new best friend"); } if(this == ModItems.upgrade_screm) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); - for(String s : I18nUtil.resolveKeyArray("desc.item.upgrade.screm")) - list.add(s); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); + list.add("It's like in Super Mario where all blocks are"); + list.add("actually Toads, but here it's Half-Life scientists"); + list.add("and they scream. A lot."); } if(this == ModItems.upgrade_nullifier) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[13]); - for(String s : I18nUtil.resolveKeyArray("desc.item.upgrade.nullifier")) - list.add(s); + list.add(EnumChatFormatting.RED + "Mining Laser Upgrade"); + list.add("50% chance to override worthless items with /dev/zero"); + list.add("50% chance to move worthless items to /dev/null"); } if(this == ModItems.upgrade_gc_speed) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("desc.item.upgrade.machine")[14]); - for(String s : I18nUtil.resolveKeyArray("desc.item.upgrade.gc_speed")) - list.add(s); + list.add(EnumChatFormatting.RED + "Gas Centrifuge Upgrade"); + list.add("Allows for total isotopic separation of HEUF6"); + list.add(EnumChatFormatting.YELLOW + "also your centrifuge goes sicko mode"); } } diff --git a/src/main/java/com/hbm/items/machine/ItemPWRFuel.java b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java index 70bd64d81..db802776a 100644 --- a/src/main/java/com/hbm/items/machine/ItemPWRFuel.java +++ b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.items.ItemEnumMulti; import com.hbm.util.EnumUtil; -import com.hbm.util.I18nUtil; import com.hbm.util.function.Function; import com.hbm.util.function.Function.FunctionLogarithmic; import com.hbm.util.function.Function.FunctionSqrt; @@ -56,7 +55,10 @@ public class ItemPWRFuel extends ItemEnumMulti { EnumPWRFuel num = EnumUtil.grabEnumSafely(EnumPWRFuel.class, stack.getItemDamage()); String color = EnumChatFormatting.GOLD + ""; - for(String s : I18nUtil.resolveKeyArray("trait.pwr_fuel" , num.heatEmission, num.function.getLabelForFuel(), num.function.getDangerFromFuel())) - list.add(color + s); + String reset = EnumChatFormatting.RESET + ""; + + list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); + list.add(color + "Reacton function: " + reset + num.function.getLabelForFuel()); + list.add(color + "Fuel type: " + reset + num.function.getDangerFromFuel()); } } diff --git a/src/main/java/com/hbm/items/machine/ItemPlateFuel.java b/src/main/java/com/hbm/items/machine/ItemPlateFuel.java index 6f76853b2..f30978de9 100644 --- a/src/main/java/com/hbm/items/machine/ItemPlateFuel.java +++ b/src/main/java/com/hbm/items/machine/ItemPlateFuel.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -28,8 +27,10 @@ public class ItemPlateFuel extends ItemFuelRod { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray("trait.platefuel", getFunctionDesc(), BobMathUtil.getShortNumber(lifeTime))) - list.add(EnumChatFormatting.YELLOW + s); + + list.add(EnumChatFormatting.YELLOW + "[Research Reactor Plate Fuel]"); + list.add(EnumChatFormatting.DARK_AQUA + " " + getFunctionDesc()); + list.add(EnumChatFormatting.DARK_AQUA + " Yield of " + BobMathUtil.getShortNumber(lifeTime) + " events"); super.addInformation(itemstack, player, list, bool); } diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java b/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java index 09f5a359a..e50dbcd66 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.items.special.ItemNuclearWaste; import com.hbm.main.MainRegistry; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -78,20 +77,20 @@ public class ItemRBMKPellet extends ItemNuclearWaste { super.addInformation(stack, player, list, bool); list.add(EnumChatFormatting.ITALIC + this.fullName); - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[0]); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "Pellet for recycling"); int meta = rectify(stack.getItemDamage()); switch(meta % 5) { - case 0: list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[1]); break; - case 1: list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[2]); break; - case 2: list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[3]); break; - case 3: list.add(EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[4]); break; - case 4: list.add(EnumChatFormatting.DARK_GRAY + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[5]); break; + case 0: list.add(EnumChatFormatting.GOLD + "Brand New"); break; + case 1: list.add(EnumChatFormatting.YELLOW + "Barely Depleted"); break; + case 2: list.add(EnumChatFormatting.GREEN + "Moderately Depleted"); break; + case 3: list.add(EnumChatFormatting.DARK_GREEN + "Highly Depleted"); break; + case 4: list.add(EnumChatFormatting.DARK_GRAY + "Fully Depleted"); break; } if(hasXenon(meta)) - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKeyArray("trait.rbmk_pellet")[6]); + list.add(EnumChatFormatting.DARK_PURPLE + "High Xenon Poison"); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index 9808cf170..960a84874 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -223,15 +223,15 @@ public class ItemRBMKRod extends Item { } public static enum EnumBurnFunc { - PASSIVE(EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[0]), //const, no reactivity - LOG_TEN(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[1]), //log10(x + 1) * reactivity * 50 - PLATEU(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[2]), //(1 - e^(-x/25)) * reactivity * 100 - ARCH(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[3]), //x-(x²/1000) * reactivity - SIGMOID(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[4]), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 ! - SQUARE_ROOT(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[5]), //sqrt(x) * 10 * reactivity - LINEAR(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[6]), //x * reactivity - QUADRATIC(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[7]), //x^2 / 100 * reactivity - EXPERIMENTAL(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[8]); //x * (sin(x) + 1) + PASSIVE(EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"), //const, no reactivity + LOG_TEN(EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"), //log10(x + 1) * reactivity * 50 + PLATEU(EnumChatFormatting.GREEN + "SAFE / EULER"), //(1 - e^(-x/25)) * reactivity * 100 + ARCH(EnumChatFormatting.RED + "DANGEROUS / NEGATIVE-QUADRATIC"), //x-(x²/1000) * reactivity + SIGMOID(EnumChatFormatting.GREEN + "SAFE / SIGMOID"), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 ! + SQUARE_ROOT(EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"), //sqrt(x) * 10 * reactivity + LINEAR(EnumChatFormatting.RED + "DANGEROUS / LINEAR"), //x * reactivity + QUADRATIC(EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"), //x^2 / 100 * reactivity + EXPERIMENTAL(EnumChatFormatting.RED + "EXPERIMENTAL / SINE SLOPE"); //x * (sin(x) + 1) public String title = ""; diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index 73971bb41..be5e0ad7f 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -9,7 +9,6 @@ import com.hbm.main.MainRegistry; import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; import com.hbm.render.icon.TextureAtlasSpriteMutatable; import com.hbm.util.EnumUtil; -import com.hbm.util.I18nUtil; import com.hbm.util.function.Function; import com.hbm.util.function.Function.*; @@ -128,23 +127,23 @@ public class ItemWatzPellet extends ItemEnumMulti { if(this != ModItems.watz_pellet) return; EnumWatzType num = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.watz_pellet", String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D))); + + list.add(EnumChatFormatting.GREEN + "Depletion: " + String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D) + "%"); String color = EnumChatFormatting.GOLD + ""; String reset = EnumChatFormatting.RESET + ""; if(num.passive > 0){ - list.add(color + I18nUtil.resolveKeyArray("trait.watz_pellet.passive")[0] + reset + num.passive); - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.watz_pellet.passive")[1]); + list.add(color + "Base fission rate: " + reset + num.passive); + list.add(EnumChatFormatting.RED + "Self-igniting!"); } - if(num.heatEmission > 0) list.add(color + I18nUtil.resolveKey("trait.watz_pellet.heatEmission") + reset + num.heatEmission + " TU"); + if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); if(num.burnFunc != null) { - list.add(color + I18nUtil.resolveKeyArray("trait.watz_pellet.burnFunc")[0] + reset + num.burnFunc.getLabelForFuel()); - list.add(color + I18nUtil.resolveKeyArray("trait.watz_pellet.burnFunc")[1] + reset + num.burnFunc.getDangerFromFuel()); + list.add(color + "Reacton function: " + reset + num.burnFunc.getLabelForFuel()); + list.add(color + "Fuel type: " + reset + num.burnFunc.getDangerFromFuel()); } - if(num.heatDiv != null) list.add(color + I18nUtil.resolveKey("trait.watz_pellet.heatDiv") + reset + num.heatDiv.getLabelForFuel() + " TUâ»Â¹"); - if(num.absorbFunc != null) list.add(color + I18nUtil.resolveKey("trait.watz_pellet.absorbFunc") + reset + num.absorbFunc.getLabelForFuel()); + if(num.heatDiv != null) list.add(color + "Thermal multiplier: " + reset + num.heatDiv.getLabelForFuel() + " TUâ»Â¹"); + if(num.absorbFunc != null) list.add(color + "Flux capture: " + reset + num.absorbFunc.getLabelForFuel()); } @Override diff --git a/src/main/java/com/hbm/items/special/ItemAMSCore.java b/src/main/java/com/hbm/items/special/ItemAMSCore.java index 68c12677f..6a4fb569f 100644 --- a/src/main/java/com/hbm/items/special/ItemAMSCore.java +++ b/src/main/java/com/hbm/items/special/ItemAMSCore.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -29,26 +28,51 @@ public class ItemAMSCore extends Item { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if (this == ModItems.ams_core_sing) { - for(String s : I18nUtil.resolveKeyArray("item.ams_core_sing.desc")) - list.add(s); + list.add("A modified undefined state of spacetime"); + list.add("used to aid in inter-gluon fusion and"); + list.add("spacetime annihilation. Yes, this destroys"); + list.add("the universe itself, slowly but steadily,"); + list.add("but at least you can power your toaster with"); + list.add("this, so it's all good."); } if (this == ModItems.ams_core_wormhole) { - for(String s : I18nUtil.resolveKeyArray("item.ams_core_wormhole.desc")) - list.add(s); + list.add("A cloud of billions of nano-wormholes which"); + list.add("deliberately fail at tunneling matter from"); + list.add("another dimension, rather it converts all"); + list.add("that matter into pure energy. That means"); + list.add("you're actively contributing to the destruction"); + list.add("of another dimension, sucking it dry like a"); + list.add("juicebox."); + list.add("That dimension probably sucked, anyways. I"); + list.add("bet it was full of wasps or some crap, man,"); + list.add("I hate these things."); } if (this == ModItems.ams_core_eyeofharmony) { - for(String s : I18nUtil.resolveKeyArray("item.ams_core_eyeofharmony.desc")) - list.add(s); + list.add("A star collapsing in on itself, mere nanoseconds"); + list.add("away from being turned into a black hole,"); + list.add("frozen in time. If I didn't know better I"); + list.add("would say this is some deep space magic"); + list.add("bullcrap some guy made up to sound intellectual."); + list.add("Probably Steve from accounting. You still owe me"); + list.add("ten bucks."); } if (this == ModItems.ams_core_thingy) { if(MainRegistry.polaroidID == 11) { - list.add(I18nUtil.resolveKey("item.ams_core_thingy_hide.desc")); + list.add("Yeah I'm not even gonna question that one."); } else { - for(String s : I18nUtil.resolveKeyArray("item.ams_core_thingy.desc")) - list.add(s); + list.add("..."); + list.add("..."); + list.add("...am I even holding this right?"); + list.add("It's a small metal thing. I dunno where it's from"); + list.add("or what it does, maybe they found it on a"); + list.add("junkyard and sold it as some kind of antique"); + list.add("artifact. If it weren't for the fact that I can"); + list.add("actually stuff this into some great big laser"); + list.add("reactor thing, I'd probably bring it back to where"); + list.add("it belongs. In the trash."); } } } diff --git a/src/main/java/com/hbm/items/special/ItemGlitch.java b/src/main/java/com/hbm/items/special/ItemGlitch.java index f44dab7ec..9942c4754 100644 --- a/src/main/java/com/hbm/items/special/ItemGlitch.java +++ b/src/main/java/com/hbm/items/special/ItemGlitch.java @@ -13,7 +13,6 @@ import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import api.hbm.energy.IBatteryItem; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; @@ -40,10 +39,10 @@ public class ItemGlitch extends Item implements IBatteryItem { if(!world.isRemote) switch(itemRand.nextInt(31)) { case 0: - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[0])); + player.addChatMessage(new ChatComponentText("Sorry nothing.")); break; case 1: - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[1])); + player.addChatMessage(new ChatComponentText("Prometheus was punished by the gods by giving the gift of knowledge to man. He was cast into the bowels of the earth and pecked by birds.")); break; case 2: player.attackEntityFrom(ModDamageSource.radiation, 1000); @@ -67,7 +66,7 @@ public class ItemGlitch extends Item implements IBatteryItem { break; case 8: player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_container, 10)); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[2])); + player.addChatMessage(new ChatComponentText("Oh, and by the way: The polaroid shifts reality. Things can be different if the polaroid is broken.")); break; case 9: player.inventory.addItemStackToInventory(new ItemStack(ModItems.nuke_advanced_kit, 1)); @@ -95,7 +94,7 @@ public class ItemGlitch extends Item implements IBatteryItem { player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_pip)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.bottle_sparkle)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.geiger_counter)); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[3])); + player.addChatMessage(new ChatComponentText("Have some free stuff. You'll need it for that one cryptic achievement.")); break; case 14: player.inventory.dropAllItems(); @@ -106,43 +105,43 @@ public class ItemGlitch extends Item implements IBatteryItem { player.inventory.addItemStackToInventory(new ItemStack(Blocks.dirt, 64)); break; case 16: - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[4])); + player.addChatMessage(new ChatComponentText("v yvxr lbhe nggvghqr!")); break; case 17: - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[5])); + player.addChatMessage(new ChatComponentText("89% of magic tricks are not magic. Technically, they are sorcery.")); break; case 18: player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_lever_action)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge, 12)); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[6])); + player.addChatMessage(new ChatComponentText("Here ya go.")); break; case 19: - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[7])); + player.addChatMessage(new ChatComponentText("Ë")); break; case 20: - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[8])); + player.addChatMessage(new ChatComponentText("Good day, I am text")); break; case 21: player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_nuclear)); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[9])); + player.addChatMessage(new ChatComponentText("73616d706c652074657874!")); break; case 22: - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[10])); + player.addChatMessage(new ChatComponentText("Budget cuts, no effect for you.")); break; case 23: - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[11])); + player.addChatMessage(new ChatComponentText("oof")); break; case 24: player.addPotionEffect(new PotionEffect(Potion.resistance.id, 60 * 20, 9)); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[12])); + player.addChatMessage(new ChatComponentText("Tank!")); break; case 25: player.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 60 * 20, 9)); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[13])); + player.addChatMessage(new ChatComponentText("More devastating than a falling boxcar!")); break; case 26: player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 60 * 20, 9)); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[14])); + player.addChatMessage(new ChatComponentText("Ha!")); break; case 27: EntityVortex vortex = new EntityVortex(world, 2.5F); @@ -157,15 +156,15 @@ public class ItemGlitch extends Item implements IBatteryItem { mirv.posY = player.posY + 100; mirv.posZ = player.posZ; world.spawnEntityInWorld(mirv); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[15])); + player.addChatMessage(new ChatComponentText("Watch your head!")); break; case 29: ExplosionLarge.spawnBurst(world, player.posX, player.posY, player.posZ, 27, 3); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[16])); + player.addChatMessage(new ChatComponentText("Bam!")); break; case 30: player.inventory.addItemStackToInventory(new ItemStack(ModItems.plate_saturnite)); - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKeyArray("item.glitch.message")[17])); + player.addChatMessage(new ChatComponentText("It's dangerous to go alone, take this!")); break; } @@ -177,62 +176,62 @@ public class ItemGlitch extends Item implements IBatteryItem { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[0]); + list.add("It's a gamble!"); list.add(""); switch(MainRegistry.polaroidID) { case 1: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[1]); + list.add("Click-click-click!"); break; case 2: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[2]); + list.add("Creek!"); break; case 3: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[3]); + list.add("Bzzzt!"); break; case 4: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[4]); + list.add("TS staring off into space."); break; case 5: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[5]); + list.add("BANG!!"); break; case 6: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[6]); + list.add("Woop!"); break; case 7: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[7]); + list.add("Poow!"); break; case 8: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[8]); + list.add("Pft!"); break; case 9: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[9]); + list.add("GF fgnevat bss vagb fcnpr."); break; case 10: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[10]); + list.add("Backup memory #8 on 1.44 million bytes."); break; case 11: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[11]); + list.add("PTANG!"); break; case 12: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[12]); + list.add("Bzzt-zrrt!"); break; case 13: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[13]); + list.add("Clang, click-brrthththrtrtrtrtrtr!"); break; case 14: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[14]); + list.add("KABLAM!"); break; case 15: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[15]); + list.add("PLENG!"); break; case 16: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[16]); + list.add("Wheeeeeeee-"); break; case 17: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[17]); + list.add("Thump."); break; case 18: - list.add(I18nUtil.resolveKeyArray("item.glitch.desc")[18]); + list.add("BANG! Choo-chooo! B A N G ! ! !"); break; } } diff --git a/src/main/java/com/hbm/items/special/ItemRag.java b/src/main/java/com/hbm/items/special/ItemRag.java index f94b5ba49..bb883f6eb 100644 --- a/src/main/java/com/hbm/items/special/ItemRag.java +++ b/src/main/java/com/hbm/items/special/ItemRag.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -40,7 +39,7 @@ public class ItemRag extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray("item.rag.desc")) - list.add(s); + list.add("Drop into water to make damp cloth."); + list.add("Right-click to urinate on the cloth."); } } diff --git a/src/main/java/com/hbm/items/special/ItemSoyuz.java b/src/main/java/com/hbm/items/special/ItemSoyuz.java index adfe591cd..7644a0880 100644 --- a/src/main/java/com/hbm/items/special/ItemSoyuz.java +++ b/src/main/java/com/hbm/items/special/ItemSoyuz.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.lib.RefStrings; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -51,12 +50,12 @@ public class ItemSoyuz extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[0]); + list.add("Skin:"); switch(stack.getItemDamage()) { - case 0: list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[1]); break; - case 1: list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[2]); break; - case 2: list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKeyArray("item.missile_soyuz.desc")[3]); break; + case 0: list.add(EnumChatFormatting.GOLD + "Original"); break; + case 1: list.add(EnumChatFormatting.BLUE + "Luna Space Center"); break; + case 2: list.add(EnumChatFormatting.GREEN + "Post War"); break; } } diff --git a/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java b/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java index 927ae5165..9fb384f23 100644 --- a/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java +++ b/src/main/java/com/hbm/items/tool/ItemAnchorRemote.java @@ -7,7 +7,6 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -28,14 +27,14 @@ public class ItemAnchorRemote extends ItemBattery { charge = getCharge(itemstack); if(itemstack.getItem() != ModItems.fusion_core && itemstack.getItem() != ModItems.energy_core) { - list.add(I18nUtil.resolveKey("desc.item.battery.charge",BobMathUtil.getShortNumber(charge),BobMathUtil.getShortNumber(maxCharge))); + list.add("Energy stored: " + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE"); } else { String charge1 = BobMathUtil.getShortNumber((charge * 100) / this.maxCharge); - list.add(I18nUtil.resolveKey("desc.item.battery.chargePerc", charge1)); + list.add("Charge: " + charge1 + "%"); list.add("(" + BobMathUtil.getShortNumber(charge) + "/" + BobMathUtil.getShortNumber(maxCharge) + "HE)"); } - list.add(I18nUtil.resolveKey("desc.item.battery.chargeRate",BobMathUtil.getShortNumber(chargeRate))); + list.add("Charge rate: " + BobMathUtil.getShortNumber(chargeRate) + "HE/t"); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemCMStructure.java b/src/main/java/com/hbm/items/tool/ItemCMStructure.java index 415076832..6c46decee 100644 --- a/src/main/java/com/hbm/items/tool/ItemCMStructure.java +++ b/src/main/java/com/hbm/items/tool/ItemCMStructure.java @@ -7,7 +7,6 @@ import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; -import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; @@ -157,8 +156,10 @@ public class ItemCMStructure extends Item implements ILookOverlay { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { super.addInformation(stack, player, list, ext); - for(String s : I18nUtil.resolveKeyArray("item.structure_custommachine.desc")) - list.add(EnumChatFormatting.YELLOW + s); + list.add(EnumChatFormatting.YELLOW + "Click Custom Machine Structure Positioning Anchor to"); + list.add(EnumChatFormatting.YELLOW + "Confirm the location of the custom machine core block."); + list.add(EnumChatFormatting.YELLOW + "Output all blocks between Position1 and Position2 with"); + list.add(EnumChatFormatting.YELLOW + "metadata to \"CMstructureOutput.txt\" in hbmConfig."); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemDetonator.java b/src/main/java/com/hbm/items/tool/ItemDetonator.java index c34742f75..201f60c5a 100644 --- a/src/main/java/com/hbm/items/tool/ItemDetonator.java +++ b/src/main/java/com/hbm/items/tool/ItemDetonator.java @@ -2,7 +2,6 @@ package com.hbm.items.tool; import java.util.List; -import com.hbm.util.I18nUtil; import org.apache.logging.log4j.Level; import com.hbm.config.GeneralConfig; @@ -22,12 +21,12 @@ public class ItemDetonator extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray("item.detonator.desc")) - list.add(s); + list.add("Shift right-click to set position,"); + list.add("right-click to detonate!"); if(itemstack.getTagCompound() == null) { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKeyArray("item.detonator.pos.desc")[0]); + list.add(EnumChatFormatting.RED + "No position set!"); } else { - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("item.detonator.pos.desc" , itemstack.stackTagCompound.getInteger("x") , itemstack.stackTagCompound.getInteger("y") , itemstack.stackTagCompound.getInteger("z"))[1]); + list.add(EnumChatFormatting.YELLOW + "Linked to " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z")); } } @@ -46,7 +45,7 @@ public class ItemDetonator extends Item { player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) .next("] ").color(EnumChatFormatting.DARK_AQUA) - .next(I18nUtil.resolveKeyArray("desc.item.detonator")[0]).color(EnumChatFormatting.GREEN).flush()); + .next("Position set!").color(EnumChatFormatting.GREEN).flush()); } world.playSoundAtEntity(player, "hbm:item.techBoop", 2.0F, 1.0F); @@ -65,7 +64,7 @@ public class ItemDetonator extends Item { player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) .next("] ").color(EnumChatFormatting.DARK_AQUA) - .next(I18nUtil.resolveKeyArray("desc.item.detonator")[1]).color(EnumChatFormatting.RED).flush()); + .next("No position set!").color(EnumChatFormatting.RED).flush()); } } else { int x = stack.stackTagCompound.getInteger("x"); diff --git a/src/main/java/com/hbm/items/tool/ItemMS.java b/src/main/java/com/hbm/items/tool/ItemMS.java index bcb3b7c7f..77495a356 100644 --- a/src/main/java/com/hbm/items/tool/ItemMS.java +++ b/src/main/java/com/hbm/items/tool/ItemMS.java @@ -7,7 +7,6 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -19,7 +18,7 @@ public class ItemMS extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(I18nUtil.resolveKey("item.mysteryshovel.desc")); + list.add("Lost but not forgotten"); } public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float a, float b, float c) diff --git a/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java b/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java index bf8b970b3..eefbae55d 100644 --- a/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java +++ b/src/main/java/com/hbm/items/tool/ItemSwordMeteorite.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -27,63 +26,63 @@ public class ItemSwordMeteorite extends ItemSwordAbility { super.addInformation(stack, player, list, ext); if(this == ModItems.meteorite_sword) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "Forged from a fallen star"); + list.add(EnumChatFormatting.ITALIC + "Sharper than most terrestrial blades"); } if(this == ModItems.meteorite_sword_seared) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_seared.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "Fire strengthens the blade"); + list.add(EnumChatFormatting.ITALIC + "Making it even more powerful"); } if(this == ModItems.meteorite_sword_reforged) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_reforged.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "The sword has been reforged"); + list.add(EnumChatFormatting.ITALIC + "To rectify past imperfections"); } if(this == ModItems.meteorite_sword_hardened) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_hardened.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "Extremely high pressure has been used"); + list.add(EnumChatFormatting.ITALIC + "To harden the blade further"); } if(this == ModItems.meteorite_sword_alloyed) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_alloyed.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "Cobalt fills the fissures"); + list.add(EnumChatFormatting.ITALIC + "Strengthening the sword"); } if(this == ModItems.meteorite_sword_machined) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_machined.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "Advanced machinery was used"); + list.add(EnumChatFormatting.ITALIC + "To refine the blade even more"); } if(this == ModItems.meteorite_sword_treated) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_treated.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "Chemicals have been applied"); + list.add(EnumChatFormatting.ITALIC + "Making the sword more powerful"); } if(this == ModItems.meteorite_sword_etched) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_etched.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "Acids clean the material"); + list.add(EnumChatFormatting.ITALIC + "To make this the perfect sword"); } if(this == ModItems.meteorite_sword_bred) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_bred.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "Immense heat and radiation"); + list.add(EnumChatFormatting.ITALIC + "Compress the material"); } if(this == ModItems.meteorite_sword_irradiated) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_irradiated.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "The power of the Atom"); + list.add(EnumChatFormatting.ITALIC + "Gives the sword might"); } if(this == ModItems.meteorite_sword_fused) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_fused.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "This blade has met"); + list.add(EnumChatFormatting.ITALIC + "With the forces of the stars"); } if(this == ModItems.meteorite_sword_baleful) { - for(String s : I18nUtil.resolveKeyArray("item.meteorite_sword_baleful.desc")) - list.add(EnumChatFormatting.ITALIC + s); + list.add(EnumChatFormatting.ITALIC + "This sword has met temperatures"); + list.add(EnumChatFormatting.ITALIC + "Far beyond what normal material can endure"); } /* diff --git a/src/main/java/com/hbm/items/tool/ItemWand.java b/src/main/java/com/hbm/items/tool/ItemWand.java index d3a532941..9bb6dc6ca 100644 --- a/src/main/java/com/hbm/items/tool/ItemWand.java +++ b/src/main/java/com/hbm/items/tool/ItemWand.java @@ -2,7 +2,6 @@ package com.hbm.items.tool; import java.util.List; -import com.hbm.util.I18nUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -16,20 +15,22 @@ public class ItemWand extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray( "item.wand_k.desc")) - list.add(s); + list.add("Creative-only item"); + list.add("\"Destruction brings creation\""); + list.add("(Set positions with right click,"); + list.add("set block with shift-right click!)"); if(itemstack.stackTagCompound != null && !(itemstack.stackTagCompound.getInteger("x") == 0 && itemstack.stackTagCompound.getInteger("y") == 0 && itemstack.stackTagCompound.getInteger("z") == 0)) { - list.add(I18nUtil.resolveKey("item.wand_k.pos" , itemstack.stackTagCompound.getInteger("x") , itemstack.stackTagCompound.getInteger("y") , itemstack.stackTagCompound.getInteger("z"))); + list.add("Pos: " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z")); } else { - list.add(I18nUtil.resolveKey("item.wand_k.null")); + list.add("Positions not set!"); } if(itemstack.stackTagCompound != null) - list.add(I18nUtil.resolveKey("item.wand_k.block" , Block.getBlockById(itemstack.stackTagCompound.getInteger("block")).getUnlocalizedName())); + list.add("Block saved: " + Block.getBlockById(itemstack.stackTagCompound.getInteger("block")).getUnlocalizedName()); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemWandS.java b/src/main/java/com/hbm/items/tool/ItemWandS.java index f2985ac02..ea7ba07fa 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandS.java +++ b/src/main/java/com/hbm/items/tool/ItemWandS.java @@ -3,7 +3,6 @@ package com.hbm.items.tool; import java.util.List; import java.util.Random; -import com.hbm.util.I18nUtil; import com.hbm.world.machine.FWatz; import com.hbm.world.machine.NuclearReactor; import com.hbm.world.machine.Watz; @@ -20,8 +19,10 @@ public class ItemWandS extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - for(String s : I18nUtil.resolveKeyArray( "item.wand_s.desc")) - list.add(s); + list.add("Creative-only item"); + list.add("\"Instant structures for everyone!\""); + list.add("(Cycle with shift-right click,"); + list.add("spawn structures with right click!)"); if(itemstack.stackTagCompound != null) { switch(itemstack.stackTagCompound.getInteger("building")) diff --git a/src/main/java/com/hbm/items/tool/WeaponSpecial.java b/src/main/java/com/hbm/items/tool/WeaponSpecial.java index ca10cc59a..c59daa016 100644 --- a/src/main/java/com/hbm/items/tool/WeaponSpecial.java +++ b/src/main/java/com/hbm/items/tool/WeaponSpecial.java @@ -12,7 +12,6 @@ import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorUtil; -import com.hbm.util.I18nUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -250,52 +249,58 @@ public class WeaponSpecial extends ItemSword { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.schrabidium_hammer) { - for(String s : I18nUtil.resolveKeyArray("item.schrabidium_hammer.desc")) - list.add(s); + list.add("Even though it says \"+1000000000"); + list.add("damage\", it's actually \"onehit anything\""); } if(this == ModItems.ullapool_caber) { - for(String s : I18nUtil.resolveKeyArray("item.ullapool_caber.desc")) - list.add(s); + list.add("High-yield Scottish face removal."); + list.add("A sober person would throw it..."); } if(this == ModItems.bottle_opener) { - for(String s : I18nUtil.resolveKeyArray("item.bottle_opener.desc")) - list.add(s); + list.add("My very own bottle opener."); + list.add("Use with caution!"); } if(this == ModItems.shimmer_sledge) { if(MainRegistry.polaroidID == 11) { - for(String s : I18nUtil.resolveKeyArray("item.shimmer_sledge.desc.hide")) - list.add(s); + list.add("shimmer no"); + list.add("drop that hammer"); + list.add("you're going to hurt somebody"); + list.add("shimmer no"); + list.add("shimmer pls"); } else { - list.add(I18nUtil.resolveKey("item.shimmer_sledge.desc")); + list.add("Breaks everything, even portals."); } } if(this == ModItems.shimmer_axe) { if(MainRegistry.polaroidID == 11) { - list.add(I18nUtil.resolveKey("item.shimmer_axe.desc.hide")); + list.add("shim's toolbox does an e-x-p-a-n-d"); } else { - list.add(I18nUtil.resolveKey("item.shimmer_axe.desc")); + list.add("Timber!"); } } if(this == ModItems.wrench) { - list.add(I18nUtil.resolveKey("item.wrench.desc")); + list.add("Mechanic Richard"); } if(this == ModItems.wrench_flipped) { - list.add(I18nUtil.resolveKey("item.wrench_flipped.desc")); + list.add("Wrench 2: The Wrenchening"); } if(this == ModItems.memespoon) { - for(String s : I18nUtil.resolveKeyArray("item.memespoon.desc")) - list.add(s); + list.add(EnumChatFormatting.DARK_GRAY + "Level 10 Shovel"); + list.add(EnumChatFormatting.AQUA + "Deals crits while the wielder is rocket jumping"); + list.add(EnumChatFormatting.RED + "20% slower firing speed"); + list.add(EnumChatFormatting.RED + "No random critical hits"); } if(this == ModItems.wood_gavel) { - list.add(I18nUtil.resolveKey("item.wood_gavel.desc")); + list.add("Thunk!"); } if(this == ModItems.lead_gavel) { - list.add(I18nUtil.resolveKey("item.lead_gavel.desc")); + list.add("You are hereby sentenced to lead poisoning."); } if(this == ModItems.diamond_gavel) { - for(String s : I18nUtil.resolveKeyArray("item.diamond_gavel.desc")) - list.add(s); + list.add("The joke! It makes sense now!!"); + list.add(""); + list.add(EnumChatFormatting.BLUE + "Deals as much damage as it needs to."); } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 5ce6be6ab..6b933db58 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -921,7 +921,6 @@ public class MainRegistry { World world = event.getServer().getEntityWorld(); RBMKDials.createDials(world); SiegeOrchestrator.createGameRules(world); - CompatHandler.createCompat(world); event.registerServerCommand(new CommandReloadRecipes()); event.registerServerCommand(new CommandDebugChunkLoad()); event.registerServerCommand(new CommandSatellites()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index dc43341b9..7e3226470 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -717,8 +717,9 @@ public class ModEventHandlerClient { } } else { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + I18nUtil.resolveKey("tooltip.show" , - EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT")); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display protection info"); } } @@ -732,12 +733,13 @@ public class ModEventHandlerClient { if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && !(Minecraft.getMinecraft().currentScreen instanceof GUIArmorTable)) { - list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + I18nUtil.resolveKey("tooltip.armormodsshow" , - EnumChatFormatting.YELLOW +"" + EnumChatFormatting.ITALIC + "LSHIFT" )); + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display installed armor mods"); } else { - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("tooltip.armormods")); + list.add(EnumChatFormatting.YELLOW + "Mods:"); ItemStack[] mods = ArmorModHandler.pryMods(stack); @@ -758,12 +760,12 @@ public class ModEventHandlerClient { List names = ItemStackUtil.getOreDictNames(stack); if(names.size() > 0) { - list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("tooltip.oredict")); + list.add(EnumChatFormatting.BLUE + "Ore Dict:"); for(String s : names) { list.add(EnumChatFormatting.AQUA + " -" + s); } } else { - list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("tooltip.oredict.null")); + list.add(EnumChatFormatting.RED + "No Ore Dict data!"); } } @@ -784,10 +786,10 @@ public class ModEventHandlerClient { list.add(""); if(entry.entry == EnumEntryType.ADD) - list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("tooltip.customnuke",entry.value,entry.type)); + list.add(EnumChatFormatting.GOLD + "Adds " + entry.value + " to the custom nuke stage " + entry.type); if(entry.entry == EnumEntryType.MULT) - list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("tooltip.customnukemultiplier",entry.value ,entry.type)); + list.add(EnumChatFormatting.GOLD + "Adds multiplier " + entry.value + " to the custom nuke stage " + entry.type); } try { diff --git a/src/main/java/com/hbm/packet/BufPacket.java b/src/main/java/com/hbm/packet/BufPacket.java index b2a158ef8..7ff502c9d 100644 --- a/src/main/java/com/hbm/packet/BufPacket.java +++ b/src/main/java/com/hbm/packet/BufPacket.java @@ -28,11 +28,17 @@ public class BufPacket implements IMessage { @Override public void fromBytes(ByteBuf buf) { + this.x = buf.readInt(); + this.y = buf.readInt(); + this.z = buf.readInt(); this.buf = buf; } @Override public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); this.rec.serialize(buf); } diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index d56e9407a..9414d49a0 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -19,10 +19,6 @@ public class PacketDispatcher { wrapper.registerMessage(TEStructurePacket.Handler.class, TEStructurePacket.class, i++, Side.CLIENT); //Mining drill rotation for rendering wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, i++, Side.CLIENT); - //Mining drill torque for sounds - wrapper.registerMessage(TEDrillSoundPacket.Handler.class, TEDrillSoundPacket.class, i++, Side.CLIENT); - //Missile type for rendering - wrapper.registerMessage(TEMissilePacket.Handler.class, TEMissilePacket.class, i++, Side.CLIENT); //Fluid packet for GUI wrapper.registerMessage(TEFluidPacket.Handler.class, TEFluidPacket.class, i++, Side.CLIENT); //Sound packet that keeps client and server separated @@ -35,8 +31,6 @@ public class PacketDispatcher { wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); //Signals server to change ItemStacks wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); - //Siren packet for looped sounds - wrapper.registerMessage(TERadarPacket.Handler.class, TERadarPacket.class, i++, Side.CLIENT); //Signals server to perform orbital strike, among other things wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); //Universal package for sending small info packs back to server diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java deleted file mode 100644 index 805e7c35c..000000000 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ /dev/null @@ -1,342 +0,0 @@ -package com.hbm.tileentity.machine; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.WeaponConfig; -import com.hbm.extprop.HbmLivingProps; -import com.hbm.inventory.container.ContainerMachineRadar; -import com.hbm.inventory.gui.GUIMachineRadar; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityTickingBase; - -import api.hbm.energy.IEnergyUser; -import api.hbm.entity.IRadarDetectable; -import api.hbm.entity.IRadarDetectable.RadarTargetType; -import cpw.mods.fml.common.Optional; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; - -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineRadar extends TileEntityTickingBase implements IEnergyUser, IGUIProvider, SimpleComponent { - - public List detectedEntities = new ArrayList(); - public List nearbyMissiles = new ArrayList(); - int pingTimer = 0; - int lastPower; - final static int maxTimer = 80; - - public boolean scanMissiles = true; - public boolean scanPlayers = true; - public boolean smartMode = true; - public boolean redMode = true; - - public boolean jammed = false; - - public float prevRotation; - public float rotation; - - public long power = 0; - public static final int maxPower = 100000; - - @Override - public String getInventoryName() { - return ""; - } - - @Override - public void updateEntity() { - - if(this.yCoord < WeaponConfig.radarAltitude) return; - - if(!worldObj.isRemote) { - - this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); - - nearbyMissiles.clear(); - - if(power > 0) { - allocateMissiles(); - power -= 500; - - if(power < 0) power = 0; - } - - if(this.lastPower != getRedPower()) worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType()); - - sendMissileData(); - lastPower = getRedPower(); - - if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) != ModBlocks.muffler) { - - pingTimer++; - - if(power > 0 && pingTimer >= maxTimer) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.sonarPing", 5.0F, 1.0F); - pingTimer = 0; - } - } - } else { - prevRotation = rotation; - if(power > 0) rotation += 5F; - - if(rotation >= 360) { - rotation -= 360F; - prevRotation -= 360F; - } - } - } - - public void handleButtonPacket(int value, int meta) { - - switch(meta) { - case 0: this.scanMissiles = !this.scanMissiles; break; - case 1: this.scanPlayers = !this.scanPlayers; break; - case 2: this.smartMode = !this.smartMode; break; - case 3: this.redMode = !this.redMode; break; - } - } - - private void allocateMissiles() { - - nearbyMissiles.clear(); - detectedEntities.clear(); - jammed = false; - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - WeaponConfig.radarRange, 0, zCoord + 0.5 - WeaponConfig.radarRange, xCoord + 0.5 + WeaponConfig.radarRange, 5000, zCoord + 0.5 + WeaponConfig.radarRange)); - - for(Entity e : list) { - - if(e.posY < yCoord + WeaponConfig.radarBuffer) - continue; - - if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { - this.jammed = true; - nearbyMissiles.clear(); - detectedEntities.clear(); - return; - } - - if(e instanceof EntityPlayer && this.scanPlayers) { - nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, RadarTargetType.PLAYER.ordinal(), (int)e.posY }); - detectedEntities.add(e); - } - - if(e instanceof IRadarDetectable && this.scanMissiles) { - nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, ((IRadarDetectable)e).getTargetType().ordinal(), (int)e.posY }); - - if(!this.smartMode || e.motionY <= 0) - detectedEntities.add(e); - } - } - } - - public int getRedPower() { - - if(!detectedEntities.isEmpty()) { - - /// PROXIMITY /// - if(redMode) { - - double maxRange = WeaponConfig.radarRange * Math.sqrt(2D); - - int power = 0; - - for(int i = 0; i < detectedEntities.size(); i++) { - - Entity e = detectedEntities.get(i); - double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2)); - int p = 15 - (int)Math.floor(dist / maxRange * 15); - - if(p > power) - power = p; - } - - return power; - - /// TIER /// - } else { - - int power = 0; - - for(int i = 0; i < nearbyMissiles.size(); i++) { - - if(nearbyMissiles.get(i)[2] + 1 > power) { - power = nearbyMissiles.get(i)[2] + 1; - } - } - - return power; - } - } - - return 0; - } - - private void sendMissileData() { - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setBoolean("scanMissiles", scanMissiles); - data.setBoolean("scanPlayers", scanPlayers); - data.setBoolean("smartMode", smartMode); - data.setBoolean("redMode", redMode); - data.setBoolean("jammed", jammed); - data.setInteger("count", this.nearbyMissiles.size()); - - for(int i = 0; i < this.nearbyMissiles.size(); i++) { - data.setInteger("x" + i, this.nearbyMissiles.get(i)[0]); - data.setInteger("z" + i, this.nearbyMissiles.get(i)[1]); - data.setInteger("type" + i, this.nearbyMissiles.get(i)[2]); - data.setInteger("y" + i, this.nearbyMissiles.get(i)[3]); - } - - this.networkPack(data, 15); - } - - public void networkUnpack(NBTTagCompound data) { - - this.nearbyMissiles.clear(); - this.power = data.getLong("power"); - this.scanMissiles = data.getBoolean("scanMissiles"); - this.scanPlayers = data.getBoolean("scanPlayers"); - this.smartMode = data.getBoolean("smartMode"); - this.redMode = data.getBoolean("redMode"); - this.jammed = data.getBoolean("jammed"); - - int count = data.getInteger("count"); - - for(int i = 0; i < count; i++) { - - int x = data.getInteger("x" + i); - int z = data.getInteger("z" + i); - int type = data.getInteger("type" + i); - int y = data.getInteger("y" + i); - - this.nearbyMissiles.add(new int[] {x, z, type, y}); - } - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - @Override - public void setPower(long i) { - power = i; - } - - @Override - public long getPower() { - return power; - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.power = nbt.getLong("power"); - this.scanMissiles = nbt.getBoolean("scanMissiles"); - this.scanPlayers = nbt.getBoolean("scanPlayers"); - this.smartMode = nbt.getBoolean("smartMode"); - this.redMode = nbt.getBoolean("redMode"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("power", power); - nbt.setBoolean("scanMissiles", scanMissiles); - nbt.setBoolean("scanPlayers", scanPlayers); - nbt.setBoolean("smartMode", smartMode); - nbt.setBoolean("redMode", redMode); - } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } - - // do some opencomputer stuff - - @Override - public String getComponentName() { - return "ntm_radar"; - } - - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] getEnergyInfo(Context context, Arguments args) { - return new Object[] {getPower(), getMaxPower()}; - } - - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] isJammed(Context context, Arguments args) { - return new Object[] {jammed}; - } - - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] getEntities(Context context, Arguments args) { //fuck fuck fuck - if(!jammed) { - List list = new ArrayList(); - list.add(detectedEntities.size()); // small header of how many entities in the list - for (Entity e : detectedEntities) { - list.add(e.posX); // positions - list.add(e.posY); - list.add(e.posZ); - list.add(e.motionX); - list.add(e.motionY); - list.add(e.motionZ); - list.add(e.rotationYaw); // just do rotation so you can calculate DOT - list.add(Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2))); // distance - boolean player = e instanceof EntityPlayer; - list.add(player); // isPlayer boolean - if(!player) // missile tier - list.add(((IRadarDetectable) e).getTargetType().ordinal()); - else // player name (hopefully) - list.add(((EntityPlayer) e).getDisplayName()); - } - return new Object[] {list}; // long-ass list (like 9 entries per entity) - } else { - return new Object[] {"Radar jammed!"}; - } - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerMachineRadar(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineRadar(player.inventory, this); - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index d5911b2a2..9e9061ff1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -7,27 +7,45 @@ import java.util.function.Function; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; +import com.hbm.config.WeaponConfig; import com.hbm.extprop.HbmLivingProps; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerMachineRadarNT; import com.hbm.inventory.gui.GUIMachineRadarNT; +import com.hbm.inventory.gui.GUIMachineRadarNTSlots; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemCoordinateBase; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IRadarCommandReceiver; import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.util.Tuple.Pair; +import com.hbm.util.Tuple.Triplet; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.world.WorldUtil; +import api.hbm.energy.IEnergyUser; import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; +import api.hbm.entity.IRadarDetectableNT.RadarScanParams; import api.hbm.entity.RadarEntry; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.WorldServer; @@ -35,7 +53,7 @@ import net.minecraft.world.WorldServer; * Now with SmЯtâ„¢ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine { +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IConfigurableMachine, IControlReceiver { public boolean scanMissiles = true; public boolean scanShells = true; @@ -50,12 +68,21 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public float rotation; public long power = 0; + + protected int pingTimer = 0; + protected int lastPower; + protected final static int maxTimer = 80; public static int maxPower = 100_000; public static int consumption = 500; public static int radarRange = 1_000; public static int radarBuffer = 30; public static int radarAltitude = 55; + public static int chunkLoadCap = 10; + public static boolean generateChunks = false; + + public byte[] map = new byte[40_000]; + public boolean clearFlag = false; public List entries = new ArrayList(); @@ -71,6 +98,8 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I radarRange = IConfigurableMachine.grab(obj, "I:radarRange", radarRange); radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer); radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude); + chunkLoadCap = IConfigurableMachine.grab(obj, "I:chunkLoadCap", chunkLoadCap); + generateChunks = IConfigurableMachine.grab(obj, "B:generateChunks", generateChunks); } @Override @@ -80,65 +109,108 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I writer.name("I:radarRange").value(radarRange); writer.name("I:radarBuffer").value(radarBuffer); writer.name("I:radarAltitude").value(radarAltitude); + writer.name("B:generateChunks").value(generateChunks); } public TileEntityMachineRadarNT() { - super(1); + super(10); } @Override public String getName() { - return ""; + return "container.radar"; } @Override public void updateEntity() { + if(this.map == null || this.map.length != 40_000) this.map = new byte[40_000]; + if(!worldObj.isRemote) { + this.power = Library.chargeTEFromItems(slots, 9, power, maxPower); + + if(worldObj.getTotalWorldTime() % 20 == 0) this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); this.jammed = false; allocateTargets(); - this.networkPackNT(25); - } - } - - protected void allocateTargets() { - this.entries.clear(); - - if(this.yCoord < radarAltitude) return; - if(this.power <= consumption) return; - this.power -= consumption; - - int scan = this.scanRange(); - - for(Entity e : matchingEntities) { + if(this.lastPower != getRedPower()) { + this.markDirty(); + } + lastPower = getRedPower(); - if(e.dimension == worldObj.provider.dimensionId && Math.abs(e.posX - (xCoord + 0.5)) <= scan && Math.abs(e.posZ - (zCoord + 0.5)) <= scan && e.posY - yCoord < radarBuffer) { + if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) != ModBlocks.muffler) { - if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { - this.jammed = true; - entries.clear(); - return; + pingTimer++; + + if(power > 0 && pingTimer >= maxTimer) { + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.sonarPing", 5.0F, 1.0F); + pingTimer = 0; } - - for(Function, RadarEntry> converter : converters) { + } + + if(this.showMap) { + int chunkLoads = 0; + for(int i = 0; i < 100; i++) { + int index = (int) (worldObj.getTotalWorldTime() % 400) * 100 + i; + int iX = (index % 200) * radarRange * 2 / 200; + int iZ = index / 200 * radarRange * 2 / 200; - RadarEntry entry = converter.apply(new Pair(e, this)); - if(entry != null) { - this.entries.add(entry); - break; + int x = xCoord - radarRange + iX; + int z = zCoord - radarRange + iZ; + + if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) { + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); + } else { + if(this.map[index] == 0 && chunkLoads < chunkLoadCap) { + if(this.generateChunks) { + worldObj.getChunkFromChunkCoords(x >> 4, z >> 4); + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); + chunkLoads++; + } else { + WorldUtil.provideChunk((WorldServer) worldObj, x >> 4, z >> 4); + this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); + if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) chunkLoads++; + } + } } } } + + if(slots[8] != null && slots[8].getItem() == ModItems.radar_linker) { + BlockPos pos = ItemCoordinateBase.getPosition(slots[8]); + if(pos != null) { + TileEntity tile = worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + if(tile instanceof TileEntityMachineRadarScreen) { + TileEntityMachineRadarScreen screen = (TileEntityMachineRadarScreen) tile; + screen.entries.clear(); + screen.entries.addAll(this.entries); + screen.refX = xCoord; + screen.refY = yCoord; + screen.refZ = zCoord; + screen.linked = true; + } + } + } + + this.networkPackNT(50); + if(this.clearFlag) { + this.map = new byte[40_000]; + this.clearFlag = false; + } + } else { + prevRotation = rotation; + if(power > 0) rotation += 5F; + + if(rotation >= 360) { + rotation -= 360F; + prevRotation -= 360F; + } } } - protected int scanRange() { - return radarRange; - } - @Override public void serialize(ByteBuf buf) { buf.writeLong(this.power); @@ -151,6 +223,21 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I buf.writeBoolean(this.jammed); buf.writeInt(entries.size()); for(RadarEntry entry : entries) entry.toBytes(buf); + if(this.clearFlag) { + buf.writeBoolean(true); + } else { + buf.writeBoolean(false); + if(this.showMap) { + buf.writeBoolean(true); + short index = (short) (worldObj.getTotalWorldTime() % 400); + buf.writeShort(index); + for(int i = index * 100; i < (index + 1) * 100; i++) { + buf.writeByte(this.map[i]); + } + } else { + buf.writeBoolean(false); + } + } } @Override @@ -164,11 +251,193 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I this.showMap = buf.readBoolean(); this.jammed = buf.readBoolean(); int count = buf.readInt(); + this.entries.clear(); for(int i = 0; i < count; i++) { RadarEntry entry = new RadarEntry(); entry.fromBytes(buf); this.entries.add(entry); } + if(buf.readBoolean()) { // clear flag + this.map = new byte[40_000]; + } else { + if(buf.readBoolean()) { // map enabled + int index = buf.readShort(); + for(int i = index * 100; i < (index + 1) * 100; i++) { + this.map[i] = buf.readByte(); + } + } + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.scanMissiles = nbt.getBoolean("scanMissiles"); + this.scanShells = nbt.getBoolean("scanShells"); + this.scanPlayers = nbt.getBoolean("scanPlayers"); + this.smartMode = nbt.getBoolean("smartMode"); + this.redMode = nbt.getBoolean("redMode"); + this.showMap = nbt.getBoolean("showMap"); + if(nbt.hasKey("map")) this.map = nbt.getByteArray("map"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setBoolean("scanMissiles", scanMissiles); + nbt.setBoolean("scanShells", scanShells); + nbt.setBoolean("scanPlayers", scanPlayers); + nbt.setBoolean("smartMode", smartMode); + nbt.setBoolean("redMode", redMode); + nbt.setBoolean("showMap", showMap); + nbt.setByteArray("map", map); + } + + protected void allocateTargets() { + this.entries.clear(); + + if(this.yCoord < radarAltitude) return; + if(this.power < consumption) return; + this.power -= consumption; + + int scan = this.scanRange(); + + RadarScanParams params = new RadarScanParams(this.scanMissiles, this.scanShells, this.scanPlayers, this.smartMode); + + for(Entity e : matchingEntities) { + + if(e.dimension == worldObj.provider.dimensionId && Math.abs(e.posX - (xCoord + 0.5)) <= scan && Math.abs(e.posZ - (zCoord + 0.5)) <= scan && e.posY - yCoord > radarBuffer) { + + if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { + this.jammed = true; + entries.clear(); + return; + } + + for(Function, RadarEntry> converter : converters) { + + RadarEntry entry = converter.apply(new Triplet(e, this, params)); + if(entry != null) { + this.entries.add(entry); + break; + } + } + } + } + } + + public int getRedPower() { + + if(!entries.isEmpty()) { + + /// PROXIMITY /// + if(redMode) { + + double maxRange = WeaponConfig.radarRange * Math.sqrt(2D); + int power = 0; + + for(int i = 0; i < entries.size(); i++) { + RadarEntry e = entries.get(i); + if(!e.redstone) continue; + double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2)); + int p = 15 - (int)Math.floor(dist / maxRange * 15); + + if(p > power) power = p; + } + + return power; + + /// TIER /// + } else { + + int power = 0; + + for(int i = 0; i < entries.size(); i++) { + RadarEntry e = entries.get(i); + if(!e.redstone) continue; + if(e.blipLevel + 1 > power) { + power = e.blipLevel + 1; + } + } + + return power; + } + } + + return 0; + } + + protected int scanRange() { + return radarRange; + } + + @Override + public void setPower(long i) { + power = i; + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override public void receiveControl(NBTTagCompound data) { } + + @Override + public void receiveControl(EntityPlayer player, NBTTagCompound data) { + + if(data.hasKey("missiles")) this.scanMissiles = !this.scanMissiles; + if(data.hasKey("shells")) this.scanShells = !this.scanShells; + if(data.hasKey("players")) this.scanPlayers = !this.scanPlayers; + if(data.hasKey("smart")) this.smartMode = !this.smartMode; + if(data.hasKey("red")) this.redMode = !this.redMode; + if(data.hasKey("map")) this.showMap = !this.showMap; + if(data.hasKey("clear")) this.clearFlag = true; + + if(data.hasKey("gui1")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord); + + if(data.hasKey("link")) { + int id = data.getInteger("link"); + ItemStack link = slots[id]; + + if(link != null && link.getItem() == ModItems.radar_linker) { + BlockPos pos = ItemCoordinateBase.getPosition(link); + + if(pos != null) { + TileEntity tile = worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + if(tile instanceof IRadarCommandReceiver) { + IRadarCommandReceiver rec = (IRadarCommandReceiver) tile; + + if(data.hasKey("launchEntity")) { + Entity entity = worldObj.getEntityByID(data.getInteger("launchEntity")); + if(entity != null) { + if(rec.sendCommandEntity(entity)) { + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + } + } + } else if(data.hasKey("launchPosX")) { + int x = data.getInteger("launchPosX"); + int z = data.getInteger("launchPosZ"); + if(rec.sendCommandPosition(x, yCoord, z)) { + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + } + } + } + } + } + } } AxisAlignedBB bb = null; @@ -192,22 +461,36 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistance(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; + } + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(ID == 1) return new ContainerMachineRadarNT(player.inventory, this); + return null; + } @Override @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIMachineRadarNT(this); + if(ID == 0) return new GUIMachineRadarNT(this); + if(ID == 1) return new GUIMachineRadarNTSlots(player.inventory, this); + return null; } /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry The converters coming first have the highest priority */ - public static List, RadarEntry>> converters = new ArrayList(); + public static List, RadarEntry>> converters = new ArrayList(); public static List classes = new ArrayList(); public static List matchingEntities = new ArrayList(); @@ -218,7 +501,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public static void updateSystem() { matchingEntities.clear(); - for(WorldServer world : Minecraft.getMinecraft().getIntegratedServer().worldServers) { + for(WorldServer world : MinecraftServer.getServer().worldServers) { for(Object entity : world.loadedEntityList) { for(Class clazz : classes) { if(clazz.isAssignableFrom(entity.getClass())) { @@ -241,21 +524,25 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public static void registerConverters() { //IRadarDetectableNT converters.add(x -> { - Entity e = x.getKey(); + Entity e = x.getX(); if(e instanceof IRadarDetectableNT) { IRadarDetectableNT detectable = (IRadarDetectableNT) e; - if(detectable.canBeSeenBy(x.getValue())) return new RadarEntry(detectable, e); + if(detectable.canBeSeenBy(x.getY()) && detectable.paramsApplicable(x.getZ())) return new RadarEntry(detectable, e, detectable.suppliesRedstone(x.getZ())); } return null; }); //IRadarDetectable, Legacy converters.add(x -> { - if(x.getKey() instanceof IRadarDetectable) return new RadarEntry((IRadarDetectable) x.getKey(), x.getKey()); + Entity e = x.getX(); + RadarScanParams params = x.getZ(); + if(e instanceof IRadarDetectable && params.scanMissiles) { + return new RadarEntry((IRadarDetectable) e, e); + } return null; }); //Players converters.add(x -> { - if(x.getKey() instanceof EntityPlayer) return new RadarEntry((EntityPlayer) x.getKey()); + if(x.getX() instanceof EntityPlayer && x.getZ().scanPlayers) return new RadarEntry((EntityPlayer) x.getX()); return null; }); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java index 1a44314c0..3a8cec7ca 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java @@ -2,7 +2,6 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.ReactorResearch; -import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMachineReactorBreeding; import com.hbm.inventory.gui.GUIMachineReactorBreeding; import com.hbm.inventory.recipes.BreederRecipes; @@ -16,7 +15,7 @@ import cpw.mods.fml.relauncher.SideOnly; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SidedComponent; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -28,8 +27,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SidedComponent", modid = "OpenComputers")}) -public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SidedComponent, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SimpleComponent, IGUIProvider { public int flux; public float progress; @@ -217,16 +216,11 @@ public class TileEntityMachineReactorBreeding extends TileEntityMachineBase impl } // do some opencomputer stuff - + @Override public String getComponentName() { return "breeding_reactor"; } - @Override - public boolean canConnectNode(ForgeDirection side) { - return (CompatHandler.canConnect(worldObj, side, this)); - } - @Callback @Optional.Method(modid = "OpenComputers") public Object[] getFlux(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/util/function/Function.java b/src/main/java/com/hbm/util/function/Function.java index 0e82a7f07..9dd32272c 100644 --- a/src/main/java/com/hbm/util/function/Function.java +++ b/src/main/java/com/hbm/util/function/Function.java @@ -4,7 +4,6 @@ import java.util.Locale; import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import net.minecraft.util.EnumChatFormatting; /** @@ -51,21 +50,21 @@ public abstract class Function { public FunctionLogarithmic(double level) { super(level); this.withOff(1D); } @Override public double effonix(double x) { return Math.log10(getX(x)) * level; } @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format(Locale.US, "%,.1f", this.level); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[1]; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; } } public static class FunctionPassive extends FunctionSingleArg { public FunctionPassive(double level) { super(level); } @Override public double effonix(double x) { return this.level; } @Override public String getLabelForFuel() { return "" + String.format(Locale.US, "%,.1f", this.level); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[0]; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; } } public static class FunctionSqrt extends FunctionSingleArg { public FunctionSqrt(double level) { super(level); } @Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; } @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format(Locale.US, "%,.3f", this.level); } //not entirely correct but good enough - @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[5]; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; } } public static class FunctionSqrtFalling extends FunctionSqrt { @@ -79,7 +78,7 @@ public abstract class Function { public FunctionLinear(double level) { super(level); } @Override public double effonix(double x) { return getX(x) * this.level; } @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format(Locale.US, "%,.1f", this.level); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[6]; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; } } public static class FunctionQuadratic extends FunctionDoubleArg { @@ -87,6 +86,6 @@ public abstract class Function { public FunctionQuadratic(double level, double vOff) { super(level, vOff); } @Override public double effonix(double x) { return getX(x) * getX(x) * this.level + this.vOff; } @Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format(Locale.US, "%,.1f", this.level) + (vOff != 0 ? (" + " + String.format(Locale.US, "%,.1f", vOff)) : ""); } - @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + I18nUtil.resolveKeyArray("trait.rbmk.BurnFunc")[7]; } + @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"; } } } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 9da4ffbd0..696ebe517 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -131,7 +131,6 @@ achievement.ZIRNOXBoom=CIRNOX armor.blastProtection=Damage modifier of %s against explosions armor.cap=Hard damage cap of %s -armor.charge=Charge: %s / %s armor.damageModifier=Damage modifier of %s against %s armor.dash=Grants %s dashes armor.electricJetpack=Ion Jetpack @@ -165,42 +164,6 @@ armorMod.chestplates=Chestplates armorMod.helmets=Helmets armorMod.insertHere=Insert armor to modify... armorMod.leggings=Leggings -armorMod.slot=Slot: -armorMod.mod.auto=Imported from Japsterdam. -armorMod.mod.bandaid=3%% chance for full heal when damaged$ (3%% chance for full heal) -armorMod.mod.bathwater=Inflicts poison on the attacker$ (Poisons attackers) -armorMod.mod.charm=You feel blessed. -armorMod.mod.charm.protection=Diverts meteors away from the player.$Meteors no longer destroy blocks.$Halves broadcaster damage -armorMod.mod.charm.meteor=Disables meteorite spawning.$Negates broadcaster damage -armorMod.mod.cladding= rad-resistance$ radiation resistence) -armorMod.mod.defuser=Defuses nearby creepers$ (Defuses creepers) -armorMod.mod.gasmask=Gas protection$Will never protect against:$ (gas protection) -armorMod.mod.health= health$Nostalgia -armorMod.mod.Ink=10%% chance to nullify damage$Flowers!$ (10%% chance to nullify damage) -armorMod.mod.Insert=%% damage$%% projectile damage$%% explosion damage$%% speed$HP -armorMod.mod.Iron=+0.5 knockback resistance$ (+0.5 knockback resistence) -armorMod.mod.Knife=Pain.$ $Hurts, doesn't it? -armorMod.mod.Lens=Satellite Frequency: $ (Freq: %%d) -armorMod.mod.Lodestone=Attracts nearby items$Item attraction range: %%d$ (Magnetic range: %%d) -armorMod.mod.Milk=Removes bad potion effects$ (Removes bad potion effects) -armorMod.mod.MorningGlory=5%% chance to apply resistance when hit, wither immunity$ (5%% for resistance, wither immunity) -armorMod.mod.Obsidian=Makes dropped armor indestructible$ (Item indestructible) -armorMod.mod.Pads=%% fall damage$Passively charges electric armor when walking$%% fall dmg / passive charge) -armorMod.mod.Polish=5%% chance to nullify damage$ (5%% chance to nullify damage) -armorMod.mod.Quartz=Taking damage removes 10 RAD$ (-10 RAD when hit) -armorMod.mod.Revive= revives left -armorMod.mod.Revive.scrumpy=But how did you survive?$I was drunk. -armorMod.mod.Revive.wild_p=§8Explosive §cReactive "§8Plot §cArmor -armorMod.mod.Revive.fabsols_vodka=In the news:$§c§lMan literally too angry to die.$ $§o"I ain't got time to die" says local$man after ripping the physical manifestation$of disaster itself in half. -armorMod.mod.Sensor=Beeps near hazardous gasses$Works in the inventory or when applied to armor$ (Detects gasses) -armorMod.mod.Serum=Cures poison and gives strength$ (replaces poison with strength) -armorMod.mod.Servos=Chestplate: Haste I / Damage +50%%$Leggings: Speed +25%% / Jump II$ (Haste I / Damage +50%%)$ (Speed +25%% / Jump II) -armorMod.mod.Servos.desh=Chestplate: Haste III / Damage +150%%$Leggings: Speed +50%% / Jump III$ (Haste III / Damage +150%%)$ (Speed +50%% / Jump III) -armorMod.mod.Shackles=You will speak when I ask you to.$You will eat when I tell you to.$You will die when I allow you to.$∞ revives left$ (∞ revives left) -armorMod.mod.Tesla=Zaps nearby entities (requires full electric set)$ (zaps nearby entities) -armorMod.mod.TwoKick="I've had worse"$ (Shotgun punches) -armorMod.mod.V1=BLOOD IS FUEL$ (BLOOD IS FUEL) -armorMod.mod.WD40=Highly reduces damage taken by armor, +2 HP$ (-80%% armor wear / +2 HP) armorMod.type.boots=Boots armorMod.type.chestplate=Chestplate armorMod.type.cladding=Cladding @@ -903,7 +866,6 @@ death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. death.attack.teleporter=%1$s was teleported into nothingness. -desc.block.blastinfo=Blast Resistance: %s desc.gui.assembler.warning=§cError:§r This machine requires an assembly template! desc.gui.chemplant.warning=§cError:§r This machine requires an chemistry template! desc.gui.gasCent.enrichment=§2Enrichment§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. @@ -1018,7 +980,6 @@ desc.item.battery.charge=Charge: %s / %sHE desc.item.battery.chargePerc=Charge: %s%% desc.item.battery.chargeRate=Charge rate: %sHE/tick desc.item.battery.dischargeRate=Discharge rate: %sHE/tick -desc.item.detonator=Position set!$No position set! desc.item.durability=Durability: %s desc.item.grenade.fuse=Fuse: %s desc.item.grenade.fuseImpact=Impact @@ -1061,20 +1022,6 @@ desc.misc.noPos=No position set! desc.misc.pos=Set pos to: %s, %s, %s desc.misc.posSet=Position set! desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum -desc.item.upgrade.machine=Mining Drill:§r$Laser Miner:$Electric Furnace:§r$Assembly Machine:§r$Chemical Plant:§r$Oil Wells:§r$Crystallizer:§r$Cyclotron:§r$Flare Stack:§r$Maxwell:§r$Turbofan:§r$Forcefield Range Upgrade§r$Forcefield Health Upgrade§r$Mining Laser Upgrade§r$Gas Centrifuge Upgrade§r$ -desc.item.upgrade.speed=Delay -%s%% / Consumption +%sHE/t$Delay ÷%s / Consumption +%sHE/t$Delay -%s%% / Consumption +%s%%$Speed x%s$Damage +%sdmg/t -desc.item.upgrade.effect=Radius +%sm / Consumption +%sHE/t$+%s%% chance of not consuming an item / Acid consumption +%smB$-%s%% chance of incrementing overheat counter$+%s%% power production$Range +%sm -desc.item.upgrade.power=Consumption -%sHE/t / Delay +%s%%$Consumption -%s%% / Delay +%s%%$Consumption -%skHE/t$Consumption -%sHE/t$Consumption when firing -%sHE/t -desc.item.upgrade.fortune=Fortune +%s / Delay +%s -desc.item.upgrade.afterburn=Production x%s / Consumption x%s$Afterburn +%ss$Burn %smB of gas for %sHE/t -desc.item.upgrade.forcefield=Radius +16 / Consumption +500$Max. Health +50 / Consumption +250$Stacks to 16 -desc.item.upgrade.smelter=Smelts blocks. Easy enough. -desc.item.upgrade.shredder=Crunches ores -desc.item.upgrade.centrifuge=Hopefully self-explanatory -desc.item.upgrade.crystallizer=Your new best friend -desc.item.upgrade.screm=It's like in Super Mario where all blocks are$actually Toads, but here it's Half-Life scientists$and they scream. A lot. -desc.item.upgrade.nullifier=50%% chance to override worthless items with /dev/zero$50%% chance to move worthless items to /dev/null -desc.item.upgrade.gc_speed=Allows for total isotopic separation of HEUF6$§ealso your centrifuge goes sicko mode desc.item.zirnoxBreedingRod=§2[ZIRNOX Breeding Rod]$§ePlace next to fuel rods to breed$§eLasts %d ticks desc.item.zirnoxRod=§a[ZIRNOX Fuel Rod]$§eGenerates %1$d heat per tick$§eLasts %2$d ticks @@ -1457,26 +1404,6 @@ hbmfluid.woodoil=Wood Oil hbmfluid.xenon=Xenon Gas hbmfluid.xpjuice=Experience Juice hbmfluid.xylene=BTX - -hbmfluid.Trait.Combustible=[Combustible]$Provides §c%sHE §6per bucket$Fuel grade: §c%s -hbmfluid.Trait.Combustible.FuelGrade=Low$Medium$High$Aviation$Gaseous -hbmfluid.Trait.Coolable=Thermal capacity: %s TU$Efficiency: %s%% -hbmfluid.Trait.Corrosive=[Strongly Corrosive]$[Corrosive] -hbmfluid.Trait.Flammable=[Flammable]$Provides §c%sTU §eper bucket -hbmfluid.Trait.Poison=[Toxic Fumes] -hbmfluid.Trait.PWRModerator=[PWR Flux Multiplier]$"Core flux %s%s%% -hbmfluid.Trait.Toxin=[Toxin] -hbmfluid.Trait.VentRadiation=[Radioactive] -hbmfluid.TraitSimple.Amat=[Antimatter] -hbmfluid.TraitSimple.Delicious=[Delicious] -hbmfluid.TraitSimple.Gaseous=[Gaseous] -hbmfluid.TraitSimple.Gaseous_ART=[Gaseous at Room Temperature] -hbmfluid.TraitSimple.LeadContainer=[Requires hazardous material tank to hold] -hbmfluid.TraitSimple.Leaded=[Leaded Fuel] -hbmfluid.TraitSimple.Liquid=[Liquid] -hbmfluid.TraitSimple.Plasma=[Plasma] -hbmfluid.TraitSimple.Viscous=[Viscous] - hbmpseudofluid.none=Empty hbmpseudofluid.heuf6=Highly Enriched UF6 hbmpseudofluid.meuf6=Medium Enriched UF6 @@ -1825,14 +1752,9 @@ item.ams_catalyst_strontium.name=Strontium Reaction Catalyst item.ams_catalyst_thorium.name=Thorium Reaction Catalyst item.ams_catalyst_tungsten.name=Tungsten Reaction Catalyst item.ams_core_eyeofharmony.name=Eye of Harmony (AMS/DFC Core) -item.ams_core_eyeofharmony.desc=A star collapsing in on itself, mere nanoseconds$away from being turned into a black hole,$frozen in time. If I didn't know better I$would say this is some deep space magic$bullcrap some guy made up to sound intellectual.$Probably Steve from accounting. You still owe me$ten bucks. item.ams_core_sing.name=Vibrant Singularity (AMS/DFC Core) -item.ams_core_sing.desc=A modified undefined state of spacetime$used to aid in inter-gluon fusion and$spacetime annihilation. Yes, this destroys$the universe itself, slowly but steadily,$but at least you can power your toaster with$this, so it's all good. item.ams_core_thingy.name=Thingy (AMS/DFC Core) -item.ams_core_thingy.desc=...$"...$...am I even holding this right?$It's a small metal thing. I dunno where it's from$or what it does, maybe they found it on a$junkyard and sold it as some kind of antique$artifact. If it weren't for the fact that I can$actually stuff this into some great big laser$reactor thing, I'd probably bring it back to where$it belongs. In the trash. -item.ams_core_thingy_hide.desc=Yeah I'm not even gonna question that one. item.ams_core_wormhole.name=Tiny Wormhole (AMS/DFC Core) -item.ams_core_wormhole.desc=A cloud of billions of nano-wormholes which$deliberately fail at tunneling matter from$another dimension, rather it converts all$that matter into pure energy. That means$you're actively contributing to the destruction$of another dimension, sucking it dry like a$juicebox.$That dimension probably sucked, anyways. I$bet it was full of wasps or some crap, man,$I hate these things. item.ams_focus_blank.name=Blank Stabilizer Focus item.ams_focus_booster.name=Boosting Stabilizer Focus item.ams_focus_booster.desc=Weaker restriction field and core energy injection:$More heat generation, extra energy. @@ -2044,7 +1966,6 @@ item.bottle_empty.name=Empty Bomb-Shaped Bottle item.bottle_mercury.name=Bottle of Mercury item.bottle_nuka.name=Bottle of Nuka Cola item.bottle_opener.name=Hbm's Own Self-Made Bottle Opener -item.bottle_opener.desc=My very own bottle opener.$Use with caution! item.bottle_quantum.name=Bottle of Nuka Cola Quantum item.bottle_rad.name=Bottle of S~Cola RAD item.bottle_sparkle.name=Bottle of S~Cola @@ -2199,7 +2120,6 @@ item.centrifuge_tower.name=Centrifuge Tower item.chainsaw.name=Chainsaw item.cheese.name=Cheese item.cheese_quesadilla.name=Cheese Quesadilla -item.cheese_quesadilla.desc=That's what a 50 year old yeast infection does to you. item.chemical_dye.black.name=Chemical Dye (Black) item.chemical_dye.blue.name=Chemical Dye (Blue) item.chemical_dye.brown.name=Chemical Dye (Brown) @@ -2442,7 +2362,6 @@ item.debris_graphite.name=Hot Graphite Chunk item.debris_metal.name=Broken Metal Bar item.debris_shrapnel.name=Walkway Shrapnel item.definitelyfood.name=TotallyNotDirt-Brand MRE -item.definitelyfood.desc=A'right, I got sick and tired of$having to go out, kill things just$to get food and not die, so here is $my absolutely genius solution:$ $Have some edible dirt. item.defuser.name=High-Tech Bomb Defusing Device item.defuser_gold.name=Golden Wire Cutter item.demon_core_closed.name=Closed Demon Core @@ -2457,15 +2376,12 @@ item.designator_arty_range.name=Long Range Artillery Remote item.designator_manual.name=Manual Target Designator item.designator_range.name=Long Range Target Designator item.detonator.name=Detonator -item.detonator.desc=Shift right-click to set position,$right-click to detonate! -item.detonator.pos.desc=No position set!$Linked to %s, %s, %s item.detonator_de.name=Dead Man's Explosive item.detonator_deadman.name=Dead Man's Detonator item.detonator_laser.name=Laser Detonator item.detonator_multi.name=Multi Detonator item.deuterium_filter.name=Deuterium Filter item.diamond_gavel.name=Diamond Gavel -item.diamond_gavel.desc=The joke! It makes sense now!!$ $§9Deals as much damage as it needs to. item.dieselsuit_boots.name=Diesel-Powered High Heels item.dieselsuit_helmet.name=Diesel-Powered Head-Mounted Environmental Sensor item.dieselsuit_legs.name=Diesel-Powered Leg Servos @@ -2649,8 +2565,6 @@ item.gem_volcanic.name=Volcanic Gem item.generator_front.name=Generator Front item.generator_steel.name=Generator Body item.glitch.name=Glitch -item.glitch.desc=It's a gamble!$Click-click-click!$Creek!$Bzzzt!$TS staring off into space.$BANG!!$Woop!$Poow!$Pft!$GF fgnevat bss vagb fcnpr.$Backup memory #8 on 1.44 million bytes.$PTANG!$Bzzt-zrrt!$Clang, click-brrthththrtrtrtrtrtr!$KABLAM!$PLENG!$Wheeeeeeee-$Thump.$BANG! Choo-chooo! B A N G ! ! ! -item.glitch.message=Sorry nothing.$Prometheus was punished by the gods by giving the gift of knowledge to man. He was cast into the bowels of the earth and pecked by birds.$Oh, and by the way: The polaroid shifts reality. Things can be different if the polaroid is broken.$Have some free stuff. You'll need it for that one cryptic achievement.$v yvxr lbhe nggvghqr!$89%% of magic tricks are not magic. Technically, they are sorcery.$Here ya go.$Ë$Good day, I am text$73616d706c652074657874!$Budget cuts, no effect for you.$oof$Tank!$More devastating than a falling boxcar!$Ha!$Watch your head!$Bam!$t's dangerous to go alone, take this! item.glowing_stew.name=Glowing Mushroom Stew item.glyphid_meat.name=Glyphid Meat item.glyphid_meat_grilled.name=Grilled Glyphid Meat @@ -2964,7 +2878,6 @@ item.ingot_schrabidium_fuel.name=Ingot of Schrabidium Fuel item.ingot_schraranium.name=Schraranium Ingot item.ingot_schraranium.desc=Made from uranium in a schrabidium transmutator item.ingot_semtex.name=Bar of Semtex -item.ingot_semtex.desc=Semtex H Plastic Explosive$Performant explosive for many applications.$Edible item.ingot_smore.name=S'more Ingot item.ingot_solinium.name=Solinium Ingot item.ingot_sr90.name=Strontium-90 Ingot @@ -3010,16 +2923,11 @@ item.iv_xp.name=Experience Bag item.iv_xp_empty.name=Empty Experience Bag item.jackt.name=Damn Stylish Ballistic Jacket item.jackt2.name=Damn Stylish Ballistic Jacket 2: Tokyo Drift -item.jetpack.desc=Can be worn on its own! item.jetpack_boost.name=Boostpack -item.jetpack_boost.desc=High-powered vectorized jetpack.$Highly increased fuel consumption. item.jetpack_break.name=Builder's Jetpack -item.jetpack_break.desc=Regular jetpack that will automatically hover mid-air.$Sneaking will stop hover mode.$Hover mode will consume less fuel and increase air-mobility. item.jetpack_fly.name=Jetpack -item.jetpack_fly.desc=Regular jetpack for simple upwards momentum. item.jetpack_tank.name=Jetpack Reserve Fuel Tank item.jetpack_vector.name=Vectored Jetpack -item.jetpack_vector.desc=High-mobility jetpack.$Higher fuel consumption. item.journal_bj.name=Whiskey Drenched Notebook item.journal_pip.name=Survivalist's Journal item.journal_silver.name=Contractor's Notes @@ -3041,9 +2949,7 @@ item.laser_crystal_digamma.name=Digamma Laser Crystal item.laser_crystal_dnt.desc=Dineutronium-Spark Fermion Supercrystal item.laser_crystal_dnt.name=Spark Laser Crystal item.lead_gavel.name=Leaden Gavel -item.lead_gavel.desc=You are hereby sentenced to lead poisoning. item.lemon.name="Lemon" -item.lemon.desc=Eh, good enough. item.letter.name=Express Mail item.levitation_unit.name=Gravity Manipulator item.lignite.name=Lignite @@ -3056,9 +2962,7 @@ item.liquidator_plate.name=Liquidator Suit Chestplate item.lithium.name=Lithium Cube item.lodestone.name=Lodestone item.loop_stew.name=IT Breakfast -item.loop_stew.desc=A very, very healthy breakfast. item.loops.name=Lööps -item.loops.desc=Brøther, may I have some lööps? item.loot_10.name=Size 10 Missile Loot Crate item.loot_15.name=Size 15 Missile Loot Crate item.loot_misc.name=General Missile Loot Crate @@ -3085,44 +2989,28 @@ item.mechanism_rifle_2.name=Advanced Rifle Mechanism item.mechanism_special.name=High-Tech Weapon Mechanism item.med_bag.name=Doctor's Bag item.med_ipecac.name=Ipecac Syrup -item.med_ipecac.desc=Bitter juice that will cause your stomach$to forcefully eject its contents. item.med_ptsd.name=PTSD Medication -item.med_ptsd.desc=This isn't even PTSD mediaction, it's just$Ipecac in a different bottle! item.med_schiziphrenia.name=Schizophrenia Medication -item.med_schiziphrenia.desc=Makes the voices go away. Just for a while.$ $...$Better not take it. item.medal_liquidator.name=Liquidator Medal item.meltdown_tool.name=Dyatlov Instant Meltdown Applicator item.memespoon.name=§eMarket Gardener -item.memespoon.desc=§8Level 10 Shovel$§bDeals crits while the wielder is rocket jumping$§c20%% slower firing speed$§cNo random critical hits item.memory.name=item.null.name item.mese_gavel.name=Mese Gavel item.mese_pickaxe.name=Mese Pickaxe item.meteor_charm.name=Meteor Charm item.meteor_remote.name=Meteorite Remote item.meteorite_sword.name=Meteorite Sword -item.meteorite_sword.desc=Forged from a fallen star$Sharper than most terrestrial blades item.meteorite_sword_seared.name=Meteorite Sword (Seared) -item.meteorite_sword_seared.desc=Fire strengthens the blade$Making it even more powerful item.meteorite_sword_reforged.name=Meteorite Sword (Reforged) -item.meteorite_sword_reforged.desc=The sword has been reforged$To rectify past imperfections item.meteorite_sword_hardened.name=Meteorite Sword (Hardened) -item.meteorite_sword_hardened.desc=Extremely high pressure has been used$To harden the blade further item.meteorite_sword_alloyed.name=Meteorite Sword (Alloyed) -item.meteorite_sword_alloyed.desc=Cobalt fills the fissures$Strengthening the sword item.meteorite_sword_machined.name=Meteorite Sword (Machined) -item.meteorite_sword_machined.desc=Advanced machinery was used$To refine the blade even more item.meteorite_sword_treated.name=Meteorite Sword (Treated) -item.meteorite_sword_treated.desc=Chemicals have been applied$Making the sword more powerful item.meteorite_sword_etched.name=Meteorite Sword (Etched) -item.meteorite_sword_etched.desc=Acids clean the material$To make this the perfect sword item.meteorite_sword_bred.name=Meteorite Sword (Bred) -item.meteorite_sword_bred.desc=Immense heat and radiation$Compress the material item.meteorite_sword_irradiated.name=Meteorite Sword (Irradiated) -item.meteorite_sword_irradiated.desc=The power of the Atom$Gives the sword might item.meteorite_sword_fused.name=Meteorite Sword (Fused) -item.meteorite_sword_fused.desc=This blade has met$With the forces of the stars item.meteorite_sword_baleful.name=Meteorite Sword (Baleful) -item.meteorite_sword_baleful.desc=This sword has met temperatures$Far beyond what normal material can endure item.mike_cooling_unit.name=Deuterium Cooling Unit item.mike_core.name=Uranium Coated Deuterium Tank item.mike_deut.name=Deuterium Tank @@ -3157,7 +3045,6 @@ item.missile_nuclear_cluster.name=Thermonuclear Missile item.missile_rain.name=Bomblet Rain item.missile_schrabidium.name=Schrabidium Missile item.missile_shuttle.name=Reliant Robin Space Shuttle -item.missile_shuttle.desc=Tonite, on bo''om gear:$James huffs leaded gasoline and$goes insane, Richard spends the$entire budget on a broken .PNG,$And I forget to set the infinite$Water tanks on our RBMK to flow$out, blowing up our entire base item.missile_skin_camo.name=Missile Skin: Camo item.missile_skin_color.desc=I can't find my missile anymore! item.missile_skin_desert.name=Missile Skin: Desert Camo @@ -3177,7 +3064,6 @@ item.missile_skin_soviet_glory.desc=уÑлуга перевода недоÑту item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it. item.missile_soyuz.name=Soyuz-FG -item.missile_soyuz.desc=Skin:$Original$Luna Space Center$Post War item.missile_soyuz_lander.name=Orbital Module item.missile_soyuz_lander.desc=Doubles as a crappy lander! item.missile_strong.name=Strong HE Missile @@ -3324,7 +3210,6 @@ item.multitool_miner.name=Power Fist (Extracting Mining Laser) item.multitool_silk.name=Power Fist (Silk Touch Claw) item.multitool_sky.name=Power Fist (Crack the Sky) item.mysteryshovel.name=Brittle Spade -item.mysteryshovel.desc=Lost but not forgotten item.n2_charge.name=Large Explosive Charge item.neutrino_lens.name=Neutrino Lens item.neutron_reflector.name=Neutron Reflector @@ -3508,7 +3393,6 @@ item.particle_strange.name=Strange Quark Capsule item.particle_tachyon.name=Tachyon Capsule item.parts_legendary.name=Legendary Parts item.peas.name=Peas -item.peas.desc=He accepts your offering. item.pedestal_steel.name=Steel Pedestal item.pellet_advanced.name=Advanced Watz Performance Improver item.pellet_antimatter.name=Antimatter Cluster @@ -3765,7 +3649,6 @@ item.primer_buckshot.name=Buckshot Primer (x12) item.protection_charm.name=Charm of Protection item.prototype_kit.name=Prototype Kit item.pudding.name=Pudding -item.pudding.desc=What if he did?$What if he didn't?$What if the world was made of pudding? item.pwr_fuel.bfb_am_mix.name=Fuel Grade Americium PWR BFB Rod item.pwr_fuel.bfb_pu241.name=Plutonium-241 PWR BFB Rod item.pwr_fuel.hea242.name=HEA-242 PWR Fuel Rod @@ -3819,7 +3702,6 @@ item.radaway_strong.name=Strong RadAway item.radx.name=Rad-X item.radx.desc=Increases radiation resistance by 0.2 (37%%) for 3 minutes item.rag.name=Cloth -item.rag.desc=Drop into water to make damp cloth.$Right-click to urinate on the cloth. item.rag_damp.name=Damp Cloth item.rag_piss.name=Piss-Soaked Rag item.rbmk_fuel_balefire.name=Balefire RBMK Fuel Rod @@ -4126,7 +4008,6 @@ item.schnitzel_vegan.name=Vegan Schnitzel item.schrabidium_axe.name=Schrabidium Axe item.schrabidium_boots.name=Schrabidium Boots item.schrabidium_hammer.name=Schrabidium Hammer -item.schrabidium_hammer.desc=Even though it says "+1000000000"$damage", it's actually "onehit anything" item.schrabidium_helmet.name=Schrabidium Helmet item.schrabidium_hoe.name=Schrabidium Hoe item.schrabidium_legs.name=Schrabidium Leggings @@ -4155,14 +4036,10 @@ item.servo_set.name=Servo Set item.servo_set_desh.name=Desh Servo Set item.shackles.name=Shackles item.shimmer_axe.name=Shimmer Axe -item.shimmer_axe.desc=Timber! -item.shimmer_axe.desc.hide=shim's toolbox does an e-x-p-a-n-d item.shimmer_axe_head.name=Heavy Axe Head item.shimmer_handle.name=Reinforced Polymer Handle item.shimmer_head.name=Heavy Hammer Head item.shimmer_sledge.name=Shimmer Sledge -item.shimmer_sledge.desc=Breaks everything, even portals. -item.shimmer_sledge.desc.hide=shimmer no$drop that hammer$you're going to hurt somebody$shimmer no$shimmer pls item.singularity.name=Singularity item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity item.singularity_micro.name=Micro Singularity @@ -4284,7 +4161,6 @@ item.tank_waste_7.name=Mud Container item.tank_waste_8.name=Mud Container item.telepad.name=Telepad item.tem_flakes.name=Tem Flakes -item.tem_flakes.desc=Heals 2HP DISCOUNT FOOD OF TEM!!!$Heals 2HP food of tem$Heals food of tem (expensiv) item.template_folder.name=Machine Template Folder item.template_folder.desc=Machine Templates: Paper + Dye$Fluid IDs: Iron Plate + Dye$Press Stamps: Flat Stamp$Siren Tracks: Insulator + Steel Plate item.test_nuke_igniter.name=Igniter @@ -4338,9 +4214,7 @@ item.turret_rocket_ammo.name=Rocket Turret 2x4 Ammunition item.turret_spitfire_ammo.name=AA-Shell item.turret_tau_ammo.name=Tau Turret Uranium Ammo item.twinkie.name=Twinkie -item.twinkie.desc=Expired 600 years ago! item.ullapool_caber.name=Ullapool Caber -item.ullapool_caber.desc=High-yield Scottish face removal.$A sober person would throw it... item.undefined.name=Undefined item.upgrade_5g.name=5G Radiation Emitter Upgrade item.upgrade_afterburn_1.name=Afterburner Upgrade Mk.I @@ -4381,14 +4255,8 @@ item.v1.name=V1 item.volcanic_pickaxe.name=Molten Pickaxe item.wand_d.name=Debug Wand item.wand_k.name=Construction Wand -item.wand_k.block=Block saved: %s -item.wand_k.desc=Creative-only item$"Destruction brings creation"$(Set positions with right click,$set block with shift-right click!) -item.wand_k.null=Positions not set! -item.wand_k.pos=Pos: %s, %s, %s item.wand_s.name=Structure Wand -item.wand_s.desc=Creative-only item$"Instant structures for everyone!"$(Cycle with shift-right click,$spawn structures with right click!) item.structure_custommachine.name=Custom Machine Structure Output Wand -item.structure_custommachine.desc=Click Custom Machine Structure Positioning Anchor to$Confirm the location of the custom machine core block.$Output all blocks between Position1 and Position2 with$metadata to \"CMstructureOutput.txt\" in hbmConfig. item.warhead_buster_large.name=Large Bunker Buster Warhead item.warhead_buster_medium.name=Medium Bunker Buster Warhead item.warhead_buster_small.name=Small Bunker Buster Warhead @@ -4471,12 +4339,9 @@ item.wire_schrabidium.name=Schrabidium Wire item.wire_tungsten.name=Tungsten Wire item.wiring_red_copper.name=Cable Drum item.wood_gavel.name=Wooden Gavel -item.wood_gavel.desc=Thunk! item.wrench.name=Pipe Wrench -item.wrench.desc=Mechanic Richard item.wrench_archineer.name=Archineer's Wrench item.wrench_flipped.name=Blade on a Wrench -item.wrench_flipped.desc=Wrench 2: The Wrenchening item.xanax.name=NAXA Anti-Digamma Medication item.xanax.desc=Removes 500mDRX item.zirconium_legs.name=Zirconium Pants @@ -4840,7 +4705,6 @@ tile.cm_tank.alloy.name=Advanced Alloy Tank tile.cm_tank.desh.name=Desh Tank tile.cm_tank.steel.name=Steel Tank tile.cm_tank.tcalloy.name=Technetium Steel Tank -tile.cm_paperPress.name=Paper Press tile.cmb_brick.name=CMB Steel Tile tile.cmb_brick_reinforced.name=Reinforced CMB Bricks tile.compact_launcher.name=Compact Launch Pad @@ -5094,7 +4958,6 @@ tile.gneiss_brick.name=Schist Brick tile.gneiss_chiseled.name=Chiseled Schist tile.gneiss_tile.name=Schist Tile tile.gravel_diamond.name=Diamond Gravel -tile.gravel_diamond.desc=There is some kind of joke here,$but I can't quite tell what it is.$ $Update, 2020-07-04:$We deny any implications of a joke on$the basis that it was so severely unfunny$that people started stabbing their eyes out.$$Update, 2020-17-04:$As it turns out, "Diamond Gravel" was$never really a thing, rendering what might$have been a joke as totally nonsensical.$We apologize for getting your hopes up with$this non-joke that hasn't been made.$$i added an item for a joke that isn't even here, what am i, stupid? can't even tell the difference between gravel and a gavel, how did i not forget how to breathe yet? tile.gravel_obsidian.name=Crushed Obsidian tile.hadron_access.name=Particle Accelerator Access Terminal tile.hadron_analysis.name=Particle Accelerator Analysis Chamber Wall @@ -5225,7 +5088,6 @@ tile.machine_excavator.name=Large Mining Drill tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU tile.machine_flare.name=Flare Stack -tile.machine_flare.desc=Can burn fluids and vent gasses$Burns up to §c10mB/t$Vents up to §c50mB/t$ $§eFuel efficiency:$§e-Flammable Gasses: §c50%%$§e-Flammable Liquids: §c10%% tile.machine_fluidtank.name=Tank tile.machine_forcefield.name=Forcefield Emitter tile.machine_fraction_tower.name=Fractioning Tower @@ -5317,7 +5179,6 @@ tile.machine_zirnox.name=ZIRNOX Nuclear Reactor tile.marker_structure.name=Multiblock Structure Marker tile.mass_storage.name=Mass Storage Unit tile.meteor_battery.name=Starmetal Static Electricity Generator -tile.meteor_battery.desc=Provides infinite charge to tesla coils tile.meteor_brick.name=Meteor Bricks tile.meteor_brick_chiseled.name=Chiseled Meteor Bricks tile.meteor_brick_cracked.name=Cracked Meteor Bricks @@ -5337,18 +5198,14 @@ tile.ntm_dirt.name=Dirt tile.nuke_boy.name=Little Boy tile.nuke_custom.name=Custom Nuke tile.nuke_fleija.name=F.L.E.I.J.A. -tile.nuke_fleija.desc=Used in:$F.L.E.I.J.A. tile.nuke_fstbmb.name=Balefire Bomb tile.nuke_gadget.name=The Gadget tile.nuke_man.name=Fat Man tile.nuke_mike.name=Ivy Mike tile.nuke_n2.name=N² Mine -tile.nuke_n2.desc=Used in:$N² Mine tile.nuke_n45.name=N45 Naval Mine tile.nuke_prototype.name=The Prototype -tile.nuke_prototype.desc=It didn't have to be like this.$ $You monster. tile.nuke_solinium.name=The Blue Rinse -tile.nuke_solinium.desc=Used in:$Solinium Bomb tile.nuke_tsar.name=Tsar Bomba tile.oil_duct.name=Oil Pipe tile.oil_duct_solid.name=Coated Oil Pipe @@ -5407,7 +5264,6 @@ tile.ore_nether_uranium.name=Nether Uranium Ore tile.ore_nether_uranium_scorched.name=Scorched Nether Uranium Ore tile.ore_niter.name=Niter Ore tile.ore_oil.name=Oil Deposit -tile.ore_oil.desc=You weren't supposed to mine that.$Come on, get a derrick you doofus. tile.ore_oil_empty.name=Empty Oil Deposit tile.ore_oil_sand.name=Tar Sand tile.ore_random.name=%s Ore @@ -5522,7 +5378,6 @@ tile.reactor_element.name=Reactor Chamber tile.reactor_hatch.name=Reactor Access Hatch tile.reactor_inserter.name=Reactor Fuel Inserter tile.red_barrel.name=Explosive Barrel -tile.red_barrel.desc=Static fluid barrel tile.red_cable.name=Red Copper Cable tile.red_cable_classic.name=Red Copper Cable (Classic) tile.red_cable_gauge.name=Power Gauge @@ -5530,9 +5385,7 @@ tile.red_cable_gauge.desc=Cable that displays how much power$moves within the ne tile.red_cable_paintable.name=Paintable Red Copper Cable tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole -tile.red_pylon.desc=Connection Type: §eSingle$Connection Range: §e25m tile.red_pylon_large.name=Large Electricity Pylon -tile.red_pylon_large.desc=Connection Type: §eQuadruple$Connection Range: §e100m$This pylon requires a substation! tile.red_wire_coated.name=Coated Red Copper Cable tile.reinforced_brick.name=Reinforced Stone tile.reinforced_brick_stairs.name=Reinforced Stone Stairs @@ -5617,7 +5470,6 @@ tile.struct_scaffold.name=Launch Pad Scaffold Block tile.struct_soyuz_core.name=Soyuz Launcher Core Component tile.struct_watz_core.name=Watz Powerplant Core Component tile.substation.name=Substation -tile.substation.desc=Connection Type: §eQuadruple$Connection Range: §e20m tile.sulfuric_acid_block.name=Sulfuric Acid tile.taint.name=Taint tile.taint_barrel.name=IMP Residue Barrel @@ -5708,10 +5560,6 @@ trait.hydro=Hydroreactive trait.radioactive=Radioactive trait.radResistance=Radiation resistance: %s -trait.platefuel=[Research Reactor Plate Fuel]$§3 %s$§3 Yield of %s events -trait.pwr_fuel=Heat per flux: §r%s TU$Reacton function: §r%s$Fuel type: §r%s - -trait.rbmk.BurnFunc=SAFE / PASSIVE$MEDIUM / LOGARITHMIC$SAFE / EULER$DANGEROUS / NEGATIVE-QUADRATIC$SAFE / SIGMOID$MEDIUM / SQUARE ROOT$DANGEROUS / LINEAR$DANGEROUS / QUADRATIC$EXPERIMENTAL / SINE SLOPE trait.rbmk.coreTemp=Core temp: %s trait.rbmk.depletion=Depletion: %s trait.rbmk.diffusion=Diffusion: %s @@ -5748,21 +5596,8 @@ trait.rbmx.xenon=Lead poison: %s trait.rbmx.xenonBurn=Lead destruction function: %s trait.rbmx.xenonGen=Lead creation function: %s -trait.rbmk_pellet=Pellet for recycling$Brand New$Barely Depleted$Moderately Depleted$Highly Depleted$Fully Depleted$High Xenon Poison -trait.watz_pellet=Depletion: %s%% -trait.watz_pellet.passive=Base fission rate: $Self-igniting! -trait.watz_pellet.heatEmission=Heat per flux: -trait.watz_pellet.burnFunc=Reacton function: $Fuel type: -trait.watz_pellet.heatDiv=Thermal multiplier: -trait.watz_pellet.absorbFunc=Flux capture: - trait.tile.cluster=Drops only when broken by a player trait.tile.depth=Can only be destroyed by explosions -trait.tile.barrel.capacity=Capacity: %smB -trait.tile.barrel.hot=Can store hot fluids$Cannot store hot fluids -trait.tile.barrel.corrosive=Can store highly corrosive fluids$Can store corrosive fluids$Cannot store highly corrosive fluids properly$Cannot store corrosive fluids properly$Cannot store corrosive fluids -trait.tile.barrel.antimatter=Can store antimatter$Cannot store antimatter -trait.tile.barrel.leak=Leaky tool.ability.centrifuge=Auto-Centrifuge tool.ability.crystallizer=Auto-Crystallizer @@ -5776,15 +5611,6 @@ tool.ability.shredder=Auto-Shredder tool.ability.silktouch=Silk Touch tool.ability.smelter=Auto-Smelter -tooltip.armormods=Mods: -tooltip.armormodsshow=Hold < %s §8§o> to display installed armor mods§r -tooltip.block=Hold < %s §8§o> to display more info§r -tooltip.customnuke=Adds %s to the custom nuke stage %s -tooltip.customnukemultiplier=Adds multiplier %s to the custom nuke stage %s -tooltip.oredict=Ore Dict: -tooltip.oredict.null=No Ore Dict data! -tooltip.show=Hold < %s §8§o> to display protection info§r - turret.animals=Target Passive: %s turret.arty.artillery=§eArtillery Mode$Grace: 250m$Range: 3,000m turret.arty.cannon=§eCannon Mode$Grace: 32m$Range: 250m diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 7610a1c62..4bd5871e0 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -52,13 +52,13 @@ achievement.fiend2=残å¿2:æ›´æ®‹å¿ achievement.fiend=æ®‹å¿ achievement.freytag.desc=英勇的救生员 achievement.freytag=弗雷塔格 -achievement.fusion.desc=氘核, 氚核和能é‡ä¹‹èˆž. -achievement.fusion=热核èšå˜å应 -achievement.gasCent.desc=æœªæµ“ç¼©çš„é“€è®¨åŽŒä»–ï¼ -achievement.gasCent=æ‹‰é“¾å¼ +achievement.fusion.desc=æ°˜æ ¸ã€æµ·å«ä¸€ä¸Žèƒ½é‡çš„舞蹈。 +achievement.fusion=èšåˆ +achievement.gasCent.desc=è´«é“€è®¨åŽŒä»–ï¼ +achievement.gasCent=é“¾å¼ achievement.goFish.desc=航海åå­—æž¶ achievement.goFish=去钓鱼 -achievement.hidden.desc=使用一节å è½çš„è½¦åŽ¢æ€æ­»ä¸€åªæ±¡æŸ“爬行者 +achievement.hidden.desc=使用一节å è½çš„è½¦åŽ¢æ€æ­»ä¸€åªæ±¡æŸ“苦力怕 achievement.hidden=éšè—目录 achievement.horizonsBonus.desc=说实è¯ï¼Œä½ åˆ°åº•怎么了 achievement.horizonsBonus=åœ°å¹³çº¿ï¼ @@ -72,14 +72,14 @@ achievement.inferno.desc=â€œæŠŠå®ƒå˜æˆç°çƒ¬ï¼è¿™è¿˜ä¸å¤Ÿï¼æŠ•更多的炸 achievement.inferno=食人行动 achievement.manhattan.desc=1945å¹´8月6æ—¥ 8:15 achievement.manhattan=曼哈顿计划 -achievement.meltdown.desc=你都走到了这一步,怎么还能把事情æžç ¸? -achievement.meltdown="快速"æ‹†å¸ -achievement.no9.desc="我希望我开采的铅能被用于你的绘画" -achievement.no9=è€ä¹å· -achievement.omega12.desc=解决在这个è’凉的的星çƒä¸Šç»§ç»­ç”Ÿå­˜çš„问题. -achievement.omega12=欧米伽-12å·ç²’å­åŠ é€Ÿå™¨ -achievement.polymer.desc=美味,美味的微塑料. -achievement.polymer=特氟隆 èšå››æ°Ÿä¹™çƒ¯ +achievement.meltdown.desc=你走了这么远,怎么能把事情æžç ¸ï¼Ÿ +achievement.meltdown=快速éžè®¡åˆ’æ‹†å¸ +achievement.no9.desc=“我希望我开采的铅能被用在你的油漆里†+achievement.no9=æ—§æ•°å­—9 +achievement.omega12.desc=è§£å†³åœ¨è¿™ä¸ªå¯æ€œçš„æ˜Ÿçƒä¸Šç»§ç»­ç”Ÿå­˜çš„问题 +achievement.omega12=欧米茄-12ç²’å­åŠ é€Ÿå™¨ +achievement.polymer.desc=美味ã€ç¾Žå‘³çš„微塑料。 +achievement.polymer=特氟隆 achievement.potato.desc=ä½ å±…ç„¶æ…æˆ‘ï¼ä½ æ€Žâ€”å–”å“¦å“¦å“¦å“¦å“¦ï¼ achievement.potato=æµæ°“AI achievement.radDeath.desc=居里夫人开创了放射性ç†è®ºã€æ”¾å°„性治疗和放射性死亡。。。。 @@ -124,32 +124,30 @@ achievement.watzBoom.desc=下次记得把毒泥浆容器清空 achievement.watzBoom=ä»¤äººåŽŒæ¶ achievement.watz.desc=å¯èƒ½åŒ…括Fólkvangr弗尔克范格场 achievement.watz=126å·å…ƒç´ çš„åŠ›é‡ -achievement.witchtaunter.desc=那些怪胎什么都没å‘现! -achievement.witchtaunter=女巫陶æ©ç‰¹ -achievement.ZIRNOXBoom.desc=处ç†, é地都是, 残骸碎片 -achievement.ZIRNOXBoom=CIRNOX - -armor.blastProtection=åªå—%s的爆炸伤害 -armor.cap=ç¡¬ä¼¤ä¸Šé™ %s -armor.charge=电é‡: %s / %s -armor.damageModifier=åªå—%sçš„%s伤害 -armor.dash=æä¾› %s 次冲刺 -armor.electricJetpack=ç­‰ç¦»å­æŽ¨è¿›å™¨ +achievement.witchtaunter.desc=é‚£äº›å¤æ€ªçš„ç”Ÿç‰©å¯¹ä½ æ¯«æ— å…´è¶£ï¼ +achievement.witchtaunter=巫婆陶æ©ç‰¹ +achievement.ZIRNOXBoom.desc=处ç†, 看,满地是残骸碎片 +achievement.ZIRNOXBoom=锆诺克斯 +armor.blastProtection=修正 %s 的爆炸伤害 +armor.cap=ä¼¤å®³ä¸Šé™ %s +armor.damageModifier=修正 %s 对 %s 的伤害 +armor.dash=给予 %s 冲刺 +armor.electricJetpack=离å­å–·å°„背包 armor.explosionImmune=å…疫除爆炸伤害外的一切伤害 armor.fasterReload=快速装填 armor.fastFall=快速é™è½ armor.fireproof=é˜²ç« -armor.fullSetBonus=完整套装增益: -armor.geigerHUD=内置盖格计数器 -armor.geigerSound=å¬è§‰å¼ç›–é©è®¡æ•°å™¨ -armor.glider=按下潜行以滑翔 -armor.gravity=é‡åŠ›æ•ˆæžœè°ƒæ•´ä¸º%s -armor.hardLanding=å åœ°AOE伤害 -armor.ignoreLimit=防御值ä¸å—防御值上é™çš„å½±å“ -armor.modifier=åªå—%s的一般伤害 +armor.fullSetBonus=全套效果: +armor.geigerHUD=ç›–é©è®¡æ•°å™¨HUD +armor.geigerSound=ç›–é©è®¡æ•°å™¨è­¦æŠ¥ +armor.glider=滑翔 +armor.gravity=é‡åŠ›ä¿®æ­£ %s +armor.hardLanding=硬ç€é™† +armor.ignoreLimit=防御值ä¸å—防御上é™çš„å½±å“ +armor.modifier=伤害修正 %s armor.moreAmmo=æ›´å¤šå¼¹è¯ -armor.nullDamage=å…疫所有的%s伤害 -armor.projectileProtection=åªå—%s的弹射物伤害 +armor.nullDamage=å…ç–« %s 伤害 +armor.projectileProtection=å…ç–« %s 的弹射物伤害 armor.rocketBoots=ç«ç®­é´ armor.sprintBoost=冲刺辅助加速 armor.stepSize=步长:%s @@ -164,44 +162,8 @@ armorMod.chestplates=胸甲 armorMod.helmets=头盔 armorMod.insertHere=æ’入装甲以改装。。。 armorMod.leggings=护腿 -armorMod.slot=æ§½ä½: -armorMod.mod.auto=从日本进å£. -armorMod.mod.bandaid=3%% 的几率让你å—到伤害时HP回满$ (3%% 的几率HP回满) -armorMod.mod.bathwater=使攻击者中毒$ (让攻击者中毒) -armorMod.mod.charm=你感å—到了ç¥ç¦. -armorMod.mod.charm.protection=使陨石å移以远离玩家.$陨石ä¸å†ç ´åæ–¹å—.$å°†è…化广播的伤害å‡åŠ -armorMod.mod.charm.meteor=ç¦æ­¢é™¨çŸ³ç”Ÿæˆ.$无视è…化广播的伤害 -armorMod.mod.cladding= è¾å°„抗性$ è¾å°„抗性) -armorMod.mod.defuser=拆除附近爬行者引信$ (拆除爬行者引信) -armorMod.mod.gasmask=有毒气体防护$ç»å¯¹ä¸ä¼šæä¾›çš„å±å®³é˜²æŠ¤:$ (有毒气体防护) -armorMod.mod.health= 生命值$怀旧 -armorMod.mod.Ink=10%% 的几率å…疫伤害$花朵的护佑!$ (10%% 的几率å…疫伤害) -armorMod.mod.Insert=%% 伤害$%% 弹射物伤害$%% 爆炸伤害$%% 移动速度$è€ä¹… -armorMod.mod.Iron=+0.5 抗击退性$ (+0.5 抗击退性) -armorMod.mod.Knife=痛苦.$ $很疼, 䏿˜¯å—? -armorMod.mod.Lens=嫿˜Ÿé¢‘é“: $ (频é“: %%d) -armorMod.mod.Lodestone=å¸å¼•附近的掉è½ç‰©$掉è½ç‰©å¸å¼•范围: %%d$ (ç£åŠ›èŒƒå›´: %%d) -armorMod.mod.Milk=ç§»é™¤è´Ÿé¢æ•ˆæžœ$ (ç§»é™¤è´Ÿé¢æ•ˆæžœ) -armorMod.mod.MorningGlory=5%% 的几率在被击中时得到抗性æå‡æ•ˆæžœ, å…疫凋零效果$ (5%% 的几率得到抗性æå‡æ•ˆæžœ, å…疫凋零效果) -armorMod.mod.Obsidian=使掉è½çš„盔甲åšä¸å¯æ‘§$ (使掉è½çš„盔甲åšä¸å¯æ‘§) -armorMod.mod.Pads=%% æ‘”è½ä¼¤å®³$行走时å¯ä¸ºç›”甲充电$%% æ‘”è½ä¼¤å®³ / 行走时å¯ä¸ºç›”甲充电) -armorMod.mod.Polish=5%% 的几率å…疫伤害$ (5%% 的几率å…疫伤害) -armorMod.mod.Quartz=æ¯å—一次å—到伤害将移除 10 RAD$ (æ¯å—一次å—到伤害将移除10 RAD) -armorMod.mod.Revive= æ¡é¢å¤–生命 -armorMod.mod.Revive.scrumpy=但,但你是怎么活下æ¥çš„?$我当时å–醉了. -armorMod.mod.Revive.wild_p=§8爆炸 §cå应 §8局部 §c装甲 -armorMod.mod.Revive.fabsols_vodka=æ–°é—»:$§c§l一男å­åœ¨æžåº¦æ„¤æ€’çš„æƒ…å†µä¸‹æ‹’ç»æ­»äº¡.$ $§o"我没这功夫去死" 该å当地$ç”·å­åœ¨æŠŠç¾éš¾æœ¬èº«åœ¨ç‰©ç†å±‚é¢ä¸Šçš„体现$æ’•æˆä¸¤åŠåŽå¦‚是说é“. -armorMod.mod.Sensor=有å±é™©æ°”体在附近时å‘出蜂鸣音$在背包中或装é…于装甲时工作$ (检测气体) -armorMod.mod.Serum=解除中毒效果并替æ¢ä¸ºåЛ釿•ˆæžœ$ (解除中毒效果并替æ¢ä¸ºåЛ釿•ˆæžœ) -armorMod.mod.Servos=装é…于胸甲时: 给予 急迫 I / 伤害 +50%%$装é…于护腿时: 移动速度 +25%% / 给予 跳跃æå‡ II$ (给予 急迫 I / 伤害 +50%%)$ (移动速度 +25%% / 给予 跳跃æå‡p II) -armorMod.mod.Servos.desh=装é…于胸甲时: 给予 急迫 III / 伤害 +150%%$装é…于护腿时: 移动速度d +50%% / 给予 跳跃æå‡ III$ (给予 急迫 III / 伤害e +150%%)$ (移动速度 +50%% / 给予 跳跃æå‡ III) -armorMod.mod.Shackles=æˆ‘è®©ä½ è¯´è¯æ—¶,ä½ æ‰èƒ½è¯´è¯.$æˆ‘è®©ä½ åƒæ—¶,ä½ æ‰èƒ½åƒ.$我让你死时,ä½ æ‰èƒ½æ­».$∞ æ¡é¢å¤–生命$ (∞ æ¡é¢å¤–生命) -armorMod.mod.Tesla=电击附近的生物 (需è¦å…¨å¥—电动套装)$ (电击附近的生物) -armorMod.mod.TwoKick="我还有更糟的"$ (Shotgun punches) -armorMod.mod.V1=é²œè¡€å³æ˜¯ç‡ƒæ–™$ (é²œè¡€å³æ˜¯ç‡ƒæ–™) -armorMod.mod.WD40=-80%%对盔甲的è€ä¹…æŸè€—度, +2 生命值$ (-80%% 对盔甲的è€ä¹…æŸè€—度 / +2 生命值) -armorMod.type.boots=é´å­é…ä»¶ -armorMod.type.chestplate=胸甲é…ä»¶ +armorMod.type.boots=é´å­ +armorMod.type.chestplate=胸甲 armorMod.type.cladding=覆层 armorMod.type.helmet=头盔 armorMod.type.insert=æ’æ¿ @@ -243,12 +205,11 @@ book.error.page5=§l错误类型:§r "错误_错误区段" §læè¿°:§r ç²’å­ book.error.title6=错误 0x06 [分æžå®¤è¿‡é•¿] book.error.page6=§l错误类型:§r "错误_分æžå®¤è¿‡é•¿" §læè¿°:§r ç²’å­å·²é€šè¿‡ä¸‰ä¸ªä»¥ä¸Šæ‰€éœ€çš„æœ‰æ•ˆåˆ†æžå®¤æ®µã€‚ §lä¿®å¤æ–¹å¼:§r ç¡®ä¿çŽ¯å½¢åŠ é€Ÿå™¨çš„åˆ†æžå®¤é•¿åº¦æ­£å¥½ä¸º3个方å—, 直线加速器的分æžå®¤é•¿åº¦è‡³å°‘为2个方å—。 è¿˜è¦æ£€æŸ¥ç²’å­æ˜¯å¦æœªé€šè¿‡åˆ†æ”¯æˆ– 环形加速器中的多个分æžå®¤ã€‚ book.error.title7=错误 0x07 [分æžå®¤è¿‡çŸ­] -book.error.page7=§l错误åç§°:§r "错误_分æžå®¤è¿‡çŸ­" §l说明:§r ç²’å­ç¦»å¼€äº†åˆ†æžå®¤,尽管分æžå®¤ä¸ç¬¦åˆé•¿åº¦è¦æ±‚. §l解决方法:§r ç¡®ä¿çŽ¯åž‹åŠ é€Ÿå™¨ä¸Šçš„åˆ†æžå®¤æ­£å¥½æœ‰3格长. 有效的分æžå®¤éƒ¨åˆ†æ²¡æœ‰çº¿åœˆ, 镀层完全由分æžå®¤å£/窗组æˆ. 带有线圈的分æžå®¤ä¼šè¢«è§†ä¸ºæ™®é€šåŠ é€Ÿéƒ¨åˆ†. -book.error.title8=错误 0x08 [ç²’å­ä¸Žè‚–特基粒å­äºŒæžç®¡ç¢°æ’ž] -book.error.page8=§l错误åç§°:§r "错误_ç²’å­ä¸Žè‚–特基粒å­äºŒæžç®¡ç¢°æ’ž" §l说明:§r 该粒å­ä¸Žè‚–特基粒å­äºŒæžç®¡çš„éžè¾“入侧碰撞. §l解决方法:§r 检查二æžç®¡çš„æ–¹å‘é…ç½®æ˜¯å¦æ­£ç¡®. ç²’å­åªèƒ½ä»Žå¸¦æœ‰ç»¿è‰²å‘内箭头的侧é¢è¿›å…¥äºŒæžç®¡. -book.error.title9=错误 0x09 [转弯处分岔] -book.error.page9=§l错误åç§°:§r "错误_转弯处分岔" §l说明:§r ç²’å­å·²åˆ°è¾¾å…·æœ‰å¤šä¸ªå‡ºå£çš„转弯处. §l解决方法:§r 如果你的æ‹å¼¯å¤„是正常的, 检查所有需è¦çš„线圈是å¦éƒ½å­˜åœ¨(å³çº¿åœˆå±‚中没有孔). 如果转弯处打算进行分支, åˆ™éœ€è¦æ­£ç¡®é…置的肖特基粒å­äºŒæžç®¡. - +book.error.page7=§l错误类型:§r "错误_分æžå®¤è¿‡çŸ­" §læè¿°:§r ç²’å­å·²ç¦»å¼€åˆ†æžå®¤ï¼Œå°½ç®¡ä¸ç¬¦åˆé•¿åº¦è¦æ±‚。 §lä¿®å¤æ–¹å¼:§r ç¡®ä¿çŽ¯å½¢åŠ é€Ÿå™¨ä¸Šçš„åˆ†æžå®¤æ­£å¥½æœ‰3个方å—长。 æœ‰æ•ˆçš„åˆ†æžæ®µæ²¡æœ‰çº¿åœˆï¼Œé•€å±‚完全由分æžå®¤å£/窗组æˆã€‚ 带有线圈的分æžå®¤è¢«è§†ä¸ºè§„则段。 +book.error.title8=错误 0x08 [二æžç®¡æ–¹å‘错误] +book.error.page8=§l错误类型:§r "错误_二æžç®¡æ–¹å‘错误" §læè¿°:§r 该粒å­ä¸Žè‚–特基粒å­äºŒæžç®¡çš„éžè¾“入侧碰撞。§lä¿®å¤æ–¹å¼:§r 检查二æžç®¡çš„é…ç½®æ˜¯å¦æ­£ç¡®ã€‚ ç²’å­åªèƒ½ä»Žå¸¦æœ‰ç»¿è‰²å‘内箭头的侧é¢è¿›å…¥äºŒæžç®¡ã€‚ +book.error.title9=错误 0x09 [多处分支] +book.error.page9=§l错误类型:§r "错误_多处分支" §læè¿°:§r ç²’å­åˆ°è¾¾å…·æœ‰å¤šä¸ªå‡ºå£çš„转弯处。§lä¿®å¤æ–¹å¼:§r 如果你的对撞机是正常的,检查所有需è¦çš„线圈是å¦éƒ½å­˜åœ¨ï¼ˆå³çº¿åœˆä¸­æ²¡æœ‰ç¼ºæ¼ï¼‰ã€‚å¦‚æžœè½¬å¼¯å¤„æ‰“ç®—è¿›è¡Œåˆ†æ”¯ï¼Œåˆ™éœ€è¦æ­£ç¡®æ”¾ç½®çš„肖特基粒å­äºŒæžç®¡ã€‚ book.rbmk.cover=$我的第一个$RBMK石墨å¼å应堆:$建造一个$å应堆$的基础知识 book.rbmk.title1=ä»‹ç» book.rbmk.page1=§lRBMK石墨å¼å应堆§r是一个完全模å—化的核å应堆. 与大多数其他å应堆ä¸åŒçš„æ˜¯, 该å应堆没有"多方å—结构核心"和尺寸上的é™åˆ¶, 而å应堆的性能和效率仅å–决于你是如何建造它的, 以åŠå„个组件如何相互作用. @@ -260,15 +221,15 @@ book.rbmk.title4=控制棒 book.rbmk.page4=å应堆中的 §l控制棒§r å°†å‡å°‘中å­é€šè¿‡å®ƒçš„æ•°é‡. 完全æ’入时, 它会阻挡所有中å­; 当æ’å…¥ä¸€åŠæ—¶, 它åªä¼šé˜»æŒ¡ä¸€åŠä¸­å­. 控制棒用于调节å应堆的活跃状æ€å’Œä½¿å…¶å…³é—­. book.rbmk.title5=控制棒 - 使用 book.rbmk.title5.scale=0.9 -book.rbmk.page5=å½“å‰æŽ§åˆ¶æ£’æ’入的程度将显示在GUI的中心. 边的彩色按钮将把控制棒添加到ä¸åŒçš„颜色组中, 这对于在 §lRBMK石墨å¼å应堆§r 控制å°ä¸Šå¿«é€Ÿé€‰æ‹©å±å¹•上ä¸åŒåŒºåŸŸçš„æŽ§åˆ¶æ£’éžå¸¸æœ‰ç”¨. å³ä¾§çš„æŒ‰é’®å…è®¸æ‚¨ä»¥æ¯æ¬¡25%%çš„å¢žé‡æ‰‹åЍæ’å…¥. +book.rbmk.page5=å½“å‰æŽ§åˆ¶æ£’æ’入的程度将显示在GUI的中心. 边的彩色按钮将把控制棒添加到ä¸åŒçš„颜色组中, 这对于在 §lRBMK石墨å¼å应堆§r 控制å°ä¸Šå¿«é€Ÿé€‰æ‹©å±å¹•上ä¸åŒåŒºåŸŸçš„æŽ§åˆ¶æ£’éžå¸¸æœ‰ç”¨. å³ä¾§çš„æŒ‰é’®å…è®¸æ‚¨ä»¥æ¯æ¬¡25%çš„å¢žé‡æ‰‹åЍæ’å…¥. book.rbmk.title6=自动控制棒 book.rbmk.page6=§L自动控制棒§r 与常规控制棒几乎相åŒ, 但它们ä¸èƒ½æ‰‹åŠ¨è°ƒæ•´, 而是根æ®å½“剿¸©åº¦æ¥è°ƒæ•´æŽ§åˆ¶æ£’æ’入的程度. 使用哪ç§åŠŸèƒ½, 在多少的温度æ’入多少的深度必须被事先设定好. book.rbmk.title7=è’¸æ±½ç®¡é“ book.rbmk.page7=å应堆中的 §l蒸汽管é“§r 是唯一能有效é™ä½Žå应堆热水平的组件. 如果一个蒸汽管é“组件的沸点高于其设定的蒸汽类型的沸点, 那么它将试图消耗尽å¯èƒ½å¤šçš„æ°´ 并产生尽å¯èƒ½å¤šçš„蒸汽æ¥å†·å´åˆ°æ²¸ç‚¹ä»¥ä¸‹. book.rbmk.title8=碳化钨中å­å射器 -book.rbmk.page8=å应堆中的 §l碳化钨中å­å射器§r 将阻止中å­çš„通过, 相å, 中å­å°†è¢«å射回它们æ¥è‡ªçš„燃料棒上. è¿™å¯¹äºŽä½¿ç”¨ä¸­å­æ˜¯æœ‰ç”¨çš„, å¦åˆ™è¿™äº›ä¸­å­ä¸€æ—¦ç¦»å¼€å应堆就会被浪费掉. +book.rbmk.page8=å应堆中的 §l碳化钨中å­å射器§r 将阻止中å­çš„通过, 相å,中å­å°†è¢«å射回它们æ¥è‡ªçš„燃料棒上. è¿™å¯¹äºŽä½¿ç”¨ä¸­å­æ˜¯æœ‰ç”¨çš„, å¦åˆ™è¿™äº›ä¸­å­ä¸€æ—¦ç¦»å¼€å应堆就会被浪费掉. book.rbmk.title9=硼中å­å¸æ”¶å™¨ -book.rbmk.page9=§l硼中å­å¸æ”¶å™¨Â§r åªæ˜¯é˜»æŒ¡ä¸­å­. è¢«å¸æ”¶çš„中å­ä¸ä¼šäº§ç”Ÿçƒ­é‡, ä¼šè¢«æœ‰æ•ˆåœ°å¸æ”¶. 这有助于防止燃料棒å‘生过度å应从而超出临界值. +book.rbmk.page9=§l硼中å­å¸æ”¶å™¨Â§r åªæ˜¯é˜»æŒ¡ä¸­å­. è¢«å¸æ”¶çš„中å­ä¸ä¼šäº§ç”Ÿçƒ­é‡ï¼Œä¼šè¢«æœ‰æ•ˆåœ°å¸æ”¶. 这有助于防止燃料棒å‘生过度å应从而超出临界值. book.rbmk.title10=石墨慢化剂 book.rbmk.page10=§l石墨慢化剂§r 把穿过它的快中å­è½¬æ¢æˆæ…¢ä¸­å­. 大多数核燃料å应释放出快中å­, 而引起裂å˜éœ€è¦æ…¢ä¸­å­, 所以强烈建议使用慢化剂. book.rbmk.title11=结构柱 @@ -276,164 +237,180 @@ book.rbmk.page11=§l结构柱§r 坹䏭孿²¡æœ‰ä»»ä½•å½±å“也没有任何特 book.rbmk.title12=æŽ§åˆ¶å° book.rbmk.page12=§lRBMK石墨å¼å应堆控制å°Â§r å…许你远程控制å应堆. 使用 §lRBMK石墨å¼å应堆连接装置记录å应堆§r ç„¶åŽæ½œè¡Œå³å‡»æŽ§åˆ¶å°å°±èƒ½æŠŠå应堆和控制å°è¿žæŽ¥èµ·æ¥. 一个控制å°åªèƒ½æŽ§åˆ¶15x15个组件, 对于大型å应堆å¯ä»¥ä½¿ç”¨å¤šä¸ªæŽ§åˆ¶å°. book.rbmk.title13=控制å°çš„使用 -book.rbmk.page13=å•击å±å¹•ä¸Šçš„ç»„ä»¶å°†é€‰æ‹©æˆ–å–æ¶ˆé€‰æ‹©å®ƒä»¬. 使用彩色按钮, å¯ä»¥å¿«é€Ÿé€‰æ‹©è¯¥é¢œè‰²ç»„中的所有控制棒. 按钮“Aâ€å°†é€‰æ‹©æ‰€æœ‰æŽ§åˆ¶æ£’, “Xâ€å°†å–消选择所有控制棒. +book.rbmk.page13=å•击å±å¹•ä¸Šçš„ç»„ä»¶å°†é€‰æ‹©æˆ–å–æ¶ˆé€‰æ‹©å®ƒä»¬. 使用彩色按钮,å¯ä»¥å¿«é€Ÿé€‰æ‹©è¯¥é¢œè‰²ç»„中的所有控制棒. 按钮“Aâ€å°†é€‰æ‹©æ‰€æœ‰æŽ§åˆ¶æ£’, “Xâ€å°†å–消选择所有控制棒. book.rbmk.page14=在绿色框中输入一个介于0å’Œ100之间的数字, ç„¶åŽæŒ‰ä¸‹æ—边的按钮, 将所有选定的控制棒拔出程度设置到该ä½ç½®. 按钮“AZ-5â€å°†ä½¿æ‰€æœ‰æŽ§åˆ¶æ£’完全æ’å…¥. book.rbmk.title15=核燃料 book.rbmk.page15= §l核燃料§r çš„å应å–决于许多因素. ä¸»è¦æ˜¯ §l核燃料强度§r, §l氙中毒程度§r 和接收到的 §l䏭孿•°é‡Â§r. 氙元素会在核燃料的中å­å«é‡è¾ƒä½Žæ—¶ç§¯èšèµ·æ¥, 并在正常è¿è¡Œæ—¶ç‡ƒçƒ§æ®†å°½. 中å­çš„æ•ˆçއå–决于其类型, 大多数核燃料 §l用慢中å­è½°å‡»æ¥è£‚å˜æ•ˆæžœæœ€å¥½Â§r. book.rbmk.title16=ç†”æ¯ book.rbmk.page16=§4§lå°½é‡é¿å…å‘生, ä½ ä¸ä¼šæƒ³è®©è¿™æ ·ä¸€åœºæ ¸ç¾éš¾å‘生在你的存档或æœåŠ¡å™¨é‡Œçš„. - -book.starter.cover=é‡å»ºå·¥ä¸šç¤¾ä¼šçš„$一本实业家$çš„æŒ‡å— +book.starter.cover=é‡å»º$社会的实业家$æŒ‡å— book.starter.title1=ä»‹ç» -book.starter.page1=如果你读到这篇文章, 那么很有å¯èƒ½ç¤¾ä¼šå·²ç»ä»¥è¿™æ ·æˆ–那样的方å¼å®Œå…¨å´©æºƒäº†. 政府,国家和æƒå¨å·²ç»æ˜¯è¿‡åŽ»çš„æ¦‚å¿µâ€”â€”ä»¥åŠæ–‡æ˜Žç”Ÿæ´» 的所有便利设施. å› æ­¤,本指å—å°†å‘Šè¯‰ä½ å¦‚ä½•é€šè¿‡é‡æ–°åˆ›é€ è¿‡åŽ»çš„è¡Œä¸šå’Œ 科学技术 æ¥æ”¹å–„你自己的生活. -book.starter.title2=ç…¤å°˜ä¸ŽèŠ¥å­æ°” -book.starter.page2=虽然ä¸å¯èƒ½é¢„测世界在åŽä¸–界末日时代的实际状æ€, 但目å‰å½¢å¼çš„æˆ˜äº‰å’Œå·¥ä¸šæ´»åЍä¸å¤ªå¯èƒ½æ²¡æœ‰ç»“æŸ. ä¸ºäº†ä¿æŠ¤è‡ªå·±çš„è‚ºéƒ¨, ä¸€ç§æœ‰æ•ˆä¸”廉价的方法是在一些 §l布料§r上å°ä¾¿æ¥åˆ¶ä½œä¸€ä¸ª §l战壕版粗制防护é¢ç½©Â§r, ä»¥ä¿æŠ¤ä½ å…å—ç…¤å°˜æˆ–èŠ¥å­æ°”的伤害, 以防你é‡åˆ°å…¶ä¸­ä»»ä½•ä¸€ç§æƒ…况. -book.starter.title3=砧与锻压机 -book.starter.page3=开始你的工业振兴的核心是一个§lEåˆå‰æœŸçš„æœºæ¢°, 如组装机, 而ç«åŠ›é”»åŽ‹æœºå°†å…è®¸æ‚¨åˆ¶ä½œæ— æ³•ç”¨ç §é”¤å‡»åœ¨ä¸€èµ·çš„æ¿æ, 金属线和电路. +book.starter.page1=如果你正在读这篇文章,很å¯èƒ½ç¤¾ä¼šå·²ç»å› è¿™æ ·æˆ– 那样的方å¼å®Œå…¨å´©æºƒäº†ã€‚政府ã€å›½å®¶å’Œæƒå¨æ˜¯è¿‡åŽ»çš„æ¦‚å¿µï¼Œ ä»¥åŠæ–‡æ˜Žç”Ÿæ´»çš„æ‰€æœ‰ä¾¿åˆ©è®¾æ–½ã€‚因此,本指å—å°† å‘Šè¯‰æ‚¨å¦‚ä½•é€šè¿‡é‡æ–°åˆ›é€ è¿‡åŽ»çš„è¡Œä¸šå’ŒæŠ€æœ¯ æ¥æ”¹å–„自己的生活,从而改å˜è¿™ç§çŠ¶å†µã€‚ +book.starter.title2=ç…¤å’ŒèŠ¥å­æ°” +book.starter.page2=虽然无法预测世界末日åŽçš„实际状æ€ï¼Œ 但目å‰å½¢å¼çš„æˆ˜äº‰å’Œå·¥ä¸šä¸å¤ªå¯èƒ½æ²¡æœ‰ç»“æŸã€‚ ä¸ºäº†ä¿æŠ¤è‡ªå·±çš„è‚ºéƒ¨ï¼Œä¸€ç§æœ‰æ•ˆä¸”廉价的方法是 在§L布§r上å°ä¾¿ï¼Œåˆ¶ä½œä¸€ä¸ªÂ§L防毒é¢å…·Â§r, 以使你å…å—ç…¤å°˜æˆ–èŠ¥å­æ°”的伤害. +book.starter.title3=é“砧和锻压机 +book.starter.page3=开始工业振兴的精髓是§l砧§r和§lç«åŠ›é”»åŽ‹æœºÂ§r. é“ç §å°†å…è®¸æ‚¨æ‰‹åŠ¨ç»„åˆæ—©æœŸæœºæ¢°ï¼Œå¦‚组装机, 而ç«åŠ›é”»åŽ‹æœºå°†å…许您制作 无法用é“ç §åˆ¶ä½œçš„æ¿æã€ç”µçº¿å’Œç”µè·¯. book.starter.title4=æ¨¡æ¿ -book.starter.page4=ä¸ºäº†å°†é‡‘å±žå†²åŽ‹æˆæœ‰ç”¨çš„ 形状,ç»„è£…æˆæœºå™¨å¹¶è¿›è¡ŒåŒ– å­¦å应,您需è¦åˆ›å»ºä¸€ä¸ª §læœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹Â§ræ¥åˆ¶é€ å³ 侧显示的å„ç§å†²åŽ‹å’Œæ¨¡æ¿. -book.starter.title5=æ‹¾è’ -book.starter.page5=æ ¹æ®æœ€åˆçš„世界末日事件对世界现有建筑的破å程度, 你有å¯èƒ½ç›´æŽ¥ä»Žä¸­å›žæ”¶è®¸å¤šæœ‰ç”¨çš„ææ–™å’Œæœºå™¨. é’¢é“等金属åˆé‡‘, 电路等零件, 甚至核电站的å¯è£‚å˜ç‰©è´¨éƒ½å¯èƒ½åœ¨ç­‰ç€ä½ . 然而, è¦å°å¿ƒæŸäº›åºŸå¢Ÿ, 因为那里å¯èƒ½æ½œä¼ç€è¿‡åº¦çš„å±é™©, å°±åƒè‰ä¸›ä¸­çš„蛇一样; ç­‰ç€ç”¨è¾å°„, é™·é˜±æˆ–å…¶ä»–æ— æ³•å½¢å®¹çš„ææ€–袭击你... +book.starter.page4=ä¸ºäº†å°†é‡‘å±žå†²åŽ‹æˆæœ‰ç”¨çš„ 形状ã€ç»„装机械和执行 化学å应,您需è¦åˆ›å»º 一个§Læœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹Â§r, 以创建å³ä¾§æ˜¾ç¤ºçš„ å„ç§é”»æ¨¡ä»¥åŠé…方。 +book.starter.title5=废墟探索 +book.starter.page5=æ ¹æ®æœ€åˆçš„世界末日事件对世界现有结构的影å“程度, 有å¯èƒ½ç›´æŽ¥ä»Žä¸­æŠ¢æ•‘å‡ºè®¸å¤šæœ‰ç”¨çš„ææ–™å’Œæœºå™¨ã€‚ é’¢é“等金属åˆé‡‘ã€ç”µè·¯ç­‰éƒ¨ä»¶ï¼Œç”šè‡³æ ¸ç”µç«™çš„ è£‚å˜ææ–™éƒ½å¯èƒ½åœ¨ç­‰ç€ä½ ã€‚ 然而,è¦å°å¿ƒæŸäº›åºŸå¢Ÿï¼Œå› ä¸ºé‚£é‡Œå¯èƒ½æ½œä¼ç€è¿‡åº¦çš„å±é™©ï¼Œ å°±åƒè‰ä¸›ä¸­çš„蛇一样; 等待ç€ç”¨è¾å°„ã€é™·é˜±æˆ–æ— æ³•å½¢å®¹çš„ææ€–袭击你... book.starter.title6=早期机械 -book.starter.page6a=æ‚¨åº”è¯¥é¦–å…ˆç»„è£…çš„ä¸¤å°æœºå™¨æ˜¯Â§l高炉§r 和§lè£…é…æœºÂ§r. å‰è€…å°†å…许您制造åˆé‡‘, 如§l钢§r, §l紫铜§r, 和§l高级åˆé‡‘§r; 你需è¦å°†è¿™äº›é‡‘属用于机器的机身, 电路的布线, 先进的电ç£é“等等. -book.starter.page6b=è£…é…æœºå°†ç”¨äºŽåˆ¶é€ æœ¬æŒ‡å—中æè¿°çš„几乎所有其他机器. 您需è¦ä¸€ä¸ªç”µæº, 如§lç«åŠ›Â§r§lå‘电机§r或§l太阳能锅炉§r. -book.starter.page7a=§l粉碎机§r以åŠä¸€å¯¹ç²‰ç¢Žæœºåˆ€ç‰‡å°†éžå¸¸æœ‰ç”¨, å¯ä»¥é€šè¿‡ç²‰ç¢Žæˆå¯å†¶ç‚¼çš„粉末, å°†å¤§å¤šæ•°çŸ¿çŸ³çš„äº§é‡æé«˜ä¸€å€. è¿™äº›ç²‰æœ«å¯¹äºŽå¼€å§‹ä¸ºåˆæˆå„ç§æœºå™¨è€Œåˆ¶é€ çš„电路 也至关é‡è¦,例如§l增强§r和§l超频§r电路. -book.starter.page7b=使用您的新机器, 您å¯ä»¥ç»„装出§l化工装置§r, ç”¨äºŽåˆæˆæ›´å¥½çš„电路, æ··å‡åœŸ, 石化产å“ç­‰. +book.starter.page6a=您应首先装é…çš„ä¸¤å°æœºå™¨æ˜¯Â§l高炉§r和§lè£…é…æœºÂ§r. å‰è€…å…许您制造åˆé‡‘,如§L钢§rã€Â§l工业级铜§r和§l高级åˆé‡‘§rï¼› 你需è¦å°†è¿™äº›é‡‘属用于机器的机身〠电路的布线ã€é«˜çº§ç”µç£é“ç­‰. +book.starter.page6b=汇编程åºå°†ç”¨äºŽåˆ›å»ºæœ¬æŒ‡å—中æè¿°çš„几乎所有其他机器. 您需è¦ä¸€ä¸ªç”µæºï¼Œå¦‚§Lç«åŠ›Â§r§Lå‘电机§r或§L太阳能锅炉§r. +book.starter.page7a=§l粉碎机§r以åŠä¸€å¯¹ç²‰ç¢Žæœºåˆ€ç‰‡å°†ä¼šéžå¸¸æœ‰ç”¨ï¼Œ 能将大多数矿石粉碎æˆå¯ç†”ç‚¼çš„ç²‰æœ«ï¼Œä½¿å…¶äº§é‡æé«˜ä¸€å€. 这些粉末对于开始为å„ç§æœºå™¨åˆ¶ä½œç”µè·¯ä¹Ÿè‡³å…³é‡è¦ï¼Œ 例如§l增强电路§r和§l超频电路§r。 +book.starter.page7b=使用您的新机器,您å¯ä»¥åˆ›å»ºÂ§L化工厂§r, ç”¨äºŽåˆæˆæ›´å¥½çš„ç”µè·¯ã€æ··å‡åœŸæˆ–进行石化产å“加工等。 book.starter.title8=黑金 -book.starter.page8a=使用§l石油§l储层§r§l探测仪§r, 您å¯ä»¥é€šè¿‡æµ‹é‡ä¸€ä¸ªåŒºåŸŸ æ¥å‘现地下石油沉积物以 放置§læ¢å¼æŠ½æ²¹æœºÂ§r或 §l石油钻井塔§r. è®°ä½,石油储备会éšç€æ—¶é—´ 的推移而耗尽. +book.starter.page8a=使用§l石油§l储层§r§l探测仪§r, 您å¯ä»¥é€šè¿‡æµ‹é‡ä¸€ä¸ªåŒºåŸŸ æ¥å‘现地下的油岩以 放置§l石油钻机§r或 §l钻油塔§ræ¥å¼€é‡‡ è®°ä½,石油储备会éšç€æ—¶é—´ 的推移而耗尽 book.starter.page8b=在§l炼油厂§r中æç‚¼å’Œåˆ†ç¦»çŸ³æ²¹ æˆåˆ†ä¹‹å‰,你必须在§l锅炉§r中将 石油加热至300°C. -book.starter.title9=石油化工 -book.starter.page9=使用§l化工厂§r, §l分é¦Â§r§l塔§r和§l催化裂化§r§l塔§r, ä½ å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“. §l催化裂化§r§l塔§r, å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“. 例如:§lèšåˆç‰©Â§r或§l电木§r, è€ç”¨åˆæŸ”性的塑料; §l德什§r, 一ç§éžå¸¸è€ç”¨å’Œè€çƒ­çš„稀土金属åˆé‡‘; §l固体燃料§r, å¯ç‡ƒçƒ§èŽ·å–能é‡; 甚至是§l液体燃料§r, 比如§l汽油§r, §l柴油§r, §l煤油§r等等. -book.starter.title10=高级机械 -book.starter.page10=通过一套æˆç†Ÿçš„石油加工系统,您å¯ä»¥åˆ¶é€ Â§l离心机§r, 这将使矿石的产é‡å¢žåР䏉å€; §l矿物§l结晶机§rå°† 矿石结晶åŽ,产é‡å°†è¿›ä¸€æ­¥æé«˜; 以åŠÂ§lSILEXåŒä½ç´ æ¿€å…‰åˆ†ç¦»å®¤+§lFEL§r, 这两个现代工程的奇迹å¯ä»¥è½»æ¾åœ°åˆ†ç¦»ææ–™çš„åŒä½ç´ . ä½ éœ€è¦æ›´å¤šçš„èƒ½é‡æ¥é©±åŠ¨è¿™äº›; å¯é€šè¿‡Â§l柴油å‘电机§r,§l工业å‘电机§r, 甚至核ååº”å †ç­‰æ¥æºèŽ·å–æ›´å¤šçš„能é‡. -book.starter.title11=特殊岩层 -book.starter.page11=在你行走的地é¢ä¹‹ä¸‹ï¼Œæœ‰å‡ ä¸ªè‡ª ç„¶å½¢æˆçš„§l岩层§r,或者说特殊的矿 层和岩层. §l片岩地层§r是è“色的å«é”‚层,填充 有铀,é“,铜,石棉和其他矿石å¯ä¾› 你自己使用. §læ·±æ¿å²©å±‚§r嫿œ‰å¤§é‡ç¨€æœ‰çŸ¿ç‰©, 如§l锆§r和§l硼§r,但 需è¦ç‚¸è¯æ‰èƒ½é‡‡é›†. +book.starter.title9=çŸ³æ²¹åŒ–å·¥äº§å“ +book.starter.page9=使用§l化工厂§r, §l分é¦Â§r§l塔§r和§l催化裂化§r§l塔§r, ä½ å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“. §l催化裂化§r§l塔§r, å¯ä»¥å°†åˆ†ç¦»å‡ºçš„æ²¹è½¬åŒ–为å„ç§æœ‰ç”¨çš„产å“。 例如:§lèšåˆç‰©Â§r或§l电木§r, è€ç”¨åˆæŸ”性的塑料; §lDesh§r, 一ç§éžå¸¸è€ç”¨å’Œè€çƒ­çš„稀土金属åˆé‡‘; §l固体燃料§r, å¯ç‡ƒçƒ§èŽ·å–能é‡; 甚至是§l液体燃料§r, 比如§l汽油§r, §l柴油§r, §l煤油§r等等。 +book.starter.title10=先进的机械 +book.starter.page10=通过一套æˆç†Ÿçš„石油加工系统,您å¯ä»¥åˆ¶é€ Â§l离心机§r, 这将使矿石的产é‡å¢žåР䏉å€; §l矿物§l结晶机§rå°† 矿石结晶åŽ,产é‡å°†è¿›ä¸€æ­¥æé«˜; 以åŠÂ§lSILEXåŒä½ç´ æ¿€å…‰åˆ†ç¦»å®¤+§lFEL§r, 这两个现代工程的奇迹å¯ä»¥è½»æ¾åœ°åˆ†ç¦»ææ–™çš„åŒä½ç´ . ä½ éœ€è¦æ›´å¤šçš„èƒ½é‡æ¥é©±åŠ¨è¿™äº›; å¯é€šè¿‡Â§l柴油å‘电机§r,§l工业å‘电机§r, 甚至核ååº”å †ç­‰æ¥æºèŽ·å–æ›´å¤šçš„能é‡ã€‚ +book.starter.title11=特殊地层 +book.starter.page11=在你行走的地é¢ä¹‹ä¸‹ï¼Œæœ‰å‡ ä¸ª 自然形æˆçš„§l岩层§r,或者说特殊的 矿层和岩层。 §l片岩地层§r是è“色的å«é”‚层, 其中有铀ã€é“ã€é“œã€çŸ³æ£‰å’Œå…¶ä»–矿石 å¯ä¾›ä½ ä½¿ç”¨ã€‚ §læ·±æ¿å²©å±‚§r嫿œ‰å¤§é‡ç¨€æœ‰çŸ¿ç‰©, 如§l锆§rã€Â§l硼§r和§l朱砂§r等, 但你需è¦ç‚¸è¯æ‰èƒ½é‡‡é›† book.starter.title12=è¾å°„ -book.starter.page12a=§o本书其余部分将讨论与§oè¾å°„有关的问题. 为了您和其他人的安全,我将æä¾›Â§oä¸€äº›å»ºè®®ä»¥è¯´æ˜Žå¦‚ä½•ç¼“è§£å’Œå¤„ç†æš´éœ²äºŽæ­¤çš„风险.§r -book.starter.page12b=充分暴露在è¾å°„中会导致身体伤害. 第一步是预防; 一定è¦é™åˆ¶æŽ¥è§¦ï¼Œå¹¶ç©¿æˆ´é˜²æŠ¤è£…备,如§l防è¾å°„套装§r, æˆ–åœ¨è¡£æœæˆ–盔甲上加装§l防è¾å°„覆层/涂料§r; 你也å¯ä»¥æœç”¨Â§lRad-X防è¾å°„è¯Â§ræ¥é™åˆ¶ä½ çš„è¾å°„é‡. 多äºäº†çŽ°ä»£åŒ»å­¦ï¼Œç¬¬äºŒæ­¥å¯ä»¥åœ¨å¿…è¦æ—¶ç§»é™¤; 例如,§l玩家§l去污器§r将缓慢å‡å°‘èº«ä½“å¸æ”¶çš„è¾å°„. §l消è¾å®Â§r还å¯ä»¥ç”¨ä½œæš´éœ²åŽé¢„防,快速有效地逆转 电离è¾å°„对身体造æˆçš„æŸå®³. +book.starter.page12a=本书其余部分将讨论与è¾å°„有关的问题。 为了您和他人的安全,我将æä¾›ä¸€äº›å»ºè®®ä»¥è¯´æ˜Žå¦‚ä½•ç¼“è§£å’Œå¤„ç†æš´éœ²äºŽæ­¤çš„风险。 +book.starter.page12b=充分暴露在è¾å°„中会导致身体伤害. 第一步是预防; 一定è¦é™åˆ¶æŽ¥è§¦ï¼Œå¹¶ç©¿æˆ´é˜²æŠ¤è£…备,如§l防è¾å°„套装§r, æˆ–åœ¨è¡£æœæˆ–盔甲上加装§l防è¾å°„覆层/涂料§r; 你也å¯ä»¥æœç”¨Â§lRad-X防è¾å°„è¯Â§ræ¥é™åˆ¶ä½ çš„è¾å°„é‡. 多äºäº†çŽ°ä»£åŒ»å­¦ï¼Œç¬¬äºŒæ­¥å¯ä»¥åœ¨å¿…è¦æ—¶ç§»é™¤; 例如,§l玩家§l去污器§r将缓慢å‡å°‘èº«ä½“å¸æ”¶çš„è¾å°„. §l消è¾å®Â§r还å¯ä»¥ç”¨ä½œæš´éœ²åŽé¢„防,快速有效地逆转 电离è¾å°„对身体造æˆçš„æŸå®³ã€‚ book.starter.title13=铀浓缩 -book.starter.page13=æ ¸å应堆的燃料有几个简å•的选择; 例如,§l天然铀§r或§lé’燃料§r. 然而, 如果你寻找更强力的东西,你å¯ä»¥è®¾ç½®ä¸¤å°Â§l气体离心机§r 的浓缩级è”,用剩余的§lé“€-238§r生产§l铀燃料§r. 你必须将天然铀转化为§l黄饼§rï¼Œç„¶åŽæ˜¯Â§l六氟化§l铀§r. +book.starter.page13=æ ¸å应堆的燃料有几个简å•的选择; 例如,§l天然铀§r或§lé’燃料§r。 然而, 如果你寻找更强力的东西,你å¯ä»¥è®¾ç½®ä¸¤å°Â§l气体离心机§r 的浓缩级è”,用剩余的§lé“€-238§r生产§l铀燃料§r. 你必须将天然铀转化为§l黄饼§rï¼Œç„¶åŽæ˜¯Â§l六氟化§l铀§r. book.starter.title14=èŠåŠ å“¥å应堆 -book.starter.page14=或者,您å¯ä»¥ä½¿ç”¨Â§lèŠåŠ å“¥å应堆§r从天然铀中增殖出 §lå应堆级钚§rï¼Œè¿™æ˜¯ä¸€ç§æ›´å¼ºå¤§çš„燃料. 通过堆å çŸ³å¢¨å—并在其中钻孔,您å¯ä»¥å°†ç‡ƒæ–™æ£’æ’入钚 å’Œä¸­å­æºæ£’,例如§lé•­226-é“䏭孿ºÂ§r,以开始å应. ç¡®ä¿æµ‹è¯•你的设计;为防止过热, å¯èƒ½éœ€è¦éš”开或é™åˆ¶çŸ³å¢¨å—的数é‡. +book.starter.page14=或者,您å¯ä»¥ä½¿ç”¨Â§lèŠåŠ å“¥å应堆§r从天然铀中增殖出 §lå应堆级钚§rï¼Œè¿™æ˜¯ä¸€ç§æ›´å¼ºå¤§çš„燃料. 通过堆å çŸ³å¢¨å—并在其中钻孔,您å¯ä»¥å°†ç‡ƒæ–™æ£’æ’入钚 å’Œä¸­å­æºæ£’,例如§lé•­226-é“䏭孿ºÂ§r,以开始å应. ç¡®ä¿æµ‹è¯•你的设计;为防止过热, å¯èƒ½éœ€è¦éš”开或é™åˆ¶çŸ³å¢¨å—的数é‡ã€‚ book.starter.title15=ZIRNOX锆诺克斯 -book.starter.page15=最终,你å¯ä»¥åˆ¶é€ ä½ çš„第一个§o真正§rçš„èƒ½æºæ¥æº: §lZIRNOX§ræ ¸å应堆. ä¸Žå…¶ä»–èƒ½é‡æºç›¸æ¯”,核ååº”å †éœ€è¦æ›´å¤šçš„准备; é¦–å…ˆï¼Œä½ éœ€è¦æœ‰ä¸€ä¸ªå¼ºæ‚的水æºï¼Œæ¯”如§lé‡åž‹Â§læ— é™æ°´ç½Â§r. è¦ä»Žå应堆堆芯中排出热é‡å¹¶å°†æ°´ç…®æ²¸æˆè’¸æ±½, 你需è¦è¶³å¤Ÿçš„§l二氧化碳§r. ä½ åªéœ€è¦è¶³å¤Ÿçš„压力, ä¸è¦è®©åŽ‹åŠ›Â§o太§r大! 你还需è¦ä¸‰ä¸ªè’¸æ±½æ¶¡è½®æœºæ¥åˆ©ç”¨äº§ç”Ÿçš„蒸汽æ¥åˆ¶é€ èƒ½é‡; §l蒸汽§l轮机§r或§l大型工业§l汽轮机§r将是最佳的. 最åŽï¼Œéœ€è¦ä¸€ä¸ªÂ§l冷å‡å™¨Â§r或§l冷å´å¡”§ræ¥å°†æ®‹ä½™è’¸æ±½å†·å‡æˆæ°´, 在这个冷å´å›žè·¯ä¸­å¯ä»¥å°†å…¶æŽ’空或回收. +book.starter.page15=最终,你å¯ä»¥åˆ¶é€ ä½ çš„第一个§o真正§rçš„èƒ½æºæ¥æº: §lZIRNOX§ræ ¸å应堆. ä¸Žå…¶ä»–èƒ½é‡æºç›¸æ¯”,核ååº”å †éœ€è¦æ›´å¤šçš„准备; é¦–å…ˆï¼Œä½ éœ€è¦æœ‰ä¸€ä¸ªå¼ºæ‚的水æºï¼Œæ¯”如§lé‡åž‹Â§læ— é™æ°´ç½Â§r. è¦ä»Žå应堆堆芯中排出热é‡å¹¶å°†æ°´ç…®æ²¸æˆè’¸æ±½, 你需è¦è¶³å¤Ÿçš„§l二氧化碳§r. ä½ åªéœ€è¦è¶³å¤Ÿçš„压力, ä¸è¦è®©åŽ‹åŠ›Â§o太§r大! 你还需è¦ä¸‰ä¸ªè’¸æ±½æ¶¡è½®æœºæ¥åˆ©ç”¨äº§ç”Ÿçš„蒸汽æ¥åˆ¶é€ èƒ½é‡; §l蒸汽§l轮机§r或§l大型工业§l汽轮机§r将是最佳的. 最åŽï¼Œéœ€è¦ä¸€ä¸ªÂ§l冷å‡å™¨Â§r或§l冷å´å¡”§ræ¥å°†æ®‹ä½™è’¸æ±½å†·å‡æˆæ°´, 在这个冷å´å›žè·¯ä¸­å¯ä»¥å°†å…¶æŽ’空或回收。 book.starter.title16=结论 book.starter.page16=如果你已ç»èµ°åˆ°äº†è¿™ä¸€æ­¥ï¼Œä½ å·²ç»èµ°åœ¨é‡å»ºæ–‡æ˜Žå¤§é“上了. ä½ å·²ç»æˆåŠŸåœ°ç”¨æ ¸èƒ½, çŸ³æ²¹åŒ–å·¥ç­‰é‡æ–°åˆ¶é€ äº†ä¸–界末日å‰çš„那些先进机器. 我ä¸çŸ¥é“你将如何利用这些新å‘现的科技, 但我个人希望你利用这些优势是为了自己和他人的利益 - 或者至少是为了自å«. å†è§! book.starter.title18=关于作者 -book.starter.page18=væråªæ˜¯ä¸€ä¸ªè¢«å›°åœ¨"传声头åƒ"的§o《一生一次》§r中的 ç°è‰²è™šç©ºä¸­å¤ªä¹…的人. 有一次, ä»–å‘现了一扇工作室的门, 但令他沮丧的是, ä»–å‘现那是一个纸æ¿å‰ªå‡ºæ¥çš„. - - -book_lore.author= %s è‘— +book.starter.page18=v?råªæ˜¯ä¸€ä¸ªè¢«å›°åœ¨"传声头åƒ"的§o《一生一次》§r中的 ç°è‰²è™šç©ºä¸­å¤ªä¹…的人. 有一次, ä»–å‘现了一扇工作室的门, 但令他沮丧的是, ä»–å‘现那是一个纸æ¿å‰ªå‡ºæ¥çš„ +#book.rbmk.cover=HOW 2 RBMK:$The Basics$of Reactor$Construction +#book.rbmk.title1=Introduction +#book.rbmk.page1=The §lRBMK§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. +#book.rbmk.title2=Heat +#book.rbmk.page2=As the reactor operates, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a §lsteam channel§r which cools the reactor and produces steam. +#book.rbmk.title3=Fuel Rod +#book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the §lfuel§r used. +#book.rbmk.title4=Control Rod +#book.rbmk.page4=The §lcontrol rod§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. +#book.rbmk.title5=Control Rod - Usage +#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the §lRBMK console§r. The buttons on the right allow for manual insertion in increments of 25%%. +#book.rbmk.title6=Automatic Control Rod +#book.rbmk.page6=§lAutomatic control rods§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. +#book.rbmk.title7=Steam Channel +#book.rbmk.page7=The §lsteam channel§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. +#book.rbmk.title8=Neutron Reflector +#book.rbmk.page8=The §lneutron reflector§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. +#book.rbmk.title9=Neutron Absorber +#book.rbmk.page9=The §lneutron absorber§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. +#book.rbmk.title10=Graphite Moderator +#book.rbmk.page10=The §lgraphite moderator§r will convert fast neutrons passing through it into slow neutrons. Most fuels fission into fast neutrons while needing slow neutrons to split, so using moderators is strongly recommended. +#book.rbmk.title11=Structural Column +#book.rbmk.page11=The §lstructural column§r will not interfere with neutrons, nor does it have special uses. It is recommended to fill the reactor with structural columns where no other parts will be, because structural columns are capable of transporting heat. +#book.rbmk.title12=Console +#book.rbmk.page12=The §lRBMK console§r lets you control the reactor from afar. Using the §lRBMK§r §lconsole linking device§r on an RBMK part and then the console will link the reactor to the console. The console can only manage 15x15 parts, for larger reactors you might want to use multiple consoles. +#book.rbmk.title13=Console Usage +#book.rbmk.page13=Clicking on the parts will select and deselect them. Using the colored buttons, you can quickly select all control rods of that color group. Button 'A' will select all control rods, 'X' will deselect all. +#book.rbmk.page14=Entering a number 0-100 in the green box and then hitting the button next to it will set all selected control rods to this position. Button 'AZ-5' will cause all control rods to fully insert. +#book.rbmk.title15=Fuel +#book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. +#book.rbmk.title16=Meltdown +#book.rbmk.page16=§4§lAvoid. +book_lore.author=ç”±%s book_lore.test.name=测试 book_lore.test.author=那个家伙 -book_lore.test.page.0=>在我开始之å‰,请å…许我 æ¾„æ¸…æˆ‘ä¸æ˜¯åŒæ€§æ‹. >åšæˆ‘ >今晚 >18点 >è¶æˆ‘的父æ¯èµ°äº†å‡ å¤©ï¼Œå’Œæˆ‘最好 的朋å‹ä¸€èµ·å‡ºåŽ»çŽ© >æˆ‘ä»¬å·²ç»æ˜¯ä¸€å¹´çš„好朋å‹äº† >å–äº†ç‚¹é…’ï¼ŒçŽ©äº†å¾ˆå¤šç”µå­æ¸¸æˆï¼Œ 还点了一个比è¨é¥¼ >我们玩得很开心 >在晚上的æŸä¸ªæ—¶åˆ»ï¼Œæ¯”如9点 å·¦å³ï¼Œä»–开了一个éžå¸¸æœ‰è¶£çš„ 玩笑,我ä¸è®°å¾—了, 但我知é“这让我们都笑得很开心 > 我ä¸å‡æ€ç´¢åœ°ç”¨å³æ‰‹ -book_lore.test.page.1=拂过他åŠå·æ›²çš„黑å‘, 说他真是一个有趣的男孩 >他脸红了 >我æ„识到我很慌乱 >我们有点太亲近了 >çªç„¶ä»–å»äº†æˆ‘,出于æŸç§åŽŸå›  我回å»äº†ä»– >我们åšçˆ±äº† >拥抱在一起ç¡ç€äº† >åŠå¤œé†’æ¥ï¼Œä»–的头紧贴在我的 胸å£å’Œè„–å­ä¸Š >这感觉很好, ä½†æˆ‘ä»æ˜¯ä¸ªé’¢é“ç›´ç”· -book_lore.test.page.2=我在他在我怀里ç¡ç€çš„æ—¶å€™ 写了这个. 我怎么能让我最好的 朋å‹å¤±æœ›å‘¢? 我å¯ä¸æƒ³æˆä¸ºä¸€ä¸ª [弱智] /b/ -book_lore.test.page.3=4 +book_lore.test.page.0=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual +book_lore.test.page.1=>你好,在我开始之å‰ï¼Œè®©æˆ‘æ¾„æ¸…æˆ‘ä¸æ˜¯åŒæ€§æ‹ã€‚>åšæˆ‘>今天晚上>18>和我最好的朋å‹å’Œæˆ‘的父æ¯å‡ºåŽ»çŽ©äº†å‡ å¤©>æˆ‘ä»¬å·²ç»æ˜¯æœ€å¥½çš„æœ‹å‹ä¸€å¹´äº†>å–äº†ç‚¹é…’ï¼ŒçŽ©äº†å¾ˆå¤šç”µå­æ¸¸æˆï¼Œè¿˜ç‚¹äº†ä¸€ä»½æŠ«è¨>我们玩得很开心>在晚上的æŸä¸ªæ—¶å€™ï¼Œæ¯”如9点左å³ï¼Œä»–开了一个éžå¸¸æœ‰è¶£çš„玩笑,我ä¸è®°å¾—了,但我知é“这让我们俩都笑得很厉害>æ²¡æœ‰æˆ‘æƒ³æˆ‘ç”¨å³æ‰‹æ‘¸äº†æ‘¸ä»–é‚£åŠå·æ›²çš„黑å‘,然åŽå«ä»–一个有趣的男孩>他脸红了>我æ„识到我很慌张>我们有点亲密>çªç„¶ä»–å»äº†æˆ‘,出于æŸç§åŽŸå› æˆ‘åˆå»äº†ä»–>我们åšçˆ±>拥抱在一起ç¡ç€äº†>åŠå¤œé†’æ¥æ—¶ï¼Œä»–的头贴在我的胸部和颈部>æ„Ÿè§‰å¾ˆå¥½ï¼Œä½†æˆ‘ä¸æ˜¯åŒæ€§æ‹ +book_lore.test.page.2=他在我怀里ç¡ç€æ—¶ï¼Œæˆ‘正在打字。我怎么æ‰èƒ½è®©æˆ‘最好的朋å‹å¤±æœ›å‘¢ï¼Ÿæˆ‘䏿ƒ³æˆä¸º[编辑]/b/ +book_lore.test.page.3=3 book_lore.test.page.4=4 - book_lore.book_iodine.name=笔记 book_lore.book_iodine.author=戴夫 -book_lore.book_iodine.page.0=好å§ï¼Œä½ ä¸ä¼šç›¸ä¿¡çš„, 但自从两周å‰ç¦»å¼€åŽï¼Œè¿™ä½è€äººç»ˆäºŽå†æ¬¡å‡ºçŽ°äº†ã€‚æ›´ä»¤äººæƒŠè®¶çš„æ˜¯ï¼Œä»–ç«Ÿç„¶å†³å®šæŠŠä»–ä»¬åœ¨å³¡è°·é‡Œçš„æ‰€ä½œæ‰€ä¸ºæ³„éœ²å‡ºåŽ»: -book_lore.book_iodine.page.1=显然,研å‘部门的白痴们å‘现了一ç§ä¸»è¦æ˜¯æ— æœºçš„化åˆç‰©, 很åƒè‡ªç„¶ç•Œä¸­çš„æ¯’ç´ , 但è¦è®°ä½ï¼šæ¿’æ­»çš„ç»†èƒžä¼šç¹æ®–毒素并通过皮肤排出, 产生一ç§å…·æœ‰é«˜åº¦ä¼ æŸ“性的气溶胶. -book_lore.book_iodine.page.2=å°±åƒç—…毒一样, 但䏿˜¯ç—…毒. 它的æˆåˆ†å¾ˆå¥‡æ€ª, ä½ å¯ä»¥æŠŠå®ƒæ”¾åœ¨ä»»ä½•家用瓶å­é‡Œï¼Œä½†ä½ å¿…须把顺åºå¼„对. åšå£«å‘Šè¯‰æˆ‘ç¬¬ä¸€ç§æˆåˆ†æ˜¯ç²‰æœ«çŠ¶çš„ç¢˜æ™¶ä½“ï¼Œè¦æ”¾è¿›æ§½ %d - +book_lore.book_iodine.page.0=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: +book_lore.book_iodine.page.1=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: +book_lore.book_iodine.page.2=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious. book_lore.book_phosphorous.name=笔记 book_lore.book_phosphorous.author=戴夫 -book_lore.book_phosphorous.page.0=å˜¿ï¼Œåˆæ˜¯æˆ‘. 我想你收到了我最åŽçš„备忘录,åšå£«å¯¹æ­¤ä¸å¤ªé«˜å…´. 我得动作快点, ç ”å‘部门的笨蛋们现在åˆåœ¨æŠ±æ€¨äº†, å¯èƒ½æ˜¯å› ä¸ºé’±, åˆä¸€æ¬¡. 无论如何, é£Žå‘æ ‡åšå£«å‘çŽ°ç¬¬äºŒç§ -book_lore.book_phosphorous.page.1=æˆåˆ†æ˜¯çº¢ç£·, 必须将其混入 %d槽中 - +book_lore.book_phosphorous.page.0=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second +book_lore.book_phosphorous.page.1=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second book_lore.book_dust.name=笔记 book_lore.book_dust.author=戴夫 -book_lore.book_dust.page.0=当åšå£«å‘现研å‘人员ä¿ç•™äº†å‰©ä¸‹çš„一个样本时,他大å‘雷霆, 大喊大å«è¯´è¿™æ˜¯ä¸¥é‡çš„ç–忽,简直是世界末日的剧本. 我告诉他冷é™ä¸€åˆ†é’Ÿ, ç´§å¼ èµ·æ¥å¯¹ä»–的血压没有好处, å¹¶ -book_lore.book_dust.page.1=䏿˜¯è¯´ä»–还剩下很多血. 一个研å‘部的白痴在上周的通告中é€éœ²äº†æ›´å¤šä¿¡æ¯, 他们称他们那å®è´æ··åˆç‰© \"MKU\" ,鬼知é“è¿™æ˜¯å•¥æ„æ€, å®ƒå«æœ‰è´§çœŸä»·å®žçš„家用棉绒. 你能相信å—? 这是他们 -book_lore.book_dust.page.2=最å±é™©çš„呿˜Žä¹‹ä¸€è€Œå®ƒå«æœ‰ç°å°˜. 奇怪的是,他们还æåˆ°å®ƒä¼šè¿›å…¥æ§½ %d - +book_lore.book_dust.page.0=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not +book_lore.book_dust.page.1=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not +book_lore.book_dust.page.2=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most book_lore.book_mercury.name=笔记 book_lore.book_mercury.author=戴夫 -book_lore.book_mercury.page.0=好å§ï¼Œè¿™å°±è¯´å¾—通了. ä¸åŒ…括呕å的血液部分, 毒ç†å­¦æŠ¥å‘Šè¡¨æ˜Žå…¶ä¸»è¦ç±»ä¼¼äºŽæ±žä¸­æ¯’. 为什么? å› ä¸ºæˆ‘ä»¬çš„å°æ··åˆç‰©ä¹Ÿå«æœ‰æ±ž! æˆ‘åªæ˜¯æƒ³çŸ¥é“当这些东西 -book_lore.book_mercury.page.1=被身体å¤åˆ¶æ—¶ï¼Œå®ƒä»¬ä»Žå“ªæ¥? ä¸ç®¡æ€Žæ ·ï¼Œæ°´é“¶è¦è¿›å…¥æ§½ %d - +book_lore.book_mercury.page.0=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being +book_lore.book_mercury.page.1=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being book_lore.book_flower.name=笔记 book_lore.book_flower.author=戴夫 -book_lore.book_flower.page.0=还记得我在第一份备忘录中æåˆ°çš„化åˆç‰©å¤§å¤šæ˜¯æ— æœºçš„å—? 好å§ï¼Œä½ çŒœæ€Žä¹ˆç€, 那个è€å®¶ä¼™åˆ†äº«äº†ç¬¬å››ç§é…æ–™: 牵牛花, 花的一属. 就是喇å­èб! å¯èƒ½æ˜¯å› ä¸ºå®ƒçš„ç¡«å«é‡ä½Ž, ä¸ç®¡æ˜¯ä»€ä¹ˆæƒ…况, -book_lore.book_flower.page.1=其他花就是ä¸èµ·ä½œç”¨. ç‰µç‰›èŠ±è¦æ”¾å…¥æ§½ %d - +book_lore.book_flower.page.0=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, +book_lore.book_flower.page.1=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, book_lore.book_syringe.name=笔记 book_lore.book_syringe.author=戴夫 -book_lore.book_syringe.page.0=我第五æ¡ç•™è¨€çš„一个å°é™„录, 显然你必须把这些å«MKU的东西放在一个容器里. ç ”å‘人员使用的是从医疗机构购买的普通金属注射器. 我猜是多余的, 他们有æˆåƒä¸Šä¸‡çš„针头. -book_lore.book_syringe.page.1=é‡‘å±žæ³¨å°„å™¨è¦æ”¾å…¥æ§½ %d - +book_lore.book_syringe.page.0=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal +book_lore.book_syringe.page.1=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal book_lore.resignation_note.name=辞èŒä¿¡ book_lore.resignation_note.author=科斯马 -book_lore.resignation_note.page.0=管ç†å±‚昨天åˆç¼©å‡äº†æˆ‘们的 部门.那帮白痴åªèƒ½æ€ªè‡ªå·±, 我ä¸çŸ¥é“ä»–ä»¬åœ¨é‚£åœºæƒ¨è´¥åŽ è¿˜åœ¨æœŸå¾…ä»€ä¹ˆ. åˆ°åº•æ˜¯è°æ³„露了这ç§ä¿¡æ¯? 我们æŸå¤±äº†æ•°ç™¾ä¸‡ -book_lore.resignation_note.page.1=现在è€å­å¤±ä¸šäº†. æˆ‘æ˜¯é‚£ä¸ªè¢«è¦æ±‚辞èŒçš„人. 我希望你们这帮混蛋们终于 从自己的错误中å¸å–点教训, 把那根æ£å­ä»Žå±è‚¡é‡Œæ‹¿å‡ºæ¥. -book_lore.resignation_note.page.2=我星期五ä¸ä¼šå›žæ¥çš„. å‘工资就行了. - -book_lore.memo_stocks.name=内部备忘录 -book_lore.memo_stocks.page.0=投资者关系部 - $ $ 最新季度报告中æä¾›çš„æ•°æ® 存在一些明显的差异. 让财务部门进行一些调整是 è°¨æ…Žçš„åšæ³•, 所以ä¸ç”¨æœ‰ä»»ä½•顾虑. - +book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and +book_lore.resignation_note.page.1=管ç†å±‚昨天åˆå¯¹æˆ‘们的部门进行è£å‘˜äº†ã€‚é‚£ç¾¤ç™½ç—´è¦æ€ªåªèƒ½æ€ªä»–们自己,我都ä¸çŸ¥é“他们在那场惨败åŽè¿˜åœ¨æœŸå¾…什么。到底是è°ä»–妈泄露了那ç§ç¨‹åº¦çš„ä¿¡æ¯ï¼Ÿ +book_lore.resignation_note.page.2=我们æŸå¤±äº†å‡ ç™¾ä¸‡ï¼Œè€Œä¸”现在失业的还是爷。è€å­å¸Œæœ›ä½ ä»¬è¿™å¸®æ··è›‹æœ€åŽèƒ½ä»Žä½ ä»¬çš„一堆问题中学到点教训然åŽç»™çˆ·æ»šåŽ»è‡ªé—­ã€‚ +book_lore.memo_stocks.name=å…¬å¸å†…部备忘录 +book_lore.memo_stocks.page.0=投资者关系 - $ $ 最新季度报告æä¾›çš„æ•°æ®å­˜åœ¨ä¸€äº›æ˜Žæ˜¾å·®å¼‚。财务部门åšå‡ºä¸€äº›è°ƒæ•´æ˜¯è°¨æ…Žçš„,所以ä¸å¿…有任何担忧。 book_lore.memo_schrab_gsa.name=内部备忘录 -book_lore.memo_schrab_gsa.page.0=åˆåŒç®¡ç†éƒ¨ - $ $ 法律部与DLAå–得了çªç ´. 他们授予我们450亿GSA计划, 用于进一步采购和研究saralloy. æ ¹æ®ç›®å‰çš„估计 -book_lore.memo_schrab_gsa.page.1=相关业务的利润至少为 40%%, æ›´ä¸ç”¨è¯´æœªæ¥åˆåŒçš„å¯èƒ½æ€§äº†. 由于ä¿å¯†æ€§è´¨ï¼Œæ‰€æœ‰è´¢åŠ¡è¯æ® 都应ä¿å¯†. - +book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum +book_lore.memo_schrab_gsa.page.1=åˆåŒç®¡ç†è®°å½• - 法务部在与美国国防部åŽå‹¤å±€çš„谈判中å–得了çªç ´ã€‚他们批准了450亿的è”邦采购æœåŠ¡æ€»ç½²æŠ•èµ„èµ„é‡‘ç”¨äºŽå¼‚å˜é‡‘属的采购与研究。 book_lore.memo_schrab_rd.name=内部备忘录 -book_lore.memo_schrab_rd.page.0=研究与开å‘部 - $ $ 我们生产saralloyçš„ä¸»è¦æ–¹æ³•是 使用新型粒å­åŠ é€Ÿå™¨. 然而, 与产é‡ç›¸æ¯”ï¼Œèƒ½æºæˆæœ¬è¿‡é«˜. -book_lore.memo_schrab_rd.page.1=然而,Schrabaueråšå£«å‘现 äº†ä¸€ç§æ–°çš„相互作用, 称为 "å¥‡å¼‚è½»å­æŒ¯è¡",å¯ä»¥ 显著é™ä½Žæˆæœ¬. 通过一个ä¸å®Œ 全被ç†è§£çš„过程, 所æä¾›çš„电 å­é€šè¿‡ä¸€ç§ -book_lore.memo_schrab_rd.page.2=奇特的作用被转化为æžé«˜èƒ½ é‡çš„å…‰å­. è¿™æ˜¯è®¸å¤šæ—¢å®šç²’å­ è½¬åŒ–å®šå¾‹çš„æžç«¯ä¾‹å¤–, ä½†åˆæ­¥ å®žéªŒè¯æ˜Žï¼Œè¿™äº›è´¨å­è½¬å˜ä¸º 上下夸克,最终形æˆäº† saralloy. -book_lore.memo_schrab_rd.page.3=奇怪的是,原型需è¦é’¨åˆé‡‘ 和少é‡çš„ saralloy. 此外, 需è¦ä¸€ä¸ªç‰¹æ®Šçš„ç”µå®¹å™¨æ¥ æŠµæ¶ˆå‰©ä½™çš„æ­£ç”µè·. - +book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. +book_lore.memo_schrab_rd.page.1=ç ”å‘ - ç›®å‰æˆ‘们主è¦ç”Ÿäº§æ–¹æ³•是使用新型粒å­åŠ é€Ÿå™¨ã€‚ç„¶è€Œï¼Œä¸Žäº§å‡ºé‡ç›¸æ¯”ï¼Œèƒ½æºæˆæœ¬é«˜å¾—惊人。 +book_lore.memo_schrab_rd.page.2=然而,Schrabaueråšå£«å‘现了一ç§å…¨æ–°çš„ç›¸äº’ä½œç”¨â€”â€”æš‚ç§°ä¸ºâ€œå¥‡å¼‚è½»å­æŒ¯è¡â€â€”—该作用å¯ä»¥æ˜¾è‘—é™ä½Žç”Ÿäº§æˆæœ¬ã€‚é€šè¿‡ä¸€ä¸ªç›®å‰æœªè¢«å®Œå…¨ç†è§£çš„的过程,æä¾›çš„电å­è¢«ä¸€ç§å¥‡ç‰¹çš„“魔力â€è½¬åŒ–为æžé«˜èƒ½é‡çš„å…‰å­ã€‚ +book_lore.memo_schrab_rd.page.3=这是许多已明确的粒å­è½¬æ¢å®šå¾‹çš„æžç«¯ä¾‹å¤–ã€‚ä½†åˆæ­¥å®žéªŒè¯æ˜Žï¼Œè¿™äº›è´¨å­å…ˆè½¬å˜ä¸ºä¸Šä¸‹å¤¸å…‹ï¼Œæœ€ç»ˆå½¢æˆäº†å¼‚å˜é‡‘属。奇怪的是,原型机中需è¦é’¨ä¸Žå°‘é‡å¼‚å˜é‡‘属åˆé‡‘化所得到的åˆé‡‘。 book_lore.memo_schrab_nuke.name=研究报告 book_lore.memo_schrab_nuke.author=Schrabaueråšå£« -book_lore.memo_schrab_nuke.page.0=我们最近的调查使我们了 è§£äº†æ ¸çˆ†ç‚¸å¯¹ææ–™çš„å½±å“. 感谢给我们的赠款, 我们 *æ„外地* 测试了 æˆ‘ä»¬ä»Žé“€ç›´æŽ¥åˆæˆ saralloyçš„ç†è®º. -book_lore.memo_schrab_nuke.page.1=以å‰åªæœ‰æˆ‘们的回旋加速 器真正创造了saralloy. 然而,在我们在埃弗沃彭 çš„åœ°ä¸‹æ‹æ‘„中,在现场的 铀矿中å‘现了微é‡çš„saralloy. 附近所有纯金属铀都å‘生了 裂å˜. -book_lore.memo_schrab_nuke.page.2=因此,如果有足够多的铀 矿石集中在炸è¯å‘¨å›´ï¼Œ 甚至å¯èƒ½æ˜¯ä¸€æžšå¯Œå«å¯è£‚ å˜ææ–™çš„è„弹,人们å¯ä»¥ ç†è®ºä¸Šåˆ¶é€ å‡ºè¶³å¤Ÿå¤šçš„ saralloyæ¥äººå·¥æ”¶é›†. - +book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. +book_lore.memo_schrab_nuke.page.1=æœ€è¿‘çš„è°ƒæŸ¥ä½¿æˆ‘ä»¬äº†è§£äº†æ ¸çˆ†ç‚¸å¯¹ææ–™é€ æˆçš„å½±å“。多äºå¤–界给我们的赠款,我们*æ„外地*æµ‹è¯•äº†é“€ç›´æŽ¥åˆæˆå¼‚å˜é‡‘属的ç†è®ºã€‚ +book_lore.memo_schrab_nuke.page.2=è€Œæ­¤å‰æˆ‘们åªåœ¨å›žæ—‹åŠ é€Ÿå™¨ä¸­åˆ¶ä½œå‡ºå¼‚å˜é‡‘属。但这次,我们在对Everwerpençš„åœ°ä¸‹æ‹æ‘„中,在该地点的铀矿石中å‘现了微é‡çš„异å˜é‡‘属。其附近所有的纯金属铀则都å‘生了裂å˜ã€‚ book_lore.bf_bomb_1.name=ç§äººç¬”è®° book_lore.bf_bomb_1.author=M. 波特 -book_lore.bf_bomb_1.page.0=花了足够长的时间, 但我的转会被接å—了. 那些应届毕业生已ç»å¾ˆéš¾åº”付了, æ›´ä¸ç”¨è¯´é‚£äº›ä¸ä¸“业的领导了. $ è¿™è¿˜ä¸æ˜¯æ‰€æœ‰çš„å¥½æ¶ˆæ¯ - 这个实验室éšçž’了更多的细节, 我ä¸éœ€è¦åœ¨å¦ä¸€ä¸ªç¥žå¥‡çš„æ–°å‘现上碰到更多的混乱. -book_lore.bf_bomb_1.page.1=当然是这样. 毕业生们有他们的疑虑 (考虑到他们的眼ç›å¤šä¹ˆçº¯çœŸï¼ŒçœŸæ˜¯ä»¤äººæƒŠè®¶), 但我唯一... 有能力的? åŒäº‹å®žé™…上拿到了项目介ç»èµ„æ–™. 一定比我想象的有更多的关系. 他的备忘录令人沮丧: -book_lore.bf_bomb_1.page.2=显然, 他们从å物质和边缘åŒä½ç´ çš„æ··åˆç‰©ä¸­åˆå‘现了 å¦ ä¸€ ç§ ç¥žå¥‡çš„ç‰©è´¨. å°å†Œå­ä¸Šç§°ä¹‹ä¸º "SWIRLMAT" - é¬¼çŸ¥é“æ˜¯å•¥ - 就这样. 难怪他们想è¦ä¸€ä¸ªç†è®ºç‰©ç†å­¦å®¶, -book_lore.bf_bomb_1.page.3=他们甚至还ä¸çŸ¥é“它是什么. ä¸ç®¡æ€Žæ ·, 实际上任何一份工作都会比我以å‰çš„èŒä½å¥½, 我ä¸èƒ½å¯¹è¿™äº›ç²—糙之处抱怨太多. - +book_lore.bf_bomb_1.page.0=Took long enough, but my transfer was accepted. Those new grads were already hard to handle, let alone all the unprofessionalism of the lead. $ Not all good news - this lab was withholding further detail, and I didn't need more chaos over another magic new discovery. +book_lore.bf_bomb_1.page.1=Of course that was the case. The alumni had their doubts (surprising, considering how bright-eyed they were), but my only... competent? colleague actually got his hands on the primer hand-out. Must have more connections than I thought. His memo is discouraging: +book_lore.bf_bomb_1.page.2=apparently, there's yet ANOTHER miracle material that they prodded out of some concoction of antimatter and a fringe isotope. The brochure calls it "SWIRLMAT" - hell if I know - and that's it. No wonder they wanted a theoretical physicist, +book_lore.bf_bomb_1.page.3=they don't even know what it is yet. Either way, practically any job would be better than my old position, so I can't complain much about sketchiness. book_lore.bf_bomb_2.name=ç§äººç¬”è®° book_lore.bf_bomb_2.author=M. 波特 -book_lore.bf_bomb_2.page.0=尽管项目介ç»èµ„料中缺ä¹ä¿¡æ¯, ä½†æˆ‘ä»æŠ±ç€ä»–们或许了解更多的希望. 完全相åï¼ æ¯ä¸€ä½è€ç ”ç©¶å‘˜éƒ½å¯¹è¿™ç§ææ–™æŠ±æœ‰ç›²ç›®çš„ä¿¡å¿µ; 他们的主张跟圣ç»ä¼¼çš„. 我几乎无言以对. -book_lore.bf_bomb_2.page.1=但我甚至ä¸èƒ½è´£æ€ªä»–们. Swirlmat 完全ä¸åˆå¸¸ç† - 它与我以å‰è§è¿‡çš„任何其他物质都完全ä¸åŒ. å®ƒçš„å¤–è§‚å‡ ä¹Žä»¤äººææƒ§, 一团漩涡般的色彩, æ·±è‰²çš„çº¿æ¡æ¸—é€åˆ°éœ“虹绿的表é¢. -book_lore.bf_bomb_2.page.2=更糟糕的是, 这个东西是一ç§èƒ½é‡æº. 我们的样本的存在è¿å了ALARAåˆç†æœ€ä½Žå‰‚é‡åŽŸåˆ™: 实验室在它到达时被清场了, 唯一一个足够勇敢的人 (Dr. Melfyn) ç©¿ç€a级å±é™©é˜²æŠ¤æœ,åªä¸ºäº†æŠŠå®ƒæŠ¬20ç±³. -book_lore.bf_bomb_2.page.3=ç»éªŒæ•°æ®ä¹Ÿå¥½ä¸åˆ°å“ªé‡ŒåŽ», 为我们正在用它è¾å°„çš„èƒ½é‡æ‰“破热力学第一定律. 在那东西附近的任何地方 - 甚至是一米厚的铅åŽé¢ - éƒ½æ˜¯å¯æ€•çš„. 光谱分æžç»“æŸåŽï¼Œæˆ‘们迅速跑出了房间 -book_lore.bf_bomb_2.page.4=而且我们并没有从中得到什么新的东西. 科学团队中的那些白痴, 天啊, 在这一切之åŽç”šè‡³æ²¡æœ‰äº§ç”Ÿä¸€ä¸åŠ¨æ‘‡. å在那里进行这些"讨论" 坿€•çš„; 首席研究员中的一ä½åŠåŠå­ç”šè‡³æ‰¬è¨€è¯´æµ‹è¯•ç¦ä»¤å°†è¢«å–消, 这样我们就å¯èƒ½ -book_lore.bf_bomb_2.page.5=在未æ¥å‡ å‘¨å†…用这鬼玩æ„制造出炸弹, 哪个脑袋正常的人会去干这事? 真è§é¬¼, ä¸€ä¸ªç†æ™ºçš„助手 (Andrew) 给它起了个绰å·"balefire" - 因为相比之下,在ç«è‘¬æŸ´å †ä¸Šçƒ§æ­»æ›´å¥½å—. - +book_lore.bf_bomb_2.page.0=Despite the absence of information in that primer, I still had some hope they knew a bit more. Not at all. Every other senior researcher has a blind faith in this material; their propositions were practically biblical. I was near speechless. +book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no goddamn sense - it is completely unlike any other substance I've seen before. Its appearance was near frightening, a literal mass of swirling colors, with darker lines permeating through the neon green surface. +book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters. +book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy +book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be +book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. + + book_lore.bf_bomb_3.name=ç§äººç¬”è®° book_lore.bf_bomb_3.author=M. 波特 -book_lore.bf_bomb_3.page.0=我和团队å–得了一些çªç ´. ä¸»è¦æ˜¯é åˆ†ç¦» - 将我自己与那些神ç»å…®å…®çš„人隔离开æ¥è®©åœ¨è¿™é‡Œå·¥ä½œå˜å¾—更容易å¿å—. 虽然我们ä»ç„¶ä¸çŸ¥é“balefire的实际性质 (很难分æžä¼š -book_lore.bf_bomb_3.page.1=炸烂设备的样å“) ä½†äº‹å®žè¯æ˜Žå®ƒä¸Žå…¶ä»–ç‰©è´¨çš„ç›¸äº’ä½œç”¨æ˜¯å¯Œæœ‰æˆæ•ˆçš„. 值得注æ„的是, ä»–ä»¬åˆæˆäº†ä¸€ç§"æ°”æ€" å½¢å¼: 在所有人中, Andrew, 告诉我,这实际上是一ç§èƒ¶ä½“, 由悬浮在æŸç§æƒ°æ€§æ°”体中的微å°balefireé¢—ç²’ç»„æˆ -book_lore.bf_bomb_3.page.2=æ¯ä¸ªç²’å­éƒ½å……满被带正电的电离气体的'气泡'包裹, 阻止其沉é™. è°èƒ½æƒ³åˆ°è‡´å‘½çš„伽马射线有好处? åæ­£ä¸æ˜¯æˆ‘. $ 我选择ä¸åŽ»æƒ³ä»–ä»¬æ˜¯å¦‚ä½•å°†æ ·æœ¬è½¬åŒ–ä¸ºé¢—ç²’çš„ -book_lore.bf_bomb_3.page.3=, 但我ä¸èƒ½ä½Žä¼°è¿™ç§æ°”æ€balefire的效用 - 它使实验更加安全. $ 说到安全, 首席研究员 (ä»¥ä¸€ç§æ— è§†å®‰å…¨çš„行为) åšå‡ºäº†ä¸€ä¸ªå‡ ä¹Žè®©ä»–大åƒä¸€æƒŠçš„å‘现. -book_lore.bf_bomb_3.page.4=他决定让我们新胶体的一个细胞与一些éžå¸¸æ˜‚贵的å物质直接相互作用æ¥â€œæŽ¨è¿›â€å®žéªŒ: 由此产生的爆炸将它所在的桌å­å˜æˆäº†ä¸€å—è¾å°„漂白的渣å­, 在顶部雕刻出一个近乎完美的åŠçƒ -book_lore.bf_bomb_3.page.5=, 并给予头部å¥åº·å‰‚é‡çš„ARS. 我想我们现在知é“如何让它爆炸了, 但天哪, 有些人... - +book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze +book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some +book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into +book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. + + +book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through +book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people... book_lore.bf_bomb_4.name=ç§äººç¬”è®° book_lore.bf_bomb_4.author=M. 波特 -book_lore.bf_bomb_4.page.0=我就是逃é¿ä¸äº†ä»¥å‰çš„工作. 他们是唯一一个在ç»åŽ†äº†è¿™åœºæ··ä¹±ä¹‹åŽä»åœ¨æ‹›è˜çš„地方, 但我ä¸ä¼šå†å›žåˆ°é‚£ä¸ªå‘里了. $ ä»–ä»¬åªæ˜¯è¯±æƒ‘我,因为我需è¦å‡ºåŽ»ï¼Œè¦å¾ˆå¿«å‡ºåŽ». 还记得我们一周å‰é€€å‡ºçš„大气试验æ¡çº¦å—? -book_lore.bf_bomb_4.page.1=好å§, 我们实验室的负责人这一次åšå¯¹äº†. è°´è´£éšç€ä¸€æ‰¹æ–°çš„ "科学家"的加入而æ¥, åªæ˜¯ä¸ºäº†è®©æˆ‘们å¯ä»¥å°†balefire武器化. è¿™é‡Œç¼ºä¹æ‰¹åˆ¤æ€§æ€ç»´ç¡®å®žä»¤äººå›°æƒ‘ - ç¥ç¦ä»–,安德é²ç”šè‡³åœ¨ç¬¬ä¸€ä¸ªè¯¥æ­»çš„ -book_lore.bf_bomb_4.page.2=炸 å¼¹ 设 计 èµ·è‰çš„第二天就跳槽了. 那个混蛋Melfyn看起æ¥å¯¹ä»–的那些å°çŽ©æ„å¾ˆæ»¡æ„ - 也许他æºå¸¦æ ·æœ¬æ—¶è„‘å­é‡Œè¿›äº†å•¥ä¸œè¥¿? - 其中包括一些愚蠢的垃圾,使用固化的 -book_lore.bf_bomb_4.page.3=基础balefire和高压电池. $ 显然,这ç§å½¢å¼å¯¹èƒ½é‡è¾“出和激活方法或其他什么都很é‡è¦, 有点åƒå¸¸è§„核武器中的铀与钚, 但最终结果是引å‘爆炸的åˆå§‹å†²å‡». 我觉得它很有趣, 甚至很æžç¬‘. -book_lore.bf_bomb_4.page.4=所有这些都强调激活; 他们忽略了这一切的实际机制,因为他们根本ä¸çŸ¥é“它是如何工作的! 在这一点上,这å¯èƒ½å¾ˆç¥žå¥‡, 但他们ä»åœ¨è¯•图扭转和弯曲它 - åªæ˜¯ä¸ºäº†èŽ·å¾—æ›´å¤šçš„æˆ˜äº‰æ­¦å™¨. - +book_lore.bf_bomb_4.page.0=I just can't escape my old work. They're the only place that's hiring despite all this godforsaken turmoil, but I'm not going back into that hole. $ They only tempted me because I need out, fast. Remember that atmospheric testing treaty we withdrew from a week ago? +book_lore.bf_bomb_4.page.1=Well, the dipshit in charge of our lab got something right for once. The denunciation came with a flurry of new "scientists" joining, just so we could weaponize balefire. The lack of critical thought here is honestly baffling - bless him, Andrew even jumped ship the +book_lore.bf_bomb_4.page.2=second the first fucking BOMB DESIGN was drafted. That ass Melfyn looked so happy with his little mechanism - perhaps he got brainworms from carrying that sample? - which involved some stupid shit using the solidified, base balefire and an HV +book_lore.bf_bomb_4.page.3=battery. $ Apparently, the form matters for energy output and activation method or whatever, kind of like uranium versus plutonium in regular nukes, but the end result is an initial shock starting the explosion. I find it funny, hilarious even. +book_lore.bf_bomb_4.page.4=All of them place such emphasis on the activation; they ignore the actual mechanism of it all because they don't have a single clue how it works! It may as well be magic at this point, and yet they're still trying to twist and bend it - just for more weapons of war. book_lore.bf_bomb_5.name=ç§äººç¬”è®° book_lore.bf_bomb_5.author=M. 波特 -book_lore.bf_bomb_5.page.0=æˆ‘åªæ˜¯... å³ä½¿å‡ å¤©åŽä¹Ÿæ— æ³•应对. 事实上, 科学团队对安全问题的轻率æ€åº¦å·²æˆå®šå±€. $ $ Doctor Melfyn, M.S., ä¸åœ¨äº†. 也许死了. 我亲眼目ç¹äº†è¿™ä¸€åˆ‡, 在他们的试验室里. -book_lore.bf_bomb_5.page.1=我们刚刚得到了å¦ä¸€æ‰¹çº¯balefire, ä»–å·²ç»æ‰¾åˆ°äº†ç”µæ°”è®¾å¤‡å’Œèƒ½æºæ¥æµ‹è¯•ä»–çš„æè®®. 我ä¸çŸ¥é“是什么原因造æˆçš„ (电æºå¼€äº†? 他开始得太早了?), 但它似乎以令人痛苦的慢动作进行, -book_lore.bf_bomb_5.page.2=绿色的光芒åžå™¬äº†æ¡Œå­, 电池, Dr. Melfyn就站在一米外. å³ä½¿æ¡Œå­å·²ç»åŒ–æˆåœ°æ¿ä¸Šçš„一池ç¼çƒ­çš„金属, 他也没有被烧伤. ä¸çŸ¥é“我从他的眼ç›é‡Œçœ‹åˆ°äº†ä»€ä¹ˆ... $ $ 也许是对他继续生存 -book_lore.bf_bomb_5.page.3=çš„ææƒ§ï¼Œæˆ–者敬ç•? ä¸ç®¡æˆ‘ä»¬çš„â€œå¥‡è¿¹â€ææ–™æ˜¯ä»€ä¹ˆ, 它都ä¸åœ¨ä¹Ž. éšç€ä¸€é“明亮的光, 他在下一刻消失了. ä»–è’¸å‘了å—? 烧æˆç°çƒ¬äº†? 完全湮ç­äº†? 被é€è¿›ä»–妈的地狱了? 我å†ä¹Ÿä¸ä¼šçŸ¥é“了! -book_lore.bf_bomb_5.page.4=首席研究员让我æ¶å¿ƒ. 他说我们å¯ä»¥æ›´åŠ å°å¿ƒ, 继续用å¡è½¦è¿è¾“, 或者其他什么能æé«˜å£«æ°”çš„å±è¯. 那个混蛋永远ä¸ä¼šæ˜Žç™½çŽ©ç«ç»ˆä¼šè‡ªç„š. $ æˆ‘æ²¡æœ‰è¾žèŒ -book_lore.bf_bomb_5.page.5=, æˆ‘åªæ˜¯æŠ“起我的那点破烂往山上跑. 无论如何,现在这些都ä¸é‡è¦äº†; 考虑到没有电è¯, 加上我 (现在是以å‰çš„了) 工作场所上空å‡èµ·çš„蘑è‡äº‘, 他们è¦ä¹ˆç‚¸æ¯äº†ä¸€åˆ‡è¦ä¹ˆå®Œå…¨è¿›å…¥äº†å†›äº‹ç®¡è¾–模å¼. -book_lore.bf_bomb_5.page.6=解剖和 æ´» 体 è§£ 剖 之间有一个é‡è¦çš„区别, è¿™ä¸€ç‚¹åœ¨ä»–ä»¬èº«ä¸Šæ˜¾ç„¶å·²ç»æ¶ˆå¤±äº†. 们å¯ä»¥éšå¿ƒæ‰€æ¬²åœ°è§£å‰–金属或原å­, ä½†æ’•è£‚ã€æ´»ä½“解剖现实本身åªä¼šä»¥æ›´å¤šçš„Dr. Melfyns而告终. è°çŸ¥é“å‘¢! -book_lore.bf_bomb_5.page.7=毕竟政府想把这些玩æ„装进炸弹里, 也许我们会看到更多的战争, 数百万人å¬å¤©ç”±å‘½. 他们ä¸èƒ½æ°¸è¿œéšçž’这件事. $ $ 我ä¸åœ¨ä¹Ž. å†ä¹Ÿä¸äº†. 求你了, 上å¸, 让我回到 -book_lore.bf_bomb_5.page.8=实际的科学上æ¥. $ $ 妈的, Mae, ä¿æŒå†·é™... - +book_lore.bf_bomb_5.page.0=I just... can't come to grips with it, even days after. It was a foregone conclusion, really, with how flippant the science team was with safety. $ $ Doctor Melfyn, M.S., is gone. Dead, maybe. I saw it happen before my own eyes, in their test chamber. +book_lore.bf_bomb_5.page.1=We had just gotten another batch of pure balefire, and he had recovered electrical equipment and an energy source to test his proposal. I don't know what caused it (was the power on? had he begun too soon?), but it seemingly progressed in agonizingly slow motion, +book_lore.bf_bomb_5.page.2=as the green-tinted light consumed the table, the battery, and Dr. Melfyn standing only a meter away. Even when the table had degraded into a pool of broiling metal on the floor, he did not burn. I don't know what I saw in his eyes... $ $ Terror, or awe +book_lore.bf_bomb_5.page.3=over his continued survival, maybe? Whatever our "miracle" material was, it didn't care. With a bright blaze of light, he disappeared in the next moment. Was he evaporated? incinerated? annihilated? sent to fucking hell itself, I don't know anymore! +book_lore.bf_bomb_5.page.4=The head researcher sickens me. Said we could be more careful, keep trucking, whatever other morale-improving filth he spewed. That dipshit won't ever figure out that playing with fire will get you burned. $ I didn't bother +book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hills. Not like it matters, anyway; considering the lack of calls, and the mushroom cloud that rose over my (now former) workplace, they've either blown everything up or entered full-on military jurisdiction. +book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows! +book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back +book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself... book_lore.beacon.name=ä¿¡å·ä¿¡æ ‡è¯´æ˜Žä¹¦ book_lore.beacon.author=Flim Flam工业 book_lore.beacon.page.0=感谢您购买Mk.2照明信å·ä¿¡æ ‡ï¼ˆç‰ˆæœ¬1.3)ï¼è¿™æœ¬å°å†Œå­å°†ç®€è¦ä»‹ç»ä¿¡æ ‡çš„æ“ä½œåŠå…¶å†…部工作原ç†ã€‚ @@ -617,11 +594,10 @@ commands.satellite.not_a_satellite=æŒæœ‰çš„物å“䏿˜¯å«æ˜Ÿï¼ commands.satellite.satellite_descended=嫿˜ŸæˆåŠŸé™è½ã€‚ commands.satellite.satellite_orbited=嫿˜Ÿå‘射。 commands.satellite.should_be_run_as_player=此命令应该由玩家è¿è¡Œï¼ - -container.amsBase=AMS基座 [装饰] -container.amsEmitter=AMSæ¿€å‘装置 [装饰] -container.amsLimiter=AMS稳定力场å‘生装置 [装饰] -container.anvil=%s 级砧 +container.amsBase=AMS基座(装饰) +container.amsEmitter=AMSå‘å°„æž(装饰) +container.amsLimiter=AMS稳能器(装饰) +container.anvil=ç § container.arcFurnace=电弧炉 container.armorTable=è£…ç”²æ”¹è£…å° container.ashpit=å‚¨ç°æ§½ @@ -683,10 +659,9 @@ container.heaterOven=加热炉 container.iGenerator=工业å‘电机 container.keyForge=é”匠桌 container.launchPad=导弹å‘å°„å° -container.launchTable=大型导弹å‘å°„å° -container.leadBox=安全箱 -container.machineArcWelder=弧焊机 -container.machineBoiler=原油加热器 +container.launchTable=大型å‘å°„å° +container.leadBox=安全盒 +container.machineBoiler=锅炉 container.machineCMB=CMB炼钢炉 container.machineCoal=ç«åŠ›å‘电机 container.machineCoker=焦化装置 @@ -706,9 +681,9 @@ container.machineShredder=粉碎机 container.machineSILEX=激光åŒä½ç´ åˆ†ç¦»å®¤ container.machineSolidifier=固化机 container.machineTurbine=汽轮机 -container.machineTurbofan=涡扇å‘电机 -container.machine_schrabidium_transmutator=Sa326异å˜é“€é‡‘属嬗å˜è£…ç½® -container.massStorage=存储器 +container.machineTurbofan=涡扇å‘动机 +container.machine_schrabidium_transmutator=Sa326嬗å˜è£…ç½® +container.massStorage=存储 container.microwave=微波炉 container.miningDrill=自动采矿钻机 container.miningLaser=采矿激光 @@ -790,100 +765,97 @@ crucible.hematite=赤é“çŸ¿ç‚¼é“ crucible.hss=高速钢生产 crucible.malachite=孔雀石炼铜 crucible.redcopper=紫铜生产 -crucible.steel=钢生产 -crucible.steelMeteoric=陨é“->é’¢ 生产 -crucible.steelPig=生é“->é’¢ 生产 -crucible.steelWrought=é”»é“->é’¢ 生产 -crucible.tcalloy=é”-é’¢åˆé‡‘生产 - -death.attack.acid=%1$s 掉进了酸里. -death.attack.acidPlayer=%1$s 被 %2$s 溶解了. -death.attack.ams=%1$s æ²æµ´åœ¨å°šæœªè¢«äººç±»ç§‘学命å的致命粒å­ä¸­. -death.attack.amsCore=%1$s 在高能奇点之ç«ä¸­è’¸å‘. -death.attack.asbestos=%1$s 现在有æƒèŽ·å¾—ç»æµŽè¡¥å¿. -death.attack.bang=%1$s 被炸æˆä¸€å£å¤§å°ç¢Žç‰‡. -death.attack.blackhole=%1$s 被黑洞拉æˆäº†æ„大利é¢. -death.attack.blender=%1$s 被切割æˆäº†å¾ˆå°çš„,以Byte计数的å•ä½. -death.attack.boat=%1$s 被船砸æ‰äº†. -death.attack.boil=%1$s 被 %2$s 活生生煮沸了. -death.attack.boxcar=%1$s 被一节å è½çš„车厢砸æ‰äº†...好å§. -death.attack.broadcast=%1$s 的大脑èžåŒ–了. -death.attack.building=%1$s 被从天而é™çš„建筑砸中了. -death.attack.cheater=%1$s 的内è„å˜æˆäº†ç‡•麦(???). -death.attack.chopperBullet=%1$s 被 %2$s å± æ€. -death.attack.cloud=%1$s åƒåœ¨å¤ªé˜³ä¸‹çš„冰棒一样èžåŒ–. -death.attack.cmb=%1$s 被 %2$s 电的焦脆. -death.attack.digamma=%1$s åœ¨è¿½æ±‚çœŸç†æ—¶æ­¥å…¥äº†æ·±æ¸Š. -death.attack.electricity=%1$s 被电死. -death.attack.electrified=%1$s 被 %2$s 电死. -death.attack.euthanized=%1$s 被 %2$s 安乿­». -death.attack.euthanizedSelf2=%1$s 获得了达尔文奖. -death.attack.euthanizedSelf=%1$s æŠŠè‡ªå·±å®‰ä¹æ­»äº†, 真鸡儿丢人. -death.attack.exhaust=%1$s 被ç«ç®­çƒ¤æˆäº†ç¾Šè‚‰ä¸². -death.attack.flamethrower=%1$s 被 %2$s ç«åŒ–. -death.attack.flamethrower.item=%1$s 被 %2$s 用 %3$sç«åŒ–. -death.attack.ice=%1$s 被 %2$s 冻æˆäº†å†°æ£’. -death.attack.laser=%1$s 被 %2$s å˜æˆäº†ç°çƒ¬. -death.attack.laser.item=%1$s 被 %2$s 用 %3$s å˜æˆäº†ç°çƒ¬. -death.attack.lead=%1$s 死于铅中毒. -death.attack.lunar=%1$s 忘了给他的é‡è¦å™¨å®˜ç»´æŒç³»ç»Ÿå……电. -death.attack.meteorite=%1$s 被æ¥è‡ªå¤–太空的陨石击中,ä»–å¯ä»¥åŽ»ä¹°å½©ç¥¨äº†. -death.attack.microwave=%1$s 被过é‡å¾®æ³¢è¾å°„而爆炸了. -death.attack.mku=%1$s 死于ä¸çŸ¥å的原因. -death.attack.monoxide=%1$s 忘了给一氧化碳探测器æ¢ç”µæ± . -death.attack.mudPoisoning=%1$s 死于毒泥浆中. -death.attack.nuclearBlast=%1$s 被核爆冲击波炸飞. -death.attack.overdose=%1$s æœè¯è¿‡é‡åŽçª’æ¯äº†. -death.attack.pc=%1$s åœ¨ç²‰çº¢è‰²çš„äº‘ä¸­å˜æˆäº†ä¸€æ»©æ°´. -death.attack.plasma=%1$s 被 %2$s 献祭了. -death.attack.radiation=%1$s 死于è¾å°„. -death.attack.revolverBullet=%1$s 被 %2$s 爆头. -death.attack.revolverBullet.item=%1$s 被 %2$s 用 %3$s 爆头. -death.attack.rubble=%1$s 被挤压æˆäº†ç¢Žç‰‡. -death.attack.shrapnel=%1$s 被榴弹碎片炸得åƒç–®ç™¾å­”. -death.attack.spikes=%1$s 被刺了个é€å¿ƒå‡‰. -death.attack.subAtomic1=%1$s 的原å­è¢« %2$s æ‘§æ¯. -death.attack.subAtomic2=%1$s 因为被 %2$s 篡改了实际速度, 导致QPU没有对准. -death.attack.subAtomic3=由于 %2$s, 1$s çš„å差下é™åˆ°1%以下. -death.attack.subAtomic4=%1$s 因为 %2$s 被零除了. -death.attack.subAtomic5=%1$s 因为 %2$s 无效了. -death.attack.suicide=%1$s 打爆了自己的头. -death.attack.taint=%1$s æ­»äºŽæ¶æ€§è‚¿ç˜¤. -death.attack.tau=%1$s 被 %2$s 用带负电è·çš„é™¶å­æ‰“å¾—åƒç–®ç™¾å­”. -death.attack.tauBlast=%1$s 对XVL1456充能时间过长, 被炸æˆç¢Žç‰‡. -death.attack.teleporter=%1$s 被传é€åˆ°è™šç©º. - -desc.block.blastinfo=æ–¹å—æŠ—çˆ†æ€§: %s -desc.gui.assembler.warning=§c错误:§r 错误:æ­¤è£…é…æœºéœ€è¦ç»„装机模æ¿! -desc.gui.chemplant.warning=§c错误:§r 此化工装置需è¦åŒ–学酿–¹æ¨¡æ¿! -desc.gui.gasCent.enrichment=§2浓缩§r$铀浓缩需è¦å¤šä¸ªç¦»å¿ƒæœºä¸²è”.$两个离心串è”$将仅分离出铀238,$四个离心串è”将完全分离六氟化铀. -desc.gui.gasCent.output=§6æµä½“传输§r$液体å¯ä»¥é€šè¿‡è¾“出端å£è½¬ç§»åˆ°$å¦ä¸€å°ç¦»å¿ƒæœºè¿›è¡Œè¿›ä¸€æ­¥å¤„ç†. -desc.gui.nukeBoy.desc=§1需è¦ç»„ä»¶:§r$ * 中å­å±è”½ç½©$ * é“€235弹头$ * 次临界铀235æ ‡é¶$ * 炸è¯$ * 点ç«å™¨ -desc.gui.nukeGadget.desc=§1需è¦ç»„ä»¶:§r$ * 4 个åˆä»£é«˜èƒ½$ 内爆炸è¯é˜µåˆ—$ * 大型钚核心$ * 线路 -desc.gui.nukeMan.desc=§1需è¦ç»„ä»¶:§r$ * 4 个åˆä»£é«˜èƒ½$ 内爆炸è¯é˜µåˆ—$ * 钚核心$ * 炸弹点ç«è£…ç½® -desc.gui.nukeMike.desc=§1需è¦ç»„ä»¶:§r$ * 4 个高能内爆炸è¯é˜µåˆ—$ * 钚核心$ * 氘冷å´è£…ç½®$ * 铀涂层氘ç½$ * æ°˜ç½ -desc.gui.nukeTsar.desc=§1需è¦ç»„ä»¶:§r$ * 4 个高能内爆炸è¯é˜µåˆ—$ * 钚核心$§9å¯é€‰:§r$ * 沙皇炸弹核心 -desc.gui.radiolysis.desc=§9说明§r$è¿™ç§RTG比其他RTG效率更高, $é…æœ‰ä¸€ä¸ªè¾è§£å®¤,$用于裂解和ç­èŒ. -desc.gui.rtgBFurnace.desc=需è¦è‡³å°‘15çº§çƒ­é‡æ¥è¿›è¡ŒåŠ å·¥$热é‡è¶Šå¤š,è¿è¡Œé€Ÿåº¦è¶Šå¿«$超过最大速度åŽå¤šä½™çš„热é‡ä¸ä¼šäº§ç”Ÿä»»ä½•å½±å“$短åŠè¡°æœŸçš„é¶ä¸¸å¯èƒ½ä¼šè¡°å˜ -desc.gui.rtg.heat=§e当å‰çƒ­é‡çº§åˆ«: %s -desc.gui.rtg.pellets=坿ޥå—çš„é¶ä¸¸: +crucible.steel=é’¢é“生产 +crucible.steelMeteoric=陨é“炼钢 +crucible.steelPig=生é“炼钢 +crucible.steelWrought=é”»é“炼钢 +crucible.tcalloy=é”é’¢åˆé‡‘生产 +death.attack.acid=%1$s 掉进了酸里 +death.attack.acidPlayer=%1$s 被 %2$s 溶解 +death.attack.ams=%1$s æ²æµ´åœ¨å°šæœªè¢«äººç±»ç§‘学命å的致命粒å­ä¸­ +death.attack.amsCore=%1$s 在奇点之ç«ä¸­è’¸å‘ +death.attack.asbestos=%1$s现在有æƒèŽ·å¾—ç»æµŽè¡¥å¿ +death.attack.bang=%1$s 被炸æˆå°å—碎片 +death.attack.blackhole=%1$s 粉身碎骨 +death.attack.blender=%1$s 被切æˆå°å— +death.attack.boat=%1$s 被船撞了 +death.attack.boil=%1$s被%2$s活活煮沸 +death.attack.boxcar=%1$s 被一节å è½çš„车厢撞死了...å¥½å§ +death.attack.broadcast=%1$s 的大脑èžåŒ–了 +death.attack.building=%1$s 被从天而é™çš„建筑砸中了 +death.attack.cheater=%1$s 的肠å­å˜æˆäº†ç‡•麦(???) +death.attack.chopperBullet=%1$s 被 %2$s å± æ€ +death.attack.cloud=%1$s åƒå†°æ£’一样在太阳下èžåŒ– +death.attack.cmb=%1$s 被 %2$s æžå¾—å˜¶å˜¶ä½œå“ +death.attack.digamma=%1$s è¸å…¥æ·±æ¸Š +death.attack.electricity=%1$s 被电死 +death.attack.electrified=%1$s 被 %2$s 电死 +death.attack.euthanized=%1$s 被 %2$s 安乿­» +death.attack.euthanizedSelf2=%1$s 获得了达尔文奖 +death.attack.euthanizedSelf=%1$s æŠŠè‡ªå·±å®‰ä¹æ­»äº†ï¼Œå¯çœŸå‚» +death.attack.exhaust=%1$s 被ç«ç®­çƒ¤æˆäº†ç¾Šè‚‰ä¸² +death.attack.flamethrower=%1$s 被 %2$s ç«åŒ– +death.attack.flamethrower.item=%1$s 被 %2$s 使用 %3$s ç«åŒ– +death.attack.ice=%1$s 被 %2$s åšæˆäº†å†°æ£’ +death.attack.laser=%1$s 被 %2$s å˜æˆäº†ç°çƒ¬ +death.attack.laser.item=%1$s 被 %2$s 使用 %3$s å˜æˆç°çƒ¬ +death.attack.lead=%1$s 死于铅中毒 +death.attack.lunar=%1$s 忘记了给é‡è¦å™¨å®˜å……电 +death.attack.meteorite=%1$s 被æ¥è‡ªå¤–太空的陨石击中 +death.attack.microwave=%1s 因微波è¾å°„爆炸 +death.attack.mku=%1$s æ­»äºŽä¸æ˜ŽåŽŸå›  +death.attack.monoxide=%1$s忘了æ¢ä¸€æ°§åŒ–碳探测器的电池 +death.attack.mudPoisoning=%1$s 死于毒泥浆中 +death.attack.nuclearBlast=%1$s 被核爆炸飞 +death.attack.overdose=%1$s ä¸Šç˜¾å¹¶çª’æ¯ +death.attack.pc=%1$s åœ¨ç²‰çº¢è‰²çš„äº‘ä¸­å˜æˆäº†ä¸€ä¸ªæ°´å‘ +death.attack.plasma=%1$s 被 %2$s 烧死 +death.attack.radiation=%1$s 死于è¾å°„ +death.attack.revolverBullet=%1$s 被 %2$s 用 %3$s 击中头部 +death.attack.revolverBullet.item=%1$s 被 %2$s 使用 %3$s 爆头 +death.attack.rubble=%1$s 被碎片压æ‰äº† +death.attack.shrapnel=%1$s 被榴弹碎片炸得åƒç–®ç™¾å­” +death.attack.spikes=%1$s被刺穿了 +death.attack.subAtomic1=%1$s 的原å­å·²è¢« %2$s 销æ¯. +death.attack.subAtomic2=%1$s 因为被 %2$s 篡改了实际速度,导致QPU没有对准 +death.attack.subAtomic3=由于 %2$s,1$s çš„å差下é™åˆ°1%以下 +death.attack.subAtomic4=%1$s 因为 %2$s 被零除了 +death.attack.subAtomic5=%1$s 因为 %2$s 无效了 +death.attack.suicide=%1$s 打爆了自己的头 +death.attack.taint=%1$s æ­»äºŽæ¶æ€§è‚¿ç˜¤ +death.attack.tau=%1$s 被 %2$s 用带负电è·çš„é™¶å­å°„ç©¿ +death.attack.tauBlast=%1$s 对XVL1456充能时间过长,被炸æˆç¢Žç‰‡ +death.attack.teleporter=%1$s 被传é€åˆ°è™šç©º +desc.gui.assembler.warning=§c错误:§r此机器需è¦è£…é…æœºæ¨¡æ¿ï¼ +desc.gui.chemplant.warning=§c错误:§r此机器需è¦åŒ–工厂模æ¿ï¼ +desc.gui.gasCent.enrichment=§2浓缩§r$浓缩铀需è¦ä¸²è”$两个离心机串è”将离心出$铀燃料,四个离心机串è”$将完全分离出铀235。 +desc.gui.gasCent.output=§6æµä½“输é€Â§r$æµä½“å¯é€šè¿‡è¾“出端å£è¾“é€è‡³å¦ä¸€å°ç¦»å¿ƒæœº$进行进一步处ç†ã€‚ +desc.gui.nukeBoy.desc=§1需è¦:§r$ * 中å­å±è”½ç½©$ * é“€-235弹头$ * 次临界铀-235æ ‡é¶$ * 炸è¯$ * 点ç«å™¨ +desc.gui.nukeGadget.desc=§1需è¦:§r$ * 4个 åˆä»£$ 炸è¯é€é•œé˜µåˆ—$ * 钚核心$ * 线路 +desc.gui.nukeMan.desc=§1需è¦:§r$ * 4个 åˆä»£$ 炸è¯é€é•œé˜µåˆ—$ * 钚核心$ * 点ç«å™¨ +desc.gui.nukeMike.desc=§1需è¦:§r$ * 4个 炸è¯é€é•œé˜µåˆ—$ * 钚核心$ * 氘冷å´è£…ç½®$ * é“€æ¶‚å±‚æ°˜ç½ * æ°˜ç½ +desc.gui.nukeTsar.desc=§1需è¦:§r$ * 4个 炸è¯é€é•œé˜µåˆ—$ * 钚核心$§9å¯é€‰:§r$ * 沙皇炸弹核心 +desc.gui.radiolysis.desc=§9说明§r$该RTG比其他RTG更高效,并且$é…备了一个用于$裂解和ç­èŒçš„è¾è§£å®¤ã€‚ +desc.gui.rtgBFurnace.desc=处ç†$金-198需è¦è‡³å°‘15热é‡ã€‚此外,热é‡è¶Šå¤šï¼Œè¿è¡Œé€Ÿåº¦è¶Šå¿«$金-198å¯èƒ½ä¼šè¡°å˜ä¸ºæ°´é“¶ +desc.gui.rtg.heat=§e当å‰çƒ­ç­‰çº§ï¼š%s +desc.gui.rtg.pellets=接å—çš„é¶ä¸¸ï¼š desc.gui.rtg.pelletHeat=%s (%s 热é‡) -desc.gui.rtg.pelletPower=%s (%s HE/tick) -desc.gui.template=§9模æ¿Â§r$å¯ä»¥ä½¿ç”¨æœºå™¨æ¨¡æ¿$文件夹制作模æ¿. -desc.gui.turbinegas.automode=§2ç‡ƒæ±½è½®æœºè‡ªåŠ¨èŠ‚æµæ¨¡å¼Â§r$通过点击 "AUTO" 按钮, 燃汽轮机$将根æ®ç”µç½‘所需功率$自动调整å‘ç”µé‡ -desc.gui.turbinegas.fuels=§6坿ޥå—的燃气:§r$ -desc.gui.turbinegas.warning=§c燃油或润滑油液ä½ä½Ž!§r -desc.gui.upgrade=§l坿ޥå—çš„å‡çº§:§r -desc.gui.upgrade.afterburner= * §d加力燃烧§r: 最高为3级 -desc.gui.upgrade.effectiveness= * §a效率§r: 最高为3级 -desc.gui.upgrade.overdrive= * §7超频§r: 最高为3级 -desc.gui.upgrade.power= * §1节能§r: 最高为3级 -desc.gui.upgrade.speed= * §4速度§r: 最高为3级 -desc.gui.zirnox.coolant=§3冷å´Â§r$二氧化碳将热é‡ä»Žå应堆核心转移到水中.$这会把水加热æˆè’¸æ±½. $冷å´å’Œè’¸æ±½ç”Ÿäº§çš„$效率å–决于压力大å°. -desc.gui.zirnox.pressure=§6压力§r$å¯ä»¥é€šè¿‡å‡å°‘å应堆中的CO2釿¥é™ä½ŽåŽ‹åŠ›.$但是, 压力过低, 冷崿•ˆçŽ‡å’Œ$蒸汽产é‡ä¼šé™ä½Ž.$å°å¿ƒç†”æ¯! -desc.gui.zirnox.warning1=§c错误:§r å应堆正常è¿è¡Œ$éœ€è¦æ°´! -desc.gui.zirnox.warning2=§c错误:§r å应堆正常è¿è¡Œ$需è¦äºŒæ°§åŒ–碳! -desc.item.ammo.con_accuracy2=- 精确度大大é™ä½Ž +desc.gui.rtg.pelletPower=%s (%s HE/刻) +desc.gui.template=§9模æ¿Â§r$模æ¿å¯ç”±$æœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹åˆ¶ä½œã€‚ +desc.gui.turbinegas.automode=§2è‡ªåŠ¨æ¶¡è½®æœºèŠ‚æµæ¨¡å¼Â§r$通过å•击“AUTOâ€æŒ‰é’®ï¼Œæ¶¡è½®æœº$将根æ®ç½‘络所需的功率自动调整å‘电é‡$ +desc.gui.turbinegas.fuels=§6坿ޥå—的燃料:§r +desc.gui.turbinegas.warning=§c燃油或润滑油液ä½ä½Žï¼Â§r +desc.gui.upgrade=§l坿ޥå—çš„å‡çº§ï¼šÂ§r +desc.gui.upgrade.afterburner=*§d加力燃烧§r:堆å è‡³3级 +desc.gui.upgrade.effectiveness=*§a效率§r:堆å è‡³3级 +desc.gui.upgrade.overdrive=*§7超速§r:堆å è‡³3级 +desc.gui.upgrade.power=*§1节能§r:堆å è‡³3级 +desc.gui.upgrade.speed=*§4速度§r:堆å è‡³3级 +desc.gui.zirnox.coolant=§3冷å´å‰‚§r$CO2将热é‡ä»Žå †èŠ¯è½¬ç§»åˆ°æ°´ä¸­$è¿™ä¼šä»¤å®ƒå˜æˆæˆè¶…热蒸汽$冷å´å’Œè’¸æ±½ç”Ÿäº§çš„æ•ˆçއå–决于压力。 +desc.gui.zirnox.pressure=§6压力§r$排放二氧化碳å¯ä»¥é™ä½ŽåŽ‹åŠ›$ç„¶è€Œï¼ŒåŽ‹åŠ›è¿‡ä½Žï¼Œå†·å´æ•ˆçŽ‡å’Œè’¸æ±½äº§é‡å°†é™ä½Ž$å°å¿ƒç†”æ¯ï¼ +desc.gui.zirnox.warning1=§c错误:§rå应堆正常è¿è¡Œéœ€è¦æ°´ï¼ +desc.gui.zirnox.warning2=§c错误:§r二氧化碳是å应堆正常è¿è¡Œæ‰€å¿…éœ€çš„ï¼ +desc.item.ammo.con_accuracy2=- 精度大幅é™ä½Ž desc.item.ammo.con_damage=- 伤害大幅é™ä½Ž desc.item.ammo.con_heavy_wear=- å¤§å¹…å¢žåŠ ç£¨æŸ desc.item.ammo.con_ling_fire=- 没有ç«ç„° @@ -908,27 +880,27 @@ desc.item.ammo.neu_boat=* 船 desc.item.ammo.neu_boxcar=* 车厢 desc.item.ammo.neu_building=* 建筑物 desc.item.ammo.neu_chlorophyte=* å¶ç»¿ -desc.item.ammo.neu_eraser=* 为了消除一些大麻烦 -desc.item.ammo.neu_fun=* 和你的核è°å®¶åº­ä¸€èµ·å¿«ä¹çš„æ¥æ”¾çƒŸèŠ±çŽ©è€å§! -desc.item.ammo.neu_heavy_metal=* å«é‡é‡‘属 -desc.item.ammo.neu_homing=* 自动追踪目标 -desc.item.ammo.neu_jolt=* 颠簸 +desc.item.ammo.neu_eraser=* 用于消除é‡å¤§é”™è¯¯ +desc.item.ammo.neu_fun=* 免家其乿— ç©·ï¼ +desc.item.ammo.neu_heavy_metal=* é‡é‡‘属 +desc.item.ammo.neu_homing=* 追踪 +desc.item.ammo.neu_jolt=* éœ‡è¡ desc.item.ammo.neu_leadburster=* 附ç€åœ¨è¡¨é¢å¹¶å–·å°„å­å¼¹ -desc.item.ammo.neu_less_bouncy=* 霰弹更少 -desc.item.ammo.neu_maskman_flechette=* å‘射一个能å¬å”¤å‡ºä¸€åœºé“€æ¶‚层镖弹碎片风暴的示踪剂 -desc.item.ammo.neu_maskman_meteorite=* å‘射高伤害的å­å¼¹å¹¶å¬å”¤ä¸€é¢—å°é™¨çŸ³ -desc.item.ammo.neu_more_bouncy=* 更多霰弹 -desc.item.ammo.neu_no_bounce=* éžéœ°å¼¹ -desc.item.ammo.neu_no_con=* 没有任何负é¢ä½œç”¨ lol -desc.item.ammo.neu_starmetal=* 嫿˜Ÿè¾‰é‡‘属 -desc.item.ammo.neu_tracer=* 曳光弹 -desc.item.ammo.neu_uhh=* 啊哈 -desc.item.ammo.neu_warcrime1=* 从技术上讲使用它是犯了战争罪 -desc.item.ammo.neu_warcrime2=* 一颗å­å¼¹çŠ¯ä¸‹ä¸¤æ¡æˆ˜äº‰ç½ª! -desc.item.ammo.pro_accurate1=+ 准确性æé«˜ -desc.item.ammo.pro_accurate2=+ 近乎完美的精确度 -desc.item.ammo.pro_balefire=+ B.F.é‡Žç« -desc.item.ammo.pro_bomb_count=+ å¢žåŠ ç‚¸å¼¹æ•°é‡ +desc.item.ammo.neu_less_bouncy=* å¼¹æ€§æ›´å° +desc.item.ammo.neu_maskman_flechette=* æ›³å…‰å¼¹ï¼ŒåŒæ—¶å¼•å‘一场贫铀飞镖弹风暴 +desc.item.ammo.neu_maskman_meteorite=* é«˜ä¼¤å®³ï¼ŒåŒæ—¶å¬å”¤å°é™¨çŸ³ +desc.item.ammo.neu_more_bouncy=* é¢å¤–弹性 +desc.item.ammo.neu_no_bounce=* 没有弹性 +desc.item.ammo.neu_no_con=* 没有缺点 +desc.item.ammo.neu_starmetal=* 星辉金属 +desc.item.ammo.neu_tracer=* 示踪剂 +desc.item.ammo.neu_uhh=* Uhhh +desc.item.ammo.neu_warcrime1=* 从技术上æ¥è®²è§¦çŠ¯äº†æˆ˜äº‰ç½ª +desc.item.ammo.neu_warcrime2=* 一å‘è§¦çŠ¯ä¸¤æ¡æˆ˜äº‰ç½ªï¼ +desc.item.ammo.pro_accurate1=+ æå‡ç²¾åº¦ +desc.item.ammo.pro_accurate2=+ 近乎完美的精度 +desc.item.ammo.pro_balefire=+ é‡Žç« +desc.item.ammo.pro_bomb_count=+ 炸弹数é‡å¢žåŠ  desc.item.ammo.pro_caustic=+ è…蚀性 desc.item.ammo.pro_chainsaw=+ 电锯 desc.item.ammo.pro_chlorine=+ 氯气 @@ -963,19 +935,18 @@ desc.item.ammo.pro_stunning=+ 眩晕 desc.item.ammo.pro_toxic=+ 剧毒 desc.item.ammo.pro_wear=+ å‡å°‘ç£¨æŸ desc.item.ammo.pro_withering=+ 凋零 -desc.item.armorMod.display=æ¥æ˜¾ç¤ºè¯¥ç›”甲上所安装的é…件的效果 -desc.item.battery.charge=电é‡: %s / %sHE -desc.item.battery.chargePerc=电é‡: %s%% -desc.item.battery.chargeRate=充电速率: %sHE/tick -desc.item.battery.dischargeRate=放电速率: %sHE/tick -desc.item.detonator=已设置引爆ä½ç½®!$未设置引爆ä½ç½®! -desc.item.durability=è€ä¹…度: %s -desc.item.grenade.fuse=引爆延时: %s -desc.item.grenade.fuseImpact=接触爆炸 -desc.item.grenade.fuseInstant=å³çˆ† -desc.item.gun.ammo=å¼¹è¯é‡ %s -desc.item.gun.ammoBelt=自动从背包中装填 -desc.item.gun.ammoEnergy=能é‡; %sHE æ¯å‘ +desc.item.armorMod.display=æ˜¾ç¤ºå·²å®‰è£…çš„è£…ç”²æ¨¡å— +desc.item.battery.charge=储能: %s / %sHE +desc.item.battery.chargePerc=储能: %s%% +desc.item.battery.chargeRate=充电效率: %sHE/刻 +desc.item.battery.dischargeRate=放电效率: %sHE/刻 +desc.item.durability=è€ä¹…: %s +desc.item.grenade.fuse=引信: %s +desc.item.grenade.fuseImpact=碰炸 +desc.item.grenade.fuseInstant=çž¬å‘ +desc.item.gun.ammo=å¼¹è¯ %s +desc.item.gun.ammoBelt=从背包中使用 +desc.item.gun.ammoEnergy=能耗; %sHE æ¯å‘ desc.item.gun.ammoEnergyAlt=%sHE æ¯å‘ desc.item.gun.ammoMag=%s / %s desc.item.gun.ammoType=å¼¹è¯ç±»åž‹: %s @@ -985,16 +956,18 @@ desc.item.gun.damageAlt=伤害: %s desc.item.gun.lore=查看深入的知识 desc.item.gun.loreFunc=查看深入功能 desc.item.gun.manufacturer=制造商: %s -desc.item.gun.name=枪械åç§°: %s -desc.item.gun.pellets=弹丸: %s - %s -desc.item.gun.penetration=护甲穿é€å€¼: %s -desc.item.kitArmor=现穿的护甲将被新护甲å–代. -desc.item.kitHaz=防护æœå°†å–代现穿的护甲. -desc.item.kitPack=真便宜! -desc.item.kitPool=è¯·åœ¨æ‰“å¼€å‰æ¸…空你的背包! -desc.item.pileRod=§e用于æ’入钻削过的石墨$§e使用螺ä¸åˆ€ç¿˜å‡º$ -desc.item.rtgDecay=è¡°å˜ä¸º: %s -desc.item.rtgHeat=热é‡çº§åˆ«: %s +desc.item.gun.name=åç§°: %s +desc.item.gun.pellets=弹丸数:%s-%s +desc.item.gun.penetration=装甲穿é€å€¼: %s +desc.item.kitArmor=装甲将被新的装备å–代。 +desc.item.kitHaz=装甲将被防护æœå–代。 +desc.item.kitPack=çœŸä¾¿å®œï¼ +desc.item.kitPool=è¯·åœ¨æ‰“å¼€å‰æ¸…ç©ºèƒŒåŒ…åº“å­˜ï¼ +desc.item.pileRod=§e使用钻孔石墨æ’å…¥$§E使用螺ä¸åˆ€æ‹”出$ + + +desc.item.rtgDecay=è¡°å˜ä¸ºï¼š%s +desc.item.rtgHeat=功率级别:%s desc.item.storage.capacity=å®¹é‡ %s%%s desc.item.storage.proscons=查看利弊列表 desc.misc.357=.357 é©¬æ ¼å— @@ -1007,34 +980,18 @@ desc.misc.lore=§n-- 知识 -- desc.misc.lshift=§8æŒ‰ä½ <§e§oå·¦SHIFT§8§o> %s desc.misc.luna=§o20x155mm Lunatic desc.misc.meltPoint=熔点: §c%s -desc.misc.noPos=未设置触å‘ä½ç½®! -desc.misc.pos=设置触å‘ä½ç½®ä¸º : %s, %s, %s -desc.misc.posSet=触å‘ä½ç½®å·²è®¾ç½®! +desc.misc.noPos=未设置ä½ç½®ï¼ +desc.misc.pos=å°†ä½ç½®è®¾ç½®ä¸ºï¼š%s,%s,%s +desc.misc.posSet=ä½ç½®å·²è®¾ç½®ï¼ desc.item.wasteCooling=在ä¹ç‡ƒæ–™æ± ä¸­å†·å´ -desc.item.upgrade.machine=采矿钻机:§r$自动激光采矿钻机:$电炉:§r$è£…é…æœº:§r$化工厂:§r$油井:§r$矿物结晶机:§r$回旋加速器:§r$废气燃烧塔:§r$高能微波炮塔:§r$涡扇å‘电机:§r$力场范围å‡çº§Â§r$力场能é‡å‡çº§Â§r$采矿激光å‡çº§Â§r$气体离心机å‡çº§Â§r$ -desc.item.upgrade.speed=耗时 -%s%% / è€—ç”µé‡ +%sHE/t$耗时 ÷%s / è€—ç”µé‡ +%sHE/t$耗时 -%s%% / è€—ç”µé‡ +%s%%$对撞速度 x%s$伤害 +%sdmg/t -desc.item.upgrade.effect=åŠå¾„ +%sm / è€—ç”µé‡ +%sHE/t$+%s%% çš„å‡ çŽ‡ä¸æ¶ˆè€—ç‰©å“ / é…¸æ¶ˆè€—é‡ +%smB$-%s%% 的几率延长加速器过热缓冲时间$+%s%% å‘电é‡$攻击范围 +%sm -desc.item.upgrade.power=è€—ç”µé‡ -%sHE/t / 耗时 +%s%%$è€—ç”µé‡ -%s%% / 耗时 +%s%%$è€—ç”µé‡ -%skHE/t$è€—ç”µé‡ -%sHE/t$啿¬¡å¼€ç«è€—电 -%sHE/t -desc.item.upgrade.fortune=å¹¸è¿ +%s / 耗时 +%s -desc.item.upgrade.afterburn=å‘ç”µé‡ x%s / 燃料消耗 x%s$加力燃烧 +%ss$燃烧%smB燃气产生%sHE/t -desc.item.upgrade.forcefield=åŠå¾„ +16 / 耗电 +500$æœ€å¤§èƒ½é‡ +50 / 耗电 +250$最多堆å 16个 -desc.item.upgrade.smelter=èžåŒ–æ–¹å—.够简å•了. -desc.item.upgrade.shredder=自动粉碎矿石 -desc.item.upgrade.centrifuge=其作用ä¸è¨€è‡ªæ˜Ž -desc.item.upgrade.crystallizer=你新的最好的朋å‹:) -desc.item.upgrade.screm=å°±åƒåœ¨ã€Šè¶…级马里奥》里,所有的方å—都是蟾èœ$ä½†åœ¨è¿™é‡Œæ˜¯åŠæ¡å‘½çš„科学家.$他们在尖å«.很多尖å«. -desc.item.upgrade.nullifier=有50%%的几率用/dev/zero覆盖无用物å“$有50%%的几率将无用物å“移到/dev/null -desc.item.upgrade.gc_speed=å…许对六氟化铀进行全åŒä½ç´ åˆ†ç¦»$§eç¦»å¿ƒæœºä¹Ÿä¼šè¿›å…¥ç—…æ€æ¨¡å¼ -desc.item.zirnoxBreedingRod=§2[ZIRNOX锆诺克斯å应堆增殖棒]$§e放在燃料棒æ—边以增殖$§eæŒç»­ %d ticks -desc.item.zirnoxRod=§a[ZIRNOX锆诺克斯å应堆燃料棒]$§e产生 %1$d çƒ­é‡æ¯tick$§eæŒç»­ %2$d ticks - -digamma.playerDigamma=玩家Ϝ迪伽马è¾ç…§æ°´å¹³: -digamma.playerHealth=玩家所å—Ϝ迪伽马è¾ç…§å½±å“: -digamma.playerRes=玩家Ϝ迪伽马防护水平: -digamma.title=玩家Ϝ迪伽马è¾å°„自检器 - -entity.entity_cyber_crab.name=机械螃蟹 -entity.entity_elder_one.name=Quackoså¤è€è€… +desc.item.zirnoxBreedingRod=§2[ZIRNOX增殖棒]$§e放在燃料棒æ—边增殖$§eæŒç»­ %d 刻 +desc.item.zirnoxRod=§a[ZIRNOX燃料棒]$§eæ¯åˆ»äº§ç”Ÿ %1$d 热é‡$§eæŒç»­ %2$d 刻 +digamma.playerDigamma=玩家F-迪伽马è¾ç…§æ°´å¹³: +digamma.playerHealth=玩家所å—F-迪伽马è¾ç…§å½±å“: +digamma.playerRes=玩家F-迪伽马防护水平: +digamma.title=玩家F-迪伽马è¾å°„自检器 +entity.entity_cyber_crab.name=èµ›åšèžƒèŸ¹ +entity.entity_elder_one.name=上å¤é¸­ç¥ž entity.entity_fucc_a_ducc.name=é¸­å­ entity.entity_glyphid.name=异虫 entity.entity_glyphid_behemoth.name=巨兽异虫 @@ -1054,24 +1011,20 @@ entity.entity_mob_nuclear_creeper.name=核爆爬行者 entity.entity_mob_phosgene_creeper.name=光气爬行者 entity.entity_mob_tainted_creeper.name=污染爬行者 entity.entity_mob_volatile_creeper.name=ä¸ç¨³å®šçˆ¬è¡Œè€… -entity.entity_plastic_bag.name=塑料袋 -entity.entity_taint_crab.name=è…化机械螃蟹 -entity.entity_tesla_crab.name=ç£æš´æœºæ¢°èžƒèŸ¹ -entity.hbm.entity_balls_o_tron.name=世-界-æ¯-ç­-者 O-TRON -entity.hbm.entity_balls_o_tron_seg.name=世-界-æ¯-ç­-者 O-TRON 躯干 +entity.entity_taint_crab.name=污染螃蟹 +entity.entity_tesla_crab.name=ç£æš´èžƒèŸ¹ +entity.hbm.entity_balls_o_tron.name=机械蠕虫 +entity.hbm.entity_balls_o_tron_seg.name=机械蠕虫 entity.hbm.entity_bullet.name=å­å¼¹ entity.hbm.entity_rocket.name=ç«ç®­å¼¹ -entity.hbm.entity_schrabnel.name=弹片 - +entity.hbm.entity_schrabnel.name=Schrabnel excavator.crusher=粉碎开关 excavator.drill=挖掘开关 excavator.silktouch=精准采集开关 excavator.veinminer=è¿žé”æŒ–矿开关 excavator.walling=填充开关 - -flare.ignition=点ç«å¼€å…³ -flare.valve=燃气阀门 - +flare.ignition=点ç«è£…ç½® +flare.valve=æµé‡é˜€ fluid.acid_fluid=é…¸ fluid.corium_fluid=堆芯熔èžç‰© fluid.mud_fluid=毒泥 @@ -1116,7 +1069,7 @@ gun.make.MANN=Open Mannå…¬å¸ gun.make.MAXIM=æµ·å‹’å§†Â·é©¬å…‹æ² gun.make.METRO=åœ°é“æžªæ‰‹ gun.make.MWT=MWT原型实验室 -gun.make.NAWS=Kayarm工业 +gun.make.NAWS=Kayarm Industries gun.make.ERFURT=埃尔ç¦ç‰¹æœºæ¢°åˆ¶é€ åŽ‚ gun.make.NONE=- gun.make.RAYTHEON=å¯¼å¼¹ç³»ç»Ÿå…¬å¸ @@ -1129,75 +1082,74 @@ gun.make.SACO=è¨ç§‘防å«å†›æ¢° gun.make.TULSKY=图拉武器厂 gun.make.UAC=è”åˆå®‡å®™èˆªç©ºå…¬å¸ gun.make.UNKNOWN=??? -gun.make.WESTTEK=西部科技 -gun.make.WGW=å¨å»‰Â·å¤æ–¯ç‰¹æ´›å¤«Â·æ²ƒå…‹ -gun.make.WINCHESTER=温彻斯特连å‘è½»æ­¦å™¨å…¬å¸ -gun.make.WINCHESTER_BIGMT=温彻斯特连å‘è½»æ­¦å™¨å…¬å¸ / 巨山研å‘中心 - -gun.name.ar15_50=AR-15 .50 BMG æ¨¡å¼ -gun.name.baeAR=ä¸åˆ—颠标准型çªå‡»æ­¥æžª -gun.name.bel=B.F.野ç«è›‹å¼¹å°„器 -gun.name.benelli=è´å†…利M4 Super 90霰弹枪 -gun.name.benelliDrum=è´å†…利M4 Super 90霰弹枪(弹鼓) +gun.make.WESTTEK=WestTek研究设施 +gun.make.WGW=å¨å»‰Â·å¤æ–¯ç‰¹æ´›å¤«Â·ç»´å°”å…‹ +gun.make.WINCHESTER=æ¸©å½»æ–¯ç‰¹é€Ÿå°„æ­¦å™¨å…¬å¸ +gun.make.WINCHESTER_BIGMT=温彻斯特速射武器公å¸/大型MT +gun.name.ar15_50=AR-15 .50BMGåž‹ +gun.name.baeAR=英国制å¼çªå‡»æ­¥æžª +gun.name.bel=野ç«è›‹å‘射器 +gun.name.benelli=伯奈利M4 Super 90霰弹枪 +gun.name.benelliDrum=伯奈利M4 Super 90霰弹枪 (泵动供弹改进型) gun.name.bio=RI No. 2 Mark 1 gun.name.bolter=Manticora Pattern爆弹枪 gun.name.congoLake=刚果湖水泵动榴弹å‘射器 gun.name.cPython=柯尔特蟒蛇 -gun.name.cz53=CZ53å•å…µç«ç¥žç‚® -gun.name.cz57=CZ57å¤ä»‡ç«ç¥žç‚® -gun.name.dart=气动射针枪 -gun.name.deagle=IMI沙漠之鹰 -gun.name.emp=EMPç£æš´æ­¥æžª -gun.name.extinguisher=PROTEX6kgç­ç«å™¨ -gun.name.ffiV=普通左轮手枪 -gun.name.ffiVInox=强化左轮手枪 -gun.name.ffiVLead=æ ¸å­å·¦è½®æ‰‹æžª -gun.name.ffiVN1=梦魇左轮手枪(åˆä»£) -gun.name.ffiVN2=梦魇左轮手枪(黑暗) -gun.name.ffiVUltra=Sa326元素左轮手枪 -gun.name.ffivBling=黄金左轮手枪 -gun.name.ffivSatur=土星金属手枪 -gun.name.g36=黑克勒 & 科赫 G36çªå‡»æ­¥æžª -gun.name.gPistol=HK69榴弹手枪 -gun.name.gustav=M1å¡å°”Â·å¤æ–¯å¡”夫无åŽåº§åŠ›æ­¥æžª -gun.name.ifHorseshoe=IF-18蹄é“军工诺åŽå…‹ -gun.name.ifPit=IF-18蹄é“军工红钥匙左轮手枪 -gun.name.ifScope=å°çš®çš„IF-18蹄é“军工左轮手枪 -gun.name.ifStorm=IF-18蹄é“军工银色风暴 -gun.name.ifVanity=黑æ°å…‹çš„IF-18蹄é“军工五å‘装左轮枪 -gun.name.karl=M1å¡å°”ç«ç®­ç­’ -gun.name.ks23=è¨ç¼ªå°”-23大å£å¾„霰弹枪 -gun.name.lacunae=CZ33地狱ç«ç¥ž -gun.name.lasetDet=éœæ™®ç»´å°”激光引爆器 -gun.name.lunaAR=1986-â€æ¯˜æ²™é—¨å¤©â€œå¼çªå‡»æ­¥æžª -gun.name.lunaGun=1978-â€æ¯—çº½å¤©â€œå¼æ ‡é…è‡ªå«æ­¦å™¨ (2改型) -gun.name.lunaHLR=1944-“嫦娥â€å¼è½»æœºæžª -gun.name.lunaShotty=1978-â€å…³ç¾½â€œå¼éœ°å¼¹æžª (1改型) -gun.name.lunaSMG=1956-â€é˜¿éš¾ç­”“å¼å†²é”‹æžª -gun.name.lunaSniper=1915 “åŽç¾¿â€ å¼å物质æ¥å¤æžª +gun.name.cz53=CZ53 å•兵转轮机枪 +gun.name.cz57=CZ57 å¤ä»‡è€…机枪 +gun.name.dart=针枪 +gun.name.deagle=ä»¥è‰²åˆ—å†›äº‹å·¥ä¸šå…¬å¸æ²™æ¼ ä¹‹é¹° +gun.name.emp=EMP投射器 +gun.name.extinguisher=PROTEXç­ç«å™¨6kg +gun.name.ffiV=FFI Viper +gun.name.ffiVInox=FFI Viper Inox +gun.name.ffiVLead=FFI Viper Lead +gun.name.ffiVN1=FFI Viper N1 +gun.name.ffiVN2=FFI Viper N2 +gun.name.ffiVUltra=FFI Viper Ultra +gun.name.ffivBling=FFI Viper Bling +gun.name.ffivSatur=FFI Viper D-25A +gun.name.g36=HK G36çªå‡»æ­¥æžª +gun.name.gPistol=HK69A1 手æŒå•呿¦´å¼¹å‘射器 +gun.name.gustav=å¡å°”Â·å¤æ–¯å¡”夫M1æ— åŽå力炮 +gun.name.ifHorseshoe=IF-18 è¹„é“ +gun.name.ifPit=IF-18 è¹„é“ Bottomless Pit +gun.name.ifScope=IF-18 è¹„é“ Scoped +gun.name.ifStorm=IF-18 è¹„é“ é“¶è‰²é£Žæš´ +gun.name.ifVanity=IF-18 è¹„é“ Vanity +gun.name.karl=M1 å¡å°”Â·å¤æ–¯å¡”夫 +gun.name.ks23=KS-23霰弹枪 +gun.name.lacunae=Auntie Lacunae +gun.name.lasetDet=éœæ™®ç»´å°”激光雷管 +gun.name.lunaAR=1986 Bishamontenå¼çªå‡»æ­¥æžª +gun.name.lunaGun=1978 RÄhula type Standard Issue Sidearm (Revision 2) +gun.name.lunaHLR=1944嫦娥å¼è½»æœºæžª +gun.name.lunaShotty=1978å¹´å…³ç¾½å¼æ•£å¼¹æžªï¼ˆç¬¬1次修订) +gun.name.lunaSMG=1956 Änanda type Submachine Gun +gun.name.lunaSniper=1915åŽç¾¿å¼åå™¨ææ­¥æžª gun.name.lunaTWR=时间扭曲步枪 -gun.name.m2=.50å£å¾„å‹ƒæœ—å®æœºæžª, M2, HB -gun.name.m42=M-42战术核弹射器 -gun.name.m42MIRV=M-42 核弹弹射器"è¯•éªŒæ€§å­æ¯å¼¹å¤´ -gun.name.m60= 7.62 mmå£å¾„机枪, M60 +gun.name.m2=M2å¼å‹ƒæœ—å®å¤§å£å¾„釿œºæžª +gun.name.m42=M-42战术核弹å‘射器 +gun.name.m42MIRV=M-42实验MIRV +gun.name.m60=7.62毫米å£å¾„M60机枪 gun.name.maxim=é©¬å…‹æ²æœºæžª -gun.name.maximDouble=åŒç®¡é©¬å…‹æ²æœºæžª -gun.name.mg3=通用MG3机枪 - .50 æ¨¡å¼ -gun.name.mp40=Mp40冲锋枪 -gun.name.nerf=设计者未知的NERFå‘射器 -gun.name.osipr=看守者暗能é‡è„‰å†²æ­¥æžª -gun.name.panz=å¦å…‹æ€æ‰‹54 -gun.name.quadro=å››è”装制导便æºå¼ç”µè§†åˆ¶å¯¼å¯¼å¼¹å‘射器 +gun.name.maximDouble=åŒé‡é©¬å…‹æ²æœºæžª +gun.name.mg3=MG-42通用机枪 +gun.name.mp40=MP40冲锋枪 +gun.name.nerf=æŸäº›æ— è‰¯è®°è€…眼中的大规模æ€ä¼¤æ€§æ­¦å™¨ +gun.name.osipr=守望标准型脉冲步枪 +gun.name.panz=åå¦å…‹ç«ç®­æ¥å¤æžª 54 +gun.name.quadro=OpenQuadro便æºå¼å¯¼å¼¹å‘射器 gun.name.remington870=雷明顿870 -gun.name.revolverCursed=被诅咒的ä¸åˆ—颠标准å‘行版左轮手枪 -gun.name.sauer=æ–¯å¦.索尔的è¨ç¼ªå°”-23霰 -gun.name.spas12= -gun.name.spiw=H&R弗莱切特镖 -gun.name.stinger=FIM-92“毒刺â€ä¾¿æºå¼é˜²ç©ºå¯¼å¼¹ -gun.name.stingerOneSky=天马防空导弹 +gun.name.revolverCursed=ä¸åˆ—颠标准问题电动手枪 +gun.name.sauer=ç»å°”猎枪 +gun.name.spas12=弗兰基SPAS-12å¼12å·éœ°å¼¹æžª +gun.name.spiw=H&R SPIW +gun.name.stinger=FIM-92毒刺便æºå¼é˜²ç©ºç³»ç»Ÿ +gun.name.stingerOneSky=The One Sky 毒刺便æºå¼é˜²ç©ºç³»ç»Ÿ gun.name.supershotty=åŒç®¡æˆ˜æ–—霰弹枪 -gun.name.tau=XVL1456 è´Ÿé™¶å­åŠ å†œç‚®åŽŸåž‹ -gun.name.tommy9=9mmå£å¾„M1A1冲锋枪 +gun.name.tau=XVL1456 é™¶å­åŠ å†œç‚® +gun.name.tommy9=M1A1冲锋枪9毫米型 gun.name.tommy=M1A1冲锋枪 gun.name.topaz=é‡åž‹ç«ç„°ç‡ƒçƒ§å™¨ gun.name.uacCarbine=UAC-41å¡å®¾æžª @@ -1297,15 +1249,14 @@ hbmfluid.death=锇酸溶液 hbmfluid.deuterium=æ°˜ hbmfluid.diesel=柴油 hbmfluid.diesel_crack=裂化柴油 -hbmfluid.diesel_crack_reform=高辛烷值裂解柴油 +hbmfluid.diesel_crack_reform=高辛烷值裂化柴油 hbmfluid.diesel_reform=高辛烷值柴油 hbmfluid.egg=蛋溶解液 hbmfluid.estradiol=雌二醇溶液 hbmfluid.ethanol=乙醇 -hbmfluid.enderjuice=末影液 +hbmfluid.enderjuice=æœ«å½±æžœæ± hbmfluid.fishoil=鱼油 hbmfluid.fracksol=压裂液 -hbmfluid.fullerene=富勒烯溶液 hbmfluid.gas=天然气 hbmfluid.gas_coker=焦化气 hbmfluid.gasoline=å«é“…汽油基油 @@ -1361,7 +1312,7 @@ hbmfluid.potassium_chloride=氯化钾溶液 hbmfluid.puf6=六氟化钚 hbmfluid.radiosolvent=高性能溶剂 hbmfluid.reclaimed=å†ç”Ÿæ²¹ -hbmfluid.redmud=红泥浆 +hbmfluid.redmud=红色泥浆 hbmfluid.reformate=釿•´æ²¹ hbmfluid.reformgas=釿•´æ°” hbmfluid.salient=绿色液体 @@ -1380,7 +1331,7 @@ hbmfluid.spentsteam=低压蒸汽 hbmfluid.steam=蒸汽 hbmfluid.sulfuric_acid=ç¡«é…¸ hbmfluid.sunfloweroil=葵花籽油 -hbmfluid.superhotsteam=超热浓蒸汽 +hbmfluid.superhotsteam=超热蒸汽 hbmfluid.syngas=åˆæˆæ°” hbmfluid.thorium_salt=æ¶²æ€é’ç› hbmfluid.thorium_salt_depleted=贫化液æ€é’ç› @@ -1396,27 +1347,7 @@ hbmfluid.watz=毒泥浆 hbmfluid.woodoil=木油 hbmfluid.xenon=氙气 hbmfluid.xpjuice=ç»éªŒæ± -hbmfluid.xylene=BTX苯-甲苯-二甲苯混åˆç‰© - -hbmfluid.Trait.Combustible=[å¯ç‡ƒçƒ§å‘电]$产生 §c%sHE §6æ¯æ¡¶$燃料等级: §c%s -hbmfluid.Trait.Combustible.FuelGrade=低$中$高$航空级$æ°”æ€ -hbmfluid.Trait.Coolable=热容é‡: %s TU$导热效率: %s%% -hbmfluid.Trait.Corrosive=[强è…蚀性]$[è…蚀性] -hbmfluid.Trait.Flammable=[å¯ç‡ƒçƒ§äº§çƒ­]$产生 §c%sTU §eæ¯æ¡¶ -hbmfluid.Trait.Poison=[有毒气体] -hbmfluid.Trait.PWRModerator=[PWR中å­é€šé‡å€å¢ž]$核心中å­é€šé‡ %s%s%% -hbmfluid.Trait.Toxin=[毒素] -hbmfluid.Trait.VentRadiation=[放射性] -hbmfluid.TraitSimple.Amat=[å物质] -hbmfluid.TraitSimple.Delicious=[美味] -hbmfluid.TraitSimple.Gaseous=[气体] -hbmfluid.TraitSimple.Gaseous_ART=[室温下为气体] -hbmfluid.TraitSimple.LeadContainer=[需è¦ç”¨å±é™©å“ç½å®¹çº³] -hbmfluid.TraitSimple.Leaded=[å«é“…燃料] -hbmfluid.TraitSimple.Liquid=[液体] -hbmfluid.TraitSimple.Plasma=[等离å­ä½“] -hbmfluid.TraitSimple.Viscous=[粘性] - +hbmfluid.xylene=轻质芳烃(BTX) hbmpseudofluid.none=空 hbmpseudofluid.heuf6=高浓缩六氟化铀 hbmpseudofluid.meuf6=中浓缩六氟化铀 @@ -1596,12 +1527,12 @@ item.ammo_4gauge_explosive.name=23mm榴弹 item.ammo_4gauge_flechette.name=4å·ç®­éœ°å¼¹ item.ammo_4gauge_flechette_phosphorus.name=4å·ç®­éœ°å¼¹[白磷] item.ammo_4gauge_kampf.name=23mmç«ç®­å¼¹ -item.ammo_4gauge_semtex.name=23mm挖掘榴弹 -item.ammo_4gauge_sleek.name=4å£å¾„鹿弹[IF-R&D] -item.ammo_4gauge_slug.name=å››å£å¾„实心独头弹 -item.ammo_4gauge_titan.name=å››å£å¾„æ³°å¦æ€æ‰‹å¼¹ -item.ammo_4gauge_vampire.name=4å£å¾„åå¸è¡€é¬¼æœ¨æ¡©éœ°å¼¹ -item.ammo_4gauge_void.name=4å£å¾„电离å­éœ°å¼¹ +item.ammo_4gauge_semtex.name=23mmé‡‡çŸ¿å¼¹è¯ +item.ammo_4gauge_sleek.name=4å·é¹¿å¼¹[IF-R&D] +item.ammo_4gauge_slug.name=å››å·å®žå¿ƒç‹¬å¤´å¼¹ +item.ammo_4gauge_titan.name=4å·Quacker鹿弹 +item.ammo_4gauge_vampire.name=4å·æœ¨ç­¾å¼¹ +item.ammo_4gauge_void.name=4å·ç”µç¦»ç²’å­å¼¹ item.ammo_50ae.name=.50AEå­å¼¹ item.ammo_50ae_ap.name=.50AEå­å¼¹[AP] item.ammo_50ae_chlorophyte.name=.50AEå­å¼¹[å¶ç»¿] @@ -1620,17 +1551,17 @@ item.ammo_50bmg_phosphorus.name=.50BMGå­å¼¹[白磷] item.ammo_50bmg_sleek.name=.50BMGå­å¼¹[IF-R&D] item.ammo_50bmg_star.name=.50BMGå­å¼¹[星辉] item.ammo_556.name=5.56mmå­å¼¹ -item.ammo_556_ap.name=5.56mmå­å¼¹[穿甲弹] -item.ammo_556_chlorophyte.name=5.56mmå¼¹è¯[绿藻] -item.ammo_556_du.name=5.56mmå­å¼¹[贫铀涂层] -item.ammo_556_flechette.name=5.56mm镖形弹 -item.ammo_556_flechette_chlorophyte.name=5.56mm镖形弹弹è¯[绿藻] -item.ammo_556_flechette_du.name=5.56mm镖形弹 [贫铀涂层] -item.ammo_556_flechette_incendiary.name=5.56mm镖形弹 [燃烧] -item.ammo_556_flechette_phosphorus.name=5.56mm镖形弹 [白磷弹] -item.ammo_556_flechette_sleek.name=5.56mm镖形弹[IF-R&D] +item.ammo_556_ap.name=5.56mmå­å¼¹[AP] +item.ammo_556_chlorophyte.name=5.56mmå­å¼¹[å¶ç»¿] +item.ammo_556_du.name=5.56mmå­å¼¹[è´«é“€] +item.ammo_556_flechette.name=5.56mm弗莱彻å­å¼¹ +item.ammo_556_flechette_chlorophyte.name=5.56mm弗莱彻å­å¼¹[å¶ç»¿] +item.ammo_556_flechette_du.name=5.56mm弗莱彻å­å¼¹ [贫铀穿甲] +item.ammo_556_flechette_incendiary.name=5.56mm弗莱彻å­å¼¹ [燃烧] +item.ammo_556_flechette_phosphorus.name=5.56mm弗莱彻å­å¼¹ [白磷穿甲] +item.ammo_556_flechette_sleek.name=5.56mm弗莱彻å­å¼¹[IF-R&D] item.ammo_556_k.name=5.56mm空包弹 -item.ammo_556_phosphorus.name=5.56mmå­å¼¹[白磷弹] +item.ammo_556_phosphorus.name=5.56mmå­å¼¹[白磷] item.ammo_556_sleek.name=5.56mmå­å¼¹[IF-R&D] item.ammo_556_star.name=5.56mmå­å¼¹ [星辉] item.ammo_556_tracer.name=5.56mm å­å¼¹[曳光弹] @@ -1670,13 +1601,13 @@ item.ammo_coilgun.name=钨制线圈枪å­å¼¹ item.ammo_coilgun_du.name=é“€é“åˆé‡‘制线圈枪å­å¼¹ item.ammo_coilgun_rubber.name=橡胶制线圈枪å­å¼¹ item.ammo_container.name=万能弹è¯ç›’ -item.ammo_dart.name=塑料飞镖 [凋零] -item.ammo_dart_nerf.name=NERF飞镖 -item.ammo_dart_nuclear.name=塑料飞镖 [定时爆炸] -item.ammo_dgk.name=200å‘åŒç®¡è¿‘防炮"éœåŽå¾·"å¼¹è¯ç®± -item.ammo_fireext.name=ç­ç«å™¨æ°´ç½ -item.ammo_fireext_foam.name=ç­ç«å™¨æ³¡æ²«ç½ -item.ammo_fireext_sand.name=ç­ç«å™¨ç¡¼ç ‚ç½ +item.ammo_dart.name=塑料镖[凋零] +item.ammo_dart_nerf.name=NERF 飞镖 +item.ammo_dart_nuclear.name=塑料镖[定时炸è¯] +item.ammo_dgk.name=åŒè”守门员近防系统200å‘å¼¹è¯ +item.ammo_fireext.name=ç­ç«å™¨ æ°´ç½ +item.ammo_fireext_foam.name=ç­ç«å™¨ æ³¡æ²«ç½ +item.ammo_fireext_sand.name=ç­ç«å™¨ ç¡¼ç ‚ç½ item.ammo_folly.name=é“¶å¼¹ item.ammo_folly_du.name=é“¶å¼¹[è´«é“€, ä¸çˆ†ç‚¸] item.ammo_folly_nuclear.name=é“¶å¼¹[æ ¸å­] @@ -1684,7 +1615,7 @@ item.ammo_fuel.name=æŸ´æ²¹ç½ item.ammo_fuel_gas.name=æ¯’æ°”ç½ item.ammo_fuel_napalm.name=å‡å›ºæ±½æ²¹ç½ item.ammo_fuel_phosphorus.name=ç™½ç£·ç½ -item.ammo_fuel_vaporizer.name=æŒ¥å‘æ€§ç‡ƒæ–™ç½ +item.ammo_fuel_vaporizer.name=æ±½åŒ–ç½ item.ammo_grenade.name=40mm榴弹 item.ammo_grenade_concussion.name=40mm榴弹[震è¡] item.ammo_grenade_finned.name=40mm榴弹[尾翼稳定] @@ -1718,8 +1649,8 @@ item.ammo_nuke_barrel.name=å°åž‹æ ¸åºŸæ–™æ¡¶ item.ammo_nuke_high.name=迷你核弹 (高当é‡) item.ammo_nuke_low.name=迷你核弹 (低当é‡) item.ammo_nuke_pumpkin.name=å—瓜炸弹 -item.ammo_nuke_safe.name=迷你核弹 (安全) -item.ammo_nuke_tots.name=迷你核弹 (å°åž‹æ•£å°„弹丸) +item.ammo_nuke_safe.name=迷你核弹 (安全) +item.ammo_nuke_tots.name=迷你核弹 (幼体) item.ammo_rocket.name=84mmç«ç®­å¼¹ item.ammo_rocket_canister.name=84mm ç«ç®­å¼¹[榴霰弹] item.ammo_rocket_digamma.name=§4å½’ 零§r @@ -1732,7 +1663,7 @@ item.ammo_rocket_phosphorus.name=84mmç«ç®­å¼¹[白磷] item.ammo_rocket_rpc.name=84mmç«ç®­å¼¹[飞行电锯] item.ammo_rocket_shrapnel.name=84mmç«ç®­å¼¹[破片] item.ammo_rocket_sleek.name=84mmç«ç®­å¼¹[IF-R&D] -item.ammo_rocket_toxic.name=84mmç«ç®­å¼¹[化学毒气] +item.ammo_rocket_toxic.name=84mmç«ç®­å¼¹[化学] item.ammo_shell.name=240mm炮弹 item.ammo_shell_apfsds_du.name=240mm 贫铀尾翼稳定脱壳穿甲弹 item.ammo_shell_apfsds_t.name=240mm 钨心尾翼稳定脱壳穿甲弹 @@ -1760,14 +1691,9 @@ item.ams_catalyst_strontium.name=é”¶å应催化剂 item.ams_catalyst_thorium.name=é’å应催化剂 item.ams_catalyst_tungsten.name=é’¨å应催化剂 item.ams_core_eyeofharmony.name=å’Œè°ä¹‹çœ¼[AMS/DFC核心] -item.ams_core_eyeofharmony.desc=ä¸€é¢—æ’æ˜Ÿè‡ªè¡Œå´©å¡Œ,$ä»…ä»…å‡ çº³ç§’å°±å˜æˆäº†é»‘æ´ž,$被时间冻结了.$如果我ä¸äº†è§£ç›¸å…³é¢†åŸŸçš„è¯,$我会说这是æŸä¸ªäººç¼–出æ¥çš„一些$关于深空魔法的故作高深的鬼è¯.$你还欠我åå—é’±. item.ams_core_sing.name=活跃奇点[AMS/DFC核心] -item.ams_core_sing.desc=一ç§è¢«ä¿®æ­£çš„ã€æœªå®šä¹‰çš„æ—¶ç©ºçжæ€$用于å助胶å­é—´èšå˜å’Œæ—¶ç©ºæ¹®ç­.$是的,这会缓慢而稳定地摧æ¯$宇宙本身结构,但至少你å¯ä»¥ç”¨å®ƒç»™ä½ çš„$烤é¢åŒ…机供电$所以一切都安好. -item.ams_core_thingy.name=暮光闪闪的皇冠[AMS/DFC核心] -item.ams_core_thingy.desc=...$...$...我还拿ç€è¿™ä¸ªå—?$这是个å°é‡‘属制å“.$我ä¸çŸ¥é“它是从哪里æ¥çš„,也ä¸çŸ¥é“它是干什么的,$也许他们是在垃圾场å‘现的,$ç„¶åŽæŠŠå®ƒå½“ä½œæŸç§å¤è‘£è‰ºæœ¯å“喿މ.$äº‹å®žä¸Šå¦‚æžœä¸æ˜¯å› ä¸ºæˆ‘å¯ä»¥æŠŠå®ƒå¡žè¿›ä¸€ä¸ªå·¨å¤§çš„æ¿€å…‰å应堆里,$我å¯èƒ½ä¼šæŠŠå®ƒæ‰”回到它属于的地方$----垃圾桶. -item.ams_core_thingy_hide.desc=是的,我甚至ä¸ä¼šè´¨ç–‘这个. +item.ams_core_thingy.name=Thingy[AMS/DFC核心] item.ams_core_wormhole.name=微型虫洞[AMS/DFC核心] -item.ams_core_wormhole.desc=æ•°å亿个纳米虫洞云无法主动从$å¦ä¸€ä¸ªç»´åº¦èŽ·å–物质$而是将所有物质转化为$纯能é‡.è¿™æ„味ç€$你正在积æžåœ°ç ´åå¦ä¸€ä¸ª$维度,åƒå¸ä¸€ç›’æžœæ±$一样å¸å¹²å®ƒ.$无论如何,这个维度å¯èƒ½å¾ˆç³Ÿç³•.$我敢打赌里é¢å…¨æ˜¯é»„蜂或是别的什么垃圾,伙计,$而我讨厌这些东西. item.ams_focus_blank.name=空白稳定器焦点 item.ams_focus_booster.name=较弱的约æŸåœºå’Œæ ¸å¿ƒèƒ½é‡æ³¨å…¥ï¼š$更多的热é‡äº§ç”Ÿï¼Œæ›´å¤šçš„能é‡ã€‚ item.ams_focus_booster.desc=较弱的约æŸåœºå’Œæ ¸å¿ƒèƒ½é‡æ³¨å…¥ï¼š$更多的热é‡äº§ç”Ÿï¼Œæ›´å¤šçš„能é‡ã€‚ @@ -1948,7 +1874,7 @@ item.blade_meteorite.name=陨石刀 item.blade_titanium.name=钛扇片 item.blade_tungsten.name=钨强化扇片 item.blades_advanced_alloy.name=高级åˆé‡‘刀片 -item.blades_desh.name=德什制刀片 +item.blades_desh.name=Desh制刀片 item.blades_steel.name=钢制刀片 item.blades_titanium.name=钛制刀片 item.blowtorch.name=å–·ç¯ @@ -1978,7 +1904,6 @@ item.bottle_empty.name=空å¯ä¹ç“¶ item.bottle_mercury.name=一瓶水银 item.bottle_nuka.name=æ ¸å­å¯ä¹ item.bottle_opener.name=Hbm自制开瓶器 -item.bottle_opener.desc=我自己的开瓶器.$谨慎使用! item.bottle_quantum.name=é‡å­æ ¸å­å¯ä¹ item.bottle_rad.name=è¾å°„S~æ ¸å­å¯ä¹ item.bottle_sparkle.name=S~æ ¸å­å¯ä¹ @@ -2088,7 +2013,7 @@ item.canned_yogurt.desc=å¯èƒ½å掉了,但管它呢 item.canteen_13.name=Vault13水壶 item.canteen_fab.name=æžå“ä¼ç‰¹åŠ  item.canteen_vodka.name=ä¼ç‰¹åŠ  -item.cap_fritz.name=Fritz弗里茨å¯ä¹ç“¶ç›– +item.cap_fritz.name=弗里茨瓶盖 item.cap_korl.name=Korlç“¶ç›– item.cap_nuka.name=æ ¸å­å¯ä¹ç“¶ç›– item.cap_quantum.name=樱桃味核å­å¯ä¹ç“¶ç›– @@ -2132,26 +2057,25 @@ item.centrifuge_element.name=离心元件 item.centrifuge_tower.name=离心塔 item.chainsaw.name=链锯 item.cheese.name=奶酪 -item.cheese_quesadilla.name=墨西哥奶酪饼 -item.cheese_quesadilla.desc=这就是50å¹´ä»½çš„é…µæ¯æ„ŸæŸ“对你的影å“. -item.chemical_dye.black.name=化学染料 (黑色) -item.chemical_dye.blue.name=化学染料 (è“色) -item.chemical_dye.brown.name=化学染料 (棕色) -item.chemical_dye.cyan.name=化学染料 (é’色) -item.chemical_dye.gray.name=化学染料 (ç°è‰²) -item.chemical_dye.green.name=化学染料 (绿色) -item.chemical_dye.lightblue.name=化学染料 (æµ…è“色) -item.chemical_dye.lime.name=化学染料 (石ç°è‰²) -item.chemical_dye.magenta.name=化学染料 (洋红色) -item.chemical_dye.orange.name=化学染料 (橙色) -item.chemical_dye.pink.name=化学染料 (粉色) -item.chemical_dye.purple.name=化学染料 (紫色) -item.chemical_dye.red.name=化学染料 (红色) -item.chemical_dye.silver.name=化学染料 (æµ…ç°è‰²) -item.chemical_dye.white.name=化学染料 (白色) -item.chemical_dye.yellow.name=化学染料 (黄色) -item.chemistry_set.name=化学玻璃仪器 -item.chemistry_set_boron.name=化学玻璃仪器(硼玻璃) +item.cheese_quesadilla.name=奶酪油炸玉米粉饼 +item.chemical_dye.black.name=化学染料(黑色) +item.chemical_dye.blue.name=化学染料(è“色) +item.chemical_dye.brown.name=化学染料(棕色) +item.chemical_dye.cyan.name=化学染料(é’色) +item.chemical_dye.gray.name=化学染料(ç°è‰²ï¼‰ +item.chemical_dye.green.name=化学染料(绿色) +item.chemical_dye.lightblue.name=化学染料(浅è“色) +item.chemical_dye.lime.name=化学染料(石ç°ï¼‰ +item.chemical_dye.magenta.name=化学染料(å“红色) +item.chemical_dye.orange.name=化学染料(橙色) +item.chemical_dye.pink.name=化学染料(粉色) +item.chemical_dye.purple.name=化学染料(紫色) +item.chemical_dye.red.name=化学染料(红色) +item.chemical_dye.silver.name=化学染料(浅ç°è‰²ï¼‰ +item.chemical_dye.white.name=化学染料(白色) +item.chemical_dye.yellow.name=化学染料(黄色) +item.chemistry_set.name=实验室玻璃器皿 +item.chemistry_set_boron.name=实验室玻璃器皿(硼玻璃) item.chemistry_template.name=化工厂模æ¿: item.chernobylsign.name=è¾å°„警告标志战斧 item.chlorine_pinwheel.name=氯气转轮 @@ -2376,7 +2300,6 @@ item.debris_graphite.name=çƒ­çŸ³å¢¨å— item.debris_metal.name=断裂金属棒 item.debris_shrapnel.name=èµ°é“碎片 item.definitelyfood.name=完全ä¸è„牌军粮 -item.definitelyfood.desc=是的,$我厌倦了ä¸å¾—ä¸å¤–出$为了找东西åƒè€Œä¸è‡³äºŽé¥¿æ­»,$所以这就是我天æ‰èˆ¬çš„解决的方案:$ $åƒç‚¹å¯é£Ÿç”¨çš„æ³¥åœŸ. item.defuser.name=高科技拆弹装置 item.defuser_gold.name=黄金剪线钳 item.demon_core_closed.name=å°é—­çš„æ¶é­”æ ¸å¿ƒ @@ -2391,16 +2314,13 @@ item.designator_arty_range.name=远程ç«ç‚®é¥æŽ§å™¨ item.designator_manual.name=手动目标指示器 item.designator_range.name=远程目标指示器 item.detonator.name=起爆器 -item.detonator.desc=Shiftå³å‡»æ¥è®¾ç½®è§¦å‘ä½ç½®,$å³å‡»æ¥è§¦å‘! -item.detonator.pos.desc=未设置触å‘ä½ç½®!$连接到: %s, %s, %s item.detonator_de.name=死亡炸弹 item.detonator_deadman.name=死亡雷管 item.detonator_laser.name=激光起爆器 item.detonator_multi.name=多å‘起爆器 item.deuterium_filter.name=氘过滤器 item.diamond_gavel.name=钻石槌 -item.diamond_gavel.desc=那个关于钻石沙砾的笑è¯! 它现在终于讲得通了!!$ $§9能造æˆå°½å¯èƒ½å¤šçš„伤害. -item.dieselsuit_boots.name=æŸ´æ²¹åŠ¨åŠ›è£…ç”²é´ +item.dieselsuit_boots.name=柴油动力高跟鞋 item.dieselsuit_helmet.name=柴油动力头戴å¼çŽ¯å¢ƒä¼ æ„Ÿå™¨ item.dieselsuit_legs.name=柴油动力腿部伺æœç³»ç»Ÿ item.dieselsuit_plate.name=柴油动力控制器 @@ -2469,17 +2389,17 @@ item.envsuit_boots.name=M1TTY环ä¿å¥—装é´å­ item.envsuit_helmet.name=M1TTY环ä¿å¥—装头盔 item.envsuit_legs.name=M1TTY环ä¿å¥—装护腿 item.envsuit_plate.name=M1TTY环ä¿å¥—装胸甲 -item.euphemium_boots.name=Ep元素é´å­ -item.euphemium_capacitor.name=Ep元素电容器 -item.euphemium_capacitor.desc=å…许被动分散累积的正能é‡. -item.euphemium_helmet.name=Ep元素头盔 -item.euphemium_kit.name=Ep元素工具箱 -item.euphemium_legs.name=Ep元素护腿 -item.euphemium_plate.name=Ep元素胸甲 -item.euphemium_stopper.name=Ep元素-阻滞者 -item.explosive_lenses.name=高能内爆炸è¯é˜µåˆ— -item.explosive_lenses.desc=ç”±8个PBXèšåˆç‰©ç²˜ç»“炸è¯è£…é…而æˆï¼Œå¸¦æœ‰ä¸€ä¸ªè–„åž‹é“æŽ¨è¿›å™¨, $硬é“外壳和å°åž‹æ¡¥ä¸å¼é›·ç®¡. -item.fabsols_vodka.name=Fabsolçš„ä¼ç‰¹åŠ  +item.euphemium_boots.name=Epé´å­ +item.euphemium_capacitor.name=Ep电容 +item.euphemium_capacitor.desc=å…许被动分散累积的正能é‡ã€‚ +item.euphemium_helmet.name=Ep头盔 +item.euphemium_kit.name=Ep工具箱 +item.euphemium_legs.name=Ep护腿 +item.euphemium_plate.name=Ep胸甲 +item.euphemium_stopper.name=Ep-阻滞者 +item.explosive_lenses.name=炸è¯é€é•œé˜µåˆ— +item.explosive_lenses.desc=8个PBX炸è¯ç»„装的阵列,带有一个薄的$é“æŽ¨è¿›å™¨ã€ç¡¬é“外壳和$å°åž‹æ¡¥ä¸é›·ç®¡ã€‚ +item.fabsols_vodka.name=Fabsolä¼ç‰¹åŠ  item.factory_core_advanced.name=高级工厂能æºç»„ä»¶ item.factory_core_titanium.name=工厂能æºç»„ä»¶ item.fallout.name=一堆è¾å°„å°˜ @@ -2522,8 +2442,8 @@ item.fluid_identifier_multi.info=通用æµä½“识别ç ï¼š item.fluid_identifier_multi.info2=次è¦ç±»åž‹ï¼š item.fluid_tank_empty.name=空通用æµä½“ç½ item.fluid_tank_full.name=通用æµä½“ç½: -item.fluid_tank_lead_empty.name=空的å±é™©å“æµä½“ç½ -item.fluid_tank_lead_full.name=å±é™©å“æµä½“ç½: +item.fluid_tank_lead_empty.name=空å±é™©å“ç½ +item.fluid_tank_lead_full.name=å±é™©å“ç½ï¼š item.fluorite.name=氟石粉 item.flywheel_beryllium.name=é“制飞轮 item.fmn.name=æ°Ÿç¡è¥¿æ³®ç‰‡ @@ -2552,7 +2472,7 @@ item.fusion_shield_chlorophyte.name=å¶ç»¿é‡‘属èšå˜å应堆覆层 item.fusion_shield_desh.name=Deshèšå˜å应堆覆层 item.fusion_shield_tungsten.name=é’¨èšå˜å应堆覆层 item.fusion_shield_vaporwave.name=蒸汽波å应堆覆层 -item.gadget_core.name=大型钚核心 +item.gadget_core.name=钚核心 item.gadget_explosive.name=ç‚¸è¯ item.gadget_kit.name=å°çŽ©æ„ å¥—ä»¶ item.gadget_wireing.name=线路 @@ -2636,7 +2556,7 @@ item.gun_avenger.name=CZ57å¤ä»‡è€…机枪 item.gun_b92.name=§9B92èƒ½é‡æ‰‹æžªÂ§r item.gun_b92_ammo.name=§9B92能é‡å•元§r item.gun_b93.name=§cB93èƒ½é‡æ‰‹æžªÂ§r -item.gun_benelli.name=伯奈利自动霰弹枪(弹鼓) +item.gun_benelli.name=伯奈利自动霰弹枪(Drum Mod) item.gun_bf.name=BEL item.gun_bf_ammo.name=Mk.Vå°åž‹AMAT-炮弹 –野ç«åž‹ item.gun_bio_revolver.name=Atlas @@ -2689,8 +2609,8 @@ item.gun_lever_action.name=é©¬è…¿æ æ†å¼éœ°å¼¹æžª[原版] item.gun_lever_action_ammo.name=12x74 鹿弹 item.gun_lever_action_dark.name=é©¬è…¿æ æ†å¼éœ°å¼¹æžª[黑暗] item.gun_lever_action_sonata.name=自æ€éœ°å¼¹ -item.gun_lever_action_sonata_2.name=§cå¥é¸£çš„麦克风§r -item.gun_lunatic_marksman.name=月都科技狙击步枪 +item.gun_lever_action_sonata_2.name=§cSonata的麦克风§r +item.gun_lunatic_marksman.name=Lunatic狙击步枪 item.gun_m2.name=勃朗å®M2HBåž‹é‡æœºæžª item.gun_minigun.name=CZ53机枪 item.gun_mirv.name=M42核弹å‘射器 "试验型MIRV" @@ -2751,9 +2671,9 @@ item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 鹿弹 item.gun_uzi.name=Uzi冲锋枪 item.gun_uzi_ammo.name=.22LRå­å¼¹ -item.gun_uzi_saturnite.name=土星金属Uzi -item.gun_uzi_saturnite_silencer.name=带消音器的土星金属Uzi -item.gun_uzi_silencer.name=带消音器的Uzi +item.gun_uzi_saturnite.name=土星Uzi冲锋枪 +item.gun_uzi_saturnite_silencer.name=带消音器的土星Uzi冲锋枪 +item.gun_uzi_silencer.name=带消音器的Uzi冲锋枪 item.gun_xvl1456.name=XVL1456é™¶å­åŠ å†œç‚®åŽŸåž‹æœº item.gun_xvl1456_ammo.name=贫化铀235å­å¼¹ item.gun_zomg.name=奇点能湮ç­å°„线“ZOMG炮†@@ -2831,9 +2751,8 @@ item.ingot_boron.name=硼锭 item.ingot_c4.name=一å—C-4 item.ingot_cadmium.name=镉锭 item.ingot_calcium.name=钙锭 -item.ingot_cdalloy.name=镉钢åˆé‡‘é”­ -item.ingot_cft.name=结晶富勒烯 -item.ingot_chainsteel.name=沉é‡é“¾é’¢ +item.ingot_cdalloy.name=镉钢锭 +item.ingot_chainsteel.name=é‡é“¾é’¢ item.ingot_co60.name=é’´-60é”­ item.ingot_cobalt.name=é’´é”­ item.ingot_combine_steel.name=CMB钢锭 @@ -2889,15 +2808,14 @@ item.ingot_red_copper.name=紫铜锭 item.ingot_reiium.name=é›·æ©é”­ item.ingot_rubber.name=橡胶锭 item.ingot_saturnite.name=土星锭 -item.ingot_schrabidate.name=Sa326元素酸化é“é”­ -item.ingot_schrabidium.name=Sa326异å˜é“€é‡‘属锭 -item.ingot_schrabidium_fuel.name=Sa326异å˜é“€é‡‘属燃料锭 -item.ingot_schraranium.name=低丰度Sa326异å˜é“€é‡‘属锭 -item.ingot_schraranium.desc=在Sa326异å˜é“€é‡‘属嬗å˜å™¨ä¸­ç”±é“€é”­å¬—å˜è€Œæ¥ -item.ingot_semtex.name=å¡žå§†æ±€å¡‘èƒ¶ç‚¸è¯ -item.ingot_semtex.desc=塞姆汀H塑料炸è¯$适用于多ç§åº”用的明星炸è¯.$å¯é£Ÿç”¨ -item.ingot_smore.name=S'more饼干 -item.ingot_solinium.name=Sa327索林锭 +item.ingot_schrabidate.name=Saé…¸é“é”­ +item.ingot_schrabidium.name=Sa326é”­ +item.ingot_schrabidium_fuel.name=Sa326燃料锭 +item.ingot_schraranium.name=低丰度Sa326é”­ +item.ingot_schraranium.desc=在Sa326嬗å˜å™¨ä¸­ç”±é“€åˆ¶æˆ +item.ingot_semtex.name=塞姆汀塑胶炸è¯å— +item.ingot_smore.name=S'more é”­ +item.ingot_solinium.name=Sa327é”­ item.ingot_sr90.name=é”¶-90é”­ item.ingot_starmetal.name=§9星辉锭§r item.ingot_steel.name=钢锭 @@ -2941,17 +2859,12 @@ item.iv_xp.name=ç»éªŒåŒ… item.iv_xp_empty.name=空的ç»éªŒåŒ… item.jackt.name=时尚防弹夹克 item.jackt2.name=时尚防弹夹克2:东京漂移 -item.jetpack.desc=本身å¯å•独穿戴! -item.jetpack_boost.name=强力喷气背包 -item.jetpack_boost.desc=拥有强劲动力的矢é‡å–·æ°”背包.$燃油消耗é‡å¤§å¹…增加. -item.jetpack_break.name=建筑工喷气背包 -item.jetpack_break.desc=å¯ä»¥è®©ä½ åœ¨ç©ºä¸­è‡ªåŠ¨æ‚¬åœçš„常规动力喷气背包.$æ½œè¡Œå°†å…³é—­æ‚¬åœæ¨¡å¼.$æ‚¬åœæ¨¡å¼å°†æ¶ˆè€—更少的燃料并增加你的空中机动性. +item.jetpack_boost.name=弹跳背包 +item.jetpack_break.name=缓é™èƒŒåŒ… item.jetpack_fly.name=喷气背包 -item.jetpack_fly.desc=常规动力喷气背包,æä¾›ç®€å•的上å‡åŠ¨åŠ›. item.jetpack_tank.name=å–·æ°”èƒŒåŒ…å¤‡ç”¨ç‡ƒæ–™ç½ item.jetpack_vector.name=矢é‡å–·æ°”背包 -item.jetpack_vector.desc=超高机动性喷气背包.$更高的燃料消耗率. -item.journal_bj.name=被å¨å£«å¿Œæ³¡æ¹¿é€çš„笔记本 +item.journal_bj.name=被å¨å£«å¿Œæµ¸é€çš„笔记本 item.journal_pip.name=生存主义者日记 item.journal_silver.name=承包商注释 item.key.name=钥匙 @@ -2972,9 +2885,7 @@ item.laser_crystal_digamma.name=Digamma迪伽马激光晶体 item.laser_crystal_dnt.desc=åŒèšæ€ä¸­å­-Spark费米å­è¶…晶体 item.laser_crystal_dnt.name=Spark激光晶体 item.lead_gavel.name=é“…æ§Œ -item.lead_gavel.desc=你被判决为铅中毒. item.lemon.name="柠檬" -item.lemon.desc=嗯,ä¸é”™. item.letter.name=å¿«æ·é‚®ä»¶ item.levitation_unit.name=é‡åŠ›æŽ§åˆ¶å™¨ item.lignite.name=è¤ç…¤ @@ -2987,9 +2898,7 @@ item.liquidator_plate.name=核废土清é“夫套装胸甲 item.lithium.name=锂锭 item.lodestone.name=ç£çŸ³ item.loop_stew.name=程åºçŒ¿ä¸“å±žæ—©é¤ -item.loop_stew.desc=一份éžå¸¸éžå¸¸éžå¸¸å¥åº·çš„æ—©é¤. item.loops.name=五彩麦圈 -item.loops.desc=bro,我能拿你一些麦圈å—? item.loot_10.name=10å·å¯¼å¼¹æˆ˜åˆ©ç®± item.loot_15.name=15å·å¯¼å¼¹æˆ˜åˆ©ç®± item.loot_misc.name=普通导弹战利箱 @@ -3016,44 +2925,28 @@ item.mechanism_rifle_2.name=先进步枪机构 item.mechanism_special.name=高科技武器机构 item.med_bag.name=医疗包 item.med_ipecac.name=åæ ¹é…Šå‚¬å剂 -item.med_ipecac.desc=苦涩的果æ±ä¼šä½¿ä½ çš„胃$强行排出里é¢çš„东西. item.med_ptsd.name=PTSD治疗è¯ç‰© -item.med_ptsd.desc=è¿™æ ¹æœ¬ä¸æ˜¯PTSD治疗è¯ç‰©,$åªæ˜¯æ¢äº†ä¸ªç“¶å­è£…çš„åæ ¹é…Š! item.med_schiziphrenia.name=抗精神分裂症è¯ç‰© -item.med_schiziphrenia.desc=求求了,让那声音消失,就一会儿.$ $...$最好ä¸è¦æœç”¨. item.medal_liquidator.name=核废土清é“夫勋章 item.meltdown_tool.name=达洛夫快速熔æ¯è£…ç½® -item.memespoon.name=§eèŠ±å›­å›­ä¸ -item.memespoon.desc=§810级铲å­$§bæŒç”¨è€…在ç«ç®­è·³è·ƒæ—¶å¯é€ æˆæš´å‡»$§cå‡ç¼“ 20%% å¼€ç«é€Ÿåº¦$§cæ²¡æœ‰éšæœºçš„æš´å‡» +item.memespoon.name=§eeèŠ±å›­å›­ä¸ item.memory.name=item.null.name item.mese_gavel.name=Meseæ§Œ item.mese_pickaxe.name=Meseé• item.meteor_charm.name=陨石项链 item.meteor_remote.name=陨石å¬å”¤å™¨ item.meteorite_sword.name=陨石剑 -item.meteorite_sword.desc=由一颗å è½ä¹‹æ˜Ÿé”»é€ è€Œæˆ$比大多数地çƒä¸Šçš„刀刃锋利 -item.meteorite_sword_seared.name=陨石剑 (炽热) -item.meteorite_sword_seared.desc=ç«ç„°å¢žå¼ºäº†åˆ€åˆƒ$让它更加强大 -item.meteorite_sword_reforged.name=陨石剑 (é‡é“¸) -item.meteorite_sword_reforged.desc=这把剑已ç»è¢«é‡é“¸äº†$以改正过去的缺陷 -item.meteorite_sword_hardened.name=陨石剑 (硬化) -item.meteorite_sword_hardened.desc=æžé«˜çš„压力让$刀刃进一步的硬化了 -item.meteorite_sword_alloyed.name=陨石剑 (åˆé‡‘化) -item.meteorite_sword_alloyed.desc==钴元素填充剑身上的裂ç¼$进一步加强了这把剑 -item.meteorite_sword_machined.name=陨石剑 (机械加工) -item.meteorite_sword_machined.desc=使用了先进的机械æ¥$进一步改进刀刃 -item.meteorite_sword_treated.name=陨石剑 (治疗) -item.meteorite_sword_treated.desc=化学物质的应用使$这把剑更加强大 -item.meteorite_sword_etched.name=陨石剑 (蚀刻) -item.meteorite_sword_etched.desc=é…¸æ¸…æ´—äº†åŽŸææ–™,$打造出了这把完美的剑 -item.meteorite_sword_bred.name=陨石剑 (增殖) -item.meteorite_sword_bred.desc=巨大的热é‡å’Œè¾å°„$åŽ‹ç¼©äº†è¿™æŠŠå‰‘çš„ææ–™ -item.meteorite_sword_irradiated.name=陨石剑 (è¾ç…§å¤„ç†) -item.meteorite_sword_irradiated.desc=原å­çš„力é‡$èµ‹äºˆäº†è¿™æŠŠå‰‘æ–°çš„åŠ›é‡ -item.meteorite_sword_fused.name=陨石剑 (熔èž) -item.meteorite_sword_fused.desc=è¿™æŠŠå‰‘å·²ç»æ²æµ´è¿‡äº†$æ¥è‡ªæ˜Ÿæ˜Ÿçš„远å¤åŠ›é‡ -item.meteorite_sword_baleful.name=陨石剑 (B.F野ç«çƒ§ç‚¼å¤„ç†) -item.meteorite_sword_baleful.desc=这把剑在远远超过$æ­£å¸¸ææ–™æ‰€èƒ½æ‰¿å—çš„æ¸©åº¦ä¸‹è¢«é”»é€ å‡ºæ¥ +item.meteorite_sword_seared.name=陨石剑(烧焦) +item.meteorite_sword_reforged.name=陨石剑(é‡é“¸) +item.meteorite_sword_hardened.name=陨石剑(硬化) +item.meteorite_sword_alloyed.name=陨石剑(åˆé‡‘) +item.meteorite_sword_machined.name=陨石剑(机械加工) +item.meteorite_sword_treated.name=陨石剑(精制) +item.meteorite_sword_etched.name=陨石剑(刻蚀) +item.meteorite_sword_bred.name=陨石剑(增殖) +item.meteorite_sword_irradiated.name=陨石剑(è¾ç…§) +item.meteorite_sword_fused.name=陨石剑(熔èž) +item.meteorite_sword_baleful.name=陨石剑(凶æ¶) item.mike_cooling_unit.name=氘冷å´è£…ç½® item.mike_core.name=é“€æ¶‚å±‚æ°˜ç½ item.mike_deut.name=æ°˜ç½ @@ -3088,7 +2981,6 @@ item.missile_nuclear_cluster.name=热核导弹 item.missile_rain.name=炸弹雨 item.missile_schrabidium.name=Sa326导弹 item.missile_shuttle.name=万金罗宾航天飞机 -item.missile_shuttle.desc=今夜, 在bo''om gear真人秀上:$Jameså¸å«é“…汽油å¸å—¨äº†,$Richard把整个项目的预算都花在了$一张æŸåçš„PNG色图文件上,$而我忘记了打开RBMKå应堆的$水循环系统,ç­‰å应过æ¥,$整个基地都被炸飞了. item.missile_skin_camo.name=导弹外壳:迷彩 item.missile_skin_color.desc=我å†ä¹Ÿæ‰¾ä¸åˆ°æˆ‘çš„å¯¼å¼¹äº†ï¼ item.missile_skin_desert.name=导弹外壳:沙漠迷彩 @@ -3108,7 +3000,6 @@ item.missile_skin_soviet_glory.desc=уÑлуга перевода недоÑту item.missile_skin_soviet_stank.name=导弹外壳:è‹ç»´åŸƒä¸æœ½ item.missile_skin_soviet_stank.desc=这个真的很有60年代的味é“。 item.missile_soyuz.name=è”盟-FGè¿è½½ç«ç®­ -item.missile_soyuz.desc=Skin:$Original$Luna Space Center$Post War item.missile_soyuz_lander.name=è”盟å·è½¨é“舱 item.missile_soyuz_lander.desc=劣质ç€é™†å™¨ï¼ item.missile_strong.name=强化型高爆导弹 @@ -3119,8 +3010,8 @@ item.mold_base.name=毛å¯é“¸é€ æ¨¡å…· item.mold.name=铸造模具 item.morning_glory.name=牵牛花 item.motor.name=马达 -item.motor_bismuth.name=铋制马达 -item.motor_desh.name=德什制马达 +item.motor_bismuth.name=铋马达 +item.motor_desh.name=Desh马达 item.mp_c_1.name=1级导弹制导芯片 item.mp_c_2.name=2级导弹制导芯片 item.mp_c_3.name=3级导弹制导芯片 @@ -3255,7 +3146,6 @@ item.multitool_miner.name=动力拳套[采矿激光] item.multitool_silk.name=动力拳套[精准采集] item.multitool_sky.name=动力拳套[划破天际] item.mysteryshovel.name=易碎锹 -item.mysteryshovel.desc=å¤±åŽ»äº†å´æ²¡æœ‰è¢«å¿˜è®° item.n2_charge.name=å¤§åž‹ç‚¸è¯ item.neutrino_lens.name=中å­é€é•œ item.neutron_reflector.name=中å­åå°„æ¿ @@ -3370,31 +3260,31 @@ item.ore.titanium=é’› item.ore.tungsten=é’¨ item.ore.thorium=é’ item.ore.uranium=é“€ -item.ore_bedrock.name=%s 基岩矿粉 -item.ore_byproduct.b_aluminium.name=结晶é“碎片 -item.ore_byproduct.b_bismuth.name=结晶铋碎片 -item.ore_byproduct.b_calcium.name=结晶钙碎片 -item.ore_byproduct.b_copper.name=结晶铜碎片 -item.ore_byproduct.b_iron.name=结晶é“碎片 -item.ore_byproduct.b_lead.name=结晶铅碎片 -item.ore_byproduct.b_lithium.name=结晶锂碎片 -item.ore_byproduct.b_polonium.name=结晶钋碎片 -item.ore_byproduct.b_radium.name=结晶镭碎片 -item.ore_byproduct.b_silicon.name=结晶硅碎片 -item.ore_byproduct.b_sulfur.name=结晶硫碎片 -item.ore_byproduct.b_technetium.name=结晶é”碎片 -item.ore_byproduct.b_titanium.name=结晶钛碎片 -item.ore_byproduct.b_uranium.name=结晶铀碎片 -item.ore_centrifuged.name=离心 %s 基岩矿粉 -item.ore_cleaned.name=洗净 %s 基岩矿粉 -item.ore_deepcleaned.name=æ·±åº¦æ¸…æ´ %s 基岩矿粉 -item.ore_enriched.name=富集 %s 基岩矿粉 -item.ore_nitrated.name=ç¡åŒ– %s 基岩矿粉 -item.ore_nitrocrystalline.name=ç¡åŒ–结晶 %s 基岩矿粉 -item.ore_purified.name=纯化 %s 基岩矿粉 -item.ore_radcleaned.name=è¾ç…§æ¸…æ´ %s 基岩矿粉 -item.ore_seared.name=ç¼çƒ§ %s 基岩矿粉 -item.ore_separated.name=分离æçº¯ %s 基岩矿粉 +item.ore_bedrock.name=基岩%s矿 +item.ore_byproduct.b_aluminium.name=铿™¶ä½“碎片 +item.ore_byproduct.b_bismuth.name=铋晶体碎片 +item.ore_byproduct.b_calcium.name=钙晶体碎片 +item.ore_byproduct.b_copper.name=铜晶体碎片 +item.ore_byproduct.b_iron.name=铿™¶ä½“碎片 +item.ore_byproduct.b_lead.name=铅晶体碎片 +item.ore_byproduct.b_lithium.name=锂晶体碎片 +item.ore_byproduct.b_polonium.name=钋晶体碎片 +item.ore_byproduct.b_radium.name=镭晶体碎片 +item.ore_byproduct.b_silicon.name=硅晶体碎片 +item.ore_byproduct.b_sulfur.name=硫晶体碎片 +item.ore_byproduct.b_technetium.name=锿™¶ä½“碎片 +item.ore_byproduct.b_titanium.name=钛晶体碎片 +item.ore_byproduct.b_uranium.name=铀晶体碎片 +item.ore_centrifuged.name=离心%s矿 +item.ore_cleaned.name=清æ´%s矿 +item.ore_deepcleaned.name=深清æ´%s矿 +item.ore_enriched.name=富集%s矿 +item.ore_nitrated.name=ç¡åŒ–%s矿 +item.ore_nitrocrystalline.name=亚ç¡åŸºç»“æ™¶%s矿 +item.ore_purified.name=净化%s矿 +item.ore_radcleaned.name=ç»è¾å°„清æ´çš„%s矿 +item.ore_seared.name=ç¼çƒ­çš„%s矿 +item.ore_separated.name=分离的%s矿 item.overfuse.name=奇异螺ä¸åˆ€ item.overfuse.desc=说啥? item.oxy_mask.name=æ°§æ°”é¢ç½© @@ -3435,7 +3325,6 @@ item.particle_strange.name=奇夸克胶囊 item.particle_tachyon.name=超光速粒å­å¯†å°èƒ¶å›Š item.parts_legendary.name=传奇零件 item.peas.name=豌豆 -item.peas.desc=他接å—了你的贡å“. item.pedestal_steel.name=钢底座 item.pellet_advanced.name=高级Watz性能增强剂 item.pellet_antimatter.name=å物质团 @@ -3522,7 +3411,6 @@ item.plan_c.desc=致死 item.plant_item.mustardwillow.name=èŠ¥å­æŸ³å¶ item.plant_item.rope.name=麻绳 item.plant_item.tobacco.name=çƒŸå¶ -item.plastic_bag.name=塑料袋 item.plate_advanced_alloy.name=高级åˆé‡‘æ¿ item.plate_aluminium.name=铿¿ item.plate_armor_ajr.name=é“çš®è£…ç”²æ¿ @@ -3558,7 +3446,6 @@ item.plate_saturnite.name=åœŸæ˜Ÿæ¿ item.plate_schrabidium.name=Sa326æ¿ item.plate_steel.name=é’¢æ¿ item.plate_titanium.name=é’›æ¿ -item.plate_welded.name=焊接的%sæ¿ item.polaroid.name=å光片 item.pollution_detector.name=污染探测器 item.powder_actinium.name=锕粉 @@ -3569,7 +3456,6 @@ item.powder_asbestos.name=石棉粉 item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r item.powder_ash.coal.name=ç…¤ç° item.powder_ash.fly.name=飞尘 -item.powder_ash.fullerene.name=富勒烯 item.powder_ash.misc.name=ç°å°˜ item.powder_ash.soot.name=ç»†çƒŸç° item.powder_ash.wood.name=æœ¨ç° @@ -3590,7 +3476,7 @@ item.powder_caesium.name=铯粉 item.powder_calcium.name=钙粉 item.powder_cerium.name=铈粉 item.powder_cerium_tiny.name=å°æ’®é“ˆç²‰ -item.powder_chlorocalcite.name=氯方解石粉 +item.powder_chlorocalcite.name=氯方解石 item.powder_chlorophyte.name=å¶ç»¿ç²‰ item.powder_cloud.name=云粉末 item.powder_co60.name=é’´-60粉 @@ -3612,8 +3498,8 @@ item.powder_diamond.name=钻石粉 item.powder_dineutronium.name=åŒèšä¸­å­æ€ç´ ç²‰ item.powder_dura_steel.name=高速钢粉 item.powder_emerald.name=绿å®çŸ³ç²‰ -item.powder_euphemium.name=Ep元素粉 -item.powder_euphemium.desc=粉色的粉末..$å°èµ·æ¥åƒè‰èŽ“. +item.powder_euphemium.name=Ep粉 +item.powder_euphemium.desc=粉红色$å°èµ·æ¥åƒè‰èŽ“ã€‚ item.powder_fertilizer.name=工业肥料 item.powder_fire.name=ç«ç„°ç²‰ item.powder_fire.desc=ç”¨äºŽå¤šç”¨é€”ç‚¸å¼¹ï¼šç‡ƒçƒ§å¼¹å¾ˆæœ‰è¶£ï¼ @@ -3692,7 +3578,6 @@ item.primer_buckshot.name=鹿弹底ç«[x12] item.protection_charm.name=守护项链 item.prototype_kit.name=原型 套件 item.pudding.name=å¸ƒä¸ -item.pudding.desc=如果他åšäº†å‘¢?$如果他没有呢?$如果这个世界是布ä¸åšçš„å‘¢? item.pwr_fuel.bfb_am_mix.name=燃料级镅压水堆BFB燃料棒 item.pwr_fuel.bfb_pu241.name=é’š-241压水堆BFB棒 item.pwr_fuel.hea242.name=HEA-242 高浓缩度镅-242压水堆燃料棒 @@ -3743,45 +3628,44 @@ item.radaway.name=消è¾å® item.radaway_flush.name=超级消è¾å® item.radaway_strong.name=强效消è¾å® item.radx.name=防è¾å°„è¯ -item.radx.desc=增加0.2(37%%)的抗è¾å°„能力,æŒç»­3分钟 -item.rag.name=破布 -item.rag.desc=ä¸¢è¿›æ°´ä¸­åˆæˆæ¹¿ç ´å¸ƒ.$å³å‡»å°¿åœ¨ç ´å¸ƒä¸Š. -item.rag_damp.name=湿破布 -item.rag_piss.name=尿湿润的破布 -item.rbmk_fuel_balefire.name=RBMK石墨å¼å应堆野ç«ç‡ƒæ–™æ£’ -item.rbmk_fuel_balefire_gold.name=激活æ€é‡‘-198 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_drx.name=§cÏœè¿ªä¼½é©¬ç²’å­ RBMK石墨å¼å应堆燃料棒§r -item.rbmk_fuel_empty.name=空 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_flashlead.name=激活æ€é“… RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_hea241.name=HEA-241 高浓缩度镅-241 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_hea242.name=HEA-242 高浓缩度镅-242 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_heaus.name=HEAus 高浓缩度奥金 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_hen.name=HEN 高浓缩度镎-237 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_hes.name=HES 高浓缩度Sa-326 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_hep.name=HEP-239 高浓缩度钚-239 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_hep241.name=HEP-241 高浓缩度钚-241 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_heu233.name=HEU-233 高浓缩度铀-233 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_heu235.name=HEU-235 高浓缩度铀-235 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_lea.name=LEA 低浓缩度镅-242 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_leaus.name=LEAus 低浓缩度奥金 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_lep.name=LEP 低浓缩度钚-239 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_les.name=LES 低浓缩度Sa-326 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_mea.name=MEA 中浓缩度镅-242 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_men.name=MEN 中浓缩度镎-237 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_mep.name=MEP 中浓缩度钚-239 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_mes.name=MES 中浓缩度Sa-326 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_meu.name=MEU 中浓缩度铀-235 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_mox.name=MOX é’š-铀混åˆRBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_po210be.name=é’‹210-é“RBMK石墨å¼ååº”å †ä¸­å­æº -item.rbmk_fuel_pu238be.name=é’š238-é“RBMK石墨å¼ååº”å †ä¸­å­æº -item.rbmk_fuel_ra226be.name=é•­226-é“RBMK石墨å¼ååº”å †ä¸­å­æº -item.rbmk_fuel_thmeu.name=ThMEU 中浓缩度铀-235导å‘é’ RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_ueu.name=NU 未浓缩铀 RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_zfb_am_mix.name=ZFB 锆混åˆå应堆级镅快速增殖å¼RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_zfb_bismuth.name=ZFB 锆混åˆé“‹å¿«é€Ÿå¢žæ®–å¼RBMK石墨å¼å应堆燃料棒 -item.rbmk_fuel_zfb_pu241.name=ZFB 锆混åˆé’š-241快速增殖å¼RBMK石墨å¼å应堆燃料棒 -item.rbmk_lid.name=RBMK石墨å¼å应堆覆盖层 -item.rbmk_lid_glass.name=RBMK石墨å¼å应堆玻璃覆盖层 +item.radx.desc=在3分钟内增加0.2(37%)的抗è¾å°„能力 +item.rag.name=布 +item.rag_damp.name=湿布 +item.rag_piss.name=沾有尿的布 +item.rbmk_fuel_balefire.name=RBMKå应堆野ç«ç‡ƒæ–™æ£’ +item.rbmk_fuel_balefire_gold.name=RBMKå应堆激活æ€é‡‘-198燃料棒 +item.rbmk_fuel_drx.name=§cRBMKå应堆F迪伽马粒å­ç‡ƒæ–™æ£’§r +item.rbmk_fuel_empty.name=空 RBMKå应堆燃料棒 +item.rbmk_fuel_flashlead.name=RBMKå应堆闪光铅燃料棒 +item.rbmk_fuel_hea241.name=HEA-241 RBMKå应堆高浓缩度镅-241燃料棒 +item.rbmk_fuel_hea242.name=HEA-242 RBMKå应堆高浓缩度镅-242燃料棒 +item.rbmk_fuel_heaus.name=HEAus RBMKå应堆高浓缩度奥斯燃料棒 +item.rbmk_fuel_hen.name=HEN RBMKå应堆高浓缩度镎燃料棒 +item.rbmk_fuel_hes.name=HES RBMKå应堆高浓缩度Sa326燃料棒 +item.rbmk_fuel_hep.name=HEP-239 RBMKå应堆高浓缩度钚-239燃料棒 +item.rbmk_fuel_hep241.name=HEP-241 RBMKå应堆高浓缩度钚-241燃料棒 +item.rbmk_fuel_heu233.name=HEU-233 RBMKå应堆高浓缩度铀-233燃料棒 +item.rbmk_fuel_heu235.name=HEU-235 RBMKå应堆高浓缩度铀-235燃料棒 +item.rbmk_fuel_lea.name=LEA RBMKå应堆低浓缩度镅-242燃料棒 +item.rbmk_fuel_leaus.name=LEAus RBMKå应堆低浓缩度奥斯燃料棒 +item.rbmk_fuel_lep.name=LEP RBMKå应堆低浓缩度钚-239燃料棒 +item.rbmk_fuel_les.name=LES RBMKå应堆低浓缩度Sa326燃料棒 +item.rbmk_fuel_mea.name=MEA RBMKå应堆中浓缩度镅-242燃料棒 +item.rbmk_fuel_men.name=MEN RBMKå应堆中浓缩度镎-237燃料棒 +item.rbmk_fuel_mep.name=MEP RBMKå应堆中浓缩度钚-239燃料棒 +item.rbmk_fuel_mes.name=MES RBMK中浓缩度Sa326燃料棒 +item.rbmk_fuel_meu.name=MEU RBMK中浓缩度铀-235燃料棒 +item.rbmk_fuel_mox.name=MOX RBMKå应堆燃料棒 +item.rbmk_fuel_po210be.name=é’‹210-é“ RBMKååº”å †ä¸­å­æº +item.rbmk_fuel_pu238be.name=é’š238-é“ RBMKååº”å †ä¸­å­æº +item.rbmk_fuel_ra226be.name=é•­226-é“ RBMKååº”å †ä¸­å­æº +item.rbmk_fuel_thmeu.name=ThMEU RBMKå应堆中浓缩度铀-233导å‘é’燃料棒 +item.rbmk_fuel_ueu.name=NU RBMKå应堆未浓缩铀燃料棒 +item.rbmk_fuel_zfb_am_mix.name=ZFB 燃料级镅RBMKå应堆燃料棒 +item.rbmk_fuel_zfb_bismuth.name=ZFB é“‹RBMKå应堆燃料棒 +item.rbmk_fuel_zfb_pu241.name=ZFB é’š-241RBMKå应堆燃料棒 +item.rbmk_lid.name=RBMKå应堆覆盖层 +item.rbmk_lid_glass.name=RBMKå应堆玻璃覆盖层 item.rbmk_pellet_balefire.name=野ç«ç‡ƒæ–™èŠ¯å— item.rbmk_pellet_balefire_gold.name=激活æ€é‡‘-198ç‡ƒæ–™èŠ¯å— item.rbmk_pellet_drx.name=§cF迪伽马粒å­ç‡ƒæ–™èНå—§r @@ -3932,16 +3816,16 @@ item.rod_lithium.name=锂棒 item.rod_mox_fuel.name=æ ¸å应堆 MOX燃料棒 item.rod_mox_fuel_depleted.name=æ ¸å应堆 枯竭MOX燃料棒 item.rod_neptunium.name=镎燃料棒 -item.rod_of_discord.name=æ··æ²Œä¼ é€æ³•æ– +item.rod_of_discord.name=æ··æ²Œä¼ é€æ– item.rod_plutonium.name=钚棒 -item.rod_plutonium_fuel.name=钚燃料棒 -item.rod_plutonium_fuel_depleted.name=枯竭钚燃料棒 -item.rod_polonium.name=é’‹-210棒 -item.rod_pu238.name=é’š238燃料棒 -item.rod_pu239.name=é’š239燃料棒 -item.rod_pu240.name=é’š240燃料棒 -item.rod_quad_balefire.name=å››è”BF燃料棒 -item.rod_quad_balefire_blazing.name=炽热的四è”BF燃料棒 +item.rod_plutonium_fuel.name=æ ¸å应堆 钚燃料棒 +item.rod_plutonium_fuel_depleted.name=æ ¸å应堆 枯竭钚燃料棒 +item.rod_polonium.name=钋棒 +item.rod_pu238.name=é’š-238燃料棒 +item.rod_pu239.name=é’š-239燃料棒 +item.rod_pu240.name=é’š-240燃料棒 +item.rod_quad_balefire.name=å››è”野ç«ç‡ƒæ–™æ£’ +item.rod_quad_balefire_blazing.name=炽热的四è”野ç«ç‡ƒæ–™æ£’ item.rod_quad_coolant.name=å››è”燃料棒[冷崿¶²] item.rod_quad_euphemium.name=枯竭的四è”Sa326燃料棒 item.rod_quad_lead.name=å››è”铅棒 @@ -4049,18 +3933,16 @@ item.sat_resonator.name=Xæ™¶ä½“å…±æŒ¯å«æ˜Ÿ item.sat_scanner.name=ç»˜æµ‹å’Œèµ„æºæŽ¢æµ‹å«æ˜Ÿ item.sawblade.name=锯片 item.schnitzel_vegan.name=“素â€è‚‰æŽ’ - -item.schrabidium_axe.name=Sa326异å˜é“€é‡‘属斧 -item.schrabidium_boots.name=Sa326异å˜é“€é‡‘属é´å­ -item.schrabidium_hammer.name=Sa326异å˜é“€é‡‘属锤 -item.schrabidium_hammer.desc=尽管上é¢å†™ç€ "+1000000000"$的伤害", 但它实际上是 "一击必æ€ä»»ä½•东西" -item.schrabidium_helmet.name=Sa326异å˜é“€é‡‘属头盔 -item.schrabidium_hoe.name=Sa326异å˜é“€é‡‘属锄 -item.schrabidium_legs.name=Sa326异å˜é“€é‡‘属护腿 -item.schrabidium_pickaxe.name=Sa326异å˜é“€é‡‘å±žé• -item.schrabidium_plate.name=Sa326异å˜é“€é‡‘属胸甲 -item.schrabidium_shovel.name=Sa326异å˜é“€é‡‘属锹 -item.schrabidium_sword.name=Sa326异å˜é“€é‡‘属剑 +item.schrabidium_axe.name=Sa326æ–§ +item.schrabidium_boots.name=Sa326é´å­ +item.schrabidium_hammer.name=Sa326锤 +item.schrabidium_helmet.name=Sa326头盔 +item.schrabidium_hoe.name=Sa326锄 +item.schrabidium_legs.name=Sa326护腿 +item.schrabidium_pickaxe.name=Sa326é• +item.schrabidium_plate.name=Sa326胸甲 +item.schrabidium_shovel.name=Sa326锹 +item.schrabidium_sword.name=Sa326剑 item.scrap.name=废料 item.scrap_nuclear.name=放射性废料 item.scrap_oil.name=油性废料 @@ -4082,14 +3964,10 @@ item.servo_set.name=伺æœè£…ç½® item.servo_set_desh.name=Desh伺æœè£…ç½® item.shackles.name=æž·é” item.shimmer_axe.name=闪耀斧 -item.shimmer_axe.desc=木æ! -item.shimmer_axe.desc.hide=shim的工具箱得到了 扩-展 item.shimmer_axe_head.name=é‡åž‹æ–§å¤´ item.shimmer_handle.name=强化èšåˆç‰©æ‰‹æŸ„ item.shimmer_head.name=é‡åž‹é”¤å¤´ item.shimmer_sledge.name=闪耀锤 -item.shimmer_sledge.desc=å¯ä»¥ç ´å一切东西,甚至包括传é€é—¨æ–¹å—. -item.shimmer_sledge.desc.hide=shimmer别$放下那把锤å­$你会伤到别人的$shimmer别$shimmer求你了 item.singularity.name=奇点 item.singularity_counter_resonant.name=å¯æŽ§åæŒ¯è°å¥‡ç‚¹ item.singularity_micro.name=微型奇点 @@ -4177,7 +4055,7 @@ item.steel_shovel.name=钢锹 item.steel_sword.name=钢剑 item.stick_c4.name=C-4ç‚¸è¯æ£’ item.stick_dynamite.name=ç‚¸è¯æ£’ -item.stick_dynamite_fishing.name=ç‚¸é±¼ç”¨ç‚¸è¯æ£’ +item.stick_dynamite_fishing.name=æ•é±¼ç‚¸è¯æ£’ item.stick_semtex.name=å¡žå§†æ±€å¡‘èƒ¶ç‚¸è¯æ£’ item.stick_tnt.name=TNT棒 item.stopsign.name=åœè½¦æ ‡å¿—战斧 @@ -4211,7 +4089,6 @@ item.tank_waste_7.name=泥浆容器 item.tank_waste_8.name=泥浆容器 item.telepad.name=ä¼ é€éƒ¨ä»¶ item.tem_flakes.name=Tem薄片 -item.tem_flakes.desc=能回å¤ä¸€é¢—心的廉价Tem薄片!!!$能回å¤ä¸€é¢—心的Tem薄片$能回å¤ç”Ÿå‘½å€¼çš„Tem薄片(昂贵) item.template_folder.name=æœºå™¨æ¨¡æ¿æ–‡ä»¶å¤¹ item.template_folder.desc=机器模æ¿ï¼šçº¸å¼ +染料$æµä½“识别ç ï¼šé“æ¿+染料$锻模:空白锻模 $警报声轨:ç»ç¼˜ä½“+é’¢æ¿ item.test_nuke_igniter.name=点ç«å™¨ @@ -4242,10 +4119,10 @@ item.titanium_shovel.name=钛锹 item.titanium_sword.name=钛剑 item.toothpicks.name=牙签 item.train.cargo_tram.name=å¹³æ¿è½½è´§ç”µè½¦ -item.trenchmaster_boots.name=战术大师的é´å­ -item.trenchmaster_helmet.name=战术大师的头盔 -item.trenchmaster_legs.name=战术大师的护腿 -item.trenchmaster_plate.name=战术大师的胸甲 +item.trenchmaster_boots.name=Trenchmasterçš„é´å­ +item.trenchmaster_helmet.name=Trenchmaster的头盔 +item.trenchmaster_legs.name=Trenchmaster的护腿 +item.trenchmaster_plate.name=Trenchmaster的胸甲 item.trinitite.name=玻璃石 item.tritium_deuterium_cake.name=氚氘饼 item.tritium_deuterium_cake.desc=䏿˜¯çœŸæ­£çš„蛋糕,而是很棒的$èšå˜ç‡ƒæ–™ï¼ @@ -4265,9 +4142,7 @@ item.turret_rocket_ammo.name=ç«ç®­ç‚®å¡”å¼¹è¯ item.turret_spitfire_ammo.name=防空炮弹 item.turret_tau_ammo.name=é™¶å­ç‚®å¡”é“€å¼¹è¯ item.twinkie.name=å°è›‹ç³• -item.twinkie.desc=600å¹´å‰å°±è¿‡æœŸäº†! item.ullapool_caber.name=é˜¿å‹’æµ¦é•¿æœ¨æ† -item.ullapool_caber.desc=è‹æ ¼å…°å¼é«˜æ•ˆé¢éƒ¨åˆ‡é™¤æœ¯.$一个清醒的人会扔掉它... item.undefined.name=å½¢æ€æœªå®šä¹‰ç‰©è´¨ item.upgrade_5g.name=5Gè¾å°„å‘射器å‡çº§ item.upgrade_afterburn_1.name=一级粉色机器å‡çº§ @@ -4308,14 +4183,7 @@ item.v1.name=V1 item.volcanic_pickaxe.name=ç†”å²©é• item.wand_d.name=è°ƒè¯•é­”æ– item.wand_k.name=å»ºç­‘é­”æ– -item.wand_k.block=ä¿å­˜çš„æ–¹å—: %s -item.wand_k.desc=创造模å¼ä¸“有物å“$"æ¯ç­å¾€å¾€å¸¦æ¥åˆ›é€ "$(å³å‡»ä»¥é€‰æ‹©ç‚¹,$shiftå³å‡»é€‰æ‹©æ”¾ç½®æ–¹å—ç§ç±»!) -item.wand_k.null=未选择ä½ç½®! -item.wand_k.pos=åæ ‡: %s, %s, %s item.wand_s.name=ç»“æž„é­”æ– -item.wand_s.desc=创造模å¼ä¸“有物å“$"æ¯ä¸ªäººéƒ½èƒ½ä½¿ç”¨çš„快速建造多方å—结构的工具!"$(shiftå³å‡»ä»¥åˆ‡æ¢åˆ°ä¸‹ä¸€ç»“æž„,$å³å‡»ä»¥ç”Ÿæˆç»“æž„!) -item.structure_custommachine.name=è‡ªå®šä¹‰æœºå™¨ç»“æž„è¾“å‡ºæ– -item.structure_custommachine.desc=点击自定义机器结构定ä½é”šä»¥ç¡®è®¤$自定义机器核心å—çš„ä½ç½®.$å°†Position1å’ŒPosition2之间所有方å—$以åŠå…¶metadataæ•°æ®ä¸€èµ·è¾“出到hbmConfig下的"CMstructureOutput.txt". item.warhead_buster_large.name=大型掩体破å弹头 item.warhead_buster_medium.name=中型掩体破å弹头 item.warhead_buster_small.name=å°åž‹æŽ©ä½“ç ´å弹头 @@ -4397,27 +4265,22 @@ item.wire_schrabidium.name=Sa326线 item.wire_tungsten.name=钨线 item.wiring_red_copper.name=ç”µç¼†å· item.wood_gavel.name=木槌 -item.wood_gavel.desc=ç °ç °! item.wrench.name=ç®¡é“æ‰³æ‰‹ -item.wrench.desc=æœºæ¢°å¸ˆç†æŸ¥å¾· -item.wrench_archineer.name=Archineer的扳手 +item.wrench_archineer.name=Archineer扳手 item.wrench_flipped.name=刺刀扳手 -item.wrench_flipped.desc=扳手2:扳手 -item.xanax.name=NAXA 抗Ϝ迪伽马è¾å°„è¯ç‰© -item.xanax.desc=移除500mDRX的Ϝ迪伽马è¾å°„ +item.xanax.name=NAXA 抗迪伽马è¯ç‰© +item.xanax.desc=移除500mDRX迪伽马è¾å°„ item.zirconium_legs.name=锆质护腿 - -itemGroup.tabBlocks=æ ¸æŠ€æœ¯çŸ¿çŸ³å’Œæ–¹å— -itemGroup.tabConsumable=核技术食物和装备 -itemGroup.tabControl=核技术机器项目和燃料 -itemGroup.tabMachine=核技术机器 -itemGroup.tabMissile=æ ¸æŠ€æœ¯å¯¼å¼¹å’Œå«æ˜Ÿ -itemGroup.tabNuke=核技术炸弹 -itemGroup.tabParts=核技术资æºå’Œé›¶ä»¶ -itemGroup.tabTemplate=æ ¸æŠ€æœ¯æ¨¡æ¿ -itemGroup.tabTest=HBM的核科技mod测试项[S166, Bismarck, nukesteveè”åˆæ±‰åŒ–] -itemGroup.tabWeapon=核技术武器和炮塔 - +itemGroup.tabBlocks=HBM çŸ¿çŸ³å’Œæ–¹å— +itemGroup.tabConsumable=HBM 食物和装备 +itemGroup.tabControl=HBM 机器项目和燃料 +itemGroup.tabMachine=HBM 机器 +itemGroup.tabMissile=HBM å¯¼å¼¹å’Œå«æ˜Ÿ +itemGroup.tabNuke=HBM 炸弹 +itemGroup.tabParts=HBM 资æºå’Œé›¶ä»¶ +itemGroup.tabTemplate=HBM æ¨¡æ¿ +itemGroup.tabTest=HBM的核科技mod测试项[S166ã€Bismarckã€nukesteveè”åˆæ±‰åŒ–] +itemGroup.tabWeapon=HBM 武器和炮塔 potion.hbm_bang=! ! ! potion.hbm_death=é‡åº¦çªå˜ potion.hbm_lead=铅中毒 @@ -4521,8 +4384,8 @@ tile.basalt_fluorite.name=å¯Œå«æ°ŸçŸ³çš„玄武岩 tile.basalt_gem.name=富å«å®çŸ³çš„玄武岩 tile.basalt_polished.name=抛光玄武岩 tile.basalt_smooth.name=平滑玄武岩 -tile.basalt_sulfur.name=富硫玄武岩 -tile.basalt_tiles.name=玄武岩瓦 +tile.basalt_sulfur.name=富å«ç¡«çš„玄武岩 +tile.basalt_tiles.name=玄武岩砖 tile.blast_door.name=防爆闸门 tile.block_actinium.name=é”•å— tile.block_advanced_alloy.name=高级åˆé‡‘å— @@ -4533,16 +4396,16 @@ tile.block_bakelite.name=ç”µæœ¨å— tile.block_beryllium.name=é“å— tile.block_bismuth.name=é“‹å— tile.block_boron.name=ç¡¼å— -tile.block_c4.name=C-4炸è¯å— +tile.block_c4.name=C-4å— tile.block_cadmium.name=é•‰å— -tile.block_cap_fritz.name=Fritz弗里茨å¯ä¹ç“¶ç›–åŽ‹ç¼©å— -tile.block_cap_korl.name=Korlåº“å°”å‹’ç“¶ç›–åŽ‹ç¼©å— -tile.block_cap_nuka.name=æ ¸å­å¯ä¹ç“¶ç›–åŽ‹ç¼©å— -tile.block_cap_quantum.name=樱桃味é‡å­æ ¸å­å¯ä¹ç“¶ç›–åŽ‹ç¼©å— -tile.block_cap_rad.name=è¾å°„S~闪闪å¯ä¹ç“¶ç›–åŽ‹ç¼©å— -tile.block_cap_sparkle.name=S~闪闪å¯ä¹ç“¶ç›–åŽ‹ç¼©å— -tile.block_cap_star.name=å¤•é˜³æ²™å£«æ˜Ÿæ˜Ÿç“¶ç›–åŽ‹ç¼©å— -tile.block_cap_sunset.name=å¤•é˜³æ²™å£«ç“¶ç›–åŽ‹ç¼©å— +tile.block_cap_fritz.name=å¼—é‡ŒèŒ¨ç“¶ç›–æ–¹å— +tile.block_cap_korl.name=Korlç“¶ç›–æ–¹å— +tile.block_cap_nuka.name=æ ¸å­å¯ä¹ç“¶ç›–æ–¹å— +tile.block_cap_quantum.name=樱桃味核å­å¯ä¹ç“¶ç›–æ–¹å— +tile.block_cap_rad.name=è¾å°„ S~æ ¸å­å¯ä¹ç“¶ç›–æ–¹å— +tile.block_cap_sparkle.name=æ ¸å­å¯ä¹ç“¶ç›–æ–¹å— +tile.block_cap_star.name=å¤•é˜³æ²™å£«æ˜Ÿæ˜Ÿç“¶ç›–æ–¹å— +tile.block_cap_sunset.name=å¤•é˜³æ²™å£«ç“¶ç›–æ–¹å— tile.block_cdalloy.name=é•‰é’¢å— tile.block_cobalt.name=é’´å— tile.block_coke.coal.name=ç…¤ç„¦ç‚­å— @@ -4705,9 +4568,9 @@ tile.charger.name=充电站 tile.cheater_virus.name=冻结Ep tile.cheater_virus_seed.name=ä¸ç¨³å®šEp Schrabideå— tile.chimney_brick.name=烟囱 -tile.chimney_brick.desc=使用排气管连接污染机器$å‡å°‘75%%的污染排放 +tile.chimney_brick.desc=使用排气管连接污染机器$å‡å°‘75%的污染排放 tile.chimney_industrial.name=工业烟囱 -tile.chimney_industrial.desc=使用排气管连接污染机器$å‡å°‘90%%的污染排放 +tile.chimney_industrial.desc=使用排气管连接污染机器$å‡å°‘90%的污染排放 tile.chlorine_gas.name=氯气 tile.cluster_aluminium.name=é“矿簇 tile.cluster_copper.name=铜矿簇 @@ -4716,7 +4579,6 @@ tile.cluster_depth_titanium.name=深层钛矿簇 tile.cluster_depth_tungsten.name=深层钨矿簇 tile.cluster_iron.name=é“矿簇 tile.cluster_titanium.name=钛矿簇 -tile.custom_machine_anchor.name=自定义机器结构定ä½é”š tile.cm_block.alloy.name=高级åˆé‡‘机器外壳 tile.cm_block.desh.name=Desh机器外壳 tile.cm_block.steel.name=钢制机器外壳 @@ -4741,7 +4603,6 @@ tile.cm_tank.alloy.name=高级åˆé‡‘å‚¨ç½ tile.cm_tank.desh.name=Deshå‚¨ç½ tile.cm_tank.steel.name=é’¢åˆ¶å‚¨ç½ tile.cm_tank.tcalloy.name=é”é’¢å‚¨ç½ -tile.cm_paperPress.name=压纸机 tile.cmb_brick.name=CMBé’¢ç“¦å— tile.cmb_brick_reinforced.name=加固CMBé’¢ç –å— tile.compact_launcher.name=紧凑型å‘å°„å° @@ -4769,22 +4630,22 @@ tile.concrete_colored.red.name=红色混å‡åœŸ tile.concrete_colored.silver.name=æ·¡ç°è‰²æ··å‡åœŸ tile.concrete_colored.white.name=白色混å‡åœŸ tile.concrete_colored.yellow.name=黄色混å‡åœŸ -tile.concrete_colored_ext.hazard.name=建筑玩家首选混å‡åœŸ - 警示æ¡çº¹ -tile.concrete_colored_ext.indigo.name=建筑玩家首选混å‡åœŸ - æ·±é›è‰² -tile.concrete_colored_ext.machine.name=建筑玩家首选混å‡åœŸ - 工业风 -tile.concrete_colored_ext.machine_stripe.name=建筑玩家首选混å‡åœŸ - 工业æ¡çº¹ -tile.concrete_colored_ext.pink.name=建筑玩家首选混å‡åœŸ - 猛男粉 -tile.concrete_colored_ext.purple.name=建筑玩家首选混å‡åœŸ - 神秘紫 +tile.concrete_colored_ext.hazard.name=建筑商指定混å‡åœŸ-å±é™©åœ°å¸¦ +tile.concrete_colored_ext.indigo.name=建筑商指定混å‡åœŸ-æ·±é›è“ +tile.concrete_colored_ext.machine.name=建筑商指定混å‡åœŸ-工业风 +tile.concrete_colored_ext.machine_stripe.name=建筑商指定混å‡åœŸ-工业æ¡çº¹ +tile.concrete_colored_ext.pink.name=建筑商指定混å‡åœŸ-猛男粉 +tile.concrete_colored_ext.purple.name=建筑商指定混å‡åœŸ-神秘紫 tile.concrete_pillar.name=钢筋混å‡åœŸæŸ± -tile.concrete_slab.concrete.name=æ··å‡åœŸç“·ç –å°é˜¶ -tile.concrete_slab.concrete_asbestos.name=石棉夹层混å‡åœŸå°é˜¶ -tile.concrete_slab.concrete_smooth.name=æ··å‡åœŸå°é˜¶ -tile.concrete_slab.ducrete.name=贫铀高密度混å‡åœŸç“¦å°é˜¶ -tile.concrete_slab.ducrete_smooth.name=贫铀高密度混å‡åœŸç –å°é˜¶ +tile.concrete_slab.concrete.name=æ··å‡åœŸç“·ç –æ¿ +tile.concrete_slab.concrete_asbestos.name=石棉混å‡åœŸæ¿ +tile.concrete_slab.concrete_smooth.name=æ··å‡åœŸæ¿ +tile.concrete_slab.ducrete.name=高密度贫铀混å‡åœŸç“·ç –æ¿ +tile.concrete_slab.ducrete_smooth.name=高密度贫铀混å‡åœŸæ¿ tile.concrete_smooth.name=æ··å‡åœŸ tile.concrete_smooth_stairs.name=æ··å‡åœŸæ¥¼æ¢¯ -tile.concrete_stairs.name=æ··å‡åœŸç“¦æ¥¼æ¢¯ -tile.concrete_super.name=Überæ··å‡åœŸ +tile.concrete_stairs.name=æ··å‡åœŸç“·ç –楼梯 +tile.concrete_super.name=überæ··å‡åœŸ tile.concrete_super_broken.name=å‘霉的碎片 tile.conveyor.name=输é€å¸¦ tile.conveyor.desc=移动掉在上é¢çš„物å“$å¯ä»¥ç”¨èžºä¸åˆ€é¡ºæ—¶é’ˆæ—‹è½¬$用螺ä¸åˆ€æŒ‰ä½Shifté”®å•击以转弯 @@ -4834,7 +4695,7 @@ tile.deco_aluminium.name=é“è£…é¥°å— tile.deco_asbestos.name=石棉瓦 tile.deco_beryllium.name=é“è£…é¥°å— tile.deco_computer.ibm_300pl.name=IBM个人电脑300PL -tile.deco_emitter.name=装饰性激光å‘射器 +tile.deco_emitter.name=Decoå‘光体 tile.deco_lead.name=é“…è£…é¥°å— tile.deco_rbmk.name=RBMKè£…é¥°å— tile.deco_rbmk_smooth.name=平滑RBMKè£…é¥°å— @@ -4894,10 +4755,10 @@ tile.drone_waypoint_request.name=ç‰©æµæ— äººæœºèˆªè·¯ç‚¹ tile.door_bunker.name=仓门 tile.door_metal.name=金属门 tile.door_office.name=办公室门 -tile.ducrete.name=贫铀高密度混å‡åœŸç“¦ -tile.ducrete_stairs.name=贫铀高密度混å‡åœŸç“¦æ¥¼æ¢¯ -tile.ducrete_smooth.name=贫铀高密度混å‡åœŸ -tile.ducrete_smooth_stairs.name=贫铀高密度混å‡åœŸå°é˜¶ +tile.ducrete.name=高密度贫铀混å‡åœŸç“·ç – +tile.ducrete_stairs.name=高密度贫铀混å‡åœŸç“·ç –楼梯 +tile.ducrete_smooth.name=高密度贫铀混å‡åœŸ +tile.ducrete_smooth_stairs.name=高密度贫铀混å‡åœŸæ¥¼æ¢¯ tile.dummy_block.name=è™šæ‹Ÿæ–¹å— tile.dummy_port.name=虚拟方å—[电力接å£] tile.dungeon_chain.name=金属链 @@ -4918,7 +4779,7 @@ tile.fence_metal.name=é“ä¸ç½‘å›´æ  tile.field_disturber.name=高能场干扰机 tile.filing_cabinet.green.name=蒙尘的文件柜 tile.filing_cabinet.steel.name=钢制文件柜 -tile.fire_digamma.name=挥之ä¸åŽ»çš„è¿ªä¼½çŽ›ä¹‹ç« +tile.fire_digamma.name=挥之ä¸åŽ»çš„è¿ªä¼½é©¬ä¹‹ç« tile.fire_door.name=防ç«é—¨ tile.fireworks.name=烟花箱 tile.fireworks.charges=已充能: %s @@ -4938,13 +4799,13 @@ tile.fluid_duct_solid.name=带涂层的通用æµä½“导管 tile.fluid_switch.name=红石æµä½“阀 tile.fluid_valve.name=æµä½“阀 tile.foam_layer.name=泡沫层 -tile.foundry_basin.name=浇筑盆 -tile.foundry_channel.name=æµ‡ç­‘é“ -tile.foundry_tank.name=储液池 -tile.foundry_mold.name=浅浇筑盆 -tile.foundry_outlet.name=æµ‡ç­‘å£ -tile.foundry_slagtap.name=é“¸é€ å‡ºæ¸£å£ -tile.fraction_spacer.name=分é¦å¡”分离器 +tile.foundry_basin.name=铸造盘 +tile.foundry_channel.name=é“¸é€ æµ‡é“ +tile.foundry_tank.name=铸造池 +tile.foundry_mold.name=浅铸造池 +tile.foundry_outlet.name=æµ‡ç­‘å‡ºå£ +tile.foundry_slagtap.name=ç‚‰æ¸£å‡ºå£ +tile.fraction_spacer.name=分é¦å¡”分隔器 tile.frozen_dirt.name=冰冻土 tile.frozen_grass.name=å†°å†»è‰ tile.frozen_log.name=冰冻原木 @@ -4995,7 +4856,6 @@ tile.gneiss_brick.name=页岩砖 tile.gneiss_chiseled.name=錾制页岩砖 tile.gneiss_tile.name=页岩瓷砖 tile.gravel_diamond.name=钻石砂砾 -tile.gravel_diamond.desc=这里有个笑è¯,$但我ä¸å¤ªæ¸…楚它是什么.$ $上传日期, 2020-07-04:$我们å¦è®¤ä¸€ä¸ªç¬‘è¯çš„任何å«ä¹‰,$å› ä¸ºå®ƒæ˜¯å¦‚æ­¤çš„ä»¤äººä¸æ„‰å¿«,$以至于让人们觉得眼ç›åˆºç—›.$$上传日期, 2020-17-04:$äº‹å®žè¯æ˜Ž,“粉碎钻石â€ä»Žæ¥å°±ä¸æ˜¯ä¸€ä¸ªçœŸæ­£çš„东西,$它让原本å¯èƒ½æ˜¯ä¸ªç¬‘è¯$的东西å˜å¾—毫无æ„义.$ tile.gravel_obsidian.name=碎黑曜石 tile.hadron_access.name=ç²’å­åŠ é€Ÿå™¨æŽ¥å…¥ç»ˆç«¯ tile.hadron_analysis.name=ç²’å­åŠ é€Ÿå™¨åˆ†æžå®¤å£ @@ -5012,32 +4872,32 @@ tile.hadron_coil_starmetal.name=密集星辉线圈 tile.hadron_cooler.name=ç²’å­åŠ é€Ÿå™¨å†·å´è£…ç½® tile.hadron_cooler.desc=冷å´åŠŸçŽ‡ï¼š10$过冷阈值:10$冷å´åŠ æˆï¼š+10%%$过冷惩罚:-25%% tile.hadron_cooler_mk2.name=ç²’å­åŠ é€Ÿå™¨å†·å´è£…ç½®-回文特制 -tile.hadron_cooler_mk2.desc=冷å´åŠŸçŽ‡ï¼š5$效率函数:2-(冷å´åŠŸçŽ‡-15)²/225$最高惩罚:-90%% -tile.hadron_core.name=ç²’å­åŠ é€Ÿå™¨æ ¸å¿ƒéƒ¨ä»¶ -tile.hadron_diode.name=肖特基粒å­äºŒæžç®¡ -tile.hadron_plating.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ -tile.hadron_plating_black.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (黑色) -tile.hadron_plating_blue.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (è“色) -tile.hadron_plating_glass.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (窗å£) -tile.hadron_plating_striped.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (炫酷的警示æ¡çº¹) -tile.hadron_plating_voltz.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (VOLTZ) -tile.hadron_plating_yellow.name=ç²’å­åŠ é€Ÿå™¨ç”µé•€å±‚ (黄色) -tile.hadron_power.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (1MHE) -tile.hadron_power_10m.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (10MHE) -tile.hadron_power_100m.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (100MHE) -tile.hadron_power_1g.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (1GHE) -tile.hadron_power_10g.name=ç²’å­åŠ é€Ÿå™¨ç”µåŠ›æŽ¥å£ (10GHE) +tile.hadron_cooler_mk2.desc=冷å´åŠŸçŽ‡ï¼š5$效率功能:2-(冷å´-15)2/225$最高惩罚:-90%% +tile.hadron_core.name=ç²’å­åŠ é€Ÿå™¨æ ¸å¿ƒç»„ä»¶ +tile.hadron_diode.name=肖基特二æžç®¡ +tile.hadron_plating.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ +tile.hadron_plating_black.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (黑) +tile.hadron_plating_blue.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (è“) +tile.hadron_plating_glass.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (窗å£) +tile.hadron_plating_striped.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚(低温å±é™©) +tile.hadron_plating_voltz.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚ (VOLTZ) +tile.hadron_plating_yellow.name=ç²’å­åŠ é€Ÿå™¨é•€å±‚(Yello染料) +tile.hadron_power.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£ +tile.hadron_power_10m.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(10MHE) +tile.hadron_power_100m.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(100MHE) +tile.hadron_power_1g.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(1GHE) +tile.hadron_power_10g.name=ç²’å­åŠ é€Ÿå™¨ç”µæºæŽ¥å£(10GHE) tile.hazmat.name=防è¾å°„å¸ƒå— tile.heater_electric.name=电加热器 -tile.heater_electric.desc=使用电能æ¥äº§ç”Ÿçƒ­é‡.$å¯ä»¥85%%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡.$å¯ç”¨èžºä¸åˆ€é…置效率. +tile.heater_electric.desc=利用电能产生热é‡$以85%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡$å¯ä½¿ç”¨èžºä¸åˆ€è¿›è¡Œé…置。 tile.heater_firebox.name=燃烧室 tile.heater_firebox.desc=燃烧固体燃料以产生热é‡ã€‚ tile.heater_heatex.name=æ¢çƒ­åŠ çƒ­å™¨ tile.heater_heatex.desc=从热æµä½“中产生热é‡ã€‚ tile.heater_oilburner.name=æµä½“燃烧器 tile.heater_oilburner.desc=燃烧å¯ç‡ƒæ¶²ä½“产生热é‡ã€‚ -tile.heater_oven.name=加热 -tile.heater_oven.desc=燃烧固体燃料以产生热é‡.$å¯ä»¥85%%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡. +tile.heater_oven.name=加热炉 +tile.heater_oven.desc=燃烧固体燃料以产生热é‡$以50%çš„æ•ˆçŽ‡æŽ¥å—æ¥è‡ªåº•部的热é‡ã€‚ tile.hev_battery.name=盔甲电池 tile.impact_dirt.name=烧焦的泥土 tile.iter.name=èšå˜å应堆 @@ -5065,7 +4925,6 @@ tile.lox_barrel.name=液氧桶 tile.machine_amgen.name=环境è¾å°„å‘电机 tile.machine_arc_furnace_off.name=电弧炉 tile.machine_arc_furnace_on.name=电弧炉 -tile.machine_arc_welder.name=弧焊机 tile.machine_armor_table.name=è£…ç”²æ”¹è£…å° tile.machine_ashpit.name=å‚¨ç°æ§½ tile.machine_ashpit.desc=收集æ¥è‡ªç‡ƒçƒ§å®¤å’ŒåŠ çƒ­ç‚‰çš„ç°çƒ¬ @@ -5125,8 +4984,7 @@ tile.machine_epress.name=电动锻压机 tile.machine_excavator.name=大型采矿钻机 tile.machine_fel.name=FELè‡ªç”±ç”µå­æ¿€å…‰å™¨ tile.machine_fensu.name=FEnSU飞轮储能系统 -tile.machine_flare.name=废气燃烧塔 -tile.machine_flare.desc=å¯ç‡ƒçƒ§æ¶²ä½“和排出气体$燃烧速率 §c10mB/t$排放速率 §c50mB/t$ $§e燃料效率:$§e-易燃气体: §c50%%$§e-易燃液体: §c10%% +tile.machine_flare.name=高架ç«ç‚¬ tile.machine_fluidtank.name=å‚¨ç½ tile.machine_forcefield.name=力场å‘生器 tile.machine_fraction_tower.name=分é¦å¡” @@ -5192,7 +5050,7 @@ tile.machine_steam_engine.desc=效率:85% tile.machine_stirling.name=斯特林å‘电机 tile.machine_stirling.desc=它将热é‡è½¬åŒ–为能é‡ã€‚这需è¦å¤–部热æº$传热率:T*0.1 TU/T$最大进气é‡ï¼š300 TU/T$效率:50% tile.machine_stirling_creative.name=创造斯特林å‘动机 -tile.machine_stirling_creative.desc=将热é‡è½¬åŒ–为能é‡ã€‚需è¦å¤–部热æº$传热率:T*0.1 TU/T$æ— é™å¸çƒ­/T$效率:100%% +tile.machine_stirling_creative.desc=将热é‡è½¬åŒ–为能é‡ã€‚需è¦å¤–部热æº$传热率:T*0.1 TU/T$æ— é™å¸çƒ­/T$效率:100% tile.machine_stirling_steel.name=é‡åž‹æ–¯ç‰¹æž—å‘电机 tile.machine_stirling_steel.desc=它将热é‡è½¬åŒ–为能é‡ã€‚这需è¦å¤–部热æº$使用更é‡çš„é½¿è½®æ¥æ”¯æŒæ›´é«˜çš„æ¸©åº¦$传热率:T*0.1 TU/T$最大进气é‡ï¼š1500 TU/T$效率:50% tile.machine_storage_drum.name=æ ¸åºŸæ–™å¤„ç†æ¡¶ @@ -5216,7 +5074,6 @@ tile.machine_zirnox.name=锆诺克斯核å应堆 tile.marker_structure.name=多方å—结构信标 tile.mass_storage.name=大规模存储å•å…ƒ tile.meteor_battery.name=星辉é™ç”µå‘生器 -tile.meteor_battery.desc=为特斯拉线圈æä¾›æ— é™ç”µèƒ½ tile.meteor_brick.name=陨石砖 tile.meteor_brick_chiseled.name=錾制陨石砖 tile.meteor_brick_cracked.name=裂纹陨石砖 @@ -5236,18 +5093,14 @@ tile.ntm_dirt.name=泥土 tile.nuke_boy.name=å°ç”·å­© tile.nuke_custom.name=自定义核弹 tile.nuke_fleija.name=F.L.E.I.J.A. -tile.nuke_fleija.desc=适用于:$F.L.E.I.J.A. tile.nuke_fstbmb.name=BF炸弹 tile.nuke_gadget.name=å°çŽ©æ„ tile.nuke_man.name=èƒ–å­ tile.nuke_mike.name=常é’藤迈克 -tile.nuke_n2.name=N²炸弹 -tile.nuke_n2.desc=适用于:$N²炸弹 +tile.nuke_n2.name=N2炸弹 tile.nuke_n45.name=N45æ°´é›· tile.nuke_prototype.name=原型 -tile.nuke_prototype.desc=本ä¸å¿…如此的.$ $你这个怪物. tile.nuke_solinium.name=è”šè“æ´—礼 -tile.nuke_solinium.desc=适用于:$è”šè“æ´—礼 tile.nuke_tsar.name=沙皇炸弹 tile.oil_duct.name=输油管 tile.oil_duct_solid.name=粗输油管 @@ -5306,7 +5159,6 @@ tile.ore_nether_uranium.name=下界铀矿石 tile.ore_nether_uranium_scorched.name=烧焦的下界铀矿石 tile.ore_niter.name=ç¡çŸ³çŸ¿çŸ³ tile.ore_oil.name=油岩 -tile.ore_oil.desc=ä½ ä¸è¯¥æŠŠå®ƒæŒ–出æ¥çš„..$æ¥å§,去拿个井架,你这个笨蛋. tile.ore_oil_empty.name=空油岩 tile.ore_oil_sand.name=æ²¥é’ç ‚ tile.ore_random.name=%s 矿 @@ -5325,7 +5177,7 @@ tile.ore_uranium_scorched.name=烧焦的铀矿石 tile.ore_verticium.name=韦德赛矿石 tile.ore_volcano.name=åœ°çƒ­è£‚ç¼ tile.ore_weidanium.name=é­ä¸¹çŸ¿çŸ³ -tile.part_emitter.name=装饰性粒å­ç”Ÿæˆå™¨ +tile.part_emitter.name=Decoç²’å­å‘射器 tile.pink_barrel.name=煤油桶 tile.pink_log.name=粉色原木 tile.pink_planks.name=ç²‰è‰²æœ¨æ¿ @@ -5377,13 +5229,13 @@ tile.pwr_port.name=PWRæŽ¥å…¥ç«¯å£ tile.pwr_port.desc=å…许物å“和液体交æ¢$ä½ç½®ï¼šç»„ä»¶ tile.pwr_reflector.name=PWR中å­å射器 tile.pwr_reflector.desc=将中å­é€šé‡å射回燃料棒$ä½ç½®ï¼šç½‘格,用于增加å应速率$å¯ä½œä¸ºå¤–å£³ææ–™ -tile.radio_telex.name=电报机 -tile.radio_torch_counter.name=红石无线物å“计数器 -tile.radio_torch_counter.desc=平颿ˆ–比较器兼容å—上的标牌$æ ¹æ®åŒ¹é…物å“的数é‡å‘å‡ºä¿¡å· -tile.radio_torch_receiver.name=çº¢çŸ³æ— çº¿ä¿¡å·æŽ¥æ”¶å™¨ -tile.radio_torch_receiver.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–与比较器兼容的å—上放置 -tile.radio_torch_sender.name=红石无线信å·å‘é€å™¨ -tile.radio_torch_sender.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–与比较器兼容的å—上放置$读å–çº¢çŸ³ä¿¡å·æˆ–比较器输入 +tile.radio_telex.name=Telex Machine +tile.radio_torch_counter.name=红石无线项目计数器 +tile.radio_torch_counter.desc=平颿ˆ–比较器兼容å—上的标牌$æ ¹æ®åŒ¹é…项目的数é‡å‘å‡ºä¿¡å· +tile.radio_torch_receiver.name=æ— çº¿çº¢çŸ³ä¿¡å·æŽ¥æ”¶å™¨ +tile.radio_torch_receiver.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–与比较器兼容的方å—上放置 +tile.radio_torch_sender.name=无线红石信å·å‘射器 +tile.radio_torch_sender.desc=å¯åœ¨å¹³å¦è¡¨é¢æˆ–比较器兼容的方å—上放置$读å–çº¢çŸ³ä¿¡å·æˆ–比较器输入 tile.radiobox.name=无线怪物清除箱 tile.radiorec.name=åæŽ‰çš„æ”¶éŸ³æœº tile.rail_booster.name=é«˜é€ŸåŠ¨åŠ›è½¨é“ @@ -5420,7 +5272,6 @@ tile.reactor_element.name=å应堆室 tile.reactor_hatch.name=ååº”å †ç«¯å£ tile.reactor_inserter.name=å应堆燃料æ’入器 tile.red_barrel.name=ç‚¸è¯æ¡¶ -tile.red_barrel.desc=陿€æµä½“æ¡¶ tile.red_cable.name=紫铜电线 tile.red_cable_classic.name=紫铜电缆(ç»å…¸åž‹ï¼‰ tile.red_cable_gauge.name=功率计 @@ -5428,15 +5279,13 @@ tile.red_cable_gauge.desc=显示æ¯åˆ»åœ¨ç½‘络中æµåŠ¨çš„ç”µåŠ›$的电缆$ç”± tile.red_cable_paintable.name=坿¶‚漆紫铜线 tile.red_connector.name=电力连接器 tile.red_pylon.name=ç”µçº¿æ† -tile.red_pylon.desc=连接类型: §eå•通é“$连接范围: §e25m tile.red_pylon_large.name=大型输电塔 -tile.red_pylon_large.desc=连接类型: §e四通é“$连接范围: §e100m$这个输电塔需è¦é…åˆå˜ç”µå™¨ä½¿ç”¨! tile.red_wire_coated.name=密å°ç´«é“œç”µç¼† tile.reinforced_brick.name=强化石头 tile.reinforced_brick_stairs.name=钢筋石楼梯 tile.reinforced_ducrete.name=加固高密度贫铀混å‡åœŸ tile.reinforced_glass.name=强化玻璃 -tile.reinforced_glass_pane.name=å¼ºåŒ–çŽ»ç’ƒæ¿ +tile.reinforced_glass_pane.name=强化玻璃窗 tile.reinforced_lamp_off.name=å¼ºåŒ–çº¢çŸ³ç¯ tile.reinforced_lamp_on.name=å¼ºåŒ–çº¢çŸ³ç¯ tile.reinforced_light.name=强化è¤çŸ³ @@ -5500,7 +5349,7 @@ tile.stone_depth.name=深层岩石 tile.stone_depth_nether.name=下界深层岩石 tile.stone_gneiss.name=石墨页岩 tile.stone_porous.name=多孔石 -tile.stone_resource.asbestos.name=蛇纹石石棉 +tile.stone_resource.asbestos.name=温石棉 tile.stone_resource.bauxite.name=é“土矿 tile.stone_resource.hematite.name=赤é“矿 tile.stone_resource.limestone.name=石ç°çŸ³ @@ -5513,9 +5362,8 @@ tile.struct_launcher_core_large.name=å‘å°„å°æ ¸å¿ƒç»„ä»¶ tile.struct_plasma_core.name=等离å­åŠ çƒ­å™¨æ ¸å¿ƒç»„ä»¶ tile.struct_scaffold.name=å‘å°„å°éª¨æž¶ tile.struct_soyuz_core.name=è”盟å·å‘射器核心组件 -tile.struct_watz_core.name=Watz瓦茨电厂核心组件 -tile.substation.name=å˜ç”µå™¨ -tile.substation.desc=连接类型: §e四通é“$连接范围: §e20m +tile.struct_watz_core.name=Watzå‘电厂核心组件 +tile.substation.name=å˜ç”µç«™ tile.sulfuric_acid_block.name=ç¡«é…¸ tile.taint.name=è…è´¨ tile.taint_barrel.name=IMP残渣桶 @@ -5540,10 +5388,10 @@ tile.turret_flamer.name=å–·ç«ç‚®å¡” tile.turret_friendly.name=轻机枪炮塔“å‹å¥½å…ˆç”Ÿâ€ tile.turret_fritz.name=é‡åž‹ç«ç„°å–·å°„器炮塔“弗里茨†tile.turret_heavy.name=é‡åž‹æœºæžªç‚®å¡” -tile.turret_himars.name=远程ç«ç®­å¼¹ç‚®å¡”"亨利" -tile.turret_howard.name=åŒç®¡è¿‘防炮"éœåŽå¾·" -tile.turret_howard_damaged.name=åŒç®¡è¿‘防炮 "玛土撒拉" -tile.turret_jeremy.name=é‡ç‚®ç‚®å°"æ°ç±³é‡Œ" +tile.turret_himars.name=ç«ç®­ç‚®å¡”“亨利†+tile.turret_howard.name=åŒè”守门员近防系统“éœåŽå¾·â€ +tile.turret_howard_damaged.name=CIWSåŒè”守门员近防系统 "玛士撒拉" +tile.turret_jeremy.name=é‡ç‚®ç‚®å¡”“æ°é‡Œç±³â€ tile.turret_light.name=轻型机枪炮塔 tile.turret_maxwell.name=高能微波炮塔 "麦克斯韦" tile.turret_rocket.name=ç«ç®­ç‚®å¡” @@ -5558,8 +5406,8 @@ tile.vent_chlorine.name=æ°¯æ°”æŽ’æ°”å£ tile.vent_chlorine_seal.name=氯气容器 tile.vent_cloud.name=äº‘æŽ’æ°”å£ tile.vent_pink_cloud.name=ç²‰è‰²äº‘æŽ’æ°”å£ -tile.vinyl_tile.large.name=大å—乙烯基瓷砖 -tile.vinyl_tile.small.name=å°å—乙烯基瓷砖 +tile.vinyl_tile.large.name=大型乙烯基瓷砖 +tile.vinyl_tile.small.name=å°åž‹ä¹™çƒ¯åŸºç“·ç – tile.vitrified_barrel.name=玻璃化核废料桶 tile.volcanic_lava_block.name=ç«å±±ç†”岩 tile.volcano_core.name=ç«å±±æ ¸å¿ƒ @@ -5596,11 +5444,6 @@ trait.hot=自燃/高温 trait.hydro=与水å应 trait.radioactive=放射性 trait.radResistance=è¾å°„抗性: %s - -trait.platefuel=[研究å应堆堆æ¿å¼ç‡ƒæ–™]$§3 %s$§3 %s事件的收益率 -trait.pwr_fuel=æ¯é€šé‡çƒ­é‡: §r%s TU$å应函数: §r%s$燃料类型: §r%s - -trait.rbmk.BurnFunc=安全 / 被动$中等 / 对数方程$安全 / 欧拉方程$å±é™© / 负二次方程$安全 / S型饱和函数$中等 / 平方根函数$å±é™© / 线性函数$å±é™© / 二次函数$实验性 / 正弦斜率函数 trait.rbmk.coreTemp=核心温度: %s trait.rbmk.depletion=燃料消耗: %s trait.rbmk.diffusion=扩散度: %s @@ -5635,23 +5478,8 @@ trait.rbmx.splitsWith=接å—: %s trait.rbmx.xenon=铅元素堆积程度: %s trait.rbmx.xenonBurn=铅元素寂ç­å‡½æ•°: %s trait.rbmx.xenonGen=铅元素产生函数: %s - -trait.rbmk_pellet=å¯å›žæ”¶èНå—$全新的$å°‘é‡è¡°å˜$中度衰å˜$高度衰å˜$完全衰å˜$大釿°™å…ƒç´ å †ç§¯ -trait.watz_pellet=消耗: %s%% -trait.watz_pellet.passive=基本裂å˜çއ: $自燃! -trait.watz_pellet.heatEmission=æ¯ä¸­å­é€šé‡äº§ç”Ÿçƒ­é‡: -trait.watz_pellet.burnFunc=å应函数: $燃料类型: -trait.watz_pellet.heatDiv=热å€å¢žç³»æ•°: -trait.watz_pellet.absorbFunc=中å­é€šé‡æ•获: - trait.tile.cluster=åªæœ‰åœ¨è¢«çŽ©å®¶ç ´åæ—¶æ‰ä¼šæŽ‰è½ trait.tile.depth=åªèƒ½è¢«çˆ†ç‚¸ç ´å -trait.tile.barrel.capacity=容é‡: %smB -trait.tile.barrel.hot=å¯ä»¥å‚¨å­˜çƒ­çš„æ¶²ä½“$ä¸èƒ½å‚¨å­˜çƒ­çš„æ¶²ä½“ -trait.tile.barrel.corrosive=å¯ä»¥å‚¨å­˜å¼ºè…蚀性液体$å¯ä»¥å‚¨å­˜è…蚀性液体$ä¸èƒ½é•¿æœŸåœ°å‚¨å­˜å¼ºè…蚀性液体$ä¸èƒ½é•¿æœŸåœ°å‚¨å­˜è…蚀性液体$ä¸èƒ½å‚¨å­˜è…蚀性液体 -trait.tile.barrel.antimatter=å¯ä»¥å‚¨å­˜å物质类物质$ä¸èƒ½å‚¨å­˜å物质类物质 -trait.tile.barrel.leak=泄露 - tool.ability.centrifuge=自动离心 tool.ability.crystallizer=自动结晶 tool.ability.explosion=爆破 @@ -5663,27 +5491,16 @@ tool.ability.recursion=è¿žé”æŒ–矿 tool.ability.shredder=自动粉碎 tool.ability.silktouch=精准采集 tool.ability.smelter=自动熔炼 - -tooltip.armormods=附件: -tooltip.armormodsshow=æŒ‰ä½ < %s §8§o> æ¥æ˜¾ç¤ºè¯¥ç›”甲上所安装的é…件的效果§r -tooltip.block=æŒ‰ä½ < %s §8§o>以显示更多信æ¯Â§r -tooltip.customnuke=增加 %s 给自定义核弹 %s 阶段 -tooltip.customnukemultiplier=å¢žåŠ å€æ•° %s 给自定义核弹 %s 阶段 -tooltip.oredict=矿物辞典: -tooltip.oredict.null=无矿物辞典数æ®! -tooltip.show=æŒ‰ä½ < %s §8§o> æ¥æ˜¾ç¤ºæ‰€èƒ½æä¾›çš„防护的信æ¯Â§r - -turret.animals=攻击中立生物: %s -turret.arty.artillery=§eé‡ç‚®æ¨¡å¼$宽度: 250m$范围: 3,000m -turret.arty.cannon=§e加农炮模å¼$宽度: 32m$范围: 250m -turret.arty.manual=§e手动模å¼$范围: 3,000m -turret.machines=攻击机器: %s -turret.mobs=攻击敌对生物: %s -turret.none=无白åå• -turret.off=OFF -turret.on=ON -turret.players=攻击玩家: %s - +turret.animals=被动目标:%s +turret.arty.artillery=§eç«ç‚®æ¨¡å¼$最低射程: 250m$最大射程: 3,000m +turret.arty.cannon=§e炮塔模å¼$最低射程: 32m$射程: 250m +turret.arty.manual=§e手动模å¼$射程: 3,000m +turret.machines=以机械为目标: %s +turret.mobs=以怪物为目标: %s +turret.none=æ—  +turret.off=å…³ +turret.on=å¼€ +turret.players=以玩家为目标:%s wavelengths.name.ir=红外线 wavelengths.name.visible=å¯è§å…‰ wavelengths.name.uv=紫外线 @@ -5709,41 +5526,7 @@ weapon.elecGun.glass_cannon.ir=红外线 weapon.elecGun.glass_cannon.visible=å¯è§å…‰ weapon.elecGun.glass_cannon.uv=紫外线 weapon.elecGun.glass_cannon.xray=X射线 -weapon.elecGun.glass_cannon.gamma=γ射线 - -#book_lore.insanity_1.author=Fergusonåšå£« -#book_lore.insanity_1.name=撕裂的书页 -#book_lore.insanity_1.page.1=8月6æ—¥$ $几个月,ä¸ï¼Œå‡ å¹´æ¥ï¼Œ 为了与投资者角力和è¿è¥ 北åŠçƒæœ€å¤§çš„能æºå¸‚场而 讨价还价,终于有了回报. -#book_lore.insanity_1.page.2=虽然我们ä¸èƒ½å®Œå…¨ç¡®å®š 我们到底å‘现了什么—— 考虑到我们在粒å­ä¸Šè¿›è¡Œäº† åƒå…†ä¼ç‰¹çš„碰撞,而这些 ç²’å­çš„记录ä»ç„¶å¾ˆå·®â€”— 但结果å†ä»¤äººå…´å¥‹ä¸è¿‡äº†. -#book_lore.insanity_1.page.3=我们还没有为我们å‘现的 这东西找到一个å字, 也ä¸ç¡®å®šæˆ‘们是å¦åœ¨å¯»æ‰¾ ä¸€ç§æ–°çš„ç²’å­ï¼Œ 一个通å‘å¦ä¸€ä¸ªç»´åº¦çš„虫洞, 或者撒旦的肛门, 但我相信我们的公关人员 å¯ä»¥æƒ³å‡ºä¸€äº›åŠžæ³•. -#book_lore.insanity_2.author=Fergusonåšå£« -#book_lore.insanity_2.name=撕裂的书页 -#book_lore.insanity_2.page.1=8月8æ—¥$ $过去几天,我们一直将 “The Thing†(是的,我们现在就是 这么称呼这玩æ„的) ä¿æŒåœ¨ç£éš”离状æ€ã€‚ 光谱测试最终æžå了 我们的光谱仪,但我们 设法获得了一些有用的数æ®. -#book_lore.insanity_2.page.2=首先,这东西åƒåœ£è¯žæ ‘ 一样å‘光,你能想到的 æ¯ç§æ³¢é•¿çš„è¾å°„å…‰å­éƒ½è¢« 强大的红外日冕所包围。 逻辑上的结论是, 用肉眼看它很å¯èƒ½ä¼šæ€æ­»ä½ ã€‚ -#book_lore.insanity_2.page.3=这就引出了一个问题: 这么å°çš„ç²’å­æ€Žä¹ˆèƒ½è¾å°„ 出如此巨大的能é‡ï¼Ÿ ä½ éšè—了些什么,å°å®¶ä¼™ï¼Ÿ -#book_lore.insanity_3.author=Fergusonåšå£« -#book_lore.insanity_3.name=撕裂的书页 -#book_lore.insanity_3.page.1=8月22æ—¥ $ $ 我已ç»å¥½å‡ å¤©æ²¡ç¡å¥½äº†ã€‚ 医生说他什么毛病都找ä¸åˆ°ã€‚ 现在我正在æœç”¨å„ç§è¯ç‰©ï¼Œ 但头痛åªä¼šåŠ é‡ã€‚ 实验室工作人员怀疑这 å¯èƒ½æ˜¯ä¸¤å‘¨å‰çš„äº‹ä»¶é€ æˆ çš„æ±¡æŸ“. -#book_lore.insanity_3.page.2=医生说ä¸å¤ªå¯èƒ½ï¼Œ 这症状和急性放射病ä¸åŒã€‚ å¦‚æžœè¿™ç§æƒ…况æŒç»­ä¸‹åŽ»ï¼Œ 我å¯èƒ½éœ€è¦ä¼‘æ¯ä¸€æ®µæ—¶é—´ã€‚ 实验人员推测, 如果约æŸç£åœºä¸‹é™ï¼Œ 整个综åˆä½“å»ºç­‘ç¾¤å°±ä¼šå˜æˆ 蘑è‡äº‘. -#book_lore.insanity_3.page.3=我ä¸çŸ¥é“行政部门如何 ä¿æŒå†·é™ï¼Œä½†æˆ‘没有被 æ”¯ä»˜è¶³å¤Ÿçš„è–ªæ°´æ¥æµªè´¹æ—¶é—´. -#book_lore.insanity_4.author=Fergusonåšå£« -#book_lore.insanity_4.name=撕裂的书页 -#book_lore.insanity_4.page.1=8月28æ—¥ $ $ 他们拒ç»äº†æˆ‘的请å‡è¯·æ±‚, 过去几天我一直在努力。 头痛越æ¥è¶Šä¸¥é‡äº†ã€‚ æˆ‘ä¹Ÿä¸æ˜¯å”¯ä¸€æœ‰è¿™ç§æ„Ÿ 觉的人。一些实验室的人员 也有类似的情况. -#book_lore.insanity_4.page.2=The Thing终于离开了综åˆä½“ -真tm棒。 昨天有几套西装è¿è¿‡æ¥ï¼Œ 天知é“在哪里。 一å实验室人员扎å¡é‡Œè¯´ï¼Œ 他们å¯èƒ½æ­£åœ¨æŠŠå¯†å°è£…ç½® 埋在沙漠里, -#book_lore.insanity_4.page.3=慢慢地试图让The Thing 远离文明æ¥â€œè™Žå¤´è›‡å°¾ 地结æŸâ€ã€‚è¦æˆ‘说我们应 把它射å‘太空。 ä¸ç”¨è¯´ï¼Œæˆ‘们的投资者 暂时削å‡äº†æ‰€æœ‰èµ„金。 我应该开始找å¦ä¸€ä»½å·¥ä½œäº†. -#book_lore.insanity_5.author=Fergusonåšå£« -#book_lore.insanity_5.name=撕裂的书页 -#book_lore.insanity_5.page.1=9月11æ—¥ $ $ 我正在åå¤åšä¸€åœºå™©æ¢¦ã€‚ 我在一å—空地上走æ¥èµ°åŽ»ï¼Œ 到处都是这些人, ç©¿ç€æ©¡èƒ¶æœå’Œé•¿ç€ç•¸å½¢çš„脸。 总是一样的噩梦, -#book_lore.insanity_5.page.2=和我最近交谈过的一个实验 室的åŒäº‹ä¹Ÿåšäº†åŒæ ·çš„æ¢¦ã€‚ ä¸Žæ­¤åŒæ—¶ï¼Œæˆ‘çš„å·¥ä½œå·²ç» ç›¸å½“æž¯ç‡¥äº†ï¼ŒåŠ é€Ÿå™¨å·²ç» å…³é—­ï¼Œæ‰€æœ‰æ­£åœ¨è¿›è¡Œçš„ é¡¹ç›®éƒ½åœæ­¢äº†ï¼Œæˆ‘们的 预算也在慢慢å‡å°‘. -#book_lore.insanity_5.page.3=有æŸç§ä¸œè¥¿åœ¨å‘Šè¯‰æˆ‘ The Thing还在æŸå¤„。 我能感觉到. -#book_lore.insanity_6.author=Fergusonåšå£« -#book_lore.insanity_6.name=撕裂的书页 -#book_lore.insanity_6.page.1=10月3æ—¥ $ $ 一åŠçš„å·¥ä½œäººå‘˜å·²ç»æ­»äº¡ï¼Œ 其余大部分在ICU。 我的病情在过去几周里 没有改å˜ï¼Œæ— è®ºæ˜¯å¥½æ˜¯å. -#book_lore.insanity_6.page.2=然而,现实开始å˜å¾—è¶Šæ¥è¶Š ä¸çœŸå®žã€‚ 有时我会在夜晚仰望天空, å¹»æƒ³ç€æˆ‘ä»¬åœ¨å‡ ä¸ªæ˜ŸæœŸå‰ å‘现的东西. -#book_lore.insanity_6.page.3=我们的分光计åå‡ºçš„åŒæ · ç¿çƒ‚的深红光泽。 我的医生说这是由这起事件 引起的精神错乱和压力, 也许他是对的, 但è¯ç‰©æ ¹æœ¬ä¸èµ·ä½œç”¨. -#book_lore.insanity_7.author=Fergusonåšå£« -#book_lore.insanity_7.name=撕裂的书页 -#book_lore.insanity_7.page.1=12月12æ—¥ $ $ 我已ç»å¤±ä¸šäº†ï¼Œä½†è€å®žè¯´ï¼Œ 我对此有些感激。 我以å‰çš„å·¥ä½œåœºæ‰€å·²ç» ä»˜ä¹‹ä¸€ç‚¬äº† ——他们这么说的. -#book_lore.insanity_7.page.2=å—部几英里处的地震观测站 连续几天记录到æŒç»­ä¸æ–­çš„ 地震,而其他任何人都ä¸ä¼š 注æ„到沙漠深处. -#book_lore.insanity_7.page.3=我的结论是,这个地方被 诅咒了,让æ¯ä¸ªäººéƒ½æ„Ÿåˆ°æ¶å¿ƒï¼Œ ç„¶åŽåƒåŸƒå¾·åŠ Â·çˆ±ä¼¦Â·å¡ ï¼ˆEdgar Allan Poe)的故事 一样å å…¥åœ°ç‹±ã€‚ 谢天谢地. - +weapon.elecGun.glass_cannon.gamma=伽马射线 +hadron.error=错误! +container.reactor=增殖å应堆 +death.attack.subAtomic=%1$s 的原å­è¢« %2$s æ‘§æ¯ \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_radar_nt.png index 690e1b5f5fa1706b4b2f8aa6a7daad7435912487..572179845e349f5e366159eb3a8f1c2a4a403d07 100644 GIT binary patch literal 20169 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 P6G6@xoi{8tAV&QUgPWL# literal 21661 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 F?0>iMUBUnW From ace7812d3f9f81f38fb12608a0dd843811340954 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 30 Nov 2023 22:10:41 +0100 Subject: [PATCH 151/207] rubber dinghy fixes, missile recipe stuff --- changelog | 13 +++- .../com/hbm/entity/item/EntityBoatRubber.java | 72 ++++++++++--------- .../entity/missile/EntityMissileBaseNT.java | 18 +++++ .../entity/missile/EntityMissileTier1.java | 4 +- .../entity/missile/EntityMissileTier2.java | 4 +- .../entity/missile/EntityMissileTier3.java | 5 +- .../java/com/hbm/handler/HazmatRegistry.java | 2 +- .../HazardTransformerRadiationContainer.java | 2 +- .../inventory/recipes/ArcWelderRecipes.java | 25 +++++++ .../inventory/recipes/AssemblerRecipes.java | 50 ++++++------- .../render/tileentity/RenderRadarScreen.java | 4 +- .../java/com/hbm/tileentity/DoorDecl.java | 8 +-- src/main/java/com/hbm/util/ArmorUtil.java | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 2 +- src/main/resources/assets/hbm/sounds.json | 2 + 15 files changed, 137 insertions(+), 75 deletions(-) diff --git a/changelog b/changelog index a11e101f3..596d87512 100644 --- a/changelog +++ b/changelog @@ -6,15 +6,26 @@ * Made from latex or synthetic rubber * A much less jankier alternative to the vanilla boat. Rotations are silky smooth and done via the strafe keys instead of based on the player's orientation * Won't break from ramming into blocks + * Faster than a regular boat, but will decelerate quicker when there's nobody sitting in it, preventing the boat from drifting off too far when empty ## Changed * Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high * Custom missiles are now launchable using the radar * NTM's structures should no longer spawn in dimensions besides the overworld. Ores will still generate, assuming the config option is set. +* Decreased M1tty's radiation resistance + * It's really damn cheap, what did you expect +* M1tty's helmet now acts like a protective mask +* Most non-custom missiles except tier 0s are now assembled in the arc welder + * Crafting complexity has been reduced, the recipes only need the three major components without any extra loose plates +* Non-custom missiles have been slightly buffed + * Explosions are now slightly larger and they use the new cross-detection entity damage code which still affects entities behind small hills that would otherwise be shielded + * Explosions now have a 2x larger entity damage radius ## Fixed * Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate * Fixed RBMK heat exchangers being able to use heatable fluids that don't have heat exchanger efficiency defined like liquid sodium, heavy water and thorium salt * Fixed RBMK heat exchangers not using the heat exchanger efficiency variable to determine cooling power * Fixed the ballistic gauntlet spawning a client-side ghost bullet that doesn't move or despawn -* Fixed bug where different custom machine cores would merge in a stack when picked up, turning them into the same type \ No newline at end of file +* Fixed bug where different custom machine cores would merge in a stack when picked up, turning them into the same type +* Fixed radar screen blips being visible through the back of the model +* Fixed desh crate's last half of slots preventing radiation entirely \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/item/EntityBoatRubber.java b/src/main/java/com/hbm/entity/item/EntityBoatRubber.java index 3be552143..bcf638c7a 100644 --- a/src/main/java/com/hbm/entity/item/EntityBoatRubber.java +++ b/src/main/java/com/hbm/entity/item/EntityBoatRubber.java @@ -167,7 +167,6 @@ public class EntityBoatRubber extends Entity { @Override public void onUpdate() { super.onUpdate(); - //this.prevRotationYaw = this.rotationYaw; if(this.getTimeSinceHit() > 0) { this.setTimeSinceHit(this.getTimeSinceHit() - 1); @@ -194,30 +193,6 @@ public class EntityBoatRubber extends Entity { } } - double prevSpeedSq = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); - - if(prevSpeedSq > 0.2625D) { - double cosYaw = Math.cos(this.rotationYaw * Math.PI / 180.0D); - double sinYaw = Math.sin(this.rotationYaw * Math.PI / 180.0D); - - for(double j = 0; j < 1.0D + prevSpeedSq * 60.0D; ++j) { - double offset = (double) (this.rand.nextFloat() * 2.0F - 1.0F); - double side = (double) (this.rand.nextInt(2) * 2 - 1) * 0.7D; - double magX; - double magZ; - - if(this.rand.nextBoolean()) { - magX = this.posX - cosYaw * offset * 0.8D + sinYaw * side; - magZ = this.posZ - sinYaw * offset * 0.8D - cosYaw * side; - this.worldObj.spawnParticle("splash", magX, this.posY - 0.125D, magZ, this.motionX, this.motionY, this.motionZ); - } else { - magX = this.posX + cosYaw + sinYaw * offset * 0.7D; - magZ = this.posZ + sinYaw - cosYaw * offset * 0.7D; - this.worldObj.spawnParticle("splash", magX, this.posY - 0.125D, magZ, this.motionX, this.motionY, this.motionZ); - } - } - } - if(this.worldObj.isRemote && this.isBoatEmpty) { if(this.boatPosRotationIncrements > 0) { double x = this.posX + (this.boatX - this.posX) / (double) this.boatPosRotationIncrements; @@ -228,7 +203,6 @@ public class EntityBoatRubber extends Entity { this.rotationPitch = (float) ((double) this.rotationPitch + (this.boatPitch - (double) this.rotationPitch) / (double) this.boatPosRotationIncrements); --this.boatPosRotationIncrements; this.setPosition(x, y, z); - //this.setRotation(this.rotationYaw, this.rotationPitch); } else { double x = this.posX + this.motionX; @@ -256,6 +230,8 @@ public class EntityBoatRubber extends Entity { this.motionY += 0.007000000216066837D; } + double prevSpeedSq = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.isAirBorne = false; if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase) { @@ -280,22 +256,26 @@ public class EntityBoatRubber extends Entity { EntityTrackerEntry entry = TrackerUtil.getTrackerEntry((WorldServer) worldObj, this.getEntityId()); entry.lastYaw = MathHelper.floor_float(this.rotationYaw * 256.0F / 360.0F) + 10; //force-trigger rotation update } + } else { + this.motionX *= 0.95D; + this.motionY *= 0.95D; + this.motionZ *= 0.95D; } double speedSq = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); - if(speedSq > 0.35D) { - double d4 = 0.35D / speedSq; + if(speedSq > 0.5D) { + double d4 = 0.5D / speedSq; this.motionX *= d4; this.motionZ *= d4; - speedSq = 0.35D; + speedSq = 0.5D; } - if(speedSq > prevSpeedSq && this.speedMultiplier < 0.35D) { - this.speedMultiplier += (0.35D - this.speedMultiplier) / 35.0D; + if(speedSq > prevSpeedSq && this.speedMultiplier < 0.5D) { + this.speedMultiplier += (0.5D - this.speedMultiplier) / 50.0D; - if(this.speedMultiplier > 0.35D) { - this.speedMultiplier = 0.35D; + if(this.speedMultiplier > 0.5D) { + this.speedMultiplier = 0.5D; } } else { this.speedMultiplier -= (this.speedMultiplier - 0.07D) / 35.0D; @@ -384,6 +364,32 @@ public class EntityBoatRubber extends Entity { } } } + + double moX = this.prevPosX - this.posX; + double moZ = this.prevPosZ - this.posZ; + double prevSpeedSq = Math.sqrt(moX * moX + moZ * moZ); + + if(prevSpeedSq > 0.2625D) { + double cosYaw = Math.cos(this.rotationYaw * Math.PI / 180.0D); + double sinYaw = Math.sin(this.rotationYaw * Math.PI / 180.0D); + + for(double j = 0; j < 1.0D + prevSpeedSq * 60.0D; ++j) { + double offset = (double) (this.rand.nextFloat() * 2.0F - 1.0F); + double side = (double) (this.rand.nextInt(2) * 2 - 1) * 0.7D; + double magX; + double magZ; + + if(this.rand.nextBoolean()) { + magX = this.posX - cosYaw * offset * 0.8D + sinYaw * side; + magZ = this.posZ - sinYaw * offset * 0.8D - cosYaw * side; + this.worldObj.spawnParticle("splash", magX, this.posY - 0.125D, magZ, moX, 0.1, moZ); + } else { + magX = this.posX + cosYaw + sinYaw * offset * 0.7D; + magZ = this.posZ + sinYaw - cosYaw * offset * 0.7D; + this.worldObj.spawnParticle("splash", magX, this.posY - 0.125D, magZ, moX, 0.1, moZ); + } + } + } } protected void passiveDeccelerate() { diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index 8fdd2f065..631f75cb0 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -6,6 +6,13 @@ import java.util.List; import com.hbm.entity.logic.IChunkLoader; import com.hbm.entity.projectile.EntityThrowableInterp; import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockMutatorFire; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCross; +import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.main.MainRegistry; import api.hbm.entity.IRadarDetectable; @@ -303,4 +310,15 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen } } } + + public void explodeStandard(float strength, int resolution, boolean fire, boolean largeSmoke) { + ExplosionVNT xnt = new ExplosionVNT(worldObj, posX, posY, posZ, strength); + xnt.setBlockAllocator(new BlockAllocatorStandard(resolution)); + xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop().withBlockEffect(fire ? new BlockMutatorFire() : null)); + xnt.setEntityProcessor(new EntityProcessorCross(7.5D).withRangeMod(2)); + xnt.setPlayerProcessor(new PlayerProcessorStandard()); + xnt.setSFX(new ExplosionEffectStandard()); + if(largeSmoke) ExplosionLarge.spawnParticles(worldObj, posX, posY, posZ, ExplosionLarge.cloudFunction((int) strength)); + xnt.explode(); + } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java index f640def7a..92ebec3f2 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java @@ -43,14 +43,14 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT { public static class EntityMissileGeneric extends EntityMissileTier1 { public EntityMissileGeneric(World world) { super(world); } public EntityMissileGeneric(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } - @Override public void onImpact() { ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); } + @Override public void onImpact() { this.explodeStandard(15F, 24, false, true); } @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_small); } } public static class EntityMissileIncendiary extends EntityMissileTier1 { public EntityMissileIncendiary(World world) { super(world); } public EntityMissileIncendiary(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } - @Override public void onImpact() { ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 10.0F, true, true, true); } + @Override public void onImpact() { this.explodeStandard(15F, 24, true, true); } @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_small); } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java index 8c9917324..a0b71922f 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java @@ -47,7 +47,7 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT { public static class EntityMissileStrong extends EntityMissileTier2 { public EntityMissileStrong(World world) { super(world); } public EntityMissileStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } - @Override public void onImpact() { ExplosionLarge.explode(worldObj, posX, posY, posZ, 25.0F, true, true, true); } + @Override public void onImpact() { this.explodeStandard(30F, 32, false, true); } @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_medium); } } @@ -55,7 +55,7 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT { public EntityMissileIncendiaryStrong(World world) { super(world); } public EntityMissileIncendiaryStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } @Override public void onImpact() { - ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 25.0F, true, true, true); + this.explodeStandard(30F, 32, true, true); ExplosionChaos.flameDeath(this.worldObj, (int)((float)this.posX + 0.5F), (int)((float)this.posY + 0.5F), (int)((float)this.posZ + 0.5F), 25); } @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_incendiary_medium); } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java index 17602263a..e046a2f6c 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java @@ -50,8 +50,7 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT { public EntityMissileBurst(World world) { super(world); } public EntityMissileBurst(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } @Override public void onImpact() { - for(int i = 0; i < 4; i++) this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 50.0F, true); - ExplosionLarge.explode(worldObj, posX, posY, posZ, 50.0F, true, true, true); + this.explodeStandard(50F, 48, false, true); } @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_large); } } @@ -60,7 +59,7 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT { public EntityMissileInferno(World world) { super(world); } public EntityMissileInferno(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } @Override public void onImpact() { - ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 35.0F, true, true, true); + this.explodeStandard(50F, 48, true, true); ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10); ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25); } diff --git a/src/main/java/com/hbm/handler/HazmatRegistry.java b/src/main/java/com/hbm/handler/HazmatRegistry.java index 07e7df1b0..5bffe35cb 100644 --- a/src/main/java/com/hbm/handler/HazmatRegistry.java +++ b/src/main/java/com/hbm/handler/HazmatRegistry.java @@ -53,7 +53,7 @@ public class HazmatRegistry { double t45 = 1D; // 90% double ajr = 1.3D; // 95% double bj = 1D; // 90% - double env = 2D; // 99% + double env = 1.0D; // 99% double hev = 2.3D; // 99.5% double rpa = 2D; // 99% double trench = 1D; // 90% diff --git a/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java index a60d2ff38..2f66ebcb1 100644 --- a/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java +++ b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationContainer.java @@ -32,7 +32,7 @@ public class HazardTransformerRadiationContainer extends HazardTransformerBase { if(isCrate) { - for(int i = 0; i < 54; i++) { + for(int i = 0; i < 104; i++) { ItemStack held = ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("slot" + i)); if(held != null) { diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index b7c9be8b6..3c3632c9c 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -11,6 +11,7 @@ import static com.hbm.inventory.OreDictManager.*; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -74,6 +75,30 @@ public class ArcWelderRecipes extends SerializableRecipe { //pre-DFC recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_OSMIRIDIUM.id), 6_000, 20_000_000L, new FluidStack(Fluids.REFORMGAS, 16_000), new OreDictStack(OSMIRIDIUM.plateCast(), 2))); + + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_generic), 100, 5_000L, new ComparableStack(ModItems.warhead_generic_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_incendiary), 100, 5_000L, new ComparableStack(ModItems.warhead_incendiary_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_cluster), 100, 5_000L, new ComparableStack(ModItems.warhead_cluster_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_buster), 100, 5_000L, new ComparableStack(ModItems.warhead_buster_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_generic_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_incendiary_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_incendiary_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_cluster_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_cluster_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_buster_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_buster_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_emp_strong), 200, 10_000L, new ComparableStack(ModBlocks.emp_bomb, 3), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_burst), 300, 25_000L, new ComparableStack(ModItems.warhead_generic_large), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_inferno), 300, 25_000L, new ComparableStack(ModItems.warhead_incendiary_large), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_rain), 300, 25_000L, new ComparableStack(ModItems.warhead_cluster_large), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_drill), 300, 25_000L, new ComparableStack(ModItems.warhead_buster_large), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear), 600, 50_000L, new ComparableStack(ModItems.warhead_nuclear), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear_cluster), 600, 50_000L, new ComparableStack(ModItems.warhead_mirv), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_volcano), 600, 50_000L, new ComparableStack(ModItems.warhead_volcano), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_endo), 200, 10_000L, new ComparableStack(ModItems.warhead_thermo_endo), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_exo), 200, 10_000L, new ComparableStack(ModItems.warhead_thermo_exo), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large))); } public static HashMap getRecipes() { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index e5e0d5bef..82e17f216 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -180,9 +180,9 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.dysfunctional_reactor, 1), new AStack[] {new OreDictStack(STEEL.plate(), 15), new OreDictStack(PB.ingot(), 5), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack("dyeBrown", 3), },200); makeRecipe(new ComparableStack(ModItems.missile_assembly, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.hull_small_aluminium, 4), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.wire_aluminium, 6), new ComparableStack(ModItems.canister_full, 3, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); makeRecipe(new ComparableStack(ModItems.missile_carrier, 1), new AStack[] {new ComparableStack(ModItems.fluid_barrel_full, 16, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_medium, 4), new ComparableStack(ModItems.thruster_large, 1), new ComparableStack(ModItems.hull_big_titanium, 6), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_aluminium, 12), new OreDictStack(TI.plate(), 24), new OreDictStack(ANY_RUBBER.ingot(), 128), new ComparableStack(ModBlocks.det_cord, 8), new ComparableStack(ModItems.circuit_targeting_tier3, 12), new ComparableStack(ModItems.circuit_targeting_tier4, 3), },4800); - makeRecipe(new ComparableStack(ModItems.warhead_generic_small, 1), new AStack[] {new OreDictStack(TI.plate(), 5), new OreDictStack(STEEL.plate(), 3), new ComparableStack(Blocks.tnt, 2), },100); - makeRecipe(new ComparableStack(ModItems.warhead_generic_medium, 1), new AStack[] {new OreDictStack(TI.plate(), 8), new OreDictStack(STEEL.plate(), 5), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), },150); - makeRecipe(new ComparableStack(ModItems.warhead_generic_large, 1), new AStack[] {new OreDictStack(TI.plate(), 15), new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), },200); + makeRecipe(new ComparableStack(ModItems.warhead_generic_small, 1), new AStack[] {new OreDictStack(TI.plate(), 5), new OreDictStack(STEEL.plate(), 3), new ComparableStack(ModItems.ball_dynamite, 2), new ComparableStack(ModItems.circuit_targeting_tier2) },100); + makeRecipe(new ComparableStack(ModItems.warhead_generic_medium, 1), new AStack[] {new OreDictStack(TI.plate(), 8), new OreDictStack(STEEL.plate(), 5), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit_targeting_tier3) },150); + makeRecipe(new ComparableStack(ModItems.warhead_generic_large, 1), new AStack[] {new OreDictStack(TI.plate(), 15), new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit_targeting_tier4) },200); makeRecipe(new ComparableStack(ModItems.warhead_incendiary_small, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new OreDictStack(P_RED.dust(), 4), },100); makeRecipe(new ComparableStack(ModItems.warhead_incendiary_medium, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new OreDictStack(P_RED.dust(), 8), },150); makeRecipe(new ComparableStack(ModItems.warhead_incendiary_large, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new OreDictStack(P_RED.dust(), 16), },200); @@ -192,11 +192,11 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.warhead_buster_small, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModBlocks.det_cord, 8), },100); makeRecipe(new ComparableStack(ModItems.warhead_buster_medium, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModBlocks.det_cord, 4), new ComparableStack(ModBlocks.det_charge, 4), },150); makeRecipe(new ComparableStack(ModItems.warhead_buster_large, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModBlocks.det_charge, 8), },200); - makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new ComparableStack(ModItems.wire_red_copper, 6), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 12), },300); - makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 12), new OreDictStack(PU239.ingot(), 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(BE.ingot(), 4), new OreDictStack(LI.ingot(), 4), new ComparableStack(ModItems.cell_deuterium, 6), },500); + makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new ComparableStack(ModItems.wire_red_copper, 6), new OreDictStack(TI.plate(), 24), new ComparableStack(ModItems.circuit_targeting_tier4, 1) },300); + makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 12), new OreDictStack(PU239.ingot(), 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(BE.ingot(), 4), new OreDictStack(LI.ingot(), 4), new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.circuit_targeting_tier4, 3) },500); makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit_tantalium, 5) }, 600); - makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300); - makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300); + makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); + makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); makeRecipe(new ComparableStack(ModItems.fuel_tank_small, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 6, Fluids.ETHANOL.getID()), new OreDictStack(TI.plate(), 6), new OreDictStack(STEEL.plate(), 2), },100); makeRecipe(new ComparableStack(ModItems.fuel_tank_medium, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 8, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4), },150); makeRecipe(new ComparableStack(ModItems.fuel_tank_large, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 12, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8), },200); @@ -325,24 +325,24 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit_gold, 1), new ComparableStack(ModItems.coil_gold, 4), },250); makeRecipe(new ComparableStack(ModBlocks.launch_pad, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModBlocks.machine_battery, 1), new ComparableStack(ModItems.circuit_gold, 2), },250); makeRecipe(new ComparableStack(ModItems.spawn_chopper, 1), new AStack[] {new ComparableStack(ModItems.chopper_blades, 5), new ComparableStack(ModItems.chopper_gun, 1), new ComparableStack(ModItems.chopper_head, 1), new ComparableStack(ModItems.chopper_tail, 1), new ComparableStack(ModItems.chopper_torso, 1), new ComparableStack(ModItems.chopper_wing, 2), },300); - makeRecipe(new ComparableStack(ModItems.missile_generic, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_incendiary, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_buster, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_incendiary_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_cluster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_buster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_emp_strong, 1), new AStack[] {new ComparableStack(ModBlocks.emp_bomb, 3), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - makeRecipe(new ComparableStack(ModItems.missile_burst, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_inferno, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_rain, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_drill, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_nuclear, 1), new AStack[] {new ComparableStack(ModItems.warhead_nuclear, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },500); - makeRecipe(new ComparableStack(ModItems.missile_nuclear_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_mirv, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); - makeRecipe(new ComparableStack(ModItems.missile_volcano, 1), new AStack[] {new ComparableStack(ModItems.warhead_volcano, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); - makeRecipe(new ComparableStack(ModItems.missile_endo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_endo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); - makeRecipe(new ComparableStack(ModItems.missile_exo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_exo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); + //makeRecipe(new ComparableStack(ModItems.missile_generic, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); + //makeRecipe(new ComparableStack(ModItems.missile_incendiary, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); + //makeRecipe(new ComparableStack(ModItems.missile_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); + //makeRecipe(new ComparableStack(ModItems.missile_buster, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); + //makeRecipe(new ComparableStack(ModItems.missile_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); + //makeRecipe(new ComparableStack(ModItems.missile_incendiary_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); + //makeRecipe(new ComparableStack(ModItems.missile_cluster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); + //makeRecipe(new ComparableStack(ModItems.missile_buster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); + //makeRecipe(new ComparableStack(ModItems.missile_emp_strong, 1), new AStack[] {new ComparableStack(ModBlocks.emp_bomb, 3), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); + //makeRecipe(new ComparableStack(ModItems.missile_burst, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); + //makeRecipe(new ComparableStack(ModItems.missile_inferno, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); + //makeRecipe(new ComparableStack(ModItems.missile_rain, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); + //makeRecipe(new ComparableStack(ModItems.missile_drill, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); + //makeRecipe(new ComparableStack(ModItems.missile_nuclear, 1), new AStack[] {new ComparableStack(ModItems.warhead_nuclear, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },500); + //makeRecipe(new ComparableStack(ModItems.missile_nuclear_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_mirv, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); + //makeRecipe(new ComparableStack(ModItems.missile_volcano, 1), new AStack[] {new ComparableStack(ModItems.warhead_volcano, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); + //makeRecipe(new ComparableStack(ModItems.missile_endo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_endo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); + //makeRecipe(new ComparableStack(ModItems.missile_exo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_exo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); makeRecipe(new ComparableStack(ModItems.gun_defabricator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(IRON.plate(), 5), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(Items.diamond, 1), new ComparableStack(ModItems.plate_dalekanium, 3), },200); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo, 24), new AStack[] {new OreDictStack(STEEL.plate(), 2), new OreDictStack(REDSTONE.dust(), 1), new ComparableStack(Items.glowstone_dust, 1), },50); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo2, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(REDSTONE.dust(), 7), new ComparableStack(ModItems.powder_power, 3), },200); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java index adc9ae010..92342b53b 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java @@ -43,6 +43,7 @@ public class RenderRadarScreen extends TileEntitySpecialRenderer implements IIte Tessellator tess = Tessellator.instance; if(screen.linked) { + GL11.glDepthMask(false); tess.startDrawingQuads(); double offset = ((tileEntity.getWorldObj().getTotalWorldTime() % 56) + f) / 30D; @@ -77,10 +78,9 @@ public class RenderRadarScreen extends TileEntitySpecialRenderer implements IIte tess.addVertexWithUV(0.38, 1 - sZ - size, 0.5 - sX - size, 224D / 256D, entry.blipLevel * 8F / 256F); tess.addVertexWithUV(0.38, 1 - sZ - size, 0.5 - sX + size, 216D / 256D, entry.blipLevel * 8F / 256F); } - GL11.glDisable(GL11.GL_DEPTH_TEST); tess.draw(); - GL11.glEnable(GL11.GL_DEPTH_TEST); } + GL11.glDepthMask(true); } else { int offset = 118 + tileEntity.getWorldObj().rand.nextInt(81); tess.startDrawingQuads(); diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index 704e7b97a..4bada0b3a 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -577,9 +577,9 @@ public abstract class DoorDecl { @SideOnly(Side.CLIENT) public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { if(partName.startsWith("left")) { - set(trans, 0, 0, 1 * getNormTime(openTicks)); + set(trans, 0, 0, 0.99F * getNormTime(openTicks)); } else { - set(trans, 0, 0, -1 * getNormTime(openTicks)); + set(trans, 0, 0, -0.99F * getNormTime(openTicks)); } }; @@ -736,7 +736,7 @@ public abstract class DoorDecl { @Override public String getOpenSoundStart() { - return "hbm:door.door.lever"; + return "hbm:door.lever"; }; @Override @@ -746,7 +746,7 @@ public abstract class DoorDecl { @Override public String getCloseSoundEnd() { - return "hbm:door.door.lever"; + return "hbm:door.lever"; }; @Override diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index 6ece2e502..33272462b 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -62,6 +62,7 @@ public class ArmorUtil { ArmorRegistry.registerHazard(ModItems.schrabidium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.euphemium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.rpa_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.envsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); //Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht! registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.universal.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 72eb5e087..f6aad2998 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5541,7 +5541,7 @@ tile.zirnox_destroyed.name=Destroyed ZIRNOX tile.large_vehicle_door.name=Large Vehicle Door tile.water_door.name=Water Door tile.qe_containment.name=QE Containment Door -tile.qe_sliding.name=QE Sliding Door +tile.qe_sliding_door.name=QE Sliding Door tile.round_airlock_door.name=Round Airlock Door tile.secure_access_door.name=Secure Access Door tile.sliding_seal_door.name=Sliding Seal Door diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index fdea12a18..b77fef3b1 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -71,6 +71,8 @@ "door.garage_move": { "category": "block", "sounds": [{"name": "block/door/garage_move", "stream": false}] }, "door.garage_stop": { "category": "block", "sounds": [{"name": "block/door/garage_stop", "stream": false}] }, "door.lever": {"category": "block", "sounds": [{"name": "block/door/lever1", "stream": false}]}, + "door.wgh_start": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": false}]}, + "door.wgh_stop": {"category": "block", "sounds": [{"name": "block/door/wgh_stop", "stream": false}]}, "door.wgh_big_start": {"category": "block", "sounds": [{"name": "block/door/door_wgh_big_start", "stream": false}]}, "door.wgh_big_stop": {"category": "block", "sounds": [{"name": "block/door/door_wgh_big_stop", "stream": false}]}, "door.qe_sliding_shut": {"category": "block", "sounds": [{"name": "block/door/doorshut_1", "stream": false}]}, From d4f8de4a548488cbc9bf3f12b0bda1616c9fde60 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 30 Nov 2023 18:45:13 -0600 Subject: [PATCH 152/207] Finishing touches. --- .../tileentity/machine/TileEntityChungus.java | 11 ++++++++--- .../machine/TileEntityMachineLargeTurbine.java | 14 +++++++------- .../machine/TileEntityMachineTurbine.java | 12 +++++++++--- .../machine/TileEntityMachineTurbineGas.java | 18 ++++++++++++++++-- .../machine/rbmk/TileEntityCraneConsole.java | 2 +- .../machine/rbmk/TileEntityRBMKRod.java | 14 +++++++++++++- .../storage/TileEntityMachineFluidTank.java | 2 +- 7 files changed, 55 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index e1dcddcf8..d1a9abd64 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -283,13 +283,13 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc @Override public String getComponentName() { - return "ntm_large_turbine"; + return "ntm_turbine"; } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } @Callback(direct = true) @@ -301,10 +301,15 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setType(Context context, Arguments args) { - tanks[1].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); return new Object[] {true}; } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; + } @Override public FluidTank[] getSendingTanks() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index fc22fe394..acdc7ee38 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -304,19 +304,19 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme return CompatHandler.steamTypeToInt(tanks[1].getTankType()); } - @Callback(direct = true) - @Optional.Method(modid = "OpenComputers") - public Object[] getInfo(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType()}; - } - @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setType(Context context, Arguments args) { - tanks[1].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); return new Object[] {true}; } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineLargeTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index a2857822a..1845c5e72 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -385,13 +385,13 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS @Override public String getComponentName() { - return "ntm_small_turbine"; + return "ntm_turbine"; } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } @Callback(direct = true) @@ -403,10 +403,16 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setType(Context context, Arguments args) { - tanks[1].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); + tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); return new Object[] {true}; } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index efb36937f..21bb03777 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -34,7 +34,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -602,7 +601,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setThrottle(Context context, Arguments args) { - powerSliderPos = MathHelper.clamp_int(args.checkInteger(0) / 100 * 60, 0 , 60); + throttle = args.checkInteger(0); return new Object[] {true}; } @@ -613,6 +612,21 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement return new Object[] {true}; } + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] start(Context context, Arguments args) { + stopIfNotReady(); + startup(); + return new Object[] {true}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] stop(Context context, Arguments args) { + shutdown(); + return new Object[] {true}; + } + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index d54042400..823259e3d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -399,7 +399,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece @Callback(direct = true) @Optional.Method(modid = "OpenComputers") //if this doesnt work im going to die - public Object[] getBoundPos(Context context, Arguments args) { + public Object[] getCranePos(Context context, Arguments args) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection left = dir.getRotation(ForgeDirection.DOWN); int x = (int)Math.floor(this.centerX - dir.offsetX * this.posFront - left.offsetX * this.posLeft + 0.5D); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index d22b5ae13..e1a0e3384 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -443,6 +443,15 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { + return new Object[] {slots[0].getItem().getUnlocalizedName()}; + } + return new Object[] {"N/A"}; + } + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { @@ -450,18 +459,21 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM Object OC_poison_buf; Object OC_hull_buf; Object OC_core_buf; + String OC_type; if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); OC_hull_buf = ItemRBMKRod.getHullHeat(slots[0]); OC_core_buf = ItemRBMKRod.getCoreHeat(slots[0]); + OC_type = slots[0].getItem().getUnlocalizedName(); } else { OC_enrich_buf = "N/A"; OC_poison_buf = "N/A"; OC_hull_buf = "N/A"; OC_core_buf = "N/A"; + OC_type = "N/A"; } - return new Object[] {heat, OC_hull_buf, OC_core_buf, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; + return new Object[] {heat, OC_hull_buf, OC_core_buf, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, OC_type, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; } @Callback(direct = true) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 7e6d91be2..3b4e8d261 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -470,7 +470,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements @Override public String getComponentName() { - return "ntm_tank"; + return "ntm_fluid_tank"; } @Callback(direct = true) From 7376e62112287d8f1a0b3293efa276135a77cf06 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 30 Nov 2023 19:26:44 -0600 Subject: [PATCH 153/207] PWR Compatibility fix (i forgot a line) --- .../com/hbm/tileentity/machine/TileEntityPWRController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 8fa21dd0f..09ca138b6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -31,6 +31,7 @@ import cpw.mods.fml.relauncher.SideOnly; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -42,7 +43,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IFluidStandardTransceiver { +public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, SimpleComponent, IFluidStandardTransceiver { public FluidTank[] tanks; public int coreHeat; From f8e9cff64b1ab64a685a0612eba6a6e3027b5829 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 2 Dec 2023 20:44:34 +0100 Subject: [PATCH 154/207] tweaks, exposure chamber recipes --- changelog | 7 +- .../container/ContainerMachineExcavator.java | 4 +- .../ContainerMachineExposureChamber.java | 86 ++++++++++++++++++ .../gui/GUIMachineExposureChamber.java | 47 ++++++++++ .../inventory/recipes/AssemblerRecipes.java | 16 ++-- .../recipes/ExposureChamberRecipes.java | 83 +++++++++++++++++ .../recipes/loader/SerializableRecipe.java | 1 + .../java/com/hbm/main/CraftingManager.java | 4 - .../tileentity/RenderExposureChamber.java | 21 +++-- .../TileEntityMachineExposureChamber.java | 74 ++++++++++++++- .../gui/processing/gui_exposure_chamber.png | Bin 3129 -> 3134 bytes .../models/doors/qe_containment_decal.png | Bin 314 -> 7096 bytes 12 files changed, 319 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java create mode 100644 src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java diff --git a/changelog b/changelog index 596d87512..c9bd68389 100644 --- a/changelog +++ b/changelog @@ -7,6 +7,9 @@ * A much less jankier alternative to the vanilla boat. Rotations are silky smooth and done via the strafe keys instead of based on the player's orientation * Won't break from ramming into blocks * Faster than a regular boat, but will decelerate quicker when there's nobody sitting in it, preventing the boat from drifting off too far when empty +* Exposure chamber + * Now performs the particle transmutation recipes that were previously done in the crafting table + * Stylish as hell ## Changed * Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high @@ -20,6 +23,7 @@ * Non-custom missiles have been slightly buffed * Explosions are now slightly larger and they use the new cross-detection entity damage code which still affects entities behind small hills that would otherwise be shielded * Explosions now have a 2x larger entity damage radius +* Updated the digiminer recipe for mekanism cocmpat ## Fixed * Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate @@ -28,4 +32,5 @@ * Fixed the ballistic gauntlet spawning a client-side ghost bullet that doesn't move or despawn * Fixed bug where different custom machine cores would merge in a stack when picked up, turning them into the same type * Fixed radar screen blips being visible through the back of the model -* Fixed desh crate's last half of slots preventing radiation entirely \ No newline at end of file +* Fixed desh crate's last half of slots preventing radiation entirely +* Fixed large mining drill shift-clicking \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java b/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java index a7caab502..c55fd5400 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java @@ -54,8 +54,8 @@ public class ContainerMachineExcavator extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if(par2 <= 4) { - if(!this.mergeItemStack(var5, 5, this.inventorySlots.size(), true)) { + if(par2 <= 13) { + if(!this.mergeItemStack(var5, 14, this.inventorySlots.size(), true)) { return null; } } else { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java b/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java new file mode 100644 index 000000000..b9e839468 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java @@ -0,0 +1,86 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineExposureChamber extends Container { + + private TileEntityMachineExposureChamber chamber; + + public ContainerMachineExposureChamber(InventoryPlayer invPlayer, TileEntityMachineExposureChamber tedf) { + this.chamber = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 8, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 8, 54)); + this.addSlotToContainer(new Slot(tedf, 3, 80, 36)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 116, 36)); + this.addSlotToContainer(new Slot(tedf, 5, 152, 54)); + this.addSlotToContainer(new Slot(tedf, 6, 44, 54)); + this.addSlotToContainer(new Slot(tedf, 7, 62, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= 6) { + if(!this.mergeItemStack(var5, 7, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof ItemMachineUpgrade) { + if(!this.mergeItemStack(var5, 5, 7, false)) { + return null; + } + } else if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(var5, 4, 5, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 0, 2, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return chamber.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java b/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java new file mode 100644 index 000000000..351a3642d --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java @@ -0,0 +1,47 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineExposureChamber; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineExposureChamber extends GuiInfoContainer { + + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_exposure_chamber.png"); + private TileEntityMachineExposureChamber chamber; + + public GUIMachineExposureChamber(InventoryPlayer invPlayer, TileEntityMachineExposureChamber chamber) { + super(new ContainerMachineExposureChamber(invPlayer, chamber)); + this.chamber = chamber; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 52, chamber.power, chamber.maxPower); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.chamber.hasCustomInventoryName() ? this.chamber.getInventoryName() : I18n.format(this.chamber.getInventoryName()); + this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 82e17f216..fb559fa5d 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -1230,17 +1230,17 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(mb, 1, 4), new AStack[] { new OreDictStack(DURA.ingot(), 16), - new OreDictStack(DESH.ingot(), 8), - new OreDictStack(STEEL.plate(), 48), - new OreDictStack(CU.plate(), 24), + new OreDictStack(DESH.ingot(), 16), + new OreDictStack(STEEL.plateWelded(), 32), + new OreDictStack(CU.plateWelded(), 24), new ComparableStack(ModItems.pipes_steel, 8), - new ComparableStack(ModItems.circuit_gold, 8), - new ComparableStack(ModItems.wire_advanced_alloy, 24), + new OreDictStack(KEY_CIRCUIT_BISMUTH, 4), + new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_ALLOY.id), new ComparableStack(ModBlocks.fusion_conductor, 12), - new ComparableStack(ModBlocks.machine_lithium_battery, 3), - new ComparableStack(ModItems.crystal_redstone, 12), + new ComparableStack(ModBlocks.capacitor_tantalium, 53), + new ComparableStack(ModItems.crystal_redstone, 16), new ComparableStack(ModItems.crystal_diamond, 8), - new ComparableStack(ModItems.motor_desh, 16) + new ComparableStack(ModItems.motor_bismuth, 4) }, 15 * 60 * 20); } } diff --git a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java new file mode 100644 index 000000000..53e69569f --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java @@ -0,0 +1,83 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import static com.hbm.inventory.OreDictManager.*; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; + +public class ExposureChamberRecipes extends SerializableRecipe { + + public static List recipes = new ArrayList(); + + @Override + public void registerDefaults() { + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_higgs), new OreDictStack(U.ingot()), new ItemStack(ModItems.ingot_schraranium))); + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_higgs), new OreDictStack(U238.ingot()), new ItemStack(ModItems.ingot_schrabidium))); + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_dark), new OreDictStack(PU.ingot()), new ItemStack(ModItems.ingot_euphemium))); + recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_sparkticle), new OreDictStack(SBD.ingot()), new ItemStack(ModItems.ingot_dineutronium))); + } + + @Override + public String getFileName() { + return "hbmExposureChamber.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + + JsonObject obj = (JsonObject) recipe; + + AStack particle = this.readAStack(obj.get("particle").getAsJsonArray()); + AStack ingredient = this.readAStack(obj.get("ingredient").getAsJsonArray()); + ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray()); + + ExposureChamberRecipe rec = new ExposureChamberRecipe(particle, ingredient, output); + recipes.add(rec); + } + + @Override + public void writeRecipe(Object o, JsonWriter writer) throws IOException { + ExposureChamberRecipe recipe = (ExposureChamberRecipe) o; + + writer.name("particle"); + this.writeAStack(recipe.particle, writer); + writer.name("ingredient"); + this.writeAStack(recipe.ingredient, writer); + writer.name("output"); + this.writeItemStack(recipe.output, writer); + } + + public static class ExposureChamberRecipe { + + public AStack particle; + public AStack ingredient; + public ItemStack output; + + public ExposureChamberRecipe(AStack particle, AStack ingredient, ItemStack output) { + this.particle = particle; + this.ingredient = ingredient; + this.output = output; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index 8149dfaba..f54138b0f 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -65,6 +65,7 @@ public abstract class SerializableRecipe { recipeHandlers.add(new ElectrolyserFluidRecipes()); recipeHandlers.add(new ElectrolyserMetalRecipes()); recipeHandlers.add(new ArcWelderRecipes()); + recipeHandlers.add(new ExposureChamberRecipes()); recipeHandlers.add(new MatDistribution()); recipeHandlers.add(new CustomMachineRecipes()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 5e0cc59e9..386706b30 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -862,10 +862,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 0), new Object[] { "PCP", "CHC", "PCP", 'P', ANY_RESISTANTALLOY.plateCast(), 'C', ModItems.circuit_gold, 'H', Fluids.HELIUM4.getDict(16_000) }); addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 1), new Object[] { "PCP", "CHC", "PCP", 'P', GOLD.plateCast(), 'C', ModItems.motor_bismuth, 'H', new ItemStack(ModBlocks.hadron_cooler, 1, 0) }); - addRecipeAuto(new ItemStack(ModItems.ingot_schrabidium, 8), new Object[] { "UUU", "UPU", "UUU", 'U', U.ingot(), 'P', new ItemStack(ModItems.particle_higgs).setStackDisplayName("Higgs Boson (Temporary Recipe)") }); - addRecipeAuto(new ItemStack(ModItems.ingot_euphemium, 8), new Object[] { "UUU", "UPU", "UUU", 'U', PU.ingot(), 'P', new ItemStack(ModItems.particle_dark).setStackDisplayName("Dark Matter (Temporary Recipe)") }); - addRecipeAuto(new ItemStack(ModItems.ingot_dineutronium, 8), new Object[] { "UUU", "UPU", "UUU", 'U', SBD.ingot(), 'P', new ItemStack(ModItems.particle_sparkticle).setStackDisplayName("Sparkticle (Temporary Recipe)") }); - addRecipeAuto(new ItemStack(ModBlocks.fireworks, 1), new Object[] { "PPP", "PPP", "WIW", 'P', Items.paper, 'W', KEY_PLANKS, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.safety_fuse, 8), new Object[] { "SSS", "SGS", "SSS", 'S', Items.string, 'G', Items.gunpowder }); diff --git a/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java b/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java index 539cb72a1..7fc7528da 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java +++ b/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java @@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; import com.hbm.main.ResourceManager; +import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -11,7 +12,7 @@ import net.minecraft.tileentity.TileEntity; public class RenderExposureChamber extends TileEntitySpecialRenderer { @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float interp) { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D); @@ -25,18 +26,24 @@ public class RenderExposureChamber extends TileEntitySpecialRenderer { case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; } + TileEntityMachineExposureChamber chamber = (TileEntityMachineExposureChamber) tileEntity; + GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.exposure_chamber_tex); ResourceManager.exposure_chamber.renderPart("Chamber"); - GL11.glPushMatrix(); - GL11.glRotated((tileEntity.getWorldObj().getTotalWorldTime() % 360D + f) * 5, 0, 1, 0); - GL11.glTranslated(0, Math.sin((tileEntity.getWorldObj().getTotalWorldTime() % (Math.PI * 16D) + f) * 0.125) * 0.0625, 0); - ResourceManager.exposure_chamber.renderPart("Core"); - GL11.glPopMatrix(); + double rotation = chamber.prevRotation + (chamber.rotation - chamber.prevRotation) * interp; + + if(chamber.isOn) { + GL11.glPushMatrix(); + GL11.glRotated(rotation / 2D, 0, 1, 0); + GL11.glTranslated(0, Math.sin((tileEntity.getWorldObj().getTotalWorldTime() % (Math.PI * 16D) + interp) * 0.125) * 0.0625, 0); + ResourceManager.exposure_chamber.renderPart("Core"); + GL11.glPopMatrix(); + } GL11.glPushMatrix(); - GL11.glRotated((tileEntity.getWorldObj().getTotalWorldTime() % 360D + f) * 10, 0, 1, 0); + GL11.glRotated(rotation, 0, 1, 0); ResourceManager.exposure_chamber.renderPart("Magnets"); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java index dbe3dc5fa..d45fbe8cd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -1,15 +1,42 @@ package com.hbm.tileentity.machine; +import com.hbm.inventory.container.ContainerMachineExposureChamber; +import com.hbm.inventory.gui.GUIMachineExposureChamber; +import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; -public class TileEntityMachineExposureChamber extends TileEntityMachineBase { +public class TileEntityMachineExposureChamber extends TileEntityMachineBase implements IGUIProvider { + + public long power; + public static final long maxPower = 1_000_000; + + public int progress; + public static final int processTimeBase = 200; + public int processTime = processTimeBase; + public boolean isOn = false; + public float rotation; + public float prevRotation; public TileEntityMachineExposureChamber() { - super(7); + /* + * 0: Particle + * 1: Particle internal + * 2: Particle container + * 3: Ingredient + * 4: Output + * 5: Battery + * 6-7: Upgrades + */ + super(8); } @Override @@ -20,6 +47,38 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase { @Override public void updateEntity() { + if(!worldObj.isRemote) { + + this.isOn = false; + this.networkPackNT(50); + } else { + + this.prevRotation = this.rotation; + + if(this.isOn) { + + this.rotation += 10D; + + if(this.rotation >= 720D) { + this.rotation -= 720D; + this.prevRotation -= 720D; + } + } + } + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.isOn); + buf.writeInt(this.progress); + buf.writeInt(this.processTime); + } + + @Override + public void deserialize(ByteBuf buf) { + this.isOn = buf.readBoolean(); + this.progress = buf.readInt(); + this.processTime = buf.readInt(); } AxisAlignedBB bb = null; @@ -46,4 +105,15 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase { public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerMachineExposureChamber(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineExposureChamber(player.inventory, this); + } } diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_exposure_chamber.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_exposure_chamber.png index f9e65f885b185b69ccee70f84c46e4b082cb4f5d..24701a27f3e6e1f1ae3ce0f18b5e29ede880aab9 100644 GIT binary patch delta 1530 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 D492{= delta 301 zcmdmCzKbcYGr-TCmrII^fq{Y7)59eQNE?7K2Q!dNxWl;>NHG=%xjQkeJ16rJ$YDu$ z^mSxl*x1kgCy^D%XAAHNas7V-$YS`RrZyW$F_i@Q1^;Jwy4}EQqM~>`!+K8_#}E(i zw|xis4lD2+eel1&inBte(f#TwTi>s&1&>xOjeEj-?nAp{q@BU+KRRsT5k6HvLs%-? zFJ~Uk+@m4L(t3l1CsaUm`N1;|9Ky_Qd~Pe#nOYhR1QZhGct}=!28b50m`}BX0H*13Y>iXZ(jfa From 1157e691d733ccec8daadc8ff5b15aa20fc883ac Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 3 Dec 2023 20:23:51 +0100 Subject: [PATCH 155/207] more exposure chamber crap --- changelog | 3 +- .../ContainerMachineExposureChamber.java | 2 +- .../gui/GUIMachineExposureChamber.java | 17 +++- .../recipes/ExposureChamberRecipes.java | 5 + .../java/com/hbm/tileentity/DoorDecl.java | 5 +- .../TileEntityMachineExposureChamber.java | 95 +++++++++++++++++++ .../machine/TileEntityMachinePumpBase.java | 38 +++++++- .../TileEntityMachinePumpElectric.java | 4 +- .../machine/TileEntityMachinePumpSteam.java | 4 +- 9 files changed, 159 insertions(+), 14 deletions(-) diff --git a/changelog b/changelog index c9bd68389..1abab46d5 100644 --- a/changelog +++ b/changelog @@ -23,7 +23,8 @@ * Non-custom missiles have been slightly buffed * Explosions are now slightly larger and they use the new cross-detection entity damage code which still affects entities behind small hills that would otherwise be shielded * Explosions now have a 2x larger entity damage radius -* Updated the digiminer recipe for mekanism cocmpat +* Updated the digiminer recipe for mekanism compat +* Added config options to the ground water pumps ## Fixed * Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java b/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java index b9e839468..c4dd07df6 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineExposureChamber.java @@ -63,7 +63,7 @@ public class ContainerMachineExposureChamber extends Container { return null; } } else { - if(!this.mergeItemStack(var5, 0, 2, false)) { + if(!this.mergeItemStack(var5, 0, 3, false)) { return null; } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java b/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java index 351a3642d..3f5760cce 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineExposureChamber.java @@ -28,7 +28,9 @@ public class GUIMachineExposureChamber extends GuiInfoContainer { public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 52, chamber.power, chamber.maxPower); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 34, chamber.power, chamber.maxPower); + + drawCustomInfoStat(mouseX, mouseY, guiLeft + 26, guiTop + 36, 9, 16, mouseX, mouseY, chamber.savedParticles + " / " + chamber.maxParticles); } @Override @@ -43,5 +45,18 @@ public class GUIMachineExposureChamber extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = chamber.progress * 42 / (chamber.processTime + 1); + drawTexturedModalRect(guiLeft + 36, guiTop + 39, 192, 0, p, 10); + + int c = chamber.savedParticles * 16 / chamber.maxParticles; + drawTexturedModalRect(guiLeft + 26, guiTop + 52 - c, 192, 26 - c, 9, c); + + int e = (int) (chamber.power * 34 / chamber.maxPower); + drawTexturedModalRect(guiLeft + 152, guiTop + 52 - e, 176, 34 - e, 16, e); + + if(chamber.consumption <= chamber.power) { + drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 34, 9, 12); + } } } diff --git a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java index 53e69569f..d7e3ca925 100644 --- a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java @@ -27,6 +27,11 @@ public class ExposureChamberRecipes extends SerializableRecipe { recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_dark), new OreDictStack(PU.ingot()), new ItemStack(ModItems.ingot_euphemium))); recipes.add(new ExposureChamberRecipe(new ComparableStack(ModItems.particle_sparkticle), new OreDictStack(SBD.ingot()), new ItemStack(ModItems.ingot_dineutronium))); } + + public static ExposureChamberRecipe getRecipe(ItemStack particle, ItemStack input) { + for(ExposureChamberRecipe recipe : recipes) if(recipe.particle.matchesRecipe(particle, true) && recipe.ingredient.matchesRecipe(input, true)) return recipe; + return null; + } @Override public String getFileName() { diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index 4bada0b3a..5f81ef8f5 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -328,9 +328,8 @@ public abstract class DoorDecl { @Override public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { if(open) { - if(y == 0) - return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 0.125, 1); - return super.getBlockBound(x, y, z, open); + if(y == 0) return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 0, 1); + return AxisAlignedBB.getBoundingBox(0, 0.9375, 1 - 0.25, 1, 1, 1); } else { return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 1, 1); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java index d45fbe8cd..7f11c77ed 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -1,7 +1,12 @@ package com.hbm.tileentity.machine; +import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineExposureChamber; import com.hbm.inventory.gui.GUIMachineExposureChamber; +import com.hbm.inventory.recipes.ExposureChamberRecipes; +import com.hbm.inventory.recipes.ExposureChamberRecipes.ExposureChamberRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -11,6 +16,7 @@ import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; @@ -22,6 +28,10 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl public int progress; public static final int processTimeBase = 200; public int processTime = processTimeBase; + public static final int consumptionBase = 10_000; + public int consumption = consumptionBase; + public int savedParticles; + public static final int maxParticles = 8; public boolean isOn = false; public float rotation; public float prevRotation; @@ -50,6 +60,81 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl if(!worldObj.isRemote) { this.isOn = false; + this.power = Library.chargeTEFromItems(slots, 5, power, maxPower); + + UpgradeManager.eval(slots, 6, 7); + int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + int overdriveLevel = Math.min(UpgradeManager.getLevel(UpgradeType.OVERDRIVE), 3); + + this.consumption = this.consumptionBase; + + this.processTime = this.processTimeBase - this.processTimeBase / 4 * speedLevel; + this.consumption *= (speedLevel / 2 + 1); + this.processTime *= (powerLevel / 2 + 1); + this.consumption /= (powerLevel + 1); + this.processTime /= (overdriveLevel + 1); + this.consumption *= (overdriveLevel * 2 + 1); + + if(slots[1] == null && slots[0] != null && slots[3] != null && this.savedParticles <= 0) { + ExposureChamberRecipe recipe = this.getRecipe(slots[0], slots[3]); + + if(recipe != null) { + + ItemStack container = slots[0].getItem().getContainerItem(slots[0]); + + boolean canStore = false; + + if(container == null) { + canStore = true; + } else if(slots[2] == null) { + slots[2] = container.copy(); + canStore = true; + } else if(slots[2].getItem() == container.getItem() && slots[2].getItemDamage() == container.getItemDamage() && slots[2].stackSize < slots[2].getMaxStackSize()) { + slots[2].stackSize++; + canStore = true; + } + + if(canStore) { + slots[1] = slots[0].copy(); + slots[1].stackSize = 0; + this.decrStackSize(0, 1); + this.savedParticles = this.maxParticles; + } + } + } + + if(slots[1] != null && this.savedParticles > 0 && this.power >= this.consumption) { + ExposureChamberRecipe recipe = this.getRecipe(slots[1], slots[3]); + + if(recipe != null && (slots[4] == null || (slots[4].getItem() == recipe.output.getItem() && slots[4].getItemDamage() == recipe.output.getItemDamage() && slots[4].stackSize + recipe.output.stackSize <= slots[4].getMaxStackSize()))) { + this.progress++; + this.power -= this.consumption; + this.isOn = true; + + if(this.progress >= this.processTime) { + this.progress = 0; + this.savedParticles--; + this.decrStackSize(3, 1); + + if(slots[4] == null) { + slots[4] = recipe.output.copy(); + } else { + slots[4].stackSize += recipe.output.stackSize; + } + } + + } else { + this.progress = 0; + } + } else { + this.progress = 0; + } + + if(this.savedParticles <= 0) { + slots[1] = null; + } + this.networkPackNT(50); } else { @@ -66,12 +151,19 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl } } } + + public ExposureChamberRecipe getRecipe(ItemStack particle, ItemStack ingredient) { + return ExposureChamberRecipes.getRecipe(particle, ingredient); + } @Override public void serialize(ByteBuf buf) { buf.writeBoolean(this.isOn); buf.writeInt(this.progress); buf.writeInt(this.processTime); + buf.writeInt(this.consumption); + buf.writeLong(this.power); + buf.writeByte((byte) this.savedParticles); } @Override @@ -79,6 +171,9 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl this.isOn = buf.readBoolean(); this.progress = buf.readInt(); this.processTime = buf.readInt(); + this.consumption = buf.readInt(); + this.power = buf.readLong(); + this.savedParticles = buf.readByte(); } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java index 2b91757d8..653064658 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java @@ -1,11 +1,15 @@ package com.hbm.tileentity.machine; +import java.io.IOException; import java.util.HashSet; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -18,8 +22,8 @@ import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver { - +public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine { + public static final HashSet validBlocks = new HashSet(); static { @@ -41,6 +45,32 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp public float lastRotor; public boolean onGround = false; public int groundCheckDelay = 0; + + public static int groundHeight = 70; + public static int groundDepth = 4; + public static int steamSpeed = 1_000; + public static int electricSpeed = 10_000; + + @Override + public String getConfigName() { + return "waterpump"; + } + + @Override + public void readIfPresent(JsonObject obj) { + groundHeight = IConfigurableMachine.grab(obj, "I:groundHeight", groundHeight); + groundDepth = IConfigurableMachine.grab(obj, "I:groundDepth", groundDepth); + steamSpeed = IConfigurableMachine.grab(obj, "I:steamSpeed", steamSpeed); + electricSpeed = IConfigurableMachine.grab(obj, "I:electricSpeed", electricSpeed); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:groundHeight").value(groundHeight); + writer.name("I:groundDepth").value(groundDepth); + writer.name("I:steamSpeed").value(steamSpeed); + writer.name("I:electricSpeed").value(electricSpeed); + } public void updateEntity() { @@ -57,7 +87,7 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp } this.isOn = false; - if(this.canOperate() && yCoord <= 70 && onGround) { + if(this.canOperate() && yCoord <= groundHeight && onGround) { this.isOn = true; this.operate(); } @@ -88,7 +118,7 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp int invalidBlocks = 0; for(int x = -1; x <= 1; x++) { - for(int y = -1; y >= -4; y--) { + for(int y = -1; y >= -groundDepth; y--) { for(int z = -1; z <= 1; z++) { Block b = worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java index 2551c42a9..25b22372d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java @@ -14,7 +14,7 @@ public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase imp public TileEntityMachinePumpElectric() { super(); - water = new FluidTank(Fluids.WATER, 1_000_000); + water = new FluidTank(Fluids.WATER, electricSpeed * 100); } public void updateEntity() { @@ -49,7 +49,7 @@ public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase imp @Override protected void operate() { this.power -= 1_000; - water.setFill(Math.min(water.getFill() + 10_000, water.getMaxFill())); + water.setFill(Math.min(water.getFill() + electricSpeed, water.getMaxFill())); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java index 6644f3e83..d935cfbf4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java @@ -13,7 +13,7 @@ public class TileEntityMachinePumpSteam extends TileEntityMachinePumpBase { public TileEntityMachinePumpSteam() { super(); - water = new FluidTank(Fluids.WATER, 100_000); + water = new FluidTank(Fluids.WATER, steamSpeed * 100); steam = new FluidTank(Fluids.STEAM, 1_000); lps = new FluidTank(Fluids.SPENTSTEAM, 10); } @@ -71,6 +71,6 @@ public class TileEntityMachinePumpSteam extends TileEntityMachinePumpBase { protected void operate() { steam.setFill(steam.getFill() - 100); lps.setFill(lps.getFill() + 1); - water.setFill(Math.min(water.getFill() + 1000, water.getMaxFill())); + water.setFill(Math.min(water.getFill() + steamSpeed, water.getMaxFill())); } } From 976e0dba37eaa251a4dd8078cbce0738d605f7ff Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 5 Dec 2023 16:39:03 +0100 Subject: [PATCH 156/207] decoy missile, recipe stuff --- changelog | 4 + .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../java/com/hbm/entity/EntityMappings.java | 1 + .../entity/grenade/EntityGrenadeIFNull.java | 75 +++++++++--------- .../entity/missile/EntityMissileTier1.java | 9 +++ .../inventory/recipes/ArcWelderRecipes.java | 14 ++++ .../inventory/recipes/AssemblerRecipes.java | 24 ------ src/main/java/com/hbm/items/ModItems.java | 3 + src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 1 + .../entity/rocket/RenderMissileGeneric.java | 21 ++--- .../tileentity/RenderLaunchPadTier1.java | 7 ++ .../tileentity/bomb/TileEntityLaunchPad.java | 1 + src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/items/fuel_tank_large.png | Bin 269 -> 278 bytes .../textures/items/fuel_tank_large_alt.png | Bin 203 -> 0 bytes .../hbm/textures/items/fuel_tank_medium.png | Bin 362 -> 384 bytes .../textures/items/fuel_tank_medium_alt.png | Bin 278 -> 0 bytes .../hbm/textures/items/fuel_tank_small.png | Bin 292 -> 306 bytes .../textures/items/fuel_tank_small_alt.png | Bin 291 -> 0 bytes .../hbm/textures/items/fuelcell_arsenic.png | Bin 293 -> 0 bytes .../hbm/textures/items/fuelcell_base.png | Bin 258 -> 0 bytes .../hbm/textures/items/fuelcell_euphemium.png | Bin 300 -> 0 bytes .../hbm/textures/items/fuelcell_neptunium.png | Bin 287 -> 0 bytes .../hbm/textures/items/fuelcell_plutonium.png | Bin 280 -> 0 bytes .../hbm/textures/items/fuelcell_selenium.png | Bin 294 -> 0 bytes .../hbm/textures/items/fuelcell_u235.png | Bin 280 -> 0 bytes .../hbm/textures/items/fuelcell_u238m2.png | Bin 293 -> 0 bytes .../hbm/textures/items/missile_decoy.png | Bin 0 -> 364 bytes .../hbm/textures/items/thruster_large.png | Bin 461 -> 465 bytes .../hbm/textures/items/thruster_large_alt.png | Bin 288 -> 0 bytes .../hbm/textures/items/thruster_medium.png | Bin 399 -> 430 bytes .../textures/items/thruster_medium_alt.png | Bin 272 -> 0 bytes .../hbm/textures/items/thruster_small.png | Bin 326 -> 469 bytes .../hbm/textures/items/thruster_small_alt.png | Bin 263 -> 0 bytes .../hbm/textures/models/missile_v2_decoy.png | Bin 0 -> 915 bytes 37 files changed, 93 insertions(+), 72 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/items/fuel_tank_large_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuel_tank_medium_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuel_tank_small_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_arsenic.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_base.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_euphemium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_neptunium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_plutonium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_selenium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_u235.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_u238m2.png create mode 100644 src/main/resources/assets/hbm/textures/items/missile_decoy.png delete mode 100644 src/main/resources/assets/hbm/textures/items/thruster_large_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/thruster_medium_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/thruster_small_alt.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_v2_decoy.png diff --git a/changelog b/changelog index 1abab46d5..ee9dd2d76 100644 --- a/changelog +++ b/changelog @@ -10,6 +10,8 @@ * Exposure chamber * Now performs the particle transmutation recipes that were previously done in the crafting table * Stylish as hell +* Decoy missile + * A cheap tier 1 missile that shows up on radar screens as tier 4 (eg. nuclear) missiles ## Changed * Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high @@ -25,6 +27,8 @@ * Explosions now have a 2x larger entity damage radius * Updated the digiminer recipe for mekanism compat * Added config options to the ground water pumps +* Missile parts such as non-custom thrusters and fuselages are now made in the arc welder, recipe ingredients have been adjusted as well +* Null grenades now have a slightly larger radius, should no longer wipe playerdata and require UNDEFINED to make ## Fixed * Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index aa58d5393..0ed6e8a9c 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -394,7 +394,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_mystery, 1), new Object[] { "A", "G", "A", 'G', ModItems.grenade_if_generic, 'A', ModItems.powder_magic }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_spark, 1), new Object[] { " A ", "AGA", " A ", 'G', ModItems.grenade_if_generic, 'A', ModItems.powder_spark_mix }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_hopwire, 1), new Object[] { " A ", "AGA", " A ", 'G', ModItems.grenade_if_generic, 'A', ModItems.powder_power }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_null, 1), new Object[] { "BAB", "AGA", "BAB", 'G', ModItems.grenade_if_generic, 'A', Blocks.obsidian, 'B', BIGMT.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_null, 1), new Object[] { "BAB", "AGA", "BAB", 'G', ModItems.grenade_if_generic, 'A', ModItems.undefined, 'B', BIGMT.ingot() }); //Mines CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "C", "P", "T", 'C', ModItems.circuit_targeting_tier2, 'P', IRON.plate(), 'T', ANY_PLASTICEXPLOSIVE.ingot() }); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 18d585624..16a452ba5 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -58,6 +58,7 @@ public class EntityMappings { addEntity(EntityGrenadeNuke.class, "entity_grenade_nuke", 500); addEntity(EntitySchrab.class, "entity_schrabnel", 500); addEntity(EntityMissileGeneric.class, "entity_missile_generic", 1000); + addEntity(EntityMissileDecoy.class, "entity_missile_decoy", 1000); addEntity(EntityMissileStrong.class, "entity_missile_strong", 1000); addEntity(EntityMissileNuclear.class, "entity_missile_nuclear", 1000); addEntity(EntityMissileCluster.class, "entity_missile_cluster", 1000); diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java index 601381cee..98da6e84c 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java @@ -8,52 +8,51 @@ import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; import net.minecraft.world.World; public class EntityGrenadeIFNull extends EntityGrenadeBouncyBase { - public EntityGrenadeIFNull(World p_i1773_1_) - { - super(p_i1773_1_); - } + public EntityGrenadeIFNull(World world) { + super(world); + } - public EntityGrenadeIFNull(World p_i1774_1_, EntityLivingBase p_i1774_2_) - { - super(p_i1774_1_, p_i1774_2_); - } + public EntityGrenadeIFNull(World world, EntityLivingBase thrower) { + super(world, thrower); + } - public EntityGrenadeIFNull(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) - { - super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); - } + public EntityGrenadeIFNull(World world, double x, double y, double z) { + super(world, x, y, z); + } - @Override - public void explode() { - - if (!this.worldObj.isRemote) - { - this.setDead(); + @Override + public void explode() { - for(int a = -3; a <= 3; a++) - for(int b = -3; b <= 3; b++) - for(int c = -3; c <= 3; c++) - worldObj.setBlockToAir((int)posX + a, (int)posY + b, (int)posZ + c); - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox((int)posX + 0.5 - 3, (int)posY + 0.5 - 3, (int)posZ + 0.5 - 3, (int)posX + 0.5 + 3, (int)posY + 0.5 + 3, (int)posZ + 0.5 + 3)); - - for(Object o : list) { - if(o instanceof EntityLivingBase) { - EntityLivingBase e = (EntityLivingBase)o; - - e.setHealth(0); - } else if(o instanceof Entity) { - Entity e = (Entity)o; - - e.setDead(); - } - } - } - } + if(!this.worldObj.isRemote) { + this.setDead(); + + int range = 5; + + for(int a = -range; a <= range; a++) + for(int b = -range; b <= range; b++) + for(int c = -range; c <= range; c++) + worldObj.setBlockToAir((int) Math.floor(posX + a), (int) Math.floor(posY + b), (int) Math.floor(posZ + c)); + + List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, + AxisAlignedBB.getBoundingBox((int) posX + 0.5 - 3, (int) posY + 0.5 - 3, (int) posZ + 0.5 - 3, (int) posX + 0.5 + 3, (int) posY + 0.5 + 3, (int) posZ + 0.5 + 3)); + + for(Object o : list) { + if(o instanceof EntityLivingBase) { + EntityLivingBase e = (EntityLivingBase) o; + e.setHealth(0); + e.onDeath(DamageSource.outOfWorld); + } else if(o instanceof Entity) { + Entity e = (Entity) o; + e.setDead(); + } + } + } + } @Override protected int getMaxTimer() { diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java index 92ebec3f2..6fb39039e 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java @@ -47,6 +47,15 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT { @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_small); } } + public static class EntityMissileDecoy extends EntityMissileTier1 { + public EntityMissileDecoy(World world) { super(world); } + public EntityMissileDecoy(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { worldObj.newExplosion(this, posX, posY, posZ, 4F, false, false); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.ingot_steel); } + @Override public String getUnlocalizedName() { return "radar.target.tier4"; } + @Override public int getBlipLevel() { return IRadarDetectableNT.TIER4; } + } + public static class EntityMissileIncendiary extends EntityMissileTier1 { public EntityMissileIncendiary(World world) { super(world); } public EntityMissileIncendiary(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 3c3632c9c..180c6981d 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -13,6 +13,7 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.FluidStack; +import com.hbm.inventory.OreDictManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -31,16 +32,19 @@ public class ArcWelderRecipes extends SerializableRecipe { @Override public void registerDefaults() { + //Parts recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 200L, new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + //Dense Wires recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, new ComparableStack(ModItems.wire_advanced_alloy, 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), 100, 10_000L, new ComparableStack(ModItems.wire_gold, 8))); + //Circuits recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_copper), 100, 1_000L, new FluidStack(Fluids.GAS, 100), new ComparableStack(ModItems.circuit_aluminium, 1), new OreDictStack(NETHERQUARTZ.dust()), new ComparableStack(ModItems.wire_copper, 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_red_copper), 100, 2_500L, new FluidStack(Fluids.PETROLEUM, 100), @@ -76,11 +80,21 @@ public class ArcWelderRecipes extends SerializableRecipe { recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_OSMIRIDIUM.id), 6_000, 20_000_000L, new FluidStack(Fluids.REFORMGAS, 16_000), new OreDictStack(OSMIRIDIUM.plateCast(), 2))); + //Missile Parts + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_small), 60, 1_000L, new OreDictStack(STEEL.plate(), 4), new ComparableStack(ModItems.wire_aluminium, 4), new OreDictStack(CU.plate(), 4))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_medium), 100, 2_000L, new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.motor, 1), new OreDictStack(GRAPHITE.ingot(), 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_large), 200, 5_000L, new OreDictStack(DURA.ingot(), 12), new ComparableStack(ModItems.motor, 2), new OreDictStack(OreDictManager.getReflector(), 16))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_small), 60, 1_000L, new OreDictStack(Fluids.ETHANOL.getDict(1_000), 6), new OreDictStack(TI.plate(), 6), new OreDictStack(STEEL.plate(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_medium), 100, 2_000L, new OreDictStack(Fluids.KEROSENE.getDict(1_000), 8), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_large), 200, 5_000L, new OreDictStack(Fluids.KEROSENE.getDict(1_000), 12), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8))); + + //Missiles recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_generic), 100, 5_000L, new ComparableStack(ModItems.warhead_generic_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_incendiary), 100, 5_000L, new ComparableStack(ModItems.warhead_incendiary_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_cluster), 100, 5_000L, new ComparableStack(ModItems.warhead_cluster_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_buster), 100, 5_000L, new ComparableStack(ModItems.warhead_buster_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_decoy), 60, 2_500L, new OreDictStack(STEEL.ingot()), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_generic_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_incendiary_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_incendiary_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index fb559fa5d..6e69849c6 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -197,12 +197,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit_tantalium, 5) }, 600); makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); - makeRecipe(new ComparableStack(ModItems.fuel_tank_small, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 6, Fluids.ETHANOL.getID()), new OreDictStack(TI.plate(), 6), new OreDictStack(STEEL.plate(), 2), },100); - makeRecipe(new ComparableStack(ModItems.fuel_tank_medium, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 8, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4), },150); - makeRecipe(new ComparableStack(ModItems.fuel_tank_large, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 12, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8), },200); - makeRecipe(new ComparableStack(ModItems.thruster_small, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new OreDictStack(W.ingot(), 4), new ComparableStack(ModItems.wire_aluminium, 4), },100); - makeRecipe(new ComparableStack(ModItems.thruster_medium, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(W.ingot(), 8), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.wire_copper, 16), },150); - makeRecipe(new ComparableStack(ModItems.thruster_large, 1), new AStack[] {new OreDictStack(DURA.ingot(), 16), new OreDictStack(W.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.circuit_red_copper, 1), },200); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel), new ComparableStack(ModItems.circuit_gold, 1) },600); makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new ComparableStack(ModItems.board_copper, 12), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.hull_small_steel, 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit_gold, 2), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); @@ -325,24 +319,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit_gold, 1), new ComparableStack(ModItems.coil_gold, 4), },250); makeRecipe(new ComparableStack(ModBlocks.launch_pad, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModBlocks.machine_battery, 1), new ComparableStack(ModItems.circuit_gold, 2), },250); makeRecipe(new ComparableStack(ModItems.spawn_chopper, 1), new AStack[] {new ComparableStack(ModItems.chopper_blades, 5), new ComparableStack(ModItems.chopper_gun, 1), new ComparableStack(ModItems.chopper_head, 1), new ComparableStack(ModItems.chopper_tail, 1), new ComparableStack(ModItems.chopper_torso, 1), new ComparableStack(ModItems.chopper_wing, 2), },300); - //makeRecipe(new ComparableStack(ModItems.missile_generic, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - //makeRecipe(new ComparableStack(ModItems.missile_incendiary, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - //makeRecipe(new ComparableStack(ModItems.missile_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - //makeRecipe(new ComparableStack(ModItems.missile_buster, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - //makeRecipe(new ComparableStack(ModItems.missile_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_incendiary_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_cluster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_buster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_emp_strong, 1), new AStack[] {new ComparableStack(ModBlocks.emp_bomb, 3), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_burst, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_inferno, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_rain, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_drill, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_nuclear, 1), new AStack[] {new ComparableStack(ModItems.warhead_nuclear, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },500); - //makeRecipe(new ComparableStack(ModItems.missile_nuclear_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_mirv, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); - //makeRecipe(new ComparableStack(ModItems.missile_volcano, 1), new AStack[] {new ComparableStack(ModItems.warhead_volcano, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); - //makeRecipe(new ComparableStack(ModItems.missile_endo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_endo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_exo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_exo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); makeRecipe(new ComparableStack(ModItems.gun_defabricator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(IRON.plate(), 5), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(Items.diamond, 1), new ComparableStack(ModItems.plate_dalekanium, 3), },200); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo, 24), new AStack[] {new OreDictStack(STEEL.plate(), 2), new OreDictStack(REDSTONE.dust(), 1), new ComparableStack(Items.glowstone_dust, 1), },50); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo2, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(REDSTONE.dust(), 7), new ComparableStack(ModItems.powder_power, 3), },200); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 6f74b43d8..539beed9e 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1294,6 +1294,7 @@ public class ModItems { public static Item missile_incendiary; public static Item missile_cluster; public static Item missile_buster; + public static Item missile_decoy; public static Item missile_strong; public static Item missile_incendiary_strong; public static Item missile_cluster_strong; @@ -3909,6 +3910,7 @@ public class ModItems { missile_incendiary = new Item().setUnlocalizedName("missile_incendiary").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_incendiary"); missile_cluster = new Item().setUnlocalizedName("missile_cluster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_cluster"); missile_buster = new Item().setUnlocalizedName("missile_buster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_buster"); + missile_decoy = new Item().setUnlocalizedName("missile_decoy").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_decoy"); missile_strong = new Item().setUnlocalizedName("missile_strong").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_strong"); missile_incendiary_strong = new Item().setUnlocalizedName("missile_incendiary_strong").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_incendiary_strong"); missile_cluster_strong = new Item().setUnlocalizedName("missile_cluster_strong").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_cluster_strong"); @@ -6810,6 +6812,7 @@ public class ModItems { //Missiles GameRegistry.registerItem(missile_generic, missile_generic.getUnlocalizedName()); GameRegistry.registerItem(missile_anti_ballistic, missile_anti_ballistic.getUnlocalizedName()); + GameRegistry.registerItem(missile_decoy, missile_decoy.getUnlocalizedName()); GameRegistry.registerItem(missile_incendiary, missile_incendiary.getUnlocalizedName()); GameRegistry.registerItem(missile_cluster, missile_cluster.getUnlocalizedName()); GameRegistry.registerItem(missile_buster, missile_buster.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index b970e1474..2a8e88ddb 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -664,6 +664,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityTestMissile.class, new RenderTestMissile()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileDecoy.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCluster.class, new RenderMissileGeneric()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 10f658ff5..9816aee87 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1185,6 +1185,7 @@ public class ResourceManager { public static final ResourceLocation missileV2_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_inc.png"); public static final ResourceLocation missileV2_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_cl.png"); public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_bu.png"); + public static final ResourceLocation missileV2_decoy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_decoy.png"); public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_abm.png"); public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong.png"); public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_emp.png"); diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java index 64051609e..1dff79e27 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java @@ -23,21 +23,24 @@ public class RenderMissileGeneric extends Render { GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F); - if(entity instanceof EntityMissileGeneric) - bindTexture(ResourceManager.missileV2_HE_tex); - if(entity instanceof EntityMissileIncendiary) - bindTexture(ResourceManager.missileV2_IN_tex); - if(entity instanceof EntityMissileCluster) - bindTexture(ResourceManager.missileV2_CL_tex); - if(entity instanceof EntityMissileBunkerBuster) - bindTexture(ResourceManager.missileV2_BU_tex); - if(entity instanceof EntityMissileAntiBallistic) { bindTexture(ResourceManager.missileAA_tex); GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileABM.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } else { + + if(entity instanceof EntityMissileGeneric) + bindTexture(ResourceManager.missileV2_HE_tex); + if(entity instanceof EntityMissileIncendiary) + bindTexture(ResourceManager.missileV2_IN_tex); + if(entity instanceof EntityMissileCluster) + bindTexture(ResourceManager.missileV2_CL_tex); + if(entity instanceof EntityMissileBunkerBuster) + bindTexture(ResourceManager.missileV2_BU_tex); + if(entity instanceof EntityMissileDecoy) + bindTexture(ResourceManager.missileV2_decoy_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index b7159a7bb..8b6e245aa 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -38,6 +38,13 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { ResourceManager.missileV2.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } + if(toRender.getItem() == ModItems.missile_decoy) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_decoy_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } if(toRender.getItem() == ModItems.missile_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); bindTexture(ResourceManager.missileStrong_HE_tex); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index eec19fae0..676409778 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -65,6 +65,7 @@ public class TileEntityLaunchPad extends TileEntityMachineBase implements IEnerg missiles.put(new ComparableStack(ModItems.missile_emp), EntityMissileEMP.class); //Tier 1 missiles.put(new ComparableStack(ModItems.missile_generic), EntityMissileGeneric.class); + missiles.put(new ComparableStack(ModItems.missile_decoy), EntityMissileDecoy.class); missiles.put(new ComparableStack(ModItems.missile_incendiary), EntityMissileIncendiary.class); missiles.put(new ComparableStack(ModItems.missile_cluster), EntityMissileCluster.class); missiles.put(new ComparableStack(ModItems.missile_buster), EntityMissileBunkerBuster.class); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 27b8e8d17..9cd2d7a8f 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2292,6 +2292,7 @@ item.missile_carrier.name=HTR-01 Trägerrakete item.missile_cluster.name=Streurakete item.missile_cluster_strong.name=Starke Streurakete item.missile_custom.name=Spezialgefertigte Rakete +item.missile_decoy.name=Köderflugkörper item.missile_doomsday.name=Doomsday Rakete item.missile_drill.name=Der Betonbrecher item.missile_emp.name=EMP-Rakete diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f6aad2998..101515558 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3029,6 +3029,7 @@ item.missile_carrier.name=HTR-01 Carrier Rocket item.missile_cluster.name=Cluster Missile item.missile_cluster_strong.name=Strong Cluster Missile item.missile_custom.name=Custom Missile +item.missile_decoy.name=Decoy Missile item.missile_doomsday.name=Doomsday Missile item.missile_drill.name=The Concrete Cracker item.missile_emp.name=EMP Missile diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_large.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_large.png index 1a6b4cb1b030ef808573c800921c2c4b076ae720..afa1cbaf0b1338e2703df324054b22f91b141419 100644 GIT binary patch delta 234 zcmV+aYkH*x6X?io52 zdI48?WGYAy3^Alrr6EsH@sPRi kyP9}=yrWf4{!GdG0?wV4;vO%iegFUf07*qoM6N<$f=1+Mpa1{> delta 225 zcmV<703QFA0*wNYG=IcNL_t(Ijir-43d1lAgELnP#3?6!yPKBN$ zb0BhT)g)6(jb%vi123}t@$_S$P^a8Q-}fss<9mi-5Oc*~*LADb8g*U6dk+8@#}USu zB)^gXT5B*fi0J1)DJ41;0RYf64ZQdGFGJEf2iU7afam?P7Fq!o4hcjA5K$7d*1~bX z!Xb)hr!dcR)IglT|MM bOvTy&NotlfaO4y~00000NkvXXu0mjfs;pp0 diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_large_alt.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_large_alt.png deleted file mode 100644 index 198a444303934539787a00b8e1a685db8de72dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf-8&u1Tv>^PcC5`BeK6c3sQdd=K= zZRaDK@FYRSr7Q-~*|$aCZxmwgF$@S@q%xh2;T@mDIZ5O0jE#*Q58lm?TqPydA}yn~ yp7)-AK?uV?(Ym08-}lYcc3HmX$lUZ_64osnoe~VXMT&v0VeoYIb6Mw<&;$UzUq-+H diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_medium.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_medium.png index a7cd568d9e00437189813e6521828d401e8dc9e3..cd1ac2e15f0fba5929d0995c29a4689cb22b41f7 100644 GIT binary patch delta 341 zcmV-b0jmD$0)PXMG=DcqL_t(Ijir+@s=`1NMUNjLg2bs(g`g7LNt*0PE3vb(w6U?b zb_F&TE5@M4|#~DnOUnLmLpx|xaeTO@jH}Inxron7B%cYdu?{}0^%;)o3Z?kUE zwrx6{4nhb3uGcGC>s%?tYPD(@0h7rjcU`w!9F0Z@As7yagnwZOfYv%+uh%7{LR%~r zxs;M30l;)RMF>H!*Fz~qyWM8FT$X!(uTOAY7tixZl7#(!PY?t=9uJ}@!f~9>9Xx|> zw;NJQvMi(3YSsGQ64c4EEaR*KIGs)(VR0Or0lx2ZJRUh54i!_DWdNMdXFSiV%-%W} z3 n`3m97&$QWW*lxE*?@#&%tbB@Mndvx(00000NkvXXu0mjfy0)7q delta 319 zcmV-F0l@x%1L^{hG=CvUL_t(Ijir+@j)O1|MPF76i6Da0(5K}rX}An+N(#E%AZ6;* z6bMn$7=dLBQnqpw3!{yc-`Vr$Y5X;YFSXk$WLfr{=b3q)S(b&%<>K_NF0(9qdY*^p zdHB8$fYzF}ZCRFuq9}Hofb;qMjN|y#c)ebUs(-2|%ktIt^9~4t04XKo zIHI*CO;dyr+-^78wxzCX4u^v^u>~-YFbt7WB7`7G5|mOjO|xnS_;m$iKqka#nw-tf z30&Im_nS2f(D(hnuyGu>0Z|mu_dP-g%QQ_B0K+g4hM`qkWe`OXzVFj@-D`=Aj>n^Q zb^_i(Cd7|3kT_C0P38#zN~vu?p65HWNbfQeD5b0|gbzQ{LM&OXx9FLy~TU~$q~z#OG$uchF?X(;>PfS7W$eVy_7+4H_#&U()B zf67VTHCxpkLPHsP9?!6;J}>FY(y%P^&kLW%dkoiZU6$V4mbhSD_O5li9TZi(7OeWg za(dH+@3st|ZI;IgFxN1J9)Edw1s1g~ae58(7=x#)pUXO@geCwU+HZpZ diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png index d2ac3f1dc23f5c12e3394d6df8f0d8dc2b3e41f9..d8c0c47d7474161083024bf2967eecd3e8517b7d 100644 GIT binary patch delta 262 zcmV+h0r~!<0-G=J$yL_t(Ijm?ljYK1TqMNgaJ{0A}=ge*W1*W)A;H{cdrgA*ri zz!kUy$<##%PjDzmI_jsbDgO@&?S)Kk?t95S@Yj0z>7s4hux%S6f`~AVV>J5~Gn=Lf zT5Gh{SZe{;_dQJ0bXoHH-Ehu@+wBH`F$QA{07X$ymSuRjz<*lHwrv2c>&m*WhzQ<$ z(lmXpg0&VA;WL9Q%Mg)EHVUTex?qgCzy7hP@B7CL0ES_>c;5S1^!fwmTv(QcBuO}q zgY!J^M=8ZT&tGPu5MxqGMIlBjR8@8H@;ra80{jBRx~?z5*zo_*JN~70H8(%3-2eap M07*qoM6N<$f`>bNRsaA1 delta 248 zcmVDfkZ~$&VLqWkw zsA#zcHKkX`zasizM@bPW8EKmF>}qxle~q`V9-5}{BErdG7^2>&Sl6{T#$2>*+Ze|& z@W0;$YpqvG0id-;YYjl2=R6({fA@df1!D{%f>H|S8~`H1zH#rQX&R&r7Q8NbWtL@# zNZ^fj(6+7DTH~C%Eb06H`wjr+c@DH?Sz^{Ofwk7J><nIF3&iMZq*pmzf~J{rgTN yNfIqFdO}rIfmW8~&rX0}D6#9hz!)3;A9w<`tZ*UeDU3)9e>HEig2+V4lxG^Z#?1V$?qdbA9+J m_eW&kKcBG27HZk~FL_s_h46{l{xAjllEKr}&t;ucLK6Vx^KPyH diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_arsenic.png b/src/main/resources/assets/hbm/textures/items/fuelcell_arsenic.png deleted file mode 100644 index 4a2c066f02c00f6a8ed9db144d9a915a26c9b66c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfwYD6b;ZJh{H#}vRm{`V3JW$Id{)zR?cO5sjI6ASju{y{x>^1uG%H-) z8+GwgBlq;;^M5Vu|9rUab$JVC(*ns;Jw9oZRC+rSZkxFVKKO0N5Ga!QbK^_nhS$61 zPJeExN2vTin<3vzu+d z9k4`x!=1d_r$2gZxLwO%aph^%Upa%>=NT>L`!#>~$JTvxcTzrs{3>w)|K$$W|LeBC pVwDKDMDd4gmU-!PC{xWt~$(69A(Uc(nik diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_base.png b/src/main/resources/assets/hbm/textures/items/fuelcell_base.png deleted file mode 100644 index b74dc7b3503228f0b23140ff25d6e66dcc53d65c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfQ006mPK{GzUq-N+;65i7_?0H zG5Y!YdAgb8kIYr8iXx}&44>!fp>z6DCr6;j#cjHovzP)zTA#vLSa+y}k?G70N~>v!C^+3-N~dF4B&@__557ygTyw|w(DUw_TG9q0)LPgg&ebxsLQ E05VEwtpET3 diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_euphemium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_euphemium.png deleted file mode 100644 index 0acd3351ef16512611b487a6801d49ec6563ede7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfCb@h* z@7vE9bKUm(s#Q)d9+yMBKNm#@cs;b>^U`!-x&Qrqx$otSOj8Dj>!lIXT6%my5a&i0=>)N>FVdQ&MBb@0ASa7i2wiq diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_neptunium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_neptunium.png deleted file mode 100644 index b4edaede1c263e9bb991f8061151b5648798bbf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf39e`y(w-eDa#TfW$2#xJCPxZ+9HynZ)#d)?5nwrZclB#2 zLB;dMi_bp08sPP?QqD`$rA4Fb-R5n%z1!Fr9I|^KTl75s@g>J7tm4W}%ggn8TY+sHsCp|R3j$P_V9LEcZ0tv_l>IP2iyMFZJ*B?;cw}C j`D7V;XlUeT`gTe~DWM4fbv<+% diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_plutonium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_plutonium.png deleted file mode 100644 index f05ccd94d0f21d3dd4a7889c1f3f12e929442ca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfBs1U(~ubFZpqUCX?dHb!v*fb~(nM zzkjsn`Lp%ZraO~VZuZ%z-`=3nn+a diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_selenium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_selenium.png deleted file mode 100644 index 237092dbb8fc68ad914085f3b3621216fb6ecea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmV+>0oneEP)irAz`QY1TY8{%%#Sceo5f{^C(o0Q@T+=ke= zh@?oBW)RZkK`aE(KNIz9sm{z0RY;z#j-5AuDe?% zX-~M-dN*UcpFgq;16Ds%0Gg)ZcN6>{aHrGp4L}%PcEiWL1n@lXNvvlHUeq8US{yEi s(~;#e90V9gIgaDrGzUdd82umV49xvhkF;_F7ytkO07*qoM6N<$f^8>v3IG5A diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_u235.png b/src/main/resources/assets/hbm/textures/items/fuelcell_u235.png deleted file mode 100644 index 86ba25294dec816f97b15324b00aa1d54a4a4b73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfVpX6-&2k)v!t&=Y9~CxMj8-i-f-=&*5Vw?2*$X c|JuJ~QVk0|$kb#t8|XC#Pgg&ebxsLQ05{`ufB*mh diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_u238m2.png b/src/main/resources/assets/hbm/textures/items/fuelcell_u238m2.png deleted file mode 100644 index 9ce019f885d3c09e61d81eefc96f5b7f1774a577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmV+=0owkFP)z@V z<5=^LO~nA7O^0@s`*{Q*^143z|`st5>@`!R?*4B`|) zFYZ!tKj5;s3-XehhM<-!;s&wzk;2hy31fCL*?IPzcL)9>+(5()ME=ryP$r{3P(YHI zQDb3cYvX&^T8KV@4r=!=Xptb?smJmpLiPh zEj%0!89WFA07j!xMw1yl&r8z6$z;N6wZe7Xj8WPoW8k`O;(s^}e(A*Cdr&%fe_ zVTkYhD5bOt+E!bwR$`haQ52z+LQ07cf;f&*O0nDRejxu$@B2s_ESJk4xnFl{&fuD_ ReVPCO002ovPDHLkV1le>%;*3B delta 419 zcmV;U0bKsk1I+`FG=GFiL_t(Ijirz=OCwPfg};%!Owa^&jfGp-`v)u*taJq{E34QH z;uK*a5rzbRf~*A8W(#Ez*WtZeLJy`-{QODmNH&1~L#foqct?{8|{rAYP;q>;n|kaOC3CjiuIk@T%)UM=&&U+mzWrd?X+hrxa=l4GaM z%qZaG^deA7QK_zF-pZE+TIYuWfE~1)s!r!d8c8ho_kZMTbw{qRf5_F{$hROGsbAPwyIucVgpxZ%H1BV-Tp1* z@+WV*F+H^YkJde`H9S8*QmHhvT+RiQN*{TB{f99<^7(?dsoQItftxP*%b8|PC3UEO#U>tRId*bZ7^ad&3$hqGyZ{`31 N002ovPDHLkV1lEO%9H>A diff --git a/src/main/resources/assets/hbm/textures/items/thruster_large_alt.png b/src/main/resources/assets/hbm/textures/items/thruster_large_alt.png deleted file mode 100644 index ee64287d35a35539afcad69ca9fee68497426ca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb|X&(p;* z#KM2+gp0g~6?j;Ug_JjN`W!GgbFeQ@_N7X4j%ujAA7}rb<{v^6_j5RBtUW35__x%1 zZTAJLGm1||y`I+azb-l;XhJ}UpwVqhmWC5z2g}SDBLc%(lpBJ&u0$>UUT6Q;u4Uo8 zH>~z|8zdDv+t}S5Zt@#W&f#u-Sm|kYA~&(SLqs=iy9cY-seY!`;Jpv7>PHA@1_~bf dU|Uqn@ciV#=_%iNQh_dI@O1TaS?83{1ORKNW1s*4 diff --git a/src/main/resources/assets/hbm/textures/items/thruster_medium.png b/src/main/resources/assets/hbm/textures/items/thruster_medium.png index c880ffed8c9b748215619a23d2a18432a8e3c3b3..3437a340ac0f42e69742bfd21299b6fccedb6177 100644 GIT binary patch delta 387 zcmV-}0et?C1Fi#*G=F7DL_t(IjkS@n>f%5Uhd<*XY_p~=enB;j_u(d+dPLU6y|zXOy~RtSL*g5hw8F^0?Kf|Qatj>)nN zz!pz00iq~kzu%LlDX#01Wm%r<^}6)VkAUa%Svww&HceCN^*TwCn0pjt#%I~gE@j87m>edcgNRmV?q6p7Hfazp{ zhrs}4S>kQE+*_u0iBH4fUajpX_6kXoD9f^7+ct`#01;skMY!$vQI;iwAo!hvdhGhv zDv0A)^?JR=bX_9CX0rhiK}v}%%P<~~t9P9`pxf;t&vOtFEX!(4TCdlTQo?Z@y#fG8 z(^T2Ejn!(^m~5IRq?GV|-#7@UgX$Js*VXp^DZT-=4X1XfA2V_Q0000!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb~N=jq}Y zV&T8G{~+%H1s-O}PQe>3yb^7eHw<&Nb{csGth{yH^TCO}$u3WX7jhJx3-Yp@|1pNs z^+U8n_S-|}MAZ+3WbbXL>=A79kvC;F{eCb1aTr4~v(n~AED8P_iUqoE^s%k})g>&F z^PKHA_mp2U$UZu_BPNFD2he2< Mp00i_>zopr0Aj*iXaE2J diff --git a/src/main/resources/assets/hbm/textures/items/thruster_small.png b/src/main/resources/assets/hbm/textures/items/thruster_small.png index f1881cd3c56a1a151d64d269527402b46dd95750..192d0bd6e2a21be75fe7b378ba9ef26393e96b2b 100644 GIT binary patch delta 428 zcmV;d0aO0Q0@VYMGk*b$NklfcgjW6S9SwI;1Iu5Ie+HYQNV7EI%H!19!XUopbIz?>%^C z%{+DBd7jMo^?LnLt_I!i2iJ8Kqr8b?;JU7K z9EX2x(Cv0A1J0xZiS2m%d%hyfV+rqO6*&W__?Sr!0c7-pRObS=Vt9qq5m z(eCGLY8ZyRiBH)7*4Ox21c0rb6@Hu@^0HV!2uUncHeT0&zQ)xYzkjl2v0Pw%+on{R zWitB1WR!4m_J5OTEZF-xP&C>G)y*2Eib>GFWITXqoDz)%^GgdDW&#WpzH*7DA8cvP z8JKeh%dc##wPngHRpzUUBvU~$6?}QSsQgf6gPWnG{OdRAq(G^%b|;b~Q^A#gO>~E)B$XVqV| WySOg2C`^?A0000u)7CgiRE{I6m;s(o#&ZrD*vL70{nyOd7y5L_+Ydr@+FrVeTofR8n0Qk7w4k5b$ zt@ZqVy`q!?KuLKB*##J5P*N`O`u-@f_c%=xUyifHpZ7auS$|$$b`V7obzP&i#&unU z5X5o(`Un78Yv5;`Gd%&)G@YfCD5WsQ5QZU5(;T`ubg(897p8C>V{#!T8p#V&XWUxEX!u46m8pXItwAN)>0J3!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb~N>gnPb zV&T7Z!fD7-VouD%_!7i8oeS@mC*~v3?imm}(hU%|+MCQ)fy!D#Z zZUN0*k_(P%r3fXg*;=-vl}l2NZ?@pJ*+w=DJrAz3JaF@gm?^8d>h*Qr0?CB`U*(T5 z@L94Il(wZGnV_i<_nd9j(ThA`ip~f4<|#1mOMJ<=&hIGCoznO3fevEuboFyt=akR{ E0D9I}egFUf diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2_decoy.png b/src/main/resources/assets/hbm/textures/models/missile_v2_decoy.png new file mode 100644 index 0000000000000000000000000000000000000000..191b0c97f723e20d641ef0b9d49aed312a565f42 GIT binary patch literal 915 zcmeAS@N?(olHy`uVBq!ia0vp^wm_W0!3HFq6o0G*QY^(zo*^7SP{WbZ!N9=m<>}%W zQZeW4?2UPk90c0xm1ix!ajI2&iSu$Bw^thc4z*r$*-tWmU|3n%ApF(V{fK9XUd+w{ zulR}4d68w)BsZv*?U~<_(qnwG{rKkBk?c3V*qYVyGkE63AAEC5-e;zct>~sNAtx>c zC+_?AaqC9b36H*+`h4OhPBOZrH+jOh_0?Z5Ep%EQ zHEY$IRZBImcpX2MKlRddHJw*WERDC^{HFZJQS0~m#I*MjH9y|32xE_i|Fg)e`5$$^E@s+%Mu*tz$7Sc_W^(n(-fu15 z*1hhv%gfsH>9c0vdvz@H+=XR+vx>J}^(+ohpL=<>!(0>g(o2?mIj>+9sMXxN-QRVg zpVhQ`x0f$s5ZTtPvBqG*hFFm-o?V9+0^WSDp7`a}_414ITkHQRTg6G;SDkWepFx4^ z{py@f$H)8UaWkJgTpY7%m5{7`S&fjB#EM2#f zGp4IAf0o;Qi?fMxwU(|{ZHnEi`A&7Os>}M9A{H`y5jtW|WT*OHFa1~_=wMlAh_7GLj$A{dy(^W3 zcPmaXDElMf_%fnV^3iO0>wW$A|Ad(OwR4nKU(OeIU2yC6$?e??6P(2~=T>p=ShZ?F zNsgfM&$RmQpDNXAGq0xA<=5t9*2teTx|$;PA!btif$I7{^Y6t>e{wu?w&J8)Q}&oB z2(wM`*j=Ee3rr}BTdgwrUM(rE5?(R+*#bYS<>rm}1%3rp>5FmK@*g>N>2{g#RnOoZ zs})`?aenz$|M!Z?-!5Bk*|9t;a{0Q~lf}2T%>J|K+->KI(2}iD6Z<1o_lI;}Zz@@! b^)r6=bhh(ci_RYh<}wCPS3j3^P6 Date: Tue, 5 Dec 2023 22:13:12 +0100 Subject: [PATCH 157/207] that --- .../machine/MachineExposureChamber.java | 44 ++++++++++++++++++ .../java/com/hbm/crafting/RodRecipes.java | 4 +- .../inventory/recipes/CentrifugeRecipes.java | 8 ++-- .../TileEntityMachineExposureChamber.java | 45 ++++++++++++++++--- 4 files changed, 90 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java b/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java index dbdb57627..8efe19ae1 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java +++ b/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java @@ -1,12 +1,15 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class MachineExposureChamber extends BlockDummyable { @@ -17,6 +20,7 @@ public class MachineExposureChamber extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntityMachineExposureChamber(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power(); return null; } @@ -29,6 +33,46 @@ public class MachineExposureChamber extends BlockDummyable { public int getOffset() { return 2; } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP).getOpposite(); + + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, 0, 0, 0, -3, 8}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y + 2, z, new int[] {0, 0, 1, -1, -3, 6}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y + 2, z, new int[] {0, 0, -1, 1, -3, 6}, this, dir); + MultiblockHandlerXR.fillSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, 1, -1, 0, 1}, this, dir); + MultiblockHandlerXR.fillSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, -1, 1, 0, 1}, this, dir); + + this.makeExtra(world, x + rot.offsetX * 7 + dir.offsetX, y, z + rot.offsetZ * 7 + dir.offsetZ); + this.makeExtra(world, x + rot.offsetX * 7 - dir.offsetX, y, z + rot.offsetZ * 7 - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX * 8 + dir.offsetX, y, z + rot.offsetZ * 8 + dir.offsetZ); + this.makeExtra(world, x + rot.offsetX * 8 - dir.offsetX, y, z + rot.offsetZ * 8 - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX * 8, y, z + rot.offsetZ * 8); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP).getOpposite(); + + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, 0, 0, 0, -3, 8}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {0, 0, 1, -1, -3, 6}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {0, 0, -1, 1, -3, 6}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, 1, -1, 0, 1}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, -1, 1, 0, 1}, x, y, z, dir)) return false; + + return true; + } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index 62cd42f2d..089d08aae 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -152,8 +152,8 @@ public class RodRecipes { CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HEA242), new Object[] { "F", "I", "F", 'F', AM242.billet(), 'I', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HES326), new Object[] { "F", "I", "F", 'F', SA326.billet(), 'I', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.HES327), new Object[] { "F", "I", "F", 'F', SA327.billet(), 'I', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.BFB_AM_MIX), new Object[] { "F", "I", "B", 'F', ModItems.billet_am_mix, 'I', ModItems.plate_polymer, 'B', BI.billet() }); - CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.BFB_PU241), new Object[] { "F", "I", "B", 'F', PU241.billet(), 'I', ModItems.plate_polymer, 'B', BI.billet() }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.BFB_AM_MIX), new Object[] { "NFN", "NIN", "NBN", 'F', ModItems.billet_am_mix, 'I', ModItems.plate_polymer, 'B', BI.billet(), 'N', ModItems.nugget_plutonium_fuel }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.pwr_fuel, EnumPWRFuel.BFB_PU241), new Object[] { "NFN", "NIN", "NBN", 'F', PU241.billet(), 'I', ModItems.plate_polymer, 'B', BI.billet(), 'N', ModItems.nugget_uranium_fuel }); } public static void registerInit() { diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index ae66e0670..5b933fdd3 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -256,13 +256,13 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.nugget_euphemium, 1), new ItemStack(ModItems.nuclear_waste_tiny, 6) }); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.BFB_AM_MIX)), new ItemStack[] { - new ItemStack(ModItems.nugget_am_mix, 4), - new ItemStack(ModItems.nugget_pu_mix, 1), + new ItemStack(ModItems.nugget_am_mix, 9), + new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.nugget_bismuth, 6), new ItemStack(ModItems.nuclear_waste_tiny, 1) }); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.pwr_fuel_depleted, EnumPWRFuel.BFB_PU241)), new ItemStack[] { - new ItemStack(ModItems.nugget_pu241, 4), - new ItemStack(ModItems.nugget_pu_mix, 1), + new ItemStack(ModItems.nugget_pu241, 9), + new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.nugget_bismuth, 6), new ItemStack(ModItems.nuclear_waste_tiny, 1) }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java index 7f11c77ed..c139e15c5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -9,18 +9,22 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.DirPos; +import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineExposureChamber extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityMachineExposureChamber extends TileEntityMachineBase implements IGUIProvider, IEnergyUser { public long power; public static final long maxPower = 1_000_000; @@ -62,6 +66,10 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl this.isOn = false; this.power = Library.chargeTEFromItems(slots, 5, power, maxPower); + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : getConPos()) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + UpgradeManager.eval(slots, 6, 7); int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); @@ -152,6 +160,18 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl } } + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP).getOpposite(); + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 7 + dir.offsetX * 2, yCoord, zCoord + rot.offsetZ * 7 + dir.offsetZ * 2, dir), + new DirPos(xCoord + rot.offsetX * 7 - dir.offsetX * 2, yCoord, zCoord + rot.offsetZ * 7 - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord + rot.offsetX * 8 + dir.offsetX * 2, yCoord, zCoord + rot.offsetZ * 8 + dir.offsetZ * 2, dir), + new DirPos(xCoord + rot.offsetX * 8 - dir.offsetX * 2, yCoord, zCoord + rot.offsetZ * 8 - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord + rot.offsetX * 9, yCoord, zCoord + rot.offsetZ * 9, rot) + }; + } + public ExposureChamberRecipe getRecipe(ItemStack particle, ItemStack ingredient) { return ExposureChamberRecipes.getRecipe(particle, ingredient); } @@ -176,6 +196,21 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl this.savedParticles = buf.readByte(); } + @Override + public long getPower() { + return power; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + AxisAlignedBB bb = null; @Override @@ -183,12 +218,12 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl if(bb == null) { bb = AxisAlignedBB.getBoundingBox( - xCoord - 2, + xCoord - 8, yCoord, - zCoord - 2, - xCoord + 3, + zCoord - 8, + xCoord + 9, yCoord + 5, - zCoord + 3 + zCoord + 9 ); } From 8dc217b5f713f66fd0d0dfd1dfc7d2bd529cd3e5 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 6 Dec 2023 20:08:24 +0100 Subject: [PATCH 158/207] i ate poisoned grilled cheeses and now i am dying --- changelog | 1 + .../hbm/items/machine/ItemMachineUpgrade.java | 25 ++++++++++++++++++ .../hbm/tileentity/IUpgradeInfoProvider.java | 11 ++++++++ .../TileEntityMachineElectricFurnace.java | 26 ++++++++++++++++++- 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java diff --git a/changelog b/changelog index ee9dd2d76..7abe48a6f 100644 --- a/changelog +++ b/changelog @@ -29,6 +29,7 @@ * Added config options to the ground water pumps * Missile parts such as non-custom thrusters and fuselages are now made in the arc welder, recipe ingredients have been adjusted as well * Null grenades now have a slightly larger radius, should no longer wipe playerdata and require UNDEFINED to make +* Added some breedable material to BFB PWR fuel rods, meaning that the recycling recipes now actually yield a net positive instead of being a massive waste of time ## Fixed * Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate diff --git a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java index 1a04a4649..3e165b474 100644 --- a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java +++ b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java @@ -3,8 +3,15 @@ package com.hbm.items.machine; import java.util.List; import com.hbm.items.ModItems; +import com.hbm.tileentity.IUpgradeInfoProvider; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -32,6 +39,24 @@ public class ItemMachineUpgrade extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + GuiScreen open = Minecraft.getMinecraft().currentScreen; + + if(open != null && open instanceof GuiContainer) { + GuiContainer guiContainer = (GuiContainer) open; + Container container = guiContainer.inventorySlots; + if(container.inventorySlots.size() > 0) { + Slot first = container.getSlot(0); + IInventory inv = (IInventory) first.inventory; + if(inv instanceof IUpgradeInfoProvider) { + IUpgradeInfoProvider provider = (IUpgradeInfoProvider) inv; + if(provider.canProvideInfo(this.type, this.tier, bool)) { + provider.provideInfo(this.type, this.tier, list, bool); + return; + } + } + } + } + if(this.type == UpgradeType.SPEED) { list.add(EnumChatFormatting.RED + "Mining Drill:"); list.add("Delay -" + (15 * this.tier) + "% / Consumption +" + (300 * this.tier) + "HE/t"); diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java new file mode 100644 index 000000000..8c8396573 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -0,0 +1,11 @@ +package com.hbm.tileentity; + +import java.util.List; + +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; + +public interface IUpgradeInfoProvider { + + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo); + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo); +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 53e8c3f74..4c546e019 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineElectricFurnace; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerElectricFurnace; @@ -7,7 +10,9 @@ import com.hbm.inventory.gui.GUIMachineElectricFurnace; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -20,10 +25,11 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineElectricFurnace extends TileEntityMachineBase implements ISidedInventory, IEnergyUser, IGUIProvider { +public class TileEntityMachineElectricFurnace extends TileEntityMachineBase implements ISidedInventory, IEnergyUser, IGUIProvider, IUpgradeInfoProvider { // HOLY FUCKING SHIT I SPENT 5 DAYS ON THIS SHITFUCK CLASS FILE // thanks Martin, vaer and Bob for the help @@ -263,4 +269,22 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineElectricFurnace(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(EnumChatFormatting.GREEN.YELLOW + ">>> " + I18nUtil.resolveKey(ModBlocks.machine_electric_furnace_off.getUnlocalizedName() + ".name") + " <<<"); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + "Process time -" + (level * 25) + "%"); + info.add(EnumChatFormatting.RED + "Consumption +" + (level * 100) + "%"); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + "Consumption -" + (level * 30) + "%"); + info.add(EnumChatFormatting.RED + "Process time +" + (level * 10) + "%"); + } + } } \ No newline at end of file From 5c33fa17070dca0b720b3c9a534a35b70d5c043e Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 7 Dec 2023 16:39:20 +0100 Subject: [PATCH 159/207] finished RBMK console, more upgrade stuff --- changelog | 6 ++ .../inventory/gui/GUIMachineArcWelder.java | 5 +- .../inventory/gui/GUIMachineAssembler.java | 7 +- .../com/hbm/inventory/gui/GUIRBMKConsole.java | 99 +++++++++++++++--- .../hbm/inventory/gui/GuiInfoContainer.java | 32 ++++++ .../inventory/recipes/CompressorRecipes.java | 2 + .../hbm/tileentity/IUpgradeInfoProvider.java | 13 +++ .../machine/TileEntityFurnaceIron.java | 27 ++++- .../machine/TileEntityMachineArcWelder.java | 33 +++++- .../machine/TileEntityMachineAssembler.java | 36 ++++++- .../machine/TileEntityMachineChemfac.java | 2 +- .../machine/TileEntityMachineChemplant.java | 2 +- .../machine/TileEntityMachineCompressor.java | 1 + .../TileEntityMachineElectricFurnace.java | 17 ++- .../machine/rbmk/TileEntityRBMKBoiler.java | 20 ++-- .../machine/rbmk/TileEntityRBMKConsole.java | 40 ++++++- src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 17 +-- .../gui/processing/gui_arc_welder.png | Bin 2952 -> 2981 bytes .../gui/reactors/gui_rbmk_console.png | Bin 6569 -> 6651 bytes 20 files changed, 317 insertions(+), 45 deletions(-) diff --git a/changelog b/changelog index 7abe48a6f..b0650e213 100644 --- a/changelog +++ b/changelog @@ -30,6 +30,12 @@ * Missile parts such as non-custom thrusters and fuselages are now made in the arc welder, recipe ingredients have been adjusted as well * Null grenades now have a slightly larger radius, should no longer wipe playerdata and require UNDEFINED to make * Added some breedable material to BFB PWR fuel rods, meaning that the recycling recipes now actually yield a net positive instead of being a massive waste of time +* The RBMK control panel has been upgraded + * Right.clicking the color buttons will now assign the color to the selected control rods + * There's now a new button that allows to cycle through compressor settings on RBMK steam channels + * The flux display is now functional. It will display the flux curve of the last 30 seconds, as well as labels for the total flux level. + * With the color assigning buttons and the flux display finished, the console is now finally complete +* Compressing blood at 4 PU now turns it into crude oil at a ratio of 2:1 ## Fixed * Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java index e37e7cf05..ae993fb9a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java @@ -30,6 +30,8 @@ public class GUIMachineArcWelder extends GuiInfoContainer { welder.tank.renderTankInfo(this, x, y, guiLeft + 35, guiTop + 63, 34, 16); this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, welder.getPower(), welder.getMaxPower()); + + this.drawCustomInfoStat(x, y, guiLeft + 78, guiTop + 67, 8, 8, guiLeft + 78, guiTop + 67, this.getUpgradeInfo(welder)); } @Override @@ -54,7 +56,8 @@ public class GUIMachineArcWelder extends GuiInfoContainer { if(welder.power >= welder.consumption) { drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 52, 9, 12); } - + + this.drawInfoPanel(guiLeft + 78, guiTop + 67, 8, 8, 8); welder.tank.renderTank(guiLeft + 35, guiTop + 79, this.zLevel, 34, 16, 1); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java index 31ebd23ec..795d8882b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java @@ -41,12 +41,7 @@ public class GUIMachineAssembler extends GuiInfoContainer { String[] templateText = I18nUtil.resolveKeyArray("desc.gui.template"); this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 16, 16, 16, guiLeft - 8, guiTop + 16 + 16, templateText); - String[] upgradeText = new String[3]; - upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); - upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); - upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power"); - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 141, guiTop + 40, 8, 8, guiLeft + 225, guiTop + 40 + 16 + 8, upgradeText); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 141, guiTop + 40, 8, 8, guiLeft + 225, guiTop + 40 + 16 + 8, this.getUpgradeInfo(assembler)); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java index 1f8d20881..b07d3a19c 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java @@ -22,6 +22,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; @@ -102,11 +103,12 @@ public class GUIRBMKConsole extends GuiScreen { } } - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 6, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select red group" } ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 17, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select yellow group" } ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select green group" } ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 39, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select blue group" } ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 50, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select purple group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 6, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.RED + "Left click: Select red group", EnumChatFormatting.RED + "Right click: Assign red group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 17, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.YELLOW + "Left click: Select yellow group", EnumChatFormatting.YELLOW + "Right click: Assign yellow group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.GREEN + "Left click: Select green group", EnumChatFormatting.GREEN + "Right click: Assign green group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 39, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.BLUE + "Left click: Select blue group", EnumChatFormatting.BLUE + "Right click: Assign blue group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 50, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ EnumChatFormatting.LIGHT_PURPLE + "Left click: Select purple group", EnumChatFormatting.LIGHT_PURPLE + "Right click: Assign purple group" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 70, guiTop + 82, 12, 12, mouseX, mouseY, new String[]{ "Cycle steam channel compressor setting" } ); } public void drawCustomInfoStat(int mouseX, int mouseY, int x, int y, int width, int height, int tPosX, int tPosY, String[] text) { @@ -116,9 +118,12 @@ public class GUIRBMKConsole extends GuiScreen { } @Override - protected void mouseClicked(int mouseX, int mouseY, int i) { - super.mouseClicked(mouseX, mouseY, i); - this.field.mouseClicked(mouseX, mouseY, i); + protected void mouseClicked(int mouseX, int mouseY, int key) { + super.mouseClicked(mouseX, mouseY, key); + this.field.mouseClicked(mouseX, mouseY, key); + + int LEFT_CLICK = 0; + int RIGTH_CLICK = 1; int bX = 86; int bY = 11; @@ -158,19 +163,54 @@ public class GUIRBMKConsole extends GuiScreen { return; } + //compressor + if(guiLeft + 70 <= mouseX && guiLeft + 70 + 12 > mouseX && guiTop + 82 < mouseY && guiTop + 82 + 12 >= mouseY) { + NBTTagCompound control = new NBTTagCompound(); + control.setBoolean("compressor", true); + List ints = new ArrayList(); + for(int j = 0; j < console.columns.length; j++) { + if(console.columns[j] != null && console.columns[j].type == ColumnType.BOILER && this.selection[j]) { + ints.add(j); + } + } + int[] cols = new int[ints.size()]; + for(int i = 0; i < cols.length; i++) cols[i] = ints.get(i); + control.setIntArray("cols", cols); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(control, console.xCoord, console.yCoord, console.zCoord)); + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1F)); + } + //select color groups for(int k = 0; k < 5; k++) { if(guiLeft + 6 + k * 11 <= mouseX && guiLeft + 6 + k * 11 + 10 > mouseX && guiTop + 70 < mouseY && guiTop + 70 + 10 >= mouseY) { - this.selection = new boolean[15 * 15]; - for(int j = 0; j < console.columns.length; j++) { + if(key == LEFT_CLICK) { + this.selection = new boolean[15 * 15]; - if(console.columns[j] != null && console.columns[j].type == ColumnType.CONTROL && console.columns[j].data.getShort("color") == k) { - this.selection[j] = true; + for(int j = 0; j < console.columns.length; j++) { + + if(console.columns[j] != null && console.columns[j].type == ColumnType.CONTROL && console.columns[j].data.getShort("color") == k) { + this.selection[j] = true; + } } } + if(key == RIGTH_CLICK) { + NBTTagCompound control = new NBTTagCompound(); + control.setByte("assignColor", (byte) k); + List ints = new ArrayList(); + for(int j = 0; j < console.columns.length; j++) { + if(console.columns[j] != null && console.columns[j].type == ColumnType.CONTROL && this.selection[j]) { + ints.add(j); + } + } + int[] cols = new int[ints.size()]; + for(int i = 0; i < cols.length; i++) cols[i] = ints.get(i); + control.setIntArray("cols", cols); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(control, console.xCoord, console.yCoord, console.zCoord)); + } + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.8F + k * 0.1F)); return; } @@ -358,6 +398,41 @@ public class GUIRBMKConsole extends GuiScreen { drawTexturedModalRect(guiLeft + x, guiTop + y, 0, 192, 10, 10); } + int highest = Integer.MIN_VALUE; + int lowest = Integer.MAX_VALUE; + + for(int i : console.fluxBuffer) { + if(i > highest) highest = i; + if(i < lowest) lowest = i; + } + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glLineWidth(2F); + Tessellator tess = Tessellator.instance; + tess.startDrawing(GL11.GL_LINES); + tess.setColorOpaque_I(0x00ff00); + int range = highest - lowest; + for(int i = 0; i < console.fluxBuffer.length - 1; i++) { + for(int j = 0; j < 2; j++) { + int k = i + j; + int flux = console.fluxBuffer[k]; + double x = guiLeft + 7 + k * 74D / console.fluxBuffer.length; + double y = guiTop + 127 - (flux - lowest) * 24D / Math.max(range, 1); + tess.addVertex(x, y, this.zLevel + 10); + } + } + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + + GL11.glPushMatrix(); + double scale = 0.5D; + GL11.glScaled(scale, scale, 1); + this.fontRendererObj.drawString(highest + "", (int) ((guiLeft + 8) / scale), (int) ((guiTop + 98) / scale), 0x00ff00); + this.fontRendererObj.drawString(highest + "", (int) ((guiLeft + 80 - this.fontRendererObj.getStringWidth(highest + "") * scale) / scale), (int) ((guiTop + 98) / scale), 0x00ff00); + this.fontRendererObj.drawString(lowest + "", (int) ((guiLeft + 8) / scale), (int) ((guiTop + 133 - this.fontRendererObj.FONT_HEIGHT * scale) / scale), 0x00ff00); + this.fontRendererObj.drawString(lowest + "", (int) ((guiLeft + 80 - this.fontRendererObj.getStringWidth(lowest + "") * scale) / scale), (int) ((guiTop + 133 - this.fontRendererObj.FONT_HEIGHT * scale) / scale), 0x00ff00); + GL11.glPopMatrix(); + this.field.drawTextBox(); } diff --git a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java index 1ae9a28e9..51bc6d957 100644 --- a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java +++ b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java @@ -1,5 +1,6 @@ package com.hbm.inventory.gui; +import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -7,8 +8,11 @@ import java.util.List; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.RefStrings; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -18,6 +22,7 @@ import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; public abstract class GuiInfoContainer extends GuiContainer { @@ -45,6 +50,33 @@ public abstract class GuiInfoContainer extends GuiContainer { this.func_146283_a(Arrays.asList(text), x, y); } + /** Automatically grabs upgrade info out of the tile entity if it's a IUpgradeInfoProvider and crams the available info into a list for display. Automation, yeah! */ + public List getUpgradeInfo(TileEntity tile) { + List lines = new ArrayList(); + + if(tile instanceof IUpgradeInfoProvider) { + IUpgradeInfoProvider provider = (IUpgradeInfoProvider) tile; + + lines.add(I18nUtil.resolveKey("upgrade.gui.title")); + + for(UpgradeType type : UpgradeType.values()) { + if(provider.canProvideInfo(type, 0, false)) { + int maxLevel = provider.getMaxLevel(type); + switch(type) { + case SPEED: lines.add(I18nUtil.resolveKey("upgrade.gui.speed", maxLevel)); break; + case POWER: lines.add(I18nUtil.resolveKey("upgrade.gui.power", maxLevel)); break; + case EFFECT: lines.add(I18nUtil.resolveKey("upgrade.gui.effectiveness", maxLevel)); break; + case AFTERBURN: lines.add(I18nUtil.resolveKey("upgrade.gui.afterburner", maxLevel)); break; + case OVERDRIVE: lines.add(I18nUtil.resolveKey("upgrade.gui.overdrive", maxLevel)); break; + default: break; + } + } + } + } + + return lines; + } + @Deprecated public void drawCustomInfo(GuiInfoContainer gui, int mouseX, int mouseY, int x, int y, int width, int height, String[] text) { if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) diff --git a/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java b/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java index c1cc077d9..9b5ef555d 100644 --- a/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java @@ -25,6 +25,8 @@ public class CompressorRecipes extends SerializableRecipe { recipes.put(new Pair(Fluids.PETROLEUM, 0), new CompressorRecipe(2_000, new FluidStack(Fluids.PETROLEUM, 2_000, 1), 20)); recipes.put(new Pair(Fluids.PETROLEUM, 1), new CompressorRecipe(2_000, new FluidStack(Fluids.LPG, 1_000, 0), 20)); + + recipes.put(new Pair(Fluids.BLOOD, 3), new CompressorRecipe(1_000, new FluidStack(Fluids.OIL, 500, 0), 100)); } public static class CompressorRecipe { diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java index 8c8396573..00ecd8ab1 100644 --- a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -3,9 +3,22 @@ package com.hbm.tileentity; import java.util.List; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.util.I18nUtil; + +import net.minecraft.block.Block; +import net.minecraft.util.EnumChatFormatting; public interface IUpgradeInfoProvider { + /** If any of the automated display stuff should be applied for this upgrade. A level of 0 is used by the GUI's indicator, as opposed to the item tooltips */ public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo); public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo); + public int getMaxLevel(UpgradeType type); + + public static String getStandardLabel(Block block) { + return EnumChatFormatting.GREEN.YELLOW + ">>> " + I18nUtil.resolveKey(block.getUnlocalizedName() + ".name") + " <<<"; + } + + public static final String KEY_CONSUMPTION = "upgrade.consumption"; + public static final String KEY_SPEED = "upgrade.speed"; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java index aafd90a83..920fd6458 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.UpgradeManager; @@ -8,7 +11,9 @@ import com.hbm.inventory.gui.GUIFurnaceIron; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -19,10 +24,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUIProvider, IUpgradeInfoProvider { public int maxBurnTime; public int burnTime; @@ -234,4 +240,23 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.furnace_iron)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_SPEED, "-" + (level * 50 / 3) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 669e4c71a..a2933ca1d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -1,6 +1,9 @@ package com.hbm.tileentity.machine; +import java.util.List; + import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineArcWelder; import com.hbm.inventory.fluid.Fluids; @@ -14,7 +17,9 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IConditionalInvAccess; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -30,10 +35,11 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider { +public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider, IUpgradeInfoProvider { public long power; public long maxPower = 2_000; @@ -340,4 +346,29 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electric_furnace_off)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_SPEED, "-" + (level * 100 / 6) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 100 / 6) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_SPEED, "+" + (level * 100 / 3) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index 3c0893c5f..cddb1a40f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; @@ -14,6 +15,9 @@ import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IBatteryItem; @@ -25,10 +29,11 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase { +public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase implements IUpgradeInfoProvider { public int recipe = -1; @@ -265,4 +270,33 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineAssembler(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_SPEED, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_SPEED, "+" + (level * 5) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 3f7413677..f838e1082 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -88,7 +88,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { this.speed -= speedLevel * 15; this.consumption += speedLevel * 300; this.speed += powerLevel * 5; - this.consumption -= powerLevel * 30; + this.consumption -= powerLevel * 20; this.speed /= (overLevel + 1); this.consumption *= (overLevel + 1); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index edc19ee83..d78b87c9f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -124,7 +124,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements this.speed -= speedLevel * 25; this.consumption += speedLevel * 300; this.speed += powerLevel * 5; - this.consumption -= powerLevel * 30; + this.consumption -= powerLevel * 20; this.speed /= (overLevel + 1); this.consumption *= (overLevel + 1); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java index 89be677fc..fa99ad805 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java @@ -84,6 +84,7 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement if(rec != null) timeBase = rec.duration; //there is a reason to do this but i'm not telling you + // ^ a few months later i have to wonder what the fuck this guy was on about, and if i ever see him i will punch him in the nuts if(timeBase == this.processTimeBase) this.processTime = speedLevel == 3 ? 10 : speedLevel == 2 ? 20 : speedLevel == 1 ? 60 : timeBase; else this.processTime = timeBase / (speedLevel + 1); this.powerRequirement = this.powerRequirementBase / (powerLevel + 1); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 4c546e019..8757970f5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -277,14 +277,21 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(EnumChatFormatting.GREEN.YELLOW + ">>> " + I18nUtil.resolveKey(ModBlocks.machine_electric_furnace_off.getUnlocalizedName() + ".name") + " <<<"); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electric_furnace_off)); if(type == UpgradeType.SPEED) { - info.add(EnumChatFormatting.GREEN + "Process time -" + (level * 25) + "%"); - info.add(EnumChatFormatting.RED + "Consumption +" + (level * 100) + "%"); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_SPEED, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); } if(type == UpgradeType.POWER) { - info.add(EnumChatFormatting.GREEN + "Consumption -" + (level * 30) + "%"); - info.add(EnumChatFormatting.RED + "Process time +" + (level * 10) + "%"); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_SPEED, "+" + (level * 10) + "%")); } } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 44baadde9..9c96a4893 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -263,17 +263,21 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I public void receiveControl(NBTTagCompound data) { if(data.hasKey("compression")) { - - FluidType type = steam.getTankType(); - if(type == Fluids.STEAM) { steam.setTankType(Fluids.HOTSTEAM); steam.setFill(steam.getFill() / 10); } - if(type == Fluids.HOTSTEAM) { steam.setTankType(Fluids.SUPERHOTSTEAM); steam.setFill(steam.getFill() / 10); } - if(type == Fluids.SUPERHOTSTEAM) { steam.setTankType(Fluids.ULTRAHOTSTEAM); steam.setFill(steam.getFill() / 10); } - if(type == Fluids.ULTRAHOTSTEAM) { steam.setTankType(Fluids.STEAM); steam.setFill(Math.min(steam.getFill() * 1000, steam.getMaxFill())); } - - this.markDirty(); + this.cyceCompressor(); } } + public void cyceCompressor() { + + FluidType type = steam.getTankType(); + if(type == Fluids.STEAM) { steam.setTankType(Fluids.HOTSTEAM); steam.setFill(steam.getFill() / 10); } + if(type == Fluids.HOTSTEAM) { steam.setTankType(Fluids.SUPERHOTSTEAM); steam.setFill(steam.getFill() / 10); } + if(type == Fluids.SUPERHOTSTEAM) { steam.setTankType(Fluids.ULTRAHOTSTEAM); steam.setFill(steam.getFill() / 10); } + if(type == Fluids.ULTRAHOTSTEAM) { steam.setTankType(Fluids.STEAM); steam.setFill(Math.min(steam.getFill() * 1000, steam.getMaxFill())); } + + this.markDirty(); + } + @Override public void onMelt(int reduce) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index dce56b111..ee5690703 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -12,6 +12,7 @@ import com.hbm.inventory.gui.GUIRBMKConsole; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; +import com.hbm.util.EnumUtil; import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; @@ -33,7 +34,8 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon private int targetY; private int targetZ; - public int[] fluxBuffer = new int[20]; + public static final int fluxDisplayBuffer = 60; + public int[] fluxBuffer = new int[fluxDisplayBuffer]; //made this one-dimensional because it's a lot easier to serialize public RBMKColumn[] columns = new RBMKColumn[15 * 15]; @@ -104,7 +106,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon this.fluxBuffer[i] = this.fluxBuffer[i + 1]; } - this.fluxBuffer[19] = (int) flux; + this.fluxBuffer[this.fluxBuffer.length - 1] = (int) flux; } @SuppressWarnings("incomplete-switch") //shut up @@ -287,6 +289,40 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon Integer[] cols = list.toArray(new Integer[0]); this.screens[slot].columns = cols; } + + if(data.hasKey("assignColor")) { + int color = data.getByte("assignColor"); + int[] cols = data.getIntArray("cols"); + + for(int i : cols) { + int x = i % 15 - 7; + int z = i / 15 - 7; + + TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + z); + + if(te instanceof TileEntityRBMKControlManual) { + TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; + rod.color = EnumUtil.grabEnumSafely(RBMKColor.class, color); + te.markDirty(); + } + } + } + + if(data.hasKey("compressor")) { + int[] cols = data.getIntArray("cols"); + + for(int i : cols) { + int x = i % 15 - 7; + int z = i / 15 - 7; + + TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + z); + + if(te instanceof TileEntityRBMKBoiler) { + TileEntityRBMKBoiler rod = (TileEntityRBMKBoiler) te; + rod.cyceCompressor(); + } + } + } } @Override diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 9cd2d7a8f..8edc158e4 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -4617,6 +4617,9 @@ turret.off=AUS turret.on=AN turret.players=Spieler anzielen: %s +upgrade.consumption=Verbrauch %s +upgrade.speed=Verarbeitungszeit %s + wavelengths.name.ir=Infrarot wavelengths.name.visible=Sichtbares Licht wavelengths.name.uv=Ultraviolett diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 101515558..5d2ef5a8d 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -885,16 +885,11 @@ desc.gui.template=§9Templates§r$Templates can be made by$using the Machine Tem desc.gui.turbinegas.automode=§2Automatic Turbine Throttling Mode§r$By clicking the "AUTO" button, the turbine$will automatically adjust the power production$based on the power required from the network desc.gui.turbinegas.fuels=§6Accepted fuels:§r desc.gui.turbinegas.warning=§cFuel or lubricant level low!§r -desc.gui.upgrade=§lAcceptable Upgrades:§r -desc.gui.upgrade.afterburner= * §dAfterburner§r: Stacks to level 3 -desc.gui.upgrade.effectiveness= * §aEffectiveness§r: Stacks to level 3 -desc.gui.upgrade.overdrive= * §7Overdrive§r: Stacks to level 3 -desc.gui.upgrade.power= * §1Power-Saving§r: Stacks to level 3 -desc.gui.upgrade.speed= * §4Speed§r: Stacks to level 3 desc.gui.zirnox.coolant=§3Coolant§r$CO2 transfers heat from the core to the water.$This will boil it into super dense steam.$The efficiency of cooling and steam production$is based on pressure. desc.gui.zirnox.pressure=§6Pressure§r$Pressure can be reduced by venting CO2.$However, too low a pressure, and cooling$efficiency and steam production will be reduced.$Look out for meltdowns! desc.gui.zirnox.warning1=§cError:§r Water is required for$the reactor to function properly! desc.gui.zirnox.warning2=§cError:§r CO2 is required for$the reactor to function properly! + desc.item.ammo.con_accuracy2=- Highly decreased accuracy desc.item.ammo.con_damage=- Highly decreased damage desc.item.ammo.con_heavy_wear=- Highly increased wear @@ -5624,6 +5619,16 @@ turret.off=OFF turret.on=ON turret.players=Target Players: %s +upgrade.consumption=Consumption %s +upgrade.speed=Process time %s + +upgrade.gui.title=§lAcceptable Upgrades:§r +upgrade.gui.afterburner= * §dAfterburner§r: Stacks to level %s +upgrade.gui.effectiveness= * §aEffectiveness§r: Stacks to level %s +upgrade.gui.overdrive= * §7Overdrive§r: Stacks to level %s +upgrade.gui.power= * §9Power-Saving§r: Stacks to level %s +upgrade.gui.speed= * §4Speed§r: Stacks to level %s + wavelengths.name.ir=Infrared wavelengths.name.visible=Visible Light wavelengths.name.uv=Ultraviolet diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_arc_welder.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_arc_welder.png index 14366acc325432628c0d5dd3f694de688a8539d3..82c982cfa2527ba924a7a5ec95b3209ea8d52aef 100644 GIT binary patch literal 2981 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 SwRBim&(7M>>Y;`2um1w3mmDwv literal 2952 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 diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png index 8771329375e75fd9e63ccd3ce38691e5f6f7106f..5222274f917d11bd982ed2decc290c11654942b3 100644 GIT binary patch literal 6651 zcma)BXESl2KQ&>q^ zb7ihogz*iv`cT?!9JS(1FQ2_xEixp2!=yre+q=?7j~u-rqb z@4VIuV}p-I80h;s@BhjQBbEq?R||b4k+3>KW+A10rMmV^t}Z8WesU|yYvZtP{(uky zpYlGM%BM?R^j>#Q^-RKWibFWKU*+yamOtyqk_yKnIYGM1-~@E5W=L;DbTpx!(kAI^ z33O;EsaP#%U~}W5WwaVq{$5(w?f?Eyjin*SNTxUr55O&89C z6%zEEm`CjxP7XE%$8s#r`<78_ten@_xwyE*DrT1f-B;hOo_hESBMbDJYN=bgs6`CIeLAw{G*2BvnbGm8@-T^D?q4Dj56w`v(?b+s{3-zGl0J%-(+a5&#jWt>2sMw&vhse*71gmuU7rc1gGtNi z%S4($70*$cJa~(EoEB|SEzWs)A=SQBus66z857!B5#sL#kGJ$EPn1<&yTQ?+rw`}E zO6yBL@Zynj|AUkXj)wHg#3ECY;PKD3dqR$3nVvsF;G)jFGZ|?i*}hc|UgJH88D1I) zczBZIsd(AhY9-<`_*(dqmbMaZRVE*3^2x5Eobv^gWTITU3j_=TWDgMsSQ=U)!%MpI zxJky9|J>;WAw$+fudQ?reEhIp3RFElsnzP0oupI7MXn<^$%@F#`0Y!#Nl{KFx9kE) zR6LpzP4#DgiVPTu24&Lm;PswsYlTYS0Q!gGz?;oxq!Im2hoYPqJ}r%ka`9i}Lz0SU zh2&A1*YGi2PbQ84U3dgB5=G|zSFo3QcQp^fL~!uL)UTUn3X-h^|CiU^3!ej%pj*co zX~s+MO*6XGjr1ibRaEG3c*&QhWaTr^;r?p)2|faHBtAG*d~m9hap>>p^-wN+>}l&% zh(x=3#=-pycOSFYsnWE2YcnEnVNmLjjx2@yAEzt)v+eq%PnfD;uW`xE2^+Bjy>-^s z5=3bV;bIZs|GztoyR(Da`|G%?D&P9jdlekS6g3HQC}9;W3U7m8LkuLE^ljtnmB!{n ziE?L>o;tC>&?Cp1y3Zy1HWX&l%@QJl&+;dNl+jx-SWKtxP!|P=jU^RB?R(f1_OQ6i zgz0m{@3X3NZ;uAk1LX$-lv?y4bh&+`#jWUjL zvv0*1e|D-4`9Q%h4P77EOHFV0T;-oWxHVB$SanN!Hzfay>1j)6~ul>7MfVoaa69Ac3~#lHC7@>B^w}LxOBq0AmhD zsFXG+%EhvM4~SUel#k&8$*X5Cv!d+|q!!1<(g2wMNaIvCVUqzmq~~{zi}eVy`)#sd_Z3Bw`17h| z-GpXpNzkR%-3f!gJZa`H1AgPBfX{ETRq6AAx&=~nJVfa2s(f@t>wei46>isI)pAzW zbvtR6-fQ7=%Vt~%Yb<}euMU`X7AA9 zTU0ITT?ezgh`2a$vMjY>Wz4zzPx_e_M&Zq|r(zZNRAg)_Av24v^OQcTnmz%k(~hk6 zGFWD76EPZe)2Z}khY3Mp-P?0X=e(D#kluioVF0>jHqrj+kt;LX0BGxP(4R~(fd)t~Jd@)VA$Oph9I;IhbPV@P8Z^!%RKW}k<@j>|l>lDT z>+H_XJs;6D2;|Z~9D)xD5om$*>Ju(fr^i>t%4Xgqo=|TkTA41K*X#`3@vleb={z!e`g(+4PuPGQx^QXAr zq2P`671I`hE?AD^1$UgPU6p-YUz`}%zd0-NJ;zF%^rHS~ZUVB8m!lct z?;ai;q+dOP2>Vq@0_=A(BgRLe=43TQA<#eiYs7`NlDi-=g5+NmD1avYcg->X3?2wl z_pM*WHf(LZ@ysCpU40o>-=g=B;vO9e7OGc_QvB9Quj4gbUW$aBVw$(69H1~@xC(cr zV!C{z@8Pz~talaM|Nb9=et3`2>iEPgy}1Z9k`R>cyoyGR?bQD8Hm)EKjCt|J5g4ap z+o#&2=_G}$l{W>)??=WcDUy@KFen+B1yaw0`)u^NxWb>&%1ie)f+Qj$<|D^j+=BT# zrb$B%;^#?MLNBT*^4+x=jG&JnE5L7tDe=3j^bAzQ&zH)C>eUC{Yi6Mh1;(g?5f|a7 zMG^wrFP~bL0@suQU>W7ZkY>8c0KD!b)4$IQPrInVbk&3sM_HP)16f|eO+WYlO0N2X zj#XBU)yRoe=Vm2jhyr*ViD?tQ++_B_>7Po90}-l_Clg1C-gq>ue)q=2h~wv-W@9jL z_S@yt`_@`&8dbx?y_zMt|2{Cs9 zKA%t#1o4=*MGh09>1Ynk^8Dz`35th6IAk})%PZhqb_x@*@v!~uGR&N zRG#kuXq_F&FY8i}t?z`Z4_I|P3Pcl6UY9GYaM7OJnhEnZApt(|8szSL(;FZ4Svg@8 zuB@eGJ4J-=TtW2SG2nYHWvuz9*%;IB7@YpeigArLZcJe_2wn6!j@t2j?#cWrzpw#! z^F_JkymtmGj!M6kaA^)GsA66>p;)L-(_->n9LsXsmfevIY*>2+pgX&#h=7Ts*m(WX zw;|~j@fZCI4Zh4Abxk?DIeh8qPm5vxV#ht(SxkxB@fxnWeVYE8 zlvK`$6@3~h<6Fdi{wQ!SV0_$kT)Y5l@5lxio*6kZ8@H|OJwr%FzL&rDffm>3W|@#% zDXa|#4$kER249fs3WY>+5RPJb5`+q!!o?8MKtWACyo+T3LXn(i(b3Vv6HFY<{77)j z(jucR)SO>AiUox3u`J4R=qZeO52X#vvz?)%mfl2DVw{Q_`nHiPZyz0OHc?k!O}xSX z;$xe_WlFTAff}(@N69xV>?ZKM<7UNS-BxobU5s<8_i1V6>8T}v$z#pm{I2O+sxtiI z8En&sYI1UNq|}-knCVGZc$1Q%*in{JdAy&TS$g0NlEJlq%U1ipmky7ua*ME7=_>qJiGwyC^Wl6d4*C)u~XwV^8PthqGA$vUM>#F8|a=iVNZlcQN zCNL9vX3}`xxj264MpAUZR!8=wV$Qcag%IFB-wfXJ1kQI`nK1#>3qd4QGabz0rjqFC zx@|JR*J7f^U6h!FqyrlzQ|&s(0m$?X=Y-ZP*gM$UQ#m;~jg(l1muebX3;GMZQ1!Pk zNT_`_F8;~5c1*`<>xbgvVN3W?+nmg<%SXB=q$Qotd$K};*2Bz=dUgmfbeht$d0!Xb zdxoL9&wgEhFqty$aI^1wR~KiBhQ)A!5fdwGi^}ZNHjyOtSb;|+FSZ5-E&=TEYLZn* zPQM`M)o)#2i|kn+cBeR@>JLsVv`-K0r)n-gDz|HRT3AaAR30t76PA<={rspR!KfYw zUTRzvH)y22T{Voh9uD>R;?AT(?@)JS#dFpgc^d?1qZ%F5x%2v=9v zSb=yodKr=;_nig(t7NoMN)ZEbadB_nzHJ=({3slSvpCl?+Z08&BH8>nI99ko^*mAp^K%LM?Igb$kZ2nvj+in9Gw;N( zh2G8d=Ybxa>ged;1DT({W?y%-!1+C0{*A8+*}>#KP3_m`2a^RS6Z?r*5BhF-gJ&!c z2_~I@#zVys!DI~^Dn#8m34;^CAO>veg>rGp`23j?CVQ-HcibDDJPk-!SPB3ICqy^p z5;(}JbYpwU_;=1{f(MCY1ZQORuCK07_&jAd;*OJZb-gW;M6tgkZ?UPQv7$>Hk>R*ztaNn`Ao2)8pAF*uH^*B?DLmOAAEz%3kJ}{|a@tfYd zuMa^Q@l2L>-(hawgmH80Lv#tZDKJ6R8?A3QyxJuHIv#tPI=rRMJ$H$y?33G}8HFAX zmlvdn&j!NLJL`PDVZAH&g!Glkr7NBaSOdRiW)-ic^wa%(1(nn5S4%)M)l9rjw7%XO zi_ZYJmEyt^IMie^*e>T%pMY27@zz{;JlfmaTS+1(ZMg95>L>rGLYW1_#UsIqcL3UV zxu$9K0H=+@Kj61HvuMyGFo$aGWj7uYG-c4V18_Hsr-*fm!|d+eBI(Rjjbn4O;GZ3d zB(@Lu{Eh2*3rfjopYe6uUcU}Jl=&mv0~Zk$4h*rZqFAM37pH%s2x0jfFV#6kW%6(l`oZVtw)Beq-kxr(Dr4i3a#{ag0RZQ2Gpg3p7A9u|>$T@k)4St} zKvLT2?XZxS(2SSi4mD4F=L_nc*Ux^kCHYPr-0s>R6C3t`1CHl{=j!+FT?g3B#$D3( zT4_mBf1u<;M69qIl8+)z9o~1#nwIYeV7tG6GBz<1W?=<5?nT7SZi#HBQTap7uToa9 zLpZKUpzuxY{~EgZfzq?UTWk>kgd;E}yN%ecVohXHRn@ic(Lv7s4`KIe3Y+is8Edq4 z(JdC+;v65~Zsh+}nEowM|IToRpz{B}VF{5j#mXMYza3xbb$v*%#^xhGM_}{cYZcS$ z?sjf&Ob3&$siileCy!Hxg&W8PYcOIUQsJQ4S+idgU;BmEjjCPDaO(U1Sgj2tK&BR= zjdFID9A_4{!z?ZFxU5f*vTv}@$NHjBmohUm>(;gy(9nPwN<$>L@kV=Q?MOBu`v<>~ zuTHQi7Retq4C6R&Y~pq!Grt&L3T6-rE&&i>u<#gpW&!G)I<5Uir5p(&gd;?&K0lwF z_3UhElP)@%#5Rr!4OLiL+Hfr&en5M7%$>~|fqQHL(v%ok$BMZQtmSAj+6X#3r`IC+ zlKtLsJt^kTU-*`3CmycLtM^pY4u+5#wM!U$cMqxTTW`_17Brm*%?sAkm7s-NfzGWmEm&_D!KUkb7WxSjU{ z#COM{KSQ6`*-=Qfw*G*p@WIZ7!s8}KF(*&rdQB&=TAbfD8Up@+ge+NgoL!pjY4rB{j96Y z$_8~Rii!Y0!sXYS93}D1hEP|02V!Or)!I%k09 z-1O$5bzKN^Ppum}d8Zje%2KP*AxqQ`W@DrB3L0Q zDmqsq5Dp;q9nvLea|aJWJIa;I1ELb=OBGuZbs-uk3vyyd#yhaH55mC)EG@T%Qap$m zbp(TLr*~Hs24=*!m7S@EubFz87 zS){E&k74XS51yV9bVNB9$EhqMskvhvBfP0f-yn%oHmSyWdsT*mb=$V)+ERMzGcyUJ zr4QMG^P)SDM4;w;CSYl)oe_GlyE}8ZHMjK_!NX86^oN3g6^M4@oS_4~ZT_~=Cw=D~ zQAk*q{M9tNNxjHZ5wk*S8}-20ur)#=SkXDgPb&&BPb6?@%4AGnMu&_)_^d1XuDKB8 z$JwA)rKhJS;c|9PjzWbIxzn451bKs&Ya*5vV6!5vvptT;XrUo*A_Zb}z0`BeXhP0O zV1NXNjb)Qy%OL3W)DAUJS4tRP)U4D_qoIC&PgAoRPT*cYt;+#S_>4c(|5``1k^D8x zb+N#FHsahzmI1peC2<^TFcEYM-a9AZFWEW6qx8JR<0?eh*CCV=_f}0Z8p9S#QS)jj zT7+aKel!1;;!?}Vh(0!ea$a^K6x?bj^;{Sl6HPFYj2_13+MG2{wwskNVNL3YDjTZW zDj+HgNuJU1MyU>?;&+bpQ_q=In?z(~so7JhLylQ2#=dl{cwuG?zg*!;G4Q^I$Fh~-SZ zj&_qriMQPSM{!-r>drBBO=1vtWOrvLg@=a+LGYGYY`EVyUQhs37Y5Zp*pVn&{&n8i z|4iTg`~=X_HQ6Yejtu{p=yg%t pii(M~yl5b{TI@00c{Q9=186Rwdngd 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 O1<=(r(kNAPi25(&%t8JD From 0d33363eaf8f9b136208cd85b4f62ba095d01b71 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Thu, 7 Dec 2023 19:50:07 -0500 Subject: [PATCH 160/207] an unspeakably large commit Contains the whole fucking glyphid PR. ill tell why later --- .../blocks/generic/BlockGlyphidSpawner.java | 125 +++-- .../java/com/hbm/config/CommonConfig.java | 6 +- src/main/java/com/hbm/config/MobConfig.java | 128 ++++- .../java/com/hbm/config/RadiationConfig.java | 6 + .../java/com/hbm/entity/EntityMappings.java | 5 +- .../com/hbm/entity/effect/EntityMist.java | 124 ++++- .../grenade/EntityDisperserCanister.java | 76 +++ .../com/hbm/entity/logic/EntityWaypoint.java | 139 +++++ .../hbm/entity/mob/EntityCreeperPhosgene.java | 1 + .../com/hbm/entity/mob/EntityGlyphid.java | 476 +++++++++++++++--- .../hbm/entity/mob/EntityGlyphidBehemoth.java | 86 +++- .../hbm/entity/mob/EntityGlyphidBlaster.java | 6 +- .../entity/mob/EntityGlyphidBombardier.java | 19 +- .../hbm/entity/mob/EntityGlyphidBrawler.java | 8 +- .../hbm/entity/mob/EntityGlyphidBrenda.java | 34 +- .../hbm/entity/mob/EntityGlyphidNuclear.java | 88 +++- .../hbm/entity/mob/EntityGlyphidScout.java | 369 ++++++++++---- .../entity/pathfinder/PathFinderUtils.java | 50 ++ .../hbm/entity/projectile/EntityAcidBomb.java | 3 +- .../hbm/entity/projectile/EntityChemical.java | 64 ++- .../standard/BlockAllocatorGlyphidDig.java | 90 ++++ .../handler/pollution/PollutionHandler.java | 52 +- .../hbm/inventory/FluidContainerRegistry.java | 4 +- .../com/hbm/inventory/OreDictManager.java | 12 +- .../com/hbm/inventory/fluid/FluidType.java | 3 + .../java/com/hbm/inventory/fluid/Fluids.java | 22 +- .../inventory/fluid/trait/FT_Pheromone.java | 43 ++ .../hbm/inventory/fluid/trait/FluidTrait.java | 2 + .../fluid/trait/FluidTraitSimple.java | 6 +- .../inventory/recipes/ChemplantRecipes.java | 10 + .../recipes/LiquefactionRecipes.java | 1 + .../hbm/inventory/recipes/MixerRecipes.java | 2 + src/main/java/com/hbm/items/ModItems.java | 21 +- .../com/hbm/items/machine/ItemFluidTank.java | 2 +- .../com/hbm/items/weapon/ItemDisperser.java | 76 +++ src/main/java/com/hbm/lib/HbmWorldGen.java | 19 +- .../java/com/hbm/lib/ModDamageSource.java | 3 +- src/main/java/com/hbm/main/ClientProxy.java | 4 +- .../projectile/RenderGenericGrenade.java | 14 +- .../machine/TileEntityChimneyBrick.java | 4 +- .../machine/TileEntityChimneyIndustrial.java | 3 +- .../com/hbm/world/feature/GlyphidHive.java | 55 +- src/main/resources/assets/hbm/lang/en_US.lang | 36 +- .../hbm/textures/gui/fluids/pheromone.png | Bin 0 -> 423 bytes .../hbm/textures/gui/fluids/pheromone_m.png | Bin 0 -> 423 bytes .../items/chem_icon_MEAT_PROCESSING.png | Bin 0 -> 326 bytes .../hbm/textures/items/disperser_canister.png | Bin 0 -> 376 bytes .../items/disperser_canister_overlay.png | Bin 0 -> 202 bytes .../hbm/textures/items/glyphid_gland.png | Bin 0 -> 339 bytes 49 files changed, 1949 insertions(+), 348 deletions(-) create mode 100644 src/main/java/com/hbm/entity/grenade/EntityDisperserCanister.java create mode 100644 src/main/java/com/hbm/entity/logic/EntityWaypoint.java create mode 100644 src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorGlyphidDig.java create mode 100644 src/main/java/com/hbm/inventory/fluid/trait/FT_Pheromone.java create mode 100644 src/main/java/com/hbm/items/weapon/ItemDisperser.java create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/pheromone.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/pheromone_m.png create mode 100644 src/main/resources/assets/hbm/textures/items/chem_icon_MEAT_PROCESSING.png create mode 100644 src/main/resources/assets/hbm/textures/items/disperser_canister.png create mode 100644 src/main/resources/assets/hbm/textures/items/disperser_canister_overlay.png create mode 100644 src/main/resources/assets/hbm/textures/items/glyphid_gland.png diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java index f02a8efba..f2acc1999 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -1,7 +1,7 @@ package com.hbm.blocks.generic; -import java.util.List; -import java.util.Random; +import java.util.*; +import java.util.function.Function; import com.hbm.config.MobConfig; import com.hbm.entity.mob.EntityGlyphid; @@ -16,9 +16,13 @@ import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.ModItems; + +import com.hbm.util.Tuple.Pair; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.EnumDifficulty; @@ -34,6 +38,18 @@ public class BlockGlyphidSpawner extends BlockContainer { public Item getItemDropped(int meta, Random rand, int fortune) { return ModItems.egg_glyphid; } + private static final ArrayList, int[]>> spawnMap = new ArrayList<>(); + + static{ + //big thanks to martin for the suggestion of using functions + spawnMap.add(new Pair<>(EntityGlyphid::new, MobConfig.glyphidChance)); + spawnMap.add(new Pair<>(EntityGlyphidBombardier::new, MobConfig.bombardierChance)); + spawnMap.add(new Pair<>(EntityGlyphidBrawler::new, MobConfig.brawlerChance)); + spawnMap.add(new Pair<>(EntityGlyphidBlaster::new, MobConfig.blasterChance)); + spawnMap.add(new Pair<>(EntityGlyphidBehemoth::new, MobConfig.behemothChance)); + spawnMap.add(new Pair<>(EntityGlyphidBrenda::new, MobConfig.brendaChance)); + spawnMap.add(new Pair<>(EntityGlyphidNuclear::new, MobConfig.johnsonChance)); + } @Override public int quantityDropped(int meta, int fortune, Random rand) { @@ -46,47 +62,88 @@ public class BlockGlyphidSpawner extends BlockContainer { } public static class TileEntityGlpyhidSpawner extends TileEntity { - + + boolean initialSpawn = true; + @Override public void updateEntity() { - - if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 60 == 0 && this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL) { - - int count = 0; - - for(Object e : worldObj.loadedEntityList) { - if(e instanceof EntityGlyphid) { - count++; - if(count >= MobConfig.spawnMax) return; - } - } + float soot; + + if(!worldObj.isRemote && this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL) { + + if (initialSpawn || worldObj.getTotalWorldTime() % MobConfig.swarmCooldown == 0) { + + if (worldObj.getBlock(xCoord, yCoord + 1, zCoord) != Blocks.air) { + return; + } + int count = 0; + + for (Object e : worldObj.loadedEntityList) { + if (e instanceof EntityGlyphid) { + count++; + if (count >= MobConfig.spawnMax) return; + } + } + + List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 6, yCoord + 1, zCoord - 6, xCoord + 7, yCoord + 9, zCoord + 7)); + soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT); + + if (list.size() <= 3) { + + ArrayList currentSwarm = createSwarm(soot); + + for (EntityGlyphid glyphid : currentSwarm) { + glyphid.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); + worldObj.spawnEntityInWorld(glyphid); + glyphid.moveEntity(worldObj.rand.nextGaussian(), 0, worldObj.rand.nextGaussian()); + } + + if (!initialSpawn && worldObj.rand.nextInt(MobConfig.scoutSwarmSpawnChance + 1) == 0 && soot >= MobConfig.scoutThreshold) { + EntityGlyphidScout scout = new EntityGlyphidScout(worldObj); + scout.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); + worldObj.spawnEntityInWorld(scout); + } + + initialSpawn = false; + + } - float soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT); - List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 6, yCoord + 1, zCoord - 6, xCoord + 7, yCoord + 9, zCoord + 7)); - - if(list.size() < 3) { - EntityGlyphid glyphid = createGlyphid(soot); - glyphid.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); - this.worldObj.spawnEntityInWorld(glyphid); - } - - if(worldObj.rand.nextInt(20) == 0 && soot >= MobConfig.scoutThreshold) { - EntityGlyphidScout scout = new EntityGlyphidScout(worldObj); - scout.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); - this.worldObj.spawnEntityInWorld(scout); } } } - - public EntityGlyphid createGlyphid(float soot) { + + public ArrayList createSwarm(float soot) { + Random rand = new Random(); - if(soot < MobConfig.tier2Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBombardier(worldObj) : new EntityGlyphid(worldObj); - if(soot < MobConfig.tier3Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBombardier(worldObj) : new EntityGlyphidBrawler(worldObj); - if(soot < MobConfig.tier4Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBlaster(worldObj) : new EntityGlyphidBehemoth(worldObj); - if(soot < MobConfig.tier5Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBlaster(worldObj) : new EntityGlyphidBrenda(worldObj); + ArrayList currentSpawns = new ArrayList<>(); - return rand.nextInt(3) == 0 ? new EntityGlyphidBlaster(worldObj) : new EntityGlyphidNuclear(worldObj); + int swarmAmount = (int) Math.min(MobConfig.baseSwarmSize * Math.max(MobConfig.swarmScalingMult * (soot / MobConfig.sootStep), 1), 10); + + while(currentSpawns.size() <= swarmAmount) { + //(dys)functional programing + for (Pair, int[]> glyphid : spawnMap) { + + int[] chance = glyphid.getValue(); + int adjustedChance = (int) (chance[0] + (chance[1] - chance[1] / Math.max(((soot + 1)/3 ), 1))); + if (rand.nextInt(100) <= adjustedChance) { + currentSpawns.add(glyphid.getKey().apply(worldObj)); + } + } + } + return currentSpawns; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("initialSpawn", initialSpawn); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.initialSpawn = nbt.getBoolean("initialSpawn"); } } } diff --git a/src/main/java/com/hbm/config/CommonConfig.java b/src/main/java/com/hbm/config/CommonConfig.java index 7e121b26e..578f98bef 100644 --- a/src/main/java/com/hbm/config/CommonConfig.java +++ b/src/main/java/com/hbm/config/CommonConfig.java @@ -74,7 +74,11 @@ public class CommonConfig { prop.comment = comment; return prop.getString(); } - + public static int[] createConfigIntList(Configuration config, String category, String name, String comment, int[] def){ + Property prop = config.get(category, name, def); + prop.comment = comment; + return prop.getIntList(); + } public static String[] createConfigStringList(Configuration config, String category, String name, String comment) { Property prop = config.get(category, name, new String[] { "PLACEHOLDER" }); prop.comment = comment; diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index 8ce250f40..81724a61b 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -30,14 +30,41 @@ public class MobConfig { public static boolean enableHives = true; public static int hiveSpawn = 256; - public static double scoutThreshold = 0.1; - public static double tier2Threshold = 1; - public static double tier3Threshold = 10; - public static double tier4Threshold = 50; - public static double tier5Threshold = 100; + public static double scoutThreshold = 5; + public static int scoutSwarmSpawnChance = 2; + public static boolean waypointDebug = false; + public static int largeHiveChance = 5; + public static int largeHiveThreshold = 30; + + public static int swarmCooldown = 120; + + public static int baseSwarmSize = 5; + public static double swarmScalingMult = 1.2; + public static int sootStep = 50; + + public static int[] glyphidChance = {50, -40}; + public static int[] brawlerChance = {5, 35}; + public static int[] bombardierChance = {20, -15}; + public static int[] blasterChance = {-15, 40}; + public static int[] behemothChance = {-30, 45}; + public static int[] brendaChance = {-50, 60}; + public static int[] johnsonChance = {-50, 60}; + public static double spawnMax = 50; + public static boolean enableInfestation = true; + public static double baseInfestChance = 5; public static double targetingThreshold = 1; - + + public static boolean rampantMode = false; + public static boolean rampantNaturalScoutSpawn = false; + public static double rampantScoutSpawnThresh = 20; + public static int rampantScoutSpawnChance = 1000; + public static boolean scoutInitialSpawn = false; + public static boolean rampantExtendedTargetting = false; + public static boolean rampantDig = false; + public static boolean rampantGlyphidGuidance = false; + public static double rampantSmokeStackOverride = 0.4; + public static double pollutionMult = 3; public static void loadFromConfig(Configuration config) { @@ -69,12 +96,91 @@ public class MobConfig { enableHives = CommonConfig.createConfigBool(config, CATEGORY, "12.G00_enableHives", "Whether glyphid hives should spawn", true); hiveSpawn = CommonConfig.createConfigInt(config, CATEGORY, "12.G01_hiveSpawn", "The average amount of chunks per hive", 256); - scoutThreshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G02_scoutThreshold", "Minimum amount of soot for scouts to spawn", 0.1); - tier2Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G03_tier2Threshold", "Minimum amount of soot for tier 2 glyphids to spawn", 1); - tier3Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G04_tier3Threshold", "Minimum amount of soot for tier 3 glyphids to spawn", 10); - tier4Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G05_tier4Threshold", "Minimum amount of soot for tier 4 glyphids to spawn", 50); - tier5Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G06_tier5Threshold", "Minimum amount of soot for tier 5 glyphids to spawn", 100); + scoutThreshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G02_scoutThreshold", "Minimum amount of soot for scouts to spawn", 1); spawnMax = CommonConfig.createConfigDouble(config, CATEGORY, "12.G07_spawnMax", "Maximum amount of glyphids being able to exist at once through natural spawning", 50); targetingThreshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G08_targetingThreshold", "Minimum amount of soot required for glyphids' extended targeting range to activate", 1D); + + scoutSwarmSpawnChance = CommonConfig.createConfigInt(config, CATEGORY,"12.G10_scoutSwarmSpawn", "How likely are scouts to spawn in swarms, 1 in x chance format", 2); + + largeHiveChance = CommonConfig.createConfigInt(config, CATEGORY,"12.G11_largeHiveChance", "The chance for a large hive to spawn, formula: 1/x", 5); + largeHiveThreshold = CommonConfig.createConfigInt(config, CATEGORY,"12.G12_largeHiveThreshold", "The soot threshold for a large hive to spawn", 20); + + waypointDebug = CommonConfig.createConfigBool(config, CATEGORY,"12.G13_waypointDebug", "Allows glyphid waypoints to be seen, mainly used for debugging, also useful as an aid against them", false); + + //Infested structures + enableInfestation= CommonConfig.createConfigBool(config, CATEGORY, "12.I01_enableInfestation", "Whether structures infested with glyphids should spawn", true); + baseInfestChance = CommonConfig.createConfigDouble(config, CATEGORY, "12.I02_baseInfestChance", "The chance for infested structures to spawn", 5); + + //Glyphid spawn stuff + config.addCustomCategoryComment(CATEGORY, + "General Glyphid spawn logic configuration\n" + + "\n" + + "The chances work in a simple way:\n" + + "The base chance is the stock chance of the bug to spawn within a swarm, unaffected by soot\n" + + "As soot increases, the spawn rate of the bug increases until it reaches a limit determined by the modifier\n" + + "If the default chance is negative, the mob will not spawn by default, and the lower it is,\n" + + "The longer it takes for the modifier to make it positive\n" + + "If the Modifier is negative, the bug will spawn less often in swarms,\n" + + "And its place will be taken over by another one.\n" + + "\n" + + "The formula for glyphid spawning chance is: (chance + (modifier - modifier / (soot/10)))" + + "The formula for glyphid swarm scaling is: (baseSwarmSize * Math.max(swarmScalingMult * soot/sootStep, 1))"); + + + baseSwarmSize = CommonConfig.createConfigInt(config, CATEGORY, "12.GS01_baseSwarmSize", "The basic, soot-less swarm size", 5); + swarmScalingMult = CommonConfig.createConfigDouble(config, CATEGORY, "12.GS02_swarmScalingMult", "By how much should swarm size scale by per soot amount determined below", 1.2); + sootStep = CommonConfig.createConfigInt(config, CATEGORY, "12.GS03_sootStep", "The soot amount the above multiplier applies to the swarm size", 50); + swarmCooldown = CommonConfig.createConfigInt(config, CATEGORY, "12.GS04_swarmCooldown", "How often do glyphid swarms spawn, in seconds", 120) * 20; + + glyphidChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC01_glyphidChance", "Base Spawn chance and soot modifier for a glyphid grunt", new int[]{50, -45}); + brawlerChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC02_brawlerChance", "Base Spawn chance and soot modifier for a glyphid brawler", new int[]{10, 30}); + bombardierChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC03_bombardierChance", "Base Spawn chance and soot modifier for a glyphid bombardier", new int[]{20, -15}); + blasterChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC04_blasterChance", "Base Spawn chance and soot modifier for a glyphid blaster", new int[]{-5, 40}); + behemothChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC05_behemothChance", "Base Spawn chance and soot modifier for a glyphid behemoth", new int[]{-30, 45}); + brendaChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC06_brendaChance", "Base Spawn chance and soot modifier for a glyphid brenda", new int[]{-50, 60}); + johnsonChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC07_johnsonChance", "Base Spawn chance and soot modifier for Big Man Johnson", new int[]{-50, 60}); + + String rampantDesc = "Rampant Mode changes glyphid behavior and spawning to be more aggressive, changes include:\n" + + "\n" + + "Glyphid Scouts will naturally spawn alongside normal mobs if soot levels are above a certain threshold\n" + + "Glyphids will always have the extended targetting enabled\n" + + "Glyphids can dig to waypoints\n" + + "The Glyphids will expand always toward your base\n" + + "Scouts will spawn from the start, making glyphids start expanding off the bat\n" + + "Smokestacks have reduced efficiency, only reducing soot by 40%\n"; + + config.addCustomCategoryComment(CATEGORY,rampantDesc); + + //TODO: Disable this before release + rampantMode = CommonConfig.createConfigBool(config, CATEGORY, "12.R01_rampantMode", "The main rampant mode toggle, enables all other features associated with it", false); + + config.addCustomCategoryComment(CATEGORY, "The individual features of rampant can be used regardless of whether the main rampant toggle is enabled or not"); + + rampantNaturalScoutSpawn = CommonConfig.createConfigBool(config, CATEGORY,"12.R02_rampantScoutSpawn", "Whether scouts should spawn natually in highly polluted chunks", false); + rampantScoutSpawnChance = CommonConfig.createConfigInt(config, CATEGORY, "12.R02.1_rampantScoutSpawnChance", "How much soot is needed for scouts to naturally spawn", 20); + rampantScoutSpawnThresh = CommonConfig.createConfigDouble(config, CATEGORY, "12.R02.2_rampantScoutSpawnThresh", "How often scouts naturally spawn per mob population, 1/x format, the bigger the number, the more uncommon the scouts", 600); + rampantExtendedTargetting = CommonConfig.createConfigBool(config, CATEGORY,"12.R03_rampantExtendedTargeting", "Whether Glyphids should have the extended targetting always enabled", false); + rampantDig = CommonConfig.createConfigBool(config, CATEGORY,"12.R04_rampantDig", "Whether Glyphids should be able to dig to waypoints", false); + rampantGlyphidGuidance = CommonConfig.createConfigBool(config, CATEGORY,"12.R05_rampantGlyphidGuidance", "Whether Glyphids should always expand toward a player's spawnpoint", false); + rampantSmokeStackOverride = CommonConfig.createConfigDouble(config, CATEGORY, "12.R06_rampantSmokeStackOverride", "How much should the smokestack multiply soot by when on rampant mode", 0.4); + scoutInitialSpawn = CommonConfig.createConfigBool(config, CATEGORY,"12.R07_scoutInitialSpawn", "Whether glyphid scouts should be able to spawn on the first swarm of a hive, causes glyphids to expand significantly faster", false); + pollutionMult = CommonConfig.createConfigDouble(config, CATEGORY, "12.R08_pollutionMult", "A multiplier for soot emitted, whether you want to increase or decrease it", 1); + + if(rampantMode){ + rampantNaturalScoutSpawn = true; + rampantExtendedTargetting = true; + rampantDig = true; + rampantGlyphidGuidance = true; + scoutSwarmSpawnChance = 1; + scoutThreshold = 0.1; + RadiationConfig.pollutionSpreadThreshold = 25; + if(pollutionMult == 1) { + pollutionMult = 2; + RadiationConfig.pollutionSpreadEfficiency = 0.2 / pollutionMult; + } + else RadiationConfig.pollutionSpreadEfficiency = 0.1 / pollutionMult; + RadiationConfig.sootFogThreshold *= pollutionMult; + + } } } diff --git a/src/main/java/com/hbm/config/RadiationConfig.java b/src/main/java/com/hbm/config/RadiationConfig.java index 25be90304..11498ab0b 100644 --- a/src/main/java/com/hbm/config/RadiationConfig.java +++ b/src/main/java/com/hbm/config/RadiationConfig.java @@ -31,6 +31,9 @@ public class RadiationConfig { public static double buffMobThreshold = 15D; public static double sootFogThreshold = 35D; public static double sootFogDivisor = 120D; + public static double smokeStackSootMult = 0.8; + public static int pollutionSpreadThreshold = 15; + public static double pollutionSpreadEfficiency = 0.05D; public static void loadFromConfig(Configuration config) { @@ -68,5 +71,8 @@ public class RadiationConfig { buffMobThreshold = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_05_buffMobThreshold", "The amount of soot required to buff naturally spawning mobs", 15D); sootFogThreshold = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_06_sootFogThreshold", "How much soot is required for smog to become visible", 35D); sootFogDivisor = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_07_sootFogDivisor", "The divisor for smog, higher numbers will require more soot for the same smog density", 120D); + smokeStackSootMult = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_08_smokeStackSootMult", "How much does smokestack multiply soot by, with decimal values reducing the soot", 0.8); + pollutionSpreadThreshold = CommonConfig.createConfigInt(config, CATEGORY_POL, "POL_09_pollutionSpreadThreshold", "The amount of soot required for it to be spread to nearby chunks, causes it to concentrate more", 15); + pollutionSpreadEfficiency = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_10_pollutionSpreadEfficiency", "How much soot will be spread to nearby chunks at once (percentage), values higher than 0.05 may cause infinite feedback loop of soot", 0.05); } } diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 18d585624..1cd6a73d1 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -232,7 +232,10 @@ public class EntityMappings { addEntity(TrainCargoTram.class, "entity_ntm_cargo_tram", 250, false); addEntity(TrainCargoTramTrailer.class, "entity_ntm_cargo_tram_trailer", 250, false); addEntity(TrainTunnelBore.class, "entity_ntm_tunnel_bore", 250, false); - + + addEntity(EntityDisperserCanister.class, "entity_disperser", 250, false); + addEntity(EntityWaypoint.class, "entity_waypoint", 250, false); + addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); addMob(EntityCreeperTainted.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd); addMob(EntityCreeperPhosgene.class, "entity_mob_phosgene_creeper", 0xE3D398, 0xB8A06B); diff --git a/src/main/java/com/hbm/entity/effect/EntityMist.java b/src/main/java/com/hbm/entity/effect/EntityMist.java index ceb2dc014..8537520b2 100644 --- a/src/main/java/com/hbm/entity/effect/EntityMist.java +++ b/src/main/java/com/hbm/entity/effect/EntityMist.java @@ -2,15 +2,13 @@ package com.hbm.entity.effect; import java.util.List; +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.entity.projectile.EntityChemical; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.trait.FT_Corrosive; -import com.hbm.inventory.fluid.trait.FT_Flammable; -import com.hbm.inventory.fluid.trait.FT_Poison; -import com.hbm.inventory.fluid.trait.FT_Toxin; -import com.hbm.inventory.fluid.trait.FT_VentRadiation; +import com.hbm.inventory.fluid.trait.*; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; @@ -25,13 +23,16 @@ import com.hbm.util.ContaminationUtil.HazardType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class EntityMist extends Entity { @@ -40,12 +41,16 @@ public class EntityMist extends Entity { super(world); this.noClip = true; } - + public int maxAge = 150; public EntityMist setArea(float width, float height) { this.dataWatcher.updateObject(11, width); this.dataWatcher.updateObject(12, height); return this; } + public EntityMist setDuration(int duration){ + this.maxAge = duration; + return this; + } @Override protected void entityInit() { @@ -74,7 +79,7 @@ public class EntityMist extends Entity { if(!worldObj.isRemote) { - if(this.ticksExisted > this.getMaxAge()) { + if(this.ticksExisted >= this.getMaxAge()) { this.setDead(); } @@ -128,7 +133,7 @@ public class EntityMist extends Entity { EntityLivingBase living = e instanceof EntityLivingBase ? (EntityLivingBase) e : null; if(type.temperature >= 100) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, new DamageSource(ModDamageSource.s_boil), 5F + (type.temperature - 100) * 0.02F); + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, new DamageSource(ModDamageSource.s_boil), 0.2F + (type.temperature - 100) * 0.02F); if(type.temperature >= 500) { e.setFire(10); //afterburn for 10 seconds @@ -136,7 +141,7 @@ public class EntityMist extends Entity { } if(type.temperature < -20) { if(living != null) { //only living things are affected - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, new DamageSource(ModDamageSource.s_cryolator), 5F + (type.temperature + 20) * -0.05F); //5 damage at -20°C with one extra damage every -20°C + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, new DamageSource(ModDamageSource.s_cryolator), 0.2F + (type.temperature + 20) * -0.05F); //5 damage at -20°C with one extra damage every -20°C living.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 2)); living.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 100, 4)); } @@ -160,11 +165,11 @@ public class EntityMist extends Entity { if(type.hasTrait(FT_Corrosive.class)) { FT_Corrosive trait = type.getTrait(FT_Corrosive.class); - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, new DamageSource(ModDamageSource.s_acid), trait.getRating() / 20F); if(living != null) { + EntityDamageUtil.attackEntityFromIgnoreIFrame(living, ModDamageSource.acid, trait.getRating() / 60F); for(int i = 0; i < 4; i++) { - ArmorUtil.damageSuit(living, i, trait.getRating() / 5); + ArmorUtil.damageSuit(living, i, trait.getRating() / 50); } } } @@ -191,14 +196,39 @@ public class EntityMist extends Entity { trait.affect(living, intensity); } } + + if(type == Fluids.ENDERJUICE && living != null){ + teleportRandomly(living); + } + + if(type.hasTrait(FT_Pheromone.class)){ + + FT_Pheromone pheromone = type.getTrait(FT_Pheromone.class); + + if(living != null) { + living.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 60 * 20, 1)); + living.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 2 * 60 * 20, 1)); + living.addPotionEffect(new PotionEffect(Potion.regeneration.id, 2 * 20, 0)); + + if (living instanceof EntityGlyphid && pheromone.getType() == 1) { + living.addPotionEffect(new PotionEffect(Potion.resistance.id, 60 * 20, 0)); + living.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 60 * 20, 1)); + living.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 60 * 20, 0)); + + } else if (living instanceof EntityPlayer && pheromone.getType() == 2) { + living.addPotionEffect(new PotionEffect(Potion.resistance.id, 2 * 60 * 20, 0)); + living.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 2 * 60 * 20, 1)); + } + } + } } protected boolean isExtinguishing(FluidType type) { - return this.getStyleFromType(type) == SprayStyle.MIST && this.getType().temperature < 50 && !type.hasTrait(FT_Flammable.class); + return this.getType().temperature < 50 && !type.hasTrait(FT_Flammable.class); } public int getMaxAge() { - return getStyleFromType(this.getType()) == SprayStyle.GAS ? 600 : 150; + return maxAge; } @Override @@ -242,10 +272,76 @@ public class EntityMist extends Entity { return SprayStyle.NULL; } - + public static enum SprayStyle { MIST, //liquids that have been sprayed into a mist GAS, //things that were already gaseous NULL } + + //terribly copy-pasted from EntityChemical.class, whose method was terribly copy-pasted from EntityEnderman.class + //the fun never ends + public void teleportRandomly(Entity e) { + double x = this.posX + (this.rand.nextDouble() - 0.5D) * 64.0D; + double y = this.posY + (double) (this.rand.nextInt(64) - 32); + double z = this.posZ + (this.rand.nextDouble() - 0.5D) * 64.0D; + this.teleportTo(e, x, y, z); + } + + public void teleportTo(Entity e, double x, double y, double z) { + + double targetX = e.posX; + double targetY = e.posY; + double targetZ = e.posZ; + e.posX = x; + e.posY = y; + e.posZ = z; + boolean flag = false; + int i = MathHelper.floor_double(e.posX); + int j = MathHelper.floor_double(e.posY); + int k = MathHelper.floor_double(e.posZ); + + if(e.worldObj.blockExists(i, j, k)) { + boolean flag1 = false; + + while(!flag1 && j > 0) { + Block block = e.worldObj.getBlock(i, j - 1, k); + + if(block.getMaterial().blocksMovement()) { + flag1 = true; + } else { + --e.posY; + --j; + } + } + + if(flag1) { + e.setPosition(e.posX, e.posY, e.posZ); + + if(e.worldObj.getCollidingBoundingBoxes(e, e.boundingBox).isEmpty() && !e.worldObj.isAnyLiquid(e.boundingBox)) { + flag = true; + } + } + } + + if(!flag) { + e.setPosition(targetX, targetY, targetZ); + } else { + short short1 = 128; + + for(int l = 0; l < short1; ++l) { + double d6 = (double) l / ((double) short1 - 1.0D); + float f = (this.rand.nextFloat() - 0.5F) * 0.2F; + float f1 = (this.rand.nextFloat() - 0.5F) * 0.2F; + float f2 = (this.rand.nextFloat() - 0.5F) * 0.2F; + double d7 = targetX + (e.posX - targetX) * d6 + (this.rand.nextDouble() - 0.5D) * (double) e.width * 2.0D; + double d8 = targetY + (e.posY - targetY) * d6 + this.rand.nextDouble() * (double) e.height; + double d9 = targetZ + (e.posZ - targetZ) * d6 + (this.rand.nextDouble() - 0.5D) * (double) e.width * 2.0D; + e.worldObj.spawnParticle("portal", d7, d8, d9, (double) f, (double) f1, (double) f2); + } + + e.worldObj.playSoundEffect(targetX, targetY, targetZ, "mob.endermen.portal", 1.0F, 1.0F); + e.playSound("mob.endermen.portal", 1.0F, 1.0F); + } + } } diff --git a/src/main/java/com/hbm/entity/grenade/EntityDisperserCanister.java b/src/main/java/com/hbm/entity/grenade/EntityDisperserCanister.java new file mode 100644 index 000000000..a3ff8f6f8 --- /dev/null +++ b/src/main/java/com/hbm/entity/grenade/EntityDisperserCanister.java @@ -0,0 +1,76 @@ +package com.hbm.entity.grenade; + +import com.hbm.entity.effect.EntityMist; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.weapon.ItemDisperser; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class EntityDisperserCanister extends EntityGrenadeBase { + public EntityDisperserCanister(World p_i1773_1_) { + super(p_i1773_1_); + } + + public EntityDisperserCanister(World p_i1774_1_, EntityLivingBase p_i1774_2_) { + super(p_i1774_1_, p_i1774_2_); + } + public EntityDisperserCanister(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + public EntityDisperserCanister setFluid(int id){ + this.dataWatcher.updateObject(12, id); + return this; + } + @Override + protected void entityInit() { + this.dataWatcher.addObject(12, 0); + this.dataWatcher.addObject(13, 0); + } + public EntityDisperserCanister setType(int id){ + this.dataWatcher.updateObject(13, id); + return this; + } + + public FluidType getFluid() { + return Fluids.fromID(this.dataWatcher.getWatchableObjectInt(12)); + } + public Item getType() { + return Item.getItemById(this.dataWatcher.getWatchableObjectInt(13)); + } + @Override + public void explode() { + if (!worldObj.isRemote) { + EntityMist mist = new EntityMist(worldObj); + mist.setType(getFluid()); + mist.setPosition(posX, posY, posZ); + mist.setArea(10, 5); + mist.setDuration(80); + worldObj.spawnEntityInWorld(mist); + } + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setInteger("fluid", this.dataWatcher.getWatchableObjectInt(12)); + nbt.setInteger("item", this.dataWatcher.getWatchableObjectInt(13)); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.dataWatcher.updateObject(12, nbt.getInteger("fluid")); + this.dataWatcher.updateObject(13, nbt.getInteger("item")); + + } + + +} + + + diff --git a/src/main/java/com/hbm/entity/logic/EntityWaypoint.java b/src/main/java/com/hbm/entity/logic/EntityWaypoint.java new file mode 100644 index 000000000..87ca34199 --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityWaypoint.java @@ -0,0 +1,139 @@ +package com.hbm.entity.logic; + +import com.hbm.config.MobConfig; +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.entity.mob.EntityGlyphidNuclear; +import com.hbm.entity.mob.EntityGlyphidScout; +import com.hbm.main.MainRegistry; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; + +import java.util.List; + + +public class EntityWaypoint extends Entity { + public EntityWaypoint(World world) { + super(world); + this.isImmuneToFire = true; + this.noClip = true; + } + @Override + protected void entityInit() { + this.dataWatcher.addObject(10, 0); + //this.dataWatcher.addObject(11, 0); + + } + public int maxAge = 2400; + public int radius = 3; + public boolean highPriority = false; + protected EntityWaypoint additional; + public void setHighPriority(){ + highPriority = true; + } + public int getWaypointType(){ + return this.dataWatcher.getWatchableObjectInt(10); + } + + public void setAdditionalWaypoint(EntityWaypoint waypoint){ + additional = waypoint; + } + + public void setWaypointType(int waypointType) { + this.dataWatcher.updateObject(10, waypointType); + } + boolean hasSpawned = false; + public int getColor(){ + switch(getWaypointType()){ + + case 1: return 0x5FA6E8; + + case 2: + case 3: + return 0x127766; + + default: return 0x566573; + } + } + AxisAlignedBB bb; + @Override + public void onEntityUpdate() { + if (ticksExisted >= maxAge) { + this.setDead(); + } + + bb = AxisAlignedBB.getBoundingBox( + this.posX - radius, + this.posY - radius, + this.posZ - radius, + this.posX + radius, + this.posY + radius, + this.posZ + radius); + + if (!worldObj.isRemote) { + + if (ticksExisted % 40 == 0) { + + List targets = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); + + for (Entity e : targets) { + if (e instanceof EntityGlyphid) { + + EntityGlyphid bug = ((EntityGlyphid) e); + + if (additional != null && !hasSpawned) { + worldObj.spawnEntityInWorld(additional); + hasSpawned = true; + } + + boolean exceptions = bug.getWaypoint() != this + || e instanceof EntityGlyphidScout + || e instanceof EntityGlyphidNuclear; + + if(!exceptions) + bug.setCurrentTask(getWaypointType(), additional); + + if (getWaypointType() == 2) { + if (e instanceof EntityGlyphidScout) + setDead(); + } else { + setDead(); + } + + } + } + } + } else if(MobConfig.waypointDebug) { + + double x = bb.minX + (rand.nextDouble() - 0.5) * (bb.maxX - bb.minX); + double y = bb.minY + rand.nextDouble() * (bb.maxY - bb.minY); + double z = bb.minZ + (rand.nextDouble() - 0.5) * (bb.maxZ - bb.minZ); + + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 0.5F); + fx.setFloat("base", 0.75F); + fx.setFloat("max", 2F); + fx.setInteger("life", 50 + worldObj.rand.nextInt(10)); + fx.setInteger("color", getColor()); + fx.setDouble("posX", x); + fx.setDouble("posY", y); + fx.setDouble("posZ", z); + MainRegistry.proxy.effectNT(fx); + } + + } + + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + this.setWaypointType(nbt.getInteger("type")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setInteger("type", getWaypointType()); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java b/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java index dc6015870..c3636fa8d 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java @@ -37,6 +37,7 @@ public class EntityCreeperPhosgene extends EntityCreeper { mist.setType(Fluids.PHOSGENE); mist.setPosition(posX, posY, posZ); mist.setArea(10, 5); + mist.setDuration(150); worldObj.spawnEntityInWorld(mist); } } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index 599b66f6a..157e21a89 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -3,29 +3,66 @@ package com.hbm.entity.mob; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Objects; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockGlyphidSpawner; import com.hbm.config.MobConfig; +import com.hbm.entity.logic.EntityWaypoint; import com.hbm.entity.pathfinder.PathFinderUtils; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IExplosionSFX; +import com.hbm.explosion.vanillant.standard.*; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.ResourceManager; +import com.hbm.potion.HbmPotion; +import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; + +import net.minecraft.util.*; + import net.minecraft.potion.Potion; import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; + import net.minecraft.world.World; +import javax.annotation.Nullable; + public class EntityGlyphid extends EntityMob { + //I might have overdone it a little bit + + public boolean hasHome = false; + public int homeX; + public int homeY; + public int homeZ; + protected int currentTask = 0; + + //both of those below are used for digging, so the glyphid remembers what it was doing + protected int previousTask; + protected EntityWaypoint previousWaypoint; + public int taskX; + public int taskY; + public int taskZ; + + //used for digging, bigger glyphids have a longer reach + public int blastSize = Math.min((int) (3 * (getScale()))/2, 5); + public int blastResToDig = Math.min((int) (50 * (getScale() * 2)), 150); + public boolean shouldDig; + + EntityWaypoint taskWaypoint = null; public EntityGlyphid(World world) { super(world); /*this.tasks.addTask(0, new EntityAISwimming(this)); @@ -38,11 +75,11 @@ public class EntityGlyphid extends EntityMob { this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));*/ this.setSize(1.75F, 1F); } - + public ResourceLocation getSkin() { return ResourceManager.glyphid_tex; } - + public double getScale() { return 1.0D; } @@ -61,102 +98,240 @@ public class EntityGlyphid extends EntityMob { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(5D); } - + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + if(!hasHome) { + homeX = (int) posX; + homeY = (int) posY; + homeZ = (int) posZ; + hasHome = true; + } + + if(this.isPotionActive(Potion.blindness)) { + onBlinded(); + } + + if(getCurrentTask() == 4){ + + //incase the waypoint somehow doesn't exist and it got this task anyway + if(isAtDestination() && taskX == 0) { + setCurrentTask(0, null); + } + //the task cannot be 6 outside of rampant, so this is a non issue p much + } else if (getCurrentTask() == 6 && ticksExisted % 20 == 0 && isAtDestination()) { + swingItem(); + + ExplosionVNT vnt = new ExplosionVNT(worldObj, taskX, taskY + 2, taskZ, blastSize, this); + vnt.setBlockAllocator(new BlockAllocatorGlyphidDig(blastResToDig)); + vnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); + vnt.setEntityProcessor(null); + vnt.setPlayerProcessor(null); + vnt.explode(); + + this.setCurrentTask(previousTask, previousWaypoint); + } + + this.setBesideClimbableBlock(isCollidedHorizontally); + + if(ticksExisted % 100 == 0) { + this.swingItem(); + } + } + } + + @Override protected void dropFewItems(boolean byPlayer, int looting) { - if(rand.nextInt(3) == 0) this.entityDropItem(new ItemStack(ModItems.glyphid_meat, 1 + rand.nextInt(2) + looting), 0F); + super.dropFewItems(byPlayer, looting); + Item drop = isBurning() ? ModItems.glyphid_meat_grilled : ModItems.glyphid_meat; + if(rand.nextInt(2) == 0) this.entityDropItem(new ItemStack(drop, ((int)getScale()*2) + looting), 0F); } @Override protected Entity findPlayerToAttack() { if(this.isPotionActive(Potion.blindness)) return null; - EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, useExtendedTargeting() ? 128D : 16D); - return entityplayer != null && this.canEntityBeSeen(entityplayer) ? entityplayer : null; + + EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, useExtendedTargeting() && getCurrentTask() != 0 ? 128D : 16D); + return entityplayer != null && (MobConfig.rampantExtendedTargetting || canEntityBeSeen(entityplayer)) ? entityplayer : null; + } + + @Override + protected void updateWanderPath() { + if(getCurrentTask() == 0) { + super.updateWanderPath(); + } } @Override protected void updateEntityActionState() { super.updateEntityActionState(); - - if(this.isPotionActive(Potion.blindness)) { - this.entityToAttack = null; - this.setPathToEntity(null); - } else { - - // hell yeah!! - if(useExtendedTargeting() && this.entityToAttack != null && !this.hasPath()) { - this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, false, true)); + + if(!this.isPotionActive(Potion.blindness)) { + if (!this.hasPath()) { + + // hell yeah!! + if (useExtendedTargeting() && this.entityToAttack != null) { + this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, true, true)); + } else if (getCurrentTask() != 0) { + this.worldObj.theProfiler.startSection("stroll"); + + if (!isAtDestination()) { + + if (taskWaypoint != null) { + + taskX = (int) taskWaypoint.posX; + taskY = (int) taskWaypoint.posY; + taskZ = (int) taskWaypoint.posZ; + + if (taskWaypoint.highPriority) { + setTarget(taskWaypoint); + } + + } + + if (taskX != 0) { + if(MobConfig.rampantDig) { + + MovingObjectPosition obstacle = findWaypointObstruction(); + if (getScale() >= 1 && getCurrentTask() != 6 && obstacle != null) { + digToWaypoint(obstacle); + } else { + Vec3 vec = Vec3.createVectorHelper(posX, posY, posZ); + int maxDist = (int) (Math.sqrt(vec.squareDistanceTo(taskX, taskY, taskZ)) * 1.2); + this.setPathToEntity(PathFinderUtils.getPathEntityToCoordPartial(worldObj, this, taskX, taskY, taskZ, maxDist, true, false, true, true)); + } + + } else { + Vec3 vec = Vec3.createVectorHelper(posX, posY, posZ); + int maxDist = (int) (Math.sqrt(vec.squareDistanceTo(taskX, taskY, taskZ)) * 1.2); + this.setPathToEntity(PathFinderUtils.getPathEntityToCoordPartial(worldObj, this, taskX, taskY, taskZ, maxDist, true, false, true, true)); + } + } + } + this.worldObj.theProfiler.endSection(); + + } } } } - + + + public void onBlinded(){ + this.entityToAttack = null; + this.setPathToEntity(null); + fleeingTick = 80; + + if(getScale() >= 1.25){ + if(ticksExisted % 20 == 0) { + for (int i = 0; i < 16; i++) { + float angle = (float) Math.toRadians(360D / 16 * i); + Vec3 rot = Vec3.createVectorHelper(0, 0, 4); + rot.rotateAroundY(angle); + Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY + 1, this.posZ); + Vec3 nextPos = Vec3.createVectorHelper(this.posX + rot.xCoord, this.posY + 1, this.posZ + rot.zCoord); + MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos); + + if (mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { + + Block block = worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); + + if (block == ModBlocks.lantern) { + rotationYaw = 360F / 16 * i; + swingItem(); + //this function is incredibly useful for breaking blocks naturally but obfuscated + //jesus fucking christ who the fuck runs forge? + worldObj.func_147480_a(mop.blockX, mop.blockY, mop.blockZ, false); + } + + } + } + } + } + } + public boolean useExtendedTargeting() { - return PollutionHandler.getPollution(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), PollutionType.SOOT) >= MobConfig.targetingThreshold; + return MobConfig.rampantExtendedTargetting || PollutionHandler.getPollution(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), PollutionType.SOOT) >= MobConfig.targetingThreshold; } @Override protected boolean canDespawn() { - return entityToAttack == null; + return ticksExisted > 3500 && entityToAttack == null && getCurrentTask() == 0; } - + @Override public boolean attackEntityFrom(DamageSource source, float amount) { - + if(!source.isDamageAbsolute() && !source.isUnblockable() && !worldObj.isRemote && !source.isFireDamage() && !source.getDamageType().equals(ModDamageSource.s_cryolator)) { byte armor = this.dataWatcher.getWatchableObjectByte(17); - + if(armor != 0) { //if at least one bit of armor is present - + if(amount < getDamageThreshold()) return false; - - int chance = getArmorBreakChance(amount); //chances of armor being broken off - if(this.rand.nextInt(chance) == 0 && amount > 1) { + + //chances of armor being broken off + if(amount > 1 && isArmorBroken(amount)) { breakOffArmor(); amount *= 0.25F; } - + amount -= getDamageThreshold(); if(amount < 0) return true; } - + amount = this.calculateDamage(amount); } - - if(source.isFireDamage()) amount *= 4F; - + + if(source.isFireDamage()) { + //you might be thinking, why would fire damage be nerfed? + //thing is, it bypasses glyphid chitin, making it unbelievably powerful, so this was the most reasonable solution + amount *= 0.7F; + } else if(source.getDamageType().equals("player")) { + amount *= 1.5F; + } else if(source == ModDamageSource.acid || source.equals(new DamageSource(ModDamageSource.s_acid))){ + amount = 0; + } + + if(this.isPotionActive(HbmPotion.phosphorus.getId())){ + amount *= 1.5F; + } + return super.attackEntityFrom(source, amount); } - - public int getArmorBreakChance(float amount) { - return amount < 10 ? 5 : amount < 20 ? 3 : 2; + + public boolean isArmorBroken(float amount) { + return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.6, 2), 100); } - + public float calculateDamage(float amount) { byte armor = this.dataWatcher.getWatchableObjectByte(17); int divisor = 1; - + for(int i = 0; i < 5; i++) { if((armor & (1 << i)) > 0) { divisor++; } } - + amount /= divisor; - + return amount; } - + public float getDamageThreshold() { return 0.5F; } - + public void breakOffArmor() { byte armor = this.dataWatcher.getWatchableObjectByte(17); List indices = Arrays.asList(0, 1, 2, 3, 4); Collections.shuffle(indices); - + for(Integer i : indices) { byte bit = (byte) (1 << i); if((armor & bit) > 0) { @@ -169,26 +344,6 @@ public class EntityGlyphid extends EntityMob { } } - @Override - public boolean attackEntityAsMob(Entity victum) { - if(this.isSwingInProgress) return false; - this.swingItem(); - return super.attackEntityAsMob(victum); - } - - @Override - public void onUpdate() { - super.onUpdate(); - - if(!this.worldObj.isRemote) { - this.setBesideClimbableBlock(this.isCollidedHorizontally); - - if(worldObj.getTotalWorldTime() % 200 == 0) { - this.swingItem(); - } - } - } - @Override protected void updateArmSwingProgress() { int i = this.swingDuration(); @@ -206,19 +361,19 @@ public class EntityGlyphid extends EntityMob { this.swingProgress = (float) this.swingProgressInt / (float) i; } - + public int swingDuration() { return 15; } @Override public void setInWeb() { } - + @Override public boolean isOnLadder() { return this.isBesideClimbableBlock(); } - + public boolean isBesideClimbableBlock() { return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0; } @@ -234,21 +389,214 @@ public class EntityGlyphid extends EntityMob { this.dataWatcher.updateObject(16, Byte.valueOf(watchable)); } - + + @Override + public boolean attackEntityAsMob(Entity victum) { + if(this.isSwingInProgress) return false; + this.swingItem(); + return super.attackEntityAsMob(victum); + } + + @Override public EnumCreatureAttribute getCreatureAttribute() { return EnumCreatureAttribute.ARTHROPOD; } + /// TASK SYSTEM START /// + public int getCurrentTask(){ + return currentTask; + } + + public EntityWaypoint getWaypoint(){ + return taskWaypoint; + } + + /** + * Sets a new task for the glyphid to do, a waypoint alongside with that task, and refreshes their waypoint coordinates + * @param task The task the glyphid is to do, refer to carryOutTask() + * @param waypoint The waypoint for the task, can be null + */ + public void setCurrentTask(int task, @Nullable EntityWaypoint waypoint){ + currentTask = task; + taskWaypoint = waypoint; + if (taskWaypoint != null) { + + taskX = (int) taskWaypoint.posX; + taskY = (int) taskWaypoint.posY; + taskZ = (int) taskWaypoint.posZ; + + if (taskWaypoint.highPriority) { + this.entityToAttack = null; + this.setPathToEntity(null); + } + + } + carryOutTask(); + } + + /** + * Handles the task system, used mainly for things that only need to be done once, such as setting targets + */ + public void carryOutTask(){ + int task = getCurrentTask(); + + switch(task){ + + //call for reinforcements + case 1: if(taskWaypoint != null){ + communicate(4, taskWaypoint); + setCurrentTask(4, taskWaypoint); + } break; + + //expand the hive, used by the scout + //case 2: expandHive(null); + + //retreat + case 3: + + if (!worldObj.isRemote && taskWaypoint == null) { + + //Then, Come back later + EntityWaypoint additional = new EntityWaypoint(worldObj); + additional.setLocationAndAngles(posX, posY, posZ, 0 , 0); + + //First, go home and get reinforcements + EntityWaypoint home = new EntityWaypoint(worldObj); + home.setWaypointType(1); + home.setAdditionalWaypoint(additional); + home.setHighPriority(); + home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); + worldObj.spawnEntityInWorld(home); + + this.taskWaypoint = home; + communicate(4, home); + setCurrentTask(4, taskWaypoint); + + break; + } + + break; + + //the fourth task (case 4) is to just follow the waypoint path + //fifth task is used only in the scout and big man johnson, for terraforming + + //dig + case 6: + shouldDig = true; + break; + + default: break; + + } + + } + + public void communicate(int task, @Nullable EntityWaypoint waypoint) { + int radius = waypoint != null ? waypoint.radius : 4; + + AxisAlignedBB bb = AxisAlignedBB.getBoundingBox( + this.posX - radius, + this.posY - radius, + this.posZ - radius, + this.posX + radius, + this.posY + radius, + this.posZ + radius); + + List bugs = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); + for (Entity e: bugs){ + if(e instanceof EntityGlyphid && !(e instanceof EntityGlyphidScout)){ + if(((EntityGlyphid) e).getCurrentTask() != task){ + ((EntityGlyphid) e).setCurrentTask(task, waypoint); + } + } + } + } + + /** What each type of glyphid does when it is time to expand the hive. + * @return Whether it has expanded successfully or not + * **/ + public boolean expandHive(){ + return false; + } + + public boolean isAtDestination() { + int destinationRadius = taskWaypoint != null ? (int) Math.pow(taskWaypoint.radius, 2) : 25; + + return this.getDistanceSq(taskX, taskY, taskZ) <= destinationRadius; + } + ///TASK SYSTEM END + + ///DIGGING SYSTEM START + + /** Handles the special digging system, used in Rampant mode due to high potential for destroyed bases**/ + public MovingObjectPosition findWaypointObstruction(){ + Vec3 bugVec = Vec3.createVectorHelper(posX, posY + getEyeHeight(), posZ); + Vec3 waypointVec = Vec3.createVectorHelper(taskX, taskY, taskZ); + //incomplete forge docs my beloved + MovingObjectPosition obstruction = worldObj.func_147447_a(bugVec, waypointVec, false, true, false); + if(obstruction != null){ + Block blockHit = worldObj.getBlock(obstruction.blockX, obstruction.blockY, obstruction.blockZ); + if(blockHit.getExplosionResistance(null) <= blastResToDig){ + return obstruction; + } + } + return null; + } + + public void digToWaypoint(MovingObjectPosition obstacle){ + + EntityWaypoint target = new EntityWaypoint(worldObj); + target.setLocationAndAngles(obstacle.blockX, obstacle.blockY, obstacle.blockZ, 0 , 0); + target.radius = 5; + worldObj.spawnEntityInWorld(target); + + previousTask = getCurrentTask(); + previousWaypoint = getWaypoint(); + + setCurrentTask(6, target); + + Vec3 vec = Vec3.createVectorHelper(posX, posY, posZ); + int maxDist = (int) (Math.sqrt(vec.squareDistanceTo(taskX, taskY, taskZ)) * 1.2); + this.setPathToEntity(PathFinderUtils.getPathEntityToCoordPartial(worldObj, this, taskX, taskY, taskZ, maxDist, true, false, true, true)); + + communicate(6, target); + + } + ///DIGGING END + @Override public void writeEntityToNBT(NBTTagCompound nbt) { super.writeEntityToNBT(nbt); nbt.setByte("armor", this.dataWatcher.getWatchableObjectByte(17)); + + nbt.setBoolean("hasHome", hasHome); + nbt.setInteger("homeX", homeX); + nbt.setInteger("homeY", homeY); + nbt.setInteger("homeZ", homeZ); + + nbt.setInteger("taskX", taskX); + nbt.setInteger("taskY", taskY); + nbt.setInteger("taskZ", taskZ); + + nbt.setInteger("task", currentTask); } @Override public void readEntityFromNBT(NBTTagCompound nbt) { super.readEntityFromNBT(nbt); this.dataWatcher.updateObject(17, nbt.getByte("armor")); + + this.hasHome = nbt.getBoolean("hasHome"); + this.homeX = nbt.getInteger("homeX"); + this.homeY = nbt.getInteger("homeY"); + this.homeZ = nbt.getInteger("homeZ"); + + this.taskX = nbt.getInteger("taskX"); + this.taskY = nbt.getInteger("taskY"); + this.taskZ = nbt.getInteger("taskZ"); + + this.currentTask = nbt.getInteger("task"); } + } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java index bf3215059..e042626c2 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java @@ -1,16 +1,30 @@ package com.hbm.entity.mob; +import com.hbm.entity.effect.EntityMist; +import com.hbm.entity.projectile.EntityChemical; +import com.hbm.inventory.FluidContainerRegistry; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; import com.hbm.main.ResourceManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; public class EntityGlyphidBehemoth extends EntityGlyphid { public EntityGlyphidBehemoth(World world) { super(world); - this.setSize(2.25F, 1.25F); + this.setSize(2.5F, 1.5F); } @Override @@ -26,16 +40,78 @@ public class EntityGlyphidBehemoth extends EntityGlyphid { @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(100D); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(130D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(25D); } + public int timer = 120; + int breathTime = 0; @Override - public int getArmorBreakChance(float amount) { - return amount < 20 ? 10 : amount < 100 ? 5 : amount > 200 ? 1 : 3; + public void onUpdate(){ + super.onUpdate(); + Entity e = this.getEntityToAttack(); + if (e == null) { + timer = 120; + breathTime = 0; + } else { + if (breathTime > 0) { + if(!isSwingInProgress){ + this.swingItem(); + } + acidAttack(); + rotationYaw = prevRotationYaw; + breathTime--; + } else if (--timer <= 0) { + breathTime = 120; + timer = 120; + } + } + + } + @Override + public boolean attackEntityAsMob(Entity victum) { + return super.attackEntityAsMob(victum); } + @Override + public void onDeath(DamageSource source) { + super.onDeath(source); + if (!worldObj.isRemote) { + EntityMist mist = new EntityMist(worldObj); + mist.setType(Fluids.ACID); + mist.setPosition(posX, posY, posZ); + mist.setArea(10, 4); + mist.setDuration(120); + worldObj.spawnEntityInWorld(mist); + } + } + + + public void acidAttack(){ + if (!worldObj.isRemote && entityToAttack instanceof EntityLivingBase) { + this.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 2 * 20, 6)); + EntityChemical chem = new EntityChemical(worldObj, this); + + chem.setFluid(Fluids.ACID); + worldObj.spawnEntityInWorld(chem); + } + } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + this.entityDropItem(new ItemStack(ModItems.glyphid_gland, 1, Fluids.SULFURIC_ACID.getID()), 1); + super.dropFewItems(byPlayer, looting); + } + @Override + public boolean isArmorBroken(float amount) { + // amount < 5 ? 5 : amount < 10 ? 3 : 2; + return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.15, 2), 100); + } + @Override + public int swingDuration() { + return 100; + } @Override public float calculateDamage(float amount) { @@ -44,7 +120,7 @@ public class EntityGlyphidBehemoth extends EntityGlyphid { for(int i = 0; i < 5; i++) { if((armor & (1 << i)) > 0) { - divisor += 3; + divisor += 4; } } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java index 5e922ab49..4c2e649a8 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java @@ -32,8 +32,8 @@ public class EntityGlyphidBlaster extends EntityGlyphidBombardier { } @Override - public int getArmorBreakChance(float amount) { - return amount < 10 ? 10 : amount < 25 ? 5 : amount > 100 ? 1 : 3; + public boolean isArmorBroken(float amount) { + return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.25, 2), 100); } @Override @@ -70,7 +70,7 @@ public class EntityGlyphidBlaster extends EntityGlyphidBombardier { @Override public float getSpreadMult() { - return 0.75F; + return 0.5F; } @Override diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java index 61750f0ee..3b385e363 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java @@ -4,6 +4,8 @@ import com.hbm.entity.projectile.EntityAcidBomb; import com.hbm.main.ResourceManager; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -23,22 +25,26 @@ public class EntityGlyphidBombardier extends EntityGlyphid { protected double lastY; protected double lastZ; + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20D); + + } @Override public void onUpdate() { super.onUpdate(); + Entity e = this.getEntityToAttack(); + if(!this.worldObj.isRemote && e instanceof EntityLivingBase) { - if(!this.worldObj.isRemote) { - - Entity e = this.getEntityToAttack(); - - if(this.ticksExisted % 20 == 0 && e != null) { + if(this.ticksExisted % 20 == 0) { this.lastTarget = e; this.lastX = e.posX; this.lastY = e.posY; this.lastZ = e.posZ; } - if(this.ticksExisted % 20 == 1 && e != null) { + if(this.ticksExisted % 20 == 1) { boolean topAttack = rand.nextBoolean(); @@ -72,6 +78,7 @@ public class EntityGlyphidBombardier extends EntityGlyphid { for(int i = 0; i < getBombCount(); i++) { EntityAcidBomb bomb = new EntityAcidBomb(worldObj, posX, posY + 1, posZ); + bomb.setThrower(this); bomb.setThrowableHeading(fireVec.xCoord, fireVec.yCoord, fireVec.zCoord, (float) v0, i * getSpreadMult()); bomb.damage = getBombDamage(); worldObj.spawnEntityInWorld(bomb); diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java index 749230a42..48d274667 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java @@ -32,19 +32,19 @@ public class EntityGlyphidBrawler extends EntityGlyphid { } @Override - public int getArmorBreakChance(float amount) { - return amount < 10 ? 10 : amount < 25 ? 5 : amount > 100 ? 1 : 3; + public boolean isArmorBroken(float amount) { + return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.25, 2), 100); } @Override public float calculateDamage(float amount) { byte armor = this.dataWatcher.getWatchableObjectByte(17); - int divisor = 1; + float divisor = 1; for(int i = 0; i < 5; i++) { if((armor & (1 << i)) > 0) { - divisor += 2; + divisor += 3; } } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java index bdce3e7bc..be4486456 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java @@ -1,10 +1,16 @@ package com.hbm.entity.mob; +import com.hbm.entity.effect.EntityMist; +import com.hbm.inventory.FluidContainerRegistry; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; import com.hbm.main.ResourceManager; import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -30,13 +36,14 @@ public class EntityGlyphidBrenda extends EntityGlyphid { protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(250D); - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1.2D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(50D); } @Override - public int getArmorBreakChance(float amount) { - return amount < 25 ? 100 : amount > 1000 ? 1 : 10; + public boolean isArmorBroken(float amount) { + // amount < 5 ? 5 : amount < 10 ? 3 : 2; + return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.12, 2), 100); } @Override @@ -62,20 +69,27 @@ public class EntityGlyphidBrenda extends EntityGlyphid { } @Override - public void setDead() { + public void onDeath(DamageSource source) { + super.onDeath(source); if(!this.worldObj.isRemote && this.getHealth() <= 0.0F) { + EntityMist mist = new EntityMist(worldObj); + mist.setType(Fluids.PHEROMONE); + mist.setPosition(posX, posY, posZ); + mist.setArea(14, 6); + mist.setDuration(80); + worldObj.spawnEntityInWorld(mist); for(int i = 0; i < 12; ++i) { EntityGlyphid glyphid = new EntityGlyphid(worldObj); glyphid.setLocationAndAngles(this.posX, this.posY + 0.5D, this.posZ, rand.nextFloat() * 360.0F, 0.0F); - glyphid.addPotionEffect(new PotionEffect(Potion.resistance.id, 5 * 60 * 20, 2)); - glyphid.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 5 * 60 * 20, 0)); - glyphid.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 5 * 60 * 20, 4)); - glyphid.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 5 * 60 * 20, 19)); this.worldObj.spawnEntityInWorld(glyphid); glyphid.moveEntity(rand.nextGaussian(), 0, rand.nextGaussian()); } } - - super.setDead(); } + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + super.dropFewItems(byPlayer, looting); + if(rand.nextInt(3) == 0) this.entityDropItem(new ItemStack(ModItems.glyphid_gland, 1, Fluids.PHEROMONE.getID()), 1); + } + } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java index 62a3ae9a6..179a56d54 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java @@ -1,27 +1,36 @@ package com.hbm.entity.mob; import com.hbm.blocks.ModBlocks; +import com.hbm.entity.effect.EntityMist; +import com.hbm.entity.logic.EntityWaypoint; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockMutatorDebris; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.inventory.fluid.Fluids; import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.Entity; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import javax.annotation.Nullable; +import java.util.List; + public class EntityGlyphidNuclear extends EntityGlyphid { public int deathTicks; - public EntityGlyphidNuclear(World world) { super(world); this.setSize(2.5F, 1.75F); @@ -38,17 +47,60 @@ public class EntityGlyphidNuclear extends EntityGlyphid { return 2D; } + @Override + public void onUpdate() { + super.onUpdate(); + if (ticksExisted % 20 == 0) { + if (isAtDestination() && getCurrentTask() == 4) { + setCurrentTask(0, null); + } + + if(getCurrentTask() == 2 && getAITarget() == null){ + this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 10 * 20, 3)); + } + + if (getCurrentTask() == 5) { + this.setHealth(0); + } + + } + } + + @Override + public void communicate(int task, @Nullable EntityWaypoint waypoint) { + int radius = waypoint != null ? waypoint.radius : 4; + + AxisAlignedBB bb = AxisAlignedBB.getBoundingBox( + this.posX - radius, + this.posY - radius, + this.posZ - radius, + this.posX + radius, + this.posY + radius, + this.posZ + radius); + + List bugs = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); + for (Entity e: bugs){ + if(e instanceof EntityGlyphidScout){ + if(((EntityGlyphid) e).getCurrentTask() != task){ + ((EntityGlyphid) e).setCurrentTask(task, waypoint); + } + } + } + } + + @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20D); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(100D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(50D); } @Override - public int getArmorBreakChance(float amount) { - return amount < 25 ? 100 : amount > 1000 ? 1 : 10; + public boolean isArmorBroken(float amount) { + // amount < 5 ? 5 : amount < 10 ? 3 : 2; + return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.12, 2), 100); } @Override @@ -73,20 +125,44 @@ public class EntityGlyphidNuclear extends EntityGlyphid { return 10F; } + public boolean hasWaypoint = false; @Override protected void onDeathUpdate() { ++this.deathTicks; + if(!hasWaypoint) { + communicate(3, null); + hasWaypoint = true; + } + if(deathTicks == 90){ + int radius = 8; + AxisAlignedBB bb = AxisAlignedBB.getBoundingBox( + this.posX - radius, + this.posY - radius, + this.posZ - radius, + this.posX + radius, + this.posY + radius, + this.posZ + radius); + + List bugs = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); + for (Entity e: bugs){ + if(e instanceof EntityGlyphid){ + addPotionEffect(new PotionEffect(Potion.field_76434_w.id, 20, 6)); + addPotionEffect(new PotionEffect(Potion.fireResistance.id, 15 * 20, 1)); + } + } + } if(this.deathTicks == 100) { if(!worldObj.isRemote) { + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 25, this); vnt.setBlockAllocator(new BlockAllocatorStandard(24)); vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorDebris(ModBlocks.volcanic_lava_block, 0)).setNoDrop()); - vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(1.5F)); + vnt.setEntityProcessor(new EntityProcessorStandard()); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.explode(); - + worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java index 181156e09..8c9e5db93 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java @@ -1,36 +1,47 @@ package com.hbm.entity.mob; import com.hbm.blocks.ModBlocks; +import com.hbm.config.MobConfig; +import com.hbm.entity.logic.EntityWaypoint; +import com.hbm.handler.pollution.PollutionHandler; import com.hbm.main.ResourceManager; import com.hbm.world.feature.GlyphidHive; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Vec3; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.*; import net.minecraft.world.World; -public class EntityGlyphidScout extends EntityGlyphid { - - public boolean hasHome = false; - public double homeX; - public double homeY; - public double homeZ; +import javax.annotation.Nullable; +import java.util.List; +public class EntityGlyphidScout extends EntityGlyphid { + + boolean hasTarget = false; + int timer; + int scoutingRange = 45; + int minDistanceToHive = 8; + boolean useLargeHive = false; + float largeHiveChance = MobConfig.largeHiveChance; public EntityGlyphidScout(World world) { super(world); this.setSize(1.25F, 0.75F); } - - @Override - public float getDamageThreshold() { - return 0.0F; - } + //extreme measures for anti-scout bullying + @Override + public boolean attackEntityAsMob(Entity victum) { + if(super.attackEntityAsMob(victum) && victum instanceof EntityLivingBase){ + ((EntityLivingBase)victum).addPotionEffect(new PotionEffect(Potion.poison.id, 10 * 20, 3)); + return true; + } + return false; + } @Override public ResourceLocation getSkin() { return ResourceManager.glyphid_scout_tex; @@ -42,116 +53,264 @@ public class EntityGlyphidScout extends EntityGlyphid { } @Override - public int getArmorBreakChance(float amount) { - return 1; + public boolean isArmorBroken(float amount) { + return this.rand.nextInt(100) <= Math.min(Math.pow(amount, 2), 100); } @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(16D); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1.5D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(2D); } - @Override - protected boolean canDespawn() { + public void onUpdate() { + + super.onUpdate(); + + if((getCurrentTask() != 2 || getCurrentTask() != 5) && taskWaypoint == null) { + + if(MobConfig.rampantGlyphidGuidance && PollutionHandler.targetCoords != null){ + if(!hasTarget) { + Vec3 dirVec = playerBaseDirFinder( + Vec3.createVectorHelper(posX, posY, posZ), + PollutionHandler.targetCoords); + + EntityWaypoint target = new EntityWaypoint(worldObj); + target.setLocationAndAngles(dirVec.xCoord, dirVec.yCoord, dirVec.zCoord, 0, 0); + target.maxAge = 300; + target.radius = 6; + worldObj.spawnEntityInWorld(target); + hasTarget = true; + + setCurrentTask(1, target); + } + + if(super.isAtDestination()) { + setCurrentTask(2, null) ; + hasTarget = false; + } + + } else { + setCurrentTask(2, null); + } + + } + + if(getCurrentTask() == 2 || getCurrentTask() == 5) { + + if(!worldObj.isRemote && !hasTarget) { + //Check for whether a big man johnson is nearby, this makes the scout switch into its terraforming task + if(scoutingRange != 60 && findJohnson()){ + setCurrentTask(5, null); + } + + //Placeholder for a more advanced hive design + /* + if(PollutionHandler.getPollution(worldObj, + (int) posX, + (int) posY, + (int) posZ, PollutionHandler.PollutionType.SOOT) >= MobConfig.largeHiveThreshold){ + + useLargeHive = true; + this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 60 * 20, 3)); + }*/ + + if (expandHive()){ + this.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 180*20, 1)); + hasTarget = true; + } + } + + if (getCurrentTask() == 5 && super.isAtDestination() && doubleCheckHive()) { + communicate(5, taskWaypoint); + } + + if (ticksExisted % 10 == 0 && isAtDestination()) { + timer++; + + if (!worldObj.isRemote && doubleCheckHive()) { + if(timer == 1) { + + EntityWaypoint additional = new EntityWaypoint(worldObj); + additional.setLocationAndAngles(posX, posY, posZ, 0, 0); + additional.setWaypointType(0); + + //First, go home and get reinforcements + EntityWaypoint home = new EntityWaypoint(worldObj); + home.setWaypointType(1); + home.setAdditionalWaypoint(additional); + home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); + home.maxAge = 1200; + home.radius = 6; + + worldObj.spawnEntityInWorld(home); + + this.taskWaypoint = home; + this.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 40 * 20, 10)); + communicate(1, taskWaypoint); + + } else if (timer >= 5) { + + worldObj.newExplosion(this, posX, posY, posZ, 5F, false, false); + GlyphidHive.generateBigGround(worldObj, + (int) Math.floor(posX), + (int) Math.floor(posY), + (int) Math.floor(posZ), rand, true); + this.setDead(); + + } else { + communicate(4, taskWaypoint); + } + } + } + } + } + public boolean doubleCheckHive(){ + int length = useLargeHive ? 16 : 8; + for(int i = 0; i < 8; i++) { + float angle = (float) Math.toRadians(360D / 16 * i); + Vec3 rot = Vec3.createVectorHelper(0, 0, length); + rot.rotateAroundY(angle); + Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY + 1, this.posZ); + Vec3 nextPos = Vec3.createVectorHelper(this.posX + rot.xCoord, this.posY + 1, this.posZ + rot.zCoord); + MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos); + + if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { + + Block block = worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); + + if (block == ModBlocks.glyphid_base) { + setCurrentTask(0 ,null); + hasTarget = false; + return false; + } + + } + } return true; } @Override - public void onUpdate() { - super.onUpdate(); - - if(!worldObj.isRemote) { - - if(!this.hasHome) { - this.homeX = posX; - this.homeY = posY; - this.homeZ = posZ; - this.hasHome = true; - } - - if(rand.nextInt(20) == 0) fleeingTick = 2; + public boolean isAtDestination() { + return this.getCurrentTask() == 2 && super.isAtDestination(); + } - if(this.ticksExisted > 0 && this.ticksExisted % 1200 == 0 && Vec3.createVectorHelper(posX - homeX, posY - homeY, posZ - homeZ).lengthVector() > 8) { - - Block b = worldObj.getBlock((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); - - int accuracy = 16; - for(int i = 0; i < accuracy; i++) { - float angle = (float) Math.toRadians(360D / accuracy * i); - Vec3 rot = Vec3.createVectorHelper(0, 0, 16); - rot.rotateAroundY(angle); - Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY + 1, this.posZ); - Vec3 nextPos = Vec3.createVectorHelper(this.posX + rot.xCoord, this.posY + 1, this.posZ + rot.zCoord); - MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos); + public boolean findJohnson(){ + int radius = 8; + + AxisAlignedBB bb = AxisAlignedBB.getBoundingBox( + this.posX - radius, + this.posY - radius, + this.posZ - radius, + this.posX + radius, + this.posY + radius, + this.posZ + radius); + + List bugs = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); + for (Entity e: bugs){ + if(e instanceof EntityGlyphidNuclear){ + return true; + } + } + return false; + } + + @Override + public boolean expandHive() { + + int nestX = rand.nextInt((homeX + scoutingRange) - (homeX - scoutingRange)) + (homeX - scoutingRange); + int nestZ = rand.nextInt((homeZ + scoutingRange) - (homeZ - scoutingRange)) + (homeZ - scoutingRange); + int nestY = worldObj.getHeightValue(nestX, nestZ); + Block b = worldObj.getBlock(nestX, nestY - 1, nestZ); + + boolean distanceCheck = Vec3.createVectorHelper( + nestX - homeX, + nestY - homeY, + nestZ - homeZ).lengthVector() > minDistanceToHive; + + if(distanceCheck && b.getMaterial() != Material.air && b.isNormalCube() && b != ModBlocks.glyphid_base) { + + if(b == ModBlocks.basalt) { + useLargeHive = true; + largeHiveChance /= 2; + this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 60 * 20, 3)); + } + if(!worldObj.isRemote) { + EntityWaypoint nest = new EntityWaypoint(worldObj); + nest.setWaypointType(getCurrentTask()); + nest.radius = 5; + + if(useLargeHive) + nest.setHighPriority(); + + nest.setLocationAndAngles(nestX, nestY, nestZ, 0, 0); + worldObj.spawnEntityInWorld(nest); + + taskWaypoint = nest; + + //updates the task coordinates + setCurrentTask(getCurrentTask(), taskWaypoint); + communicate(2, taskWaypoint); + } + return true; + } + return false; + } + + + @Override + public void carryOutTask() { + if (!worldObj.isRemote && taskWaypoint == null) { + switch(getCurrentTask()){ + case 3: + this.removePotionEffect(Potion.moveSlowdown.id); + this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 20 * 20, 4)); + + //then, come back later + EntityWaypoint additional = new EntityWaypoint(worldObj); + additional.setLocationAndAngles(posX, posY, posZ, 0, 0); + additional.setWaypointType(0); - if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { - - Block block = worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); - - if(block == ModBlocks.glyphid_base) { - return; - } - } - } - - if(b.getMaterial() != Material.air && b.isNormalCube() && b != ModBlocks.glyphid_base) { - this.setDead(); - worldObj.newExplosion(this, posX, posY, posZ, 5F, false, false); - GlyphidHive.generate(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), rand); - } + //First, go home and get reinforcements + EntityWaypoint home = new EntityWaypoint(worldObj); + home.setWaypointType(2); + home.setAdditionalWaypoint(additional); + home.setHighPriority(); + home.radius = 6; + home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); + worldObj.spawnEntityInWorld(home); + + communicate(4, home); + break; + + //terraforming task, only used if a big man johnson is near the scout + case 5: + scoutingRange = 60; + minDistanceToHive = 20; } } - } + super.carryOutTask(); + } @Override - protected void updateWanderPath() { - this.worldObj.theProfiler.startSection("stroll"); - boolean flag = false; - int pathX = -1; - int pathY = -1; - int pathZ = -1; - float maxWeight = -99999.0F; - - for(int l = 0; l < 5; ++l) { - int x = MathHelper.floor_double(this.posX + (double) this.rand.nextInt(25) - 12.0D); - int y = MathHelper.floor_double(this.posY + (double) this.rand.nextInt(11) - 5.0D); - int z = MathHelper.floor_double(this.posZ + (double) this.rand.nextInt(25) - 12.0D); - float weight = this.getBlockPathWeight(x, y, z); - - if(weight > maxWeight) { - maxWeight = weight; - pathX = x; - pathY = y; - pathZ = z; - flag = true; - } - } - - if(flag) { - this.setPathToEntity(this.worldObj.getEntityPathToXYZ(this, pathX, pathY, pathZ, 10.0F, true, false, false, true)); - } - - this.worldObj.theProfiler.endSection(); + public boolean useExtendedTargeting() { + return false; } - @Override - public void writeEntityToNBT(NBTTagCompound nbt) { - super.writeEntityToNBT(nbt); - nbt.setBoolean("hasHome", hasHome); - nbt.setDouble("homeX", homeX); - nbt.setDouble("homeY", homeY); - nbt.setDouble("homeZ", homeZ); + ///RAMPANT MODE STUFFS + + /** Finds the direction from the bug's location to the target and adds it to their current coord + * Used as a performant way to make scouts expand toward the player's spawn point + * @return An adjusted direction vector, to be added into the bug's current position for it to path in the required direction**/ + public static Vec3 playerBaseDirFinder(Vec3 currentLocation, Vec3 target){ + Vec3 dirVec = currentLocation.subtract(target).normalize(); + return Vec3.createVectorHelper( + currentLocation.xCoord + dirVec.xCoord * 10, + currentLocation.yCoord + dirVec.yCoord * 10, + currentLocation.zCoord + dirVec.zCoord * 10 + ); } - @Override - public void readEntityFromNBT(NBTTagCompound nbt) { - super.readEntityFromNBT(nbt); - this.hasHome = nbt.getBoolean("hasHome"); - this.homeX = nbt.getDouble("homeX"); - this.homeY = nbt.getDouble("homeY"); - this.homeZ = nbt.getDouble("homeZ"); - } } diff --git a/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java b/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java index 9d5b2f36c..fc4064646 100644 --- a/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java +++ b/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java @@ -59,4 +59,54 @@ public class PathFinderUtils { world.theProfiler.endSection(); return pathentity; } + + public static PathEntity getPathEntityToCoordPartial(World world, Entity fromEntity, int posX, int posY, int posZ, float maxDist, boolean allowDoors, boolean allowBlocked, boolean allowWater, boolean canDrown) { + world.theProfiler.startSection("pathfind"); + int startX = MathHelper.floor_double(fromEntity.posX); + int startY = MathHelper.floor_double(fromEntity.posY + 1.0D); + int startZ = MathHelper.floor_double(fromEntity.posZ); + int maxDistEff = (int) (maxDist + 16.0F); + int minX = startX - maxDistEff; + int minY = startY - maxDistEff; + int minZ = startZ - maxDistEff; + int maxX = startX + maxDistEff; + int maxY = startY + maxDistEff; + int maxZ = startZ + maxDistEff; + ChunkCache chunkcache = new ChunkCache(world, minX, minY, minZ, maxX, maxY, maxZ, 0); + + Vec3 vec = Vec3.createVectorHelper(posX - fromEntity.posX, posY - fromEntity.posY, posZ - fromEntity.posZ); + vec = vec.normalize(); + vec.xCoord *= maxDist; + vec.yCoord *= maxDist; + vec.zCoord *= maxDist; + + int x = (int) Math.floor(fromEntity.posX + vec.xCoord); + int y = (int) Math.floor(fromEntity.posY + vec.yCoord); + int z = (int) Math.floor(fromEntity.posZ + vec.zCoord); + + //this part will adjust the end of the path so it's actually on the ground, it being unreachable causes mobs to slow down + boolean solid = false; + + for(int i = y; i > y - 10; i--) { + if(!world.getBlock(x, i, z).getMaterial().blocksMovement() && world.getBlock(x, i - 1, z).isNormalCube()) { + solid = true; + y = i; + break; + } + + } + + if(!solid) for(int i = y + 10; i > y; i--) { + if(!world.getBlock(x, i, z).getMaterial().blocksMovement() && world.getBlock(x, i - 1, z).isNormalCube()) { + solid = true; + y = i; + break; + } + } + + //PathEntity pathentity = (new PathFinder(chunkcache, allowDoors, allowBlocked, allowWater, canDrown)).createEntityPathTo(fromEntity, toEntity, maxDist); + PathEntity pathentity = (new PathFinder(chunkcache, allowDoors, allowBlocked, allowWater, canDrown)).createEntityPathTo(fromEntity, x, y, z, maxDist); + world.theProfiler.endSection(); + return pathentity; + } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java b/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java index 8a688df2d..dd928b885 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java +++ b/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java @@ -4,6 +4,7 @@ import com.hbm.entity.mob.EntityGlyphid; import com.hbm.lib.ModDamageSource; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EntityDamageSourceIndirect; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -27,7 +28,7 @@ public class EntityAcidBomb extends EntityThrowableInterp { if(mop.typeOfHit == mop.typeOfHit.ENTITY) { if(!(mop.entityHit instanceof EntityGlyphid)) { - mop.entityHit.attackEntityFrom(ModDamageSource.acid, damage); + mop.entityHit.attackEntityFrom(new EntityDamageSourceIndirect(ModDamageSource.s_acid, this, thrower), damage); this.setDead(); } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityChemical.java b/src/main/java/com/hbm/entity/projectile/EntityChemical.java index 3eb72cddc..b6119b8c8 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityChemical.java +++ b/src/main/java/com/hbm/entity/projectile/EntityChemical.java @@ -4,16 +4,13 @@ import java.awt.Color; import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.entity.mob.EntityGlyphidBehemoth; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.trait.FT_Combustible; -import com.hbm.inventory.fluid.trait.FT_Corrosive; -import com.hbm.inventory.fluid.trait.FT_Flammable; -import com.hbm.inventory.fluid.trait.FT_Poison; -import com.hbm.inventory.fluid.trait.FT_Toxin; -import com.hbm.inventory.fluid.trait.FT_VentRadiation; +import com.hbm.inventory.fluid.trait.*; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IRepairable; @@ -43,6 +40,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; + public class EntityChemical extends EntityThrowableNT { /* @@ -211,6 +209,12 @@ public class EntityChemical extends EntityThrowableNT { HbmLivingProps.setOil(living, 300); //doused in oil for 15 seconds } } + if(type.hasTrait(Fluids.DELICIOUS.getClass())) { + if(living != null && living.isEntityAlive()) { + living.heal(2F * (float) intensity); + } + } + } if(this.isExtinguishing()) { @@ -219,7 +223,7 @@ public class EntityChemical extends EntityThrowableNT { if(style == ChemicalStyle.BURNING) { FT_Combustible trait = type.getTrait(FT_Combustible.class); - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_flamethrower), 2F + (trait != null ? (trait.getCombustionEnergy() / 100_000F) : 0)); + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_flamethrower), 0.2F + (trait != null ? (trait.getCombustionEnergy() / 100_000F) : 0)); e.setFire(5); } @@ -229,17 +233,17 @@ public class EntityChemical extends EntityThrowableNT { float heat = Math.max(flammable != null ? flammable.getHeatEnergy() / 50_000F : 0, combustible != null ? combustible.getCombustionEnergy() / 100_000F : 0); heat *= intensity; - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_flamethrower), (2F + heat) * (float) intensity); + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_flamethrower), (0.2F + heat) * (float) intensity); e.setFire((int) Math.ceil(5 * intensity)); } if(type.hasTrait(FT_Corrosive.class)) { FT_Corrosive trait = type.getTrait(FT_Corrosive.class); - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_acid), trait.getRating() / 50F); - + if(living != null) { + EntityDamageUtil.attackEntityFromIgnoreIFrame(living, getDamage(ModDamageSource.s_acid), trait.getRating() / 50F); for(int i = 0; i < 4; i++) { - ArmorUtil.damageSuit(living, i, (int) Math.ceil(trait.getRating() / 50)); + ArmorUtil.damageSuit(living, i, trait.getRating() / 40); } } } @@ -267,6 +271,26 @@ public class EntityChemical extends EntityThrowableNT { trait.affect(living, intensity); } } + + if(type.hasTrait(FT_Pheromone.class)){ + + FT_Pheromone pheromone = type.getTrait(FT_Pheromone.class); + + if(living != null) { + living.addPotionEffect(new PotionEffect(Potion.resistance.id, 2 * 60 * 20, 2)); + living.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 5 * 60 * 20, 1)); + living.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 2 * 60 * 20, 4)); + + if (living instanceof EntityGlyphid && pheromone.getType() == 1) { + living.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 5 * 60 * 20, 4)); + living.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 60 * 20, 0)); + living.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 60 * 20, 19)); + + } else if (living instanceof EntityPlayer && pheromone.getType() == 2) { + living.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 2 * 60 * 20, 2)); + } + } + } if(type == Fluids.XPJUICE) { @@ -301,14 +325,14 @@ public class EntityChemical extends EntityThrowableNT { } //terribly copy-pasted from EntityEnderman.class - protected boolean teleportRandomly(Entity e) { + public boolean teleportRandomly(Entity e) { double x = this.posX + (this.rand.nextDouble() - 0.5D) * 64.0D; double y = this.posY + (double) (this.rand.nextInt(64) - 32); double z = this.posZ + (this.rand.nextDouble() - 0.5D) * 64.0D; return this.teleportTo(e, x, y, z); } - protected boolean teleportTo(Entity e, double x, double y, double z) { + public boolean teleportTo(Entity e, double x, double y, double z) { double targetX = e.posX; double targetY = e.posY; @@ -387,7 +411,7 @@ public class EntityChemical extends EntityThrowableNT { FT_VentRadiation trait = type.getTrait(FT_VentRadiation.class); ChunkRadiationManager.proxy.incrementRad(worldObj, mop.blockX, mop.blockY, mop.blockZ, trait.getRadPerMB() * 5); } - + ChemicalStyle style = getStyle(); if(style == ChemicalStyle.BURNING || style == ChemicalStyle.GASFLAME) { @@ -401,6 +425,18 @@ public class EntityChemical extends EntityThrowableNT { } } } + + if(style == ChemicalStyle.BURNING || style == ChemicalStyle.GASFLAME) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + Block fire = type == Fluids.BALEFIRE ? ModBlocks.balefire : Blocks.fire; + + if(worldObj.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isAir(worldObj, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) { + worldObj.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, fire); + } + } + } if(this.isExtinguishing()) { diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorGlyphidDig.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorGlyphidDig.java new file mode 100644 index 000000000..7837c81f2 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorGlyphidDig.java @@ -0,0 +1,90 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockGlyphidSpawner; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockAllocator; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +import java.util.HashSet; + +public class BlockAllocatorGlyphidDig implements IBlockAllocator { + + protected double maximum; + protected int resolution; + + public BlockAllocatorGlyphidDig(double maximum) { + this(maximum, 16); + } + + public BlockAllocatorGlyphidDig(double maximum, int resolution) { + this.resolution = resolution; + this.maximum = maximum; + } + + @Override + public HashSet allocate(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + + HashSet affectedBlocks = new HashSet(); + + for(int i = 0; i < this.resolution; ++i) { + for(int j = 0; j < this.resolution; ++j) { + for(int k = 0; k < this.resolution; ++k) { + + if(i == 0 || i == this.resolution - 1 || j == 0 || j == this.resolution - 1 || k == 0 || k == this.resolution - 1) { + + double d0 = (double) ((float) i / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d1 = (double) ((float) j / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d2 = (double) ((float) k / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d3 = Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2); + + d0 /= d3; + d1 /= d3; + d2 /= d3; + + double currentX = x; + double currentY = y; + double currentZ = z; + + double dist = 0; + + for(float stepSize = 0.3F; dist <= explosion.size;) { + + double deltaX = currentX - x; + double deltaY = currentY - y; + double deltaZ = currentZ - z; + dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); + + int blockX = MathHelper.floor_double(currentX); + int blockY = MathHelper.floor_double(currentY); + int blockZ = MathHelper.floor_double(currentZ); + + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() != Material.air) { + float blockResistance = explosion.exploder != null ? explosion.exploder.func_145772_a(explosion.compat, world, blockX, blockY, blockZ, block) : block.getExplosionResistance(explosion.exploder, world, blockX, blockY, blockZ, x, y, z); + if(this.maximum < blockResistance || block == ModBlocks.glyphid_spawner) { + break; + } + } + + if(explosion.exploder == null || explosion.exploder.func_145774_a(explosion.compat, world, blockX, blockY, blockZ, block, explosion.size)) { + affectedBlocks.add(new ChunkPosition(blockX, blockY, blockZ)); + } + + currentX += d0 * (double) stepSize; + currentY += d1 * (double) stepSize; + currentZ += d2 * (double) stepSize; + } + } + } + } + } + + return affectedBlocks; + } +} diff --git a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java index 4ff3b70c1..9255062ef 100644 --- a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java +++ b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java @@ -8,13 +8,16 @@ import java.util.Locale; import java.util.Map.Entry; import java.util.UUID; +import com.hbm.config.MobConfig; import com.hbm.config.RadiationConfig; +import com.hbm.entity.mob.EntityGlyphidScout; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.relauncher.Side; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.monster.IMob; @@ -22,10 +25,12 @@ import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.event.entity.living.LivingSpawnEvent; +import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent; import net.minecraftforge.event.world.WorldEvent; public class PollutionHandler { @@ -37,7 +42,8 @@ public class PollutionHandler { public static final float SOOT_PER_SECOND = 1F / 25F; /** Baserate of heavy metal generation, balanced around the soot values of combustion engines */ public static final float HEAVY_METAL_PER_SECOND = 1F / 50F; - + public static Vec3 targetCoords; + /////////////////////// /// UTILITY METHODS /// /////////////////////// @@ -53,7 +59,7 @@ public class PollutionHandler { data = new PollutionData(); ppw.pollution.put(pos, data); } - data.pollution[type.ordinal()] = MathHelper.clamp_float(data.pollution[type.ordinal()] + amount, 0F, 10_000F); + data.pollution[type.ordinal()] = MathHelper.clamp_float((float) (data.pollution[type.ordinal()] + amount * MobConfig.pollutionMult), 0F, 10_000F); } public static void decrementPollution(World world, int x, int y, int z, PollutionType type, float amount) { @@ -173,7 +179,9 @@ public class PollutionHandler { public void updateSystem(TickEvent.ServerTickEvent event) { if(event.side == Side.SERVER && event.phase == Phase.END) { - + + int spreadThreshold = RadiationConfig.pollutionSpreadThreshold; + double spreadEff = RadiationConfig.pollutionSpreadEfficiency; eggTimer++; if(eggTimer < 60) return; eggTimer = 0; @@ -192,11 +200,11 @@ public class PollutionHandler { int P = PollutionType.POISON.ordinal(); /* CALCULATION */ - if(data.pollution[S] > 15) { - pollutionForNeightbors[S] = data.pollution[S] * 0.05F; - data.pollution[S] *= 0.8F; + if(data.pollution[S] > spreadThreshold) { + pollutionForNeightbors[S] = (float) (data.pollution[S] * spreadEff); + data.pollution[S] *= 1-spreadEff*4; } else { - data.pollution[S] *= 0.99F; + data.pollution[S] *= 0.8; } data.pollution[H] *= 0.9995F; @@ -334,4 +342,34 @@ public class PollutionHandler { } } } + ///RAMPANT MODE STUFFS/// + + @SubscribeEvent + public void rampantTargetSetter(PlayerSleepInBedEvent event){ + if (MobConfig.rampantGlyphidGuidance) targetCoords = Vec3.createVectorHelper(event.x, event.y, event.z); + } + + @SubscribeEvent + public void rampantScoutPopulator(WorldEvent.PotentialSpawns event){ + //yell at me if this vertical formatting hurts your brain + if(MobConfig.rampantNaturalScoutSpawn + && !event.world.isRemote + && event.world.provider.dimensionId == 0 + && event.type == EnumCreatureType.monster + && event.world.canBlockSeeTheSky(event.x, event.y, event.z)) { + + if (event.world.rand.nextInt(MobConfig.rampantScoutSpawnChance) == 0) { + + float soot = PollutionHandler.getPollution(event.world, event.x, event.y, event.z, PollutionType.SOOT); + + if (soot >= MobConfig.rampantScoutSpawnThresh) { + EntityGlyphidScout scout = new EntityGlyphidScout(event.world); + scout.setLocationAndAngles(event.x, event.y, event.z, event.world.rand.nextFloat() * 360.0F, 0.0F); + event.world.spawnEntityInWorld(scout); + } + } + } + + } + } diff --git a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java index f6f3d2971..ce44b7eb3 100644 --- a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java +++ b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java @@ -69,8 +69,10 @@ public class FluidContainerRegistry { if(type.hasNoContainer()) continue; + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.disperser_canister, 1 , i), new ItemStack(ModItems.disperser_canister_empty), Fluids.fromID(i), 2000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.glyphid_gland, 1 , i), new ItemStack(ModItems.glyphid_gland_empty), Fluids.fromID(i), 4000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_lead_full, 1, id), new ItemStack(ModItems.fluid_tank_lead_empty), type, 1000)); - + if(type.needsLeadContainer()) continue; FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_full, 1, id), new ItemStack(ModItems.fluid_tank_empty), type, 1000)); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index a64fdb6eb..a25849cd1 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -98,6 +98,8 @@ public class OreDictManager { public static final String KEY_CIRCUIT_BISMUTH = "circuitVersatile"; + public static final String KEY_GLYPHID_MEAT = "glyphidMeat"; + /* * MATERIALS */ @@ -300,6 +302,8 @@ public class OreDictManager { /** Any special post-RBMK gating material, namely bismuth and arsenic */ public static final DictFrame ANY_BISMOID = new DictFrame("AnyBismoid"); public static final DictFrame ANY_ASH = new DictFrame("Ash"); + /** Any, nevermind, this should be self-explanatory**/ + public static void registerOres() { @@ -504,7 +508,13 @@ public class OreDictManager { */ OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_bismuth); OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_arsenic); - + + /* + * GLYPHID M E A T + */ + OreDictionary.registerOre(KEY_GLYPHID_MEAT, new ItemStack(glyphid_meat)); + OreDictionary.registerOre(KEY_GLYPHID_MEAT, new ItemStack(glyphid_meat_grilled)); + for(NTMMaterial mat : Mats.orderedList) { if(mat.smeltable == SmeltingBehavior.SMELTABLE) { if(mat.shapes.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index d6fa4d759..853a8d2d1 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -171,6 +171,9 @@ public class FluidType { public boolean needsLeadContainer() { return this.traits.containsKey(FT_LeadContainer.class); } + public boolean isDispersable() { + return !(this.traits.containsKey(FT_NoDispersable.class)); + } /** * Called when the tile entity is broken, effectively voiding the fluids. diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 5ca1341f6..61768d294 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -118,6 +118,9 @@ public class Fluids { public static FluidType SOLVENT; //oranic solvent in fact public static FluidType BLOOD; //BLOOD ORB! BLOOD ORB! BLOOD ORB! public static FluidType BLOOD_HOT; + + public static FluidType PHEROMONE; + public static FluidType PHEROMONE_M; public static FluidType SYNGAS; public static FluidType OXYHYDROGEN; public static FluidType RADIOSOLVENT; //DCM-ish made by wacky radio cracking @@ -182,7 +185,8 @@ public class Fluids { public static final FT_NoID NOID = new FT_NoID(); public static final FT_Delicious DELICIOUS = new FT_Delicious(); public static final FT_Leaded LEADED = new FT_Leaded(); - + + public static final FT_NoDispersable NO_DISPERSE= new FT_NoDispersable(); public static void init() { // ##### ##### ##### ##### ## # ##### # # ##### ## # ##### @@ -231,8 +235,8 @@ public class Fluids { PUF6 = new FluidType("PUF6", 0x4C4C4C, 4, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.1F), new FT_Corrosive(15), GASEOUS); SAS3 = new FluidType("SAS3", 0x4ffffc, 5, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(30), LIQUID); SCHRABIDIC = new FluidType("SCHRABIDIC", 0x006B6B, 5, 0, 5, EnumSymbol.ACID).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(75), new FT_Poison(true, 2), LIQUID); - AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); - ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); + AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS, NO_DISPERSE); + ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS, NO_DISPERSE); ACID = new FluidType("ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID); WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), new FT_VentRadiation(0.1F), LIQUID, VISCOUS); CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID, VISCOUS); @@ -282,7 +286,7 @@ public class Fluids { SEEDSLURRY = new FluidType("SEEDSLURRY", 0x7CC35E, 0, 0, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x7CC35E)).addTraits(LIQUID, VISCOUS); NITRIC_ACID = new FluidType("NITRIC_ACID", 0xBB7A1E, 3, 0, 2, EnumSymbol.OXIDIZER).addTraits(LIQUID, new FT_Corrosive(60)); SOLVENT = new FluidType("SOLVENT", 0xE4E3EF, 2, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xE4E3EF)).addTraits(LIQUID, new FT_Corrosive(30)); - BLOOD = new FluidType("BLOOD", 0xB22424, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + BLOOD = new FluidType("BLOOD", 0xB22424, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, DELICIOUS); BLOOD_HOT = new FluidType("BLOOD_HOT", 0xF22419, 3, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).setTemp(666); //it's funny because it's the satan number SYNGAS = new FluidType("SYNGAS", 0x131313, 1, 4, 2, EnumSymbol.NONE).addContainers(new CD_Gastank(0xFFFFFF, 0x131313)).addTraits(GASEOUS); OXYHYDROGEN = new FluidType("OXYHYDROGEN", 0x483FC1, 0, 4, 2, EnumSymbol.NONE).addTraits(GASEOUS); @@ -325,11 +329,12 @@ public class Fluids { HEAVYWATER_HOT = new FluidType("HEAVYWATER_HOT", 0x4D007B, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID); SODIUM = new FluidType("SODIUM", 0xCCD4D5, 1, 2, 3, EnumSymbol.NONE).setTemp(400).addTraits(LIQUID); SODIUM_HOT = new FluidType("SODIUM_HOT", 0xE2ADC1, 1, 2, 3, EnumSymbol.NONE).setTemp(1200).addTraits(LIQUID); + PHEROMONE = new FluidType("PHEROMONE", 0x5FA6E8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(1)); + PHEROMONE_M = new FluidType("PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(2)); THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, new FT_Corrosive(65)); THORIUM_SALT_DEPLETED = new FluidType("THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); - FULLERENE = new FluidType(130, "FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); - + FULLERENE = new FluidType(132, "FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE @@ -486,7 +491,10 @@ public class Fluids { metaOrder.add(SMOKE); metaOrder.add(SMOKE_LEADED); metaOrder.add(SMOKE_POISON); - + + //bug meth + metaOrder.add(PHEROMONE); + metaOrder.add(PHEROMONE_M); for(FluidType custom : customFluids) metaOrder.add(custom); CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_CHLORINE, false))); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Pheromone.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Pheromone.java new file mode 100644 index 000000000..4ebfc8e5c --- /dev/null +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Pheromone.java @@ -0,0 +1,43 @@ +package com.hbm.inventory.fluid.trait; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import net.minecraft.util.EnumChatFormatting; + + +import java.io.IOException; +import java.util.List; + +public class FT_Pheromone extends FluidTrait{ + + public int type; + + public FT_Pheromone(int type){ + this.type = type; + } + + public int getType() { + return type; + } + + @Override + public void addInfo(List info) { + + if (type == 1) { + info.add(EnumChatFormatting.AQUA + "[Glyphid Pheromones]"); + } else { + info.add(EnumChatFormatting.BLUE + "[Modified Pheromones]"); + } + + } + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("type").value(type); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.type = obj.get("type").getAsInt(); + } + +} diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java index ff2522d09..dd25601c7 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java @@ -35,6 +35,8 @@ public abstract class FluidTrait { traitNameMap.put("leadcontainer", FT_LeadContainer.class); traitNameMap.put("delicious", FT_Delicious.class); traitNameMap.put("leaded", FT_Leaded.class); + traitNameMap.put("pheromone", FT_Pheromone.class); + traitNameMap.put("nodisperse", FT_NoDispersable.class); traitNameMap.put("noid", FT_NoID.class); traitNameMap.put("nocontainer", FT_NoContainer.class); } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java index d282cea42..27628d32a 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java @@ -49,7 +49,11 @@ public class FluidTraitSimple { info.add(EnumChatFormatting.DARK_RED + "[Requires hazardous material tank to hold]"); } } - + public static class FT_NoDispersable extends FluidTrait { + @Override public void addInfo(List info) { + info.add(EnumChatFormatting.DARK_RED + "[Cannot be thrown from Disperser Canister]"); + } + } public static class FT_Delicious extends FluidTrait { @Override public void addInfoHidden(List info) { info.add(EnumChatFormatting.DARK_GREEN + "[Delicious]"); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index f3639536b..f14b4bd10 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -21,6 +21,7 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import cpw.mods.fml.common.Mod; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -401,6 +402,7 @@ public class ChemplantRecipes extends SerializableRecipe { recipes.add(new ChemRecipe(101, "CC_CENTRIFUGE", 200) .inputFluids(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 500), new FluidStack(Fluids.SULFURIC_ACID, 8_000)) .outputFluids(new FluidStack(Fluids.POTASSIUM_CHLORIDE, 250), new FluidStack(Fluids.CALCIUM_CHLORIDE, 250))); + recipes.add(new ChemRecipe(102, "THORIUM_SALT", 60) .inputFluids(new FluidStack(Fluids.THORIUM_SALT_DEPLETED, 16_000)) .inputItems(new OreDictStack(TH232.nugget(), 2)) @@ -408,6 +410,14 @@ public class ChemplantRecipes extends SerializableRecipe { .outputItems( new ItemStack(ModItems.nugget_u233, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1))); + + recipes.add(new ChemRecipe(103, "MEAT_PROCESSING", 200) + .inputItems(new OreDictStack(KEY_GLYPHID_MEAT, 3)) + .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 1000)) + .outputItems(new ItemStack(ModItems.sulfur, 4), + new ItemStack(ModItems.niter, 3)) + .outputFluids(new FluidStack(Fluids.SALIENT, 250))); + } public static void registerFuelProcessing() { diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index ee093f541..3af3808a7 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -59,6 +59,7 @@ public class LiquefactionRecipes extends SerializableRecipe { recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 3), new FluidStack(150, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 4), new FluidStack(50, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModItems.biomass), new FluidStack(125, Fluids.BIOGAS)); + recipes.put(new ComparableStack(ModItems.glyphid_gland_empty), new FluidStack(2000, Fluids.BIOGAS)); recipes.put(new ComparableStack(Items.fish, 1, OreDictionary.WILDCARD_VALUE), new FluidStack(100, Fluids.FISHOIL)); recipes.put(new ComparableStack(Blocks.double_plant, 1, 0), new FluidStack(100, Fluids.SUNFLOWEROIL)); diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index 15bf9a25e..fe7b40217 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -83,6 +83,8 @@ public class MixerRecipes extends SerializableRecipe { register(Fluids.CHLOROCALCITE_SOLUTION, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.WATER, 250)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 250)).setSolid(new OreDictStack(CHLOROCALCITE.dust()))); register(Fluids.CHLOROCALCITE_MIX, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.CHLOROCALCITE_SOLUTION, 500)).setStack2(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new ComparableStack(ModItems.powder_flux))); + register(Fluids.PHEROMONE_M, new MixerRecipe(2000, 10).setStack1(new FluidStack(Fluids.PHEROMONE, 1500)).setStack2(new FluidStack(Fluids.BLOOD, 500)).setSolid(new ComparableStack(ModItems.pill_herbal))); + } public static void register(FluidType type, MixerRecipe... rec) { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 6f74b43d8..6d4a7f299 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -935,6 +935,11 @@ public class ModItems { public static Item fluid_barrel_empty; public static Item fluid_barrel_infinite; + public static Item disperser_canister; + public static Item disperser_canister_empty; + public static Item glyphid_gland; + public static Item glyphid_gland_empty; + public static Item syringe_empty; public static Item syringe_antidote; public static Item syringe_poison; @@ -4639,6 +4644,13 @@ public class ModItems { fluid_barrel_full = new ItemFluidTank().setUnlocalizedName("fluid_barrel_full").setContainerItem(ModItems.fluid_barrel_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); fluid_barrel_empty = new Item().setUnlocalizedName("fluid_barrel_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); fluid_barrel_infinite = new ItemInfiniteFluid(null, 1_000_000_000).setUnlocalizedName("fluid_barrel_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel_infinite"); + + disperser_canister = new ItemDisperser().setUnlocalizedName("disperser_canister").setContainerItem(ModItems.disperser_canister_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":disperser_canister"); + disperser_canister_empty = new Item().setUnlocalizedName("disperser_canister_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":disperser_canister"); + + glyphid_gland = new ItemDisperser().setUnlocalizedName("glyphid_gland").setContainerItem(ModItems.glyphid_gland_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland"); + glyphid_gland_empty = new Item().setUnlocalizedName("glyphid_gland_empty").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland"); + siren_track = new ItemCassette().setUnlocalizedName("siren_track").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":cassette"); fluid_duct = new ItemFluidDuct().setUnlocalizedName("fluid_duct").setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":duct"); @@ -6359,7 +6371,14 @@ public class ModItems { GameRegistry.registerItem(fluid_barrel_empty, fluid_barrel_empty.getUnlocalizedName()); GameRegistry.registerItem(fluid_barrel_full, fluid_barrel_full.getUnlocalizedName()); GameRegistry.registerItem(fluid_barrel_infinite, fluid_barrel_infinite.getUnlocalizedName()); - + + //Disperser Canister + GameRegistry.registerItem(disperser_canister_empty, disperser_canister_empty.getUnlocalizedName()); + GameRegistry.registerItem(disperser_canister, disperser_canister.getUnlocalizedName()); + + GameRegistry.registerItem(glyphid_gland_empty, glyphid_gland_empty.getUnlocalizedName()); + GameRegistry.registerItem(glyphid_gland, glyphid_gland.getUnlocalizedName()); + //Batteries GameRegistry.registerItem(battery_generic, battery_generic.getUnlocalizedName()); GameRegistry.registerItem(battery_red_cell, battery_red_cell.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemFluidTank.java b/src/main/java/com/hbm/items/machine/ItemFluidTank.java index f4c0a3551..ce7a2cd0d 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidTank.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidTank.java @@ -15,7 +15,7 @@ import net.minecraft.util.StatCollector; public class ItemFluidTank extends Item { - IIcon overlayIcon; + protected IIcon overlayIcon; public ItemFluidTank() { this.setHasSubtypes(true); diff --git a/src/main/java/com/hbm/items/weapon/ItemDisperser.java b/src/main/java/com/hbm/items/weapon/ItemDisperser.java new file mode 100644 index 000000000..9971ee3e7 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemDisperser.java @@ -0,0 +1,76 @@ +package com.hbm.items.weapon; + +import com.hbm.entity.grenade.EntityDisperserCanister; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidTank; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.List; + +public class ItemDisperser extends ItemFluidTank { + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + if (!player.capabilities.isCreativeMode) { + --stack.stackSize; + } + + world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); + + if (!world.isRemote) { + + EntityDisperserCanister canister = new EntityDisperserCanister(world, player); + + canister.setType(Item.getIdFromItem(this)); + canister.setFluid(stack.getItemDamage()); + world.spawnEntityInWorld(canister); + + } + + return stack; + } + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tabs, List list) { + + FluidType[] order = Fluids.getInNiceOrder(); + + for(int i = 1; i < order.length; ++i) { + FluidType type = order[i]; + int id = type.getID(); + if(type.isDispersable() && this == ModItems.disperser_canister) { + list.add(new ItemStack(item, 1, id)); + } else if (type == Fluids.PHEROMONE || type == Fluids.SULFURIC_ACID && this == ModItems.glyphid_gland) { + list.add(new ItemStack(item, 1, id)); + } + + } + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + + String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + + s = this == ModItems.glyphid_gland ? s1 + " " + s : s + " " + s1 ; + return s; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister p_94581_1_) { + super.registerIcons(p_94581_1_); + this.overlayIcon = this == ModItems.disperser_canister ? p_94581_1_.registerIcon("hbm:disperser_canister_overlay") : p_94581_1_.registerIcon("hbm:fluid_identifier_overlay"); + } +} diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index d8019a7ea..ea38eed02 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -18,20 +18,7 @@ import com.hbm.tileentity.machine.storage.TileEntitySafe; import com.hbm.tileentity.machine.storage.TileEntitySoyuzCapsule; import com.hbm.util.LootGenerator; import com.hbm.util.WeightedRandomGeneric; -import com.hbm.world.dungeon.AncientTomb; -import com.hbm.world.dungeon.Antenna; -import com.hbm.world.dungeon.ArcticVault; -import com.hbm.world.dungeon.Barrel; -import com.hbm.world.dungeon.CrashedVertibird; -import com.hbm.world.dungeon.DesertAtom001; -import com.hbm.world.dungeon.Factory; -import com.hbm.world.dungeon.LibraryDungeon; -import com.hbm.world.dungeon.Radio01; -import com.hbm.world.dungeon.Relay; -import com.hbm.world.dungeon.Satellite; -import com.hbm.world.dungeon.Silo; -import com.hbm.world.dungeon.Spaceship; -import com.hbm.world.dungeon.Vertibird; +import com.hbm.world.dungeon.*; import com.hbm.world.feature.BedrockOre; import com.hbm.world.feature.BedrockOre.BedrockOreDefinition; import com.hbm.world.feature.DepthDeposit; @@ -242,7 +229,7 @@ public class HbmWorldGen implements IWorldGenerator { int x = i + rand.nextInt(16) + 8; int z = j + rand.nextInt(16) + 8; int y = world.getHeightValue(x, z); - if(world.getBlock(x, y - 1, z).isNormalCube()) GlyphidHive.generate(world, x, y, z, rand); + if(world.getBlock(x, y - 1, z).isNormalCube()) GlyphidHive.generateBigGround(world, x, y, z, rand, false); } if(biome == BiomeGenBase.plains || biome == BiomeGenBase.desert) { @@ -365,6 +352,7 @@ public class HbmWorldGen implements IWorldGenerator { new Dud().generate(world, rand, x, y, z); } + if(WorldConfig.spaceshipStructure > 0 && rand.nextInt(WorldConfig.spaceshipStructure) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); @@ -372,7 +360,6 @@ public class HbmWorldGen implements IWorldGenerator { new Spaceship().generate(world, rand, x, y, z); } - if(WorldConfig.barrelStructure > 0 && biome.temperature >= 1.5F && !biome.canSpawnLightningBolt() && rand.nextInt(WorldConfig.barrelStructure) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); diff --git a/src/main/java/com/hbm/lib/ModDamageSource.java b/src/main/java/com/hbm/lib/ModDamageSource.java index a477d929c..1fe20cf1c 100644 --- a/src/main/java/com/hbm/lib/ModDamageSource.java +++ b/src/main/java/com/hbm/lib/ModDamageSource.java @@ -16,7 +16,7 @@ public class ModDamageSource extends DamageSource { public static DamageSource nuclearBlast = (new DamageSource("nuclearBlast")).setExplosion(); public static DamageSource mudPoisoning = (new DamageSource("mudPoisoning")).setDamageBypassesArmor(); - public static DamageSource acid = (new DamageSource("acid")).setDamageBypassesArmor(); + public static DamageSource acid = (new DamageSource("acid")); //.setDamageBypassesArmor(); public static DamageSource euthanizedSelf = (new DamageSource("euthanizedSelf")).setDamageBypassesArmor(); public static DamageSource euthanizedSelf2 = (new DamageSource("euthanizedSelf2")).setDamageBypassesArmor(); public static DamageSource tauBlast = (new DamageSource("tauBlast")).setDamageBypassesArmor(); @@ -53,6 +53,7 @@ public class ModDamageSource extends DamageSource { public static DamageSource vacuum = (new DamageSource("vacuum")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource overdose = (new DamageSource("overdose")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource microwave = (new DamageSource("microwave")).setDamageIsAbsolute().setDamageBypassesArmor(); + public static DamageSource nitan = (new DamageSource("nitan")).setDamageIsAbsolute().setDamageBypassesArmor().setDamageAllowedInCreativeMode();; public static final String s_bullet = "revolverBullet"; public static final String s_emplacer = "chopperBullet"; diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index b970e1474..a36f143e1 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -522,7 +522,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderWeaponQuadro()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_sauer, new ItemRenderWeaponSauer()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_vortex, new ItemRenderWeaponVortex()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_thompson, new ItemRenderWeaponThompson()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_thompson, new ItemRenderWeaponThompson());; MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderWeaponBolter()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter_digamma, new ItemRenderWeaponBolter()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_fireext, new ItemRenderFireExt()); @@ -613,6 +613,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntitySawblade.class, new RenderSawblade()); RenderingRegistry.registerEntityRenderingHandler(EntityChemical.class, new RenderChemical()); RenderingRegistry.registerEntityRenderingHandler(EntityMist.class, new RenderMist()); + RenderingRegistry.registerEntityRenderingHandler(EntityWaypoint.class, new RenderMist()); RenderingRegistry.registerEntityRenderingHandler(EntityAcidBomb.class, new RenderSnowball(Items.slime_ball)); //grenades RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeGeneric.class, new RenderSnowball(ModItems.grenade_generic)); @@ -660,6 +661,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeDynamite.class, new RenderSnowball(ModItems.stick_dynamite)); RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBouncyGeneric.class, new RenderGenericGrenade()); RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeImpactGeneric.class, new RenderGenericGrenade()); + RenderingRegistry.registerEntityRenderingHandler(EntityDisperserCanister.class, new RenderGenericGrenade()); //missiles RenderingRegistry.registerEntityRenderingHandler(EntityTestMissile.class, new RenderTestMissile()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderGenericGrenade.java b/src/main/java/com/hbm/render/entity/projectile/RenderGenericGrenade.java index cca75e72d..01ff7f5c7 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderGenericGrenade.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderGenericGrenade.java @@ -1,5 +1,7 @@ package com.hbm.render.entity.projectile; +import com.hbm.entity.grenade.EntityDisperserCanister; +import net.minecraft.item.Item; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -16,10 +18,14 @@ public class RenderGenericGrenade extends Render { @Override public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { - - IGenericGrenade grenade = (IGenericGrenade) entity; - - IIcon iicon = grenade.getGrenade().getIconFromDamage(0); + IIcon iicon; + if(entity instanceof EntityDisperserCanister){ + EntityDisperserCanister canister = (EntityDisperserCanister) entity; + iicon = canister.getType().getIconFromDamage(canister.getFluid().getID()); + } else { + IGenericGrenade grenade = (IGenericGrenade) entity; + iicon = grenade.getGrenade().getIconFromDamage(0); + } if(iicon != null) { GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java index 5a95b31ac..c237c9be9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java @@ -1,5 +1,7 @@ package com.hbm.tileentity.machine; + +import com.hbm.config.MobConfig; import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; @@ -29,7 +31,7 @@ public class TileEntityChimneyBrick extends TileEntityChimneyBase { @Override public double getPollutionMod() { - return 0.25D; + return MobConfig.rampantMode ? MobConfig.rampantSmokeStackOverride : 0.25D; } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java index f5a79dce4..80006caf3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyIndustrial.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.config.MobConfig; import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; @@ -29,7 +30,7 @@ public class TileEntityChimneyIndustrial extends TileEntityChimneyBase { @Override public double getPollutionMod() { - return 0.1D; + return MobConfig.rampantMode ? MobConfig.rampantSmokeStackOverride/2 : 0.1D; } @Override diff --git a/src/main/java/com/hbm/world/feature/GlyphidHive.java b/src/main/java/com/hbm/world/feature/GlyphidHive.java index 5c60e3ff2..f7c83e76f 100644 --- a/src/main/java/com/hbm/world/feature/GlyphidHive.java +++ b/src/main/java/com/hbm/world/feature/GlyphidHive.java @@ -4,12 +4,14 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; +import net.minecraft.block.Block; +import com.hbm.util.LootGenerator; import net.minecraft.init.Blocks; import net.minecraft.world.World; public class GlyphidHive { - public static final int[][][] schematic = new int[][][] { + public static final int[][][] schematicBigGround = new int[][][] { { {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, @@ -38,38 +40,38 @@ public class GlyphidHive { }, { {0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,0,3,3,3,0,0,0,0}, {0,0,0,1,1,9,1,1,0,0,0}, {0,0,1,1,9,9,9,1,1,0,0}, - {0,3,1,9,9,9,9,9,1,5,0}, - {0,3,9,9,9,9,9,9,9,5,0}, - {0,3,1,9,9,9,9,9,1,5,0}, + {0,3,1,9,9,9,9,9,1,2,0}, + {0,3,9,9,9,9,9,9,9,2,0}, + {0,3,1,9,9,9,9,9,1,2,0}, {0,0,1,1,9,9,9,1,1,0,0}, {0,0,0,1,1,9,1,1,0,0,0}, {0,0,0,0,2,2,2,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, }, { - {0,0,0,0,0,4,0,0,0,0,0}, - {0,0,0,0,4,4,4,0,0,0,0}, - {0,0,0,1,4,9,4,1,0,0,0}, + {0,0,0,0,0,3,0,0,0,0,0}, + {0,0,0,0,3,3,3,0,0,0,0}, + {0,0,0,1,3,9,3,1,0,0,0}, {0,0,1,1,9,9,9,1,1,0,0}, - {0,3,3,9,9,9,9,9,5,5,0}, - {3,3,9,9,9,9,9,9,9,5,5}, - {0,3,3,9,9,9,9,9,5,5,0}, + {0,3,3,9,9,9,9,9,2,2,0}, + {3,3,9,9,9,9,9,9,9,2,2}, + {0,3,3,9,9,9,9,9,2,2,0}, {0,0,1,1,9,9,9,1,1,0,0}, {0,0,0,1,2,9,2,1,0,0,0}, {0,0,0,0,2,2,2,0,0,0,0}, {0,0,0,0,0,2,0,0,0,0,0}, }, { - {0,0,0,0,4,4,4,0,0,0,0}, - {0,0,0,1,4,4,4,1,0,0,0}, - {0,0,1,1,4,9,4,1,1,0,0}, + {0,0,0,0,3,3,3,0,0,0,0}, + {0,0,0,1,3,3,3,1,0,0,0}, + {0,0,1,1,3,9,3,1,1,0,0}, {0,1,1,1,9,9,0,1,1,1,0}, - {3,3,3,9,9,9,9,9,5,5,5}, - {3,3,9,9,9,9,9,9,9,5,5}, - {3,3,3,9,9,9,9,9,5,5,5}, + {3,3,3,9,9,9,9,9,2,2,2}, + {3,3,9,9,9,9,9,9,9,2,2}, + {3,3,3,9,9,9,9,9,2,2,2}, {0,1,1,1,9,9,9,1,1,1,0}, {0,0,1,1,2,9,2,1,1,0,0}, {0,0,0,1,2,2,2,1,0,0,0}, @@ -102,21 +104,21 @@ public class GlyphidHive { {0,0,0,0,0,0,0,0,0,0,0}, } }; - - public static void generate(World world, int x, int y, int z, Random rand) { + public static void generateBigGround(World world, int x, int y, int z, Random rand, boolean openDesign) { - int orientation = rand.nextInt(4) + 2; + int orientation = rand.nextInt(2) + 2; for(int i = 0; i < 11; i++) { for(int j = 0; j < 7; j++) { for(int k = 0; k < 11; k++) { - int block = schematic[6 - j][i][k]; - - if(block == 1 || (block != orientation && block > 1 && block < 6)) { + int block = schematicBigGround[6 - j][i][k]; + + boolean hasWall = !openDesign && (block != orientation && block > 1 && block < 6); + + if(block == 1 || hasWall) { world.setBlock(x + i - 5, y + j - 2, z + k - 5, ModBlocks.glyphid_base); - } - if(block == 9) { + } else if (block != 0) { world.setBlock(x + i - 5, y + j - 2, z + k - 5, Blocks.air); } } @@ -124,5 +126,8 @@ public class GlyphidHive { } world.setBlock(x, y - 1, z, ModBlocks.glyphid_spawner); + } + } + diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f6aad2998..c09e495eb 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -577,6 +577,7 @@ chem.KEVLAR=Kevlar Compound Production chem.LPG=Petroleum Gas Liquefaction chem.LUBRICANT=Lubricant Mixing chem.METH=Methamphetamine Synthesis +chem.MEAT_PROCESSING=Glyphid Meat Mineral Extraction chem.NITAN=NITAN Super Fuel Mixing chem.NITRIC_ACID=Nitric Acid Production chem.OIL_SAND=Tar Sand Extraction @@ -846,6 +847,7 @@ death.attack.mku=%1$s died from unknown causes. death.attack.monoxide=%1$s forgot to change the batteries in their carbon monoxide detector. death.attack.mudPoisoning=%1$s died in poisonous mud. death.attack.nuclearBlast=%1$s was blown away by a nuclear explosion. +death.attack.nitan=%1$s was consumed by taint. death.attack.overdose=%1$s overdosed and asphyxiated. death.attack.pc=%1$s was reduced to a puddle in the pink cloud. death.attack.plasma=%1$s was immolated by %2$s. @@ -951,6 +953,7 @@ desc.item.ammo.pro_explosive=+ Explosive desc.item.ammo.pro_fallout=+ Fallout desc.item.ammo.pro_fit_357=+ Fits every .357 model desc.item.ammo.pro_flames=+ Increased flame count +desc.item.ammo.pro_flash=+ ow my eyes desc.item.ammo.pro_gravity=+ Decreased gravity desc.item.ammo.pro_heavy_damage=+ Highly increased damage desc.item.ammo.pro_incendiary=+ Incendiary @@ -1118,6 +1121,7 @@ gun.make.MANN=Open Mann Co. gun.make.MAXIM=Hiram Maxim gun.make.METRO=Metro Gunsmiths gun.make.MWT=MWT Prototype Labs +gun.make.MORITA=Morita Company gun.make.NAWS=Kayarm Industries gun.make.ERFURT=Erfurter Maschinenfabrik Geipel gun.make.NONE=- @@ -1404,6 +1408,10 @@ hbmfluid.woodoil=Wood Oil hbmfluid.xenon=Xenon Gas hbmfluid.xpjuice=Experience Juice hbmfluid.xylene=BTX +hbmfluid.caulk=Quick-Hardening Caulk +hbmfluid.pheromone=Booster Pheromone +hbmfluid.pheromone_m=Modified Booster Pheromone + hbmpseudofluid.none=Empty hbmpseudofluid.heuf6=Highly Enriched UF6 hbmpseudofluid.meuf6=Medium Enriched UF6 @@ -1580,6 +1588,9 @@ item.ammo_44_star.name=.44 Magnum Bullet (Starmetal) item.ammo_45.name=.45 ACP Bullet item.ammo_45_ap.name=.45 ACP Bullet (AP) item.ammo_45_du.name=.45 ACP Bullet (DU) +item.ammo_45_drum.name=.45 ACP 100 Round Drum +item.ammo_45_drum_ap.name=.45 ACP 100 Round Drum (AP) +item.ammo_45_drum_du.name=.45 ACP 100 Round Drum (DU) item.ammo_4gauge.name=4 Gauge Buckshot item.ammo_4gauge_balefire.name=23mm Balefire Grenade item.ammo_4gauge_canister.name=23mm Rocket (Canister Shot) @@ -1592,6 +1603,8 @@ item.ammo_4gauge_semtex.name=23mm Mining Charge item.ammo_4gauge_sleek.name=4 Gauge Buckshot (IF-R&D) item.ammo_4gauge_slug.name=4 Gauge Solid Steel Slug item.ammo_4gauge_titan.name=4 Gauge Quacker Round +item.ammo_4gauge_flash1.name=4 Gauge Hviezda Round +item.ammo_4gauge_flash2.name=4 Gauge Hviezda-S Round item.ammo_4gauge_vampire.name=4 Gauge Wooden Stake Shell item.ammo_4gauge_void.name=4 Gauge Void Shell item.ammo_50ae.name=.50 AE Round @@ -2487,6 +2500,8 @@ item.flame_politics.desc=Donald Duck will build the wall! item.flame_pony.name=Painting of a Cartoon Pony item.flame_pony.desc=Yellow horse beats blue horse, that's a proven fact! item.flask_infusion.shield.name=Shield Infusion +item.flask_infusion.nitan.name=NITAN© Ambrosia +item.flask_infusion.nitan.desc=Painkiller for medical and recreational use only. item.fleija_core.name=F.L.E.I.J.A. Uranium 235 Charge item.fleija_igniter.name=Pulse Igniter item.fleija_kit.name=F.L.E.I.J.A. Kit @@ -2614,6 +2629,13 @@ item.grenade_smart.name=Smart Grenade item.grenade_strong.name=Enhanced Grenade item.grenade_tau.name=Tau Grenade item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade + +item.disperser_canister.name= Disperser Canister: +item.disperser_canister_empty.name= Disperser Canister + +item.glyphid_gland.name= Gland +item.glyphid_gland_empty.name= Glyphid's Fluid Gland + item.gun_ar15.name=Josh item.gun_avenger.name=CZ57 Avenger Minigun item.gun_b92.name=§9B92 Energy Pistol§r @@ -2671,6 +2693,7 @@ item.gun_lacunae_ammo.name=5mm Round (LEGACY) item.gun_lever_action.name=Mare's Leg (Original) item.gun_lever_action_ammo.name=12x74 Buckshot (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dark) +item.gun_lever_action_akimbo.name=Mare's Leg (Dusk) item.gun_lever_action_sonata.name=Flipped Mare's Leg item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r item.gun_lunatic_marksman.name=Lunatic Sniper Rifle @@ -2679,6 +2702,8 @@ item.gun_minigun.name=CZ53 Personal Minigun item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" item.gun_mirv_ammo.name=Eightfold MIRV (LEGACY) item.gun_moist_nugget.name=Mosin-Nagant +item.gun_morita.name=Morita Assault Rifle +item.gun_morita_carbine.name=Morita Carbine item.gun_mp.name=Pacifist's Machine Gun item.gun_mp40.name=Submachine Gun item.gun_mp40_ammo.name=Submachine Gun Round (LEGACY) @@ -2729,6 +2754,7 @@ item.gun_super_shotgun.name=Super Shotgun item.gun_super_shotgun.desc=It's super broken! item.gun_supershotgun.name=Super Shotgun item.gun_thompson.name=Thompson Submachine Gun +item.gun_typewriter.name=The Chicago Typewriter item.gun_uac_pistol.name=UAC .45 Pistol item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 Buckshot (LEGACY) @@ -3197,6 +3223,7 @@ item.mp_warhead_15_n2.name=Size 15 N² Mine item.mp_warhead_15_nuclear.name=Size 15 Nuclear Warhead item.mp_warhead_15_nuclear_mimi.name=Size 15 Mimi-chan's Head item.mp_warhead_15_nuclear_shark.name=Size 15 Nuclear Warhead +item.mp_warhead_15_mirv.name=Size 15 MIRV Warhead item.mp_warhead_15_turbine.name=Size 15 Jet Engine item.mucho_mango.name=AriZona Mucho Mango item.multi_kit.name=Multi Purpose Bomb Kit @@ -4271,7 +4298,7 @@ item.warhead_incendiary_large.name=Large Incendiary Warhead item.warhead_incendiary_medium.name=Medium Incendiary Warhead item.warhead_incendiary_small.name=Small Incendiary Warhead item.warhead_mirv.name=Thermonuclear Warhead -item.warhead_mirvlet.name=MIRV +item.warhead_mirvlet.name=Compact Nuclear Warhead item.warhead_nuclear.name=Nuclear Warhead item.warhead_thermo_endo.name=Endothermic Warhead item.warhead_thermo_exo.name=Exothermic Warhead @@ -4369,6 +4396,7 @@ potion.hbm_radiation=Contaminated potion.hbm_radx=Rad-X potion.hbm_stability=Stability potion.hbm_taint=Tainted +potion.hbm_nitan=Ambrosia potion.hbm_telekinesis=! ! ! radar.clearMap=Clear Map @@ -4861,7 +4889,12 @@ tile.door_office.name=Office Door tile.ducrete.name=Ducrete Tile tile.ducrete_stairs.name=Ducrete Tile Stairs tile.ducrete_smooth.name=Ducrete + +tile.concrete_debris.name=Concrete Debris +tile.ducrete_debris.name=Ducrete Debris + tile.ducrete_smooth_stairs.name=Ducrete Stairs + tile.dummy_block.name=Dummy Block tile.dummy_port.name=Dummy Block (Electricity Port) tile.dungeon_chain.name=Metal Chain @@ -4954,6 +4987,7 @@ tile.glass_quartz.name=Quartz Glass tile.glass_trinitite.name=Trinity Glass tile.glass_uranium.name=Uranium Glass tile.glyphid_base.name=Glyphid Hive Block +tile.glyphid_support.name=Glyphid Hive Support Block tile.glyphid_spawner.name=Glyphid Hive Spawner tile.gneiss_brick.name=Schist Brick tile.gneiss_chiseled.name=Chiseled Schist diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/pheromone.png b/src/main/resources/assets/hbm/textures/gui/fluids/pheromone.png new file mode 100644 index 0000000000000000000000000000000000000000..8517917d84533de3b5217a1acaf6867d04c4d4ae GIT binary patch literal 423 zcmV;Y0a*TtP)Px#1ZP1_K>z@;j|==^1poj5a!^cEMPsV$V5jLhg~w>G@nx*; zS)k%{yZv&x`$>?}YO(Wnz5jc{|4xrj{3UZv+egT;8i|9{5+Z?^bt zwDw=7=s<_bLyF9L!T)Ej@Kv1NM~=`>me@>_)lHPvfyn=Ys1E-C000SaNLh0L01m?d z01m?e$8V@)0002KNklzirr*>x(&DlVo*#a#V;DJns_xGAa+A0s`enL0CdCdU(nD-EFm zldecu*MaChHZx#9YWXaMkppXSr_z?&J+kF5Jcg>U?7Z)u=H?i`X*y{b9>Ipm|E&ES{*Px#1ZP1_K>z@;j|==^1poj5a!^cEMN-qcPtdnU$F57vvp~V9F|wI0u9a8Vzf{${ zNXf8cd{u$zC^{WHn*NWzot99qddK&aPio7R`6y3000SaNLh0L01m?d z01m?e$8V@)0002KNklzirr*>x(&DlVo*#a#V;DJns_xGAa+A0s`enL0CdCdU(nD-EFm zldecu*MaChHZx#9YWXaMkppXSr_z?&J+kF5Jcg>U?7Z)u=H?i`X*y{b9>Ipm|E&ES{*NS%G}Z0G|+7?|P@O1>O~#3WN>#o3_^^uZl`q5gD^MP&H64du@_Qg076cSjVoW zv{kV&O9Lx66$JNri|B&v*{Rmh3#5cgg8YL2V*rLtwRbpx(wqezk;M!Qe1}1p@p%4< z6rfz5;L{CK3`{*bZ+PzS zt4;p#@iDt|*zGg_|4Yu4n6fV}b;AFDoU53a4*0pUD=be>Nio<{{k`wu)6>&=m{z~%jvftP0!EI zZ{}^_I(TqRYdM- T=T*-Kh8BaTtDnm{r-UW|A}N;B literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/disperser_canister_overlay.png b/src/main/resources/assets/hbm/textures/items/disperser_canister_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..2fdf3d9419511af0d49b291a3a4d4f413c184177 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|>0G|-oqeqYa|NsBqy?a1`Y3JSxg4C4+`2_<78631$egX113p^r=85sEX zgD|57Yp@DX(A?9-F+?MHZI2-zg8>H<p5_~d n1sA4TF690l!uI=>ZHGtWNv5kQnbP0l+XkKRR}&> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/glyphid_gland.png b/src/main/resources/assets/hbm/textures/items/glyphid_gland.png new file mode 100644 index 0000000000000000000000000000000000000000..0b1a48e6f533324bd8028b67403ec9f99d30caf7 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1en@P(&~V~B-+vP8iFj-`POtJYqt7x??=b~qcS zUS8Yn_VtOO>`WG_6}?XnwquVZ z_%T1QHSzLAasLA*9>p6bSm1l5^d4C6{i1#5{)q?g_tyuA z$uVqVoULo{;8|*`V*f)XZO%*$ZsD3AUztxGVr=-A&UEv^)8yudT)x$^JKipcVB~(p zq|lnC=T_kQ%)!iqCxtPDgU?_Q&&~d-LrFaL|NkZK`1w%wu=?c;wPTXGExBz*2N{mI fi%aJ;G%_+MnfR|cq3xam^fQB}tDnm{r-UW|{xp19 literal 0 HcmV?d00001 From 56e7d2d83cc856fef483d2c2c7c0f1dbbb39f422 Mon Sep 17 00:00:00 2001 From: KoblizekXD Date: Fri, 8 Dec 2023 11:15:08 +0100 Subject: [PATCH 161/207] add non worky code --- .../com/hbm/packet/LoopedSoundPacket.java | 24 ++++++------ src/main/java/com/hbm/sound/SoundLoopFel.java | 37 ++++++++++++++++++ .../resources/assets/hbm/sounds/block/fel.ogg | Bin 0 -> 160719 bytes 3 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/hbm/sound/SoundLoopFel.java create mode 100644 src/main/resources/assets/hbm/sounds/block/fel.ogg diff --git a/src/main/java/com/hbm/packet/LoopedSoundPacket.java b/src/main/java/com/hbm/packet/LoopedSoundPacket.java index 44d9339bf..fc19692b3 100644 --- a/src/main/java/com/hbm/packet/LoopedSoundPacket.java +++ b/src/main/java/com/hbm/packet/LoopedSoundPacket.java @@ -1,17 +1,8 @@ package com.hbm.packet; import com.hbm.interfaces.Spaghetti; -import com.hbm.sound.SoundLoopAssembler; -import com.hbm.sound.SoundLoopBroadcaster; -import com.hbm.sound.SoundLoopCentrifuge; -import com.hbm.sound.SoundLoopMiner; -import com.hbm.sound.SoundLoopTurbofan; -import com.hbm.tileentity.machine.TileEntityBroadcaster; -import com.hbm.tileentity.machine.TileEntityMachineAssembler; -import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; -import com.hbm.tileentity.machine.TileEntityMachineGasCent; -import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; -import com.hbm.tileentity.machine.TileEntityMachineTurbofan; +import com.hbm.sound.*; +import com.hbm.tileentity.machine.*; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -137,6 +128,17 @@ public class LoopedSoundPacket implements IMessage { if(flag && te.getWorldObj().isRemote && ((TileEntityMachineGasCent)te).isProgressing) Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopCentrifuge(new ResourceLocation("hbm:block.centrifugeOperate"), te)); } + + if (te != null && te instanceof TileEntityFEL) { + boolean flag = true; + for(int i = 0; i < SoundLoopFel.list.size(); i++) { + if (SoundLoopFel.list.get(i).getTE() == te && !SoundLoopFel.list.get(i).isDonePlaying()) + flag = false; + } + + if(flag && te.getWorldObj().isRemote && ((TileEntityFEL)te).isOn) + Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopFel(new ResourceLocation("hbm:block.fel"), (TileEntityFEL) te)); + } return null; } } diff --git a/src/main/java/com/hbm/sound/SoundLoopFel.java b/src/main/java/com/hbm/sound/SoundLoopFel.java new file mode 100644 index 000000000..b12026ed2 --- /dev/null +++ b/src/main/java/com/hbm/sound/SoundLoopFel.java @@ -0,0 +1,37 @@ +package com.hbm.sound; + +import com.hbm.tileentity.machine.TileEntityFEL; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +import java.util.ArrayList; +import java.util.List; + +public class SoundLoopFel extends SoundLoopMachine { + + public static List list = new ArrayList<>(); + + private TileEntityFEL plant; + + public SoundLoopFel(ResourceLocation path, TileEntityFEL te) { + super(path, te); + list.add(this); + plant = te; + } + + @Override + public void update() { + super.update(); + + if(this.volume != 3) + volume = 3; + + if(!plant.isOn) + this.donePlaying = true; + } + + public TileEntity getTE() { + return te; + } +} diff --git a/src/main/resources/assets/hbm/sounds/block/fel.ogg b/src/main/resources/assets/hbm/sounds/block/fel.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f5927a707b949b09e25e6de699bbc1d273d1908e GIT binary patch literal 160719 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�?)W{c%K9)f0Vinq(jJGe5-V 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 Date: Fri, 8 Dec 2023 11:53:00 +0100 Subject: [PATCH 162/207] certified fel sound --- .../com/hbm/packet/LoopedSoundPacket.java | 11 ------ src/main/java/com/hbm/sound/SoundLoopFel.java | 37 ------------------ .../hbm/tileentity/machine/TileEntityFEL.java | 39 ++++++++++++++++++- src/main/resources/assets/hbm/sounds.json | 1 + 4 files changed, 39 insertions(+), 49 deletions(-) delete mode 100644 src/main/java/com/hbm/sound/SoundLoopFel.java diff --git a/src/main/java/com/hbm/packet/LoopedSoundPacket.java b/src/main/java/com/hbm/packet/LoopedSoundPacket.java index fc19692b3..ed0ff966b 100644 --- a/src/main/java/com/hbm/packet/LoopedSoundPacket.java +++ b/src/main/java/com/hbm/packet/LoopedSoundPacket.java @@ -128,17 +128,6 @@ public class LoopedSoundPacket implements IMessage { if(flag && te.getWorldObj().isRemote && ((TileEntityMachineGasCent)te).isProgressing) Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopCentrifuge(new ResourceLocation("hbm:block.centrifugeOperate"), te)); } - - if (te != null && te instanceof TileEntityFEL) { - boolean flag = true; - for(int i = 0; i < SoundLoopFel.list.size(); i++) { - if (SoundLoopFel.list.get(i).getTE() == te && !SoundLoopFel.list.get(i).isDonePlaying()) - flag = false; - } - - if(flag && te.getWorldObj().isRemote && ((TileEntityFEL)te).isOn) - Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopFel(new ResourceLocation("hbm:block.fel"), (TileEntityFEL) te)); - } return null; } } diff --git a/src/main/java/com/hbm/sound/SoundLoopFel.java b/src/main/java/com/hbm/sound/SoundLoopFel.java deleted file mode 100644 index b12026ed2..000000000 --- a/src/main/java/com/hbm/sound/SoundLoopFel.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.hbm.sound; - -import com.hbm.tileentity.machine.TileEntityFEL; -import net.minecraft.client.audio.MovingSound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -import java.util.ArrayList; -import java.util.List; - -public class SoundLoopFel extends SoundLoopMachine { - - public static List list = new ArrayList<>(); - - private TileEntityFEL plant; - - public SoundLoopFel(ResourceLocation path, TileEntityFEL te) { - super(path, te); - list.add(this); - plant = te; - } - - @Override - public void update() { - super.update(); - - if(this.volume != 3) - volume = 3; - - if(!plant.isOn) - this.donePlaying = true; - } - - public TileEntity getTE() { - return te; - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java index 40b8b27e3..f1b1c1a28 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java @@ -13,6 +13,7 @@ import com.hbm.items.machine.ItemFELCrystal; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.ContaminationUtil; @@ -36,6 +37,7 @@ import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -49,6 +51,8 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser, public boolean missingValidSilex = true ; public int distance; public List entities = new ArrayList(); + private int audioDuration = 0; + private AudioWrapper audio; public TileEntityFEL() { @@ -179,6 +183,34 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser, data.setBoolean("valid", missingValidSilex); data.setInteger("distance", distance); this.networkPack(data, 250); + } else { + + if(isOn) { + audioDuration += 2; + } else { + audioDuration -= 3; + } + + audioDuration = MathHelper.clamp_int(audioDuration, 0, 60); + + if(audioDuration > 10) { + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.updatePitch((audioDuration - 10) / 100F + 0.5F); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } } } @@ -234,7 +266,12 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser, nbt.setBoolean("valid", missingValidSilex); nbt.setInteger("distance", distance); } - + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.fel", xCoord, yCoord, zCoord, 2.0F, 10F, 2.0F); + } + @Override public AxisAlignedBB getRenderBoundingBox() { return INFINITE_EXTENT_AABB; diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index b77fef3b1..c071a37b1 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -59,6 +59,7 @@ "block.hornFarSingle": {"category": "block", "sounds": [{"name": "block/hornFarSingle", "stream": false}]}, "block.hornFarDual": {"category": "block", "sounds": [{"name": "block/hornFarDual", "stream": false}]}, "block.reactorLoop": {"category": "block", "sounds": [{"name": "block/reactorLoop", "stream": false}]}, + "block.fel": {"category": "block", "sounds": [{"name": "block/fel", "stream": false}]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, From ab9f5432a5da397d0ede3295fe73b922eaa1378b Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Fri, 8 Dec 2023 18:54:15 -0500 Subject: [PATCH 163/207] made the tasks comprehensible --- .../com/hbm/entity/mob/EntityGlyphid.java | 48 +++++++++++-------- .../hbm/entity/mob/EntityGlyphidNuclear.java | 10 ++-- .../hbm/entity/mob/EntityGlyphidScout.java | 26 +++++----- 3 files changed, 47 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index 157e21a89..5699f060f 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -62,6 +62,15 @@ public class EntityGlyphid extends EntityMob { public int blastResToDig = Math.min((int) (50 * (getScale() * 2)), 150); public boolean shouldDig; + // Tasks + + public static final int none = 0; + public static final int comm = 1; + public static final int expand = 2; + public static final int reinforcements = 3; + public static final int follow = 4; + public static final int terraform = 5; + public static final int dig = 6; EntityWaypoint taskWaypoint = null; public EntityGlyphid(World world) { super(world); @@ -115,14 +124,14 @@ public class EntityGlyphid extends EntityMob { onBlinded(); } - if(getCurrentTask() == 4){ + if(getCurrentTask() == follow){ //incase the waypoint somehow doesn't exist and it got this task anyway - if(isAtDestination() && taskX == 0) { - setCurrentTask(0, null); + if(isAtDestination() && taskX == none) { + setCurrentTask(none, null); } //the task cannot be 6 outside of rampant, so this is a non issue p much - } else if (getCurrentTask() == 6 && ticksExisted % 20 == 0 && isAtDestination()) { + } else if (getCurrentTask() == dig && ticksExisted % 20 == 0 && isAtDestination()) { swingItem(); ExplosionVNT vnt = new ExplosionVNT(worldObj, taskX, taskY + 2, taskZ, blastSize, this); @@ -161,7 +170,7 @@ public class EntityGlyphid extends EntityMob { @Override protected void updateWanderPath() { - if(getCurrentTask() == 0) { + if(getCurrentTask() == none) { super.updateWanderPath(); } } @@ -176,7 +185,8 @@ public class EntityGlyphid extends EntityMob { // hell yeah!! if (useExtendedTargeting() && this.entityToAttack != null) { this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, true, true)); - } else if (getCurrentTask() != 0) { + } else if (getCurrentTask() != none) { + this.worldObj.theProfiler.startSection("stroll"); if (!isAtDestination()) { @@ -193,11 +203,11 @@ public class EntityGlyphid extends EntityMob { } - if (taskX != 0) { + if (taskX != none) { if(MobConfig.rampantDig) { MovingObjectPosition obstacle = findWaypointObstruction(); - if (getScale() >= 1 && getCurrentTask() != 6 && obstacle != null) { + if (getScale() >= 1 && getCurrentTask() != dig && obstacle != null) { digToWaypoint(obstacle); } else { Vec3 vec = Vec3.createVectorHelper(posX, posY, posZ); @@ -260,7 +270,7 @@ public class EntityGlyphid extends EntityMob { @Override protected boolean canDespawn() { - return ticksExisted > 3500 && entityToAttack == null && getCurrentTask() == 0; + return ticksExisted > 3500 && entityToAttack == null && getCurrentTask() == none; } @Override @@ -444,16 +454,16 @@ public class EntityGlyphid extends EntityMob { switch(task){ //call for reinforcements - case 1: if(taskWaypoint != null){ - communicate(4, taskWaypoint); - setCurrentTask(4, taskWaypoint); + case comm: if(taskWaypoint != null){ + communicate(follow, taskWaypoint); + setCurrentTask(follow, taskWaypoint); } break; //expand the hive, used by the scout //case 2: expandHive(null); //retreat - case 3: + case reinforcements: if (!worldObj.isRemote && taskWaypoint == null) { @@ -463,15 +473,15 @@ public class EntityGlyphid extends EntityMob { //First, go home and get reinforcements EntityWaypoint home = new EntityWaypoint(worldObj); - home.setWaypointType(1); + home.setWaypointType(comm); home.setAdditionalWaypoint(additional); home.setHighPriority(); home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); worldObj.spawnEntityInWorld(home); this.taskWaypoint = home; - communicate(4, home); - setCurrentTask(4, taskWaypoint); + communicate(follow, home); + setCurrentTask(follow, taskWaypoint); break; } @@ -482,7 +492,7 @@ public class EntityGlyphid extends EntityMob { //fifth task is used only in the scout and big man johnson, for terraforming //dig - case 6: + case dig: shouldDig = true; break; @@ -554,13 +564,13 @@ public class EntityGlyphid extends EntityMob { previousTask = getCurrentTask(); previousWaypoint = getWaypoint(); - setCurrentTask(6, target); + setCurrentTask(dig, target); Vec3 vec = Vec3.createVectorHelper(posX, posY, posZ); int maxDist = (int) (Math.sqrt(vec.squareDistanceTo(taskX, taskY, taskZ)) * 1.2); this.setPathToEntity(PathFinderUtils.getPathEntityToCoordPartial(worldObj, this, taskX, taskY, taskZ, maxDist, true, false, true, true)); - communicate(6, target); + communicate(dig, target); } ///DIGGING END diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java index 179a56d54..bb617e2b0 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java @@ -51,15 +51,15 @@ public class EntityGlyphidNuclear extends EntityGlyphid { public void onUpdate() { super.onUpdate(); if (ticksExisted % 20 == 0) { - if (isAtDestination() && getCurrentTask() == 4) { - setCurrentTask(0, null); + if (isAtDestination() && getCurrentTask() == follow) { + setCurrentTask(none, null); } - if(getCurrentTask() == 2 && getAITarget() == null){ + if(getCurrentTask() == expand && getAITarget() == null){ this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 10 * 20, 3)); } - if (getCurrentTask() == 5) { + if (getCurrentTask() == terraform) { this.setHealth(0); } @@ -131,7 +131,7 @@ public class EntityGlyphidNuclear extends EntityGlyphid { ++this.deathTicks; if(!hasWaypoint) { - communicate(3, null); + communicate(reinforcements, null); hasWaypoint = true; } if(deathTicks == 90){ diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java index 8c9e5db93..c1a24ad99 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java @@ -69,7 +69,7 @@ public class EntityGlyphidScout extends EntityGlyphid { super.onUpdate(); - if((getCurrentTask() != 2 || getCurrentTask() != 5) && taskWaypoint == null) { + if((getCurrentTask() != expand || getCurrentTask() != terraform) && taskWaypoint == null) { if(MobConfig.rampantGlyphidGuidance && PollutionHandler.targetCoords != null){ if(!hasTarget) { @@ -98,7 +98,7 @@ public class EntityGlyphidScout extends EntityGlyphid { } - if(getCurrentTask() == 2 || getCurrentTask() == 5) { + if(getCurrentTask() == expand || getCurrentTask() == terraform) { if(!worldObj.isRemote && !hasTarget) { //Check for whether a big man johnson is nearby, this makes the scout switch into its terraforming task @@ -123,8 +123,8 @@ public class EntityGlyphidScout extends EntityGlyphid { } } - if (getCurrentTask() == 5 && super.isAtDestination() && doubleCheckHive()) { - communicate(5, taskWaypoint); + if (getCurrentTask() == terraform && super.isAtDestination() && doubleCheckHive()) { + communicate(terraform, taskWaypoint); } if (ticksExisted % 10 == 0 && isAtDestination()) { @@ -135,11 +135,11 @@ public class EntityGlyphidScout extends EntityGlyphid { EntityWaypoint additional = new EntityWaypoint(worldObj); additional.setLocationAndAngles(posX, posY, posZ, 0, 0); - additional.setWaypointType(0); + additional.setWaypointType(none); //First, go home and get reinforcements EntityWaypoint home = new EntityWaypoint(worldObj); - home.setWaypointType(1); + home.setWaypointType(comm); home.setAdditionalWaypoint(additional); home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); home.maxAge = 1200; @@ -149,7 +149,7 @@ public class EntityGlyphidScout extends EntityGlyphid { this.taskWaypoint = home; this.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 40 * 20, 10)); - communicate(1, taskWaypoint); + communicate(comm, taskWaypoint); } else if (timer >= 5) { @@ -161,7 +161,7 @@ public class EntityGlyphidScout extends EntityGlyphid { this.setDead(); } else { - communicate(4, taskWaypoint); + communicate(follow, taskWaypoint); } } } @@ -182,7 +182,7 @@ public class EntityGlyphidScout extends EntityGlyphid { Block block = worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); if (block == ModBlocks.glyphid_base) { - setCurrentTask(0 ,null); + setCurrentTask(none ,null); hasTarget = false; return false; } @@ -194,7 +194,7 @@ public class EntityGlyphidScout extends EntityGlyphid { @Override public boolean isAtDestination() { - return this.getCurrentTask() == 2 && super.isAtDestination(); + return this.getCurrentTask() == expand && super.isAtDestination(); } public boolean findJohnson(){ @@ -252,7 +252,7 @@ public class EntityGlyphidScout extends EntityGlyphid { //updates the task coordinates setCurrentTask(getCurrentTask(), taskWaypoint); - communicate(2, taskWaypoint); + communicate(expand, taskWaypoint); } return true; } @@ -264,7 +264,7 @@ public class EntityGlyphidScout extends EntityGlyphid { public void carryOutTask() { if (!worldObj.isRemote && taskWaypoint == null) { switch(getCurrentTask()){ - case 3: + case reinforcements: this.removePotionEffect(Potion.moveSlowdown.id); this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 20 * 20, 4)); @@ -286,7 +286,7 @@ public class EntityGlyphidScout extends EntityGlyphid { break; //terraforming task, only used if a big man johnson is near the scout - case 5: + case terraform: scoutingRange = 60; minDistanceToHive = 20; } From 897308cb7f97ac405fc21b05911a0c1777aed2e1 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Fri, 8 Dec 2023 19:35:02 -0500 Subject: [PATCH 164/207] e --- src/main/java/com/hbm/config/MobConfig.java | 1 - .../java/com/hbm/entity/effect/EntityMist.java | 18 ++++++++---------- .../hbm/handler/guncfg/Gun12GaugeFactory.java | 2 +- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index 81724a61b..59f6c9e3f 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -151,7 +151,6 @@ public class MobConfig { config.addCustomCategoryComment(CATEGORY,rampantDesc); - //TODO: Disable this before release rampantMode = CommonConfig.createConfigBool(config, CATEGORY, "12.R01_rampantMode", "The main rampant mode toggle, enables all other features associated with it", false); config.addCustomCategoryComment(CATEGORY, "The individual features of rampant can be used regardless of whether the main rampant toggle is enabled or not"); diff --git a/src/main/java/com/hbm/entity/effect/EntityMist.java b/src/main/java/com/hbm/entity/effect/EntityMist.java index 8537520b2..713ebf06e 100644 --- a/src/main/java/com/hbm/entity/effect/EntityMist.java +++ b/src/main/java/com/hbm/entity/effect/EntityMist.java @@ -206,18 +206,16 @@ public class EntityMist extends Entity { FT_Pheromone pheromone = type.getTrait(FT_Pheromone.class); if(living != null) { - living.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 60 * 20, 1)); - living.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 2 * 60 * 20, 1)); - living.addPotionEffect(new PotionEffect(Potion.regeneration.id, 2 * 20, 0)); + if ((living instanceof EntityGlyphid && pheromone.getType() == 1) || (living instanceof EntityPlayer && pheromone.getType() == 2)) { + int mult = pheromone.getType(); - if (living instanceof EntityGlyphid && pheromone.getType() == 1) { - living.addPotionEffect(new PotionEffect(Potion.resistance.id, 60 * 20, 0)); - living.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 60 * 20, 1)); - living.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 60 * 20, 0)); + living.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, mult * 60 * 20, 1)); + living.addPotionEffect(new PotionEffect(Potion.digSpeed.id, mult * 60 * 20, 1)); + living.addPotionEffect(new PotionEffect(Potion.regeneration.id, mult * 2 * 20, 0)); + living.addPotionEffect(new PotionEffect(Potion.resistance.id, mult * 60 * 20, 0)); + living.addPotionEffect(new PotionEffect(Potion.damageBoost.id, mult * 60 * 20, 1)); + living.addPotionEffect(new PotionEffect(Potion.fireResistance.id, mult * 60 * 20, 0)); - } else if (living instanceof EntityPlayer && pheromone.getType() == 2) { - living.addPotionEffect(new PotionEffect(Potion.resistance.id, 2 * 60 * 20, 0)); - living.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 2 * 60 * 20, 1)); } } } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java index 424deacfc..0a31c1634 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -107,7 +107,7 @@ public class Gun12GaugeFactory { config.comment.add("\"Here, I have a more suitable gun for you. You'll need it - Catch!\""); config.comment.add("Alt-fire with Mouse 2 (Right-click) to fire 2 shells at once"); - config.config = HbmCollection.g12; + config.config = HbmCollection.g12hs; config.animations.put(AnimType.CYCLE, new BusAnimation() .addBus("SPAS_RECOIL_TRANSLATE", new BusAnimationSequence() From 5cad503fa70a8b91b793187557d74117d14356fd Mon Sep 17 00:00:00 2001 From: 9Valjews <64272884+9Valjew@users.noreply.github.com> Date: Sun, 10 Dec 2023 10:01:37 +0200 Subject: [PATCH 165/207] A way to link radars and orbital deathrays, works, I hate Hebrew encoding it makes every little file save a 50 minute task --- .../java/com/hbm/crafting/ToolRecipes.java | 3 +- src/main/java/com/hbm/items/ModItems.java | 5 +- .../java/com/hbm/items/tool/ItemSatRelay.java | 19 ++ .../machine/TileEntityMachineRadarNT.java | 19 ++ src/main/resources/assets/hbm/lang/en_US.lang | 321 +++++++++--------- .../assets/hbm/textures/items/sat_relay.png | Bin 0 -> 486 bytes 6 files changed, 205 insertions(+), 162 deletions(-) create mode 100644 src/main/java/com/hbm/items/tool/ItemSatRelay.java create mode 100644 src/main/resources/assets/hbm/textures/items/sat_relay.png diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 3ab160158..598c9fd41 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -127,7 +127,8 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', ModItems.bolt_tungsten, 'I', W.ingot(), 'P', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', ANY_RESISTANTALLOY.ingot(), 'R', ModItems.reacher, 'C', ModItems.circuit_aluminium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.sat_designator, 1), new Object[] { "RRD", "PIC", " P", 'P', GOLD.plate(), 'R', Items.redstone, 'C', ModItems.circuit_gold, 'D', ModItems.sat_chip, 'I', GOLD.ingot() }); - + CraftingManager.addShapelessAuto(new ItemStack(ModItems.sat_relay), new Object[] { ModItems.sat_chip, ModItems.ducttape, ModItems.radar_linker }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', PB.ingot(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.power_net_tool), new Object[] { "WRW", " I ", " B ", 'W', ModItems.wire_red_copper, 'R', REDSTONE.dust(), 'I', IRON.ingot(), 'B', ModItems.battery_su }); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 539beed9e..4cdc63fc2 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1487,6 +1487,7 @@ public class ModItems { public static Item sat_interface; public static Item sat_coord; public static Item sat_designator; + public static Item sat_relay; public static ItemEnumMulti ammo_misc; public static ItemEnumMulti ammo_12gauge; @@ -3949,6 +3950,7 @@ public class ModItems { sat_interface = new ItemSatInterface().setUnlocalizedName("sat_interface").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_interface"); sat_coord = new ItemSatInterface().setUnlocalizedName("sat_coord").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_coord"); sat_designator = new ItemSatDesignator().setUnlocalizedName("sat_designator").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_designator"); + sat_relay = new ItemSatRelay().setUnlocalizedName("sat_relay").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_relay"); mp_thruster_10_kerosene = new ItemMissile().makeThruster(FuelType.KEROSENE, 1F, 1.5F, PartSize.SIZE_10).setHealth(10F) .setUnlocalizedName("mp_thruster_10_kerosene"); mp_thruster_10_kerosene_tec = new ItemMissile().makeThruster(FuelType.KEROSENE, 1F, 1.5F, PartSize.SIZE_10).setHealth(15F).setRarity(Rarity.COMMON).setUnlocalizedName("mp_thruster_10_kerosene_tec"); @@ -3978,7 +3980,7 @@ public class ModItems { mp_stability_10_space = new ItemMissile().makeStability(0.35F, PartSize.SIZE_10).setHealth(5F).setRarity(Rarity.COMMON).setWittyText("Standing there alone, the ship is waiting / All systems are go, are you sure?") .setUnlocalizedName("mp_stability_10_space"); mp_stability_15_flat = new ItemMissile().makeStability(0.5F, PartSize.SIZE_15).setHealth(10F) .setUnlocalizedName("mp_stability_15_flat"); mp_stability_15_thin = new ItemMissile().makeStability(0.35F, PartSize.SIZE_15).setHealth(5F) .setUnlocalizedName("mp_stability_15_thin"); - mp_stability_15_soyuz = new ItemMissile().makeStability(0.25F, PartSize.SIZE_15).setHealth(15F).setRarity(Rarity.COMMON).setWittyText("Союз!").setUnlocalizedName("mp_stability_15_soyuz"); + mp_stability_15_soyuz = new ItemMissile().makeStability(0.25F, PartSize.SIZE_15).setHealth(15F).setRarity(Rarity.COMMON).setWittyText("׀¡׀¾×�׀·!").setUnlocalizedName("mp_stability_15_soyuz"); mp_stability_20_flat = new ItemMissile().makeStability(0.5F, PartSize.SIZE_20) .setUnlocalizedName("mp_s_20"); mp_fuselage_10_kerosene = new ItemMissile().makeFuselage(FuelType.KEROSENE, 2500F, PartSize.SIZE_10, PartSize.SIZE_10).setAuthor("Hoboy").setHealth(20F).setUnlocalizedName("mp_fuselage_10_kerosene"); @@ -6994,6 +6996,7 @@ public class ModItems { GameRegistry.registerItem(sat_interface, sat_interface.getUnlocalizedName()); GameRegistry.registerItem(sat_coord, sat_coord.getUnlocalizedName()); GameRegistry.registerItem(sat_designator, sat_designator.getUnlocalizedName()); + GameRegistry.registerItem(sat_relay, sat_relay.getUnlocalizedName()); //Guns GameRegistry.registerItem(gun_revolver, gun_revolver.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemSatRelay.java b/src/main/java/com/hbm/items/tool/ItemSatRelay.java new file mode 100644 index 000000000..519befad2 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemSatRelay.java @@ -0,0 +1,19 @@ +package com.hbm.items.tool; + +import com.hbm.items.machine.ItemSatChip; +import com.hbm.lib.Library; +import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.Satellite.Interfaces; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class ItemSatRelay extends ItemSatChip { +//Schrabby doesn't fucking know how this works so I HOPE it will create a new item that works without fucking everything up + + +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 9e9061ff1..41c0ce4d6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -14,10 +14,15 @@ import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerMachineRadarNT; import com.hbm.inventory.gui.GUIMachineRadarNT; import com.hbm.inventory.gui.GUIMachineRadarNTSlots; +import com.hbm.items.ISatChip; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemCoordinateBase; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.Satellite.Interfaces; +import com.hbm.saveddata.satellites.SatelliteLaser; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; @@ -412,6 +417,20 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I int id = data.getInteger("link"); ItemStack link = slots[id]; + if(link != null && link.getItem() == ModItems.sat_chip) { + World world = player.getEntityWorld(); + Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(ISatChip.getFreqS(link)); + if(sat instanceof SatelliteLaser) { + if(data.hasKey("launchPosX")) { + int x = data.getInteger("launchPosX"); + int z = data.getInteger("launchPosZ"); + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + sat.onClick(world, x, z); + } + } + + + } if(link != null && link.getItem() == ModItems.radar_linker) { BlockPos pos = ItemCoordinateBase.getPosition(link); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 5d2ef5a8d..962f4506d 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -122,7 +122,7 @@ achievement.technetium.desc=It's medicinal, it's medicinal! achievement.technetium=Big Man, Pig Man achievement.watzBoom.desc=Drain your septic tank next time. achievement.watzBoom=Disgusting -achievement.watz.desc=Fólkvangr fields possibly included. +achievement.watz.desc=Fֳ³lkvangr fields possibly included. achievement.watz=The Power of Element-126 achievement.witchtaunter.desc=Those wacky creatures got nothing on you! achievement.witchtaunter=Witch Taunter @@ -199,129 +199,129 @@ book.test.page1=Test Page 1 book.error.cover=Hadron Collider:$Troubleshooting book.error.title1=Error 0x01 [NC] -book.error.page1=§lName:§r "ERROR_NO_CHARGE" §lDescription:§r The particle has reached a segment with insufficient charge. §lPotential fix:§r Either replace one of the plugs that the particle successfully passes with higher-tier ones or add another plug slightly before the segment where the particle expires. +book.error.page1=ֲ§lName:ֲ§r "ERROR_NO_CHARGE" ֲ§lDescription:ֲ§r The particle has reached a segment with insufficient charge. ֲ§lPotential fix:ֲ§r Either replace one of the plugs that the particle successfully passes with higher-tier ones or add another plug slightly before the segment where the particle expires. book.error.title2=Error 0x02 [NA] -book.error.page2=§lName:§r "ERROR_NO_ANALYSIS" §lDescription:§r The particle has reached the core, despite not passing an analysis chamber. §lPotential fix:§r Make sure that your accelerator has an analysis chamber and double-check the operating mode (linear/circular). +book.error.page2=ֲ§lName:ֲ§r "ERROR_NO_ANALYSIS" ֲ§lDescription:ֲ§r The particle has reached the core, despite not passing an analysis chamber. ֲ§lPotential fix:ֲ§r Make sure that your accelerator has an analysis chamber and double-check the operating mode (linear/circular). book.error.title3=Error 0x03 [OC] -book.error.page3=§lName:§r "ERROR_OBSTRUCTED_CHANNEL" §lDescription:§r The particle has collided with a block inside the collider's channel. §lPotential fix:§r Make sure that the inside of your particle collider is free of any obstructions, except for particle diodes and core blocks. +book.error.page3=ֲ§lName:ֲ§r "ERROR_OBSTRUCTED_CHANNEL" ֲ§lDescription:ֲ§r The particle has collided with a block inside the collider's channel. ֲ§lPotential fix:ֲ§r Make sure that the inside of your particle collider is free of any obstructions, except for particle diodes and core blocks. book.error.title4=Error 0x04 [EC] -book.error.page4=§lName:§r "ERROR_EXPECTED_COIL" §lDescription:§r The particle has passed a segment that lacks one or multiple coils. §lPotential fix:§r Remove the plating of the collider in the offending area and check if all the coils are there. This error will also happen at T-crossings that are built without diodes. +book.error.page4=ֲ§lName:ֲ§r "ERROR_EXPECTED_COIL" ֲ§lDescription:ֲ§r The particle has passed a segment that lacks one or multiple coils. ֲ§lPotential fix:ֲ§r Remove the plating of the collider in the offending area and check if all the coils are there. This error will also happen at T-crossings that are built without diodes. book.error.title5=Error 0x05 [MS] -book.error.page5=§lName:§r "ERROR_MALFORMED_SEGMENT" §lDescription:§r The particle has passed a segment that was built incorrectly (but neither obstructed nor missing coils). §lPotential fix:§r Make sure that the offending segment has platings in all the required spaces, leaving no coils exposed. +book.error.page5=ֲ§lName:ֲ§r "ERROR_MALFORMED_SEGMENT" ֲ§lDescription:ֲ§r The particle has passed a segment that was built incorrectly (but neither obstructed nor missing coils). ֲ§lPotential fix:ֲ§r Make sure that the offending segment has platings in all the required spaces, leaving no coils exposed. book.error.title6=Error 0x06 [ATL] -book.error.page6=§lName:§r "ERROR_ANALYSIS_TOO_LONG" §lDescription:§r The particle has passed more than the three required valid analysis chamber segments. §lPotential fix:§r Make sure that the analysis chamber is exactly 3 blocks long for circular accelerator and at least 2 blocks long for linear ones. Also check if the particle doesn't pass multiple analysis chambers in a branching and/or looped accelerator. +book.error.page6=ֲ§lName:ֲ§r "ERROR_ANALYSIS_TOO_LONG" ֲ§lDescription:ֲ§r The particle has passed more than the three required valid analysis chamber segments. ֲ§lPotential fix:ֲ§r Make sure that the analysis chamber is exactly 3 blocks long for circular accelerator and at least 2 blocks long for linear ones. Also check if the particle doesn't pass multiple analysis chambers in a branching and/or looped accelerator. book.error.title7=Error 0x07 [ATS] -book.error.page7=§lName:§r "ERROR_ANALYSIS_TOO_SHORT" §lDescription:§r The particle has left the analysis chamber, despite not meeting the length requirement. §lPotential fix:§r Make sure that the analysis chamber on your circular accelerator is exactly 3 blocks long. Valid analysis segments have no coils and the plating is entirely composed of analysis chamber walls/windows. Analysis chambers with coils in them count as regular segments. +book.error.page7=ֲ§lName:ֲ§r "ERROR_ANALYSIS_TOO_SHORT" ֲ§lDescription:ֲ§r The particle has left the analysis chamber, despite not meeting the length requirement. ֲ§lPotential fix:ֲ§r Make sure that the analysis chamber on your circular accelerator is exactly 3 blocks long. Valid analysis segments have no coils and the plating is entirely composed of analysis chamber walls/windows. Analysis chambers with coils in them count as regular segments. book.error.title8=Error 0x08 [DC] -book.error.page8=§lName:§r "ERROR_DIODE_COLLISION" §lDescription:§r The particle collided with a non-input side of a schottky particle diode. §lPotential fix:§r Check if your diodes are configured correctly. Particles can only enter the diode from sides with green inward-pointing arrows. +book.error.page8=ֲ§lName:ֲ§r "ERROR_DIODE_COLLISION" ֲ§lDescription:ֲ§r The particle collided with a non-input side of a schottky particle diode. ֲ§lPotential fix:ֲ§r Check if your diodes are configured correctly. Particles can only enter the diode from sides with green inward-pointing arrows. book.error.title9=Error 0x09 [BT] -book.error.page9=§lName:§r "ERROR_BRANCHING_TURN" §lDescription:§r The particle has reached a turn with multiple exits. §lPotential fix:§r If your turn is a normal one, check if all the required coils are present (i.e. no holes in the coil layer). If the turn is intended to be branched, it requires a schottky particle diode that is correctly configured. +book.error.page9=ֲ§lName:ֲ§r "ERROR_BRANCHING_TURN" ֲ§lDescription:ֲ§r The particle has reached a turn with multiple exits. ֲ§lPotential fix:ֲ§r If your turn is a normal one, check if all the required coils are present (i.e. no holes in the coil layer). If the turn is intended to be branched, it requires a schottky particle diode that is correctly configured. book.rbmk.cover=My first RBMK:$Basics of$building a$reactor book.rbmk.title1=Introduction -book.rbmk.page1=§lRBMK§r is fully modular nuclear reactor. Unlike most other reactors, there is no "core" and no size restrictions, rather behavior and efficiency of reactor depends on how it is built and how various parts interact with each other. +book.rbmk.page1=ֲ§lRBMKֲ§r is fully modular nuclear reactor. Unlike most other reactors, there is no "core" and no size restrictions, rather behavior and efficiency of reactor depends on how it is built and how various parts interact with each other. book.rbmk.title2=Heat -book.rbmk.page2=As reactor runs, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to generate as much heat as possible without melting the reactor, and to transfer heat into steam passages that cool reactor and produce steam. +book.rbmk.page2=As reactor runs, it will generate ֲ§lheatֲ§r. Heat will spread between parts, slowly decreasing in the process. The goal is to generate as much heat as possible without melting the reactor, and to transfer heat into steam passages that cool reactor and produce steam. book.rbmk.title3=Fuel Rod -book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing fuel inside the rod to react, releasing neutrons in the process. Neutrons are released in all four main directions with a maximum range of 5 blocks. The amount of released neutrons depends on fuel used. +book.rbmk.page3=The ֲ§lfuel rodֲ§r will capture neutron flux, causing fuel inside the rod to react, releasing neutrons in the process. Neutrons are released in all four main directions with a maximum range of 5 blocks. The amount of released neutrons depends on fuel used. book.rbmk.title4=Regulating Rod -book.rbmk.page4=The §lcontrol rod§r will reduce number of neutrons passing through. Fully inserted, it will block all neutrons; when inserted halfway, it will only block half. Control rods are used to regulate activity of the reactor and shut it down. +book.rbmk.page4=The ֲ§lcontrol rodֲ§r will reduce number of neutrons passing through. Fully inserted, it will block all neutrons; when inserted halfway, it will only block half. Control rods are used to regulate activity of the reactor and shut it down. book.rbmk.title5=Regulating Rods - Usage book.rbmk.title5.scale=0.9 -book.rbmk.page5=The current bar insertion will be displayed in the center of GUI. The colored buttons on left will add the control bar to the color group, which is useful for quickly selecting grouped bars on §lRBMK§r console. The buttons on right allow you to manually insert in 25%% increments. +book.rbmk.page5=The current bar insertion will be displayed in the center of GUI. The colored buttons on left will add the control bar to the color group, which is useful for quickly selecting grouped bars on ֲ§lRBMKֲ§r console. The buttons on right allow you to manually insert in 25%% increments. book.rbmk.title6=Automatic Control Rods -book.rbmk.page6=§LAutomatic control rods§r are almost identical to regular control rods, but they cannot be manually adjusted, instead they will adjust position of the rod based on current temperature. Which function to use and how deep to insert and at what temperature must be determined first. +book.rbmk.page6=ֲ§LAutomatic control rodsֲ§r are almost identical to regular control rods, but they cannot be manually adjusted, instead they will adjust position of the rod based on current temperature. Which function to use and how deep to insert and at what temperature must be determined first. book.rbmk.title7=Steam Channel -book.rbmk.page7=The §lsteam channel§r is only part that will actively reduce reactor heat level. If a component is above the boiling point of a given type of steam, it will try to consume as much water and produce as much steam as needed to cool below boiling point. +book.rbmk.page7=The ֲ§lsteam channelֲ§r is only part that will actively reduce reactor heat level. If a component is above the boiling point of a given type of steam, it will try to consume as much water and produce as much steam as needed to cool below boiling point. book.rbmk.title8=Neutron Reflector -book.rbmk.page8=The §lneutron reflector§r will block passage of neutrons, instead neutrons will be reflected back onto the fuel rod they came from. This is useful for using neutrons that would otherwise be wasted simply by leaving reactor. +book.rbmk.page8=The ֲ§lneutron reflectorֲ§r will block passage of neutrons, instead neutrons will be reflected back onto the fuel rod they came from. This is useful for using neutrons that would otherwise be wasted simply by leaving reactor. book.rbmk.title9=Neutron Absorber -book.rbmk.page9=§lNeutron absorber§r simply blocks neutrons. The absorbed neutrons will not generate heat and will be effectively destroyed. This is useful for preventing fuel rods from reacting that would otherwise be within reach. +book.rbmk.page9=ֲ§lNeutron absorberֲ§r simply blocks neutrons. The absorbed neutrons will not generate heat and will be effectively destroyed. This is useful for preventing fuel rods from reacting that would otherwise be within reach. book.rbmk.title10=Graphite Retarder -book.rbmk.page10=§lGraphite moderator§r converts fast neutrons passing through it into slow neutrons. Most fuels are split into fast neutrons, while slow neutrons are required for fission, so use of moderators is highly recommended. +book.rbmk.page10=ֲ§lGraphite moderatorֲ§r converts fast neutrons passing through it into slow neutrons. Most fuels are split into fast neutrons, while slow neutrons are required for fission, so use of moderators is highly recommended. book.rbmk.title11=Structural Column -book.rbmk.page11=§lStructural column§r does not affect neutrons in any way and has no special application. It is recommended to fill the reactor with structured pillars where there are no other parts, since the structured pillars are capable of transferring heat. +book.rbmk.page11=ֲ§lStructural columnֲ§r does not affect neutrons in any way and has no special application. It is recommended to fill the reactor with structured pillars where there are no other parts, since the structured pillars are capable of transferring heat. book.rbmk.title12=Console -book.rbmk.page12=§lRBMK console§r allows you to control the reactor from afar. Using the §ldevice to connect the console RBMK§r on the RBMK part and then on the console will connect the reactor and the console. The console can only control 15x15 parts, for large reactors you can use multiple consoles. +book.rbmk.page12=ֲ§lRBMK consoleֲ§r allows you to control the reactor from afar. Using the ֲ§ldevice to connect the console RBMKֲ§r on the RBMK part and then on the console will connect the reactor and the console. The console can only control 15x15 parts, for large reactors you can use multiple consoles. book.rbmk.title13=Using the console book.rbmk.page13=Clicking on parts will select and deselect them. With the colored buttons, you can quickly select all the control rods in that color group. Button "A" will select all control rods, "X" will deselect all. book.rbmk.page14=Entering a number between 0 and 100 in green box and then pressing button next to it will set all selected control rods to that position. Button "AZ-5" will lead to full insertion of all control rods. book.rbmk.title15=Fuel -book.rbmk.page15=The §lfuel§r response depends on many factors. The main ones are §lfortification§r, §lxenon poisoning§r and number of incoming §lneutrons§r. Xenon builds up when fuel is low in neutrons and burns out during normal operation. The efficiency of neutrons depends on the type, most fuels §lare best split by§r §lslow neutrons§r. +book.rbmk.page15=The ֲ§lfuelֲ§r response depends on many factors. The main ones are ֲ§lfortificationֲ§r, ֲ§lxenon poisoningֲ§r and number of incoming ֲ§lneutronsֲ§r. Xenon builds up when fuel is low in neutrons and burns out during normal operation. The efficiency of neutrons depends on the type, most fuels ֲ§lare best split byֲ§r ֲ§lslow neutronsֲ§r. book.rbmk.title16=Melting -book.rbmk.page16=§4§lAVOID. +book.rbmk.page16=ֲ§4ֲ§lAVOID. book.starter.cover=An Industrialist's$Guide to Rebuilding$Society book.starter.title1=Introduction book.starter.page1=If you're reading this, it's highly likely that society, in one way or another, has collapsed entirely. Governments, countries, and authority are a concept of the past - along with all of the amenities of civilized life. As such, this guide will inform you how to change that by recreating the industry and technology of the past for the improvement of your own life. book.starter.title2=Coal & Mustard Gas -book.starter.page2=Whilst it is impossible to predict the actual state of the world in a post-apocalyptic time, it's not unlikely that war and industry in its current form may not have ended. To protect your own lungs, an effective and cheap way is to urinate on some §lcloth§r to make a §ltrench mask§r, to protect you from coal dust or mustard gas, if you ever encounter either. +book.starter.page2=Whilst it is impossible to predict the actual state of the world in a post-apocalyptic time, it's not unlikely that war and industry in its current form may not have ended. To protect your own lungs, an effective and cheap way is to urinate on some ֲ§lclothֲ§r to make a ֲ§ltrench maskֲ§r, to protect you from coal dust or mustard gas, if you ever encounter either. book.starter.title3=Anvils & Presses -book.starter.page3=The quintessentials to beginning your industrial revitalization is an §lanvil§r and a §lburner press§r. The anvil will allow you to manually craft together early machinery such as the Assembler, whilst the burner press will let you make plates, wires, and circuits that you cannot hammer together with an anvil. +book.starter.page3=The quintessentials to beginning your industrial revitalization is an ֲ§lanvilֲ§r and a ֲ§lburner pressֲ§r. The anvil will allow you to manually craft together early machinery such as the Assembler, whilst the burner press will let you make plates, wires, and circuits that you cannot hammer together with an anvil. book.starter.title4=Templates -book.starter.page4=In order to stamp metal into useful shapes, assemble machinery, and perform chemical reactions, you will need to create a §lMachine Template Folder§r to create the various stamps and templates shown to the right. +book.starter.page4=In order to stamp metal into useful shapes, assemble machinery, and perform chemical reactions, you will need to create a ֲ§lMachine Template Folderֲ§r to create the various stamps and templates shown to the right. book.starter.title5=Scavenging book.starter.page5=Depending on how bad the initial apocalyptic event was to the preexisting structures of the world, there's a likely chance that many useful materials and machines can be salvaged from them directly. Metallic alloys like steel, parts like circuitry, and even fissile material from a nuclear power plant might be awaiting you. Beware certain ruins, however, as there may be an excess of danger lurking there like a snake in the grass; waiting to strike you down with radiation, traps, or indescribable horrors... book.starter.title6=Early Machinery -book.starter.page6a=Two of the first machines you should assemble are the §lBlast Furnace§r and the §lAssembly Machine§r. The former will allow you to create alloys such as §lsteel§r, §lminecraft-grade copper§r, and §ladvanced alloy§r; you will need to use these metals for the bodies of machines, the wiring of circuits, advanced electromagnets, and more. -book.starter.page6b=The assembler will be used to create practically every other machine described in this guide. You will need a power source, such as a §lCombustion§r §lGenerator§r or §lSolar Boiler§r. -book.starter.page7a=The §lShredder§r, along with a pair of shredder blades, will be very useful for doubling the output of most ores, via shredding into smeltable powders. These powders are also crucial to begin making circuitry for various machines, such as §lEnhanced§r and §lOverclocked§r circuits. -book.starter.page7b=Using your new machinery, you can create the §lChemical Plant§r, used for the synthesis of better circuits, concrete, the processing of petrochemicals, and more. +book.starter.page6a=Two of the first machines you should assemble are the ֲ§lBlast Furnaceֲ§r and the ֲ§lAssembly Machineֲ§r. The former will allow you to create alloys such as ֲ§lsteelֲ§r, ֲ§lminecraft-grade copperֲ§r, and ֲ§ladvanced alloyֲ§r; you will need to use these metals for the bodies of machines, the wiring of circuits, advanced electromagnets, and more. +book.starter.page6b=The assembler will be used to create practically every other machine described in this guide. You will need a power source, such as a ֲ§lCombustionֲ§r ֲ§lGeneratorֲ§r or ֲ§lSolar Boilerֲ§r. +book.starter.page7a=The ֲ§lShredderֲ§r, along with a pair of shredder blades, will be very useful for doubling the output of most ores, via shredding into smeltable powders. These powders are also crucial to begin making circuitry for various machines, such as ֲ§lEnhancedֲ§r and ֲ§lOverclockedֲ§r circuits. +book.starter.page7b=Using your new machinery, you can create the ֲ§lChemical Plantֲ§r, used for the synthesis of better circuits, concrete, the processing of petrochemicals, and more. book.starter.title8=Black Gold -book.starter.page8a=Using an §lOil §lReservoir§r §lDetector§r, you can find underground oil deposits to place a §lPumpjack§r or §lDerrick§r over via surveying an area. Remember that oil deposits will run out over time. -book.starter.page8b=Before the oil can be refined and separated into its constituent parts in an §lOil Refinery§r, you must heat the oil to 300°C in a §lBoiler§r. +book.starter.page8a=Using an ֲ§lOil ֲ§lReservoirֲ§r ֲ§lDetectorֲ§r, you can find underground oil deposits to place a ֲ§lPumpjackֲ§r or ֲ§lDerrickֲ§r over via surveying an area. Remember that oil deposits will run out over time. +book.starter.page8b=Before the oil can be refined and separated into its constituent parts in an ֲ§lOil Refineryֲ§r, you must heat the oil to 300ֲ°C in a ֲ§lBoilerֲ§r. book.starter.title9=Petrochemicals -book.starter.page9=Using §lChemical Plants§r, §lFractioning§r §lTowers§r, and §lCatalytic Cracking§r §lTowers§r, you can transform the separated oil into a variety of useful products. For example: §lPolymer§r or §lBakelite§r, durable and flexible plastics; §lDesh§r, an extremely durable and heat-resistant rare earth metal alloy; §lSolid Fuel§r, which can be burnt for energy; or even §lLiquid Fuels§r, such as §lGasoline§r, §lDiesel§r, §lKerosene§r, and more. +book.starter.page9=Using ֲ§lChemical Plantsֲ§r, ֲ§lFractioningֲ§r ֲ§lTowersֲ§r, and ֲ§lCatalytic Crackingֲ§r ֲ§lTowersֲ§r, you can transform the separated oil into a variety of useful products. For example: ֲ§lPolymerֲ§r or ֲ§lBakeliteֲ§r, durable and flexible plastics; ֲ§lDeshֲ§r, an extremely durable and heat-resistant rare earth metal alloy; ֲ§lSolid Fuelֲ§r, which can be burnt for energy; or even ֲ§lLiquid Fuelsֲ§r, such as ֲ§lGasolineֲ§r, ֲ§lDieselֲ§r, ֲ§lKeroseneֲ§r, and more. book.starter.title10=Advanced Machinery -book.starter.page10=With oil processing under your belt, you can create the §lCentrifuge§r, which will triple ore outputs; the §lOre §lAcidizer§r, which will crystallize ores, increasing the yield; and the §lSILEX + §lFEL§r, two marvels of modern engineering which can separate the isotopes of materials with ease. You will require significantly more energy to power these; which can be obtained with sources such as a §lDiesel Generator§r, an §lIndustrial Generator§r, or even a nuclear reactor. +book.starter.page10=With oil processing under your belt, you can create the ֲ§lCentrifugeֲ§r, which will triple ore outputs; the ֲ§lOre ֲ§lAcidizerֲ§r, which will crystallize ores, increasing the yield; and the ֲ§lSILEX + ֲ§lFELֲ§r, two marvels of modern engineering which can separate the isotopes of materials with ease. You will require significantly more energy to power these; which can be obtained with sources such as a ֲ§lDiesel Generatorֲ§r, an ֲ§lIndustrial Generatorֲ§r, or even a nuclear reactor. book.starter.title11=Strata -book.starter.page11=Underneath the ground you walk, there is several naturally-occurring §lStrata§r, or special mineral layers and formations. §lSchist Strata§r are blue, lithium-containing layers filled with uranium, iron, copper, asbestos, and other ores for your own use. §lDepth Rock§r contains large quantities of rarer minerals, such as §lZirconium§r and §lBoron§r, but requires explosives to properly harvest. +book.starter.page11=Underneath the ground you walk, there is several naturally-occurring ֲ§lStrataֲ§r, or special mineral layers and formations. ֲ§lSchist Strataֲ§r are blue, lithium-containing layers filled with uranium, iron, copper, asbestos, and other ores for your own use. ֲ§lDepth Rockֲ§r contains large quantities of rarer minerals, such as ֲ§lZirconiumֲ§r and ֲ§lBoronֲ§r, but requires explosives to properly harvest. book.starter.title12=Radiation -book.starter.page12a=§oThe rest of this book will deal with matters that involve §oradiation. For the safety of you and others, I will give §oadvice on how to mitigate and deal with exposure to it. -book.starter.page12b=Enough exposure to radiation can and will cause bodily harm. The first step is prevention; be sure to limit your exposure, and wear protective gear, such as a §lHazmat Suit§r, or apply §lCladding§r to your clothing or armor; you can also take §lRad-X§r to limit your intake. Thanks to modern medicine, the second step can be removal if necessary; for example, a §lPlayer §lDecontaminator§r will slowly reduce the radiation absorbed by your body. §lRad-Away§r can also be used as a post-exposure prophylaxis, quickly and effectively reversing damage caused to your body by ionizing radiation. +book.starter.page12a=ֲ§oThe rest of this book will deal with matters that involve ֲ§oradiation. For the safety of you and others, I will give ֲ§oadvice on how to mitigate and deal with exposure to it. +book.starter.page12b=Enough exposure to radiation can and will cause bodily harm. The first step is prevention; be sure to limit your exposure, and wear protective gear, such as a ֲ§lHazmat Suitֲ§r, or apply ֲ§lCladdingֲ§r to your clothing or armor; you can also take ֲ§lRad-Xֲ§r to limit your intake. Thanks to modern medicine, the second step can be removal if necessary; for example, a ֲ§lPlayer ֲ§lDecontaminatorֲ§r will slowly reduce the radiation absorbed by your body. ֲ§lRad-Awayֲ§r can also be used as a post-exposure prophylaxis, quickly and effectively reversing damage caused to your body by ionizing radiation. book.starter.title13=Uranium Enrichment -book.starter.page13=There are a few, easy options for fuels to use for a nuclear reactor; for instance, §lNatural Uranium§r or §lThorium Fuel§r. However, if you're looking for something more powerful, you can set up an enrichment cascade of two §lGas Centrifuges§r to produce §lUranium Fuel§r with leftover §lUranium-238§r. You will have to transmute the natural uranium into §lYellowcake§r, then §lUranium §lHexafluoride§r to do so. +book.starter.page13=There are a few, easy options for fuels to use for a nuclear reactor; for instance, ֲ§lNatural Uraniumֲ§r or ֲ§lThorium Fuelֲ§r. However, if you're looking for something more powerful, you can set up an enrichment cascade of two ֲ§lGas Centrifugesֲ§r to produce ֲ§lUranium Fuelֲ§r with leftover ֲ§lUranium-238ֲ§r. You will have to transmute the natural uranium into ֲ§lYellowcakeֲ§r, then ֲ§lUranium ֲ§lHexafluorideֲ§r to do so. book.starter.title14=The Chicago Pile -book.starter.page14=Alternatively, you can breed §lReactor-Grade Plutonium§r, a more powerful fuel, from Natural Uranium using the §lChicago Pile§r. By stacking graphite blocks and drilling into them, you can insert fuel rods to breed into plutonium and neutron source rods, such as §lRadium-Beryllium§r, to begin the reaction. Make sure to test your designs; spacing out or limiting the amount of blocks may be necessary to prevent overheating. +book.starter.page14=Alternatively, you can breed ֲ§lReactor-Grade Plutoniumֲ§r, a more powerful fuel, from Natural Uranium using the ֲ§lChicago Pileֲ§r. By stacking graphite blocks and drilling into them, you can insert fuel rods to breed into plutonium and neutron source rods, such as ֲ§lRadium-Berylliumֲ§r, to begin the reaction. Make sure to test your designs; spacing out or limiting the amount of blocks may be necessary to prevent overheating. book.starter.title15=ZIRNOX GCR -book.starter.page15=Finally, you can create your first §oreal§r source of energy: the §lZIRNOX§r Nuclear Reactor. Nuclear reactors require more setup then other power sources; first, you will want to have a good source of water, such as the §lHeavy §lInfinite Water Tank§r. To remove heat from the reactor core and boil the water into steam, you will need a sufficient amount of §lCarbon Dioxide§r. You want just enough pressure, but not §otoo§r much. You will also need three steam turbines to utilize the created steam to make energy; the §lSteam §lTurbine§r or §lIndustrial Steam §lTurbine§r will be optimal. Finally, a §lCondensor§r or §lAuxilary Cooling Tower§r is needed to condense the leftover steam into water, where it can be voided or recycled in a cooling loop. +book.starter.page15=Finally, you can create your first ֲ§orealֲ§r source of energy: the ֲ§lZIRNOXֲ§r Nuclear Reactor. Nuclear reactors require more setup then other power sources; first, you will want to have a good source of water, such as the ֲ§lHeavy ֲ§lInfinite Water Tankֲ§r. To remove heat from the reactor core and boil the water into steam, you will need a sufficient amount of ֲ§lCarbon Dioxideֲ§r. You want just enough pressure, but not ֲ§otooֲ§r much. You will also need three steam turbines to utilize the created steam to make energy; the ֲ§lSteam ֲ§lTurbineֲ§r or ֲ§lIndustrial Steam ֲ§lTurbineֲ§r will be optimal. Finally, a ֲ§lCondensorֲ§r or ֲ§lAuxilary Cooling Towerֲ§r is needed to condense the leftover steam into water, where it can be voided or recycled in a cooling loop. book.starter.title16=Conclusion -book.starter.page16=If you've reached this far, you're on track to helping rebuild civilization. You've successfully recreated the advanced machinery of the pre-apocalypse - with nuclear power, petrochemicals, and more. I cannot know §ohow§r you will use these new-found advantages, but it's my personal hope you use them for the good of yourself and others - or at the very least, in self-defense. Au revoir! +book.starter.page16=If you've reached this far, you're on track to helping rebuild civilization. You've successfully recreated the advanced machinery of the pre-apocalypse - with nuclear power, petrochemicals, and more. I cannot know ֲ§ohowֲ§r you will use these new-found advantages, but it's my personal hope you use them for the good of yourself and others - or at the very least, in self-defense. Au revoir! book.starter.title18=About the Author -book.starter.page18=vær is just a guy who has been trapped in the grey void featured in the Talking Head's §oOnce In A Lifetime§r for too long. He once found a studio door, but to his dismay found out it was a cardboard cut-out. +book.starter.page18=vֳ¦r is just a guy who has been trapped in the grey void featured in the Talking Head's ֲ§oOnce In A Lifetimeֲ§r for too long. He once found a studio door, but to his dismay found out it was a cardboard cut-out. #book.rbmk.cover=HOW 2 RBMK:$The Basics$of Reactor$Construction #book.rbmk.title1=Introduction -#book.rbmk.page1=The §lRBMK§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. +#book.rbmk.page1=The ֲ§lRBMKֲ§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. #book.rbmk.title2=Heat -#book.rbmk.page2=As the reactor operates, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a §lsteam channel§r which cools the reactor and produces steam. +#book.rbmk.page2=As the reactor operates, it will generate ֲ§lheatֲ§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a ֲ§lsteam channelֲ§r which cools the reactor and produces steam. #book.rbmk.title3=Fuel Rod -#book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the §lfuel§r used. +#book.rbmk.page3=The ֲ§lfuel rodֲ§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the ֲ§lfuelֲ§r used. #book.rbmk.title4=Control Rod -#book.rbmk.page4=The §lcontrol rod§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. +#book.rbmk.page4=The ֲ§lcontrol rodֲ§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. #book.rbmk.title5=Control Rod - Usage -#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the §lRBMK console§r. The buttons on the right allow for manual insertion in increments of 25%%. +#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the ֲ§lRBMK consoleֲ§r. The buttons on the right allow for manual insertion in increments of 25%%. #book.rbmk.title6=Automatic Control Rod -#book.rbmk.page6=§lAutomatic control rods§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. +#book.rbmk.page6=ֲ§lAutomatic control rodsֲ§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. #book.rbmk.title7=Steam Channel -#book.rbmk.page7=The §lsteam channel§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. +#book.rbmk.page7=The ֲ§lsteam channelֲ§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. #book.rbmk.title8=Neutron Reflector -#book.rbmk.page8=The §lneutron reflector§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. +#book.rbmk.page8=The ֲ§lneutron reflectorֲ§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. #book.rbmk.title9=Neutron Absorber -#book.rbmk.page9=The §lneutron absorber§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. +#book.rbmk.page9=The ֲ§lneutron absorberֲ§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. #book.rbmk.title10=Graphite Moderator -#book.rbmk.page10=The §lgraphite moderator§r will convert fast neutrons passing through it into slow neutrons. Most fuels fission into fast neutrons while needing slow neutrons to split, so using moderators is strongly recommended. +#book.rbmk.page10=The ֲ§lgraphite moderatorֲ§r will convert fast neutrons passing through it into slow neutrons. Most fuels fission into fast neutrons while needing slow neutrons to split, so using moderators is strongly recommended. #book.rbmk.title11=Structural Column -#book.rbmk.page11=The §lstructural column§r will not interfere with neutrons, nor does it have special uses. It is recommended to fill the reactor with structural columns where no other parts will be, because structural columns are capable of transporting heat. +#book.rbmk.page11=The ֲ§lstructural columnֲ§r will not interfere with neutrons, nor does it have special uses. It is recommended to fill the reactor with structural columns where no other parts will be, because structural columns are capable of transporting heat. #book.rbmk.title12=Console -#book.rbmk.page12=The §lRBMK console§r lets you control the reactor from afar. Using the §lRBMK§r §lconsole linking device§r on an RBMK part and then the console will link the reactor to the console. The console can only manage 15x15 parts, for larger reactors you might want to use multiple consoles. +#book.rbmk.page12=The ֲ§lRBMK consoleֲ§r lets you control the reactor from afar. Using the ֲ§lRBMKֲ§r ֲ§lconsole linking deviceֲ§r on an RBMK part and then the console will link the reactor to the console. The console can only manage 15x15 parts, for larger reactors you might want to use multiple consoles. #book.rbmk.title13=Console Usage #book.rbmk.page13=Clicking on the parts will select and deselect them. Using the colored buttons, you can quickly select all control rods of that color group. Button 'A' will select all control rods, 'X' will deselect all. #book.rbmk.page14=Entering a number 0-100 in the green box and then hitting the button next to it will set all selected control rods to this position. Button 'AZ-5' will cause all control rods to fully insert. #book.rbmk.title15=Fuel -#book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. +#book.rbmk.page15=The ֲ§lfuelֲ§r's reactivity is based on multiple factors. The main ones are the ֲ§lenrichmentֲ§r, ֲ§lxenon poisonֲ§r and the amount of incoming ֲ§lneutronsֲ§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels ֲ§lsplit best with slow neutronsֲ§r. #book.rbmk.title16=Meltdown -#book.rbmk.page16=§4§lAvoid. +#book.rbmk.page16=ֲ§4ֲ§lAvoid. book_lore.author=By %s book_lore.test.name=this book doesn't work... @@ -464,10 +464,10 @@ cannery.crucible.0=The crucible is used to smelt ores, ingots or other metallic cannery.crucible.1=It requires an external heat source connected to the bottom, like a firebox. cannery.crucible.2=Once heated up, the crucible can be used in two ways, with or without a recipe template. cannery.crucible.3=The crucible has two storage buffers for material: -cannery.crucible.4=The buffer to the left is for §abyproducts§r, all material smelted without a recipe template will land here. +cannery.crucible.4=The buffer to the left is for ֲ§abyproductsֲ§r, all material smelted without a recipe template will land here. cannery.crucible.5=If a recipe is installed, materials that do not match the recipe will also be stored here. cannery.crucible.6=Materials in this buffer will not react with each other, they can only be output from the green outlet for casting. -cannery.crucible.7=The buffer to the right is for §crecipes§r, if a recipe is installed and that particular material is relevant to that recipe, it will land here. +cannery.crucible.7=The buffer to the right is for ֲ§crecipesֲ§r, if a recipe is installed and that particular material is relevant to that recipe, it will land here. cannery.crucible.8=The materials will slowly combine into the output material which is automatically output from the red outlet. cannery.crucible.9=Note that only this buffer handles recipes. If a template is installed retroactively, materials in the byproduct buffer will not combine, nor transfer to the recipe buffer. cannery.crucible.10=The outlet will output material automatically, if the target is valid, for example a foundry channel or a mold. @@ -733,7 +733,7 @@ container.nukeFurnace=Nuclear Powered Furnace container.nukeGadget=The Gadget container.nukeMan=Fat Man container.nukeMike=Ivy Mike -container.nukeN2=N² Mine +container.nukeN2=Nֲ² Mine container.nukeN45=N45 Naval Mine container.nukePrototype=The Prototype container.nukeSolinium=The Blue Rinse @@ -866,29 +866,29 @@ death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. death.attack.teleporter=%1$s was teleported into nothingness. -desc.gui.assembler.warning=§cError:§r This machine requires an assembly template! -desc.gui.chemplant.warning=§cError:§r This machine requires an chemistry template! -desc.gui.gasCent.enrichment=§2Enrichment§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. -desc.gui.gasCent.output=§6Fluid Transfer§r$Fluid can be transferred to another centrifuge$via the output port for further processing. -desc.gui.nukeBoy.desc=§1Requires:§r$ * Neutron Shielding$ * U235 Projectile$ * Subcritical U235 Target$ * Propellant$ * Bomb Igniter -desc.gui.nukeGadget.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Heavy Plutonium Core$ * Wiring -desc.gui.nukeMan.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Plutonium Core$ * Bomb Firing Unit -desc.gui.nukeMike.desc=§1Requires:§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$ * Deuterium Cooling Unit$ * Uranium Coated Deuterium Tank$ * Deuterium Tank -desc.gui.nukeTsar.desc=§1Requires:§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$§9Optional:§r$ * Tsar Bomba Core -desc.gui.radiolysis.desc=§9Description§r$This RTG is more efficient then others, and$comes equipped with a radiolysis chamber for$cracking and sterilization. +desc.gui.assembler.warning=ֲ§cError:ֲ§r This machine requires an assembly template! +desc.gui.chemplant.warning=ֲ§cError:ֲ§r This machine requires an chemistry template! +desc.gui.gasCent.enrichment=ֲ§2Enrichmentֲ§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. +desc.gui.gasCent.output=ֲ§6Fluid Transferֲ§r$Fluid can be transferred to another centrifuge$via the output port for further processing. +desc.gui.nukeBoy.desc=ֲ§1Requires:ֲ§r$ * Neutron Shielding$ * U235 Projectile$ * Subcritical U235 Target$ * Propellant$ * Bomb Igniter +desc.gui.nukeGadget.desc=ֲ§1Requires:ֲ§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Heavy Plutonium Core$ * Wiring +desc.gui.nukeMan.desc=ֲ§1Requires:ֲ§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Plutonium Core$ * Bomb Firing Unit +desc.gui.nukeMike.desc=ֲ§1Requires:ֲ§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$ * Deuterium Cooling Unit$ * Uranium Coated Deuterium Tank$ * Deuterium Tank +desc.gui.nukeTsar.desc=ֲ§1Requires:ֲ§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$ֲ§9Optional:ֲ§r$ * Tsar Bomba Core +desc.gui.radiolysis.desc=ֲ§9Descriptionֲ§r$This RTG is more efficient then others, and$comes equipped with a radiolysis chamber for$cracking and sterilization. desc.gui.rtgBFurnace.desc=Requires at least 15 heat to process$The more heat on top of that, the faster it runs$Heat going over maximum speed will have no effect$Short-lived pellets may decay -desc.gui.rtg.heat=§eCurrent heat level: %s +desc.gui.rtg.heat=ֲ§eCurrent heat level: %s desc.gui.rtg.pellets=Accepted Pellets: desc.gui.rtg.pelletHeat=%s (%s heat) desc.gui.rtg.pelletPower=%s (%s HE/tick) -desc.gui.template=§9Templates§r$Templates can be made by$using the Machine Template Folder. -desc.gui.turbinegas.automode=§2Automatic Turbine Throttling Mode§r$By clicking the "AUTO" button, the turbine$will automatically adjust the power production$based on the power required from the network -desc.gui.turbinegas.fuels=§6Accepted fuels:§r -desc.gui.turbinegas.warning=§cFuel or lubricant level low!§r -desc.gui.zirnox.coolant=§3Coolant§r$CO2 transfers heat from the core to the water.$This will boil it into super dense steam.$The efficiency of cooling and steam production$is based on pressure. -desc.gui.zirnox.pressure=§6Pressure§r$Pressure can be reduced by venting CO2.$However, too low a pressure, and cooling$efficiency and steam production will be reduced.$Look out for meltdowns! -desc.gui.zirnox.warning1=§cError:§r Water is required for$the reactor to function properly! -desc.gui.zirnox.warning2=§cError:§r CO2 is required for$the reactor to function properly! +desc.gui.template=ֲ§9Templatesֲ§r$Templates can be made by$using the Machine Template Folder. +desc.gui.turbinegas.automode=ֲ§2Automatic Turbine Throttling Modeֲ§r$By clicking the "AUTO" button, the turbine$will automatically adjust the power production$based on the power required from the network +desc.gui.turbinegas.fuels=ֲ§6Accepted fuels:ֲ§r +desc.gui.turbinegas.warning=ֲ§cFuel or lubricant level low!ֲ§r +desc.gui.zirnox.coolant=ֲ§3Coolantֲ§r$CO2 transfers heat from the core to the water.$This will boil it into super dense steam.$The efficiency of cooling and steam production$is based on pressure. +desc.gui.zirnox.pressure=ֲ§6Pressureֲ§r$Pressure can be reduced by venting CO2.$However, too low a pressure, and cooling$efficiency and steam production will be reduced.$Look out for meltdowns! +desc.gui.zirnox.warning1=ֲ§cError:ֲ§r Water is required for$the reactor to function properly! +desc.gui.zirnox.warning2=ֲ§cError:ֲ§r CO2 is required for$the reactor to function properly! desc.item.ammo.con_accuracy2=- Highly decreased accuracy desc.item.ammo.con_damage=- Highly decreased damage @@ -998,7 +998,7 @@ desc.item.kitArmor=Armor will be displaced by new set. desc.item.kitHaz=Armor will be displaced by hazmat suit. desc.item.kitPack=What a bargain! desc.item.kitPool=Please empty inventory before opening! -desc.item.pileRod=§eUse on drilled graphite to insert$§eUse screwdriver to extract$ +desc.item.pileRod=ֲ§eUse on drilled graphite to insert$ֲ§eUse screwdriver to extract$ desc.item.rtgDecay=Decays to: %s desc.item.rtgHeat=Power Level: %s desc.item.storage.capacity=Capacity %s%%s @@ -1006,19 +1006,19 @@ desc.item.storage.proscons=to view pros cons list desc.misc.357=.357 Magnum desc.misc.556=.223 Remington desc.misc.762=.308 Winchester -desc.misc.func=§n-- Function -- +desc.misc.func=ֲ§n-- Function -- desc.misc.lanthanum="Lanthanum" -desc.misc.lctrl=§8Hold <§e§oLCTRL§8§o> %s -desc.misc.lore=§n-- Lore -- -desc.misc.lshift=§8Hold <§e§oLSHIFT§8§o> %s -desc.misc.luna=§o20x155mm Lunatic -desc.misc.meltPoint=Melting point: §c%s +desc.misc.lctrl=ֲ§8Hold <ֲ§eֲ§oLCTRLֲ§8ֲ§o> %s +desc.misc.lore=ֲ§n-- Lore -- +desc.misc.lshift=ֲ§8Hold <ֲ§eֲ§oLSHIFTֲ§8ֲ§o> %s +desc.misc.luna=ֲ§o20x155mm Lunatic +desc.misc.meltPoint=Melting point: ֲ§c%s desc.misc.noPos=No position set! desc.misc.pos=Set pos to: %s, %s, %s desc.misc.posSet=Position set! desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum -desc.item.zirnoxBreedingRod=§2[ZIRNOX Breeding Rod]$§ePlace next to fuel rods to breed$§eLasts %d ticks -desc.item.zirnoxRod=§a[ZIRNOX Fuel Rod]$§eGenerates %1$d heat per tick$§eLasts %2$d ticks +desc.item.zirnoxBreedingRod=ֲ§2[ZIRNOX Breeding Rod]$ֲ§ePlace next to fuel rods to breed$ֲ§eLasts %d ticks +desc.item.zirnoxRod=ֲ§a[ZIRNOX Fuel Rod]$ֲ§eGenerates %1$d heat per tick$ֲ§eLasts %2$d ticks digamma.playerDigamma=Digamma exposure: digamma.playerHealth=Digamma influence: @@ -1162,15 +1162,15 @@ gun.name.ifPit=IF-18 Horseshoe Bottomless Pit gun.name.ifScope=IF-18 Horseshoe Scoped gun.name.ifStorm=IF-18 Horseshoe Silver Storm gun.name.ifVanity=IF-18 Horseshoe Vanity -gun.name.karl=M1 Karl-Gerät +gun.name.karl=M1 Karl-Gerֳ₪t gun.name.ks23=KS-23 gun.name.lacunae=Auntie Lacunae gun.name.lasetDet=Hopeville Laser Detonator gun.name.lunaAR=1986 Bishamonten type Assault Rifle -gun.name.lunaGun=1978 RÄhula type Standard Issue Sidearm (Revision 2) +gun.name.lunaGun=1978 Rִ�hula type Standard Issue Sidearm (Revision 2) gun.name.lunaHLR=1944 Chang'e type Light Machine Gun gun.name.lunaShotty=1978 Guan Yu type Scattergun (Revision 1) -gun.name.lunaSMG=1956 Ä€nanda type Submachine Gun +gun.name.lunaSMG=1956 ִ€nanda type Submachine Gun gun.name.lunaSniper=1915 Hou Yi type Anti-Material Rifle gun.name.lunaTWR=Time Warp Rifle gun.name.m2=Browning machine gun, cal. .50, M2, HB @@ -1183,7 +1183,7 @@ gun.name.mg3=Universal-Maschinengewehr Modell 3 gun.name.mp40=Maschinenpistole 40 gun.name.nerf=NERF blaster of unknown design gun.name.osipr=Overwatch Standard Issue Pulse Rifle -gun.name.panz=Raketenpanzerbüchse 54 +gun.name.panz=Raketenpanzerbֳ¼chse 54 gun.name.quadro=OpenQuadro Guided Man-Portable Missile Launcher gun.name.remington870=Remington 870 gun.name.revolverCursed=Britannia Standard Issue Motorized Handgun @@ -1226,12 +1226,12 @@ hadron.error_analysis_too_long=Error 0x06 [ATL] hadron.error_analysis_too_short=Error 0x07 [ATS] hadron.error_diode_collision=Error 0x08 [DC] hadron.error_branching_turn=Error 0x09 [BT] -hadron.hopper0=§eNormal Mode:$All items will be used. -hadron.hopper1=§eHopper Mode:$One item will always remain. -hadron.hopper2=§eSingle Mode:$Only allows one item per slot. +hadron.hopper0=ֲ§eNormal Mode:$All items will be used. +hadron.hopper1=ֲ§eHopper Mode:$One item will always remain. +hadron.hopper2=ֲ§eSingle Mode:$Only allows one item per slot. hadron.idle=Idle -hadron.modeCircular=§eCircular Accelerator Mode:$Magnets must loop back into core.$Unlocks more recipes. -hadron.modeLine=§eLinear Accelerator Mode:$Accelerator ends with analysis chamber.$Fewer Recipes. +hadron.modeCircular=ֲ§eCircular Accelerator Mode:$Magnets must loop back into core.$Unlocks more recipes. +hadron.modeLine=ֲ§eLinear Accelerator Mode:$Accelerator ends with analysis chamber.$Fewer Recipes. hadron.noresult=No Result. hadron.noresult_too_slow=Insuff. momentum! hadron.noresult_wrong_ingredient=Invalid recipe! @@ -1340,7 +1340,7 @@ hbmfluid.mustardgas=Mustard Gas hbmfluid.naphtha=Naphtha hbmfluid.naphtha_coker=Coker Naphtha hbmfluid.naphtha_crack=Cracked Naphtha -hbmfluid.nitan=NITAN© 100 Octane Super Fuel +hbmfluid.nitan=NITANֲ© 100 Octane Super Fuel hbmfluid.nitric_acid=Nitric Acid hbmfluid.nitroglycerin=Nitroglycerin hbmfluid.none=None @@ -1679,7 +1679,7 @@ item.ammo_grenade_he.name=40mm Grenade (HE) item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary) item.ammo_grenade_kampf.name=40mm Rocket item.ammo_grenade_leadburster.name=40mm Leadburster -item.ammo_grenade_nuclear.name=40mm Grenade (Привет) +item.ammo_grenade_nuclear.name=40mm Grenade (׀�×€׀¸׀²׀µ×‚) item.ammo_grenade_phosphorus.name=40mm Grenade (WP) item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) item.ammo_grenade_toxic.name=40mm Grenade (Chemical) @@ -1714,7 +1714,7 @@ item.ammo_rocket_emp.name=84mm Rocket (Pulse) item.ammo_rocket_glare.name=84mm Rocket (Red Glare) item.ammo_rocket_he.name=84mm Rocket (HE) item.ammo_rocket_incendiary.name=84mm Rocket (Incendiary) -item.ammo_rocket_nuclear.name=84mm Rocket (Привет) +item.ammo_rocket_nuclear.name=84mm Rocket (׀�×€׀¸׀²׀µ×‚) item.ammo_rocket_phosphorus.name=84mm Rocket (WP) item.ammo_rocket_rpc.name=84mm Rocket Propelled Chainsaw item.ammo_rocket_shrapnel.name=84mm Rocket (Shrapnel) @@ -1728,7 +1728,7 @@ item.ammo_shell_w9.name=240mm W9 Nuclear Shell item.ammo_stinger_rocket.name=Stinger Rocket item.ammo_stinger_rocket_he.name=Stinger Rocket (HE) item.ammo_stinger_rocket_incendiary.name=Stinger Rocket (Incendiary) -item.ammo_stinger_rocket_nuclear.name=Stinger Rocket (Привет) +item.ammo_stinger_rocket_nuclear.name=Stinger Rocket (׀�×€׀¸׀²׀µ×‚) item.ammo_stinger_rocket_bones.name=Stinger Rocket (Bone-Seeking) item.ams_catalyst_aluminium.name=Aluminium Reaction Catalyst item.ams_catalyst_beryllium.name=Beryllium Reaction Catalyst @@ -1768,7 +1768,7 @@ item.apple_schrabidium.name=Schrabidium Apple item.arc_electrode.name=Graphite Electrode item.arc_electrode_burnt.name=Molten Electrode item.arc_electrode_desh.name=Desh Electrode -item.armor_polish.name=ShiningArmorâ„¢ Armor Polish +item.armor_polish.name=ShiningArmorג„¢ Armor Polish item.asbestos_boots.name=Fire Proximity Boots item.asbestos_cloth.name=Fire Proximity Cloth item.asbestos_helmet.name=Fire Proximity Helmet @@ -1992,7 +1992,7 @@ item.can_mug.name=MUG Root Beer item.can_overcharge.name=Overcharge Delirium XT item.can_redbomb.name='Red Bomb' Energy Drink item.can_smart.name='Smart' Energy Drink -item.canister_NITAN.name=NITAN© 100 Octane Super Fuel (LEGACY) +item.canister_NITAN.name=NITANֲ© 100 Octane Super Fuel (LEGACY) item.canister_biofuel.name=Biofuel Canister (LEGACY) item.canister_bitumen.name=Bitumen Canister (LEGACY) item.canister_canola.name=Engine Lubricant (LEGACY) @@ -2036,7 +2036,7 @@ item.canned_fried.name=Canned Fried Chicken item.canned_fried.desc=Even the can is deep fried! item.canned_hotdogs.name=Canned Hotdogs item.canned_hotdogs.desc=Not to be confused with cool cats. -item.canned_jizz.name=FlimFlam Industries Canned Stallion Milkâ„¢ +item.canned_jizz.name=FlimFlam Industries Canned Stallion Milkג„¢ item.canned_jizz.desc=Wait wh- item.canned_kerosene.name=Canned Kerosene item.canned_kerosene.desc=Just imagine a witty line here. @@ -2050,14 +2050,14 @@ item.canned_napalm.name=Canned Napalm item.canned_napalm.desc=I love the smell of old memes in the morning! item.canned_oil.name=Canned Engine Oil item.canned_oil.desc=It makes motors go, so why not humans? -item.canned_pashtet.name=Паштет -item.canned_pashtet.desc=уÑлуги перевода недоÑтупны! +item.canned_pashtet.name=׀�׀°×ˆ×‚׀µ×‚ +item.canned_pashtet.desc=ׯ’×ï¿½×€Â»×Æ’׀³׀¸ ׀¿׀µ×€׀µ׀²׀¾׀´׀° ׀½׀µ׀´׀¾×�×â€š×Æ’׀¿׀½×‹! item.canned_pizza.name=Canned Pepperoni Pizza item.canned_pizza.desc=A crime against humanity. item.canned_recursion.name=Canned Recursion item.canned_recursion.desc=Canned Recursion item.canned_spam.name=Canned Spam -item.canned_spam.desc=The three-and-a-half-minute sketch is set in the fictional Green Midget Cafe in Bromley.$An argument develops between the waitress, who recites a menu in which nearly$every dish contains Spam, and Mrs. Bun, who does not like Spam. She asks for a$dish without Spam, much to the amazement of her Spam-loving husband. The waitress$responds to this request with disgust. Mr. Bun offers to take her Spam instead,$and asks for a dish containing a lot of Spam and baked beans. The waitress says$no since they are out of baked beans; when Mr. Bun asks for a substitution of Spam,$the waitress again responds with disgust. At several points, a group of Vikings in$the restaurant interrupts conversation by loudly singing about Spam.$The irate waitress orders them to shut up, but they resume singing more loudly.$A Hungarian tourist comes to the counter, trying to order by using a wholly$inaccurate Hungarian/English phrasebook (a reference to a previous sketch).$He is rapidly escorted away by a police constable. The sketch abruptly cuts to a$historian in a television studio talking about the origin of the Vikings in the café.$As he goes on, he begins to increasingly insert the word \"Spam\" into every$sentence, and the backdrop is raised to reveal the restaurant set behind.$The historian joins the Vikings in their song, and Mr. and Mrs. Bun are lifted by$wires out of the scene while the singing continues. In the original televised performance,$the closing credits begin to scroll with the singing still audible in the background. +item.canned_spam.desc=The three-and-a-half-minute sketch is set in the fictional Green Midget Cafe in Bromley.$An argument develops between the waitress, who recites a menu in which nearly$every dish contains Spam, and Mrs. Bun, who does not like Spam. She asks for a$dish without Spam, much to the amazement of her Spam-loving husband. The waitress$responds to this request with disgust. Mr. Bun offers to take her Spam instead,$and asks for a dish containing a lot of Spam and baked beans. The waitress says$no since they are out of baked beans; when Mr. Bun asks for a substitution of Spam,$the waitress again responds with disgust. At several points, a group of Vikings in$the restaurant interrupts conversation by loudly singing about Spam.$The irate waitress orders them to shut up, but they resume singing more loudly.$A Hungarian tourist comes to the counter, trying to order by using a wholly$inaccurate Hungarian/English phrasebook (a reference to a previous sketch).$He is rapidly escorted away by a police constable. The sketch abruptly cuts to a$historian in a television studio talking about the origin of the Vikings in the cafֳ©.$As he goes on, he begins to increasingly insert the word \"Spam\" into every$sentence, and the backdrop is raised to reveal the restaurant set behind.$The historian joins the Vikings in their song, and Mr. and Mrs. Bun are lifted by$wires out of the scene while the singing continues. In the original televised performance,$the closing credits begin to scroll with the singing still audible in the background. item.canned_stew.name=Canned "Mushroom Stew" item.canned_stew.desc=... item.canned_tomato.name=Canned Tomato Soup @@ -2611,9 +2611,9 @@ item.grenade_tau.name=Tau Grenade item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade item.gun_ar15.name=Josh item.gun_avenger.name=CZ57 Avenger Minigun -item.gun_b92.name=§9B92 Energy Pistol§r -item.gun_b92_ammo.name=§9B92 Energy Cell§r -item.gun_b93.name=§cB93 Energy Mod§r +item.gun_b92.name=ֲ§9B92 Energy Pistolֲ§r +item.gun_b92_ammo.name=ֲ§9B92 Energy Cellֲ§r +item.gun_b93.name=ֲ§cB93 Energy Modֲ§r item.gun_benelli.name=Benelli Autoshotgun (Drum Mod) item.gun_bf.name=BEL item.gun_bf_ammo.name=Balefire Shell @@ -2667,7 +2667,7 @@ item.gun_lever_action.name=Mare's Leg (Original) item.gun_lever_action_ammo.name=12x74 Buckshot (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dark) item.gun_lever_action_sonata.name=Flipped Mare's Leg -item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r +item.gun_lever_action_sonata_2.name=ֲ§cSonata's Microphoneֲ§r item.gun_lunatic_marksman.name=Lunatic Sniper Rifle item.gun_m2.name=Ma Deuce item.gun_minigun.name=CZ53 Personal Minigun @@ -2685,7 +2685,7 @@ item.gun_osipr_ammo2.name=Combine Ball item.gun_panzerschreck.name=Panzerschreck item.gun_proto.name=M42 Nuclear Catapult "Proto MIRV" item.gun_quadro.name=Quattro Formaggi -item.gun_remington.name=ãƒã‚¤ãƒ‡ãƒ³ ブラスト [BIDEN BLAST] +item.gun_remington.name=דƒ�ד‚₪דƒ‡דƒ³ דƒ–דƒ©ד‚¹דƒˆ [BIDEN BLAST] item.gun_revolver.name=Enhanced Revolver item.gun_revolver_ammo.name=Lead Bullet item.gun_revolver_blackjack.name=Blackjack Five-Shooter @@ -2799,7 +2799,7 @@ item.ingot_am242.name=Americium-242 Ingot item.ingot_americium_fuel.name=Ingot of Americium Fuel item.ingot_arsenic.name=Arsenic Ingot item.ingot_asbestos.name=Asbestos Sheet -item.ingot_asbestos.desc=§o"Filled with life, self-doubt and asbestos. That comes with the air."§r +item.ingot_asbestos.desc=ֲ§o"Filled with life, self-doubt and asbestos. That comes with the air."ֲ§r item.ingot_au198.name=Gold-198 Ingot item.ingot_australium.name=Australium Ingot item.ingot_bakelite.name=Bakelite Bar @@ -2877,7 +2877,7 @@ item.ingot_semtex.name=Bar of Semtex item.ingot_smore.name=S'more Ingot item.ingot_solinium.name=Solinium Ingot item.ingot_sr90.name=Strontium-90 Ingot -item.ingot_starmetal.name=§9Starmetal Ingot§r +item.ingot_starmetal.name=ֲ§9Starmetal Ingotֲ§r item.ingot_steel.name=Steel Ingot item.ingot_steel_dusted.name=Dusted Steel Ingot item.ingot_tantalium.name=Tantalium Ingot @@ -2901,7 +2901,7 @@ item.ingot_weidanium.name=Weidanium Ingot item.ingot_zirconium.name=Zirconium Cube item.injector_5htp.name=5-HTP Autoinjector item.injector_knife.name=8 Inch Blade Autoinjector -item.ink.name=æž— Ink +item.ink.name=ז�— Ink item.insert_doxium.name=Astolfium-Doped Doxium Insert item.insert_du.name=DU Insert item.insert_era.name=Explosive Reactive Armor Insert @@ -2932,7 +2932,7 @@ item.key_fake.name=Counterfeit Key item.key_kit.name=Key Imitation Kit item.key_red.name=Red Key item.key_red.desc=Explore the other side. -item.key_red.desc.P11=§4e§r +item.key_red.desc.P11=ֲ§4eֲ§r item.kit_toolbox.name=Toolbox item.kit_toolbox_empty.name=Empty Toolbox item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uranium-Thorium crystal matrix @@ -2958,7 +2958,7 @@ item.liquidator_plate.name=Liquidator Suit Chestplate item.lithium.name=Lithium Cube item.lodestone.name=Lodestone item.loop_stew.name=IT Breakfast -item.loops.name=Lööps +item.loops.name=Lֳ¶ֳ¶ps item.loot_10.name=Size 10 Missile Loot Crate item.loot_15.name=Size 15 Missile Loot Crate item.loot_misc.name=General Missile Loot Crate @@ -2989,7 +2989,7 @@ item.med_ptsd.name=PTSD Medication item.med_schiziphrenia.name=Schizophrenia Medication item.medal_liquidator.name=Liquidator Medal item.meltdown_tool.name=Dyatlov Instant Meltdown Applicator -item.memespoon.name=§eMarket Gardener +item.memespoon.name=ֲ§eMarket Gardener item.memory.name=item.null.name item.mese_gavel.name=Mese Gavel item.mese_pickaxe.name=Mese Pickaxe @@ -3057,7 +3057,7 @@ item.missile_skin_orange_insulation.desc=Not an orange juice bottle;$do not atte item.missile_skin_sleek.name=Missile Skin: IF-R&D item.missile_skin_sleek.desc=Chevrons are cool! item.missile_skin_soviet_glory.name=Missile Skin: Soviet Glory -item.missile_skin_soviet_glory.desc=уÑлуга перевода недоÑтупна +item.missile_skin_soviet_glory.desc=ׯ’×ï¿½×€Â»×Æ’׀³׀° ׀¿׀µ×€׀µ׀²׀¾׀´׀° ׀½׀µ׀´׀¾×�×â€š×Æ’׀¿׀½׀° item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it. item.missile_soyuz.name=Soyuz-FG @@ -3189,7 +3189,7 @@ item.mp_warhead_15_balefire.name=Size 15 BF Warhead item.mp_warhead_15_boxcar.name=Size 15 Boxcar? item.mp_warhead_15_he.name=Size 15 HE Warhead item.mp_warhead_15_incendiary.name=Size 15 Incendiary Warhead -item.mp_warhead_15_n2.name=Size 15 N² Mine +item.mp_warhead_15_n2.name=Size 15 Nֲ² Mine item.mp_warhead_15_nuclear.name=Size 15 Nuclear Warhead item.mp_warhead_15_nuclear_mimi.name=Size 15 Mimi-chan's Head item.mp_warhead_15_nuclear_shark.name=Size 15 Nuclear Warhead @@ -3260,7 +3260,7 @@ item.nugget_les.name=Low Enriched Schrabidium Fuel Nugget item.nugget_mercury_tiny.name=Tiny Drop of Mercury item.nugget_mercury.name=Drop of Mercury item.nugget_mox_fuel.name=Nugget of MOX Fuel -item.nugget_mox_fuel.desc=Moxie says: §lTAX EVASION.§r +item.nugget_mox_fuel.desc=Moxie says: ֲ§lTAX EVASION.ֲ§r item.nugget_neptunium.name=Neptunium Nugget item.nugget_neptunium_fuel.name=Neptunium Fuel Nugget item.nugget_osmiridium.name=Osmiridium Nugget @@ -3378,7 +3378,7 @@ item.particle_aproton.name=Antiproton Capsule item.particle_aschrab.name=Antischrabidium Capsule item.particle_copper.name=Copper Ion Capsule item.particle_dark.name=Dark Matter Capsule -item.particle_digamma.name=§cThe Digamma Particle§r +item.particle_digamma.name=ֲ§cThe Digamma Particleֲ§r item.particle_empty.name=Empty Particle Capsule item.particle_higgs.name=Higgs Boson Capsule item.particle_hydrogen.name=Hydrogen Ion Capsule @@ -3444,19 +3444,19 @@ item.pellet_rtg_weak.desc=Cheaper and weaker pellet, now with more U238! item.pellet_schrabidium.name=Pure Schrabidium Watz Pellet item.photo_panel.name=Photovoltaic Panel item.pile_rod_boron.name=Chicago Pile Control Rod -item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle +item.pile_rod_boron.desc=ֲ§9[Neutron Absorber]$ֲ§eClick to toggle item.pile_rod_detector.name=Chicago Pile Control & Detector Rod -item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux +item.pile_rod_detector.desc=ֲ§9[Neutron Detector/Absorber]$ֲ§eUse defuser to increase/decrease neutron limit$ֲ§eUse screwdriver w/o sneaking to inspect flux item.pile_rod_lithium.name=Chicago Pile Lithium Cell -item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core +item.pile_rod_lithium.desc=ֲ§a[Breedable Fuel]$ֲ§eUse hand drill to inspect core item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod -item.pile_rod_plutonium.desc=§d[Neutron Source] +item.pile_rod_plutonium.desc=ֲ§d[Neutron Source] item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod -item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. +item.pile_rod_pu239.desc=ֲ§a[Reactive Fuel]$ֲ§eRich in Plutonium-239. item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source -item.pile_rod_source.desc=§d[Neutron Source] +item.pile_rod_source.desc=ֲ§d[Neutron Source] item.pile_rod_uranium.name=Chicago Pile Uranium Rod -item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample +item.pile_rod_uranium.desc=ֲ§a[Reactive Fuel]$ֲ§eUse hand drill to take core sample item.pill_iodine.name=Iodine Pill item.pill_iodine.desc=Removes negative effects item.pill_herbal.name=Herbal Paste @@ -3520,7 +3520,7 @@ item.powder_actinium_tiny.name=Tiny Pile of Actinium Powder item.powder_advanced_alloy.name=Advanced Alloy Powder item.powder_aluminium.name=Aluminium Powder item.powder_asbestos.name=Asbestos Powder -item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r +item.powder_asbestos.desc=ֲ§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"ֲ§r item.powder_ash.coal.name=Coal Ash item.powder_ash.fly.name=Fly Ash item.powder_ash.fullerene.name=Fullerene @@ -3561,7 +3561,7 @@ item.powder_cs137_tiny.name=Tiny Pile of Caesium-137 Powder item.powder_daffergon.name=Daffergon Powder item.powder_desh.name=Desh Powder item.powder_desh_mix.name=Desh Blend -item.powder_desh_ready.name=DeshReadyâ„¢ Blend +item.powder_desh_ready.name=DeshReadyג„¢ Blend item.powder_diamond.name=Diamond Powder item.powder_dineutronium.name=Dineutronium Powder item.powder_dura_steel.name=High-Speed Steel Powder @@ -3703,7 +3703,7 @@ item.rag_damp.name=Damp Cloth item.rag_piss.name=Piss-Soaked Rag item.rbmk_fuel_balefire.name=Balefire RBMK Fuel Rod item.rbmk_fuel_balefire_gold.name=Flashgold RBMK Fuel Rod -item.rbmk_fuel_drx.name=§cDigamma RBMK Fuel Rod§r +item.rbmk_fuel_drx.name=ֲ§cDigamma RBMK Fuel Rodֲ§r item.rbmk_fuel_empty.name=Empty RBMK Fuel Rod item.rbmk_fuel_flashlead.name=Flashlead RBMK Fuel Rod item.rbmk_fuel_hea241.name=HEA-241 RBMK Fuel Rod @@ -3737,7 +3737,7 @@ item.rbmk_lid.name=RBMK Cover Panel item.rbmk_lid_glass.name=RBMK Glass Cover Panel item.rbmk_pellet_balefire.name=Balefire Fuel Pellet item.rbmk_pellet_balefire_gold.name=Flashgold Fuel Pellet -item.rbmk_pellet_drx.name=§cDigamma Fuel Pellet§r +item.rbmk_pellet_drx.name=ֲ§cDigamma Fuel Pelletֲ§r item.rbmk_pellet_flashlead.name=Flashlead Fuel Pellet item.rbmk_pellet_hea241.name=HEA-241 Fuel Pellet item.rbmk_pellet_hea242.name=HEA-242 Fuel Pellet @@ -3783,7 +3783,7 @@ item.redstone_sword.name=Redstone Sword item.reer_graar.name=The Reer Graar item.remote.name=Broken Remote item.ring_pull.name=Ring Pull -item.ring_starmetal.name=§9Starmetal Ring§r +item.ring_starmetal.name=ֲ§9Starmetal Ringֲ§r item.robes_boots.name=Field Boots item.robes_helmet.name=Casual Hoodie item.robes_legs.name=Casual Pants @@ -3985,6 +3985,7 @@ item.sat_base.name=Satellite Base item.sat_chip.name=Satellite ID-Chip item.sat_coord.name=Satellite Designator item.sat_designator.name=Satellite Laser Designator +item.sat_relay.name=Satellite Radar Relay item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion item.sat_gerald.name=Gerald The Construction Android item.sat_head_laser.name=Death Ray @@ -4315,12 +4316,12 @@ item.watz_pellet_depleted.nqr.name=Naquadria Watz Pellet (Depleted) item.watz_pellet_depleted.hen.name=HEN Watz Pellet (Depleted) item.watz_pellet_depleted.schrabidium.name=Schrabidium Watz Pellet (Depleted) item.weapon_bat.name=Richard's Default -item.weapon_bat_nail.name=The Cliché +item.weapon_bat_nail.name=The Clichֳ© item.weapon_golf_club.name=Russian Mobster's Club item.weapon_pipe_lead.name=The Manual Override item.weapon_pipe_rusty.name=The Attitude Adjuster item.weapon_saw.name=Doctor Assisted Homicide -item.weaponized_starblaster_cell.name=§cRigged Star Blaster Energy Cell§r +item.weaponized_starblaster_cell.name=ֲ§cRigged Star Blaster Energy Cellֲ§r item.wd40.name=VT-40 item.wild_p.name=Wild Pegasus Dry Whiskey item.wings_limp.name=Limp Wings @@ -4402,11 +4403,11 @@ rbmk.console.fuel_depletion=Monitor average fuel depletion rbmk.console.fuel_poison=Monitor average xenon poisoning rbmk.console.fuel_temp=Monitor average fuel temperature rbmk.control.level=%s -rbmk.control.red=§cRed Group -rbmk.control.yellow=§eYellow Group -rbmk.control.green=§aGreen Group -rbmk.control.blue=§1Blue Group -rbmk.control.purple=§5Purple Group +rbmk.control.red=ֲ§cRed Group +rbmk.control.yellow=ֲ§eYellow Group +rbmk.control.green=ֲ§aGreen Group +rbmk.control.blue=ֲ§1Blue Group +rbmk.control.purple=ֲ§5Purple Group rbmk.moderated=Moderated rbmk.rod.depletion=Depletion: %s rbmk.rod.xenon=Xenon poison: %s @@ -4471,7 +4472,7 @@ tile.barbed_wire_wither.name=Withered Barbed Wire tile.barrel_antimatter.name=Magnetic Antimatter Container tile.barrel_corroded.name=Corroded Barrel tile.barrel_iron.name=Iron Barrel -tile.barrel_plastic.name=Safe Barrelâ„¢ +tile.barrel_plastic.name=Safe Barrelג„¢ tile.barrel_steel.name=Steel Barrel tile.barrel_tcalloy.name=Technetium Steel Barrel tile.barricade.name=Sand Bags @@ -4572,7 +4573,7 @@ tile.block_semtex.name=Block of Semtex tile.block_slag.name=Block of Slag tile.block_smore.name=Block of S'more tile.block_solinium.name=Block of Solinium -tile.block_starmetal.name=§9Block of Starmetal§r +tile.block_starmetal.name=ֲ§9Block of Starmetalֲ§r tile.block_steel.name=Block of Steel tile.block_sulfur.name=Block of Sulfur tile.block_tantalium.name=Block of Tantalium @@ -4744,7 +4745,7 @@ tile.concrete_slab.ducrete_smooth.name=Ducrete Slab tile.concrete_smooth.name=Concrete tile.concrete_smooth_stairs.name=Concrete Stairs tile.concrete_stairs.name=Concrete Tile Stairs -tile.concrete_super.name=Über Concrete +tile.concrete_super.name=ֳ�ber Concrete tile.concrete_super_broken.name=Moldy Debris tile.conveyor.name=Conveyor Belt tile.conveyor.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend @@ -4910,11 +4911,11 @@ tile.frozen_grass.name=Frozen Grass tile.frozen_log.name=Frozen Log tile.frozen_planks.name=Frozen Planks tile.furnace_combination.name=Combination Oven -tile.furnace_combination.desc=A large furnace that can produce charcoal and coal coke.$Produces fluid byproducts.$Heat transfer rate: ΔT*0.25 TU/t +tile.furnace_combination.desc=A large furnace that can produce charcoal and coal coke.$Produces fluid byproducts.$Heat transfer rate: Ö¾â€T*0.25 TU/t tile.furnace_iron.name=Iron Furnace tile.furnace_iron.desc=Larger and more efficient furnace,$does not waste fuel when idle. tile.furnace_steel.name=Steel Furnace -tile.furnace_steel.desc=Very large furnace that can provide bonus items$when smelting ores. Requires external heat source.$Heat transfer rate: ΔT*0.05 TU/t$(Δ means difference and T means temperature) +tile.furnace_steel.desc=Very large furnace that can provide bonus items$when smelting ores. Requires external heat source.$Heat transfer rate: Ö¾â€T*0.05 TU/t$(־†means difference and T means temperature) tile.fusion_center.name=Central Magnet Piece tile.fusion_conductor.name=Superconducting Magnet tile.fusion_conductor_welded.name=Superconducting Magnet (Welded) @@ -4971,7 +4972,7 @@ tile.hadron_coil_starmetal.name=Dense Starmetal Coil tile.hadron_cooler.name=Particle Accelerator Cooling Unit tile.hadron_cooler.desc=Cooling power: 10$Overcooling threshold: 10$Cooling bonus: +10%%$Overcooling penalty: -25%% tile.hadron_cooler_mk2.name=Particle Accelerator Cooling Unit - The Palindrome Special -tile.hadron_cooler_mk2.desc=Cooling power: 5$Efficiency function: 2-(cooling-15)²/225$Maximum penalty: -90%% +tile.hadron_cooler_mk2.desc=Cooling power: 5$Efficiency function: 2-(cooling-15)ֲ²/225$Maximum penalty: -90%% tile.hadron_core.name=Particle Accelerator Core Component tile.hadron_diode.name=Schottky Particle Diode tile.hadron_plating.name=Particle Accelerator Plating @@ -5037,7 +5038,7 @@ tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energy Storage Block tile.machine_battery_potato.name=Potato Battery Block tile.machine_boiler.name=Boiler -tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t +tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: Ö¾â€T*0.01 TU/t tile.machine_boiler_electric_off.name=Electric Oil Heater tile.machine_boiler_electric_on.name=Electric Oil Heater tile.machine_boiler_off.name=Oil Heater @@ -5052,7 +5053,7 @@ tile.machine_chungus.desc=Efficiency: 85%% tile.machine_coal_off.name=Combustion Generator tile.machine_coal_on.name=Combustion Generator tile.machine_coker.name=Coker Unit -tile.machine_coker.desc=Cokes oil, creating fluid byproducts.$Requires external heat source.$Heat transfer rate: ΔT*0.025 TU/t +tile.machine_coker.desc=Cokes oil, creating fluid byproducts.$Requires external heat source.$Heat transfer rate: Ö¾â€T*0.025 TU/t tile.machine_combine_factory.name=CMB Steel Furnace tile.machine_combustion_engine.name=Industrial Combustion Engine tile.machine_compressor.name=Compressor @@ -5094,7 +5095,7 @@ tile.machine_generator.name=Nuclear Reactor (Old) tile.machine_geo.name=Geothermal Electric Generator tile.machine_hephaestus.name=Geothermal Heat Exchanger tile.machine_industrial_boiler.name=Industrial Boiler -tile.machine_industrial_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t$Cannot explode +tile.machine_industrial_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: Ö¾â€T*0.01 TU/t$Cannot explode tile.machine_industrial_generator.name=Industrial Generator tile.machine_keyforge.name=Locksmith Table tile.machine_large_turbine.name=Industrial Steam Turbine @@ -5199,7 +5200,7 @@ tile.nuke_fstbmb.name=Balefire Bomb tile.nuke_gadget.name=The Gadget tile.nuke_man.name=Fat Man tile.nuke_mike.name=Ivy Mike -tile.nuke_n2.name=N² Mine +tile.nuke_n2.name=Nֲ² Mine tile.nuke_n45.name=N45 Naval Mine tile.nuke_prototype.name=The Prototype tile.nuke_solinium.name=The Blue Rinse @@ -5609,9 +5610,9 @@ tool.ability.silktouch=Silk Touch tool.ability.smelter=Auto-Smelter turret.animals=Target Passive: %s -turret.arty.artillery=§eArtillery Mode$Grace: 250m$Range: 3,000m -turret.arty.cannon=§eCannon Mode$Grace: 32m$Range: 250m -turret.arty.manual=§eManual Mode$Range: 3,000m +turret.arty.artillery=ֲ§eArtillery Mode$Grace: 250m$Range: 3,000m +turret.arty.cannon=ֲ§eCannon Mode$Grace: 32m$Range: 250m +turret.arty.manual=ֲ§eManual Mode$Range: 3,000m turret.machines=Target Machines: %s turret.mobs=Target Mobs: %s turret.none=None @@ -5622,12 +5623,12 @@ turret.players=Target Players: %s upgrade.consumption=Consumption %s upgrade.speed=Process time %s -upgrade.gui.title=§lAcceptable Upgrades:§r -upgrade.gui.afterburner= * §dAfterburner§r: Stacks to level %s -upgrade.gui.effectiveness= * §aEffectiveness§r: Stacks to level %s -upgrade.gui.overdrive= * §7Overdrive§r: Stacks to level %s -upgrade.gui.power= * §9Power-Saving§r: Stacks to level %s -upgrade.gui.speed= * §4Speed§r: Stacks to level %s +upgrade.gui.title=ֲ§lAcceptable Upgrades:ֲ§r +upgrade.gui.afterburner= * ֲ§dAfterburnerֲ§r: Stacks to level %s +upgrade.gui.effectiveness= * ֲ§aEffectivenessֲ§r: Stacks to level %s +upgrade.gui.overdrive= * ֲ§7Overdriveֲ§r: Stacks to level %s +upgrade.gui.power= * ֲ§9Power-Savingֲ§r: Stacks to level %s +upgrade.gui.speed= * ֲ§4Speedֲ§r: Stacks to level %s wavelengths.name.ir=Infrared wavelengths.name.visible=Visible Light diff --git a/src/main/resources/assets/hbm/textures/items/sat_relay.png b/src/main/resources/assets/hbm/textures/items/sat_relay.png new file mode 100644 index 0000000000000000000000000000000000000000..2c104ddf792476a3dcfc483abba098ea8e88b032 GIT binary patch literal 486 zcmV@P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0eeYAK~y+TrIE2q z!%z^$FA*Kmh;}k{a;>5`6gP`QH@gT`1b4}xo0Bf;2#WOzu%|WY&Ltfpk7B?Cl zsMX#nzpxCrcdMk4DFY;#OnzY;{#jL3$Ye5b*?ES$wF5Yx-=TXX)_@h_!boG=nx?X@ zKH+wCpYFzqHDDtw;f%PjD7I}wrSclTL|xZIjIu04B9VYzuP3x5Nnn~LTV83RMkHtY zX}G?%%`<>7BrmWmi=yXwq|4> Date: Sun, 10 Dec 2023 10:07:09 +0200 Subject: [PATCH 166/207] I suffer from stupid idiot disease --- .../com/hbm/tileentity/machine/TileEntityMachineRadarNT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 41c0ce4d6..93d4a8218 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -417,7 +417,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I int id = data.getInteger("link"); ItemStack link = slots[id]; - if(link != null && link.getItem() == ModItems.sat_chip) { + if(link != null && link.getItem() == ModItems.sat_relay) { World world = player.getEntityWorld(); Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(ISatChip.getFreqS(link)); if(sat instanceof SatelliteLaser) { From 0062a2f01ce01fe3cb355348a004a2185e118d3f Mon Sep 17 00:00:00 2001 From: 9Valjews <64272884+9Valjew@users.noreply.github.com> Date: Sun, 10 Dec 2023 10:18:52 +0200 Subject: [PATCH 167/207] Empty commit, be aware, it might break some encoding shit in other languages, I cant check it because if I compile it it will use the hebrew encoding regardless, hopefully there would be no issue when its properly compiled as its only my system compiling it like that, rather than the files being borked From c64f3f5e5aca2d4b6cb30614a8b2ad9392ff17a2 Mon Sep 17 00:00:00 2001 From: 9Valjews <64272884+9Valjew@users.noreply.github.com> Date: Sun, 10 Dec 2023 10:20:16 +0200 Subject: [PATCH 168/207] anyways I think it should be fine, its just my PC being stupid From 4343caeb226d302c3c8eb2cb02660f216e56e90c Mon Sep 17 00:00:00 2001 From: 9Valjews <64272884+9Valjew@users.noreply.github.com> Date: Sun, 10 Dec 2023 10:27:46 +0200 Subject: [PATCH 169/207] Update en_US.lang The unfuckening --- src/main/resources/assets/hbm/lang/en_US.lang | 320 +++++++++--------- 1 file changed, 160 insertions(+), 160 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 962f4506d..5ff16bd84 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -122,7 +122,7 @@ achievement.technetium.desc=It's medicinal, it's medicinal! achievement.technetium=Big Man, Pig Man achievement.watzBoom.desc=Drain your septic tank next time. achievement.watzBoom=Disgusting -achievement.watz.desc=Fֳ³lkvangr fields possibly included. +achievement.watz.desc=Fólkvangr fields possibly included. achievement.watz=The Power of Element-126 achievement.witchtaunter.desc=Those wacky creatures got nothing on you! achievement.witchtaunter=Witch Taunter @@ -199,129 +199,129 @@ book.test.page1=Test Page 1 book.error.cover=Hadron Collider:$Troubleshooting book.error.title1=Error 0x01 [NC] -book.error.page1=ֲ§lName:ֲ§r "ERROR_NO_CHARGE" ֲ§lDescription:ֲ§r The particle has reached a segment with insufficient charge. ֲ§lPotential fix:ֲ§r Either replace one of the plugs that the particle successfully passes with higher-tier ones or add another plug slightly before the segment where the particle expires. +book.error.page1=§lName:§r "ERROR_NO_CHARGE" §lDescription:§r The particle has reached a segment with insufficient charge. §lPotential fix:§r Either replace one of the plugs that the particle successfully passes with higher-tier ones or add another plug slightly before the segment where the particle expires. book.error.title2=Error 0x02 [NA] -book.error.page2=ֲ§lName:ֲ§r "ERROR_NO_ANALYSIS" ֲ§lDescription:ֲ§r The particle has reached the core, despite not passing an analysis chamber. ֲ§lPotential fix:ֲ§r Make sure that your accelerator has an analysis chamber and double-check the operating mode (linear/circular). +book.error.page2=§lName:§r "ERROR_NO_ANALYSIS" §lDescription:§r The particle has reached the core, despite not passing an analysis chamber. §lPotential fix:§r Make sure that your accelerator has an analysis chamber and double-check the operating mode (linear/circular). book.error.title3=Error 0x03 [OC] -book.error.page3=ֲ§lName:ֲ§r "ERROR_OBSTRUCTED_CHANNEL" ֲ§lDescription:ֲ§r The particle has collided with a block inside the collider's channel. ֲ§lPotential fix:ֲ§r Make sure that the inside of your particle collider is free of any obstructions, except for particle diodes and core blocks. +book.error.page3=§lName:§r "ERROR_OBSTRUCTED_CHANNEL" §lDescription:§r The particle has collided with a block inside the collider's channel. §lPotential fix:§r Make sure that the inside of your particle collider is free of any obstructions, except for particle diodes and core blocks. book.error.title4=Error 0x04 [EC] -book.error.page4=ֲ§lName:ֲ§r "ERROR_EXPECTED_COIL" ֲ§lDescription:ֲ§r The particle has passed a segment that lacks one or multiple coils. ֲ§lPotential fix:ֲ§r Remove the plating of the collider in the offending area and check if all the coils are there. This error will also happen at T-crossings that are built without diodes. +book.error.page4=§lName:§r "ERROR_EXPECTED_COIL" §lDescription:§r The particle has passed a segment that lacks one or multiple coils. §lPotential fix:§r Remove the plating of the collider in the offending area and check if all the coils are there. This error will also happen at T-crossings that are built without diodes. book.error.title5=Error 0x05 [MS] -book.error.page5=ֲ§lName:ֲ§r "ERROR_MALFORMED_SEGMENT" ֲ§lDescription:ֲ§r The particle has passed a segment that was built incorrectly (but neither obstructed nor missing coils). ֲ§lPotential fix:ֲ§r Make sure that the offending segment has platings in all the required spaces, leaving no coils exposed. +book.error.page5=§lName:§r "ERROR_MALFORMED_SEGMENT" §lDescription:§r The particle has passed a segment that was built incorrectly (but neither obstructed nor missing coils). §lPotential fix:§r Make sure that the offending segment has platings in all the required spaces, leaving no coils exposed. book.error.title6=Error 0x06 [ATL] -book.error.page6=ֲ§lName:ֲ§r "ERROR_ANALYSIS_TOO_LONG" ֲ§lDescription:ֲ§r The particle has passed more than the three required valid analysis chamber segments. ֲ§lPotential fix:ֲ§r Make sure that the analysis chamber is exactly 3 blocks long for circular accelerator and at least 2 blocks long for linear ones. Also check if the particle doesn't pass multiple analysis chambers in a branching and/or looped accelerator. +book.error.page6=§lName:§r "ERROR_ANALYSIS_TOO_LONG" §lDescription:§r The particle has passed more than the three required valid analysis chamber segments. §lPotential fix:§r Make sure that the analysis chamber is exactly 3 blocks long for circular accelerator and at least 2 blocks long for linear ones. Also check if the particle doesn't pass multiple analysis chambers in a branching and/or looped accelerator. book.error.title7=Error 0x07 [ATS] -book.error.page7=ֲ§lName:ֲ§r "ERROR_ANALYSIS_TOO_SHORT" ֲ§lDescription:ֲ§r The particle has left the analysis chamber, despite not meeting the length requirement. ֲ§lPotential fix:ֲ§r Make sure that the analysis chamber on your circular accelerator is exactly 3 blocks long. Valid analysis segments have no coils and the plating is entirely composed of analysis chamber walls/windows. Analysis chambers with coils in them count as regular segments. +book.error.page7=§lName:§r "ERROR_ANALYSIS_TOO_SHORT" §lDescription:§r The particle has left the analysis chamber, despite not meeting the length requirement. §lPotential fix:§r Make sure that the analysis chamber on your circular accelerator is exactly 3 blocks long. Valid analysis segments have no coils and the plating is entirely composed of analysis chamber walls/windows. Analysis chambers with coils in them count as regular segments. book.error.title8=Error 0x08 [DC] -book.error.page8=ֲ§lName:ֲ§r "ERROR_DIODE_COLLISION" ֲ§lDescription:ֲ§r The particle collided with a non-input side of a schottky particle diode. ֲ§lPotential fix:ֲ§r Check if your diodes are configured correctly. Particles can only enter the diode from sides with green inward-pointing arrows. +book.error.page8=§lName:§r "ERROR_DIODE_COLLISION" §lDescription:§r The particle collided with a non-input side of a schottky particle diode. §lPotential fix:§r Check if your diodes are configured correctly. Particles can only enter the diode from sides with green inward-pointing arrows. book.error.title9=Error 0x09 [BT] -book.error.page9=ֲ§lName:ֲ§r "ERROR_BRANCHING_TURN" ֲ§lDescription:ֲ§r The particle has reached a turn with multiple exits. ֲ§lPotential fix:ֲ§r If your turn is a normal one, check if all the required coils are present (i.e. no holes in the coil layer). If the turn is intended to be branched, it requires a schottky particle diode that is correctly configured. +book.error.page9=§lName:§r "ERROR_BRANCHING_TURN" §lDescription:§r The particle has reached a turn with multiple exits. §lPotential fix:§r If your turn is a normal one, check if all the required coils are present (i.e. no holes in the coil layer). If the turn is intended to be branched, it requires a schottky particle diode that is correctly configured. book.rbmk.cover=My first RBMK:$Basics of$building a$reactor book.rbmk.title1=Introduction -book.rbmk.page1=ֲ§lRBMKֲ§r is fully modular nuclear reactor. Unlike most other reactors, there is no "core" and no size restrictions, rather behavior and efficiency of reactor depends on how it is built and how various parts interact with each other. +book.rbmk.page1=§lRBMK§r is fully modular nuclear reactor. Unlike most other reactors, there is no "core" and no size restrictions, rather behavior and efficiency of reactor depends on how it is built and how various parts interact with each other. book.rbmk.title2=Heat -book.rbmk.page2=As reactor runs, it will generate ֲ§lheatֲ§r. Heat will spread between parts, slowly decreasing in the process. The goal is to generate as much heat as possible without melting the reactor, and to transfer heat into steam passages that cool reactor and produce steam. +book.rbmk.page2=As reactor runs, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to generate as much heat as possible without melting the reactor, and to transfer heat into steam passages that cool reactor and produce steam. book.rbmk.title3=Fuel Rod -book.rbmk.page3=The ֲ§lfuel rodֲ§r will capture neutron flux, causing fuel inside the rod to react, releasing neutrons in the process. Neutrons are released in all four main directions with a maximum range of 5 blocks. The amount of released neutrons depends on fuel used. +book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing fuel inside the rod to react, releasing neutrons in the process. Neutrons are released in all four main directions with a maximum range of 5 blocks. The amount of released neutrons depends on fuel used. book.rbmk.title4=Regulating Rod -book.rbmk.page4=The ֲ§lcontrol rodֲ§r will reduce number of neutrons passing through. Fully inserted, it will block all neutrons; when inserted halfway, it will only block half. Control rods are used to regulate activity of the reactor and shut it down. +book.rbmk.page4=The §lcontrol rod§r will reduce number of neutrons passing through. Fully inserted, it will block all neutrons; when inserted halfway, it will only block half. Control rods are used to regulate activity of the reactor and shut it down. book.rbmk.title5=Regulating Rods - Usage book.rbmk.title5.scale=0.9 -book.rbmk.page5=The current bar insertion will be displayed in the center of GUI. The colored buttons on left will add the control bar to the color group, which is useful for quickly selecting grouped bars on ֲ§lRBMKֲ§r console. The buttons on right allow you to manually insert in 25%% increments. +book.rbmk.page5=The current bar insertion will be displayed in the center of GUI. The colored buttons on left will add the control bar to the color group, which is useful for quickly selecting grouped bars on §lRBMK§r console. The buttons on right allow you to manually insert in 25%% increments. book.rbmk.title6=Automatic Control Rods -book.rbmk.page6=ֲ§LAutomatic control rodsֲ§r are almost identical to regular control rods, but they cannot be manually adjusted, instead they will adjust position of the rod based on current temperature. Which function to use and how deep to insert and at what temperature must be determined first. +book.rbmk.page6=§LAutomatic control rods§r are almost identical to regular control rods, but they cannot be manually adjusted, instead they will adjust position of the rod based on current temperature. Which function to use and how deep to insert and at what temperature must be determined first. book.rbmk.title7=Steam Channel -book.rbmk.page7=The ֲ§lsteam channelֲ§r is only part that will actively reduce reactor heat level. If a component is above the boiling point of a given type of steam, it will try to consume as much water and produce as much steam as needed to cool below boiling point. +book.rbmk.page7=The §lsteam channel§r is only part that will actively reduce reactor heat level. If a component is above the boiling point of a given type of steam, it will try to consume as much water and produce as much steam as needed to cool below boiling point. book.rbmk.title8=Neutron Reflector -book.rbmk.page8=The ֲ§lneutron reflectorֲ§r will block passage of neutrons, instead neutrons will be reflected back onto the fuel rod they came from. This is useful for using neutrons that would otherwise be wasted simply by leaving reactor. +book.rbmk.page8=The §lneutron reflector§r will block passage of neutrons, instead neutrons will be reflected back onto the fuel rod they came from. This is useful for using neutrons that would otherwise be wasted simply by leaving reactor. book.rbmk.title9=Neutron Absorber -book.rbmk.page9=ֲ§lNeutron absorberֲ§r simply blocks neutrons. The absorbed neutrons will not generate heat and will be effectively destroyed. This is useful for preventing fuel rods from reacting that would otherwise be within reach. +book.rbmk.page9=§lNeutron absorber§r simply blocks neutrons. The absorbed neutrons will not generate heat and will be effectively destroyed. This is useful for preventing fuel rods from reacting that would otherwise be within reach. book.rbmk.title10=Graphite Retarder -book.rbmk.page10=ֲ§lGraphite moderatorֲ§r converts fast neutrons passing through it into slow neutrons. Most fuels are split into fast neutrons, while slow neutrons are required for fission, so use of moderators is highly recommended. +book.rbmk.page10=§lGraphite moderator§r converts fast neutrons passing through it into slow neutrons. Most fuels are split into fast neutrons, while slow neutrons are required for fission, so use of moderators is highly recommended. book.rbmk.title11=Structural Column -book.rbmk.page11=ֲ§lStructural columnֲ§r does not affect neutrons in any way and has no special application. It is recommended to fill the reactor with structured pillars where there are no other parts, since the structured pillars are capable of transferring heat. +book.rbmk.page11=§lStructural column§r does not affect neutrons in any way and has no special application. It is recommended to fill the reactor with structured pillars where there are no other parts, since the structured pillars are capable of transferring heat. book.rbmk.title12=Console -book.rbmk.page12=ֲ§lRBMK consoleֲ§r allows you to control the reactor from afar. Using the ֲ§ldevice to connect the console RBMKֲ§r on the RBMK part and then on the console will connect the reactor and the console. The console can only control 15x15 parts, for large reactors you can use multiple consoles. +book.rbmk.page12=§lRBMK console§r allows you to control the reactor from afar. Using the §ldevice to connect the console RBMK§r on the RBMK part and then on the console will connect the reactor and the console. The console can only control 15x15 parts, for large reactors you can use multiple consoles. book.rbmk.title13=Using the console book.rbmk.page13=Clicking on parts will select and deselect them. With the colored buttons, you can quickly select all the control rods in that color group. Button "A" will select all control rods, "X" will deselect all. book.rbmk.page14=Entering a number between 0 and 100 in green box and then pressing button next to it will set all selected control rods to that position. Button "AZ-5" will lead to full insertion of all control rods. book.rbmk.title15=Fuel -book.rbmk.page15=The ֲ§lfuelֲ§r response depends on many factors. The main ones are ֲ§lfortificationֲ§r, ֲ§lxenon poisoningֲ§r and number of incoming ֲ§lneutronsֲ§r. Xenon builds up when fuel is low in neutrons and burns out during normal operation. The efficiency of neutrons depends on the type, most fuels ֲ§lare best split byֲ§r ֲ§lslow neutronsֲ§r. +book.rbmk.page15=The §lfuel§r response depends on many factors. The main ones are §lfortification§r, §lxenon poisoning§r and number of incoming §lneutrons§r. Xenon builds up when fuel is low in neutrons and burns out during normal operation. The efficiency of neutrons depends on the type, most fuels §lare best split by§r §lslow neutrons§r. book.rbmk.title16=Melting -book.rbmk.page16=ֲ§4ֲ§lAVOID. +book.rbmk.page16=§4§lAVOID. book.starter.cover=An Industrialist's$Guide to Rebuilding$Society book.starter.title1=Introduction book.starter.page1=If you're reading this, it's highly likely that society, in one way or another, has collapsed entirely. Governments, countries, and authority are a concept of the past - along with all of the amenities of civilized life. As such, this guide will inform you how to change that by recreating the industry and technology of the past for the improvement of your own life. book.starter.title2=Coal & Mustard Gas -book.starter.page2=Whilst it is impossible to predict the actual state of the world in a post-apocalyptic time, it's not unlikely that war and industry in its current form may not have ended. To protect your own lungs, an effective and cheap way is to urinate on some ֲ§lclothֲ§r to make a ֲ§ltrench maskֲ§r, to protect you from coal dust or mustard gas, if you ever encounter either. +book.starter.page2=Whilst it is impossible to predict the actual state of the world in a post-apocalyptic time, it's not unlikely that war and industry in its current form may not have ended. To protect your own lungs, an effective and cheap way is to urinate on some §lcloth§r to make a §ltrench mask§r, to protect you from coal dust or mustard gas, if you ever encounter either. book.starter.title3=Anvils & Presses -book.starter.page3=The quintessentials to beginning your industrial revitalization is an ֲ§lanvilֲ§r and a ֲ§lburner pressֲ§r. The anvil will allow you to manually craft together early machinery such as the Assembler, whilst the burner press will let you make plates, wires, and circuits that you cannot hammer together with an anvil. +book.starter.page3=The quintessentials to beginning your industrial revitalization is an §lanvil§r and a §lburner press§r. The anvil will allow you to manually craft together early machinery such as the Assembler, whilst the burner press will let you make plates, wires, and circuits that you cannot hammer together with an anvil. book.starter.title4=Templates -book.starter.page4=In order to stamp metal into useful shapes, assemble machinery, and perform chemical reactions, you will need to create a ֲ§lMachine Template Folderֲ§r to create the various stamps and templates shown to the right. +book.starter.page4=In order to stamp metal into useful shapes, assemble machinery, and perform chemical reactions, you will need to create a §lMachine Template Folder§r to create the various stamps and templates shown to the right. book.starter.title5=Scavenging book.starter.page5=Depending on how bad the initial apocalyptic event was to the preexisting structures of the world, there's a likely chance that many useful materials and machines can be salvaged from them directly. Metallic alloys like steel, parts like circuitry, and even fissile material from a nuclear power plant might be awaiting you. Beware certain ruins, however, as there may be an excess of danger lurking there like a snake in the grass; waiting to strike you down with radiation, traps, or indescribable horrors... book.starter.title6=Early Machinery -book.starter.page6a=Two of the first machines you should assemble are the ֲ§lBlast Furnaceֲ§r and the ֲ§lAssembly Machineֲ§r. The former will allow you to create alloys such as ֲ§lsteelֲ§r, ֲ§lminecraft-grade copperֲ§r, and ֲ§ladvanced alloyֲ§r; you will need to use these metals for the bodies of machines, the wiring of circuits, advanced electromagnets, and more. -book.starter.page6b=The assembler will be used to create practically every other machine described in this guide. You will need a power source, such as a ֲ§lCombustionֲ§r ֲ§lGeneratorֲ§r or ֲ§lSolar Boilerֲ§r. -book.starter.page7a=The ֲ§lShredderֲ§r, along with a pair of shredder blades, will be very useful for doubling the output of most ores, via shredding into smeltable powders. These powders are also crucial to begin making circuitry for various machines, such as ֲ§lEnhancedֲ§r and ֲ§lOverclockedֲ§r circuits. -book.starter.page7b=Using your new machinery, you can create the ֲ§lChemical Plantֲ§r, used for the synthesis of better circuits, concrete, the processing of petrochemicals, and more. +book.starter.page6a=Two of the first machines you should assemble are the §lBlast Furnace§r and the §lAssembly Machine§r. The former will allow you to create alloys such as §lsteel§r, §lminecraft-grade copper§r, and §ladvanced alloy§r; you will need to use these metals for the bodies of machines, the wiring of circuits, advanced electromagnets, and more. +book.starter.page6b=The assembler will be used to create practically every other machine described in this guide. You will need a power source, such as a §lCombustion§r §lGenerator§r or §lSolar Boiler§r. +book.starter.page7a=The §lShredder§r, along with a pair of shredder blades, will be very useful for doubling the output of most ores, via shredding into smeltable powders. These powders are also crucial to begin making circuitry for various machines, such as §lEnhanced§r and §lOverclocked§r circuits. +book.starter.page7b=Using your new machinery, you can create the §lChemical Plant§r, used for the synthesis of better circuits, concrete, the processing of petrochemicals, and more. book.starter.title8=Black Gold -book.starter.page8a=Using an ֲ§lOil ֲ§lReservoirֲ§r ֲ§lDetectorֲ§r, you can find underground oil deposits to place a ֲ§lPumpjackֲ§r or ֲ§lDerrickֲ§r over via surveying an area. Remember that oil deposits will run out over time. -book.starter.page8b=Before the oil can be refined and separated into its constituent parts in an ֲ§lOil Refineryֲ§r, you must heat the oil to 300ֲ°C in a ֲ§lBoilerֲ§r. +book.starter.page8a=Using an §lOil §lReservoir§r §lDetector§r, you can find underground oil deposits to place a §lPumpjack§r or §lDerrick§r over via surveying an area. Remember that oil deposits will run out over time. +book.starter.page8b=Before the oil can be refined and separated into its constituent parts in an §lOil Refinery§r, you must heat the oil to 300°C in a §lBoiler§r. book.starter.title9=Petrochemicals -book.starter.page9=Using ֲ§lChemical Plantsֲ§r, ֲ§lFractioningֲ§r ֲ§lTowersֲ§r, and ֲ§lCatalytic Crackingֲ§r ֲ§lTowersֲ§r, you can transform the separated oil into a variety of useful products. For example: ֲ§lPolymerֲ§r or ֲ§lBakeliteֲ§r, durable and flexible plastics; ֲ§lDeshֲ§r, an extremely durable and heat-resistant rare earth metal alloy; ֲ§lSolid Fuelֲ§r, which can be burnt for energy; or even ֲ§lLiquid Fuelsֲ§r, such as ֲ§lGasolineֲ§r, ֲ§lDieselֲ§r, ֲ§lKeroseneֲ§r, and more. +book.starter.page9=Using §lChemical Plants§r, §lFractioning§r §lTowers§r, and §lCatalytic Cracking§r §lTowers§r, you can transform the separated oil into a variety of useful products. For example: §lPolymer§r or §lBakelite§r, durable and flexible plastics; §lDesh§r, an extremely durable and heat-resistant rare earth metal alloy; §lSolid Fuel§r, which can be burnt for energy; or even §lLiquid Fuels§r, such as §lGasoline§r, §lDiesel§r, §lKerosene§r, and more. book.starter.title10=Advanced Machinery -book.starter.page10=With oil processing under your belt, you can create the ֲ§lCentrifugeֲ§r, which will triple ore outputs; the ֲ§lOre ֲ§lAcidizerֲ§r, which will crystallize ores, increasing the yield; and the ֲ§lSILEX + ֲ§lFELֲ§r, two marvels of modern engineering which can separate the isotopes of materials with ease. You will require significantly more energy to power these; which can be obtained with sources such as a ֲ§lDiesel Generatorֲ§r, an ֲ§lIndustrial Generatorֲ§r, or even a nuclear reactor. +book.starter.page10=With oil processing under your belt, you can create the §lCentrifuge§r, which will triple ore outputs; the §lOre §lAcidizer§r, which will crystallize ores, increasing the yield; and the §lSILEX + §lFEL§r, two marvels of modern engineering which can separate the isotopes of materials with ease. You will require significantly more energy to power these; which can be obtained with sources such as a §lDiesel Generator§r, an §lIndustrial Generator§r, or even a nuclear reactor. book.starter.title11=Strata -book.starter.page11=Underneath the ground you walk, there is several naturally-occurring ֲ§lStrataֲ§r, or special mineral layers and formations. ֲ§lSchist Strataֲ§r are blue, lithium-containing layers filled with uranium, iron, copper, asbestos, and other ores for your own use. ֲ§lDepth Rockֲ§r contains large quantities of rarer minerals, such as ֲ§lZirconiumֲ§r and ֲ§lBoronֲ§r, but requires explosives to properly harvest. +book.starter.page11=Underneath the ground you walk, there is several naturally-occurring §lStrata§r, or special mineral layers and formations. §lSchist Strata§r are blue, lithium-containing layers filled with uranium, iron, copper, asbestos, and other ores for your own use. §lDepth Rock§r contains large quantities of rarer minerals, such as §lZirconium§r and §lBoron§r, but requires explosives to properly harvest. book.starter.title12=Radiation -book.starter.page12a=ֲ§oThe rest of this book will deal with matters that involve ֲ§oradiation. For the safety of you and others, I will give ֲ§oadvice on how to mitigate and deal with exposure to it. -book.starter.page12b=Enough exposure to radiation can and will cause bodily harm. The first step is prevention; be sure to limit your exposure, and wear protective gear, such as a ֲ§lHazmat Suitֲ§r, or apply ֲ§lCladdingֲ§r to your clothing or armor; you can also take ֲ§lRad-Xֲ§r to limit your intake. Thanks to modern medicine, the second step can be removal if necessary; for example, a ֲ§lPlayer ֲ§lDecontaminatorֲ§r will slowly reduce the radiation absorbed by your body. ֲ§lRad-Awayֲ§r can also be used as a post-exposure prophylaxis, quickly and effectively reversing damage caused to your body by ionizing radiation. +book.starter.page12a=§oThe rest of this book will deal with matters that involve §oradiation. For the safety of you and others, I will give §oadvice on how to mitigate and deal with exposure to it. +book.starter.page12b=Enough exposure to radiation can and will cause bodily harm. The first step is prevention; be sure to limit your exposure, and wear protective gear, such as a §lHazmat Suit§r, or apply §lCladding§r to your clothing or armor; you can also take §lRad-X§r to limit your intake. Thanks to modern medicine, the second step can be removal if necessary; for example, a §lPlayer §lDecontaminator§r will slowly reduce the radiation absorbed by your body. §lRad-Away§r can also be used as a post-exposure prophylaxis, quickly and effectively reversing damage caused to your body by ionizing radiation. book.starter.title13=Uranium Enrichment -book.starter.page13=There are a few, easy options for fuels to use for a nuclear reactor; for instance, ֲ§lNatural Uraniumֲ§r or ֲ§lThorium Fuelֲ§r. However, if you're looking for something more powerful, you can set up an enrichment cascade of two ֲ§lGas Centrifugesֲ§r to produce ֲ§lUranium Fuelֲ§r with leftover ֲ§lUranium-238ֲ§r. You will have to transmute the natural uranium into ֲ§lYellowcakeֲ§r, then ֲ§lUranium ֲ§lHexafluorideֲ§r to do so. +book.starter.page13=There are a few, easy options for fuels to use for a nuclear reactor; for instance, §lNatural Uranium§r or §lThorium Fuel§r. However, if you're looking for something more powerful, you can set up an enrichment cascade of two §lGas Centrifuges§r to produce §lUranium Fuel§r with leftover §lUranium-238§r. You will have to transmute the natural uranium into §lYellowcake§r, then §lUranium §lHexafluoride§r to do so. book.starter.title14=The Chicago Pile -book.starter.page14=Alternatively, you can breed ֲ§lReactor-Grade Plutoniumֲ§r, a more powerful fuel, from Natural Uranium using the ֲ§lChicago Pileֲ§r. By stacking graphite blocks and drilling into them, you can insert fuel rods to breed into plutonium and neutron source rods, such as ֲ§lRadium-Berylliumֲ§r, to begin the reaction. Make sure to test your designs; spacing out or limiting the amount of blocks may be necessary to prevent overheating. +book.starter.page14=Alternatively, you can breed §lReactor-Grade Plutonium§r, a more powerful fuel, from Natural Uranium using the §lChicago Pile§r. By stacking graphite blocks and drilling into them, you can insert fuel rods to breed into plutonium and neutron source rods, such as §lRadium-Beryllium§r, to begin the reaction. Make sure to test your designs; spacing out or limiting the amount of blocks may be necessary to prevent overheating. book.starter.title15=ZIRNOX GCR -book.starter.page15=Finally, you can create your first ֲ§orealֲ§r source of energy: the ֲ§lZIRNOXֲ§r Nuclear Reactor. Nuclear reactors require more setup then other power sources; first, you will want to have a good source of water, such as the ֲ§lHeavy ֲ§lInfinite Water Tankֲ§r. To remove heat from the reactor core and boil the water into steam, you will need a sufficient amount of ֲ§lCarbon Dioxideֲ§r. You want just enough pressure, but not ֲ§otooֲ§r much. You will also need three steam turbines to utilize the created steam to make energy; the ֲ§lSteam ֲ§lTurbineֲ§r or ֲ§lIndustrial Steam ֲ§lTurbineֲ§r will be optimal. Finally, a ֲ§lCondensorֲ§r or ֲ§lAuxilary Cooling Towerֲ§r is needed to condense the leftover steam into water, where it can be voided or recycled in a cooling loop. +book.starter.page15=Finally, you can create your first §oreal§r source of energy: the §lZIRNOX§r Nuclear Reactor. Nuclear reactors require more setup then other power sources; first, you will want to have a good source of water, such as the §lHeavy §lInfinite Water Tank§r. To remove heat from the reactor core and boil the water into steam, you will need a sufficient amount of §lCarbon Dioxide§r. You want just enough pressure, but not §otoo§r much. You will also need three steam turbines to utilize the created steam to make energy; the §lSteam §lTurbine§r or §lIndustrial Steam §lTurbine§r will be optimal. Finally, a §lCondensor§r or §lAuxilary Cooling Tower§r is needed to condense the leftover steam into water, where it can be voided or recycled in a cooling loop. book.starter.title16=Conclusion -book.starter.page16=If you've reached this far, you're on track to helping rebuild civilization. You've successfully recreated the advanced machinery of the pre-apocalypse - with nuclear power, petrochemicals, and more. I cannot know ֲ§ohowֲ§r you will use these new-found advantages, but it's my personal hope you use them for the good of yourself and others - or at the very least, in self-defense. Au revoir! +book.starter.page16=If you've reached this far, you're on track to helping rebuild civilization. You've successfully recreated the advanced machinery of the pre-apocalypse - with nuclear power, petrochemicals, and more. I cannot know §ohow§r you will use these new-found advantages, but it's my personal hope you use them for the good of yourself and others - or at the very least, in self-defense. Au revoir! book.starter.title18=About the Author -book.starter.page18=vֳ¦r is just a guy who has been trapped in the grey void featured in the Talking Head's ֲ§oOnce In A Lifetimeֲ§r for too long. He once found a studio door, but to his dismay found out it was a cardboard cut-out. +book.starter.page18=vær is just a guy who has been trapped in the grey void featured in the Talking Head's §oOnce In A Lifetime§r for too long. He once found a studio door, but to his dismay found out it was a cardboard cut-out. #book.rbmk.cover=HOW 2 RBMK:$The Basics$of Reactor$Construction #book.rbmk.title1=Introduction -#book.rbmk.page1=The ֲ§lRBMKֲ§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. +#book.rbmk.page1=The §lRBMK§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. #book.rbmk.title2=Heat -#book.rbmk.page2=As the reactor operates, it will generate ֲ§lheatֲ§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a ֲ§lsteam channelֲ§r which cools the reactor and produces steam. +#book.rbmk.page2=As the reactor operates, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a §lsteam channel§r which cools the reactor and produces steam. #book.rbmk.title3=Fuel Rod -#book.rbmk.page3=The ֲ§lfuel rodֲ§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the ֲ§lfuelֲ§r used. +#book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the §lfuel§r used. #book.rbmk.title4=Control Rod -#book.rbmk.page4=The ֲ§lcontrol rodֲ§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. +#book.rbmk.page4=The §lcontrol rod§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. #book.rbmk.title5=Control Rod - Usage -#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the ֲ§lRBMK consoleֲ§r. The buttons on the right allow for manual insertion in increments of 25%%. +#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the §lRBMK console§r. The buttons on the right allow for manual insertion in increments of 25%%. #book.rbmk.title6=Automatic Control Rod -#book.rbmk.page6=ֲ§lAutomatic control rodsֲ§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. +#book.rbmk.page6=§lAutomatic control rods§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. #book.rbmk.title7=Steam Channel -#book.rbmk.page7=The ֲ§lsteam channelֲ§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. +#book.rbmk.page7=The §lsteam channel§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. #book.rbmk.title8=Neutron Reflector -#book.rbmk.page8=The ֲ§lneutron reflectorֲ§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. +#book.rbmk.page8=The §lneutron reflector§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. #book.rbmk.title9=Neutron Absorber -#book.rbmk.page9=The ֲ§lneutron absorberֲ§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. +#book.rbmk.page9=The §lneutron absorber§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. #book.rbmk.title10=Graphite Moderator -#book.rbmk.page10=The ֲ§lgraphite moderatorֲ§r will convert fast neutrons passing through it into slow neutrons. Most fuels fission into fast neutrons while needing slow neutrons to split, so using moderators is strongly recommended. +#book.rbmk.page10=The §lgraphite moderator§r will convert fast neutrons passing through it into slow neutrons. Most fuels fission into fast neutrons while needing slow neutrons to split, so using moderators is strongly recommended. #book.rbmk.title11=Structural Column -#book.rbmk.page11=The ֲ§lstructural columnֲ§r will not interfere with neutrons, nor does it have special uses. It is recommended to fill the reactor with structural columns where no other parts will be, because structural columns are capable of transporting heat. +#book.rbmk.page11=The §lstructural column§r will not interfere with neutrons, nor does it have special uses. It is recommended to fill the reactor with structural columns where no other parts will be, because structural columns are capable of transporting heat. #book.rbmk.title12=Console -#book.rbmk.page12=The ֲ§lRBMK consoleֲ§r lets you control the reactor from afar. Using the ֲ§lRBMKֲ§r ֲ§lconsole linking deviceֲ§r on an RBMK part and then the console will link the reactor to the console. The console can only manage 15x15 parts, for larger reactors you might want to use multiple consoles. +#book.rbmk.page12=The §lRBMK console§r lets you control the reactor from afar. Using the §lRBMK§r §lconsole linking device§r on an RBMK part and then the console will link the reactor to the console. The console can only manage 15x15 parts, for larger reactors you might want to use multiple consoles. #book.rbmk.title13=Console Usage #book.rbmk.page13=Clicking on the parts will select and deselect them. Using the colored buttons, you can quickly select all control rods of that color group. Button 'A' will select all control rods, 'X' will deselect all. #book.rbmk.page14=Entering a number 0-100 in the green box and then hitting the button next to it will set all selected control rods to this position. Button 'AZ-5' will cause all control rods to fully insert. #book.rbmk.title15=Fuel -#book.rbmk.page15=The ֲ§lfuelֲ§r's reactivity is based on multiple factors. The main ones are the ֲ§lenrichmentֲ§r, ֲ§lxenon poisonֲ§r and the amount of incoming ֲ§lneutronsֲ§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels ֲ§lsplit best with slow neutronsֲ§r. +#book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. #book.rbmk.title16=Meltdown -#book.rbmk.page16=ֲ§4ֲ§lAvoid. +#book.rbmk.page16=§4§lAvoid. book_lore.author=By %s book_lore.test.name=this book doesn't work... @@ -464,10 +464,10 @@ cannery.crucible.0=The crucible is used to smelt ores, ingots or other metallic cannery.crucible.1=It requires an external heat source connected to the bottom, like a firebox. cannery.crucible.2=Once heated up, the crucible can be used in two ways, with or without a recipe template. cannery.crucible.3=The crucible has two storage buffers for material: -cannery.crucible.4=The buffer to the left is for ֲ§abyproductsֲ§r, all material smelted without a recipe template will land here. +cannery.crucible.4=The buffer to the left is for §abyproducts§r, all material smelted without a recipe template will land here. cannery.crucible.5=If a recipe is installed, materials that do not match the recipe will also be stored here. cannery.crucible.6=Materials in this buffer will not react with each other, they can only be output from the green outlet for casting. -cannery.crucible.7=The buffer to the right is for ֲ§crecipesֲ§r, if a recipe is installed and that particular material is relevant to that recipe, it will land here. +cannery.crucible.7=The buffer to the right is for §crecipes§r, if a recipe is installed and that particular material is relevant to that recipe, it will land here. cannery.crucible.8=The materials will slowly combine into the output material which is automatically output from the red outlet. cannery.crucible.9=Note that only this buffer handles recipes. If a template is installed retroactively, materials in the byproduct buffer will not combine, nor transfer to the recipe buffer. cannery.crucible.10=The outlet will output material automatically, if the target is valid, for example a foundry channel or a mold. @@ -733,7 +733,7 @@ container.nukeFurnace=Nuclear Powered Furnace container.nukeGadget=The Gadget container.nukeMan=Fat Man container.nukeMike=Ivy Mike -container.nukeN2=Nֲ² Mine +container.nukeN2=N² Mine container.nukeN45=N45 Naval Mine container.nukePrototype=The Prototype container.nukeSolinium=The Blue Rinse @@ -866,29 +866,29 @@ death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. death.attack.teleporter=%1$s was teleported into nothingness. -desc.gui.assembler.warning=ֲ§cError:ֲ§r This machine requires an assembly template! -desc.gui.chemplant.warning=ֲ§cError:ֲ§r This machine requires an chemistry template! -desc.gui.gasCent.enrichment=ֲ§2Enrichmentֲ§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. -desc.gui.gasCent.output=ֲ§6Fluid Transferֲ§r$Fluid can be transferred to another centrifuge$via the output port for further processing. -desc.gui.nukeBoy.desc=ֲ§1Requires:ֲ§r$ * Neutron Shielding$ * U235 Projectile$ * Subcritical U235 Target$ * Propellant$ * Bomb Igniter -desc.gui.nukeGadget.desc=ֲ§1Requires:ֲ§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Heavy Plutonium Core$ * Wiring -desc.gui.nukeMan.desc=ֲ§1Requires:ֲ§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Plutonium Core$ * Bomb Firing Unit -desc.gui.nukeMike.desc=ֲ§1Requires:ֲ§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$ * Deuterium Cooling Unit$ * Uranium Coated Deuterium Tank$ * Deuterium Tank -desc.gui.nukeTsar.desc=ֲ§1Requires:ֲ§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$ֲ§9Optional:ֲ§r$ * Tsar Bomba Core -desc.gui.radiolysis.desc=ֲ§9Descriptionֲ§r$This RTG is more efficient then others, and$comes equipped with a radiolysis chamber for$cracking and sterilization. +desc.gui.assembler.warning=§cError:§r This machine requires an assembly template! +desc.gui.chemplant.warning=§cError:§r This machine requires an chemistry template! +desc.gui.gasCent.enrichment=§2Enrichment§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. +desc.gui.gasCent.output=§6Fluid Transfer§r$Fluid can be transferred to another centrifuge$via the output port for further processing. +desc.gui.nukeBoy.desc=§1Requires:§r$ * Neutron Shielding$ * U235 Projectile$ * Subcritical U235 Target$ * Propellant$ * Bomb Igniter +desc.gui.nukeGadget.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Heavy Plutonium Core$ * Wiring +desc.gui.nukeMan.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Plutonium Core$ * Bomb Firing Unit +desc.gui.nukeMike.desc=§1Requires:§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$ * Deuterium Cooling Unit$ * Uranium Coated Deuterium Tank$ * Deuterium Tank +desc.gui.nukeTsar.desc=§1Requires:§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$§9Optional:§r$ * Tsar Bomba Core +desc.gui.radiolysis.desc=§9Description§r$This RTG is more efficient then others, and$comes equipped with a radiolysis chamber for$cracking and sterilization. desc.gui.rtgBFurnace.desc=Requires at least 15 heat to process$The more heat on top of that, the faster it runs$Heat going over maximum speed will have no effect$Short-lived pellets may decay -desc.gui.rtg.heat=ֲ§eCurrent heat level: %s +desc.gui.rtg.heat=§eCurrent heat level: %s desc.gui.rtg.pellets=Accepted Pellets: desc.gui.rtg.pelletHeat=%s (%s heat) desc.gui.rtg.pelletPower=%s (%s HE/tick) -desc.gui.template=ֲ§9Templatesֲ§r$Templates can be made by$using the Machine Template Folder. -desc.gui.turbinegas.automode=ֲ§2Automatic Turbine Throttling Modeֲ§r$By clicking the "AUTO" button, the turbine$will automatically adjust the power production$based on the power required from the network -desc.gui.turbinegas.fuels=ֲ§6Accepted fuels:ֲ§r -desc.gui.turbinegas.warning=ֲ§cFuel or lubricant level low!ֲ§r -desc.gui.zirnox.coolant=ֲ§3Coolantֲ§r$CO2 transfers heat from the core to the water.$This will boil it into super dense steam.$The efficiency of cooling and steam production$is based on pressure. -desc.gui.zirnox.pressure=ֲ§6Pressureֲ§r$Pressure can be reduced by venting CO2.$However, too low a pressure, and cooling$efficiency and steam production will be reduced.$Look out for meltdowns! -desc.gui.zirnox.warning1=ֲ§cError:ֲ§r Water is required for$the reactor to function properly! -desc.gui.zirnox.warning2=ֲ§cError:ֲ§r CO2 is required for$the reactor to function properly! +desc.gui.template=§9Templates§r$Templates can be made by$using the Machine Template Folder. +desc.gui.turbinegas.automode=§2Automatic Turbine Throttling Mode§r$By clicking the "AUTO" button, the turbine$will automatically adjust the power production$based on the power required from the network +desc.gui.turbinegas.fuels=§6Accepted fuels:§r +desc.gui.turbinegas.warning=§cFuel or lubricant level low!§r +desc.gui.zirnox.coolant=§3Coolant§r$CO2 transfers heat from the core to the water.$This will boil it into super dense steam.$The efficiency of cooling and steam production$is based on pressure. +desc.gui.zirnox.pressure=§6Pressure§r$Pressure can be reduced by venting CO2.$However, too low a pressure, and cooling$efficiency and steam production will be reduced.$Look out for meltdowns! +desc.gui.zirnox.warning1=§cError:§r Water is required for$the reactor to function properly! +desc.gui.zirnox.warning2=§cError:§r CO2 is required for$the reactor to function properly! desc.item.ammo.con_accuracy2=- Highly decreased accuracy desc.item.ammo.con_damage=- Highly decreased damage @@ -998,7 +998,7 @@ desc.item.kitArmor=Armor will be displaced by new set. desc.item.kitHaz=Armor will be displaced by hazmat suit. desc.item.kitPack=What a bargain! desc.item.kitPool=Please empty inventory before opening! -desc.item.pileRod=ֲ§eUse on drilled graphite to insert$ֲ§eUse screwdriver to extract$ +desc.item.pileRod=§eUse on drilled graphite to insert$§eUse screwdriver to extract$ desc.item.rtgDecay=Decays to: %s desc.item.rtgHeat=Power Level: %s desc.item.storage.capacity=Capacity %s%%s @@ -1006,19 +1006,19 @@ desc.item.storage.proscons=to view pros cons list desc.misc.357=.357 Magnum desc.misc.556=.223 Remington desc.misc.762=.308 Winchester -desc.misc.func=ֲ§n-- Function -- +desc.misc.func=§n-- Function -- desc.misc.lanthanum="Lanthanum" -desc.misc.lctrl=ֲ§8Hold <ֲ§eֲ§oLCTRLֲ§8ֲ§o> %s -desc.misc.lore=ֲ§n-- Lore -- -desc.misc.lshift=ֲ§8Hold <ֲ§eֲ§oLSHIFTֲ§8ֲ§o> %s -desc.misc.luna=ֲ§o20x155mm Lunatic -desc.misc.meltPoint=Melting point: ֲ§c%s +desc.misc.lctrl=§8Hold <§e§oLCTRL§8§o> %s +desc.misc.lore=§n-- Lore -- +desc.misc.lshift=§8Hold <§e§oLSHIFT§8§o> %s +desc.misc.luna=§o20x155mm Lunatic +desc.misc.meltPoint=Melting point: §c%s desc.misc.noPos=No position set! desc.misc.pos=Set pos to: %s, %s, %s desc.misc.posSet=Position set! desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum -desc.item.zirnoxBreedingRod=ֲ§2[ZIRNOX Breeding Rod]$ֲ§ePlace next to fuel rods to breed$ֲ§eLasts %d ticks -desc.item.zirnoxRod=ֲ§a[ZIRNOX Fuel Rod]$ֲ§eGenerates %1$d heat per tick$ֲ§eLasts %2$d ticks +desc.item.zirnoxBreedingRod=§2[ZIRNOX Breeding Rod]$§ePlace next to fuel rods to breed$§eLasts %d ticks +desc.item.zirnoxRod=§a[ZIRNOX Fuel Rod]$§eGenerates %1$d heat per tick$§eLasts %2$d ticks digamma.playerDigamma=Digamma exposure: digamma.playerHealth=Digamma influence: @@ -1162,15 +1162,15 @@ gun.name.ifPit=IF-18 Horseshoe Bottomless Pit gun.name.ifScope=IF-18 Horseshoe Scoped gun.name.ifStorm=IF-18 Horseshoe Silver Storm gun.name.ifVanity=IF-18 Horseshoe Vanity -gun.name.karl=M1 Karl-Gerֳ₪t +gun.name.karl=M1 Karl-Gerät gun.name.ks23=KS-23 gun.name.lacunae=Auntie Lacunae gun.name.lasetDet=Hopeville Laser Detonator gun.name.lunaAR=1986 Bishamonten type Assault Rifle -gun.name.lunaGun=1978 Rִ�hula type Standard Issue Sidearm (Revision 2) +gun.name.lunaGun=1978 RÄhula type Standard Issue Sidearm (Revision 2) gun.name.lunaHLR=1944 Chang'e type Light Machine Gun gun.name.lunaShotty=1978 Guan Yu type Scattergun (Revision 1) -gun.name.lunaSMG=1956 ִ€nanda type Submachine Gun +gun.name.lunaSMG=1956 Ä€nanda type Submachine Gun gun.name.lunaSniper=1915 Hou Yi type Anti-Material Rifle gun.name.lunaTWR=Time Warp Rifle gun.name.m2=Browning machine gun, cal. .50, M2, HB @@ -1183,7 +1183,7 @@ gun.name.mg3=Universal-Maschinengewehr Modell 3 gun.name.mp40=Maschinenpistole 40 gun.name.nerf=NERF blaster of unknown design gun.name.osipr=Overwatch Standard Issue Pulse Rifle -gun.name.panz=Raketenpanzerbֳ¼chse 54 +gun.name.panz=Raketenpanzerbüchse 54 gun.name.quadro=OpenQuadro Guided Man-Portable Missile Launcher gun.name.remington870=Remington 870 gun.name.revolverCursed=Britannia Standard Issue Motorized Handgun @@ -1226,12 +1226,12 @@ hadron.error_analysis_too_long=Error 0x06 [ATL] hadron.error_analysis_too_short=Error 0x07 [ATS] hadron.error_diode_collision=Error 0x08 [DC] hadron.error_branching_turn=Error 0x09 [BT] -hadron.hopper0=ֲ§eNormal Mode:$All items will be used. -hadron.hopper1=ֲ§eHopper Mode:$One item will always remain. -hadron.hopper2=ֲ§eSingle Mode:$Only allows one item per slot. +hadron.hopper0=§eNormal Mode:$All items will be used. +hadron.hopper1=§eHopper Mode:$One item will always remain. +hadron.hopper2=§eSingle Mode:$Only allows one item per slot. hadron.idle=Idle -hadron.modeCircular=ֲ§eCircular Accelerator Mode:$Magnets must loop back into core.$Unlocks more recipes. -hadron.modeLine=ֲ§eLinear Accelerator Mode:$Accelerator ends with analysis chamber.$Fewer Recipes. +hadron.modeCircular=§eCircular Accelerator Mode:$Magnets must loop back into core.$Unlocks more recipes. +hadron.modeLine=§eLinear Accelerator Mode:$Accelerator ends with analysis chamber.$Fewer Recipes. hadron.noresult=No Result. hadron.noresult_too_slow=Insuff. momentum! hadron.noresult_wrong_ingredient=Invalid recipe! @@ -1340,7 +1340,7 @@ hbmfluid.mustardgas=Mustard Gas hbmfluid.naphtha=Naphtha hbmfluid.naphtha_coker=Coker Naphtha hbmfluid.naphtha_crack=Cracked Naphtha -hbmfluid.nitan=NITANֲ© 100 Octane Super Fuel +hbmfluid.nitan=NITAN© 100 Octane Super Fuel hbmfluid.nitric_acid=Nitric Acid hbmfluid.nitroglycerin=Nitroglycerin hbmfluid.none=None @@ -1679,7 +1679,7 @@ item.ammo_grenade_he.name=40mm Grenade (HE) item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary) item.ammo_grenade_kampf.name=40mm Rocket item.ammo_grenade_leadburster.name=40mm Leadburster -item.ammo_grenade_nuclear.name=40mm Grenade (׀�×€׀¸׀²׀µ×‚) +item.ammo_grenade_nuclear.name=40mm Grenade (Привет) item.ammo_grenade_phosphorus.name=40mm Grenade (WP) item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) item.ammo_grenade_toxic.name=40mm Grenade (Chemical) @@ -1714,7 +1714,7 @@ item.ammo_rocket_emp.name=84mm Rocket (Pulse) item.ammo_rocket_glare.name=84mm Rocket (Red Glare) item.ammo_rocket_he.name=84mm Rocket (HE) item.ammo_rocket_incendiary.name=84mm Rocket (Incendiary) -item.ammo_rocket_nuclear.name=84mm Rocket (׀�×€׀¸׀²׀µ×‚) +item.ammo_rocket_nuclear.name=84mm Rocket (Привет) item.ammo_rocket_phosphorus.name=84mm Rocket (WP) item.ammo_rocket_rpc.name=84mm Rocket Propelled Chainsaw item.ammo_rocket_shrapnel.name=84mm Rocket (Shrapnel) @@ -1728,7 +1728,7 @@ item.ammo_shell_w9.name=240mm W9 Nuclear Shell item.ammo_stinger_rocket.name=Stinger Rocket item.ammo_stinger_rocket_he.name=Stinger Rocket (HE) item.ammo_stinger_rocket_incendiary.name=Stinger Rocket (Incendiary) -item.ammo_stinger_rocket_nuclear.name=Stinger Rocket (׀�×€׀¸׀²׀µ×‚) +item.ammo_stinger_rocket_nuclear.name=Stinger Rocket (Привет) item.ammo_stinger_rocket_bones.name=Stinger Rocket (Bone-Seeking) item.ams_catalyst_aluminium.name=Aluminium Reaction Catalyst item.ams_catalyst_beryllium.name=Beryllium Reaction Catalyst @@ -1768,7 +1768,7 @@ item.apple_schrabidium.name=Schrabidium Apple item.arc_electrode.name=Graphite Electrode item.arc_electrode_burnt.name=Molten Electrode item.arc_electrode_desh.name=Desh Electrode -item.armor_polish.name=ShiningArmorג„¢ Armor Polish +item.armor_polish.name=ShiningArmorâ„¢ Armor Polish item.asbestos_boots.name=Fire Proximity Boots item.asbestos_cloth.name=Fire Proximity Cloth item.asbestos_helmet.name=Fire Proximity Helmet @@ -1992,7 +1992,7 @@ item.can_mug.name=MUG Root Beer item.can_overcharge.name=Overcharge Delirium XT item.can_redbomb.name='Red Bomb' Energy Drink item.can_smart.name='Smart' Energy Drink -item.canister_NITAN.name=NITANֲ© 100 Octane Super Fuel (LEGACY) +item.canister_NITAN.name=NITAN© 100 Octane Super Fuel (LEGACY) item.canister_biofuel.name=Biofuel Canister (LEGACY) item.canister_bitumen.name=Bitumen Canister (LEGACY) item.canister_canola.name=Engine Lubricant (LEGACY) @@ -2036,7 +2036,7 @@ item.canned_fried.name=Canned Fried Chicken item.canned_fried.desc=Even the can is deep fried! item.canned_hotdogs.name=Canned Hotdogs item.canned_hotdogs.desc=Not to be confused with cool cats. -item.canned_jizz.name=FlimFlam Industries Canned Stallion Milkג„¢ +item.canned_jizz.name=FlimFlam Industries Canned Stallion Milkâ„¢ item.canned_jizz.desc=Wait wh- item.canned_kerosene.name=Canned Kerosene item.canned_kerosene.desc=Just imagine a witty line here. @@ -2050,14 +2050,14 @@ item.canned_napalm.name=Canned Napalm item.canned_napalm.desc=I love the smell of old memes in the morning! item.canned_oil.name=Canned Engine Oil item.canned_oil.desc=It makes motors go, so why not humans? -item.canned_pashtet.name=׀�׀°×ˆ×‚׀µ×‚ -item.canned_pashtet.desc=ׯ’×ï¿½×€Â»×Æ’׀³׀¸ ׀¿׀µ×€׀µ׀²׀¾׀´׀° ׀½׀µ׀´׀¾×�×â€š×Æ’׀¿׀½×‹! +item.canned_pashtet.name=Паштет +item.canned_pashtet.desc=уÑлуги перевода недоÑтупны! item.canned_pizza.name=Canned Pepperoni Pizza item.canned_pizza.desc=A crime against humanity. item.canned_recursion.name=Canned Recursion item.canned_recursion.desc=Canned Recursion item.canned_spam.name=Canned Spam -item.canned_spam.desc=The three-and-a-half-minute sketch is set in the fictional Green Midget Cafe in Bromley.$An argument develops between the waitress, who recites a menu in which nearly$every dish contains Spam, and Mrs. Bun, who does not like Spam. She asks for a$dish without Spam, much to the amazement of her Spam-loving husband. The waitress$responds to this request with disgust. Mr. Bun offers to take her Spam instead,$and asks for a dish containing a lot of Spam and baked beans. The waitress says$no since they are out of baked beans; when Mr. Bun asks for a substitution of Spam,$the waitress again responds with disgust. At several points, a group of Vikings in$the restaurant interrupts conversation by loudly singing about Spam.$The irate waitress orders them to shut up, but they resume singing more loudly.$A Hungarian tourist comes to the counter, trying to order by using a wholly$inaccurate Hungarian/English phrasebook (a reference to a previous sketch).$He is rapidly escorted away by a police constable. The sketch abruptly cuts to a$historian in a television studio talking about the origin of the Vikings in the cafֳ©.$As he goes on, he begins to increasingly insert the word \"Spam\" into every$sentence, and the backdrop is raised to reveal the restaurant set behind.$The historian joins the Vikings in their song, and Mr. and Mrs. Bun are lifted by$wires out of the scene while the singing continues. In the original televised performance,$the closing credits begin to scroll with the singing still audible in the background. +item.canned_spam.desc=The three-and-a-half-minute sketch is set in the fictional Green Midget Cafe in Bromley.$An argument develops between the waitress, who recites a menu in which nearly$every dish contains Spam, and Mrs. Bun, who does not like Spam. She asks for a$dish without Spam, much to the amazement of her Spam-loving husband. The waitress$responds to this request with disgust. Mr. Bun offers to take her Spam instead,$and asks for a dish containing a lot of Spam and baked beans. The waitress says$no since they are out of baked beans; when Mr. Bun asks for a substitution of Spam,$the waitress again responds with disgust. At several points, a group of Vikings in$the restaurant interrupts conversation by loudly singing about Spam.$The irate waitress orders them to shut up, but they resume singing more loudly.$A Hungarian tourist comes to the counter, trying to order by using a wholly$inaccurate Hungarian/English phrasebook (a reference to a previous sketch).$He is rapidly escorted away by a police constable. The sketch abruptly cuts to a$historian in a television studio talking about the origin of the Vikings in the café.$As he goes on, he begins to increasingly insert the word \"Spam\" into every$sentence, and the backdrop is raised to reveal the restaurant set behind.$The historian joins the Vikings in their song, and Mr. and Mrs. Bun are lifted by$wires out of the scene while the singing continues. In the original televised performance,$the closing credits begin to scroll with the singing still audible in the background. item.canned_stew.name=Canned "Mushroom Stew" item.canned_stew.desc=... item.canned_tomato.name=Canned Tomato Soup @@ -2611,9 +2611,9 @@ item.grenade_tau.name=Tau Grenade item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade item.gun_ar15.name=Josh item.gun_avenger.name=CZ57 Avenger Minigun -item.gun_b92.name=ֲ§9B92 Energy Pistolֲ§r -item.gun_b92_ammo.name=ֲ§9B92 Energy Cellֲ§r -item.gun_b93.name=ֲ§cB93 Energy Modֲ§r +item.gun_b92.name=§9B92 Energy Pistol§r +item.gun_b92_ammo.name=§9B92 Energy Cell§r +item.gun_b93.name=§cB93 Energy Mod§r item.gun_benelli.name=Benelli Autoshotgun (Drum Mod) item.gun_bf.name=BEL item.gun_bf_ammo.name=Balefire Shell @@ -2667,7 +2667,7 @@ item.gun_lever_action.name=Mare's Leg (Original) item.gun_lever_action_ammo.name=12x74 Buckshot (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dark) item.gun_lever_action_sonata.name=Flipped Mare's Leg -item.gun_lever_action_sonata_2.name=ֲ§cSonata's Microphoneֲ§r +item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r item.gun_lunatic_marksman.name=Lunatic Sniper Rifle item.gun_m2.name=Ma Deuce item.gun_minigun.name=CZ53 Personal Minigun @@ -2685,7 +2685,7 @@ item.gun_osipr_ammo2.name=Combine Ball item.gun_panzerschreck.name=Panzerschreck item.gun_proto.name=M42 Nuclear Catapult "Proto MIRV" item.gun_quadro.name=Quattro Formaggi -item.gun_remington.name=דƒ�ד‚₪דƒ‡דƒ³ דƒ–דƒ©ד‚¹דƒˆ [BIDEN BLAST] +item.gun_remington.name=ãƒã‚¤ãƒ‡ãƒ³ ブラスト [BIDEN BLAST] item.gun_revolver.name=Enhanced Revolver item.gun_revolver_ammo.name=Lead Bullet item.gun_revolver_blackjack.name=Blackjack Five-Shooter @@ -2799,7 +2799,7 @@ item.ingot_am242.name=Americium-242 Ingot item.ingot_americium_fuel.name=Ingot of Americium Fuel item.ingot_arsenic.name=Arsenic Ingot item.ingot_asbestos.name=Asbestos Sheet -item.ingot_asbestos.desc=ֲ§o"Filled with life, self-doubt and asbestos. That comes with the air."ֲ§r +item.ingot_asbestos.desc=§o"Filled with life, self-doubt and asbestos. That comes with the air."§r item.ingot_au198.name=Gold-198 Ingot item.ingot_australium.name=Australium Ingot item.ingot_bakelite.name=Bakelite Bar @@ -2877,7 +2877,7 @@ item.ingot_semtex.name=Bar of Semtex item.ingot_smore.name=S'more Ingot item.ingot_solinium.name=Solinium Ingot item.ingot_sr90.name=Strontium-90 Ingot -item.ingot_starmetal.name=ֲ§9Starmetal Ingotֲ§r +item.ingot_starmetal.name=§9Starmetal Ingot§r item.ingot_steel.name=Steel Ingot item.ingot_steel_dusted.name=Dusted Steel Ingot item.ingot_tantalium.name=Tantalium Ingot @@ -2901,7 +2901,7 @@ item.ingot_weidanium.name=Weidanium Ingot item.ingot_zirconium.name=Zirconium Cube item.injector_5htp.name=5-HTP Autoinjector item.injector_knife.name=8 Inch Blade Autoinjector -item.ink.name=ז�— Ink +item.ink.name=æž— Ink item.insert_doxium.name=Astolfium-Doped Doxium Insert item.insert_du.name=DU Insert item.insert_era.name=Explosive Reactive Armor Insert @@ -2932,7 +2932,7 @@ item.key_fake.name=Counterfeit Key item.key_kit.name=Key Imitation Kit item.key_red.name=Red Key item.key_red.desc=Explore the other side. -item.key_red.desc.P11=ֲ§4eֲ§r +item.key_red.desc.P11=§4e§r item.kit_toolbox.name=Toolbox item.kit_toolbox_empty.name=Empty Toolbox item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uranium-Thorium crystal matrix @@ -2958,7 +2958,7 @@ item.liquidator_plate.name=Liquidator Suit Chestplate item.lithium.name=Lithium Cube item.lodestone.name=Lodestone item.loop_stew.name=IT Breakfast -item.loops.name=Lֳ¶ֳ¶ps +item.loops.name=Lööps item.loot_10.name=Size 10 Missile Loot Crate item.loot_15.name=Size 15 Missile Loot Crate item.loot_misc.name=General Missile Loot Crate @@ -2989,7 +2989,7 @@ item.med_ptsd.name=PTSD Medication item.med_schiziphrenia.name=Schizophrenia Medication item.medal_liquidator.name=Liquidator Medal item.meltdown_tool.name=Dyatlov Instant Meltdown Applicator -item.memespoon.name=ֲ§eMarket Gardener +item.memespoon.name=§eMarket Gardener item.memory.name=item.null.name item.mese_gavel.name=Mese Gavel item.mese_pickaxe.name=Mese Pickaxe @@ -3057,7 +3057,7 @@ item.missile_skin_orange_insulation.desc=Not an orange juice bottle;$do not atte item.missile_skin_sleek.name=Missile Skin: IF-R&D item.missile_skin_sleek.desc=Chevrons are cool! item.missile_skin_soviet_glory.name=Missile Skin: Soviet Glory -item.missile_skin_soviet_glory.desc=ׯ’×ï¿½×€Â»×Æ’׀³׀° ׀¿׀µ×€׀µ׀²׀¾׀´׀° ׀½׀µ׀´׀¾×�×â€š×Æ’׀¿׀½׀° +item.missile_skin_soviet_glory.desc=уÑлуга перевода недоÑтупна item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it. item.missile_soyuz.name=Soyuz-FG @@ -3189,7 +3189,7 @@ item.mp_warhead_15_balefire.name=Size 15 BF Warhead item.mp_warhead_15_boxcar.name=Size 15 Boxcar? item.mp_warhead_15_he.name=Size 15 HE Warhead item.mp_warhead_15_incendiary.name=Size 15 Incendiary Warhead -item.mp_warhead_15_n2.name=Size 15 Nֲ² Mine +item.mp_warhead_15_n2.name=Size 15 N² Mine item.mp_warhead_15_nuclear.name=Size 15 Nuclear Warhead item.mp_warhead_15_nuclear_mimi.name=Size 15 Mimi-chan's Head item.mp_warhead_15_nuclear_shark.name=Size 15 Nuclear Warhead @@ -3260,7 +3260,7 @@ item.nugget_les.name=Low Enriched Schrabidium Fuel Nugget item.nugget_mercury_tiny.name=Tiny Drop of Mercury item.nugget_mercury.name=Drop of Mercury item.nugget_mox_fuel.name=Nugget of MOX Fuel -item.nugget_mox_fuel.desc=Moxie says: ֲ§lTAX EVASION.ֲ§r +item.nugget_mox_fuel.desc=Moxie says: §lTAX EVASION.§r item.nugget_neptunium.name=Neptunium Nugget item.nugget_neptunium_fuel.name=Neptunium Fuel Nugget item.nugget_osmiridium.name=Osmiridium Nugget @@ -3378,7 +3378,7 @@ item.particle_aproton.name=Antiproton Capsule item.particle_aschrab.name=Antischrabidium Capsule item.particle_copper.name=Copper Ion Capsule item.particle_dark.name=Dark Matter Capsule -item.particle_digamma.name=ֲ§cThe Digamma Particleֲ§r +item.particle_digamma.name=§cThe Digamma Particle§r item.particle_empty.name=Empty Particle Capsule item.particle_higgs.name=Higgs Boson Capsule item.particle_hydrogen.name=Hydrogen Ion Capsule @@ -3444,19 +3444,19 @@ item.pellet_rtg_weak.desc=Cheaper and weaker pellet, now with more U238! item.pellet_schrabidium.name=Pure Schrabidium Watz Pellet item.photo_panel.name=Photovoltaic Panel item.pile_rod_boron.name=Chicago Pile Control Rod -item.pile_rod_boron.desc=ֲ§9[Neutron Absorber]$ֲ§eClick to toggle +item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle item.pile_rod_detector.name=Chicago Pile Control & Detector Rod -item.pile_rod_detector.desc=ֲ§9[Neutron Detector/Absorber]$ֲ§eUse defuser to increase/decrease neutron limit$ֲ§eUse screwdriver w/o sneaking to inspect flux +item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux item.pile_rod_lithium.name=Chicago Pile Lithium Cell -item.pile_rod_lithium.desc=ֲ§a[Breedable Fuel]$ֲ§eUse hand drill to inspect core +item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod -item.pile_rod_plutonium.desc=ֲ§d[Neutron Source] +item.pile_rod_plutonium.desc=§d[Neutron Source] item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod -item.pile_rod_pu239.desc=ֲ§a[Reactive Fuel]$ֲ§eRich in Plutonium-239. +item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source -item.pile_rod_source.desc=ֲ§d[Neutron Source] +item.pile_rod_source.desc=§d[Neutron Source] item.pile_rod_uranium.name=Chicago Pile Uranium Rod -item.pile_rod_uranium.desc=ֲ§a[Reactive Fuel]$ֲ§eUse hand drill to take core sample +item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample item.pill_iodine.name=Iodine Pill item.pill_iodine.desc=Removes negative effects item.pill_herbal.name=Herbal Paste @@ -3520,7 +3520,7 @@ item.powder_actinium_tiny.name=Tiny Pile of Actinium Powder item.powder_advanced_alloy.name=Advanced Alloy Powder item.powder_aluminium.name=Aluminium Powder item.powder_asbestos.name=Asbestos Powder -item.powder_asbestos.desc=ֲ§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"ֲ§r +item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r item.powder_ash.coal.name=Coal Ash item.powder_ash.fly.name=Fly Ash item.powder_ash.fullerene.name=Fullerene @@ -3561,7 +3561,7 @@ item.powder_cs137_tiny.name=Tiny Pile of Caesium-137 Powder item.powder_daffergon.name=Daffergon Powder item.powder_desh.name=Desh Powder item.powder_desh_mix.name=Desh Blend -item.powder_desh_ready.name=DeshReadyג„¢ Blend +item.powder_desh_ready.name=DeshReadyâ„¢ Blend item.powder_diamond.name=Diamond Powder item.powder_dineutronium.name=Dineutronium Powder item.powder_dura_steel.name=High-Speed Steel Powder @@ -3703,7 +3703,7 @@ item.rag_damp.name=Damp Cloth item.rag_piss.name=Piss-Soaked Rag item.rbmk_fuel_balefire.name=Balefire RBMK Fuel Rod item.rbmk_fuel_balefire_gold.name=Flashgold RBMK Fuel Rod -item.rbmk_fuel_drx.name=ֲ§cDigamma RBMK Fuel Rodֲ§r +item.rbmk_fuel_drx.name=§cDigamma RBMK Fuel Rod§r item.rbmk_fuel_empty.name=Empty RBMK Fuel Rod item.rbmk_fuel_flashlead.name=Flashlead RBMK Fuel Rod item.rbmk_fuel_hea241.name=HEA-241 RBMK Fuel Rod @@ -3737,7 +3737,7 @@ item.rbmk_lid.name=RBMK Cover Panel item.rbmk_lid_glass.name=RBMK Glass Cover Panel item.rbmk_pellet_balefire.name=Balefire Fuel Pellet item.rbmk_pellet_balefire_gold.name=Flashgold Fuel Pellet -item.rbmk_pellet_drx.name=ֲ§cDigamma Fuel Pelletֲ§r +item.rbmk_pellet_drx.name=§cDigamma Fuel Pellet§r item.rbmk_pellet_flashlead.name=Flashlead Fuel Pellet item.rbmk_pellet_hea241.name=HEA-241 Fuel Pellet item.rbmk_pellet_hea242.name=HEA-242 Fuel Pellet @@ -3783,7 +3783,7 @@ item.redstone_sword.name=Redstone Sword item.reer_graar.name=The Reer Graar item.remote.name=Broken Remote item.ring_pull.name=Ring Pull -item.ring_starmetal.name=ֲ§9Starmetal Ringֲ§r +item.ring_starmetal.name=§9Starmetal Ring§r item.robes_boots.name=Field Boots item.robes_helmet.name=Casual Hoodie item.robes_legs.name=Casual Pants @@ -4316,12 +4316,12 @@ item.watz_pellet_depleted.nqr.name=Naquadria Watz Pellet (Depleted) item.watz_pellet_depleted.hen.name=HEN Watz Pellet (Depleted) item.watz_pellet_depleted.schrabidium.name=Schrabidium Watz Pellet (Depleted) item.weapon_bat.name=Richard's Default -item.weapon_bat_nail.name=The Clichֳ© +item.weapon_bat_nail.name=The Cliché item.weapon_golf_club.name=Russian Mobster's Club item.weapon_pipe_lead.name=The Manual Override item.weapon_pipe_rusty.name=The Attitude Adjuster item.weapon_saw.name=Doctor Assisted Homicide -item.weaponized_starblaster_cell.name=ֲ§cRigged Star Blaster Energy Cellֲ§r +item.weaponized_starblaster_cell.name=§cRigged Star Blaster Energy Cell§r item.wd40.name=VT-40 item.wild_p.name=Wild Pegasus Dry Whiskey item.wings_limp.name=Limp Wings @@ -4403,11 +4403,11 @@ rbmk.console.fuel_depletion=Monitor average fuel depletion rbmk.console.fuel_poison=Monitor average xenon poisoning rbmk.console.fuel_temp=Monitor average fuel temperature rbmk.control.level=%s -rbmk.control.red=ֲ§cRed Group -rbmk.control.yellow=ֲ§eYellow Group -rbmk.control.green=ֲ§aGreen Group -rbmk.control.blue=ֲ§1Blue Group -rbmk.control.purple=ֲ§5Purple Group +rbmk.control.red=§cRed Group +rbmk.control.yellow=§eYellow Group +rbmk.control.green=§aGreen Group +rbmk.control.blue=§1Blue Group +rbmk.control.purple=§5Purple Group rbmk.moderated=Moderated rbmk.rod.depletion=Depletion: %s rbmk.rod.xenon=Xenon poison: %s @@ -4472,7 +4472,7 @@ tile.barbed_wire_wither.name=Withered Barbed Wire tile.barrel_antimatter.name=Magnetic Antimatter Container tile.barrel_corroded.name=Corroded Barrel tile.barrel_iron.name=Iron Barrel -tile.barrel_plastic.name=Safe Barrelג„¢ +tile.barrel_plastic.name=Safe Barrelâ„¢ tile.barrel_steel.name=Steel Barrel tile.barrel_tcalloy.name=Technetium Steel Barrel tile.barricade.name=Sand Bags @@ -4573,7 +4573,7 @@ tile.block_semtex.name=Block of Semtex tile.block_slag.name=Block of Slag tile.block_smore.name=Block of S'more tile.block_solinium.name=Block of Solinium -tile.block_starmetal.name=ֲ§9Block of Starmetalֲ§r +tile.block_starmetal.name=§9Block of Starmetal§r tile.block_steel.name=Block of Steel tile.block_sulfur.name=Block of Sulfur tile.block_tantalium.name=Block of Tantalium @@ -4745,7 +4745,7 @@ tile.concrete_slab.ducrete_smooth.name=Ducrete Slab tile.concrete_smooth.name=Concrete tile.concrete_smooth_stairs.name=Concrete Stairs tile.concrete_stairs.name=Concrete Tile Stairs -tile.concrete_super.name=ֳ�ber Concrete +tile.concrete_super.name=Über Concrete tile.concrete_super_broken.name=Moldy Debris tile.conveyor.name=Conveyor Belt tile.conveyor.desc=Moves items dropped on it$Can be rotated clockwise with a screwdriver$Shift-click with screwdriver to bend @@ -4911,11 +4911,11 @@ tile.frozen_grass.name=Frozen Grass tile.frozen_log.name=Frozen Log tile.frozen_planks.name=Frozen Planks tile.furnace_combination.name=Combination Oven -tile.furnace_combination.desc=A large furnace that can produce charcoal and coal coke.$Produces fluid byproducts.$Heat transfer rate: Ö¾â€T*0.25 TU/t +tile.furnace_combination.desc=A large furnace that can produce charcoal and coal coke.$Produces fluid byproducts.$Heat transfer rate: ΔT*0.25 TU/t tile.furnace_iron.name=Iron Furnace tile.furnace_iron.desc=Larger and more efficient furnace,$does not waste fuel when idle. tile.furnace_steel.name=Steel Furnace -tile.furnace_steel.desc=Very large furnace that can provide bonus items$when smelting ores. Requires external heat source.$Heat transfer rate: Ö¾â€T*0.05 TU/t$(־†means difference and T means temperature) +tile.furnace_steel.desc=Very large furnace that can provide bonus items$when smelting ores. Requires external heat source.$Heat transfer rate: ΔT*0.05 TU/t$(Δ means difference and T means temperature) tile.fusion_center.name=Central Magnet Piece tile.fusion_conductor.name=Superconducting Magnet tile.fusion_conductor_welded.name=Superconducting Magnet (Welded) @@ -4972,7 +4972,7 @@ tile.hadron_coil_starmetal.name=Dense Starmetal Coil tile.hadron_cooler.name=Particle Accelerator Cooling Unit tile.hadron_cooler.desc=Cooling power: 10$Overcooling threshold: 10$Cooling bonus: +10%%$Overcooling penalty: -25%% tile.hadron_cooler_mk2.name=Particle Accelerator Cooling Unit - The Palindrome Special -tile.hadron_cooler_mk2.desc=Cooling power: 5$Efficiency function: 2-(cooling-15)ֲ²/225$Maximum penalty: -90%% +tile.hadron_cooler_mk2.desc=Cooling power: 5$Efficiency function: 2-(cooling-15)²/225$Maximum penalty: -90%% tile.hadron_core.name=Particle Accelerator Core Component tile.hadron_diode.name=Schottky Particle Diode tile.hadron_plating.name=Particle Accelerator Plating @@ -5038,7 +5038,7 @@ tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energy Storage Block tile.machine_battery_potato.name=Potato Battery Block tile.machine_boiler.name=Boiler -tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: Ö¾â€T*0.01 TU/t +tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t tile.machine_boiler_electric_off.name=Electric Oil Heater tile.machine_boiler_electric_on.name=Electric Oil Heater tile.machine_boiler_off.name=Oil Heater @@ -5053,7 +5053,7 @@ tile.machine_chungus.desc=Efficiency: 85%% tile.machine_coal_off.name=Combustion Generator tile.machine_coal_on.name=Combustion Generator tile.machine_coker.name=Coker Unit -tile.machine_coker.desc=Cokes oil, creating fluid byproducts.$Requires external heat source.$Heat transfer rate: Ö¾â€T*0.025 TU/t +tile.machine_coker.desc=Cokes oil, creating fluid byproducts.$Requires external heat source.$Heat transfer rate: ΔT*0.025 TU/t tile.machine_combine_factory.name=CMB Steel Furnace tile.machine_combustion_engine.name=Industrial Combustion Engine tile.machine_compressor.name=Compressor @@ -5095,7 +5095,7 @@ tile.machine_generator.name=Nuclear Reactor (Old) tile.machine_geo.name=Geothermal Electric Generator tile.machine_hephaestus.name=Geothermal Heat Exchanger tile.machine_industrial_boiler.name=Industrial Boiler -tile.machine_industrial_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: Ö¾â€T*0.01 TU/t$Cannot explode +tile.machine_industrial_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t$Cannot explode tile.machine_industrial_generator.name=Industrial Generator tile.machine_keyforge.name=Locksmith Table tile.machine_large_turbine.name=Industrial Steam Turbine @@ -5200,7 +5200,7 @@ tile.nuke_fstbmb.name=Balefire Bomb tile.nuke_gadget.name=The Gadget tile.nuke_man.name=Fat Man tile.nuke_mike.name=Ivy Mike -tile.nuke_n2.name=Nֲ² Mine +tile.nuke_n2.name=N² Mine tile.nuke_n45.name=N45 Naval Mine tile.nuke_prototype.name=The Prototype tile.nuke_solinium.name=The Blue Rinse @@ -5610,9 +5610,9 @@ tool.ability.silktouch=Silk Touch tool.ability.smelter=Auto-Smelter turret.animals=Target Passive: %s -turret.arty.artillery=ֲ§eArtillery Mode$Grace: 250m$Range: 3,000m -turret.arty.cannon=ֲ§eCannon Mode$Grace: 32m$Range: 250m -turret.arty.manual=ֲ§eManual Mode$Range: 3,000m +turret.arty.artillery=§eArtillery Mode$Grace: 250m$Range: 3,000m +turret.arty.cannon=§eCannon Mode$Grace: 32m$Range: 250m +turret.arty.manual=§eManual Mode$Range: 3,000m turret.machines=Target Machines: %s turret.mobs=Target Mobs: %s turret.none=None @@ -5623,12 +5623,12 @@ turret.players=Target Players: %s upgrade.consumption=Consumption %s upgrade.speed=Process time %s -upgrade.gui.title=ֲ§lAcceptable Upgrades:ֲ§r -upgrade.gui.afterburner= * ֲ§dAfterburnerֲ§r: Stacks to level %s -upgrade.gui.effectiveness= * ֲ§aEffectivenessֲ§r: Stacks to level %s -upgrade.gui.overdrive= * ֲ§7Overdriveֲ§r: Stacks to level %s -upgrade.gui.power= * ֲ§9Power-Savingֲ§r: Stacks to level %s -upgrade.gui.speed= * ֲ§4Speedֲ§r: Stacks to level %s +upgrade.gui.title=§lAcceptable Upgrades:§r +upgrade.gui.afterburner= * §dAfterburner§r: Stacks to level %s +upgrade.gui.effectiveness= * §aEffectiveness§r: Stacks to level %s +upgrade.gui.overdrive= * §7Overdrive§r: Stacks to level %s +upgrade.gui.power= * §9Power-Saving§r: Stacks to level %s +upgrade.gui.speed= * §4Speed§r: Stacks to level %s wavelengths.name.ir=Infrared wavelengths.name.visible=Visible Light From be31c070a5e091ac00fa0227a06b55b268af5a99 Mon Sep 17 00:00:00 2001 From: 9Valjews <64272884+9Valjew@users.noreply.github.com> Date: Sun, 10 Dec 2023 10:34:02 +0200 Subject: [PATCH 170/207] Update ModItems.java The unfuckening 2: now with readded foreign languages! --- src/main/java/com/hbm/items/ModItems.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 4cdc63fc2..2fde77b68 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1488,7 +1488,7 @@ public class ModItems { public static Item sat_coord; public static Item sat_designator; public static Item sat_relay; - + public static ItemEnumMulti ammo_misc; public static ItemEnumMulti ammo_12gauge; public static ItemEnumMulti ammo_20gauge; @@ -3980,7 +3980,7 @@ public class ModItems { mp_stability_10_space = new ItemMissile().makeStability(0.35F, PartSize.SIZE_10).setHealth(5F).setRarity(Rarity.COMMON).setWittyText("Standing there alone, the ship is waiting / All systems are go, are you sure?") .setUnlocalizedName("mp_stability_10_space"); mp_stability_15_flat = new ItemMissile().makeStability(0.5F, PartSize.SIZE_15).setHealth(10F) .setUnlocalizedName("mp_stability_15_flat"); mp_stability_15_thin = new ItemMissile().makeStability(0.35F, PartSize.SIZE_15).setHealth(5F) .setUnlocalizedName("mp_stability_15_thin"); - mp_stability_15_soyuz = new ItemMissile().makeStability(0.25F, PartSize.SIZE_15).setHealth(15F).setRarity(Rarity.COMMON).setWittyText("׀¡׀¾×�׀·!").setUnlocalizedName("mp_stability_15_soyuz"); + mp_stability_15_soyuz = new ItemMissile().makeStability(0.25F, PartSize.SIZE_15).setHealth(15F).setRarity(Rarity.COMMON).setWittyText("Союз!").setUnlocalizedName("mp_stability_15_soyuz"); mp_stability_20_flat = new ItemMissile().makeStability(0.5F, PartSize.SIZE_20) .setUnlocalizedName("mp_s_20"); mp_fuselage_10_kerosene = new ItemMissile().makeFuselage(FuelType.KEROSENE, 2500F, PartSize.SIZE_10, PartSize.SIZE_10).setAuthor("Hoboy").setHealth(20F).setUnlocalizedName("mp_fuselage_10_kerosene"); From 1d92906dd7161779185f2d1949fc690d014429ea Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 10 Dec 2023 18:58:26 +0100 Subject: [PATCH 171/207] upgrade crap, funny new stamps --- changelog | 6 + .../handler/guncfg/GunDetonatorFactory.java | 1 + .../handler/nei/ExposureChamberHandler.java | 27 ++++ .../hbm/handler/nei/PressRecipeHandler.java | 2 +- .../inventory/recipes/AssemblerRecipes.java | 11 ++ .../recipes/ExposureChamberRecipes.java | 20 +++ .../hbm/inventory/recipes/PressRecipes.java | 12 +- src/main/java/com/hbm/items/ItemEnums.java | 4 + src/main/java/com/hbm/items/ModItems.java | 6 + .../java/com/hbm/items/machine/ItemStamp.java | 29 +++- .../com/hbm/items/machine/ItemStampBook.java | 42 ++++++ .../java/com/hbm/main/CraftingManager.java | 2 +- .../java/com/hbm/main/ModEventHandler.java | 15 ++- src/main/java/com/hbm/main/NEIConfig.java | 1 + .../tileentity/RenderExposureChamber.java | 94 ++++++++++++- .../hbm/tileentity/IUpgradeInfoProvider.java | 7 +- .../machine/TileEntityElectrolyser.java | 29 +++- .../machine/TileEntityFurnaceIron.java | 2 +- .../machine/TileEntityMachineArcWelder.java | 4 +- .../machine/TileEntityMachineAssembler.java | 6 +- .../machine/TileEntityMachineAssemfac.java | 37 ++++- .../machine/TileEntityMachineCentrifuge.java | 37 ++++- .../machine/TileEntityMachineChemfac.java | 36 ++++- .../machine/TileEntityMachineChemplant.java | 36 ++++- .../machine/TileEntityMachineCompressor.java | 39 +++++- .../TileEntityMachineCrystallizer.java | 127 ++++++++---------- .../machine/TileEntityMachineEPress.java | 27 +++- .../TileEntityMachineElectricFurnace.java | 4 +- .../machine/TileEntityMachineExcavator.java | 29 +++- .../TileEntityMachineExposureChamber.java | 85 +++++++++++- .../machine/TileEntityMachineMiningLaser.java | 42 +++++- .../machine/TileEntityMachineMixer.java | 38 +++++- .../machine/TileEntityMachineTurbofan.java | 25 +++- .../oil/TileEntityMachineFrackingTower.java | 25 ++++ .../oil/TileEntityMachineGasFlare.java | 29 +++- .../oil/TileEntityMachineLiquefactor.java | 31 ++++- .../machine/oil/TileEntityMachineOilWell.java | 25 ++++ .../oil/TileEntityMachinePumpjack.java | 25 ++++ .../oil/TileEntityMachineSolidifier.java | 32 ++++- .../machine/oil/TileEntityOilDrillBase.java | 17 ++- .../turret/TileEntityTurretMaxwell.java | 43 +++++- .../generator/room/TestDungeonRoom8.java | 17 ++- src/main/resources/assets/hbm/lang/de_DE.lang | 18 +++ src/main/resources/assets/hbm/lang/en_US.lang | 25 +++- .../hbm/textures/items/fuel_tank_small.png | Bin 306 -> 325 bytes .../assets/hbm/textures/items/page_of_.png | Bin 0 -> 241 bytes .../assets/hbm/textures/items/stamp_book.png | Bin 0 -> 685 bytes .../models/machines/exposure_chamber.png | Bin 6849 -> 6848 bytes 48 files changed, 1047 insertions(+), 122 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java create mode 100644 src/main/java/com/hbm/items/machine/ItemStampBook.java create mode 100644 src/main/resources/assets/hbm/textures/items/page_of_.png create mode 100644 src/main/resources/assets/hbm/textures/items/stamp_book.png diff --git a/changelog b/changelog index b0650e213..57b1ddfe2 100644 --- a/changelog +++ b/changelog @@ -12,6 +12,10 @@ * Stylish as hell * Decoy missile * A cheap tier 1 missile that shows up on radar screens as tier 4 (eg. nuclear) missiles +* Printing press stamps + * 8 different stamps for printing certain pages + * If a meteor dungeon safe is generated without a black book inside, it will generate tow random stamps instead + * With all 8 stamps, allows you to print your own black book ## Changed * Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high @@ -36,6 +40,8 @@ * The flux display is now functional. It will display the flux curve of the last 30 seconds, as well as labels for the total flux level. * With the color assigning buttons and the flux display finished, the console is now finally complete * Compressing blood at 4 PU now turns it into crude oil at a ratio of 2:1 +* Increased the cap for the overdrive upgrade in acidizers, tier 2 should now yield the proper amount and tier 3 should now be better than tier 2 +* The tooltip of valid upgrades now changes when a compatible machine GUI is open ## Fixed * Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate diff --git a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java index 093a3d90b..2d76d18e6 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java @@ -60,6 +60,7 @@ public class GunDetonatorFactory { config.config.add(BulletConfigSyncingUtil.G12_DU); config.config.add(BulletConfigSyncingUtil.G12_SLEEK); config.config.add(BulletConfigSyncingUtil.G12_AM); + config.config.add(BulletConfigSyncingUtil.G12_PERCUSSION); config.config.add(BulletConfigSyncingUtil.NUKE_NORMAL); config.config.add(BulletConfigSyncingUtil.NUKE_LOW); config.config.add(BulletConfigSyncingUtil.NUKE_SAFE); diff --git a/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java b/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java new file mode 100644 index 000000000..4969763e4 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java @@ -0,0 +1,27 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIMachineExposureChamber; +import com.hbm.inventory.recipes.ExposureChamberRecipes; + +public class ExposureChamberHandler extends NEIUniversalHandler { + + public ExposureChamberHandler() { + super("Exposure Chamber", ModBlocks.machine_exposure_chamber, ExposureChamberRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmExposure"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(31, 28, 41, 10), "ntmExposure")); + guiGui.add(GUIMachineExposureChamber.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } +} diff --git a/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java b/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java index cc776c8fd..fbc14c5cd 100644 --- a/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/PressRecipeHandler.java @@ -110,7 +110,7 @@ public class PressRecipeHandler extends TemplateRecipeHandler { if(in.matchesRecipe(ingredient, true)) this.arecipes.add(new SmeltingSet(ItemStamp.stamps.get(recipe.getKey().getValue()), new ComparableStack(ingredient), recipe.getValue())); - else if(ingredient.getItem() instanceof ItemStamp && ((ItemStamp)ingredient.getItem()).type == stamp) + else if(ingredient.getItem() instanceof ItemStamp && ((ItemStamp)ingredient.getItem()).getStampType(ingredient.getItem(), ingredient.getItemDamage()) == stamp) this.arecipes.add(new SmeltingSet(ingredient, recipe.getKey().getKey(), recipe.getValue())); } } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 6e69849c6..33b9a227b 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -998,6 +998,17 @@ public class AssemblerRecipes { new ComparableStack(ModItems.coil_copper, 16), new ComparableStack(ModItems.circuit_gold, 2) }, 200); + + makeRecipe(new ComparableStack(ModBlocks.machine_exposure_chamber, 1), new AStack[] { + !exp ? new OreDictStack(AL.plateCast(), 12) : new OreDictStack(AL.heavyComp(), 1), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), + new OreDictStack(ALLOY.wireDense(), 32), + new ComparableStack(ModItems.motor_desh, 2), + new ComparableStack(ModItems.circuit_gold, 3), + new ComparableStack(ModBlocks.capacitor_tantalium, 1), + new ComparableStack(ModBlocks.glass_quartz, 16) + }, 200); makeRecipe(new ComparableStack(ModItems.euphemium_capacitor, 1), new AStack[] { diff --git a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java index d7e3ca925..cb42e3140 100644 --- a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java @@ -2,6 +2,7 @@ package com.hbm.inventory.recipes; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import com.google.gson.JsonElement; @@ -33,6 +34,25 @@ public class ExposureChamberRecipes extends SerializableRecipe { return null; } + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(ExposureChamberRecipe recipe : ExposureChamberRecipes.recipes) { + + Object[] array = new Object[2]; + + array[1] = recipe.particle; + AStack stack = recipe.ingredient.copy(); + stack.stacksize = 8; + array[0] = stack; + + recipes.put(array, recipe.output); + } + + return recipes; + } + @Override public String getFileName() { return "hbmExposureChamber.json"; diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index 8c6498c8f..aa3449238 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -15,6 +15,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumBriquetteType; +import com.hbm.items.ItemEnums.EnumPages; import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; import com.hbm.items.ItemAmmoEnums.Ammo556mm; import com.hbm.items.ItemAmmoEnums.AmmoLunaticSniper; @@ -40,7 +41,7 @@ public class PressRecipes extends SerializableRecipe { if(!(stamp.getItem() instanceof ItemStamp)) return null; - StampType type = ((ItemStamp) stamp.getItem()).type; + StampType type = ((ItemStamp) stamp.getItem()).getStampType(stamp.getItem(), stamp.getItemDamage()); for(Entry, ItemStack> recipe : recipes.entrySet()) { @@ -116,6 +117,15 @@ public class PressRecipes extends SerializableRecipe { makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_actionexpress), new ItemStack(ModItems.ammo_50ae, 12)); makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_luna), ModItems.ammo_luna_sniper.stackFromEnum(4, AmmoLunaticSniper.SABOT)); makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_762), new ItemStack(ModItems.ammo_762, 32)); + + makeRecipe(StampType.PRINTING1, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE1)); + makeRecipe(StampType.PRINTING2, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE2)); + makeRecipe(StampType.PRINTING3, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE3)); + makeRecipe(StampType.PRINTING4, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE4)); + makeRecipe(StampType.PRINTING5, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE5)); + makeRecipe(StampType.PRINTING6, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE6)); + makeRecipe(StampType.PRINTING7, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE7)); + makeRecipe(StampType.PRINTING8, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE8)); } public static void makeRecipe(StampType type, AStack in, Item out) { diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index 77f435b48..b4d48e009 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -61,4 +61,8 @@ public class ItemEnums { DIGAMMAUPONTOP, DIGAMMAFOROURRIGHT } + + public static enum EnumPages { + PAGE1, PAGE2, PAGE3, PAGE4, PAGE5, PAGE6, PAGE7, PAGE8 + } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 539beed9e..211768119 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -762,6 +762,7 @@ public class ModItems { public static Item stamp_desh_plate; public static Item stamp_desh_wire; public static Item stamp_desh_circuit; + public static Item stamp_book; public static Item stamp_357; public static Item stamp_44; @@ -2364,6 +2365,7 @@ public class ModItems { public static Item letter; public static Item book_secret; public static Item book_of_; + public static Item page_of_; public static Item burnt_bark; public static Item smoke1; @@ -3258,6 +3260,7 @@ public class ModItems { stamp_44 = new ItemStamp(1000, StampType.C44).setUnlocalizedName("stamp_44").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_44"); stamp_9 = new ItemStamp(1000, StampType.C9).setUnlocalizedName("stamp_9").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_9"); stamp_50 = new ItemStamp(1000, StampType.C50).setUnlocalizedName("stamp_50").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_50"); + stamp_book = new ItemStampBook().setUnlocalizedName("stamp_book").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":stamp_book"); stamp_desh_357 = new ItemStamp(0, StampType.C357).setUnlocalizedName("stamp_desh_357").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_357_desh"); stamp_desh_44 = new ItemStamp(0, StampType.C44).setUnlocalizedName("stamp_desh_44").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_44_desh"); @@ -5412,6 +5415,7 @@ public class ModItems { letter = new ItemStarterKit().setUnlocalizedName("letter").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":letter"); book_secret = new ItemCustomLore().setUnlocalizedName("book_secret").setCreativeTab(MainRegistry.polaroidID == 11 ? MainRegistry.consumableTab : null).setTextureName(RefStrings.MODID + ":book_secret"); book_of_ = new ItemBook().setUnlocalizedName("book_of_").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_of_"); + page_of_ = new ItemEnumMulti(ItemEnums.EnumPages.class, true, false).setUnlocalizedName("page_of_").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":page_of_"); burnt_bark = new ItemCustomLore().setUnlocalizedName("burnt_bark").setCreativeTab(null).setTextureName(RefStrings.MODID + ":burnt_bark"); smoke1 = new Item().setUnlocalizedName("smoke1").setTextureName(RefStrings.MODID + ":smoke1"); @@ -6453,6 +6457,7 @@ public class ModItems { GameRegistry.registerItem(stamp_desh_44, stamp_desh_44.getUnlocalizedName()); GameRegistry.registerItem(stamp_desh_9, stamp_desh_9.getUnlocalizedName()); GameRegistry.registerItem(stamp_desh_50, stamp_desh_50.getUnlocalizedName()); + GameRegistry.registerItem(stamp_book, stamp_book.getUnlocalizedName()); //Molds GameRegistry.registerItem(mold_base, mold_base.getUnlocalizedName()); @@ -7988,6 +7993,7 @@ public class ModItems { GameRegistry.registerItem(glitch, glitch.getUnlocalizedName()); GameRegistry.registerItem(book_secret, book_secret.getUnlocalizedName()); GameRegistry.registerItem(book_of_, book_of_.getUnlocalizedName()); + GameRegistry.registerItem(page_of_, page_of_.getUnlocalizedName()); GameRegistry.registerItem(burnt_bark, burnt_bark.getUnlocalizedName()); //Kits diff --git a/src/main/java/com/hbm/items/machine/ItemStamp.java b/src/main/java/com/hbm/items/machine/ItemStamp.java index fe6986d90..75ed425fa 100644 --- a/src/main/java/com/hbm/items/machine/ItemStamp.java +++ b/src/main/java/com/hbm/items/machine/ItemStamp.java @@ -10,19 +10,27 @@ import net.minecraft.item.ItemStack; public class ItemStamp extends Item { - public StampType type; + protected StampType type; public static final HashMap> stamps = new HashMap(); public ItemStamp(int dura, StampType type) { this.setMaxDamage(dura); this.type = type; + if(type != null) { + this.addStampToList(this, 0, type); + } + } + + protected void addStampToList(Item item, int meta, StampType type) { List list = stamps.get(type); if(list == null) list = new ArrayList(); - list.add(new ItemStack(this)); + ItemStack stack = new ItemStack(item, 1, meta); + + list.add(stack); stamps.put(type, list); } @@ -32,16 +40,27 @@ public class ItemStamp extends Item { list.add("[CREATED USING TEMPLATE FOLDER]"); } - //TODO: give UFFR one (1) good boy token + /** Params can't take an ItemStack, for some reason it crashes during init */ + public StampType getStampType(Item item, int meta) { + return type; + } + public static enum StampType { FLAT, PLATE, WIRE, CIRCUIT, - //DISC, C357, C44, C50, - C9; + C9, + PRINTING1, + PRINTING2, + PRINTING3, + PRINTING4, + PRINTING5, + PRINTING6, + PRINTING7, + PRINTING8; } } diff --git a/src/main/java/com/hbm/items/machine/ItemStampBook.java b/src/main/java/com/hbm/items/machine/ItemStampBook.java new file mode 100644 index 000000000..6fa9906f6 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemStampBook.java @@ -0,0 +1,42 @@ +package com.hbm.items.machine; + +import java.util.List; +import java.util.Locale; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ItemStampBook extends ItemStamp { + + public ItemStampBook() { + super(0, null); + + for(int i = 0; i < 8; i++) { + StampType type = getStampType(this, i); + this.addStampToList(this, i, type); + } + } + + @Override + public StampType getStampType(Item item, int meta) { + meta %= 8; + return StampType.values()[StampType.PRINTING1.ordinal() + meta]; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < 8; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + StampType type = this.getStampType(stack.getItem(), stack.getItemDamage()); + return super.getUnlocalizedName() + "." + type.name().toLowerCase(Locale.US); + } +} diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 386706b30..a9ced44fa 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -606,7 +606,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.key, 1), new Object[] { " B", " B ", "P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten }); addRecipeAuto(new ItemStack(ModItems.key_kit, 1), new Object[] { "PKP", "DTD", "PKP", 'P', GOLD.plate(), 'K', ModItems.key, 'D', DESH.dust(), 'T', KEY_TOOL_SCREWDRIVER }); - addRecipeAuto(new ItemStack(ModItems.key_red, 1), new Object[] { "DSC", "SMS", "KSD", 'C', ModItems.circuit_targeting_tier4, 'M', Items.nether_star, 'K', ModItems.key, 'D', DESH.dust(), 'S', BIGMT.plate() }); + addRecipeAuto(new ItemStack(ModItems.key_red, 1), new Object[] { "RCA", "CIC", "KCR", 'R', KEY_RED, 'C', STAR.wireDense(), 'A', ModItems.gem_alexandrite, 'I', ModItems.ingot_chainsteel, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.pin, 1), new Object[] { "W ", " W", " W", 'W', ModItems.wire_copper }); addRecipeAuto(new ItemStack(ModItems.padlock_rusty, 1), new Object[] { "I", "B", "I", 'I', IRON.ingot(), 'B', ModItems.bolt_tungsten }); addRecipeAuto(new ItemStack(ModItems.padlock, 1), new Object[] { " P ", "PBP", "PPP", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten }); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 944ea7587..d0ab5626f 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -4,11 +4,13 @@ import java.lang.reflect.Field; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Random; +import java.util.Set; import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.Level; @@ -1200,7 +1202,12 @@ public class ModEventHandler { } } - private static final String hash = "41eb77f138ce350932e33b6b26b233df9aad0c0c80c6a49cb9a54ddd8fae3f83"; + private static final Set hashes = new HashSet(); + + static { + hashes.add("41de5c372b0589bbdb80571e87efa95ea9e34b0d74c6005b8eab495b7afd9994"); + hashes.add("31da6223a100ed348ceb3254ceab67c9cc102cb2a04ac24de0df3ef3479b1036"); + } @SubscribeEvent public void onClickSign(PlayerInteractEvent event) { @@ -1210,14 +1217,14 @@ public class ModEventHandler { int z = event.z; World world = event.world; - if(!world.isRemote && event.action == Action.RIGHT_CLICK_BLOCK && world.getBlock(x, y, z) == Blocks.standing_sign) { + if(!world.isRemote && event.action == Action.RIGHT_CLICK_BLOCK && world.getTileEntity(x, y, z) instanceof TileEntitySign) { TileEntitySign sign = (TileEntitySign)world.getTileEntity(x, y, z); String result = smoosh(sign.signText[0], sign.signText[1], sign.signText[2], sign.signText[3]); - //System.out.println(result); + System.out.println(result); - if(result.equals(hash)) { + if(hashes.contains(result)) { world.func_147480_a(x, y, z, false); EntityItem entityitem = new EntityItem(world, x, y, z, new ItemStack(ModItems.bobmazon_hidden)); entityitem.delayBeforeCanPickup = 10; diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index dc6b9cc4a..1d1697804 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -77,6 +77,7 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new ElectrolyserMetalHandler()); registerHandler(new AshpitHandler()); registerHandler(new ArcWelderHandler()); + registerHandler(new ExposureChamberHandler()); for(MachineConfiguration conf : CustomMachineConfigJSON.niceList) registerHandlerBypass(new CustomMachineHandler(conf)); diff --git a/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java b/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java index 7fc7528da..acfb9bbf9 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java +++ b/src/main/java/com/hbm/render/tileentity/RenderExposureChamber.java @@ -1,15 +1,26 @@ package com.hbm.render.tileentity; +import java.util.Random; + import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.util.BeamPronter; +import com.hbm.render.util.BeamPronter.EnumBeamType; +import com.hbm.render.util.BeamPronter.EnumWaveType; import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; +import net.minecraftforge.client.IItemRenderer; -public class RenderExposureChamber extends TileEntitySpecialRenderer { +public class RenderExposureChamber extends TileEntitySpecialRenderer implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float interp) { @@ -34,6 +45,15 @@ public class RenderExposureChamber extends TileEntitySpecialRenderer { double rotation = chamber.prevRotation + (chamber.rotation - chamber.prevRotation) * interp; + GL11.glPushMatrix(); + GL11.glRotated(rotation, 0, 1, 0); + ResourceManager.exposure_chamber.renderPart("Magnets"); + GL11.glPopMatrix(); + + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + if(chamber.isOn) { GL11.glPushMatrix(); GL11.glRotated(rotation / 2D, 0, 1, 0); @@ -42,14 +62,76 @@ public class RenderExposureChamber extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } - GL11.glPushMatrix(); - GL11.glRotated(rotation, 0, 1, 0); - ResourceManager.exposure_chamber.renderPart("Magnets"); - GL11.glPopMatrix(); - GL11.glShadeModel(GL11.GL_FLAT); GL11.glEnable(GL11.GL_CULL_FACE); + + if(chamber.isOn) { + + int duration = 8; + Random rand = new Random(chamber.getWorldObj().getTotalWorldTime() / duration); + int chance = 2; + int color = chamber.getWorldObj().getTotalWorldTime() % duration >= duration / 2 ? 0x80d0ff : 0xffffff; + rand.nextInt(chance); //RNG behaves weirldy in the first iteration + if(rand.nextInt(chance) == 0) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 3.675, -7.5); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, 5), EnumWaveType.RANDOM, EnumBeamType.LINE, color, 0xffffff, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.125F, 1, 0); + GL11.glPopMatrix(); + } + if(rand.nextInt(chance) == 0) { + GL11.glPushMatrix(); + GL11.glTranslated(1.1875, 2.5, -7.5); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, 5), EnumWaveType.RANDOM, EnumBeamType.LINE, color, 0xffffff, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.125F, 1, 0); + GL11.glPopMatrix(); + } + if(rand.nextInt(chance) == 0) { + GL11.glPushMatrix(); + GL11.glTranslated(-1.1875, 2.5, -7.5); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, 5), EnumWaveType.RANDOM, EnumBeamType.LINE, color, 0xffffff, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.125F, 1, 0); + GL11.glPopMatrix(); + } + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.75, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 1.5, 0), EnumWaveType.RANDOM, EnumBeamType.LINE, 0x80d0ff, 0xffffff, (int)(System.currentTimeMillis() % 1000) / 50, 10, 0.125F, 1, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 1.5, 0), EnumWaveType.RANDOM, EnumBeamType.LINE, 0x8080ff, 0xffffff, (int)(System.currentTimeMillis() + 5 % 1000) / 50, 10, 0.125F, 1, 0); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 2.5, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, -1), EnumWaveType.SPIRAL, EnumBeamType.LINE, 0xffff80, 0xffffff, (int)(System.currentTimeMillis() % 360), 15, 0.125F, 1, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, -1), EnumWaveType.SPIRAL, EnumBeamType.LINE, 0xff8080, 0xffffff, (int)(System.currentTimeMillis() % 360) + 180, 15, 0.125F, 1, 0); + GL11.glPopMatrix(); + } + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); GL11.glPopMatrix(); } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_exposure_chamber); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -1.5, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + GL11.glTranslated(1.5, 0, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.exposure_chamber_tex); + ResourceManager.exposure_chamber.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } } diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java index 00ecd8ab1..f1a420b5f 100644 --- a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -19,6 +19,11 @@ public interface IUpgradeInfoProvider { return EnumChatFormatting.GREEN.YELLOW + ">>> " + I18nUtil.resolveKey(block.getUnlocalizedName() + ".name") + " <<<"; } + public static final String KEY_ACID = "upgrade.acid"; + public static final String KEY_BURN = "upgrade.burn"; public static final String KEY_CONSUMPTION = "upgrade.consumption"; - public static final String KEY_SPEED = "upgrade.speed"; + public static final String KEY_DELAY = "upgrade.delay"; + public static final String KEY_EFFICIENCY = "upgrade.efficiency"; + public static final String KEY_FORTUNE = "upgrade.fortune"; + public static final String KEY_RANGE = "upgrade.range"; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index 8d34ffa2c..04b147c79 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerElectrolyserFluid; @@ -25,8 +26,10 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CrucibleUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; @@ -41,11 +44,12 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver, IControlReceiver, IGUIProvider { +public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 20000000; @@ -489,4 +493,27 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn public boolean hasPermission(EntityPlayer player) { return this.isUseableByPlayer(player); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electrolyser)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java index 920fd6458..9a00a9bba 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java @@ -250,7 +250,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.furnace_iron)); if(type == UpgradeType.SPEED) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_SPEED, "-" + (level * 50 / 3) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 50 / 3) + "%")); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index a2933ca1d..d6211169b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -356,12 +356,12 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electric_furnace_off)); if(type == UpgradeType.SPEED) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_SPEED, "-" + (level * 100 / 6) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 100 / 6) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); } if(type == UpgradeType.POWER) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 100 / 6) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_SPEED, "+" + (level * 100 / 3) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 100 / 3) + "%")); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index cddb1a40f..b549a6335 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -280,12 +280,12 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); if(type == UpgradeType.SPEED) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_SPEED, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); } if(type == UpgradeType.POWER) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_SPEED, "+" + (level * 5) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); } if(type == UpgradeType.OVERDRIVE) { info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); @@ -296,7 +296,7 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i public int getMaxLevel(UpgradeType type) { if(type == UpgradeType.SPEED) return 3; if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 3; + if(type == UpgradeType.OVERDRIVE) return 9; return 0; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java index 407c74ad6..009bc53e7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java @@ -1,8 +1,10 @@ package com.hbm.tileentity.machine; +import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerAssemfac; import com.hbm.inventory.fluid.Fluids; @@ -10,6 +12,9 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIAssemfac; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; @@ -21,10 +26,11 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver { +public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver, IUpgradeInfoProvider { public AssemblerArm[] arms; @@ -421,4 +427,33 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIAssemfac(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assemfac)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 15) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 6; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 12; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index 8add21027..835324307 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerCentrifuge; import com.hbm.inventory.gui.GUIMachineCentrifuge; @@ -9,7 +12,10 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; @@ -20,10 +26,11 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class TileEntityMachineCentrifuge extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityMachineCentrifuge extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IUpgradeInfoProvider { public int progress; public long power; @@ -307,4 +314,32 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineCentrifuge(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_centrifuge)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 100) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 3; + return 0; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index f838e1082..7f8a84d03 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerChemfac; import com.hbm.inventory.fluid.Fluids; @@ -13,6 +14,9 @@ import com.hbm.inventory.gui.GUIChemfac; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; @@ -23,10 +27,11 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { +public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase implements IUpgradeInfoProvider { float rotSpeed; public float rot; @@ -346,4 +351,33 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIChemfac(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_chemfac)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 15) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 6; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 12; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index d78b87c9f..00523e45b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.RecipesCommon.AStack; @@ -21,7 +22,10 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.InventoryUtil; import com.hbm.util.fauxpointtwelve.DirPos; @@ -38,10 +42,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineChemplant extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineChemplant extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 100000; @@ -654,4 +659,33 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineChemplant(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_chemplant)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 9; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java index fa99ad805..9a05a00b5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java @@ -1,6 +1,9 @@ package com.hbm.tileentity.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerCompressor; @@ -13,7 +16,10 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; @@ -26,11 +32,12 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyUser, IFluidStandardTransceiver { +public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyUser, IFluidStandardTransceiver, IUpgradeInfoProvider { public FluidTank[] tanks; public long power; @@ -85,7 +92,7 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement //there is a reason to do this but i'm not telling you // ^ a few months later i have to wonder what the fuck this guy was on about, and if i ever see him i will punch him in the nuts - if(timeBase == this.processTimeBase) this.processTime = speedLevel == 3 ? 10 : speedLevel == 2 ? 20 : speedLevel == 1 ? 60 : timeBase; + if(rec == null) this.processTime = speedLevel == 3 ? 10 : speedLevel == 2 ? 20 : speedLevel == 1 ? 60 : timeBase; else this.processTime = timeBase / (speedLevel + 1); this.powerRequirement = this.powerRequirementBase / (powerLevel + 1); this.processTime = this.processTime / (overLevel + 1); @@ -329,4 +336,32 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_compressor)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + "Recipe: "+ I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level == 3 ? 90 : level == 2 ? 80 : level == 1 ? 40 : 0) + "%")); + info.add(EnumChatFormatting.GREEN + "Generic compression: "+ I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level + 1)) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 9; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 7c19d40bb..18acf6556 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -1,17 +1,24 @@ package com.hbm.tileentity.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerCrystallizer; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUICrystallizer; import com.hbm.inventory.recipes.CrystallizerRecipes; import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; -import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IBatteryItem; @@ -26,10 +33,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IGUIProvider { +public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 1000000; @@ -63,6 +71,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme tank.setType(7, slots); tank.loadTank(3, 4, slots); + UpgradeManager.eval(slots, 5, 6); + for(int i = 0; i < getCycleCount(); i++) { if(canProcess()) { @@ -156,7 +166,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme else if(slots[2].stackSize + stack.stackSize <= slots[2].getMaxStackSize()) slots[2].stackSize += stack.stackSize; - tank.setFill(tank.getFill() - result.acidAmount); + tank.setFill(tank.getFill() - getRequiredAcid(result.acidAmount)); float freeChance = this.getFreeChance(); @@ -183,7 +193,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(slots[0].stackSize < result.itemAmount) return false; - if(tank.getFill() < result.acidAmount) return false; + if(tank.getFill() < getRequiredAcid(result.acidAmount)) return false; ItemStack stack = result.output.copy(); @@ -199,89 +209,39 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } public int getRequiredAcid(int base) { - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_1) - base *= 3; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_2) - base *= 4; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_3) - base *= 5; + int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + if(efficiency > 0) { + return base * (efficiency + 2); } - return base; } public float getFreeChance() { - - float chance = 0.0F; - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_1) - chance += 0.05F; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_2) - chance += 0.1F; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_3) - chance += 0.15F; + int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + if(efficiency > 0) { + return Math.min(efficiency * 0.05F, 0.15F); } - - return Math.min(chance, 0.15F); + return 0; } public short getDuration() { - - float durationMod = 1; CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0], tank.getTankType()); - int base = result != null ? result.duration : 600; - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_1) - durationMod -= 0.25F; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_2) - durationMod -= 0.50F; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_3) - durationMod -= 0.75F; + int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + if(speed > 0) { + return (short) Math.ceil((base * Math.max(1F - 0.25F * speed, 0.25F))); } - - return (short) Math.ceil((base * Math.max(durationMod, 0.25F))); + return (short) base; } public int getPowerRequired() { - - int consumption = 0; - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_1) - consumption += 1000; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_2) - consumption += 2000; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_speed_3) - consumption += 3000; - } - - return (int) (demand + Math.min(consumption, 3000)); + int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + return (int) (demand + Math.min(speed * 1000, 3000)); } public float getCycleCount() { - - int cycles = 1; - - for(int i = 5; i <= 6; i++) { - - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_overdrive_1) - cycles += 2; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_overdrive_2) - cycles += 4; - if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_overdrive_3) - cycles += 6; - } - - return Math.min(cycles, 4); + int speed = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); + return Math.min(1 + speed * 2, 7); } public long getPowerScaled(int i) { @@ -388,4 +348,33 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrystallizer(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.EFFECT || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.turret_maxwell)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.EFFECT) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (level * 5) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_ACID, "+" + (level * 100 + 100) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.EFFECT) return 3; + if(type == UpgradeType.OVERDRIVE) return 2; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java index 01ba0af31..7e6b2c4cb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineEPress; import com.hbm.inventory.gui.GUIMachineEPress; @@ -8,7 +11,9 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemStamp; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; @@ -19,10 +24,11 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineEPress extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityMachineEPress extends TileEntityMachineBase implements IEnergyUser, IGUIProvider, IUpgradeInfoProvider { public long power = 0; public final static long maxPower = 50000; @@ -254,4 +260,23 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineEPress(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_epress)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (50 * level / 3) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 8757970f5..8626dcf6c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -279,12 +279,12 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electric_furnace_off)); if(type == UpgradeType.SPEED) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_SPEED, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); } if(type == UpgradeType.POWER) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_SPEED, "+" + (level * 10) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 10) + "%")); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index 5ea2a2cbd..ac3095dd3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -24,9 +24,11 @@ import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Compat; import com.hbm.util.EnumUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -50,11 +52,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IControlReceiver, IGUIProvider { +public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyUser, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public static final long maxPower = 1_000_000; public long power; @@ -839,4 +842,28 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level / 2 + 1)) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java index c139e15c5..e8f98a245 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineExposureChamber; import com.hbm.inventory.gui.GUIMachineExposureChamber; @@ -8,7 +11,10 @@ import com.hbm.inventory.recipes.ExposureChamberRecipes.ExposureChamberRecipe; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; @@ -17,14 +23,14 @@ import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineExposureChamber extends TileEntityMachineBase implements IGUIProvider, IEnergyUser { +public class TileEntityMachineExposureChamber extends TileEntityMachineBase implements IGUIProvider, IEnergyUser, IUpgradeInfoProvider { public long power; public static final long maxPower = 1_000_000; @@ -176,6 +182,52 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl return ExposureChamberRecipes.getRecipe(particle, ingredient); } + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + + //will only load new capsules if there's no cached particles, this should prevent clogging + + //accept items when the slots are already partially filled, i.e. applicable + if(i == 0 && slots[0] != null) return true; + if(i == 3 && slots[3] != null) return true; + + //if there's no particle stored, use the un-consumed capsule for reference + ItemStack particle = slots[1] != null ? slots[1] : slots[0]; + + //if no particle is loaded and an ingot is present + if(i == 0 && particle == null && slots[3] != null) { + ExposureChamberRecipe recipe = getRecipe(stack, slots[3]); + return recipe != null; + } + + //if a particle is loaded but no ingot present + if(i == 3 && particle != null && slots[3] == null) { + ExposureChamberRecipe recipe = getRecipe(slots[0], stack); + return recipe != null; + } + + //if there's nothing at all, find a reference recipe and see if the item matches anything + if(particle == null && slots[3] == null) { + + for(ExposureChamberRecipe recipe : ExposureChamberRecipes.recipes) { + if(i == 0 && recipe.particle.matchesRecipe(stack, true)) return true; + if(i == 3 && recipe.ingredient.matchesRecipe(stack, true)) return true; + } + } + + return false; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return i == 2 || i == 4; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] {0, 2, 3, 4}; + } + @Override public void serialize(ByteBuf buf) { buf.writeBoolean(this.isOn); @@ -246,4 +298,33 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineExposureChamber(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_exposure_chamber)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 50) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 50) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index 82076c1cf..d40bac866 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -23,7 +23,10 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.InventoryUtil; import api.hbm.block.IDrillInteraction; @@ -47,10 +50,11 @@ import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineMiningLaser extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IMiningDrill, IFluidStandardSender, IGUIProvider { +public class TileEntityMachineMiningLaser extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IMiningDrill, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider { public long power; public int age = 0; @@ -714,4 +718,40 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMiningLaser(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE || type == UpgradeType.EFFECT || type == UpgradeType.FORTUNE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level + 1)) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (100 * level / 16) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 * level / 16) + "%")); + } + if(type == UpgradeType.EFFECT) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_RANGE, "+" + (2 * level) + "m")); + } + if(type == UpgradeType.FORTUNE) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_FORTUNE, "+" + level)); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 12; + if(type == UpgradeType.POWER) return 12; + if(type == UpgradeType.EFFECT) return 12; + if(type == UpgradeType.FORTUNE) return 3; + if(type == UpgradeType.OVERDRIVE) return 9; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index 4f62b9aa8..ae5054b00 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMixer; @@ -12,7 +15,10 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; @@ -25,9 +31,10 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IControlReceiver, IGUIProvider, IEnergyUser, IFluidStandardTransceiver { +public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IControlReceiver, IGUIProvider, IEnergyUser, IFluidStandardTransceiver, IUpgradeInfoProvider { public long power; public static final long maxPower = 10_000; @@ -310,7 +317,34 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB @Override public void receiveControl(NBTTagCompound data) { - if(data.hasKey("toggle")) this.recipeIndex++; } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.OVERDRIVE) return 6; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index e1c3d08ba..414d273a4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -26,7 +26,9 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; @@ -43,10 +45,11 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 1_000_000; @@ -488,4 +491,24 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineTurbofan(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.AFTERBURN; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (int)(level * 100 * (1 + Math.min(level / 3D, 4D))) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.AFTERBURN) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java index 13fb8015b..06911f404 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.oil; import java.io.IOException; +import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; @@ -11,8 +12,12 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineOilWell; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.world.feature.OilSpot; @@ -22,6 +27,7 @@ import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class TileEntityMachineFrackingTower extends TileEntityOilDrillBase implements IFluidAcceptor { @@ -221,4 +227,23 @@ public class TileEntityMachineFrackingTower extends TileEntityOilDrillBase imple public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineOilWell(player.inventory, this); } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_fracking_tower)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 25) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 10) + "%")); + } + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_BURN, level * 10, level * 50)); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index b8f52817c..25d5f4029 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.oil; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; @@ -21,7 +22,9 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.DirPos; @@ -37,9 +40,10 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IControlReceiver, IGUIProvider { +public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 100000; @@ -307,4 +311,27 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineGasFlare(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.EFFECT; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_flare)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.EFFECT) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (100 * level / 3) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.EFFECT) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index edfeeff30..4aa306854 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.oil; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidStack; @@ -16,7 +17,10 @@ import com.hbm.inventory.recipes.LiquefactionRecipes; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; @@ -29,9 +33,10 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardSender, IGUIProvider { +public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 100000; @@ -296,4 +301,28 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUILiquefactor(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java index 3e0c19f8b..798d41873 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.oil; import java.io.IOException; +import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; @@ -9,8 +10,12 @@ import com.hbm.explosion.ExplosionLarge; import com.hbm.inventory.container.ContainerMachineOilWell; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.gui.GUIMachineOilWell; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; @@ -21,6 +26,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; @@ -174,4 +180,23 @@ public class TileEntityMachineOilWell extends TileEntityOilDrillBase { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineOilWell(player.inventory, this); } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_well)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 25) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 10) + "%")); + } + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_BURN, level * 10, level * 50)); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java index fb2a78c4f..dd11a3431 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.oil; import java.io.IOException; +import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; @@ -9,7 +10,11 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.container.ContainerMachineOilWell; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.gui.GUIMachineOilWell; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; @@ -21,6 +26,7 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.oredict.OreDictionary; @@ -224,4 +230,23 @@ public class TileEntityMachinePumpjack extends TileEntityOilDrillBase { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineOilWell(player.inventory, this); } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_pumpjack)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 25) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 10) + "%")); + } + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_BURN, level * 10, level * 50)); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index c40e904ca..2846293e3 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -1,5 +1,8 @@ package com.hbm.tileentity.machine.oil; +import java.util.List; + +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerSolidifier; @@ -11,7 +14,9 @@ import com.hbm.inventory.recipes.SolidificationRecipes; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; @@ -25,9 +30,10 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { +public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { public long power; public static final long maxPower = 100000; @@ -270,4 +276,28 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUISolidifier(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java index 11d36657f..4c785a486 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java @@ -17,6 +17,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; +import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.BobMathUtil; import com.hbm.util.Tuple; @@ -34,7 +35,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider { +public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider, IUpgradeInfoProvider { public int indicator = 0; @@ -382,4 +383,18 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE || type == UpgradeType.AFTERBURN; + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 3; + if(type == UpgradeType.POWER) return 3; + if(type == UpgradeType.AFTERBURN) return 3; + if(type == UpgradeType.OVERDRIVE) return 3; + return 0; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java index ea00c1637..91dc3e9ab 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java @@ -3,13 +3,18 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.gui.GUITurretMaxwell; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.util.BobMathUtil; import com.hbm.util.EntityDamageUtil; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -21,10 +26,11 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT { +public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements IUpgradeInfoProvider { @Override public String getName() { @@ -64,6 +70,41 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT { return ammoStacks; } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.EFFECT || type == UpgradeType.POWER || type == UpgradeType.AFTERBURN || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.turret_maxwell)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + "Damage +0." + (level * 25) + "/t"); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 3) + "%")); + } + if(type == UpgradeType.EFFECT) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_RANGE, "+" + (level * 3) + "m")); + } + if(type == UpgradeType.AFTERBURN) { + info.add(EnumChatFormatting.GREEN + "Afterburn +3s"); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public int getMaxLevel(UpgradeType type) { + if(type == UpgradeType.SPEED) return 27; + if(type == UpgradeType.POWER) return 27; + if(type == UpgradeType.EFFECT) return 27; + if(type == UpgradeType.AFTERBURN) return 27; + if(type == UpgradeType.OVERDRIVE) return 27; + return 0; + } @Override public double getAcceptableInaccuracy() { diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java index 3f02d6cf0..e69db5214 100644 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java +++ b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java @@ -50,12 +50,19 @@ public class TestDungeonRoom8 extends CellularDungeonRoom { int r = world.rand.nextInt(10); - if(r == 0) + if(r == 0) { ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, new ItemStack(ModItems.book_of_)); - else if(r < 4) - ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, generateBook(world)); - else - ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, new ItemStack(Items.book)); + } else if(r < 4) { + TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2); + safe.setInventorySlotContents(5, generateBook(world)); + safe.setInventorySlotContents(7, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); + safe.setInventorySlotContents(9, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); + } else { + TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2); + safe.setInventorySlotContents(5, new ItemStack(Items.book)); + safe.setInventorySlotContents(7, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); + safe.setInventorySlotContents(9, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); + } } break; } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 8edc158e4..34cd14145 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -315,6 +315,7 @@ container.droneProvider=Anbieter container.droneRequester=Abnehmer container.electricFurnace=Elektrischer Ofen container.epress=Hydraulische Presse +container.exposureChamber=Bestrahlungskammer container.factoryAdvanced=Fortgeschrittene Fabrik container.factoryTitanium=Einfache Fabrik container.fluidtank=Tank @@ -2608,6 +2609,14 @@ item.padlock_unbreakable.name=Unzerstörbares Vorhängeschloss item.pads_rubber.name=Gummischuhsohlen item.pads_slime.name=Schleimschuhsohlen item.pads_static.name=Statische Schuhsolen +item.page_of_.page1.name=Seite 1 +item.page_of_.page2.name=Seite 2 +item.page_of_.page3.name=Seite 3 +item.page_of_.page4.name=Seite 4 +item.page_of_.page5.name=Seite 5 +item.page_of_.page6.name=Seite 6 +item.page_of_.page7.name=Seite 7 +item.page_of_.page8.name=Seite 8 item.pancake.name=Pfannkuchen aus Altmetall, Nägeln und Edelsteinpulver item.part_beryllium.name=Berylliumstaubkiste item.part_carbon.name=Kohlenstoffstaubkiste @@ -3158,6 +3167,14 @@ item.stamp_357.name=.357 Magnum-Stempel item.stamp_44.name=.44 Magnum-Stempel item.stamp_50.name=Großkaliberstempel item.stamp_9.name=Kleinkaliberstempel +item.stamp_book.printing1.name=Druckpressstempel (Teil 1) +item.stamp_book.printing2.name=Druckpressstempel (Teil 2) +item.stamp_book.printing3.name=Druckpressstempel (Teil 3) +item.stamp_book.printing4.name=Druckpressstempel (Teil 4) +item.stamp_book.printing5.name=Druckpressstempel (Teil 5) +item.stamp_book.printing6.name=Druckpressstempel (Teil 6) +item.stamp_book.printing7.name=Druckpressstempel (Teil 7) +item.stamp_book.printing8.name=Druckpressstempel (Teil 8) item.stamp_desh_circuit.name=Schaltkreisstempel (Desh) item.stamp_desh_flat.name=Flacher Stempe (Desh) item.stamp_desh_plate.name=Plattenstempel (Desh) @@ -4096,6 +4113,7 @@ tile.machine_electric_furnace_off.name=Elektrischer Ofen tile.machine_electric_furnace_on.name=Elektrischer Ofen tile.machine_electrolyser.name=Electrolysegerät tile.machine_epress.name=Hydraulische Presse +tile.machine_exposure_chamber.name=Bestrahlungskammer tile.machine_excavator.name=Großer Minenbohrer tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 5d2ef5a8d..a1282dcae 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -672,6 +672,7 @@ container.droneProvider=Provider container.droneRequester=Requester container.electricFurnace=Electric Furnace container.epress=Electric Press +container.exposureChamber=Exposure Chamber container.factoryAdvanced=Advanced Factory container.factoryTitanium=Basic Factory container.fluidtank=Tank @@ -3363,6 +3364,14 @@ item.padlock_unbreakable.name=Unbreakable Padlock item.pads_rubber.name=Rubber Pads item.pads_slime.name=Slime Pads item.pads_static.name=Static Pads +item.page_of_.page1.name=Page 1 +item.page_of_.page2.name=Page 2 +item.page_of_.page3.name=Page 3 +item.page_of_.page4.name=Page 4 +item.page_of_.page5.name=Page 5 +item.page_of_.page6.name=Page 6 +item.page_of_.page7.name=Page 7 +item.page_of_.page8.name=Page 8 item.pancake.name=Pancake made from Scrap Metal, Nails and Gem Dust item.part_beryllium.name=Box of Beryllium Dust item.part_carbon.name=Box of Carbon Dust @@ -4070,6 +4079,14 @@ item.stamp_357.name=.357 Magnum Stamp item.stamp_44.name=.44 Magnum Stamp item.stamp_50.name=Large Caliber Stamp item.stamp_9.name=Small Caliber Stamp +item.stamp_book.printing1.name=Printing Press Stamp (Part 1) +item.stamp_book.printing2.name=Printing Press Stamp (Part 2) +item.stamp_book.printing3.name=Printing Press Stamp (Part 3) +item.stamp_book.printing4.name=Printing Press Stamp (Part 4) +item.stamp_book.printing5.name=Printing Press Stamp (Part 5) +item.stamp_book.printing6.name=Printing Press Stamp (Part 6) +item.stamp_book.printing7.name=Printing Press Stamp (Part 7) +item.stamp_book.printing8.name=Printing Press Stamp (Part 8) item.stamp_desh_circuit.name=Circuit Stamp (Desh) item.stamp_desh_flat.name=Flat Stamp (Desh) item.stamp_desh_plate.name=Plate Stamp (Desh) @@ -5082,6 +5099,7 @@ tile.machine_electric_furnace_on.name=Electric Furnace tile.machine_electrolyser.name=Electrolysis Machine tile.machine_epress.name=Electric Press tile.machine_excavator.name=Large Mining Drill +tile.machine_exposure_chamber.name=Exposure Chamber tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU tile.machine_flare.name=Flare Stack @@ -5619,8 +5637,13 @@ turret.off=OFF turret.on=ON turret.players=Target Players: %s +upgrade.acid=Acid required %s +upgrade.burn=Burn %smb/t for %sHE upgrade.consumption=Consumption %s -upgrade.speed=Process time %s +upgrade.delay=Process time %s +upgrade.efficiency=Efficiency %s +upgrade.fortune=Fortune %s +upgrade.range=Range %s upgrade.gui.title=§lAcceptable Upgrades:§r upgrade.gui.afterburner= * §dAfterburner§r: Stacks to level %s diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png index d8c0c47d7474161083024bf2967eecd3e8517b7d..23345a9ea862b7dff76c7ff706e993f900a6f6d7 100644 GIT binary patch delta 282 zcmV+#0puK5G=Ka_L_t(IjlGjGiiI#3gvVuTAwQ%NK}aEK#S>`jEpi60@NVH5 zY;5%e;td4BGVlkyKwh=5`{LqTgq`xw@WIRw;HIMA9v+W}cg}&C!OZCU{?z+>F=!OU2e z1!41rZ_7b69I3ga8qNnX&JC00<&$>(@Yo8>EkK@=!QRLrVp=p``TvgTIR(Or@Rpce$ g-&eT(nQrR|8WaAPVRFj-9RL6T07*qoM6N<$f(DL&kpKVy delta 262 zcmV+h0r~#L0-G=J$yL_t(Ijm?ljYK1TqMNgaJ{0A}=ge*W1*W)A;H{cdrgA*ri zz!kUy$<##%PjDzmI_jsbDgO@&?S)Kk?t95S@Yj0z>7s4hux%S6f`~AVV>J5~Gn=Lf zT5Gh{SZe{;_dQJ0bXoHH-Ehu@+wBH`F$QA{07X$ymSuRjz<*lHwrv2c>&m*WhzQ<$ z(lmXpg0&VA;WL9Q%Mg)EHVUTex?qgCzy7hP@B7CL0ES_>c;5S1^!fwmTv(QcBuO}q zgY!J^M=8ZT&tGPu5MxqGMIlBjR8@8H@;ra80{jBRx~?z5*zo_*JN~70H8(%3-2eap M07*qoM6N<$f~f&~cK`qY diff --git a/src/main/resources/assets/hbm/textures/items/page_of_.png b/src/main/resources/assets/hbm/textures/items/page_of_.png new file mode 100644 index 0000000000000000000000000000000000000000..c1fef7b72c434d732cc76c4dfcd95d9a19c4344f GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfqhV^M;AXzP>IYVpEC~^Wo!j zC9*OfGYJYhw>^2Hwd1V8w=TDOtDOrLB$##GPfpsDAtZzU!GkCiCxvX8eX-^8?a)< zL!`EA6QoosZNb;~obO}d7noVh$S*&>N`MRiunf$V9ziLU7K&LyCJ`NVhX|$~L<)Wy zJFkEG86t=XX7d4eBYLNYU?yZVM3g)`=;Mh{U zkSL{A7MI^abP%DnhF1$vLsbwpiowmz3wjUQ)XxA@#GKpPH@tm&M+6K->8+!a%owMR zl0=)xOqR*V)fJ|JWy3tc{Nqk;~!Ig|oJ0+RPX1n7!HmU@h?Uvb- zIS+q7AR?&1zh91cF+vnKgEmcwD#P4JgcsLq?(es(S1Uvv%-C%RkX+xaaWi@gGQo>8jg7|-AMu`n7XuNdsbeO5czoc~r%FVU8EiK@ zlJk`!LPn=li9ov2z+55zrG-4FC}%1CAYBGKdzW2_7kB8C3}$D~c~ TZX5N{00000NkvXXu0mjfAo(yb literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png b/src/main/resources/assets/hbm/textures/models/machines/exposure_chamber.png index 658fb024b1d57bd2e1e39110a54e026912e434fb..36fefae3ba699e5c6bc67b7988b53f19cedb6496 100644 GIT binary patch literal 6848 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 literal 6849 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 From 94484fe91eade9c2ebe1cf48102cf3c8fb52be68 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 10 Dec 2023 20:12:36 +0100 Subject: [PATCH 172/207] missing recipe --- changelog | 2 +- gradle.properties | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/CraftingManager.java | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/changelog b/changelog index 57b1ddfe2..b9026f9bd 100644 --- a/changelog +++ b/changelog @@ -14,7 +14,7 @@ * A cheap tier 1 missile that shows up on radar screens as tier 4 (eg. nuclear) missiles * Printing press stamps * 8 different stamps for printing certain pages - * If a meteor dungeon safe is generated without a black book inside, it will generate tow random stamps instead + * If a meteor dungeon safe is generated without a black book inside, it will generate two random stamps instead * With all 8 stamps, allows you to print your own black book ## Changed diff --git a/gradle.properties b/gradle.properties index 64187a8b7..a04cdb5cc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4795 +mod_build_number=4809 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 5f353ffa1..8803032ed 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4795)"; + public static final String VERSION = "1.0.27 BETA (4809)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index a9ced44fa..9203ee542 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -22,6 +22,7 @@ import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo50BMG; import com.hbm.items.ItemAmmoEnums.Ammo5mm; import com.hbm.items.ItemEnums.EnumLegendaryType; +import com.hbm.items.ItemEnums.EnumPages; import com.hbm.items.ItemEnums.EnumPlantType; import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.food.ItemConserve.EnumFoodType; @@ -1053,6 +1054,8 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.bdcl), new Object[] { ANY_TAR.any(), Fluids.WATER.getDict(1_000), KEY_WHITE }); + addShapelessAuto(new ItemStack(ModItems.book_of_), new Object[] { DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE1), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE2), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE3), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE4), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE5), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE6), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE7), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE8), ModItems.egg_balefire }); + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) { addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() }); From c11dda67adc57e1d85415ab88ee9877d8eb54323 Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Sun, 10 Dec 2023 22:28:06 +0300 Subject: [PATCH 173/207] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 52 ++++++++++++++++--- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 1a1d85a8d..502127659 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -548,12 +548,6 @@ desc.gui.gasCent.output=§6Перемещение жидкоÑти§r$Жидко desc.gui.assembler.warning=§cОшибка:§r ТребуетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½ Ñборочной машины! desc.gui.chemplant.warning=§cОшибка:§r ТребуетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½ химичеÑкой машины! desc.gui.template=§9Шаблоны§r$Шаблоны могут быть Ñделаны$в Папке шаблонов машин. -desc.gui.upgrade=§lПринимаемые улучшениÑ:§r -desc.gui.upgrade.afterburner= * §dФорÑаж§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней -desc.gui.upgrade.effectiveness= * §aЭффективноÑть§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней -desc.gui.upgrade.overdrive= * §7Перегруз§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней -desc.gui.upgrade.power= * §1ЭнергоÑбережение§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней -desc.gui.upgrade.speed= * §4СкороÑть§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней desc.gui.nukeBoy.desc=§1Требует:§r$ * Ðейтронный щит$ * СнарÑд U235$ * СубкритичеÑÐºÐ°Ñ Ñ†ÐµÐ»ÑŒ U235$ * Взрывчатка$ * ВоÑпламенитель desc.gui.nukeGadget.desc=§1Требует:§r$ * 4 Ðабора взрывоопаÑных линз$ Первого поколениÑ$ * Плутониевое Ñдро$ * Провода desc.gui.nukeMan.desc=§1Требует:§r$ * 4 Ðабора взрывоопаÑных линз$ Первого поколениÑ$ * Плутониевое Ñдро$ * ВоÑпламенитель @@ -1458,6 +1452,21 @@ radar.target.tier2=Ракета 2-го ÑƒÑ€Ð¾Ð²Ð½Ñ radar.target.tier3=Ракета 3-го ÑƒÑ€Ð¾Ð²Ð½Ñ radar.target.tier4=Ракета 4-го ÑƒÑ€Ð¾Ð²Ð½Ñ +upgrade.acid=ТребуетÑÑ ÐºÐ¸Ñлота %s +upgrade.burn=Burn %sмб/тик за %sHE +upgrade.consumption=Потребление %s +upgrade.delay=Ð’Ñ€ÐµÐ¼Ñ %s +upgrade.efficiency=ЭффективноÑть %s +upgrade.fortune=Удача %s +upgrade.range=Ð Ð°Ð´Ð¸ÑƒÑ %s + +upgrade.gui.title=§lПринимаемые улучшениÑ:§r +upgrade.gui.afterburner= * §dФорÑаж§r: СтакаетÑÑ Ð´Ð¾ %s уровней +upgrade.gui.effectiveness= * §aЭффективноÑть§r: СтакаетÑÑ Ð´Ð¾ %s уровней +upgrade.gui.overdrive= * §7Перегруз§r: СтакаетÑÑ Ð´Ð¾ %s уровней +upgrade.gui.power= * §9ЭнергоÑбережение§r: СтакаетÑÑ Ð´Ð¾ %s уровней +upgrade.gui.speed= * §4СкороÑть§r: СтакаетÑÑ Ð´Ð¾ %s уровней + chem.TEST=ТеÑÑ‚ chem.FP_HEAVYOIL=Переработка Ñ‚Ñжелой нефти chem.FP_SMEAR=Переработка промышленного маÑла @@ -1748,6 +1757,7 @@ tile.emp_bomb.name=ЭМИ-бомба tile.crashed_bomb.name=ÐеразорвавшаÑÑÑ Ð±Ð¾Ð¼Ð±Ð° tile.boxcar.name=Грузовой вагон tile.boat.name=Лодка +item.boat_rubber.name=Ð ÐµÐ·Ð¸Ð½Ð¾Ð²Ð°Ñ Ð»Ð¾Ð´ÐºÐ° tile.bomber.name=РазбившийÑÑ Ð±Ð¾Ð¼Ð±Ð°Ñ€Ð´Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸Ðº tile.pink_log.name=Розовое дерево @@ -1765,6 +1775,8 @@ tile.turret_cwis.name=â€Ð¤ÑленкцMk-15 CIWS tile.turret_cheapo.name=Ð”ÐµÑˆÑ‘Ð²Ð°Ñ Ð¿ÑƒÐ»ÐµÐ¼Ñ‘Ñ‚Ð½Ð°Ñ Ñ‚ÑƒÑ€ÐµÐ»ÑŒ tile.machine_radar.name=Радар container.radar=Радар +item.radar_linker.name=Радарный Ñоединитель +tile.radar_screen.name=Экран радара tile.machine_forcefield.name=Излучатель Ñилового Ð¿Ð¾Ð»Ñ container.forceField=Излучатель Ñилового Ð¿Ð¾Ð»Ñ tile.machine_satlinker.name=Менеджер ID Ñпутников @@ -2371,6 +2383,8 @@ tile.hadron_plating_striped.name=Обшивка уÑÐºÐ¾Ñ€Ð¸Ñ‚ÐµÐ»Ñ Ñ‡Ð°Ñти tile.hadron_plating_voltz.name=Обшивка уÑÐºÐ¾Ñ€Ð¸Ñ‚ÐµÐ»Ñ Ñ‡Ð°Ñтиц (ВОЛЬТЗ) tile.hadron_plating_yellow.name=Обшивка уÑÐºÐ¾Ñ€Ð¸Ñ‚ÐµÐ»Ñ Ñ‡Ð°Ñтиц (Жёлтый) tile.field_disturber.name=Подавитель выÑокоÑнергитичеÑких полей +container.exposureChamber=Камера Ð¾Ð±Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ‡Ð°Ñтицами +tile.machine_exposure_chamber.name=Камера Ð¾Ð±Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ‡Ð°Ñтицами tile.barrel_plastic.name=БезопаÑный бочонок™ tile.barrel_corroded.name=ÐŸÑ€Ð¾Ñ€Ð¶Ð°Ð²ÐµÐ²ÑˆÐ°Ñ Ð±Ð¾Ñ‡ÐºÐ° @@ -3413,6 +3427,13 @@ tile.sliding_blast_door.name=Ð Ð°Ð·Ð´Ð²Ð¸Ð¶Ð½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ item.sliding_blast_door_skin.0.name=Скин раздвижной двери: Обычный item.sliding_blast_door_skin.1.name=Скин раздвижной двери: Вариант 1 item.sliding_blast_door_skin.2.name=Скин раздвижной двери: Вариант 2 +tile.large_vehicle_door.name=Дверь Ð´Ð»Ñ ÐºÑ€ÑƒÐ¿Ð½Ð¾Ð³Ð°Ð±Ð°Ñ€Ð¸Ñ‚Ð½Ñ‹Ñ… автомобилей +tile.water_door.name=ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ +tile.qe_containment.name=QE Дверь биологичеÑкого ÑÐ´ÐµÑ€Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ +tile.qe_sliding_door.name=QE Ð Ð°Ð·Ð´Ð²Ð¸Ð¶Ð½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ +tile.round_airlock_door.name=Круглый шлюз +tile.secure_access_door.name=Дверь Ñ Ð¸Ð·Ð¾Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ доÑтупом +tile.sliding_seal_door.name=Ð Ð°Ð·Ð´Ð²Ð¸Ð¶Ð½Ð°Ñ Ð³ÐµÑ€Ð¼ÐµÑ‚Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ item.nugget_uranium.name=Урановый Ñамородок item.nugget_plutonium.name=Плутониевый Ñамородок @@ -4760,6 +4781,7 @@ entity.entity_tesla_crab.name=ТеÑлакраб entity.entity_taint_crab.name=Заражённый порчей теÑлакраб entity.entity_elder_one.name=КрÑÐºÐ¾Ñ Ð¡Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹ entity.entity_ntm_fbi.name=Ðгент ФБР +entity.entity_ntm_fbi_drone.name=Дрон ФБР entity.entity_ntm_radiation_blaze.name=Элементаль РаÑÐ¿Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ entity.entity_glyphid.name=Глифид entity.entity_glyphid_behemoth.name=Глифид-Ñтраж @@ -4911,6 +4933,7 @@ item.designator_arty_range.name=ÐртиллерийÑкий целеуказа item.missile_assembly.name=Сборка малой ракеты item.assembly_nuke.name=Оболочка Ñдерного минизарÑда item.missile_generic.name=ФугаÑÐ½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° +item.missile_decoy.name=Ракета-приманка item.missile_anti_ballistic.name=ÐнтибаллиÑтичеÑÐºÐ°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° item.missile_incendiary.name=Ð—Ð°Ð¶Ð¸Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° item.missile_cluster.name=КлаÑÑ‚ÐµÑ€Ð½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° @@ -5662,6 +5685,15 @@ item.stamp_desh_44.name=Штамп пули .44 Магнум (Деш) item.stamp_desh_50.name=Штамп большого калибра (Деш) item.stamp_desh_9.name=Штамп малого калибра (Деш) +item.stamp_book.printing1.name=Штамп Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ (Страница 1) +item.stamp_book.printing2.name=Штамп Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ (Страница 2) +item.stamp_book.printing3.name=Штамп Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ (Страница 3) +item.stamp_book.printing4.name=Штамп Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ (Страница 4) +item.stamp_book.printing5.name=Штамп Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ (Страница 5) +item.stamp_book.printing6.name=Штамп Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ (Страница 6) +item.stamp_book.printing7.name=Штамп Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ (Страница 7) +item.stamp_book.printing8.name=Штамп Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ (Страница 8) + item.part_lithium.name=Коробка литиевой пыли item.part_beryllium.name=Коробка бериллиевой пыли item.part_carbon.name=Коробка угольной пыли @@ -5794,6 +5826,14 @@ item.shackles.name=Оковы item.glitch.name=Глюк item.book_secret.name=3-596-50802-9 item.book_of_.name=Книга Вагонов +item.page_of_.page1.name=Страница 1 +item.page_of_.page2.name=Страница 2 +item.page_of_.page3.name=Страница 3 +item.page_of_.page4.name=Страница 4 +item.page_of_.page5.name=Страница 5 +item.page_of_.page6.name=Страница 6 +item.page_of_.page7.name=Страница 7 +item.page_of_.page8.name=Страница 8 item.book_guide.name=РуководÑтво item.burnt_bark.name=ÐžÐ±Ð¾Ð¶Ð¶ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ñ€Ð° item.burnt_bark.desc=КуÑок коры взорванного золотого дуба. From b6345644ed79c97a2d86e75b9a04879129ae4199 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 30 Nov 2023 14:18:03 -0600 Subject: [PATCH 174/207] shit shit shit shit shit shit --- changelog | 21 +------------------ .../tileentity/machine/TileEntityChungus.java | 1 + 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/changelog b/changelog index 596d87512..441e8123c 100644 --- a/changelog +++ b/changelog @@ -2,30 +2,11 @@ * Doors! * Your favorites from 1.12, the 7 remaining doors have finally been ported * Thanks to KoblizekXD for biting the bullet -* Rubber boat - * Made from latex or synthetic rubber - * A much less jankier alternative to the vanilla boat. Rotations are silky smooth and done via the strafe keys instead of based on the player's orientation - * Won't break from ramming into blocks - * Faster than a regular boat, but will decelerate quicker when there's nobody sitting in it, preventing the boat from drifting off too far when empty ## Changed * Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high * Custom missiles are now launchable using the radar * NTM's structures should no longer spawn in dimensions besides the overworld. Ores will still generate, assuming the config option is set. -* Decreased M1tty's radiation resistance - * It's really damn cheap, what did you expect -* M1tty's helmet now acts like a protective mask -* Most non-custom missiles except tier 0s are now assembled in the arc welder - * Crafting complexity has been reduced, the recipes only need the three major components without any extra loose plates -* Non-custom missiles have been slightly buffed - * Explosions are now slightly larger and they use the new cross-detection entity damage code which still affects entities behind small hills that would otherwise be shielded - * Explosions now have a 2x larger entity damage radius ## Fixed -* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate -* Fixed RBMK heat exchangers being able to use heatable fluids that don't have heat exchanger efficiency defined like liquid sodium, heavy water and thorium salt -* Fixed RBMK heat exchangers not using the heat exchanger efficiency variable to determine cooling power -* Fixed the ballistic gauntlet spawning a client-side ghost bullet that doesn't move or despawn -* Fixed bug where different custom machine cores would merge in a stack when picked up, turning them into the same type -* Fixed radar screen blips being visible through the back of the model -* Fixed desh crate's last half of slots preventing radiation entirely \ No newline at end of file +* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index d1a9abd64..2a2e761db 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -36,6 +36,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent { public long power; From 9448d51e02006c64ec7f0bdedc9620a4d11b57be Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 10 Dec 2023 21:15:53 +0100 Subject: [PATCH 175/207] fuck you --- CONTRIBUTING.md | 2 ++ changelog | 1 + gradle.properties | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../tileentity/machine/TileEntityMachineCrystallizer.java | 2 +- .../hbm/tileentity/machine/TileEntityMachineExcavator.java | 2 +- .../tileentity/machine/TileEntityMachineMiningLaser.java | 2 +- .../com/hbm/tileentity/machine/TileEntityMachineMixer.java | 2 +- .../hbm/tileentity/machine/TileEntityMachineTurbofan.java | 2 +- .../machine/oil/TileEntityMachineLiquefactor.java | 2 +- .../machine/oil/TileEntityMachineSolidifier.java | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 7 +++++++ 12 files changed, 19 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9d02a90df..34e1e5ca9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,6 +18,8 @@ Things you should also avoid include: This should go without saying, but please don't PR code that was never actually tested or has obvious compiler errors in it. +**Addendum:** Because apparently some people think that testing is somehow optional, it is now **mandatory** to test the code both on a client and on a server. If the PR contains compat code, the game has to work **with and without** the mod that the compat is for. + ## Communication If you're planning on adding some new thing or doing a grand change, it's best to ask whether that's a good idea before spending 50 hours on a project that won't end up getting merged, due to issues that could have been entirely avoidable with communication. diff --git a/changelog b/changelog index b9026f9bd..902ab1ad0 100644 --- a/changelog +++ b/changelog @@ -18,6 +18,7 @@ * With all 8 stamps, allows you to print your own black book ## Changed +* Updated russian localization * Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high * Custom missiles are now launchable using the radar * NTM's structures should no longer spawn in dimensions besides the overworld. Ores will still generate, assuming the config option is set. diff --git a/gradle.properties b/gradle.properties index a04cdb5cc..f4e7c2b0a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4809 +mod_build_number=4809H1 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 8803032ed..da9765623 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4809)"; + public static final String VERSION = "1.0.27 BETA (4809H1)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 18acf6556..d91e8f629 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -356,7 +356,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.turret_maxwell)); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_crystallizer)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index ac3095dd3..87ba3eb7f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -850,7 +850,7 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_excavator)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level / 2 + 1)) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index d40bac866..89bfd1028 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -726,7 +726,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_mining_laser)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level + 1)) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (100 * level / 16) + "%")); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index ae5054b00..ffd1deccb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -327,7 +327,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_mixer)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 414d273a4..4c7e068b3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -499,7 +499,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_turbofan)); if(type == UpgradeType.AFTERBURN) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (int)(level * 100 * (1 + Math.min(level / 3D, 4D))) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index 4aa306854..9516a6dcf 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -309,7 +309,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_liquefactor)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index 2846293e3..1677a5321 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -284,7 +284,7 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_assembler)); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_solidifier)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index a1282dcae..db2b9677f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5680,3 +5680,10 @@ weapon.elecGun.glass_cannon.visible=Visible Light weapon.elecGun.glass_cannon.uv=Ultraviolet Light weapon.elecGun.glass_cannon.xray=X-rays weapon.elecGun.glass_cannon.gamma=Gamma rays + +desc.gui.upgrade=§lAcceptable Upgrades:§r +desc.gui.upgrade.afterburner= * §dAfterburner§r: Stacks to level 3 +desc.gui.upgrade.effectiveness= * §aEffectiveness§r: Stacks to level 3 +desc.gui.upgrade.overdrive= * §7Overdrive§r: Stacks to level 3 +desc.gui.upgrade.power= * §1Power-Saving§r: Stacks to level 3 +desc.gui.upgrade.speed= * §4Speed§r: Stacks to level 3 From 4a72e201cf95c9ac50d46a35da981881776d4fb2 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Mon, 11 Dec 2023 18:58:34 -0500 Subject: [PATCH 176/207] removed unused lang, removed No_Disperse --- .../hbm/inventory/FluidContainerRegistry.java | 7 +++-- .../com/hbm/inventory/fluid/FluidType.java | 2 +- .../java/com/hbm/inventory/fluid/Fluids.java | 5 ++-- .../hbm/inventory/fluid/trait/FluidTrait.java | 1 - .../fluid/trait/FluidTraitSimple.java | 6 +--- src/main/resources/assets/hbm/lang/en_US.lang | 29 ++++--------------- 6 files changed, 14 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java index ce44b7eb3..5033ee2a4 100644 --- a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java +++ b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java @@ -68,9 +68,12 @@ public class FluidContainerRegistry { if(type.getContainer(CD_Gastank.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.gas_full, 1, id), new ItemStack(ModItems.gas_empty), type, 1000)); if(type.hasNoContainer()) continue; + + if(type.isDispersable()){ + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.disperser_canister, 1 , i), new ItemStack(ModItems.disperser_canister_empty), Fluids.fromID(i), 2000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.glyphid_gland, 1 , i), new ItemStack(ModItems.glyphid_gland_empty), Fluids.fromID(i), 4000)); + } - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.disperser_canister, 1 , i), new ItemStack(ModItems.disperser_canister_empty), Fluids.fromID(i), 2000)); - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.glyphid_gland, 1 , i), new ItemStack(ModItems.glyphid_gland_empty), Fluids.fromID(i), 4000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_lead_full, 1, id), new ItemStack(ModItems.fluid_tank_lead_empty), type, 1000)); if(type.needsLeadContainer()) continue; diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index 853a8d2d1..728c0bad2 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -172,7 +172,7 @@ public class FluidType { return this.traits.containsKey(FT_LeadContainer.class); } public boolean isDispersable() { - return !(this.traits.containsKey(FT_NoDispersable.class)); + return !(this.traits.containsKey(FT_Amat.class) || this.traits.containsKey(FT_NoContainer.class) || this.traits.containsKey(FT_Viscous.class)); } /** diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 61768d294..4c83847b2 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -186,7 +186,6 @@ public class Fluids { public static final FT_Delicious DELICIOUS = new FT_Delicious(); public static final FT_Leaded LEADED = new FT_Leaded(); - public static final FT_NoDispersable NO_DISPERSE= new FT_NoDispersable(); public static void init() { // ##### ##### ##### ##### ## # ##### # # ##### ## # ##### @@ -235,8 +234,8 @@ public class Fluids { PUF6 = new FluidType("PUF6", 0x4C4C4C, 4, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.1F), new FT_Corrosive(15), GASEOUS); SAS3 = new FluidType("SAS3", 0x4ffffc, 5, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(30), LIQUID); SCHRABIDIC = new FluidType("SCHRABIDIC", 0x006B6B, 5, 0, 5, EnumSymbol.ACID).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(75), new FT_Poison(true, 2), LIQUID); - AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS, NO_DISPERSE); - ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS, NO_DISPERSE); + AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); + ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); ACID = new FluidType("ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID); WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), new FT_VentRadiation(0.1F), LIQUID, VISCOUS); CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID, VISCOUS); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java index dd25601c7..de7ddc591 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java @@ -36,7 +36,6 @@ public abstract class FluidTrait { traitNameMap.put("delicious", FT_Delicious.class); traitNameMap.put("leaded", FT_Leaded.class); traitNameMap.put("pheromone", FT_Pheromone.class); - traitNameMap.put("nodisperse", FT_NoDispersable.class); traitNameMap.put("noid", FT_NoID.class); traitNameMap.put("nocontainer", FT_NoContainer.class); } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java index 27628d32a..f62cd456e 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java @@ -49,11 +49,7 @@ public class FluidTraitSimple { info.add(EnumChatFormatting.DARK_RED + "[Requires hazardous material tank to hold]"); } } - public static class FT_NoDispersable extends FluidTrait { - @Override public void addInfo(List info) { - info.add(EnumChatFormatting.DARK_RED + "[Cannot be thrown from Disperser Canister]"); - } - } + public static class FT_Delicious extends FluidTrait { @Override public void addInfoHidden(List info) { info.add(EnumChatFormatting.DARK_GREEN + "[Delicious]"); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c09e495eb..033f2cf5a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -847,7 +847,6 @@ death.attack.mku=%1$s died from unknown causes. death.attack.monoxide=%1$s forgot to change the batteries in their carbon monoxide detector. death.attack.mudPoisoning=%1$s died in poisonous mud. death.attack.nuclearBlast=%1$s was blown away by a nuclear explosion. -death.attack.nitan=%1$s was consumed by taint. death.attack.overdose=%1$s overdosed and asphyxiated. death.attack.pc=%1$s was reduced to a puddle in the pink cloud. death.attack.plasma=%1$s was immolated by %2$s. @@ -953,7 +952,6 @@ desc.item.ammo.pro_explosive=+ Explosive desc.item.ammo.pro_fallout=+ Fallout desc.item.ammo.pro_fit_357=+ Fits every .357 model desc.item.ammo.pro_flames=+ Increased flame count -desc.item.ammo.pro_flash=+ ow my eyes desc.item.ammo.pro_gravity=+ Decreased gravity desc.item.ammo.pro_heavy_damage=+ Highly increased damage desc.item.ammo.pro_incendiary=+ Incendiary @@ -1121,7 +1119,6 @@ gun.make.MANN=Open Mann Co. gun.make.MAXIM=Hiram Maxim gun.make.METRO=Metro Gunsmiths gun.make.MWT=MWT Prototype Labs -gun.make.MORITA=Morita Company gun.make.NAWS=Kayarm Industries gun.make.ERFURT=Erfurter Maschinenfabrik Geipel gun.make.NONE=- @@ -1361,6 +1358,8 @@ hbmfluid.pain=Pandemonium(III)tantalite Solution hbmfluid.petroil=Petroil hbmfluid.petroil_leaded=Leaded Petroil hbmfluid.petroleum=Petroleum Gas +hbmfluid.pheromone=Booster Pheromone +hbmfluid.pheromone_m=Modified Booster Pheromone hbmfluid.phosgene=Phosgene hbmfluid.plasma_bf=Balefire Plasma hbmfluid.plasma_dh3=Deuterium-Helium-3 Plasma @@ -1408,9 +1407,8 @@ hbmfluid.woodoil=Wood Oil hbmfluid.xenon=Xenon Gas hbmfluid.xpjuice=Experience Juice hbmfluid.xylene=BTX -hbmfluid.caulk=Quick-Hardening Caulk -hbmfluid.pheromone=Booster Pheromone -hbmfluid.pheromone_m=Modified Booster Pheromone + + hbmpseudofluid.none=Empty hbmpseudofluid.heuf6=Highly Enriched UF6 @@ -1588,9 +1586,6 @@ item.ammo_44_star.name=.44 Magnum Bullet (Starmetal) item.ammo_45.name=.45 ACP Bullet item.ammo_45_ap.name=.45 ACP Bullet (AP) item.ammo_45_du.name=.45 ACP Bullet (DU) -item.ammo_45_drum.name=.45 ACP 100 Round Drum -item.ammo_45_drum_ap.name=.45 ACP 100 Round Drum (AP) -item.ammo_45_drum_du.name=.45 ACP 100 Round Drum (DU) item.ammo_4gauge.name=4 Gauge Buckshot item.ammo_4gauge_balefire.name=23mm Balefire Grenade item.ammo_4gauge_canister.name=23mm Rocket (Canister Shot) @@ -1603,8 +1598,6 @@ item.ammo_4gauge_semtex.name=23mm Mining Charge item.ammo_4gauge_sleek.name=4 Gauge Buckshot (IF-R&D) item.ammo_4gauge_slug.name=4 Gauge Solid Steel Slug item.ammo_4gauge_titan.name=4 Gauge Quacker Round -item.ammo_4gauge_flash1.name=4 Gauge Hviezda Round -item.ammo_4gauge_flash2.name=4 Gauge Hviezda-S Round item.ammo_4gauge_vampire.name=4 Gauge Wooden Stake Shell item.ammo_4gauge_void.name=4 Gauge Void Shell item.ammo_50ae.name=.50 AE Round @@ -2500,8 +2493,6 @@ item.flame_politics.desc=Donald Duck will build the wall! item.flame_pony.name=Painting of a Cartoon Pony item.flame_pony.desc=Yellow horse beats blue horse, that's a proven fact! item.flask_infusion.shield.name=Shield Infusion -item.flask_infusion.nitan.name=NITAN© Ambrosia -item.flask_infusion.nitan.desc=Painkiller for medical and recreational use only. item.fleija_core.name=F.L.E.I.J.A. Uranium 235 Charge item.fleija_igniter.name=Pulse Igniter item.fleija_kit.name=F.L.E.I.J.A. Kit @@ -2693,7 +2684,6 @@ item.gun_lacunae_ammo.name=5mm Round (LEGACY) item.gun_lever_action.name=Mare's Leg (Original) item.gun_lever_action_ammo.name=12x74 Buckshot (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dark) -item.gun_lever_action_akimbo.name=Mare's Leg (Dusk) item.gun_lever_action_sonata.name=Flipped Mare's Leg item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r item.gun_lunatic_marksman.name=Lunatic Sniper Rifle @@ -2702,8 +2692,6 @@ item.gun_minigun.name=CZ53 Personal Minigun item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" item.gun_mirv_ammo.name=Eightfold MIRV (LEGACY) item.gun_moist_nugget.name=Mosin-Nagant -item.gun_morita.name=Morita Assault Rifle -item.gun_morita_carbine.name=Morita Carbine item.gun_mp.name=Pacifist's Machine Gun item.gun_mp40.name=Submachine Gun item.gun_mp40_ammo.name=Submachine Gun Round (LEGACY) @@ -2754,7 +2742,6 @@ item.gun_super_shotgun.name=Super Shotgun item.gun_super_shotgun.desc=It's super broken! item.gun_supershotgun.name=Super Shotgun item.gun_thompson.name=Thompson Submachine Gun -item.gun_typewriter.name=The Chicago Typewriter item.gun_uac_pistol.name=UAC .45 Pistol item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 Buckshot (LEGACY) @@ -3223,7 +3210,6 @@ item.mp_warhead_15_n2.name=Size 15 N² Mine item.mp_warhead_15_nuclear.name=Size 15 Nuclear Warhead item.mp_warhead_15_nuclear_mimi.name=Size 15 Mimi-chan's Head item.mp_warhead_15_nuclear_shark.name=Size 15 Nuclear Warhead -item.mp_warhead_15_mirv.name=Size 15 MIRV Warhead item.mp_warhead_15_turbine.name=Size 15 Jet Engine item.mucho_mango.name=AriZona Mucho Mango item.multi_kit.name=Multi Purpose Bomb Kit @@ -4298,7 +4284,7 @@ item.warhead_incendiary_large.name=Large Incendiary Warhead item.warhead_incendiary_medium.name=Medium Incendiary Warhead item.warhead_incendiary_small.name=Small Incendiary Warhead item.warhead_mirv.name=Thermonuclear Warhead -item.warhead_mirvlet.name=Compact Nuclear Warhead +item.warhead_mirvlet.name=MIRV item.warhead_nuclear.name=Nuclear Warhead item.warhead_thermo_endo.name=Endothermic Warhead item.warhead_thermo_exo.name=Exothermic Warhead @@ -4396,7 +4382,6 @@ potion.hbm_radiation=Contaminated potion.hbm_radx=Rad-X potion.hbm_stability=Stability potion.hbm_taint=Tainted -potion.hbm_nitan=Ambrosia potion.hbm_telekinesis=! ! ! radar.clearMap=Clear Map @@ -4890,9 +4875,6 @@ tile.ducrete.name=Ducrete Tile tile.ducrete_stairs.name=Ducrete Tile Stairs tile.ducrete_smooth.name=Ducrete -tile.concrete_debris.name=Concrete Debris -tile.ducrete_debris.name=Ducrete Debris - tile.ducrete_smooth_stairs.name=Ducrete Stairs tile.dummy_block.name=Dummy Block @@ -4987,7 +4969,6 @@ tile.glass_quartz.name=Quartz Glass tile.glass_trinitite.name=Trinity Glass tile.glass_uranium.name=Uranium Glass tile.glyphid_base.name=Glyphid Hive Block -tile.glyphid_support.name=Glyphid Hive Support Block tile.glyphid_spawner.name=Glyphid Hive Spawner tile.gneiss_brick.name=Schist Brick tile.gneiss_chiseled.name=Chiseled Schist From 8a59eb9dbc8f59721c39ff4875ea2db2668bd7fb Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 13 Dec 2023 11:08:01 +0100 Subject: [PATCH 177/207] initial cleanup --- src/main/java/com/hbm/config/MobConfig.java | 10 +- .../com/hbm/entity/mob/EntityGlyphid.java | 98 ++++++------- .../hbm/entity/mob/EntityGlyphidBehemoth.java | 6 +- .../hbm/entity/mob/EntityGlyphidBrenda.java | 3 - .../hbm/entity/mob/EntityGlyphidNuclear.java | 19 ++- .../hbm/entity/mob/EntityGlyphidScout.java | 138 +++++++++--------- .../com/hbm/inventory/OreDictManager.java | 1 - .../java/com/hbm/inventory/fluid/Fluids.java | 4 +- src/main/java/com/hbm/main/ClientProxy.java | 2 +- .../com/hbm/world/feature/GlyphidHive.java | 2 - src/main/resources/assets/hbm/lang/en_US.lang | 9 +- 11 files changed, 133 insertions(+), 159 deletions(-) diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index 59f6c9e3f..19d515b5a 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -39,7 +39,7 @@ public class MobConfig { public static int swarmCooldown = 120; public static int baseSwarmSize = 5; - public static double swarmScalingMult = 1.2; + public static double swarmScalingMult = 1.2; public static int sootStep = 50; public static int[] glyphidChance = {50, -40}; @@ -119,10 +119,10 @@ public class MobConfig { + "The base chance is the stock chance of the bug to spawn within a swarm, unaffected by soot\n" + "As soot increases, the spawn rate of the bug increases until it reaches a limit determined by the modifier\n" + "If the default chance is negative, the mob will not spawn by default, and the lower it is,\n" - + "The longer it takes for the modifier to make it positive\n" - + "If the Modifier is negative, the bug will spawn less often in swarms,\n" + + "The longer it takes for the modifier to make it positive\n" + + "If the Modifier is negative, the bug will spawn less often in swarms,\n" + "And its place will be taken over by another one.\n" - + "\n" + + "\n" + "The formula for glyphid spawning chance is: (chance + (modifier - modifier / (soot/10)))" + "The formula for glyphid swarm scaling is: (baseSwarmSize * Math.max(swarmScalingMult * soot/sootStep, 1))"); @@ -140,7 +140,7 @@ public class MobConfig { brendaChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC06_brendaChance", "Base Spawn chance and soot modifier for a glyphid brenda", new int[]{-50, 60}); johnsonChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC07_johnsonChance", "Base Spawn chance and soot modifier for Big Man Johnson", new int[]{-50, 60}); - String rampantDesc = "Rampant Mode changes glyphid behavior and spawning to be more aggressive, changes include:\n" + String rampantDesc = "Rampant Mode changes glyphid behavior and spawning to be more aggressive, changes include:\n" + "\n" + "Glyphid Scouts will naturally spawn alongside normal mobs if soot levels are above a certain threshold\n" + "Glyphids will always have the extended targetting enabled\n" diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index 5699f060f..11b26b439 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -3,15 +3,12 @@ package com.hbm.entity.mob; import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.Objects; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockGlyphidSpawner; import com.hbm.config.MobConfig; import com.hbm.entity.logic.EntityWaypoint; import com.hbm.entity.pathfinder.PathFinderUtils; import com.hbm.explosion.vanillant.ExplosionVNT; -import com.hbm.explosion.vanillant.interfaces.IExplosionSFX; import com.hbm.explosion.vanillant.standard.*; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; @@ -59,29 +56,30 @@ public class EntityGlyphid extends EntityMob { //used for digging, bigger glyphids have a longer reach public int blastSize = Math.min((int) (3 * (getScale()))/2, 5); - public int blastResToDig = Math.min((int) (50 * (getScale() * 2)), 150); + public int blastResToDig = Math.min((int) (50 * (getScale() * 2)), 150); public boolean shouldDig; // Tasks - public static final int none = 0; - public static final int comm = 1; - public static final int expand = 2; - public static final int reinforcements = 3; - public static final int follow = 4; - public static final int terraform = 5; - public static final int dig = 6; + /** Idle state, only makes glpyhids wander around randomly */ + public static final int TASK_IDLE = 0; + /** Causes the glyphid to walk to the waypoint, then communicate the FOLLOW task to nearby glyphids */ + public static final int TASK_RETREAT_FOR_REINFORCEMENTS = 1; + /** Task used by scouts, if the waypoint is reached it will construct a new hive */ + public static final int TASK_BUILD_HIVE = 2; + /** Creates a waypoint at the home position and then immediately initiates the RETREAT_FOR_REINFORCEMENTS task */ + public static final int TASK_INITIATE_RETREAT = 3; + /** Will simply walk to the waypoint and enter IDLE once it is reached */ + public static final int TASK_FOLLOW = 4; + /** Causes nuclear glyphids to immediately self-destruct, also signaling nearby scouts to retreat */ + public static final int TASK_TERRAFORM = 5; + /** Id any task other than IDLE is interrupted by an obstacle, initiates digging behavior which is also communicated to nearby glyohids */ + public static final int TASK_DIG = 6; + EntityWaypoint taskWaypoint = null; + public EntityGlyphid(World world) { super(world); - /*this.tasks.addTask(0, new EntityAISwimming(this)); - this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false)); - this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 1.0D)); - this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); - this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(8, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true)); - this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));*/ this.setSize(1.75F, 1F); } @@ -124,14 +122,14 @@ public class EntityGlyphid extends EntityMob { onBlinded(); } - if(getCurrentTask() == follow){ + if(getCurrentTask() == TASK_FOLLOW){ //incase the waypoint somehow doesn't exist and it got this task anyway - if(isAtDestination() && taskX == none) { - setCurrentTask(none, null); + if(isAtDestination() && taskX == TASK_IDLE) { + setCurrentTask(TASK_IDLE, null); } //the task cannot be 6 outside of rampant, so this is a non issue p much - } else if (getCurrentTask() == dig && ticksExisted % 20 == 0 && isAtDestination()) { + } else if (getCurrentTask() == TASK_DIG && ticksExisted % 20 == 0 && isAtDestination()) { swingItem(); ExplosionVNT vnt = new ExplosionVNT(worldObj, taskX, taskY + 2, taskZ, blastSize, this); @@ -156,8 +154,8 @@ public class EntityGlyphid extends EntityMob { @Override protected void dropFewItems(boolean byPlayer, int looting) { super.dropFewItems(byPlayer, looting); - Item drop = isBurning() ? ModItems.glyphid_meat_grilled : ModItems.glyphid_meat; - if(rand.nextInt(2) == 0) this.entityDropItem(new ItemStack(drop, ((int)getScale()*2) + looting), 0F); + Item drop = isBurning() ? ModItems.glyphid_meat_grilled : ModItems.glyphid_meat; + if(rand.nextInt(2) == 0) this.entityDropItem(new ItemStack(drop, ((int) getScale() * 2) + looting), 0F); } @Override @@ -170,7 +168,7 @@ public class EntityGlyphid extends EntityMob { @Override protected void updateWanderPath() { - if(getCurrentTask() == none) { + if(getCurrentTask() == TASK_IDLE) { super.updateWanderPath(); } } @@ -185,7 +183,7 @@ public class EntityGlyphid extends EntityMob { // hell yeah!! if (useExtendedTargeting() && this.entityToAttack != null) { this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, true, true)); - } else if (getCurrentTask() != none) { + } else if (getCurrentTask() != TASK_IDLE) { this.worldObj.theProfiler.startSection("stroll"); @@ -203,11 +201,11 @@ public class EntityGlyphid extends EntityMob { } - if (taskX != none) { - if(MobConfig.rampantDig) { + if (taskX != TASK_IDLE) { + if(MobConfig.rampantDig) { MovingObjectPosition obstacle = findWaypointObstruction(); - if (getScale() >= 1 && getCurrentTask() != dig && obstacle != null) { + if (getScale() >= 1 && getCurrentTask() != TASK_DIG && obstacle != null) { digToWaypoint(obstacle); } else { Vec3 vec = Vec3.createVectorHelper(posX, posY, posZ); @@ -222,19 +220,18 @@ public class EntityGlyphid extends EntityMob { } } } + this.worldObj.theProfiler.endSection(); - } } } - } public void onBlinded(){ this.entityToAttack = null; this.setPathToEntity(null); - fleeingTick = 80; + this.fleeingTick = 80; if(getScale() >= 1.25){ if(ticksExisted % 20 == 0) { @@ -253,8 +250,6 @@ public class EntityGlyphid extends EntityMob { if (block == ModBlocks.lantern) { rotationYaw = 360F / 16 * i; swingItem(); - //this function is incredibly useful for breaking blocks naturally but obfuscated - //jesus fucking christ who the fuck runs forge? worldObj.func_147480_a(mop.blockX, mop.blockY, mop.blockZ, false); } @@ -270,7 +265,7 @@ public class EntityGlyphid extends EntityMob { @Override protected boolean canDespawn() { - return ticksExisted > 3500 && entityToAttack == null && getCurrentTask() == none; + return ticksExisted > 3500 && entityToAttack == null && getCurrentTask() == TASK_IDLE; } @Override @@ -454,16 +449,16 @@ public class EntityGlyphid extends EntityMob { switch(task){ //call for reinforcements - case comm: if(taskWaypoint != null){ - communicate(follow, taskWaypoint); - setCurrentTask(follow, taskWaypoint); + case TASK_RETREAT_FOR_REINFORCEMENTS: if(taskWaypoint != null){ + communicate(TASK_FOLLOW, taskWaypoint); + setCurrentTask(TASK_FOLLOW, taskWaypoint); } break; //expand the hive, used by the scout //case 2: expandHive(null); //retreat - case reinforcements: + case TASK_INITIATE_RETREAT: if (!worldObj.isRemote && taskWaypoint == null) { @@ -473,15 +468,15 @@ public class EntityGlyphid extends EntityMob { //First, go home and get reinforcements EntityWaypoint home = new EntityWaypoint(worldObj); - home.setWaypointType(comm); + home.setWaypointType(TASK_RETREAT_FOR_REINFORCEMENTS); home.setAdditionalWaypoint(additional); home.setHighPriority(); home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); worldObj.spawnEntityInWorld(home); this.taskWaypoint = home; - communicate(follow, home); - setCurrentTask(follow, taskWaypoint); + communicate(TASK_FOLLOW, home); + setCurrentTask(TASK_FOLLOW, taskWaypoint); break; } @@ -492,7 +487,7 @@ public class EntityGlyphid extends EntityMob { //fifth task is used only in the scout and big man johnson, for terraforming //dig - case dig: + case TASK_DIG: shouldDig = true; break; @@ -502,7 +497,8 @@ public class EntityGlyphid extends EntityMob { } - public void communicate(int task, @Nullable EntityWaypoint waypoint) { + /** Copies tasks and waypoint to nearby glyphids. Does not work on glyphid scouts */ + public void communicate(int task, @Nullable EntityWaypoint waypoint) { int radius = waypoint != null ? waypoint.radius : 4; AxisAlignedBB bb = AxisAlignedBB.getBoundingBox( @@ -523,7 +519,7 @@ public class EntityGlyphid extends EntityMob { } } - /** What each type of glyphid does when it is time to expand the hive. + /** What each type of glyphid does when it is time to expand the hive. * @return Whether it has expanded successfully or not * **/ public boolean expandHive(){ @@ -532,10 +528,9 @@ public class EntityGlyphid extends EntityMob { public boolean isAtDestination() { int destinationRadius = taskWaypoint != null ? (int) Math.pow(taskWaypoint.radius, 2) : 25; - return this.getDistanceSq(taskX, taskY, taskZ) <= destinationRadius; } - ///TASK SYSTEM END + ///TASK SYSTEM END ///DIGGING SYSTEM START @@ -564,17 +559,17 @@ public class EntityGlyphid extends EntityMob { previousTask = getCurrentTask(); previousWaypoint = getWaypoint(); - setCurrentTask(dig, target); + setCurrentTask(TASK_DIG, target); Vec3 vec = Vec3.createVectorHelper(posX, posY, posZ); int maxDist = (int) (Math.sqrt(vec.squareDistanceTo(taskX, taskY, taskZ)) * 1.2); this.setPathToEntity(PathFinderUtils.getPathEntityToCoordPartial(worldObj, this, taskX, taskY, taskZ, maxDist, true, false, true, true)); - communicate(dig, target); + communicate(TASK_DIG, target); } ///DIGGING END - + @Override public void writeEntityToNBT(NBTTagCompound nbt) { super.writeEntityToNBT(nbt); @@ -608,5 +603,4 @@ public class EntityGlyphid extends EntityMob { this.currentTask = nbt.getInteger("task"); } - } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java index e042626c2..fbc138cde 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java @@ -2,8 +2,6 @@ package com.hbm.entity.mob; import com.hbm.entity.effect.EntityMist; import com.hbm.entity.projectile.EntityChemical; -import com.hbm.inventory.FluidContainerRegistry; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.main.ResourceManager; @@ -11,14 +9,12 @@ import com.hbm.main.ResourceManager; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import net.minecraftforge.fluids.Fluid; public class EntityGlyphidBehemoth extends EntityGlyphid { @@ -100,7 +96,7 @@ public class EntityGlyphidBehemoth extends EntityGlyphid { @Override protected void dropFewItems(boolean byPlayer, int looting) { - this.entityDropItem(new ItemStack(ModItems.glyphid_gland, 1, Fluids.SULFURIC_ACID.getID()), 1); + this.entityDropItem(new ItemStack(ModItems.glyphid_gland, 1, Fluids.SULFURIC_ACID.getID()), 1); super.dropFewItems(byPlayer, looting); } @Override diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java index be4486456..33926bbde 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java @@ -1,15 +1,12 @@ package com.hbm.entity.mob; import com.hbm.entity.effect.EntityMist; -import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.main.ResourceManager; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java index bb617e2b0..d98a13edd 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java @@ -1,7 +1,6 @@ package com.hbm.entity.mob; import com.hbm.blocks.ModBlocks; -import com.hbm.entity.effect.EntityMist; import com.hbm.entity.logic.EntityWaypoint; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; @@ -9,7 +8,6 @@ import com.hbm.explosion.vanillant.standard.BlockMutatorDebris; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; -import com.hbm.inventory.fluid.Fluids; import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; import com.hbm.packet.AuxParticlePacketNT; @@ -50,22 +48,22 @@ public class EntityGlyphidNuclear extends EntityGlyphid { @Override public void onUpdate() { super.onUpdate(); - if (ticksExisted % 20 == 0) { - if (isAtDestination() && getCurrentTask() == follow) { - setCurrentTask(none, null); + if(ticksExisted % 20 == 0) { + if(isAtDestination() && getCurrentTask() == TASK_FOLLOW) { + setCurrentTask(TASK_IDLE, null); } - if(getCurrentTask() == expand && getAITarget() == null){ + if(getCurrentTask() == TASK_BUILD_HIVE && getAITarget() == null) { this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 10 * 20, 3)); } - if (getCurrentTask() == terraform) { + if(getCurrentTask() == TASK_TERRAFORM) { this.setHealth(0); } - } } + /** Communicates only with glyphid scouts, unlike the super implementation which does the opposite */ @Override public void communicate(int task, @Nullable EntityWaypoint waypoint) { int radius = waypoint != null ? waypoint.radius : 4; @@ -99,7 +97,6 @@ public class EntityGlyphidNuclear extends EntityGlyphid { @Override public boolean isArmorBroken(float amount) { - // amount < 5 ? 5 : amount < 10 ? 3 : 2; return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.12, 2), 100); } @@ -131,9 +128,11 @@ public class EntityGlyphidNuclear extends EntityGlyphid { ++this.deathTicks; if(!hasWaypoint) { - communicate(reinforcements, null); + // effectively causes neighboring EntityGlyphidScout to retreat + communicate(TASK_INITIATE_RETREAT, null); hasWaypoint = true; } + if(deathTicks == 90){ int radius = 8; AxisAlignedBB bb = AxisAlignedBB.getBoundingBox( diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java index c1a24ad99..1ceaf824c 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java @@ -17,7 +17,6 @@ import net.minecraft.potion.PotionEffect; import net.minecraft.util.*; import net.minecraft.world.World; -import javax.annotation.Nullable; import java.util.List; public class EntityGlyphidScout extends EntityGlyphid { @@ -28,6 +27,7 @@ public class EntityGlyphidScout extends EntityGlyphid { int minDistanceToHive = 8; boolean useLargeHive = false; float largeHiveChance = MobConfig.largeHiveChance; + public EntityGlyphidScout(World world) { super(world); this.setSize(1.25F, 0.75F); @@ -42,6 +42,7 @@ public class EntityGlyphidScout extends EntityGlyphid { } return false; } + @Override public ResourceLocation getSkin() { return ResourceManager.glyphid_scout_tex; @@ -64,14 +65,14 @@ public class EntityGlyphidScout extends EntityGlyphid { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1.5D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(2D); } + @Override public void onUpdate() { - super.onUpdate(); - if((getCurrentTask() != expand || getCurrentTask() != terraform) && taskWaypoint == null) { + if((getCurrentTask() != TASK_BUILD_HIVE || getCurrentTask() != TASK_TERRAFORM) && taskWaypoint == null) { - if(MobConfig.rampantGlyphidGuidance && PollutionHandler.targetCoords != null){ + if(MobConfig.rampantGlyphidGuidance && PollutionHandler.targetCoords != null){ if(!hasTarget) { Vec3 dirVec = playerBaseDirFinder( Vec3.createVectorHelper(posX, posY, posZ), @@ -84,62 +85,51 @@ public class EntityGlyphidScout extends EntityGlyphid { worldObj.spawnEntityInWorld(target); hasTarget = true; - setCurrentTask(1, target); + setCurrentTask(TASK_RETREAT_FOR_REINFORCEMENTS, target); } if(super.isAtDestination()) { - setCurrentTask(2, null) ; + setCurrentTask(TASK_BUILD_HIVE, null) ; hasTarget = false; } } else { - setCurrentTask(2, null); + setCurrentTask(TASK_BUILD_HIVE, null); } } - if(getCurrentTask() == expand || getCurrentTask() == terraform) { + if(getCurrentTask() == TASK_BUILD_HIVE || getCurrentTask() == TASK_TERRAFORM) { if(!worldObj.isRemote && !hasTarget) { //Check for whether a big man johnson is nearby, this makes the scout switch into its terraforming task - if(scoutingRange != 60 && findJohnson()){ - setCurrentTask(5, null); + if(scoutingRange != 60 && hasNuclearGlyphidNearby()){ + setCurrentTask(TASK_TERRAFORM, null); } - //Placeholder for a more advanced hive design - /* - if(PollutionHandler.getPollution(worldObj, - (int) posX, - (int) posY, - (int) posZ, PollutionHandler.PollutionType.SOOT) >= MobConfig.largeHiveThreshold){ - - useLargeHive = true; - this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 60 * 20, 3)); - }*/ - - if (expandHive()){ - this.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 180*20, 1)); + if(expandHive()) { + this.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 180 * 20, 1)); hasTarget = true; } } - if (getCurrentTask() == terraform && super.isAtDestination() && doubleCheckHive()) { - communicate(terraform, taskWaypoint); + if (getCurrentTask() == TASK_TERRAFORM && super.isAtDestination() && canBuildHiveHere()) { + communicate(TASK_TERRAFORM, taskWaypoint); } if (ticksExisted % 10 == 0 && isAtDestination()) { timer++; - if (!worldObj.isRemote && doubleCheckHive()) { + if (!worldObj.isRemote && canBuildHiveHere()) { if(timer == 1) { EntityWaypoint additional = new EntityWaypoint(worldObj); additional.setLocationAndAngles(posX, posY, posZ, 0, 0); - additional.setWaypointType(none); + additional.setWaypointType(TASK_IDLE); //First, go home and get reinforcements EntityWaypoint home = new EntityWaypoint(worldObj); - home.setWaypointType(comm); + home.setWaypointType(TASK_RETREAT_FOR_REINFORCEMENTS); home.setAdditionalWaypoint(additional); home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); home.maxAge = 1200; @@ -149,7 +139,7 @@ public class EntityGlyphidScout extends EntityGlyphid { this.taskWaypoint = home; this.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 40 * 20, 10)); - communicate(comm, taskWaypoint); + communicate(TASK_RETREAT_FOR_REINFORCEMENTS, taskWaypoint); } else if (timer >= 5) { @@ -161,15 +151,19 @@ public class EntityGlyphidScout extends EntityGlyphid { this.setDead(); } else { - communicate(follow, taskWaypoint); + communicate(TASK_FOLLOW, taskWaypoint); } } } } } - public boolean doubleCheckHive(){ + + /** Returns true if the position is far enough away from other hives. Also resets the task if unsuccessful. */ + public boolean canBuildHiveHere() { int length = useLargeHive ? 16 : 8; + for(int i = 0; i < 8; i++) { + float angle = (float) Math.toRadians(360D / 16 * i); Vec3 rot = Vec3.createVectorHelper(0, 0, length); rot.rotateAroundY(angle); @@ -177,12 +171,12 @@ public class EntityGlyphidScout extends EntityGlyphid { Vec3 nextPos = Vec3.createVectorHelper(this.posX + rot.xCoord, this.posY + 1, this.posZ + rot.zCoord); MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos); - if (mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { + if(mop != null && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { Block block = worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); - if (block == ModBlocks.glyphid_base) { - setCurrentTask(none ,null); + if(block == ModBlocks.glyphid_base) { + setCurrentTask(TASK_IDLE, null); hasTarget = false; return false; } @@ -194,10 +188,10 @@ public class EntityGlyphidScout extends EntityGlyphid { @Override public boolean isAtDestination() { - return this.getCurrentTask() == expand && super.isAtDestination(); + return this.getCurrentTask() == TASK_BUILD_HIVE && super.isAtDestination(); } - public boolean findJohnson(){ + public boolean hasNuclearGlyphidNearby(){ int radius = 8; AxisAlignedBB bb = AxisAlignedBB.getBoundingBox( @@ -209,6 +203,7 @@ public class EntityGlyphidScout extends EntityGlyphid { this.posZ + radius); List bugs = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); + for (Entity e: bugs){ if(e instanceof EntityGlyphidNuclear){ return true; @@ -220,51 +215,50 @@ public class EntityGlyphidScout extends EntityGlyphid { @Override public boolean expandHive() { - int nestX = rand.nextInt((homeX + scoutingRange) - (homeX - scoutingRange)) + (homeX - scoutingRange); - int nestZ = rand.nextInt((homeZ + scoutingRange) - (homeZ - scoutingRange)) + (homeZ - scoutingRange); - int nestY = worldObj.getHeightValue(nestX, nestZ); - Block b = worldObj.getBlock(nestX, nestY - 1, nestZ); + int nestX = rand.nextInt((homeX + scoutingRange) - (homeX - scoutingRange)) + (homeX - scoutingRange); + int nestZ = rand.nextInt((homeZ + scoutingRange) - (homeZ - scoutingRange)) + (homeZ - scoutingRange); + int nestY = worldObj.getHeightValue(nestX, nestZ); + Block b = worldObj.getBlock(nestX, nestY - 1, nestZ); - boolean distanceCheck = Vec3.createVectorHelper( - nestX - homeX, - nestY - homeY, - nestZ - homeZ).lengthVector() > minDistanceToHive; + boolean distanceCheck = Vec3.createVectorHelper(nestX - homeX, nestY - homeY, nestZ - homeZ).lengthVector() > minDistanceToHive; - if(distanceCheck && b.getMaterial() != Material.air && b.isNormalCube() && b != ModBlocks.glyphid_base) { + if(distanceCheck && b.getMaterial() != Material.air && b.isNormalCube() && b != ModBlocks.glyphid_base) { - if(b == ModBlocks.basalt) { - useLargeHive = true; - largeHiveChance /= 2; - this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 60 * 20, 3)); - } - if(!worldObj.isRemote) { - EntityWaypoint nest = new EntityWaypoint(worldObj); - nest.setWaypointType(getCurrentTask()); - nest.radius = 5; + if(b == ModBlocks.basalt) { + useLargeHive = true; + largeHiveChance /= 2; + this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 60 * 20, 3)); + } + + if(!worldObj.isRemote) { + EntityWaypoint nest = new EntityWaypoint(worldObj); + nest.setWaypointType(getCurrentTask()); + nest.radius = 5; - if(useLargeHive) - nest.setHighPriority(); + if(useLargeHive) + nest.setHighPriority(); - nest.setLocationAndAngles(nestX, nestY, nestZ, 0, 0); - worldObj.spawnEntityInWorld(nest); + nest.setLocationAndAngles(nestX, nestY, nestZ, 0, 0); + worldObj.spawnEntityInWorld(nest); - taskWaypoint = nest; + taskWaypoint = nest; - //updates the task coordinates - setCurrentTask(getCurrentTask(), taskWaypoint); - communicate(expand, taskWaypoint); - } - return true; - } - return false; + // updates the task coordinates + setCurrentTask(getCurrentTask(), taskWaypoint); + communicate(TASK_BUILD_HIVE, taskWaypoint); + } + + return true; + } + + return false; } - @Override public void carryOutTask() { if (!worldObj.isRemote && taskWaypoint == null) { switch(getCurrentTask()){ - case reinforcements: + case TASK_INITIATE_RETREAT: this.removePotionEffect(Potion.moveSlowdown.id); this.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 20 * 20, 4)); @@ -283,23 +277,25 @@ public class EntityGlyphidScout extends EntityGlyphid { worldObj.spawnEntityInWorld(home); communicate(4, home); - break; + break; //terraforming task, only used if a big man johnson is near the scout - case terraform: + case TASK_TERRAFORM: scoutingRange = 60; minDistanceToHive = 20; + break; } } super.carryOutTask(); } + @Override public boolean useExtendedTargeting() { return false; } - ///RAMPANT MODE STUFFS + ///RAMPANT MODE STUFFS /** Finds the direction from the bug's location to the target and adds it to their current coord * Used as a performant way to make scouts expand toward the player's spawn point diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index a25849cd1..348f1704c 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -302,7 +302,6 @@ public class OreDictManager { /** Any special post-RBMK gating material, namely bismuth and arsenic */ public static final DictFrame ANY_BISMOID = new DictFrame("AnyBismoid"); public static final DictFrame ANY_ASH = new DictFrame("Ash"); - /** Any, nevermind, this should be self-explanatory**/ public static void registerOres() { diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 4c83847b2..5cc0ee007 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -328,12 +328,12 @@ public class Fluids { HEAVYWATER_HOT = new FluidType("HEAVYWATER_HOT", 0x4D007B, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID); SODIUM = new FluidType("SODIUM", 0xCCD4D5, 1, 2, 3, EnumSymbol.NONE).setTemp(400).addTraits(LIQUID); SODIUM_HOT = new FluidType("SODIUM_HOT", 0xE2ADC1, 1, 2, 3, EnumSymbol.NONE).setTemp(1200).addTraits(LIQUID); - PHEROMONE = new FluidType("PHEROMONE", 0x5FA6E8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(1)); - PHEROMONE_M = new FluidType("PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(2)); THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, new FT_Corrosive(65)); THORIUM_SALT_DEPLETED = new FluidType("THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); FULLERENE = new FluidType(132, "FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); + PHEROMONE = new FluidType("PHEROMONE", 0x5FA6E8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(1)); + PHEROMONE_M = new FluidType("PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(2)); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index ad1a4a00b..3d82a99ed 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -522,7 +522,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderWeaponQuadro()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_sauer, new ItemRenderWeaponSauer()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_vortex, new ItemRenderWeaponVortex()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_thompson, new ItemRenderWeaponThompson());; + MinecraftForgeClient.registerItemRenderer(ModItems.gun_thompson, new ItemRenderWeaponThompson()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderWeaponBolter()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter_digamma, new ItemRenderWeaponBolter()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_fireext, new ItemRenderFireExt()); diff --git a/src/main/java/com/hbm/world/feature/GlyphidHive.java b/src/main/java/com/hbm/world/feature/GlyphidHive.java index f7c83e76f..f0ddf5c41 100644 --- a/src/main/java/com/hbm/world/feature/GlyphidHive.java +++ b/src/main/java/com/hbm/world/feature/GlyphidHive.java @@ -4,8 +4,6 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; -import net.minecraft.block.Block; -import com.hbm.util.LootGenerator; import net.minecraft.init.Blocks; import net.minecraft.world.World; diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 44f03fd5b..720fc1d5f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2390,6 +2390,8 @@ item.dieselsuit_helmet.name=Diesel-Powered Head-Mounted Environmental Sensor item.dieselsuit_legs.name=Diesel-Powered Leg Servos item.dieselsuit_plate.name=Diesel-Powered Cybernetics item.digamma_diagnostic.name=Digamma Diagnostic +item.disperser_canister.name= Disperser Canister: +item.disperser_canister_empty.name= Disperser Canister item.dns_boots.name=DNT Nano Suit Boots item.dns_legs.name=DNT Nano Suit Leggings item.dns_helmet.name=DNT Nano Suit Helmet @@ -2616,13 +2618,8 @@ item.grenade_smart.name=Smart Grenade item.grenade_strong.name=Enhanced Grenade item.grenade_tau.name=Tau Grenade item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade - -item.disperser_canister.name= Disperser Canister: -item.disperser_canister_empty.name= Disperser Canister - item.glyphid_gland.name= Gland item.glyphid_gland_empty.name= Glyphid's Fluid Gland - item.gun_ar15.name=Josh item.gun_avenger.name=CZ57 Avenger Minigun item.gun_b92.name=§9B92 Energy Pistol§r @@ -4887,9 +4884,7 @@ tile.door_office.name=Office Door tile.ducrete.name=Ducrete Tile tile.ducrete_stairs.name=Ducrete Tile Stairs tile.ducrete_smooth.name=Ducrete - tile.ducrete_smooth_stairs.name=Ducrete Stairs - tile.dummy_block.name=Dummy Block tile.dummy_port.name=Dummy Block (Electricity Port) tile.dungeon_chain.name=Metal Chain From 31c55c7cfa350d9023b9228c7b197caec7d6df69 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 13 Dec 2023 15:12:28 +0100 Subject: [PATCH 178/207] now i know how megan feels --- .../com/hbm/entity/logic/EntityWaypoint.java | 195 +++++++++--------- .../com/hbm/entity/mob/EntityGlyphid.java | 104 +++++----- .../hbm/entity/mob/EntityGlyphidNuclear.java | 8 +- .../hbm/entity/mob/EntityGlyphidScout.java | 12 +- 4 files changed, 150 insertions(+), 169 deletions(-) diff --git a/src/main/java/com/hbm/entity/logic/EntityWaypoint.java b/src/main/java/com/hbm/entity/logic/EntityWaypoint.java index 87ca34199..33712524e 100644 --- a/src/main/java/com/hbm/entity/logic/EntityWaypoint.java +++ b/src/main/java/com/hbm/entity/logic/EntityWaypoint.java @@ -2,6 +2,7 @@ package com.hbm.entity.logic; import com.hbm.config.MobConfig; import com.hbm.entity.mob.EntityGlyphid; +import static com.hbm.entity.mob.EntityGlyphid.*; import com.hbm.entity.mob.EntityGlyphidNuclear; import com.hbm.entity.mob.EntityGlyphidScout; import com.hbm.main.MainRegistry; @@ -9,131 +10,125 @@ import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -import net.minecraft.world.chunk.Chunk; import java.util.List; - public class EntityWaypoint extends Entity { - public EntityWaypoint(World world) { - super(world); - this.isImmuneToFire = true; - this.noClip = true; - } - @Override - protected void entityInit() { - this.dataWatcher.addObject(10, 0); - //this.dataWatcher.addObject(11, 0); + public EntityWaypoint(World world) { + super(world); + this.isImmuneToFire = true; + this.noClip = true; + } - } - public int maxAge = 2400; - public int radius = 3; - public boolean highPriority = false; - protected EntityWaypoint additional; - public void setHighPriority(){ - highPriority = true; - } - public int getWaypointType(){ - return this.dataWatcher.getWatchableObjectInt(10); - } + @Override + protected void entityInit() { + this.dataWatcher.addObject(10, 0); + // this.dataWatcher.addObject(11, 0); - public void setAdditionalWaypoint(EntityWaypoint waypoint){ - additional = waypoint; - } + } - public void setWaypointType(int waypointType) { - this.dataWatcher.updateObject(10, waypointType); - } - boolean hasSpawned = false; - public int getColor(){ - switch(getWaypointType()){ + public int maxAge = 2400; + public int radius = 3; + public boolean highPriority = false; + protected EntityWaypoint additional; - case 1: return 0x5FA6E8; + public void setHighPriority() { + highPriority = true; + } - case 2: - case 3: - return 0x127766; + public int getWaypointType() { + return this.dataWatcher.getWatchableObjectInt(10); + } - default: return 0x566573; - } - } - AxisAlignedBB bb; - @Override - public void onEntityUpdate() { - if (ticksExisted >= maxAge) { - this.setDead(); - } + public void setAdditionalWaypoint(EntityWaypoint waypoint) { + additional = waypoint; + } - bb = AxisAlignedBB.getBoundingBox( - this.posX - radius, - this.posY - radius, - this.posZ - radius, - this.posX + radius, - this.posY + radius, - this.posZ + radius); + public void setWaypointType(int waypointType) { + this.dataWatcher.updateObject(10, waypointType); + } - if (!worldObj.isRemote) { + boolean hasSpawned = false; - if (ticksExisted % 40 == 0) { + public int getColor() { + switch(getWaypointType()) { - List targets = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); + case TASK_RETREAT_FOR_REINFORCEMENTS: return 0x5FA6E8; + case TASK_BUILD_HIVE: + case TASK_INITIATE_RETREAT: return 0x127766; + default: return 0x566573; + } + } - for (Entity e : targets) { - if (e instanceof EntityGlyphid) { + AxisAlignedBB bb; - EntityGlyphid bug = ((EntityGlyphid) e); + @Override + public void onEntityUpdate() { + if(ticksExisted >= maxAge) { + this.setDead(); + } - if (additional != null && !hasSpawned) { - worldObj.spawnEntityInWorld(additional); - hasSpawned = true; - } + bb = AxisAlignedBB.getBoundingBox(this.posX, this.posY, this.posZ, this.posX, this.posY, this.posZ).expand(radius, radius, radius); - boolean exceptions = bug.getWaypoint() != this - || e instanceof EntityGlyphidScout - || e instanceof EntityGlyphidNuclear; + if(!worldObj.isRemote) { - if(!exceptions) - bug.setCurrentTask(getWaypointType(), additional); + if(ticksExisted % 40 == 0) { - if (getWaypointType() == 2) { - if (e instanceof EntityGlyphidScout) - setDead(); - } else { - setDead(); - } + List targets = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); - } - } - } - } else if(MobConfig.waypointDebug) { + for(Entity e : targets) { + if(e instanceof EntityGlyphid) { - double x = bb.minX + (rand.nextDouble() - 0.5) * (bb.maxX - bb.minX); - double y = bb.minY + rand.nextDouble() * (bb.maxY - bb.minY); - double z = bb.minZ + (rand.nextDouble() - 0.5) * (bb.maxZ - bb.minZ); + EntityGlyphid bug = ((EntityGlyphid) e); - NBTTagCompound fx = new NBTTagCompound(); - fx.setString("type", "tower"); - fx.setFloat("lift", 0.5F); - fx.setFloat("base", 0.75F); - fx.setFloat("max", 2F); - fx.setInteger("life", 50 + worldObj.rand.nextInt(10)); - fx.setInteger("color", getColor()); - fx.setDouble("posX", x); - fx.setDouble("posY", y); - fx.setDouble("posZ", z); - MainRegistry.proxy.effectNT(fx); - } + if(additional != null && !hasSpawned) { + worldObj.spawnEntityInWorld(additional); + hasSpawned = true; + } - } + boolean exceptions = bug.getWaypoint() != this || e instanceof EntityGlyphidScout || e instanceof EntityGlyphidNuclear; + if(!exceptions) + bug.setCurrentTask(getWaypointType(), additional); - @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { - this.setWaypointType(nbt.getInteger("type")); - } + if(getWaypointType() == TASK_BUILD_HIVE) { + if(e instanceof EntityGlyphidScout) + setDead(); + } else { + setDead(); + } - @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setInteger("type", getWaypointType()); - } + } + } + } + } else if(MobConfig.waypointDebug) { + + double x = bb.minX + (rand.nextDouble() - 0.5) * (bb.maxX - bb.minX); + double y = bb.minY + rand.nextDouble() * (bb.maxY - bb.minY); + double z = bb.minZ + (rand.nextDouble() - 0.5) * (bb.maxZ - bb.minZ); + + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 0.5F); + fx.setFloat("base", 0.75F); + fx.setFloat("max", 2F); + fx.setInteger("life", 50 + worldObj.rand.nextInt(10)); + fx.setInteger("color", getColor()); + fx.setDouble("posX", x); + fx.setDouble("posY", y); + fx.setDouble("posZ", z); + MainRegistry.proxy.effectNT(fx); + } + + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + this.setWaypointType(nbt.getInteger("type")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setInteger("type", getWaypointType()); + } } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index 11b26b439..08a067063 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -55,7 +55,7 @@ public class EntityGlyphid extends EntityMob { public int taskZ; //used for digging, bigger glyphids have a longer reach - public int blastSize = Math.min((int) (3 * (getScale()))/2, 5); + public int blastSize = Math.min((int) (3 * (getScale())) / 2, 5); public int blastResToDig = Math.min((int) (50 * (getScale() * 2)), 150); public boolean shouldDig; @@ -73,10 +73,12 @@ public class EntityGlyphid extends EntityMob { public static final int TASK_FOLLOW = 4; /** Causes nuclear glyphids to immediately self-destruct, also signaling nearby scouts to retreat */ public static final int TASK_TERRAFORM = 5; - /** Id any task other than IDLE is interrupted by an obstacle, initiates digging behavior which is also communicated to nearby glyohids */ + /** If any task other than IDLE is interrupted by an obstacle, initiates digging behavior which is also communicated to nearby glyohids */ public static final int TASK_DIG = 6; - EntityWaypoint taskWaypoint = null; + protected boolean hasWaypoint = false; + /** Yeah, fuck, whatever, anything goes now */ + protected EntityWaypoint taskWaypoint = null; public EntityGlyphid(World world) { super(world); @@ -125,7 +127,7 @@ public class EntityGlyphid extends EntityMob { if(getCurrentTask() == TASK_FOLLOW){ //incase the waypoint somehow doesn't exist and it got this task anyway - if(isAtDestination() && taskX == TASK_IDLE) { + if(isAtDestination() && !hasWaypoint) { setCurrentTask(TASK_IDLE, null); } //the task cannot be 6 outside of rampant, so this is a non issue p much @@ -201,7 +203,7 @@ public class EntityGlyphid extends EntityMob { } - if (taskX != TASK_IDLE) { + if(hasWaypoint) { if(MobConfig.rampantDig) { MovingObjectPosition obstacle = findWaypointObstruction(); @@ -292,8 +294,6 @@ public class EntityGlyphid extends EntityMob { } if(source.isFireDamage()) { - //you might be thinking, why would fire damage be nerfed? - //thing is, it bypasses glyphid chitin, making it unbelievably powerful, so this was the most reasonable solution amount *= 0.7F; } else if(source.getDamageType().equals("player")) { amount *= 1.5F; @@ -423,8 +423,9 @@ public class EntityGlyphid extends EntityMob { * @param waypoint The waypoint for the task, can be null */ public void setCurrentTask(int task, @Nullable EntityWaypoint waypoint){ - currentTask = task; - taskWaypoint = waypoint; + this.currentTask = task; + this.taskWaypoint = waypoint; + this.hasWaypoint = waypoint != null; if (taskWaypoint != null) { taskX = (int) taskWaypoint.posX; @@ -448,50 +449,44 @@ public class EntityGlyphid extends EntityMob { switch(task){ - //call for reinforcements - case TASK_RETREAT_FOR_REINFORCEMENTS: if(taskWaypoint != null){ + case TASK_RETREAT_FOR_REINFORCEMENTS: + if(taskWaypoint != null) { communicate(TASK_FOLLOW, taskWaypoint); setCurrentTask(TASK_FOLLOW, taskWaypoint); - } break; - - //expand the hive, used by the scout - //case 2: expandHive(null); - - //retreat - case TASK_INITIATE_RETREAT: - - if (!worldObj.isRemote && taskWaypoint == null) { - - //Then, Come back later - EntityWaypoint additional = new EntityWaypoint(worldObj); - additional.setLocationAndAngles(posX, posY, posZ, 0 , 0); - - //First, go home and get reinforcements - EntityWaypoint home = new EntityWaypoint(worldObj); - home.setWaypointType(TASK_RETREAT_FOR_REINFORCEMENTS); - home.setAdditionalWaypoint(additional); - home.setHighPriority(); - home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); - worldObj.spawnEntityInWorld(home); - - this.taskWaypoint = home; - communicate(TASK_FOLLOW, home); - setCurrentTask(TASK_FOLLOW, taskWaypoint); - - break; - } - + } break; - //the fourth task (case 4) is to just follow the waypoint path - //fifth task is used only in the scout and big man johnson, for terraforming + case TASK_INITIATE_RETREAT: + + if(!worldObj.isRemote && taskWaypoint == null) { + + // Then, Come back later + EntityWaypoint additional = new EntityWaypoint(worldObj); + additional.setLocationAndAngles(posX, posY, posZ, 0, 0); + + // First, go home and get reinforcements + EntityWaypoint home = new EntityWaypoint(worldObj); + home.setWaypointType(TASK_RETREAT_FOR_REINFORCEMENTS); + home.setAdditionalWaypoint(additional); + home.setHighPriority(); + home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); + worldObj.spawnEntityInWorld(home); + + this.taskWaypoint = home; + communicate(TASK_FOLLOW, home); + setCurrentTask(TASK_FOLLOW, taskWaypoint); - //dig - case TASK_DIG: - shouldDig = true; break; + } - default: break; + break; + + case TASK_DIG: + shouldDig = true; + break; + + default: + break; } @@ -500,19 +495,12 @@ public class EntityGlyphid extends EntityMob { /** Copies tasks and waypoint to nearby glyphids. Does not work on glyphid scouts */ public void communicate(int task, @Nullable EntityWaypoint waypoint) { int radius = waypoint != null ? waypoint.radius : 4; - - AxisAlignedBB bb = AxisAlignedBB.getBoundingBox( - this.posX - radius, - this.posY - radius, - this.posZ - radius, - this.posX + radius, - this.posY + radius, - this.posZ + radius); + AxisAlignedBB bb = AxisAlignedBB.getBoundingBox(this.posX, this.posY, this.posZ, this.posX, this.posY, this.posZ).expand(radius, radius, radius); List bugs = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); - for (Entity e: bugs){ - if(e instanceof EntityGlyphid && !(e instanceof EntityGlyphidScout)){ - if(((EntityGlyphid) e).getCurrentTask() != task){ + for(Entity e : bugs) { + if(e instanceof EntityGlyphid && !(e instanceof EntityGlyphidScout)) { + if(((EntityGlyphid) e).getCurrentTask() != task) { ((EntityGlyphid) e).setCurrentTask(task, waypoint); } } @@ -580,6 +568,7 @@ public class EntityGlyphid extends EntityMob { nbt.setInteger("homeY", homeY); nbt.setInteger("homeZ", homeZ); + nbt.setBoolean("hasWaypoint", hasWaypoint); nbt.setInteger("taskX", taskX); nbt.setInteger("taskY", taskY); nbt.setInteger("taskZ", taskZ); @@ -597,6 +586,7 @@ public class EntityGlyphid extends EntityMob { this.homeY = nbt.getInteger("homeY"); this.homeZ = nbt.getInteger("homeZ"); + this.hasWaypoint = nbt.getBoolean("hasWaypoint"); this.taskX = nbt.getInteger("taskX"); this.taskY = nbt.getInteger("taskY"); this.taskZ = nbt.getInteger("taskZ"); diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java index d98a13edd..e68c5311f 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java @@ -135,13 +135,7 @@ public class EntityGlyphidNuclear extends EntityGlyphid { if(deathTicks == 90){ int radius = 8; - AxisAlignedBB bb = AxisAlignedBB.getBoundingBox( - this.posX - radius, - this.posY - radius, - this.posZ - radius, - this.posX + radius, - this.posY + radius, - this.posZ + radius); + AxisAlignedBB bb = AxisAlignedBB.getBoundingBox(this.posX, this.posY, this.posZ, this.posX, this.posY, this.posZ).expand(radius, radius, radius); List bugs = worldObj.getEntitiesWithinAABBExcludingEntity(this, bb); for (Entity e: bugs){ diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java index 1ceaf824c..bd09849ec 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java @@ -74,9 +74,7 @@ public class EntityGlyphidScout extends EntityGlyphid { if(MobConfig.rampantGlyphidGuidance && PollutionHandler.targetCoords != null){ if(!hasTarget) { - Vec3 dirVec = playerBaseDirFinder( - Vec3.createVectorHelper(posX, posY, posZ), - PollutionHandler.targetCoords); + Vec3 dirVec = playerBaseDirFinder(Vec3.createVectorHelper(posX, posY, posZ), getPlayerTargetDirection()); EntityWaypoint target = new EntityWaypoint(worldObj); target.setLocationAndAngles(dirVec.xCoord, dirVec.yCoord, dirVec.zCoord, 0, 0); @@ -157,7 +155,7 @@ public class EntityGlyphidScout extends EntityGlyphid { } } } - + /** Returns true if the position is far enough away from other hives. Also resets the task if unsuccessful. */ public boolean canBuildHiveHere() { int length = useLargeHive ? 16 : 8; @@ -308,5 +306,9 @@ public class EntityGlyphidScout extends EntityGlyphid { currentLocation.zCoord + dirVec.zCoord * 10 ); } - + + //TODO: replace that with some actual directions + protected Vec3 getPlayerTargetDirection() { + return PollutionHandler.targetCoords; + } } From debfa0f3ee18cd4e0939d604d18c6da72d9c4930 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 14 Dec 2023 16:36:10 +0100 Subject: [PATCH 179/207] better spawner behavior, digger glyphid --- .../blocks/generic/BlockGlyphidSpawner.java | 102 +++++++++--------- src/main/java/com/hbm/config/MobConfig.java | 10 +- .../java/com/hbm/entity/EntityMappings.java | 1 + .../com/hbm/entity/mob/EntityGlyphid.java | 17 ++- .../hbm/entity/mob/EntityGlyphidDigger.java | 41 +++++++ .../java/com/hbm/inventory/fluid/Fluids.java | 4 +- .../java/com/hbm/main/ResourceManager.java | 1 + .../hbm/textures/entity/glyphid_digger.png | Bin 0 -> 2239 bytes 8 files changed, 114 insertions(+), 62 deletions(-) create mode 100644 src/main/java/com/hbm/entity/mob/EntityGlyphidDigger.java create mode 100644 src/main/resources/assets/hbm/textures/entity/glyphid_digger.png diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java index f2acc1999..0150ad3d5 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -4,23 +4,14 @@ import java.util.*; import java.util.function.Function; import com.hbm.config.MobConfig; -import com.hbm.entity.mob.EntityGlyphid; -import com.hbm.entity.mob.EntityGlyphidBehemoth; -import com.hbm.entity.mob.EntityGlyphidBlaster; -import com.hbm.entity.mob.EntityGlyphidBombardier; -import com.hbm.entity.mob.EntityGlyphidBrawler; -import com.hbm.entity.mob.EntityGlyphidBrenda; -import com.hbm.entity.mob.EntityGlyphidNuclear; -import com.hbm.entity.mob.EntityGlyphidScout; +import com.hbm.entity.mob.*; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.ModItems; - import com.hbm.util.Tuple.Pair; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -30,25 +21,27 @@ import net.minecraft.world.World; public class BlockGlyphidSpawner extends BlockContainer { - public BlockGlyphidSpawner(Material p_i45386_1_) { - super(p_i45386_1_); + public BlockGlyphidSpawner(Material mat) { + super(mat); } @Override public Item getItemDropped(int meta, Random rand, int fortune) { return ModItems.egg_glyphid; } + private static final ArrayList, int[]>> spawnMap = new ArrayList<>(); - static{ - //big thanks to martin for the suggestion of using functions - spawnMap.add(new Pair<>(EntityGlyphid::new, MobConfig.glyphidChance)); - spawnMap.add(new Pair<>(EntityGlyphidBombardier::new, MobConfig.bombardierChance)); - spawnMap.add(new Pair<>(EntityGlyphidBrawler::new, MobConfig.brawlerChance)); - spawnMap.add(new Pair<>(EntityGlyphidBlaster::new, MobConfig.blasterChance)); - spawnMap.add(new Pair<>(EntityGlyphidBehemoth::new, MobConfig.behemothChance)); - spawnMap.add(new Pair<>(EntityGlyphidBrenda::new, MobConfig.brendaChance)); - spawnMap.add(new Pair<>(EntityGlyphidNuclear::new, MobConfig.johnsonChance)); + static { + // big thanks to martin for the suggestion of using functions + spawnMap.add(new Pair<>(EntityGlyphid::new, MobConfig.glyphidChance)); + spawnMap.add(new Pair<>(EntityGlyphidBombardier::new, MobConfig.bombardierChance)); + spawnMap.add(new Pair<>(EntityGlyphidBrawler::new, MobConfig.brawlerChance)); + spawnMap.add(new Pair<>(EntityGlyphidDigger::new, MobConfig.diggerChance)); + spawnMap.add(new Pair<>(EntityGlyphidBlaster::new, MobConfig.blasterChance)); + spawnMap.add(new Pair<>(EntityGlyphidBehemoth::new, MobConfig.behemothChance)); + spawnMap.add(new Pair<>(EntityGlyphidBrenda::new, MobConfig.brendaChance)); + spawnMap.add(new Pair<>(EntityGlyphidNuclear::new, MobConfig.johnsonChance)); } @Override @@ -67,47 +60,51 @@ public class BlockGlyphidSpawner extends BlockContainer { @Override public void updateEntity() { - float soot; if(!worldObj.isRemote && this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL) { - if (initialSpawn || worldObj.getTotalWorldTime() % MobConfig.swarmCooldown == 0) { - - if (worldObj.getBlock(xCoord, yCoord + 1, zCoord) != Blocks.air) { - return; - } + if(initialSpawn || worldObj.getTotalWorldTime() % MobConfig.swarmCooldown == 0) { + int count = 0; - for (Object e : worldObj.loadedEntityList) { - if (e instanceof EntityGlyphid) { + for(Object e : worldObj.loadedEntityList) { + if(e instanceof EntityGlyphid) { count++; - if (count >= MobConfig.spawnMax) return; + //if(count >= MobConfig.spawnMax) + // return; } } - List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 6, yCoord + 1, zCoord - 6, xCoord + 7, yCoord + 9, zCoord + 7)); - soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT); + List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 9, yCoord + 1, zCoord - 9, xCoord + 10, yCoord + 8, zCoord + 10)); + float soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT); - if (list.size() <= 3) { + if(list.size() <= 3) { ArrayList currentSwarm = createSwarm(soot); - for (EntityGlyphid glyphid : currentSwarm) { - glyphid.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); - worldObj.spawnEntityInWorld(glyphid); - glyphid.moveEntity(worldObj.rand.nextGaussian(), 0, worldObj.rand.nextGaussian()); + for(EntityGlyphid glyphid : currentSwarm) { + trySpawnEntity(glyphid); } - if (!initialSpawn && worldObj.rand.nextInt(MobConfig.scoutSwarmSpawnChance + 1) == 0 && soot >= MobConfig.scoutThreshold) { - EntityGlyphidScout scout = new EntityGlyphidScout(worldObj); - scout.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); - worldObj.spawnEntityInWorld(scout); + if(!initialSpawn && worldObj.rand.nextInt(MobConfig.scoutSwarmSpawnChance + 1) == 0 && soot >= MobConfig.scoutThreshold) { + trySpawnEntity(new EntityGlyphidScout(worldObj)); } initialSpawn = false; - } - + } + } + } + + public void trySpawnEntity(EntityGlyphid glyphid) { + double offsetX = glyphid.getRNG().nextGaussian() * 3; + double offsetZ = glyphid.getRNG().nextGaussian() * 3; + + for(int i = 0; i < 7; i++) { + glyphid.setLocationAndAngles(xCoord + 0.5 + offsetX, yCoord - 2 + i, zCoord + 0.5 + offsetZ, worldObj.rand.nextFloat() * 360.0F, 0.0F); + if(glyphid.getCanSpawnHere()) { + worldObj.spawnEntityInWorld(glyphid); + return; } } } @@ -115,21 +112,18 @@ public class BlockGlyphidSpawner extends BlockContainer { public ArrayList createSwarm(float soot) { Random rand = new Random(); - ArrayList currentSpawns = new ArrayList<>(); - int swarmAmount = (int) Math.min(MobConfig.baseSwarmSize * Math.max(MobConfig.swarmScalingMult * (soot / MobConfig.sootStep), 1), 10); while(currentSpawns.size() <= swarmAmount) { - //(dys)functional programing - for (Pair, int[]> glyphid : spawnMap) { - - int[] chance = glyphid.getValue(); - int adjustedChance = (int) (chance[0] + (chance[1] - chance[1] / Math.max(((soot + 1)/3 ), 1))); - if (rand.nextInt(100) <= adjustedChance) { - currentSpawns.add(glyphid.getKey().apply(worldObj)); - } - } + // (dys)functional programing + for(Pair, int[]> glyphid : spawnMap) { + int[] chance = glyphid.getValue(); + int adjustedChance = (int) (chance[0] + (chance[1] - chance[1] / Math.max(((soot + 1) / 3), 1))); + if(rand.nextInt(100) <= adjustedChance) { + currentSpawns.add(glyphid.getKey().apply(worldObj)); + } + } } return currentSpawns; } diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index 19d515b5a..2cf744595 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -36,7 +36,7 @@ public class MobConfig { public static int largeHiveChance = 5; public static int largeHiveThreshold = 30; - public static int swarmCooldown = 120; + public static int swarmCooldown = 120 * 20; public static int baseSwarmSize = 5; public static double swarmScalingMult = 1.2; @@ -46,6 +46,7 @@ public class MobConfig { public static int[] brawlerChance = {5, 35}; public static int[] bombardierChance = {20, -15}; public static int[] blasterChance = {-15, 40}; + public static int[] diggerChance = {-15, 25}; public static int[] behemothChance = {-30, 45}; public static int[] brendaChance = {-50, 60}; public static int[] johnsonChance = {-50, 60}; @@ -136,9 +137,10 @@ public class MobConfig { brawlerChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC02_brawlerChance", "Base Spawn chance and soot modifier for a glyphid brawler", new int[]{10, 30}); bombardierChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC03_bombardierChance", "Base Spawn chance and soot modifier for a glyphid bombardier", new int[]{20, -15}); blasterChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC04_blasterChance", "Base Spawn chance and soot modifier for a glyphid blaster", new int[]{-5, 40}); - behemothChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC05_behemothChance", "Base Spawn chance and soot modifier for a glyphid behemoth", new int[]{-30, 45}); - brendaChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC06_brendaChance", "Base Spawn chance and soot modifier for a glyphid brenda", new int[]{-50, 60}); - johnsonChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC07_johnsonChance", "Base Spawn chance and soot modifier for Big Man Johnson", new int[]{-50, 60}); + diggerChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC05_diggerChance", "Base Spawn chance and soot modifier for a glyphid digger", new int[]{-15, 25}); + behemothChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC06_behemothChance", "Base Spawn chance and soot modifier for a glyphid behemoth", new int[]{-30, 45}); + brendaChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC07_brendaChance", "Base Spawn chance and soot modifier for a glyphid brenda", new int[]{-50, 60}); + johnsonChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC08_johnsonChance", "Base Spawn chance and soot modifier for Big Man Johnson", new int[]{-50, 60}); String rampantDesc = "Rampant Mode changes glyphid behavior and spawning to be more aggressive, changes include:\n" + "\n" diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 4c33cab1f..c40457abc 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -265,6 +265,7 @@ public class EntityMappings { addMob(EntityGlyphidBlaster.class, "entity_glyphid_blaster", 0xD83737, 0xDBB79D); addMob(EntityGlyphidScout.class, "entity_glyphid_scout", 0x273038, 0xB9E36B); addMob(EntityGlyphidNuclear.class, "entity_glyphid_nuclear", 0x267F00, 0xA0A0A0); + addMob(EntityGlyphidDigger.class, "entity_glyphid_digger", 0x273038, 0x724A21); addMob(EntityPlasticBag.class, "entity_plastic_bag", 0xd0d0d0, 0x808080); addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index 08a067063..f6c0ae768 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -32,7 +32,7 @@ import net.minecraft.util.*; import net.minecraft.potion.Potion; import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; - +import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; import javax.annotation.Nullable; @@ -79,6 +79,9 @@ public class EntityGlyphid extends EntityMob { protected boolean hasWaypoint = false; /** Yeah, fuck, whatever, anything goes now */ protected EntityWaypoint taskWaypoint = null; + + public static final int TYPE_NORMAL = 0; + public static final int TYPE_INFECTED = 1; public EntityGlyphid(World world) { super(world); @@ -98,6 +101,7 @@ public class EntityGlyphid extends EntityMob { super.entityInit(); this.dataWatcher.addObject(16, new Byte((byte) 0)); //wall climbing this.dataWatcher.addObject(17, new Byte((byte) 0b11111)); //armor + this.dataWatcher.addObject(18, new Byte((byte) 0)); //subtype (i.e. normal, infected, etc) } @Override @@ -204,7 +208,8 @@ public class EntityGlyphid extends EntityMob { } if(hasWaypoint) { - if(MobConfig.rampantDig) { + + if(canDig()) { MovingObjectPosition obstacle = findWaypointObstruction(); if (getScale() >= 1 && getCurrentTask() != TASK_DIG && obstacle != null) { @@ -229,6 +234,9 @@ public class EntityGlyphid extends EntityMob { } } + protected boolean canDig() { + return MobConfig.rampantDig; + } public void onBlinded(){ this.entityToAttack = null; @@ -593,4 +601,9 @@ public class EntityGlyphid extends EntityMob { this.currentTask = nbt.getInteger("task"); } + + @Override + public boolean getCanSpawnHere() { + return this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL && this.worldObj.checkNoEntityCollision(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(this.boundingBox); + } } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidDigger.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidDigger.java new file mode 100644 index 000000000..09801fe4b --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidDigger.java @@ -0,0 +1,41 @@ +package com.hbm.entity.mob; + +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidDigger extends EntityGlyphid { + + public EntityGlyphidDigger(World world) { + super(world); + } + + public ResourceLocation getSkin() { + return ResourceManager.glyphid_digger_tex; + } + + @Override + public double getScale() { + return 1.25D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(35D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(5D); + } + + @Override + public boolean isArmorBroken(float amount) { + return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.25, 2), 100); + } + + @Override + protected boolean canDig() { + return true; + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 5cc0ee007..b2efa5781 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -331,9 +331,9 @@ public class Fluids { THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, new FT_Corrosive(65)); THORIUM_SALT_DEPLETED = new FluidType("THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); - FULLERENE = new FluidType(132, "FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); + FULLERENE = new FluidType("FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); PHEROMONE = new FluidType("PHEROMONE", 0x5FA6E8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(1)); - PHEROMONE_M = new FluidType("PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(2)); + PHEROMONE_M = new FluidType(132, "PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(2)); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 9816aee87..0d1a613df 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -750,6 +750,7 @@ public class ResourceManager { public static final ResourceLocation glyphid_blaster_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_blaster.png"); public static final ResourceLocation glyphid_scout_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_scout.png"); public static final ResourceLocation glyphid_nuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_nuclear.png"); + public static final ResourceLocation glyphid_digger_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_digger.png"); //ZIRNOX public static final ResourceLocation zirnox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/zirnox.png"); diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_digger.png b/src/main/resources/assets/hbm/textures/entity/glyphid_digger.png new file mode 100644 index 0000000000000000000000000000000000000000..524358e730f743d404a26a3f5d5cdea813d3f2eb GIT binary patch literal 2239 zcmV;w2tfCVP)ud-d908fE_Qx_&H}igI*V(mw9~epdq^GA( z-^`ntC$}Jgz5Y%;I4EKLMh5F^t5A%_R{Nu8?^^wb+qHD2Q2+c|yk@VzQx~H# z6vGM*%L;yf^GWP$ufJ0R02HG!tgo$FZTMR;8pES!?^@dVbpOHb>)@CvmO>|JJ6< zgh)yp9(VK1=}+pv7*=MB*dM%)QUbnUNm1A~I4F(sD4b^*jm>$nN(?H{OWx$IH6_p7 zWAc)y0%NhYk(+%S4~}hXBR4Mx+qGxl+gJn%nOb7Bc^=A-LkL~(J4W;KDMlhvdKgZO_M3K&)R%T&yw*~nIU&&>g{}`ClUOs= z^fcv3*J+blDtRR&B0(pL$n(xMflEWWNQVp*o@?)N+@%}V|q&BT? z8C6V}rQ$-62FmvV6%v~s`7Z%#)oOzH9zeeZ?@8Lj;rs-hCJS`p+yxamBFoY z)I@buffA?!0nS1Xryww+b^zU6k-!&kOOc%F`>`Pp)rZHp1vpiv9yMVNZ5kgve{!#u$~xN2*MGQOOD0YG z?C0CosvX6w6zDTyY(xKr@gEYEt#n{qegyz9O2al(r!O9~0%>1;O+t(*i(d!KSb;pi z2LLCeL45i9bE~)YYYhOF`Ep-}YW!>ePj4`75r}bKH_zbH{=a6cfje+X1@ybT^|e*! zt0$UCOshZy9gk!o)Kocnk}3OO5h#)2n{`vp*Oo1(RVXSDk@9Vh6#G%~LjDhc5xCjA zZVx+jU`I)2Q-CyLlM2~IJ=F`GasJr<$C zG*u{m5Q(3W;JJAG=-E5t^YEk1{lR<74@!Y^w$h3E$kSvZbYK9sU*YS+n2F$d6!e;6 zSi#GWKUDH06X8x9R}BGVQ|1Lze*E&|537HiX=5raF)(qUMhG34RNCj@Nj(ihLn@R4 z){p|V?CI>DNy|RTX!|k?ZFWn^M3y_XLmbU70U)}B6!V#e6^0EfsJ_bzoE6$JvlXIA zE-WcfQ=;~84|ZR-XgQ0PzBpmD{C0Y;pR7P%I5H0f;w(+GA-d1MzF!Ch^52lKc`49` zxhpWV2H~z9=-=^4Gu!Rn-Fj9&Py+XhQvAomm{}s&AqKuQX9Tdz;dm_NjW=)IskJIE z4`V`!yM|EUe4dEXH_a8PN@CUzuvEmWz?jHWvu&b4fb{=wnSL(o&(1ye47MJkbVl zSL`W?0Ja(=@}zSy$fhQ&g**JET@>;FCIm_g%M=<>05ivX*b zaB_U)T^FV1nyqx4Sysw*`HRuM1dx8e2)S{R3FE9veIh4QXnrq@voG8vv7#K%L*|L1aSQycj{8e!Oj1oOa#+l3BYyqQeaCJ z$t%npzF6?GA?TBM8H$3(Y?q}(m4fIsKVD?u{_e7tt3rq(P@5z!V(K+(1PSz2oG0au~({T#e8q1<~um2rUh}st78OD$e&+!c`?P%7nF?RXe^)_z!yO4x9^J_?G|x N002ovPDHLkV1i_!I~@Q3 literal 0 HcmV?d00001 From 95520daebc5f9500f59ae4a554a0fde26430fe3a Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 15 Dec 2023 14:25:44 +0100 Subject: [PATCH 180/207] moldy glyphids --- .../com/hbm/blocks/generic/BlockGlyphid.java | 21 ++++++++---- .../blocks/generic/BlockGlyphidSpawner.java | 30 +++++++++++++--- .../com/hbm/entity/mob/EntityGlyphid.java | 32 +++++++++++------- .../hbm/render/entity/mob/RenderGlyphid.java | 30 +++++++++++++++- .../com/hbm/world/feature/GlyphidHive.java | 5 +-- src/main/resources/assets/hbm/lang/de_DE.lang | 3 +- src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/blocks/glyphid_base_2.png | Bin 560 -> 0 bytes .../textures/blocks/glyphid_base_infested.png | Bin 0 -> 594 bytes .../blocks/glyphid_base_infested_alt.png | Bin 0 -> 585 bytes .../blocks/glyphid_eggs_base_infested.png | Bin 0 -> 423 bytes .../textures/blocks/glyphid_eggs_infested.png | Bin 0 -> 747 bytes .../textures/entity/glyphid_infestation.png | Bin 0 -> 1288 bytes 13 files changed, 96 insertions(+), 26 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_base_infested.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_base_infested_alt.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base_infested.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_infested.png create mode 100644 src/main/resources/assets/hbm/textures/entity/glyphid_infestation.png diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java index 267624e28..be1613d3a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java @@ -11,8 +11,9 @@ import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; public class BlockGlyphid extends Block { - - public IIcon[] icons = new IIcon[2]; + + public IIcon[] iconsStandard = new IIcon[2]; + public IIcon[] iconsInfested = new IIcon[2]; public BlockGlyphid(Material mat) { super(mat); @@ -24,20 +25,28 @@ public class BlockGlyphid extends Block { long l = (long) (x * 3129871) ^ (long)y * 116129781L ^ (long)z; l = l * l * 42317861L + l * 11L; int i = (int)(l >> 16 & 3L); - return icons[(int)(Math.abs(i) % this.icons.length)]; + IIcon[] icons = this.getIconArray(world.getBlockMetadata(x, y, z)); + return icons[(int)(Math.abs(i) % icons.length)]; } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { - return icons[meta % this.icons.length]; + IIcon[] icons = this.getIconArray(meta); + return icons[meta % icons.length]; } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister reg) { - icons[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_base"); - icons[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_alt"); + iconsStandard[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_base"); + iconsStandard[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_alt"); + iconsInfested[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_infested"); + iconsInfested[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_infested_alt"); } + protected IIcon[] getIconArray(int meta) { + if(meta == 1) return this.iconsInfested; + return this.iconsStandard; + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java index 0150ad3d5..a212e980b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -8,18 +8,25 @@ import com.hbm.entity.mob.*; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.ModItems; - +import com.hbm.lib.RefStrings; import com.hbm.util.Tuple.Pair; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; public class BlockGlyphidSpawner extends BlockContainer { + + public IIcon[] icons = new IIcon[2]; public BlockGlyphidSpawner(Material mat) { super(mat); @@ -30,6 +37,19 @@ public class BlockGlyphidSpawner extends BlockContainer { return ModItems.egg_glyphid; } + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return icons[meta % icons.length]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + icons[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_eggs_alt"); + icons[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_eggs_infested"); + } + private static final ArrayList, int[]>> spawnMap = new ArrayList<>(); static { @@ -80,7 +100,7 @@ public class BlockGlyphidSpawner extends BlockContainer { if(list.size() <= 3) { - ArrayList currentSwarm = createSwarm(soot); + ArrayList currentSwarm = createSwarm(soot, this.getBlockMetadata()); for(EntityGlyphid glyphid : currentSwarm) { trySpawnEntity(glyphid); @@ -109,7 +129,7 @@ public class BlockGlyphidSpawner extends BlockContainer { } } - public ArrayList createSwarm(float soot) { + public ArrayList createSwarm(float soot, int meta) { Random rand = new Random(); ArrayList currentSpawns = new ArrayList<>(); @@ -121,7 +141,9 @@ public class BlockGlyphidSpawner extends BlockContainer { int[] chance = glyphid.getValue(); int adjustedChance = (int) (chance[0] + (chance[1] - chance[1] / Math.max(((soot + 1) / 3), 1))); if(rand.nextInt(100) <= adjustedChance) { - currentSpawns.add(glyphid.getKey().apply(worldObj)); + EntityGlyphid entity = glyphid.getKey().apply(worldObj); + if(meta == 1) entity.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_INFECTED); + currentSpawns.add(entity); } } } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index f6c0ae768..a4dc08af5 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -80,8 +80,14 @@ public class EntityGlyphid extends EntityMob { /** Yeah, fuck, whatever, anything goes now */ protected EntityWaypoint taskWaypoint = null; + //subtypes public static final int TYPE_NORMAL = 0; public static final int TYPE_INFECTED = 1; + + //data watcher keys + public static final int DW_WALL = 16; + public static final int DW_ARMOR = 17; + public static final int DW_SUBTYPE = 18; public EntityGlyphid(World world) { super(world); @@ -99,9 +105,9 @@ public class EntityGlyphid extends EntityMob { @Override protected void entityInit() { super.entityInit(); - this.dataWatcher.addObject(16, new Byte((byte) 0)); //wall climbing - this.dataWatcher.addObject(17, new Byte((byte) 0b11111)); //armor - this.dataWatcher.addObject(18, new Byte((byte) 0)); //subtype (i.e. normal, infected, etc) + this.dataWatcher.addObject(DW_WALL, new Byte((byte) 0)); //wall climbing + this.dataWatcher.addObject(DW_ARMOR, new Byte((byte) 0b11111)); //armor + this.dataWatcher.addObject(DW_SUBTYPE, new Byte((byte) 0)); //subtype (i.e. normal, infected, etc) } @Override @@ -282,7 +288,7 @@ public class EntityGlyphid extends EntityMob { public boolean attackEntityFrom(DamageSource source, float amount) { if(!source.isDamageAbsolute() && !source.isUnblockable() && !worldObj.isRemote && !source.isFireDamage() && !source.getDamageType().equals(ModDamageSource.s_cryolator)) { - byte armor = this.dataWatcher.getWatchableObjectByte(17); + byte armor = this.dataWatcher.getWatchableObjectByte(DW_ARMOR); if(armor != 0) { //if at least one bit of armor is present @@ -322,7 +328,7 @@ public class EntityGlyphid extends EntityMob { public float calculateDamage(float amount) { - byte armor = this.dataWatcher.getWatchableObjectByte(17); + byte armor = this.dataWatcher.getWatchableObjectByte(DW_ARMOR); int divisor = 1; for(int i = 0; i < 5; i++) { @@ -341,7 +347,7 @@ public class EntityGlyphid extends EntityMob { } public void breakOffArmor() { - byte armor = this.dataWatcher.getWatchableObjectByte(17); + byte armor = this.dataWatcher.getWatchableObjectByte(DW_ARMOR); List indices = Arrays.asList(0, 1, 2, 3, 4); Collections.shuffle(indices); @@ -350,7 +356,7 @@ public class EntityGlyphid extends EntityMob { if((armor & bit) > 0) { armor &= ~bit; armor = (byte) (armor & 0b11111); - this.dataWatcher.updateObject(17, armor); + this.dataWatcher.updateObject(DW_ARMOR, armor); worldObj.playSoundAtEntity(this, "mob.zombie.woodbreak", 1.0F, 1.25F); break; } @@ -388,11 +394,11 @@ public class EntityGlyphid extends EntityMob { } public boolean isBesideClimbableBlock() { - return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0; + return (this.dataWatcher.getWatchableObjectByte(DW_WALL) & 1) != 0; } public void setBesideClimbableBlock(boolean climbable) { - byte watchable = this.dataWatcher.getWatchableObjectByte(16); + byte watchable = this.dataWatcher.getWatchableObjectByte(DW_WALL); if(climbable) { watchable = (byte) (watchable | 1); @@ -400,7 +406,7 @@ public class EntityGlyphid extends EntityMob { watchable &= -2; } - this.dataWatcher.updateObject(16, Byte.valueOf(watchable)); + this.dataWatcher.updateObject(DW_WALL, Byte.valueOf(watchable)); } @Override @@ -569,7 +575,8 @@ public class EntityGlyphid extends EntityMob { @Override public void writeEntityToNBT(NBTTagCompound nbt) { super.writeEntityToNBT(nbt); - nbt.setByte("armor", this.dataWatcher.getWatchableObjectByte(17)); + nbt.setByte("armor", this.dataWatcher.getWatchableObjectByte(DW_ARMOR)); + nbt.setByte("subtype", this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE)); nbt.setBoolean("hasHome", hasHome); nbt.setInteger("homeX", homeX); @@ -587,7 +594,8 @@ public class EntityGlyphid extends EntityMob { @Override public void readEntityFromNBT(NBTTagCompound nbt) { super.readEntityFromNBT(nbt); - this.dataWatcher.updateObject(17, nbt.getByte("armor")); + this.dataWatcher.updateObject(DW_ARMOR, nbt.getByte("armor")); + this.dataWatcher.updateObject(DW_SUBTYPE, nbt.getByte("subtype")); this.hasHome = nbt.getBoolean("hasHome"); this.homeX = nbt.getInteger("homeX"); diff --git a/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java b/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java index 49b0ea4f8..6ad109605 100644 --- a/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java +++ b/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java @@ -3,6 +3,7 @@ package com.hbm.render.entity.mob; import org.lwjgl.opengl.GL11; import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import net.minecraft.client.model.ModelBase; @@ -13,10 +14,13 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; public class RenderGlyphid extends RenderLiving { + + public static final ResourceLocation glyphid_infested_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_infestation.png"); public RenderGlyphid() { super(new ModelGlyphid(), 1.0F); this.shadowOpaque = 0.0F; + this.setRenderPassModel(this.mainModel); } @Override @@ -24,6 +28,21 @@ public class RenderGlyphid extends RenderLiving { EntityGlyphid glyphid = (EntityGlyphid) entity; return glyphid.getSkin(); } + + @Override + protected int shouldRenderPass(EntityLivingBase entity, int pass, float interp) { + if(pass != 0) { + return -1; + } else { + if(entity.getDataWatcher().getWatchableObjectByte(EntityGlyphid.DW_SUBTYPE) == EntityGlyphid.TYPE_INFECTED) { + this.bindTexture(glyphid_infested_tex); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + return 1; + } + return -1; + } + } public static class ModelGlyphid extends ModelBase { @@ -43,11 +62,20 @@ public class RenderGlyphid extends RenderLiving { GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); + this.renderModel(entity, limbSwing); + + GL11.glPopMatrix(); + } + + public void renderModel(Entity entity, float limbSwing) { + + GL11.glPushMatrix(); + double s = ((EntityGlyphid) entity).getScale(); GL11.glScaled(s, s, s); EntityLivingBase living = (EntityLivingBase) entity; - byte armor = living.getDataWatcher().getWatchableObjectByte(17); + byte armor = living.getDataWatcher().getWatchableObjectByte(EntityGlyphid.DW_ARMOR); double walkCycle = limbSwing; diff --git a/src/main/java/com/hbm/world/feature/GlyphidHive.java b/src/main/java/com/hbm/world/feature/GlyphidHive.java index f0ddf5c41..a5e8df06b 100644 --- a/src/main/java/com/hbm/world/feature/GlyphidHive.java +++ b/src/main/java/com/hbm/world/feature/GlyphidHive.java @@ -105,6 +105,7 @@ public class GlyphidHive { public static void generateBigGround(World world, int x, int y, int z, Random rand, boolean openDesign) { int orientation = rand.nextInt(2) + 2; + int overrideMeta = 0; for(int i = 0; i < 11; i++) { for(int j = 0; j < 7; j++) { @@ -115,7 +116,7 @@ public class GlyphidHive { boolean hasWall = !openDesign && (block != orientation && block > 1 && block < 6); if(block == 1 || hasWall) { - world.setBlock(x + i - 5, y + j - 2, z + k - 5, ModBlocks.glyphid_base); + world.setBlock(x + i - 5, y + j - 2, z + k - 5, ModBlocks.glyphid_base, overrideMeta, 2); } else if (block != 0) { world.setBlock(x + i - 5, y + j - 2, z + k - 5, Blocks.air); } @@ -123,7 +124,7 @@ public class GlyphidHive { } } - world.setBlock(x, y - 1, z, ModBlocks.glyphid_spawner); + world.setBlock(x, y - 1, z, ModBlocks.glyphid_spawner, overrideMeta, 2); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 34cd14145..9a561713c 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -508,7 +508,7 @@ death.attack.tauBlast=%1$s lud die XVL1456 zu lange auf und wurde in Stücke ger death.attack.teleporter=%1$s wurde ins Nichts teleportiert. desc.item.rtgHeat=Hitzelevel: %s -desc.gui.rtgBFurnace.desc=Bönitigt mindestens 15 Hitze um zu starten$Je mehr Hitze, desto schneller der Vorgang$Hitze über dem maximalen Level hat keinen Effekt$Gold-198 kann zu Quecksilber zerfallen +desc.gui.rtgBFurnace.desc=Benötigt mindestens 15 Hitze um zu starten$Je mehr Hitze, desto schneller der Vorgang$Hitze über dem maximalen Level hat keinen Effekt$Gold-198 kann zu Quecksilber zerfallen desc.gui.rtgBFurnace.heat=§eHitzelevel: %s desc.gui.rtgBFurnace.pellets=Akzeptierte Pellets: desc.gui.rtgBFurnace.pellet=%s (%s Hitze) @@ -527,6 +527,7 @@ entity.entity_glyphid_blaster.name=Glyphid-Blaster entity.entity_glyphid_bombardier.name=Glyphid-Bombardierer entity.entity_glyphid_brawler.name=Glyphid-Schläger entity.entity_glyphid_brenda.name=Brenda +entity.entity_glyphid_digger.name=Glyphid-Gräber entity.entity_glyphid_nuclear.name=Der dicke Johnson entity.entity_glyphid_scout.name=Glyphid-Späher entity.entity_ntm_fbi.name=FBI Agent diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 720fc1d5f..78f5468b6 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1036,6 +1036,7 @@ entity.entity_glyphid_blaster.name=Glyphid Blaster entity.entity_glyphid_bombardier.name=Glyphid Bombardier entity.entity_glyphid_brawler.name=Glyphid Brawler entity.entity_glyphid_brenda.name=Brenda +entity.entity_glyphid_digger.name=Glyphid Digger entity.entity_glyphid_nuclear.name=Big Man Johnson entity.entity_glyphid_scout.name=Glyphid Scout entity.entity_ntm_fbi.name=FBI Agent diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png deleted file mode 100644 index 541a53c5f56156aede4138dd7d332424794fa7f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmV-00?+-4P)r7UJMf+)l?Omx>Fj}sc&pbu~ZZtET9o(Dj%OG}a{B-o{F_bJPVN3=m71wfF9 zr>%E5W(RcF!QQ6?yHxJkT@!%0=aI)rNsz}0K@`eEmSIXIA3iRyUp8{z9*)okeeyUd z6$|h>4gkCNkf3Omd12o*FrlN1$mtC`(?v1JJ8lU z(p*I=VWcqdk?N1lhEw(j!|VdkHg%eR zPc)j%8d!H7TJJiX@`A>7B~Z@&di5-A=&o}E7V{89A&T8KrKh>)v8`r*3bGB+f*=)O y%P>*w;fNp#v4?&0H|_-NP5U^fhrd)gBjO% zSBSWa4`7?vXt$17tv3wPKFiXe+Ym_)fKg|Hl9g$oWQE)oE-BKPo8;Z-J@?+D`yYEb zBJQGOMO|xrTU`A3Z4gdE6bnSq1DQh%!|a?P=d9KnEZ}s0gGhQbY_T{A$=|*?Ag!)7 zN><#@9$Bq7v|C3gS#kaSi<{QBsCKvKJBDGfUu`#yJ=?rS?B#p*{8PulAniNJBAq#+ z$H|48H1={c!KgFgXZaP8>_|!tNs-O~7^HmwrsXY>&KRc`d(2^G$O+}8Ls7CikoMQZ zAC|$)HMEVwFu-4}Hz-*#%+B|##5kFj!3=`Ev~{hCbY|}B%*Z&M-!PrS`0UcTkk}yG zT?r5EZtq@+O=XBHGesMeFi}1^ccNp(rh*liU(<*Ry$;~)-;|=0><~#^44)N zNc%5}tsmsJz!yo+$oKS*QD?$3m>KUUILlfUY*R($B=%!3M?MwAUQUg6&(>M-^ld#D)dD1aHAx^a*$z zq%OMej!0BdA+1`K3NwmEIK;7mRw|1yL#)nb{NYnV1j(0HfY!0t-N1>V=0X1E`*VyI7{?m$RMNuMC#rgc2 zRlcU>HIb>}!}ODx*3w;d$8Cr|)_VZL=%b zQ7`7p)eVTMNE$HdZ|t0&p5Z$llkvfS3R)bkx)y2M+RKX@mSt`LHIVB%SgU-EOcjG+ zx58E1v@G+AwM9|lJDz#3zutd-IGxRzeZHhox3G6CT3!=-$0GajlizoLh{6uGZJSNK zy}hID``ETkUEBwUTGflIZ{$TzJMaN`(tb?2`c)||ijt%sC64>nh^z_VV zk@VvS#d;r7wZIZ0Fq}rct=%7E+|Vv)P>C`YTT$2{RSTl9v)R0VzpYMA)xyN}*%tCI X^w1Mf)T-^U00000NkvXXu0mjfDq9bo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base_infested.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base_infested.png new file mode 100644 index 0000000000000000000000000000000000000000..c4308d58a14300f969bc074dfb12c568671243c7 GIT binary patch literal 423 zcmV;Y0a*TtP)8EYWp^-wKff^wIU+i_l>F|BJ&*nY$0Wx z-QBsai&6^iPAP@^z7Y}jeV_A}Qr;d!0;~ID4BVYaDVpLw@GTw#oaZ^sNh!@ATWeg` z#dl2;*92m=TI+27&fd&;yN*_xU36xTJMB}&2l{9`1g|QRv&R>QO4LbT7 Rdbj`p002ovPDHLkV1gZMxCa0L literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_infested.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_infested.png new file mode 100644 index 0000000000000000000000000000000000000000..93786bc31f6bba1b63eed61356441c1e1be0926a GIT binary patch literal 747 zcmVF|9LGQI&Wtn5ya~2~R4T0Ku!oQeHicG++9+6v^yVc9 z>J(n=kc63p7w1q!2fav#x|m*;{^)ImAf+NyB!Uppw2j>j-;VC6)pS_rMZeRJ-}}Ay z`||mHU(Lw%y8*kAano2aLB8PP`xT}K5&*P6x(vWd-er0qfs_&e$8m^c+%(Cah42mX z1s8yQ^+(uyaZ1(w=s2cnsb0r%0MO*-5CBq2vfYy;dn)X!KY~|UQ}va+i)mWwF~@Pp zxM=_)p;XWFkWyCj(i*jUGypu$V|pNg?^p2s3JZ^uv_HCx+#KRZ=^-^E*Y5^G2-@y7 z1CZ^WRMLwRDWsH2ZkV_BFA^)S^Lns}2teDtW(-}!&^3}h3oMQ{{dZXi0YF1TLzRbL zVP>`pQVS0Y>rb%bb(p55CUy>YVCWiSU9S*AkbZC$fUz!=BF$)dNw&L8vZn&2HSBmD zdoND0INF4vYpmp5TKg?>y^R1wb&J;iMSQ=4X<9@=snY`q?06l2mOd+ZA^rKc%K&We z{8DR;0H$FOZ%nJA20ZzIvu8|{6bF{hviA;=7#=jge^e0f^S z@8#ocZEevx+`*U0uN-JzL(_D8zru+#->MM9si7;Qx<$U=lDJj zcHT;eJ|Ix8y(+q&*sNFEKD-2@;UtJ{r5D)RGC6iL zqUvdwXrL6mA0mWM_HMcm5nAnj&}#RMHNl(kiii>|F!f4l*B&urDcge^v1bE02%Rsc zAq<4rYWD;A+OlKCoDUoUh^mU=oqS;f?ADhTuj%z;)BW9s(}Y6dr{e;xh|yD6K#gmJS;|W^1uuIr( z$`BFQoAZ=)Ifg-R9K<$%C)Xz;+}}L~(lH^Q<3;YQYFm6bPb*wJ4;jZ)YE>H*ho)I7 zEW88k+D;LIh=doZTm})RT4mmJvtET<-!%2)2DQeMMzC2h)j-zZQ>fq^%Aqgr)uL6c z`Bn7*%7CY0Y?J&5EtKkv?|2tpR9RiIK~%NAkr~Et;tsf}u9QqP=#2y2Vn&&r3#kGm zBB%p$DL~a^q-cBL3lkAW!%6V?@RD1piJ!%(qPtq6#!Hn+UNLvazNuq0eUMyNEThtr zSxit9W!F4EaN3pjqB#P@X1xmIl{!^x zGwr1^>$Ir6oW-yW&!TD@$%owq1; zKj%|QU01046t0rG6l)v2fxV{fv}>lTvL>o45IIybx$YEEJL-*F*lN8eBL$;en24-9 z>Q5?kkuWYM40_{$g=Y{1NB4J6!ROaIM#D+j-KF*7i0dQ`4GqR<#do=R%?qfq}}nkHh_U`mYoK0000 Date: Sat, 16 Dec 2023 18:24:43 +0100 Subject: [PATCH 181/207] fancier glyphid hives, maggots --- src/main/java/com/hbm/blocks/ModBlocks.java | 4 +- .../com/hbm/blocks/generic/BlockGlyphid.java | 21 ++- .../blocks/generic/BlockGlyphidSpawner.java | 30 +++- .../com/hbm/blocks/generic/BlockLoot.java | 8 - src/main/java/com/hbm/config/MobConfig.java | 46 +++--- .../java/com/hbm/entity/EntityMappings.java | 1 + .../com/hbm/entity/mob/EntityGlyphid.java | 41 ++++- .../hbm/entity/mob/EntityGlyphidBehemoth.java | 2 +- .../hbm/entity/mob/EntityGlyphidBlaster.java | 2 +- .../entity/mob/EntityGlyphidBombardier.java | 4 +- .../hbm/entity/mob/EntityGlyphidScout.java | 53 +++---- .../hbm/entity/mob/EntityParasiteMaggot.java | 49 ++++++ .../entity/projectile/EntityBulletBaseNT.java | 4 +- .../com/hbm/items/weapon/ItemDisperser.java | 84 +++++----- src/main/java/com/hbm/lib/HbmWorldGen.java | 8 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../hbm/render/entity/mob/RenderMaggot.java | 28 ++++ .../com/hbm/render/tileentity/RenderLoot.java | 21 ++- .../com/hbm/render/util/RenderInfoSystem.java | 4 +- src/main/java/com/hbm/util/LootGenerator.java | 43 ++++++ .../com/hbm/world/feature/GlyphidHive.java | 143 ++++++++---------- .../hbm/textures/entity/parasite_maggot.png | Bin 0 -> 441 bytes .../items/disperser_canister_overlay.png | Bin 202 -> 154 bytes 23 files changed, 383 insertions(+), 214 deletions(-) create mode 100644 src/main/java/com/hbm/entity/mob/EntityParasiteMaggot.java create mode 100644 src/main/java/com/hbm/render/entity/mob/RenderMaggot.java create mode 100644 src/main/resources/assets/hbm/textures/entity/parasite_maggot.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 7196b59c5..91476fd94 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2935,8 +2935,8 @@ public class ModBlocks { GameRegistry.registerBlock(mush, mush.getUnlocalizedName()); GameRegistry.registerBlock(mush_block, mush_block.getUnlocalizedName()); GameRegistry.registerBlock(mush_block_stem, mush_block_stem.getUnlocalizedName()); - GameRegistry.registerBlock(glyphid_base, glyphid_base.getUnlocalizedName()); - GameRegistry.registerBlock(glyphid_spawner, glyphid_spawner.getUnlocalizedName()); + register(glyphid_base); + register(glyphid_spawner); GameRegistry.registerBlock(moon_turf, moon_turf.getUnlocalizedName()); //Waste diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java index be1613d3a..240356149 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java @@ -1,22 +1,30 @@ package com.hbm.blocks.generic; +import java.util.List; + +import com.hbm.blocks.IBlockMulti; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; -public class BlockGlyphid extends Block { +public class BlockGlyphid extends Block implements IBlockMulti { public IIcon[] iconsStandard = new IIcon[2]; public IIcon[] iconsInfested = new IIcon[2]; public BlockGlyphid(Material mat) { super(mat); + this.setCreativeTab(MainRegistry.blockTab); } @Override @@ -49,4 +57,15 @@ public class BlockGlyphid extends Block { if(meta == 1) return this.iconsInfested; return this.iconsStandard; } + + @Override + public int getSubCount() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < getSubCount(); ++i) list.add(new ItemStack(item, 1, i)); + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java index a212e980b..d9ff39bc7 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -3,12 +3,14 @@ package com.hbm.blocks.generic; import java.util.*; import java.util.function.Function; +import com.hbm.blocks.IBlockMulti; import com.hbm.config.MobConfig; import com.hbm.entity.mob.*; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Pair; import cpw.mods.fml.relauncher.Side; @@ -16,7 +18,9 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -24,12 +28,13 @@ import net.minecraft.util.IIcon; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; -public class BlockGlyphidSpawner extends BlockContainer { +public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti { public IIcon[] icons = new IIcon[2]; public BlockGlyphidSpawner(Material mat) { super(mat); + this.setCreativeTab(MainRegistry.blockTab); } @Override @@ -50,6 +55,17 @@ public class BlockGlyphidSpawner extends BlockContainer { icons[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_eggs_infested"); } + @Override + public int getSubCount() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < getSubCount(); ++i) list.add(new ItemStack(item, 1, i)); + } + private static final ArrayList, int[]>> spawnMap = new ArrayList<>(); static { @@ -90,8 +106,7 @@ public class BlockGlyphidSpawner extends BlockContainer { for(Object e : worldObj.loadedEntityList) { if(e instanceof EntityGlyphid) { count++; - //if(count >= MobConfig.spawnMax) - // return; + if(count >= MobConfig.spawnMax) return; } } @@ -134,18 +149,21 @@ public class BlockGlyphidSpawner extends BlockContainer { Random rand = new Random(); ArrayList currentSpawns = new ArrayList<>(); int swarmAmount = (int) Math.min(MobConfig.baseSwarmSize * Math.max(MobConfig.swarmScalingMult * (soot / MobConfig.sootStep), 1), 10); - - while(currentSpawns.size() <= swarmAmount) { + int cap = 100; + + while(currentSpawns.size() <= swarmAmount && cap >= 0) { // (dys)functional programing for(Pair, int[]> glyphid : spawnMap) { int[] chance = glyphid.getValue(); int adjustedChance = (int) (chance[0] + (chance[1] - chance[1] / Math.max(((soot + 1) / 3), 1))); - if(rand.nextInt(100) <= adjustedChance) { + if(soot >= chance[2] && rand.nextInt(100) <= adjustedChance) { EntityGlyphid entity = glyphid.getKey().apply(worldObj); if(meta == 1) entity.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_INFECTED); currentSpawns.add(entity); } } + + cap--; } return currentSpawns; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockLoot.java b/src/main/java/com/hbm/blocks/generic/BlockLoot.java index db0a966f7..cf949e161 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockLoot.java +++ b/src/main/java/com/hbm/blocks/generic/BlockLoot.java @@ -51,14 +51,6 @@ public class BlockLoot extends BlockContainer { @Override public void onBlockAdded(World world, int x, int y, int z) { super.onBlockAdded(world, x, y, z); - - /*TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); - - if(loot != null && loot.items.isEmpty()) { - loot.addItem(new ItemStack(ModItems.gun_lever_action), 0, 0, 0); - }*/ - - //LootGenerator.lootCapStash(world, x, y, z); } @Override diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index 2cf744595..14f219193 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -42,14 +42,14 @@ public class MobConfig { public static double swarmScalingMult = 1.2; public static int sootStep = 50; - public static int[] glyphidChance = {50, -40}; - public static int[] brawlerChance = {5, 35}; - public static int[] bombardierChance = {20, -15}; - public static int[] blasterChance = {-15, 40}; - public static int[] diggerChance = {-15, 25}; - public static int[] behemothChance = {-30, 45}; - public static int[] brendaChance = {-50, 60}; - public static int[] johnsonChance = {-50, 60}; + public static int[] glyphidChance = {50, -40, 0}; + public static int[] brawlerChance = {5, 35, 1}; + public static int[] bombardierChance = {20, -15, 1}; + public static int[] blasterChance = {-15, 40, 5}; + public static int[] diggerChance = {-15, 25, 5}; + public static int[] behemothChance = {-30, 45, 10}; + public static int[] brendaChance = {-50, 60, 20}; + public static int[] johnsonChance = {-50, 60, 50}; public static double spawnMax = 50; public static boolean enableInfestation = true; @@ -116,15 +116,11 @@ public class MobConfig { config.addCustomCategoryComment(CATEGORY, "General Glyphid spawn logic configuration\n" + "\n" - + "The chances work in a simple way:\n" - + "The base chance is the stock chance of the bug to spawn within a swarm, unaffected by soot\n" - + "As soot increases, the spawn rate of the bug increases until it reaches a limit determined by the modifier\n" - + "If the default chance is negative, the mob will not spawn by default, and the lower it is,\n" - + "The longer it takes for the modifier to make it positive\n" - + "If the Modifier is negative, the bug will spawn less often in swarms,\n" - + "And its place will be taken over by another one.\n" - + "\n" - + "The formula for glyphid spawning chance is: (chance + (modifier - modifier / (soot/10)))" + + "The first number is the base chance which applies at 0 soot,\n" + + "the second number is the modifier that applies with soot based on the formular below,\n" + + "the third number is a hard minimum of soot for this type to spawn.\n" + + "Negative base chances mean that glyphids won't spawn outright, negative modifiers mean that the type becomes less likely with higher soot.\n" + + "The formula for glyphid spawning chance is: (base chance + (modifier - modifier / max( (soot + 1)/3, 3 )))\n" + "The formula for glyphid swarm scaling is: (baseSwarmSize * Math.max(swarmScalingMult * soot/sootStep, 1))"); @@ -133,14 +129,14 @@ public class MobConfig { sootStep = CommonConfig.createConfigInt(config, CATEGORY, "12.GS03_sootStep", "The soot amount the above multiplier applies to the swarm size", 50); swarmCooldown = CommonConfig.createConfigInt(config, CATEGORY, "12.GS04_swarmCooldown", "How often do glyphid swarms spawn, in seconds", 120) * 20; - glyphidChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC01_glyphidChance", "Base Spawn chance and soot modifier for a glyphid grunt", new int[]{50, -45}); - brawlerChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC02_brawlerChance", "Base Spawn chance and soot modifier for a glyphid brawler", new int[]{10, 30}); - bombardierChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC03_bombardierChance", "Base Spawn chance and soot modifier for a glyphid bombardier", new int[]{20, -15}); - blasterChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC04_blasterChance", "Base Spawn chance and soot modifier for a glyphid blaster", new int[]{-5, 40}); - diggerChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC05_diggerChance", "Base Spawn chance and soot modifier for a glyphid digger", new int[]{-15, 25}); - behemothChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC06_behemothChance", "Base Spawn chance and soot modifier for a glyphid behemoth", new int[]{-30, 45}); - brendaChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC07_brendaChance", "Base Spawn chance and soot modifier for a glyphid brenda", new int[]{-50, 60}); - johnsonChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC08_johnsonChance", "Base Spawn chance and soot modifier for Big Man Johnson", new int[]{-50, 60}); + glyphidChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC01_glyphidChance", "Base Spawn chance and soot modifier for a glyphid grunt", new int[]{50, -45, 0}); + brawlerChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC02_brawlerChance", "Base Spawn chance and soot modifier for a glyphid brawler", new int[]{10, 30, 1}); + bombardierChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC03_bombardierChance", "Base Spawn chance and soot modifier for a glyphid bombardier", new int[]{20, -15, 1}); + blasterChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC04_blasterChance", "Base Spawn chance and soot modifier for a glyphid blaster", new int[]{-5, 40, 5}); + diggerChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC05_diggerChance", "Base Spawn chance and soot modifier for a glyphid digger", new int[]{-15, 25, 5}); + behemothChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC06_behemothChance", "Base Spawn chance and soot modifier for a glyphid behemoth", new int[]{-30, 45, 10}); + brendaChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC07_brendaChance", "Base Spawn chance and soot modifier for a glyphid brenda", new int[]{-50, 60, 20}); + johnsonChance = CommonConfig.createConfigIntList(config, CATEGORY, "12.GC08_johnsonChance", "Base Spawn chance and soot modifier for Big Man Johnson", new int[]{-50, 60, 50}); String rampantDesc = "Rampant Mode changes glyphid behavior and spawning to be more aggressive, changes include:\n" + "\n" diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index c40457abc..6884483a8 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -267,6 +267,7 @@ public class EntityMappings { addMob(EntityGlyphidNuclear.class, "entity_glyphid_nuclear", 0x267F00, 0xA0A0A0); addMob(EntityGlyphidDigger.class, "entity_glyphid_digger", 0x273038, 0x724A21); addMob(EntityPlasticBag.class, "entity_plastic_bag", 0xd0d0d0, 0x808080); + addMob(EntityParasiteMaggot.class, "entity_parasite_maggot", 0xd0d0d0, 0x808080); addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index a4dc08af5..86d783cd6 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -174,8 +174,8 @@ public class EntityGlyphid extends EntityMob { protected Entity findPlayerToAttack() { if(this.isPotionActive(Potion.blindness)) return null; - EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, useExtendedTargeting() && getCurrentTask() != 0 ? 128D : 16D); - return entityplayer != null && (MobConfig.rampantExtendedTargetting || canEntityBeSeen(entityplayer)) ? entityplayer : null; + EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, useExtendedTargeting() ? 128D : 16D); + return entityplayer; } @Override @@ -193,7 +193,7 @@ public class EntityGlyphid extends EntityMob { if (!this.hasPath()) { // hell yeah!! - if (useExtendedTargeting() && this.entityToAttack != null) { + if(useExtendedTargeting() && this.entityToAttack != null) { this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, true, true)); } else if (getCurrentTask() != TASK_IDLE) { @@ -281,11 +281,15 @@ public class EntityGlyphid extends EntityMob { @Override protected boolean canDespawn() { - return ticksExisted > 3500 && entityToAttack == null && getCurrentTask() == TASK_IDLE; + return entityToAttack == null && getCurrentTask() == TASK_IDLE && this.ticksExisted > 100; } @Override public boolean attackEntityFrom(DamageSource source, float amount) { + + if(source.getEntity() instanceof EntityGlyphid) { + return false; + } if(!source.isDamageAbsolute() && !source.isUnblockable() && !worldObj.isRemote && !source.isFireDamage() && !source.getDamageType().equals(ModDamageSource.s_cryolator)) { byte armor = this.dataWatcher.getWatchableObjectByte(DW_ARMOR); @@ -318,8 +322,29 @@ public class EntityGlyphid extends EntityMob { if(this.isPotionActive(HbmPotion.phosphorus.getId())){ amount *= 1.5F; } + + boolean alive = this.getHealth() > 0; + boolean wasAttacked = super.attackEntityFrom(source, amount); + + if(alive && this.getHealth() <= 0) { + if(this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE) == TYPE_INFECTED) { - return super.attackEntityFrom(source, amount); + int j = 2 + this.rand.nextInt(3); + + for(int k = 0; k < j; ++k) { + float f = ((float) (k % 2) - 0.5F) * 0.5F; + float f1 = ((float) (k / 2) - 0.5F) * 0.5F; + EntityParasiteMaggot maggot = new EntityParasiteMaggot(worldObj); + maggot.setLocationAndAngles(this.posX + (double) f, this.posY + 0.5D, this.posZ + (double) f1, this.rand.nextFloat() * 360.0F, 0.0F); + maggot.motionX = f; + maggot.motionZ = f1; + maggot.velocityChanged = true; + this.worldObj.spawnEntityInWorld(maggot); + } + } + } + + return wasAttacked; } public boolean isArmorBroken(float amount) { @@ -437,16 +462,16 @@ public class EntityGlyphid extends EntityMob { * @param waypoint The waypoint for the task, can be null */ public void setCurrentTask(int task, @Nullable EntityWaypoint waypoint){ - this.currentTask = task; + this.currentTask = task; this.taskWaypoint = waypoint; this.hasWaypoint = waypoint != null; - if (taskWaypoint != null) { + if(taskWaypoint != null) { taskX = (int) taskWaypoint.posX; taskY = (int) taskWaypoint.posY; taskZ = (int) taskWaypoint.posZ; - if (taskWaypoint.highPriority) { + if(taskWaypoint.highPriority) { this.entityToAttack = null; this.setPathToEntity(null); } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java index fbc138cde..27f2595d9 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java @@ -85,7 +85,7 @@ public class EntityGlyphidBehemoth extends EntityGlyphid { public void acidAttack(){ - if (!worldObj.isRemote && entityToAttack instanceof EntityLivingBase) { + if(!worldObj.isRemote && entityToAttack instanceof EntityLivingBase && this.getDistanceToEntity(entityToAttack) < 20) { this.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 2 * 20, 6)); EntityChemical chem = new EntityChemical(worldObj, this); diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java index 4c2e649a8..ef2ccde88 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java @@ -65,7 +65,7 @@ public class EntityGlyphidBlaster extends EntityGlyphidBombardier { @Override public int getBombCount() { - return 20; + return 10; } @Override diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java index 3b385e363..7fda8206d 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java @@ -44,7 +44,7 @@ public class EntityGlyphidBombardier extends EntityGlyphid { this.lastZ = e.posZ; } - if(this.ticksExisted % 20 == 1) { + if(this.ticksExisted % 60 == 1) { boolean topAttack = rand.nextBoolean(); @@ -95,7 +95,7 @@ public class EntityGlyphidBombardier extends EntityGlyphid { } public int getBombCount() { - return 10; + return 5; } public float getSpreadMult() { diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java index bd09849ec..7e0378bbd 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java @@ -12,6 +12,7 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.*; @@ -119,38 +120,35 @@ public class EntityGlyphidScout extends EntityGlyphid { timer++; if (!worldObj.isRemote && canBuildHiveHere()) { - if(timer == 1) { + if(timer == 1) { - EntityWaypoint additional = new EntityWaypoint(worldObj); - additional.setLocationAndAngles(posX, posY, posZ, 0, 0); - additional.setWaypointType(TASK_IDLE); + EntityWaypoint additional = new EntityWaypoint(worldObj); + additional.setLocationAndAngles(posX, posY, posZ, 0, 0); + additional.setWaypointType(TASK_IDLE); - //First, go home and get reinforcements - EntityWaypoint home = new EntityWaypoint(worldObj); - home.setWaypointType(TASK_RETREAT_FOR_REINFORCEMENTS); - home.setAdditionalWaypoint(additional); - home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); - home.maxAge = 1200; - home.radius = 6; + // First, go home and get reinforcements + EntityWaypoint home = new EntityWaypoint(worldObj); + home.setWaypointType(TASK_RETREAT_FOR_REINFORCEMENTS); + home.setAdditionalWaypoint(additional); + home.setLocationAndAngles(homeX, homeY, homeZ, 0, 0); + home.maxAge = 1200; + home.radius = 6; - worldObj.spawnEntityInWorld(home); + worldObj.spawnEntityInWorld(home); - this.taskWaypoint = home; - this.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 40 * 20, 10)); - communicate(TASK_RETREAT_FOR_REINFORCEMENTS, taskWaypoint); + this.taskWaypoint = home; + this.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 40 * 20, 10)); + communicate(TASK_RETREAT_FOR_REINFORCEMENTS, taskWaypoint); - } else if (timer >= 5) { + } else if(timer >= 5) { - worldObj.newExplosion(this, posX, posY, posZ, 5F, false, false); - GlyphidHive.generateBigGround(worldObj, - (int) Math.floor(posX), - (int) Math.floor(posY), - (int) Math.floor(posZ), rand, true); - this.setDead(); + worldObj.newExplosion(this, posX, posY, posZ, 5F, false, false); + GlyphidHive.generateSmall(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), rand, this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE) != TYPE_NORMAL, false); + this.setDead(); - } else { - communicate(TASK_FOLLOW, taskWaypoint); - } + } else { + communicate(TASK_FOLLOW, taskWaypoint); + } } } } @@ -307,8 +305,11 @@ public class EntityGlyphidScout extends EntityGlyphid { ); } - //TODO: replace that with some actual directions protected Vec3 getPlayerTargetDirection() { + EntityPlayer player = worldObj.getClosestPlayerToEntity(this, 300); + if(player != null) { + return Vec3.createVectorHelper(player.posX, player.posY, player.posZ); + } return PollutionHandler.targetCoords; } } diff --git a/src/main/java/com/hbm/entity/mob/EntityParasiteMaggot.java b/src/main/java/com/hbm/entity/mob/EntityParasiteMaggot.java new file mode 100644 index 000000000..40cc3b003 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityParasiteMaggot.java @@ -0,0 +1,49 @@ +package com.hbm.entity.mob; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureAttribute; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.world.World; + +public class EntityParasiteMaggot extends EntityMob { + + public EntityParasiteMaggot(World world) { + super(world); + this.setSize(0.3F, 0.7F); + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(8.0D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1.0D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(2.0D); + } + + @Override + protected boolean canTriggerWalking() { + return false; + } + + @Override + protected Entity findPlayerToAttack() { + return this.worldObj.getClosestVulnerablePlayerToEntity(this, 16); + } + + @Override + public void onUpdate() { + this.renderYawOffset = this.rotationYaw; + super.onUpdate(); + } + + @Override + protected boolean isValidLightLevel() { + return true; + } + + @Override + public EnumCreatureAttribute getCreatureAttribute() { + return EnumCreatureAttribute.ARTHROPOD; + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java index d8ee0f4f3..bfaaf8b31 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java @@ -378,8 +378,8 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet data.setInteger("block", Block.getIdFromBlock(Blocks.redstone_block)); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, living.posX, living.posY + living.height - head, living.posZ), new TargetPoint(living.dimension, living.posX, living.posY, living.posZ, 50)); worldObj.playSoundEffect(victim.posX, victim.posY, victim.posZ, "mob.zombie.woodbreak", 1.0F, 0.95F + rand.nextFloat() * 0.2F); - } - } + } + } } } diff --git a/src/main/java/com/hbm/items/weapon/ItemDisperser.java b/src/main/java/com/hbm/items/weapon/ItemDisperser.java index 9971ee3e7..682ff3eec 100644 --- a/src/main/java/com/hbm/items/weapon/ItemDisperser.java +++ b/src/main/java/com/hbm/items/weapon/ItemDisperser.java @@ -18,59 +18,57 @@ import net.minecraft.world.World; import java.util.List; public class ItemDisperser extends ItemFluidTank { - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if (!player.capabilities.isCreativeMode) { - --stack.stackSize; - } + if(!player.capabilities.isCreativeMode) { + --stack.stackSize; + } - world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); + world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - if (!world.isRemote) { + if(!world.isRemote) { - EntityDisperserCanister canister = new EntityDisperserCanister(world, player); + EntityDisperserCanister canister = new EntityDisperserCanister(world, player); + canister.setType(Item.getIdFromItem(this)); + canister.setFluid(stack.getItemDamage()); + world.spawnEntityInWorld(canister); + } + return stack; + } - canister.setType(Item.getIdFromItem(this)); - canister.setFluid(stack.getItemDamage()); - world.spawnEntityInWorld(canister); + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tabs, List list) { - } + FluidType[] order = Fluids.getInNiceOrder(); - return stack; - } - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(Item item, CreativeTabs tabs, List list) { + for(int i = 1; i < order.length; ++i) { + FluidType type = order[i]; + int id = type.getID(); + if(type.isDispersable() && this == ModItems.disperser_canister) { + list.add(new ItemStack(item, 1, id)); + } else if(type == Fluids.PHEROMONE || type == Fluids.SULFURIC_ACID && this == ModItems.glyphid_gland) { + list.add(new ItemStack(item, 1, id)); + } - FluidType[] order = Fluids.getInNiceOrder(); + } + } - for(int i = 1; i < order.length; ++i) { - FluidType type = order[i]; - int id = type.getID(); - if(type.isDispersable() && this == ModItems.disperser_canister) { - list.add(new ItemStack(item, 1, id)); - } else if (type == Fluids.PHEROMONE || type == Fluids.SULFURIC_ACID && this == ModItems.glyphid_gland) { - list.add(new ItemStack(item, 1, id)); - } + @Override + public String getItemStackDisplayName(ItemStack stack) { - } - } + String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); - @Override - public String getItemStackDisplayName(ItemStack stack) { + s = this == ModItems.glyphid_gland ? s1 + " " + s : s + " " + s1; + return s; + } - String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); - - s = this == ModItems.glyphid_gland ? s1 + " " + s : s + " " + s1 ; - return s; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister p_94581_1_) { - super.registerIcons(p_94581_1_); - this.overlayIcon = this == ModItems.disperser_canister ? p_94581_1_.registerIcon("hbm:disperser_canister_overlay") : p_94581_1_.registerIcon("hbm:fluid_identifier_overlay"); - } + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister p_94581_1_) { + super.registerIcons(p_94581_1_); + this.overlayIcon = this == ModItems.disperser_canister ? p_94581_1_.registerIcon("hbm:disperser_canister_overlay") : p_94581_1_.registerIcon("hbm:fluid_identifier_overlay"); + } } diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index ea38eed02..d4bb78bc6 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -229,7 +229,13 @@ public class HbmWorldGen implements IWorldGenerator { int x = i + rand.nextInt(16) + 8; int z = j + rand.nextInt(16) + 8; int y = world.getHeightValue(x, z); - if(world.getBlock(x, y - 1, z).isNormalCube()) GlyphidHive.generateBigGround(world, x, y, z, rand, false); + + for(int k = 3; k >= -1; k--) { + if(world.getBlock(x, y - 1 + k, z).isNormalCube()) { + GlyphidHive.generateSmall(world, x, y + k, z, rand, rand.nextInt(10) == 0, true); + break; + } + } } if(biome == BiomeGenBase.plains || biome == BiomeGenBase.desert) { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 3d82a99ed..dcb6e842c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -764,6 +764,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBlaster.class, new RenderGlyphid()); RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidScout.class, new RenderGlyphid()); RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidNuclear.class, new RenderGlyphidNuclear()); + RenderingRegistry.registerEntityRenderingHandler(EntityParasiteMaggot.class, new RenderMaggot()); RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); RenderingRegistry.registerEntityRenderingHandler(EntityPlasticBag.class, new RenderPlasticBag()); RenderingRegistry.registerEntityRenderingHandler(EntityPigeon.class, new RenderPigeon(new ModelPigeon(), 0.3F)); diff --git a/src/main/java/com/hbm/render/entity/mob/RenderMaggot.java b/src/main/java/com/hbm/render/entity/mob/RenderMaggot.java new file mode 100644 index 000000000..6fa0184cc --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderMaggot.java @@ -0,0 +1,28 @@ +package com.hbm.render.entity.mob; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.model.ModelSilverfish; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.ResourceLocation; + +public class RenderMaggot extends RenderLiving { + + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/entity/parasite_maggot.png"); + + public RenderMaggot() { + super(new ModelSilverfish(), 0.3F); + } + + @Override + protected float getDeathMaxRotation(EntityLivingBase entity) { + return 180.0F; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return texture; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLoot.java b/src/main/java/com/hbm/render/tileentity/RenderLoot.java index 1813bb7d7..125ebb617 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLoot.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLoot.java @@ -1,6 +1,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.items.ModItems; @@ -82,16 +83,20 @@ public class RenderLoot extends TileEntitySpecialRenderer { protected ModelLeverAction shotgun; private void renderShotgun() { - - if(shotgun == null) - shotgun = new ModelLeverAction(); - GL11.glScaled(0.25, 0.25, 0.25); - GL11.glTranslated(3, 0.0625, 2); - GL11.glRotated(-25, 0, 1, 0); + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glTranslated(1, 0, 0); + GL11.glRotated(25, 0, 1, 0); GL11.glRotated(90, 1, 0, 0); - bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverAction.png")); - shotgun.render(null, 0F, 0F, 0F, 0F, 0F, 0.0625F); + GL11.glRotated(90, 0, 1, 0); + + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + bindTexture(ResourceManager.ff_wood); + ResourceManager.ff_maresleg.renderPart("Grip"); + bindTexture(ResourceManager.ff_gun_bright); + ResourceManager.ff_maresleg.renderPart("Gun"); + ResourceManager.ff_maresleg.renderPart("Lever"); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); } private void renderStandardItem(ItemStack stack) { diff --git a/src/main/java/com/hbm/render/util/RenderInfoSystem.java b/src/main/java/com/hbm/render/util/RenderInfoSystem.java index da618d194..94f7760d2 100644 --- a/src/main/java/com/hbm/render/util/RenderInfoSystem.java +++ b/src/main/java/com/hbm/render/util/RenderInfoSystem.java @@ -44,7 +44,7 @@ public class RenderInfoSystem { } } - @SubscribeEvent + @SubscribeEvent(receiveCanceled = true) public void onOverlayRender(RenderGameOverlayEvent.Pre event) { if(event.type != ElementType.CROSSHAIRS) @@ -80,7 +80,7 @@ public class RenderInfoSystem { int side = pX + 5 + longest; int height = messages.size() * 10 + pZ + 2; int z = 0; - + GL11.glDisable(GL11.GL_TEXTURE_2D); Tessellator tess = Tessellator.instance; tess.startDrawingQuads(); diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index 69b0af7f5..537796427 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -8,6 +8,7 @@ import com.hbm.items.ModItems; import com.hbm.items.special.ItemBookLore; import com.hbm.items.ItemAmmoEnums.AmmoFatman; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -140,4 +141,46 @@ public class LootGenerator { } } } + + public static void lootBones(World world, int x, int y, int z) { + + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); + + if(loot != null && loot.items.isEmpty()) { + + int limit = world.rand.nextInt(3) + 3; + for(int i = 0; i < limit; i++) { + addItemWithDeviation(loot, world.rand, new ItemStack(Items.bone), world.rand.nextDouble() - 0.5, i * 0.03125, world.rand.nextDouble() - 0.5); + } + } + } + + public static void lootGlyphidHive(World world, int x, int y, int z) { + + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); + + if(loot != null && loot.items.isEmpty()) { + + int limit = world.rand.nextInt(3) + 3; + for(int i = 0; i < limit; i++) { + + ItemStack stack = new ItemStack(ModItems.ammo_12gauge, 4); + + switch(world.rand.nextInt(11)) { + case 0: stack = new ItemStack(ModItems.steel_plate); break; + case 1: stack = new ItemStack(ModItems.gun_lever_action); break; + case 2: stack = new ItemStack(ModItems.grenade_if_generic); break; + case 3: + case 4: stack = new ItemStack(ModItems.bottle_nuka, 1 + world.rand.nextInt(2)); break; + case 5: + case 6: stack = new ItemStack(ModItems.ingot_steel, 3 + world.rand.nextInt(10)); break; + case 7: stack = new ItemStack(ModItems.steel_pickaxe); break; + case 8: stack = new ItemStack(ModItems.gas_mask_m65); break; + case 9: stack = new ItemStack(ModItems.ammo_20gauge, 8); break; + } + + addItemWithDeviation(loot, world.rand, stack, world.rand.nextDouble() - 0.5, i * 0.03125, world.rand.nextDouble() - 0.5); + } + } + } } diff --git a/src/main/java/com/hbm/world/feature/GlyphidHive.java b/src/main/java/com/hbm/world/feature/GlyphidHive.java index a5e8df06b..f615b6519 100644 --- a/src/main/java/com/hbm/world/feature/GlyphidHive.java +++ b/src/main/java/com/hbm/world/feature/GlyphidHive.java @@ -3,130 +3,117 @@ package com.hbm.world.feature; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.util.LootGenerator; import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntitySkull; import net.minecraft.world.World; public class GlyphidHive { - public static final int[][][] schematicBigGround = new int[][][] { + public static final int[][][] schematicSmall = new int[][][] { { {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, {0,0,0,0,1,1,1,0,0,0,0}, - {0,0,0,1,1,1,1,1,0,0,0}, - {0,0,0,1,1,1,1,1,0,0,0}, - {0,0,0,1,1,1,1,1,0,0,0}, {0,0,0,0,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, - }, - { - {0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,1,1,1,0,0,0,0}, - {0,0,0,1,1,9,1,1,0,0,0}, - {0,0,1,1,9,9,9,1,1,0,0}, - {0,0,1,9,9,9,9,9,1,0,0}, - {0,0,1,1,9,9,9,1,1,0,0}, - {0,0,0,1,1,9,1,1,0,0,0}, - {0,0,0,0,1,1,1,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, }, { {0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,3,3,3,0,0,0,0}, - {0,0,0,1,1,9,1,1,0,0,0}, - {0,0,1,1,9,9,9,1,1,0,0}, - {0,3,1,9,9,9,9,9,1,2,0}, - {0,3,9,9,9,9,9,9,9,2,0}, - {0,3,1,9,9,9,9,9,1,2,0}, - {0,0,1,1,9,9,9,1,1,0,0}, - {0,0,0,1,1,9,1,1,0,0,0}, - {0,0,0,0,2,2,2,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, - }, - { - {0,0,0,0,0,3,0,0,0,0,0}, - {0,0,0,0,3,3,3,0,0,0,0}, - {0,0,0,1,3,9,3,1,0,0,0}, - {0,0,1,1,9,9,9,1,1,0,0}, - {0,3,3,9,9,9,9,9,2,2,0}, - {3,3,9,9,9,9,9,9,9,2,2}, - {0,3,3,9,9,9,9,9,2,2,0}, - {0,0,1,1,9,9,9,1,1,0,0}, - {0,0,0,1,2,9,2,1,0,0,0}, - {0,0,0,0,2,2,2,0,0,0,0}, - {0,0,0,0,0,2,0,0,0,0,0}, - }, - { - {0,0,0,0,3,3,3,0,0,0,0}, - {0,0,0,1,3,3,3,1,0,0,0}, - {0,0,1,1,3,9,3,1,1,0,0}, - {0,1,1,1,9,9,0,1,1,1,0}, - {3,3,3,9,9,9,9,9,2,2,2}, - {3,3,9,9,9,9,9,9,9,2,2}, - {3,3,3,9,9,9,9,9,2,2,2}, - {0,1,1,1,9,9,9,1,1,1,0}, - {0,0,1,1,2,9,2,1,1,0,0}, - {0,0,0,1,2,2,2,1,0,0,0}, - {0,0,0,0,2,2,2,0,0,0,0}, - }, - { {0,0,0,0,1,1,1,0,0,0,0}, {0,0,0,1,1,1,1,1,0,0,0}, {0,0,1,1,1,1,1,1,1,0,0}, - {0,1,1,1,1,1,1,1,1,1,0}, - {1,1,1,1,1,1,1,1,1,1,1}, - {1,1,1,1,1,1,1,1,1,1,1}, - {1,1,1,1,1,1,1,1,1,1,1}, - {0,1,1,1,1,1,1,1,1,1,0}, + {0,0,1,1,1,1,1,1,1,0,0}, {0,0,1,1,1,1,1,1,1,0,0}, {0,0,0,1,1,1,1,1,0,0,0}, {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, }, { {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,0,0,0,0}, - {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,1,1,1,3,3,3,1,1,1,0}, + {0,1,1,1,3,3,3,1,1,1,0}, + {0,1,1,1,3,3,3,1,1,1,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,1,1,2,2,2,1,1,0,0}, + {0,1,1,2,2,2,2,2,1,1,0}, + {0,1,1,2,2,2,2,2,1,1,0}, + {0,1,1,2,2,2,2,2,1,1,0}, + {0,0,1,1,2,2,2,1,1,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, {0,0,1,1,1,1,1,1,1,0,0}, {0,1,1,1,1,1,1,1,1,1,0}, {0,1,1,1,1,1,1,1,1,1,0}, {0,1,1,1,1,1,1,1,1,1,0}, {0,0,1,1,1,1,1,1,1,0,0}, - {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, {0,0,0,0,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, } }; - public static void generateBigGround(World world, int x, int y, int z, Random rand, boolean openDesign) { - - int orientation = rand.nextInt(2) + 2; - int overrideMeta = 0; + public static void generateSmall(World world, int x, int y, int z, Random rand, boolean infected, boolean loot) { + int overrideMeta = infected ? 1 : 0; for(int i = 0; i < 11; i++) { - for(int j = 0; j < 7; j++) { + for(int j = 0; j < 5; j++) { for(int k = 0; k < 11; k++) { - int block = schematicBigGround[6 - j][i][k]; - - boolean hasWall = !openDesign && (block != orientation && block > 1 && block < 6); - - if(block == 1 || hasWall) { - world.setBlock(x + i - 5, y + j - 2, z + k - 5, ModBlocks.glyphid_base, overrideMeta, 2); - } else if (block != 0) { - world.setBlock(x + i - 5, y + j - 2, z + k - 5, Blocks.air); + int block = schematicSmall[4 - j][i][k]; + int iX = x + i - 5; + int iY = y + j - 2; + int iZ = z + k - 5; + + switch(block) { + case 1: world.setBlock(iX, iY, iZ, ModBlocks.glyphid_base, overrideMeta, 2); break; + case 2: world.setBlock(iX, iY, iZ, rand.nextInt(3) == 0 ? ModBlocks.glyphid_spawner : ModBlocks.glyphid_base, overrideMeta, 2); break; + case 3: + int r = rand.nextInt(3); + if(r == 0) { + world.setBlock(iX, iY, iZ, Blocks.skull, 1, 3); + TileEntitySkull skull = (TileEntitySkull) world.getTileEntity(iX, iY, iZ); + if(skull != null) skull.func_145903_a(rand.nextInt(16)); + } else if(r == 1) { + world.setBlock(iX, iY, z + k - 5, ModBlocks.deco_loot, 0, 2); + LootGenerator.lootBones(world, iX, iY, iZ); + } else if(r == 2) { + if(loot) { + world.setBlock(iX, iY, iZ, ModBlocks.deco_loot, 0, 2); + LootGenerator.lootGlyphidHive(world, iX, iY, iZ); + } else { + world.setBlock(iX, iY, iZ, ModBlocks.glyphid_base, overrideMeta, 2); + } + } + break; } } } } - - world.setBlock(x, y - 1, z, ModBlocks.glyphid_spawner, overrideMeta, 2); - } - } - diff --git a/src/main/resources/assets/hbm/textures/entity/parasite_maggot.png b/src/main/resources/assets/hbm/textures/entity/parasite_maggot.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc94381b07fd409381bc3ab4c1663b4d9954fda GIT binary patch literal 441 zcmV;q0Y?6bP)nl>AdDagBPfdu*^1}uCFbkpNuaGV z*qYycXjFlHnVZtX7~0F=&`~-J=~Bi7)Wxu`WArdI1X`=WrG>i)Uj^zN7t^8ljnJjt j1Tmc71U(*)$7y~6-Gd4XsJqi}00000NkvXXu0mjf`9#V+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/disperser_canister_overlay.png b/src/main/resources/assets/hbm/textures/items/disperser_canister_overlay.png index 2fdf3d9419511af0d49b291a3a4d4f413c184177..1dcba8865d84680baf53bdba24401e16103f8d94 100644 GIT binary patch delta 137 zcmX@bIE!(DWIY=L1B3kM|A|0~rP#?cgaZg_I8r)*{6J3^#}JF&w|yIV4>)izdzvNk zJ^L=T?2E*bt}hek=`ULHTiej?X3l4QmF|?idiU3;q=%P%KhAp~#7ML!WtnHz=f&K| oZcfrsx^-WS;i~WbniH%!=M849-1Yx7&~OG%S3j3^PD}|+0Ab2DaR2}S delta 185 zcmbQmc#3g?WIZzj1A~Sxe=v|@EDmyaVpw-h<|UBBlJ4m1$iT3%pZiZDE0E6<;1l9{ z^ytz5|Nq~+cMm8q?c94okh+o}zhIysgM-$}FF-zLfk$L90|VcF5N5Ps4ORgPntQr9 zhG+z@?J?wIFyLTf{Qo~aShRheu3C|iqQ;|3=NU|TJf&9Y&eMFuu;9W}%Z1#(L)d=5 bvhDC_Jjrx5Wpl)2pcxFFu6{1-oD!M<3voUb From 5af5c6c861c316b229e63f38d6cb4fd8f004a201 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 17 Dec 2023 17:42:42 +0100 Subject: [PATCH 182/207] more shit to clean up --- .../com/hbm/blocks/generic/BlockGlyphid.java | 6 + .../blocks/generic/BlockGlyphidSpawner.java | 6 +- src/main/java/com/hbm/config/MobConfig.java | 4 - .../java/com/hbm/config/RadiationConfig.java | 4 - .../java/com/hbm/entity/EntityMappings.java | 2 +- .../grenade/EntityDisperserCanister.java | 111 +++++++++--------- .../hbm/entity/grenade/EntityGrenadeBase.java | 27 ++--- .../com/hbm/entity/mob/EntityGlyphid.java | 20 +++- .../hbm/entity/mob/EntityGlyphidNuclear.java | 26 +++- .../handler/pollution/PollutionHandler.java | 10 +- .../java/com/hbm/inventory/fluid/Fluids.java | 12 +- src/main/java/com/hbm/items/ModItems.java | 4 +- .../com/hbm/items/weapon/ItemDisperser.java | 3 +- .../projectile/RenderGenericGrenade.java | 60 ++++++---- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + 16 files changed, 173 insertions(+), 124 deletions(-) diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java index 240356149..e94c67f14 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java @@ -1,6 +1,7 @@ package com.hbm.blocks.generic; import java.util.List; +import java.util.Random; import com.hbm.blocks.IBlockMulti; import com.hbm.lib.RefStrings; @@ -27,6 +28,11 @@ public class BlockGlyphid extends Block implements IBlockMulti { this.setCreativeTab(MainRegistry.blockTab); } + @Override + public Item getItemDropped(int meta, Random rand, int fortune) { + return null; + } + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java index d9ff39bc7..e4d07db08 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -110,7 +110,7 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti { } } - List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 9, yCoord + 1, zCoord - 9, xCoord + 10, yCoord + 8, zCoord + 10)); + List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 5, yCoord + 1, zCoord - 5, xCoord + 6, yCoord + 7, zCoord + 6)); float soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT); if(list.size() <= 3) { @@ -122,7 +122,9 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti { } if(!initialSpawn && worldObj.rand.nextInt(MobConfig.scoutSwarmSpawnChance + 1) == 0 && soot >= MobConfig.scoutThreshold) { - trySpawnEntity(new EntityGlyphidScout(worldObj)); + EntityGlyphidScout scout = new EntityGlyphidScout(worldObj); + if(this.getBlockMetadata() == 1) scout.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_INFECTED); + trySpawnEntity(scout); } initialSpawn = false; diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index 14f219193..7f9d45c9d 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -170,14 +170,10 @@ public class MobConfig { rampantGlyphidGuidance = true; scoutSwarmSpawnChance = 1; scoutThreshold = 0.1; - RadiationConfig.pollutionSpreadThreshold = 25; if(pollutionMult == 1) { pollutionMult = 2; - RadiationConfig.pollutionSpreadEfficiency = 0.2 / pollutionMult; } - else RadiationConfig.pollutionSpreadEfficiency = 0.1 / pollutionMult; RadiationConfig.sootFogThreshold *= pollutionMult; - } } } diff --git a/src/main/java/com/hbm/config/RadiationConfig.java b/src/main/java/com/hbm/config/RadiationConfig.java index 11498ab0b..83cf7a10d 100644 --- a/src/main/java/com/hbm/config/RadiationConfig.java +++ b/src/main/java/com/hbm/config/RadiationConfig.java @@ -32,8 +32,6 @@ public class RadiationConfig { public static double sootFogThreshold = 35D; public static double sootFogDivisor = 120D; public static double smokeStackSootMult = 0.8; - public static int pollutionSpreadThreshold = 15; - public static double pollutionSpreadEfficiency = 0.05D; public static void loadFromConfig(Configuration config) { @@ -72,7 +70,5 @@ public class RadiationConfig { sootFogThreshold = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_06_sootFogThreshold", "How much soot is required for smog to become visible", 35D); sootFogDivisor = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_07_sootFogDivisor", "The divisor for smog, higher numbers will require more soot for the same smog density", 120D); smokeStackSootMult = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_08_smokeStackSootMult", "How much does smokestack multiply soot by, with decimal values reducing the soot", 0.8); - pollutionSpreadThreshold = CommonConfig.createConfigInt(config, CATEGORY_POL, "POL_09_pollutionSpreadThreshold", "The amount of soot required for it to be spread to nearby chunks, causes it to concentrate more", 15); - pollutionSpreadEfficiency = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_10_pollutionSpreadEfficiency", "How much soot will be spread to nearby chunks at once (percentage), values higher than 0.05 may cause infinite feedback loop of soot", 0.05); } } diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 6884483a8..6e25d2040 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -234,7 +234,7 @@ public class EntityMappings { addEntity(TrainCargoTramTrailer.class, "entity_ntm_cargo_tram_trailer", 250, false); addEntity(TrainTunnelBore.class, "entity_ntm_tunnel_bore", 250, false); - addEntity(EntityDisperserCanister.class, "entity_disperser", 250, false); + addEntity(EntityDisperserCanister.class, "entity_disperser", 250); addEntity(EntityWaypoint.class, "entity_waypoint", 250, false); addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); diff --git a/src/main/java/com/hbm/entity/grenade/EntityDisperserCanister.java b/src/main/java/com/hbm/entity/grenade/EntityDisperserCanister.java index a3ff8f6f8..3316c8015 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityDisperserCanister.java +++ b/src/main/java/com/hbm/entity/grenade/EntityDisperserCanister.java @@ -3,74 +3,73 @@ package com.hbm.entity.grenade; import com.hbm.entity.effect.EntityMist; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.items.weapon.ItemDisperser; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; public class EntityDisperserCanister extends EntityGrenadeBase { - public EntityDisperserCanister(World p_i1773_1_) { - super(p_i1773_1_); - } + + public EntityDisperserCanister(World p_i1773_1_) { + super(p_i1773_1_); + } - public EntityDisperserCanister(World p_i1774_1_, EntityLivingBase p_i1774_2_) { - super(p_i1774_1_, p_i1774_2_); - } - public EntityDisperserCanister(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) { - super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); - } + public EntityDisperserCanister(World p_i1774_1_, EntityLivingBase p_i1774_2_) { + super(p_i1774_1_, p_i1774_2_); + } - public EntityDisperserCanister setFluid(int id){ - this.dataWatcher.updateObject(12, id); - return this; - } - @Override - protected void entityInit() { - this.dataWatcher.addObject(12, 0); - this.dataWatcher.addObject(13, 0); - } - public EntityDisperserCanister setType(int id){ - this.dataWatcher.updateObject(13, id); - return this; - } + public EntityDisperserCanister(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } - public FluidType getFluid() { - return Fluids.fromID(this.dataWatcher.getWatchableObjectInt(12)); - } - public Item getType() { - return Item.getItemById(this.dataWatcher.getWatchableObjectInt(13)); - } - @Override - public void explode() { - if (!worldObj.isRemote) { - EntityMist mist = new EntityMist(worldObj); - mist.setType(getFluid()); - mist.setPosition(posX, posY, posZ); - mist.setArea(10, 5); - mist.setDuration(80); - worldObj.spawnEntityInWorld(mist); - } - } + public EntityDisperserCanister setFluid(int id) { + this.dataWatcher.updateObject(12, id); + return this; + } - @Override - public void writeEntityToNBT(NBTTagCompound nbt) { - super.writeEntityToNBT(nbt); - nbt.setInteger("fluid", this.dataWatcher.getWatchableObjectInt(12)); - nbt.setInteger("item", this.dataWatcher.getWatchableObjectInt(13)); - } + @Override + protected void entityInit() { + this.dataWatcher.addObject(12, 0); + this.dataWatcher.addObject(13, 0); + } - @Override - public void readEntityFromNBT(NBTTagCompound nbt) { - super.readEntityFromNBT(nbt); - this.dataWatcher.updateObject(12, nbt.getInteger("fluid")); - this.dataWatcher.updateObject(13, nbt.getInteger("item")); + public EntityDisperserCanister setType(int id) { + this.dataWatcher.updateObject(13, id); + return this; + } - } + public FluidType getFluid() { + return Fluids.fromID(this.dataWatcher.getWatchableObjectInt(12)); + } + public Item getType() { + return Item.getItemById(this.dataWatcher.getWatchableObjectInt(13)); + } + @Override + public void explode() { + if(!worldObj.isRemote) { + EntityMist mist = new EntityMist(worldObj); + mist.setType(getFluid()); + mist.setPosition(posX, posY, posZ); + mist.setArea(10, 5); + mist.setDuration(80); + worldObj.spawnEntityInWorld(mist); + } + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setInteger("fluid", this.dataWatcher.getWatchableObjectInt(12)); + nbt.setInteger("item", this.dataWatcher.getWatchableObjectInt(13)); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.dataWatcher.updateObject(12, nbt.getInteger("fluid")); + this.dataWatcher.updateObject(13, nbt.getInteger("item")); + + } } - - - diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeBase.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeBase.java index 9b0062987..03b16f48c 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeBase.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeBase.java @@ -13,6 +13,7 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; +@Deprecated public abstract class EntityGrenadeBase extends EntityThrowable { public EntityGrenadeBase(World p_i1773_1_) { @@ -31,24 +32,20 @@ public abstract class EntityGrenadeBase extends EntityThrowable { public void onUpdate() { super.onUpdate(); - - this.prevRotationPitch = this.rotationPitch; - - this.rotationPitch -= Vec3.createVectorHelper(motionX, motionY, motionZ).lengthVector() * 25; - - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - while (this.rotationYaw - this.prevRotationYaw < -180.0F) - { - this.prevRotationYaw -= 360.0F; - } + this.prevRotationPitch = this.rotationPitch; + this.rotationPitch -= Vec3.createVectorHelper(motionX, motionY, motionZ).lengthVector() * 25; + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - while (this.rotationYaw - this.prevRotationYaw >= 180.0F) - { - this.prevRotationYaw += 360.0F; - } + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } - this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + + this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; } @Override diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index 86d783cd6..ba5d41f5e 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -19,6 +19,7 @@ import com.hbm.main.ResourceManager; import com.hbm.potion.HbmPotion; import net.minecraft.block.Block; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.monster.EntityMob; @@ -30,6 +31,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.*; import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; import net.minecraft.world.EnumDifficulty; @@ -317,6 +319,8 @@ public class EntityGlyphid extends EntityMob { amount *= 1.5F; } else if(source == ModDamageSource.acid || source.equals(new DamageSource(ModDamageSource.s_acid))){ amount = 0; + } else if(source == DamageSource.inWall) { + amount *= 15F; } if(this.isPotionActive(HbmPotion.phosphorus.getId())){ @@ -327,7 +331,7 @@ public class EntityGlyphid extends EntityMob { boolean wasAttacked = super.attackEntityFrom(source, amount); if(alive && this.getHealth() <= 0) { - if(this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE) == TYPE_INFECTED) { + if(doesInfectedSpawnMaggots() && this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE) == TYPE_INFECTED) { int j = 2 + this.rand.nextInt(3); @@ -346,6 +350,10 @@ public class EntityGlyphid extends EntityMob { return wasAttacked; } + + public boolean doesInfectedSpawnMaggots() { + return true; + } public boolean isArmorBroken(float amount) { return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.6, 2), 100); @@ -435,10 +443,16 @@ public class EntityGlyphid extends EntityMob { } @Override - public boolean attackEntityAsMob(Entity victum) { + public boolean attackEntityAsMob(Entity victim) { if(this.isSwingInProgress) return false; this.swingItem(); - return super.attackEntityAsMob(victum); + + if(this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE) == TYPE_INFECTED && victim instanceof EntityLivingBase) { + ((EntityLivingBase) victim).addPotionEffect(new PotionEffect(Potion.poison.id, 100, 2)); + ((EntityLivingBase) victim).addPotionEffect(new PotionEffect(Potion.confusion.id, 100, 0)); + } + + return super.attackEntityAsMob(victim); } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java index e68c5311f..b8342bf6f 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java @@ -122,6 +122,11 @@ public class EntityGlyphidNuclear extends EntityGlyphid { return 10F; } + @Override + public boolean doesInfectedSpawnMaggots() { + return false; + } + public boolean hasWaypoint = false; @Override protected void onDeathUpdate() { @@ -148,10 +153,25 @@ public class EntityGlyphidNuclear extends EntityGlyphid { if(this.deathTicks == 100) { if(!worldObj.isRemote) { - ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 25, this); - vnt.setBlockAllocator(new BlockAllocatorStandard(24)); - vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorDebris(ModBlocks.volcanic_lava_block, 0)).setNoDrop()); + + if(this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE) == TYPE_INFECTED) { + int j = 15 + this.rand.nextInt(6); + for(int k = 0; k < j; ++k) { + float f = ((float) (k % 2) - 0.5F) * 0.5F; + float f1 = ((float) (k / 2) - 0.5F) * 0.5F; + EntityParasiteMaggot maggot = new EntityParasiteMaggot(worldObj); + maggot.setLocationAndAngles(this.posX + (double) f, this.posY + 0.5D, this.posZ + (double) f1, this.rand.nextFloat() * 360.0F, 0.0F); + maggot.motionX = f; + maggot.motionZ = f1; + maggot.velocityChanged = true; + this.worldObj.spawnEntityInWorld(maggot); + } + } else { + vnt.setBlockAllocator(new BlockAllocatorStandard(24)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorDebris(ModBlocks.volcanic_lava_block, 0)).setNoDrop()); + } + vnt.setEntityProcessor(new EntityProcessorStandard()); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.explode(); diff --git a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java index 9255062ef..28cd279c4 100644 --- a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java +++ b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java @@ -180,8 +180,6 @@ public class PollutionHandler { if(event.side == Side.SERVER && event.phase == Phase.END) { - int spreadThreshold = RadiationConfig.pollutionSpreadThreshold; - double spreadEff = RadiationConfig.pollutionSpreadEfficiency; eggTimer++; if(eggTimer < 60) return; eggTimer = 0; @@ -200,11 +198,11 @@ public class PollutionHandler { int P = PollutionType.POISON.ordinal(); /* CALCULATION */ - if(data.pollution[S] > spreadThreshold) { - pollutionForNeightbors[S] = (float) (data.pollution[S] * spreadEff); - data.pollution[S] *= 1-spreadEff*4; + if(data.pollution[S] > 15) { + pollutionForNeightbors[S] = (float) (data.pollution[S] * 0.05F); + data.pollution[S] *= 0.8F; } else { - data.pollution[S] *= 0.8; + data.pollution[S] *= 0.99F; } data.pollution[H] *= 0.9995F; diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index b2efa5781..d4dd8544b 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -325,12 +325,12 @@ public class Fluids { SMOKE_LEADED = new FluidType("SMOKE_LEADED", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON); SMOKE_POISON = new FluidType("SMOKE_POISON", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON); HELIUM4 = new FluidType("HELIUM4", 0xE54B0A, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); - HEAVYWATER_HOT = new FluidType("HEAVYWATER_HOT", 0x4D007B, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID); - SODIUM = new FluidType("SODIUM", 0xCCD4D5, 1, 2, 3, EnumSymbol.NONE).setTemp(400).addTraits(LIQUID); - SODIUM_HOT = new FluidType("SODIUM_HOT", 0xE2ADC1, 1, 2, 3, EnumSymbol.NONE).setTemp(1200).addTraits(LIQUID); - THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); - THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, new FT_Corrosive(65)); - THORIUM_SALT_DEPLETED = new FluidType("THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, new FT_Corrosive(65)); + HEAVYWATER_HOT = new FluidType("HEAVYWATER_HOT", 0x4D007B, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID, VISCOUS); + SODIUM = new FluidType("SODIUM", 0xCCD4D5, 1, 2, 3, EnumSymbol.NONE).setTemp(400).addTraits(LIQUID, VISCOUS); + SODIUM_HOT = new FluidType("SODIUM_HOT", 0xE2ADC1, 1, 2, 3, EnumSymbol.NONE).setTemp(1200).addTraits(LIQUID, VISCOUS); + THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, VISCOUS, new FT_Corrosive(65)); + THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, VISCOUS, new FT_Corrosive(65)); + THORIUM_SALT_DEPLETED = new FluidType("THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, VISCOUS, new FT_Corrosive(65)); FULLERENE = new FluidType("FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); PHEROMONE = new FluidType("PHEROMONE", 0x5FA6E8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(1)); PHEROMONE_M = new FluidType(132, "PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(2)); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 826915238..72651c636 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -936,8 +936,8 @@ public class ModItems { public static Item fluid_barrel_empty; public static Item fluid_barrel_infinite; - public static Item disperser_canister; public static Item disperser_canister_empty; + public static Item disperser_canister; public static Item glyphid_gland; public static Item glyphid_gland_empty; @@ -4650,8 +4650,8 @@ public class ModItems { fluid_barrel_empty = new Item().setUnlocalizedName("fluid_barrel_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); fluid_barrel_infinite = new ItemInfiniteFluid(null, 1_000_000_000).setUnlocalizedName("fluid_barrel_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel_infinite"); + disperser_canister_empty = new Item().setUnlocalizedName("disperser_canister_empty").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":disperser_canister"); disperser_canister = new ItemDisperser().setUnlocalizedName("disperser_canister").setContainerItem(ModItems.disperser_canister_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":disperser_canister"); - disperser_canister_empty = new Item().setUnlocalizedName("disperser_canister_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":disperser_canister"); glyphid_gland = new ItemDisperser().setUnlocalizedName("glyphid_gland").setContainerItem(ModItems.glyphid_gland_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland"); glyphid_gland_empty = new Item().setUnlocalizedName("glyphid_gland_empty").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland"); diff --git a/src/main/java/com/hbm/items/weapon/ItemDisperser.java b/src/main/java/com/hbm/items/weapon/ItemDisperser.java index 682ff3eec..7f06f07e1 100644 --- a/src/main/java/com/hbm/items/weapon/ItemDisperser.java +++ b/src/main/java/com/hbm/items/weapon/ItemDisperser.java @@ -18,6 +18,7 @@ import net.minecraft.world.World; import java.util.List; public class ItemDisperser extends ItemFluidTank { + @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { @@ -59,7 +60,7 @@ public class ItemDisperser extends ItemFluidTank { public String getItemStackDisplayName(ItemStack stack) { String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim(); s = this == ModItems.glyphid_gland ? s1 + " " + s : s + " " + s1; return s; diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderGenericGrenade.java b/src/main/java/com/hbm/render/entity/projectile/RenderGenericGrenade.java index 01ff7f5c7..06ecc70fa 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderGenericGrenade.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderGenericGrenade.java @@ -1,11 +1,11 @@ package com.hbm.render.entity.projectile; import com.hbm.entity.grenade.EntityDisperserCanister; -import net.minecraft.item.Item; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import com.hbm.entity.grenade.IGenericGrenade; +import com.hbm.inventory.fluid.FluidType; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.Render; @@ -18,26 +18,44 @@ public class RenderGenericGrenade extends Render { @Override public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { - IIcon iicon; - if(entity instanceof EntityDisperserCanister){ - EntityDisperserCanister canister = (EntityDisperserCanister) entity; - iicon = canister.getType().getIconFromDamage(canister.getFluid().getID()); - } else { - IGenericGrenade grenade = (IGenericGrenade) entity; - iicon = grenade.getGrenade().getIconFromDamage(0); - } - - if(iicon != null) { - GL11.glPushMatrix(); - GL11.glTranslatef((float) x, (float) y, (float) z); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glScalef(0.5F, 0.5F, 0.5F); - this.bindEntityTexture(entity); - Tessellator tessellator = Tessellator.instance; - - this.renderItem(tessellator, iicon); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); + + boolean disperser = entity instanceof EntityDisperserCanister; + + for(int i = 0; i < (disperser ? 2 : 1); i++) { + + IIcon iicon; + if(disperser){ + EntityDisperserCanister canister = (EntityDisperserCanister) entity; + FluidType fluid = canister.getFluid(); + iicon = canister.getType().getIconFromDamageForRenderPass(fluid.getID(), i); + + if(i == 1) { + int hex = fluid.getColor(); + int r = (hex & 0xFF0000) >> 16; + int g = (hex & 0xFF00) >> 8; + int b = (hex & 0xFF); + GL11.glColor3b((byte) (r / 2), (byte) (g / 2), (byte) (b / 2)); + } + + } else { + IGenericGrenade grenade = (IGenericGrenade) entity; + iicon = grenade.getGrenade().getIconFromDamage(i); + } + + if(iicon != null) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glScalef(0.5F, 0.5F, 0.5F); + this.bindEntityTexture(entity); + Tessellator tessellator = Tessellator.instance; + + this.renderItem(tessellator, iicon); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + } + + GL11.glColor3f(1F, 1F, 1F); } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 9a561713c..24112073e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -541,6 +541,7 @@ entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper entity.entity_mob_phosgene_creeper.name=Phosgen-Creeper entity.entity_mob_tainted_creeper.name=Verseuchter Creeper entity.entity_mob_volatile_creeper.name=Instabiler Creeper +entity.entity_parasite_maggot.name=Parasitische Made entity.entity_pigeon.name=Taube entity.entity_plastic_bag.name=Plastiktüte entity.entity_taint_crab.name=Verseuchte Krabbe diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 78f5468b6..088d36302 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1050,6 +1050,7 @@ entity.entity_mob_nuclear_creeper.name=Nuclear Creeper entity.entity_mob_phosgene_creeper.name=Phosgene Creeper entity.entity_mob_tainted_creeper.name=Tainted Creeper entity.entity_mob_volatile_creeper.name=Volatile Creeper +entity.entity_parasite_maggot.name=Parasitic Maggot entity.entity_pigeon.name=Pigeon entity.entity_plastic_bag.name=Plastic Bag entity.entity_taint_crab.name=Taint Crab From 0d2ab053163bbb5a42cbdfe16b921431341c67fc Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 17 Dec 2023 19:42:52 +0100 Subject: [PATCH 183/207] some more shit idk --- changelog | 78 +++++++------------ gradle.properties | 2 +- .../java/com/hbm/crafting/WeaponRecipes.java | 3 +- .../java/com/hbm/inventory/fluid/Fluids.java | 2 +- .../com/hbm/items/tool/ItemFusionCore.java | 48 ++++++------ src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../machine/TileEntityMachineIGenerator.java | 24 ++---- 7 files changed, 65 insertions(+), 94 deletions(-) diff --git a/changelog b/changelog index 902ab1ad0..2052ac7a5 100644 --- a/changelog +++ b/changelog @@ -1,55 +1,33 @@ ## Added -* Doors! - * Your favorites from 1.12, the 7 remaining doors have finally been ported - * Thanks to KoblizekXD for biting the bullet -* Rubber boat - * Made from latex or synthetic rubber - * A much less jankier alternative to the vanilla boat. Rotations are silky smooth and done via the strafe keys instead of based on the player's orientation - * Won't break from ramming into blocks - * Faster than a regular boat, but will decelerate quicker when there's nobody sitting in it, preventing the boat from drifting off too far when empty -* Exposure chamber - * Now performs the particle transmutation recipes that were previously done in the crafting table - * Stylish as hell -* Decoy missile - * A cheap tier 1 missile that shows up on radar screens as tier 4 (eg. nuclear) missiles -* Printing press stamps - * 8 different stamps for printing certain pages - * If a meteor dungeon safe is generated without a black book inside, it will generate two random stamps instead - * With all 8 stamps, allows you to print your own black book +* Gylphid pheromones + * Used by certain glyphids, killing those allows for the pheromone glands to be harvested + * By mixing the pheromone with blood and medicine, it can be modified to extend its positive effects to non-glyphid entities +* Disperser canisters + * Throwable like grenades, will cause a small AoE effect based on the fluid + * Effectively a gas grenade, allows phosgene and mustard gas to be used directly + * Hot things like hot coolant or steam are especially effective ## Changed -* Updated russian localization -* Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high -* Custom missiles are now launchable using the radar -* NTM's structures should no longer spawn in dimensions besides the overworld. Ores will still generate, assuming the config option is set. -* Decreased M1tty's radiation resistance - * It's really damn cheap, what did you expect -* M1tty's helmet now acts like a protective mask -* Most non-custom missiles except tier 0s are now assembled in the arc welder - * Crafting complexity has been reduced, the recipes only need the three major components without any extra loose plates -* Non-custom missiles have been slightly buffed - * Explosions are now slightly larger and they use the new cross-detection entity damage code which still affects entities behind small hills that would otherwise be shielded - * Explosions now have a 2x larger entity damage radius -* Updated the digiminer recipe for mekanism compat -* Added config options to the ground water pumps -* Missile parts such as non-custom thrusters and fuselages are now made in the arc welder, recipe ingredients have been adjusted as well -* Null grenades now have a slightly larger radius, should no longer wipe playerdata and require UNDEFINED to make -* Added some breedable material to BFB PWR fuel rods, meaning that the recycling recipes now actually yield a net positive instead of being a massive waste of time -* The RBMK control panel has been upgraded - * Right.clicking the color buttons will now assign the color to the selected control rods - * There's now a new button that allows to cycle through compressor settings on RBMK steam channels - * The flux display is now functional. It will display the flux curve of the last 30 seconds, as well as labels for the total flux level. - * With the color assigning buttons and the flux display finished, the console is now finally complete -* Compressing blood at 4 PU now turns it into crude oil at a ratio of 2:1 -* Increased the cap for the overdrive upgrade in acidizers, tier 2 should now yield the proper amount and tier 3 should now be better than tier 2 -* The tooltip of valid upgrades now changes when a compatible machine GUI is open +* Reworked glyphids + * Hives are no longer open, instead they are much flatter with multiple spawners inside + * Naturally spawning hives now spawn with some loot inside + * Spawners now place glyphids nearby instead of on top, preventing them from suffocating instantly + * Glyphids no longer spawn every second, instead they spawn in waves + * More config option for spawning behavior + * A new config option for rampant mode which makes glyphids more aggressive, scouts expand directly towards players and all glyphids able to dig away obstacles + * A dedicated glyphid for digging also exists outside of rampant mode + * Glyphid meat can now be processed into resources + * Glyphid behemoths now have an acid attack and create a gas effect on death + * Larger glyphids can now destroy lanterns + * Infested glyphids + * 10% of all glyphid hives will be infested + * Infested glyphids are roughly equal, but apply a poison effect and nausea when attacking + * When killed, they will drop maggots that attack the player + * Infested scouts will also create infested hives +* Glyphid hive blocks no longer drop when broken +* The industrial generator no longer has an exponential modifier for power generation, which means it no longer produces several times more power than any other generator +* The igen by default only burns with 50% efficiency, which can be raised back to 100% with water and even to 125% with lubricant, making it slightly better when lubed than the fluid burner ## Fixed -* Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate -* Fixed RBMK heat exchangers being able to use heatable fluids that don't have heat exchanger efficiency defined like liquid sodium, heavy water and thorium salt -* Fixed RBMK heat exchangers not using the heat exchanger efficiency variable to determine cooling power -* Fixed the ballistic gauntlet spawning a client-side ghost bullet that doesn't move or despawn -* Fixed bug where different custom machine cores would merge in a stack when picked up, turning them into the same type -* Fixed radar screen blips being visible through the back of the model -* Fixed desh crate's last half of slots preventing radiation entirely -* Fixed large mining drill shift-clicking \ No newline at end of file +* Fixed the info system not being visible with a gun equipped +* Fixed a potential crash with suit batteries \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index f4e7c2b0a..d52227a0b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4809H1 +mod_build_number=4816 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 0ed6e8a9c..111c9a169 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -99,7 +99,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', ModItems.wire_gold, 'F', ModItems.gun_fatman }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ANY_RUBBER.ingot(), 'L', ModItems.plate_desh, 'W', ModItems.wire_tungsten, 'F', ModItems.gun_fatman }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1, AmmoFatman.BALEFIRE.ordinal()), new Object[] { " S ", "EBE", " S ", 'S', ModItems.hull_small_steel, 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_thompson, 1), new Object[] { "IIM", " SW", " S ", 'S', IRON.plate(), 'I', STEEL.plate(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flechette, 1), new Object[] { "PPM", "TIS", "G ", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_2, 'T', ModItems.hull_small_steel, 'I', STEEL.ingot(), 'S', ANY_PLASTIC.ingot(), 'G', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uboinik, 1), new Object[] { "IIM", "SPW", 'P', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'S', KEY_STICK, 'M', ModItems.mechanism_revolver_2 }); @@ -365,6 +365,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_pink_cloud), new Object[] { " S ", "ECE", " E ", 'S', ModItems.powder_spark_mix, 'E', ModItems.powder_magic, 'C', ModItems.grenade_cloud }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.nuclear_waste_pearl), new Object[] { "WWW", "WFW", "WWW", 'W', ModItems.nuclear_waste_tiny, 'F', ModBlocks.block_fallout }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_kyiv), new Object[] { ModItems.canister_napalm, ModItems.bottle2_empty, ModItems.rag }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.disperser_canister_empty, 4), new Object[] { " P ", "PGP", " P ", 'P', ANY_HARDPLASTIC.ingot(), 'G', ModBlocks.glass_boron }); //Sticks of explosives CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_dynamite, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModItems.safety_fuse, 'P', Items.paper, 'D', ModItems.ball_dynamite }); diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index d4dd8544b..edc8be8f0 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -272,7 +272,7 @@ public class Fluids { UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(1_000_000), GASEOUS); //acetylene burns as hot as satan's asshole SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID, VISCOUS); XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); - ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); PETROIL_LEADED = new FluidType("PETROIL_LEADED", 0x44413d, 1, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2331F6)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 450_000), LIQUID, LEADED); GASOLINE_LEADED = new FluidType("GASOLINE_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2F775A)).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_500_000), LIQUID, LEADED); COALGAS_LEADED = new FluidType("COALGAS_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x1E155F)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 250_000), LIQUID, LEADED); diff --git a/src/main/java/com/hbm/items/tool/ItemFusionCore.java b/src/main/java/com/hbm/items/tool/ItemFusionCore.java index b99f8fa16..afa388fa5 100644 --- a/src/main/java/com/hbm/items/tool/ItemFusionCore.java +++ b/src/main/java/com/hbm/items/tool/ItemFusionCore.java @@ -23,32 +23,32 @@ public class ItemFusionCore extends Item { @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(ArmorFSB.hasFSBArmorIgnoreCharge(player) && player.inventory.armorInventory[3].getItem() instanceof ArmorFSBPowered) { - - for(ItemStack st : player.inventory.armorInventory) { - - if(st == null) - continue; - - if(st.getItem() instanceof IBatteryItem) { - - long maxcharge = ((IBatteryItem)st.getItem()).getMaxCharge(); - long charge = ((IBatteryItem)st.getItem()).getCharge(st); - long newcharge = Math.min(charge + this.charge, maxcharge); - - ((IBatteryItem)st.getItem()).setCharge(st, newcharge); - } - } - - stack.stackSize--; - - world.playSoundAtEntity(player, "hbm:item.battery", 1.0F, 1.0F); - } - + + if(ArmorFSB.hasFSBArmorIgnoreCharge(player) && player.inventory.armorInventory[2].getItem() instanceof ArmorFSBPowered) { + + for(ItemStack st : player.inventory.armorInventory) { + + if(st == null) + continue; + + if(st.getItem() instanceof IBatteryItem) { + + long maxcharge = ((IBatteryItem) st.getItem()).getMaxCharge(); + long charge = ((IBatteryItem) st.getItem()).getCharge(st); + long newcharge = Math.min(charge + this.charge, maxcharge); + + ((IBatteryItem) st.getItem()).setCharge(st, newcharge); + } + } + + stack.stackSize--; + + world.playSoundAtEntity(player, "hbm:item.battery", 1.0F, 1.0F); + } + return stack; } - + @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index da9765623..40d84cd27 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4809H1)"; + public static final String VERSION = "1.0.27 BETA (4816)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index 141c16d38..7cf0c451f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -61,11 +61,8 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public static int waterCap = 16000; public static int oilCap = 16000; public static int lubeCap = 4000; - public static int coalGenRate = 20; + public static int coalGenRate = 100; public static double rtgHeatMult = 0.15D; - public static double waterPowerMult = 1.0D; - public static double lubePowerMult = 1.5D; - public static double heatExponent = 1.15D; public static int waterRate = 10; public static int lubeRate = 1; public static long fluidHeatDiv = 1_000L; @@ -81,11 +78,8 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement waterCap = IConfigurableMachine.grab(obj, "I:waterCap", waterCap); oilCap = IConfigurableMachine.grab(obj, "I:oilCap", oilCap); lubeCap = IConfigurableMachine.grab(obj, "I:lubeCap", lubeCap); - coalGenRate = IConfigurableMachine.grab(obj, "I:solidFuelRate", coalGenRate); + coalGenRate = IConfigurableMachine.grab(obj, "I:solidFuelRate2", coalGenRate); rtgHeatMult = IConfigurableMachine.grab(obj, "D:rtgHeatMult", rtgHeatMult); - waterPowerMult = IConfigurableMachine.grab(obj, "D:waterPowerMult", waterPowerMult); - lubePowerMult = IConfigurableMachine.grab(obj, "D:lubePowerMult", lubePowerMult); - heatExponent = IConfigurableMachine.grab(obj, "D:heatExponent", heatExponent); waterRate = IConfigurableMachine.grab(obj, "I:waterRate", waterRate); lubeRate = IConfigurableMachine.grab(obj, "I:lubeRate", lubeRate); fluidHeatDiv = IConfigurableMachine.grab(obj, "D:fluidHeatDiv", fluidHeatDiv); @@ -97,11 +91,8 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement writer.name("I:waterCap").value(waterCap); writer.name("I:oilCap").value(oilCap); writer.name("I:lubeCap").value(lubeCap); - writer.name("I:solidFuelRate").value(coalGenRate); + writer.name("I:solidFuelRate2").value(coalGenRate); writer.name("D:rtgHeatMult").value(rtgHeatMult); - writer.name("D:waterPowerMult").value(waterPowerMult); - writer.name("D:lubePowerMult").value(lubePowerMult); - writer.name("D:heatExponent").value(heatExponent); writer.name("I:waterRate").value(waterRate); writer.name("I:lubeRate").value(lubeRate); writer.name("D:fluidHeatDiv").value(fluidHeatDiv); @@ -215,19 +206,20 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement if(this.spin > 0) { - int powerGen = this.spin; + double genMult = 0.5D; + if(this.tanks[0].getFill() >= 10) { - powerGen += this.spin * waterPowerMult; + genMult += 0.5D; this.tanks[0].setFill(this.tanks[0].getFill() - waterRate); } if(this.tanks[2].getFill() >= 1) { - powerGen += this.spin * lubePowerMult; + genMult += 0.25D; this.tanks[2].setFill(this.tanks[2].getFill() - lubeRate); } - this.power += Math.pow(powerGen, heatExponent); + this.power += this.spin * genMult; if(this.power > this.maxPower) this.power = this.maxPower; From c6d43a621527bbf32057590362cb147c247af6ee Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 17 Dec 2023 21:49:38 +0100 Subject: [PATCH 184/207] model fix --- .../resources/assets/hbm/models/armor/no9.obj | 278 ++++++++++-------- 1 file changed, 149 insertions(+), 129 deletions(-) diff --git a/src/main/resources/assets/hbm/models/armor/no9.obj b/src/main/resources/assets/hbm/models/armor/no9.obj index 44aa2277a..ac13e9c9a 100644 --- a/src/main/resources/assets/hbm/models/armor/no9.obj +++ b/src/main/resources/assets/hbm/models/armor/no9.obj @@ -202,6 +202,12 @@ v 0.999989 -9.625004 -6.750004 v 0.999989 -9.375004 -6.750004 v -1.000010 -9.375004 -6.750004 v -1.000011 -9.625004 -6.750004 +v 0.999989 -10.000000 -3.000000 +v -1.000011 -10.000000 -3.000000 +v 0.999989 -10.000000 -4.500000 +v -1.000011 -10.000000 -4.500000 +v 0.999989 -8.500000 -4.500000 +v -1.000011 -8.500000 -4.500000 vt 0.604167 0.444444 vt 0.562500 0.444444 vt 0.541667 0.416667 @@ -334,6 +340,14 @@ vt 0.583333 0.722222 vt 0.750000 0.722222 vt 0.750000 0.555556 vt 0.583333 0.555556 +vt 0.166667 0.388889 +vt 0.250000 0.277778 +vt 0.250000 0.388889 +vt 0.166667 0.277778 +vt 0.250000 0.166667 +vt 0.333333 0.277778 +vt 0.083333 0.277778 +vt 0.166667 0.166667 vt 0.541667 0.361111 vt 0.625000 0.361111 vt 0.562500 0.333333 @@ -623,19 +637,23 @@ f 158/132/11 164/133/11 160/134/11 f 159/135/10 162/131/10 157/136/10 f 160/137/9 161/129/9 159/138/9 f 157/139/13 163/130/13 158/140/13 -f 23/11/9 22/141/9 20/142/9 -f 22/141/9 135/143/9 20/142/9 -f 135/143/9 136/144/9 20/142/9 -f 20/142/9 24/145/9 23/11/9 -f 24/145/9 139/9/9 23/11/9 +f 166/141/9 167/142/9 165/143/9 +f 168/144/25 169/145/25 167/142/25 +f 167/142/10 169/145/10 165/146/10 +f 168/144/11 166/147/11 170/148/11 +f 23/11/9 22/149/9 20/150/9 +f 22/149/9 135/151/9 20/150/9 +f 135/151/9 136/152/9 20/150/9 +f 20/150/9 24/153/9 23/11/9 +f 24/153/9 139/9/9 23/11/9 f 24/12/10 20/18/10 19/13/10 f 25/15/11 21/105/11 22/16/11 -f 20/18/12 136/146/12 134/19/12 -f 26/22/13 19/147/13 21/148/13 -f 19/147/13 134/149/13 21/148/13 -f 134/149/13 133/150/13 21/148/13 -f 21/148/13 25/151/13 26/22/13 -f 25/151/13 138/20/13 26/22/13 +f 20/18/12 136/154/12 134/19/12 +f 26/22/13 19/155/13 21/156/13 +f 19/155/13 134/157/13 21/156/13 +f 134/157/13 133/158/13 21/156/13 +f 21/156/13 25/159/13 26/22/13 +f 25/159/13 138/20/13 26/22/13 f 42/23/14 41/44/14 33/24/14 f 38/26/15 37/46/15 29/27/15 f 39/29/16 40/55/16 32/30/16 @@ -643,7 +661,7 @@ f 35/32/17 36/57/17 28/33/17 f 40/35/18 35/51/18 27/34/18 f 37/37/19 39/50/19 31/31/19 f 33/39/20 41/47/20 38/40/20 -f 34/25/21 28/152/21 36/41/21 +f 34/25/21 28/160/21 36/41/21 f 42/23/11 50/60/11 49/43/11 f 38/26/22 46/73/22 45/45/22 f 41/47/23 49/74/23 46/48/23 @@ -652,139 +670,141 @@ f 35/51/12 40/35/12 48/52/12 f 39/29/10 47/62/10 48/54/10 f 35/32/25 43/67/25 44/56/25 f 42/42/26 36/41/26 44/58/26 -f 50/60/27 54/153/27 53/61/27 -f 47/62/28 51/154/28 52/63/28 -f 51/64/9 53/155/9 54/65/9 +f 50/60/27 54/161/27 53/61/27 +f 47/62/28 51/162/28 52/63/28 +f 51/64/9 53/163/9 54/65/9 f 43/67/29 52/66/29 54/65/29 -f 53/72/33 51/156/33 45/45/33 -f 56/76/11 58/157/11 57/77/11 -f 61/79/10 62/158/10 60/80/10 -f 66/82/35 65/159/35 63/83/35 +f 53/72/33 51/164/33 45/45/33 +f 56/76/11 58/165/11 57/77/11 +f 61/79/10 62/166/10 60/80/10 +f 66/82/35 65/167/35 63/83/35 f 71/85/25 74/89/25 73/86/25 f 68/88/11 73/86/11 74/89/11 f 69/91/10 71/85/10 72/87/10 f 70/93/9 74/89/9 71/85/9 f 67/95/13 72/87/13 73/86/13 -f 122/99/11 120/160/11 130/97/11 -f 120/160/11 118/161/11 130/97/11 -f 118/161/11 132/162/11 130/97/11 -f 130/97/11 128/163/11 126/98/11 -f 126/98/11 124/164/11 122/99/11 -f 131/101/10 117/165/10 119/166/10 -f 119/166/10 121/167/10 131/101/10 -f 121/167/10 123/102/10 131/101/10 -f 123/102/10 125/168/10 127/169/10 -f 127/169/10 129/100/10 123/102/10 -f 134/19/25 136/146/25 135/103/25 +f 122/99/11 120/168/11 130/97/11 +f 120/168/11 118/169/11 130/97/11 +f 118/169/11 132/170/11 130/97/11 +f 130/97/11 128/171/11 126/98/11 +f 126/98/11 124/172/11 122/99/11 +f 131/101/10 117/173/10 119/174/10 +f 119/174/10 121/175/10 131/101/10 +f 121/175/10 123/102/10 131/101/10 +f 123/102/10 125/176/10 127/177/10 +f 127/177/10 129/100/10 123/102/10 +f 134/19/25 136/154/25 135/103/25 f 21/105/26 133/104/26 135/103/26 f 137/106/22 139/110/22 140/107/22 -f 23/17/23 137/170/23 138/109/23 +f 23/17/23 137/178/23 138/109/23 f 24/12/24 26/14/24 140/107/24 -f 142/111/28 144/171/28 143/112/28 -f 143/114/25 144/172/25 148/115/25 +f 142/111/28 144/179/28 143/112/28 +f 143/114/25 144/180/25 148/115/25 f 148/115/36 146/122/36 145/117/36 f 150/118/10 152/123/10 151/119/10 f 147/116/37 145/117/37 141/113/37 -f 144/121/27 142/173/27 146/122/27 +f 144/121/27 142/181/27 146/122/27 f 152/123/25 156/125/25 155/124/25 -f 156/125/11 154/174/11 153/126/11 -f 155/124/13 153/175/13 149/127/13 -f 152/123/9 150/176/9 154/128/9 +f 156/125/11 154/182/11 153/126/11 +f 155/124/13 153/183/13 149/127/13 +f 152/123/9 150/184/9 154/128/9 f 161/129/25 164/133/25 163/130/25 f 158/132/11 163/130/11 164/133/11 f 159/135/10 161/129/10 162/131/10 f 160/137/9 164/133/9 161/129/9 f 157/139/13 162/131/13 163/130/13 +f 166/141/9 168/144/9 167/142/9 +f 168/144/25 170/148/25 169/145/25 s 1 -f 99/177/38 78/178/39 79/179/40 -f 75/180/41 76/181/22 77/182/42 -f 98/183/43 77/182/42 78/178/39 -f 77/184/42 81/185/44 78/186/39 -f 78/186/39 82/187/45 79/188/40 -f 77/184/42 76/181/22 80/189/46 -f 81/190/44 83/191/47 84/192/48 -f 81/190/44 85/193/49 82/194/45 -f 80/195/46 76/181/22 83/191/47 -f 83/196/47 87/197/50 84/198/48 -f 84/198/48 88/199/51 85/200/49 -f 83/196/47 76/181/22 86/201/52 -f 87/202/50 89/203/53 90/204/54 -f 87/202/50 91/205/55 88/206/51 -f 86/207/52 76/181/22 89/203/53 -f 89/208/53 93/209/56 90/210/54 -f 90/210/54 94/211/57 91/212/55 -f 89/208/53 76/181/22 92/213/58 -f 93/214/56 97/215/59 94/216/57 -f 92/217/58 76/181/22 95/218/60 -f 93/214/56 95/218/60 96/219/61 -f 96/220/61 99/221/38 97/222/59 -f 95/223/60 76/181/22 75/224/41 -f 95/223/60 98/225/43 96/220/61 -f 100/226/62 102/227/63 101/228/25 -f 116/229/64 102/227/63 100/226/62 -f 105/230/65 102/231/63 103/232/66 -f 102/231/63 104/233/67 101/228/25 -f 105/234/65 106/235/68 104/236/67 -f 104/236/67 106/235/68 101/228/25 -f 109/237/69 106/238/68 107/239/70 -f 106/238/68 108/240/71 101/228/25 -f 109/241/69 110/242/72 108/243/71 -f 108/243/71 110/242/72 101/228/25 -f 113/244/73 110/245/72 111/246/74 -f 110/245/72 112/247/75 101/228/25 -f 82/248/76 107/249/70 105/234/65 -f 88/250/77 107/239/70 85/251/78 -f 112/252/75 114/253/79 101/228/25 -f 91/254/80 109/241/69 88/255/77 -f 94/256/81 111/246/74 91/257/80 -f 113/258/73 114/253/79 112/252/75 -f 115/259/82 94/260/81 97/261/83 -f 99/262/84 115/263/82 97/264/83 -f 114/265/79 100/266/62 101/228/25 -f 103/267/66 99/268/84 79/269/85 -f 79/270/85 105/230/65 103/232/66 -f 116/271/64 114/265/79 115/263/82 -f 118/272/25 119/273/86 117/274/25 -f 120/275/86 121/276/87 119/273/86 -f 125/277/88 128/278/33 127/279/33 -f 128/278/33 129/280/9 127/279/33 -f 130/281/9 131/282/29 129/280/9 -f 132/283/29 117/274/25 131/282/29 -f 99/177/38 98/183/43 78/178/39 -f 98/183/43 75/180/41 77/182/42 -f 77/184/42 80/189/46 81/185/44 -f 78/186/39 81/185/44 82/187/45 -f 81/190/44 80/195/46 83/191/47 -f 81/190/44 84/192/48 85/193/49 -f 83/196/47 86/201/52 87/197/50 -f 84/198/48 87/197/50 88/199/51 -f 87/202/50 86/207/52 89/203/53 -f 87/202/50 90/204/54 91/205/55 -f 89/208/53 92/213/58 93/209/56 -f 90/210/54 93/209/56 94/211/57 -f 93/214/56 96/219/61 97/215/59 -f 93/214/56 92/217/58 95/218/60 -f 96/220/61 98/225/43 99/221/38 -f 95/223/60 75/224/41 98/225/43 -f 116/229/64 103/267/66 102/227/63 -f 105/230/65 104/233/67 102/231/63 -f 105/234/65 107/249/70 106/235/68 -f 109/237/69 108/240/71 106/238/68 -f 109/241/69 111/284/74 110/242/72 -f 113/244/73 112/247/75 110/245/72 -f 82/248/76 85/285/78 107/249/70 -f 88/250/77 109/237/69 107/239/70 -f 91/254/80 111/284/74 109/241/69 -f 94/256/81 113/244/73 111/246/74 -f 113/258/73 115/259/82 114/253/79 -f 115/259/82 113/258/73 94/260/81 -f 99/262/84 116/271/64 115/263/82 -f 103/267/66 116/229/64 99/268/84 -f 79/270/85 82/286/76 105/230/65 -f 116/271/64 100/266/62 114/265/79 -f 118/272/25 120/275/86 119/273/86 -f 120/275/86 122/287/87 121/276/87 -f 125/277/88 126/288/88 128/278/33 -f 128/278/33 130/281/9 129/280/9 -f 130/281/9 132/283/29 131/282/29 -f 132/283/29 118/272/25 117/274/25 +f 99/185/38 78/186/39 79/187/40 +f 75/188/41 76/189/22 77/190/42 +f 98/191/43 77/190/42 78/186/39 +f 77/192/42 81/193/44 78/194/39 +f 78/194/39 82/195/45 79/196/40 +f 77/192/42 76/189/22 80/197/46 +f 81/198/44 83/199/47 84/200/48 +f 81/198/44 85/201/49 82/202/45 +f 80/203/46 76/189/22 83/199/47 +f 83/204/47 87/205/50 84/206/48 +f 84/206/48 88/207/51 85/208/49 +f 83/204/47 76/189/22 86/209/52 +f 87/210/50 89/211/53 90/212/54 +f 87/210/50 91/213/55 88/214/51 +f 86/215/52 76/189/22 89/211/53 +f 89/216/53 93/217/56 90/218/54 +f 90/218/54 94/219/57 91/220/55 +f 89/216/53 76/189/22 92/221/58 +f 93/222/56 97/223/59 94/224/57 +f 92/225/58 76/189/22 95/226/60 +f 93/222/56 95/226/60 96/227/61 +f 96/228/61 99/229/38 97/230/59 +f 95/231/60 76/189/22 75/232/41 +f 95/231/60 98/233/43 96/228/61 +f 100/234/62 102/235/63 101/236/25 +f 116/237/64 102/235/63 100/234/62 +f 105/238/65 102/239/63 103/240/66 +f 102/239/63 104/241/67 101/236/25 +f 105/242/65 106/243/68 104/244/67 +f 104/244/67 106/243/68 101/236/25 +f 109/245/69 106/246/68 107/247/70 +f 106/246/68 108/248/71 101/236/25 +f 109/249/69 110/250/72 108/251/71 +f 108/251/71 110/250/72 101/236/25 +f 113/252/73 110/253/72 111/254/74 +f 110/253/72 112/255/75 101/236/25 +f 82/256/76 107/257/70 105/242/65 +f 88/258/77 107/247/70 85/259/78 +f 112/260/75 114/261/79 101/236/25 +f 91/262/80 109/249/69 88/263/77 +f 94/264/81 111/254/74 91/265/80 +f 113/266/73 114/261/79 112/260/75 +f 115/267/82 94/268/81 97/269/83 +f 99/270/84 115/271/82 97/272/83 +f 114/273/79 100/274/62 101/236/25 +f 103/275/66 99/276/84 79/277/85 +f 79/278/85 105/238/65 103/240/66 +f 116/279/64 114/273/79 115/271/82 +f 118/280/25 119/281/86 117/282/25 +f 120/283/86 121/284/87 119/281/86 +f 125/285/88 128/286/33 127/287/33 +f 128/286/33 129/288/9 127/287/33 +f 130/289/9 131/290/29 129/288/9 +f 132/291/29 117/282/25 131/290/29 +f 99/185/38 98/191/43 78/186/39 +f 98/191/43 75/188/41 77/190/42 +f 77/192/42 80/197/46 81/193/44 +f 78/194/39 81/193/44 82/195/45 +f 81/198/44 80/203/46 83/199/47 +f 81/198/44 84/200/48 85/201/49 +f 83/204/47 86/209/52 87/205/50 +f 84/206/48 87/205/50 88/207/51 +f 87/210/50 86/215/52 89/211/53 +f 87/210/50 90/212/54 91/213/55 +f 89/216/53 92/221/58 93/217/56 +f 90/218/54 93/217/56 94/219/57 +f 93/222/56 96/227/61 97/223/59 +f 93/222/56 92/225/58 95/226/60 +f 96/228/61 98/233/43 99/229/38 +f 95/231/60 75/232/41 98/233/43 +f 116/237/64 103/275/66 102/235/63 +f 105/238/65 104/241/67 102/239/63 +f 105/242/65 107/257/70 106/243/68 +f 109/245/69 108/248/71 106/246/68 +f 109/249/69 111/292/74 110/250/72 +f 113/252/73 112/255/75 110/253/72 +f 82/256/76 85/293/78 107/257/70 +f 88/258/77 109/245/69 107/247/70 +f 91/262/80 111/292/74 109/249/69 +f 94/264/81 113/252/73 111/254/74 +f 113/266/73 115/267/82 114/261/79 +f 115/267/82 113/266/73 94/268/81 +f 99/270/84 116/279/64 115/271/82 +f 103/275/66 116/237/64 99/276/84 +f 79/278/85 82/294/76 105/238/65 +f 116/279/64 100/274/62 114/273/79 +f 118/280/25 120/283/86 119/281/86 +f 120/283/86 122/295/87 121/284/87 +f 125/285/88 126/296/88 128/286/33 +f 128/286/33 130/289/9 129/288/9 +f 130/289/9 132/291/29 131/290/29 +f 132/291/29 118/280/25 117/282/25 From 65412f0c89e9191c492a3a54359c769e329e885d Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 19 Dec 2023 08:02:11 +0100 Subject: [PATCH 185/207] oop forgot to push this --- .../java/com/hbm/extprop/HbmPlayerProps.java | 6 ++- .../com/hbm/handler/EntityEffectHandler.java | 45 +++++++++++++++++++ .../TileEntityMachineCrystallizer.java | 10 +++++ .../storage/TileEntityMachineFluidTank.java | 10 +++++ 4 files changed, 70 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/extprop/HbmPlayerProps.java b/src/main/java/com/hbm/extprop/HbmPlayerProps.java index f51905229..4f28169c2 100644 --- a/src/main/java/com/hbm/extprop/HbmPlayerProps.java +++ b/src/main/java/com/hbm/extprop/HbmPlayerProps.java @@ -43,6 +43,8 @@ public class HbmPlayerProps implements IExtendedEntityProperties { public int reputation; + public boolean isOnLadder = false; + public HbmPlayerProps(EntityPlayer player) { this.player = player; } @@ -153,13 +155,14 @@ public class HbmPlayerProps implements IExtendedEntityProperties { public void saveNBTData(NBTTagCompound nbt) { NBTTagCompound props = new NBTTagCompound(); - + props.setBoolean("hasReceivedBook", hasReceivedBook); props.setFloat("shield", shield); props.setFloat("maxShield", maxShield); props.setBoolean("enableBackpack", enableBackpack); props.setBoolean("enableHUD", enableHUD); props.setInteger("reputation", reputation); + props.setBoolean("isOnLadder", isOnLadder); nbt.setTag("HbmPlayerProps", props); } @@ -176,6 +179,7 @@ public class HbmPlayerProps implements IExtendedEntityProperties { this.enableBackpack = props.getBoolean("enableBackpack"); this.enableHUD = props.getBoolean("enableHUD"); this.reputation = props.getInteger("reputation"); + this.isOnLadder = props.getBoolean("isOnLadder"); } } } diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index c38cf5755..296724e2d 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -102,6 +102,51 @@ public class EntityEffectHandler { handleDashing(entity); handlePlinking(entity); + + if(entity instanceof EntityPlayer) handleFauxLadder((EntityPlayer) entity); + } + + private static void handleFauxLadder(EntityPlayer player) { + + HbmPlayerProps props = HbmPlayerProps.getData(player); + + if(props.isOnLadder) { + float f5 = 0.15F; + + if(player.motionX < (double) (-f5)) { + player.motionX = (double) (-f5); + } + + if(player.motionX > (double) f5) { + player.motionX = (double) f5; + } + + if(player.motionZ < (double) (-f5)) { + player.motionZ = (double) (-f5); + } + + if(player.motionZ > (double) f5) { + player.motionZ = (double) f5; + } + + player.fallDistance = 0.0F; + + if(player.motionY < -0.15D) { + player.motionY = -0.15D; + } + + if(player.isSneaking() && player.motionY < 0.0D) { + player.motionY = 0.0D; + } + + if(player.isCollidedHorizontally) { + player.motionY = 0.2D; + } + + props.isOnLadder = false; + + if(!player.worldObj.isRemote) ArmorUtil.resetFlightTime(player); + } } private static void handleContamination(EntityLivingBase entity) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index d91e8f629..bac1b5928 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; +import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerCrystallizer; import com.hbm.inventory.fluid.Fluids; @@ -111,6 +112,15 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } } } + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 6.875, zCoord + 1).offset(dir.offsetX * 0.75 + rot.offsetX * 1.25, 0, dir.offsetZ * 0.75 + rot.offsetZ * 1.25)); + + for(EntityPlayer player : players) { + HbmPlayerProps props = HbmPlayerProps.getData(player); + props.isOnLadder = true; + } } private void updateConnections() { diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 3b4e8d261..dc147cbbf 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -4,6 +4,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; @@ -168,6 +169,15 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements this.tank.writeToNBT(data, "t"); this.networkPack(data, 150); } + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 2.875, zCoord + 1).offset(dir.offsetX * 0.5 - rot.offsetX * 2.25, 0, dir.offsetZ * 0.5 - rot.offsetZ * 2.25)); + + for(EntityPlayer player : players) { + HbmPlayerProps props = HbmPlayerProps.getData(player); + props.isOnLadder = true; + } } /** called when the tank breaks due to hazardous materials or external force, can be used to quickly void part of the tank or spawn a mushroom cloud */ From 6461a4c4157dcde8820745ef73da9fcd696d6cc6 Mon Sep 17 00:00:00 2001 From: Voxelstice Date: Tue, 19 Dec 2023 21:30:20 +0300 Subject: [PATCH 186/207] fix inverted door redstone --- src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index 5968d685e..68e49db3f 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -142,9 +142,9 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn } PacketDispatcher.wrapper.sendToAllAround(new TEDoorAnimationPacket(xCoord, yCoord, zCoord, state, skinIndex, (byte)(shouldUseBB ? 1 : 0)), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 100)); - if(redstonePower == -1 && state == 0){ + if(redstonePower == -1 && state == 1){ tryToggle(-1); - } else if(redstonePower > 0 && state == 1){ + } else if(redstonePower > 0 && state == 0){ tryToggle(-1); } if(redstonePower == -1){ From f953d69ee62653f79537a9c8914302aa023148d8 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 20 Dec 2023 16:40:22 +0100 Subject: [PATCH 187/207] spring cleaning --- changelog | 32 +-- src/main/java/com/hbm/blocks/ModBlocks.java | 23 +- .../com/hbm/blocks/generic/BlockRedBrick.java | 52 +++++ .../com/hbm/blocks/generic/DecoBlock.java | 211 ++++++++---------- .../com/hbm/entity/effect/EntityMist.java | 1 - .../hbm/entity/projectile/EntityChemical.java | 1 - .../standard/BlockAllocatorGlyphidDig.java | 1 - .../inventory/recipes/ArcWelderRecipes.java | 4 +- .../inventory/recipes/ChemplantRecipes.java | 1 - .../inventory/transfer/ITransferFilter.java | 11 - .../inventory/transfer/ITransferSource.java | 13 -- .../inventory/transfer/ITransferTarget.java | 11 - .../transfer/TransferSourceSided.java | 13 -- .../transfer/TransferSourceTileEntity.java | 70 ------ .../hbm/inventory/transfer/TransferUtil.java | 15 -- src/main/java/com/hbm/main/ClientProxy.java | 3 +- src/main/java/com/hbm/main/MainRegistry.java | 5 + .../java/com/hbm/packet/AuxGaugePacket.java | 11 - .../hbm/render/item/ItemRenderLibrary.java | 18 +- .../render/tileentity/RenderDecoBlock.java | 28 --- .../java/com/hbm/tileentity/TileMappings.java | 1 - .../hbm/tileentity/deco/TileEntityBomber.java | 41 ---- .../oil/TileEntityMachineLiquefactor.java | 1 - src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../assets/hbm/textures/blocks/brick_red.png | Bin 0 -> 768 bytes .../hbm/textures/blocks/brick_red_top.png | Bin 0 -> 519 bytes .../hbm/textures/blocks/brick_red_top_alt.png | Bin 0 -> 533 bytes 28 files changed, 163 insertions(+), 406 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockRedBrick.java delete mode 100644 src/main/java/com/hbm/inventory/transfer/ITransferFilter.java delete mode 100644 src/main/java/com/hbm/inventory/transfer/ITransferSource.java delete mode 100644 src/main/java/com/hbm/inventory/transfer/ITransferTarget.java delete mode 100644 src/main/java/com/hbm/inventory/transfer/TransferSourceSided.java delete mode 100644 src/main/java/com/hbm/inventory/transfer/TransferSourceTileEntity.java delete mode 100644 src/main/java/com/hbm/inventory/transfer/TransferUtil.java delete mode 100644 src/main/java/com/hbm/tileentity/deco/TileEntityBomber.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/brick_red.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/brick_red_top.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/brick_red_top_alt.png diff --git a/changelog b/changelog index 2052ac7a5..3edae6c41 100644 --- a/changelog +++ b/changelog @@ -1,33 +1,9 @@ ## Added -* Gylphid pheromones - * Used by certain glyphids, killing those allows for the pheromone glands to be harvested - * By mixing the pheromone with blood and medicine, it can be modified to extend its positive effects to non-glyphid entities -* Disperser canisters - * Throwable like grenades, will cause a small AoE effect based on the fluid - * Effectively a gas grenade, allows phosgene and mustard gas to be used directly - * Hot things like hot coolant or steam are especially effective ## Changed -* Reworked glyphids - * Hives are no longer open, instead they are much flatter with multiple spawners inside - * Naturally spawning hives now spawn with some loot inside - * Spawners now place glyphids nearby instead of on top, preventing them from suffocating instantly - * Glyphids no longer spawn every second, instead they spawn in waves - * More config option for spawning behavior - * A new config option for rampant mode which makes glyphids more aggressive, scouts expand directly towards players and all glyphids able to dig away obstacles - * A dedicated glyphid for digging also exists outside of rampant mode - * Glyphid meat can now be processed into resources - * Glyphid behemoths now have an acid attack and create a gas effect on death - * Larger glyphids can now destroy lanterns - * Infested glyphids - * 10% of all glyphid hives will be infested - * Infested glyphids are roughly equal, but apply a poison effect and nausea when attacking - * When killed, they will drop maggots that attack the player - * Infested scouts will also create infested hives -* Glyphid hive blocks no longer drop when broken -* The industrial generator no longer has an exponential modifier for power generation, which means it no longer produces several times more power than any other generator -* The igen by default only burns with 50% efficiency, which can be raised back to 100% with water and even to 125% with lubricant, making it slightly better when lubed than the fluid burner +* Adjusted the model for the mining helmet +* The ladders on the acidizer and fluid tanks are now climbable +* Removed those unused blue dungeon bricks ## Fixed -* Fixed the info system not being visible with a gun equipped -* Fixed a potential crash with suit batteries \ No newline at end of file +* Fixed recipe conflict in the arc welder with the medium and large missile fuel tanks \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 91476fd94..587bb4025 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -425,12 +425,8 @@ public class ModBlocks { public static Block brick_jungle_glyph; public static Block brick_jungle_circle; - public static Block brick_dungeon; - public static Block brick_dungeon_flat; - public static Block brick_dungeon_tile; - public static Block brick_dungeon_circle; - public static Block brick_forgotten; + public static Block brick_red; public static Block deco_computer; @@ -595,7 +591,6 @@ public class ModBlocks { public static Block boxcar; public static Block boat; - public static Block bomber; public static Block seal_frame; public static Block seal_controller; @@ -1666,13 +1661,9 @@ public class ModBlocks { brick_jungle_trap = new TrappedBrick(Material.rock).setBlockName("brick_jungle_trap").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_trap"); brick_jungle_glyph = new BlockGlyph(Material.rock).setBlockName("brick_jungle_glyph").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F); brick_jungle_circle = new BlockBallsSpawner(Material.rock).setBlockName("brick_jungle_circle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_circle"); - - brick_dungeon = new BlockGeneric(Material.rock).setBlockName("brick_dungeon").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_dungeon"); - brick_dungeon_flat = new BlockGeneric(Material.rock).setBlockName("brick_dungeon_flat").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_dungeon_flat"); - brick_dungeon_tile = new BlockGeneric(Material.rock).setBlockName("brick_dungeon_tile").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_dungeon_tile"); - brick_dungeon_circle = new BlockGeneric(Material.rock).setBlockName("brick_dungeon_circle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_dungeon_circle"); brick_forgotten = new BlockGeneric(Material.rock).setBlockName("brick_forgotten").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(1000000).setBlockTextureName(RefStrings.MODID + ":brick_forgotten"); + brick_red = new BlockRedBrick(Material.rock).setBlockName("brick_red").setResistance(10_000); deco_computer = new BlockDecoModel(Material.iron, DecoComputerEnum.class, true, false).setBlockBoundsTo(.160749F, 0F, 0F, .839251F, .867849F, .622184F).setBlockName("deco_computer").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_computer"); filing_cabinet = new BlockDecoContainer(Material.iron, DecoCabinetEnum.class, true, false, TileEntityFileCabinet.class).setBlockBoundsTo(.1875F, 0F, 0F, .8125F, 1F, .75F).setBlockName("filing_cabinet").setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2271,7 +2262,6 @@ public class ModBlocks { boxcar = new DecoBlock(Material.iron).setBlockName("boxcar").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boxcar"); boat = new DecoBlock(Material.iron).setBlockName("boat").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boat"); - bomber = new DecoBlock(Material.iron).setBlockName("bomber").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":code"); machine_well = new MachineOilWell().setBlockName("machine_well").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_well"); machine_pumpjack = new MachinePumpjack().setBlockName("machine_pumpjack").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_pumpjack"); @@ -2886,11 +2876,8 @@ public class ModBlocks { GameRegistry.registerBlock(brick_jungle_trap, ItemTrapBlock.class, brick_jungle_trap.getUnlocalizedName()); GameRegistry.registerBlock(brick_jungle_glyph, ItemGlyphBlock.class, brick_jungle_glyph.getUnlocalizedName()); GameRegistry.registerBlock(brick_jungle_circle, brick_jungle_circle.getUnlocalizedName()); - GameRegistry.registerBlock(brick_dungeon, brick_dungeon.getUnlocalizedName()); - GameRegistry.registerBlock(brick_dungeon_flat, brick_dungeon_flat.getUnlocalizedName()); - GameRegistry.registerBlock(brick_dungeon_tile, brick_dungeon_tile.getUnlocalizedName()); - GameRegistry.registerBlock(brick_dungeon_circle, brick_dungeon_circle.getUnlocalizedName()); GameRegistry.registerBlock(brick_forgotten, brick_forgotten.getUnlocalizedName()); + GameRegistry.registerBlock(brick_red, brick_red.getUnlocalizedName()); GameRegistry.registerBlock(deco_computer, ItemBlockBase.class, deco_computer.getUnlocalizedName()); GameRegistry.registerBlock(filing_cabinet, ItemBlockBase.class, filing_cabinet.getUnlocalizedName()); GameRegistry.registerBlock(tape_recorder, tape_recorder.getUnlocalizedName()); @@ -3112,12 +3099,8 @@ public class ModBlocks { //Junk GameRegistry.registerBlock(boxcar, boxcar.getUnlocalizedName()); GameRegistry.registerBlock(boat, boat.getUnlocalizedName()); - GameRegistry.registerBlock(bomber, bomber.getUnlocalizedName()); //Machines - //GameRegistry.registerBlock(observer_off, observer_off.getUnlocalizedName()); - //GameRegistry.registerBlock(observer_on, observer_on.getUnlocalizedName()); - GameRegistry.registerBlock(machine_autocrafter, ItemBlockBase.class, machine_autocrafter.getUnlocalizedName()); GameRegistry.registerBlock(anvil_iron, ItemBlockBase.class, anvil_iron.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockRedBrick.java b/src/main/java/com/hbm/blocks/generic/BlockRedBrick.java new file mode 100644 index 000000000..fefb2387d --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockRedBrick.java @@ -0,0 +1,52 @@ +package com.hbm.blocks.generic; + +import java.util.Random; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class BlockRedBrick extends Block { + + protected IIcon iconFront; + protected IIcon iconTop; + + public BlockRedBrick(Material material) { + super(material); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":brick_red"); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":brick_red_top"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":brick_base"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return side == meta ? (side == 0 || side == 1 ? this.iconTop : this.iconFront) : this.blockIcon; + } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/DecoBlock.java b/src/main/java/com/hbm/blocks/generic/DecoBlock.java index ee8dbf8be..6d946cc3f 100644 --- a/src/main/java/com/hbm/blocks/generic/DecoBlock.java +++ b/src/main/java/com/hbm/blocks/generic/DecoBlock.java @@ -3,7 +3,6 @@ package com.hbm.blocks.generic; import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.tileentity.deco.TileEntityBomber; import com.hbm.tileentity.deco.TileEntityDecoBlock; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -28,17 +27,11 @@ public class DecoBlock extends BlockContainer { @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - - if(this == ModBlocks.bomber) - return new TileEntityBomber(); - - if(this == ModBlocks.steel_scaffold || this == ModBlocks.steel_beam) - return null; - + if(this == ModBlocks.steel_scaffold || this == ModBlocks.steel_beam) return null; return new TileEntityDecoBlock(); } - public static int renderIDBeam = RenderingRegistry.getNextAvailableRenderId(); + public static int renderIDBeam = RenderingRegistry.getNextAvailableRenderId(); @Override public int getRenderType(){ @@ -59,158 +52,136 @@ public class DecoBlock extends BlockContainer { } @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - if(this == ModBlocks.bomber) - return null; - return Item.getItemFromBlock(this); - } + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return Item.getItemFromBlock(this); + } @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - if(i == 0) - { + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 3, 2); } - if(i == 1) - { + if(i == 1) { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - if(i == 2) - { + if(i == 2) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); } - if(i == 3) - { + if(i == 3) { world.setBlockMetadataWithNotify(x, y, z, 5, 2); } } @Override - public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) - { + public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { int te = p_149719_1_.getBlockMetadata(p_149719_2_, p_149719_3_, p_149719_4_); - float f = 0.0625F; - - if(this == ModBlocks.steel_wall) - { - switch(te) - { + float f = 0.0625F; + + if(this == ModBlocks.steel_wall) { + switch(te) { case 4: - this.setBlockBounds(14*f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - break; + this.setBlockBounds(14 * f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + break; case 2: - this.setBlockBounds(0.0F, 0.0F, 14*f, 1.0F, 1.0F, 1.0F); - break; + this.setBlockBounds(0.0F, 0.0F, 14 * f, 1.0F, 1.0F, 1.0F); + break; case 5: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 2*f, 1.0F, 1.0F); - break; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 2 * f, 1.0F, 1.0F); + break; case 3: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 2*f); - break; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 2 * f); + break; } - } - - if(this == ModBlocks.steel_corner) - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - if(this == ModBlocks.steel_roof) - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1*f, 1.0F); - } - - if(this == ModBlocks.steel_beam) - { - this.setBlockBounds(7*f, 0.0F, 7*f, 9*f, 1.0F, 9*f); - } - - if(this == ModBlocks.steel_scaffold) - { - this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f); - switch(te) - { + } + + if(this == ModBlocks.steel_corner) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + if(this == ModBlocks.steel_roof) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1 * f, 1.0F); + } + + if(this == ModBlocks.steel_beam) { + this.setBlockBounds(7 * f, 0.0F, 7 * f, 9 * f, 1.0F, 9 * f); + } + + if(this == ModBlocks.steel_scaffold) { + this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); + switch(te) { case 4: - this.setBlockBounds(2*f, 0.0F, 0.0F, 14*f, 1.0F, 1.0F); - break; + this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); + break; case 2: - this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f); - break; + this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); + break; case 5: - this.setBlockBounds(2*f, 0.0F, 0.0F, 14*f, 1.0F, 1.0F); - break; + this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); + break; case 3: - this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f); - break; + this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); + break; } - } - - //this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - + } + + // this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { int te = world.getBlockMetadata(x, y, z); - float f = 0.0625F; - - if(this == ModBlocks.steel_wall) - { - switch(te) - { + float f = 0.0625F; + + if(this == ModBlocks.steel_wall) { + switch(te) { case 4: - this.setBlockBounds(14*f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - break; + this.setBlockBounds(14 * f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + break; case 2: - this.setBlockBounds(0.0F, 0.0F, 14*f, 1.0F, 1.0F, 1.0F); - break; + this.setBlockBounds(0.0F, 0.0F, 14 * f, 1.0F, 1.0F, 1.0F); + break; case 5: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 2*f, 1.0F, 1.0F); - break; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 2 * f, 1.0F, 1.0F); + break; case 3: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 2*f); - break; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 2 * f); + break; } - } - - if(this == ModBlocks.steel_corner) - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - if(this == ModBlocks.steel_roof) - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1*f, 1.0F); - } - - if(this == ModBlocks.steel_beam) - { - this.setBlockBounds(7*f, 0.0F, 7*f, 9*f, 1.0F, 9*f); - } - - if(this == ModBlocks.steel_scaffold) - { - this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f); - switch(te) - { + } + + if(this == ModBlocks.steel_corner) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + + if(this == ModBlocks.steel_roof) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1 * f, 1.0F); + } + + if(this == ModBlocks.steel_beam) { + this.setBlockBounds(7 * f, 0.0F, 7 * f, 9 * f, 1.0F, 9 * f); + } + + if(this == ModBlocks.steel_scaffold) { + this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); + switch(te) { case 4: - this.setBlockBounds(2*f, 0.0F, 0.0F, 14*f, 1.0F, 1.0F); - break; + this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); + break; case 2: - this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f); - break; + this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); + break; case 5: - this.setBlockBounds(2*f, 0.0F, 0.0F, 14*f, 1.0F, 1.0F); - break; + this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); + break; case 3: - this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f); - break; + this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); + break; } - } - + } + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } } diff --git a/src/main/java/com/hbm/entity/effect/EntityMist.java b/src/main/java/com/hbm/entity/effect/EntityMist.java index 713ebf06e..0348b4fd2 100644 --- a/src/main/java/com/hbm/entity/effect/EntityMist.java +++ b/src/main/java/com/hbm/entity/effect/EntityMist.java @@ -3,7 +3,6 @@ package com.hbm.entity.effect; import java.util.List; import com.hbm.entity.mob.EntityGlyphid; -import com.hbm.entity.projectile.EntityChemical; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.FluidType; diff --git a/src/main/java/com/hbm/entity/projectile/EntityChemical.java b/src/main/java/com/hbm/entity/projectile/EntityChemical.java index b6119b8c8..ed30224e6 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityChemical.java +++ b/src/main/java/com/hbm/entity/projectile/EntityChemical.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.entity.mob.EntityGlyphid; -import com.hbm.entity.mob.EntityGlyphidBehemoth; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.FluidType; diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorGlyphidDig.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorGlyphidDig.java index 7837c81f2..98adec4a4 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorGlyphidDig.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorGlyphidDig.java @@ -1,7 +1,6 @@ package com.hbm.explosion.vanillant.standard; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockGlyphidSpawner; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.IBlockAllocator; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 180c6981d..e7078796f 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -85,9 +85,9 @@ public class ArcWelderRecipes extends SerializableRecipe { recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_medium), 100, 2_000L, new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.motor, 1), new OreDictStack(GRAPHITE.ingot(), 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_large), 200, 5_000L, new OreDictStack(DURA.ingot(), 12), new ComparableStack(ModItems.motor, 2), new OreDictStack(OreDictManager.getReflector(), 16))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_small), 60, 1_000L, new OreDictStack(Fluids.ETHANOL.getDict(1_000), 6), new OreDictStack(TI.plate(), 6), new OreDictStack(STEEL.plate(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_small), 60, 1_000L, new OreDictStack(Fluids.ETHANOL.getDict(1_000), 6), new OreDictStack(AL.plate(), 6), new OreDictStack(STEEL.plate(), 2))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_medium), 100, 2_000L, new OreDictStack(Fluids.KEROSENE.getDict(1_000), 8), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_large), 200, 5_000L, new OreDictStack(Fluids.KEROSENE.getDict(1_000), 12), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_large), 200, 5_000L, new OreDictStack(Fluids.KEROSENE.getDict(1_000), 12), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plateCast(), 3))); //Missiles recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_generic), 100, 5_000L, new ComparableStack(ModItems.warhead_generic_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index f14b4bd10..5e7cdbbfa 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -21,7 +21,6 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import cpw.mods.fml.common.Mod; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/inventory/transfer/ITransferFilter.java b/src/main/java/com/hbm/inventory/transfer/ITransferFilter.java deleted file mode 100644 index 8f5e91cae..000000000 --- a/src/main/java/com/hbm/inventory/transfer/ITransferFilter.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.inventory.transfer; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface ITransferFilter { - - /** Returns a list of valid ItemStacks that pass the filter and can be added. The returned list is what is added to the target and removed from the source. */ - public List select(List offer); -} diff --git a/src/main/java/com/hbm/inventory/transfer/ITransferSource.java b/src/main/java/com/hbm/inventory/transfer/ITransferSource.java deleted file mode 100644 index 27891800f..000000000 --- a/src/main/java/com/hbm/inventory/transfer/ITransferSource.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.hbm.inventory.transfer; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface ITransferSource { - - /** Returns a list of ItemStacks accessible from this source */ - public List offer(); - /** Removes the selected ItemStacks */ - public void remove(List toRem); -} diff --git a/src/main/java/com/hbm/inventory/transfer/ITransferTarget.java b/src/main/java/com/hbm/inventory/transfer/ITransferTarget.java deleted file mode 100644 index 28bba3987..000000000 --- a/src/main/java/com/hbm/inventory/transfer/ITransferTarget.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.inventory.transfer; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface ITransferTarget { - - /** Adds the selected ItemStacks to the target */ - public void fill(List offer); -} diff --git a/src/main/java/com/hbm/inventory/transfer/TransferSourceSided.java b/src/main/java/com/hbm/inventory/transfer/TransferSourceSided.java deleted file mode 100644 index 8c0dfb998..000000000 --- a/src/main/java/com/hbm/inventory/transfer/TransferSourceSided.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.hbm.inventory.transfer; - -import net.minecraftforge.common.util.ForgeDirection; - -public abstract class TransferSourceSided implements ITransferSource { - - protected ForgeDirection fromSide; - - public TransferSourceSided fromSide(ForgeDirection side) { - this.fromSide = side; - return this; - } -} diff --git a/src/main/java/com/hbm/inventory/transfer/TransferSourceTileEntity.java b/src/main/java/com/hbm/inventory/transfer/TransferSourceTileEntity.java deleted file mode 100644 index 11a92d06c..000000000 --- a/src/main/java/com/hbm/inventory/transfer/TransferSourceTileEntity.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.hbm.inventory.transfer; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityFurnace; - -public class TransferSourceTileEntity extends TransferSourceSided { - - protected TileEntity tile; - - public TransferSourceTileEntity fromTile(TileEntity tile) { - this.tile = tile; - return this; - } - - @Override - public List offer() { - - List list = new ArrayList(); - - if(tile instanceof ISidedInventory) { - ISidedInventory inventory = (ISidedInventory) tile; - int[] access = masquerade(inventory, fromSide.ordinal()); - - for(int i : access) { - ItemStack stack = inventory.getStackInSlot(i); - - if(stack != null && inventory.canExtractItem(i, stack, fromSide.ordinal())) { - list.add(stack.copy()); - } - } - - return list; - } - - if(tile instanceof IInventory) { - IInventory inventory = (IInventory) tile; - - for(int i = 0; i < inventory.getSizeInventory(); i++) { - ItemStack stack = inventory.getStackInSlot(i); - - if(stack != null) { - list.add(stack.copy()); - } - } - - return list; - } - - return list; - } - - public static int[] masquerade(ISidedInventory sided, int side) { - - if(sided instanceof TileEntityFurnace) { - return new int[] {2}; - } - - return sided.getAccessibleSlotsFromSide(side); - } - - @Override - public void remove(List toRem) { - } -} diff --git a/src/main/java/com/hbm/inventory/transfer/TransferUtil.java b/src/main/java/com/hbm/inventory/transfer/TransferUtil.java deleted file mode 100644 index 2ab5c8576..000000000 --- a/src/main/java/com/hbm/inventory/transfer/TransferUtil.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.hbm.inventory.transfer; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public class TransferUtil { - - public static void transfer(ITransferSource source, ITransferFilter filter, ITransferTarget target) { - - List filtered = filter.select(source.offer()); - source.remove(filtered); - target.fill(filtered); - } -} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index dcb6e842c..453f04adb 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -157,14 +157,13 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTestRender.class, new RenderTestRender()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTestBombAdvanced.class, new RenderTestBombAdvanced()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityObjTester.class, new RendererObjTester()); - //deco + //deco ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoPoleSatelliteReceiver.class, new RenderPoleSatelliteReceiver()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlock.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBroadcaster.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGeiger.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioRec.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadiobox.class, new RenderDecoBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBomber.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSatDock.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAlt.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltG.class, new RenderDecoBlockAlt()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 6b933db58..fd5073c80 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1175,6 +1175,11 @@ public class MainRegistry { ignoreMappings.add("hbm:item.recycled_nuclear"); ignoreMappings.add("hbm:item.recycled_misc"); ignoreMappings.add("hbm:item.gun_bf_ammo"); + ignoreMappings.add("hbm:tile.brick_dungeon"); + ignoreMappings.add("hbm:tile.brick_dungeon_flat"); + ignoreMappings.add("hbm:tile.brick_dungeon_tile"); + ignoreMappings.add("hbm:tile.brick_dungeon_circle"); + ignoreMappings.add("hbm:tile.bomber"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/packet/AuxGaugePacket.java b/src/main/java/com/hbm/packet/AuxGaugePacket.java index 1a9e99d5d..09b5139c8 100644 --- a/src/main/java/com/hbm/packet/AuxGaugePacket.java +++ b/src/main/java/com/hbm/packet/AuxGaugePacket.java @@ -6,7 +6,6 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.bomb.TileEntityCompactLauncher; import com.hbm.tileentity.bomb.TileEntityLaunchTable; import com.hbm.tileentity.bomb.TileEntityNukeN45; -import com.hbm.tileentity.deco.TileEntityBomber; import com.hbm.tileentity.machine.TileEntityAMSBase; import com.hbm.tileentity.machine.TileEntityAMSEmitter; import com.hbm.tileentity.machine.TileEntityAMSLimiter; @@ -108,16 +107,6 @@ public class AuxGaugePacket implements IMessage { if(m.id == 1) selenium.powerCap = m.value; } - if (te instanceof TileEntityBomber) { - TileEntityBomber bomber = (TileEntityBomber)te; - - if(m.id == 0) - bomber.yaw = m.value; - if(m.id == 1) - bomber.pitch = m.value; - if(m.id == 2) - bomber.type = m.value; - } if (te instanceof TileEntityMachineBoiler) { TileEntityMachineBoiler boiler = (TileEntityMachineBoiler)te; diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 0c3a421c2..436a839bd 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -408,19 +408,7 @@ public class ItemRenderLibrary { public void renderCommon() { GL11.glScaled(0.5, 0.5, 0.5); GL11.glTranslatef(0, 0, -3); - bindTexture(ResourceManager.duchessgambit_tex); ResourceManager.duchessgambit.renderAll(); - }}); - - renderers.put(Item.getItemFromBlock(ModBlocks.bomber), new ItemRenderBase() { - public void renderInventory() { - GL11.glTranslated(0, 1, 0); - GL11.glScaled(2.25, 2.25, 2.25); - } - public void renderCommon() { - GL11.glRotated(-90, 0, 1, 0); - GL11.glScaled(2, 2, 2); - GL11.glTranslatef(0, 0, -0.25F); - bindTexture(ResourceManager.dornier_0_tex); ResourceManager.dornier.renderAll(); + bindTexture(ResourceManager.duchessgambit_tex); ResourceManager.duchessgambit.renderAll(); }}); renderers.put(Item.getItemFromBlock(ModBlocks.nuke_gadget), new ItemRenderBase() { @@ -430,8 +418,8 @@ public class ItemRenderLibrary { } public void renderCommon() { GL11.glTranslated(0.25, 0, 0); - bindTexture(ResourceManager.bomb_gadget_tex); - ResourceManager.bomb_gadget.renderAll(); + bindTexture(ResourceManager.bomb_gadget_tex); + ResourceManager.bomb_gadget.renderAll(); }}); renderers.put(Item.getItemFromBlock(ModBlocks.nuke_boy), new ItemRenderBase() { diff --git a/src/main/java/com/hbm/render/tileentity/RenderDecoBlock.java b/src/main/java/com/hbm/render/tileentity/RenderDecoBlock.java index 38905a176..00cdc05fa 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderDecoBlock.java +++ b/src/main/java/com/hbm/render/tileentity/RenderDecoBlock.java @@ -13,7 +13,6 @@ import com.hbm.render.model.ModelSteelCorner; import com.hbm.render.model.ModelSteelRoof; import com.hbm.render.model.ModelSteelScaffold; import com.hbm.render.model.ModelSteelWall; -import com.hbm.tileentity.deco.TileEntityBomber; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -231,33 +230,6 @@ public class RenderDecoBlock extends TileEntitySpecialRenderer { ResourceManager.duchessgambit.renderAll(); } - if(tileentity instanceof TileEntityBomber) - { - TileEntityBomber bomber = (TileEntityBomber)tileentity; - - float yaw = (float)(((double)bomber.yaw) / 180D * Math.PI); - float pitch = (float)(((double)bomber.pitch) / 180D * Math.PI); - - GL11.glRotatef(yaw - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(90, 0F, 0F, 1F); - GL11.glRotatef(pitch, 0.0F, 0.0F, 1.0F); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glScalef(5F, 5F, 5F); - - int i = bomber.type; - - switch(i) { - case 0: bindTexture(ResourceManager.dornier_0_tex); break; - case 1: bindTexture(ResourceManager.dornier_1_tex); break; - case 2: bindTexture(ResourceManager.dornier_2_tex); break; - default: bindTexture(ResourceManager.dornier_1_tex); break; - } - - ResourceManager.dornier.renderAll(); - } - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.sat_radar) { GL11.glRotatef(180, 0F, 0F, 1F); GL11.glTranslatef(0, -1.5F, 0); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 0161679ba..b4d3693fa 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -124,7 +124,6 @@ public class TileMappings { put(TileEntityRadioRec.class, "tileentity_radio_receiver"); put(TileEntityVent.class, "tileentity_vent"); put(TileEntityLandmine.class, "tileentity_landmine"); - put(TileEntityBomber.class, "tileentity_bomber"); put(TileEntityMachineKeyForge.class, "tileentity_key_forge"); put(TileEntitySellafield.class, "tileentity_sellafield_core"); put(TileEntityNukeN45.class, "tileentity_n45"); diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityBomber.java b/src/main/java/com/hbm/tileentity/deco/TileEntityBomber.java deleted file mode 100644 index ea08b8e6a..000000000 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityBomber.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.hbm.tileentity.deco; - -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.PacketDispatcher; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public class TileEntityBomber extends TileEntity { - - public int yaw; - public int pitch; - public int type = 1; - - @Override - public void updateEntity() { - - if (!worldObj.isRemote) { - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, yaw, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, pitch, 1), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, type, 2), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); - } - } - - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - - yaw = nbt.getInteger("bomberYaw"); - pitch = nbt.getInteger("bomberPitch"); - type = nbt.getInteger("bomberType"); - } - - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setInteger("bomberYaw", yaw); - nbt.setInteger("bomberPitch", pitch); - nbt.setInteger("bomberType", type); - } - -} diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index 9516a6dcf..01b59adc8 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -19,7 +19,6 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 24112073e..c5df0b0e1 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3702,6 +3702,7 @@ tile.brick_light.name=Helle Ziegel tile.brick_light_stairs.name=Helle Ziegeltreppe tile.brick_obsidian.name=Obsidianziegel tile.brick_obsidian_stairs.name=Obsidianziegeltreppe +tile.brick_red.name=Ziegel (Roter Raum) tile.brick_slab.brick_asbestos.name=Asbestziegelstufe tile.brick_slab.brick_compound.name=Verbundstufe tile.brick_slab.brick_fire.name=Schamottsteinstufe diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 088d36302..3c982082f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4666,6 +4666,7 @@ tile.brick_light.name=Light Bricks tile.brick_light_stairs.name=Light Bricks Stairs tile.brick_obsidian.name=Obsidian Bricks tile.brick_obsidian_stairs.name=Obsidian Brick Stairs +tile.brick_red.name=Red Room Brick tile.brick_slab.brick_asbestos.name=Asbestos Brick Slab tile.brick_slab.brick_compound.name=Compound Mesh Slab tile.brick_slab.brick_fire.name=Firebrick Slab diff --git a/src/main/resources/assets/hbm/textures/blocks/brick_red.png b/src/main/resources/assets/hbm/textures/blocks/brick_red.png new file mode 100644 index 0000000000000000000000000000000000000000..21fc140e01758f7660b96dbcbdcd7dae4651b66c GIT binary patch literal 768 zcmV+b1ONPqP)N{mwQWQ1DSiXGukuVG?OT~OXr)^sV0vSaS zMNuH7q^c^SC?d-;!Z09;BEm4F?|b^br)^uTwfyn?H}lCD9~TL5d3njl#|OUev)}LW zJdZezIUEicV*n6BP?j~S?f7p42AQVsOs8WOiv>amp8k3z3PuPau-2kfOL;sI1ues1 z5kfE@j~S0IK-D-x2&$@K7zQ?*4Of#3!Z6@)P$<>nID!Gg{&-|In-Wb%Os5ls5NERA zm|BD7h$cWXawOUqGzNIze8@IQ&48y?t`#Zkx({&wx zuHFb;pNo;la(PXXBmj&?BhoZwxm+TjpPvE9vWz^>nNFwVc}^V1^cWWNh&YbP^PDWp z5JIq6Ea({T$=W_tI+by2wQI;h#Nq#^n zMNt%-g;vCI%xd)y5{KK{1R(@3FE7kyGlpTHX&SWFgkgyEJda@*2*Z%wZbw}o|L+c< zwI)dt`o8CIIFRQxS6361YH?i`x!rDQniEn=ilRYEhwtkhzHrePJkKM`GODVgu8&mx z2~WAKo0?Onkxg^r&>Sh6mWl6kXpY1|fNDD==O;RjgHkQ0?i{yhT1H4(tr5R6wmpUr yAL%%pjHX2cU;z&Yjo|`Gi)M_6=eQhA55T{J7JWTlc?Ox zBA6v)lXnJXb7;PzFQGDXwUjDzS(75b=H}wM7TYX65ck|TG*Ow6(R3|thj_CMAh@kX zxp*3*O_U~k3}&qpx!AX+3m_XJkj-^1Mg-I1s>KsU%I50z7y$Tln^c);v2UY&P%$D9 zCL@^!6@7*Bt44r*8%zmoF2{|G>?JhFQDOiU?gjFB^ZyJSoiHwIvS(5hR~36Cvx;<( z_e5m|a%&!^l&cmP_R+&Cdf3IJIBKy8Gu8B`)HHpvaVPvJkq#>SVE8sSu4T4v>dw2y zq9{W~a+Q#)g9aU@Xu$WpA&;fgWq~{6okl<20W#wCQV~o;CTuDp!>^Z@c35K1M9`Or zpeT~l#B<3Am@?a+%U?dee}0_j`9xF|5Y5i*ixS?|`R`Oe{{U*)jkDfw*?|B6002ov JPDHLkV1k+q;adOz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/brick_red_top_alt.png b/src/main/resources/assets/hbm/textures/blocks/brick_red_top_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad266bbe7564461ccb5b4319829bc32e0b07795 GIT binary patch literal 533 zcmV+w0_y#VP)IK$>`be4!ou|&7oGPIwZ>kzdB{n3GAoE+xLC_%z^Y=kIJwAfaq+k(0Q??<@YBJcwY|*ZIV~W*C2)L?f4l2Ae z6z{TeF0)8R2uQm7ZqouoMsO`N5F3D*a}wsYiYFkiHC-=>M$&iVZ1{e@jauzyEuaIL zu#}7pKmWYk6+T3u-4lxWo&mBs?|&Wwx?%Zqe&xf{>7M*}x3+*l`z&DSVV*qESIzww XRD+G7^?9yx00000NkvXXu0mjf&I;!~ literal 0 HcmV?d00001 From 29264d206eca268d37e6a8cbd852f776ce6c4249 Mon Sep 17 00:00:00 2001 From: Voxelstice Date: Thu, 21 Dec 2023 14:11:01 +0300 Subject: [PATCH 188/207] insert something funny here --- .../machine/TileEntityPWRController.java | 18 +- .../machine/rbmk/TileEntityRBMKConsole.java | 209 +++++++++++++++++- 2 files changed, 224 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 09ca138b6..03e34f0fe 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -528,6 +528,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG } + // do some opencomputer stuff + @Override public String getComponentName() { return "ntm_pwr_control"; } @@ -547,13 +549,25 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { - return new Object[] {rodTarget}; + return new Object[] {rodTarget, rodLevel}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoolantInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFuelInfo(Context context, Arguments args) { + return new Object[] {amountLoaded, progress, processTime}; } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {coreHeat, hullHeat, flux, rodTarget}; + return new Object[] {coreHeat, hullHeat, flux, rodTarget, rodLevel, amountLoaded, progress, processTime, tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } @Callback(direct = true, limit = 4) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index ee5690703..158f30152 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -5,6 +5,7 @@ import java.util.Arrays; import java.util.List; import java.util.Locale; import java.util.Set; +import java.util.LinkedHashMap; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.fluid.Fluids; @@ -15,6 +16,7 @@ import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; import com.hbm.util.EnumUtil; import com.hbm.util.I18nUtil; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -28,7 +30,13 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityRBMKConsole extends TileEntityMachineBase implements IControlReceiver, IGUIProvider { +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; + +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRBMKConsole extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent { private int targetX; private int targetY; @@ -509,4 +517,203 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKConsole(player.inventory, this); } + + // do some opencomputer stuff + @Override + public String getComponentName() { + return "rbmk_console"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getColumnData(Context context, Arguments args) { + int x = args.checkInteger(0) - 7; + int y = -args.checkInteger(1) + 7; + + int i = (y + 7) * 15 + (x + 7); + + TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + y); + if (te instanceof TileEntityRBMKBase) { + TileEntityRBMKBase column = (TileEntityRBMKBase) te; + + NBTTagCompound column_data = columns[i].data; + LinkedHashMap data_table = new LinkedHashMap<>(); + data_table.put("type", column.getConsoleType().name()); + data_table.put("hullTemp", column_data.getDouble("heat")); + data_table.put("realSimWater", column_data.getDouble("water")); + data_table.put("realSimSteam", column_data.getDouble("steam")); + data_table.put("moderated", column_data.getBoolean("moderated")); + data_table.put("level", column_data.getDouble("level")); + data_table.put("color", column_data.getShort("color")); + data_table.put("enrichment", column_data.getDouble("enrichment")); + data_table.put("xenon", column_data.getDouble("xenon")); + data_table.put("coreSkinTemp", column_data.getDouble("c_heat")); + data_table.put("coreTemp", column_data.getDouble("c_coreHeat")); + data_table.put("coreMaxTemp", column_data.getDouble("c_maxHeat")); + + if(te instanceof TileEntityRBMKRod){ + TileEntityRBMKRod fuelChannel = (TileEntityRBMKRod)te; + data_table.put("fluxSlow", fuelChannel.fluxSlow); + data_table.put("fluxFast", fuelChannel.fluxFast); + } + + if(te instanceof TileEntityRBMKBoiler){ + TileEntityRBMKBoiler boiler = (TileEntityRBMKBoiler)te; + data_table.put("water", boiler.feed.getFill()); + data_table.put("steam", boiler.steam.getFill()); + } + + if(te instanceof TileEntityRBMKOutgasser){ + TileEntityRBMKOutgasser irradiationChannel = (TileEntityRBMKOutgasser)te; + data_table.put("fluxProgress", irradiationChannel.progress); + data_table.put("requiredFlux", irradiationChannel.duration); + } + + if(te instanceof TileEntityRBMKHeater){ + TileEntityRBMKHeater heaterChannel = (TileEntityRBMKHeater)te; + data_table.put("coolant", heaterChannel.feed.getFill()); + data_table.put("hotcoolant", heaterChannel.steam.getFill()); + } + + return new Object[] {data_table}; + } + return new Object[] {null}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getRBMKPos(Context context, Arguments args) { + if(!(targetX == 0 && targetY== 0 && targetZ==0)){ + LinkedHashMap data_table = new LinkedHashMap<>(); + data_table.put("rbmkCenterX", targetX); + data_table.put("rbmkCenterY", targetY); + data_table.put("rbmkCenterZ", targetZ); + + return new Object[] {data_table}; + } + return new Object[] {null}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] setLevel(Context context, Arguments args) { + double new_level = args.checkDouble(0); + boolean foundRods = false; + for(int i = -7; i <= 7; i++) { + for(int j = -7; j <= 7; j++) { + TileEntity te = worldObj.getTileEntity(targetX + i, targetY, targetZ + j); + + if (te instanceof TileEntityRBMKControlManual) { + TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; + rod.startingLevel = rod.level; + new_level = Math.min(1, Math.max(0, new_level)); + + rod.setTarget(new_level); + te.markDirty(); + foundRods = true; + } + } + } + if(foundRods) + return new Object[] {}; + else + return new Object[] {"No control rods found"}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] setColumnLevel(Context context, Arguments args) { + int x = args.checkInteger(0) - 7; + int y = -args.checkInteger(1) + 7; + double new_level = args.checkDouble(2); + + TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + y); + + if (te instanceof TileEntityRBMKControlManual) { + TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; + rod.startingLevel = rod.level; + new_level = Math.min(1, Math.max(0, new_level)); + + rod.setTarget(new_level); + te.markDirty(); + return new Object[] {}; + } + return new Object[] {"No control rod found at "+(x+7)+","+(7-y)}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] setColorLevel(Context context, Arguments args) { + int color = args.checkInteger(0); + double new_level = args.checkDouble(1); + boolean foundRods = false; + if(color >= 0 && color <=4){ + for(int i = -7; i <= 7; i++) { + for(int j = -7; j <= 7; j++) { + TileEntity te = worldObj.getTileEntity(targetX + i, targetY, targetZ + j); + + if (te instanceof TileEntityRBMKControlManual) { + TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; + if(rod.color == RBMKColor.values()[color]){ + rod.startingLevel = rod.level; + new_level = Math.min(1, Math.max(0, new_level)); + + rod.setTarget(new_level); + te.markDirty(); + foundRods = true; + } + } + } + } + if(foundRods) + return new Object[] {}; + else + return new Object[] { "No rods for color "+color+" found" }; + } + return new Object[] {"Color "+color+" does not exist"}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] setColor(Context context, Arguments args) { + int x = args.checkInteger(0) - 7; + int y = -args.checkInteger(1) + 7; + int new_color = args.checkInteger(2); + if(new_color >= 0 && new_color <=4){ + TileEntity te = worldObj.getTileEntity(targetX + x, targetY, targetZ + y); + + if (te instanceof TileEntityRBMKControlManual) { + TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; + rod.color = RBMKColor.values()[new_color]; + te.markDirty(); + return new Object[] {}; + } + return new Object[] {"No control rod found at "+(x+7)+","+(7-y)}; + } + return new Object[] {"Color "+new_color+" does not exist"}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] pressAZ5(Context context, Arguments args) { + boolean hasRods = false; + for(int i = -7; i <= 7; i++) { + for(int j = -7; j <= 7; j++) { + TileEntity te = worldObj.getTileEntity(targetX + i, targetY, targetZ + j); + + if (te instanceof TileEntityRBMKControlManual) { + TileEntityRBMKControlManual rod = (TileEntityRBMKControlManual) te; + rod.startingLevel = rod.level; + rod.setTarget(0); + te.markDirty(); + hasRods = true; + } + } + } + if(hasRods){ + return new Object[] {}; + } else { + return new Object[] {"No control rods found"}; + } + } } From be2c17f1028c6129e97620c7d9ecad79b7b06579 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 24 Dec 2023 00:30:53 +0100 Subject: [PATCH 189/207] can't wait for the silly people on discord bug me 24/7 about this fuckin g commit i swear to god this is why we can't have nice things --- src/main/java/com/hbm/blocks/ModBlocks.java | 13 + .../com/hbm/blocks/generic/BlockKeyhole.java | 244 ++++++++++++++++++ .../com/hbm/blocks/generic/BlockLoot.java | 5 - .../com/hbm/blocks/generic/BlockModDoor.java | 4 + .../com/hbm/blocks/generic/BlockPedestal.java | 141 ++++++++++ src/main/java/com/hbm/items/ModItems.java | 3 + .../java/com/hbm/items/tool/ItemModDoor.java | 147 +++++------ src/main/java/com/hbm/main/ClientProxy.java | 3 + src/main/java/com/hbm/main/MainRegistry.java | 3 + .../com/hbm/render/block/RenderPedestal.java | 68 +++++ .../com/hbm/render/tileentity/RenderLoot.java | 56 ++++ .../render/tileentity/RenderPedestalTile.java | 61 +++++ .../java/com/hbm/tileentity/TileMappings.java | 2 + src/main/resources/assets/hbm/lang/de_DE.lang | 6 + src/main/resources/assets/hbm/lang/en_US.lang | 6 + .../hbm/textures/blocks/door_red_lower.png | Bin 0 -> 179 bytes .../hbm/textures/blocks/door_red_upper.png | Bin 0 -> 155 bytes .../hbm/textures/blocks/pedestal_side.png | Bin 0 -> 252 bytes .../hbm/textures/blocks/pedestal_top.png | Bin 0 -> 233 bytes .../assets/hbm/textures/items/door_red.png | Bin 0 -> 243 bytes 20 files changed, 672 insertions(+), 90 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockKeyhole.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockPedestal.java create mode 100644 src/main/java/com/hbm/render/block/RenderPedestal.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderPedestalTile.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/door_red_lower.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/door_red_upper.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/pedestal_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/pedestal_top.png create mode 100644 src/main/resources/assets/hbm/textures/items/door_red.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 587bb4025..fa2c429f3 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -132,6 +132,8 @@ public class ModBlocks { public static Block cluster_depth_iron; public static Block cluster_depth_titanium; public static Block cluster_depth_tungsten; + + public static Block stone_keyhole; public static Block stone_depth_nether; public static Block ore_depth_nether_neodymium; @@ -303,6 +305,7 @@ public class ModBlocks { public static Block deco_emitter; public static Block part_emitter; public static Block deco_loot; + public static Block pedestal; public static Block bobblehead; public static Block snowglobe; @@ -614,6 +617,7 @@ public class ModBlocks { public static Block door_metal; public static Block door_office; public static Block door_bunker; + public static Block door_red; public static Block barbed_wire; public static Block barbed_wire_fire; @@ -1367,6 +1371,8 @@ public class ModBlocks { cluster_depth_tungsten = new BlockDepthOre().setBlockName("cluster_depth_tungsten").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_tungsten"); ore_alexandrite = new BlockDepthOre().setBlockName("ore_alexandrite").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_alexandrite"); + stone_keyhole = new BlockKeyhole().setBlockName("stone_keyhole").setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":stone_keyhole"); + ore_random = new BlockMotherOfAllOres().setBlockName("ore_random").setCreativeTab(MainRegistry.blockTab); ore_bedrock = new BlockBedrockOreTE().setBlockName("ore_bedrock").setCreativeTab(null); ore_volcano = new BlockFissure().setBlockName("ore_volcano").setLightLevel(1F).setCreativeTab(MainRegistry.blockTab); @@ -1543,6 +1549,7 @@ public class ModBlocks { deco_emitter = new BlockEmitter().setBlockName("deco_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":emitter"); part_emitter = new PartEmitter().setBlockName("part_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":part_top"); deco_loot = new BlockLoot().setBlockName("deco_loot").setCreativeTab(null).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + pedestal = new BlockPedestal().setBlockName("pedestal").setCreativeTab(null).setHardness(2.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":pedestal_top"); bobblehead = new BlockBobble().setBlockName("bobblehead").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); snowglobe = new BlockSnowglobe().setBlockName("snowglobe").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":glass_boron"); hazmat = new BlockGeneric(Material.cloth).setBlockName("hazmat").setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":hazmat"); @@ -2154,6 +2161,7 @@ public class ModBlocks { door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal"); door_office = new BlockModDoor(Material.iron).setBlockName("door_office").setHardness(10.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":door_office"); door_bunker = new BlockModDoor(Material.iron).setBlockName("door_bunker").setHardness(10.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":door_bunker"); + door_red = new BlockModDoor(Material.iron).setBlockName("door_red").setHardness(10.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":door_red"); barbed_wire = new BarbedWire(Material.iron).setBlockName("barbed_wire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_model"); barbed_wire_fire = new BarbedWire(Material.iron).setBlockName("barbed_wire_fire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_fire_model"); @@ -2584,6 +2592,9 @@ public class ModBlocks { register(ore_bedrock); register(ore_volcano); + //Secret + register(stone_keyhole); + //Crystals GameRegistry.registerBlock(crystal_power, crystal_power.getUnlocalizedName()); GameRegistry.registerBlock(crystal_energy, crystal_energy.getUnlocalizedName()); @@ -2738,6 +2749,7 @@ public class ModBlocks { GameRegistry.registerBlock(deco_emitter, ItemBlockBase.class, deco_emitter.getUnlocalizedName()); GameRegistry.registerBlock(part_emitter, ItemBlockBase.class, part_emitter.getUnlocalizedName()); GameRegistry.registerBlock(deco_loot, deco_loot.getUnlocalizedName()); + GameRegistry.registerBlock(pedestal, pedestal.getUnlocalizedName()); GameRegistry.registerBlock(bobblehead, ItemBlockMeta.class, bobblehead.getUnlocalizedName()); GameRegistry.registerBlock(snowglobe, ItemBlockMeta.class, snowglobe.getUnlocalizedName()); GameRegistry.registerBlock(hazmat, hazmat.getUnlocalizedName()); @@ -3079,6 +3091,7 @@ public class ModBlocks { GameRegistry.registerBlock(door_metal, door_metal.getUnlocalizedName()); GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName()); GameRegistry.registerBlock(door_bunker, door_bunker.getUnlocalizedName()); + GameRegistry.registerBlock(door_red, door_red.getUnlocalizedName()); GameRegistry.registerBlock(secure_access_door, secure_access_door.getUnlocalizedName()); GameRegistry.registerBlock(large_vehicle_door, large_vehicle_door.getUnlocalizedName()); GameRegistry.registerBlock(qe_containment, qe_containment.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java new file mode 100644 index 000000000..14dee9d9d --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java @@ -0,0 +1,244 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemModDoor; +import com.hbm.main.MainRegistry; +import com.hbm.util.WeightedRandomObject; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockStone; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.WeightedRandom; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockKeyhole extends BlockStone { + + protected IIcon iconTop; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconTop = iconRegister.registerIcon("stone"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return side == 0 || side == 1 ? this.iconTop : this.blockIcon; + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { + return new ItemStack(Blocks.stone); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.key_red && side != 0 && side != 1) { + if(world.isRemote) return true; + ForgeDirection dir = ForgeDirection.getOrientation(side); + generateRoom(world, x - dir.offsetX * 4, y - 2, z - dir.offsetZ * 4); + int b = 0; + if(side == 2) b = 1; + if(side == 5) b = 2; + if(side == 3) b = 3; + if(side == 4) b = 0; + ItemModDoor.placeDoorBlock(world, x, y - 1, z, b, ModBlocks.door_red); + world.playSoundAtEntity(player, "hbm:block.lockOpen", 1.0F, 1.0F); + player.triggerAchievement(MainRegistry.achRedRoom); + return true; + } + + return false; + } + + protected static void generateRoom(World world, int x, int y, int z) { + + int size = 9; + int height = 5; + int width = size / 2; + + //Outer Edges, top and bottom + for(int i = -width; i <= width; i++) { + world.setBlock(x + i, y, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y, z - width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + width, y, z + i, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y, z + i, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y + height - 1, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y + height - 1, z - width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + width, y + height - 1, z + i, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y + height - 1, z + i, ModBlocks.brick_red, 6, 3); + } + + for(int i = 1; i <= height - 2; i++) { + //Outer edges, sides + world.setBlock(x + width, y + i, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + width, y + i, z - width, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y + i, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y + i, z - width, ModBlocks.brick_red, 6, 3); + + //Walls + for(int j = -width + 1; j <= width - 1; j++) { + world.setBlock(x + width, y + i, z + j, ModBlocks.brick_red, 4, 3); + world.setBlock(x - width, y + i, z + j, ModBlocks.brick_red, 5, 3); + world.setBlock(x + j, y + i, z + width, ModBlocks.brick_red, 2, 3); + world.setBlock(x + j, y + i, z - width, ModBlocks.brick_red, 3, 3); + } + } + + for(int i = -width + 1; i <= width - 1; i++) { + for(int j = -width + 1; j <= width - 1; j++) { + //Floor and ceiling + world.setBlock(x + i, y, z + j, ModBlocks.brick_red, 1, 3); + world.setBlock(x + i, y + height - 1, z + j, ModBlocks.brick_red, 0, 3); + + for(int k = 1; k <= height - 2; k++) { + world.setBlock(x + i, y + k, z + j, Blocks.air); + } + } + } + + //Torches + int torchDist = width - 1; + int torchOff = torchDist - 1; + world.setBlock(x + torchDist, y + 2, z + torchOff, Blocks.torch); + world.setBlock(x + torchDist, y + 2, z - torchOff, Blocks.torch); + world.setBlock(x - torchDist, y + 2, z + torchOff, Blocks.torch); + world.setBlock(x - torchDist, y + 2, z - torchOff, Blocks.torch); + world.setBlock(x + torchOff, y + 2, z + torchDist, Blocks.torch); + world.setBlock(x - torchOff, y + 2, z + torchDist, Blocks.torch); + world.setBlock(x + torchOff, y + 2, z - torchDist, Blocks.torch); + world.setBlock(x - torchOff, y + 2, z - torchDist, Blocks.torch); + + //Cobwebs + if(world.rand.nextInt(4) == 0) { + for(int i = -width + 1; i <= width - 1; i++) { + for(int j = -width + 1; j <= width - 1; j++) { + if(world.rand.nextBoolean()) world.setBlock(x + i, y + height - 2, z + j, Blocks.web); + } + } + } + + //Pillars + if(world.rand.nextInt(4) == 0) { + for(int i = 1; i <= height - 2; i++) { + world.setBlock(x + width - 2, y + i, z + width - 2, ModBlocks.concrete_colored, 14, 3); + world.setBlock(x + width - 2, y + i, z - width + 2, ModBlocks.concrete_colored, 14, 3); + world.setBlock(x - width + 2, y + i, z + width - 2, ModBlocks.concrete_colored, 14, 3); + world.setBlock(x - width + 2, y + i, z - width + 2, ModBlocks.concrete_colored, 14, 3); + } + } + + //Fire + if(world.rand.nextInt(4) == 0) { + world.setBlock(x + width - 1, y, z + width - 1, Blocks.netherrack); + world.setBlock(x + width - 1, y, z - width + 1, Blocks.netherrack); + world.setBlock(x - width + 1, y, z + width - 1, Blocks.netherrack); + world.setBlock(x - width + 1, y, z - width + 1, Blocks.netherrack); + world.setBlock(x + width - 1, y + 1, z + width - 1, Blocks.fire); + world.setBlock(x + width - 1, y + 1, z - width + 1, Blocks.fire); + world.setBlock(x - width + 1, y + 1, z + width - 1, Blocks.fire); + world.setBlock(x - width + 1, y + 1, z - width + 1, Blocks.fire); + } + + //Circle + if(world.rand.nextInt(4) == 0) { + for(int i = -1; i <= 1; i++) { + for(int j = -1; j <= 1; j++) { + if(i != 0 || j != 0) world.setBlock(x + i, y, z + j, ModBlocks.concrete_colored, 14, 3); + } + } + } + + //Lava + if(world.rand.nextInt(4) == 0) { + world.setBlock(x + width - 2, y, z + width - 1, Blocks.lava); + world.setBlock(x + width - 3, y, z + width - 1, Blocks.lava); + world.setBlock(x - width + 2, y, z + width - 1, Blocks.lava); + world.setBlock(x - width + 3, y, z + width - 1, Blocks.lava); + world.setBlock(x + width - 2, y, z - width + 1, Blocks.lava); + world.setBlock(x + width - 3, y, z - width + 1, Blocks.lava); + world.setBlock(x - width + 2, y, z - width + 1, Blocks.lava); + world.setBlock(x - width + 3, y, z - width + 1, Blocks.lava); + world.setBlock(x + width - 1, y, z + width - 2, Blocks.lava); + world.setBlock(x + width - 1, y, z + width - 3, Blocks.lava); + world.setBlock(x + width - 1, y, z - width + 2, Blocks.lava); + world.setBlock(x + width - 1, y, z - width + 3, Blocks.lava); + world.setBlock(x - width + 1, y, z + width - 2, Blocks.lava); + world.setBlock(x - width + 1, y, z + width - 3, Blocks.lava); + world.setBlock(x - width + 1, y, z - width + 2, Blocks.lava); + world.setBlock(x - width + 1, y, z - width + 3, Blocks.lava); + } + + int rand = world.rand.nextInt(20); + + if(rand == 0) { + world.setBlock(x, y + 1, z, ModBlocks.deco_loot); + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y + 1, z); + loot.addItem(new ItemStack(ModItems.trenchmaster_helmet), 0, 0, 0); + loot.addItem(new ItemStack(ModItems.trenchmaster_plate), 0, 0, 0); + loot.addItem(new ItemStack(ModItems.trenchmaster_legs), 0, 0, 0); + loot.addItem(new ItemStack(ModItems.trenchmaster_boots), 0, 0, 0); + } else { + spawnPedestalItem(world, x, y + 1, z); + } + + //Clear dropped items + List items = world.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(x + 0.5, y, z + 0.5, x + 0.5, y + height, z + 0.5).expand(size / 2D, 0, size / 2D)); + for(EntityItem item : items) item.setDead(); + } + + public static List pedestalItems; + + public static void spawnPedestalItem(World world, int x, int y, int z) { + world.setBlock(x, y, z, ModBlocks.pedestal); + TileEntityPedestal pedestal = (TileEntityPedestal) world.getTileEntity(x, y, z); + if(pedestalItems == null) initPedestal(); + pedestal.item = ((WeightedRandomObject) WeightedRandom.getRandomItem(world.rand, pedestalItems)).asStack().copy(); + } + + public static void initPedestal() { + pedestalItems = new ArrayList(); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.ballistic_gauntlet), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.night_vision), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.protection_charm), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.armor_polish), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.bandaid), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.serum), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.quartz_plutonium), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.morning_glory), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.lodestone), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.spider_milk), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.ink), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.heart_container), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.black_diamond), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.wd40), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.scrumpy), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.wild_p), 5)); + + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.starmetal_sword), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.radaway_flush), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.gem_alexandrite), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.crackpipe), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.flask_infusion), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModBlocks.boxcar), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.book_of_), 5)); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockLoot.java b/src/main/java/com/hbm/blocks/generic/BlockLoot.java index cf949e161..6ce450275 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockLoot.java +++ b/src/main/java/com/hbm/blocks/generic/BlockLoot.java @@ -48,11 +48,6 @@ public class BlockLoot extends BlockContainer { return null; } - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - } - @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockModDoor.java b/src/main/java/com/hbm/blocks/generic/BlockModDoor.java index 2d003020c..b0ccc6634 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockModDoor.java +++ b/src/main/java/com/hbm/blocks/generic/BlockModDoor.java @@ -319,6 +319,8 @@ public class BlockModDoor extends Block { return ModItems.door_metal; else if (this == ModBlocks.door_office) return ModItems.door_office; + else if (this == ModBlocks.door_red) + return ModItems.door_red; else return ModItems.door_bunker; } @@ -379,6 +381,8 @@ public class BlockModDoor extends Block { return ModItems.door_metal; else if (this == ModBlocks.door_office) return ModItems.door_office; + else if (this == ModBlocks.door_red) + return ModItems.door_red; else return ModItems.door_bunker; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java new file mode 100644 index 000000000..2930323f7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java @@ -0,0 +1,141 @@ +package com.hbm.blocks.generic; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class BlockPedestal extends BlockContainer { + + protected IIcon iconSide; + + public BlockPedestal() { + super(Material.rock); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityPedestal(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":pedestal_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return side == 0 || side == 1 ? this.blockIcon : this.iconSide; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) return true; + if(player.isSneaking()) return false; + + TileEntityPedestal pedestal = (TileEntityPedestal) world.getTileEntity(x, y, z); + + if(pedestal.item == null && player.getHeldItem() != null) { + pedestal.item = player.getHeldItem().copy(); + player.inventory.mainInventory[player.inventory.currentItem] = null; + pedestal.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } else if(pedestal.item != null && player.getHeldItem() == null) { + player.inventory.mainInventory[player.inventory.currentItem] = pedestal.item.copy(); + pedestal.item = null; + pedestal.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } + + return false; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + + if(!world.isRemote) { + TileEntityPedestal entity = (TileEntityPedestal) world.getTileEntity(x, y, z); + if(entity != null && entity.item != null) { + EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, entity.item.copy()); + world.spawnEntityInWorld(item); + } + } + + super.breakBlock(world, x, y, z, block, meta); + } + + public static class TileEntityPedestal extends TileEntity { + + public ItemStack item; + + @Override + public boolean canUpdate() { + return false; + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.item = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("item")); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + if(this.item != null) { + NBTTagCompound stack = new NBTTagCompound(); + this.item.writeToNBT(stack); + nbt.setTag("item", stack); + } + } + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 72651c636..d91f9821f 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2352,6 +2352,7 @@ public class ModItems { public static Item door_metal; public static Item door_office; public static Item door_bunker; + public static Item door_red; public static Item sliding_blast_door_skin; @@ -5409,6 +5410,7 @@ public class ModItems { door_metal = new ItemModDoor().setUnlocalizedName("door_metal").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_metal"); door_office = new ItemModDoor().setUnlocalizedName("door_office").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_office"); door_bunker = new ItemModDoor().setUnlocalizedName("door_bunker").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_bunker"); + door_red = new ItemModDoor().setUnlocalizedName("door_red").setCreativeTab(null).setTextureName(RefStrings.MODID + ":door_red"); sliding_blast_door_skin = new ItemSlidingBlastDoorSkin().setUnlocalizedName("sliding_blast_door_skin").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":sliding_blast_door_default"); @@ -8058,6 +8060,7 @@ public class ModItems { GameRegistry.registerItem(door_metal, door_metal.getUnlocalizedName()); GameRegistry.registerItem(door_office, door_office.getUnlocalizedName()); GameRegistry.registerItem(door_bunker, door_bunker.getUnlocalizedName()); + GameRegistry.registerItem(door_red, door_red.getUnlocalizedName()); GameRegistry.registerItem(sliding_blast_door_skin, sliding_blast_door_skin.getUnlocalizedName()); //Records diff --git a/src/main/java/com/hbm/items/tool/ItemModDoor.java b/src/main/java/com/hbm/items/tool/ItemModDoor.java index 6ed3f84f3..e7ead99c9 100644 --- a/src/main/java/com/hbm/items/tool/ItemModDoor.java +++ b/src/main/java/com/hbm/items/tool/ItemModDoor.java @@ -6,105 +6,82 @@ import com.hbm.items.ModItems; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class ItemModDoor extends Item -{ - public ItemModDoor() - { - this.maxStackSize = 1; - this.setCreativeTab(CreativeTabs.tabRedstone); - } +public class ItemModDoor extends Item { + + public ItemModDoor() { + this.maxStackSize = 1; + this.setCreativeTab(CreativeTabs.tabRedstone); + } - /** - * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return - * True if something happen and false if it don't. This is for ITEMS, not BLOCKS - */ - public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) - { - if (p_77648_7_ != 1) - { - return false; - } - else - { - ++p_77648_5_; - Block block; + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { + if(side != 1) { + return false; + } else { + ++y; + + Block block = Blocks.air; - if(this == ModItems.door_metal) - block = ModBlocks.door_metal; - else if(this == ModItems.door_office) - block = ModBlocks.door_office; - else - block = ModBlocks.door_bunker; + if(this == ModItems.door_metal) block = ModBlocks.door_metal; + if(this == ModItems.door_office) block = ModBlocks.door_office; + if(this == ModItems.door_bunker) block = ModBlocks.door_bunker; + if(this == ModItems.door_red) block = ModBlocks.door_red; - if (p_77648_2_.canPlayerEdit(p_77648_4_, p_77648_5_, p_77648_6_, p_77648_7_, p_77648_1_) && p_77648_2_.canPlayerEdit(p_77648_4_, p_77648_5_ + 1, p_77648_6_, p_77648_7_, p_77648_1_)) - { - if (!block.canPlaceBlockAt(p_77648_3_, p_77648_4_, p_77648_5_, p_77648_6_)) - { - return false; - } - else - { - int i1 = MathHelper.floor_double((double)((p_77648_2_.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - placeDoorBlock(p_77648_3_, p_77648_4_, p_77648_5_, p_77648_6_, i1, block); - --p_77648_1_.stackSize; - return true; - } - } - else - { - return false; - } - } - } + if(player.canPlayerEdit(x, y, z, side, stack) && player.canPlayerEdit(x, y + 1, z, side, stack)) { + if(!block.canPlaceBlockAt(world, x, y, z)) { + return false; + } else { + int i1 = MathHelper.floor_double((double) ((player.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + placeDoorBlock(world, x, y, z, i1, block); + --stack.stackSize; + return true; + } + } else { + return false; + } + } + } - public static void placeDoorBlock(World p_150924_0_, int p_150924_1_, int p_150924_2_, int p_150924_3_, int p_150924_4_, Block p_150924_5_) - { - byte b0 = 0; - byte b1 = 0; + public static void placeDoorBlock(World world, int x, int y, int z, int meta, Block door) { + byte offsetX = 0; + byte offsetZ = 0; - if (p_150924_4_ == 0) - { - b1 = 1; - } + if(meta == 0) { + offsetZ = 1; + } - if (p_150924_4_ == 1) - { - b0 = -1; - } + if(meta == 1) { + offsetX = -1; + } - if (p_150924_4_ == 2) - { - b1 = -1; - } + if(meta == 2) { + offsetZ = -1; + } - if (p_150924_4_ == 3) - { - b0 = 1; - } + if(meta == 3) { + offsetX = 1; + } - int i1 = (p_150924_0_.getBlock(p_150924_1_ - b0, p_150924_2_, p_150924_3_ - b1).isNormalCube() ? 1 : 0) + (p_150924_0_.getBlock(p_150924_1_ - b0, p_150924_2_ + 1, p_150924_3_ - b1).isNormalCube() ? 1 : 0); - int j1 = (p_150924_0_.getBlock(p_150924_1_ + b0, p_150924_2_, p_150924_3_ + b1).isNormalCube() ? 1 : 0) + (p_150924_0_.getBlock(p_150924_1_ + b0, p_150924_2_ + 1, p_150924_3_ + b1).isNormalCube() ? 1 : 0); - boolean flag = p_150924_0_.getBlock(p_150924_1_ - b0, p_150924_2_, p_150924_3_ - b1) == p_150924_5_ || p_150924_0_.getBlock(p_150924_1_ - b0, p_150924_2_ + 1, p_150924_3_ - b1) == p_150924_5_; - boolean flag1 = p_150924_0_.getBlock(p_150924_1_ + b0, p_150924_2_, p_150924_3_ + b1) == p_150924_5_ || p_150924_0_.getBlock(p_150924_1_ + b0, p_150924_2_ + 1, p_150924_3_ + b1) == p_150924_5_; - boolean flag2 = false; + int i1 = (world.getBlock(x - offsetX, y, z - offsetZ).isNormalCube() ? 1 : 0) + (world.getBlock(x - offsetX, y + 1, z - offsetZ).isNormalCube() ? 1 : 0); + int j1 = (world.getBlock(x + offsetX, y, z + offsetZ).isNormalCube() ? 1 : 0) + (world.getBlock(x + offsetX, y + 1, z + offsetZ).isNormalCube() ? 1 : 0); + boolean flag = world.getBlock(x - offsetX, y, z - offsetZ) == door || world.getBlock(x - offsetX, y + 1, z - offsetZ) == door; + boolean flag1 = world.getBlock(x + offsetX, y, z + offsetZ) == door || world.getBlock(x + offsetX, y + 1, z + offsetZ) == door; + boolean flag2 = false; - if (flag && !flag1) - { - flag2 = true; - } - else if (j1 > i1) - { - flag2 = true; - } + if(flag && !flag1) { + flag2 = true; + } else if(j1 > i1) { + flag2 = true; + } - p_150924_0_.setBlock(p_150924_1_, p_150924_2_, p_150924_3_, p_150924_5_, p_150924_4_, 2); - p_150924_0_.setBlock(p_150924_1_, p_150924_2_ + 1, p_150924_3_, p_150924_5_, 8 | (flag2 ? 1 : 0), 2); - p_150924_0_.notifyBlocksOfNeighborChange(p_150924_1_, p_150924_2_, p_150924_3_, p_150924_5_); - p_150924_0_.notifyBlocksOfNeighborChange(p_150924_1_, p_150924_2_ + 1, p_150924_3_, p_150924_5_); - } + world.setBlock(x, y, z, door, meta, 2); + world.setBlock(x, y + 1, z, door, 8 | (flag2 ? 1 : 0), 2); + world.notifyBlocksOfNeighborChange(x, y, z, door); + world.notifyBlocksOfNeighborChange(x, y + 1, z, door); + } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 453f04adb..7a4cdf259 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -47,6 +47,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; @@ -171,6 +172,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltF.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDemonLamp.class, new RenderDemonLamp()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLoot.class, new RenderLoot()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPedestal.class, new RenderPedestalTile()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySnowglobe.class, new RenderSnowglobe()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEmitter.class, new RenderEmitter()); @@ -824,6 +826,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderDiFurnaceExtension()); RenderingRegistry.registerBlockHandler(new RenderSplitter()); RenderingRegistry.registerBlockHandler(new RenderCapacitor()); + RenderingRegistry.registerBlockHandler(new RenderPedestal()); RenderingRegistry.registerBlockHandler(new RenderFoundryBasin()); RenderingRegistry.registerBlockHandler(new RenderFoundryMold()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index fd5073c80..ec9ace167 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -190,6 +190,7 @@ public class MainRegistry { public static Achievement achGoFish; public static Achievement achNo9; public static Achievement achInferno; + public static Achievement achRedRoom; public static Achievement bobHidden; public static Achievement horizonsStart; public static Achievement horizonsEnd; @@ -678,6 +679,7 @@ public class MainRegistry { achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.ACID), null).initIndependentStat().registerStat(); achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.BALLS), achSlimeball).initIndependentStat().setSpecial().registerStat(); achInferno = new Achievement("achievement.inferno", "inferno", -8, 10, ModItems.canister_napalm, null).initIndependentStat().setSpecial().registerStat(); + achRedRoom = new Achievement("achievement.redRoom", "redRoom", -10, 10, ModItems.key_red, null).initIndependentStat().setSpecial().registerStat(); bobHidden = new Achievement("achievement.hidden", "hidden", 15, -4, ModItems.gun_dampfmaschine, null).initIndependentStat().registerStat(); @@ -757,6 +759,7 @@ public class MainRegistry { achWitchtaunter, achNo9, achInferno, + achRedRoom, achSlimeball, achSulfuric, bossCreeper, diff --git a/src/main/java/com/hbm/render/block/RenderPedestal.java b/src/main/java/com/hbm/render/block/RenderPedestal.java new file mode 100644 index 000000000..5c8eef3dc --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderPedestal.java @@ -0,0 +1,68 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.generic.BlockPedestal; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; + +public class RenderPedestal implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + + for(int i = 0; i < 3; i++) { + if(i == 0) renderer.setRenderBounds(0.0, 0.0, 0.0, 1.0, 0.25, 1.0); + if(i == 1) renderer.setRenderBounds(0.0, 0.75, 0.0, 1.0, 1.0, 1.0); + if(i == 2) renderer.setRenderBounds(0.125, 0.25, 0.125, 0.875, 0.75, 0.875); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + } + + tessellator.draw(); + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + renderer.setRenderBounds(0.0, 0.0, 0.0, 1.0, 0.25, 1.0); + renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.0, 0.75, 0.0, 1.0, 1.0, 1.0); + renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.125, 0.25, 0.125, 0.875, 0.75, 0.875); + renderer.renderStandardBlock(block, x, y, z); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return BlockPedestal.renderID; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLoot.java b/src/main/java/com/hbm/render/tileentity/RenderLoot.java index 125ebb617..da6545a1e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLoot.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLoot.java @@ -5,13 +5,16 @@ import org.lwjgl.opengl.GL12; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.items.ModItems; +import com.hbm.items.armor.ArmorTrenchmaster; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.render.model.ModelFatman; import com.hbm.render.model.ModelLeverAction; import com.hbm.util.Tuple.Quartet; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureMap; @@ -48,6 +51,8 @@ public class RenderLoot extends TileEntitySpecialRenderer { } else if(stack.getItem() == ModItems.gun_lever_action) { renderShotgun(); + } else if(stack.getItem() instanceof ArmorTrenchmaster) { + renderTrenchmaster(stack); } else { renderStandardItem(item.getW()); } @@ -58,6 +63,57 @@ public class RenderLoot extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } + private void renderTrenchmaster(ItemStack stack) { + GL11.glPushMatrix(); + GL11.glTranslated(0.5, 1.5, 0.5); + GL11.glScaled(0.0625, 0.0625, 0.0625); + GL11.glRotated(180, 1, 0, 0); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + if(stack.getItem() == ModItems.trenchmaster_helmet) { + bindTexture(ResourceManager.trenchmaster_helmet); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + ResourceManager.armor_trenchmaster.renderPart("Helmet"); + GL11.glDisable(GL11.GL_BLEND); + float lastX = OpenGlHelper.lastBrightnessX; + float lastY = OpenGlHelper.lastBrightnessY; + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + GL11.glDisable(GL11.GL_LIGHTING); + ResourceManager.armor_trenchmaster.renderPart("Light"); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lastX, lastY); + } + if(stack.getItem() == ModItems.trenchmaster_plate) { + bindTexture(ResourceManager.trenchmaster_chest); + ResourceManager.armor_trenchmaster.renderPart("Chest"); + bindTexture(ResourceManager.trenchmaster_arm); + GL11.glPushMatrix(); + GL11.glRotated(-3, 1, 0, 0); + ResourceManager.armor_trenchmaster.renderPart("LeftArm"); + ResourceManager.armor_trenchmaster.renderPart("RightArm"); + GL11.glPopMatrix(); + } + if(stack.getItem() == ModItems.trenchmaster_legs) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_leg); + ResourceManager.armor_trenchmaster.renderPart("LeftLeg"); + GL11.glPushMatrix(); + GL11.glRotated(-0.1, 1, 0, 0); + ResourceManager.armor_trenchmaster.renderPart("RightLeg"); + GL11.glPopMatrix(); + } + if(stack.getItem() == ModItems.trenchmaster_boots) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_leg); + ResourceManager.armor_trenchmaster.renderPart("LeftBoot"); + GL11.glPushMatrix(); + GL11.glRotated(-0.1, 1, 0, 0); + ResourceManager.armor_trenchmaster.renderPart("RightBoot"); + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + private void renderNuke() { GL11.glScaled(0.5, 0.5, 0.5); GL11.glTranslated(1, 0.5, 1); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPedestalTile.java b/src/main/java/com/hbm/render/tileentity/RenderPedestalTile.java new file mode 100644 index 000000000..6f39d7389 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPedestalTile.java @@ -0,0 +1,61 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; + +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; + +public class RenderPedestalTile extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y + 1, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + RenderHelper.enableStandardItemLighting(); + + TileEntityPedestal pedestal = (TileEntityPedestal) te; + + if(pedestal.item != null) { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + ItemStack stack = pedestal.item.copy(); + GL11.glScaled(1.5, 1.5, 1.5); + + if(!(stack.getItemSpriteNumber() == 0 && stack.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(stack.getItem()).getRenderType()))) { + GL11.glTranslated(0, 0.125, 0); + GL11.glRotatef(player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * interp + 180, 0.0F, -1.0F, 0.0F); + + if(!RenderManager.instance.options.fancyGraphics) { + GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); + } + + GL11.glTranslated(0, Math.sin((player.ticksExisted + interp) * 0.1) * 0.0625, 0); + } else { + GL11.glTranslated(0, Math.sin((player.ticksExisted + interp) * 0.1) * 0.0625 + 0.0625, 0); + } + + EntityItem dummy = new EntityItem(te.getWorldObj(), 0, 0, 0, stack); + dummy.hoverStart = 0.0F; + + RenderItem.renderInFrame = true; + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + } + + GL11.glPopMatrix(); + } + +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index b4d3693fa..bbd9a724e 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -12,6 +12,7 @@ import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockGlyphidSpawner.TileEntityGlpyhidSpawner; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; +import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; @@ -205,6 +206,7 @@ public class TileMappings { put(TileEntityCustomMachine.class, "tileentity_custom_machine"); put(TileEntityLoot.class, "tileentity_ntm_loot"); + put(TileEntityPedestal.class, "tileentity_ntm_pedestal"); put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); put(TileEntitySnowglobe.class, "tileentity_ntm_snowglobe"); put(TileEntityEmitter.class, "tileentity_ntm_emitter"); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index c5df0b0e1..a07ccfd74 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -66,6 +66,8 @@ achievement.radium.desc=SIE SIND GEFEUERT WEIL SIE RADIUM IN MEINEN KAFFEE GESCH achievement.radium=MISTER UNGLAUBLICH achievement.radPoison.desc=Leide an Strahlenkrankheit. achievement.radPoison=Yay, Strahlung! +achievement.redRoom.desc=? +achievement.redRoom=Die andere Seite achievement.sacrifice.desc=Sterbe im Feuer, aber irgendwie auch nicht. achievement.sacrifice=Sororizid achievement.selenium.desc=Lange nicht gesehen! @@ -1705,6 +1707,7 @@ item.dnt_plate.name=dineutrom brustplatte item.door_bunker.name=Bunkertür item.door_metal.name=Metalltür item.door_office.name=Bürotür +item.door_red.name=Rote Tür item.dosimeter.name=Dosimeter item.drax.name=Terra-Bohrer item.drax_mk2.name=Gehärteter Terra-Bohrer @@ -3893,6 +3896,7 @@ tile.drone_waypoint_request.name=Logistikdronen-Wegpunkt tile.door_bunker.name=Bunkertür tile.door_metal.name=Metalltür tile.door_office.name=Bürotür +tile.door_red.name=Rote Tür tile.ducrete.name=Ducretefliese tile.ducrete_stairs.name=Ducretefliesentreppe tile.ducrete_smooth.name=Ducrete @@ -4312,6 +4316,7 @@ tile.ore_uranium_scorched.name=Verschmortes Uranerz tile.ore_verticium.name=Dollargrünes Mineral tile.ore_volcano.name=Thermale Fissur tile.ore_weidanium.name=Weidit +tile.pedestal.name=Podest tile.pink_barrel.name=Kerosinfass tile.pink_log.name=Pinkes Holz tile.pink_planks.name=Pinke Holzbretter @@ -4479,6 +4484,7 @@ tile.stone_cracked.name=Rissiger Stein tile.stone_depth.name=Tiefenfels tile.stone_depth_nether.name=Nether-Tiefenfels tile.stone_gneiss.name=Graphitschiefer +tile.stone_keyhole.name=Seltsamer Stein tile.stone_porous.name=Poröser Stein tile.stone_resource.asbestos.name=Chrysotil tile.stone_resource.bauxite.name=Bauxit diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 3c982082f..6dac2d884 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -94,6 +94,8 @@ achievement.RBMK.desc=He's delusional, get him to the infirmary. achievement.RBMK=3.6 Roentegen? achievement.redBalloons.desc="This is what we've waited for. This is it, boys, this is war." achievement.redBalloons=99 Red Balloons +achievement.redRoom.desc=? +achievement.redRoom=The Other Side achievement.sacrifice.desc=Face the fire and live. achievement.sacrifice=Sororicide achievement.schrab.desc=Regardless, I wouldn't look at it for too long. @@ -2405,6 +2407,7 @@ item.dnt_plate.name=dineutrom chestplate item.door_bunker.name=Bunker Door item.door_metal.name=Metal Door item.door_office.name=Office Door +item.door_red.name=Red Door item.dosimeter.name=Dosimeter item.drax.name=Terra Drill item.drax_mk2.name=Hardened Terra Drill @@ -4884,6 +4887,7 @@ tile.drone_waypoint_request.name=Logistics Drone Waypoint tile.door_bunker.name=Bunker Door tile.door_metal.name=Metal Door tile.door_office.name=Office Door +tile.door_red.name=Red Door tile.ducrete.name=Ducrete Tile tile.ducrete_stairs.name=Ducrete Tile Stairs tile.ducrete_smooth.name=Ducrete @@ -5311,6 +5315,7 @@ tile.ore_verticium.name=Dollar Green Mineral tile.ore_volcano.name=Geothermal Vent tile.ore_weidanium.name=Weidite tile.part_emitter.name=Deco Particle Emitter +tile.pedestal.name=Pedestal tile.pink_barrel.name=Kerosene Barrel tile.pink_log.name=Pink Log tile.pink_planks.name=Pink Wood Planks @@ -5482,6 +5487,7 @@ tile.stone_cracked.name=Cracked Stone tile.stone_depth.name=Depth Rock tile.stone_depth_nether.name=Nether Depth Rock tile.stone_gneiss.name=Graphitic Schist +tile.stone_keyhole.name=Strange Stone tile.stone_porous.name=Porous Stone tile.stone_resource.asbestos.name=Chrysotile tile.stone_resource.bauxite.name=Bauxite diff --git a/src/main/resources/assets/hbm/textures/blocks/door_red_lower.png b/src/main/resources/assets/hbm/textures/blocks/door_red_lower.png new file mode 100644 index 0000000000000000000000000000000000000000..d3771415f6d6ba0370c0c72dd1f62ddf6feb6e96 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfe+F~XejF+I|2%$9PRfBBx+;I?$K00x^Y8S5Pe4--X?%xrv2r$MpA0 z_^4J&?6CWP=;Xfte>9hIYkWJjf^jh$PcAb9lbP7wLk;Sr+UH98X0$`hJ^-6tJsIXv*9pve2P#4zDX;@Y$X>&p+1G2EJcC zO>`rxMab^B;B4P{&okEUp0|;&LC1I3p1@b!9Q|iU$X&^%X-13^ORI3MBG~V|9|MzQ+=Blndh#U^J5a*SF__gKX(^b+P$;>7r@Lg z_xrNK?DfxbBDb%Y=iHF&mUgby>h2jyZ^gETh0|P^vpg0x7`J`dr?}#%y;Drqs-Jec zyO_;%#e+l(S`1dr_l~)C*5~@xn~l>t68IK+e5-Y`@^tx7<^N(&KgZ?7<@+Xnm0}Pn fmZ^GD6(#R{&B1o+hd@!FTNylE{an^LB{Ts5dMR6P literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/door_red.png b/src/main/resources/assets/hbm/textures/items/door_red.png new file mode 100644 index 0000000000000000000000000000000000000000..4fde1b88968557ef33c59fc3082fa5f1adaeb884 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@>hAfIEF;D zCZ{Mc>}p-|UpT0lf6BhES|yz2{`~Xql>We^mL$6CQ=!3%4V#S&jE#hjh9#t` zor+oH#K5+t^{Ax8{y#|uQ=cS0`1OZd{rA7m%Ux!BmT+9)>aj|=!nl}EqV&KDW;a=b zR}F#ea3Kay+r_K%R_xiLaiEPx;!H hdDA#8At8Z*;drI>|7oHjbAhgA@O1TaS?83{1OPv@UDW^p literal 0 HcmV?d00001 From ca1cd3db17d1977689507ba9b5b1334ed85ff5c1 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 25 Dec 2023 00:08:26 +0100 Subject: [PATCH 190/207] and some more fixes --- changelog | 14 +++++++++++++- gradle.properties | 2 +- .../hbm/blocks/generic/BlockDoorGeneric.java | 5 +++++ .../java/com/hbm/handler/CasingEjector.java | 11 ++++------- .../hbm/handler/guncfg/Gun12GaugeFactory.java | 2 +- .../java/com/hbm/inventory/OreDictManager.java | 2 +- .../java/com/hbm/inventory/fluid/Fluids.java | 6 +++--- .../recipes/ExposureChamberRecipes.java | 4 +++- src/main/java/com/hbm/items/ModItems.java | 4 ++-- .../hbm/items/tool/ItemPollutionDetector.java | 6 +++--- src/main/java/com/hbm/lib/HbmWorldGen.java | 10 ++++++++++ src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../hbm/render/item/weapon/ItemRenderM2.java | 5 +++-- .../tileentity/bomb/TileEntityLaunchPad.java | 3 +++ .../machine/TileEntityMachineArcWelder.java | 2 +- .../turret/TileEntityTurretArty.java | 16 ---------------- .../turret/TileEntityTurretBaseArtillery.java | 17 +++++++++++++++++ .../hbm/textures/items/dynosphere_base.png | Bin 218 -> 0 bytes .../hbm/textures/items/dynosphere_desh.png | Bin 375 -> 0 bytes .../textures/items/dynosphere_desh_charged.png | Bin 495 -> 0 bytes .../textures/items/dynosphere_dineutronium.png | Bin 392 -> 0 bytes .../items/dynosphere_dineutronium_charged.png | Bin 553 -> 0 bytes .../textures/items/dynosphere_euphemium.png | Bin 407 -> 0 bytes .../items/dynosphere_euphemium_charged.png | Bin 568 -> 0 bytes .../textures/items/dynosphere_schrabidium.png | Bin 383 -> 0 bytes .../items/dynosphere_schrabidium_charged.png | Bin 486 -> 0 bytes .../items/dynosphere_tetraneutronium.png | Bin 296 -> 0 bytes .../dynosphere_tetraneutronium_charged.png | Bin 274 -> 0 bytes .../assets/hbm/textures/items/gun_bf_ammo.png | Bin 297 -> 549 bytes 29 files changed, 71 insertions(+), 40 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_base.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_desh.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_desh_charged.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_dineutronium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_dineutronium_charged.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_euphemium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_euphemium_charged.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_schrabidium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_schrabidium_charged.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_tetraneutronium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/dynosphere_tetraneutronium_charged.png diff --git a/changelog b/changelog index 3edae6c41..b35e9997a 100644 --- a/changelog +++ b/changelog @@ -1,9 +1,21 @@ ## Added +* ??? ## Changed * Adjusted the model for the mining helmet * The ladders on the acidizer and fluid tanks are now climbable * Removed those unused blue dungeon bricks +* Red phosphorus is no longer pyrophoric, meaning that multi purpose bomb kits no longer instantly explode +* Adjusted M2's rotations ## Fixed -* Fixed recipe conflict in the arc welder with the medium and large missile fuel tanks \ No newline at end of file +* Fixed recipe conflict in the arc welder with the medium and large missile fuel tanks +* Fixed doomsday missile not being launchable +* Fixed rocket artillery turret power connectors not working with cables +* Fixed arc welder energy consumption check not taking upgrades into account +* Fixed glyphid gland and 16k item barrels not having a proper container item set, effectively voiding the emtpy container when used in crafting +* Fixed confusing item quantity display in the exposure chamber's NEI handler +* Fixed pheromone being tagged as viscous and therefore not being dispersable, making modified pheromone useless +* Fixed mobs not being able to pathfind through open doors +* Fixed the benelli ejecting the casings wrong +* Fixed casing ejection in general being inconsistent, sometimes flying off into the wrong direction \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index d52227a0b..5c90623a5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4816 +mod_build_number=4824 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index ea3780a27..5d44d76f0 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -91,6 +91,11 @@ public class BlockDoorGeneric extends BlockDummyable { // return; //super.addCollisionBoxesToList(worldIn, x, y, z, entityBox, collidingBoxes, entityIn); } + + @Override //should fix AI pathfinding + public boolean getBlocksMovement(IBlockAccess world, int x, int y, int z) { //btw the method name is the exact opposite of that it's doing, check net.minecraft.pathfinding.PathNavigate#512 + return hasExtra(world.getBlockMetadata(x, y, z)); //if it's open + } @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block blockIn){ diff --git a/src/main/java/com/hbm/handler/CasingEjector.java b/src/main/java/com/hbm/handler/CasingEjector.java index 72ec13a3a..94dd08a92 100644 --- a/src/main/java/com/hbm/handler/CasingEjector.java +++ b/src/main/java/com/hbm/handler/CasingEjector.java @@ -127,20 +127,17 @@ public class CasingEjector implements Cloneable { } private static Vec3 rotateVector(Vec3 vector, float pitch, float yaw, float pitchFactor, float yawFactor) { - // Apply randomness to vector - vector.xCoord += rand.nextGaussian() * yawFactor; - vector.yCoord += rand.nextGaussian() * pitchFactor; - vector.zCoord += rand.nextGaussian() * yawFactor; final Matrix4f pitchMatrix = new Matrix4f(), yawMatrix = new Matrix4f(); pitchMatrix.setIdentity(); - pitchMatrix.rotate(-pitch, new Vector3f(1, 0, 0)); + pitchMatrix.rotate(pitch, new Vector3f(1, 0, 0)); yawMatrix.setIdentity(); yawMatrix.rotate(-yaw, new Vector3f(0, 1, 0)); - - final Vector4f vector4f = new Vector4f((float) vector.xCoord, (float) vector.yCoord, (float) vector.zCoord, 1); + + // Apply randomness to vector + final Vector4f vector4f = new Vector4f((float) (vector.xCoord + rand.nextGaussian() * yawFactor), (float) (vector.yCoord + rand.nextGaussian() * pitchFactor), (float) (vector.zCoord + rand.nextGaussian() * yawFactor), 1); Matrix4f.transform(pitchMatrix, vector4f, vector4f); Matrix4f.transform(yawMatrix, vector4f, vector4f); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java index 0a31c1634..8f115d30f 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -39,7 +39,7 @@ public class Gun12GaugeFactory { static { EJECTOR_SPAS = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, 0, 0.5).setAngleRange(0.01F, 0.03F).setDelay(12); EJECTOR_SPAS_ALT = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, 0, 0.5).setAngleRange(0.01F, 0.03F).setDelay(12).setAmount(2); - EJECTOR_BENELLI = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.3, 1, 0).setAngleRange(0.01F, 0.03F); + EJECTOR_BENELLI = new CasingEjector().setMotion(-0.4, 0.3, 0).setOffset(-0.3, 0, 0.5).setAngleRange(0.01F, 0.03F); EJECTOR_UBOINIK = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, -0.3, 0.5).setAngleRange(0.01F, 0.03F); EJECTOR_SSG = new CasingEjector().setMotion(0.2, 0, -0.2).setOffset(0.8, 0, 0).setAngleRange(0.05F, 0.02F).setDelay(20).setAmount(2); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 348f1704c..211c4cab1 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -422,7 +422,7 @@ public class OreDictManager { * PHOSPHORUS */ P_WHITE .hot(5) .ingot(ingot_phosphorus) .block(block_white_phosphorus); - P_RED .hot(2) .dust(powder_fire) .block(block_red_phosphorus); + P_RED .dust(powder_fire) .block(block_red_phosphorus); /* * RARE METALS diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index edc8be8f0..2669476ed 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -331,9 +331,9 @@ public class Fluids { THORIUM_SALT = new FluidType("THORIUM_SALT", 0x7A5542, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, VISCOUS, new FT_Corrosive(65)); THORIUM_SALT_HOT = new FluidType("THORIUM_SALT_HOT", 0x3E3627, 2, 0, 3, EnumSymbol.NONE).setTemp(1600).addTraits(LIQUID, VISCOUS, new FT_Corrosive(65)); THORIUM_SALT_DEPLETED = new FluidType("THORIUM_SALT_DEPLETED", 0x302D1C, 2, 0, 3, EnumSymbol.NONE).setTemp(800).addTraits(LIQUID, VISCOUS, new FT_Corrosive(65)); - FULLERENE = new FluidType("FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); - PHEROMONE = new FluidType("PHEROMONE", 0x5FA6E8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(1)); - PHEROMONE_M = new FluidType(132, "PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, new FT_Pheromone(2)); + FULLERENE = new FluidType("FULLERENE", 0xFF7FED, 3, 3, 3, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(65)); + PHEROMONE = new FluidType("PHEROMONE", 0x5FA6E8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, new FT_Pheromone(1)); + PHEROMONE_M = new FluidType(132, "PHEROMONE_M", 0x48C9B0 , 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, new FT_Pheromone(2)); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE diff --git a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java index cb42e3140..5cee1cb84 100644 --- a/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ExposureChamberRecipes.java @@ -46,8 +46,10 @@ public class ExposureChamberRecipes extends SerializableRecipe { AStack stack = recipe.ingredient.copy(); stack.stacksize = 8; array[0] = stack; + ItemStack output = recipe.output.copy(); + output.stackSize = 8; - recipes.put(array, recipe.output); + recipes.put(array, output); } return recipes; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index d91f9821f..6e76aa0d7 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4647,15 +4647,15 @@ public class ModItems { fluid_tank_full = new ItemFluidTank().setUnlocalizedName("fluid_tank_full").setContainerItem(ModItems.fluid_tank_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_tank"); fluid_tank_lead_empty = new Item().setUnlocalizedName("fluid_tank_lead_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_tank_lead"); fluid_tank_lead_full = new ItemFluidTank().setUnlocalizedName("fluid_tank_lead_full").setContainerItem(ModItems.fluid_tank_lead_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_tank_lead"); - fluid_barrel_full = new ItemFluidTank().setUnlocalizedName("fluid_barrel_full").setContainerItem(ModItems.fluid_barrel_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); fluid_barrel_empty = new Item().setUnlocalizedName("fluid_barrel_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); + fluid_barrel_full = new ItemFluidTank().setUnlocalizedName("fluid_barrel_full").setContainerItem(ModItems.fluid_barrel_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel"); fluid_barrel_infinite = new ItemInfiniteFluid(null, 1_000_000_000).setUnlocalizedName("fluid_barrel_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel_infinite"); disperser_canister_empty = new Item().setUnlocalizedName("disperser_canister_empty").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":disperser_canister"); disperser_canister = new ItemDisperser().setUnlocalizedName("disperser_canister").setContainerItem(ModItems.disperser_canister_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":disperser_canister"); - glyphid_gland = new ItemDisperser().setUnlocalizedName("glyphid_gland").setContainerItem(ModItems.glyphid_gland_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland"); glyphid_gland_empty = new Item().setUnlocalizedName("glyphid_gland_empty").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland"); + glyphid_gland = new ItemDisperser().setUnlocalizedName("glyphid_gland").setContainerItem(ModItems.glyphid_gland_empty).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":glyphid_gland"); siren_track = new ItemCassette().setUnlocalizedName("siren_track").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":cassette"); fluid_duct = new ItemFluidDuct().setUnlocalizedName("fluid_duct").setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":duct"); diff --git a/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java index 4ff3cc55f..1776249cf 100644 --- a/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java +++ b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java @@ -27,16 +27,16 @@ public class ItemPollutionDetector extends Item { float soot = data.pollution[PollutionType.SOOT.ordinal()]; float poison = data.pollution[PollutionType.POISON.ordinal()]; float heavymetal = data.pollution[PollutionType.HEAVYMETAL.ordinal()]; - float fallout = data.pollution[PollutionType.FALLOUT.ordinal()]; + //float fallout = data.pollution[PollutionType.FALLOUT.ordinal()]; soot = ((int) (soot * 100)) / 100F; poison = ((int) (poison * 100)) / 100F; heavymetal = ((int) (heavymetal * 100)) / 100F; - fallout = ((int) (fallout * 100)) / 100F; + //fallout = ((int) (fallout * 100)) / 100F; PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Soot: " + soot).color(EnumChatFormatting.YELLOW).flush(), 100, 4000), (EntityPlayerMP) entity); PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Poison: " + poison).color(EnumChatFormatting.YELLOW).flush(), 101, 4000), (EntityPlayerMP) entity); PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Heavy metal: " + heavymetal).color(EnumChatFormatting.YELLOW).flush(), 102, 4000), (EntityPlayerMP) entity); - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Fallout: " + fallout).color(EnumChatFormatting.YELLOW).flush(), 103, 4000), (EntityPlayerMP) entity); + //PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Fallout: " + fallout).color(EnumChatFormatting.YELLOW).flush(), 103, 4000), (EntityPlayerMP) entity); } } diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index d4bb78bc6..1ae86289b 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -741,6 +741,16 @@ public class HbmWorldGen implements IWorldGenerator { } } } + + if(rand.nextInt(4) == 0) { + int x = i + rand.nextInt(16) + 8; + int y = 6 + rand.nextInt(13); + int z = j + rand.nextInt(16) + 8; + + if(world.getBlock(x, y, z).isReplaceableOreGen(world, x, y, z, Blocks.stone)) { + world.setBlock(x, y, z, ModBlocks.stone_keyhole); + } + } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 40d84cd27..12297eb61 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4816)"; + public static final String VERSION = "1.0.27 BETA (4824)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderM2.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderM2.java index 519caa36d..b4b01c472 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderM2.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderM2.java @@ -30,11 +30,11 @@ public class ItemRenderM2 extends ItemRenderBase { GL11.glRotatef(30, 1, 0, 0); break; case EQUIPPED_FIRST_PERSON: - GL11.glRotatef(-90, 0, 1, 0); if (Minecraft.getMinecraft().thePlayer.isSneaking()) { + GL11.glRotatef(-90, 0, 1, 0); GL11.glTranslatef(-0.96f, -0.9f, -2); - GL11.glRotatef(-5.6f, 0, 1, 1); + GL11.glRotatef(-5.75f, 0, 1, 1);// Just of by 0.15 /* vvv remove to restore original look vvv */ GL11.glRotatef(1.9F, 0, 0, 1); @@ -44,6 +44,7 @@ public class ItemRenderM2 extends ItemRenderBase { GL11.glTranslatef(0, 1.15F, -1.75F); } else { + GL11.glRotatef(-95, 0, 1, 0); GL11.glTranslatef(0, -1, -3); } GL11.glRotatef(25, 1, 0, 0); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 676409778..aa3ae9816 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -10,6 +10,7 @@ import com.hbm.config.GeneralConfig; import com.hbm.entity.missile.EntityCarrier; import com.hbm.entity.missile.EntityMissileAntiBallistic; import com.hbm.entity.missile.EntityMissileBaseNT; +import com.hbm.entity.missile.EntityMissileDoomsday; import com.hbm.entity.missile.EntityMissileShuttle; import com.hbm.entity.missile.EntityMissileTier0.*; import com.hbm.entity.missile.EntityMissileTier1.*; @@ -87,6 +88,8 @@ public class TileEntityLaunchPad extends TileEntityMachineBase implements IEnerg missiles.put(new ComparableStack(ModItems.missile_nuclear), EntityMissileNuclear.class); missiles.put(new ComparableStack(ModItems.missile_nuclear_cluster), EntityMissileMirv.class); missiles.put(new ComparableStack(ModItems.missile_volcano), EntityMissileVolcano.class); + + missiles.put(new ComparableStack(ModItems.missile_doomsday), EntityMissileDoomsday.class); } public ItemStack toRender; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index d6211169b..8bcfe28db 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -142,7 +142,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements public boolean canProcess(ArcWelderRecipe recipe) { - if(this.power < recipe.consumption) return false; + if(this.power < this.consumption) return false; if(recipe.fluid != null) { if(this.tank.getTankType() != recipe.fluid.type) return false; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index c479982db..3b9c8d3ec 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -3,7 +3,6 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.blocks.BlockDummyable; import com.hbm.entity.projectile.EntityArtilleryShell; import com.hbm.handler.CasingEjector; import com.hbm.inventory.container.ContainerTurretBase; @@ -27,7 +26,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implements IGUIProvider { @@ -221,20 +219,6 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen return 7; } - protected void updateConnections() { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - for(int i = 0; i < 2; i++) { - for(int j = 0; j < 4; j++) { - this.trySubscribe(worldObj, xCoord + dir.offsetX * (-1 + j) + rot.offsetX * -3, yCoord + i, zCoord + dir.offsetZ * (-1 + j) + rot.offsetZ * -3, ForgeDirection.SOUTH); - this.trySubscribe(worldObj, xCoord + dir.offsetX * (-1 + j) + rot.offsetX * 2, yCoord + i, zCoord + dir.offsetZ * (-1 + j) + rot.offsetZ * 2, ForgeDirection.NORTH); - this.trySubscribe(worldObj, xCoord + dir.offsetX * -2 + rot.offsetX * (1 - j), yCoord + i, zCoord + dir.offsetZ * -2 + rot.offsetZ * (1 - j), ForgeDirection.EAST); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 3 + rot.offsetX * (1 - j), yCoord + i, zCoord + dir.offsetZ * 3 + rot.offsetZ * (1 - j), ForgeDirection.WEST); - } - } - } - @Override public void updateEntity() { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java index 4257d55b6..f4866fe7a 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java @@ -3,10 +3,12 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.IRadarCommandReceiver; import net.minecraft.entity.Entity; import net.minecraft.util.Vec3; +import net.minecraftforge.common.util.ForgeDirection; public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBaseNT implements IRadarCommandReceiver { @@ -52,4 +54,19 @@ public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBase return height < (e.posY + e.height); } } + + @Override + protected void updateConnections() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + for(int i = 0; i < 2; i++) { + for(int j = 0; j < 4; j++) { + this.trySubscribe(worldObj, xCoord + dir.offsetX * (-1 + j) + rot.offsetX * -3, yCoord + i, zCoord + dir.offsetZ * (-1 + j) + rot.offsetZ * -3, ForgeDirection.SOUTH); + this.trySubscribe(worldObj, xCoord + dir.offsetX * (-1 + j) + rot.offsetX * 2, yCoord + i, zCoord + dir.offsetZ * (-1 + j) + rot.offsetZ * 2, ForgeDirection.NORTH); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -2 + rot.offsetX * (1 - j), yCoord + i, zCoord + dir.offsetZ * -2 + rot.offsetZ * (1 - j), ForgeDirection.EAST); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 3 + rot.offsetX * (1 - j), yCoord + i, zCoord + dir.offsetZ * 3 + rot.offsetZ * (1 - j), ForgeDirection.WEST); + } + } + } } diff --git a/src/main/resources/assets/hbm/textures/items/dynosphere_base.png b/src/main/resources/assets/hbm/textures/items/dynosphere_base.png deleted file mode 100644 index 8bc3b3769dd5760e1b0579243ac015848ba37e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 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 diff --git a/src/main/resources/assets/hbm/textures/items/dynosphere_schrabidium.png b/src/main/resources/assets/hbm/textures/items/dynosphere_schrabidium.png deleted file mode 100644 index 8204ae217bfc4e25c0520125554c2fa6a9c43426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DXgNUb#V~B5myO2-M?=Pb)S1fD0lc1~P+eI9&x~D&0ch!~M-eQtmt^Q8$*D9V)`!581%(g2t zh}LI0{g{GnFaHXCo5f7)$+dgeyQg1RTE2DI<_aCc;qOs$1L$vO#8)- zbB7guA4in4y(<5(hU25!dCT(6J=`{UXKX${2;G1jU3)@$$2md{}B;d1Eca#++6DC=%;kxhc% zEp#o%M9IBZyPgFuanF=@WZcNnFf)83&jr@FV@|7u81?v0ui>++J0&r-@^bP0l+XkKTE3E9 diff --git a/src/main/resources/assets/hbm/textures/items/dynosphere_schrabidium_charged.png b/src/main/resources/assets/hbm/textures/items/dynosphere_schrabidium_charged.png deleted file mode 100644 index 9d6c031460c1a95e2b537ebe551ef8a6d8f29f84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmV@P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0eeYAK~y+TrBb_2 zLO~Rqy({vjr>4*jqlwxOK7kHC76=`MQfRL>gbKnVgy(&%bCwI<3zGPlWV0-LX3m+} ztBf)D51erSGtN$M-)b496zuKgC7vo3WiO6!BJj{|n?xc3luB??DFmAhz#6~bhv&L@ zJ`#!v2su?QL$UCxSj5|8VkeO0t=I4u3v34i^s3c^NGt;_ok_kX`C~eT@;s>V7@Afz z|92>&wGOLyI0%SmhhuAw{T`BaG6^T0wxWt;C!4kFmXn6G$OP=7NH*Io0wFLse>9?f z12dZeaz_hhx!j#Y90a7$21cR{Z9WI`d4QdT3=(Z!5CF15d6M@Ud5T>~_sXp#aU!YPEtyZ8(A9Q~}8z?YYAtdbQg3ui(Fmrz93>R)54^0oW>`uC-W15D@_KJilBaD^j~J28f~vfFwx(D9e)BbnbK~6>9NkD_}Bu;`_Hp z5Do#QgF#gfxZVo?!GVFQx~IQ&`>emV4BL+k!oT#ZkQJ$2ZI*Uxf846^nm*fO{z(N@ urK&0bIvAHcet+=>o*kt94{I8vJHQSO=TSD9>#=eG0000{^_D06ElyfhW)1~V-*JTF; zO;4}*{!aGr_xJY$P2}xrW)$eu{P{6);r8v~>jWc>%^J)V6{|VJouq(1^qQ8xXwvM9 RFMyt6@O1TaS?83{1OO9vZax42 diff --git a/src/main/resources/assets/hbm/textures/items/gun_bf_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_bf_ammo.png index cb8f06db88fbb187f679f8b9dc4055be599f22f6..a7e2968c4378f8fcd17626b5ee3068b26f54d3b7 100644 GIT binary patch delta 508 zcmV!DBDTzsAvlK-nbZS93 z2#U8w#I1rLh!h7Got(r?Hy1&77jeqqq7I4E6cH99YzfY^}GV*-h-QO7BI*ucExqrS(u0J|2tBn=1Q(-P# z+J{LJP1>{rX!>8c2U3_GieeJH2HUoOe{l8Tf;_c&63eV{ki!U)cyy`mEc4>?3j3`r zg;bi&eubxxKd}9L8X*Mba#>N2-_FScM*|9`MTv_fm_;MXPcE47xPiRb*gbhqONe*Xyk&jn*nPGvJ5($eYR< zB051nmE-$%i`BJHNGX|$7qC)M`YvM&0Q$?j>x%E|GIe%ynz-;dlAgoYVStbC`50=L zT(ZcSnME{3=gG5IKztnHxZAULO0qX-lbVdObnOH}wFv2PB7}%(1y0|%LL_7m$bj(s yB8Fk?J)~o|@={YJo-a{Vjh&Il+dYQ#AK(|b5w>)^Q5pvT0000b;@5JjIYZDWrRQ?Li1po)9|OPs-JIA0Dx zO&bYO_yVaof+@Dy&O(y{tpqrUZIoZFR+_i}?;rRtZN4_!~UBi{|9(U;b9+(zq@WOo@=N!w= z<)3l#=ZhF)mK?}lMx6`*39|TD0Pt!%HwPl7s-~*eG|i8I(O(u3tE!5kC@9O4wrwZ1 zGf-XErmE(>f7sZ`q~~_vwkNZ!+(SYL^J65)OM}1Z8zSgUqWl{e=Kufz07*qoM6N<$ Ef}s3$TL1t6 From 13808fa5e768caf42fa5ddf6e0b6f851c96e299d Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Mon, 25 Dec 2023 10:38:39 +0300 Subject: [PATCH 191/207] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index c65b70448..38f25617b 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -154,6 +154,8 @@ achievement.no9.desc="Я надеюÑÑŒ, что Ñвинец, который Ñ achievement.no9=Старый номер ДевÑть achievement.goFish.desc=МорÑкое раÑпÑтие achievement.goFish=Иди порыбачь +achievement.redRoom.desc=? +achievement.redRoom=Ð”Ñ€ÑƒÐ³Ð°Ñ Ñторона cannery.f1=[ Ðажмите f1 Ð´Ð»Ñ Ñправки ] @@ -469,7 +471,7 @@ hbm.key.craneMoveDown=Двигать кран назад hbm.key.craneMoveLeft=Двигать кран влево hbm.key.craneMoveRight=Двигать кран вправо hbm.key.craneMoveUp=Двигать кран вперёд -hbm.key.dash=Деш +hbm.key.dash=Рывок hbm.key.toggleBack=Включить ранец hbm.key.toggleHUD=Включить HUD hbm.key.reload=ПерезарÑдить @@ -1231,6 +1233,8 @@ hbmfluid.thorium_salt_depleted=ÐžÐ±ÐµÐ´Ð½ÐµÐ½Ð½Ð°Ñ Ð¶Ð¸Ð´ÐºÐ°Ñ Ñ‚Ð¾Ñ€Ð¸ÐµÐ²Ð° hbmfluid.thorium_salt_hot=ГорÑÑ‡Ð°Ñ Ð¶Ð¸Ð´ÐºÐ°Ñ Ñ‚Ð¾Ñ€Ð¸ÐµÐ²Ð°Ñ Ñоль hbmfluid.heavywater_hot=ГорÑÑ‡Ð°Ñ Ñ‚ÑÐ¶Ñ‘Ð»Ð°Ñ Ð²Ð¾Ð´Ð° hbmfluid.fullerene=РаÑтвор фуллерена +hbmfluid.pheromone=Феромон-буÑтер +hbmfluid.pheromone_m=Модифицированный феромон-буÑтер hbmmat.actinium227=Ðктиний-227 hbmmat.advancedalloy=Продвинутый Ñплав @@ -1467,6 +1471,13 @@ upgrade.gui.overdrive= * §7Перегруз§r: СтакаетÑÑ Ð´Ð¾ %s ур upgrade.gui.power= * §9ЭнергоÑбережение§r: СтакаетÑÑ Ð´Ð¾ %s уровней upgrade.gui.speed= * §4СкороÑть§r: СтакаетÑÑ Ð´Ð¾ %s уровней +desc.gui.upgrade=§lПринимаемые улучшениÑ:§r +desc.gui.upgrade.afterburner= * §dФорÑаж§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней +desc.gui.upgrade.effectiveness= * §aЭффективноÑть§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней +desc.gui.upgrade.overdrive= * §7Перегруз§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней +desc.gui.upgrade.power= * §1ЭнергоÑбережение§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней +desc.gui.upgrade.speed= * §4СкороÑть§r: СтакаетÑÑ Ð´Ð¾ 3-Ñ… уровней + chem.TEST=ТеÑÑ‚ chem.FP_HEAVYOIL=Переработка Ñ‚Ñжелой нефти chem.FP_SMEAR=Переработка промышленного маÑла @@ -1585,6 +1596,7 @@ chem.CC_ELECTROLYSIS=Электролиз хлорида ÐºÐ°Ð»ÑŒÑ†Ð¸Ñ chem.PC_ELECTROLYSIS=Электролиз хлорида ÐºÐ°Ð»Ð¸Ñ chem.LAMINATE=ПроизводÑтво ламината chem.THORIUM_SALT=Обогащение ториевой Ñоли +chem.MEAT_PROCESSING=Обработка мÑÑа глифидов item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core item.record.ss.desc=Valve - Sector Sweep @@ -1749,6 +1761,11 @@ tile.nuke_fstbmb.name=Жар-бомба tile.bomb_multi.name=ÐœÐ½Ð¾Ð³Ð¾Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð±Ð¾Ð¼Ð±Ð° tile.rejuvinator.name=ГЭКК +item.disperser_canister.name= КаниÑтра раÑÑеивателÑ: +item.disperser_canister_empty.name= КаниÑтра раÑÑÐµÐ¸Ð²Ð°Ñ‚ÐµÐ»Ñ +item.glyphid_gland.name= Железа глифида: +item.glyphid_gland_empty.name= Железа глифида + tile.flame_war.name=Война в коробке tile.float_bomb.name=Ð›ÐµÐ²Ð¸Ñ‚Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð±Ð¾Ð¼Ð±Ð° tile.therm_endo.name=ЭндотермичеÑÐºÐ°Ñ Ð±Ð¾Ð¼Ð±Ð° @@ -2840,9 +2857,6 @@ item.plate_titanium.name=Ð¢Ð¸Ñ‚Ð°Ð½Ð¾Ð²Ð°Ñ Ð¿Ð»Ð°Ñтина item.plate_aluminium.name=ÐÐ»ÑŽÐ¼Ð¸Ð½Ð¸ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñтина item.wire_red_copper.name=Провод из краÑной меди item.neutron_reflector.name=Отражатель нейтронов -item.night_vision.name=Очки ночного Ð·Ñ€ÐµÐ½Ð¸Ñ -item.night_vision.description.item=Даёт ночное зрение (нуждаетÑÑ Ð² полном ÑлектричеÑком Ñете) -item.night_vision.description.in_armor=%s (даёт ночное зрение) item.nugget_beryllium.name=Бериллиевый Ñамородок item.nugget_bismuth.name=Самородок виÑмута item.nugget_tantalium.name=Самородок тантала @@ -3316,6 +3330,9 @@ tile.brick_dungeon_circle.name=Берцелианитовый круг tile.brick_dungeon_flat.name=Берцелианит tile.brick_dungeon_tile.name=Ð‘ÐµÑ€Ñ†ÐµÐ»Ð¸Ð°Ð½Ð¸Ñ‚Ð¾Ð²Ð°Ñ Ð¿Ð»Ð¸Ñ‚ÐºÐ° tile.brick_jungle.name=Энаргитовые кирпичи +tile.stone_keyhole.name=Странный камень +tile.brick_red.name=Кирпичи краÑной комнаты +tile.pedestal.name=ПьедеÑтал tile.brick_jungle_circle.name=Круг МеханиÑта tile.brick_jungle_cracked.name=ПотреÑканные Ñнаргитовые кирпичи tile.brick_jungle_fragile.name=Хрупкие Ñнаргитовые кирпичи @@ -3426,6 +3443,8 @@ item.door_bunker.name=Ð‘ÑƒÐ½ÐºÐµÑ€Ð½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ tile.door_metal.name=МеталличеÑÐºÐ°Ñ Ð´Ð²ÐµÑ€ÑŒ tile.door_office.name=ОфиÑÐ½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ tile.door_bunker.name=Ð‘ÑƒÐ½ÐºÐµÑ€Ð½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ +item.door_red.name=КраÑÐ½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ +tile.door_red.name=КраÑÐ½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ tile.sliding_blast_door.name=Ð Ð°Ð·Ð´Ð²Ð¸Ð¶Ð½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ item.sliding_blast_door_skin.0.name=Скин раздвижной двери: Обычный item.sliding_blast_door_skin.1.name=Скин раздвижной двери: Вариант 1 @@ -4166,7 +4185,6 @@ item.grenade_strong.name=УÑовершенÑÑ‚Ð²Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð³Ñ€Ð°Ð½Ð°Ñ‚Ð° item.grenade_frag.name=ОÑÐºÐ¾Ð»Ð¾Ñ‡Ð½Ð°Ñ Ð³Ñ€Ð°Ð½Ð°Ñ‚Ð° item.grenade_fire.name=ÐžÐ³Ð½ÐµÐ½Ð½Ð°Ñ Ð¾ÑÐºÐ¾Ð»Ð¾Ñ‡Ð½Ð°Ñ Ð³Ñ€Ð°Ð½Ð°Ñ‚Ð° item.grenade_shrapnel.name=Граната Ñо шрапнелью -item.grenate_cats.name=Граната Ñ ÐºÐ¾Ñ‚Ð°Ð¼Ð¸ item.grenade_cluster.name=КлаÑÑ‚ÐµÑ€Ð½Ð°Ñ Ð±Ð¾Ð¼Ð±Ð° item.grenade_flare.name=Ð¡Ð¸Ð³Ð½Ð°Ð»ÑŒÐ½Ð°Ñ Ñ€Ð°ÐºÐµÑ‚Ð° item.grenade_electric.name=Электрограната @@ -4792,9 +4810,11 @@ entity.entity_glyphid_behemoth.name=Глифид-Ñтраж entity.entity_glyphid_brawler.name=Глифид-Ñолдат entity.entity_glyphid_brenda.name=Бренда entity.entity_glyphid_nuclear.name=ЧмÑк -entity.entity_glyphid_scout.name=Глифид-паучок +entity.entity_glyphid_scout.name=Глифид-Ñкаут entity.entity_glyphid_blaster.name=Глифид-Ñтрелок entity.entity_glyphid_bombardier.name=Глифид-бомбардир +entity.entity_glyphid_digger.name=Глифид-копатель +entity.entity_parasite_maggot.name=ПаразитичеÑÐºÐ°Ñ Ð»Ð¸Ñ‡Ð¸Ð½ÐºÐ° entity.hbm.entity_balls_o_tron.name=БаллÑ-О-Трон Прайм entity.hbm.entity_balls_o_tron_seg.name=БаллÑ-О-Трон Сегмент entity.hbm.entity_ntm_ufo.name=МарÑианÑкий корабль Ð²Ñ‚Ð¾Ñ€Ð¶ÐµÐ½Ð¸Ñ From 13debc2cab78f46e2b440a46b08bd451c9fe9a7c Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 26 Dec 2023 12:04:15 +0100 Subject: [PATCH 192/207] decimated rail rendering (we're so back) --- .../java/com/hbm/blocks/rail/IRenderRail.java | 13 + .../com/hbm/blocks/rail/RailNarrowCurve.java | 39 +- .../hbm/blocks/rail/RailNarrowStraight.java | 35 +- .../hbm/blocks/rail/RailStandardBuffer.java | 48 +- .../hbm/blocks/rail/RailStandardCurve.java | 40 +- .../com/hbm/blocks/rail/RailStandardRamp.java | 48 +- .../hbm/blocks/rail/RailStandardStraight.java | 41 +- .../com/hbm/blocks/test/TestBombAdvanced.java | 5 +- .../java/com/hbm/entity/EntityMappings.java | 1 - .../entity/logic/EntityNukeExplosionNT.java | 52 -- .../projectile/EntityThrowableInterp.java | 18 +- .../com/hbm/explosion/nt/IExplosionLogic.java | 8 - src/main/java/com/hbm/explosion/nt/Mark5.java | 282 ----------- .../java/com/hbm/explosion/nt/Mark5Ausf2.java | 447 ------------------ src/main/java/com/hbm/main/ClientProxy.java | 7 +- .../com/hbm/main/ModEventHandlerClient.java | 10 +- .../render/block/RenderNarrowCurveRail.java | 69 --- ...arrowStraightRail.java => RenderRail.java} | 33 +- .../block/RenderStandardBufferRail.java | 77 --- .../render/block/RenderStandardCurveRail.java | 70 --- .../render/block/RenderStandardRampRail.java | 80 ---- .../block/RenderStandardStraightRail.java | 75 --- 22 files changed, 266 insertions(+), 1232 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/rail/IRenderRail.java delete mode 100644 src/main/java/com/hbm/entity/logic/EntityNukeExplosionNT.java delete mode 100644 src/main/java/com/hbm/explosion/nt/IExplosionLogic.java delete mode 100644 src/main/java/com/hbm/explosion/nt/Mark5.java delete mode 100644 src/main/java/com/hbm/explosion/nt/Mark5Ausf2.java delete mode 100644 src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java rename src/main/java/com/hbm/render/block/{RenderNarrowStraightRail.java => RenderRail.java} (53%) delete mode 100644 src/main/java/com/hbm/render/block/RenderStandardBufferRail.java delete mode 100644 src/main/java/com/hbm/render/block/RenderStandardCurveRail.java delete mode 100644 src/main/java/com/hbm/render/block/RenderStandardRampRail.java delete mode 100644 src/main/java/com/hbm/render/block/RenderStandardStraightRail.java diff --git a/src/main/java/com/hbm/blocks/rail/IRenderRail.java b/src/main/java/com/hbm/blocks/rail/IRenderRail.java new file mode 100644 index 000000000..df4c2ed4d --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/IRenderRail.java @@ -0,0 +1,13 @@ +package com.hbm.blocks.rail; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; + +public interface IRenderRail { + + @SideOnly(Side.CLIENT) public void renderInventory(Tessellator tessellator, Block block, int metadata); + @SideOnly(Side.CLIENT) public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z); +} diff --git a/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java index ac317b65d..5da8a5041 100644 --- a/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java @@ -1,20 +1,28 @@ package com.hbm.blocks.rail; +import org.lwjgl.opengl.GL11; + import com.hbm.blocks.BlockDummyable; import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailNarrowCurve extends BlockDummyable implements IRailNTM { +public class RailNarrowCurve extends BlockDummyable implements IRailNTM, IRenderRail { public RailNarrowCurve() { super(Material.iron); @@ -25,11 +33,9 @@ public class RailNarrowCurve extends BlockDummyable implements IRailNTM { return null; } - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - @Override public int getRenderType() { - return renderID; + return RailStandardStraight.renderID; } @Override @@ -141,4 +147,27 @@ public class RailNarrowCurve extends BlockDummyable implements IRailNTM { this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glScaled(0.2, 0.2, 0.2); + GL11.glTranslated(2.5, -0.0625, -1.5); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 12) rotation = 90F / 180F * (float) Math.PI; + if(meta == 14) rotation = 180F / 180F * (float) Math.PI; + if(meta == 13) rotation = 270F / 180F * (float) Math.PI; + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + } } diff --git a/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java index 624087974..a625dd4b5 100644 --- a/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java @@ -1,20 +1,28 @@ package com.hbm.blocks.rail; +import org.lwjgl.opengl.GL11; + import com.hbm.blocks.BlockDummyable; import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailNarrowStraight extends BlockDummyable implements IRailNTM { +public class RailNarrowStraight extends BlockDummyable implements IRailNTM, IRenderRail { public RailNarrowStraight() { super(Material.iron); @@ -25,11 +33,9 @@ public class RailNarrowStraight extends BlockDummyable implements IRailNTM { return null; } - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - @Override public int getRenderType() { - return renderID; + return RailStandardStraight.renderID; } @Override @@ -112,4 +118,23 @@ public class RailNarrowStraight extends BlockDummyable implements IRailNTM { public TrackGauge getGauge(World world, int x, int y, int z) { return TrackGauge.NARROW; } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glTranslated(0, -0.0625, 0); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + float rotation = 0; + if(meta == 2 || meta == 3 || meta == 12 || meta == 13) rotation = 90F / 180F * (float) Math.PI; + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + } } diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java index bb503060a..96f9fde1a 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java @@ -1,19 +1,27 @@ package com.hbm.blocks.rail; +import org.lwjgl.opengl.GL11; + import com.hbm.blocks.BlockDummyable; import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardBuffer extends BlockDummyable implements IRailNTM { +public class RailStandardBuffer extends BlockDummyable implements IRailNTM, IRenderRail { public RailStandardBuffer() { super(Material.iron); @@ -24,11 +32,9 @@ public class RailStandardBuffer extends BlockDummyable implements IRailNTM { return null; } - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - @Override public int getRenderType() { - return renderID; + return RailStandardStraight.renderID; } @Override @@ -134,4 +140,36 @@ public class RailStandardBuffer extends BlockDummyable implements IRailNTM { public TrackGauge getGauge(World world, int x, int y, int z) { return TrackGauge.STANDARD; } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 12) rotation = (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + } } diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java index 10bed1608..dcbecfc4f 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -1,20 +1,28 @@ package com.hbm.blocks.rail; +import org.lwjgl.opengl.GL11; + import com.hbm.blocks.BlockDummyable; import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardCurve extends BlockDummyable implements IRailNTM { +public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRenderRail { public RailStandardCurve() { super(Material.iron); @@ -25,11 +33,9 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { return null; } - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - @Override public int getRenderType() { - return renderID; + return RailStandardStraight.renderID; } @Override @@ -198,4 +204,28 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { BlockDummyable.safeRem = false; } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glScaled(0.2, 0.2, 0.2); + GL11.glTranslated(2.5, -0.0625, -1.5); + GL11.glRotated(90, 0, 1, 0); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + } } diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java index d6911418c..54fb53d2a 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java @@ -1,21 +1,29 @@ package com.hbm.blocks.rail; +import org.lwjgl.opengl.GL11; + import com.hbm.blocks.BlockDummyable; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardRamp extends BlockDummyable implements IRailNTM { +public class RailStandardRamp extends BlockDummyable implements IRailNTM, IRenderRail { public RailStandardRamp() { super(Material.iron); @@ -31,11 +39,9 @@ public class RailStandardRamp extends BlockDummyable implements IRailNTM { return null; } - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - @Override public int getRenderType() { - return renderID; + return RailStandardStraight.renderID; } @Override @@ -135,4 +141,36 @@ public class RailStandardRamp extends BlockDummyable implements IRailNTM { MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), this, dir); MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, -1, 2, 2, 1, 0}, this, dir); } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + } } diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index b68aedd68..b79d3b616 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -1,20 +1,29 @@ package com.hbm.blocks.rail; +import org.lwjgl.opengl.GL11; + import com.hbm.blocks.BlockDummyable; import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardStraight extends BlockDummyable implements IRailNTM { +public class RailStandardStraight extends BlockDummyable implements IRailNTM, IRenderRail { public RailStandardStraight() { super(Material.iron); @@ -117,4 +126,34 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { public TrackGauge getGauge(World world, int x, int y, int z) { return TrackGauge.STANDARD; } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 14 || meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + } } diff --git a/src/main/java/com/hbm/blocks/test/TestBombAdvanced.java b/src/main/java/com/hbm/blocks/test/TestBombAdvanced.java index 2be4012a6..f32cf05e1 100644 --- a/src/main/java/com/hbm/blocks/test/TestBombAdvanced.java +++ b/src/main/java/com/hbm/blocks/test/TestBombAdvanced.java @@ -1,6 +1,6 @@ package com.hbm.blocks.test; -import com.hbm.entity.logic.EntityNukeExplosionNT; +import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.lib.RefStrings; import com.hbm.tileentity.bomb.TileEntityTestBombAdvanced; @@ -133,7 +133,6 @@ public class TestBombAdvanced extends BlockContainer { }*/ world.setBlock(x, y, z, Blocks.air); - world.spawnEntityInWorld(EntityNukeExplosionNT.statFacMKV(world, x + 0.5, y + 0.5, z + 0.5, 100)); - //world.spawnEntityInWorld(EntityNukeExplosionMK4.statFacNoRad(world, 50, x, y, z)); + world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, 50, x, y, z)); } } diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 6e25d2040..904f4920c 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -193,7 +193,6 @@ public class EntityMappings { addEntity(EntityBlockSpider.class, "entity_taintcrawler", 1000); addEntity(EntityRBMKDebris.class, "entity_rbmk_debris", 1000); addEntity(EntityUFO.class, "entity_ntm_ufo", 1000); - addEntity(EntityNukeExplosionNT.class, "entity_ntm_explosion_nt", 1000); addEntity(EntityQuasar.class, "entity_digamma_quasar", 250); addEntity(EntitySpear.class, "entity_digamma_spear", 1000); addEntity(EntityMissileVolcano.class, "entity_missile_volcano", 1000); diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionNT.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionNT.java deleted file mode 100644 index 014e0e3fc..000000000 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionNT.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.hbm.entity.logic; - -import com.hbm.explosion.nt.IExplosionLogic; -import com.hbm.explosion.nt.Mark5Ausf2; - -import net.minecraft.entity.Entity; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -@Deprecated -public class EntityNukeExplosionNT extends Entity { - - private IExplosionLogic explosion; - - public EntityNukeExplosionNT(World world) { - super(world); - } - - public EntityNukeExplosionNT loadLogic(IExplosionLogic explosion) { - this.explosion = explosion; - return this; - } - - @Override - public void onUpdate() { - - if(!worldObj.isRemote) { - if(this.explosion == null || this.explosion.isDone()) { - this.setDead(); - return; - } - - this.explosion.updateLogic(); - } - } - - public static EntityNukeExplosionNT statFacMKV(World world, double x, double y, double z, float power) { - EntityNukeExplosionNT essploshun = new EntityNukeExplosionNT(world); - essploshun.setPositionAndRotation(x, y, z, 0, 0); - essploshun.loadLogic(new Mark5Ausf2(world, power, (float) x, (float) y, (float) z)); - return essploshun; - } - - @Override - protected void entityInit() { } - - @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { } - - @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { } -} diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableInterp.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableInterp.java index 08c860a57..b0ac2f773 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableInterp.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableInterp.java @@ -7,18 +7,18 @@ import net.minecraft.world.World; public abstract class EntityThrowableInterp extends EntityThrowableNT { - private int turnProgress; - private double syncPosX; - private double syncPosY; - private double syncPosZ; - private double syncYaw; - private double syncPitch; + protected int turnProgress; + protected double syncPosX; + protected double syncPosY; + protected double syncPosZ; + protected double syncYaw; + protected double syncPitch; @SideOnly(Side.CLIENT) - private double velocityX; + protected double velocityX; @SideOnly(Side.CLIENT) - private double velocityY; + protected double velocityY; @SideOnly(Side.CLIENT) - private double velocityZ; + protected double velocityZ; public EntityThrowableInterp(World world) { super(world); diff --git a/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java b/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java deleted file mode 100644 index 0886cb3eb..000000000 --- a/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.hbm.explosion.nt; - -@Deprecated -public interface IExplosionLogic { - - public void updateLogic(); - public boolean isDone(); -} diff --git a/src/main/java/com/hbm/explosion/nt/Mark5.java b/src/main/java/com/hbm/explosion/nt/Mark5.java deleted file mode 100644 index 16d2d5ee4..000000000 --- a/src/main/java/com/hbm/explosion/nt/Mark5.java +++ /dev/null @@ -1,282 +0,0 @@ -package com.hbm.explosion.nt; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -@Deprecated -public class Mark5 implements IExplosionLogic { - - //holds rays after being calculated up to where the blocks get removed - private List pendingRays = new ArrayList(); - //once a ray has been processed, it will be buffered for extension - private List completedRays = new ArrayList(); - //buffered blocks marked for deletion - private Set buffer = new HashSet(); - - private World world; - private float strength; - float originX; - float originY; - float originZ; - float angularDelta; - - //0: calculate blocks to destroy - //1: destroy blocks - //2: generate new rays - int phase = 0; - - public Mark5(World world, float strength, float x, float y, float z) { - this.world = world; - this.strength = strength; - this.originX = x; - this.originY = y; - this.originZ = z; - - this.initRays(); - } - - private void initRays() { - - float startLen = 0.5F; - - //top - pendingRays.add(new MVRay(strength, originX, originY, originZ, 0F, (float) Math.PI * 0.5F, startLen)); - //bottom - pendingRays.add(new MVRay(strength, originX, originY, originZ, 0F, -(float) Math.PI * 0.5F, startLen)); - - float pilet = (float) Math.PI * 0.25F; - - for(int i = 0; i < 8; i++) { - pendingRays.add(new MVRay(strength, originX, originY, originZ, pilet * i, 0F, startLen)); - - {//if(i % 2 == 0) { - pendingRays.add(new MVRay(strength, originX, originY, originZ, pilet * i, -pilet, startLen)); - pendingRays.add(new MVRay(strength, originX, originY, originZ, pilet * i, pilet, startLen)); - } - } - - this.angularDelta = pilet; - } - - @Override - public void updateLogic() { - - switch(this.phase) { - case 0: processRays(5000); break; - case 1: breakBlocks(10000); break; - case 2: repopulate(20000); break; - } - } - - private void processRays(int amount) { - - if(this.phase == 0 && this.pendingRays.isEmpty()) { - this.phase = 1; - return; - } - - int rem = 0; - - for(MVRay ray : this.pendingRays) { - - Vec3 vec = Vec3.createVectorHelper(1, 0, 0); - vec.rotateAroundZ(ray.pitch); - vec.rotateAroundY(ray.yaw); - boolean shouldSplit = true; - float lastIndex = 0; - - for(float i = 0; i < ray.length; i += 0.5F) { - - lastIndex = i; - int x = (int)Math.floor(ray.x + vec.xCoord * i); - int y = (int)Math.floor(ray.y + vec.yCoord * i); - int z = (int)Math.floor(ray.z + vec.zCoord * i); - - BlockPos pos = new BlockPos(x, y, z); - - if(y > 255 || y < 0) { - shouldSplit = false; - break; - } - - Block b = world.getBlock(x, y, z); - - float res = (b.getMaterial().isLiquid() ? 0 : b.getExplosionResistance(null)) + Blocks.air.getExplosionResistance(null); - - ray.power -= (res * res); - - if(ray.power <= 0) { - shouldSplit = false; - break; - } - - if(b != Blocks.air) - this.buffer.add(pos); - } - - if(shouldSplit) { - ray.x = ray.x + (float)vec.xCoord * lastIndex; - ray.y = ray.y + (float)vec.yCoord * lastIndex; - ray.z = ray.z + (float)vec.zCoord * lastIndex; - this.completedRays.add(ray); - } - - rem++; - - if(rem == amount) - break; - } - - this.pendingRays.subList(0, rem).clear(); - - if(this.pendingRays.isEmpty()) { - this.phase = 1; - } - } - - private void breakBlocks(int amount) { - - if(this.phase == 1 && this.buffer.isEmpty()) { - this.angularDelta *= 0.5F; - this.phase = 2; - return; - } - - int rem = 0; - - List toRem = new ArrayList(); - - for(BlockPos pos : this.buffer) { - world.setBlock(pos.x, pos.y, pos.z, Blocks.air, 0, 3); - - toRem.add(pos); - rem++; - - if(rem == amount) - break; - } - - this.buffer.removeAll(toRem); - - if(this.buffer.isEmpty()) { - this.angularDelta *= 0.5F; - this.phase = 2; - } - } - - private void repopulate(int amount) { - - if(this.phase == 2 && this.completedRays.isEmpty()) { - this.phase = 0; - } - - int rem = 0; - - for(MVRay ray : this.completedRays) { - - for(int i = 0; i < 2; i++) { - for(int j = 0; j < 2; j++) { - MVRay child = new MVRay(ray.power, ray.x, ray.y, ray.z, ray.yaw + this.angularDelta * i, ray.pitch + this.angularDelta * j, ray.length * 2); - this.pendingRays.add(child); - } - } - - rem++; - - if(rem == amount) - break; - } - - this.completedRays.subList(0, rem).clear(); - } - - @Override - public boolean isDone() { - return this.pendingRays.isEmpty() && this.completedRays.isEmpty() && this.buffer.isEmpty(); - } - - public static class MVRay { - - //initiated with starting power, once processed it shows the power left - float power; - //once calculated, this becomes true - boolean collected = false; - float x; - float y; - float z; - float yaw; - float pitch; - float length; - - public MVRay(float power, float x, float y, float z, float yaw, float pitch, float length) { - this.power = power; - this.x = x; - this.y = y; - this.z = z; - this.yaw = yaw; - this.pitch = pitch; - this.length = length; - } - - public MVRay(float power, float x, float y, float z, Vec3 dir, float length) { - - double len = dir.lengthVector(); - - float yaw = (float)Math.atan2(dir.zCoord, dir.xCoord); - float pitch = (float)Math.asin(dir.yCoord / len); - - this.power = power; - this.x = x; - this.y = y; - this.z = z; - this.yaw = yaw; - this.pitch = pitch; - this.length = length; - } - } - - public static class BlockPos { - - int x; - int y; - int z; - - public BlockPos(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + x; - result = prime * result + y; - result = prime * result + z; - return result; - } - - @Override - public boolean equals(Object obj) { - - if(this == obj) return true; - if(obj == null) return false; - if(getClass() != obj.getClass()) return false; - - BlockPos other = (BlockPos) obj; - if(x != other.x) return false; - if(y != other.y) return false; - if(z != other.z) return false; - - return true; - } - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/explosion/nt/Mark5Ausf2.java b/src/main/java/com/hbm/explosion/nt/Mark5Ausf2.java deleted file mode 100644 index 7c2d60e31..000000000 --- a/src/main/java/com/hbm/explosion/nt/Mark5Ausf2.java +++ /dev/null @@ -1,447 +0,0 @@ -package com.hbm.explosion.nt; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -/* - * Turns out segmenting makes the craters ugly and, for whatever reason, doesn't actually improve performance (??????) - * Ausf3 will use the same approach as MK4 but with some optimizations regarding setBlock redundancy and getBlock operations - * See: docvt7 - */ -@Deprecated -public class Mark5Ausf2 implements IExplosionLogic { - - //holds rays after being calculated up to where the blocks get removed - private HorizontalSegment[] segments; - private HorizontalSegment[] repopulatedSegments; - //buffered blocks marked for deletion - private Set buffer = new HashSet(); - - private World world; - private float strength; - float originX; - float originY; - float originZ; - float length; - - //0: calculate blocks to destroy - //1: destroy blocks - //2: generate new rays - int phase = 0; - - public Mark5Ausf2(World world, float strength, float x, float y, float z) { - this.world = world; - this.strength = strength; - this.originX = x; - this.originY = y; - this.originZ = z; - - this.initRays(); - } - - private double getResolutionMult() { - return 5D; - } - - private void initRays() { - - this.length = 5F; //how long the current rays are - - double bow = length * Math.PI; //one "bow", the distance between the poles along the circumference ( U/2 ) - int bowCount = (int) Math.ceil(bow * getResolutionMult()); //how many segments we want along one bow, usually 1 per block + a resolution multiplier - double bowDelta = (Math.PI / (double) (bowCount - 1)); //the angular difference (pitch) between where each segment is - - segments = new HorizontalSegment[bowCount]; - - for(int i = 0; i < bowCount; i++) { - double currBow = bowDelta * i; //the current angle along the bow (i.e. the pitch of the horizontal ring) - double ringRadius = Math.sin(currBow) * length; //the radius of the current ring - double ringCircumference = 2D * ringRadius * Math.PI; //the circumference for the ring - int ringCount = (int) Math.max(Math.ceil(ringCircumference * getResolutionMult()), 1); //how many rays we want per ring (1 per block plus extra resolution) - double ringDelta = ((Math.PI * 2D) / (double) (ringCount - 1)); //the angular difference (yaw) between rays in a ring - - HorizontalSegment seg = new HorizontalSegment(ringCount); - float pitch = (float) currBow; - - for(int j = 0; j < ringCount; j++) { - float yaw = (float)(ringDelta * j); - - //if(yaw < Math.PI * 0.5 && pitch < Math.PI) - seg.rays[j] = new MVRay(strength, originX, originY, originZ, yaw, pitch, length); - } - - segments[i] = seg; - } - - /*System.out.println("Initialized with" + segments.length + " segments!"); - - for(HorizontalSegment seg : segments) { - - if(seg == null) { - System.out.println("NULL"); - } else { - System.out.println(seg.rays.length); - } - }*/ - } - - @Override - public void updateLogic() { - - switch(this.phase) { - case 0: processRays(50000); break; - case 1: breakBlocks(2000); break; - case 2: repopulate(); break; - } - } - - private int processBow = 0; - private int processRing = 0; - - private void endPhaseZero() { - this.processBow = 0; - this.processRing = 0; - this.phase = 1; - } - - private void processRays(int amount) { - - while(true) { - - if(amount < 0) { - return; - } - - if(this.segments[processBow] == null || this.processRing >= this.segments[processBow].rays.length) { - this.processRing = 0; - this.processBow++; - - if(this.processBow >= this.segments.length) { - endPhaseZero(); - return; - } - continue; - } - - if(this.processBow >= this.segments.length) { - endPhaseZero(); - return; - } - - MVRay ray = this.segments[processBow].rays[this.processRing]; - - if(ray != null) { - - Vec3 vec = Vec3.createVectorHelper(1, 0, 0); - vec.rotateAroundZ(ray.pitch); - vec.rotateAroundY(ray.yaw); - - double finalX = 0; - double finalY = 0; - double finalZ = 0; - - for(float i = 0; i < ray.length; i += 0.5F) { - - finalX = ray.x + vec.xCoord * i; - finalY = ray.y + vec.yCoord * i; - finalZ = ray.z + vec.zCoord * i; - int x = (int)Math.floor(finalX); - int y = (int)Math.floor(finalY); - int z = (int)Math.floor(finalZ); - - //System.out.println(ray.pitch + " " + ray.yaw + " / " + x + " " + y + " " + z); - - BlockPos pos = new BlockPos(x, y, z); - - if(y > 255 || y < 0) { - break; - } - - Block b = world.getBlock(x, y, z); - - float res = (b.getMaterial().isLiquid() ? (float)Math.pow(Blocks.air.getExplosionResistance(null), 1.25) : (float)Math.pow(b.getExplosionResistance(null), 1.25)); - - ray.power -= res; - - if(ray.power <= 0) { - break; - } - - if(b != Blocks.air) - this.buffer.add(pos); - } - - if(ray.power <= 0 || finalY < 0 || finalY > 255 || this.length > this.strength) { - this.segments[processBow].rays[this.processRing] = null; - } - ray.x = (float) finalX; - ray.y = (float) finalY; - ray.z = (float) finalZ; - } - - amount--; - this.processRing++; - } - } - - private void breakBlocks(int amount) { - - if(this.phase == 1 && this.buffer.isEmpty()) { - this.phase = 2; - return; - } - - int rem = 0; - - List toRem = new ArrayList(); - - for(BlockPos pos : this.buffer) { - world.setBlock(pos.x, pos.y, pos.z, Blocks.air, 0, 3); - - toRem.add(pos); - rem++; - - if(rem == amount) - break; - } - - this.buffer.removeAll(toRem); - - if(this.buffer.isEmpty()) { - this.phase = 2; - } - } - - private void repopulate() { - - boolean didYouDoLiterallyAnything = false; - this.length *= 2; - - double bow = length * Math.PI; - int bowCount = (int) Math.ceil(bow * getResolutionMult()); - double bowDelta = (Math.PI / (double) (bowCount - 1)); - - repopulatedSegments = new HorizontalSegment[bowCount]; - - for(int i = 0; i < bowCount; i++) { - - double currBow = bowDelta * i; - double ringRadius = Math.sin(currBow) * length; - double ringCircumference = 2D * ringRadius * Math.PI; - int ringCount = (int) Math.max(Math.ceil(ringCircumference * getResolutionMult()), 1); - double ringDelta = ((Math.PI * 2D) / (double) (ringCount - 1)); - - float pitch = (float) currBow; - HorizontalSegment parentSegment = fromAngle(pitch); - - if(parentSegment != null) { - - HorizontalSegment seg = new HorizontalSegment(ringCount); - - for(int j = 0; j < ringCount; j++) { - float yaw = (float)(ringDelta * j); - - MVRay parentRay = parentSegment.fromAngle(yaw); - - if(parentRay != null && parentRay.power > 0) { - - /*Vec3 newDest = Vec3.createVectorHelper(length, 0D, 0D); - newDest.rotateAroundZ(pitch); - newDest.rotateAroundY(yaw); - Vec3 delta = Vec3.createVectorHelper(newDest.xCoord - parentRay.x, newDest.yCoord - parentRay.y, newDest.zCoord - parentRay.z); - - double deltaLen = delta.lengthVector(); - float pLen = parentRay.length; - - double s_deltaLen = Math.sqrt(delta.xCoord * delta.xCoord + delta.yCoord * delta.yCoord); - double s_alpha0 = parentRay.pitch; - double s_delta = Math.acos((pLen * pLen + s_deltaLen * s_deltaLen - length * length) / (2 * pLen * s_deltaLen)); - double newPitch = s_alpha0 + (Math.PI - s_delta); - - double r_deltaLen = Math.sqrt(delta.xCoord * delta.xCoord + delta.zCoord * delta.zCoord); - double r_alpha0 = parentRay.yaw; - double r_delta = Math.acos((pLen * pLen + r_deltaLen * r_deltaLen - length * length) / (2 * pLen * r_deltaLen)); - double newYaw = r_alpha0 + (Math.PI - r_delta);*/ - - /*System.out.println("deltaLen: " + deltaLen); - System.out.println("pLen: " + pLen); - System.out.println("s_deltaLen: " + s_deltaLen); - System.out.println("s_alpha0: " + s_alpha0); - System.out.println("s_delta: " + s_delta); - System.out.println("newPitch: " + newPitch); - System.out.println("r_deltaLen: " + r_deltaLen); - System.out.println("r_alpha0: " + r_alpha0); - System.out.println("r_delta: " + r_delta); - System.out.println("newYaw: " + newYaw);*/ - /*System.out.println("(pLen * pLen + s_deltaLen * s_deltaLen - length * length) / (2 * pLen * s_deltaLen)"); - System.out.println("" + (pLen * pLen + s_deltaLen * s_deltaLen - length * length) / (2 * pLen * s_deltaLen)); - System.out.println("(pLen * pLen + r_deltaLen * r_deltaLen - length * length) / (2 * pLen * r_deltaLen)"); - System.out.println("" + (pLen * pLen + r_deltaLen * r_deltaLen - length * length) / (2 * pLen * r_deltaLen));*/ - - Vec3 len = Vec3.createVectorHelper(parentRay.x - originX, parentRay.y - originY, parentRay.z - originZ); - double totalLen = len.lengthVector(); - Vec3 normal = Vec3.createVectorHelper(totalLen, 0D, 0D); - normal.rotateAroundZ(pitch); - normal.rotateAroundY(yaw); - - //double surface = 4 * Math.PI * this.length * this.length; - //double prevSurface = 4 * Math.PI * totalLen * totalLen; - float newPower = parentRay.power; - - MVRay newRay = new MVRay(newPower, - (float)(this.originX - normal.xCoord), - (float)(this.originY - normal.yCoord), - (float)(this.originZ - normal.zCoord), - yaw, pitch, (float) (this.length - totalLen)); - - seg.rays[j] = newRay; - repopulatedSegments[i] = seg; - didYouDoLiterallyAnything = true; - } - } - } - } - - this.segments = this.repopulatedSegments; - this.repopulatedSegments = null; - - - /*for(HorizontalSegment seg : segments) { - - if(seg == null) { - System.out.println("NULL"); - } else { - System.out.println(seg.rays.length); - } - } - System.out.println("STOP");*/ - - this.phase = 0; - - if(!didYouDoLiterallyAnything) { - this.isDone = true; - } - } - - private HorizontalSegment fromAngle(float pitch) { - int size = this.segments.length; - int index = (int)Math.floor((pitch * size) / Math.PI) % this.segments.length; - - if(index >= this.segments.length || index < 0) - return null; - - return this.segments[index]; - } - - private boolean isDone = false; - - @Override - public boolean isDone() { - return isDone; - } - - public static class HorizontalSegment { - - MVRay[] rays; - - private HorizontalSegment(int size) { - rays = new MVRay[size]; - } - - private MVRay fromAngle(float yaw) { - int size = rays.length; - int index = (int)Math.floor((yaw * size) / (Math.PI * 2)) % this.rays.length; - - if(index >= this.rays.length || index < 0) - return null; - - return rays[index]; - } - } - - public static class MVRay { - - //initiated with starting power, once processed it shows the power left - float power; - //once calculated, this becomes true - boolean collected = false; - float x; - float y; - float z; - float yaw; - float pitch; - float length; - boolean tracked; - - public MVRay(float power, float x, float y, float z, float yaw, float pitch, float length) { - this.power = power; - this.x = x; - this.y = y; - this.z = z; - this.yaw = yaw; - this.pitch = pitch; - this.length = length; - } - - public MVRay(float power, float x, float y, float z, Vec3 dir, float length) { - - double len = dir.lengthVector(); - - float yaw = (float)Math.atan2(dir.zCoord, dir.xCoord); - float pitch = (float)Math.asin(dir.yCoord / len); - - this.power = power; - this.x = x; - this.y = y; - this.z = z; - this.yaw = yaw; - this.pitch = pitch; - this.length = length; - } - } - - public static class BlockPos { - - int x; - int y; - int z; - - public BlockPos(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + x; - result = prime * result + y; - result = prime * result + z; - return result; - } - - @Override - public boolean equals(Object obj) { - - if(this == obj) return true; - if(obj == null) return false; - if(getClass() != obj.getClass()) return false; - - BlockPos other = (BlockPos) obj; - if(x != other.x) return false; - if(y != other.y) return false; - if(z != other.z) return false; - - return true; - } - } -} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 7a4cdf259..ab715f454 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -834,12 +834,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderFoundryTank()); RenderingRegistry.registerBlockHandler(new RenderFoundryOutlet()); - RenderingRegistry.registerBlockHandler(new RenderNarrowStraightRail()); - RenderingRegistry.registerBlockHandler(new RenderNarrowCurveRail()); - RenderingRegistry.registerBlockHandler(new RenderStandardStraightRail()); - RenderingRegistry.registerBlockHandler(new RenderStandardCurveRail()); - RenderingRegistry.registerBlockHandler(new RenderStandardRampRail()); - RenderingRegistry.registerBlockHandler(new RenderStandardBufferRail()); + RenderingRegistry.registerBlockHandler(new RenderRail()); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 7e3226470..1505391ae 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1,6 +1,7 @@ package com.hbm.main; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Random; @@ -12,6 +13,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.MoveContext; +import com.hbm.blocks.rail.IRailNTM.RailCheckType; +import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.config.GeneralConfig; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; @@ -64,6 +69,7 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.LoggingUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.Jars; @@ -235,7 +241,7 @@ public class ModEventHandlerClient { Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); }*/ - /*List text = new ArrayList(); + List text = new ArrayList(); MovingObjectPosition pos = Library.rayTrace(player, 500, 1, false, true, false); for(int i = 0; i < 2; i++) if(pos != null && pos.typeOfHit == pos.typeOfHit.BLOCK) { @@ -298,7 +304,7 @@ public class ModEventHandlerClient { } while(distanceToCover != 0); ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); - }*/ + } } /// HANLDE ANIMATION BUSES /// diff --git a/src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java b/src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java deleted file mode 100644 index 0cb029690..000000000 --- a/src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.hbm.render.block; - -import org.lwjgl.opengl.GL11; - -import com.hbm.blocks.rail.RailNarrowCurve; -import com.hbm.main.ResourceManager; -import com.hbm.render.util.ObjUtil; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.client.model.obj.WavefrontObject; - -public class RenderNarrowCurveRail implements ISimpleBlockRenderingHandler { - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { - - GL11.glPushMatrix(); - Tessellator tessellator = Tessellator.instance; - - GL11.glScaled(0.2, 0.2, 0.2); - GL11.glTranslated(2.5, -0.0625, -1.5); - tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, 0, false); - tessellator.draw(); - - GL11.glPopMatrix(); - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - - int meta = world.getBlockMetadata(x, y, z); - if(meta < 12) return true; - - Tessellator tessellator = Tessellator.instance; - - tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); - tessellator.setColorOpaque_F(1, 1, 1); - - float rotation = 0; - - if(meta == 12) - rotation = 90F / 180F * (float) Math.PI; - if(meta == 14) - rotation = 180F / 180F * (float) Math.PI; - if(meta == 13) - rotation = 270F / 180F * (float) Math.PI; - - tessellator.addTranslation(x + 0.5F, y, z + 0.5F); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, rotation, true); - tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); - - return true; - } - - @Override - public boolean shouldRender3DInInventory(int modelId) { - return true; - } - - @Override - public int getRenderId() { - return RailNarrowCurve.renderID; - } -} diff --git a/src/main/java/com/hbm/render/block/RenderNarrowStraightRail.java b/src/main/java/com/hbm/render/block/RenderRail.java similarity index 53% rename from src/main/java/com/hbm/render/block/RenderNarrowStraightRail.java rename to src/main/java/com/hbm/render/block/RenderRail.java index 3f2c40c78..a9460d17a 100644 --- a/src/main/java/com/hbm/render/block/RenderNarrowStraightRail.java +++ b/src/main/java/com/hbm/render/block/RenderRail.java @@ -2,51 +2,34 @@ package com.hbm.render.block; import org.lwjgl.opengl.GL11; -import com.hbm.blocks.rail.RailNarrowStraight; -import com.hbm.main.ResourceManager; -import com.hbm.render.util.ObjUtil; +import com.hbm.blocks.rail.IRenderRail; +import com.hbm.blocks.rail.RailStandardStraight; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.world.IBlockAccess; -import net.minecraftforge.client.model.obj.WavefrontObject; -public class RenderNarrowStraightRail implements ISimpleBlockRenderingHandler { +public class RenderRail implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { - GL11.glPushMatrix(); Tessellator tessellator = Tessellator.instance; - - GL11.glTranslated(0, -0.0625, 0); - tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, 0, false); - tessellator.draw(); - + IRenderRail rail = (IRenderRail) block; + rail.renderInventory(tessellator, block, metadata); GL11.glPopMatrix(); } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - Tessellator tessellator = Tessellator.instance; - tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); tessellator.setColorOpaque_F(1, 1, 1); int meta = world.getBlockMetadata(x, y, z); - - float rotation = 0; - - if(meta == 2 || meta == 3 || meta == 12 || meta == 13) - rotation = 90F / 180F * (float) Math.PI; - - tessellator.addTranslation(x + 0.5F, y, z + 0.5F); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, rotation, true); - tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); - + IRenderRail rail = (IRenderRail) block; + rail.renderWorld(tessellator, block, meta, world, x, y, z); return true; } @@ -57,6 +40,6 @@ public class RenderNarrowStraightRail implements ISimpleBlockRenderingHandler { @Override public int getRenderId() { - return RailNarrowStraight.renderID; + return RailStandardStraight.renderID; } } diff --git a/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java b/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java deleted file mode 100644 index 5cf6381e1..000000000 --- a/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.hbm.render.block; - -import org.lwjgl.opengl.GL11; - -import com.hbm.blocks.rail.RailStandardBuffer; -import com.hbm.main.ResourceManager; -import com.hbm.render.util.ObjUtil; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.client.model.obj.WavefrontObject; - -public class RenderStandardBufferRail implements ISimpleBlockRenderingHandler { - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { - - GL11.glPushMatrix(); - Tessellator tessellator = Tessellator.instance; - - GL11.glTranslated(0, -0.0625, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(0.3, 0.3, 0.3); - tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, 0, false); - tessellator.draw(); - - GL11.glPopMatrix(); - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - - int meta = world.getBlockMetadata(x, y, z); - if(meta < 12) return true; - - Tessellator tessellator = Tessellator.instance; - - tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); - tessellator.setColorOpaque_F(1, 1, 1); - - float rotation = 0; - - if(meta == 12) rotation = (float) Math.PI; - if(meta == 14) rotation = 270F / 180F * (float) Math.PI; - if(meta == 15) rotation = 90F / 180F * (float) Math.PI; - - if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); - if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); - if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); - if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); - - tessellator.addTranslation(x + 0.5F, y, z + 0.5F); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, rotation, true); - tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); - - if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); - if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); - if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); - if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); - - return true; - } - - @Override - public boolean shouldRender3DInInventory(int modelId) { - return true; - } - - @Override - public int getRenderId() { - return RailStandardBuffer.renderID; - } -} diff --git a/src/main/java/com/hbm/render/block/RenderStandardCurveRail.java b/src/main/java/com/hbm/render/block/RenderStandardCurveRail.java deleted file mode 100644 index a238d461d..000000000 --- a/src/main/java/com/hbm/render/block/RenderStandardCurveRail.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.hbm.render.block; - -import org.lwjgl.opengl.GL11; - -import com.hbm.blocks.rail.RailStandardCurve; -import com.hbm.main.ResourceManager; -import com.hbm.render.util.ObjUtil; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.client.model.obj.WavefrontObject; - -public class RenderStandardCurveRail implements ISimpleBlockRenderingHandler { - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { - - GL11.glPushMatrix(); - Tessellator tessellator = Tessellator.instance; - - GL11.glScaled(0.2, 0.2, 0.2); - GL11.glTranslated(2.5, -0.0625, -1.5); - GL11.glRotated(90, 0, 1, 0); - tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, 0, false); - tessellator.draw(); - - GL11.glPopMatrix(); - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - - int meta = world.getBlockMetadata(x, y, z); - if(meta < 12) return true; - - Tessellator tessellator = Tessellator.instance; - - tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); - tessellator.setColorOpaque_F(1, 1, 1); - - float rotation = 0; - - if(meta == 15) - rotation = 90F / 180F * (float) Math.PI; - if(meta == 12) - rotation = 180F / 180F * (float) Math.PI; - if(meta == 14) - rotation = 270F / 180F * (float) Math.PI; - - tessellator.addTranslation(x + 0.5F, y, z + 0.5F); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, rotation, true); - tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); - - return true; - } - - @Override - public boolean shouldRender3DInInventory(int modelId) { - return true; - } - - @Override - public int getRenderId() { - return RailStandardCurve.renderID; - } -} diff --git a/src/main/java/com/hbm/render/block/RenderStandardRampRail.java b/src/main/java/com/hbm/render/block/RenderStandardRampRail.java deleted file mode 100644 index eb1e245fd..000000000 --- a/src/main/java/com/hbm/render/block/RenderStandardRampRail.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.hbm.render.block; - -import org.lwjgl.opengl.GL11; - -import com.hbm.blocks.rail.RailStandardRamp; -import com.hbm.main.ResourceManager; -import com.hbm.render.util.ObjUtil; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.client.model.obj.WavefrontObject; - -public class RenderStandardRampRail implements ISimpleBlockRenderingHandler { - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { - - GL11.glPushMatrix(); - Tessellator tessellator = Tessellator.instance; - - GL11.glTranslated(0, -0.0625, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(0.3, 0.3, 0.3); - tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, 0, false); - tessellator.draw(); - - GL11.glPopMatrix(); - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - - int meta = world.getBlockMetadata(x, y, z); - if(meta < 12) return true; - - Tessellator tessellator = Tessellator.instance; - - tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); - tessellator.setColorOpaque_F(1, 1, 1); - - float rotation = 0; - - if(meta == 15) - rotation = 90F / 180F * (float) Math.PI; - if(meta == 12) - rotation = 180F / 180F * (float) Math.PI; - if(meta == 14) - rotation = 270F / 180F * (float) Math.PI; - - if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); - if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); - if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); - if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); - - tessellator.addTranslation(x + 0.5F, y, z + 0.5F); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, rotation, true); - tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); - - if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); - if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); - if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); - if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); - - return true; - } - - @Override - public boolean shouldRender3DInInventory(int modelId) { - return true; - } - - @Override - public int getRenderId() { - return RailStandardRamp.renderID; - } -} diff --git a/src/main/java/com/hbm/render/block/RenderStandardStraightRail.java b/src/main/java/com/hbm/render/block/RenderStandardStraightRail.java deleted file mode 100644 index 5108aaea2..000000000 --- a/src/main/java/com/hbm/render/block/RenderStandardStraightRail.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.hbm.render.block; - -import org.lwjgl.opengl.GL11; - -import com.hbm.blocks.rail.RailStandardStraight; -import com.hbm.main.ResourceManager; -import com.hbm.render.util.ObjUtil; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.client.model.obj.WavefrontObject; - -public class RenderStandardStraightRail implements ISimpleBlockRenderingHandler { - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { - - GL11.glPushMatrix(); - Tessellator tessellator = Tessellator.instance; - - GL11.glTranslated(0, -0.0625, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(0.3, 0.3, 0.3); - tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, 0, false); - tessellator.draw(); - - GL11.glPopMatrix(); - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - - int meta = world.getBlockMetadata(x, y, z); - if(meta < 12) return true; - - Tessellator tessellator = Tessellator.instance; - - tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); - tessellator.setColorOpaque_F(1, 1, 1); - - float rotation = 0; - - if(meta == 14 || meta == 15) rotation = 90F / 180F * (float) Math.PI; - - if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); - if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); - if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); - if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); - - tessellator.addTranslation(x + 0.5F, y, z + 0.5F); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, rotation, true); - tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); - - if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); - if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); - if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); - if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); - - return true; - } - - @Override - public boolean shouldRender3DInInventory(int modelId) { - return true; - } - - @Override - public int getRenderId() { - return RailStandardStraight.renderID; - } -} From 8b4e4bf4f30cea87afaef5f35d331e995ef566d3 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 27 Dec 2023 17:59:28 +0100 Subject: [PATCH 193/207] and now everything is broken --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../blocks/rail/BlockRailWaypointSystem.java | 203 + .../java/com/hbm/blocks/rail/IRailNTM.java | 8 +- .../java/com/hbm/blocks/rail/IRenderRail.java | 3 + .../com/hbm/blocks/rail/RailNarrowCurve.java | 2 +- .../hbm/blocks/rail/RailNarrowStraight.java | 2 +- .../hbm/blocks/rail/RailStandardBuffer.java | 2 +- .../hbm/blocks/rail/RailStandardCurve.java | 2 +- .../com/hbm/blocks/rail/RailStandardRamp.java | 2 +- .../hbm/blocks/rail/RailStandardStraight.java | 3 - .../hbm/blocks/rail/RailStandardSwitch.java | 269 ++ .../hbm/entity/train/EntityRailCarBase.java | 23 +- .../java/com/hbm/main/ResourceManager.java | 1 + .../java/com/hbm/tileentity/TileMappings.java | 3 + .../models/blocks/rail_standard_switch.obj | 3923 +++++++++++++++++ .../hbm/textures/blocks/rail_switch_sign.png | Bin 0 -> 583 bytes 16 files changed, 4427 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java create mode 100644 src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java create mode 100644 src/main/resources/assets/hbm/models/blocks/rail_standard_switch.obj create mode 100644 src/main/resources/assets/hbm/textures/blocks/rail_switch_sign.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index fa2c429f3..1b69835f3 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1174,6 +1174,7 @@ public class ModBlocks { public static Block rail_large_curve; public static Block rail_large_ramp; public static Block rail_large_buffer; + public static Block rail_large_switch; public static Block statue_elb; public static Block statue_elb_g; @@ -2251,6 +2252,7 @@ public class ModBlocks { rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); + rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); @@ -3551,6 +3553,7 @@ public class ModBlocks { register(rail_large_curve); register(rail_large_ramp); register(rail_large_buffer); + register(rail_large_switch); //Crate GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java b/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java new file mode 100644 index 000000000..7ef5f4fb0 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java @@ -0,0 +1,203 @@ +package com.hbm.blocks.rail; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.BobMathUtil; +import com.hbm.util.ChatBuilder; +import com.hbm.util.ParticleUtil; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.material.Material; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public abstract class BlockRailWaypointSystem extends BlockDummyable implements IRailNTM { + + public List railDefs = new ArrayList(); + + public BlockRailWaypointSystem(Material mat) { + super(mat); + } + + /** Whether the train at position FROM can move towards the waypoint TO along the supplied railDef, also supplies world and core position */ + public boolean canCross(World world, int x, int y, int z, Vec3 from, Vec3 to, RailDef def) { + return true; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ); + double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90; + Vec3 trainPos = Vec3.createVectorHelper(trainX, trainY, trainZ); + + //convert nodes to a list of links with in-world positions + Vec3 train = Vec3.createVectorHelper(trainX, trainY, trainZ); + Vec3 core = Vec3.createVectorHelper(cX + 0.5, cY, cZ + 0.5); + List>> links = new ArrayList(); + + for(RailDef def : railDefs) { + List> linkList = new ArrayList(); + links.add(linkList); + + for(int i = 0; i < def.nodes.size() - 1; i++) { + Vec3 vec1 = getPositionFromNode(world, x, y, z, core, def.nodes.get(i), meta); + Vec3 vec2 = getPositionFromNode(world, x, y, z, core, def.nodes.get(i + 1), meta); + ParticleUtil.spawnDroneLine(world, vec1.xCoord, vec1.yCoord, vec1.zCoord, vec2.xCoord - vec1.xCoord, vec2.yCoord - vec1.yCoord, vec2.zCoord - vec1.zCoord, 0xff0000); + linkList.add(new Pair(new Vec3[] {vec1, vec2}, def)); + } + } + + //find closest node + Pair closest = null; + Vec3 startingPos = null; + /** closest chain of link definitions */ + List> cDef = null; + double angularDiff = 0; + double linkAngle = 0; + double dist = Double.MAX_VALUE; + /** direction */ + boolean d = true; + + for(List> chain : links) { + for(Pair link : chain) { + Vec3[] array = link.getKey(); + Vec3 point = getClosestPointOnLink(array[0], array[1], train); + + if(point != null) { + Vec3 delta = point.subtract(train); + double length = delta.lengthVector(); + + if(!canCross(world, cX, cY, cZ, trainPos, point, link.getValue())) continue; + + linkAngle = EntityRailCarBase.generateYaw(array[1], array[0]); + angularDiff = BobMathUtil.angularDifference(linkAngle, -moveAngle); + if(angularDiff < -180) { angularDiff += 180; linkAngle += 180; d = false; } + if(angularDiff > 0) { angularDiff -= 180; linkAngle -= 180; d = false; } + + if(length < dist) { + closest = link; + startingPos = point; + cDef = chain; + dist = length; + } + } + } + } + + if(closest == null) { + return Vec3.createVectorHelper(trainX, trainY, trainZ); + } + + double distRemaining = speed; + boolean engaged = false; + Vec3 currentPos = startingPos; + for(int i = d ? 0 : cDef.size() - 1; d ? (i < cDef.size()) : (i >= 0); i += d ? 1 : -1) { + + Pair link = cDef.get(i); + Vec3[] array = link.getKey(); + + if(!engaged) { + if(link == closest) { + engaged = true; + } else { + continue; + } + } + + Vec3 nextNode = array[d?1:0]; + Vec3 delta = nextNode.subtract(currentPos); + + if(!canCross(world, cX, cY, cZ, currentPos, nextNode, link.getValue())) break; + + double len = delta.lengthVector(); + if(len >= distRemaining) { + info.overshoot = 0; + double newYaw = EntityRailCarBase.generateYaw(nextNode, currentPos); + if(Math.abs(BobMathUtil.angularDifference(newYaw, moveAngle)) < 45) info.yaw = (float) newYaw; + else info.yaw = (float) moveAngle; + delta.normalize(); + return Vec3.createVectorHelper(currentPos.xCoord - delta.xCoord * distRemaining / len, currentPos.yCoord - delta.yCoord * distRemaining / len, currentPos.zCoord - delta.zCoord * distRemaining / len); + } + + distRemaining -= len; + currentPos = nextNode; + } + + if(!world.isRemote) PacketDispatcher.wrapper.sendToAllAround(new PlayerInformPacket(ChatBuilder.start("" + distRemaining).color(EnumChatFormatting.RED).flush(), 1), new TargetPoint(world.provider.dimensionId, x, y, z, 50)); + + info.overshoot = distRemaining; + info.pos = new BlockPos(currentPos.xCoord, currentPos.yCoord, currentPos.zCoord); + + return currentPos; + } + + public Vec3 getClosestPointOnLink(Vec3 pointA, Vec3 pointB, Vec3 pointP) { + Vec3 ap = Vec3.createVectorHelper(pointP.xCoord - pointA.xCoord, 0, pointP.zCoord - pointA.zCoord); + Vec3 ab = Vec3.createVectorHelper(pointB.xCoord - pointA.xCoord, 0, pointB.zCoord - pointA.zCoord); + + double magAB = ab.xCoord * ab.xCoord + ab.zCoord * ab.zCoord; + double dotProd = ap.xCoord * ab.xCoord + ap.zCoord * ab.zCoord; + double dist = dotProd / magAB; + + if(dist < 0) return pointA; + if(dist > 1) return pointB; + if(dist < 0 || dist > 1) return null; + + return Vec3.createVectorHelper(pointA.xCoord + ab.xCoord * dist, pointA.yCoord + (pointB.yCoord - pointA.yCoord) * dist, pointA.zCoord + ab.zCoord * dist); + } + + /** Creates the in-world position for a node based on the node itself and the core position */ + public Vec3 getPositionFromNode(World world, int x, int y, int z, Vec3 core, Vec3 node, int meta) { + float rotation = 0; + if(meta == 12) rotation = 90F / 180F * (float) Math.PI; + if(meta == 14) rotation = 180F / 180F * (float) Math.PI; + if(meta == 13) rotation = 270F / 180F * (float) Math.PI; + Vec3 copy = Vec3.createVectorHelper(node.xCoord, node.yCoord, node.zCoord); + copy.rotateAroundY(rotation); + return core.addVector(copy.xCoord, copy.yCoord, copy.zCoord); + } + + public class RailDef { + String name; + public List nodes = new ArrayList(); + + public RailDef(String name) { + this.name = name; + } + } +} diff --git a/src/main/java/com/hbm/blocks/rail/IRailNTM.java b/src/main/java/com/hbm/blocks/rail/IRailNTM.java index 120c3b586..bd1d91f2f 100644 --- a/src/main/java/com/hbm/blocks/rail/IRailNTM.java +++ b/src/main/java/com/hbm/blocks/rail/IRailNTM.java @@ -17,7 +17,7 @@ public interface IRailNTM { * Inherently safer than simply adding the motion to the position and then snapping, since that may lead to derailing. * The motion has to be calculated from the train's rotation (rotated 180° when going backwards), the scalar doesn't matter since it's only used for determining orientation in a clear way. * Motion ends up being *-1 if the train is going in reverse, still pointing forwards despite the speed being negative. - * Also features a double[] wrapper with size 1 which holds the speed value that overshoots the rail. + * Also features RailContext which determines overshoot and the final yaw rotation * */ public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context); @@ -46,8 +46,10 @@ public interface IRailNTM { public static class MoveContext { public RailCheckType type; public double collisionBogieDistance; - public boolean collision = false; //if a buffer stop or similar applies - public double overshoot; //how much of the travel distance was cut short + /** if a buffer stop or similar applies */ + public boolean collision = false; + /** how much of the travel distance was cut short */ + public double overshoot; public MoveContext(RailCheckType type, double collisionBogieDistance) { this.type = type; diff --git a/src/main/java/com/hbm/blocks/rail/IRenderRail.java b/src/main/java/com/hbm/blocks/rail/IRenderRail.java index df4c2ed4d..4b3cf8346 100644 --- a/src/main/java/com/hbm/blocks/rail/IRenderRail.java +++ b/src/main/java/com/hbm/blocks/rail/IRenderRail.java @@ -1,5 +1,6 @@ package com.hbm.blocks.rail; +import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -8,6 +9,8 @@ import net.minecraft.world.IBlockAccess; public interface IRenderRail { + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + @SideOnly(Side.CLIENT) public void renderInventory(Tessellator tessellator, Block block, int metadata); @SideOnly(Side.CLIENT) public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z); } diff --git a/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java index 5da8a5041..ecf690121 100644 --- a/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java @@ -35,7 +35,7 @@ public class RailNarrowCurve extends BlockDummyable implements IRailNTM, IRender @Override public int getRenderType() { - return RailStandardStraight.renderID; + return renderID; } @Override diff --git a/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java index a625dd4b5..4b84f25c2 100644 --- a/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java @@ -35,7 +35,7 @@ public class RailNarrowStraight extends BlockDummyable implements IRailNTM, IRen @Override public int getRenderType() { - return RailStandardStraight.renderID; + return renderID; } @Override diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java index 96f9fde1a..20e345172 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java @@ -34,7 +34,7 @@ public class RailStandardBuffer extends BlockDummyable implements IRailNTM, IRen @Override public int getRenderType() { - return RailStandardStraight.renderID; + return renderID; } @Override diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java index dcbecfc4f..a8e69b8a8 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -35,7 +35,7 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend @Override public int getRenderType() { - return RailStandardStraight.renderID; + return renderID; } @Override diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java index 54fb53d2a..c9a1e6010 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java @@ -41,7 +41,7 @@ public class RailStandardRamp extends BlockDummyable implements IRailNTM, IRende @Override public int getRenderType() { - return RailStandardStraight.renderID; + return renderID; } @Override diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index b79d3b616..f448d7881 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -8,7 +8,6 @@ import com.hbm.main.ResourceManager; import com.hbm.render.util.ObjUtil; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -34,8 +33,6 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM, IR return null; } - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - @Override public int getRenderType() { return renderID; diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java b/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java new file mode 100644 index 000000000..6c16ecf90 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java @@ -0,0 +1,269 @@ +package com.hbm.blocks.rail; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardSwitch extends BlockRailWaypointSystem implements IRenderRail { + + @SideOnly(Side.CLIENT) private IIcon iconSign; + + public RailStandardSwitch() { + super(Material.iron); + + RailDef main = new RailDef("main"); + RailDef side = new RailDef("side"); + railDefs.add(main); + railDefs.add(side); + + main.nodes.add(Vec3.createVectorHelper(-8.5, 0.1875, 0.5)); + main.nodes.add(Vec3.createVectorHelper(-7.5, 0.1875, 0.5)); + main.nodes.add(Vec3.createVectorHelper(6.5, 0.1875, 0.5)); + main.nodes.add(Vec3.createVectorHelper(7.5, 0.1875, 0.5)); + main.nodes.add(Vec3.createVectorHelper(8.5, 0.1875, 0.5)); + + side.nodes.add(Vec3.createVectorHelper(-8.5, 0.1875, 4.5)); + side.nodes.add(Vec3.createVectorHelper(-7.5, 0.1875, 4.5)); + side.nodes.add(Vec3.createVectorHelper(-6.5, 0.1875, 4.5)); + side.nodes.add(Vec3.createVectorHelper(-5.5, 0.1875, 4.5)); + side.nodes.add(Vec3.createVectorHelper(-4.5, 0.1875, 4.5)); + side.nodes.add(Vec3.createVectorHelper(-3.5, 0.1875, 4.5)); + side.nodes.add(Vec3.createVectorHelper(-2.5, 0.1875, 4.5)); + side.nodes.add(Vec3.createVectorHelper(-1.5, 0.1875, 4.5)); + side.nodes.add(Vec3.createVectorHelper(-0.5, 0.1875, 4.25)); + side.nodes.add(Vec3.createVectorHelper(0.5, 0.1875, 3.9375)); + side.nodes.add(Vec3.createVectorHelper(1.5, 0.1875, 3.375)); + side.nodes.add(Vec3.createVectorHelper(2.5, 0.1875, 2.4625)); + side.nodes.add(Vec3.createVectorHelper(3.5, 0.1875, 1.75)); + side.nodes.add(Vec3.createVectorHelper(4.5, 0.1875, 1.1875)); + side.nodes.add(Vec3.createVectorHelper(5.5, 0.1875, 0.875)); + side.nodes.add(Vec3.createVectorHelper(6.5, 0.1875, 0.625)); + side.nodes.add(Vec3.createVectorHelper(7.5, 0.1875, 0.5)); + side.nodes.add(Vec3.createVectorHelper(8.5, 0.1875, 0.5)); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconSign = iconRegister.registerIcon(RefStrings.MODID + ":rail_switch_sign"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityRailSwitch(); + } + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 7, 7, 1, 0}; + } + + @Override + public int getOffset() { + return 7; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } + + @Override + public boolean canCross(World world, int x, int y, int z, Vec3 from, Vec3 to, RailDef def) { + TileEntityRailSwitch tile = (TileEntityRailSwitch) world.getTileEntity(x, y, z); + if(tile == null) return true; + + ForgeDirection dir = ForgeDirection.getOrientation(tile.getBlockMetadata() - 10); + + if(dir == Library.POS_X) if(from.xCoord < to.xCoord) return true; + if(dir == Library.NEG_X) if(from.xCoord > to.xCoord) return true; + if(dir == Library.POS_Z) if(from.zCoord < to.zCoord) return true; + if(dir == Library.NEG_Z) if(from.zCoord > to.zCoord) return true; + + if(dir == Library.POS_X) if(to.xCoord < x + 0.5 + 7) return true; + if(dir == Library.NEG_X) if(to.xCoord > x + 0.5 - 7) return true; + if(dir == Library.POS_Z) if(to.zCoord < z + 0.5 + 7) return true; + if(dir == Library.NEG_Z) if(to.zCoord > z + 0.5 - 7) return true; + + if(tile.isSwitched) { + if("side".equals(def.name)) return true; + } else { + if("main".equals(def.name)) return true; + } + + return false; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) return true; + if(player.isSneaking()) return false; + + int[] pos = this.findCore(world, x, y, z); + + if(pos != null) { + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(tile instanceof TileEntityRailSwitch) { + TileEntityRailSwitch sw = (TileEntityRailSwitch) tile; + sw.isSwitched = !sw.isSwitched; + sw.markDirty(); + world.markBlockForUpdate(pos[0], pos[1], pos[2]); + } + } + + return true; + } + + @Override + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + return super.snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + if(!super.checkRequirement(world, x, y, z, dir, o)) return false; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + for(int i = 0; i < 4; i++) if(!world.getBlock(x + dX * (2 + i) + rX * 2, y, z + dZ * (2 + i) + rZ * 2).isReplaceable(world, x + dX * (2 + i) + rX * 2, y, z + dZ * (2 + i) + rZ * 2)) return false; + for(int i = 0; i < 2; i++) if(!world.getBlock(x + dX * (4 + i) + rX * 3, y, z + dZ * (4 + i) + rZ * 3).isReplaceable(world, x + dX * (4 + i) + rX * 3, y, z + dZ * (4 + i) + rZ * 3)) return false; + if(!world.getBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4).isReplaceable(world, x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4)) return false; + for(int j = 0; j < 2; j++) for(int i = 0; i < 2; i++) if(!world.getBlock(x + dX * (6 + j) + rX * (3 + i), y, z + dZ * (6 + j) + rZ * (3 + i)).isReplaceable(world, x + dX * (6 + j) + rX * (3 + i), y, z + dZ * (6 + j) + rZ * (3 + i))) return false; + if(!world.getBlock(x + dX * 7 + rX * 5, y, z + dZ * 7 + rZ * 5).isReplaceable(world, x + dX * 7 + rX * 5, y, z + dZ * 7 + rZ * 5)) return false; + for(int j = 0; j < 7; j++) for(int i = 0; i < 2; i++) if(!world.getBlock(x + dX * (8 + j) + rX * (4 + i), y, z + dZ * (8 + j) + rZ * (4 + i)).isReplaceable(world, x + dX * (8 + j) + rX * (4 + i), y, z + dZ * (8 + j) + rZ * (4 + i))) return false; + + return true; + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + BlockDummyable.safeRem = true; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + for(int i = 0; i < 4; i++) world.setBlock(x + dX * (2 + i) + rX * 2, y, z + dZ * (2 + i) + rZ * 2, this, rot.ordinal(), 3); + for(int i = 0; i < 2; i++) world.setBlock(x + dX * (4 + i) + rX * 3, y, z + dZ * (4 + i) + rZ * 3, this, rot.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4, this, rot.ordinal(), 3); + for(int j = 0; j < 2; j++) for(int i = 0; i < 2; i++) world.setBlock(x + dX * (6 + j) + rX * (3 + i), y, z + dZ * (6 + j) + rZ * (3 + i), this, dir.ordinal(), 3); + world.setBlock(x + dX * 7 + rX * 5, y, z + dZ * 7 + rZ * 5, this, rot.ordinal(), 3); + for(int j = 0; j < 7; j++) for(int i = 0; i < 2; i++) world.setBlock(x + dX * (8 + j) + rX * (4 + i), y, z + dZ * (8 + j) + rZ * (4 + i), this, dir.ordinal(), 3); + + BlockDummyable.safeRem = false; + } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glTranslated(0, -0.0625, -0.1875); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.1, 0.1, 0.1); + tessellator.startDrawingQuads(); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rail_standard_switch, "Rail", this.blockIcon, tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rail_standard_switch, "Rail", this.blockIcon, tessellator, rotation, true); + + TileEntity tile = world.getTileEntity(x, y, z); + + if(tile instanceof TileEntityRailSwitch) { + TileEntityRailSwitch sw = (TileEntityRailSwitch) tile; + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rail_standard_switch, sw.isSwitched ? "SignTurn" : "SignStraight", this.iconSign, tessellator, rotation, true); + } + + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + } + + public static class TileEntityRailSwitch extends TileEntity { + public boolean isSwitched = false; + + @Override public boolean canUpdate() { return false; } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.isSwitched = nbt.getBoolean("isSwitched"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("isSwitched", this.isSwitched); + } + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index f4a301914..ee256de43 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -207,7 +207,6 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { double z = posZ + rot.zCoord; dummy.setPosition(x, y, z); dummy.setSize(def.width, def.height); - dummy.velocityChanged = true; worldObj.spawnEntityInWorld(dummy); this.dummies[i] = dummy; } @@ -215,16 +214,18 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { this.initDummies = true; } - for(int i = 0; i < definitions.length; i++) { - DummyConfig def = definitions[i]; - BoundingBoxDummyEntity dummy = dummies[i]; - Vec3 rot = Vec3.createVectorHelper(def.offset.xCoord, def.offset.yCoord, def.offset.zCoord); - rot.rotateAroundX((float) (this.rotationPitch * Math.PI / 180D)); - rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); - double x = renderX + rot.xCoord; - double y = renderY + rot.yCoord; - double z = renderZ + rot.zCoord; - dummy.setPosition(x, y, z); + if(renderY != 0) { + for(int i = 0; i < definitions.length; i++) { + DummyConfig def = definitions[i]; + BoundingBoxDummyEntity dummy = dummies[i]; + Vec3 rot = Vec3.createVectorHelper(def.offset.xCoord, def.offset.yCoord, def.offset.zCoord); + rot.rotateAroundX((float) (this.rotationPitch * Math.PI / 180D)); + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + rot.xCoord; + double y = renderY + rot.yCoord; + double z = renderZ + rot.zCoord; + dummy.setPosition(x, y, z); + } } } } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 0d1a613df..69e6aee87 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1467,6 +1467,7 @@ public class ResourceManager { public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj")); public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj")); public static final IModelCustom rail_standard_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_buffer.obj")); + public static final IModelCustom rail_standard_switch = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_switch.obj")); public static final IModelCustom capacitor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/capacitor.obj")); public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj")); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index bbd9a724e..d51bdab4b 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -25,6 +25,7 @@ import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge; import com.hbm.blocks.network.FluidDuctPaintable.TileEntityPipePaintable; +import com.hbm.blocks.rail.RailStandardSwitch.TileEntityRailSwitch; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.tileentity.bomb.*; @@ -407,6 +408,8 @@ public class TileMappings { put(TileEntityDroneDock.class, "tileentity_drone_dock"); put(TileEntityDroneProvider.class, "tileentity_drone_provider"); put(TileEntityDroneRequester.class, "tileentity_drone_requester"); + + put(TileEntityRailSwitch.class, "tileentity_rail_switch"); } private static void put(Class clazz, String... names) { diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_switch.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_switch.obj new file mode 100644 index 000000000..9cfecc35f --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_switch.obj @@ -0,0 +1,3923 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_switch.blend' +# www.blender.org +o SignTurn +v -2.500000 1.000000 -1.125000 +v -1.500000 1.000000 -1.125000 +v -2.500000 2.000000 -1.125000 +v -1.500000 2.000000 -1.125000 +v -2.500000 2.000000 -0.875000 +v -2.500000 1.000000 -0.875000 +v -1.500000 1.000000 -0.875000 +v -1.500000 2.000000 -0.875000 +v -2.125000 1.000000 -0.875000 +v -1.875000 1.000000 -0.875000 +v -2.125000 1.000000 -1.125000 +v -1.875000 1.000000 -1.125000 +v -2.125000 0.000000 -1.125000 +v -2.125000 0.000000 -0.875000 +v -1.875000 0.000000 -0.875000 +v -1.875000 0.000000 -1.125000 +vt 0.500000 0.500000 +vt 0.000000 0.000000 +vt 0.500000 0.000000 +vt 1.000000 0.500000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vt 0.625000 0.500000 +vt 0.500000 -0.000000 +vt 0.625000 -0.000000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.500000 -0.000000 +vt 0.625000 -0.000000 +vt 0.500000 0.000000 +vt 0.625000 0.500000 +vt 0.500000 0.500000 +vt 0.750000 0.375000 +vt 0.875000 0.500000 +vt 0.750000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.500000 +vt 1.000000 1.000000 +vt 0.500000 0.500000 +vt 0.625000 0.000000 +vt 0.500000 0.500000 +vt 0.625000 0.000000 +vt 0.875000 0.375000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 4/7/3 7/8/3 2/9/3 +f 1/3/4 5/10/4 3/1/4 +f 3/11/5 8/12/5 4/13/5 +f 2/14/6 6/15/6 1/16/6 +f 13/17/6 15/18/6 14/19/6 +f 16/20/1 11/21/1 12/22/1 +f 14/23/2 10/24/2 9/25/2 +f 15/26/3 12/27/3 10/28/3 +f 13/29/4 9/30/4 11/31/4 +f 3/1/1 4/32/1 2/2/1 +f 7/4/2 8/33/2 5/5/2 +f 4/7/3 8/34/3 7/8/3 +f 1/3/4 6/35/4 5/10/4 +f 3/11/5 5/36/5 8/12/5 +f 2/14/6 7/37/6 6/15/6 +f 13/17/6 16/38/6 15/18/6 +f 16/20/1 13/39/1 11/21/1 +f 14/23/2 15/40/2 10/24/2 +f 15/26/3 16/41/3 12/27/3 +f 13/29/4 14/42/4 9/30/4 +o SignStraight +v -2.500000 1.000000 -1.125000 +v -1.500000 1.000000 -1.125000 +v -2.500000 2.000000 -1.125000 +v -1.500000 2.000000 -1.125000 +v -2.500000 2.000000 -0.875000 +v -2.500000 1.000000 -0.875000 +v -1.500000 1.000000 -0.875000 +v -1.500000 2.000000 -0.875000 +v -2.125000 1.000000 -0.875000 +v -1.875000 1.000000 -0.875000 +v -2.125000 1.000000 -1.125000 +v -1.875000 1.000000 -1.125000 +v -2.125000 0.000000 -1.125000 +v -2.125000 0.000000 -0.875000 +v -1.875000 0.000000 -0.875000 +v -1.875000 0.000000 -1.125000 +vt 0.500000 0.500000 +vt 0.000000 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.500000 +vt 0.000100 0.999900 +vt 0.000000 0.500000 +vt 0.625000 0.500000 +vt 0.500000 -0.000000 +vt 0.625000 -0.000000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.500000 -0.000000 +vt 0.625000 -0.000000 +vt 0.500000 0.000000 +vt 0.625000 0.500000 +vt 0.500000 0.500000 +vt 0.750000 0.375000 +vt 0.875000 0.500000 +vt 0.750000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.500000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vt 0.625000 0.000000 +vt 0.500000 0.500000 +vt 0.625000 0.000000 +vt 0.875000 0.375000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 19/43/7 18/44/7 17/45/7 +f 23/46/8 21/47/8 22/48/8 +f 20/49/9 23/50/9 18/51/9 +f 17/45/10 21/52/10 19/43/10 +f 19/53/11 24/54/11 20/55/11 +f 18/56/12 22/57/12 17/58/12 +f 29/59/12 31/60/12 30/61/12 +f 32/62/7 27/63/7 28/64/7 +f 30/65/8 26/66/8 25/67/8 +f 31/68/9 28/69/9 26/70/9 +f 29/71/10 25/72/10 27/73/10 +f 19/43/7 20/74/7 18/44/7 +f 23/46/8 24/75/8 21/47/8 +f 20/49/9 24/76/9 23/50/9 +f 17/45/10 22/77/10 21/52/10 +f 19/53/11 21/78/11 24/54/11 +f 18/56/12 23/79/12 22/57/12 +f 29/59/12 32/80/12 31/60/12 +f 32/62/7 29/81/7 27/63/7 +f 30/65/8 31/82/8 26/66/8 +f 31/68/9 32/83/9 28/69/9 +f 29/71/10 30/84/10 25/72/10 +o Rail +v 1.000000 0.062500 4.812500 +v 1.000000 0.062500 5.187500 +v -1.000000 0.062500 5.187500 +v -1.000000 0.062500 4.812500 +v -1.000000 0.000000 5.187500 +v 1.000000 0.000000 5.187500 +v -1.000000 0.000000 4.812500 +v 1.000000 0.000000 4.812500 +v -1.000000 0.000000 4.187500 +v 1.000000 0.000000 4.187500 +v -1.000000 0.000000 3.812500 +v 1.000000 0.000000 3.812500 +v -1.000000 0.000000 3.187500 +v 1.000000 0.000000 3.187500 +v -1.000000 0.000000 2.812500 +v 1.000000 0.000000 2.812500 +v -1.000000 0.000000 7.187500 +v 1.000000 0.000000 7.187500 +v -1.000000 0.000000 6.812500 +v 1.000000 0.000000 6.812500 +v -1.000000 0.000000 6.187500 +v 1.000000 0.000000 6.187500 +v -1.000000 0.000000 5.812500 +v 1.000000 0.000000 5.812500 +v -1.000000 0.062500 3.812500 +v -1.000000 0.062500 4.187500 +v 1.000000 0.062500 4.187500 +v 1.000000 0.062500 3.812500 +v -1.000000 0.062500 2.812500 +v -1.000000 0.062500 3.187500 +v 1.000000 0.062500 3.187500 +v 1.000000 0.062500 2.812500 +v -1.000000 0.062500 6.812500 +v -1.000000 0.062500 7.187500 +v 1.000000 0.062500 7.187500 +v 1.000000 0.062500 6.812500 +v -1.000000 0.062500 5.812500 +v -1.000000 0.062500 6.187500 +v 1.000000 0.062500 6.187500 +v 1.000000 0.062500 5.812500 +v -0.812500 0.062500 7.500000 +v 0.812500 0.062500 7.500000 +v -0.812500 0.062500 2.500000 +v 0.812500 0.062500 2.500000 +v -0.812500 0.187500 7.500000 +v 0.812500 0.187500 7.500000 +v -0.812500 0.187500 2.500000 +v 0.812500 0.187500 2.500000 +v 0.750000 0.062500 7.500000 +v 0.750000 0.062500 2.500000 +v 0.750000 0.187500 7.500000 +v 0.750000 0.187500 2.500000 +v -0.750000 0.062500 2.500000 +v -0.750000 0.062500 7.500000 +v -0.750000 0.187500 2.500000 +v -0.750000 0.187500 7.500000 +v 0.625000 0.062500 7.062500 +v 0.937500 0.062500 7.062500 +v 0.625000 0.062500 6.937500 +v 0.937500 0.062500 6.937500 +v 0.625000 0.125000 7.062500 +v 0.937500 0.125000 7.062500 +v 0.625000 0.125000 6.937500 +v 0.937500 0.125000 6.937500 +v -0.937500 0.062500 7.062500 +v -0.625000 0.062500 7.062500 +v -0.937500 0.062500 6.937500 +v -0.625000 0.062500 6.937500 +v -0.937500 0.125000 7.062500 +v -0.625000 0.125000 7.062500 +v -0.937500 0.125000 6.937500 +v -0.625000 0.125000 6.937500 +v 0.625000 0.062500 6.062500 +v 0.937500 0.062500 6.062500 +v 0.625000 0.062500 5.937500 +v 0.937500 0.062500 5.937500 +v 0.625000 0.125000 6.062500 +v 0.937500 0.125000 6.062500 +v 0.625000 0.125000 5.937500 +v 0.937500 0.125000 5.937500 +v -0.937500 0.062500 6.062500 +v -0.625000 0.062500 6.062500 +v -0.937500 0.062500 5.937500 +v -0.625000 0.062500 5.937500 +v -0.937500 0.125000 6.062500 +v -0.625000 0.125000 6.062500 +v -0.937500 0.125000 5.937500 +v -0.625000 0.125000 5.937500 +v 0.625000 0.062500 5.062500 +v 0.937500 0.062500 5.062500 +v 0.625000 0.062500 4.937500 +v 0.937500 0.062500 4.937500 +v 0.625000 0.125000 5.062500 +v 0.937500 0.125000 5.062500 +v 0.625000 0.125000 4.937500 +v 0.937500 0.125000 4.937500 +v -0.937500 0.062500 5.062500 +v -0.625000 0.062500 5.062500 +v -0.937500 0.062500 4.937500 +v -0.625000 0.062500 4.937500 +v -0.937500 0.125000 5.062500 +v -0.625000 0.125000 5.062500 +v -0.937500 0.125000 4.937500 +v -0.625000 0.125000 4.937500 +v 0.625000 0.062500 4.062500 +v 0.937500 0.062500 4.062500 +v 0.625000 0.062500 3.937500 +v 0.937500 0.062500 3.937500 +v 0.625000 0.125000 4.062500 +v 0.937500 0.125000 4.062500 +v 0.625000 0.125000 3.937500 +v 0.937500 0.125000 3.937500 +v -0.937500 0.062500 4.062500 +v -0.625000 0.062500 4.062500 +v -0.937500 0.062500 3.937500 +v -0.625000 0.062500 3.937500 +v -0.937500 0.125000 4.062500 +v -0.625000 0.125000 4.062500 +v -0.937500 0.125000 3.937500 +v -0.625000 0.125000 3.937500 +v 0.625000 0.062500 3.062500 +v 0.937500 0.062500 3.062500 +v 0.625000 0.062500 2.937500 +v 0.937500 0.062500 2.937500 +v 0.625000 0.125000 3.062500 +v 0.937500 0.125000 3.062500 +v 0.625000 0.125000 2.937500 +v 0.937500 0.125000 2.937500 +v -0.937500 0.062500 3.062500 +v -0.625000 0.062500 3.062500 +v -0.937500 0.062500 2.937500 +v -0.625000 0.062500 2.937500 +v -0.937500 0.125000 3.062500 +v -0.625000 0.125000 3.062500 +v -0.937500 0.125000 2.937500 +v -0.625000 0.125000 2.937500 +v -0.812500 0.062500 3.500000 +v -0.812500 0.062500 4.500000 +v -0.812500 0.062500 5.500000 +v -0.812500 0.062500 6.500000 +v 0.812500 0.062500 6.500000 +v 0.812500 0.062500 5.500000 +v 0.812500 0.062500 4.500000 +v 0.812500 0.062500 3.500000 +v -0.812500 0.187500 3.500000 +v -0.812500 0.187500 4.500000 +v -0.812500 0.187500 5.500000 +v -0.812500 0.187500 6.500000 +v 0.812500 0.187500 6.500000 +v 0.812500 0.187500 5.500000 +v 0.812500 0.187500 4.500000 +v 0.812500 0.187500 3.500000 +v 0.750000 0.062500 6.500000 +v 0.750000 0.062500 5.500000 +v 0.750000 0.062500 4.500000 +v 0.750000 0.062500 3.500000 +v 0.750000 0.187500 6.500000 +v 0.750000 0.187500 5.500000 +v 0.750000 0.187500 4.500000 +v 0.750000 0.187500 3.500000 +v -0.750000 0.062500 3.500000 +v -0.750000 0.062500 4.500000 +v -0.750000 0.062500 5.500000 +v -0.750000 0.062500 6.500000 +v -0.750000 0.187500 3.500000 +v -0.750000 0.187500 4.500000 +v -0.750000 0.187500 5.500000 +v -0.750000 0.187500 6.500000 +v 1.000000 0.062500 -5.187500 +v 1.000000 0.062500 -4.812500 +v -1.000000 0.062500 -4.812500 +v -1.000000 0.062500 -5.187500 +v -1.000000 0.000000 -4.812500 +v 1.000000 0.000000 -4.812500 +v -1.000000 0.000000 -5.187500 +v 1.000000 0.000000 -5.187500 +v -1.000000 0.000000 -5.812500 +v 1.000000 0.000000 -5.812500 +v -1.000000 0.000000 -6.187500 +v 1.000000 0.000000 -6.187500 +v -1.000000 0.000000 -6.812500 +v 1.000000 0.000000 -6.812500 +v -1.000000 0.000000 -7.187500 +v 1.000000 0.000000 -7.187500 +v -1.000000 0.000000 -2.812500 +v 1.000000 0.000000 -2.812500 +v -1.000000 0.000000 -3.187500 +v 1.000000 0.000000 -3.187500 +v -1.000000 0.000000 -3.812500 +v 1.000000 0.000000 -3.812500 +v -1.000000 0.000000 -4.187500 +v 1.000000 0.000000 -4.187500 +v -1.000000 0.062500 -6.187500 +v -1.000000 0.062500 -5.812500 +v 1.000000 0.062500 -5.812500 +v 1.000000 0.062500 -6.187500 +v -1.000000 0.062500 -7.187500 +v -1.000000 0.062500 -6.812500 +v 1.000000 0.062500 -6.812500 +v 1.000000 0.062500 -7.187500 +v -1.000000 0.062500 -3.187500 +v -1.000000 0.062500 -2.812500 +v 1.000000 0.062500 -2.812500 +v 1.000000 0.062500 -3.187500 +v -1.000000 0.062500 -4.187500 +v -1.000000 0.062500 -3.812500 +v 1.000000 0.062500 -3.812500 +v 1.000000 0.062500 -4.187500 +v -0.812500 0.062500 -2.500000 +v 0.812500 0.062500 -2.500000 +v -0.812500 0.062500 -7.500000 +v 0.812500 0.062500 -7.500000 +v -0.812500 0.187500 -2.500000 +v 0.812500 0.187500 -2.500000 +v -0.812500 0.187500 -7.500000 +v 0.812500 0.187500 -7.500000 +v 0.750000 0.062500 -2.500000 +v 0.750000 0.062500 -7.500000 +v 0.750000 0.187500 -2.500000 +v 0.750000 0.187500 -7.500000 +v -0.750000 0.062500 -7.500000 +v -0.750000 0.062500 -2.500000 +v -0.750000 0.187500 -7.500000 +v -0.750000 0.187500 -2.500000 +v 0.625000 0.062500 -2.937500 +v 0.937500 0.062500 -2.937500 +v 0.625000 0.062500 -3.062500 +v 0.937500 0.062500 -3.062500 +v 0.625000 0.125000 -2.937500 +v 0.937500 0.125000 -2.937500 +v 0.625000 0.125000 -3.062500 +v 0.937500 0.125000 -3.062500 +v -0.937500 0.062500 -2.937500 +v -0.625000 0.062500 -2.937500 +v -0.937500 0.062500 -3.062500 +v -0.625000 0.062500 -3.062500 +v -0.937500 0.125000 -2.937500 +v -0.625000 0.125000 -2.937500 +v -0.937500 0.125000 -3.062500 +v -0.625000 0.125000 -3.062500 +v 0.625000 0.062500 -3.937500 +v 0.937500 0.062500 -3.937500 +v 0.625000 0.062500 -4.062500 +v 0.937500 0.062500 -4.062500 +v 0.625000 0.125000 -3.937500 +v 0.937500 0.125000 -3.937500 +v 0.625000 0.125000 -4.062500 +v 0.937500 0.125000 -4.062500 +v -0.937500 0.062500 -3.937500 +v -0.625000 0.062500 -3.937500 +v -0.937500 0.062500 -4.062500 +v -0.625000 0.062500 -4.062500 +v -0.937500 0.125000 -3.937500 +v -0.625000 0.125000 -3.937500 +v -0.937500 0.125000 -4.062500 +v -0.625000 0.125000 -4.062500 +v 0.625000 0.062500 -4.937500 +v 0.937500 0.062500 -4.937500 +v 0.625000 0.062500 -5.062500 +v 0.937500 0.062500 -5.062500 +v 0.625000 0.125000 -4.937500 +v 0.937500 0.125000 -4.937500 +v 0.625000 0.125000 -5.062500 +v 0.937500 0.125000 -5.062500 +v -0.937500 0.062500 -4.937500 +v -0.625000 0.062500 -4.937500 +v -0.937500 0.062500 -5.062500 +v -0.625000 0.062500 -5.062500 +v -0.937500 0.125000 -4.937500 +v -0.625000 0.125000 -4.937500 +v -0.937500 0.125000 -5.062500 +v -0.625000 0.125000 -5.062500 +v 0.625000 0.062500 -5.937500 +v 0.937500 0.062500 -5.937500 +v 0.625000 0.062500 -6.062500 +v 0.937500 0.062500 -6.062500 +v 0.625000 0.125000 -5.937500 +v 0.937500 0.125000 -5.937500 +v 0.625000 0.125000 -6.062500 +v 0.937500 0.125000 -6.062500 +v -0.937500 0.062500 -5.937500 +v -0.625000 0.062500 -5.937500 +v -0.937500 0.062500 -6.062500 +v -0.625000 0.062500 -6.062500 +v -0.937500 0.125000 -5.937500 +v -0.625000 0.125000 -5.937500 +v -0.937500 0.125000 -6.062500 +v -0.625000 0.125000 -6.062500 +v 0.625000 0.062500 -6.937500 +v 0.937500 0.062500 -6.937500 +v 0.625000 0.062500 -7.062500 +v 0.937500 0.062500 -7.062500 +v 0.625000 0.125000 -6.937500 +v 0.937500 0.125000 -6.937500 +v 0.625000 0.125000 -7.062500 +v 0.937500 0.125000 -7.062500 +v -0.937500 0.062500 -6.937500 +v -0.625000 0.062500 -6.937500 +v -0.937500 0.062500 -7.062500 +v -0.625000 0.062500 -7.062500 +v -0.937500 0.125000 -6.937500 +v -0.625000 0.125000 -6.937500 +v -0.937500 0.125000 -7.062500 +v -0.625000 0.125000 -7.062500 +v -0.812500 0.062500 -6.500000 +v -0.812500 0.062500 -5.500000 +v -0.812500 0.062500 -4.500000 +v -0.812500 0.062500 -3.500000 +v 0.812500 0.062500 -3.500000 +v 0.812500 0.062500 -4.500000 +v 0.812500 0.062500 -5.500000 +v 0.812500 0.062500 -6.500000 +v -0.812500 0.187500 -6.500000 +v -0.812500 0.187500 -5.500000 +v -0.812500 0.187500 -4.500000 +v -0.812500 0.187500 -3.500000 +v 0.812500 0.187500 -3.500000 +v 0.812500 0.187500 -4.500000 +v 0.812500 0.187500 -5.500000 +v 0.812500 0.187500 -6.500000 +v 0.750000 0.062500 -3.500000 +v 0.750000 0.062500 -4.500000 +v 0.750000 0.062500 -5.500000 +v 0.750000 0.062500 -6.500000 +v 0.750000 0.187500 -3.500000 +v 0.750000 0.187500 -4.500000 +v 0.750000 0.187500 -5.500000 +v 0.750000 0.187500 -6.500000 +v -0.750000 0.062500 -6.500000 +v -0.750000 0.062500 -5.500000 +v -0.750000 0.062500 -4.500000 +v -0.750000 0.062500 -3.500000 +v -0.750000 0.187500 -6.500000 +v -0.750000 0.187500 -5.500000 +v -0.750000 0.187500 -4.500000 +v -0.750000 0.187500 -3.500000 +v 1.000000 0.062500 -0.187500 +v 1.000000 0.062500 0.187500 +v -1.000000 0.062500 0.187500 +v -1.000000 0.062500 -0.187500 +v -1.000000 0.000000 0.187500 +v 1.000000 0.000000 0.187500 +v -1.000000 0.000000 -0.187500 +v 1.000000 0.000000 -0.187500 +v -1.000000 0.000000 -0.812500 +v 1.000000 0.000000 -0.812500 +v -1.000000 0.000000 -1.187500 +v 1.000000 0.000000 -1.187500 +v -1.000000 0.000000 -1.812500 +v 1.000000 0.000000 -1.812500 +v -1.000000 0.000000 -2.187500 +v 1.000000 0.000000 -2.187500 +v -1.000000 0.000000 2.187500 +v 1.000000 0.000000 2.187500 +v -1.000000 0.000000 1.812500 +v 1.000000 0.000000 1.812500 +v -1.000000 0.000000 1.187500 +v 1.000000 0.000000 1.187500 +v -1.000000 0.000000 0.812500 +v 1.000000 0.000000 0.812500 +v -1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -2.187500 +v -1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -2.187500 +v -1.000000 0.062500 1.812500 +v -1.000000 0.062500 2.187500 +v 1.000000 0.062500 2.187500 +v 1.000000 0.062500 1.812500 +v -1.000000 0.062500 0.812500 +v -1.000000 0.062500 1.187500 +v 1.000000 0.062500 1.187500 +v 1.000000 0.062500 0.812500 +v 0.625000 0.062500 2.062500 +v 0.937500 0.062500 2.062500 +v 0.625000 0.062500 1.937500 +v 0.937500 0.062500 1.937500 +v 0.625000 0.125000 2.062500 +v 0.937500 0.125000 2.062500 +v 0.625000 0.125000 1.937500 +v 0.937500 0.125000 1.937500 +v -0.937500 0.062500 2.062500 +v -0.625000 0.062500 2.062500 +v -0.937500 0.062500 1.937500 +v -0.625000 0.062500 1.937500 +v -0.937500 0.125000 2.062500 +v -0.625000 0.125000 2.062500 +v -0.937500 0.125000 1.937500 +v -0.625000 0.125000 1.937500 +v 0.625000 0.062500 1.062500 +v 0.937500 0.062500 1.062500 +v 0.625000 0.062500 0.937500 +v 0.937500 0.062500 0.937500 +v 0.625000 0.125000 1.062500 +v 0.937500 0.125000 1.062500 +v 0.625000 0.125000 0.937500 +v 0.937500 0.125000 0.937500 +v -0.937500 0.062500 1.062500 +v -0.625000 0.062500 1.062500 +v -0.937500 0.062500 0.937500 +v -0.625000 0.062500 0.937500 +v -0.937500 0.125000 1.062500 +v -0.625000 0.125000 1.062500 +v -0.937500 0.125000 0.937500 +v -0.625000 0.125000 0.937500 +v 0.625000 0.062500 0.062500 +v 0.937500 0.062500 0.062500 +v 0.625000 0.062500 -0.062500 +v 0.937500 0.062500 -0.062500 +v 0.625000 0.125000 0.062500 +v 0.937500 0.125000 0.062500 +v 0.625000 0.125000 -0.062500 +v 0.937500 0.125000 -0.062500 +v -0.937500 0.062500 0.062500 +v -0.625000 0.062500 0.062500 +v -0.937500 0.062500 -0.062500 +v -0.625000 0.062500 -0.062500 +v -0.937500 0.125000 0.062500 +v -0.625000 0.125000 0.062500 +v -0.937500 0.125000 -0.062500 +v -0.625000 0.125000 -0.062500 +v 0.625000 0.062500 -0.937500 +v 0.937500 0.062500 -0.937500 +v 0.625000 0.062500 -1.062500 +v 0.937500 0.062500 -1.062500 +v 0.625000 0.125000 -0.937500 +v 0.937500 0.125000 -0.937500 +v 0.625000 0.125000 -1.062500 +v 0.937500 0.125000 -1.062500 +v -0.937500 0.062500 -0.937500 +v -0.625000 0.062500 -0.937500 +v -0.937500 0.062500 -1.062500 +v -0.625000 0.062500 -1.062500 +v -0.937500 0.125000 -0.937500 +v -0.625000 0.125000 -0.937500 +v -0.937500 0.125000 -1.062500 +v -0.625000 0.125000 -1.062500 +v 0.625000 0.062500 -1.937500 +v 0.937500 0.062500 -1.937500 +v 0.625000 0.062500 -2.062500 +v 0.937500 0.062500 -2.062500 +v 0.625000 0.125000 -1.937500 +v 0.937500 0.125000 -1.937500 +v 0.625000 0.125000 -2.062500 +v 0.937500 0.125000 -2.062500 +v -0.937500 0.062500 -1.937500 +v -0.625000 0.062500 -1.937500 +v -0.937500 0.062500 -2.062500 +v -0.625000 0.062500 -2.062500 +v -0.937500 0.125000 -1.937500 +v -0.625000 0.125000 -1.937500 +v -0.937500 0.125000 -2.062500 +v -0.625000 0.125000 -2.062500 +v -0.812500 0.062500 -1.500000 +v -0.812500 0.062500 -0.500000 +v -0.812500 0.062500 0.500000 +v -0.812500 0.062500 1.500000 +v 0.812500 0.062500 1.500000 +v 0.812500 0.062500 0.500000 +v 0.812500 0.062500 -0.500000 +v 0.812500 0.062500 -1.500000 +v -0.812500 0.187500 -1.500000 +v -0.812500 0.187500 -0.500000 +v -0.812500 0.187500 0.500000 +v -0.812500 0.187500 1.500000 +v 0.812500 0.187500 1.500000 +v 0.812500 0.187500 0.500000 +v 0.812500 0.187500 -0.500000 +v 0.812500 0.187500 -1.500000 +v 0.750000 0.062500 1.500000 +v 0.750000 0.062500 0.500000 +v 0.750000 0.062500 -0.500000 +v 0.750000 0.062500 -1.500000 +v 0.750000 0.187500 1.500000 +v 0.750000 0.187500 0.500000 +v 0.750000 0.187500 -0.500000 +v 0.750000 0.187500 -1.500000 +v -0.750000 0.062500 -1.500000 +v -0.750000 0.062500 -0.500000 +v -0.750000 0.062500 0.500000 +v -0.750000 0.062500 1.500000 +v -0.750000 0.187500 -1.500000 +v -0.750000 0.187500 -0.500000 +v -0.750000 0.187500 0.500000 +v -0.750000 0.187500 1.500000 +v -1.725096 0.062500 1.451439 +v -1.966661 0.062500 1.649687 +v -1.645797 0.062500 1.548066 +v -1.887362 0.062500 1.746314 +v -1.756082 0.062500 1.315164 +v -1.518184 0.062500 1.605042 +v -3.064205 0.062500 2.873829 +v -3.302103 0.062500 2.583950 +v -1.756082 0.000000 1.315164 +v -3.302103 0.000000 2.583950 +v -1.518184 0.000000 1.605042 +v -3.064205 0.000000 2.873829 +v -0.504144 0.062500 3.159608 +v -0.504144 0.187500 3.159608 +v -1.855282 0.187500 4.062409 +v -1.855282 0.062500 4.062409 +v -0.556111 0.062500 3.194331 +v -0.556111 0.187500 3.194331 +v -1.803315 0.187500 4.027686 +v -1.803315 0.062500 4.027686 +v 0.217808 0.062500 4.510286 +v 0.217808 0.187500 4.510286 +v -1.283496 0.187500 5.132147 +v -1.283496 0.062500 5.132147 +v 0.160065 0.062500 4.534204 +v 0.160065 0.187500 4.534204 +v -1.225753 0.187500 5.108229 +v -1.225753 0.062500 5.108229 +v 0.662384 0.062500 5.975857 +v 0.662384 0.187500 5.975857 +v -0.931392 0.187500 6.292879 +v -0.931392 0.062500 6.292879 +v 0.601084 0.062500 5.988050 +v 0.601084 0.187500 5.988050 +v -0.870092 0.187500 6.280685 +v -0.870092 0.062500 6.280685 +v 0.812499 0.062500 7.500000 +v 0.812499 0.187500 7.500000 +v -0.812501 0.187500 7.500000 +v -0.812501 0.062500 7.500000 +v 0.749998 0.062500 7.500000 +v 0.749998 0.187500 7.500000 +v -0.750000 0.187500 7.500000 +v -0.750000 0.062500 7.500000 +v -1.376398 0.062500 2.183322 +v -1.376398 0.187500 2.183322 +v -1.324431 0.187500 2.148599 +v -1.324431 0.062500 2.148599 +v -3.495856 0.062500 2.040392 +v -3.495856 0.187500 2.040392 +v -2.144718 0.187500 1.137591 +v -2.144718 0.062500 1.137591 +v -3.443888 0.062500 2.005669 +v -3.443888 0.187500 2.005669 +v -2.196684 0.187500 1.172314 +v -2.196684 0.062500 1.172314 +v -4.217808 0.062500 0.689714 +v -4.217808 0.187500 0.689714 +v -2.716504 0.187500 0.067853 +v -2.716504 0.062500 0.067853 +v -4.160065 0.062500 0.665796 +v -4.160065 0.187500 0.665796 +v -2.774246 0.187500 0.091771 +v -2.774246 0.062500 0.091771 +v -4.662384 0.062500 -0.775857 +v -4.662384 0.187500 -0.775857 +v -3.068608 0.187500 -1.092879 +v -3.068608 0.062500 -1.092879 +v -4.601084 0.062500 -0.788050 +v -4.601084 0.187500 -0.788050 +v -3.129908 0.187500 -1.080685 +v -3.129908 0.062500 -1.080685 +v -4.812499 0.062500 -2.300000 +v -4.812499 0.187500 -2.300000 +v -3.187499 0.187500 -2.300000 +v -3.187499 0.062500 -2.300000 +v -4.749998 0.062500 -2.300000 +v -4.749998 0.187500 -2.300000 +v -3.250000 0.187500 -2.300000 +v -3.250000 0.062500 -2.300000 +v -2.932924 0.125000 2.442679 +v -3.174490 0.125000 2.640927 +v -2.853625 0.125000 2.539305 +v -3.095191 0.125000 2.737553 +v -2.623602 0.062500 3.016677 +v -2.623602 0.187500 3.016677 +v -2.675569 0.062500 3.051401 +v -2.675569 0.187500 3.051401 +v -2.932924 0.062500 2.442679 +v -3.174490 0.062500 2.640927 +v -2.853625 0.062500 2.539305 +v -3.095191 0.062500 2.737553 +v -1.725096 0.125000 1.451439 +v -1.966661 0.125000 1.649687 +v -1.645797 0.125000 1.548066 +v -1.887362 0.125000 1.746314 +v -3.000000 0.062500 -5.187500 +v -3.000000 0.062500 -4.812500 +v -5.000000 0.062500 -4.812500 +v -5.000000 0.062500 -5.187500 +v -5.000000 0.000000 -4.812500 +v -3.000000 0.000000 -4.812500 +v -5.000000 0.000000 -5.187500 +v -3.000000 0.000000 -5.187500 +v -5.000000 0.000000 -5.812500 +v -3.000000 0.000000 -5.812500 +v -5.000000 0.000000 -6.187500 +v -3.000000 0.000000 -6.187500 +v -5.000000 0.000000 -6.812500 +v -3.000000 0.000000 -6.812500 +v -5.000000 0.000000 -7.187500 +v -3.000000 0.000000 -7.187500 +v -5.000000 0.000000 -3.812500 +v -3.000000 0.000000 -3.812500 +v -5.000000 0.000000 -4.187500 +v -3.000000 0.000000 -4.187500 +v -5.000000 0.062500 -6.187500 +v -5.000000 0.062500 -5.812500 +v -3.000000 0.062500 -5.812500 +v -3.000000 0.062500 -6.187500 +v -5.000000 0.062500 -7.187500 +v -5.000000 0.062500 -6.812500 +v -3.000000 0.062500 -6.812500 +v -3.000000 0.062500 -7.187500 +v -5.000000 0.062500 -4.187500 +v -5.000000 0.062500 -3.812500 +v -3.000000 0.062500 -3.812500 +v -3.000000 0.062500 -4.187500 +v -4.812500 0.062500 -7.500000 +v -3.187500 0.062500 -7.500000 +v -4.812500 0.187500 -7.500000 +v -3.187500 0.187500 -7.500000 +v -3.250000 0.062500 -7.500000 +v -3.250000 0.187500 -7.500000 +v -4.750000 0.062500 -7.500000 +v -4.750000 0.187500 -7.500000 +v -3.375000 0.062500 -3.937500 +v -3.062500 0.062500 -3.937500 +v -3.375000 0.062500 -4.062500 +v -3.062500 0.062500 -4.062500 +v -3.375000 0.125000 -3.937500 +v -3.062500 0.125000 -3.937500 +v -3.375000 0.125000 -4.062500 +v -3.062500 0.125000 -4.062500 +v -4.937500 0.062500 -3.937500 +v -4.625000 0.062500 -3.937500 +v -4.937500 0.062500 -4.062500 +v -4.625000 0.062500 -4.062500 +v -4.937500 0.125000 -3.937500 +v -4.625000 0.125000 -3.937500 +v -4.937500 0.125000 -4.062500 +v -4.625000 0.125000 -4.062500 +v -3.375000 0.062500 -4.937500 +v -3.062500 0.062500 -4.937500 +v -3.375000 0.062500 -5.062500 +v -3.062500 0.062500 -5.062500 +v -3.375000 0.125000 -4.937500 +v -3.062500 0.125000 -4.937500 +v -3.375000 0.125000 -5.062500 +v -3.062500 0.125000 -5.062500 +v -4.937500 0.062500 -4.937500 +v -4.625000 0.062500 -4.937500 +v -4.937500 0.062500 -5.062500 +v -4.625000 0.062500 -5.062500 +v -4.937500 0.125000 -4.937500 +v -4.625000 0.125000 -4.937500 +v -4.937500 0.125000 -5.062500 +v -4.625000 0.125000 -5.062500 +v -3.375000 0.062500 -5.937500 +v -3.062500 0.062500 -5.937500 +v -3.375000 0.062500 -6.062500 +v -3.062500 0.062500 -6.062500 +v -3.375000 0.125000 -5.937500 +v -3.062500 0.125000 -5.937500 +v -3.375000 0.125000 -6.062500 +v -3.062500 0.125000 -6.062500 +v -4.937500 0.062500 -5.937500 +v -4.625000 0.062500 -5.937500 +v -4.937500 0.062500 -6.062500 +v -4.625000 0.062500 -6.062500 +v -4.937500 0.125000 -5.937500 +v -4.625000 0.125000 -5.937500 +v -4.937500 0.125000 -6.062500 +v -4.625000 0.125000 -6.062500 +v -3.375000 0.062500 -6.937500 +v -3.062500 0.062500 -6.937500 +v -3.375000 0.062500 -7.062500 +v -3.062500 0.062500 -7.062500 +v -3.375000 0.125000 -6.937500 +v -3.062500 0.125000 -6.937500 +v -3.375000 0.125000 -7.062500 +v -3.062500 0.125000 -7.062500 +v -4.937500 0.062500 -6.937500 +v -4.625000 0.062500 -6.937500 +v -4.937500 0.062500 -7.062500 +v -4.625000 0.062500 -7.062500 +v -4.937500 0.125000 -6.937500 +v -4.625000 0.125000 -6.937500 +v -4.937500 0.125000 -7.062500 +v -4.625000 0.125000 -7.062500 +v -4.812500 0.062500 -6.500000 +v -4.812500 0.062500 -5.500000 +v -4.812500 0.062500 -4.500000 +v -4.812500 0.062500 -3.500000 +v -3.187500 0.062500 -3.500000 +v -3.187500 0.062500 -4.500000 +v -3.187500 0.062500 -5.500000 +v -3.187500 0.062500 -6.500000 +v -4.812500 0.187500 -6.500000 +v -4.812500 0.187500 -5.500000 +v -4.812500 0.187500 -4.500000 +v -4.812500 0.187500 -3.500000 +v -3.187500 0.187500 -3.500000 +v -3.187500 0.187500 -4.500000 +v -3.187500 0.187500 -5.500000 +v -3.187500 0.187500 -6.500000 +v -3.250000 0.062500 -3.500000 +v -3.250000 0.062500 -4.500000 +v -3.250000 0.062500 -5.500000 +v -3.250000 0.062500 -6.500000 +v -3.250000 0.187500 -3.500000 +v -3.250000 0.187500 -4.500000 +v -3.250000 0.187500 -5.500000 +v -3.250000 0.187500 -6.500000 +v -4.750000 0.062500 -6.500000 +v -4.750000 0.062500 -5.500000 +v -4.750000 0.062500 -4.500000 +v -4.750000 0.062500 -3.500000 +v -4.750000 0.187500 -6.500000 +v -4.750000 0.187500 -5.500000 +v -4.750000 0.187500 -4.500000 +v -4.750000 0.187500 -3.500000 +v -2.346383 0.062500 0.486832 +v -2.621983 0.062500 0.634143 +v -2.287458 0.062500 0.597072 +v -2.563059 0.062500 0.744383 +v -2.350187 0.062500 0.347129 +v -2.173414 0.062500 0.677850 +v -3.937256 0.062500 1.620643 +v -4.114030 0.062500 1.289923 +v -2.350187 0.000000 0.347129 +v -4.114030 0.000000 1.289923 +v -2.173414 0.000000 0.677850 +v -3.937256 0.000000 1.620643 +v -3.724385 0.125000 1.223389 +v -3.999985 0.125000 1.370701 +v -3.665460 0.125000 1.333629 +v -3.941061 0.125000 1.480941 +v -3.724385 0.062500 1.223389 +v -3.999985 0.062500 1.370701 +v -3.665460 0.062500 1.333629 +v -3.941061 0.062500 1.480941 +v -2.346383 0.125000 0.486832 +v -2.621983 0.125000 0.634143 +v -2.287458 0.125000 0.597072 +v -2.563059 0.125000 0.744383 +v -2.787336 0.062500 -0.609743 +v -3.086380 0.062500 -0.519029 +v -2.751051 0.062500 -0.490125 +v -3.050095 0.062500 -0.399411 +v -2.763813 0.062500 -0.747503 +v -2.654956 0.062500 -0.388651 +v -4.568837 0.062500 0.191919 +v -4.677694 0.062500 -0.166934 +v -2.763813 0.000000 -0.747503 +v -4.677694 0.000000 -0.166934 +v -2.654956 0.000000 -0.388651 +v -4.568837 0.000000 0.191919 +v -4.282555 0.125000 -0.156173 +v -4.581599 0.125000 -0.065459 +v -4.246270 0.125000 -0.036556 +v -4.545314 0.125000 0.054159 +v -4.282555 0.062500 -0.156173 +v -4.581599 0.062500 -0.065459 +v -4.246270 0.062500 -0.036556 +v -4.545314 0.062500 0.054159 +v -2.787336 0.125000 -0.609743 +v -3.086380 0.125000 -0.519029 +v -2.751051 0.125000 -0.490125 +v -3.050095 0.125000 -0.399411 +v -3.005888 0.062500 -1.771274 +v -3.316883 0.062500 -1.740644 +v -2.993635 0.062500 -1.646876 +v -3.304631 0.062500 -1.616246 +v -2.955941 0.062500 -1.901798 +v -2.919184 0.062500 -1.528604 +v -4.909554 0.062500 -1.332570 +v -4.946310 0.062500 -1.705764 +v -2.955941 0.000000 -1.901798 +v -4.946310 0.000000 -1.705764 +v -2.919184 0.000000 -1.528604 +v -4.909554 0.000000 -1.332570 +v -4.560863 0.125000 -1.618122 +v -4.871859 0.125000 -1.587492 +v -4.548611 0.125000 -1.493724 +v -4.859607 0.125000 -1.463094 +v -4.560863 0.062500 -1.618122 +v -4.871859 0.062500 -1.587492 +v -4.548611 0.062500 -1.493724 +v -4.859607 0.062500 -1.463094 +v -3.005888 0.125000 -1.771274 +v -3.316883 0.125000 -1.740644 +v -2.993635 0.125000 -1.646876 +v -3.304631 0.125000 -1.616246 +v -0.904809 0.062500 2.462447 +v -1.146375 0.062500 2.660695 +v -0.825510 0.062500 2.559073 +v -1.067076 0.062500 2.757321 +v -0.935795 0.062500 2.326171 +v -0.697898 0.062500 2.616050 +v -2.243919 0.062500 3.884836 +v -2.481816 0.062500 3.594958 +v -0.935795 0.000000 2.326171 +v -2.481816 0.000000 3.594958 +v -0.697898 0.000000 2.616050 +v -2.243919 0.000000 3.884836 +v -2.112638 0.125000 3.453686 +v -2.354204 0.125000 3.651934 +v -2.033339 0.125000 3.550313 +v -2.274905 0.125000 3.748561 +v -2.112638 0.062500 3.453686 +v -2.354204 0.062500 3.651934 +v -2.033339 0.062500 3.550313 +v -2.274905 0.062500 3.748561 +v -0.904809 0.125000 2.462447 +v -1.146375 0.125000 2.660695 +v -0.825510 0.125000 2.559073 +v -1.067076 0.125000 2.757321 +v -5.000000 0.000000 -2.812500 +v -3.000000 0.000000 -2.812500 +v -5.000000 0.000000 -3.187500 +v -3.000000 0.000000 -3.187500 +v -5.000000 0.062500 -3.187500 +v -5.000000 0.062500 -2.812500 +v -3.000000 0.062500 -2.812500 +v -3.000000 0.062500 -3.187500 +v -3.375000 0.062500 -2.937500 +v -3.062500 0.062500 -2.937500 +v -3.375000 0.062500 -3.062500 +v -3.062500 0.062500 -3.062500 +v -3.375000 0.125000 -2.937500 +v -3.062500 0.125000 -2.937500 +v -3.375000 0.125000 -3.062500 +v -3.062500 0.125000 -3.062500 +v -4.937500 0.062500 -2.937500 +v -4.625000 0.062500 -2.937500 +v -4.937500 0.062500 -3.062500 +v -4.625000 0.062500 -3.062500 +v -4.937500 0.125000 -2.937500 +v -4.625000 0.125000 -2.937500 +v -4.937500 0.125000 -3.062500 +v -4.625000 0.125000 -3.062500 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.406250 0.656250 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt -0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt -0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 -0.000000 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.031250 +vt 0.406250 0.156250 +vt 0.187500 1.000000 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.156250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.156250 +vt 0.406250 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.593750 0.031250 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.593750 0.031250 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7765 0.0000 -0.6301 +vn 0.8819 0.0000 -0.4714 +vn -0.7730 0.0000 0.6344 +vn 0.6344 0.0000 0.7730 +vn 0.9569 0.0000 -0.2903 +vn -0.9569 0.0000 0.2903 +vn -0.8819 0.0000 0.4714 +vn -0.9952 0.0000 0.0980 +vn 0.9952 0.0000 -0.0980 +vn -0.7765 0.0000 0.6301 +vn 0.7730 0.0000 -0.6344 +vn -0.6344 0.0000 -0.7730 +vn 0.4714 0.0000 0.8819 +vn -0.4714 0.0000 -0.8819 +vn 0.2903 0.0000 0.9569 +vn -0.2903 0.0000 -0.9569 +vn 0.0980 0.0000 0.9952 +vn -0.0980 0.0000 -0.9952 +s off +f 34/85/13 36/86/13 35/87/13 +f 39/88/14 38/89/14 37/90/14 +f 43/91/14 42/92/14 41/93/14 +f 47/94/14 46/95/14 45/96/14 +f 51/97/14 50/98/14 49/99/14 +f 55/100/14 54/101/14 53/102/14 +f 59/103/13 57/104/13 58/105/13 +f 63/106/13 61/107/13 62/108/13 +f 67/109/13 65/110/13 66/111/13 +f 71/112/13 69/113/13 70/114/13 +f 49/115/15 65/116/15 51/117/15 +f 42/118/16 58/119/16 41/120/16 +f 50/121/16 66/122/16 49/123/16 +f 44/124/17 59/125/17 42/92/17 +f 52/126/17 67/127/17 50/98/17 +f 43/91/18 60/128/18 44/129/18 +f 37/130/15 36/131/15 39/132/15 +f 51/97/18 68/133/18 52/134/18 +f 45/135/15 61/136/15 47/137/15 +f 38/138/16 35/139/16 37/140/16 +f 53/141/15 69/142/15 55/143/15 +f 46/144/16 62/145/16 45/146/16 +f 40/147/17 34/148/17 38/89/17 +f 54/149/16 70/150/16 53/151/16 +f 48/152/17 63/153/17 46/95/17 +f 39/88/18 33/154/18 40/155/18 +f 56/156/17 71/157/17 54/101/17 +f 47/94/18 64/158/18 48/159/18 +f 41/160/15 57/161/15 43/162/15 +f 55/100/18 72/163/18 56/164/18 +f 181/165/17 74/166/17 173/167/17 +f 177/168/15 75/169/15 169/170/15 +f 81/171/15 189/172/15 185/173/15 +f 78/174/16 81/175/16 74/176/16 +f 80/177/13 192/178/13 184/179/13 +f 74/166/14 185/180/14 173/167/14 +f 75/181/14 516/182/14 85/183/14 +f 85/183/17 197/184/17 193/185/17 +f 77/186/13 200/187/13 180/188/13 +f 75/181/14 193/185/14 169/189/14 +f 79/190/15 492/191/15 75/169/15 +f 73/192/16 88/193/16 77/194/16 +f 93/195/15 91/196/15 89/197/15 +f 95/198/18 92/199/18 91/200/18 +f 94/201/16 89/202/16 90/203/16 +f 96/204/17 90/205/17 92/206/17 +f 93/195/13 96/204/13 95/198/13 +f 101/207/15 99/208/15 97/209/15 +f 103/210/18 100/211/18 99/212/18 +f 102/213/16 97/214/16 98/215/16 +f 104/216/17 98/217/17 100/218/17 +f 101/207/13 104/216/13 103/210/13 +f 109/219/15 107/220/15 105/221/15 +f 111/222/18 108/223/18 107/224/18 +f 110/225/16 105/226/16 106/227/16 +f 112/228/17 106/229/17 108/230/17 +f 109/219/13 112/228/13 111/222/13 +f 117/231/15 115/232/15 113/233/15 +f 119/234/18 116/235/18 115/236/18 +f 118/237/16 113/238/16 114/239/16 +f 120/240/17 114/241/17 116/242/17 +f 117/231/13 120/240/13 119/234/13 +f 125/243/15 123/244/15 121/245/15 +f 127/246/18 124/247/18 123/248/18 +f 126/249/16 121/250/16 122/251/16 +f 128/252/17 122/253/17 124/254/17 +f 125/243/13 128/252/13 127/246/13 +f 133/255/15 131/256/15 129/257/15 +f 135/258/18 132/259/18 131/260/18 +f 134/261/16 129/262/16 130/263/16 +f 136/264/17 130/265/17 132/266/17 +f 133/255/13 136/264/13 135/258/13 +f 141/267/15 139/268/15 137/269/15 +f 143/270/18 140/271/18 139/272/18 +f 142/273/16 137/274/16 138/275/16 +f 144/276/17 138/277/17 140/278/17 +f 141/267/13 144/276/13 143/270/13 +f 149/279/15 147/280/15 145/281/15 +f 151/282/18 148/283/18 147/284/18 +f 150/285/16 145/286/16 146/287/16 +f 152/288/17 146/289/17 148/290/17 +f 149/279/13 152/288/13 151/282/13 +f 157/291/15 155/292/15 153/293/15 +f 159/294/18 156/295/18 155/296/18 +f 158/297/16 153/298/16 154/299/16 +f 160/300/17 154/301/17 156/302/17 +f 157/291/13 160/300/13 159/294/13 +f 165/303/15 163/304/15 161/305/15 +f 167/306/18 164/307/18 163/308/18 +f 166/309/16 161/310/16 162/311/16 +f 168/312/17 162/313/17 164/314/17 +f 165/303/13 168/312/13 167/306/13 +f 172/315/14 86/316/14 73/317/14 +f 171/318/14 196/319/14 172/320/14 +f 170/321/14 195/322/14 171/323/14 +f 169/324/14 194/325/14 170/326/14 +f 177/168/13 87/327/13 79/190/13 +f 178/328/13 197/329/13 177/330/13 +f 179/331/13 198/332/13 178/333/13 +f 180/334/13 199/335/13 179/336/13 +f 196/337/17 88/338/17 86/316/17 +f 195/339/17 200/340/17 196/319/17 +f 194/341/17 199/342/17 195/322/17 +f 193/343/17 198/344/17 194/325/17 +f 176/345/14 82/346/14 76/347/14 +f 175/348/14 188/349/14 176/350/14 +f 174/351/14 187/352/14 175/353/14 +f 173/354/14 186/355/14 174/356/14 +f 181/165/13 83/357/13 78/358/13 +f 182/359/13 189/360/13 181/361/13 +f 183/362/13 190/363/13 182/364/13 +f 184/365/13 191/366/13 183/367/13 +f 188/368/15 84/369/15 82/370/15 +f 187/371/15 192/372/15 188/373/15 +f 186/374/15 191/375/15 187/376/15 +f 185/377/15 190/378/15 186/379/15 +f 77/186/15 172/380/15 73/381/15 +f 180/334/15 171/382/15 172/383/15 +f 179/331/15 170/384/15 171/385/15 +f 178/328/15 169/386/15 170/387/15 +f 80/177/17 176/345/17 76/347/17 +f 184/365/17 175/348/17 176/350/17 +f 183/362/17 174/351/17 175/353/17 +f 182/359/17 173/354/17 174/356/17 +f 202/388/13 204/389/13 203/390/13 +f 207/391/14 206/392/14 205/393/14 +f 211/394/14 210/395/14 209/396/14 +f 215/397/14 214/398/14 213/399/14 +f 219/400/14 218/401/14 217/402/14 +f 223/403/14 222/404/14 221/405/14 +f 227/406/13 225/407/13 226/408/13 +f 231/409/13 229/410/13 230/411/13 +f 235/412/13 233/413/13 234/414/13 +f 239/415/13 237/416/13 238/417/13 +f 217/418/15 233/419/15 219/420/15 +f 210/421/16 226/422/16 209/423/16 +f 218/424/16 234/425/16 217/426/16 +f 212/427/17 227/428/17 210/395/17 +f 220/429/17 235/430/17 218/401/17 +f 211/394/18 228/431/18 212/432/18 +f 205/433/15 204/434/15 207/435/15 +f 219/400/18 236/436/18 220/437/18 +f 213/438/15 229/439/15 215/440/15 +f 206/441/16 203/442/16 205/443/16 +f 221/444/15 237/445/15 223/446/15 +f 214/447/16 230/448/16 213/449/16 +f 208/450/17 202/451/17 206/392/17 +f 222/452/16 238/453/16 221/454/16 +f 216/455/17 231/456/17 214/398/17 +f 207/391/18 201/457/18 208/458/18 +f 224/459/17 239/460/17 222/404/17 +f 215/397/18 232/461/18 216/462/18 +f 209/463/15 225/464/15 211/465/15 +f 223/403/18 240/466/18 224/467/18 +f 349/468/17 242/469/17 341/470/17 +f 345/471/15 243/472/15 337/473/15 +f 249/474/15 357/475/15 353/476/15 +f 520/477/13 79/190/13 87/327/13 +f 248/478/13 360/479/13 352/480/13 +f 242/469/14 353/481/14 341/470/14 +f 244/482/18 252/483/18 248/484/18 +f 253/485/17 365/486/17 361/487/17 +f 245/488/13 368/489/13 348/490/13 +f 243/491/14 361/487/14 337/492/14 +f 247/493/18 253/494/18 243/495/18 +f 85/183/17 520/477/17 87/327/17 +f 261/496/15 259/497/15 257/498/15 +f 263/499/18 260/500/18 259/501/18 +f 262/502/16 257/503/16 258/504/16 +f 264/505/17 258/506/17 260/507/17 +f 261/496/13 264/505/13 263/499/13 +f 269/508/15 267/509/15 265/510/15 +f 271/511/18 268/512/18 267/513/18 +f 270/514/16 265/515/16 266/516/16 +f 272/517/17 266/518/17 268/519/17 +f 269/508/13 272/517/13 271/511/13 +f 277/520/15 275/521/15 273/522/15 +f 279/523/18 276/524/18 275/525/18 +f 278/526/16 273/527/16 274/528/16 +f 280/529/17 274/530/17 276/531/17 +f 277/520/13 280/529/13 279/523/13 +f 285/532/15 283/533/15 281/534/15 +f 287/535/18 284/536/18 283/537/18 +f 286/538/16 281/539/16 282/540/16 +f 288/541/17 282/542/17 284/543/17 +f 285/532/13 288/541/13 287/535/13 +f 293/544/15 291/545/15 289/546/15 +f 295/547/18 292/548/18 291/549/18 +f 294/550/16 289/551/16 290/552/16 +f 296/553/17 290/554/17 292/555/17 +f 293/544/13 296/553/13 295/547/13 +f 301/556/15 299/557/15 297/558/15 +f 303/559/18 300/560/18 299/561/18 +f 302/562/16 297/563/16 298/564/16 +f 304/565/17 298/566/17 300/567/17 +f 301/556/13 304/565/13 303/559/13 +f 309/568/15 307/569/15 305/570/15 +f 311/571/18 308/572/18 307/573/18 +f 310/574/16 305/575/16 306/576/16 +f 312/577/17 306/578/17 308/579/17 +f 309/568/13 312/577/13 311/571/13 +f 317/580/15 315/581/15 313/582/15 +f 319/583/18 316/584/18 315/585/18 +f 318/586/16 313/587/16 314/588/16 +f 320/589/17 314/590/17 316/591/17 +f 317/580/13 320/589/13 319/583/13 +f 325/592/15 323/593/15 321/594/15 +f 327/595/18 324/596/18 323/597/18 +f 326/598/16 321/599/16 322/600/16 +f 328/601/17 322/602/17 324/603/17 +f 325/592/13 328/601/13 327/595/13 +f 333/604/15 331/605/15 329/606/15 +f 335/607/18 332/608/18 331/609/18 +f 334/610/16 329/611/16 330/612/16 +f 336/613/17 330/614/17 332/615/17 +f 333/604/13 336/613/13 335/607/13 +f 340/616/14 254/617/14 241/618/14 +f 339/619/14 364/620/14 340/621/14 +f 338/622/14 363/623/14 339/624/14 +f 337/625/14 362/626/14 338/627/14 +f 345/471/13 255/628/13 247/629/13 +f 346/630/13 365/631/13 345/632/13 +f 347/633/13 366/634/13 346/635/13 +f 348/636/13 367/637/13 347/638/13 +f 364/639/17 256/640/17 254/617/17 +f 363/641/17 368/642/17 364/620/17 +f 362/643/17 367/644/17 363/623/17 +f 361/645/17 366/646/17 362/626/17 +f 344/647/14 250/648/14 244/649/14 +f 343/650/14 356/651/14 344/652/14 +f 342/653/14 355/654/14 343/655/14 +f 341/656/14 354/657/14 342/658/14 +f 349/468/13 251/659/13 246/660/13 +f 350/661/13 357/662/13 349/663/13 +f 351/664/13 358/665/13 350/666/13 +f 352/667/13 359/668/13 351/669/13 +f 356/670/15 252/671/15 250/672/15 +f 355/673/15 360/674/15 356/675/15 +f 354/676/15 359/677/15 355/678/15 +f 353/679/15 358/680/15 354/681/15 +f 245/488/15 340/682/15 241/683/15 +f 348/636/15 339/684/15 340/685/15 +f 347/633/15 338/686/15 339/687/15 +f 346/630/15 337/688/15 338/689/15 +f 248/478/17 344/647/17 244/649/17 +f 352/667/17 343/650/17 344/652/17 +f 351/664/17 342/653/17 343/655/17 +f 350/661/17 341/656/17 342/658/17 +f 370/690/13 372/691/13 371/692/13 +f 375/693/14 374/694/14 373/695/14 +f 379/696/14 378/697/14 377/698/14 +f 383/699/14 382/700/14 381/701/14 +f 387/702/14 386/703/14 385/704/14 +f 391/705/14 390/706/14 389/707/14 +f 395/708/13 393/709/13 394/710/13 +f 399/711/13 397/712/13 398/713/13 +f 403/714/13 401/715/13 402/716/13 +f 407/717/13 405/718/13 406/719/13 +f 385/720/15 401/721/15 387/722/15 +f 378/723/16 394/724/16 377/725/16 +f 386/726/16 402/727/16 385/728/16 +f 380/729/17 395/730/17 378/697/17 +f 388/731/17 403/732/17 386/703/17 +f 379/696/18 396/733/18 380/734/18 +f 373/735/15 372/736/15 375/737/15 +f 387/702/18 404/738/18 388/739/18 +f 381/740/15 397/741/15 383/742/15 +f 374/743/16 371/744/16 373/745/16 +f 389/746/15 405/747/15 391/748/15 +f 382/749/16 398/750/16 381/751/16 +f 376/752/17 370/753/17 374/694/17 +f 390/754/16 406/755/16 389/756/16 +f 384/757/17 399/758/17 382/700/17 +f 375/693/18 369/759/18 376/760/18 +f 392/761/17 407/762/17 390/706/17 +f 383/699/18 400/763/18 384/764/18 +f 377/765/15 393/766/15 379/767/15 +f 391/705/18 408/768/18 392/769/18 +f 413/770/15 411/771/15 409/772/15 +f 415/773/18 412/774/18 411/775/18 +f 414/776/16 409/777/16 410/778/16 +f 416/779/17 410/780/17 412/781/17 +f 413/770/13 416/779/13 415/773/13 +f 421/782/15 419/783/15 417/784/15 +f 423/785/18 420/786/18 419/787/18 +f 422/788/16 417/789/16 418/790/16 +f 424/791/17 418/792/17 420/793/17 +f 421/782/13 424/791/13 423/785/13 +f 429/794/15 427/795/15 425/796/15 +f 431/797/18 428/798/18 427/799/18 +f 430/800/16 425/801/16 426/802/16 +f 432/803/17 426/804/17 428/805/17 +f 429/794/13 432/803/13 431/797/13 +f 437/806/15 435/807/15 433/808/15 +f 439/809/18 436/810/18 435/811/18 +f 438/812/16 433/813/16 434/814/16 +f 440/815/17 434/816/17 436/817/17 +f 437/806/13 440/815/13 439/809/13 +f 445/818/15 443/819/15 441/820/15 +f 447/821/18 444/822/18 443/823/18 +f 446/824/16 441/825/16 442/826/16 +f 448/827/17 442/828/17 444/829/17 +f 445/818/13 448/827/13 447/821/13 +f 453/830/15 451/831/15 449/832/15 +f 455/833/18 452/834/18 451/835/18 +f 454/836/16 449/837/16 450/838/16 +f 456/839/17 450/840/17 452/841/17 +f 453/830/13 456/839/13 455/833/13 +f 461/842/15 459/843/15 457/844/15 +f 463/845/18 460/846/18 459/847/18 +f 462/848/16 457/849/16 458/850/16 +f 464/851/17 458/852/17 460/853/17 +f 461/842/13 464/851/13 463/845/13 +f 469/854/15 467/855/15 465/856/15 +f 471/857/18 468/858/18 467/859/18 +f 470/860/16 465/861/16 466/862/16 +f 472/863/17 466/864/17 468/865/17 +f 469/854/13 472/863/13 471/857/13 +f 477/866/15 475/867/15 473/868/15 +f 479/869/18 476/870/18 475/871/18 +f 478/872/16 473/873/16 474/874/16 +f 480/875/17 474/876/17 476/877/17 +f 477/866/13 480/875/13 479/869/13 +f 485/878/15 483/879/15 481/880/15 +f 487/881/18 484/882/18 483/883/18 +f 486/884/16 481/885/16 482/886/16 +f 488/887/17 482/888/17 484/889/17 +f 485/878/13 488/887/13 487/881/13 +f 491/890/14 516/182/14 492/891/14 +f 490/892/14 515/893/14 491/894/14 +f 489/895/14 514/896/14 490/897/14 +f 498/898/13 517/899/13 497/900/13 +f 499/901/13 518/902/13 498/903/13 +f 500/904/13 519/905/13 499/906/13 +f 515/907/17 520/477/17 516/182/17 +f 514/908/17 519/909/17 515/893/17 +f 513/910/17 518/911/17 514/896/17 +f 495/912/14 508/913/14 496/914/14 +f 494/915/14 507/916/14 495/917/14 +f 493/918/14 506/919/14 494/920/14 +f 502/921/13 509/922/13 501/923/13 +f 503/924/13 510/925/13 502/926/13 +f 504/927/13 511/928/13 503/929/13 +f 507/930/15 512/931/15 508/932/15 +f 506/933/15 511/934/15 507/935/15 +f 505/936/15 510/937/15 506/938/15 +f 500/904/15 491/939/15 492/191/15 +f 499/901/15 490/940/15 491/941/15 +f 498/898/15 489/942/15 490/943/15 +f 504/927/17 495/912/17 496/914/17 +f 503/924/17 494/915/17 495/917/17 +f 502/921/17 493/918/17 494/920/17 +f 493/918/17 80/177/17 76/347/17 +f 80/177/13 509/922/13 84/369/13 +f 509/922/15 82/370/15 84/369/15 +f 505/944/14 76/347/14 82/346/14 +f 517/899/17 254/617/17 256/640/17 +f 245/488/13 517/899/13 256/640/13 +f 489/942/15 245/488/15 241/683/15 +f 513/910/14 241/618/14 254/617/14 +f 246/660/17 496/914/17 242/469/17 +f 512/931/13 246/660/13 251/659/13 +f 249/474/15 512/931/15 251/659/15 +f 242/469/14 508/913/14 249/945/14 +f 571/946/19 568/947/19 572/948/19 +f 605/949/19 539/950/19 540/951/19 +f 605/952/19 574/953/19 606/954/19 +f 539/955/20 548/956/20 540/957/20 +f 536/958/14 548/956/14 544/959/14 +f 530/960/14 531/961/14 532/962/14 +f 537/963/14 568/964/14 533/965/14 +f 532/966/21 528/967/21 530/968/21 +f 534/969/19 568/964/19 567/970/19 +f 615/971/22 524/972/22 523/973/22 +f 571/946/13 566/974/13 567/975/13 +f 538/976/13 567/970/13 566/977/13 +f 616/978/21 522/979/21 524/980/21 +f 542/981/23 549/982/23 541/983/23 +f 545/984/24 554/985/24 546/986/24 +f 534/987/13 546/988/13 542/989/13 +f 536/990/25 543/991/25 535/992/25 +f 535/992/13 547/993/13 539/955/13 +f 533/994/14 545/995/14 537/996/14 +f 537/997/25 546/988/25 538/998/25 +f 534/987/20 541/999/20 533/994/20 +f 549/1000/14 561/1001/14 553/1002/14 +f 551/1003/13 563/1004/13 555/1005/13 +f 544/1006/14 556/1007/14 552/1008/14 +f 547/1009/23 556/1007/23 548/1010/23 +f 542/981/13 554/985/13 550/1011/13 +f 544/1012/24 551/1013/24 543/1014/24 +f 543/1014/13 555/1015/13 547/1009/13 +f 541/983/14 553/1016/14 545/1017/14 +f 553/1018/26 562/1019/26 554/1020/26 +f 550/1021/27 557/1022/27 549/1000/27 +f 552/1023/14 564/1024/14 560/1025/14 +f 555/1005/27 564/1024/27 556/1026/27 +f 550/1021/13 562/1019/13 558/1027/13 +f 552/1028/26 559/1029/26 551/1003/26 +f 606/1030/13 535/1031/13 539/950/13 +f 575/1032/25 584/1033/25 576/1034/25 +f 572/1035/14 584/1036/14 580/1037/14 +f 576/1038/28 566/974/28 575/1039/28 +f 537/1040/28 566/977/28 565/1041/28 +f 529/1042/29 526/1043/29 531/961/29 +f 565/1044/14 572/948/14 568/947/14 +f 526/1045/13 528/1046/13 527/1047/13 +f 614/1048/30 521/1049/30 522/1050/30 +f 530/960/30 525/1051/30 529/1052/30 +f 531/1053/22 527/1054/22 532/1055/22 +f 578/1056/24 585/1057/24 577/1058/24 +f 581/1059/23 590/1060/23 582/1061/23 +f 570/1062/13 582/1063/13 578/1064/13 +f 572/1035/20 579/1065/20 571/1066/20 +f 571/1066/13 583/1067/13 575/1032/13 +f 569/1068/14 581/1069/14 573/1070/14 +f 573/1070/20 582/1063/20 574/1071/20 +f 570/1062/25 577/1072/25 569/1073/25 +f 589/1074/14 593/1075/14 597/1076/14 +f 587/1077/13 599/1078/13 591/1079/13 +f 580/1080/14 592/1081/14 588/1082/14 +f 583/1083/24 592/1084/24 584/1085/24 +f 578/1056/13 590/1060/13 586/1086/13 +f 580/1080/23 587/1087/23 579/1088/23 +f 579/1088/13 591/1089/13 583/1083/13 +f 577/1090/14 589/1091/14 581/1059/14 +f 589/1074/27 598/1092/27 590/1093/27 +f 586/1094/26 593/1095/26 585/1096/26 +f 588/1097/14 600/1098/14 596/1099/14 +f 591/1079/26 600/1100/26 592/1101/26 +f 590/1093/13 594/1102/13 586/1094/13 +f 588/1097/27 595/1103/27 587/1077/27 +f 570/1104/28 607/1105/28 608/1106/28 +f 602/1107/13 603/1108/13 601/1109/13 +f 574/953/13 608/1106/13 606/954/13 +f 601/1109/29 611/1110/29 609/1111/29 +f 603/1108/22 612/1112/22 611/1113/22 +f 602/1107/30 609/1114/30 610/1115/30 +f 536/1116/14 605/949/14 540/951/14 +f 604/1117/21 610/1118/21 612/1119/21 +f 607/1120/14 573/1121/14 605/952/14 +f 614/1048/13 615/971/13 613/1122/13 +f 613/1122/29 523/1123/29 521/1124/29 +f 618/1125/13 620/1126/13 619/1127/13 +f 623/1128/14 622/1129/14 621/1130/14 +f 627/1131/14 626/1132/14 625/1133/14 +f 631/1134/14 630/1135/14 629/1136/14 +f 635/1137/14 634/1138/14 633/1139/14 +f 639/1140/13 637/1141/13 638/1142/13 +f 643/1143/13 641/1144/13 642/1145/13 +f 647/1146/13 645/1147/13 646/1148/13 +f 626/1149/16 638/1150/16 625/1151/16 +f 628/1152/17 639/1153/17 626/1132/17 +f 627/1131/18 640/1154/18 628/1155/18 +f 621/1156/15 620/1157/15 623/1158/15 +f 629/1159/15 641/1160/15 631/1161/15 +f 622/1162/16 619/1163/16 621/1164/16 +f 633/1165/15 645/1166/15 635/1167/15 +f 630/1168/16 642/1169/16 629/1170/16 +f 624/1171/17 618/1172/17 622/1129/17 +f 634/1173/16 646/1174/16 633/1175/16 +f 632/1176/17 643/1177/17 630/1135/17 +f 623/1128/18 617/1178/18 624/1179/18 +f 636/1180/17 647/1181/17 634/1138/17 +f 631/1134/18 644/1182/18 632/1183/18 +f 625/1184/15 637/1185/15 627/1186/15 +f 635/1137/18 648/1187/18 636/1188/18 +f 729/1189/15 649/1190/15 721/1191/15 +f 652/1192/13 744/1193/13 736/1194/13 +f 650/1195/18 654/1196/18 652/1197/18 +f 655/1198/17 749/1199/17 745/1200/17 +f 649/1201/14 745/1200/14 721/1202/14 +f 651/1203/18 655/1204/18 649/1205/18 +f 661/1206/15 659/1207/15 657/1208/15 +f 663/1209/18 660/1210/18 659/1211/18 +f 662/1212/16 657/1213/16 658/1214/16 +f 664/1215/17 658/1216/17 660/1217/17 +f 661/1206/13 664/1215/13 663/1209/13 +f 669/1218/15 667/1219/15 665/1220/15 +f 671/1221/18 668/1222/18 667/1223/18 +f 670/1224/16 665/1225/16 666/1226/16 +f 672/1227/17 666/1228/17 668/1229/17 +f 669/1218/13 672/1227/13 671/1221/13 +f 677/1230/15 675/1231/15 673/1232/15 +f 679/1233/18 676/1234/18 675/1235/18 +f 678/1236/16 673/1237/16 674/1238/16 +f 680/1239/17 674/1240/17 676/1241/17 +f 677/1230/13 680/1239/13 679/1233/13 +f 685/1242/15 683/1243/15 681/1244/15 +f 687/1245/18 684/1246/18 683/1247/18 +f 686/1248/16 681/1249/16 682/1250/16 +f 688/1251/17 682/1252/17 684/1253/17 +f 685/1242/13 688/1251/13 687/1245/13 +f 693/1254/15 691/1255/15 689/1256/15 +f 695/1257/18 692/1258/18 691/1259/18 +f 694/1260/16 689/1261/16 690/1262/16 +f 696/1263/17 690/1264/17 692/1265/17 +f 693/1254/13 696/1263/13 695/1257/13 +f 701/1266/15 699/1267/15 697/1268/15 +f 703/1269/18 700/1270/18 699/1271/18 +f 702/1272/16 697/1273/16 698/1274/16 +f 704/1275/17 698/1276/17 700/1277/17 +f 701/1266/13 704/1275/13 703/1269/13 +f 709/1278/15 707/1279/15 705/1280/15 +f 711/1281/18 708/1282/18 707/1283/18 +f 710/1284/16 705/1285/16 706/1286/16 +f 712/1287/17 706/1288/17 708/1289/17 +f 709/1278/13 712/1287/13 711/1281/13 +f 717/1290/15 715/1291/15 713/1292/15 +f 719/1293/18 716/1294/18 715/1295/18 +f 718/1296/16 713/1297/16 714/1298/16 +f 720/1299/17 714/1300/17 716/1301/17 +f 717/1290/13 720/1299/13 719/1293/13 +f 723/1302/14 748/1303/14 724/1304/14 +f 722/1305/14 747/1306/14 723/1307/14 +f 721/1308/14 746/1309/14 722/1310/14 +f 729/1189/13 656/1311/13 651/1312/13 +f 730/1313/13 749/1314/13 729/1315/13 +f 731/1316/13 750/1317/13 730/1318/13 +f 732/1319/13 751/1320/13 731/1321/13 +f 747/1322/17 752/1323/17 748/1303/17 +f 746/1324/17 751/1325/17 747/1306/17 +f 745/1326/17 750/1327/17 746/1309/17 +f 728/1328/14 653/1329/14 650/1330/14 +f 727/1331/14 740/1332/14 728/1333/14 +f 726/1334/14 739/1335/14 727/1336/14 +f 725/1337/14 738/1338/14 726/1339/14 +f 734/1340/13 741/1341/13 733/1342/13 +f 735/1343/13 742/1344/13 734/1345/13 +f 736/1346/13 743/1347/13 735/1348/13 +f 740/1349/15 654/1350/15 653/1351/15 +f 739/1352/15 744/1353/15 740/1354/15 +f 738/1355/15 743/1356/15 739/1357/15 +f 737/1358/15 742/1359/15 738/1360/15 +f 732/1319/15 723/1361/15 724/1362/15 +f 731/1316/15 722/1363/15 723/1364/15 +f 730/1313/15 721/1365/15 722/1366/15 +f 652/1192/17 728/1328/17 650/1330/17 +f 736/1346/17 727/1331/17 728/1333/17 +f 735/1343/17 726/1334/17 727/1336/17 +f 734/1340/17 725/1337/17 726/1339/17 +f 741/1367/15 600/1368/15 599/1369/15 +f 595/1370/13 741/1367/13 599/1369/13 +f 725/1371/17 595/1370/17 596/1372/17 +f 737/1373/14 596/1372/14 600/1374/14 +f 594/1375/15 724/1376/15 593/1377/15 +f 752/1378/13 594/1375/13 598/1379/13 +f 597/1380/17 752/1378/17 598/1379/17 +f 597/1380/14 724/1381/14 748/1382/14 +f 608/1383/28 536/1384/28 535/1031/28 +f 762/1385/14 763/1386/14 764/1387/14 +f 764/1388/25 760/1389/25 762/1390/25 +f 775/1391/31 756/1392/31 755/1393/31 +f 776/1394/25 754/1395/25 756/1396/25 +f 761/1397/20 758/1398/20 763/1386/20 +f 758/1399/13 760/1400/13 759/1401/13 +f 774/1402/32 753/1403/32 754/1404/32 +f 762/1385/32 757/1405/32 761/1406/32 +f 763/1407/31 759/1408/31 764/1409/31 +f 766/1410/13 767/1411/13 765/1412/13 +f 765/1412/20 771/1413/20 769/1414/20 +f 767/1411/31 772/1415/31 771/1416/31 +f 766/1410/32 769/1417/32 770/1418/32 +f 768/1419/25 770/1420/25 772/1421/25 +f 774/1402/13 775/1391/13 773/1422/13 +f 773/1422/20 755/1423/20 753/1424/20 +f 788/1425/14 785/1426/14 787/1427/14 +f 788/1428/24 784/1429/24 786/1430/24 +f 799/1431/33 780/1432/33 779/1433/33 +f 800/1434/24 778/1435/24 780/1436/24 +f 785/1437/23 782/1438/23 787/1427/23 +f 783/1439/13 781/1440/13 784/1441/13 +f 798/1442/34 777/1443/34 778/1444/34 +f 786/1445/34 781/1440/34 785/1426/34 +f 787/1446/33 783/1447/33 788/1448/33 +f 790/1449/13 791/1450/13 789/1451/13 +f 789/1451/23 795/1452/23 793/1453/23 +f 791/1450/33 796/1454/33 795/1455/33 +f 790/1449/34 793/1456/34 794/1457/34 +f 792/1458/24 794/1459/24 796/1460/24 +f 798/1442/13 799/1431/13 797/1461/13 +f 797/1461/23 779/1462/23 777/1463/23 +f 810/1464/14 811/1465/14 812/1466/14 +f 812/1467/26 808/1468/26 810/1469/26 +f 823/1470/35 804/1471/35 803/1472/35 +f 824/1473/26 802/1474/26 804/1475/26 +f 809/1476/27 806/1477/27 811/1465/27 +f 806/1478/13 808/1479/13 807/1480/13 +f 822/1481/36 801/1482/36 802/1483/36 +f 810/1464/36 805/1484/36 809/1485/36 +f 811/1486/35 807/1487/35 812/1488/35 +f 816/1489/13 813/1490/13 814/1491/13 +f 813/1490/27 819/1492/27 817/1493/27 +f 815/1494/35 820/1495/35 819/1496/35 +f 814/1491/36 817/1497/36 818/1498/36 +f 816/1489/26 818/1499/26 820/1500/26 +f 822/1481/13 823/1470/13 821/1501/13 +f 821/1501/27 803/1502/27 801/1503/27 +f 836/1504/14 833/1505/14 835/1506/14 +f 836/1507/21 832/1508/21 834/1509/21 +f 847/1510/22 828/1511/22 827/1512/22 +f 848/1513/21 826/1514/21 828/1515/21 +f 833/1516/29 830/1517/29 835/1506/29 +f 831/1518/13 829/1519/13 832/1520/13 +f 846/1521/30 825/1522/30 826/1523/30 +f 834/1524/30 829/1519/30 833/1505/30 +f 835/1525/22 831/1526/22 836/1527/22 +f 838/1528/13 839/1529/13 837/1530/13 +f 837/1530/29 843/1531/29 841/1532/29 +f 839/1529/22 844/1533/22 843/1534/22 +f 838/1528/30 841/1535/30 842/1536/30 +f 840/1537/21 842/1538/21 844/1539/21 +f 846/1521/13 847/1510/13 845/1540/13 +f 845/1540/29 827/1541/29 825/1542/29 +f 851/1543/14 850/1544/14 849/1545/14 +f 855/1546/13 853/1547/13 854/1548/13 +f 849/1549/15 853/1550/15 851/1551/15 +f 850/1552/16 854/1553/16 849/1554/16 +f 852/1555/17 855/1556/17 850/1544/17 +f 851/1543/18 856/1557/18 852/1558/18 +f 861/1559/15 859/1560/15 857/1561/15 +f 863/1562/18 860/1563/18 859/1564/18 +f 862/1565/16 857/1566/16 858/1567/16 +f 864/1568/17 858/1569/17 860/1570/17 +f 861/1559/13 864/1568/13 863/1562/13 +f 869/1571/15 867/1572/15 865/1573/15 +f 871/1574/18 868/1575/18 867/1576/18 +f 870/1577/16 865/1578/16 866/1579/16 +f 872/1580/17 866/1581/17 868/1582/17 +f 869/1571/13 872/1580/13 871/1574/13 +f 34/85/13 33/154/13 36/86/13 +f 39/88/14 40/155/14 38/89/14 +f 43/91/14 44/129/14 42/92/14 +f 47/94/14 48/159/14 46/95/14 +f 51/97/14 52/134/14 50/98/14 +f 55/100/14 56/164/14 54/101/14 +f 59/103/13 60/128/13 57/104/13 +f 63/106/13 64/158/13 61/107/13 +f 67/109/13 68/133/13 65/110/13 +f 71/112/13 72/163/13 69/113/13 +f 49/115/15 66/1583/15 65/116/15 +f 42/118/16 59/1584/16 58/119/16 +f 50/121/16 67/1585/16 66/122/16 +f 44/124/17 60/1586/17 59/125/17 +f 52/126/17 68/1587/17 67/127/17 +f 43/91/18 57/104/18 60/128/18 +f 37/130/15 35/1588/15 36/131/15 +f 51/97/18 65/110/18 68/133/18 +f 45/135/15 62/1589/15 61/136/15 +f 38/138/16 34/1590/16 35/139/16 +f 53/141/15 70/1591/15 69/142/15 +f 46/144/16 63/1592/16 62/145/16 +f 40/147/17 33/1593/17 34/148/17 +f 54/149/16 71/1594/16 70/150/16 +f 48/152/17 64/1595/17 63/153/17 +f 39/88/18 36/86/18 33/154/18 +f 56/156/17 72/1596/17 71/157/17 +f 47/94/18 61/107/18 64/158/18 +f 41/160/15 58/1597/15 57/161/15 +f 55/100/18 69/113/18 72/163/18 +f 181/165/17 78/358/17 74/166/17 +f 177/168/15 79/190/15 75/169/15 +f 81/171/15 83/357/15 189/172/15 +f 78/174/16 83/1598/16 81/175/16 +f 80/177/13 84/369/13 192/178/13 +f 74/166/14 81/1599/14 185/180/14 +f 75/181/14 492/891/14 516/182/14 +f 85/183/17 87/327/17 197/184/17 +f 77/186/13 88/338/13 200/187/13 +f 75/181/14 85/183/14 193/185/14 +f 79/190/15 500/904/15 492/191/15 +f 73/192/16 86/1600/16 88/193/16 +f 93/195/15 95/198/15 91/196/15 +f 95/198/18 96/204/18 92/199/18 +f 94/201/16 93/195/16 89/202/16 +f 96/204/17 94/201/17 90/205/17 +f 93/195/13 94/201/13 96/204/13 +f 101/207/15 103/210/15 99/208/15 +f 103/210/18 104/216/18 100/211/18 +f 102/213/16 101/207/16 97/214/16 +f 104/216/17 102/213/17 98/217/17 +f 101/207/13 102/213/13 104/216/13 +f 109/219/15 111/222/15 107/220/15 +f 111/222/18 112/228/18 108/223/18 +f 110/225/16 109/219/16 105/226/16 +f 112/228/17 110/225/17 106/229/17 +f 109/219/13 110/225/13 112/228/13 +f 117/231/15 119/234/15 115/232/15 +f 119/234/18 120/240/18 116/235/18 +f 118/237/16 117/231/16 113/238/16 +f 120/240/17 118/237/17 114/241/17 +f 117/231/13 118/237/13 120/240/13 +f 125/243/15 127/246/15 123/244/15 +f 127/246/18 128/252/18 124/247/18 +f 126/249/16 125/243/16 121/250/16 +f 128/252/17 126/249/17 122/253/17 +f 125/243/13 126/249/13 128/252/13 +f 133/255/15 135/258/15 131/256/15 +f 135/258/18 136/264/18 132/259/18 +f 134/261/16 133/255/16 129/262/16 +f 136/264/17 134/261/17 130/265/17 +f 133/255/13 134/261/13 136/264/13 +f 141/267/15 143/270/15 139/268/15 +f 143/270/18 144/276/18 140/271/18 +f 142/273/16 141/267/16 137/274/16 +f 144/276/17 142/273/17 138/277/17 +f 141/267/13 142/273/13 144/276/13 +f 149/279/15 151/282/15 147/280/15 +f 151/282/18 152/288/18 148/283/18 +f 150/285/16 149/279/16 145/286/16 +f 152/288/17 150/285/17 146/289/17 +f 149/279/13 150/285/13 152/288/13 +f 157/291/15 159/294/15 155/292/15 +f 159/294/18 160/300/18 156/295/18 +f 158/297/16 157/291/16 153/298/16 +f 160/300/17 158/297/17 154/301/17 +f 157/291/13 158/297/13 160/300/13 +f 165/303/15 167/306/15 163/304/15 +f 167/306/18 168/312/18 164/307/18 +f 166/309/16 165/303/16 161/310/16 +f 168/312/17 166/309/17 162/313/17 +f 165/303/13 166/309/13 168/312/13 +f 172/315/14 196/337/14 86/316/14 +f 171/318/14 195/339/14 196/319/14 +f 170/321/14 194/341/14 195/322/14 +f 169/324/14 193/343/14 194/325/14 +f 177/168/13 197/184/13 87/327/13 +f 178/328/13 198/344/13 197/329/13 +f 179/331/13 199/342/13 198/332/13 +f 180/334/13 200/340/13 199/335/13 +f 196/337/17 200/187/17 88/338/17 +f 195/339/17 199/335/17 200/340/17 +f 194/341/17 198/332/17 199/342/17 +f 193/343/17 197/329/17 198/344/17 +f 176/345/14 188/1601/14 82/346/14 +f 175/348/14 187/1602/14 188/349/14 +f 174/351/14 186/1603/14 187/352/14 +f 173/354/14 185/1604/14 186/355/14 +f 181/165/13 189/172/13 83/357/13 +f 182/359/13 190/378/13 189/360/13 +f 183/362/13 191/375/13 190/363/13 +f 184/365/13 192/372/13 191/366/13 +f 188/368/15 192/178/15 84/369/15 +f 187/371/15 191/366/15 192/372/15 +f 186/374/15 190/363/15 191/375/15 +f 185/377/15 189/360/15 190/378/15 +f 77/186/15 180/188/15 172/380/15 +f 180/334/15 179/336/15 171/382/15 +f 179/331/15 178/333/15 170/384/15 +f 178/328/15 177/330/15 169/386/15 +f 80/177/17 184/179/17 176/345/17 +f 184/365/17 183/367/17 175/348/17 +f 183/362/17 182/364/17 174/351/17 +f 182/359/17 181/361/17 173/354/17 +f 202/388/13 201/457/13 204/389/13 +f 207/391/14 208/458/14 206/392/14 +f 211/394/14 212/432/14 210/395/14 +f 215/397/14 216/462/14 214/398/14 +f 219/400/14 220/437/14 218/401/14 +f 223/403/14 224/467/14 222/404/14 +f 227/406/13 228/431/13 225/407/13 +f 231/409/13 232/461/13 229/410/13 +f 235/412/13 236/436/13 233/413/13 +f 239/415/13 240/466/13 237/416/13 +f 217/418/15 234/1605/15 233/419/15 +f 210/421/16 227/1606/16 226/422/16 +f 218/424/16 235/1607/16 234/425/16 +f 212/427/17 228/1608/17 227/428/17 +f 220/429/17 236/1609/17 235/430/17 +f 211/394/18 225/407/18 228/431/18 +f 205/433/15 203/1610/15 204/434/15 +f 219/400/18 233/413/18 236/436/18 +f 213/438/15 230/1611/15 229/439/15 +f 206/441/16 202/1612/16 203/442/16 +f 221/444/15 238/1613/15 237/445/15 +f 214/447/16 231/1614/16 230/448/16 +f 208/450/17 201/1615/17 202/451/17 +f 222/452/16 239/1616/16 238/453/16 +f 216/455/17 232/1617/17 231/456/17 +f 207/391/18 204/389/18 201/457/18 +f 224/459/17 240/1618/17 239/460/17 +f 215/397/18 229/410/18 232/461/18 +f 209/463/15 226/1619/15 225/464/15 +f 223/403/18 237/416/18 240/466/18 +f 349/468/17 246/660/17 242/469/17 +f 345/471/15 247/629/15 243/472/15 +f 249/474/15 251/659/15 357/475/15 +f 520/477/13 500/904/13 79/190/13 +f 248/478/13 252/671/13 360/479/13 +f 242/469/14 249/945/14 353/481/14 +f 244/482/18 250/1620/18 252/483/18 +f 253/485/17 255/628/17 365/486/17 +f 245/488/13 256/640/13 368/489/13 +f 243/491/14 253/485/14 361/487/14 +f 247/493/18 255/1621/18 253/494/18 +f 85/183/17 516/182/17 520/477/17 +f 261/496/15 263/499/15 259/497/15 +f 263/499/18 264/505/18 260/500/18 +f 262/502/16 261/496/16 257/503/16 +f 264/505/17 262/502/17 258/506/17 +f 261/496/13 262/502/13 264/505/13 +f 269/508/15 271/511/15 267/509/15 +f 271/511/18 272/517/18 268/512/18 +f 270/514/16 269/508/16 265/515/16 +f 272/517/17 270/514/17 266/518/17 +f 269/508/13 270/514/13 272/517/13 +f 277/520/15 279/523/15 275/521/15 +f 279/523/18 280/529/18 276/524/18 +f 278/526/16 277/520/16 273/527/16 +f 280/529/17 278/526/17 274/530/17 +f 277/520/13 278/526/13 280/529/13 +f 285/532/15 287/535/15 283/533/15 +f 287/535/18 288/541/18 284/536/18 +f 286/538/16 285/532/16 281/539/16 +f 288/541/17 286/538/17 282/542/17 +f 285/532/13 286/538/13 288/541/13 +f 293/544/15 295/547/15 291/545/15 +f 295/547/18 296/553/18 292/548/18 +f 294/550/16 293/544/16 289/551/16 +f 296/553/17 294/550/17 290/554/17 +f 293/544/13 294/550/13 296/553/13 +f 301/556/15 303/559/15 299/557/15 +f 303/559/18 304/565/18 300/560/18 +f 302/562/16 301/556/16 297/563/16 +f 304/565/17 302/562/17 298/566/17 +f 301/556/13 302/562/13 304/565/13 +f 309/568/15 311/571/15 307/569/15 +f 311/571/18 312/577/18 308/572/18 +f 310/574/16 309/568/16 305/575/16 +f 312/577/17 310/574/17 306/578/17 +f 309/568/13 310/574/13 312/577/13 +f 317/580/15 319/583/15 315/581/15 +f 319/583/18 320/589/18 316/584/18 +f 318/586/16 317/580/16 313/587/16 +f 320/589/17 318/586/17 314/590/17 +f 317/580/13 318/586/13 320/589/13 +f 325/592/15 327/595/15 323/593/15 +f 327/595/18 328/601/18 324/596/18 +f 326/598/16 325/592/16 321/599/16 +f 328/601/17 326/598/17 322/602/17 +f 325/592/13 326/598/13 328/601/13 +f 333/604/15 335/607/15 331/605/15 +f 335/607/18 336/613/18 332/608/18 +f 334/610/16 333/604/16 329/611/16 +f 336/613/17 334/610/17 330/614/17 +f 333/604/13 334/610/13 336/613/13 +f 340/616/14 364/639/14 254/617/14 +f 339/619/14 363/641/14 364/620/14 +f 338/622/14 362/643/14 363/623/14 +f 337/625/14 361/645/14 362/626/14 +f 345/471/13 365/486/13 255/628/13 +f 346/630/13 366/646/13 365/631/13 +f 347/633/13 367/644/13 366/634/13 +f 348/636/13 368/642/13 367/637/13 +f 364/639/17 368/489/17 256/640/17 +f 363/641/17 367/637/17 368/642/17 +f 362/643/17 366/634/17 367/644/17 +f 361/645/17 365/631/17 366/646/17 +f 344/647/14 356/1622/14 250/648/14 +f 343/650/14 355/1623/14 356/651/14 +f 342/653/14 354/1624/14 355/654/14 +f 341/656/14 353/1625/14 354/657/14 +f 349/468/13 357/475/13 251/659/13 +f 350/661/13 358/680/13 357/662/13 +f 351/664/13 359/677/13 358/665/13 +f 352/667/13 360/674/13 359/668/13 +f 356/670/15 360/479/15 252/671/15 +f 355/673/15 359/668/15 360/674/15 +f 354/676/15 358/665/15 359/677/15 +f 353/679/15 357/662/15 358/680/15 +f 245/488/15 348/490/15 340/682/15 +f 348/636/15 347/638/15 339/684/15 +f 347/633/15 346/635/15 338/686/15 +f 346/630/15 345/632/15 337/688/15 +f 248/478/17 352/480/17 344/647/17 +f 352/667/17 351/669/17 343/650/17 +f 351/664/17 350/666/17 342/653/17 +f 350/661/17 349/663/17 341/656/17 +f 370/690/13 369/759/13 372/691/13 +f 375/693/14 376/760/14 374/694/14 +f 379/696/14 380/734/14 378/697/14 +f 383/699/14 384/764/14 382/700/14 +f 387/702/14 388/739/14 386/703/14 +f 391/705/14 392/769/14 390/706/14 +f 395/708/13 396/733/13 393/709/13 +f 399/711/13 400/763/13 397/712/13 +f 403/714/13 404/738/13 401/715/13 +f 407/717/13 408/768/13 405/718/13 +f 385/720/15 402/1626/15 401/721/15 +f 378/723/16 395/1627/16 394/724/16 +f 386/726/16 403/1628/16 402/727/16 +f 380/729/17 396/1629/17 395/730/17 +f 388/731/17 404/1630/17 403/732/17 +f 379/696/18 393/709/18 396/733/18 +f 373/735/15 371/1631/15 372/736/15 +f 387/702/18 401/715/18 404/738/18 +f 381/740/15 398/1632/15 397/741/15 +f 374/743/16 370/1633/16 371/744/16 +f 389/746/15 406/1634/15 405/747/15 +f 382/749/16 399/1635/16 398/750/16 +f 376/752/17 369/1636/17 370/753/17 +f 390/754/16 407/1637/16 406/755/16 +f 384/757/17 400/1638/17 399/758/17 +f 375/693/18 372/691/18 369/759/18 +f 392/761/17 408/1639/17 407/762/17 +f 383/699/18 397/712/18 400/763/18 +f 377/765/15 394/1640/15 393/766/15 +f 391/705/18 405/718/18 408/768/18 +f 413/770/15 415/773/15 411/771/15 +f 415/773/18 416/779/18 412/774/18 +f 414/776/16 413/770/16 409/777/16 +f 416/779/17 414/776/17 410/780/17 +f 413/770/13 414/776/13 416/779/13 +f 421/782/15 423/785/15 419/783/15 +f 423/785/18 424/791/18 420/786/18 +f 422/788/16 421/782/16 417/789/16 +f 424/791/17 422/788/17 418/792/17 +f 421/782/13 422/788/13 424/791/13 +f 429/794/15 431/797/15 427/795/15 +f 431/797/18 432/803/18 428/798/18 +f 430/800/16 429/794/16 425/801/16 +f 432/803/17 430/800/17 426/804/17 +f 429/794/13 430/800/13 432/803/13 +f 437/806/15 439/809/15 435/807/15 +f 439/809/18 440/815/18 436/810/18 +f 438/812/16 437/806/16 433/813/16 +f 440/815/17 438/812/17 434/816/17 +f 437/806/13 438/812/13 440/815/13 +f 445/818/15 447/821/15 443/819/15 +f 447/821/18 448/827/18 444/822/18 +f 446/824/16 445/818/16 441/825/16 +f 448/827/17 446/824/17 442/828/17 +f 445/818/13 446/824/13 448/827/13 +f 453/830/15 455/833/15 451/831/15 +f 455/833/18 456/839/18 452/834/18 +f 454/836/16 453/830/16 449/837/16 +f 456/839/17 454/836/17 450/840/17 +f 453/830/13 454/836/13 456/839/13 +f 461/842/15 463/845/15 459/843/15 +f 463/845/18 464/851/18 460/846/18 +f 462/848/16 461/842/16 457/849/16 +f 464/851/17 462/848/17 458/852/17 +f 461/842/13 462/848/13 464/851/13 +f 469/854/15 471/857/15 467/855/15 +f 471/857/18 472/863/18 468/858/18 +f 470/860/16 469/854/16 465/861/16 +f 472/863/17 470/860/17 466/864/17 +f 469/854/13 470/860/13 472/863/13 +f 477/866/15 479/869/15 475/867/15 +f 479/869/18 480/875/18 476/870/18 +f 478/872/16 477/866/16 473/873/16 +f 480/875/17 478/872/17 474/876/17 +f 477/866/13 478/872/13 480/875/13 +f 485/878/15 487/881/15 483/879/15 +f 487/881/18 488/887/18 484/882/18 +f 486/884/16 485/878/16 481/885/16 +f 488/887/17 486/884/17 482/888/17 +f 485/878/13 486/884/13 488/887/13 +f 491/890/14 515/907/14 516/182/14 +f 490/892/14 514/908/14 515/893/14 +f 489/895/14 513/910/14 514/896/14 +f 498/898/13 518/911/13 517/899/13 +f 499/901/13 519/909/13 518/902/13 +f 500/904/13 520/477/13 519/905/13 +f 515/907/17 519/905/17 520/477/17 +f 514/908/17 518/902/17 519/909/17 +f 513/910/17 517/899/17 518/911/17 +f 495/912/14 507/1641/14 508/913/14 +f 494/915/14 506/1642/14 507/916/14 +f 493/918/14 505/944/14 506/919/14 +f 502/921/13 510/937/13 509/922/13 +f 503/924/13 511/934/13 510/925/13 +f 504/927/13 512/931/13 511/928/13 +f 507/930/15 511/928/15 512/931/15 +f 506/933/15 510/925/15 511/934/15 +f 505/936/15 509/922/15 510/937/15 +f 500/904/15 499/906/15 491/939/15 +f 499/901/15 498/903/15 490/940/15 +f 498/898/15 497/900/15 489/942/15 +f 504/927/17 503/929/17 495/912/17 +f 503/924/17 502/926/17 494/915/17 +f 502/921/17 501/923/17 493/918/17 +f 493/918/17 501/923/17 80/177/17 +f 80/177/13 501/923/13 509/922/13 +f 509/922/15 505/936/15 82/370/15 +f 505/944/14 493/918/14 76/347/14 +f 517/899/17 513/910/17 254/617/17 +f 245/488/13 497/900/13 517/899/13 +f 489/942/15 497/900/15 245/488/15 +f 513/910/14 489/895/14 241/618/14 +f 246/660/17 504/927/17 496/914/17 +f 512/931/13 504/927/13 246/660/13 +f 249/474/15 508/932/15 512/931/15 +f 242/469/14 496/914/14 508/913/14 +f 571/946/19 567/975/19 568/947/19 +f 605/949/19 606/1030/19 539/950/19 +f 605/952/19 573/1121/19 574/953/19 +f 539/955/20 547/993/20 548/956/20 +f 536/958/14 540/957/14 548/956/14 +f 530/960/14 529/1052/14 531/961/14 +f 537/963/14 565/1643/14 568/964/14 +f 532/966/21 527/1644/21 528/967/21 +f 534/969/19 533/965/19 568/964/19 +f 615/971/22 616/978/22 524/972/22 +f 571/946/13 575/1039/13 566/974/13 +f 538/976/13 534/969/13 567/970/13 +f 616/978/21 614/1048/21 522/979/21 +f 542/981/23 550/1011/23 549/982/23 +f 545/984/24 553/1645/24 554/985/24 +f 534/987/13 538/998/13 546/988/13 +f 536/990/25 544/1646/25 543/991/25 +f 535/992/13 543/991/13 547/993/13 +f 533/994/14 541/999/14 545/995/14 +f 537/997/25 545/1647/25 546/988/25 +f 534/987/20 542/989/20 541/999/20 +f 549/1000/14 557/1022/14 561/1001/14 +f 551/1003/13 559/1029/13 563/1004/13 +f 544/1006/14 548/1010/14 556/1007/14 +f 547/1009/23 555/1015/23 556/1007/23 +f 542/981/13 546/986/13 554/985/13 +f 544/1012/24 552/1648/24 551/1013/24 +f 543/1014/13 551/1013/13 555/1015/13 +f 541/983/14 549/982/14 553/1016/14 +f 553/1018/26 561/1649/26 562/1019/26 +f 550/1021/27 558/1027/27 557/1022/27 +f 552/1023/14 556/1026/14 564/1024/14 +f 555/1005/27 563/1004/27 564/1024/27 +f 550/1021/13 554/1020/13 562/1019/13 +f 552/1028/26 560/1650/26 559/1029/26 +f 606/1030/13 608/1383/13 535/1031/13 +f 575/1032/25 583/1067/25 584/1033/25 +f 572/1035/14 576/1651/14 584/1036/14 +f 576/1038/28 565/1652/28 566/974/28 +f 537/1040/28 538/976/28 566/977/28 +f 529/1042/29 525/1653/29 526/1043/29 +f 565/1044/14 576/1654/14 572/948/14 +f 526/1045/13 525/1051/13 528/1046/13 +f 614/1048/30 613/1122/30 521/1049/30 +f 530/960/30 528/1046/30 525/1051/30 +f 531/1053/22 526/1655/22 527/1054/22 +f 578/1056/24 586/1086/24 585/1057/24 +f 581/1059/23 589/1091/23 590/1060/23 +f 570/1062/13 574/1071/13 582/1063/13 +f 572/1035/20 580/1037/20 579/1065/20 +f 571/1066/13 579/1065/13 583/1067/13 +f 569/1068/14 577/1656/14 581/1069/14 +f 573/1070/20 581/1069/20 582/1063/20 +f 570/1062/25 578/1064/25 577/1072/25 +f 589/1074/14 585/1657/14 593/1075/14 +f 587/1077/13 595/1103/13 599/1078/13 +f 580/1080/14 584/1658/14 592/1081/14 +f 583/1083/24 591/1089/24 592/1084/24 +f 578/1056/13 582/1061/13 590/1060/13 +f 580/1080/23 588/1082/23 587/1087/23 +f 579/1088/13 587/1087/13 591/1089/13 +f 577/1090/14 585/1659/14 589/1091/14 +f 589/1074/27 597/1076/27 598/1092/27 +f 586/1094/26 594/1102/26 593/1095/26 +f 588/1097/14 592/1660/14 600/1098/14 +f 591/1079/26 599/1078/26 600/1100/26 +f 590/1093/13 598/1092/13 594/1102/13 +f 588/1097/27 596/1099/27 595/1103/27 +f 570/1104/28 569/1661/28 607/1105/28 +f 602/1107/13 604/1117/13 603/1108/13 +f 574/953/13 570/1104/13 608/1106/13 +f 601/1109/29 603/1108/29 611/1110/29 +f 603/1108/22 604/1117/22 612/1112/22 +f 602/1107/30 601/1109/30 609/1114/30 +f 536/1116/14 607/1662/14 605/949/14 +f 604/1117/21 602/1107/21 610/1118/21 +f 607/1120/14 569/1663/14 573/1121/14 +f 614/1048/13 616/978/13 615/971/13 +f 613/1122/29 615/971/29 523/1123/29 +f 618/1125/13 617/1178/13 620/1126/13 +f 623/1128/14 624/1179/14 622/1129/14 +f 627/1131/14 628/1155/14 626/1132/14 +f 631/1134/14 632/1183/14 630/1135/14 +f 635/1137/14 636/1188/14 634/1138/14 +f 639/1140/13 640/1154/13 637/1141/13 +f 643/1143/13 644/1182/13 641/1144/13 +f 647/1146/13 648/1187/13 645/1147/13 +f 626/1149/16 639/1664/16 638/1150/16 +f 628/1152/17 640/1665/17 639/1153/17 +f 627/1131/18 637/1141/18 640/1154/18 +f 621/1156/15 619/1666/15 620/1157/15 +f 629/1159/15 642/1667/15 641/1160/15 +f 622/1162/16 618/1668/16 619/1163/16 +f 633/1165/15 646/1669/15 645/1166/15 +f 630/1168/16 643/1670/16 642/1169/16 +f 624/1171/17 617/1671/17 618/1172/17 +f 634/1173/16 647/1672/16 646/1174/16 +f 632/1176/17 644/1673/17 643/1177/17 +f 623/1128/18 620/1126/18 617/1178/18 +f 636/1180/17 648/1674/17 647/1181/17 +f 631/1134/18 641/1144/18 644/1182/18 +f 625/1184/15 638/1675/15 637/1185/15 +f 635/1137/18 645/1147/18 648/1187/18 +f 729/1189/15 651/1312/15 649/1190/15 +f 652/1192/13 654/1350/13 744/1193/13 +f 650/1195/18 653/1676/18 654/1196/18 +f 655/1198/17 656/1311/17 749/1199/17 +f 649/1201/14 655/1198/14 745/1200/14 +f 651/1203/18 656/1677/18 655/1204/18 +f 661/1206/15 663/1209/15 659/1207/15 +f 663/1209/18 664/1215/18 660/1210/18 +f 662/1212/16 661/1206/16 657/1213/16 +f 664/1215/17 662/1212/17 658/1216/17 +f 661/1206/13 662/1212/13 664/1215/13 +f 669/1218/15 671/1221/15 667/1219/15 +f 671/1221/18 672/1227/18 668/1222/18 +f 670/1224/16 669/1218/16 665/1225/16 +f 672/1227/17 670/1224/17 666/1228/17 +f 669/1218/13 670/1224/13 672/1227/13 +f 677/1230/15 679/1233/15 675/1231/15 +f 679/1233/18 680/1239/18 676/1234/18 +f 678/1236/16 677/1230/16 673/1237/16 +f 680/1239/17 678/1236/17 674/1240/17 +f 677/1230/13 678/1236/13 680/1239/13 +f 685/1242/15 687/1245/15 683/1243/15 +f 687/1245/18 688/1251/18 684/1246/18 +f 686/1248/16 685/1242/16 681/1249/16 +f 688/1251/17 686/1248/17 682/1252/17 +f 685/1242/13 686/1248/13 688/1251/13 +f 693/1254/15 695/1257/15 691/1255/15 +f 695/1257/18 696/1263/18 692/1258/18 +f 694/1260/16 693/1254/16 689/1261/16 +f 696/1263/17 694/1260/17 690/1264/17 +f 693/1254/13 694/1260/13 696/1263/13 +f 701/1266/15 703/1269/15 699/1267/15 +f 703/1269/18 704/1275/18 700/1270/18 +f 702/1272/16 701/1266/16 697/1273/16 +f 704/1275/17 702/1272/17 698/1276/17 +f 701/1266/13 702/1272/13 704/1275/13 +f 709/1278/15 711/1281/15 707/1279/15 +f 711/1281/18 712/1287/18 708/1282/18 +f 710/1284/16 709/1278/16 705/1285/16 +f 712/1287/17 710/1284/17 706/1288/17 +f 709/1278/13 710/1284/13 712/1287/13 +f 717/1290/15 719/1293/15 715/1291/15 +f 719/1293/18 720/1299/18 716/1294/18 +f 718/1296/16 717/1290/16 713/1297/16 +f 720/1299/17 718/1296/17 714/1300/17 +f 717/1290/13 718/1296/13 720/1299/13 +f 723/1302/14 747/1322/14 748/1303/14 +f 722/1305/14 746/1324/14 747/1306/14 +f 721/1308/14 745/1326/14 746/1309/14 +f 729/1189/13 749/1199/13 656/1311/13 +f 730/1313/13 750/1327/13 749/1314/13 +f 731/1316/13 751/1325/13 750/1317/13 +f 732/1319/13 752/1323/13 751/1320/13 +f 747/1322/17 751/1320/17 752/1323/17 +f 746/1324/17 750/1317/17 751/1325/17 +f 745/1326/17 749/1314/17 750/1327/17 +f 728/1328/14 740/1678/14 653/1329/14 +f 727/1331/14 739/1679/14 740/1332/14 +f 726/1334/14 738/1680/14 739/1335/14 +f 725/1337/14 737/1681/14 738/1338/14 +f 734/1340/13 742/1359/13 741/1341/13 +f 735/1343/13 743/1356/13 742/1344/13 +f 736/1346/13 744/1353/13 743/1347/13 +f 740/1349/15 744/1193/15 654/1350/15 +f 739/1352/15 743/1347/15 744/1353/15 +f 738/1355/15 742/1344/15 743/1356/15 +f 737/1358/15 741/1341/15 742/1359/15 +f 732/1319/15 731/1321/15 723/1361/15 +f 731/1316/15 730/1318/15 722/1363/15 +f 730/1313/15 729/1315/15 721/1365/15 +f 652/1192/17 736/1194/17 728/1328/17 +f 736/1346/17 735/1348/17 727/1331/17 +f 735/1343/17 734/1345/17 726/1334/17 +f 734/1340/17 733/1342/17 725/1337/17 +f 741/1367/15 737/1682/15 600/1368/15 +f 595/1370/13 733/1683/13 741/1367/13 +f 725/1371/17 733/1683/17 595/1370/17 +f 737/1373/14 725/1371/14 596/1372/14 +f 594/1375/15 732/1684/15 724/1376/15 +f 752/1378/13 732/1684/13 594/1375/13 +f 597/1380/17 748/1382/17 752/1378/17 +f 597/1380/14 593/1685/14 724/1381/14 +f 608/1383/28 607/1686/28 536/1384/28 +f 762/1385/14 761/1406/14 763/1386/14 +f 764/1388/25 759/1687/25 760/1389/25 +f 775/1391/31 776/1394/31 756/1392/31 +f 776/1394/25 774/1402/25 754/1395/25 +f 761/1397/20 757/1688/20 758/1398/20 +f 758/1399/13 757/1405/13 760/1400/13 +f 774/1402/32 773/1422/32 753/1403/32 +f 762/1385/32 760/1400/32 757/1405/32 +f 763/1407/31 758/1689/31 759/1408/31 +f 766/1410/13 768/1419/13 767/1411/13 +f 765/1412/20 767/1411/20 771/1413/20 +f 767/1411/31 768/1419/31 772/1415/31 +f 766/1410/32 765/1412/32 769/1417/32 +f 768/1419/25 766/1410/25 770/1420/25 +f 774/1402/13 776/1394/13 775/1391/13 +f 773/1422/20 775/1391/20 755/1423/20 +f 788/1425/14 786/1445/14 785/1426/14 +f 788/1428/24 783/1690/24 784/1429/24 +f 799/1431/33 800/1434/33 780/1432/33 +f 800/1434/24 798/1442/24 778/1435/24 +f 785/1437/23 781/1691/23 782/1438/23 +f 783/1439/13 782/1692/13 781/1440/13 +f 798/1442/34 797/1461/34 777/1443/34 +f 786/1445/34 784/1441/34 781/1440/34 +f 787/1446/33 782/1693/33 783/1447/33 +f 790/1449/13 792/1458/13 791/1450/13 +f 789/1451/23 791/1450/23 795/1452/23 +f 791/1450/33 792/1458/33 796/1454/33 +f 790/1449/34 789/1451/34 793/1456/34 +f 792/1458/24 790/1449/24 794/1459/24 +f 798/1442/13 800/1434/13 799/1431/13 +f 797/1461/23 799/1431/23 779/1462/23 +f 810/1464/14 809/1485/14 811/1465/14 +f 812/1467/26 807/1694/26 808/1468/26 +f 823/1470/35 824/1473/35 804/1471/35 +f 824/1473/26 822/1481/26 802/1474/26 +f 809/1476/27 805/1695/27 806/1477/27 +f 806/1478/13 805/1484/13 808/1479/13 +f 822/1481/36 821/1501/36 801/1482/36 +f 810/1464/36 808/1479/36 805/1484/36 +f 811/1486/35 806/1696/35 807/1487/35 +f 816/1489/13 815/1494/13 813/1490/13 +f 813/1490/27 815/1494/27 819/1492/27 +f 815/1494/35 816/1489/35 820/1495/35 +f 814/1491/36 813/1490/36 817/1497/36 +f 816/1489/26 814/1491/26 818/1499/26 +f 822/1481/13 824/1473/13 823/1470/13 +f 821/1501/27 823/1470/27 803/1502/27 +f 836/1504/14 834/1524/14 833/1505/14 +f 836/1507/21 831/1697/21 832/1508/21 +f 847/1510/22 848/1513/22 828/1511/22 +f 848/1513/21 846/1521/21 826/1514/21 +f 833/1516/29 829/1698/29 830/1517/29 +f 831/1518/13 830/1699/13 829/1519/13 +f 846/1521/30 845/1540/30 825/1522/30 +f 834/1524/30 832/1520/30 829/1519/30 +f 835/1525/22 830/1700/22 831/1526/22 +f 838/1528/13 840/1537/13 839/1529/13 +f 837/1530/29 839/1529/29 843/1531/29 +f 839/1529/22 840/1537/22 844/1533/22 +f 838/1528/30 837/1530/30 841/1535/30 +f 840/1537/21 838/1528/21 842/1538/21 +f 846/1521/13 848/1513/13 847/1510/13 +f 845/1540/29 847/1510/29 827/1541/29 +f 851/1543/14 852/1558/14 850/1544/14 +f 855/1546/13 856/1557/13 853/1547/13 +f 849/1549/15 854/1701/15 853/1550/15 +f 850/1552/16 855/1702/16 854/1553/16 +f 852/1555/17 856/1703/17 855/1556/17 +f 851/1543/18 853/1547/18 856/1557/18 +f 861/1559/15 863/1562/15 859/1560/15 +f 863/1562/18 864/1568/18 860/1563/18 +f 862/1565/16 861/1559/16 857/1566/16 +f 864/1568/17 862/1565/17 858/1569/17 +f 861/1559/13 862/1565/13 864/1568/13 +f 869/1571/15 871/1574/15 867/1572/15 +f 871/1574/18 872/1580/18 868/1575/18 +f 870/1577/16 869/1571/16 865/1578/16 +f 872/1580/17 870/1577/17 866/1581/17 +f 869/1571/13 870/1577/13 872/1580/13 diff --git a/src/main/resources/assets/hbm/textures/blocks/rail_switch_sign.png b/src/main/resources/assets/hbm/textures/blocks/rail_switch_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..29c3e3cf2223d908039164ef816d30b8cb15278f GIT binary patch literal 583 zcmV-N0=WH&P)S5dIRR*V;o_LSI2d#FvmBeFMFlON&@MN=4dBA3&uK z;H!v;_Z-7oq3sjsq1o+ZcW3hp`avL>pUgM2lgtDcSMd-25C`-j5`6$bDp%ICx~F;* zb^JrqnPNJeV>+C(fr?}tsBLH}g%ALMm&>J=J)bWjgwQ%4luac1IUmkHq>Nm_0U(Hg zcreb{xH6*t)6;$BPL7W(f;j>d@n8(3?(D8J5;Umge>Qf?InufbHM2xn5bJa&4*;O! zexVQ|A3Or$h#`{#lebZxfWo3P0|3MrJLM{vlrpD}2jwz1VG*beu5tyidY}x{0SWC5LquHiwmbIB;`_y_-L9Jhhjr$s=Y?{06b z1bc^FtT$VHt-jmc2RQT&y8wXoW^3uZ`v3>iHWK|x{!Ri4Rp)t;4%lVx${xsiz?|pi zy*ba#&&l_B-akBgd%`&jXh05TPgLy-i$Ie(&}t8qfl0RPzStUpHc{(GRHX@vpexYi zC9O1}kA!cY11&V6b00A7efvO@CS>=4vh&<0F9Ur9+=ip>eH&1d9>`U|7le~F#V-hp VA(Qg@MK%Bc002ovPDHLkV1o1M|GWSI literal 0 HcmV?d00001 From a7c3273b08b470d12490701a514e3be3d95ed592 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 29 Dec 2023 21:58:30 +0100 Subject: [PATCH 194/207] whatever garbage --- src/main/java/com/hbm/handler/FuelHandler.java | 4 ++-- .../hbm/inventory/recipes/ShredderRecipes.java | 8 +++++++- .../hbm/textures/blocks/stone_keyhole.png | Bin 455 -> 487 bytes 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/handler/FuelHandler.java b/src/main/java/com/hbm/handler/FuelHandler.java index 18442a5a2..b89b86d58 100644 --- a/src/main/java/com/hbm/handler/FuelHandler.java +++ b/src/main/java/com/hbm/handler/FuelHandler.java @@ -29,8 +29,8 @@ public class FuelHandler implements IFuelHandler { if(fuel.getItem() == ModItems.biomass) return single * 2; if(fuel.getItem() == ModItems.biomass_compressed) return single * 4; if(fuel.getItem() == ModItems.powder_coal) return single * 8; - if(fuel.getItem() == ModItems.scrap) return single / 2; - if(fuel.getItem() == ModItems.dust) return single / 2; + if(fuel.getItem() == ModItems.scrap) return single / 4; + if(fuel.getItem() == ModItems.dust) return single / 8; if(fuel.getItem() == Item.getItemFromBlock(ModBlocks.block_scrap)) return single * 2; if(fuel.getItem() == ModItems.powder_fire) return 6400; if(fuel.getItem() == ModItems.lignite) return 1200; diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index aee7d21ae..99e574056 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -79,7 +79,11 @@ public class ShredderRecipes extends SerializableRecipe { } } - if(name.length() > 3 && name.substring(0, 4).equals("dust")) { + if(name.length() > 7 && name.substring(0, 8).equals("dustTiny")) { + for(ItemStack stack : matches) { + putIfValid(stack, new ItemStack(ModItems.dust_tiny), name); + } + } else if(name.length() > 3 && name.substring(0, 4).equals("dust")) { for(ItemStack stack : matches) { putIfValid(stack, new ItemStack(ModItems.dust), name); } @@ -132,6 +136,7 @@ public class ShredderRecipes extends SerializableRecipe { /* Primary recipes */ ShredderRecipes.setRecipe(ModItems.scrap, new ItemStack(ModItems.dust)); ShredderRecipes.setRecipe(ModItems.dust, new ItemStack(ModItems.dust)); + ShredderRecipes.setRecipe(ModItems.dust_tiny, new ItemStack(ModItems.dust_tiny)); ShredderRecipes.setRecipe(Blocks.glowstone, new ItemStack(Items.glowstone_dust, 4)); ShredderRecipes.setRecipe(new ItemStack(Blocks.quartz_block, 1, 0), new ItemStack(ModItems.powder_quartz, 4)); ShredderRecipes.setRecipe(new ItemStack(Blocks.quartz_block, 1, 1), new ItemStack(ModItems.powder_quartz, 4)); @@ -199,6 +204,7 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(Items.reeds, new ItemStack(Items.sugar, 3)); ShredderRecipes.setRecipe(Items.apple, new ItemStack(Items.sugar, 1)); ShredderRecipes.setRecipe(Items.carrot, new ItemStack(Items.sugar, 1)); + ShredderRecipes.setRecipe(ModItems.can_empty, new ItemStack(ModItems.powder_aluminium, 2)); List logs = OreDictionary.getOres("logWood"); List planks = OreDictionary.getOres("plankWood"); diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_keyhole.png b/src/main/resources/assets/hbm/textures/blocks/stone_keyhole.png index 394785a63409548bc65a99b4d8ce9627d17faa29..b083e0730275554380af2471f2a280d99ca5989d 100644 GIT binary patch delta 445 zcmV;u0Yd)A1Lp&fG=H8+L_t(Ijg6BrYg9oLg}=8x(##ZNHH3$f?m-Hx6w6j=k|v~7 zkd%RtGWiAT4-mArv9j7y0z#Ut77MFDgy|i^6vDupfhEOi@p8xPx+b1#ihIvJ_ntG= zcs%}_bv6-1)ka(QXf1)*4t*+XktL82Nj3^sAu8qYwa5~7f4KW#19!ht n!dI`#Pbn2Eg;?JAYlZkX_7C3a7P~%)00000NkvXXu0mjfc&OIR delta 413 zcmV;O0b>5=1IGi9G=F|cL_t(Ijct>$ZsRZzM4ti$h)f9}&VUGmO@J%d+r_-sNUoIDRyB(rd{2ODw zW*{pJA>f>227g|wosZ+l`{BU-?t8Vc-MRedoQr>8<6o@A7`H(Zu(g&SPfx{0&bb6h z<|WqK5CX=S5{#4*&(p+m+dvuSH1YTLU&p*P#(c|oz5iht%9-@Zw+yjf&CNr3JmK>b zfc52t{${sU(Tb;NN5ElOfGxg>Yu`xZB00000NkvXX Hu0mjfTinPB From 6594a80c70891040169fc712a6f0e38c9607ed94 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 30 Dec 2023 20:04:35 +0100 Subject: [PATCH 195/207] coupled trains work again yay (please kill me) --- .../hbm/entity/train/EntityRailCarBase.java | 63 +++++++------------ .../inventory/recipes/AssemblerRecipes.java | 6 +- 2 files changed, 27 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index ee256de43..aff0eef7b 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -14,6 +14,7 @@ import com.hbm.blocks.rail.IRailNTM.TrackGauge; import com.hbm.items.ModItems; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.ParticleUtil; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -356,11 +357,9 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { ltu.moveTrainByApproach(speed); } - if(ltu.trains.length != 1) { - //ltu.pushForce *= 0.95; - ltu.pushForce = 0; - ltu.collideTrain(speed); - } + //ltu.pushForce *= 0.95; + ltu.pushForce = 0; + ltu.collideTrain(speed); } } @@ -746,24 +745,37 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { return totalSpeed; } + /* + * This method has no rhyme or reason behind it. Nothing of this was calculated, instead it was an old system that worked with older constraints, + * which was retrofitted with a slightly newer system and beaten into submission for two consecutive hours until it yielded the results it should. + * Booleans are flipped back and forth based on seemingly random conditions, numbers are inverted and then inverted again and finally smashed into + * the rail system in the hopes that it would make trains work. My apologies extend towards Bob in the future who will inevitably have to rewrite this + * abhorrence because of some constraint change which will cause the entire system to break. Part of me wishes to never touch the train code ever again, + * to abandon the idea and to ban the annoying people on Discord who keep asking about it. Another part wants me to slam my head against this project + * until either it or my skull gives way; and considering I got this far, it appears as if this side is the one that is winning. + */ /** Determines the "front" wagon based on the movement and moves it, then moves all other wagons towards that */ public void moveTrainByApproach(double speed) { - boolean forward = speed < 0; - speed = Math.abs(speed); + boolean forward = speed > 0; EntityRailCarBase previous = null; EntityRailCarBase first = this.trains[0]; + boolean order = forward ^ first.getCouplingFrom(null) == TrainCoupling.BACK; - for(int i = !forward ? 0 : this.trains.length - 1; !forward ? i < this.trains.length : i >= 0; i += !forward ? 1 : -1) { + for(int i = order ? 0 : this.trains.length - 1; order ? i < this.trains.length : i >= 0; i += order ? 1 : -1) { EntityRailCarBase current = this.trains[i]; if(previous == null) { + if(first == current) speed *= -1; + + ParticleUtil.spawnGasFlame(first.worldObj, current.posX, current.posY + 2, current.posZ, 0, 0.1, 0); + boolean inReverse = first.getCouplingFrom(null) == current.getCouplingFrom(null); int sigNum = inReverse ? 1 : -1; BlockPos anchor = current.getCurrentAnchorPos(); - /*Vec3 frontPos = current.getRelPosAlongRail(anchor, current.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); + Vec3 frontPos = current.getRelPosAlongRail(anchor, (speed + current.getLengthSpan()) * -sigNum, new MoveContext(RailCheckType.FRONT, current.getCollisionSpan() - current.getLengthSpan())); if(frontPos == null) { current.derail(); @@ -771,43 +783,16 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { return; } else { anchor = current.getCurrentAnchorPos(); //reset origin to new position - Vec3 corePos = current.getRelPosAlongRail(anchor, speed * sigNum, new MoveContext(RailCheckType.CORE)); + Vec3 corePos = current.getRelPosAlongRail(anchor, speed * -sigNum, new MoveContext(RailCheckType.CORE, 0)); current.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); - Vec3 backPos = current.getRelPosAlongRail(anchor, -current.getLengthSpan(), new MoveContext(RailCheckType.BACK)); + Vec3 backPos = current.getRelPosAlongRail(anchor, (speed - current.getLengthSpan()) * -sigNum, new MoveContext(RailCheckType.BACK, current.getCollisionSpan() - current.getLengthSpan())); if(frontPos == null || backPos == null) { current.derail(); this.dissolveTrain(); return; } else { - setRenderPos(current, frontPos, backPos); - } - }*/ - - Pair[] checks; - double dist = speed * sigNum; - - if(forward) { - checks = new Pair[] { - new Pair(dist + current.getLengthSpan(), RailCheckType.FRONT), - new Pair(dist, RailCheckType.CORE), - new Pair(dist - current.getLengthSpan(), RailCheckType.BACK) - }; - } else { - checks = new Pair[] { - new Pair(dist - current.getLengthSpan(), RailCheckType.BACK), - new Pair(dist, RailCheckType.CORE), - new Pair(dist + current.getLengthSpan(), RailCheckType.FRONT) - }; - } - - double brake = 0; - - for(Pair check : checks) { - MoveContext ctx = new MoveContext(check.getValue(), current.getCollisionSpan() - current.getLengthSpan()); - current.getRelPosAlongRail(anchor, check.getKey() - (brake * Math.signum(check.getKey())), ctx); - if(ctx.collision) { - brake += ctx.overshoot; + setRenderPos(current, inReverse ? backPos : frontPos, inReverse ? frontPos : backPos); } } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 33b9a227b..bb377f685 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -243,9 +243,9 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.upgrade_fortune_1, 1), new AStack[] {new ComparableStack(ModItems.upgrade_template, 1), new OreDictStack(DIAMOND.dust(), 4), new OreDictStack(IRON.dust(), 6), new ComparableStack(ModItems.wire_red_copper, 4), },200); makeRecipe(new ComparableStack(ModItems.upgrade_fortune_2, 1), new AStack[] {new ComparableStack(ModItems.upgrade_fortune_1, 1), new OreDictStack(DIAMOND.dust(), 2), new OreDictStack(IRON.dust(), 4), new ComparableStack(ModItems.circuit_red_copper, 4), new ComparableStack(ModItems.wire_red_copper, 4), new OreDictStack(ANY_PLASTIC.ingot(), 2), },300); makeRecipe(new ComparableStack(ModItems.upgrade_fortune_3, 1), new AStack[] {new ComparableStack(ModItems.upgrade_fortune_2, 1), new OreDictStack(DIAMOND.dust(), 2), new OreDictStack(IRON.dust(), 6), new OreDictStack(DESH.ingot(), 4), },500); - makeRecipe(new ComparableStack(ModItems.upgrade_afterburn_1, 1), new AStack[] {new ComparableStack(ModItems.upgrade_template, 1), new OreDictStack(POLYMER.dust(), 4), new OreDictStack(W.dust(), 6), new ComparableStack(ModItems.wire_red_copper, 4), },200); - makeRecipe(new ComparableStack(ModItems.upgrade_afterburn_2, 1), new AStack[] {new ComparableStack(ModItems.upgrade_afterburn_1, 1), new OreDictStack(POLYMER.dust(), 2), new OreDictStack(W.dust(), 4), new ComparableStack(ModItems.circuit_red_copper, 4), new ComparableStack(ModItems.wire_red_copper, 4), new OreDictStack(ANY_PLASTIC.ingot(), 2), },300); - makeRecipe(new ComparableStack(ModItems.upgrade_afterburn_3, 1), new AStack[] {new ComparableStack(ModItems.upgrade_afterburn_2, 1), new OreDictStack(POLYMER.dust(), 2), new OreDictStack(W.dust(), 6), new OreDictStack(DESH.ingot(), 4), },500); + makeRecipe(new ComparableStack(ModItems.upgrade_afterburn_1, 1), new AStack[] {new ComparableStack(ModItems.upgrade_template, 1), new OreDictStack(ANY_PLASTIC.dust(), 4), new OreDictStack(W.dust(), 6), new ComparableStack(ModItems.wire_red_copper, 4), },200); + makeRecipe(new ComparableStack(ModItems.upgrade_afterburn_2, 1), new AStack[] {new ComparableStack(ModItems.upgrade_afterburn_1, 1), new OreDictStack(ANY_PLASTIC.dust(), 2), new OreDictStack(W.dust(), 4), new ComparableStack(ModItems.circuit_red_copper, 4), new ComparableStack(ModItems.wire_red_copper, 4), new OreDictStack(ANY_PLASTIC.ingot(), 2), },300); + makeRecipe(new ComparableStack(ModItems.upgrade_afterburn_3, 1), new AStack[] {new ComparableStack(ModItems.upgrade_afterburn_2, 1), new OreDictStack(ANY_PLASTIC.dust(), 2), new OreDictStack(W.dust(), 6), new OreDictStack(DESH.ingot(), 4), },500); makeRecipe(new ComparableStack(ModItems.upgrade_radius, 1), new AStack[] {new ComparableStack(ModItems.upgrade_template, 1), new ComparableStack(Items.glowstone_dust, 6), new OreDictStack(DIAMOND.dust(), 4), },500); makeRecipe(new ComparableStack(ModItems.upgrade_health, 1), new AStack[] {new ComparableStack(ModItems.upgrade_template, 1), new ComparableStack(Items.glowstone_dust, 6), new OreDictStack(TI.dust(), 4), },500); makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new AStack[] {new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(DESH.ingot(), 8), new ComparableStack(ModItems.powder_power, 16), new ComparableStack(ModItems.crystal_lithium, 4), new ComparableStack(ModItems.circuit_schrabidium, 1), }, 200); From 11f4b55a9dddda0244ed70e620868e40d3a616ca Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 30 Dec 2023 22:43:37 +0100 Subject: [PATCH 196/207] balls (reverb) --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../rail/RailStandardSwitchFlipped.java | 235 + .../hbm/entity/train/EntityRailCarBase.java | 35 +- .../com/hbm/main/ModEventHandlerClient.java | 5 + .../java/com/hbm/main/ResourceManager.java | 1 + .../blocks/rail_standard_switch_flipped.obj | 3933 +++++++++++++++++ .../blocks/rail_switch_sign_flipped.png | Bin 0 -> 582 bytes 7 files changed, 4204 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java create mode 100644 src/main/resources/assets/hbm/models/blocks/rail_standard_switch_flipped.obj create mode 100644 src/main/resources/assets/hbm/textures/blocks/rail_switch_sign_flipped.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1b69835f3..7c656c712 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1175,6 +1175,7 @@ public class ModBlocks { public static Block rail_large_ramp; public static Block rail_large_buffer; public static Block rail_large_switch; + public static Block rail_large_switch_flipped; public static Block statue_elb; public static Block statue_elb_g; @@ -2253,6 +2254,7 @@ public class ModBlocks { rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); @@ -3554,6 +3556,7 @@ public class ModBlocks { register(rail_large_ramp); register(rail_large_buffer); register(rail_large_switch); + register(rail_large_switch_flipped); //Crate GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java b/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java new file mode 100644 index 000000000..a27d8d04c --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java @@ -0,0 +1,235 @@ +package com.hbm.blocks.rail; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.rail.RailStandardSwitch.TileEntityRailSwitch; +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardSwitchFlipped extends BlockRailWaypointSystem implements IRenderRail { + + @SideOnly(Side.CLIENT) private IIcon iconSign; + + public RailStandardSwitchFlipped() { + super(Material.iron); + + RailDef main = new RailDef("main"); + RailDef side = new RailDef("side"); + railDefs.add(main); + railDefs.add(side); + + main.nodes.add(Vec3.createVectorHelper(-8.5, 0.1875, 0.5)); + main.nodes.add(Vec3.createVectorHelper(-7.5, 0.1875, 0.5)); + main.nodes.add(Vec3.createVectorHelper(6.5, 0.1875, 0.5)); + main.nodes.add(Vec3.createVectorHelper(7.5, 0.1875, 0.5)); + main.nodes.add(Vec3.createVectorHelper(8.5, 0.1875, 0.5)); + + side.nodes.add(Vec3.createVectorHelper(-8.5, 0.1875, -3.5)); + side.nodes.add(Vec3.createVectorHelper(-7.5, 0.1875, -3.5)); + side.nodes.add(Vec3.createVectorHelper(-6.5, 0.1875, -3.5)); + side.nodes.add(Vec3.createVectorHelper(-5.5, 0.1875, -3.5)); + side.nodes.add(Vec3.createVectorHelper(-4.5, 0.1875, -3.5)); + side.nodes.add(Vec3.createVectorHelper(-3.5, 0.1875, -3.5)); + side.nodes.add(Vec3.createVectorHelper(-2.5, 0.1875, -3.5)); + side.nodes.add(Vec3.createVectorHelper(-1.5, 0.1875, -3.5)); + side.nodes.add(Vec3.createVectorHelper(-0.5, 0.1875, -3.25)); + side.nodes.add(Vec3.createVectorHelper(0.5, 0.1875, -2.9375)); + side.nodes.add(Vec3.createVectorHelper(1.5, 0.1875, -2.375)); + side.nodes.add(Vec3.createVectorHelper(2.5, 0.1875, -1.4625)); + side.nodes.add(Vec3.createVectorHelper(3.5, 0.1875, -0.75)); + side.nodes.add(Vec3.createVectorHelper(4.5, 0.1875, -0.1875)); + side.nodes.add(Vec3.createVectorHelper(5.5, 0.1875, 0.175)); + side.nodes.add(Vec3.createVectorHelper(6.5, 0.1875, 0.375)); + side.nodes.add(Vec3.createVectorHelper(7.5, 0.1875, 0.5)); + side.nodes.add(Vec3.createVectorHelper(8.5, 0.1875, 0.5)); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconSign = iconRegister.registerIcon(RefStrings.MODID + ":rail_switch_sign_flipped"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityRailSwitch(); + } + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 7, 7, 1, 0}; + } + + @Override + public int getOffset() { + return 7; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } + + @Override + public boolean canCross(World world, int x, int y, int z, Vec3 from, Vec3 to, RailDef def) { + TileEntityRailSwitch tile = (TileEntityRailSwitch) world.getTileEntity(x, y, z); + if(tile == null) return true; + + ForgeDirection dir = ForgeDirection.getOrientation(tile.getBlockMetadata() - 10); + + if(dir == Library.POS_X) if(from.xCoord < to.xCoord) return true; + if(dir == Library.NEG_X) if(from.xCoord > to.xCoord) return true; + if(dir == Library.POS_Z) if(from.zCoord < to.zCoord) return true; + if(dir == Library.NEG_Z) if(from.zCoord > to.zCoord) return true; + + if(dir == Library.POS_X) if(to.xCoord < x + 0.5 + 7) return true; + if(dir == Library.NEG_X) if(to.xCoord > x + 0.5 - 7) return true; + if(dir == Library.POS_Z) if(to.zCoord < z + 0.5 + 7) return true; + if(dir == Library.NEG_Z) if(to.zCoord > z + 0.5 - 7) return true; + + if(tile.isSwitched) { + if("side".equals(def.name)) return true; + } else { + if("main".equals(def.name)) return true; + } + + return false; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) return true; + if(player.isSneaking()) return false; + + int[] pos = this.findCore(world, x, y, z); + + if(pos != null) { + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(tile instanceof TileEntityRailSwitch) { + TileEntityRailSwitch sw = (TileEntityRailSwitch) tile; + sw.isSwitched = !sw.isSwitched; + sw.markDirty(); + world.markBlockForUpdate(pos[0], pos[1], pos[2]); + } + } + + return true; + } + + @Override + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + return super.snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + if(!super.checkRequirement(world, x, y, z, dir, o)) return false; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + for(int i = 0; i < 4; i++) if(!world.getBlock(x + dX * (2 + i) + rX * 2, y, z + dZ * (2 + i) + rZ * 2).isReplaceable(world, x + dX * (2 + i) + rX * 2, y, z + dZ * (2 + i) + rZ * 2)) return false; + for(int i = 0; i < 2; i++) if(!world.getBlock(x + dX * (4 + i) + rX * 3, y, z + dZ * (4 + i) + rZ * 3).isReplaceable(world, x + dX * (4 + i) + rX * 3, y, z + dZ * (4 + i) + rZ * 3)) return false; + if(!world.getBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4).isReplaceable(world, x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4)) return false; + for(int j = 0; j < 2; j++) for(int i = 0; i < 2; i++) if(!world.getBlock(x + dX * (6 + j) + rX * (3 + i), y, z + dZ * (6 + j) + rZ * (3 + i)).isReplaceable(world, x + dX * (6 + j) + rX * (3 + i), y, z + dZ * (6 + j) + rZ * (3 + i))) return false; + if(!world.getBlock(x + dX * 7 + rX * 5, y, z + dZ * 7 + rZ * 5).isReplaceable(world, x + dX * 7 + rX * 5, y, z + dZ * 7 + rZ * 5)) return false; + for(int j = 0; j < 7; j++) for(int i = 0; i < 2; i++) if(!world.getBlock(x + dX * (8 + j) + rX * (4 + i), y, z + dZ * (8 + j) + rZ * (4 + i)).isReplaceable(world, x + dX * (8 + j) + rX * (4 + i), y, z + dZ * (8 + j) + rZ * (4 + i))) return false; + + return true; + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + BlockDummyable.safeRem = true; + + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + for(int i = 0; i < 4; i++) world.setBlock(x + dX * (2 + i) + rX * 1, y, z + dZ * (2 + i) + rZ * 1, this, rot.ordinal(), 3); + for(int i = 0; i < 2; i++) world.setBlock(x + dX * (4 + i) + rX * 2, y, z + dZ * (4 + i) + rZ * 2, this, rot.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 3, y, z + dZ * 5 + rZ * 3, this, rot.ordinal(), 3); + for(int j = 0; j < 2; j++) for(int i = 0; i < 2; i++) world.setBlock(x + dX * (6 + j) + rX * (2 + i), y, z + dZ * (6 + j) + rZ * (2 + i), this, dir.ordinal(), 3); + world.setBlock(x + dX * 7 + rX * 4, y, z + dZ * 7 + rZ * 4, this, rot.ordinal(), 3); + for(int j = 0; j < 7; j++) for(int i = 0; i < 2; i++) world.setBlock(x + dX * (8 + j) + rX * (3 + i), y, z + dZ * (8 + j) + rZ * (3 + i), this, dir.ordinal(), 3); + + BlockDummyable.safeRem = false; + } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.1, 0.1, 0.1); + tessellator.startDrawingQuads(); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rail_standard_switch_flipped, "Rail", this.blockIcon, tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rail_standard_switch_flipped, "Rail", this.blockIcon, tessellator, rotation, true); + + TileEntity tile = world.getTileEntity(x, y, z); + + if(tile instanceof TileEntityRailSwitch) { + TileEntityRailSwitch sw = (TileEntityRailSwitch) tile; + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.rail_standard_switch_flipped, sw.isSwitched ? "SignTurn" : "SignStraight", this.iconSign, tessellator, rotation, true); + } + + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index aff0eef7b..a913f1c64 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -14,8 +14,6 @@ import com.hbm.blocks.rail.IRailNTM.TrackGauge; import com.hbm.items.ModItems; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.util.ParticleUtil; -import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -57,6 +55,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { public double renderX; public double renderY; public double renderZ; + public double cachedSpeed; public EntityRailCarBase coupledFront; public EntityRailCarBase coupledBack; @@ -176,9 +175,20 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { this.renderX = (frontPos.xCoord + backPos.xCoord) / 2D; this.renderY = (frontPos.yCoord + backPos.yCoord) / 2D; this.renderZ = (frontPos.zCoord + backPos.zCoord) / 2D; + } else { + this.renderX = posX; + this.renderY = posY; + this.renderZ = posZ; } } else { + + if(!this.isOnRail) { + if(this.coupledFront != null) this.coupledFront.couple(this.coupledFront.getCouplingFrom(this), null); + if(this.coupledBack != null) this.coupledBack.couple(this.coupledBack.getCouplingFrom(this), null); + this.coupledFront = null; + this.coupledBack = null; + } if(this.coupledFront != null && this.coupledFront.isDead) { this.coupledFront = null; @@ -189,10 +199,20 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { if(this.ltu != null) this.ltu.dissolveTrain(); } - if(this.ltu == null && (this.coupledFront == null || this.coupledBack == null)) { + if(this.ltu == null && (this.coupledFront == null || this.coupledBack == null) && this.isOnRail) { LogicalTrainUnit.generateTrain(this); } + if(!this.isOnRail) { + Vec3 motion = Vec3.createVectorHelper(0, 0, this.cachedSpeed); + motion.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180D)); + this.moveEntity(motion.xCoord, motion.yCoord - 0.04, motion.zCoord); + this.renderX = posX; + this.renderY = posY; + this.renderZ = posZ; + this.cachedSpeed *= 0.95D; + } + DummyConfig[] definitions = this.getDummies(); if(!this.initDummies) { @@ -320,6 +340,8 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { if(Math.abs(speed) < 0.001) speed = 0; + for(EntityRailCarBase car : ltu.trains) car.cachedSpeed = speed; + if(ltu.trains.length == 1) { EntityRailCarBase train = ltu.trains[0]; @@ -388,7 +410,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { public void derail() { isOnRail = false; - this.setDead(); + //this.setDead(); } @SideOnly(Side.CLIENT) @@ -756,10 +778,9 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { */ /** Determines the "front" wagon based on the movement and moves it, then moves all other wagons towards that */ public void moveTrainByApproach(double speed) { - boolean forward = speed > 0; EntityRailCarBase previous = null; - EntityRailCarBase first = this.trains[0]; + boolean forward = speed > 0; boolean order = forward ^ first.getCouplingFrom(null) == TrainCoupling.BACK; for(int i = order ? 0 : this.trains.length - 1; order ? i < this.trains.length : i >= 0; i += order ? 1 : -1) { @@ -769,8 +790,6 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { if(first == current) speed *= -1; - ParticleUtil.spawnGasFlame(first.worldObj, current.posX, current.posY + 2, current.posZ, 0, 0.1, 0); - boolean inReverse = first.getCouplingFrom(null) == current.getCouplingFrom(null); int sigNum = inReverse ? 1 : -1; BlockPos anchor = current.getCurrentAnchorPos(); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 1505391ae..16be815d9 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -255,6 +255,11 @@ public class ModEventHandlerClient { double distanceToCover = 4D * (i == 0 ? 1 : -1); + if(distanceToCover < 0) { + distanceToCover *= -1; + yaw += 180; + } + do { it++; diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 69e6aee87..38837f228 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1468,6 +1468,7 @@ public class ResourceManager { public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj")); public static final IModelCustom rail_standard_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_buffer.obj")); public static final IModelCustom rail_standard_switch = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_switch.obj")); + public static final IModelCustom rail_standard_switch_flipped = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_switch_flipped.obj")); public static final IModelCustom capacitor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/capacitor.obj")); public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj")); diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_switch_flipped.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_switch_flipped.obj new file mode 100644 index 000000000..f4ebf2c55 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_switch_flipped.obj @@ -0,0 +1,3933 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_switch_flipped.blend' +# www.blender.org +o SignTurn +v 1.500000 1.000000 -1.125000 +v 2.500000 1.000000 -1.125000 +v 1.500000 2.000000 -1.125000 +v 2.500000 2.000000 -1.125000 +v 1.500000 2.000000 -0.875000 +v 1.500000 1.000000 -0.875000 +v 2.500000 1.000000 -0.875000 +v 2.500000 2.000000 -0.875000 +v 1.875000 1.000000 -0.875000 +v 2.125000 1.000000 -0.875000 +v 1.875000 1.000000 -1.125000 +v 2.125000 1.000000 -1.125000 +v 1.875000 0.000000 -1.125000 +v 1.875000 0.000000 -0.875000 +v 2.125000 0.000000 -0.875000 +v 2.125000 0.000000 -1.125000 +vt 0.500000 0.500000 +vt 0.000000 0.000000 +vt 0.500000 0.000000 +vt 1.000000 0.500000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vt 0.625000 0.500000 +vt 0.500000 -0.000000 +vt 0.625000 -0.000000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.500000 -0.000000 +vt 0.625000 -0.000000 +vt 0.500000 0.000000 +vt 0.625000 0.500000 +vt 0.500000 0.500000 +vt 0.750000 0.375000 +vt 0.875000 0.500000 +vt 0.750000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.500000 +vt 1.000000 1.000000 +vt 0.500000 0.500000 +vt 0.625000 0.000000 +vt 0.500000 0.500000 +vt 0.625000 0.000000 +vt 0.875000 0.375000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 4/7/3 7/8/3 2/9/3 +f 1/3/4 5/10/4 3/1/4 +f 3/11/5 8/12/5 4/13/5 +f 2/14/6 6/15/6 1/16/6 +f 13/17/6 15/18/6 14/19/6 +f 16/20/1 11/21/1 12/22/1 +f 14/23/2 10/24/2 9/25/2 +f 15/26/3 12/27/3 10/28/3 +f 13/29/4 9/30/4 11/31/4 +f 3/1/1 4/32/1 2/2/1 +f 7/4/2 8/33/2 5/5/2 +f 4/7/3 8/34/3 7/8/3 +f 1/3/4 6/35/4 5/10/4 +f 3/11/5 5/36/5 8/12/5 +f 2/14/6 7/37/6 6/15/6 +f 13/17/6 16/38/6 15/18/6 +f 16/20/1 13/39/1 11/21/1 +f 14/23/2 15/40/2 10/24/2 +f 15/26/3 16/41/3 12/27/3 +f 13/29/4 14/42/4 9/30/4 +o SignStraight +v 1.500000 1.000000 -1.125000 +v 2.500000 1.000000 -1.125000 +v 1.500000 2.000000 -1.125000 +v 2.500000 2.000000 -1.125000 +v 1.500000 2.000000 -0.875000 +v 1.500000 1.000000 -0.875000 +v 2.500000 1.000000 -0.875000 +v 2.500000 2.000000 -0.875000 +v 1.875000 1.000000 -0.875000 +v 2.125000 1.000000 -0.875000 +v 1.875000 1.000000 -1.125000 +v 2.125000 1.000000 -1.125000 +v 1.875000 0.000000 -1.125000 +v 1.875000 0.000000 -0.875000 +v 2.125000 0.000000 -0.875000 +v 2.125000 0.000000 -1.125000 +vt 0.500000 0.500000 +vt 0.000000 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.500000 +vt 0.000100 0.999900 +vt 0.000000 0.500000 +vt 0.625000 0.500000 +vt 0.500000 -0.000000 +vt 0.625000 -0.000000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.500000 -0.000000 +vt 0.625000 -0.000000 +vt 0.500000 0.000000 +vt 0.625000 0.500000 +vt 0.500000 0.500000 +vt 0.750000 0.375000 +vt 0.875000 0.500000 +vt 0.750000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.500000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vt 0.625000 0.000000 +vt 0.500000 0.500000 +vt 0.625000 0.000000 +vt 0.875000 0.375000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vt 0.875000 -0.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 19/43/7 18/44/7 17/45/7 +f 23/46/8 21/47/8 22/48/8 +f 20/49/9 23/50/9 18/51/9 +f 17/45/10 21/52/10 19/43/10 +f 19/53/11 24/54/11 20/55/11 +f 18/56/12 22/57/12 17/58/12 +f 29/59/12 31/60/12 30/61/12 +f 32/62/7 27/63/7 28/64/7 +f 30/65/8 26/66/8 25/67/8 +f 31/68/9 28/69/9 26/70/9 +f 29/71/10 25/72/10 27/73/10 +f 19/43/7 20/74/7 18/44/7 +f 23/46/8 24/75/8 21/47/8 +f 20/49/9 24/76/9 23/50/9 +f 17/45/10 22/77/10 21/52/10 +f 19/53/11 21/78/11 24/54/11 +f 18/56/12 23/79/12 22/57/12 +f 29/59/12 32/80/12 31/60/12 +f 32/62/7 29/81/7 27/63/7 +f 30/65/8 31/82/8 26/66/8 +f 31/68/9 32/83/9 28/69/9 +f 29/71/10 30/84/10 25/72/10 +o Rail +v 1.000000 0.062500 4.812500 +v 1.000000 0.062500 5.187500 +v -1.000000 0.062500 5.187500 +v -1.000000 0.062500 4.812500 +v -1.000000 0.000000 5.187500 +v 1.000000 0.000000 5.187500 +v -1.000000 0.000000 4.812500 +v 1.000000 0.000000 4.812500 +v -1.000000 0.000000 4.187500 +v 1.000000 0.000000 4.187500 +v -1.000000 0.000000 3.812500 +v 1.000000 0.000000 3.812500 +v -1.000000 0.000000 3.187500 +v 1.000000 0.000000 3.187500 +v -1.000000 0.000000 2.812500 +v 1.000000 0.000000 2.812500 +v -1.000000 0.000000 7.187500 +v 1.000000 0.000000 7.187500 +v -1.000000 0.000000 6.812500 +v 1.000000 0.000000 6.812500 +v -1.000000 0.000000 6.187500 +v 1.000000 0.000000 6.187500 +v -1.000000 0.000000 5.812500 +v 1.000000 0.000000 5.812500 +v -1.000000 0.062500 3.812500 +v -1.000000 0.062500 4.187500 +v 1.000000 0.062500 4.187500 +v 1.000000 0.062500 3.812500 +v -1.000000 0.062500 2.812500 +v -1.000000 0.062500 3.187500 +v 1.000000 0.062500 3.187500 +v 1.000000 0.062500 2.812500 +v -1.000000 0.062500 6.812500 +v -1.000000 0.062500 7.187500 +v 1.000000 0.062500 7.187500 +v 1.000000 0.062500 6.812500 +v -1.000000 0.062500 5.812500 +v -1.000000 0.062500 6.187500 +v 1.000000 0.062500 6.187500 +v 1.000000 0.062500 5.812500 +v -0.812500 0.062500 7.500000 +v 0.812500 0.062500 7.500000 +v -0.812500 0.062500 2.500000 +v 0.812500 0.062500 2.500000 +v -0.812500 0.187500 7.500000 +v 0.812500 0.187500 7.500000 +v -0.812500 0.187500 2.500000 +v 0.812500 0.187500 2.500000 +v 0.750000 0.062500 7.500000 +v 0.750000 0.062500 2.500000 +v 0.750000 0.187500 7.500000 +v 0.750000 0.187500 2.500000 +v -0.750000 0.062500 2.500000 +v -0.750000 0.062500 7.500000 +v -0.750000 0.187500 2.500000 +v -0.750000 0.187500 7.500000 +v 0.625000 0.062500 7.062500 +v 0.937500 0.062500 7.062500 +v 0.625000 0.062500 6.937500 +v 0.937500 0.062500 6.937500 +v 0.625000 0.125000 7.062500 +v 0.937500 0.125000 7.062500 +v 0.625000 0.125000 6.937500 +v 0.937500 0.125000 6.937500 +v -0.937500 0.062500 7.062500 +v -0.625000 0.062500 7.062500 +v -0.937500 0.062500 6.937500 +v -0.625000 0.062500 6.937500 +v -0.937500 0.125000 7.062500 +v -0.625000 0.125000 7.062500 +v -0.937500 0.125000 6.937500 +v -0.625000 0.125000 6.937500 +v 0.625000 0.062500 6.062500 +v 0.937500 0.062500 6.062500 +v 0.625000 0.062500 5.937500 +v 0.937500 0.062500 5.937500 +v 0.625000 0.125000 6.062500 +v 0.937500 0.125000 6.062500 +v 0.625000 0.125000 5.937500 +v 0.937500 0.125000 5.937500 +v -0.937500 0.062500 6.062500 +v -0.625000 0.062500 6.062500 +v -0.937500 0.062500 5.937500 +v -0.625000 0.062500 5.937500 +v -0.937500 0.125000 6.062500 +v -0.625000 0.125000 6.062500 +v -0.937500 0.125000 5.937500 +v -0.625000 0.125000 5.937500 +v 0.625000 0.062500 5.062500 +v 0.937500 0.062500 5.062500 +v 0.625000 0.062500 4.937500 +v 0.937500 0.062500 4.937500 +v 0.625000 0.125000 5.062500 +v 0.937500 0.125000 5.062500 +v 0.625000 0.125000 4.937500 +v 0.937500 0.125000 4.937500 +v -0.937500 0.062500 5.062500 +v -0.625000 0.062500 5.062500 +v -0.937500 0.062500 4.937500 +v -0.625000 0.062500 4.937500 +v -0.937500 0.125000 5.062500 +v -0.625000 0.125000 5.062500 +v -0.937500 0.125000 4.937500 +v -0.625000 0.125000 4.937500 +v 0.625000 0.062500 4.062500 +v 0.937500 0.062500 4.062500 +v 0.625000 0.062500 3.937500 +v 0.937500 0.062500 3.937500 +v 0.625000 0.125000 4.062500 +v 0.937500 0.125000 4.062500 +v 0.625000 0.125000 3.937500 +v 0.937500 0.125000 3.937500 +v -0.937500 0.062500 4.062500 +v -0.625000 0.062500 4.062500 +v -0.937500 0.062500 3.937500 +v -0.625000 0.062500 3.937500 +v -0.937500 0.125000 4.062500 +v -0.625000 0.125000 4.062500 +v -0.937500 0.125000 3.937500 +v -0.625000 0.125000 3.937500 +v 0.625000 0.062500 3.062500 +v 0.937500 0.062500 3.062500 +v 0.625000 0.062500 2.937500 +v 0.937500 0.062500 2.937500 +v 0.625000 0.125000 3.062500 +v 0.937500 0.125000 3.062500 +v 0.625000 0.125000 2.937500 +v 0.937500 0.125000 2.937500 +v -0.937500 0.062500 3.062500 +v -0.625000 0.062500 3.062500 +v -0.937500 0.062500 2.937500 +v -0.625000 0.062500 2.937500 +v -0.937500 0.125000 3.062500 +v -0.625000 0.125000 3.062500 +v -0.937500 0.125000 2.937500 +v -0.625000 0.125000 2.937500 +v -0.812500 0.062500 3.500000 +v -0.812500 0.062500 4.500000 +v -0.812500 0.062500 5.500000 +v -0.812500 0.062500 6.500000 +v 0.812500 0.062500 6.500000 +v 0.812500 0.062500 5.500000 +v 0.812500 0.062500 4.500000 +v 0.812500 0.062500 3.500000 +v -0.812500 0.187500 3.500000 +v -0.812500 0.187500 4.500000 +v -0.812500 0.187500 5.500000 +v -0.812500 0.187500 6.500000 +v 0.812500 0.187500 6.500000 +v 0.812500 0.187500 5.500000 +v 0.812500 0.187500 4.500000 +v 0.812500 0.187500 3.500000 +v 0.750000 0.062500 6.500000 +v 0.750000 0.062500 5.500000 +v 0.750000 0.062500 4.500000 +v 0.750000 0.062500 3.500000 +v 0.750000 0.187500 6.500000 +v 0.750000 0.187500 5.500000 +v 0.750000 0.187500 4.500000 +v 0.750000 0.187500 3.500000 +v -0.750000 0.062500 3.500000 +v -0.750000 0.062500 4.500000 +v -0.750000 0.062500 5.500000 +v -0.750000 0.062500 6.500000 +v -0.750000 0.187500 3.500000 +v -0.750000 0.187500 4.500000 +v -0.750000 0.187500 5.500000 +v -0.750000 0.187500 6.500000 +v 1.000000 0.062500 -5.187500 +v 1.000000 0.062500 -4.812500 +v -1.000000 0.062500 -4.812500 +v -1.000000 0.062500 -5.187500 +v -1.000000 0.000000 -4.812500 +v 1.000000 0.000000 -4.812500 +v -1.000000 0.000000 -5.187500 +v 1.000000 0.000000 -5.187500 +v -1.000000 0.000000 -5.812500 +v 1.000000 0.000000 -5.812500 +v -1.000000 0.000000 -6.187500 +v 1.000000 0.000000 -6.187500 +v -1.000000 0.000000 -6.812500 +v 1.000000 0.000000 -6.812500 +v -1.000000 0.000000 -7.187500 +v 1.000000 0.000000 -7.187500 +v -1.000000 0.000000 -2.812500 +v 1.000000 0.000000 -2.812500 +v -1.000000 0.000000 -3.187500 +v 1.000000 0.000000 -3.187500 +v -1.000000 0.000000 -3.812500 +v 1.000000 0.000000 -3.812500 +v -1.000000 0.000000 -4.187500 +v 1.000000 0.000000 -4.187500 +v -1.000000 0.062500 -6.187500 +v -1.000000 0.062500 -5.812500 +v 1.000000 0.062500 -5.812500 +v 1.000000 0.062500 -6.187500 +v -1.000000 0.062500 -7.187500 +v -1.000000 0.062500 -6.812500 +v 1.000000 0.062500 -6.812500 +v 1.000000 0.062500 -7.187500 +v -1.000000 0.062500 -3.187500 +v -1.000000 0.062500 -2.812500 +v 1.000000 0.062500 -2.812500 +v 1.000000 0.062500 -3.187500 +v -1.000000 0.062500 -4.187500 +v -1.000000 0.062500 -3.812500 +v 1.000000 0.062500 -3.812500 +v 1.000000 0.062500 -4.187500 +v -0.812500 0.062500 -2.500000 +v 0.812500 0.062500 -2.500000 +v -0.812500 0.062500 -7.500000 +v 0.812500 0.062500 -7.500000 +v -0.812500 0.187500 -2.500000 +v 0.812500 0.187500 -2.500000 +v -0.812500 0.187500 -7.500000 +v 0.812500 0.187500 -7.500000 +v 0.750000 0.062500 -2.500000 +v 0.750000 0.062500 -7.500000 +v 0.750000 0.187500 -2.500000 +v 0.750000 0.187500 -7.500000 +v -0.750000 0.062500 -7.500000 +v -0.750000 0.062500 -2.500000 +v -0.750000 0.187500 -7.500000 +v -0.750000 0.187500 -2.500000 +v 0.625000 0.062500 -2.937500 +v 0.937500 0.062500 -2.937500 +v 0.625000 0.062500 -3.062500 +v 0.937500 0.062500 -3.062500 +v 0.625000 0.125000 -2.937500 +v 0.937500 0.125000 -2.937500 +v 0.625000 0.125000 -3.062500 +v 0.937500 0.125000 -3.062500 +v -0.937500 0.062500 -2.937500 +v -0.625000 0.062500 -2.937500 +v -0.937500 0.062500 -3.062500 +v -0.625000 0.062500 -3.062500 +v -0.937500 0.125000 -2.937500 +v -0.625000 0.125000 -2.937500 +v -0.937500 0.125000 -3.062500 +v -0.625000 0.125000 -3.062500 +v 0.625000 0.062500 -3.937500 +v 0.937500 0.062500 -3.937500 +v 0.625000 0.062500 -4.062500 +v 0.937500 0.062500 -4.062500 +v 0.625000 0.125000 -3.937500 +v 0.937500 0.125000 -3.937500 +v 0.625000 0.125000 -4.062500 +v 0.937500 0.125000 -4.062500 +v -0.937500 0.062500 -3.937500 +v -0.625000 0.062500 -3.937500 +v -0.937500 0.062500 -4.062500 +v -0.625000 0.062500 -4.062500 +v -0.937500 0.125000 -3.937500 +v -0.625000 0.125000 -3.937500 +v -0.937500 0.125000 -4.062500 +v -0.625000 0.125000 -4.062500 +v 0.625000 0.062500 -4.937500 +v 0.937500 0.062500 -4.937500 +v 0.625000 0.062500 -5.062500 +v 0.937500 0.062500 -5.062500 +v 0.625000 0.125000 -4.937500 +v 0.937500 0.125000 -4.937500 +v 0.625000 0.125000 -5.062500 +v 0.937500 0.125000 -5.062500 +v -0.937500 0.062500 -4.937500 +v -0.625000 0.062500 -4.937500 +v -0.937500 0.062500 -5.062500 +v -0.625000 0.062500 -5.062500 +v -0.937500 0.125000 -4.937500 +v -0.625000 0.125000 -4.937500 +v -0.937500 0.125000 -5.062500 +v -0.625000 0.125000 -5.062500 +v 0.625000 0.062500 -5.937500 +v 0.937500 0.062500 -5.937500 +v 0.625000 0.062500 -6.062500 +v 0.937500 0.062500 -6.062500 +v 0.625000 0.125000 -5.937500 +v 0.937500 0.125000 -5.937500 +v 0.625000 0.125000 -6.062500 +v 0.937500 0.125000 -6.062500 +v -0.937500 0.062500 -5.937500 +v -0.625000 0.062500 -5.937500 +v -0.937500 0.062500 -6.062500 +v -0.625000 0.062500 -6.062500 +v -0.937500 0.125000 -5.937500 +v -0.625000 0.125000 -5.937500 +v -0.937500 0.125000 -6.062500 +v -0.625000 0.125000 -6.062500 +v 0.625000 0.062500 -6.937500 +v 0.937500 0.062500 -6.937500 +v 0.625000 0.062500 -7.062500 +v 0.937500 0.062500 -7.062500 +v 0.625000 0.125000 -6.937500 +v 0.937500 0.125000 -6.937500 +v 0.625000 0.125000 -7.062500 +v 0.937500 0.125000 -7.062500 +v -0.937500 0.062500 -6.937500 +v -0.625000 0.062500 -6.937500 +v -0.937500 0.062500 -7.062500 +v -0.625000 0.062500 -7.062500 +v -0.937500 0.125000 -6.937500 +v -0.625000 0.125000 -6.937500 +v -0.937500 0.125000 -7.062500 +v -0.625000 0.125000 -7.062500 +v -0.812500 0.062500 -6.500000 +v -0.812500 0.062500 -5.500000 +v -0.812500 0.062500 -4.500000 +v -0.812500 0.062500 -3.500000 +v 0.812500 0.062500 -3.500000 +v 0.812500 0.062500 -4.500000 +v 0.812500 0.062500 -5.500000 +v 0.812500 0.062500 -6.500000 +v -0.812500 0.187500 -6.500000 +v -0.812500 0.187500 -5.500000 +v -0.812500 0.187500 -4.500000 +v -0.812500 0.187500 -3.500000 +v 0.812500 0.187500 -3.500000 +v 0.812500 0.187500 -4.500000 +v 0.812500 0.187500 -5.500000 +v 0.812500 0.187500 -6.500000 +v 0.750000 0.062500 -3.500000 +v 0.750000 0.062500 -4.500000 +v 0.750000 0.062500 -5.500000 +v 0.750000 0.062500 -6.500000 +v 0.750000 0.187500 -3.500000 +v 0.750000 0.187500 -4.500000 +v 0.750000 0.187500 -5.500000 +v 0.750000 0.187500 -6.500000 +v -0.750000 0.062500 -6.500000 +v -0.750000 0.062500 -5.500000 +v -0.750000 0.062500 -4.500000 +v -0.750000 0.062500 -3.500000 +v -0.750000 0.187500 -6.500000 +v -0.750000 0.187500 -5.500000 +v -0.750000 0.187500 -4.500000 +v -0.750000 0.187500 -3.500000 +v 1.000000 0.062500 -0.187500 +v 1.000000 0.062500 0.187500 +v -1.000000 0.062500 0.187500 +v -1.000000 0.062500 -0.187500 +v -1.000000 0.000000 0.187500 +v 1.000000 0.000000 0.187500 +v -1.000000 0.000000 -0.187500 +v 1.000000 0.000000 -0.187500 +v -1.000000 0.000000 -0.812500 +v 1.000000 0.000000 -0.812500 +v -1.000000 0.000000 -1.187500 +v 1.000000 0.000000 -1.187500 +v -1.000000 0.000000 -1.812500 +v 1.000000 0.000000 -1.812500 +v -1.000000 0.000000 -2.187500 +v 1.000000 0.000000 -2.187500 +v -1.000000 0.000000 2.187500 +v 1.000000 0.000000 2.187500 +v -1.000000 0.000000 1.812500 +v 1.000000 0.000000 1.812500 +v -1.000000 0.000000 1.187500 +v 1.000000 0.000000 1.187500 +v -1.000000 0.000000 0.812500 +v 1.000000 0.000000 0.812500 +v -1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -2.187500 +v -1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -2.187500 +v -1.000000 0.062500 1.812500 +v -1.000000 0.062500 2.187500 +v 1.000000 0.062500 2.187500 +v 1.000000 0.062500 1.812500 +v -1.000000 0.062500 0.812500 +v -1.000000 0.062500 1.187500 +v 1.000000 0.062500 1.187500 +v 1.000000 0.062500 0.812500 +v 0.625000 0.062500 2.062500 +v 0.937500 0.062500 2.062500 +v 0.625000 0.062500 1.937500 +v 0.937500 0.062500 1.937500 +v 0.625000 0.125000 2.062500 +v 0.937500 0.125000 2.062500 +v 0.625000 0.125000 1.937500 +v 0.937500 0.125000 1.937500 +v -0.937500 0.062500 2.062500 +v -0.625000 0.062500 2.062500 +v -0.937500 0.062500 1.937500 +v -0.625000 0.062500 1.937500 +v -0.937500 0.125000 2.062500 +v -0.625000 0.125000 2.062500 +v -0.937500 0.125000 1.937500 +v -0.625000 0.125000 1.937500 +v 0.625000 0.062500 1.062500 +v 0.937500 0.062500 1.062500 +v 0.625000 0.062500 0.937500 +v 0.937500 0.062500 0.937500 +v 0.625000 0.125000 1.062500 +v 0.937500 0.125000 1.062500 +v 0.625000 0.125000 0.937500 +v 0.937500 0.125000 0.937500 +v -0.937500 0.062500 1.062500 +v -0.625000 0.062500 1.062500 +v -0.937500 0.062500 0.937500 +v -0.625000 0.062500 0.937500 +v -0.937500 0.125000 1.062500 +v -0.625000 0.125000 1.062500 +v -0.937500 0.125000 0.937500 +v -0.625000 0.125000 0.937500 +v 0.625000 0.062500 0.062500 +v 0.937500 0.062500 0.062500 +v 0.625000 0.062500 -0.062500 +v 0.937500 0.062500 -0.062500 +v 0.625000 0.125000 0.062500 +v 0.937500 0.125000 0.062500 +v 0.625000 0.125000 -0.062500 +v 0.937500 0.125000 -0.062500 +v -0.937500 0.062500 0.062500 +v -0.625000 0.062500 0.062500 +v -0.937500 0.062500 -0.062500 +v -0.625000 0.062500 -0.062500 +v -0.937500 0.125000 0.062500 +v -0.625000 0.125000 0.062500 +v -0.937500 0.125000 -0.062500 +v -0.625000 0.125000 -0.062500 +v 0.625000 0.062500 -0.937500 +v 0.937500 0.062500 -0.937500 +v 0.625000 0.062500 -1.062500 +v 0.937500 0.062500 -1.062500 +v 0.625000 0.125000 -0.937500 +v 0.937500 0.125000 -0.937500 +v 0.625000 0.125000 -1.062500 +v 0.937500 0.125000 -1.062500 +v -0.937500 0.062500 -0.937500 +v -0.625000 0.062500 -0.937500 +v -0.937500 0.062500 -1.062500 +v -0.625000 0.062500 -1.062500 +v -0.937500 0.125000 -0.937500 +v -0.625000 0.125000 -0.937500 +v -0.937500 0.125000 -1.062500 +v -0.625000 0.125000 -1.062500 +v 0.625000 0.062500 -1.937500 +v 0.937500 0.062500 -1.937500 +v 0.625000 0.062500 -2.062500 +v 0.937500 0.062500 -2.062500 +v 0.625000 0.125000 -1.937500 +v 0.937500 0.125000 -1.937500 +v 0.625000 0.125000 -2.062500 +v 0.937500 0.125000 -2.062500 +v -0.937500 0.062500 -1.937500 +v -0.625000 0.062500 -1.937500 +v -0.937500 0.062500 -2.062500 +v -0.625000 0.062500 -2.062500 +v -0.937500 0.125000 -1.937500 +v -0.625000 0.125000 -1.937500 +v -0.937500 0.125000 -2.062500 +v -0.625000 0.125000 -2.062500 +v -0.812500 0.062500 -1.500000 +v -0.812500 0.062500 -0.500000 +v -0.812500 0.062500 0.500000 +v -0.812500 0.062500 1.500000 +v 0.812500 0.062500 1.500000 +v 0.812500 0.062500 0.500000 +v 0.812500 0.062500 -0.500000 +v 0.812500 0.062500 -1.500000 +v -0.812500 0.187500 -1.500000 +v -0.812500 0.187500 -0.500000 +v -0.812500 0.187500 0.500000 +v -0.812500 0.187500 1.500000 +v 0.812500 0.187500 1.500000 +v 0.812500 0.187500 0.500000 +v 0.812500 0.187500 -0.500000 +v 0.812500 0.187500 -1.500000 +v 0.750000 0.062500 1.500000 +v 0.750000 0.062500 0.500000 +v 0.750000 0.062500 -0.500000 +v 0.750000 0.062500 -1.500000 +v 0.750000 0.187500 1.500000 +v 0.750000 0.187500 0.500000 +v 0.750000 0.187500 -0.500000 +v 0.750000 0.187500 -1.500000 +v -0.750000 0.062500 -1.500000 +v -0.750000 0.062500 -0.500000 +v -0.750000 0.062500 0.500000 +v -0.750000 0.062500 1.500000 +v -0.750000 0.187500 -1.500000 +v -0.750000 0.187500 -0.500000 +v -0.750000 0.187500 0.500000 +v -0.750000 0.187500 1.500000 +v 1.725096 0.062500 1.451439 +v 1.966661 0.062500 1.649687 +v 1.645797 0.062500 1.548066 +v 1.887362 0.062500 1.746314 +v 1.756082 0.062500 1.315164 +v 1.518184 0.062500 1.605042 +v 3.064205 0.062500 2.873829 +v 3.302103 0.062500 2.583950 +v 1.756082 0.000000 1.315164 +v 3.302103 0.000000 2.583950 +v 1.518184 0.000000 1.605042 +v 3.064205 0.000000 2.873829 +v 0.504144 0.062500 3.159608 +v 0.504144 0.187500 3.159608 +v 1.855282 0.187500 4.062409 +v 1.855282 0.062500 4.062409 +v 0.556111 0.062500 3.194331 +v 0.556111 0.187500 3.194331 +v 1.803315 0.187500 4.027686 +v 1.803315 0.062500 4.027686 +v -0.217808 0.062500 4.510286 +v -0.217808 0.187500 4.510286 +v 1.283496 0.187500 5.132147 +v 1.283496 0.062500 5.132147 +v -0.160065 0.062500 4.534204 +v -0.160065 0.187500 4.534204 +v 1.225753 0.187500 5.108229 +v 1.225753 0.062500 5.108229 +v -0.662384 0.062500 5.975857 +v -0.662384 0.187500 5.975857 +v 0.931392 0.187500 6.292879 +v 0.931392 0.062500 6.292879 +v -0.601084 0.062500 5.988050 +v -0.601084 0.187500 5.988050 +v 0.870092 0.187500 6.280685 +v 0.870092 0.062500 6.280685 +v -0.812499 0.062500 7.500000 +v -0.812499 0.187500 7.500000 +v 0.812501 0.187500 7.500000 +v 0.812501 0.062500 7.500000 +v -0.749998 0.062500 7.500000 +v -0.749998 0.187500 7.500000 +v 0.750000 0.187500 7.500000 +v 0.750000 0.062500 7.500000 +v 1.376398 0.062500 2.183322 +v 1.376398 0.187500 2.183322 +v 1.324431 0.187500 2.148599 +v 1.324431 0.062500 2.148599 +v 3.495856 0.062500 2.040392 +v 3.495856 0.187500 2.040392 +v 2.144718 0.187500 1.137591 +v 2.144718 0.062500 1.137591 +v 3.443888 0.062500 2.005669 +v 3.443888 0.187500 2.005669 +v 2.196684 0.187500 1.172314 +v 2.196684 0.062500 1.172314 +v 4.217808 0.062500 0.689714 +v 4.217808 0.187500 0.689714 +v 2.716504 0.187500 0.067853 +v 2.716504 0.062500 0.067853 +v 4.160065 0.062500 0.665796 +v 4.160065 0.187500 0.665796 +v 2.774246 0.187500 0.091771 +v 2.774246 0.062500 0.091771 +v 4.662384 0.062500 -0.775857 +v 4.662384 0.187500 -0.775857 +v 3.068608 0.187500 -1.092879 +v 3.068608 0.062500 -1.092879 +v 4.601084 0.062500 -0.788050 +v 4.601084 0.187500 -0.788050 +v 3.129908 0.187500 -1.080685 +v 3.129908 0.062500 -1.080685 +v 4.812499 0.062500 -2.300000 +v 4.812499 0.187500 -2.300000 +v 3.187499 0.187500 -2.300000 +v 3.187499 0.062500 -2.300000 +v 4.749998 0.062500 -2.300000 +v 4.749998 0.187500 -2.300000 +v 3.250000 0.187500 -2.300000 +v 3.250000 0.062500 -2.300000 +v 2.932924 0.125000 2.442679 +v 3.174490 0.125000 2.640927 +v 2.853625 0.125000 2.539305 +v 3.095191 0.125000 2.737553 +v 2.623602 0.062500 3.016677 +v 2.623602 0.187500 3.016677 +v 2.675569 0.062500 3.051401 +v 2.675569 0.187500 3.051401 +v 2.932924 0.062500 2.442679 +v 3.174490 0.062500 2.640927 +v 2.853625 0.062500 2.539305 +v 3.095191 0.062500 2.737553 +v 1.725096 0.125000 1.451439 +v 1.966661 0.125000 1.649687 +v 1.645797 0.125000 1.548066 +v 1.887362 0.125000 1.746314 +v 3.000000 0.062500 -5.187500 +v 3.000000 0.062500 -4.812500 +v 5.000000 0.062500 -4.812500 +v 5.000000 0.062500 -5.187500 +v 5.000000 0.000000 -4.812500 +v 3.000000 0.000000 -4.812500 +v 5.000000 0.000000 -5.187500 +v 3.000000 0.000000 -5.187500 +v 5.000000 0.000000 -5.812500 +v 3.000000 0.000000 -5.812500 +v 5.000000 0.000000 -6.187500 +v 3.000000 0.000000 -6.187500 +v 5.000000 0.000000 -6.812500 +v 3.000000 0.000000 -6.812500 +v 5.000000 0.000000 -7.187500 +v 3.000000 0.000000 -7.187500 +v 5.000000 0.000000 -3.812500 +v 3.000000 0.000000 -3.812500 +v 5.000000 0.000000 -4.187500 +v 3.000000 0.000000 -4.187500 +v 5.000000 0.062500 -6.187500 +v 5.000000 0.062500 -5.812500 +v 3.000000 0.062500 -5.812500 +v 3.000000 0.062500 -6.187500 +v 5.000000 0.062500 -7.187500 +v 5.000000 0.062500 -6.812500 +v 3.000000 0.062500 -6.812500 +v 3.000000 0.062500 -7.187500 +v 5.000000 0.062500 -4.187500 +v 5.000000 0.062500 -3.812500 +v 3.000000 0.062500 -3.812500 +v 3.000000 0.062500 -4.187500 +v 4.812500 0.062500 -7.500000 +v 3.187500 0.062500 -7.500000 +v 4.812500 0.187500 -7.500000 +v 3.187500 0.187500 -7.500000 +v 3.250000 0.062500 -7.500000 +v 3.250000 0.187500 -7.500000 +v 4.750000 0.062500 -7.500000 +v 4.750000 0.187500 -7.500000 +v 3.375000 0.062500 -3.937500 +v 3.062500 0.062500 -3.937500 +v 3.375000 0.062500 -4.062500 +v 3.062500 0.062500 -4.062500 +v 3.375000 0.125000 -3.937500 +v 3.062500 0.125000 -3.937500 +v 3.375000 0.125000 -4.062500 +v 3.062500 0.125000 -4.062500 +v 4.937500 0.062500 -3.937500 +v 4.625000 0.062500 -3.937500 +v 4.937500 0.062500 -4.062500 +v 4.625000 0.062500 -4.062500 +v 4.937500 0.125000 -3.937500 +v 4.625000 0.125000 -3.937500 +v 4.937500 0.125000 -4.062500 +v 4.625000 0.125000 -4.062500 +v 3.375000 0.062500 -4.937500 +v 3.062500 0.062500 -4.937500 +v 3.375000 0.062500 -5.062500 +v 3.062500 0.062500 -5.062500 +v 3.375000 0.125000 -4.937500 +v 3.062500 0.125000 -4.937500 +v 3.375000 0.125000 -5.062500 +v 3.062500 0.125000 -5.062500 +v 4.937500 0.062500 -4.937500 +v 4.625000 0.062500 -4.937500 +v 4.937500 0.062500 -5.062500 +v 4.625000 0.062500 -5.062500 +v 4.937500 0.125000 -4.937500 +v 4.625000 0.125000 -4.937500 +v 4.937500 0.125000 -5.062500 +v 4.625000 0.125000 -5.062500 +v 3.375000 0.062500 -5.937500 +v 3.062500 0.062500 -5.937500 +v 3.375000 0.062500 -6.062500 +v 3.062500 0.062500 -6.062500 +v 3.375000 0.125000 -5.937500 +v 3.062500 0.125000 -5.937500 +v 3.375000 0.125000 -6.062500 +v 3.062500 0.125000 -6.062500 +v 4.937500 0.062500 -5.937500 +v 4.625000 0.062500 -5.937500 +v 4.937500 0.062500 -6.062500 +v 4.625000 0.062500 -6.062500 +v 4.937500 0.125000 -5.937500 +v 4.625000 0.125000 -5.937500 +v 4.937500 0.125000 -6.062500 +v 4.625000 0.125000 -6.062500 +v 3.375000 0.062500 -6.937500 +v 3.062500 0.062500 -6.937500 +v 3.375000 0.062500 -7.062500 +v 3.062500 0.062500 -7.062500 +v 3.375000 0.125000 -6.937500 +v 3.062500 0.125000 -6.937500 +v 3.375000 0.125000 -7.062500 +v 3.062500 0.125000 -7.062500 +v 4.937500 0.062500 -6.937500 +v 4.625000 0.062500 -6.937500 +v 4.937500 0.062500 -7.062500 +v 4.625000 0.062500 -7.062500 +v 4.937500 0.125000 -6.937500 +v 4.625000 0.125000 -6.937500 +v 4.937500 0.125000 -7.062500 +v 4.625000 0.125000 -7.062500 +v 4.812500 0.062500 -6.500000 +v 4.812500 0.062500 -5.500000 +v 4.812500 0.062500 -4.500000 +v 4.812500 0.062500 -3.500000 +v 3.187500 0.062500 -3.500000 +v 3.187500 0.062500 -4.500000 +v 3.187500 0.062500 -5.500000 +v 3.187500 0.062500 -6.500000 +v 4.812500 0.187500 -6.500000 +v 4.812500 0.187500 -5.500000 +v 4.812500 0.187500 -4.500000 +v 4.812500 0.187500 -3.500000 +v 3.187500 0.187500 -3.500000 +v 3.187500 0.187500 -4.500000 +v 3.187500 0.187500 -5.500000 +v 3.187500 0.187500 -6.500000 +v 3.250000 0.062500 -3.500000 +v 3.250000 0.062500 -4.500000 +v 3.250000 0.062500 -5.500000 +v 3.250000 0.062500 -6.500000 +v 3.250000 0.187500 -3.500000 +v 3.250000 0.187500 -4.500000 +v 3.250000 0.187500 -5.500000 +v 3.250000 0.187500 -6.500000 +v 4.750000 0.062500 -6.500000 +v 4.750000 0.062500 -5.500000 +v 4.750000 0.062500 -4.500000 +v 4.750000 0.062500 -3.500000 +v 4.750000 0.187500 -6.500000 +v 4.750000 0.187500 -5.500000 +v 4.750000 0.187500 -4.500000 +v 4.750000 0.187500 -3.500000 +v 2.346383 0.062500 0.486832 +v 2.621983 0.062500 0.634143 +v 2.287458 0.062500 0.597072 +v 2.563059 0.062500 0.744383 +v 2.350187 0.062500 0.347129 +v 2.173414 0.062500 0.677850 +v 3.937256 0.062500 1.620643 +v 4.114030 0.062500 1.289923 +v 2.350187 0.000000 0.347129 +v 4.114030 0.000000 1.289923 +v 2.173414 0.000000 0.677850 +v 3.937256 0.000000 1.620643 +v 3.724385 0.125000 1.223389 +v 3.999985 0.125000 1.370701 +v 3.665460 0.125000 1.333629 +v 3.941061 0.125000 1.480941 +v 3.724385 0.062500 1.223389 +v 3.999985 0.062500 1.370701 +v 3.665460 0.062500 1.333629 +v 3.941061 0.062500 1.480941 +v 2.346383 0.125000 0.486832 +v 2.621983 0.125000 0.634143 +v 2.287458 0.125000 0.597072 +v 2.563059 0.125000 0.744383 +v 2.787336 0.062500 -0.609743 +v 3.086380 0.062500 -0.519029 +v 2.751051 0.062500 -0.490125 +v 3.050095 0.062500 -0.399411 +v 2.763813 0.062500 -0.747503 +v 2.654956 0.062500 -0.388651 +v 4.568837 0.062500 0.191919 +v 4.677694 0.062500 -0.166934 +v 2.763813 0.000000 -0.747503 +v 4.677694 0.000000 -0.166934 +v 2.654956 0.000000 -0.388651 +v 4.568837 0.000000 0.191919 +v 4.282555 0.125000 -0.156173 +v 4.581599 0.125000 -0.065459 +v 4.246270 0.125000 -0.036556 +v 4.545314 0.125000 0.054159 +v 4.282555 0.062500 -0.156173 +v 4.581599 0.062500 -0.065459 +v 4.246270 0.062500 -0.036556 +v 4.545314 0.062500 0.054159 +v 2.787336 0.125000 -0.609743 +v 3.086380 0.125000 -0.519029 +v 2.751051 0.125000 -0.490125 +v 3.050095 0.125000 -0.399411 +v 3.005888 0.062500 -1.771274 +v 3.316883 0.062500 -1.740644 +v 2.993635 0.062500 -1.646876 +v 3.304631 0.062500 -1.616246 +v 2.955941 0.062500 -1.901798 +v 2.919184 0.062500 -1.528604 +v 4.909554 0.062500 -1.332570 +v 4.946310 0.062500 -1.705764 +v 2.955941 0.000000 -1.901798 +v 4.946310 0.000000 -1.705764 +v 2.919184 0.000000 -1.528604 +v 4.909554 0.000000 -1.332570 +v 4.560863 0.125000 -1.618122 +v 4.871859 0.125000 -1.587492 +v 4.548611 0.125000 -1.493724 +v 4.859607 0.125000 -1.463094 +v 4.560863 0.062500 -1.618122 +v 4.871859 0.062500 -1.587492 +v 4.548611 0.062500 -1.493724 +v 4.859607 0.062500 -1.463094 +v 3.005888 0.125000 -1.771274 +v 3.316883 0.125000 -1.740644 +v 2.993635 0.125000 -1.646876 +v 3.304631 0.125000 -1.616246 +v 0.904809 0.062500 2.462447 +v 1.146375 0.062500 2.660695 +v 0.825510 0.062500 2.559073 +v 1.067076 0.062500 2.757321 +v 0.935795 0.062500 2.326171 +v 0.697898 0.062500 2.616050 +v 2.243919 0.062500 3.884836 +v 2.481816 0.062500 3.594958 +v 0.935795 0.000000 2.326171 +v 2.481816 0.000000 3.594958 +v 0.697898 0.000000 2.616050 +v 2.243919 0.000000 3.884836 +v 2.112638 0.125000 3.453686 +v 2.354204 0.125000 3.651934 +v 2.033339 0.125000 3.550313 +v 2.274905 0.125000 3.748561 +v 2.112638 0.062500 3.453686 +v 2.354204 0.062500 3.651934 +v 2.033339 0.062500 3.550313 +v 2.274905 0.062500 3.748561 +v 0.904809 0.125000 2.462447 +v 1.146375 0.125000 2.660695 +v 0.825510 0.125000 2.559073 +v 1.067076 0.125000 2.757321 +v 5.000000 0.000000 -2.812500 +v 3.000000 0.000000 -2.812500 +v 5.000000 0.000000 -3.187500 +v 3.000000 0.000000 -3.187500 +v 5.000000 0.062500 -3.187500 +v 5.000000 0.062500 -2.812500 +v 3.000000 0.062500 -2.812500 +v 3.000000 0.062500 -3.187500 +v 3.375000 0.062500 -2.937500 +v 3.062500 0.062500 -2.937500 +v 3.375000 0.062500 -3.062500 +v 3.062500 0.062500 -3.062500 +v 3.375000 0.125000 -2.937500 +v 3.062500 0.125000 -2.937500 +v 3.375000 0.125000 -3.062500 +v 3.062500 0.125000 -3.062500 +v 4.937500 0.062500 -2.937500 +v 4.625000 0.062500 -2.937500 +v 4.937500 0.062500 -3.062500 +v 4.625000 0.062500 -3.062500 +v 4.937500 0.125000 -2.937500 +v 4.625000 0.125000 -2.937500 +v 4.937500 0.125000 -3.062500 +v 4.625000 0.125000 -3.062500 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.593750 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.187500 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.187500 1.000000 +vt 0.218750 1.000000 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.062500 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.187500 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.187500 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.187500 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.187500 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.218750 1.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.218750 1.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.218750 1.000000 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.500000 0.718750 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.531250 0.656250 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.187500 1.000000 +vt 0.218750 1.000000 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.062500 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 0.000000 +vt 0.218750 1.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.062500 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.187500 1.000000 +vt 0.218750 1.000000 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.593750 0.125000 +vt 0.437500 0.062500 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.000000 +vt 0.218750 1.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.062500 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.187500 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.062500 +vt 0.593750 0.156250 +vt 0.437500 0.125000 +vt 0.437500 0.156250 +vt 0.437500 0.031250 +vt 0.593750 0.062500 +vt 0.593750 0.031250 +vt 0.625000 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.125000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.406250 -0.000000 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.531250 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.156250 +vt 0.187500 0.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 0.000000 +vt 0.406250 -0.000000 +vt 0.187500 0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.406250 0.156250 +vt 0.593750 0.156250 +vt 0.406250 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.406250 1.000000 +vt 0.406250 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.187500 0.000000 +vt 0.406250 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.406250 1.000000 +vt 0.406250 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.187500 0.000000 +vt 0.406250 -0.000000 +vt 0.187500 0.000000 +vt 0.593750 0.031250 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.7765 0.0000 -0.6301 +vn -0.8819 0.0000 -0.4714 +vn 0.7730 0.0000 0.6344 +vn -0.6344 0.0000 0.7730 +vn -0.9569 0.0000 -0.2903 +vn 0.9569 0.0000 0.2903 +vn 0.8819 0.0000 0.4714 +vn 0.9952 0.0000 0.0980 +vn -0.9952 0.0000 -0.0980 +vn 0.7765 0.0000 0.6301 +vn -0.7730 0.0000 -0.6344 +vn 0.6344 0.0000 -0.7730 +vn -0.4714 0.0000 0.8819 +vn 0.4714 0.0000 -0.8819 +vn -0.2903 0.0000 0.9569 +vn 0.2903 0.0000 -0.9569 +vn -0.0980 0.0000 0.9952 +vn 0.0980 0.0000 -0.9952 +s off +f 34/85/13 36/86/13 35/87/13 +f 39/88/14 38/89/14 37/90/14 +f 43/91/14 42/92/14 41/93/14 +f 47/94/14 46/95/14 45/96/14 +f 51/97/14 50/98/14 49/99/14 +f 55/100/14 54/101/14 53/102/14 +f 59/103/13 57/104/13 58/105/13 +f 63/106/13 61/107/13 62/108/13 +f 67/109/13 65/110/13 66/111/13 +f 71/112/13 69/113/13 70/114/13 +f 49/115/15 65/116/15 51/117/15 +f 42/118/16 58/119/16 41/120/16 +f 50/121/16 66/122/16 49/123/16 +f 44/124/17 59/125/17 42/92/17 +f 52/126/17 67/127/17 50/98/17 +f 43/91/18 60/128/18 44/129/18 +f 37/130/15 36/131/15 39/132/15 +f 51/97/18 68/133/18 52/134/18 +f 45/135/15 61/136/15 47/137/15 +f 38/138/16 35/139/16 37/140/16 +f 53/141/15 69/142/15 55/143/15 +f 46/144/16 62/145/16 45/146/16 +f 40/147/17 34/148/17 38/89/17 +f 54/149/16 70/150/16 53/151/16 +f 48/152/17 63/153/17 46/95/17 +f 39/88/18 33/154/18 40/155/18 +f 56/156/17 71/157/17 54/101/17 +f 47/94/18 64/158/18 48/159/18 +f 41/160/15 57/161/15 43/162/15 +f 55/100/18 72/163/18 56/164/18 +f 181/165/17 74/166/17 173/167/17 +f 177/168/15 75/169/15 169/170/15 +f 81/171/15 189/172/15 185/173/15 +f 78/174/16 81/175/16 74/176/16 +f 80/177/13 192/178/13 184/179/13 +f 74/166/14 185/180/14 173/167/14 +f 75/181/14 516/182/14 85/183/14 +f 85/183/17 197/184/17 193/185/17 +f 77/186/13 200/187/13 180/188/13 +f 75/181/14 193/185/14 169/189/14 +f 79/190/15 492/191/15 75/169/15 +f 73/192/16 88/193/16 77/194/16 +f 93/195/15 91/196/15 89/197/15 +f 95/198/18 92/199/18 91/200/18 +f 94/201/16 89/202/16 90/203/16 +f 96/204/17 90/205/17 92/206/17 +f 93/195/13 96/204/13 95/198/13 +f 101/207/15 99/208/15 97/209/15 +f 103/210/18 100/211/18 99/212/18 +f 102/213/16 97/214/16 98/215/16 +f 104/216/17 98/217/17 100/218/17 +f 101/207/13 104/216/13 103/210/13 +f 109/219/15 107/220/15 105/221/15 +f 111/222/18 108/223/18 107/224/18 +f 110/225/16 105/226/16 106/227/16 +f 112/228/17 106/229/17 108/230/17 +f 109/219/13 112/228/13 111/222/13 +f 117/231/15 115/232/15 113/233/15 +f 119/234/18 116/235/18 115/236/18 +f 118/237/16 113/238/16 114/239/16 +f 120/240/17 114/241/17 116/242/17 +f 117/231/13 120/240/13 119/234/13 +f 125/243/15 123/244/15 121/245/15 +f 127/246/18 124/247/18 123/248/18 +f 126/249/16 121/250/16 122/251/16 +f 128/252/17 122/253/17 124/254/17 +f 125/243/13 128/252/13 127/246/13 +f 133/255/15 131/256/15 129/257/15 +f 135/258/18 132/259/18 131/260/18 +f 134/261/16 129/262/16 130/263/16 +f 136/264/17 130/265/17 132/266/17 +f 133/255/13 136/264/13 135/258/13 +f 141/267/15 139/268/15 137/269/15 +f 143/270/18 140/271/18 139/272/18 +f 142/273/16 137/274/16 138/275/16 +f 144/276/17 138/277/17 140/278/17 +f 141/267/13 144/276/13 143/270/13 +f 149/279/15 147/280/15 145/281/15 +f 151/282/18 148/283/18 147/284/18 +f 150/285/16 145/286/16 146/287/16 +f 152/288/17 146/289/17 148/290/17 +f 149/279/13 152/288/13 151/282/13 +f 157/291/15 155/292/15 153/293/15 +f 159/294/18 156/295/18 155/296/18 +f 158/297/16 153/298/16 154/299/16 +f 160/300/17 154/301/17 156/302/17 +f 157/291/13 160/300/13 159/294/13 +f 165/303/15 163/304/15 161/305/15 +f 167/306/18 164/307/18 163/308/18 +f 166/309/16 161/310/16 162/311/16 +f 168/312/17 162/313/17 164/314/17 +f 165/303/13 168/312/13 167/306/13 +f 172/315/14 86/316/14 73/317/14 +f 171/318/14 196/319/14 172/320/14 +f 170/321/14 195/322/14 171/323/14 +f 169/324/14 194/325/14 170/326/14 +f 177/168/13 87/327/13 79/190/13 +f 178/328/13 197/329/13 177/330/13 +f 179/331/13 198/332/13 178/333/13 +f 180/334/13 199/335/13 179/336/13 +f 196/337/17 88/338/17 86/316/17 +f 195/339/17 200/340/17 196/319/17 +f 194/341/17 199/342/17 195/322/17 +f 193/343/17 198/344/17 194/325/17 +f 176/345/14 82/346/14 76/347/14 +f 175/348/14 188/349/14 176/350/14 +f 174/351/14 187/352/14 175/353/14 +f 173/354/14 186/355/14 174/356/14 +f 181/165/13 83/357/13 78/358/13 +f 182/359/13 189/360/13 181/361/13 +f 183/362/13 190/363/13 182/364/13 +f 184/365/13 191/366/13 183/367/13 +f 188/368/15 84/369/15 82/370/15 +f 187/371/15 192/372/15 188/373/15 +f 186/374/15 191/375/15 187/376/15 +f 185/377/15 190/378/15 186/379/15 +f 77/186/15 172/380/15 73/381/15 +f 180/334/15 171/382/15 172/383/15 +f 179/331/15 170/384/15 171/385/15 +f 178/328/15 169/386/15 170/387/15 +f 80/177/17 176/345/17 76/347/17 +f 184/365/17 175/348/17 176/350/17 +f 183/362/17 174/351/17 175/353/17 +f 182/359/17 173/354/17 174/356/17 +f 202/388/13 204/389/13 203/390/13 +f 207/391/14 206/392/14 205/393/14 +f 211/394/14 210/395/14 209/396/14 +f 215/397/14 214/398/14 213/399/14 +f 219/400/14 218/401/14 217/402/14 +f 223/403/14 222/404/14 221/405/14 +f 227/406/13 225/407/13 226/408/13 +f 231/409/13 229/410/13 230/411/13 +f 235/412/13 233/413/13 234/414/13 +f 239/415/13 237/416/13 238/417/13 +f 217/418/15 233/419/15 219/420/15 +f 210/421/16 226/422/16 209/423/16 +f 218/424/16 234/425/16 217/426/16 +f 212/427/17 227/428/17 210/395/17 +f 220/429/17 235/430/17 218/401/17 +f 211/394/18 228/431/18 212/432/18 +f 205/433/15 204/434/15 207/435/15 +f 219/400/18 236/436/18 220/437/18 +f 213/438/15 229/439/15 215/440/15 +f 206/441/16 203/442/16 205/443/16 +f 221/444/15 237/445/15 223/446/15 +f 214/447/16 230/448/16 213/449/16 +f 208/450/17 202/451/17 206/392/17 +f 222/452/16 238/453/16 221/454/16 +f 216/455/17 231/456/17 214/398/17 +f 207/391/18 201/457/18 208/458/18 +f 224/459/17 239/460/17 222/404/17 +f 215/397/18 232/461/18 216/462/18 +f 209/463/15 225/464/15 211/465/15 +f 223/403/18 240/466/18 224/467/18 +f 349/468/17 242/469/17 341/470/17 +f 345/471/15 243/472/15 337/473/15 +f 249/474/15 357/475/15 353/476/15 +f 520/477/13 79/190/13 87/327/13 +f 248/478/13 360/479/13 352/480/13 +f 242/469/14 353/481/14 341/470/14 +f 244/482/18 252/483/18 248/484/18 +f 253/485/17 365/486/17 361/487/17 +f 245/488/13 368/489/13 348/490/13 +f 243/491/14 361/487/14 337/492/14 +f 247/493/18 253/494/18 243/495/18 +f 85/183/17 520/477/17 87/327/17 +f 261/496/15 259/497/15 257/498/15 +f 263/499/18 260/500/18 259/501/18 +f 262/502/16 257/503/16 258/504/16 +f 264/505/17 258/506/17 260/507/17 +f 261/496/13 264/505/13 263/499/13 +f 269/508/15 267/509/15 265/510/15 +f 271/511/18 268/512/18 267/513/18 +f 270/514/16 265/515/16 266/516/16 +f 272/517/17 266/518/17 268/519/17 +f 269/508/13 272/517/13 271/511/13 +f 277/520/15 275/521/15 273/522/15 +f 279/523/18 276/524/18 275/525/18 +f 278/526/16 273/527/16 274/528/16 +f 280/529/17 274/530/17 276/531/17 +f 277/520/13 280/529/13 279/523/13 +f 285/532/15 283/533/15 281/534/15 +f 287/535/18 284/536/18 283/537/18 +f 286/538/16 281/539/16 282/540/16 +f 288/541/17 282/542/17 284/543/17 +f 285/532/13 288/541/13 287/535/13 +f 293/544/15 291/545/15 289/546/15 +f 295/547/18 292/548/18 291/549/18 +f 294/550/16 289/551/16 290/552/16 +f 296/553/17 290/554/17 292/555/17 +f 293/544/13 296/553/13 295/547/13 +f 301/556/15 299/557/15 297/558/15 +f 303/559/18 300/560/18 299/561/18 +f 302/562/16 297/563/16 298/564/16 +f 304/565/17 298/566/17 300/567/17 +f 301/556/13 304/565/13 303/559/13 +f 309/568/15 307/569/15 305/570/15 +f 311/571/18 308/572/18 307/573/18 +f 310/574/16 305/575/16 306/576/16 +f 312/577/17 306/578/17 308/579/17 +f 309/568/13 312/577/13 311/571/13 +f 317/580/15 315/581/15 313/582/15 +f 319/583/18 316/584/18 315/585/18 +f 318/586/16 313/587/16 314/588/16 +f 320/589/17 314/590/17 316/591/17 +f 317/580/13 320/589/13 319/583/13 +f 325/592/15 323/593/15 321/594/15 +f 327/595/18 324/596/18 323/597/18 +f 326/598/16 321/599/16 322/600/16 +f 328/601/17 322/602/17 324/603/17 +f 325/592/13 328/601/13 327/595/13 +f 333/604/15 331/605/15 329/606/15 +f 335/607/18 332/608/18 331/609/18 +f 334/610/16 329/611/16 330/612/16 +f 336/613/17 330/614/17 332/615/17 +f 333/604/13 336/613/13 335/607/13 +f 340/616/14 254/617/14 241/618/14 +f 339/619/14 364/620/14 340/621/14 +f 338/622/14 363/623/14 339/624/14 +f 337/625/14 362/626/14 338/627/14 +f 345/471/13 255/628/13 247/629/13 +f 346/630/13 365/631/13 345/632/13 +f 347/633/13 366/634/13 346/635/13 +f 348/636/13 367/637/13 347/638/13 +f 364/639/17 256/640/17 254/617/17 +f 363/641/17 368/642/17 364/620/17 +f 362/643/17 367/644/17 363/623/17 +f 361/645/17 366/646/17 362/626/17 +f 344/647/14 250/648/14 244/649/14 +f 343/650/14 356/651/14 344/652/14 +f 342/653/14 355/654/14 343/655/14 +f 341/656/14 354/657/14 342/658/14 +f 349/468/13 251/659/13 246/660/13 +f 350/661/13 357/662/13 349/663/13 +f 351/664/13 358/665/13 350/666/13 +f 352/667/13 359/668/13 351/669/13 +f 356/670/15 252/671/15 250/672/15 +f 355/673/15 360/674/15 356/675/15 +f 354/676/15 359/677/15 355/678/15 +f 353/679/15 358/680/15 354/681/15 +f 245/488/15 340/682/15 241/683/15 +f 348/636/15 339/684/15 340/685/15 +f 347/633/15 338/686/15 339/687/15 +f 346/630/15 337/688/15 338/689/15 +f 248/478/17 344/647/17 244/649/17 +f 352/667/17 343/650/17 344/652/17 +f 351/664/17 342/653/17 343/655/17 +f 350/661/17 341/656/17 342/658/17 +f 370/690/13 372/691/13 371/692/13 +f 375/693/14 374/694/14 373/695/14 +f 379/696/14 378/697/14 377/698/14 +f 383/699/14 382/700/14 381/701/14 +f 387/702/14 386/703/14 385/704/14 +f 391/705/14 390/706/14 389/707/14 +f 395/708/13 393/709/13 394/710/13 +f 399/711/13 397/712/13 398/713/13 +f 403/714/13 401/715/13 402/716/13 +f 407/717/13 405/718/13 406/719/13 +f 385/720/15 401/721/15 387/722/15 +f 378/723/16 394/724/16 377/725/16 +f 386/726/16 402/727/16 385/728/16 +f 380/729/17 395/730/17 378/697/17 +f 388/731/17 403/732/17 386/703/17 +f 379/696/18 396/733/18 380/734/18 +f 373/735/15 372/736/15 375/737/15 +f 387/702/18 404/738/18 388/739/18 +f 381/740/15 397/741/15 383/742/15 +f 374/743/16 371/744/16 373/745/16 +f 389/746/15 405/747/15 391/748/15 +f 382/749/16 398/750/16 381/751/16 +f 376/752/17 370/753/17 374/694/17 +f 390/754/16 406/755/16 389/756/16 +f 384/757/17 399/758/17 382/700/17 +f 375/693/18 369/759/18 376/760/18 +f 392/761/17 407/762/17 390/706/17 +f 383/699/18 400/763/18 384/764/18 +f 377/765/15 393/766/15 379/767/15 +f 391/705/18 408/768/18 392/769/18 +f 413/770/15 411/771/15 409/772/15 +f 415/773/18 412/774/18 411/775/18 +f 414/776/16 409/777/16 410/778/16 +f 416/779/17 410/780/17 412/781/17 +f 413/770/13 416/779/13 415/773/13 +f 421/782/15 419/783/15 417/784/15 +f 423/785/18 420/786/18 419/787/18 +f 422/788/16 417/789/16 418/790/16 +f 424/791/17 418/792/17 420/793/17 +f 421/782/13 424/791/13 423/785/13 +f 429/794/15 427/795/15 425/796/15 +f 431/797/18 428/798/18 427/799/18 +f 430/800/16 425/801/16 426/802/16 +f 432/803/17 426/804/17 428/805/17 +f 429/794/13 432/803/13 431/797/13 +f 437/806/15 435/807/15 433/808/15 +f 439/809/18 436/810/18 435/811/18 +f 438/812/16 433/813/16 434/814/16 +f 440/815/17 434/816/17 436/817/17 +f 437/806/13 440/815/13 439/809/13 +f 445/818/15 443/819/15 441/820/15 +f 447/821/18 444/822/18 443/823/18 +f 446/824/16 441/825/16 442/826/16 +f 448/827/17 442/828/17 444/829/17 +f 445/818/13 448/827/13 447/821/13 +f 453/830/15 451/831/15 449/832/15 +f 455/833/18 452/834/18 451/835/18 +f 454/836/16 449/837/16 450/838/16 +f 456/839/17 450/840/17 452/841/17 +f 453/830/13 456/839/13 455/833/13 +f 461/842/15 459/843/15 457/844/15 +f 463/845/18 460/846/18 459/847/18 +f 462/848/16 457/849/16 458/850/16 +f 464/851/17 458/852/17 460/853/17 +f 461/842/13 464/851/13 463/845/13 +f 469/854/15 467/855/15 465/856/15 +f 471/857/18 468/858/18 467/859/18 +f 470/860/16 465/861/16 466/862/16 +f 472/863/17 466/864/17 468/865/17 +f 469/854/13 472/863/13 471/857/13 +f 477/866/15 475/867/15 473/868/15 +f 479/869/18 476/870/18 475/871/18 +f 478/872/16 473/873/16 474/874/16 +f 480/875/17 474/876/17 476/877/17 +f 477/866/13 480/875/13 479/869/13 +f 485/878/15 483/879/15 481/880/15 +f 487/881/18 484/882/18 483/883/18 +f 486/884/16 481/885/16 482/886/16 +f 488/887/17 482/888/17 484/889/17 +f 485/878/13 488/887/13 487/881/13 +f 491/890/14 516/182/14 492/891/14 +f 490/892/14 515/893/14 491/894/14 +f 489/895/14 514/896/14 490/897/14 +f 498/898/13 517/899/13 497/900/13 +f 499/901/13 518/902/13 498/903/13 +f 500/904/13 519/905/13 499/906/13 +f 515/907/17 520/477/17 516/182/17 +f 514/908/17 519/909/17 515/893/17 +f 513/910/17 518/911/17 514/896/17 +f 495/912/14 508/913/14 496/914/14 +f 494/915/14 507/916/14 495/917/14 +f 493/918/14 506/919/14 494/920/14 +f 502/921/13 509/922/13 501/923/13 +f 503/924/13 510/925/13 502/926/13 +f 504/927/13 511/928/13 503/929/13 +f 507/930/15 512/931/15 508/932/15 +f 506/933/15 511/934/15 507/935/15 +f 505/936/15 510/937/15 506/938/15 +f 500/904/15 491/939/15 492/191/15 +f 499/901/15 490/940/15 491/941/15 +f 498/898/15 489/942/15 490/943/15 +f 504/927/17 495/912/17 496/914/17 +f 503/924/17 494/915/17 495/917/17 +f 502/921/17 493/918/17 494/920/17 +f 493/918/17 80/177/17 76/347/17 +f 80/177/13 509/922/13 84/369/13 +f 509/922/15 82/370/15 84/369/15 +f 505/944/14 76/347/14 82/346/14 +f 517/899/17 254/617/17 256/640/17 +f 245/488/13 517/899/13 256/640/13 +f 489/942/15 245/488/15 241/683/15 +f 513/910/14 241/618/14 254/617/14 +f 246/660/17 496/914/17 242/469/17 +f 512/931/13 246/660/13 251/659/13 +f 249/474/15 512/931/15 251/659/15 +f 242/469/14 508/913/14 249/945/14 +f 568/946/19 571/947/19 572/948/19 +f 539/949/19 605/950/19 540/951/19 +f 574/952/19 605/953/19 606/954/19 +f 548/955/20 539/956/20 540/957/20 +f 536/958/14 548/955/14 540/957/14 +f 531/959/14 530/960/14 532/961/14 +f 537/962/14 568/963/14 565/964/14 +f 528/965/21 532/966/21 530/967/21 +f 568/963/19 534/968/19 567/969/19 +f 524/970/22 615/971/22 523/972/22 +f 571/947/13 566/973/13 575/974/13 +f 567/969/13 538/975/13 566/976/13 +f 522/977/21 616/978/21 524/979/21 +f 549/980/23 542/981/23 541/982/23 +f 554/983/24 545/984/24 546/985/24 +f 534/986/13 546/987/13 538/988/13 +f 543/989/25 536/990/25 535/991/25 +f 539/956/13 543/989/13 535/991/13 +f 545/992/14 533/993/14 537/994/14 +f 546/987/25 537/995/25 538/988/25 +f 541/996/20 534/986/20 533/993/20 +f 561/997/14 549/998/14 553/999/14 +f 563/1000/13 551/1001/13 555/1002/13 +f 544/1003/14 556/1004/14 548/1005/14 +f 556/1004/23 547/1006/23 548/1005/23 +f 542/981/13 554/983/13 546/985/13 +f 551/1007/24 544/1008/24 543/1009/24 +f 555/1010/13 543/1009/13 547/1006/13 +f 553/1011/14 541/982/14 545/1012/14 +f 562/1013/26 553/1014/26 554/1015/26 +f 557/1016/27 550/1017/27 549/998/27 +f 552/1018/14 564/1019/14 556/1020/14 +f 564/1019/27 555/1002/27 556/1020/27 +f 550/1017/13 562/1013/13 554/1015/13 +f 559/1021/26 552/1022/26 551/1001/26 +f 535/1023/13 606/1024/13 539/949/13 +f 584/1025/25 575/1026/25 576/1027/25 +f 572/1028/14 584/1029/14 576/1030/14 +f 566/973/28 576/1031/28 575/974/28 +f 566/976/28 537/1032/28 565/1033/28 +f 526/1034/29 529/1035/29 531/1036/29 +f 565/1037/14 572/948/14 576/1038/14 +f 528/1039/13 526/1040/13 527/1041/13 +f 521/1042/30 614/1043/30 522/1044/30 +f 525/1045/30 530/960/30 529/1046/30 +f 527/1047/22 531/1048/22 532/1049/22 +f 585/1050/24 578/1051/24 577/1052/24 +f 590/1053/23 581/1054/23 582/1055/23 +f 570/1056/13 582/1057/13 574/1058/13 +f 579/1059/20 572/1028/20 571/1060/20 +f 583/1061/13 571/1060/13 575/1026/13 +f 581/1062/14 569/1063/14 573/1064/14 +f 582/1057/20 573/1064/20 574/1058/20 +f 577/1065/25 570/1056/25 569/1066/25 +f 589/1067/14 593/1068/14 585/1069/14 +f 599/1070/13 587/1071/13 591/1072/13 +f 580/1073/14 592/1074/14 584/1075/14 +f 592/1076/24 583/1077/24 584/1078/24 +f 578/1051/13 590/1053/13 582/1055/13 +f 587/1079/23 580/1073/23 579/1080/23 +f 591/1081/13 579/1080/13 583/1077/13 +f 589/1082/14 577/1083/14 581/1054/14 +f 598/1084/27 589/1067/27 590/1085/27 +f 593/1086/26 586/1087/26 585/1088/26 +f 588/1089/14 600/1090/14 592/1091/14 +f 600/1092/26 591/1072/26 592/1093/26 +f 594/1094/13 590/1085/13 586/1087/13 +f 595/1095/27 588/1089/27 587/1071/27 +f 607/1096/28 570/1097/28 608/1098/28 +f 602/1099/13 603/1100/13 604/1101/13 +f 608/1098/13 574/952/13 606/954/13 +f 611/1102/29 601/1103/29 609/1104/29 +f 612/1105/22 603/1100/22 611/1106/22 +f 609/1107/30 602/1099/30 610/1108/30 +f 536/1109/14 605/950/14 607/1110/14 +f 610/1111/21 604/1101/21 612/1112/21 +f 607/1113/14 573/1114/14 569/1115/14 +f 614/1043/13 615/971/13 616/978/13 +f 523/1116/29 613/1117/29 521/1118/29 +f 620/1119/13 618/1120/13 619/1121/13 +f 622/1122/14 623/1123/14 621/1124/14 +f 626/1125/14 627/1126/14 625/1127/14 +f 630/1128/14 631/1129/14 629/1130/14 +f 634/1131/14 635/1132/14 633/1133/14 +f 637/1134/13 639/1135/13 638/1136/13 +f 641/1137/13 643/1138/13 642/1139/13 +f 645/1140/13 647/1141/13 646/1142/13 +f 638/1143/16 626/1144/16 625/1145/16 +f 639/1146/15 628/1147/15 626/1148/15 +f 640/1149/18 627/1126/18 628/1150/18 +f 620/1151/17 621/1152/17 623/1153/17 +f 641/1154/17 629/1155/17 631/1156/17 +f 619/1157/16 622/1158/16 621/1159/16 +f 645/1160/17 633/1161/17 635/1162/17 +f 642/1163/16 630/1164/16 629/1165/16 +f 618/1166/15 624/1167/15 622/1168/15 +f 646/1169/16 634/1170/16 633/1171/16 +f 643/1172/15 632/1173/15 630/1174/15 +f 617/1175/18 623/1123/18 624/1176/18 +f 647/1177/15 636/1178/15 634/1179/15 +f 644/1180/18 631/1129/18 632/1181/18 +f 637/1182/17 625/1183/17 627/1184/17 +f 648/1185/18 635/1132/18 636/1186/18 +f 649/1187/17 729/1188/17 721/1189/17 +f 744/1190/13 652/1191/13 736/1192/13 +f 654/1193/18 650/1194/18 652/1195/18 +f 749/1196/15 655/1197/15 745/1198/15 +f 745/1198/14 649/1199/14 721/1200/14 +f 655/1201/18 651/1202/18 649/1203/18 +f 659/1204/17 661/1205/17 657/1206/17 +f 660/1207/18 663/1208/18 659/1209/18 +f 657/1210/16 662/1211/16 658/1212/16 +f 658/1213/15 664/1214/15 660/1215/15 +f 664/1214/13 661/1205/13 663/1208/13 +f 667/1216/17 669/1217/17 665/1218/17 +f 668/1219/18 671/1220/18 667/1221/18 +f 665/1222/16 670/1223/16 666/1224/16 +f 666/1225/15 672/1226/15 668/1227/15 +f 672/1226/13 669/1217/13 671/1220/13 +f 675/1228/17 677/1229/17 673/1230/17 +f 676/1231/18 679/1232/18 675/1233/18 +f 673/1234/16 678/1235/16 674/1236/16 +f 674/1237/15 680/1238/15 676/1239/15 +f 680/1238/13 677/1229/13 679/1232/13 +f 683/1240/17 685/1241/17 681/1242/17 +f 684/1243/18 687/1244/18 683/1245/18 +f 681/1246/16 686/1247/16 682/1248/16 +f 682/1249/15 688/1250/15 684/1251/15 +f 688/1250/13 685/1241/13 687/1244/13 +f 691/1252/17 693/1253/17 689/1254/17 +f 692/1255/18 695/1256/18 691/1257/18 +f 689/1258/16 694/1259/16 690/1260/16 +f 690/1261/15 696/1262/15 692/1263/15 +f 696/1262/13 693/1253/13 695/1256/13 +f 699/1264/17 701/1265/17 697/1266/17 +f 700/1267/18 703/1268/18 699/1269/18 +f 697/1270/16 702/1271/16 698/1272/16 +f 698/1273/15 704/1274/15 700/1275/15 +f 704/1274/13 701/1265/13 703/1268/13 +f 707/1276/17 709/1277/17 705/1278/17 +f 708/1279/18 711/1280/18 707/1281/18 +f 705/1282/16 710/1283/16 706/1284/16 +f 706/1285/15 712/1286/15 708/1287/15 +f 712/1286/13 709/1277/13 711/1280/13 +f 715/1288/17 717/1289/17 713/1290/17 +f 716/1291/18 719/1292/18 715/1293/18 +f 713/1294/16 718/1295/16 714/1296/16 +f 714/1297/15 720/1298/15 716/1299/15 +f 720/1298/13 717/1289/13 719/1292/13 +f 748/1300/14 723/1301/14 724/1302/14 +f 747/1303/14 722/1304/14 723/1305/14 +f 746/1306/14 721/1307/14 722/1308/14 +f 656/1309/13 729/1188/13 651/1310/13 +f 749/1311/13 730/1312/13 729/1313/13 +f 750/1314/13 731/1315/13 730/1316/13 +f 751/1317/13 732/1318/13 731/1319/13 +f 752/1320/15 747/1321/15 748/1300/15 +f 751/1322/15 746/1323/15 747/1303/15 +f 750/1324/15 745/1325/15 746/1306/15 +f 653/1326/14 728/1327/14 650/1328/14 +f 740/1329/14 727/1330/14 728/1331/14 +f 739/1332/14 726/1333/14 727/1334/14 +f 738/1335/14 725/1336/14 726/1337/14 +f 741/1338/13 734/1339/13 733/1340/13 +f 742/1341/13 735/1342/13 734/1343/13 +f 743/1344/13 736/1345/13 735/1346/13 +f 654/1347/17 740/1348/17 653/1349/17 +f 744/1350/17 739/1351/17 740/1352/17 +f 743/1353/17 738/1354/17 739/1355/17 +f 742/1356/17 737/1357/17 738/1358/17 +f 723/1359/17 732/1318/17 724/1360/17 +f 722/1361/17 731/1315/17 723/1362/17 +f 721/1363/17 730/1312/17 722/1364/17 +f 728/1327/15 652/1191/15 650/1328/15 +f 727/1330/15 736/1345/15 728/1331/15 +f 726/1333/15 735/1342/15 727/1334/15 +f 725/1336/15 734/1339/15 726/1337/15 +f 600/1365/17 741/1366/17 599/1367/17 +f 741/1366/13 595/1368/13 599/1367/13 +f 595/1368/15 725/1369/15 596/1370/15 +f 596/1370/14 737/1371/14 600/1372/14 +f 724/1373/17 594/1374/17 593/1375/17 +f 598/1376/13 732/1377/13 752/1378/13 +f 752/1378/15 597/1379/15 598/1376/15 +f 748/1380/14 593/1381/14 597/1379/14 +f 536/1382/28 608/1383/28 535/1023/28 +f 763/1384/14 762/1385/14 764/1386/14 +f 760/1387/25 764/1388/25 762/1389/25 +f 756/1390/31 775/1391/31 755/1392/31 +f 754/1393/25 776/1394/25 756/1395/25 +f 758/1396/20 761/1397/20 763/1398/20 +f 760/1399/13 758/1400/13 759/1401/13 +f 753/1402/32 774/1403/32 754/1404/32 +f 757/1405/32 762/1385/32 761/1406/32 +f 759/1407/31 763/1408/31 764/1409/31 +f 766/1410/13 767/1411/13 768/1412/13 +f 771/1413/20 765/1414/20 769/1415/20 +f 772/1416/31 767/1411/31 771/1417/31 +f 769/1418/32 766/1410/32 770/1419/32 +f 770/1420/25 768/1412/25 772/1421/25 +f 774/1403/13 775/1391/13 776/1394/13 +f 755/1422/20 773/1423/20 753/1424/20 +f 788/1425/14 785/1426/14 786/1427/14 +f 784/1428/24 788/1429/24 786/1430/24 +f 780/1431/33 799/1432/33 779/1433/33 +f 778/1434/24 800/1435/24 780/1436/24 +f 782/1437/23 785/1438/23 787/1439/23 +f 783/1440/13 781/1441/13 782/1442/13 +f 777/1443/34 798/1444/34 778/1445/34 +f 781/1441/34 786/1427/34 785/1426/34 +f 783/1446/33 787/1447/33 788/1448/33 +f 790/1449/13 791/1450/13 792/1451/13 +f 795/1452/23 789/1453/23 793/1454/23 +f 796/1455/33 791/1450/33 795/1456/33 +f 793/1457/34 790/1449/34 794/1458/34 +f 794/1459/24 792/1451/24 796/1460/24 +f 798/1444/13 799/1432/13 800/1435/13 +f 779/1461/23 797/1462/23 777/1463/23 +f 811/1464/14 810/1465/14 812/1466/14 +f 808/1467/26 812/1468/26 810/1469/26 +f 804/1470/35 823/1471/35 803/1472/35 +f 802/1473/26 824/1474/26 804/1475/26 +f 806/1476/27 809/1477/27 811/1478/27 +f 808/1479/13 806/1480/13 807/1481/13 +f 801/1482/36 822/1483/36 802/1484/36 +f 805/1485/36 810/1465/36 809/1486/36 +f 807/1487/35 811/1488/35 812/1489/35 +f 813/1490/13 816/1491/13 814/1492/13 +f 819/1493/27 813/1490/27 817/1494/27 +f 820/1495/35 815/1496/35 819/1497/35 +f 817/1498/36 814/1492/36 818/1499/36 +f 818/1500/26 816/1491/26 820/1501/26 +f 821/1502/13 824/1474/13 822/1483/13 +f 803/1503/27 821/1502/27 801/1504/27 +f 836/1505/14 833/1506/14 834/1507/14 +f 832/1508/21 836/1509/21 834/1510/21 +f 828/1511/22 847/1512/22 827/1513/22 +f 826/1514/21 848/1515/21 828/1516/21 +f 830/1517/29 833/1518/29 835/1519/29 +f 831/1520/13 829/1521/13 830/1522/13 +f 825/1523/30 846/1524/30 826/1525/30 +f 829/1521/30 834/1507/30 833/1506/30 +f 831/1526/22 835/1527/22 836/1528/22 +f 838/1529/13 839/1530/13 840/1531/13 +f 843/1532/29 837/1533/29 841/1534/29 +f 844/1535/22 839/1530/22 843/1536/22 +f 841/1537/30 838/1529/30 842/1538/30 +f 842/1539/21 840/1531/21 844/1540/21 +f 845/1541/13 848/1515/13 846/1524/13 +f 827/1542/29 845/1541/29 825/1543/29 +f 850/1544/14 851/1545/14 849/1546/14 +f 853/1547/13 855/1548/13 854/1549/13 +f 853/1550/17 849/1551/17 851/1552/17 +f 854/1553/16 850/1554/16 849/1555/16 +f 855/1556/15 852/1557/15 850/1558/15 +f 856/1559/18 851/1545/18 852/1560/18 +f 859/1561/17 861/1562/17 857/1563/17 +f 860/1564/18 863/1565/18 859/1566/18 +f 857/1567/16 862/1568/16 858/1569/16 +f 858/1570/15 864/1571/15 860/1572/15 +f 864/1571/13 861/1562/13 863/1565/13 +f 867/1573/17 869/1574/17 865/1575/17 +f 868/1576/18 871/1577/18 867/1578/18 +f 865/1579/16 870/1580/16 866/1581/16 +f 866/1582/15 872/1583/15 868/1584/15 +f 872/1583/13 869/1574/13 871/1577/13 +f 34/85/13 33/154/13 36/86/13 +f 39/88/14 40/155/14 38/89/14 +f 43/91/14 44/129/14 42/92/14 +f 47/94/14 48/159/14 46/95/14 +f 51/97/14 52/134/14 50/98/14 +f 55/100/14 56/164/14 54/101/14 +f 59/103/13 60/128/13 57/104/13 +f 63/106/13 64/158/13 61/107/13 +f 67/109/13 68/133/13 65/110/13 +f 71/112/13 72/163/13 69/113/13 +f 49/115/15 66/1585/15 65/116/15 +f 42/118/16 59/1586/16 58/119/16 +f 50/121/16 67/1587/16 66/122/16 +f 44/124/17 60/1588/17 59/125/17 +f 52/126/17 68/1589/17 67/127/17 +f 43/91/18 57/104/18 60/128/18 +f 37/130/15 35/1590/15 36/131/15 +f 51/97/18 65/110/18 68/133/18 +f 45/135/15 62/1591/15 61/136/15 +f 38/138/16 34/1592/16 35/139/16 +f 53/141/15 70/1593/15 69/142/15 +f 46/144/16 63/1594/16 62/145/16 +f 40/147/17 33/1595/17 34/148/17 +f 54/149/16 71/1596/16 70/150/16 +f 48/152/17 64/1597/17 63/153/17 +f 39/88/18 36/86/18 33/154/18 +f 56/156/17 72/1598/17 71/157/17 +f 47/94/18 61/107/18 64/158/18 +f 41/160/15 58/1599/15 57/161/15 +f 55/100/18 69/113/18 72/163/18 +f 181/165/17 78/358/17 74/166/17 +f 177/168/15 79/190/15 75/169/15 +f 81/171/15 83/357/15 189/172/15 +f 78/174/16 83/1600/16 81/175/16 +f 80/177/13 84/369/13 192/178/13 +f 74/166/14 81/1601/14 185/180/14 +f 75/181/14 492/891/14 516/182/14 +f 85/183/17 87/327/17 197/184/17 +f 77/186/13 88/338/13 200/187/13 +f 75/181/14 85/183/14 193/185/14 +f 79/190/15 500/904/15 492/191/15 +f 73/192/16 86/1602/16 88/193/16 +f 93/195/15 95/198/15 91/196/15 +f 95/198/18 96/204/18 92/199/18 +f 94/201/16 93/195/16 89/202/16 +f 96/204/17 94/201/17 90/205/17 +f 93/195/13 94/201/13 96/204/13 +f 101/207/15 103/210/15 99/208/15 +f 103/210/18 104/216/18 100/211/18 +f 102/213/16 101/207/16 97/214/16 +f 104/216/17 102/213/17 98/217/17 +f 101/207/13 102/213/13 104/216/13 +f 109/219/15 111/222/15 107/220/15 +f 111/222/18 112/228/18 108/223/18 +f 110/225/16 109/219/16 105/226/16 +f 112/228/17 110/225/17 106/229/17 +f 109/219/13 110/225/13 112/228/13 +f 117/231/15 119/234/15 115/232/15 +f 119/234/18 120/240/18 116/235/18 +f 118/237/16 117/231/16 113/238/16 +f 120/240/17 118/237/17 114/241/17 +f 117/231/13 118/237/13 120/240/13 +f 125/243/15 127/246/15 123/244/15 +f 127/246/18 128/252/18 124/247/18 +f 126/249/16 125/243/16 121/250/16 +f 128/252/17 126/249/17 122/253/17 +f 125/243/13 126/249/13 128/252/13 +f 133/255/15 135/258/15 131/256/15 +f 135/258/18 136/264/18 132/259/18 +f 134/261/16 133/255/16 129/262/16 +f 136/264/17 134/261/17 130/265/17 +f 133/255/13 134/261/13 136/264/13 +f 141/267/15 143/270/15 139/268/15 +f 143/270/18 144/276/18 140/271/18 +f 142/273/16 141/267/16 137/274/16 +f 144/276/17 142/273/17 138/277/17 +f 141/267/13 142/273/13 144/276/13 +f 149/279/15 151/282/15 147/280/15 +f 151/282/18 152/288/18 148/283/18 +f 150/285/16 149/279/16 145/286/16 +f 152/288/17 150/285/17 146/289/17 +f 149/279/13 150/285/13 152/288/13 +f 157/291/15 159/294/15 155/292/15 +f 159/294/18 160/300/18 156/295/18 +f 158/297/16 157/291/16 153/298/16 +f 160/300/17 158/297/17 154/301/17 +f 157/291/13 158/297/13 160/300/13 +f 165/303/15 167/306/15 163/304/15 +f 167/306/18 168/312/18 164/307/18 +f 166/309/16 165/303/16 161/310/16 +f 168/312/17 166/309/17 162/313/17 +f 165/303/13 166/309/13 168/312/13 +f 172/315/14 196/337/14 86/316/14 +f 171/318/14 195/339/14 196/319/14 +f 170/321/14 194/341/14 195/322/14 +f 169/324/14 193/343/14 194/325/14 +f 177/168/13 197/184/13 87/327/13 +f 178/328/13 198/344/13 197/329/13 +f 179/331/13 199/342/13 198/332/13 +f 180/334/13 200/340/13 199/335/13 +f 196/337/17 200/187/17 88/338/17 +f 195/339/17 199/335/17 200/340/17 +f 194/341/17 198/332/17 199/342/17 +f 193/343/17 197/329/17 198/344/17 +f 176/345/14 188/1603/14 82/346/14 +f 175/348/14 187/1604/14 188/349/14 +f 174/351/14 186/1605/14 187/352/14 +f 173/354/14 185/1606/14 186/355/14 +f 181/165/13 189/172/13 83/357/13 +f 182/359/13 190/378/13 189/360/13 +f 183/362/13 191/375/13 190/363/13 +f 184/365/13 192/372/13 191/366/13 +f 188/368/15 192/178/15 84/369/15 +f 187/371/15 191/366/15 192/372/15 +f 186/374/15 190/363/15 191/375/15 +f 185/377/15 189/360/15 190/378/15 +f 77/186/15 180/188/15 172/380/15 +f 180/334/15 179/336/15 171/382/15 +f 179/331/15 178/333/15 170/384/15 +f 178/328/15 177/330/15 169/386/15 +f 80/177/17 184/179/17 176/345/17 +f 184/365/17 183/367/17 175/348/17 +f 183/362/17 182/364/17 174/351/17 +f 182/359/17 181/361/17 173/354/17 +f 202/388/13 201/457/13 204/389/13 +f 207/391/14 208/458/14 206/392/14 +f 211/394/14 212/432/14 210/395/14 +f 215/397/14 216/462/14 214/398/14 +f 219/400/14 220/437/14 218/401/14 +f 223/403/14 224/467/14 222/404/14 +f 227/406/13 228/431/13 225/407/13 +f 231/409/13 232/461/13 229/410/13 +f 235/412/13 236/436/13 233/413/13 +f 239/415/13 240/466/13 237/416/13 +f 217/418/15 234/1607/15 233/419/15 +f 210/421/16 227/1608/16 226/422/16 +f 218/424/16 235/1609/16 234/425/16 +f 212/427/17 228/1610/17 227/428/17 +f 220/429/17 236/1611/17 235/430/17 +f 211/394/18 225/407/18 228/431/18 +f 205/433/15 203/1612/15 204/434/15 +f 219/400/18 233/413/18 236/436/18 +f 213/438/15 230/1613/15 229/439/15 +f 206/441/16 202/1614/16 203/442/16 +f 221/444/15 238/1615/15 237/445/15 +f 214/447/16 231/1616/16 230/448/16 +f 208/450/17 201/1617/17 202/451/17 +f 222/452/16 239/1618/16 238/453/16 +f 216/455/17 232/1619/17 231/456/17 +f 207/391/18 204/389/18 201/457/18 +f 224/459/17 240/1620/17 239/460/17 +f 215/397/18 229/410/18 232/461/18 +f 209/463/15 226/1621/15 225/464/15 +f 223/403/18 237/416/18 240/466/18 +f 349/468/17 246/660/17 242/469/17 +f 345/471/15 247/629/15 243/472/15 +f 249/474/15 251/659/15 357/475/15 +f 520/477/13 500/904/13 79/190/13 +f 248/478/13 252/671/13 360/479/13 +f 242/469/14 249/945/14 353/481/14 +f 244/482/18 250/1622/18 252/483/18 +f 253/485/17 255/628/17 365/486/17 +f 245/488/13 256/640/13 368/489/13 +f 243/491/14 253/485/14 361/487/14 +f 247/493/18 255/1623/18 253/494/18 +f 85/183/17 516/182/17 520/477/17 +f 261/496/15 263/499/15 259/497/15 +f 263/499/18 264/505/18 260/500/18 +f 262/502/16 261/496/16 257/503/16 +f 264/505/17 262/502/17 258/506/17 +f 261/496/13 262/502/13 264/505/13 +f 269/508/15 271/511/15 267/509/15 +f 271/511/18 272/517/18 268/512/18 +f 270/514/16 269/508/16 265/515/16 +f 272/517/17 270/514/17 266/518/17 +f 269/508/13 270/514/13 272/517/13 +f 277/520/15 279/523/15 275/521/15 +f 279/523/18 280/529/18 276/524/18 +f 278/526/16 277/520/16 273/527/16 +f 280/529/17 278/526/17 274/530/17 +f 277/520/13 278/526/13 280/529/13 +f 285/532/15 287/535/15 283/533/15 +f 287/535/18 288/541/18 284/536/18 +f 286/538/16 285/532/16 281/539/16 +f 288/541/17 286/538/17 282/542/17 +f 285/532/13 286/538/13 288/541/13 +f 293/544/15 295/547/15 291/545/15 +f 295/547/18 296/553/18 292/548/18 +f 294/550/16 293/544/16 289/551/16 +f 296/553/17 294/550/17 290/554/17 +f 293/544/13 294/550/13 296/553/13 +f 301/556/15 303/559/15 299/557/15 +f 303/559/18 304/565/18 300/560/18 +f 302/562/16 301/556/16 297/563/16 +f 304/565/17 302/562/17 298/566/17 +f 301/556/13 302/562/13 304/565/13 +f 309/568/15 311/571/15 307/569/15 +f 311/571/18 312/577/18 308/572/18 +f 310/574/16 309/568/16 305/575/16 +f 312/577/17 310/574/17 306/578/17 +f 309/568/13 310/574/13 312/577/13 +f 317/580/15 319/583/15 315/581/15 +f 319/583/18 320/589/18 316/584/18 +f 318/586/16 317/580/16 313/587/16 +f 320/589/17 318/586/17 314/590/17 +f 317/580/13 318/586/13 320/589/13 +f 325/592/15 327/595/15 323/593/15 +f 327/595/18 328/601/18 324/596/18 +f 326/598/16 325/592/16 321/599/16 +f 328/601/17 326/598/17 322/602/17 +f 325/592/13 326/598/13 328/601/13 +f 333/604/15 335/607/15 331/605/15 +f 335/607/18 336/613/18 332/608/18 +f 334/610/16 333/604/16 329/611/16 +f 336/613/17 334/610/17 330/614/17 +f 333/604/13 334/610/13 336/613/13 +f 340/616/14 364/639/14 254/617/14 +f 339/619/14 363/641/14 364/620/14 +f 338/622/14 362/643/14 363/623/14 +f 337/625/14 361/645/14 362/626/14 +f 345/471/13 365/486/13 255/628/13 +f 346/630/13 366/646/13 365/631/13 +f 347/633/13 367/644/13 366/634/13 +f 348/636/13 368/642/13 367/637/13 +f 364/639/17 368/489/17 256/640/17 +f 363/641/17 367/637/17 368/642/17 +f 362/643/17 366/634/17 367/644/17 +f 361/645/17 365/631/17 366/646/17 +f 344/647/14 356/1624/14 250/648/14 +f 343/650/14 355/1625/14 356/651/14 +f 342/653/14 354/1626/14 355/654/14 +f 341/656/14 353/1627/14 354/657/14 +f 349/468/13 357/475/13 251/659/13 +f 350/661/13 358/680/13 357/662/13 +f 351/664/13 359/677/13 358/665/13 +f 352/667/13 360/674/13 359/668/13 +f 356/670/15 360/479/15 252/671/15 +f 355/673/15 359/668/15 360/674/15 +f 354/676/15 358/665/15 359/677/15 +f 353/679/15 357/662/15 358/680/15 +f 245/488/15 348/490/15 340/682/15 +f 348/636/15 347/638/15 339/684/15 +f 347/633/15 346/635/15 338/686/15 +f 346/630/15 345/632/15 337/688/15 +f 248/478/17 352/480/17 344/647/17 +f 352/667/17 351/669/17 343/650/17 +f 351/664/17 350/666/17 342/653/17 +f 350/661/17 349/663/17 341/656/17 +f 370/690/13 369/759/13 372/691/13 +f 375/693/14 376/760/14 374/694/14 +f 379/696/14 380/734/14 378/697/14 +f 383/699/14 384/764/14 382/700/14 +f 387/702/14 388/739/14 386/703/14 +f 391/705/14 392/769/14 390/706/14 +f 395/708/13 396/733/13 393/709/13 +f 399/711/13 400/763/13 397/712/13 +f 403/714/13 404/738/13 401/715/13 +f 407/717/13 408/768/13 405/718/13 +f 385/720/15 402/1628/15 401/721/15 +f 378/723/16 395/1629/16 394/724/16 +f 386/726/16 403/1630/16 402/727/16 +f 380/729/17 396/1631/17 395/730/17 +f 388/731/17 404/1632/17 403/732/17 +f 379/696/18 393/709/18 396/733/18 +f 373/735/15 371/1633/15 372/736/15 +f 387/702/18 401/715/18 404/738/18 +f 381/740/15 398/1634/15 397/741/15 +f 374/743/16 370/1635/16 371/744/16 +f 389/746/15 406/1636/15 405/747/15 +f 382/749/16 399/1637/16 398/750/16 +f 376/752/17 369/1638/17 370/753/17 +f 390/754/16 407/1639/16 406/755/16 +f 384/757/17 400/1640/17 399/758/17 +f 375/693/18 372/691/18 369/759/18 +f 392/761/17 408/1641/17 407/762/17 +f 383/699/18 397/712/18 400/763/18 +f 377/765/15 394/1642/15 393/766/15 +f 391/705/18 405/718/18 408/768/18 +f 413/770/15 415/773/15 411/771/15 +f 415/773/18 416/779/18 412/774/18 +f 414/776/16 413/770/16 409/777/16 +f 416/779/17 414/776/17 410/780/17 +f 413/770/13 414/776/13 416/779/13 +f 421/782/15 423/785/15 419/783/15 +f 423/785/18 424/791/18 420/786/18 +f 422/788/16 421/782/16 417/789/16 +f 424/791/17 422/788/17 418/792/17 +f 421/782/13 422/788/13 424/791/13 +f 429/794/15 431/797/15 427/795/15 +f 431/797/18 432/803/18 428/798/18 +f 430/800/16 429/794/16 425/801/16 +f 432/803/17 430/800/17 426/804/17 +f 429/794/13 430/800/13 432/803/13 +f 437/806/15 439/809/15 435/807/15 +f 439/809/18 440/815/18 436/810/18 +f 438/812/16 437/806/16 433/813/16 +f 440/815/17 438/812/17 434/816/17 +f 437/806/13 438/812/13 440/815/13 +f 445/818/15 447/821/15 443/819/15 +f 447/821/18 448/827/18 444/822/18 +f 446/824/16 445/818/16 441/825/16 +f 448/827/17 446/824/17 442/828/17 +f 445/818/13 446/824/13 448/827/13 +f 453/830/15 455/833/15 451/831/15 +f 455/833/18 456/839/18 452/834/18 +f 454/836/16 453/830/16 449/837/16 +f 456/839/17 454/836/17 450/840/17 +f 453/830/13 454/836/13 456/839/13 +f 461/842/15 463/845/15 459/843/15 +f 463/845/18 464/851/18 460/846/18 +f 462/848/16 461/842/16 457/849/16 +f 464/851/17 462/848/17 458/852/17 +f 461/842/13 462/848/13 464/851/13 +f 469/854/15 471/857/15 467/855/15 +f 471/857/18 472/863/18 468/858/18 +f 470/860/16 469/854/16 465/861/16 +f 472/863/17 470/860/17 466/864/17 +f 469/854/13 470/860/13 472/863/13 +f 477/866/15 479/869/15 475/867/15 +f 479/869/18 480/875/18 476/870/18 +f 478/872/16 477/866/16 473/873/16 +f 480/875/17 478/872/17 474/876/17 +f 477/866/13 478/872/13 480/875/13 +f 485/878/15 487/881/15 483/879/15 +f 487/881/18 488/887/18 484/882/18 +f 486/884/16 485/878/16 481/885/16 +f 488/887/17 486/884/17 482/888/17 +f 485/878/13 486/884/13 488/887/13 +f 491/890/14 515/907/14 516/182/14 +f 490/892/14 514/908/14 515/893/14 +f 489/895/14 513/910/14 514/896/14 +f 498/898/13 518/911/13 517/899/13 +f 499/901/13 519/909/13 518/902/13 +f 500/904/13 520/477/13 519/905/13 +f 515/907/17 519/905/17 520/477/17 +f 514/908/17 518/902/17 519/909/17 +f 513/910/17 517/899/17 518/911/17 +f 495/912/14 507/1643/14 508/913/14 +f 494/915/14 506/1644/14 507/916/14 +f 493/918/14 505/944/14 506/919/14 +f 502/921/13 510/937/13 509/922/13 +f 503/924/13 511/934/13 510/925/13 +f 504/927/13 512/931/13 511/928/13 +f 507/930/15 511/928/15 512/931/15 +f 506/933/15 510/925/15 511/934/15 +f 505/936/15 509/922/15 510/937/15 +f 500/904/15 499/906/15 491/939/15 +f 499/901/15 498/903/15 490/940/15 +f 498/898/15 497/900/15 489/942/15 +f 504/927/17 503/929/17 495/912/17 +f 503/924/17 502/926/17 494/915/17 +f 502/921/17 501/923/17 493/918/17 +f 493/918/17 501/923/17 80/177/17 +f 80/177/13 501/923/13 509/922/13 +f 509/922/15 505/936/15 82/370/15 +f 505/944/14 493/918/14 76/347/14 +f 517/899/17 513/910/17 254/617/17 +f 245/488/13 497/900/13 517/899/13 +f 489/942/15 497/900/15 245/488/15 +f 513/910/14 489/895/14 241/618/14 +f 246/660/17 504/927/17 496/914/17 +f 512/931/13 504/927/13 246/660/13 +f 249/474/15 508/932/15 512/931/15 +f 242/469/14 496/914/14 508/913/14 +f 568/946/19 567/1645/19 571/947/19 +f 539/949/19 606/1024/19 605/950/19 +f 574/952/19 573/1114/19 605/953/19 +f 548/955/20 547/1646/20 539/956/20 +f 536/958/14 544/1647/14 548/955/14 +f 531/959/14 529/1046/14 530/960/14 +f 537/962/14 533/1648/14 568/963/14 +f 528/965/21 527/1649/21 532/966/21 +f 568/963/19 533/1648/19 534/968/19 +f 524/970/22 616/978/22 615/971/22 +f 571/947/13 567/1645/13 566/973/13 +f 567/969/13 534/968/13 538/975/13 +f 522/977/21 614/1043/21 616/978/21 +f 549/980/23 550/1650/23 542/981/23 +f 554/983/24 553/1651/24 545/984/24 +f 534/986/13 542/1652/13 546/987/13 +f 543/989/25 544/1653/25 536/990/25 +f 539/956/13 547/1646/13 543/989/13 +f 545/992/14 541/996/14 533/993/14 +f 546/987/25 545/1654/25 537/995/25 +f 541/996/20 542/1652/20 534/986/20 +f 561/997/14 557/1016/14 549/998/14 +f 563/1000/13 559/1021/13 551/1001/13 +f 544/1003/14 552/1655/14 556/1004/14 +f 556/1004/23 555/1010/23 547/1006/23 +f 542/981/13 550/1650/13 554/983/13 +f 551/1007/24 552/1656/24 544/1008/24 +f 555/1010/13 551/1007/13 543/1009/13 +f 553/1011/14 549/980/14 541/982/14 +f 562/1013/26 561/1657/26 553/1014/26 +f 557/1016/27 558/1658/27 550/1017/27 +f 552/1018/14 560/1659/14 564/1019/14 +f 564/1019/27 563/1000/27 555/1002/27 +f 550/1017/13 558/1658/13 562/1013/13 +f 559/1021/26 560/1660/26 552/1022/26 +f 535/1023/13 608/1383/13 606/1024/13 +f 584/1025/25 583/1061/25 575/1026/25 +f 572/1028/14 580/1661/14 584/1029/14 +f 566/973/28 565/1662/28 576/1031/28 +f 566/976/28 538/975/28 537/1032/28 +f 526/1034/29 525/1663/29 529/1035/29 +f 565/1037/14 568/946/14 572/948/14 +f 528/1039/13 525/1045/13 526/1040/13 +f 521/1042/30 613/1117/30 614/1043/30 +f 525/1045/30 528/1039/30 530/960/30 +f 527/1047/22 526/1664/22 531/1048/22 +f 585/1050/24 586/1665/24 578/1051/24 +f 590/1053/23 589/1082/23 581/1054/23 +f 570/1056/13 578/1666/13 582/1057/13 +f 579/1059/20 580/1661/20 572/1028/20 +f 583/1061/13 579/1059/13 571/1060/13 +f 581/1062/14 577/1667/14 569/1063/14 +f 582/1057/20 581/1062/20 573/1064/20 +f 577/1065/25 578/1666/25 570/1056/25 +f 589/1067/14 597/1668/14 593/1068/14 +f 599/1070/13 595/1095/13 587/1071/13 +f 580/1073/14 588/1669/14 592/1074/14 +f 592/1076/24 591/1081/24 583/1077/24 +f 578/1051/13 586/1665/13 590/1053/13 +f 587/1079/23 588/1669/23 580/1073/23 +f 591/1081/13 587/1079/13 579/1080/13 +f 589/1082/14 585/1670/14 577/1083/14 +f 598/1084/27 597/1668/27 589/1067/27 +f 593/1086/26 594/1094/26 586/1087/26 +f 588/1089/14 596/1671/14 600/1090/14 +f 600/1092/26 599/1070/26 591/1072/26 +f 594/1094/13 598/1084/13 590/1085/13 +f 595/1095/27 596/1671/27 588/1089/27 +f 607/1096/28 569/1672/28 570/1097/28 +f 602/1099/13 601/1103/13 603/1100/13 +f 608/1098/13 570/1097/13 574/952/13 +f 611/1102/29 603/1100/29 601/1103/29 +f 612/1105/22 604/1101/22 603/1100/22 +f 609/1107/30 601/1103/30 602/1099/30 +f 536/1109/14 540/951/14 605/950/14 +f 610/1111/21 602/1099/21 604/1101/21 +f 607/1113/14 605/953/14 573/1114/14 +f 614/1043/13 613/1117/13 615/971/13 +f 523/1116/29 615/971/29 613/1117/29 +f 620/1119/13 617/1175/13 618/1120/13 +f 622/1122/14 624/1176/14 623/1123/14 +f 626/1125/14 628/1150/14 627/1126/14 +f 630/1128/14 632/1181/14 631/1129/14 +f 634/1131/14 636/1186/14 635/1132/14 +f 637/1134/13 640/1149/13 639/1135/13 +f 641/1137/13 644/1180/13 643/1138/13 +f 645/1140/13 648/1185/13 647/1141/13 +f 638/1143/16 639/1673/16 626/1144/16 +f 639/1146/15 640/1674/15 628/1147/15 +f 640/1149/18 637/1134/18 627/1126/18 +f 620/1151/17 619/1675/17 621/1152/17 +f 641/1154/17 642/1676/17 629/1155/17 +f 619/1157/16 618/1677/16 622/1158/16 +f 645/1160/17 646/1678/17 633/1161/17 +f 642/1163/16 643/1679/16 630/1164/16 +f 618/1166/15 617/1680/15 624/1167/15 +f 646/1169/16 647/1681/16 634/1170/16 +f 643/1172/15 644/1682/15 632/1173/15 +f 617/1175/18 620/1119/18 623/1123/18 +f 647/1177/15 648/1683/15 636/1178/15 +f 644/1180/18 641/1137/18 631/1129/18 +f 637/1182/17 638/1684/17 625/1183/17 +f 648/1185/18 645/1140/18 635/1132/18 +f 649/1187/17 651/1310/17 729/1188/17 +f 744/1190/13 654/1347/13 652/1191/13 +f 654/1193/18 653/1685/18 650/1194/18 +f 749/1196/15 656/1309/15 655/1197/15 +f 745/1198/14 655/1197/14 649/1199/14 +f 655/1201/18 656/1686/18 651/1202/18 +f 659/1204/17 663/1208/17 661/1205/17 +f 660/1207/18 664/1214/18 663/1208/18 +f 657/1210/16 661/1205/16 662/1211/16 +f 658/1213/15 662/1211/15 664/1214/15 +f 664/1214/13 662/1211/13 661/1205/13 +f 667/1216/17 671/1220/17 669/1217/17 +f 668/1219/18 672/1226/18 671/1220/18 +f 665/1222/16 669/1217/16 670/1223/16 +f 666/1225/15 670/1223/15 672/1226/15 +f 672/1226/13 670/1223/13 669/1217/13 +f 675/1228/17 679/1232/17 677/1229/17 +f 676/1231/18 680/1238/18 679/1232/18 +f 673/1234/16 677/1229/16 678/1235/16 +f 674/1237/15 678/1235/15 680/1238/15 +f 680/1238/13 678/1235/13 677/1229/13 +f 683/1240/17 687/1244/17 685/1241/17 +f 684/1243/18 688/1250/18 687/1244/18 +f 681/1246/16 685/1241/16 686/1247/16 +f 682/1249/15 686/1247/15 688/1250/15 +f 688/1250/13 686/1247/13 685/1241/13 +f 691/1252/17 695/1256/17 693/1253/17 +f 692/1255/18 696/1262/18 695/1256/18 +f 689/1258/16 693/1253/16 694/1259/16 +f 690/1261/15 694/1259/15 696/1262/15 +f 696/1262/13 694/1259/13 693/1253/13 +f 699/1264/17 703/1268/17 701/1265/17 +f 700/1267/18 704/1274/18 703/1268/18 +f 697/1270/16 701/1265/16 702/1271/16 +f 698/1273/15 702/1271/15 704/1274/15 +f 704/1274/13 702/1271/13 701/1265/13 +f 707/1276/17 711/1280/17 709/1277/17 +f 708/1279/18 712/1286/18 711/1280/18 +f 705/1282/16 709/1277/16 710/1283/16 +f 706/1285/15 710/1283/15 712/1286/15 +f 712/1286/13 710/1283/13 709/1277/13 +f 715/1288/17 719/1292/17 717/1289/17 +f 716/1291/18 720/1298/18 719/1292/18 +f 713/1294/16 717/1289/16 718/1295/16 +f 714/1297/15 718/1295/15 720/1298/15 +f 720/1298/13 718/1295/13 717/1289/13 +f 748/1300/14 747/1321/14 723/1301/14 +f 747/1303/14 746/1323/14 722/1304/14 +f 746/1306/14 745/1325/14 721/1307/14 +f 656/1309/13 749/1196/13 729/1188/13 +f 749/1311/13 750/1324/13 730/1312/13 +f 750/1314/13 751/1322/13 731/1315/13 +f 751/1317/13 752/1320/13 732/1318/13 +f 752/1320/15 751/1317/15 747/1321/15 +f 751/1322/15 750/1314/15 746/1323/15 +f 750/1324/15 749/1311/15 745/1325/15 +f 653/1326/14 740/1687/14 728/1327/14 +f 740/1329/14 739/1688/14 727/1330/14 +f 739/1332/14 738/1689/14 726/1333/14 +f 738/1335/14 737/1690/14 725/1336/14 +f 741/1338/13 742/1356/13 734/1339/13 +f 742/1341/13 743/1353/13 735/1342/13 +f 743/1344/13 744/1350/13 736/1345/13 +f 654/1347/17 744/1190/17 740/1348/17 +f 744/1350/17 743/1344/17 739/1351/17 +f 743/1353/17 742/1341/17 738/1354/17 +f 742/1356/17 741/1338/17 737/1357/17 +f 723/1359/17 731/1319/17 732/1318/17 +f 722/1361/17 730/1316/17 731/1315/17 +f 721/1363/17 729/1313/17 730/1312/17 +f 728/1327/15 736/1192/15 652/1191/15 +f 727/1330/15 735/1346/15 736/1345/15 +f 726/1333/15 734/1343/15 735/1342/15 +f 725/1336/15 733/1340/15 734/1339/15 +f 600/1365/17 737/1691/17 741/1366/17 +f 741/1366/13 733/1692/13 595/1368/13 +f 595/1368/15 733/1692/15 725/1369/15 +f 596/1370/14 725/1369/14 737/1371/14 +f 724/1373/17 732/1377/17 594/1374/17 +f 598/1376/13 594/1374/13 732/1377/13 +f 752/1378/15 748/1380/15 597/1379/15 +f 748/1380/14 724/1693/14 593/1381/14 +f 536/1382/28 607/1694/28 608/1383/28 +f 763/1384/14 761/1406/14 762/1385/14 +f 760/1387/25 759/1695/25 764/1388/25 +f 756/1390/31 776/1394/31 775/1391/31 +f 754/1393/25 774/1403/25 776/1394/25 +f 758/1396/20 757/1696/20 761/1397/20 +f 760/1399/13 757/1405/13 758/1400/13 +f 753/1402/32 773/1423/32 774/1403/32 +f 757/1405/32 760/1399/32 762/1385/32 +f 759/1407/31 758/1697/31 763/1408/31 +f 766/1410/13 765/1414/13 767/1411/13 +f 771/1413/20 767/1411/20 765/1414/20 +f 772/1416/31 768/1412/31 767/1411/31 +f 769/1418/32 765/1414/32 766/1410/32 +f 770/1420/25 766/1410/25 768/1412/25 +f 774/1403/13 773/1423/13 775/1391/13 +f 755/1422/20 775/1391/20 773/1423/20 +f 788/1425/14 787/1698/14 785/1426/14 +f 784/1428/24 783/1699/24 788/1429/24 +f 780/1431/33 800/1435/33 799/1432/33 +f 778/1434/24 798/1444/24 800/1435/24 +f 782/1437/23 781/1700/23 785/1438/23 +f 783/1440/13 784/1701/13 781/1441/13 +f 777/1443/34 797/1462/34 798/1444/34 +f 781/1441/34 784/1701/34 786/1427/34 +f 783/1446/33 782/1702/33 787/1447/33 +f 790/1449/13 789/1453/13 791/1450/13 +f 795/1452/23 791/1450/23 789/1453/23 +f 796/1455/33 792/1451/33 791/1450/33 +f 793/1457/34 789/1453/34 790/1449/34 +f 794/1459/24 790/1449/24 792/1451/24 +f 798/1444/13 797/1462/13 799/1432/13 +f 779/1461/23 799/1432/23 797/1462/23 +f 811/1464/14 809/1486/14 810/1465/14 +f 808/1467/26 807/1703/26 812/1468/26 +f 804/1470/35 824/1474/35 823/1471/35 +f 802/1473/26 822/1483/26 824/1474/26 +f 806/1476/27 805/1704/27 809/1477/27 +f 808/1479/13 805/1485/13 806/1480/13 +f 801/1482/36 821/1502/36 822/1483/36 +f 805/1485/36 808/1479/36 810/1465/36 +f 807/1487/35 806/1705/35 811/1488/35 +f 813/1490/13 815/1496/13 816/1491/13 +f 819/1493/27 815/1496/27 813/1490/27 +f 820/1495/35 816/1491/35 815/1496/35 +f 817/1498/36 813/1490/36 814/1492/36 +f 818/1500/26 814/1492/26 816/1491/26 +f 821/1502/13 823/1471/13 824/1474/13 +f 803/1503/27 823/1471/27 821/1502/27 +f 836/1505/14 835/1706/14 833/1506/14 +f 832/1508/21 831/1707/21 836/1509/21 +f 828/1511/22 848/1515/22 847/1512/22 +f 826/1514/21 846/1524/21 848/1515/21 +f 830/1517/29 829/1708/29 833/1518/29 +f 831/1520/13 832/1709/13 829/1521/13 +f 825/1523/30 845/1541/30 846/1524/30 +f 829/1521/30 832/1709/30 834/1507/30 +f 831/1526/22 830/1710/22 835/1527/22 +f 838/1529/13 837/1533/13 839/1530/13 +f 843/1532/29 839/1530/29 837/1533/29 +f 844/1535/22 840/1531/22 839/1530/22 +f 841/1537/30 837/1533/30 838/1529/30 +f 842/1539/21 838/1529/21 840/1531/21 +f 845/1541/13 847/1512/13 848/1515/13 +f 827/1542/29 847/1512/29 845/1541/29 +f 850/1544/14 852/1560/14 851/1545/14 +f 853/1547/13 856/1559/13 855/1548/13 +f 853/1550/17 854/1711/17 849/1551/17 +f 854/1553/16 855/1712/16 850/1554/16 +f 855/1556/15 856/1713/15 852/1557/15 +f 856/1559/18 853/1547/18 851/1545/18 +f 859/1561/17 863/1565/17 861/1562/17 +f 860/1564/18 864/1571/18 863/1565/18 +f 857/1567/16 861/1562/16 862/1568/16 +f 858/1570/15 862/1568/15 864/1571/15 +f 864/1571/13 862/1568/13 861/1562/13 +f 867/1573/17 871/1577/17 869/1574/17 +f 868/1576/18 872/1583/18 871/1577/18 +f 865/1579/16 869/1574/16 870/1580/16 +f 866/1582/15 870/1580/15 872/1583/15 +f 872/1583/13 870/1580/13 869/1574/13 diff --git a/src/main/resources/assets/hbm/textures/blocks/rail_switch_sign_flipped.png b/src/main/resources/assets/hbm/textures/blocks/rail_switch_sign_flipped.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a60e3c8f66f8fae90c1abc79442a6f2b7dc3ce GIT binary patch literal 582 zcmV-M0=fN(P)S5dIQMueFD=gua4^_!iQm4R(=?dmGk5pvjlQIz-FewWnZ!^vArM za#%h&UwvNY%1${(4=6Hor&TJ%*>WhJxBl|#^8DWE}K%JK~ z(uA%c-rhf)Hnp3uXr6P9DW^^oTK9pn^V}sb19b(q4JSRjHlR8^kgI^piA`1)zc;`Z UdlEXddH?_b07*qoM6N<$f;)Kw*8l(j literal 0 HcmV?d00001 From 9d6c7d6372018df40abf18fbceb6e31dda96ca6f Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 1 Jan 2024 22:33:12 +0100 Subject: [PATCH 197/207] more rails, new gadget model --- src/main/java/com/hbm/blocks/ModBlocks.java | 6 + .../blocks/rail/RailStandardCurveWide.java | 239 + .../rail/RailStandardStraightShort.java | 152 + .../hbm/blocks/rail/RailStandardSwitch.java | 2 + .../rail/RailStandardSwitchFlipped.java | 2 + .../java/com/hbm/main/ResourceManager.java | 6 +- .../hbm/render/item/ItemRenderLibrary.java | 11 - .../render/tileentity/RenderNukeGadget.java | 76 +- .../assets/hbm/models/TheGadget2.obj | 1616 --- .../assets/hbm/models/TheGadget3.obj | 1223 -- .../assets/hbm/models/TheGadget3_smooth.obj | 1293 -- .../models/blocks/rail_standard_bend_wide.obj | 1366 +++ .../hbm/models/blocks/rail_standard_short.obj | 185 + .../assets/hbm/models/bombs/gadget.obj | 10019 ++++++++++++++++ .../textures/gui/weapon/gadgetSchematic.png | Bin 10212 -> 9943 bytes .../hbm/textures/models/TheGadget3_tex.png | Bin 33609 -> 0 bytes .../hbm/textures/models/bombs/gadget.png | Bin 0 -> 14119 bytes .../hbm/textures/models/capes/CapeAdam.png | Bin 25867 -> 6026 bytes .../hbm/textures/models/missileNuclear.png | Bin 10973 -> 0 bytes 19 files changed, 12027 insertions(+), 4169 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java create mode 100644 src/main/java/com/hbm/blocks/rail/RailStandardStraightShort.java delete mode 100644 src/main/resources/assets/hbm/models/TheGadget2.obj delete mode 100644 src/main/resources/assets/hbm/models/TheGadget3.obj delete mode 100644 src/main/resources/assets/hbm/models/TheGadget3_smooth.obj create mode 100644 src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide.obj create mode 100644 src/main/resources/assets/hbm/models/blocks/rail_standard_short.obj create mode 100644 src/main/resources/assets/hbm/models/bombs/gadget.obj delete mode 100644 src/main/resources/assets/hbm/textures/models/TheGadget3_tex.png create mode 100644 src/main/resources/assets/hbm/textures/models/bombs/gadget.png delete mode 100644 src/main/resources/assets/hbm/textures/models/missileNuclear.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 7c656c712..26203971a 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1171,7 +1171,9 @@ public class ModBlocks { public static Block rail_narrow_straight; public static Block rail_narrow_curve; public static Block rail_large_straight; + public static Block rail_large_straight_short; public static Block rail_large_curve; + public static Block rail_large_curve_wide; public static Block rail_large_ramp; public static Block rail_large_buffer; public static Block rail_large_switch; @@ -2250,7 +2252,9 @@ public class ModBlocks { rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve_wide = new RailStandardCurveWide().setBlockName("rail_large_curve_wide").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); @@ -3552,7 +3556,9 @@ public class ModBlocks { register(rail_narrow_straight); register(rail_narrow_curve); register(rail_large_straight); + register(rail_large_straight_short); register(rail_large_curve); + register(rail_large_curve_wide); register(rail_large_ramp); register(rail_large_buffer); register(rail_large_switch); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java new file mode 100644 index 000000000..3935cf5c6 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java @@ -0,0 +1,239 @@ +package com.hbm.blocks.rail; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardCurveWide extends BlockDummyable implements IRailNTM, IRenderRail { + + public RailStandardCurveWide() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return null; + } + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + double turnRadius = 6D; + double axisDist = 6.5D; + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist; + double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * axisDist; + + Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ); + dist = dist.normalize(); + dist.xCoord *= turnRadius; + dist.zCoord *= turnRadius; + + double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90; + + if(speed == 0) { + info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); + } + + double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90; + if(dir == Library.NEG_X) angleDeg -= 90; + if(dir == Library.POS_X) angleDeg += 90; + if(dir == Library.POS_Z) angleDeg += 180; + angleDeg = MathHelper.wrapAngleTo180_double(angleDeg); + double length90Deg = turnRadius * Math.PI / 2D; + double angularChange = speed / length90Deg * 90D; + + ForgeDirection moveDir = ForgeDirection.UNKNOWN; + + if(Math.abs(motionX) > Math.abs(motionZ)) { + moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X; + } else { + moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; + } + + if(moveDir == dir || moveDir == rot.getOpposite()) { + angularChange *= -1; + } + + double effAngle = angleDeg + angularChange; + moveAngle += angularChange; + + if(effAngle > 90) { + double angleOvershoot = effAngle - 90D; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 6 + rot.offsetX * 7, y, cZ - dir.offsetZ * 6 + rot.offsetZ * 7)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y + 0.1875, axisZ - dir.offsetZ * turnRadius); + } + + if(effAngle < 0) { + double angleOvershoot = -effAngle; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y + 0.1875, axisZ -rot.offsetZ * turnRadius); + } + + double radianChange = angularChange * Math.PI / 180D; + dist.rotateAroundY((float) radianChange); + + return Vec3.createVectorHelper(axisX + dist.xCoord, y + 0.1875, axisZ + dist.zCoord); + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 6, 0, 6, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + return world.getBlock(x + dX, y, z + dZ).isReplaceable(world, x + dX, y, z + dZ) && + world.getBlock(x + rX, y, z + rZ).isReplaceable(world, x + rX, y, z + rZ) && + world.getBlock(x + dX + rX, y, z + dZ + rZ).isReplaceable(world, x + dX + rX, y, z + dZ + rZ) && + world.getBlock(x + dX + rX * 2, y, z + dZ + rZ * 2).isReplaceable(world, x + dX + rX * 2, y, z + dZ + rZ * 2) && + world.getBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ).isReplaceable(world, x + dX * 2 + rX, y, z + dZ * 2 + rZ) && + world.getBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2).isReplaceable(world, x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2) && + world.getBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ).isReplaceable(world, x + dX * 3 + rX, y, z + dZ * 3 + rZ) && + world.getBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2).isReplaceable(world, x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2) && + world.getBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3).isReplaceable(world, x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3).isReplaceable(world, x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3) && + world.getBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3).isReplaceable(world, x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4).isReplaceable(world, x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4) && + world.getBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4).isReplaceable(world, x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4); + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + BlockDummyable.safeRem = true; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + world.setBlock(x + dX, y, z + dZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2, y, z + dZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + rX, y, z + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX + rX, y, z + dZ + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 4 + rX, y, z + dZ * 4 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2, this, rot.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 2, y, z + dZ * 4 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 2, y, z + dZ * 5 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3, this, rot.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3, this, dir.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 3, y, z + dZ * 5 + rZ * 3, this, dir.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4, this, rot.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4, this, dir.ordinal(), 3); + world.setBlock(x + dX * 6 + rX * 4, y, z + dZ * 6 + rZ * 4, this, dir.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 5, y, z + dZ * 5 + rZ * 5, this, rot.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 6, y, z + dZ * 5 + rZ * 6, this, rot.ordinal(), 3); + world.setBlock(x + dX * 6 + rX * 5, y, z + dZ * 6 + rZ * 5, this, rot.ordinal(), 3); + world.setBlock(x + dX * 6 + rX * 6, y, z + dZ * 6 + rZ * 6, this, rot.ordinal(), 3); + + BlockDummyable.safeRem = false; + } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glScaled(0.12, 0.12, 0.12); + GL11.glTranslated(2.5, -0.0625, -3); + GL11.glRotated(90, 0, 1, 0); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraightShort.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraightShort.java new file mode 100644 index 000000000..02aca06f3 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraightShort.java @@ -0,0 +1,152 @@ +package com.hbm.blocks.rail; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardStraightShort extends BlockDummyable implements IRailNTM, IRenderRail { + + public RailStandardStraightShort() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 0, 0, 1, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + vec.xCoord = MathHelper.clamp_double(targetX, cX, cX + 1); + vec.yCoord = y + 0.1875; + vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5; + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 1 : -1), y, cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + vec.xCoord = cX + 0.5 + rot.offsetX * 0.5; + vec.yCoord = y + 0.1875; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ,cZ + 1); + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 1 : -1))); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.7, 0.7, 0.7); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight_short, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 14 || meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight_short, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java b/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java index 6c16ecf90..f08785d44 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java @@ -3,6 +3,7 @@ package com.hbm.blocks.rail; import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; +import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; @@ -128,6 +129,7 @@ public class RailStandardSwitch extends BlockRailWaypointSystem implements IRend if(world.isRemote) return true; if(player.isSneaking()) return false; + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.train) return false; int[] pos = this.findCore(world, x, y, z); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java b/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java index a27d8d04c..58b280786 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java @@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.rail.RailStandardSwitch.TileEntityRailSwitch; +import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; @@ -125,6 +126,7 @@ public class RailStandardSwitchFlipped extends BlockRailWaypointSystem implement if(world.isRemote) return true; if(player.isSneaking()) return false; + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.train) return false; int[] pos = this.findCore(world, x, y, z); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 38837f228..d72e0509a 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -254,7 +254,7 @@ public class ResourceManager { public static final IModelCustom shredder = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/shredder.obj")); //Bombs - public static final IModelCustom bomb_gadget = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/TheGadget3.obj")); + public static final IModelCustom bomb_gadget = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/gadget.obj")).asDisplayList(); public static final IModelCustom bomb_boy = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/LilBoy1.obj")); public static final IModelCustom bomb_man = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/FatMan.obj")).asDisplayList(); public static final IModelCustom bomb_mike = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ivymike.obj")); @@ -671,7 +671,7 @@ public class ResourceManager { public static final ResourceLocation shredder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/shredder.png"); //Bombs - public static final ResourceLocation bomb_gadget_tex = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_tex.png"); + public static final ResourceLocation bomb_gadget_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/gadget.png"); public static final ResourceLocation bomb_boy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/lilboy.png"); public static final ResourceLocation bomb_man_tex = new ResourceLocation(RefStrings.MODID, "textures/models/FatMan.png"); public static final ResourceLocation bomb_mike_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/ivymike.png"); @@ -1464,7 +1464,9 @@ public class ResourceManager { public static final IModelCustom rail_narrow_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow.obj")); public static final IModelCustom rail_narrow_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow_bend.obj")); public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj")); + public static final IModelCustom rail_standard_straight_short = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_short.obj")); public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj")); + public static final IModelCustom rail_standard_curve_wide = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide.obj")); public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj")); public static final IModelCustom rail_standard_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_buffer.obj")); public static final IModelCustom rail_standard_switch = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_switch.obj")); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 436a839bd..c9ca79fb9 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -411,17 +411,6 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.duchessgambit_tex); ResourceManager.duchessgambit.renderAll(); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.nuke_gadget), new ItemRenderBase() { - public void renderInventory() { - GL11.glTranslated(0, -3, 0); - GL11.glScaled(5, 5, 5); - } - public void renderCommon() { - GL11.glTranslated(0.25, 0, 0); - bindTexture(ResourceManager.bomb_gadget_tex); - ResourceManager.bomb_gadget.renderAll(); - }}); - renderers.put(Item.getItemFromBlock(ModBlocks.nuke_boy), new ItemRenderBase() { public void renderInventory() { GL11.glScaled(5, 5, 5); diff --git a/src/main/java/com/hbm/render/tileentity/RenderNukeGadget.java b/src/main/java/com/hbm/render/tileentity/RenderNukeGadget.java index a41bdf06b..3168f7c12 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderNukeGadget.java +++ b/src/main/java/com/hbm/render/tileentity/RenderNukeGadget.java @@ -2,38 +2,66 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderNukeGadget extends TileEntitySpecialRenderer { +public class RenderNukeGadget extends TileEntitySpecialRenderer implements IItemRendererProvider { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata()) { + case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; } - bindTexture(ResourceManager.bomb_gadget_tex); - ResourceManager.bomb_gadget.renderAll(); - - GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.bomb_gadget_tex); + ResourceManager.bomb_gadget.renderPart("Body"); + + if(Minecraft.getMinecraft().gameSettings.fancyGraphics) + ResourceManager.bomb_gadget.renderPart("Wires"); + GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - } + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.nuke_gadget); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(5, 5, 5); + } + public void renderCommon() { + GL11.glRotatef(-90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.bomb_gadget_tex); + ResourceManager.bomb_gadget.renderPart("Body"); + + if(Minecraft.getMinecraft().gameSettings.fancyGraphics) + ResourceManager.bomb_gadget.renderPart("Wires"); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } } diff --git a/src/main/resources/assets/hbm/models/TheGadget2.obj b/src/main/resources/assets/hbm/models/TheGadget2.obj deleted file mode 100644 index 7f13574d8..000000000 --- a/src/main/resources/assets/hbm/models/TheGadget2.obj +++ /dev/null @@ -1,1616 +0,0 @@ -# Blender v2.70 (sub 0) OBJ File: 'TheGadget2.blend' -# www.blender.org -o Cylinder.002_Cylinder.004 -v -0.850000 1.000000 -0.650000 -v -0.750000 1.000000 -0.650000 -v -0.850000 0.751256 -0.600522 -v -0.750000 0.751256 -0.600522 -v -0.850000 0.540381 -0.459619 -v -0.750000 0.540381 -0.459619 -v -0.849999 0.399478 -0.248744 -v -0.749999 0.399478 -0.248744 -v -0.849999 0.350000 0.000000 -v -0.749999 0.350000 0.000000 -v -0.849999 0.399478 0.248744 -v -0.749999 0.399478 0.248744 -v -0.850000 0.540381 0.459619 -v -0.750000 0.540381 0.459619 -v -0.850000 0.751256 0.600522 -v -0.750000 0.751256 0.600522 -v -0.850000 1.000000 0.650000 -v -0.750000 1.000000 0.650000 -v -0.850000 1.248744 0.600522 -v -0.750000 1.248744 0.600522 -v -0.850000 1.459619 0.459620 -v -0.750000 1.459619 0.459620 -v -0.850001 1.600522 0.248744 -v -0.750001 1.600522 0.248744 -v -0.850001 1.650000 -0.000000 -v -0.750001 1.650000 -0.000000 -v -0.850001 1.600522 -0.248744 -v -0.750001 1.600522 -0.248744 -v -0.850000 1.459619 -0.459620 -v -0.750000 1.459619 -0.459620 -v -0.850000 1.248744 -0.600522 -v -0.750000 1.248744 -0.600522 -v 0.750000 1.000000 -0.650000 -v 0.850000 1.000000 -0.650000 -v 0.750000 0.751256 -0.600522 -v 0.850000 0.751256 -0.600522 -v 0.750001 0.540381 -0.459619 -v 0.850000 0.540381 -0.459619 -v 0.750001 0.399478 -0.248744 -v 0.850001 0.399478 -0.248744 -v 0.750001 0.350000 0.000000 -v 0.850001 0.350000 0.000000 -v 0.750001 0.399478 0.248744 -v 0.850001 0.399478 0.248744 -v 0.750001 0.540381 0.459619 -v 0.850000 0.540381 0.459619 -v 0.750000 0.751256 0.600522 -v 0.850000 0.751256 0.600522 -v 0.750000 1.000000 0.650000 -v 0.850000 1.000000 0.650000 -v 0.750000 1.248744 0.600522 -v 0.850000 1.248744 0.600522 -v 0.750000 1.459619 0.459620 -v 0.849999 1.459619 0.459620 -v 0.749999 1.600522 0.248744 -v 0.849999 1.600522 0.248744 -v 0.749999 1.650000 -0.000000 -v 0.849999 1.650000 -0.000000 -v 0.749999 1.600522 -0.248744 -v 0.849999 1.600522 -0.248744 -v 0.750000 1.459619 -0.459620 -v 0.849999 1.459619 -0.459620 -v 0.750000 1.248744 -0.600522 -v 0.850000 1.248744 -0.600522 -v -1.500000 0.999999 -0.500000 -v 1.000000 1.000001 -0.500000 -v -1.500000 0.808657 -0.461940 -v 1.000000 0.808659 -0.461940 -v -1.500000 0.646446 -0.353553 -v 1.000000 0.646448 -0.353553 -v -1.500000 0.538059 -0.191342 -v 1.000000 0.538061 -0.191342 -v -1.500000 0.499999 0.000000 -v 1.000000 0.500001 0.000000 -v -1.500000 0.538059 0.191342 -v 1.000000 0.538061 0.191342 -v -1.500000 0.646446 0.353553 -v 1.000000 0.646448 0.353553 -v -1.500000 0.808657 0.461940 -v 1.000000 0.808659 0.461940 -v -1.500000 0.999999 0.500000 -v 1.000000 1.000001 0.500000 -v -1.500000 1.191340 0.461940 -v 1.000000 1.191343 0.461940 -v -1.500000 1.353552 0.353554 -v 1.000000 1.353554 0.353554 -v -1.500000 1.461939 0.191342 -v 0.999999 1.461941 0.191342 -v -1.500000 1.499999 -0.000000 -v 0.999999 1.500001 -0.000000 -v -1.500000 1.461939 -0.191342 -v 0.999999 1.461941 -0.191342 -v -1.500000 1.353552 -0.353554 -v 1.000000 1.353554 -0.353554 -v -1.500000 1.191340 -0.461940 -v 1.000000 1.191343 -0.461940 -v -0.750000 1.000000 -0.800000 -v -0.650000 1.000000 -0.800000 -v -0.750000 0.693853 -0.739104 -v -0.650000 0.693853 -0.739104 -v -0.749999 0.434314 -0.565685 -v -0.649999 0.434315 -0.565685 -v -0.749999 0.260896 -0.306147 -v -0.649999 0.260896 -0.306147 -v -0.749999 0.200000 0.000000 -v -0.649999 0.200000 0.000000 -v -0.749999 0.260896 0.306147 -v -0.649999 0.260896 0.306147 -v -0.749999 0.434314 0.565685 -v -0.649999 0.434315 0.565685 -v -0.750000 0.693853 0.739104 -v -0.650000 0.693853 0.739104 -v -0.750000 1.000000 0.800000 -v -0.650000 1.000000 0.800000 -v -0.750000 1.306147 0.739104 -v -0.650000 1.306147 0.739104 -v -0.750001 1.565685 0.565686 -v -0.650001 1.565685 0.565686 -v -0.750001 1.739104 0.306147 -v -0.650001 1.739104 0.306147 -v -0.750001 1.800000 -0.000000 -v -0.650001 1.800000 -0.000000 -v -0.750001 1.739104 -0.306147 -v -0.650001 1.739104 -0.306147 -v -0.750001 1.565685 -0.565686 -v -0.650001 1.565685 -0.565686 -v -0.750000 1.306146 -0.739104 -v -0.650000 1.306146 -0.739104 -v 0.650000 1.000000 -0.800000 -v 0.750000 1.000000 -0.800000 -v 0.650000 0.693853 -0.739104 -v 0.750000 0.693853 -0.739104 -v 0.650001 0.434314 -0.565685 -v 0.750000 0.434315 -0.565685 -v 0.650001 0.260896 -0.306147 -v 0.750001 0.260896 -0.306147 -v 0.650001 0.200000 0.000000 -v 0.750001 0.200000 0.000000 -v 0.650001 0.260896 0.306147 -v 0.750001 0.260896 0.306147 -v 0.650001 0.434314 0.565685 -v 0.750000 0.434315 0.565685 -v 0.650000 0.693853 0.739104 -v 0.750000 0.693853 0.739104 -v 0.650000 1.000000 0.800000 -v 0.750000 1.000000 0.800000 -v 0.650000 1.306147 0.739104 -v 0.750000 1.306147 0.739104 -v 0.650000 1.565685 0.565686 -v 0.749999 1.565685 0.565686 -v 0.649999 1.739104 0.306147 -v 0.749999 1.739104 0.306147 -v 0.649999 1.800000 -0.000000 -v 0.749999 1.800000 -0.000000 -v 0.649999 1.739104 -0.306147 -v 0.749999 1.739104 -0.306147 -v 0.650000 1.565685 -0.565686 -v 0.749999 1.565685 -0.565686 -v 0.650000 1.306146 -0.739104 -v 0.750000 1.306146 -0.739104 -v 0.000000 0.000000 0.000000 -v 0.723607 0.552781 0.525725 -v -0.276388 0.552780 0.850649 -v -0.894426 0.552784 0.000000 -v -0.276388 0.552780 -0.850649 -v 0.723607 0.552781 -0.525725 -v 0.276388 1.447220 0.850649 -v -0.723607 1.447219 0.525725 -v -0.723607 1.447219 -0.525725 -v 0.276388 1.447220 -0.850649 -v 0.894426 1.447216 0.000000 -v 0.000000 2.000000 0.000000 -v -0.162456 0.149346 0.499995 -v 0.425323 0.149346 0.309011 -v 0.262869 0.474262 0.809012 -v 0.850648 0.474264 0.000000 -v 0.425323 0.149346 -0.309011 -v -0.525730 0.149348 0.000000 -v -0.688189 0.474264 0.499997 -v -0.162456 0.149346 -0.499995 -v -0.688189 0.474264 -0.499997 -v 0.262869 0.474262 -0.809012 -v 0.951058 1.000000 0.309013 -v 0.951058 1.000000 -0.309013 -v 0.000000 1.000000 1.000000 -v 0.587786 1.000000 0.809017 -v -0.951058 1.000000 0.309013 -v -0.587786 1.000000 0.809017 -v -0.587786 1.000000 -0.809017 -v -0.951058 1.000000 -0.309013 -v 0.587786 1.000000 -0.809017 -v 0.000000 1.000000 -1.000000 -v 0.688189 1.525736 0.499997 -v -0.262869 1.525738 0.809012 -v -0.850648 1.525736 0.000000 -v -0.262869 1.525738 -0.809012 -v 0.688189 1.525736 -0.499997 -v 0.162456 1.850654 0.499995 -v 0.525730 1.850652 0.000000 -v -0.425323 1.850654 0.309011 -v -0.425323 1.850654 -0.309011 -v 0.162456 1.850654 -0.499995 -v -1.187500 0.999999 -0.500000 -v -1.187500 0.808657 -0.461940 -v -1.187500 0.646446 -0.353553 -v -1.187500 0.538059 -0.191342 -v -1.187500 0.499999 0.000000 -v -1.187500 0.538059 0.191342 -v -1.187500 0.646446 0.353553 -v -1.187500 0.808657 0.461940 -v -1.187500 0.999999 0.500000 -v -1.187500 1.191341 0.461940 -v -1.187500 1.353552 0.353554 -v -1.187500 1.461939 0.191342 -v -1.187500 1.499999 -0.000000 -v -1.187500 1.461939 -0.191342 -v -1.187500 1.353552 -0.353554 -v -1.187500 1.191341 -0.461940 -vt 0.954445 0.915707 -vt 0.941459 0.915707 -vt 0.941459 0.882608 -vt 0.941459 0.877479 -vt 0.941459 0.844380 -vt 0.954445 0.844380 -vt 0.796072 0.927548 -vt 0.796072 0.894449 -vt 0.809058 0.894449 -vt 0.223742 0.946223 -vt 0.223742 0.913124 -vt 0.236729 0.913124 -vt 0.928624 0.190559 -vt 0.928624 0.157460 -vt 0.941611 0.157460 -vt 0.209444 0.946223 -vt 0.209444 0.913124 -vt 0.222430 0.913124 -vt 0.321191 0.950380 -vt 0.308205 0.950380 -vt 0.308205 0.917281 -vt 0.954446 0.806152 -vt 0.941459 0.806152 -vt 0.941459 0.773052 -vt 0.694459 0.938495 -vt 0.694459 0.905396 -vt 0.707445 0.905396 -vt 0.129689 0.914081 -vt 0.129689 0.947180 -vt 0.116702 0.947180 -vt 0.308205 0.884181 -vt 0.321191 0.884181 -vt 0.321191 0.917281 -vt 0.005275 0.913124 -vt 0.018262 0.913124 -vt 0.018262 0.946223 -vt 0.005275 0.880025 -vt 0.018262 0.880025 -vt 0.335490 0.917281 -vt 0.335490 0.950380 -vt 0.322504 0.950380 -vt 0.074105 0.422270 -vt 0.191188 0.445675 -vt 0.167899 0.563339 -vt 0.712194 0.931183 -vt 0.725180 0.931183 -vt 0.725180 0.964282 -vt 0.335490 0.884181 -vt 0.322503 0.917281 -vt 0.573167 0.304552 -vt 0.560563 0.335132 -vt 0.573167 0.271453 -vt 0.945391 0.119232 -vt 0.945391 0.086132 -vt 0.958377 0.086132 -vt 0.674509 0.938495 -vt 0.674509 0.905396 -vt 0.687496 0.905396 -vt 0.311513 0.812793 -vt 0.311513 0.779694 -vt 0.324499 0.779694 -vt 0.324499 0.812793 -vt 0.324499 0.779693 -vt 0.337486 0.779693 -vt 0.120707 0.812793 -vt 0.107720 0.812793 -vt 0.107720 0.779693 -vt 0.915638 0.190559 -vt 0.096753 0.947180 -vt 0.096753 0.914081 -vt 0.109739 0.914081 -vt 0.954446 0.811280 -vt 0.954446 0.844380 -vt 0.707445 0.938495 -vt 0.707445 0.971594 -vt 0.694459 0.971594 -vt 0.945391 0.157460 -vt 0.945391 0.124360 -vt 0.958377 0.124360 -vt 0.902651 0.190559 -vt 0.902651 0.157460 -vt 0.915638 0.157460 -vt 0.407585 0.706344 -vt 0.420572 0.706344 -vt 0.420572 0.739443 -vt 0.712194 0.898084 -vt 0.725180 0.898084 -vt 0.954597 0.157460 -vt 0.954597 0.190559 -vt 0.941611 0.190559 -vt 0.407585 0.509354 -vt 0.394981 0.539934 -vt 0.371692 0.563339 -vt 0.809058 0.927548 -vt 0.809058 0.960648 -vt 0.796072 0.960648 -vt 0.120707 0.779693 -vt 0.133693 0.779693 -vt 0.537273 0.383870 -vt 0.560563 0.407275 -vt 0.573167 0.437854 -vt 0.851858 0.531074 -vt 0.826522 0.531074 -vt 0.826522 0.245586 -vt 0.775851 0.204802 -vt 0.801187 0.204802 -vt 0.801187 0.490290 -vt 0.775851 0.531074 -vt 0.750516 0.531074 -vt 0.750516 0.245586 -vt 0.229128 0.735876 -vt 0.203793 0.735876 -vt 0.203793 0.450388 -vt 0.699845 0.245586 -vt 0.699845 0.531074 -vt 0.674509 0.531074 -vt 0.826522 0.204802 -vt 0.725180 0.531074 -vt 0.750516 0.857346 -vt 0.725180 0.857346 -vt 0.725180 0.571858 -vt 0.699845 0.857346 -vt 0.674509 0.857346 -vt 0.674509 0.571858 -vt 0.623838 0.531074 -vt 0.598502 0.531074 -vt 0.598502 0.245586 -vt 0.649173 0.531074 -vt 0.649173 0.245586 -vt 0.038211 0.735876 -vt 0.012876 0.735876 -vt 0.012876 0.450388 -vt 0.725180 0.204802 -vt 0.750516 0.204802 -vt 0.750516 0.490290 -vt 0.417281 0.565352 -vt 0.483938 0.537605 -vt 0.435196 0.655863 -vt 0.649173 0.857346 -vt 0.649173 0.571858 -vt 0.573167 0.531074 -vt 0.573167 0.245586 -vt 0.483938 0.204802 -vt 0.407585 0.153532 -vt 0.534956 0.128071 -vt 0.324499 0.738956 -vt 0.324499 0.698218 -vt 0.337486 0.698218 -vt 0.712831 0.694025 -vt 0.712831 0.734762 -vt 0.699845 0.734762 -vt 0.712831 0.775500 -vt 0.699845 0.775500 -vt 0.324499 0.657481 -vt 0.311513 0.698218 -vt 0.337486 0.657481 -vt 0.120707 0.738956 -vt 0.407585 0.665606 -vt 0.420572 0.665606 -vt 0.120707 0.698218 -vt 0.133693 0.698218 -vt 0.699845 0.653287 -vt 0.699845 0.612549 -vt 0.712831 0.612549 -vt 0.107720 0.738956 -vt 0.107720 0.698218 -vt 0.712831 0.531074 -vt 0.712831 0.571812 -vt 0.699845 0.571812 -vt 0.120707 0.657481 -vt 0.338077 0.657481 -vt 0.325090 0.657481 -vt 0.325090 0.616743 -vt 0.120707 0.616743 -vt 0.133693 0.616743 -vt 0.133693 0.657481 -vt 0.188280 0.044395 -vt 0.081628 0.204802 -vt 0.000000 0.082032 -vt 0.392072 0.249197 -vt 0.363409 0.394014 -vt 0.219305 0.365208 -vt 0.120707 0.576005 -vt 0.107720 0.616743 -vt 0.324499 0.616743 -vt 0.311513 0.657481 -vt 0.712831 0.816238 -vt 0.699845 0.816237 -vt 0.699845 0.694025 -vt 0.712831 0.653287 -vt 0.311513 0.738956 -vt 0.133693 0.738956 -vt 0.107720 0.657481 -vt 0.902651 0.198198 -vt 0.889665 0.198198 -vt 0.889665 0.157460 -vt 0.712194 0.857346 -vt 0.699845 0.856975 -vt 0.699845 0.816238 -vt 0.121297 0.616743 -vt 0.121297 0.576005 -vt 0.134284 0.576005 -vt 0.311513 0.616743 -vt 0.311513 0.576005 -vt 0.324499 0.576005 -vt 0.325090 0.576005 -vt 0.338077 0.576005 -vt 0.338077 0.616743 -vt 0.392072 0.160406 -vt 0.363409 0.189212 -vt 0.325957 0.204802 -vt 0.796072 0.853711 -vt 0.081628 0.409604 -vt 0.044177 0.220391 -vt 0.188280 0.249197 -vt 0.941459 0.956036 -vt 1.000000 0.915707 -vt 1.000000 0.996365 -vt 0.918059 0.316459 -vt 0.976600 0.276129 -vt 0.976600 0.356788 -vt 0.984258 0.388420 -vt 0.984258 0.459747 -vt 0.918058 0.414142 -vt 0.933801 0.652063 -vt 0.992341 0.611733 -vt 0.992341 0.692392 -vt 0.937191 0.045801 -vt 0.995731 0.005472 -vt 0.995731 0.086131 -vt 0.918059 0.285461 -vt 0.918059 0.356788 -vt 0.851858 0.311183 -vt 0.875259 0.773052 -vt 0.875259 0.844380 -vt 0.809058 0.798773 -vt 0.875259 0.915707 -vt 0.809058 0.889986 -vt 0.476413 0.786594 -vt 0.534956 0.746265 -vt 0.534956 0.826925 -vt 0.601157 0.779583 -vt 0.601157 0.850910 -vt 0.534956 0.805305 -vt 0.750516 0.571403 -vt 0.809058 0.531074 -vt 0.809058 0.611733 -vt 0.738588 0.076800 -vt 0.672388 0.051077 -vt 0.738588 0.005472 -vt 0.976599 0.276129 -vt 0.910399 0.250406 -vt 0.976599 0.204802 -vt 0.672388 0.005472 -vt 0.672388 0.076800 -vt 0.606188 0.031195 -vt 0.750516 0.732723 -vt 0.809058 0.692393 -vt 0.809058 0.773052 -vt 0.404277 0.817983 -vt 0.404277 0.889310 -vt 0.338077 0.843704 -vt 0.875259 0.571403 -vt 0.933801 0.531074 -vt 0.933801 0.611733 -vt 0.476413 0.947913 -vt 0.534954 0.907584 -vt 0.534954 0.988243 -vt 0.674509 0.928673 -vt 0.608309 0.883068 -vt 0.875259 0.798775 -vt 0.875259 0.889985 -vt 0.534956 0.739253 -vt 0.604463 0.698924 -vt 0.604463 0.779583 -vt 0.879191 0.131738 -vt 0.918058 0.505353 -vt 0.984258 0.531074 -vt 0.311512 0.737324 -vt 0.311512 0.817983 -vt 0.242004 0.777654 -vt 0.608310 0.954396 -vt 0.674509 1.000000 -vt 0.404277 0.960638 -vt 0.338078 0.915033 -vt 0.673974 0.117131 -vt 0.743482 0.076801 -vt 0.743482 0.157460 -vt 0.308205 0.817983 -vt 0.308205 0.889310 -vt 0.242004 0.863588 -vt 0.410213 0.872531 -vt 0.476413 0.826925 -vt 0.476413 0.898253 -vt 0.465448 0.705935 -vt 0.534956 0.665606 -vt 0.476413 0.969580 -vt 0.410214 0.943858 -vt 0.933801 0.692392 -vt 0.875259 0.652063 -vt 0.338077 0.777653 -vt 0.407585 0.737324 -vt 0.407585 0.817982 -vt 0.870991 0.031195 -vt 0.937191 0.005472 -vt 0.937191 0.076800 -vt 0.096753 0.969968 -vt 0.030553 0.924364 -vt 0.096753 0.898641 -vt 0.242004 0.696996 -vt 0.311512 0.656665 -vt 0.791381 0.857346 -vt 0.791381 0.928673 -vt 0.725180 0.902951 -vt 0.804789 0.076800 -vt 0.738588 0.031196 -vt 0.804789 0.005472 -vt 0.407585 0.576005 -vt 0.407585 0.656665 -vt 0.338077 0.616335 -vt 0.870991 0.005472 -vt 0.870991 0.076800 -vt 0.804789 0.051078 -vt 0.473786 0.076801 -vt 0.407585 0.031195 -vt 0.473786 0.005473 -vt 0.604464 0.537605 -vt 0.604464 0.618265 -vt 0.534956 0.577935 -vt 0.417871 0.786596 -vt 0.476413 0.746265 -vt 0.539987 0.051078 -vt 0.606188 0.005472 -vt 0.606188 0.076800 -vt 0.604465 0.157460 -vt 0.534956 0.117131 -vt 0.604465 0.076801 -vt 0.476413 0.867255 -vt 0.534954 0.826925 -vt 0.809058 0.853711 -vt 0.750516 0.813383 -vt 0.673974 0.157460 -vt 0.604465 0.117131 -vt 0.673974 0.076801 -vt 0.203793 0.817981 -vt 0.203793 0.889308 -vt 0.137592 0.863587 -vt 0.750516 0.652064 -vt 0.311513 0.656665 -vt 0.242004 0.616335 -vt 0.534956 0.876630 -vt 0.601156 0.850910 -vt 0.601156 0.922237 -vt 0.809058 0.657339 -vt 0.875259 0.611733 -vt 0.875259 0.683061 -vt 0.203793 0.656665 -vt 0.134284 0.616336 -vt 0.203793 0.576005 -vt 0.812990 0.111853 -vt 0.879191 0.086132 -vt 0.879191 0.157460 -vt 0.918058 0.459747 -vt 0.851858 0.414140 -vt 0.918058 0.388419 -vt 0.203793 0.737322 -vt 0.134283 0.696994 -vt 0.910399 0.285461 -vt 0.851858 0.245130 -vt 0.910399 0.204802 -vt 0.809058 0.747332 -vt 0.875259 0.701725 -vt 0.534956 0.658593 -vt 0.604464 0.698924 -vt 0.809058 0.556796 -vt 0.875259 0.531074 -vt 0.875259 0.602401 -vt 0.918058 0.531074 -vt 0.851858 0.485467 -vt 0.107720 0.656665 -vt 0.038211 0.616335 -vt 0.107720 0.576005 -vt 0.539987 0.005472 -vt 0.539987 0.076801 -vt 0.473786 0.051079 -vt 0.941459 0.987033 -vt 0.875259 0.941428 -vt 0.107719 0.656665 -vt 0.107719 0.737324 -vt 0.038211 0.696995 -vt 0.308205 0.960637 -vt 0.242005 0.934915 -vt 0.725180 0.974278 -vt 0.791380 0.928673 -vt 0.791380 0.999999 -vt 0.134285 0.777651 -vt 0.875259 0.727447 -vt 0.941459 0.701725 -vt 0.941459 0.773053 -vt 1.000000 0.692395 -vt 1.000000 0.773052 -vt 0.941459 0.732724 -vt 0.107719 0.817982 -vt 0.038211 0.777653 -vt 0.601156 0.993563 -vt 0.534956 0.967842 -vt 0.992342 0.531074 -vt 0.992342 0.611733 -vt 0.933801 0.571404 -vt 0.743482 0.117131 -vt 0.812990 0.076801 -vt 0.812990 0.157460 -vt 0.137593 0.915030 -vt 0.203793 0.960635 -vt 0.809058 0.961312 -vt 0.875259 0.987034 -vt 0.338077 0.696995 -vt 0.038211 0.858311 -vt 0.096753 0.817982 -vt 0.209444 0.883844 -vt 0.236729 0.880025 -vt 0.308205 0.821802 -vt 0.335490 0.817983 -vt 0.335490 0.851082 -vt 0.807809 0.161279 -vt 0.835094 0.157460 -vt 0.835094 0.190559 -vt 0.753238 0.161279 -vt 0.780524 0.157460 -vt 0.780524 0.190559 -vt 0.698668 0.161279 -vt 0.725953 0.157460 -vt 0.725953 0.190559 -vt 0.644097 0.161279 -vt 0.671382 0.157460 -vt 0.671382 0.190559 -vt 0.616812 0.161279 -vt 0.644097 0.157460 -vt 0.644097 0.190559 -vt 0.534956 0.161279 -vt 0.562241 0.157460 -vt 0.562241 0.190559 -vt 0.616812 0.157460 -vt 0.616812 0.190559 -vt 0.589526 0.186740 -vt 0.589526 0.161279 -vt 0.889665 0.190559 -vt 0.862379 0.186740 -vt 0.807809 0.157460 -vt 0.807809 0.190559 -vt 0.780524 0.186740 -vt 0.862379 0.157460 -vt 0.862379 0.190559 -vt 0.835094 0.186740 -vt 0.308205 0.880362 -vt 0.308205 0.854901 -vt 0.753238 0.157460 -vt 0.753238 0.190559 -vt 0.725953 0.186740 -vt 0.698668 0.157460 -vt 0.698668 0.190559 -vt 0.671382 0.186740 -vt 0.851858 0.204802 -vt 0.851858 0.245586 -vt 0.775851 0.490290 -vt 0.801187 0.531074 -vt 0.775851 0.245586 -vt 0.229128 0.450388 -vt 0.203793 0.409604 -vt 0.674509 0.245586 -vt 0.674509 0.204802 -vt 0.826522 0.490290 -vt 0.725180 0.245586 -vt 0.699845 0.204802 -vt 0.750516 0.571858 -vt 0.699845 0.571858 -vt 0.623838 0.204802 -vt 0.623838 0.245586 -vt 0.649173 0.204802 -vt 0.038211 0.450388 -vt 0.012876 0.409604 -vt 0.725180 0.490290 -vt 0.573167 0.204802 -vt 0.125889 0.914081 -vt 0.100553 0.914081 -vt 0.096753 0.866031 -vt 0.637401 0.825903 -vt 0.604464 0.825903 -vt 0.608265 0.777853 -vt 0.637401 0.585655 -vt 0.604464 0.585655 -vt 0.608265 0.537605 -vt 0.637401 0.633704 -vt 0.604464 0.633704 -vt 0.608265 0.585655 -vt 0.604464 0.729803 -vt 0.608265 0.681754 -vt 0.633600 0.681754 -vt 0.604464 0.681754 -vt 0.608265 0.633704 -vt 0.633600 0.633704 -vt 0.005275 0.783925 -vt 0.009075 0.735876 -vt 0.034411 0.735876 -vt 0.465448 0.665606 -vt 0.461647 0.713656 -vt 0.436312 0.713656 -vt 0.637401 0.729803 -vt 0.633600 0.777853 -vt 0.005275 0.831975 -vt 0.009075 0.783925 -vt 0.034411 0.783925 -vt 0.678309 0.857346 -vt 0.703645 0.857346 -vt 0.203793 0.831975 -vt 0.207593 0.783925 -vt 0.232928 0.783925 -vt 0.203793 0.783925 -vt 0.207593 0.735876 -vt 0.232928 0.735876 -vt 0.038211 0.880025 -vt 0.009075 0.831975 -vt 0.129689 0.866031 -vt 0.100553 0.817982 -vt 0.236729 0.831975 -vt 0.232929 0.880025 -vt 0.954445 0.882608 -vt 0.954445 0.877479 -vt 0.236729 0.946223 -vt 0.222430 0.946223 -vt 0.954446 0.773052 -vt 0.116702 0.914081 -vt 0.005275 0.946223 -vt 0.018261 0.913124 -vt 0.322504 0.917281 -vt 0.137470 0.576005 -vt 0.104534 0.576005 -vt 0.050815 0.539934 -vt 0.074105 0.563339 -vt 0.038211 0.509354 -vt 0.038211 0.476255 -vt 0.050815 0.445675 -vt 0.104534 0.409604 -vt 0.137470 0.409604 -vt 0.167899 0.422270 -vt 0.203793 0.476255 -vt 0.203793 0.509354 -vt 0.191188 0.539934 -vt 0.322503 0.884181 -vt 0.712194 0.964282 -vt 0.420189 0.335132 -vt 0.407585 0.304552 -vt 0.407585 0.271453 -vt 0.506844 0.371203 -vt 0.506844 0.204802 -vt 0.420189 0.240873 -vt 0.473908 0.204802 -vt 0.537273 0.217468 -vt 0.560563 0.240873 -vt 0.958377 0.119232 -vt 0.537273 0.358537 -vt 0.473908 0.371203 -vt 0.443479 0.358537 -vt 0.443479 0.217468 -vt 0.687496 0.938495 -vt 0.337486 0.812793 -vt 0.109739 0.947180 -vt 0.941459 0.811280 -vt 0.958377 0.157460 -vt 0.407585 0.739443 -vt 0.341263 0.576005 -vt 0.308326 0.576005 -vt 0.277897 0.563339 -vt 0.254608 0.539934 -vt 0.242004 0.476255 -vt 0.277897 0.422270 -vt 0.242004 0.509354 -vt 0.254608 0.445675 -vt 0.308326 0.409604 -vt 0.341263 0.409604 -vt 0.371692 0.422270 -vt 0.394981 0.445675 -vt 0.407585 0.476255 -vt 0.133693 0.812793 -vt 0.420189 0.407275 -vt 0.443479 0.383870 -vt 0.420189 0.501534 -vt 0.573167 0.470954 -vt 0.560563 0.501534 -vt 0.537273 0.524938 -vt 0.506844 0.537605 -vt 0.473908 0.537605 -vt 0.443479 0.524938 -vt 0.407585 0.470954 -vt 0.407585 0.437854 -vt 0.458603 0.665606 -vt 0.483938 0.665606 -vt 0.507345 0.655863 -vt 0.507345 0.547348 -vt 0.417281 0.637859 -vt 0.407585 0.614336 -vt 0.407585 0.588875 -vt 0.435196 0.547348 -vt 0.458603 0.537605 -vt 0.525260 0.565352 -vt 0.534956 0.588875 -vt 0.534956 0.614336 -vt 0.525260 0.637859 -vt 0.458603 0.076801 -vt 0.483938 0.076801 -vt 0.507345 0.086544 -vt 0.435196 0.086544 -vt 0.525260 0.104548 -vt 0.534956 0.153532 -vt 0.507345 0.195058 -vt 0.458603 0.204802 -vt 0.435196 0.195058 -vt 0.417281 0.177055 -vt 0.407585 0.128071 -vt 0.417281 0.104548 -vt 0.337486 0.738956 -vt 0.525260 0.177055 -vt 0.015513 0.044395 -vt 0.044177 0.015590 -vt 0.122165 0.000000 -vt 0.159616 0.015590 -vt 0.081628 0.000000 -vt 0.203793 0.082032 -vt 0.203793 0.122770 -vt 0.188280 0.160406 -vt 0.159616 0.189212 -vt 0.122165 0.204802 -vt 0.044177 0.189212 -vt 0.015513 0.160406 -vt 0.000000 0.122770 -vt 0.325957 0.409604 -vt 0.285421 0.409604 -vt 0.247969 0.394014 -vt 0.203793 0.327572 -vt 0.203793 0.286834 -vt 0.219305 0.249197 -vt 0.247969 0.220392 -vt 0.285420 0.204802 -vt 0.363408 0.220391 -vt 0.407585 0.327572 -vt 0.392072 0.365208 -vt 0.407585 0.286834 -vt 0.712831 0.856975 -vt 0.134284 0.616743 -vt 0.247969 0.189212 -vt 0.219305 0.160406 -vt 0.247969 0.015590 -vt 0.325957 0.000000 -vt 0.219305 0.044395 -vt 0.285421 0.000000 -vt 0.363409 0.015590 -vt 0.392072 0.044395 -vt 0.407585 0.082032 -vt 0.407585 0.122770 -vt 0.159616 0.394014 -vt 0.122165 0.409604 -vt 0.044177 0.394014 -vt 0.015513 0.365208 -vt 0.000000 0.327572 -vt 0.000000 0.286834 -vt 0.015513 0.249197 -vt 0.159616 0.220391 -vt 0.188280 0.365208 -vt 0.308205 0.847263 -vt 0.209444 0.909305 -vt 0.807809 0.186740 -vt 0.753238 0.186740 -vt 0.698668 0.186740 -vt 0.644097 0.186740 -vt 0.616812 0.186740 -vt 0.534956 0.186740 -vt 0.862379 0.161279 -vt 0.780524 0.161279 -vt 0.835094 0.161279 -vt 0.725953 0.161279 -vt 0.671382 0.161279 -vt 0.229128 0.409604 -vt 0.598502 0.204802 -vt 0.038211 0.409604 -vt 0.633600 0.537605 -vt 0.633600 0.585654 -vt 0.637401 0.681754 -vt 0.038211 0.783925 -vt 0.432511 0.665606 -vt 0.038211 0.831975 -vt 0.236729 0.783925 -vt 0.034411 0.831975 -vt 0.125889 0.817982 -vt 0.207593 0.880025 -vn 0.000000 -0.195090 -0.980785 -vn 0.000000 -0.555571 -0.831469 -vn 0.000001 -0.831470 -0.555570 -vn 0.000001 -0.980785 -0.195090 -vn 0.000001 -0.980785 0.195090 -vn 0.000001 -0.831470 0.555570 -vn 0.000001 -0.555571 0.831469 -vn 0.000000 -0.195090 0.980785 -vn -0.000000 0.195090 0.980785 -vn -0.000000 0.555569 0.831470 -vn -0.000001 0.831469 0.555571 -vn -0.000002 0.980785 0.195090 -vn -0.000001 0.980785 -0.195092 -vn -0.000001 0.831470 -0.555570 -vn 1.000000 0.000001 0.000000 -vn 0.000000 0.195090 -0.980785 -vn -0.000001 0.555570 -0.831470 -vn -1.000000 -0.000001 -0.000000 -vn 0.000001 -0.555570 -0.831469 -vn 0.000000 -0.555571 0.831469 -vn 0.000000 0.555570 0.831470 -vn -0.000001 0.980786 0.195088 -vn -0.000001 0.980785 -0.195091 -vn 1.000000 0.000004 0.000000 -vn -0.000001 0.555571 -0.831469 -vn 0.000000 -0.195091 -0.980785 -vn 0.000001 -0.555570 -0.831470 -vn 0.000001 -0.555570 0.831470 -vn 0.000000 -0.195091 0.980785 -vn -0.000001 0.555570 0.831470 -vn -0.000001 0.831469 0.555570 -vn -0.000001 0.980785 0.195091 -vn -0.000000 0.555570 -0.831470 -vn -0.000000 -0.555570 -0.831470 -vn 0.000000 -0.555570 0.831470 -vn 0.000000 0.831470 0.555570 -vn 0.000000 0.980785 0.195090 -vn 0.000000 0.980785 -0.195090 -vn 0.000000 0.831470 -0.555570 -vn -0.000001 0.555569 -0.831470 -vn -0.000001 0.831470 0.555570 -vn 0.000000 0.980785 -0.195091 -vn 1.000000 -0.000001 0.000000 -vn 0.102381 -0.943524 0.315090 -vn 0.700224 -0.661699 0.268032 -vn -0.268034 -0.943523 0.194736 -vn -0.268034 -0.943523 -0.194736 -vn 0.102381 -0.943524 -0.315090 -vn 0.904989 -0.330385 0.268032 -vn 0.024747 -0.330386 0.943521 -vn -0.889697 -0.330385 0.315095 -vn -0.574602 -0.330388 -0.748783 -vn 0.534576 -0.330387 -0.777865 -vn 0.802609 -0.125627 0.583126 -vn -0.306569 -0.125629 0.943522 -vn -0.992077 -0.125628 0.000000 -vn -0.306569 -0.125629 -0.943522 -vn 0.802609 -0.125627 -0.583126 -vn 0.408946 0.661699 0.628425 -vn -0.471300 0.661699 0.583122 -vn -0.700224 0.661699 -0.268032 -vn 0.038530 0.661699 -0.748779 -vn 0.724042 0.661695 -0.194736 -vn -0.038531 -0.661699 0.748779 -vn 0.187594 -0.794658 0.577345 -vn 0.471300 -0.661699 0.583122 -vn 0.700224 -0.661699 -0.268032 -vn 0.607060 -0.794656 0.000000 -vn 0.331305 -0.943524 0.000000 -vn -0.724042 -0.661695 0.194736 -vn -0.491120 -0.794657 0.356821 -vn -0.408946 -0.661698 0.628425 -vn -0.408946 -0.661698 -0.628425 -vn -0.491120 -0.794657 -0.356821 -vn -0.724042 -0.661695 -0.194736 -vn 0.471300 -0.661699 -0.583122 -vn 0.187594 -0.794658 -0.577345 -vn -0.038531 -0.661699 -0.748779 -vn 0.992077 0.125628 0.000000 -vn 0.982246 -0.187598 0.000000 -vn 0.904989 -0.330385 -0.268032 -vn 0.306569 0.125629 0.943522 -vn 0.303531 -0.187597 0.934171 -vn 0.534576 -0.330387 0.777865 -vn -0.802609 0.125627 0.583126 -vn -0.794656 -0.187595 0.577348 -vn -0.574602 -0.330388 0.748783 -vn -0.802609 0.125627 -0.583126 -vn -0.794656 -0.187595 -0.577348 -vn -0.889697 -0.330385 -0.315095 -vn 0.306569 0.125629 -0.943522 -vn 0.303531 -0.187597 -0.934171 -vn 0.024747 -0.330386 -0.943521 -vn 0.574602 0.330388 0.748784 -vn 0.794656 0.187595 0.577348 -vn 0.889697 0.330385 0.315094 -vn -0.534576 0.330386 0.777865 -vn -0.303531 0.187597 0.934171 -vn -0.024747 0.330386 0.943521 -vn -0.904989 0.330385 -0.268032 -vn -0.982246 0.187598 0.000000 -vn -0.904989 0.330385 0.268032 -vn -0.024747 0.330386 -0.943521 -vn -0.303531 0.187597 -0.934171 -vn -0.534576 0.330386 -0.777865 -vn 0.889697 0.330385 -0.315094 -vn 0.794656 0.187595 -0.577348 -vn 0.574602 0.330388 -0.748784 -vn 0.268034 0.943523 0.194737 -vn 0.491119 0.794657 0.356822 -vn 0.724042 0.661695 0.194736 -vn -0.102381 0.943523 0.315090 -vn -0.187594 0.794657 0.577346 -vn 0.038531 0.661699 0.748779 -vn -0.331305 0.943524 0.000000 -vn -0.607061 0.794655 0.000000 -vn -0.700224 0.661699 0.268032 -vn -0.102381 0.943523 -0.315090 -vn -0.187594 0.794658 -0.577345 -vn -0.471300 0.661699 -0.583122 -vn 0.268034 0.943523 -0.194737 -vn 0.491119 0.794657 -0.356822 -vn 0.408946 0.661699 -0.628425 -vn 0.700212 0.700217 0.139282 -vn 0.700212 0.593615 0.396641 -vn 0.700213 0.396641 0.593614 -vn 0.700214 0.139282 0.700215 -vn 0.700215 -0.139280 0.700214 -vn 0.700217 -0.396638 0.593612 -vn 0.700217 -0.593610 0.396639 -vn 0.700218 -0.700212 0.139281 -vn 0.700218 -0.700211 -0.139281 -vn 0.700217 -0.593610 -0.396639 -vn 0.700211 0.700217 -0.139282 -vn 0.700212 0.593615 -0.396641 -vn 0.700213 0.396641 -0.593614 -vn 0.700214 0.139282 -0.700215 -vn 0.700215 -0.139280 -0.700214 -vn 0.700217 -0.396638 -0.593612 -vn 0.000001 -0.555571 -0.831469 -vn 0.000001 -0.980785 -0.195091 -vn -0.000000 0.555571 0.831469 -vn -0.399591 0.178838 -0.899080 -vn -0.399592 0.509287 -0.762203 -vn -0.399593 0.762202 -0.509287 -vn -0.399593 0.899079 -0.178838 -vn -0.399593 0.899079 0.178839 -vn -0.399592 0.762202 0.509288 -vn -0.399592 0.509287 0.762203 -vn -0.399591 0.178838 0.899080 -vn -0.399590 -0.178838 0.899080 -vn -0.399590 -0.509288 0.762203 -vn -0.399589 -0.762204 0.509288 -vn -0.399589 -0.899080 0.178838 -vn -0.399589 -0.899080 -0.178838 -vn -0.399589 -0.762203 -0.509288 -vn -0.399590 -0.509288 -0.762203 -vn -0.399591 -0.178838 -0.899080 -vn 0.000001 -0.195090 -0.980785 -vn 0.000001 -0.831469 0.555571 -vn 0.000001 -0.195090 0.980785 -vn -0.000001 0.195090 0.980785 -vn -0.000002 0.831470 0.555570 -vn -0.000002 0.980785 0.195089 -vn -0.000002 0.980785 -0.195089 -vn 1.000000 0.000002 0.000000 -vn -1.000000 -0.000002 0.000000 -vn -1.000000 -0.000000 0.000000 -vn -0.000001 0.555569 0.831470 -vn 0.000000 0.831469 0.555571 -vn -0.000001 0.980785 0.195092 -vn 1.000000 0.000000 0.000000 -vn -1.000000 -0.000001 0.000001 -vn -1.000000 -0.000002 -0.000001 -vn 0.000001 -0.980785 0.195091 -vn -0.000001 0.831471 0.555569 -vn 1.000000 0.000001 0.000001 -vn 1.000000 0.000001 -0.000002 -vn 1.000000 0.000006 -0.000001 -vn 1.000000 0.000002 0.000001 -vn -1.000000 0.000000 -0.000001 -vn -1.000000 0.000002 0.000003 -vn -1.000000 -0.000001 0.000002 -vn -1.000000 -0.000001 -0.000001 -vn -1.000000 0.000002 0.000001 -vn 0.000000 -0.831470 -0.555570 -vn 0.000000 -0.831469 0.555570 -vn -0.000001 0.555570 0.831469 -vn 0.000000 0.831469 0.555570 -vn 0.000000 0.980785 0.195091 -vn 0.000000 0.555570 -0.831469 -vn -1.000000 -0.000004 0.000000 -vn -1.000000 -0.000003 -0.000000 -vn -0.000001 0.980785 0.195090 -vn -0.000001 0.980785 -0.195090 -vn 0.000000 0.555571 -0.831469 -vn -1.000000 0.000000 0.000001 -vn -1.000000 0.000001 0.000000 -vn 0.700211 0.593616 0.396641 -vn 0.700212 0.700217 0.139281 -vn 0.700212 0.396641 0.593615 -vn 0.700216 -0.139281 0.700213 -vn 0.700216 -0.396638 0.593612 -vn 0.700217 -0.593611 0.396639 -vn 0.700217 -0.700212 0.139281 -vn 0.700217 -0.593611 -0.396639 -vn 0.700212 0.700217 -0.139282 -vn 0.700211 0.593616 -0.396641 -vn 0.700215 -0.139281 -0.700214 -vn 0.700216 -0.396638 -0.593612 -vn 0.000001 -0.831469 -0.555571 -vn -0.000001 0.831469 -0.555571 -vn -0.399592 0.178837 -0.899079 -vn -0.399592 0.762202 -0.509288 -vn -0.399592 0.899079 -0.178839 -vn -0.399593 0.899079 0.178838 -vn -0.399593 0.762202 0.509287 -vn -0.399591 0.178837 0.899080 -vn -0.399591 -0.178838 0.899080 -vn -0.399589 -0.762203 0.509288 -vn -0.399589 -0.899081 0.178838 -vn -0.399589 -0.899081 -0.178838 -vn -0.399589 -0.762204 -0.509288 -vn -0.399590 -0.178838 -0.899080 -s off -f 1/1/1 2/2/1 4/3/1 -f 4/4/2 6/5/2 5/6/2 -f 6/7/3 8/8/3 7/9/3 -f 8/10/4 10/11/4 9/12/4 -f 10/13/5 12/14/5 11/15/5 -f 12/16/6 14/17/6 13/18/6 -f 13/19/7 14/20/7 16/21/7 -f 15/22/8 16/23/8 18/24/8 -f 18/25/9 20/26/9 19/27/9 -f 20/28/10 22/29/10 21/30/10 -f 21/31/11 22/32/11 24/33/11 -f 23/34/12 24/35/12 26/36/12 -f 26/34/13 28/37/13 27/38/13 -f 28/39/14 30/40/14 29/41/14 -f 22/42/15 14/43/15 6/44/15 -f 31/45/16 32/46/16 2/47/16 -f 30/48/17 32/39/17 31/49/17 -f 19/50/18 21/51/18 17/52/18 -f 34/53/1 36/54/1 35/55/1 -f 36/56/19 38/57/19 37/58/19 -f 38/59/3 40/60/3 39/61/3 -f 40/62/4 42/63/4 41/64/4 -f 41/65/5 42/66/5 44/67/5 -f 44/14/6 46/13/6 45/68/6 -f 46/69/20 48/70/20 47/71/20 -f 48/72/8 50/73/8 49/5/8 -f 50/74/9 52/75/9 51/76/9 -f 52/77/21 54/78/21 53/79/21 -f 54/80/11 56/81/11 55/82/11 -f 55/83/22 56/84/22 58/85/22 -f 58/45/23 60/86/23 59/87/23 -f 60/88/14 62/89/14 61/90/14 -f 42/91/24 40/92/24 38/93/24 -f 64/94/16 34/95/16 33/96/16 -f 62/65/25 64/97/25 63/98/25 -f 45/99/18 47/100/18 49/101/18 -f 66/102/26 68/103/26 204/104/26 -f 68/105/27 70/106/27 205/107/27 -f 70/108/3 72/109/3 206/110/3 -f 72/111/4 74/112/4 207/113/4 -f 207/114/5 74/115/5 76/116/5 -f 208/107/6 76/106/6 78/117/6 -f 78/118/28 80/115/28 210/114/28 -f 80/119/29 82/120/29 211/121/29 -f 82/122/9 84/123/9 212/124/9 -f 84/125/30 86/126/30 213/127/30 -f 86/116/31 88/128/31 214/129/31 -f 214/129/32 88/128/32 90/125/32 -f 90/130/23 92/131/23 216/132/23 -f 92/133/14 94/134/14 217/135/14 -f 88/136/15 82/137/15 96/138/15 -f 96/123/16 66/139/16 203/140/16 -f 94/126/33 96/141/33 218/142/33 -f 79/143/18 87/144/18 71/145/18 -f 98/146/1 100/147/1 99/148/1 -f 100/149/34 102/150/34 101/151/34 -f 102/150/3 104/152/3 103/153/3 -f 104/154/4 106/147/4 105/155/4 -f 106/156/5 108/148/5 107/147/5 -f 108/157/6 110/97/6 109/67/6 -f 109/158/35 110/159/35 112/84/35 -f 112/157/8 114/160/8 113/161/8 -f 114/162/9 116/163/9 115/164/9 -f 116/165/21 118/166/21 117/160/21 -f 118/167/36 120/168/36 119/169/36 -f 120/170/37 122/160/37 121/166/37 -f 121/171/38 122/172/38 124/173/38 -f 123/174/39 124/175/39 126/176/39 -f 122/177/15 110/178/15 102/179/15 -f 127/64/16 128/63/16 98/146/16 -f 125/170/40 126/176/40 128/161/40 -f 119/180/18 127/181/18 103/182/18 -f 130/183/1 132/174/1 131/184/1 -f 132/185/34 134/154/34 133/186/34 -f 134/152/3 136/187/3 135/188/3 -f 136/189/4 138/162/4 137/190/4 -f 137/146/5 138/191/5 140/155/5 -f 140/192/6 142/98/6 141/97/6 -f 142/174/28 144/170/28 143/193/28 -f 143/194/8 144/195/8 146/196/8 -f 145/197/9 146/120/9 148/87/9 -f 148/198/21 150/199/21 149/187/21 -f 150/200/41 152/201/41 151/202/41 -f 151/164/32 152/163/32 154/169/32 -f 154/203/42 156/204/42 155/205/42 -f 155/206/39 156/207/39 158/208/39 -f 140/209/43 138/210/43 136/211/43 -f 159/9/16 160/8/16 130/212/16 -f 157/191/40 158/146/40 160/61/40 -f 131/213/18 143/214/18 151/215/18 -f 161/216/44 174/217/44 173/218/44 -f 162/219/45 174/220/45 176/221/45 -f 161/222/46 173/223/46 178/224/46 -f 161/225/47 178/226/47 180/227/47 -f 161/228/48 180/229/48 177/230/48 -f 162/231/49 176/232/49 183/233/49 -f 163/234/50 175/235/50 185/236/50 -f 164/237/51 179/238/51 187/235/51 -f 165/239/52 181/240/52 189/241/52 -f 166/242/53 182/243/53 191/244/53 -f 162/245/54 183/246/54 186/247/54 -f 163/248/55 185/249/55 188/250/55 -f 164/251/56 187/252/56 190/253/56 -f 165/254/57 189/255/57 192/256/57 -f 166/257/58 191/258/58 184/259/58 -f 167/260/59 193/261/59 198/262/59 -f 168/263/60 194/264/60 200/265/60 -f 169/266/61 195/267/61 201/268/61 -f 170/123/62 196/269/62 202/270/62 -f 171/24/63 197/5/63 199/271/63 -f 173/272/64 175/5/64 163/2/64 -f 173/273/65 174/274/65 175/275/65 -f 174/54/66 162/77/66 175/276/66 -f 176/277/67 177/223/67 166/278/67 -f 176/279/68 174/280/68 177/281/68 -f 174/282/69 161/269/69 177/283/69 -f 178/284/70 179/285/70 164/261/70 -f 178/286/71 173/287/71 179/288/71 -f 173/289/72 163/290/72 179/291/72 -f 180/292/73 181/293/73 165/294/73 -f 180/240/74 178/295/74 181/296/74 -f 178/294/75 164/297/75 181/298/75 -f 177/265/76 182/299/76 166/300/76 -f 177/301/77 180/302/77 182/303/77 -f 180/304/78 165/305/78 182/306/78 -f 183/307/79 184/308/79 171/309/79 -f 183/310/80 176/311/80 184/279/80 -f 176/312/81 166/313/81 184/314/81 -f 185/315/82 186/316/82 167/317/82 -f 185/318/83 175/319/83 186/320/83 -f 175/321/84 162/322/84 186/323/84 -f 187/324/85 188/325/85 168/326/85 -f 187/327/86 179/328/86 188/329/86 -f 179/293/87 163/330/87 188/331/87 -f 189/332/88 190/333/88 169/334/88 -f 189/335/89 181/336/89 190/337/89 -f 181/267/90 164/338/90 190/339/90 -f 191/259/91 192/340/91 170/341/91 -f 191/342/92 182/343/92 192/344/92 -f 182/345/93 165/346/93 192/347/93 -f 186/247/94 193/258/94 167/348/94 -f 186/349/95 183/350/95 193/204/95 -f 183/351/96 171/352/96 193/353/96 -f 188/354/97 194/355/97 168/356/97 -f 188/357/98 185/358/98 194/359/98 -f 185/360/99 167/361/99 194/362/99 -f 190/363/100 195/364/100 169/365/100 -f 190/357/101 187/366/101 195/367/101 -f 187/368/102 168/369/102 195/370/102 -f 192/371/103 196/372/103 170/234/103 -f 192/373/104 189/328/104 196/374/104 -f 189/375/105 169/376/105 196/377/105 -f 184/378/106 197/379/106 171/363/106 -f 184/380/107 191/381/107 197/382/107 -f 191/383/108 170/384/108 197/385/108 -f 198/386/109 199/387/109 172/2/109 -f 198/388/110 193/389/110 199/390/110 -f 193/290/111 171/391/111 199/392/111 -f 200/393/112 198/394/112 172/395/112 -f 200/366/113 194/345/113 198/396/113 -f 194/397/114 167/398/114 198/399/114 -f 201/400/115 200/401/115 172/402/115 -f 201/403/116 195/404/116 200/389/116 -f 195/353/117 168/405/117 200/406/117 -f 202/407/118 201/408/118 172/409/118 -f 202/410/119 196/411/119 201/412/119 -f 196/413/120 169/346/120 201/414/120 -f 199/415/121 202/237/121 172/416/121 -f 199/302/122 197/417/122 202/319/122 -f 197/309/123 170/418/123 202/419/123 -f 90/420/124 58/421/124 56/12/124 -f 88/422/125 56/423/125 54/424/125 -f 86/425/126 54/426/126 52/427/126 -f 84/428/127 52/429/127 50/430/127 -f 82/431/128 50/432/128 48/433/128 -f 80/434/129 48/435/129 46/436/129 -f 78/437/130 46/438/130 44/439/130 -f 76/440/131 44/441/131 42/442/131 -f 42/443/132 40/444/132 72/445/132 -f 40/442/133 38/441/133 70/446/133 -f 60/196/134 58/447/134 90/448/134 -f 62/449/135 60/450/135 92/451/135 -f 64/452/136 62/453/136 94/454/136 -f 96/455/137 66/456/137 34/424/137 -f 36/457/138 34/458/138 66/459/138 -f 38/460/139 36/461/139 68/462/139 -f 65/463/1 203/464/1 204/104/1 -f 204/465/140 205/107/140 69/466/140 -f 69/105/3 205/467/3 206/110/3 -f 206/468/141 207/113/141 73/469/141 -f 207/114/5 208/470/5 75/471/5 -f 208/107/6 209/472/6 77/103/6 -f 209/473/20 210/114/20 79/474/20 -f 210/475/8 211/121/8 81/118/8 -f 211/476/9 212/124/9 83/116/9 -f 83/477/142 212/478/142 213/127/142 -f 213/470/41 214/129/41 87/479/41 -f 87/479/32 214/129/32 215/478/32 -f 215/480/23 216/132/23 91/481/23 -f 91/118/14 216/482/14 217/135/14 -f 218/124/16 203/140/16 65/128/16 -f 217/127/17 218/142/17 95/483/17 -f 203/484/143 218/485/143 31/486/143 -f 29/487/144 31/488/144 218/489/144 -f 27/490/145 29/491/145 217/492/145 -f 25/493/146 27/494/146 216/495/146 -f 25/496/147 215/497/147 214/498/147 -f 23/499/148 214/500/148 213/501/148 -f 21/502/149 213/503/149 212/504/149 -f 19/505/150 212/506/150 211/507/150 -f 17/508/151 211/509/151 210/489/151 -f 15/510/152 210/511/152 209/512/152 -f 13/57/153 209/513/153 208/514/153 -f 11/515/154 208/516/154 207/517/154 -f 9/518/155 207/519/155 206/520/155 -f 5/521/156 7/37/156 206/522/156 -f 3/523/157 5/486/157 205/524/157 -f 1/515/158 3/525/158 204/526/158 -f 3/527/159 1/1/159 4/3/159 -f 3/528/27 4/4/27 5/6/27 -f 5/94/3 6/7/3 7/9/3 -f 7/529/4 8/10/4 9/12/4 -f 9/90/5 10/13/5 11/15/5 -f 11/530/160 12/16/160 13/18/160 -f 15/33/28 13/19/28 16/21/28 -f 17/531/161 15/22/161 18/24/161 -f 17/74/162 18/25/162 19/27/162 -f 19/532/30 20/28/30 21/30/30 -f 23/21/163 21/31/163 24/33/163 -f 25/533/164 23/34/164 26/36/164 -f 25/534/165 26/34/165 27/38/165 -f 27/535/14 28/39/14 29/41/14 -f 6/44/15 4/536/15 2/537/15 -f 30/538/15 6/44/15 32/539/15 -f 30/538/166 28/540/166 26/541/166 -f 26/541/24 24/542/24 22/42/24 -f 22/42/15 20/543/15 18/544/15 -f 18/544/15 16/545/15 14/43/15 -f 14/43/166 12/546/166 10/547/166 -f 6/44/15 14/43/15 8/548/15 -f 29/549/40 30/48/40 31/49/40 -f 22/42/15 6/44/15 26/541/15 -f 22/42/15 18/544/15 14/43/15 -f 6/44/15 2/537/15 32/539/15 -f 14/43/15 10/547/15 8/548/15 -f 1/550/16 31/45/16 2/47/16 -f 6/44/15 30/538/15 26/541/15 -f 31/551/18 1/552/18 3/553/18 -f 21/51/18 25/554/18 17/52/18 -f 11/555/18 5/556/18 9/557/18 -f 11/555/167 13/558/167 15/559/167 -f 33/560/1 34/53/1 35/55/1 -f 23/561/167 25/554/167 21/51/167 -f 31/551/18 5/556/18 27/562/18 -f 27/562/18 29/563/18 31/551/18 -f 5/556/18 17/52/18 25/554/18 -f 15/559/18 5/556/18 11/555/18 -f 31/551/18 3/553/18 5/556/18 -f 5/556/167 7/564/167 9/557/167 -f 15/559/168 17/52/168 5/556/168 -f 35/565/27 36/56/27 37/58/27 -f 5/556/18 25/554/18 27/562/18 -f 37/62/3 38/59/3 39/61/3 -f 39/566/4 40/62/4 41/64/4 -f 43/97/5 41/65/5 44/67/5 -f 43/82/6 44/14/6 45/68/6 -f 45/567/28 46/69/28 47/71/28 -f 47/568/8 48/72/8 49/5/8 -f 49/25/9 50/74/9 51/76/9 -f 51/569/169 52/77/169 53/79/169 -f 53/68/170 54/80/170 55/82/170 -f 57/570/171 55/83/171 58/85/171 -f 57/46/13 58/45/13 59/87/13 -f 59/15/14 60/88/14 61/90/14 -f 38/93/15 36/571/15 34/572/15 -f 34/572/172 64/573/172 62/574/172 -f 58/575/166 54/576/166 60/577/166 -f 58/575/172 56/578/172 54/576/172 -f 54/576/172 52/579/172 50/580/172 -f 50/580/15 48/581/15 46/582/15 -f 46/582/166 44/583/166 42/91/166 -f 63/7/16 64/94/16 33/96/16 -f 62/574/15 60/577/15 34/572/15 -f 60/577/15 54/576/15 38/93/15 -f 46/582/15 38/93/15 50/580/15 -f 46/582/15 42/91/15 38/93/15 -f 61/584/17 62/65/17 63/98/17 -f 60/577/15 38/93/15 34/572/15 -f 38/93/15 54/576/15 50/580/15 -f 37/585/18 39/586/18 63/587/18 -f 204/465/27 68/105/27 205/107/27 -f 39/586/168 41/562/168 43/554/168 -f 49/101/18 39/586/18 43/554/18 -f 51/588/18 39/586/18 49/101/18 -f 51/588/173 53/589/173 55/590/173 -f 55/590/168 57/591/168 59/592/168 -f 59/592/174 61/593/174 63/587/174 -f 33/594/18 35/595/18 37/585/18 -f 203/464/1 66/102/1 204/104/1 -f 51/588/18 55/590/18 59/592/18 -f 63/587/167 51/588/167 59/592/167 -f 33/594/18 37/585/18 63/587/18 -f 45/99/18 49/101/18 43/554/18 -f 39/586/18 51/588/18 63/587/18 -f 205/467/3 70/108/3 206/110/3 -f 206/468/141 72/111/141 207/113/141 -f 208/470/175 207/114/175 76/116/175 -f 209/472/6 208/107/6 78/117/6 -f 209/473/20 78/118/20 210/114/20 -f 210/475/29 80/119/29 211/121/29 -f 211/476/9 82/122/9 212/124/9 -f 212/478/30 84/125/30 213/127/30 -f 213/470/176 86/116/176 214/129/176 -f 215/478/32 214/129/32 90/125/32 -f 215/480/23 90/130/23 216/132/23 -f 216/482/14 92/133/14 217/135/14 -f 66/596/177 96/138/177 68/597/177 -f 70/598/43 82/137/43 80/599/43 -f 94/600/172 92/601/172 90/602/172 -f 218/124/16 96/123/16 203/140/16 -f 86/603/178 84/604/178 82/137/178 -f 78/605/166 70/598/166 80/599/166 -f 78/605/179 76/606/179 74/607/179 -f 74/607/180 72/608/180 70/598/180 -f 94/600/166 88/136/166 96/138/166 -f 88/136/15 86/603/15 82/137/15 -f 217/127/40 94/126/40 218/142/40 -f 78/605/15 74/607/15 70/598/15 -f 94/600/166 90/602/166 88/136/166 -f 96/138/178 70/598/178 68/597/178 -f 70/598/15 96/138/15 82/137/15 -f 95/609/18 65/610/18 67/611/18 -f 71/145/173 93/612/173 69/613/173 -f 99/189/27 100/149/27 101/151/27 -f 79/143/181 73/614/181 77/615/181 -f 79/143/18 81/616/18 83/617/18 -f 83/617/182 85/618/182 87/144/182 -f 87/144/168 89/619/168 91/620/168 -f 95/609/183 67/611/183 93/612/183 -f 91/620/184 93/612/184 71/145/184 -f 93/612/184 67/611/184 69/613/184 -f 79/143/18 83/617/18 87/144/18 -f 79/143/18 71/145/18 73/614/18 -f 97/621/26 98/146/26 99/148/26 -f 71/145/18 87/144/18 91/620/18 -f 73/614/185 75/622/185 77/615/185 -f 101/151/186 102/150/186 103/153/186 -f 103/186/141 104/154/141 105/155/141 -f 105/154/175 106/156/175 107/147/175 -f 107/165/187 108/157/187 109/67/187 -f 111/83/28 109/158/28 112/84/28 -f 111/192/29 112/157/29 113/161/29 -f 113/190/9 114/162/9 115/164/9 -f 115/157/188 116/165/188 117/160/188 -f 117/115/189 118/167/189 119/169/189 -f 119/193/190 120/170/190 121/166/190 -f 123/208/42 121/171/42 124/173/42 -f 125/170/14 123/174/14 126/176/14 -f 102/179/15 100/623/15 98/624/15 -f 126/625/172 124/626/172 128/627/172 -f 122/177/15 98/624/15 124/626/15 -f 122/177/166 120/628/166 118/629/166 -f 118/629/166 116/630/166 114/631/166 -f 110/178/15 122/177/15 112/632/15 -f 110/178/15 108/633/15 106/634/15 -f 102/179/15 110/178/15 104/635/15 -f 110/178/15 106/634/15 104/635/15 -f 122/177/15 114/631/15 112/632/15 -f 124/626/15 98/624/15 128/627/15 -f 122/177/15 118/629/15 114/631/15 -f 97/621/16 127/64/16 98/146/16 -f 122/177/15 102/179/15 98/624/15 -f 127/160/191 125/170/191 128/161/191 -f 127/181/18 97/636/18 99/637/18 -f 99/637/167 101/638/167 103/182/167 -f 103/182/192 105/639/192 107/640/192 -f 107/640/18 109/641/18 111/642/18 -f 111/642/18 113/643/18 115/211/18 -f 115/211/167 117/644/167 119/180/167 -f 123/645/193 125/646/193 121/647/193 -f 127/181/18 119/180/18 125/646/18 -f 127/181/18 99/637/18 103/182/18 -f 111/642/18 119/180/18 107/640/18 -f 111/642/18 115/211/18 119/180/18 -f 125/646/18 119/180/18 121/647/18 -f 131/203/27 132/185/27 133/186/27 -f 119/180/18 103/182/18 107/640/18 -f 129/382/1 130/183/1 131/184/1 -f 133/153/3 134/152/3 135/188/3 -f 135/149/4 136/189/4 137/190/4 -f 139/147/5 137/146/5 140/155/5 -f 139/157/6 140/192/6 141/97/6 -f 141/184/35 142/174/35 143/193/35 -f 145/81/29 143/194/29 146/196/29 -f 147/86/9 145/197/9 148/87/9 -f 147/648/30 148/198/30 149/187/30 -f 149/649/36 150/200/36 151/202/36 -f 153/168/194 151/164/194 154/169/194 -f 153/185/195 154/203/195 155/205/195 -f 157/173/14 155/206/14 158/208/14 -f 134/643/172 132/650/172 130/651/172 -f 130/651/15 160/629/15 158/628/15 -f 154/652/172 150/653/172 156/654/172 -f 154/652/166 152/655/166 150/653/166 -f 150/653/15 148/656/15 146/657/15 -f 146/657/172 144/658/172 142/659/172 -f 159/60/196 157/191/196 160/61/196 -f 134/643/166 140/209/166 136/211/166 -f 158/628/15 156/654/15 130/651/15 -f 156/654/15 150/653/15 134/643/15 -f 142/659/15 134/643/15 146/657/15 -f 129/340/16 159/9/16 130/212/16 -f 134/643/15 142/659/15 140/209/15 -f 156/654/15 134/643/15 130/651/15 -f 134/643/15 150/653/15 146/657/15 -f 159/660/18 129/661/18 131/213/18 -f 131/213/197 133/662/197 135/663/197 -f 135/663/198 137/664/198 139/665/198 -f 139/665/181 141/666/181 143/214/181 -f 147/632/173 151/215/173 145/178/173 -f 147/632/197 149/667/197 151/215/197 -f 151/215/198 153/640/198 155/639/198 -f 155/639/181 157/668/181 159/660/181 -f 135/663/18 139/665/18 131/213/18 -f 151/215/18 143/214/18 145/178/18 -f 86/669/199 88/422/199 54/424/199 -f 151/215/167 155/639/167 159/660/167 -f 88/670/200 90/420/200 56/12/200 -f 159/660/18 131/213/18 151/215/18 -f 131/213/18 139/665/18 143/214/18 -f 84/671/201 86/425/201 52/427/201 -f 82/672/127 84/428/127 50/430/127 -f 80/673/202 82/431/202 48/433/202 -f 78/674/203 80/434/203 46/436/203 -f 76/675/204 78/437/204 44/439/204 -f 74/676/205 76/440/205 42/442/205 -f 74/446/132 42/443/132 72/445/132 -f 72/445/206 40/442/206 70/446/206 -f 92/677/207 60/196/207 90/448/207 -f 94/678/208 62/449/208 92/451/208 -f 96/679/136 64/452/136 94/454/136 -f 64/48/137 96/455/137 34/424/137 -f 68/680/209 36/457/209 66/459/209 -f 70/681/210 38/460/210 68/462/210 -f 67/117/1 65/463/1 204/104/1 -f 67/108/34 204/465/34 69/466/34 -f 71/134/211 69/105/211 206/110/211 -f 71/682/4 206/468/4 73/469/4 -f 73/474/175 207/114/175 75/471/175 -f 75/466/160 208/107/160 77/103/160 -f 77/133/35 209/473/35 79/474/35 -f 79/109/8 210/475/8 81/118/8 -f 81/115/9 211/476/9 83/116/9 -f 85/683/10 83/477/10 213/127/10 -f 85/471/11 213/470/11 87/479/11 -f 89/477/194 87/479/194 215/478/194 -f 89/684/195 215/480/195 91/481/195 -f 93/109/212 91/118/212 217/135/212 -f 95/116/16 218/124/16 65/128/16 -f 93/683/33 217/127/33 95/483/33 -f 1/523/213 203/484/213 31/486/213 -f 217/509/144 29/487/144 218/489/144 -f 216/685/214 27/490/214 217/492/214 -f 215/686/215 25/493/215 216/495/215 -f 23/508/216 25/496/216 214/498/216 -f 21/687/217 23/499/217 213/501/217 -f 19/688/149 21/502/149 212/504/149 -f 17/689/218 19/505/218 211/507/218 -f 15/496/219 17/508/219 210/489/219 -f 13/690/152 15/510/152 209/512/152 -f 11/27/220 13/57/220 208/514/220 -f 9/525/221 11/515/221 207/517/221 -f 7/691/222 9/518/222 206/520/222 -f 205/692/223 5/521/223 206/522/223 -f 204/693/157 3/523/157 205/524/157 -f 203/694/224 1/515/224 204/526/224 diff --git a/src/main/resources/assets/hbm/models/TheGadget3.obj b/src/main/resources/assets/hbm/models/TheGadget3.obj deleted file mode 100644 index 1b3486829..000000000 --- a/src/main/resources/assets/hbm/models/TheGadget3.obj +++ /dev/null @@ -1,1223 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'TheGadget3.blend1' -# www.blender.org -o Cylinder.003 -v 0.550000 1.500000 -0.850000 -v 0.650000 1.500000 -0.850000 -v 0.550000 1.174719 -0.785298 -v 0.650000 1.174719 -0.785298 -v 0.550001 0.898959 -0.601041 -v 0.650001 0.898959 -0.601041 -v 0.550001 0.714702 -0.325281 -v 0.650001 0.714702 -0.325281 -v 0.550001 0.650000 0.000000 -v 0.650001 0.650000 0.000000 -v 0.550001 0.714702 0.325281 -v 0.650001 0.714702 0.325281 -v 0.550001 0.898959 0.601041 -v 0.650001 0.898959 0.601041 -v 0.550000 1.174719 0.785298 -v 0.650000 1.174719 0.785298 -v 0.550000 1.500000 0.850000 -v 0.650000 1.500000 0.850000 -v 0.550000 1.825281 0.785298 -v 0.650000 1.825281 0.785298 -v 0.549999 2.101041 0.601041 -v 0.649999 2.101041 0.601041 -v 0.549999 2.285297 0.325281 -v 0.649999 2.285298 0.325281 -v 0.549999 2.350000 -0.000000 -v 0.649999 2.350000 -0.000000 -v 0.549999 2.285297 -0.325281 -v 0.649999 2.285298 -0.325281 -v 0.549999 2.101040 -0.601041 -v 0.649999 2.101041 -0.601041 -v 0.550000 1.825280 -0.785298 -v 0.650000 1.825281 -0.785298 -v -0.650000 1.500000 -0.850000 -v -0.550000 1.500000 -0.850000 -v -0.650000 1.174719 -0.785298 -v -0.550000 1.174719 -0.785298 -v -0.649999 0.898959 -0.601041 -v -0.549999 0.898959 -0.601041 -v -0.649999 0.714702 -0.325281 -v -0.549999 0.714702 -0.325281 -v -0.649999 0.650000 0.000000 -v -0.549999 0.650000 0.000000 -v -0.649999 0.714702 0.325281 -v -0.549999 0.714702 0.325281 -v -0.649999 0.898959 0.601041 -v -0.549999 0.898959 0.601041 -v -0.650000 1.174719 0.785298 -v -0.550000 1.174719 0.785298 -v -0.650000 1.500000 0.850000 -v -0.550000 1.500000 0.850000 -v -0.650000 1.825281 0.785298 -v -0.550000 1.825281 0.785298 -v -0.650001 2.101041 0.601041 -v -0.550001 2.101041 0.601041 -v -0.650001 2.285297 0.325281 -v -0.550001 2.285298 0.325281 -v -0.650001 2.350000 -0.000000 -v -0.550001 2.350000 -0.000000 -v -0.650001 2.285297 -0.325281 -v -0.550001 2.285298 -0.325281 -v -0.650001 2.101040 -0.601041 -v -0.550001 2.101041 -0.601041 -v -0.650000 1.825280 -0.785298 -v -0.550000 1.825281 -0.785298 -v -1.500000 1.499999 -0.700000 -v 1.000000 1.500001 -0.700000 -v -1.500000 1.232120 -0.646716 -v 1.000000 1.232123 -0.646716 -v -1.500000 1.005024 -0.494975 -v 1.000000 1.005026 -0.494975 -v -1.499999 0.853283 -0.267878 -v 1.000000 0.853285 -0.267878 -v -1.499999 0.799999 0.000000 -v 1.000000 0.800001 0.000000 -v -1.499999 0.853283 0.267878 -v 1.000000 0.853285 0.267878 -v -1.500000 1.005024 0.494975 -v 1.000000 1.005026 0.494975 -v -1.500000 1.232120 0.646716 -v 1.000000 1.232123 0.646716 -v -1.500000 1.499999 0.700000 -v 1.000000 1.500001 0.700000 -v -1.500000 1.767877 0.646716 -v 1.000000 1.767879 0.646716 -v -1.500000 1.994973 0.494975 -v 0.999999 1.994976 0.494975 -v -1.500001 2.146714 0.267879 -v 0.999999 2.146717 0.267879 -v -1.500001 2.199999 -0.000000 -v 0.999999 2.200001 -0.000000 -v -1.500001 2.146714 -0.267879 -v 0.999999 2.146717 -0.267879 -v -1.500000 1.994973 -0.494975 -v 0.999999 1.994976 -0.494975 -v -1.500000 1.767877 -0.646716 -v 1.000000 1.767879 -0.646716 -v 0.450000 1.500000 -1.000000 -v 0.550000 1.500000 -1.000000 -v 0.450000 1.117316 -0.923880 -v 0.550000 1.117316 -0.923880 -v 0.450001 0.792893 -0.707107 -v 0.550001 0.792893 -0.707107 -v 0.450001 0.576120 -0.382683 -v 0.550001 0.576120 -0.382683 -v 0.450001 0.500000 0.000000 -v 0.550001 0.500000 0.000000 -v 0.450001 0.576120 0.382684 -v 0.550001 0.576120 0.382684 -v 0.450001 0.792893 0.707107 -v 0.550001 0.792893 0.707107 -v 0.450000 1.117316 0.923880 -v 0.550000 1.117316 0.923880 -v 0.450000 1.500000 1.000000 -v 0.550000 1.500000 1.000000 -v 0.450000 1.882683 0.923880 -v 0.550000 1.882683 0.923880 -v 0.449999 2.207107 0.707107 -v 0.549999 2.207107 0.707107 -v 0.449999 2.423879 0.382684 -v 0.549999 2.423880 0.382684 -v 0.449999 2.500000 -0.000000 -v 0.549999 2.500000 -0.000000 -v 0.449999 2.423879 -0.382684 -v 0.549999 2.423879 -0.382684 -v 0.449999 2.207106 -0.707107 -v 0.549999 2.207107 -0.707107 -v 0.450000 1.882683 -0.923880 -v 0.550000 1.882683 -0.923880 -v -0.550000 1.500000 -1.000000 -v -0.450000 1.500000 -1.000000 -v -0.550000 1.117316 -0.923880 -v -0.450000 1.117317 -0.923880 -v -0.549999 0.792893 -0.707107 -v -0.449999 0.792893 -0.707107 -v -0.549999 0.576120 -0.382683 -v -0.449999 0.576120 -0.382683 -v -0.549999 0.500000 0.000000 -v -0.449999 0.500000 0.000000 -v -0.549999 0.576120 0.382684 -v -0.449999 0.576120 0.382684 -v -0.549999 0.792893 0.707107 -v -0.449999 0.792893 0.707107 -v -0.550000 1.117316 0.923880 -v -0.450000 1.117316 0.923880 -v -0.550000 1.500000 1.000000 -v -0.450000 1.500000 1.000000 -v -0.550000 1.882683 0.923880 -v -0.450000 1.882683 0.923880 -v -0.550001 2.207107 0.707107 -v -0.450001 2.207107 0.707107 -v -0.550001 2.423879 0.382684 -v -0.450001 2.423880 0.382684 -v -0.550001 2.500000 -0.000000 -v -0.450001 2.500000 -0.000000 -v -0.550001 2.423879 -0.382684 -v -0.450001 2.423879 -0.382684 -v -0.550001 2.207107 -0.707107 -v -0.450001 2.207107 -0.707107 -v -0.550000 1.882683 -0.923880 -v -0.450000 1.882683 -0.923880 -v -0.550000 -0.000000 -0.750000 -v -0.550000 -0.000000 -1.000000 -v -0.450000 -0.000000 -1.000000 -v -0.450000 -0.000000 -0.750000 -v -0.550000 -0.000000 1.000000 -v -0.550000 -0.000000 0.750000 -v -0.450000 -0.000000 0.750000 -v -0.450000 -0.000000 1.000000 -v 0.450000 0.000000 -0.750000 -v 0.450000 0.000000 -1.000000 -v 0.550000 0.000000 -1.000000 -v 0.550000 0.000000 -0.750000 -v 0.450000 -0.000000 1.000000 -v 0.450000 -0.000000 0.750000 -v 0.550000 -0.000000 0.750000 -v 0.550000 -0.000000 1.000000 -v -1.125000 1.499999 -0.700000 -v -1.125000 1.232121 -0.646716 -v -1.125000 1.005024 -0.494975 -v -1.124999 0.853284 -0.267878 -v -1.124999 0.799999 0.000000 -v -1.124999 0.853284 0.267878 -v -1.125000 1.005024 0.494975 -v -1.125000 1.232121 0.646716 -v -1.125000 1.499999 0.700000 -v -1.125000 1.767877 0.646716 -v -1.125000 1.994974 0.494975 -v -1.125001 2.146715 0.267879 -v -1.125001 2.199999 -0.000000 -v -1.125001 2.146715 -0.267879 -v -1.125000 1.994974 -0.494975 -v -1.125000 1.767877 -0.646716 -v 0.707106 2.207107 0.000000 -v 0.382683 2.423880 0.000000 -v -0.000001 2.500000 0.000000 -v -0.382684 2.423880 0.000000 -v -0.707107 2.207107 0.000000 -v 0.707106 2.000000 -0.500000 -v 0.382683 2.153281 -0.653281 -v -0.000001 2.207107 -0.707107 -v -0.382684 2.153281 -0.653281 -v -0.707107 2.000000 -0.500000 -v 0.707106 1.500000 -0.707107 -v 0.382683 1.500000 -0.923879 -v -0.000000 1.500000 -1.000000 -v -0.382684 1.500000 -0.923879 -v -0.707107 1.500000 -0.707107 -v 0.707106 1.000000 -0.500000 -v 0.382683 0.846719 -0.653281 -v -0.000000 0.792893 -0.707107 -v -0.382684 0.846719 -0.653281 -v -0.707107 1.000000 -0.500000 -v 0.707106 0.792894 -0.000000 -v 0.382683 0.576121 -0.000000 -v -0.000000 0.500001 -0.000000 -v -0.382684 0.576121 -0.000000 -v -0.707107 0.792894 -0.000000 -v 0.707106 1.000000 0.500000 -v 0.382683 0.846719 0.653281 -v -0.000000 0.792893 0.707107 -v -0.382684 0.846719 0.653281 -v -0.707107 1.000000 0.500000 -v 0.707106 1.500000 0.707107 -v 0.382683 1.500000 0.923879 -v -0.000000 1.500000 1.000000 -v -0.382684 1.500000 0.923879 -v -0.707107 1.500000 0.707107 -v 0.707106 2.000000 0.500000 -v 0.382683 2.153281 0.653281 -v -0.000001 2.207107 0.707107 -v -0.382684 2.153281 0.653281 -v -0.707107 2.000000 0.500000 -vt 0.167969 0.666472 -vt 0.167969 0.678076 -vt 0.129484 0.678076 -vt 0.090999 0.678076 -vt 0.090999 0.666472 -vt 0.052513 0.678076 -vt 0.052513 0.666472 -vt 0.014028 0.678076 -vt 0.014028 0.666472 -vt 0.629794 0.666472 -vt 0.629794 0.678076 -vt 0.591308 0.678076 -vt 0.552823 0.678076 -vt 0.552823 0.666472 -vt 0.514338 0.678076 -vt 0.475852 0.678076 -vt 0.475852 0.666472 -vt 0.437367 0.678076 -vt 0.437367 0.666472 -vt 0.398881 0.678076 -vt 0.360396 0.678076 -vt 0.360396 0.666472 -vt 0.321910 0.678076 -vt 0.321910 0.666472 -vt 0.283425 0.678076 -vt 0.283425 0.666472 -vt 0.244940 0.678076 -vt 0.206454 0.666472 -vt 0.206454 0.678076 -vt 0.244940 0.666472 -vt 0.167969 0.126901 -vt 0.129483 0.126888 -vt 0.129487 0.115284 -vt 0.090998 0.126875 -vt 0.091002 0.115271 -vt 0.052513 0.126861 -vt 0.052517 0.115257 -vt 0.014028 0.126848 -vt 0.629793 0.127059 -vt 0.591308 0.127046 -vt 0.591312 0.115442 -vt 0.552822 0.127033 -vt 0.552826 0.115429 -vt 0.514337 0.127020 -vt 0.514341 0.115416 -vt 0.475851 0.127007 -vt 0.475855 0.115403 -vt 0.437366 0.126994 -vt 0.437370 0.115389 -vt 0.398881 0.126980 -vt 0.398885 0.115376 -vt 0.360395 0.126967 -vt 0.321910 0.126954 -vt 0.321914 0.115350 -vt 0.283425 0.126941 -vt 0.283429 0.115337 -vt 0.244939 0.126927 -vt 0.206458 0.115310 -vt 0.206454 0.126914 -vt 0.244943 0.115323 -vt 0.589205 0.570129 -vt 0.537513 0.535589 -vt 0.559924 0.422922 -vt 0.421520 0.957030 -vt 0.466797 0.957030 -vt 0.466797 0.968634 -vt 0.897932 0.155115 -vt 0.943209 0.155115 -vt 0.943209 0.166719 -vt 0.871616 0.373560 -vt 0.826340 0.373560 -vt 0.826340 0.361956 -vt 0.781063 0.373560 -vt 0.781063 0.361956 -vt 0.455191 0.880859 -vt 0.409914 0.880859 -vt 0.409914 0.869255 -vt 0.364637 0.880859 -vt 0.364637 0.869255 -vt 0.943209 0.206379 -vt 0.897932 0.206379 -vt 0.897932 0.194775 -vt 0.014028 0.957029 -vt 0.059305 0.957029 -vt 0.059305 0.968633 -vt 0.104582 0.957029 -vt 0.104582 0.968633 -vt 0.149858 0.957029 -vt 0.195135 0.957029 -vt 0.195135 0.968633 -vt 0.240412 0.957029 -vt 0.240412 0.968633 -vt 0.285689 0.957029 -vt 0.285689 0.968633 -vt 0.330966 0.957029 -vt 0.105201 0.410793 -vt 0.241650 0.501966 -vt 0.014028 0.547243 -vt 0.376243 0.957029 -vt 0.421520 0.968634 -vt 0.330966 0.968634 -vt 0.574727 0.365411 -vt 0.525385 0.291565 -vt 0.616557 0.155115 -vt 0.772129 0.917369 -vt 0.817406 0.917369 -vt 0.817406 0.928973 -vt 0.601856 0.880859 -vt 0.601856 0.869255 -vt 0.647133 0.869255 -vt 0.573800 0.880859 -vt 0.528523 0.880859 -vt 0.528523 0.869255 -vt 0.483246 0.880859 -vt 0.483246 0.869255 -vt 0.961341 0.836081 -vt 0.916064 0.836081 -vt 0.916064 0.824477 -vt 0.870787 0.836081 -vt 0.870787 0.824477 -vt 0.916064 0.864137 -vt 0.916064 0.875741 -vt 0.870787 0.875741 -vt 0.364637 0.928973 -vt 0.364637 0.917369 -vt 0.409914 0.917369 -vt 0.455191 0.917369 -vt 0.455191 0.928973 -vt 0.500467 0.917369 -vt 0.500467 0.928973 -vt 0.545744 0.917369 -vt 0.545744 0.928973 -vt 0.591021 0.917369 -vt 0.591021 0.928973 -vt 0.636298 0.917369 -vt 0.636298 0.928973 -vt 0.681575 0.917369 -vt 0.681575 0.928973 -vt 0.105201 0.155115 -vt 0.241650 0.246288 -vt 0.014028 0.291565 -vt 0.726852 0.917369 -vt 0.772129 0.928973 -vt 0.360879 0.382738 -vt 0.269706 0.246288 -vt 0.406156 0.155115 -vt 0.350122 0.445333 -vt 0.462789 0.422922 -vt 0.485200 0.535589 -vt 0.787808 0.042971 -vt 0.657853 0.042971 -vt 0.693703 0.015316 -vt 0.787808 0.071027 -vt 0.785836 0.099970 -vt 0.693703 0.098682 -vt 0.975417 0.946312 -vt 0.845462 0.946312 -vt 0.881311 0.918657 -vt 0.364637 0.841199 -vt 0.364637 0.829595 -vt 0.494592 0.829595 -vt 0.624808 0.985972 -vt 0.494853 0.985972 -vt 0.530702 0.958317 -vt 0.399665 0.626770 -vt 0.399661 0.638374 -vt 0.269706 0.638329 -vt 0.842731 0.824477 -vt 0.840759 0.853420 -vt 0.748626 0.852132 -vt 0.520818 0.626812 -vt 0.520814 0.638416 -vt 0.428672 0.638384 -vt 0.523602 0.829595 -vt 0.615745 0.829595 -vt 0.615745 0.841199 -vt 0.678829 0.638416 -vt 0.548874 0.638416 -vt 0.584723 0.610761 -vt 0.945819 0.014028 -vt 0.943847 0.042971 -vt 0.851714 0.041683 -vt 0.945819 0.071027 -vt 0.943847 0.099970 -vt 0.851714 0.098682 -vt 0.523602 0.841199 -vt 0.494592 0.841199 -vt 0.523603 0.789935 -vt 0.615745 0.789935 -vt 0.615745 0.801539 -vt 0.364637 0.801539 -vt 0.364637 0.789935 -vt 0.494592 0.789935 -vt 0.494596 0.750233 -vt 0.494592 0.761837 -vt 0.364637 0.761792 -vt 0.615749 0.750275 -vt 0.615745 0.761879 -vt 0.523602 0.761847 -vt 0.428676 0.626780 -vt 0.523606 0.750243 -vt 0.523603 0.801539 -vt 0.494592 0.801539 -vt 0.164597 0.057593 -vt 0.132903 0.057583 -vt 0.132918 0.014067 -vt 0.126111 0.057580 -vt 0.094418 0.057569 -vt 0.094433 0.014054 -vt 0.087626 0.057567 -vt 0.055933 0.057556 -vt 0.055947 0.014041 -vt 0.049141 0.057554 -vt 0.017447 0.057543 -vt 0.017462 0.014028 -vt 0.626436 0.014236 -vt 0.626421 0.057751 -vt 0.594727 0.057740 -vt 0.587936 0.057738 -vt 0.556242 0.057727 -vt 0.556257 0.014212 -vt 0.549450 0.057725 -vt 0.517756 0.057714 -vt 0.517771 0.014199 -vt 0.510965 0.057712 -vt 0.479271 0.057701 -vt 0.479286 0.014186 -vt 0.472494 0.014183 -vt 0.472479 0.057699 -vt 0.440786 0.057688 -vt 0.434009 0.014170 -vt 0.433994 0.057686 -vt 0.402300 0.057675 -vt 0.395524 0.014157 -vt 0.395509 0.057672 -vt 0.363815 0.057662 -vt 0.357023 0.057659 -vt 0.325329 0.057648 -vt 0.325344 0.014133 -vt 0.318538 0.057646 -vt 0.286844 0.057635 -vt 0.286859 0.014120 -vt 0.280053 0.057633 -vt 0.248359 0.057622 -vt 0.248374 0.014107 -vt 0.203082 0.057607 -vt 0.171388 0.057596 -vt 0.171403 0.014081 -vt 0.241567 0.057620 -vt 0.209873 0.057609 -vt 0.209888 0.014094 -vt 0.360399 0.115363 -vt 0.014032 0.115244 -vt 0.167973 0.115297 -vt 0.357000 0.722132 -vt 0.286821 0.722132 -vt 0.248335 0.722132 -vt 0.209850 0.722132 -vt 0.171365 0.722132 -vt 0.132880 0.722132 -vt 0.094394 0.722132 -vt 0.055909 0.722132 -vt 0.017424 0.722132 -vt 0.626398 0.722133 -vt 0.587913 0.722133 -vt 0.549427 0.722132 -vt 0.510942 0.722132 -vt 0.472456 0.722132 -vt 0.433971 0.722132 -vt 0.395485 0.722132 -vt 0.336581 0.839581 -vt 0.247767 0.839581 -vt 0.251147 0.794430 -vt 0.323575 0.928973 -vt 0.260774 0.928973 -vt 0.251147 0.884731 -vt 0.333201 0.794430 -vt 0.260774 0.750188 -vt 0.333201 0.884731 -vt 0.918460 0.707029 -vt 0.829646 0.707029 -vt 0.833026 0.661878 -vt 0.905453 0.796421 -vt 0.842652 0.796421 -vt 0.833026 0.752179 -vt 0.915079 0.661878 -vt 0.842652 0.617636 -vt 0.915079 0.752179 -vt 0.089835 0.750188 -vt 0.099461 0.794430 -vt 0.017408 0.794430 -vt 0.099461 0.884731 -vt 0.017408 0.884731 -vt 0.014028 0.839581 -vt 0.102842 0.839581 -vt 0.089835 0.928973 -vt 0.027034 0.928973 -vt 0.798208 0.545339 -vt 0.716155 0.545336 -vt 0.712776 0.500185 -vt 0.801590 0.500188 -vt 0.716158 0.455035 -vt 0.788580 0.589580 -vt 0.725779 0.589578 -vt 0.788587 0.410796 -vt 0.798211 0.455038 -vt 0.801590 0.707029 -vt 0.712776 0.707029 -vt 0.716156 0.661878 -vt 0.788583 0.796421 -vt 0.725782 0.796421 -vt 0.716156 0.752179 -vt 0.788584 0.617636 -vt 0.798210 0.661878 -vt 0.798209 0.752179 -vt 0.905453 0.589578 -vt 0.842652 0.589578 -vt 0.833026 0.545336 -vt 0.915079 0.455035 -vt 0.833026 0.455035 -vt 0.842652 0.410793 -vt 0.918460 0.500186 -vt 0.915079 0.545336 -vt 0.829646 0.500186 -vt 0.866496 0.199357 -vt 0.784443 0.199357 -vt 0.794069 0.155115 -vt 0.869877 0.244508 -vt 0.866496 0.289658 -vt 0.784443 0.289658 -vt 0.781063 0.244507 -vt 0.856870 0.333900 -vt 0.794069 0.333900 -vt 0.216331 0.794430 -vt 0.219711 0.839581 -vt 0.130898 0.839581 -vt 0.206705 0.928973 -vt 0.143904 0.928973 -vt 0.134278 0.884731 -vt 0.134278 0.794430 -vt 0.143904 0.750188 -vt 0.216331 0.884731 -vt 0.129484 0.666472 -vt 0.591308 0.666472 -vt 0.514338 0.666472 -vt 0.398881 0.666472 -vt 0.629797 0.115455 -vt 0.589206 0.410793 -vt 0.620899 0.410793 -vt 0.650181 0.422922 -vt 0.672592 0.445333 -vt 0.684720 0.474614 -vt 0.684720 0.506308 -vt 0.672591 0.535590 -vt 0.650180 0.558000 -vt 0.620899 0.570129 -vt 0.559924 0.558000 -vt 0.525385 0.506308 -vt 0.525385 0.474614 -vt 0.537513 0.445333 -vt 0.897932 0.166719 -vt 0.871616 0.361956 -vt 0.455191 0.869255 -vt 0.943209 0.194775 -vt 0.014028 0.968633 -vt 0.149858 0.968633 -vt 0.150478 0.638416 -vt 0.105201 0.638416 -vt 0.063370 0.621089 -vt 0.031355 0.589073 -vt 0.014028 0.501966 -vt 0.031355 0.460136 -vt 0.063370 0.428120 -vt 0.150478 0.410793 -vt 0.192308 0.428120 -vt 0.224324 0.460136 -vt 0.241650 0.547243 -vt 0.224324 0.589074 -vt 0.192308 0.621089 -vt 0.376243 0.968634 -vt 0.661834 0.155115 -vt 0.703665 0.172442 -vt 0.735680 0.204457 -vt 0.753007 0.246288 -vt 0.753007 0.291565 -vt 0.735680 0.333395 -vt 0.703665 0.365411 -vt 0.661834 0.382738 -vt 0.616557 0.382738 -vt 0.542711 0.333395 -vt 0.525385 0.246288 -vt 0.542711 0.204457 -vt 0.574727 0.172442 -vt 0.647133 0.880859 -vt 0.573800 0.869255 -vt 0.961341 0.824477 -vt 0.870787 0.864137 -vt 0.409914 0.928973 -vt 0.150478 0.382738 -vt 0.105201 0.382738 -vt 0.063370 0.365411 -vt 0.031355 0.333395 -vt 0.014028 0.246288 -vt 0.031355 0.204458 -vt 0.063370 0.172442 -vt 0.150478 0.155115 -vt 0.192308 0.172442 -vt 0.224324 0.204457 -vt 0.241650 0.291565 -vt 0.224324 0.333395 -vt 0.192308 0.365411 -vt 0.726852 0.928973 -vt 0.447986 0.172442 -vt 0.480002 0.204457 -vt 0.497329 0.246288 -vt 0.497329 0.291565 -vt 0.480002 0.333395 -vt 0.447986 0.365411 -vt 0.406156 0.382738 -vt 0.319049 0.365411 -vt 0.287033 0.333395 -vt 0.269706 0.291565 -vt 0.287033 0.204458 -vt 0.319049 0.172442 -vt 0.360879 0.155115 -vt 0.462789 0.558000 -vt 0.433508 0.570129 -vt 0.401814 0.570129 -vt 0.372533 0.558000 -vt 0.350122 0.535589 -vt 0.337993 0.506308 -vt 0.337993 0.474614 -vt 0.372533 0.422922 -vt 0.401814 0.410793 -vt 0.433508 0.410793 -vt 0.485200 0.445333 -vt 0.497329 0.474614 -vt 0.497329 0.506308 -vt 0.785836 0.014028 -vt 0.657853 0.071027 -vt 0.973445 0.917369 -vt 0.622836 0.957029 -vt 0.269710 0.626725 -vt 0.712776 0.824477 -vt 0.676857 0.609473 -vt 0.815864 0.014028 -vt 0.815864 0.071027 -vt 0.364641 0.750188 -vt 0.164612 0.014078 -vt 0.126126 0.014065 -vt 0.087641 0.014052 -vt 0.049156 0.014039 -vt 0.594742 0.014225 -vt 0.587951 0.014223 -vt 0.549465 0.014210 -vt 0.510980 0.014196 -vt 0.440801 0.014172 -vt 0.402315 0.014159 -vt 0.363830 0.014146 -vt 0.357038 0.014144 -vt 0.318553 0.014131 -vt 0.280067 0.014118 -vt 0.203097 0.014091 -vt 0.241582 0.014104 -vt 0.325306 0.722132 -vt 0.318515 0.722132 -vt 0.280029 0.722132 -vt 0.241544 0.722132 -vt 0.203059 0.722132 -vt 0.164573 0.722132 -vt 0.126088 0.722132 -vt 0.087603 0.722132 -vt 0.049117 0.722132 -vt 0.594704 0.722133 -vt 0.556219 0.722133 -vt 0.517733 0.722132 -vt 0.479248 0.722132 -vt 0.440762 0.722132 -vt 0.402277 0.722132 -vt 0.363792 0.722132 -vt 0.323575 0.750188 -vt 0.905453 0.617636 -vt 0.027034 0.750188 -vt 0.725786 0.410793 -vt 0.725783 0.617636 -vt 0.905453 0.410793 -vt 0.856870 0.155115 -vt 0.206705 0.750188 -vn 0.000000 -0.195100 -0.980800 -vn -0.000000 -0.555600 -0.831500 -vn 0.000000 -0.831500 -0.555600 -vn 0.000000 -0.980800 -0.195100 -vn 0.000000 -0.980800 0.195100 -vn 0.000000 -0.831500 0.555600 -vn 0.000000 -0.555600 0.831500 -vn 0.000000 -0.195100 0.980800 -vn -0.000000 0.195100 0.980800 -vn 0.000000 0.555600 0.831500 -vn -0.000000 0.831500 0.555600 -vn 0.000000 0.980800 0.195100 -vn 0.000000 0.980800 -0.195100 -vn -0.000000 0.831500 -0.555600 -vn 0.000000 0.195100 -0.980800 -vn -0.000000 0.555600 -0.831500 -vn -1.000000 -0.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.068000 -0.997700 -vn 0.000000 0.068000 0.997700 -vn 0.000000 -0.054000 -0.998500 -vn 0.000000 -0.054000 0.998500 -vn 0.000000 -1.000000 0.000000 -vn -0.295900 0.794200 -0.530700 -vn -0.295900 0.936900 -0.186400 -vn -0.295900 0.936900 0.186400 -vn -0.295900 0.794200 0.530700 -vn -0.295900 0.530700 0.794200 -vn -0.295900 0.186400 0.936900 -vn -0.295900 -0.186400 0.936900 -vn -0.295900 -0.530700 0.794200 -vn -0.295900 -0.794200 0.530700 -vn -0.295900 -0.936900 0.186400 -vn -0.295900 -0.936900 -0.186400 -vn -0.295900 -0.794200 -0.530700 -vn -0.295900 -0.530700 -0.794200 -vn -0.295900 -0.186400 -0.936900 -vn -0.295900 0.186400 -0.936900 -vn -0.295900 0.530700 -0.794200 -vn 0.387500 0.904200 0.179800 -vn 0.387500 0.904200 -0.179800 -vn 0.387500 0.766500 -0.512200 -vn 0.387500 0.512200 -0.766500 -vn 0.387500 0.179800 -0.904200 -vn 0.387500 -0.179800 -0.904200 -vn 0.387500 -0.512200 -0.766500 -vn 0.387500 -0.766500 -0.512200 -vn 0.387500 -0.904200 -0.179800 -vn 0.387500 -0.904200 0.179800 -vn 0.387500 -0.766500 0.512200 -vn 0.387500 -0.512200 0.766500 -vn 0.387500 -0.179800 0.904200 -vn 0.387500 0.179800 0.904200 -vn 0.387500 0.512200 0.766500 -vn 0.387500 0.766500 0.512200 -vn -0.180700 0.908700 -0.376400 -vn 0.525300 0.786200 -0.325600 -vn -0.525300 0.786200 -0.325600 -vn 0.180700 0.908700 -0.376400 -vn -0.180700 0.376400 -0.908700 -vn 0.525300 0.325600 -0.786200 -vn -0.525300 0.325600 -0.786200 -vn 0.180700 0.376400 -0.908700 -vn -0.525300 -0.325600 -0.786200 -vn 0.180700 -0.376400 -0.908700 -vn -0.180700 -0.376400 -0.908700 -vn 0.525300 -0.325600 -0.786200 -vn 0.180700 -0.908700 -0.376400 -vn -0.180700 -0.908700 -0.376400 -vn 0.525300 -0.786200 -0.325600 -vn -0.525300 -0.786200 -0.325600 -vn -0.180700 -0.908700 0.376400 -vn 0.525300 -0.786200 0.325600 -vn -0.525300 -0.786200 0.325600 -vn 0.180700 -0.908700 0.376400 -vn 0.525300 -0.325600 0.786200 -vn -0.525300 -0.325600 0.786200 -vn 0.180700 -0.376400 0.908700 -vn -0.180700 -0.376400 0.908700 -vn -0.525300 0.325600 0.786200 -vn 0.180700 0.376400 0.908700 -vn -0.180700 0.376400 0.908700 -vn 0.525300 0.325600 0.786200 -vn -0.180700 0.908700 0.376400 -vn 0.525300 0.786200 0.325600 -vn -0.525300 0.786200 0.325600 -vn 0.180700 0.908700 0.376400 -s off -f 1/1/1 2/2/1 4/3/1 -f 4/3/2 6/4/2 5/5/2 -f 6/4/3 8/6/3 7/7/3 -f 8/6/4 10/8/4 9/9/4 -f 9/10/5 10/11/5 12/12/5 -f 12/12/6 14/13/6 13/14/6 -f 13/14/7 14/13/7 16/15/7 -f 16/15/8 18/16/8 17/17/8 -f 18/16/9 20/18/9 19/19/9 -f 19/19/10 20/18/10 22/20/10 -f 22/20/11 24/21/11 23/22/11 -f 24/21/12 26/23/12 25/24/12 -f 25/24/13 26/23/13 28/25/13 -f 27/26/14 28/25/14 30/27/14 -f 31/28/15 32/29/15 2/2/15 -f 29/30/16 30/27/16 32/29/16 -f 34/31/1 36/32/1 35/33/1 -f 36/32/2 38/34/2 37/35/2 -f 37/35/3 38/34/3 40/36/3 -f 39/37/4 40/36/4 42/38/4 -f 42/39/5 44/40/5 43/41/5 -f 44/40/6 46/42/6 45/43/6 -f 46/42/7 48/44/7 47/45/7 -f 48/44/8 50/46/8 49/47/8 -f 50/46/9 52/48/9 51/49/9 -f 51/49/10 52/48/10 54/50/10 -f 53/51/11 54/50/11 56/52/11 -f 56/52/12 58/53/12 57/54/12 -f 57/54/13 58/53/13 60/55/13 -f 59/56/14 60/55/14 62/57/14 -f 63/58/15 64/59/15 34/31/15 -f 61/60/16 62/57/16 64/59/16 -f 83/61/17 87/62/17 95/63/17 -f 98/64/1 100/65/1 99/66/1 -f 100/67/2 102/68/2 101/69/2 -f 102/70/3 104/71/3 103/72/3 -f 104/71/4 106/73/4 105/74/4 -f 106/75/5 108/76/5 107/77/5 -f 108/76/6 110/78/6 109/79/6 -f 110/80/7 112/81/7 111/82/7 -f 112/83/8 114/84/8 113/85/8 -f 114/84/9 116/86/9 115/87/9 -f 115/87/10 116/86/10 118/88/10 -f 118/88/11 120/89/11 119/90/11 -f 120/89/12 122/91/12 121/92/12 -f 122/91/13 124/93/13 123/94/13 -f 123/94/14 124/93/14 126/95/14 -f 118/96/18 110/97/18 126/98/18 -f 128/99/15 98/64/15 97/100/15 -f 125/101/16 126/95/16 128/99/16 -f 115/102/17 119/103/17 127/104/17 -f 130/105/1 132/106/1 131/107/1 -f 131/108/2 132/109/2 134/110/2 -f 134/111/3 136/112/3 135/113/3 -f 136/112/4 138/114/4 137/115/4 -f 138/116/5 140/117/5 139/118/5 -f 140/117/6 142/119/6 141/120/6 -f 141/121/7 142/122/7 144/123/7 -f 143/124/8 144/125/8 146/126/8 -f 146/126/9 148/127/9 147/128/9 -f 148/127/10 150/129/10 149/130/10 -f 150/129/11 152/131/11 151/132/11 -f 152/131/12 154/133/12 153/134/12 -f 154/133/13 156/135/13 155/136/13 -f 156/135/14 158/137/14 157/138/14 -f 150/139/18 142/140/18 158/141/18 -f 160/142/15 130/105/15 129/143/15 -f 157/138/16 158/137/16 160/142/16 -f 143/144/17 151/145/17 159/146/17 -f 86/147/18 78/148/18 70/149/18 -f 163/150/18 132/151/18 134/152/18 -f 168/153/18 167/154/18 142/155/18 -f 173/156/17 111/157/17 109/158/17 -f 131/159/19 132/160/19 163/161/19 -f 165/162/17 143/163/17 141/164/17 -f 165/165/20 168/166/20 144/167/20 -f 162/168/17 161/169/17 133/170/17 -f 141/171/21 142/172/21 167/173/21 -f 164/174/22 134/175/22 133/176/22 -f 171/177/18 100/178/18 102/179/18 -f 176/180/18 175/181/18 110/182/18 -f 170/183/17 169/184/17 101/185/17 -f 164/174/23 161/186/23 162/187/23 -f 172/188/22 102/189/22 101/190/22 -f 99/191/19 100/192/19 171/193/19 -f 173/194/20 176/195/20 112/196/20 -f 109/197/21 110/198/21 175/199/21 -f 168/166/23 165/165/23 166/200/23 -f 176/195/23 173/194/23 174/201/23 -f 172/188/23 169/202/23 170/203/23 -f 177/204/1 178/205/1 67/206/1 -f 178/207/2 179/208/2 69/209/2 -f 179/210/3 180/211/3 71/212/3 -f 180/213/4 181/214/4 73/215/4 -f 73/216/5 181/217/5 182/218/5 -f 182/219/6 183/220/6 77/221/6 -f 183/222/7 184/223/7 79/224/7 -f 184/225/8 185/226/8 81/227/8 -f 81/228/9 185/229/9 186/230/9 -f 83/231/10 186/232/10 187/233/10 -f 85/234/11 187/235/11 188/236/11 -f 188/237/12 189/238/12 89/239/12 -f 189/240/13 190/241/13 91/242/13 -f 190/243/14 191/244/14 93/245/14 -f 192/246/15 177/247/15 65/248/15 -f 191/249/16 192/250/16 95/251/16 -f 190/243/24 59/56/24 61/60/24 -f 59/56/25 190/241/25 189/240/25 -f 57/54/26 189/238/26 188/237/26 -f 53/51/27 55/252/27 188/236/27 -f 51/49/28 53/51/28 187/233/28 -f 49/47/29 51/49/29 186/230/29 -f 47/45/30 49/47/30 185/226/30 -f 45/43/31 47/45/31 184/223/31 -f 43/41/32 45/43/32 183/220/32 -f 43/41/33 182/218/33 181/217/33 -f 39/37/34 41/253/34 181/214/34 -f 39/37/35 180/211/35 179/210/35 -f 37/35/36 179/208/36 178/207/36 -f 35/33/37 178/205/37 177/204/37 -f 33/254/38 177/247/38 192/246/38 -f 63/58/39 192/250/39 191/249/39 -f 26/23/40 24/21/40 88/255/40 -f 92/256/41 28/25/41 26/23/41 -f 94/257/42 30/27/42 28/25/42 -f 96/258/43 32/29/43 30/27/43 -f 66/259/44 2/2/44 32/29/44 -f 68/260/45 4/3/45 2/2/45 -f 70/261/46 6/4/46 4/3/46 -f 72/262/47 8/6/47 6/4/47 -f 74/263/48 10/8/48 8/6/48 -f 12/12/49 10/11/49 74/264/49 -f 14/13/50 12/12/50 76/265/50 -f 16/15/51 14/13/51 78/266/51 -f 18/16/52 16/15/52 80/267/52 -f 20/18/53 18/16/53 82/268/53 -f 22/20/54 20/18/54 84/269/54 -f 24/21/55 22/20/55 86/270/55 -f 195/271/56 200/272/56 201/273/56 -f 193/274/57 198/275/57 199/276/57 -f 196/277/58 201/273/58 202/278/58 -f 194/279/59 199/276/59 200/272/59 -f 200/280/60 205/281/60 206/282/60 -f 198/283/61 203/284/61 204/285/61 -f 201/286/62 206/282/62 207/287/62 -f 199/288/63 204/285/63 205/281/63 -f 207/289/64 206/290/64 211/291/64 -f 204/292/65 209/293/65 210/294/65 -f 205/295/66 210/294/66 211/291/66 -f 204/292/67 203/296/67 208/297/67 -f 209/298/68 214/299/68 215/300/68 -f 210/301/69 215/300/69 216/302/69 -f 209/298/70 208/303/70 213/304/70 -f 212/305/71 211/306/71 216/302/71 -f 215/307/72 220/308/72 221/309/72 -f 213/310/73 218/311/73 219/312/73 -f 217/313/74 216/314/74 221/309/74 -f 215/307/75 214/315/75 219/312/75 -f 218/316/76 223/317/76 224/318/76 -f 221/319/77 226/320/77 227/321/77 -f 220/322/78 219/323/78 224/318/78 -f 220/322/79 225/324/79 226/320/79 -f 226/325/80 231/326/80 232/327/80 -f 225/328/81 224/329/81 229/330/81 -f 226/325/82 225/328/82 230/331/82 -f 223/332/83 228/333/83 229/330/83 -f 231/334/84 230/335/84 195/336/84 -f 228/337/85 193/338/85 194/339/85 -f 231/334/86 196/340/86 197/341/86 -f 229/342/87 194/339/87 195/336/87 -f 3/343/1 1/1/1 4/3/1 -f 3/343/2 4/3/2 5/5/2 -f 5/5/3 6/4/3 7/7/3 -f 7/7/4 8/6/4 9/9/4 -f 11/344/5 9/10/5 12/12/5 -f 11/344/6 12/12/6 13/14/6 -f 15/345/7 13/14/7 16/15/7 -f 15/345/8 16/15/8 17/17/8 -f 17/17/9 18/16/9 19/19/9 -f 21/346/10 19/19/10 22/20/10 -f 21/346/11 22/20/11 23/22/11 -f 23/22/12 24/21/12 25/24/12 -f 27/26/13 25/24/13 28/25/13 -f 29/30/14 27/26/14 30/27/14 -f 1/1/15 31/28/15 2/2/15 -f 31/28/16 29/30/16 32/29/16 -f 33/254/1 34/31/1 35/33/1 -f 35/33/2 36/32/2 37/35/2 -f 39/37/3 37/35/3 40/36/3 -f 41/253/4 39/37/4 42/38/4 -f 41/347/5 42/39/5 43/41/5 -f 43/41/6 44/40/6 45/43/6 -f 45/43/7 46/42/7 47/45/7 -f 47/45/8 48/44/8 49/47/8 -f 49/47/9 50/46/9 51/49/9 -f 53/51/10 51/49/10 54/50/10 -f 55/252/11 53/51/11 56/52/11 -f 55/252/12 56/52/12 57/54/12 -f 59/56/13 57/54/13 60/55/13 -f 61/60/14 59/56/14 62/57/14 -f 33/254/15 63/58/15 34/31/15 -f 63/58/16 61/60/16 64/59/16 -f 95/63/17 65/348/17 67/349/17 -f 67/349/17 69/350/17 71/351/17 -f 71/351/17 73/352/17 75/353/17 -f 75/353/17 77/354/17 71/351/17 -f 79/355/17 81/356/17 83/61/17 -f 83/61/17 85/357/17 87/62/17 -f 87/62/17 89/358/17 91/359/17 -f 91/359/17 93/360/17 87/62/17 -f 95/63/17 67/349/17 79/355/17 -f 71/351/17 77/354/17 79/355/17 -f 79/355/17 83/61/17 95/63/17 -f 87/62/17 93/360/17 95/63/17 -f 67/349/17 71/351/17 79/355/17 -f 97/100/1 98/64/1 99/66/1 -f 99/361/2 100/67/2 101/69/2 -f 101/362/3 102/70/3 103/72/3 -f 103/72/4 104/71/4 105/74/4 -f 105/363/5 106/75/5 107/77/5 -f 107/77/6 108/76/6 109/79/6 -f 109/364/7 110/80/7 111/82/7 -f 111/365/8 112/83/8 113/85/8 -f 113/85/9 114/84/9 115/87/9 -f 117/366/10 115/87/10 118/88/10 -f 117/366/11 118/88/11 119/90/11 -f 119/90/12 120/89/12 121/92/12 -f 121/92/13 122/91/13 123/94/13 -f 125/101/14 123/94/14 126/95/14 -f 102/367/18 100/368/18 98/369/18 -f 98/369/18 128/370/18 126/98/18 -f 126/98/18 124/371/18 118/96/18 -f 122/372/18 120/373/18 118/96/18 -f 118/96/18 116/374/18 110/97/18 -f 114/375/18 112/376/18 110/97/18 -f 110/97/18 108/377/18 106/378/18 -f 106/378/18 104/379/18 110/97/18 -f 102/367/18 98/369/18 126/98/18 -f 124/371/18 122/372/18 118/96/18 -f 116/374/18 114/375/18 110/97/18 -f 110/97/18 104/379/18 102/367/18 -f 102/367/18 126/98/18 110/97/18 -f 127/380/15 128/99/15 97/100/15 -f 127/380/16 125/101/16 128/99/16 -f 127/104/17 97/381/17 99/382/17 -f 99/382/17 101/383/17 103/384/17 -f 103/384/17 105/385/17 107/386/17 -f 107/386/17 109/387/17 111/388/17 -f 111/388/17 113/389/17 115/102/17 -f 115/102/17 117/390/17 119/103/17 -f 119/103/17 121/391/17 123/392/17 -f 123/392/17 125/393/17 127/104/17 -f 127/104/17 99/382/17 103/384/17 -f 103/384/17 107/386/17 111/388/17 -f 111/388/17 115/102/17 127/104/17 -f 119/103/17 123/392/17 127/104/17 -f 127/104/17 103/384/17 111/388/17 -f 129/143/1 130/105/1 131/107/1 -f 133/394/2 131/108/2 134/110/2 -f 133/395/3 134/111/3 135/113/3 -f 135/113/4 136/112/4 137/115/4 -f 137/396/5 138/116/5 139/118/5 -f 139/118/6 140/117/6 141/120/6 -f 143/397/7 141/121/7 144/123/7 -f 145/398/8 143/124/8 146/126/8 -f 145/398/9 146/126/9 147/128/9 -f 147/128/10 148/127/10 149/130/10 -f 149/130/11 150/129/11 151/132/11 -f 151/132/12 152/131/12 153/134/12 -f 153/134/13 154/133/13 155/136/13 -f 155/136/14 156/135/14 157/138/14 -f 134/399/18 132/400/18 130/401/18 -f 130/401/18 160/402/18 158/141/18 -f 158/141/18 156/403/18 150/139/18 -f 154/404/18 152/405/18 150/139/18 -f 150/139/18 148/406/18 142/140/18 -f 146/407/18 144/408/18 142/140/18 -f 142/140/18 140/409/18 138/410/18 -f 138/410/18 136/411/18 142/140/18 -f 134/399/18 130/401/18 158/141/18 -f 156/403/18 154/404/18 150/139/18 -f 148/406/18 146/407/18 142/140/18 -f 142/140/18 136/411/18 134/399/18 -f 134/399/18 158/141/18 142/140/18 -f 159/412/15 160/142/15 129/143/15 -f 159/412/16 157/138/16 160/142/16 -f 159/146/17 129/413/17 131/414/17 -f 131/414/17 133/415/17 159/146/17 -f 135/416/17 137/417/17 139/418/17 -f 139/418/17 141/419/17 135/416/17 -f 143/144/17 145/420/17 147/421/17 -f 147/421/17 149/422/17 151/145/17 -f 151/145/17 153/423/17 155/424/17 -f 155/424/17 157/425/17 159/146/17 -f 159/146/17 133/415/17 135/416/17 -f 135/416/17 141/419/17 143/144/17 -f 143/144/17 147/421/17 151/145/17 -f 151/145/17 155/424/17 159/146/17 -f 159/146/17 135/416/17 143/144/17 -f 70/149/18 68/426/18 66/427/18 -f 66/427/18 96/428/18 94/429/18 -f 94/429/18 92/430/18 90/431/18 -f 90/431/18 88/432/18 86/147/18 -f 86/147/18 84/433/18 78/148/18 -f 82/434/18 80/435/18 78/148/18 -f 78/148/18 76/436/18 70/149/18 -f 74/437/18 72/438/18 70/149/18 -f 70/149/18 66/427/18 94/429/18 -f 94/429/18 90/431/18 70/149/18 -f 84/433/18 82/434/18 78/148/18 -f 76/436/18 74/437/18 70/149/18 -f 70/149/18 90/431/18 86/147/18 -f 164/439/18 163/150/18 134/152/18 -f 144/440/18 168/153/18 142/155/18 -f 174/441/17 173/156/17 109/158/17 -f 162/187/19 131/159/19 163/161/19 -f 166/442/17 165/162/17 141/164/17 -f 143/443/20 165/165/20 144/167/20 -f 131/444/17 162/168/17 133/170/17 -f 166/200/21 141/171/21 167/173/21 -f 161/186/22 164/174/22 133/176/22 -f 172/445/18 171/177/18 102/179/18 -f 112/446/18 176/180/18 110/182/18 -f 99/447/17 170/183/17 101/185/17 -f 163/161/23 164/174/23 162/187/23 -f 169/202/22 172/188/22 101/190/22 -f 170/203/19 99/191/19 171/193/19 -f 111/448/20 173/194/20 112/196/20 -f 174/201/21 109/197/21 175/199/21 -f 167/173/23 168/166/23 166/200/23 -f 175/199/23 176/195/23 174/201/23 -f 171/193/23 172/188/23 170/203/23 -f 65/449/1 177/204/1 67/206/1 -f 67/450/2 178/207/2 69/209/2 -f 69/451/3 179/210/3 71/212/3 -f 71/452/4 180/213/4 73/215/4 -f 75/453/5 73/216/5 182/218/5 -f 75/454/6 182/219/6 77/221/6 -f 77/455/7 183/222/7 79/224/7 -f 79/456/8 184/225/8 81/227/8 -f 83/457/9 81/228/9 186/230/9 -f 85/458/10 83/231/10 187/233/10 -f 87/459/11 85/234/11 188/236/11 -f 87/460/12 188/237/12 89/239/12 -f 89/461/13 189/240/13 91/242/13 -f 91/462/14 190/243/14 93/245/14 -f 95/463/15 192/246/15 65/248/15 -f 93/464/16 191/249/16 95/251/16 -f 191/244/24 190/243/24 61/60/24 -f 57/54/25 59/56/25 189/240/25 -f 55/252/26 57/54/26 188/237/26 -f 187/235/27 53/51/27 188/236/27 -f 186/232/28 51/49/28 187/233/28 -f 185/229/29 49/47/29 186/230/29 -f 184/225/30 47/45/30 185/226/30 -f 183/222/31 45/43/31 184/223/31 -f 182/219/32 43/41/32 183/220/32 -f 41/347/33 43/41/33 181/217/33 -f 180/213/34 39/37/34 181/214/34 -f 37/35/35 39/37/35 179/210/35 -f 35/33/36 37/35/36 178/207/36 -f 33/254/37 35/33/37 177/204/37 -f 63/58/38 33/254/38 192/246/38 -f 61/60/39 63/58/39 191/249/39 -f 90/465/40 26/23/40 88/255/40 -f 90/466/41 92/256/41 26/23/41 -f 92/467/42 94/257/42 28/25/42 -f 94/468/43 96/258/43 30/27/43 -f 96/469/44 66/259/44 32/29/44 -f 66/470/45 68/260/45 2/2/45 -f 68/471/46 70/261/46 4/3/46 -f 70/472/47 72/262/47 6/4/47 -f 72/473/48 74/263/48 8/6/48 -f 76/474/49 12/12/49 74/264/49 -f 78/475/50 14/13/50 76/265/50 -f 80/476/51 16/15/51 78/266/51 -f 82/477/52 18/16/52 80/267/52 -f 84/478/53 20/18/53 82/268/53 -f 86/479/54 22/20/54 84/269/54 -f 88/480/55 24/21/55 86/270/55 -f 196/277/56 195/271/56 201/273/56 -f 194/279/57 193/274/57 199/276/57 -f 197/481/58 196/277/58 202/278/58 -f 195/271/59 194/279/59 200/272/59 -f 201/286/60 200/280/60 206/282/60 -f 199/288/61 198/283/61 204/285/61 -f 202/482/62 201/286/62 207/287/62 -f 200/280/63 199/288/63 205/281/63 -f 212/483/64 207/289/64 211/291/64 -f 205/295/65 204/292/65 210/294/65 -f 206/290/66 205/295/66 211/291/66 -f 209/293/67 204/292/67 208/297/67 -f 210/301/68 209/298/68 215/300/68 -f 211/306/69 210/301/69 216/302/69 -f 214/299/70 209/298/70 213/304/70 -f 217/484/71 212/305/71 216/302/71 -f 216/314/72 215/307/72 221/309/72 -f 214/315/73 213/310/73 219/312/73 -f 222/485/74 217/313/74 221/309/74 -f 220/308/75 215/307/75 219/312/75 -f 219/323/76 218/316/76 224/318/76 -f 222/486/77 221/319/77 227/321/77 -f 225/324/78 220/322/78 224/318/78 -f 221/319/79 220/322/79 226/320/79 -f 227/487/80 226/325/80 232/327/80 -f 230/331/81 225/328/81 229/330/81 -f 231/326/82 226/325/82 230/331/82 -f 224/329/83 223/332/83 229/330/83 -f 196/340/84 231/334/84 195/336/84 -f 229/342/85 228/337/85 194/339/85 -f 232/488/86 231/334/86 197/341/86 -f 230/335/87 229/342/87 195/336/87 diff --git a/src/main/resources/assets/hbm/models/TheGadget3_smooth.obj b/src/main/resources/assets/hbm/models/TheGadget3_smooth.obj deleted file mode 100644 index 745a9d304..000000000 --- a/src/main/resources/assets/hbm/models/TheGadget3_smooth.obj +++ /dev/null @@ -1,1293 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'TheGadget3_smooth.blend' -# www.blender.org -o Cylinder.003 -v 0.550000 1.500000 -0.850000 -v 0.650000 1.500000 -0.850000 -v 0.550000 1.174719 -0.785298 -v 0.650000 1.174719 -0.785298 -v 0.550001 0.898959 -0.601041 -v 0.650001 0.898959 -0.601041 -v 0.550001 0.714702 -0.325281 -v 0.650001 0.714702 -0.325281 -v 0.550001 0.650000 0.000000 -v 0.650001 0.650000 0.000000 -v 0.550001 0.714702 0.325281 -v 0.650001 0.714702 0.325281 -v 0.550001 0.898959 0.601041 -v 0.650001 0.898959 0.601041 -v 0.550000 1.174719 0.785298 -v 0.650000 1.174719 0.785298 -v 0.550000 1.500000 0.850000 -v 0.650000 1.500000 0.850000 -v 0.550000 1.825281 0.785298 -v 0.650000 1.825281 0.785298 -v 0.549999 2.101041 0.601041 -v 0.649999 2.101041 0.601041 -v 0.549999 2.285297 0.325281 -v 0.649999 2.285298 0.325281 -v 0.549999 2.350000 -0.000000 -v 0.649999 2.350000 -0.000000 -v 0.549999 2.285297 -0.325281 -v 0.649999 2.285298 -0.325281 -v 0.549999 2.101040 -0.601041 -v 0.649999 2.101041 -0.601041 -v 0.550000 1.825280 -0.785298 -v 0.650000 1.825281 -0.785298 -v -0.650000 1.500000 -0.850000 -v -0.550000 1.500000 -0.850000 -v -0.650000 1.174719 -0.785298 -v -0.550000 1.174719 -0.785298 -v -0.649999 0.898959 -0.601041 -v -0.549999 0.898959 -0.601041 -v -0.649999 0.714702 -0.325281 -v -0.549999 0.714702 -0.325281 -v -0.649999 0.650000 0.000000 -v -0.549999 0.650000 0.000000 -v -0.649999 0.714702 0.325281 -v -0.549999 0.714702 0.325281 -v -0.649999 0.898959 0.601041 -v -0.549999 0.898959 0.601041 -v -0.650000 1.174719 0.785298 -v -0.550000 1.174719 0.785298 -v -0.650000 1.500000 0.850000 -v -0.550000 1.500000 0.850000 -v -0.650000 1.825281 0.785298 -v -0.550000 1.825281 0.785298 -v -0.650001 2.101041 0.601041 -v -0.550001 2.101041 0.601041 -v -0.650001 2.285297 0.325281 -v -0.550001 2.285298 0.325281 -v -0.650001 2.350000 -0.000000 -v -0.550001 2.350000 -0.000000 -v -0.650001 2.285297 -0.325281 -v -0.550001 2.285298 -0.325281 -v -0.650001 2.101040 -0.601041 -v -0.550001 2.101041 -0.601041 -v -0.650000 1.825280 -0.785298 -v -0.550000 1.825281 -0.785298 -v -1.500000 1.499999 -0.700000 -v 1.000000 1.500001 -0.700000 -v -1.500000 1.232120 -0.646716 -v 1.000000 1.232123 -0.646716 -v -1.500000 1.005024 -0.494975 -v 1.000000 1.005026 -0.494975 -v -1.499999 0.853283 -0.267878 -v 1.000000 0.853285 -0.267878 -v -1.499999 0.799999 0.000000 -v 1.000000 0.800001 0.000000 -v -1.499999 0.853283 0.267878 -v 1.000000 0.853285 0.267878 -v -1.500000 1.005024 0.494975 -v 1.000000 1.005026 0.494975 -v -1.500000 1.232120 0.646716 -v 1.000000 1.232123 0.646716 -v -1.500000 1.499999 0.700000 -v 1.000000 1.500001 0.700000 -v -1.500000 1.767877 0.646716 -v 1.000000 1.767879 0.646716 -v -1.500000 1.994973 0.494975 -v 0.999999 1.994976 0.494975 -v -1.500001 2.146714 0.267879 -v 0.999999 2.146717 0.267879 -v -1.500001 2.199999 -0.000000 -v 0.999999 2.200001 -0.000000 -v -1.500001 2.146714 -0.267879 -v 0.999999 2.146717 -0.267879 -v -1.500000 1.994973 -0.494975 -v 0.999999 1.994976 -0.494975 -v -1.500000 1.767877 -0.646716 -v 1.000000 1.767879 -0.646716 -v 0.450000 1.500000 -1.000000 -v 0.550000 1.500000 -1.000000 -v 0.450000 1.117316 -0.923880 -v 0.550000 1.117316 -0.923880 -v 0.450001 0.792893 -0.707107 -v 0.550001 0.792893 -0.707107 -v 0.450001 0.576120 -0.382683 -v 0.550001 0.576120 -0.382683 -v 0.450001 0.500000 0.000000 -v 0.550001 0.500000 0.000000 -v 0.450001 0.576120 0.382684 -v 0.550001 0.576120 0.382684 -v 0.450001 0.792893 0.707107 -v 0.550001 0.792893 0.707107 -v 0.450000 1.117316 0.923880 -v 0.550000 1.117316 0.923880 -v 0.450000 1.500000 1.000000 -v 0.550000 1.500000 1.000000 -v 0.450000 1.882683 0.923880 -v 0.550000 1.882683 0.923880 -v 0.449999 2.207107 0.707107 -v 0.549999 2.207107 0.707107 -v 0.449999 2.423879 0.382684 -v 0.549999 2.423880 0.382684 -v 0.449999 2.500000 -0.000000 -v 0.549999 2.500000 -0.000000 -v 0.449999 2.423879 -0.382684 -v 0.549999 2.423879 -0.382684 -v 0.449999 2.207106 -0.707107 -v 0.549999 2.207107 -0.707107 -v 0.450000 1.882683 -0.923880 -v 0.550000 1.882683 -0.923880 -v -0.550000 1.500000 -1.000000 -v -0.450000 1.500000 -1.000000 -v -0.550000 1.117316 -0.923880 -v -0.450000 1.117317 -0.923880 -v -0.549999 0.792893 -0.707107 -v -0.449999 0.792893 -0.707107 -v -0.549999 0.576120 -0.382683 -v -0.449999 0.576120 -0.382683 -v -0.549999 0.500000 0.000000 -v -0.449999 0.500000 0.000000 -v -0.549999 0.576120 0.382684 -v -0.449999 0.576120 0.382684 -v -0.549999 0.792893 0.707107 -v -0.449999 0.792893 0.707107 -v -0.550000 1.117316 0.923880 -v -0.450000 1.117316 0.923880 -v -0.550000 1.500000 1.000000 -v -0.450000 1.500000 1.000000 -v -0.550000 1.882683 0.923880 -v -0.450000 1.882683 0.923880 -v -0.550001 2.207107 0.707107 -v -0.450001 2.207107 0.707107 -v -0.550001 2.423879 0.382684 -v -0.450001 2.423880 0.382684 -v -0.550001 2.500000 -0.000000 -v -0.450001 2.500000 -0.000000 -v -0.550001 2.423879 -0.382684 -v -0.450001 2.423879 -0.382684 -v -0.550001 2.207107 -0.707107 -v -0.450001 2.207107 -0.707107 -v -0.550000 1.882683 -0.923880 -v -0.450000 1.882683 -0.923880 -v -0.550000 -0.000000 -0.750000 -v -0.550000 -0.000000 -1.000000 -v -0.450000 -0.000000 -1.000000 -v -0.450000 -0.000000 -0.750000 -v -0.550000 -0.000000 1.000000 -v -0.550000 -0.000000 0.750000 -v -0.450000 -0.000000 0.750000 -v -0.450000 -0.000000 1.000000 -v 0.450000 0.000000 -0.750000 -v 0.450000 0.000000 -1.000000 -v 0.550000 0.000000 -1.000000 -v 0.550000 0.000000 -0.750000 -v 0.450000 -0.000000 1.000000 -v 0.450000 -0.000000 0.750000 -v 0.550000 -0.000000 0.750000 -v 0.550000 -0.000000 1.000000 -v -1.125000 1.499999 -0.700000 -v -1.125000 1.232121 -0.646716 -v -1.125000 1.005024 -0.494975 -v -1.124999 0.853284 -0.267878 -v -1.124999 0.799999 0.000000 -v -1.124999 0.853284 0.267878 -v -1.125000 1.005024 0.494975 -v -1.125000 1.232121 0.646716 -v -1.125000 1.499999 0.700000 -v -1.125000 1.767877 0.646716 -v -1.125000 1.994974 0.494975 -v -1.125001 2.146715 0.267879 -v -1.125001 2.199999 -0.000000 -v -1.125001 2.146715 -0.267879 -v -1.125000 1.994974 -0.494975 -v -1.125000 1.767877 -0.646716 -v 0.707106 2.207107 0.000000 -v 0.382683 2.423880 0.000000 -v -0.000001 2.500000 0.000000 -v -0.382684 2.423880 0.000000 -v -0.707107 2.207107 0.000000 -v 0.707106 2.000000 -0.500000 -v 0.382683 2.153281 -0.653281 -v -0.000001 2.207107 -0.707107 -v -0.382684 2.153281 -0.653281 -v -0.707107 2.000000 -0.500000 -v 0.707106 1.500000 -0.707107 -v 0.382683 1.500000 -0.923879 -v -0.000000 1.500000 -1.000000 -v -0.382684 1.500000 -0.923879 -v -0.707107 1.500000 -0.707107 -v 0.707106 1.000000 -0.500000 -v 0.382683 0.846719 -0.653281 -v -0.000000 0.792893 -0.707107 -v -0.382684 0.846719 -0.653281 -v -0.707107 1.000000 -0.500000 -v 0.707106 0.792894 -0.000000 -v 0.382683 0.576121 -0.000000 -v -0.000000 0.500001 -0.000000 -v -0.382684 0.576121 -0.000000 -v -0.707107 0.792894 -0.000000 -v 0.707106 1.000000 0.500000 -v 0.382683 0.846719 0.653281 -v -0.000000 0.792893 0.707107 -v -0.382684 0.846719 0.653281 -v -0.707107 1.000000 0.500000 -v 0.707106 1.500000 0.707107 -v 0.382683 1.500000 0.923879 -v -0.000000 1.500000 1.000000 -v -0.382684 1.500000 0.923879 -v -0.707107 1.500000 0.707107 -v 0.707106 2.000000 0.500000 -v 0.382683 2.153281 0.653281 -v -0.000001 2.207107 0.707107 -v -0.382684 2.153281 0.653281 -v -0.707107 2.000000 0.500000 -vt 0.589205 0.570129 -vt 0.537513 0.535589 -vt 0.559924 0.422922 -vt 0.897932 0.155115 -vt 0.943209 0.155115 -vt 0.943209 0.166719 -vt 0.943209 0.206379 -vt 0.897932 0.206379 -vt 0.897932 0.194775 -vt 0.105201 0.410793 -vt 0.241650 0.501966 -vt 0.014028 0.547243 -vt 0.574727 0.365411 -vt 0.525385 0.291565 -vt 0.616557 0.155115 -vt 0.601856 0.880859 -vt 0.601856 0.869255 -vt 0.647133 0.869255 -vt 0.916064 0.864137 -vt 0.916064 0.875741 -vt 0.870787 0.875741 -vt 0.105201 0.155115 -vt 0.241650 0.246288 -vt 0.014028 0.291565 -vt 0.360879 0.382738 -vt 0.269706 0.246288 -vt 0.406156 0.155115 -vt 0.350122 0.445333 -vt 0.462789 0.422922 -vt 0.485200 0.535589 -vt 0.787808 0.042971 -vt 0.657853 0.042971 -vt 0.693703 0.015316 -vt 0.787808 0.071027 -vt 0.785836 0.099970 -vt 0.693703 0.098682 -vt 0.975417 0.946312 -vt 0.845462 0.946312 -vt 0.881311 0.918657 -vt 0.364637 0.841199 -vt 0.364637 0.829595 -vt 0.494592 0.829595 -vt 0.624808 0.985972 -vt 0.494853 0.985972 -vt 0.530702 0.958317 -vt 0.399665 0.626770 -vt 0.399661 0.638374 -vt 0.269706 0.638329 -vt 0.842731 0.824477 -vt 0.840759 0.853420 -vt 0.748626 0.852132 -vt 0.520818 0.626812 -vt 0.520814 0.638416 -vt 0.428672 0.638384 -vt 0.523602 0.829595 -vt 0.615745 0.829595 -vt 0.615745 0.841199 -vt 0.678829 0.638416 -vt 0.548874 0.638416 -vt 0.584723 0.610761 -vt 0.945819 0.014028 -vt 0.943847 0.042971 -vt 0.851714 0.041683 -vt 0.945819 0.071027 -vt 0.943847 0.099970 -vt 0.851714 0.098682 -vt 0.523602 0.841199 -vt 0.494592 0.841199 -vt 0.523603 0.789935 -vt 0.615745 0.789935 -vt 0.615745 0.801539 -vt 0.364637 0.801539 -vt 0.364637 0.789935 -vt 0.494592 0.789935 -vt 0.494596 0.750233 -vt 0.494592 0.761837 -vt 0.364637 0.761792 -vt 0.615749 0.750275 -vt 0.615745 0.761879 -vt 0.523602 0.761847 -vt 0.428676 0.626780 -vt 0.523606 0.750243 -vt 0.523603 0.801539 -vt 0.494592 0.801539 -vt 0.589206 0.410793 -vt 0.620899 0.410793 -vt 0.650181 0.422922 -vt 0.672592 0.445333 -vt 0.684720 0.474614 -vt 0.684720 0.506308 -vt 0.672591 0.535590 -vt 0.650180 0.558000 -vt 0.620899 0.570129 -vt 0.559924 0.558000 -vt 0.525385 0.506308 -vt 0.525385 0.474614 -vt 0.537513 0.445333 -vt 0.897932 0.166719 -vt 0.943209 0.194775 -vt 0.150478 0.638416 -vt 0.105201 0.638416 -vt 0.063370 0.621089 -vt 0.031355 0.589073 -vt 0.014028 0.501966 -vt 0.031355 0.460136 -vt 0.063370 0.428120 -vt 0.150478 0.410793 -vt 0.192308 0.428120 -vt 0.224324 0.460136 -vt 0.241650 0.547243 -vt 0.224324 0.589074 -vt 0.192308 0.621089 -vt 0.661834 0.155115 -vt 0.703665 0.172442 -vt 0.735680 0.204457 -vt 0.753007 0.246288 -vt 0.753007 0.291565 -vt 0.735680 0.333395 -vt 0.703665 0.365411 -vt 0.661834 0.382738 -vt 0.616557 0.382738 -vt 0.542711 0.333395 -vt 0.525385 0.246288 -vt 0.542711 0.204457 -vt 0.574727 0.172442 -vt 0.647133 0.880859 -vt 0.870787 0.864137 -vt 0.150478 0.382738 -vt 0.105201 0.382738 -vt 0.063370 0.365411 -vt 0.031355 0.333395 -vt 0.014028 0.246288 -vt 0.031355 0.204458 -vt 0.063370 0.172442 -vt 0.150478 0.155115 -vt 0.192308 0.172442 -vt 0.224324 0.204457 -vt 0.241650 0.291565 -vt 0.224324 0.333395 -vt 0.192308 0.365411 -vt 0.447986 0.172442 -vt 0.480002 0.204457 -vt 0.497329 0.246288 -vt 0.497329 0.291565 -vt 0.480002 0.333395 -vt 0.447986 0.365411 -vt 0.406156 0.382738 -vt 0.319049 0.365411 -vt 0.287033 0.333395 -vt 0.269706 0.291565 -vt 0.287033 0.204458 -vt 0.319049 0.172442 -vt 0.360879 0.155115 -vt 0.462789 0.558000 -vt 0.433508 0.570129 -vt 0.401814 0.570129 -vt 0.372533 0.558000 -vt 0.350122 0.535589 -vt 0.337993 0.506308 -vt 0.337993 0.474614 -vt 0.372533 0.422922 -vt 0.401814 0.410793 -vt 0.433508 0.410793 -vt 0.485200 0.445333 -vt 0.497329 0.474614 -vt 0.497329 0.506308 -vt 0.785836 0.014028 -vt 0.657853 0.071027 -vt 0.973445 0.917369 -vt 0.622836 0.957029 -vt 0.269710 0.626725 -vt 0.712776 0.824477 -vt 0.676857 0.609473 -vt 0.815864 0.014028 -vt 0.815864 0.071027 -vt 0.364641 0.750188 -vt 0.167969 0.666472 -vt 0.167969 0.678076 -vt 0.129484 0.678076 -vt 0.090999 0.678076 -vt 0.090999 0.666472 -vt 0.052513 0.678076 -vt 0.052513 0.666472 -vt 0.014028 0.678076 -vt 0.014028 0.666472 -vt 0.629794 0.666472 -vt 0.629794 0.678076 -vt 0.591308 0.678076 -vt 0.552823 0.678076 -vt 0.552823 0.666472 -vt 0.514338 0.678076 -vt 0.475852 0.678076 -vt 0.475852 0.666472 -vt 0.437367 0.678076 -vt 0.437367 0.666472 -vt 0.398881 0.678076 -vt 0.360396 0.678076 -vt 0.360396 0.666472 -vt 0.321910 0.678076 -vt 0.321910 0.666472 -vt 0.283425 0.678076 -vt 0.283425 0.666472 -vt 0.244940 0.678076 -vt 0.206454 0.666472 -vt 0.206454 0.678076 -vt 0.244940 0.666472 -vt 0.167969 0.126901 -vt 0.129483 0.126888 -vt 0.129487 0.115284 -vt 0.090998 0.126875 -vt 0.091002 0.115271 -vt 0.052513 0.126861 -vt 0.052517 0.115257 -vt 0.014028 0.126848 -vt 0.629793 0.127059 -vt 0.591308 0.127046 -vt 0.591312 0.115442 -vt 0.552822 0.127033 -vt 0.552826 0.115429 -vt 0.514337 0.127020 -vt 0.514341 0.115416 -vt 0.475851 0.127007 -vt 0.475855 0.115403 -vt 0.437366 0.126994 -vt 0.437370 0.115389 -vt 0.398881 0.126980 -vt 0.398885 0.115376 -vt 0.360395 0.126967 -vt 0.321910 0.126954 -vt 0.321914 0.115350 -vt 0.283425 0.126941 -vt 0.283429 0.115337 -vt 0.244939 0.126927 -vt 0.206458 0.115310 -vt 0.206454 0.126914 -vt 0.244943 0.115323 -vt 0.421520 0.957030 -vt 0.466797 0.957030 -vt 0.466797 0.968634 -vt 0.871616 0.373560 -vt 0.826340 0.373560 -vt 0.826340 0.361956 -vt 0.781063 0.373560 -vt 0.781063 0.361956 -vt 0.455191 0.880859 -vt 0.409914 0.880859 -vt 0.409914 0.869255 -vt 0.364637 0.880859 -vt 0.364637 0.869255 -vt 0.014028 0.957029 -vt 0.059305 0.957029 -vt 0.059305 0.968633 -vt 0.104582 0.957029 -vt 0.104582 0.968633 -vt 0.149858 0.957029 -vt 0.195135 0.957029 -vt 0.195135 0.968633 -vt 0.240412 0.957029 -vt 0.240412 0.968633 -vt 0.285689 0.957029 -vt 0.285689 0.968633 -vt 0.330966 0.957029 -vt 0.376243 0.957029 -vt 0.421520 0.968634 -vt 0.330966 0.968634 -vt 0.772129 0.917369 -vt 0.817406 0.917369 -vt 0.817406 0.928973 -vt 0.573800 0.880859 -vt 0.528523 0.880859 -vt 0.528523 0.869255 -vt 0.483246 0.880859 -vt 0.483246 0.869255 -vt 0.961341 0.836081 -vt 0.916064 0.836081 -vt 0.916064 0.824477 -vt 0.870787 0.836081 -vt 0.870787 0.824477 -vt 0.364637 0.928973 -vt 0.364637 0.917369 -vt 0.409914 0.917369 -vt 0.455191 0.917369 -vt 0.455191 0.928973 -vt 0.500467 0.917369 -vt 0.500467 0.928973 -vt 0.545744 0.917369 -vt 0.545744 0.928973 -vt 0.591021 0.917369 -vt 0.591021 0.928973 -vt 0.636298 0.917369 -vt 0.636298 0.928973 -vt 0.681575 0.917369 -vt 0.681575 0.928973 -vt 0.726852 0.917369 -vt 0.772129 0.928973 -vt 0.164597 0.057593 -vt 0.132903 0.057583 -vt 0.132918 0.014067 -vt 0.126111 0.057580 -vt 0.094418 0.057569 -vt 0.094433 0.014054 -vt 0.087626 0.057567 -vt 0.055933 0.057556 -vt 0.055947 0.014041 -vt 0.049141 0.057554 -vt 0.017447 0.057543 -vt 0.017462 0.014028 -vt 0.626436 0.014236 -vt 0.626421 0.057751 -vt 0.594727 0.057740 -vt 0.587936 0.057738 -vt 0.556242 0.057727 -vt 0.556257 0.014212 -vt 0.549450 0.057725 -vt 0.517756 0.057714 -vt 0.517771 0.014199 -vt 0.510965 0.057712 -vt 0.479271 0.057701 -vt 0.479286 0.014186 -vt 0.472494 0.014183 -vt 0.472479 0.057699 -vt 0.440786 0.057688 -vt 0.434009 0.014170 -vt 0.433994 0.057686 -vt 0.402300 0.057675 -vt 0.395524 0.014157 -vt 0.395509 0.057672 -vt 0.363815 0.057662 -vt 0.357023 0.057659 -vt 0.325329 0.057648 -vt 0.325344 0.014133 -vt 0.318538 0.057646 -vt 0.286844 0.057635 -vt 0.286859 0.014120 -vt 0.280053 0.057633 -vt 0.248359 0.057622 -vt 0.248374 0.014107 -vt 0.203082 0.057607 -vt 0.171388 0.057596 -vt 0.171403 0.014081 -vt 0.241567 0.057620 -vt 0.209873 0.057609 -vt 0.209888 0.014094 -vt 0.360399 0.115363 -vt 0.014032 0.115244 -vt 0.167973 0.115297 -vt 0.357000 0.722132 -vt 0.286821 0.722132 -vt 0.248335 0.722132 -vt 0.209850 0.722132 -vt 0.171365 0.722132 -vt 0.132880 0.722132 -vt 0.094394 0.722132 -vt 0.055909 0.722132 -vt 0.017424 0.722132 -vt 0.626398 0.722133 -vt 0.587913 0.722133 -vt 0.549427 0.722132 -vt 0.510942 0.722132 -vt 0.472456 0.722132 -vt 0.433971 0.722132 -vt 0.395485 0.722132 -vt 0.336581 0.839581 -vt 0.247767 0.839581 -vt 0.251147 0.794430 -vt 0.323575 0.928973 -vt 0.260774 0.928973 -vt 0.251147 0.884731 -vt 0.333201 0.794430 -vt 0.260774 0.750188 -vt 0.333201 0.884731 -vt 0.918460 0.707029 -vt 0.829646 0.707029 -vt 0.833026 0.661878 -vt 0.905453 0.796421 -vt 0.842652 0.796421 -vt 0.833026 0.752179 -vt 0.915079 0.661878 -vt 0.842652 0.617636 -vt 0.915079 0.752179 -vt 0.089835 0.750188 -vt 0.099461 0.794430 -vt 0.017408 0.794430 -vt 0.099461 0.884731 -vt 0.017408 0.884731 -vt 0.014028 0.839581 -vt 0.102842 0.839581 -vt 0.089835 0.928973 -vt 0.027034 0.928973 -vt 0.798208 0.545339 -vt 0.716155 0.545336 -vt 0.712776 0.500185 -vt 0.801590 0.500188 -vt 0.716158 0.455035 -vt 0.788580 0.589580 -vt 0.725779 0.589578 -vt 0.788587 0.410796 -vt 0.798211 0.455038 -vt 0.801590 0.707029 -vt 0.712776 0.707029 -vt 0.716156 0.661878 -vt 0.788583 0.796421 -vt 0.725782 0.796421 -vt 0.716156 0.752179 -vt 0.788584 0.617636 -vt 0.798210 0.661878 -vt 0.798209 0.752179 -vt 0.905453 0.589578 -vt 0.842652 0.589578 -vt 0.833026 0.545336 -vt 0.915079 0.455035 -vt 0.833026 0.455035 -vt 0.842652 0.410793 -vt 0.918460 0.500186 -vt 0.915079 0.545336 -vt 0.829646 0.500186 -vt 0.866496 0.199357 -vt 0.784443 0.199357 -vt 0.794069 0.155115 -vt 0.869877 0.244508 -vt 0.866496 0.289658 -vt 0.784443 0.289658 -vt 0.781063 0.244507 -vt 0.856870 0.333900 -vt 0.794069 0.333900 -vt 0.216331 0.794430 -vt 0.219711 0.839581 -vt 0.130898 0.839581 -vt 0.206705 0.928973 -vt 0.143904 0.928973 -vt 0.134278 0.884731 -vt 0.134278 0.794430 -vt 0.143904 0.750188 -vt 0.216331 0.884731 -vt 0.129484 0.666472 -vt 0.591308 0.666472 -vt 0.514338 0.666472 -vt 0.398881 0.666472 -vt 0.629797 0.115455 -vt 0.871616 0.361956 -vt 0.455191 0.869255 -vt 0.014028 0.968633 -vt 0.149858 0.968633 -vt 0.376243 0.968634 -vt 0.573800 0.869255 -vt 0.961341 0.824477 -vt 0.409914 0.928973 -vt 0.726852 0.928973 -vt 0.164612 0.014078 -vt 0.126126 0.014065 -vt 0.087641 0.014052 -vt 0.049156 0.014039 -vt 0.594742 0.014225 -vt 0.587951 0.014223 -vt 0.549465 0.014210 -vt 0.510980 0.014196 -vt 0.440801 0.014172 -vt 0.402315 0.014159 -vt 0.363830 0.014146 -vt 0.357038 0.014144 -vt 0.318553 0.014131 -vt 0.280067 0.014118 -vt 0.203097 0.014091 -vt 0.241582 0.014104 -vt 0.325306 0.722132 -vt 0.318515 0.722132 -vt 0.280029 0.722132 -vt 0.241544 0.722132 -vt 0.203059 0.722132 -vt 0.164573 0.722132 -vt 0.126088 0.722132 -vt 0.087603 0.722132 -vt 0.049117 0.722132 -vt 0.594704 0.722133 -vt 0.556219 0.722133 -vt 0.517733 0.722132 -vt 0.479248 0.722132 -vt 0.440762 0.722132 -vt 0.402277 0.722132 -vt 0.363792 0.722132 -vt 0.323575 0.750188 -vt 0.905453 0.617636 -vt 0.027034 0.750188 -vt 0.725786 0.410793 -vt 0.725783 0.617636 -vt 0.905453 0.410793 -vt 0.856870 0.155115 -vt 0.206705 0.750188 -vn -1.000000 -0.000000 0.000000 -vn 0.000000 -0.555600 -0.831500 -vn 0.000000 -0.555600 0.831500 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.068000 -0.997700 -vn 0.000000 0.068000 0.997700 -vn 0.000000 -0.054000 -0.998500 -vn 0.000000 -0.054000 0.998500 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 0.196300 0.000000 -0.980500 -vn 0.196300 -0.375200 -0.905900 -vn 0.196300 -0.693300 -0.693300 -vn 0.000000 -0.707100 -0.707100 -vn 0.196300 -0.905900 -0.375200 -vn 0.000000 -0.923900 -0.382700 -vn 0.196300 -0.980500 0.000000 -vn 0.196300 -0.905900 0.375200 -vn 0.196300 -0.693300 0.693300 -vn 0.000000 -0.707100 0.707100 -vn 0.196300 -0.375200 0.905900 -vn 0.196300 0.000000 0.980500 -vn 0.000000 0.000000 1.000000 -vn 0.196300 0.375200 0.905900 -vn 0.000000 0.382700 0.923900 -vn 0.196300 0.693300 0.693300 -vn 0.196300 0.905900 0.375200 -vn 0.000000 0.923900 0.382700 -vn 0.196300 0.980500 0.000000 -vn 0.000000 1.000000 0.000000 -vn 0.196300 0.905900 -0.375200 -vn 0.000000 0.923900 -0.382700 -vn 0.196300 0.693300 -0.693300 -vn 0.000000 0.382700 -0.923900 -vn 0.196300 0.375200 -0.905900 -vn 0.000000 0.707100 -0.707100 -vn 0.000000 -0.382700 -0.923900 -vn -0.149500 -0.378400 -0.913500 -vn -0.149500 -0.699100 -0.699100 -vn -0.149500 -0.913500 -0.378400 -vn 0.000000 -0.923900 0.382700 -vn -0.149500 -0.913500 0.378400 -vn -0.149500 -0.699100 0.699100 -vn 0.000000 -0.382700 0.923900 -vn -0.149500 -0.378400 0.913500 -vn -0.149500 0.000000 0.988700 -vn -0.149500 0.378400 0.913500 -vn 0.000000 0.707100 0.707100 -vn -0.149500 0.699100 0.699100 -vn -0.149600 0.988700 0.000000 -vn -0.149600 0.913500 -0.378400 -vn -0.149500 0.378400 -0.913500 -vn -0.149600 0.699100 -0.699100 -vn 0.665700 0.000000 -0.746200 -vn 0.599900 -0.188900 -0.777400 -vn -0.599900 -0.188900 -0.777400 -vn 0.913000 -0.393800 -0.106200 -vn 0.665700 -0.689400 -0.285500 -vn -0.665700 -0.689400 -0.285500 -vn 0.665700 -0.746200 0.000000 -vn -0.665700 -0.746200 0.000000 -vn 0.665700 -0.689400 0.285500 -vn -0.665700 -0.689400 0.285500 -vn 0.913000 -0.393800 0.106200 -vn -0.913000 -0.393800 0.106200 -vn 0.599900 -0.188900 0.777400 -vn 0.665700 0.000000 0.746200 -vn -0.665700 0.000000 0.746200 -vn 0.665700 0.285500 0.689400 -vn -0.665700 0.285500 0.689400 -vn 0.665700 0.527600 0.527600 -vn 0.665700 0.689400 0.285500 -vn -0.665700 0.689400 0.285500 -vn 0.665700 0.746200 0.000000 -vn -0.665700 0.746200 0.000000 -vn 0.665700 0.689400 -0.285500 -vn -0.665700 0.689400 -0.285500 -vn 0.665700 0.527600 -0.527600 -vn 0.665700 0.285500 -0.689400 -vn -0.665700 0.000000 -0.746200 -vn -0.665700 0.527600 -0.527600 -vn -0.599900 -0.188900 0.777400 -vn -0.665700 0.527600 0.527600 -vn -0.155200 0.000000 -0.987900 -vn -0.155200 -0.378000 -0.912700 -vn -0.665700 -0.285500 -0.689400 -vn -0.155200 -0.698500 -0.698500 -vn -0.665700 -0.527600 -0.527600 -vn -0.155200 -0.912700 -0.378000 -vn -0.155200 -0.987900 0.000000 -vn -0.155200 -0.912700 0.378000 -vn -0.155200 -0.698500 0.698500 -vn -0.665700 -0.527600 0.527600 -vn -0.155200 -0.378000 0.912700 -vn -0.665700 -0.285500 0.689400 -vn -0.155200 0.000000 0.987900 -vn -0.155200 0.378000 0.912700 -vn -0.155200 0.698500 0.698500 -vn -0.155200 0.912700 0.378000 -vn -0.155200 0.987900 0.000000 -vn -0.155200 0.912700 -0.378000 -vn -0.155200 0.698500 -0.698500 -vn -0.155200 0.378000 -0.912700 -vn -0.665700 0.285500 -0.689400 -vn -0.149600 0.913500 0.378400 -vn -0.149500 -0.988700 0.000000 -vn -0.149500 0.000000 -0.988700 -vn 0.803800 0.549600 0.227600 -vn 0.803800 0.549600 -0.227600 -vn 0.803800 0.420600 -0.420600 -vn 0.803800 0.227600 -0.549600 -vn 0.803800 0.000000 -0.594900 -vn 0.803800 -0.227600 -0.549600 -vn 0.803800 -0.420600 -0.420600 -vn 0.803800 -0.549600 -0.227600 -vn 0.803800 -0.594900 0.000000 -vn 0.803800 -0.549600 0.227600 -vn 0.803800 -0.420600 0.420600 -vn 0.803800 -0.227600 0.549600 -vn 0.803800 0.000000 0.594900 -vn 0.803800 0.227600 0.549600 -vn 0.803800 0.420600 0.420600 -vn -0.366800 0.657800 -0.657800 -vn 0.555600 0.831400 0.000000 -vn 0.555600 0.587900 -0.587900 -vn 0.366800 0.657800 -0.657800 -vn -0.366800 0.930300 0.000000 -vn -0.555600 0.587900 -0.587900 -vn 0.366800 0.930300 0.000000 -vn -0.366800 0.000000 -0.930300 -vn 0.555600 0.000000 -0.831400 -vn 0.366800 0.000000 -0.930300 -vn -0.555600 0.000000 -0.831400 -vn -0.366800 -0.657800 -0.657800 -vn 0.366800 -0.657800 -0.657800 -vn 0.555600 -0.587900 -0.587900 -vn 0.366800 -0.930300 0.000000 -vn -0.366800 -0.930300 0.000000 -vn 0.555600 -0.831400 0.000000 -vn -0.555600 -0.587900 -0.587900 -vn -0.366800 -0.657800 0.657800 -vn 0.555600 -0.587900 0.587900 -vn 0.366800 -0.657800 0.657800 -vn -0.555600 -0.831400 0.000000 -vn 0.555600 0.000000 0.831400 -vn 0.366800 0.000000 0.930300 -vn -0.366800 0.000000 0.930300 -vn -0.555600 0.000000 0.831400 -vn -0.366800 0.657800 0.657800 -vn -0.555600 0.587900 0.587900 -vn 0.366800 0.657800 0.657800 -vn 0.555600 0.587900 0.587900 -vn -0.555600 0.831400 0.000000 -vn -0.913000 -0.393800 -0.106200 -vn 0.803800 0.594900 0.000000 -vn -0.555600 -0.587900 0.587900 -s off -f 83/1/1 87/2/1 95/3/1 -f 100/4/2 102/5/2 101/6/2 -f 110/7/3 112/8/3 111/9/3 -f 118/10/4 110/11/4 126/12/4 -f 115/13/1 119/14/1 127/15/1 -f 131/16/2 132/17/2 134/18/2 -f 141/19/3 142/20/3 144/21/3 -f 150/22/4 142/23/4 158/24/4 -f 143/25/1 151/26/1 159/27/1 -f 86/28/4 78/29/4 70/30/4 -f 163/31/4 132/32/4 134/33/4 -f 168/34/4 167/35/4 142/36/4 -f 173/37/1 111/38/1 109/39/1 -f 131/40/5 132/41/5 163/42/5 -f 165/43/1 143/44/1 141/45/1 -f 165/46/6 168/47/6 144/48/6 -f 162/49/1 161/50/1 133/51/1 -f 141/52/7 142/53/7 167/54/7 -f 164/55/8 134/56/8 133/57/8 -f 171/58/4 100/59/4 102/60/4 -f 176/61/4 175/62/4 110/63/4 -f 170/64/1 169/65/1 101/66/1 -f 164/55/9 161/67/9 162/68/9 -f 172/69/8 102/70/8 101/71/8 -f 99/72/5 100/73/5 171/74/5 -f 173/75/6 176/76/6 112/77/6 -f 109/78/7 110/79/7 175/80/7 -f 168/47/9 165/46/9 166/81/9 -f 176/76/9 173/75/9 174/82/9 -f 172/69/9 169/83/9 170/84/9 -f 95/3/1 65/85/1 67/86/1 -f 67/86/1 69/87/1 71/88/1 -f 71/88/1 73/89/1 75/90/1 -f 75/90/1 77/91/1 71/88/1 -f 79/92/1 81/93/1 83/1/1 -f 83/1/1 85/94/1 87/2/1 -f 87/2/1 89/95/1 91/96/1 -f 91/96/1 93/97/1 87/2/1 -f 95/3/1 67/86/1 79/92/1 -f 71/88/1 77/91/1 79/92/1 -f 79/92/1 83/1/1 95/3/1 -f 87/2/1 93/97/1 95/3/1 -f 67/86/1 71/88/1 79/92/1 -f 99/98/2 100/4/2 101/6/2 -f 109/99/3 110/7/3 111/9/3 -f 102/100/4 100/101/4 98/102/4 -f 98/102/4 128/103/4 126/12/4 -f 126/12/4 124/104/4 118/10/4 -f 122/105/4 120/106/4 118/10/4 -f 118/10/4 116/107/4 110/11/4 -f 114/108/4 112/109/4 110/11/4 -f 110/11/4 108/110/4 106/111/4 -f 106/111/4 104/112/4 110/11/4 -f 102/100/4 98/102/4 126/12/4 -f 124/104/4 122/105/4 118/10/4 -f 116/107/4 114/108/4 110/11/4 -f 110/11/4 104/112/4 102/100/4 -f 102/100/4 126/12/4 110/11/4 -f 127/15/1 97/113/1 99/114/1 -f 99/114/1 101/115/1 103/116/1 -f 103/116/1 105/117/1 107/118/1 -f 107/118/1 109/119/1 111/120/1 -f 111/120/1 113/121/1 115/13/1 -f 115/13/1 117/122/1 119/14/1 -f 119/14/1 121/123/1 123/124/1 -f 123/124/1 125/125/1 127/15/1 -f 127/15/1 99/114/1 103/116/1 -f 103/116/1 107/118/1 111/120/1 -f 111/120/1 115/13/1 127/15/1 -f 119/14/1 123/124/1 127/15/1 -f 127/15/1 103/116/1 111/120/1 -f 133/126/2 131/16/2 134/18/2 -f 143/127/3 141/19/3 144/21/3 -f 134/128/4 132/129/4 130/130/4 -f 130/130/4 160/131/4 158/24/4 -f 158/24/4 156/132/4 150/22/4 -f 154/133/4 152/134/4 150/22/4 -f 150/22/4 148/135/4 142/23/4 -f 146/136/4 144/137/4 142/23/4 -f 142/23/4 140/138/4 138/139/4 -f 138/139/4 136/140/4 142/23/4 -f 134/128/4 130/130/4 158/24/4 -f 156/132/4 154/133/4 150/22/4 -f 148/135/4 146/136/4 142/23/4 -f 142/23/4 136/140/4 134/128/4 -f 134/128/4 158/24/4 142/23/4 -f 159/27/1 129/141/1 131/142/1 -f 131/142/1 133/143/1 159/27/1 -f 135/144/1 137/145/1 139/146/1 -f 139/146/1 141/147/1 135/144/1 -f 143/25/1 145/148/1 147/149/1 -f 147/149/1 149/150/1 151/26/1 -f 151/26/1 153/151/1 155/152/1 -f 155/152/1 157/153/1 159/27/1 -f 159/27/1 133/143/1 135/144/1 -f 135/144/1 141/147/1 143/25/1 -f 143/25/1 147/149/1 151/26/1 -f 151/26/1 155/152/1 159/27/1 -f 159/27/1 135/144/1 143/25/1 -f 70/30/4 68/154/4 66/155/4 -f 66/155/4 96/156/4 94/157/4 -f 94/157/4 92/158/4 90/159/4 -f 90/159/4 88/160/4 86/28/4 -f 86/28/4 84/161/4 78/29/4 -f 82/162/4 80/163/4 78/29/4 -f 78/29/4 76/164/4 70/30/4 -f 74/165/4 72/166/4 70/30/4 -f 70/30/4 66/155/4 94/157/4 -f 94/157/4 90/159/4 70/30/4 -f 84/161/4 82/162/4 78/29/4 -f 76/164/4 74/165/4 70/30/4 -f 70/30/4 90/159/4 86/28/4 -f 164/167/4 163/31/4 134/33/4 -f 144/168/4 168/34/4 142/36/4 -f 174/169/1 173/37/1 109/39/1 -f 162/68/5 131/40/5 163/42/5 -f 166/170/1 165/43/1 141/45/1 -f 143/171/6 165/46/6 144/48/6 -f 131/172/1 162/49/1 133/51/1 -f 166/81/7 141/52/7 167/54/7 -f 161/67/8 164/55/8 133/57/8 -f 172/173/4 171/58/4 102/60/4 -f 112/174/4 176/61/4 110/63/4 -f 99/175/1 170/64/1 101/66/1 -f 163/42/9 164/55/9 162/68/9 -f 169/83/8 172/69/8 101/71/8 -f 170/84/5 99/72/5 171/74/5 -f 111/176/6 173/75/6 112/77/6 -f 174/82/7 109/78/7 175/80/7 -f 167/54/9 168/47/9 166/81/9 -f 175/80/9 176/76/9 174/82/9 -f 171/74/9 172/69/9 170/84/9 -s 1 -f 1/177/10 2/178/11 4/179/12 -f 4/179/12 6/180/13 5/181/14 -f 6/180/13 8/182/15 7/183/16 -f 8/182/15 10/184/17 9/185/9 -f 9/186/9 10/187/17 12/188/18 -f 12/188/18 14/189/19 13/190/20 -f 13/190/20 14/189/19 16/191/21 -f 16/191/21 18/192/22 17/193/23 -f 18/192/22 20/194/24 19/195/25 -f 19/195/25 20/194/24 22/196/26 -f 22/196/26 24/197/27 23/198/28 -f 24/197/27 26/199/29 25/200/30 -f 25/200/30 26/199/29 28/201/31 -f 27/202/32 28/201/31 30/203/33 -f 31/204/34 32/205/35 2/178/11 -f 29/206/36 30/203/33 32/205/35 -f 34/207/10 36/208/37 35/209/38 -f 36/208/37 38/210/14 37/211/39 -f 37/211/39 38/210/14 40/212/16 -f 39/213/40 40/212/16 42/214/9 -f 42/215/9 44/216/41 43/217/42 -f 44/216/41 46/218/20 45/219/43 -f 46/218/20 48/220/44 47/221/45 -f 48/220/44 50/222/23 49/223/46 -f 50/222/23 52/224/25 51/225/47 -f 51/225/47 52/224/25 54/226/48 -f 53/227/49 54/226/48 56/228/28 -f 56/228/28 58/229/30 57/230/50 -f 57/230/50 58/229/30 60/231/32 -f 59/232/51 60/231/32 62/233/36 -f 63/234/52 64/235/34 34/207/10 -f 61/236/53 62/233/36 64/235/34 -f 98/237/54 100/238/55 99/239/56 -f 102/240/57 104/241/58 103/242/59 -f 104/241/58 106/243/60 105/244/61 -f 106/245/60 108/246/62 107/247/63 -f 108/246/62 110/248/64 109/249/65 -f 112/250/66 114/251/67 113/252/68 -f 114/251/67 116/253/69 115/254/70 -f 115/254/70 116/253/69 118/255/71 -f 118/255/71 120/256/72 119/257/73 -f 120/256/72 122/258/74 121/259/75 -f 122/258/74 124/260/76 123/261/77 -f 123/261/77 124/260/76 126/262/78 -f 128/263/79 98/237/54 97/264/80 -f 125/265/81 126/262/78 128/263/79 -f 130/266/54 132/267/55 131/268/56 -f 134/269/57 136/270/58 135/271/59 -f 136/270/58 138/272/60 137/273/61 -f 138/274/60 140/275/62 139/276/63 -f 140/275/62 142/277/64 141/278/65 -f 143/279/82 144/280/66 146/281/67 -f 146/281/67 148/282/69 147/283/70 -f 148/282/69 150/284/71 149/285/83 -f 150/284/71 152/286/72 151/287/73 -f 152/286/72 154/288/74 153/289/75 -f 154/288/74 156/290/76 155/291/77 -f 156/290/76 158/292/78 157/293/81 -f 160/294/79 130/266/54 129/295/80 -f 157/293/81 158/292/78 160/294/79 -f 177/296/84 178/297/85 67/298/86 -f 178/299/85 179/300/87 69/301/88 -f 179/302/87 180/303/89 71/304/59 -f 180/305/89 181/306/90 73/307/61 -f 73/308/61 181/309/90 182/310/91 -f 182/311/91 183/312/92 77/313/93 -f 183/314/92 184/315/94 79/316/95 -f 184/317/94 185/318/96 81/319/68 -f 81/320/68 185/321/96 186/322/97 -f 83/323/70 186/324/97 187/325/98 -f 85/326/83 187/327/98 188/328/99 -f 188/329/99 189/330/100 89/331/75 -f 189/332/100 190/333/101 91/334/77 -f 190/335/101 191/336/102 93/337/81 -f 192/338/103 177/339/84 65/340/80 -f 191/341/102 192/342/103 95/343/104 -f 190/335/101 59/232/51 61/236/53 -f 59/232/51 190/333/101 189/332/100 -f 57/230/50 189/330/100 188/329/99 -f 53/227/49 55/344/105 188/328/99 -f 51/225/47 53/227/49 187/325/98 -f 49/223/46 51/225/47 186/322/97 -f 47/221/45 49/223/46 185/318/96 -f 45/219/43 47/221/45 184/315/94 -f 43/217/42 45/219/43 183/312/92 -f 43/217/42 182/310/91 181/309/90 -f 39/213/40 41/345/106 181/306/90 -f 39/213/40 180/303/89 179/302/87 -f 37/211/39 179/300/87 178/299/85 -f 35/209/38 178/297/85 177/296/84 -f 33/346/107 177/339/84 192/338/103 -f 63/234/52 192/342/103 191/341/102 -f 26/199/29 24/197/27 88/347/108 -f 92/348/109 28/201/31 26/199/29 -f 94/349/110 30/203/33 28/201/31 -f 96/350/111 32/205/35 30/203/33 -f 66/351/112 2/178/11 32/205/35 -f 68/352/113 4/179/12 2/178/11 -f 70/353/114 6/180/13 4/179/12 -f 72/354/115 8/182/15 6/180/13 -f 74/355/116 10/184/17 8/182/15 -f 12/188/18 10/187/17 74/356/116 -f 14/189/19 12/188/18 76/357/117 -f 16/191/21 14/189/19 78/358/118 -f 18/192/22 16/191/21 80/359/119 -f 20/194/24 18/192/22 82/360/120 -f 22/196/26 20/194/24 84/361/121 -f 24/197/27 22/196/26 86/362/122 -f 195/363/30 200/364/36 201/365/123 -f 193/366/124 198/367/125 199/368/126 -f 196/369/127 201/365/123 202/370/128 -f 194/371/129 199/368/126 200/364/36 -f 200/372/36 205/373/10 206/374/130 -f 198/375/125 203/376/131 204/377/132 -f 201/378/123 206/374/130 207/379/133 -f 199/380/126 204/377/132 205/373/10 -f 207/381/133 206/382/130 211/383/134 -f 204/384/132 209/385/135 210/386/14 -f 205/387/10 210/386/14 211/383/134 -f 204/384/132 203/388/131 208/389/136 -f 209/390/135 214/391/137 215/392/9 -f 210/393/14 215/392/9 216/394/138 -f 209/390/135 208/395/136 213/396/139 -f 212/397/140 211/398/134 216/394/138 -f 215/399/9 220/400/20 221/401/141 -f 213/402/139 218/403/142 219/404/143 -f 217/405/144 216/406/138 221/401/141 -f 215/399/9 214/407/137 219/404/143 -f 218/408/142 223/409/145 224/410/146 -f 221/411/141 226/412/147 227/413/148 -f 220/414/20 219/415/143 224/410/146 -f 220/414/20 225/416/23 226/412/147 -f 226/417/147 231/418/149 232/419/150 -f 225/420/23 224/421/146 229/422/151 -f 226/417/147 225/420/23 230/423/48 -f 223/424/145 228/425/152 229/422/151 -f 231/426/149 230/427/48 195/428/30 -f 228/429/152 193/430/124 194/431/129 -f 231/426/149 196/432/127 197/433/153 -f 229/434/151 194/431/129 195/428/30 -f 3/435/37 1/177/10 4/179/12 -f 3/435/37 4/179/12 5/181/14 -f 5/181/14 6/180/13 7/183/16 -f 7/183/16 8/182/15 9/185/9 -f 11/436/41 9/186/9 12/188/18 -f 11/436/41 12/188/18 13/190/20 -f 15/437/44 13/190/20 16/191/21 -f 15/437/44 16/191/21 17/193/23 -f 17/193/23 18/192/22 19/195/25 -f 21/438/48 19/195/25 22/196/26 -f 21/438/48 22/196/26 23/198/28 -f 23/198/28 24/197/27 25/200/30 -f 27/202/32 25/200/30 28/201/31 -f 29/206/36 27/202/32 30/203/33 -f 1/177/10 31/204/34 2/178/11 -f 31/204/34 29/206/36 32/205/35 -f 33/346/107 34/207/10 35/209/38 -f 35/209/38 36/208/37 37/211/39 -f 39/213/40 37/211/39 40/212/16 -f 41/345/106 39/213/40 42/214/9 -f 41/439/106 42/215/9 43/217/42 -f 43/217/42 44/216/41 45/219/43 -f 45/219/43 46/218/20 47/221/45 -f 47/221/45 48/220/44 49/223/46 -f 49/223/46 50/222/23 51/225/47 -f 53/227/49 51/225/47 54/226/48 -f 55/344/105 53/227/49 56/228/28 -f 55/344/105 56/228/28 57/230/50 -f 59/232/51 57/230/50 60/231/32 -f 61/236/53 59/232/51 62/233/36 -f 33/346/107 63/234/52 34/207/10 -f 63/234/52 61/236/53 64/235/34 -f 97/264/80 98/237/54 99/239/56 -f 101/440/154 102/240/57 103/242/59 -f 103/242/59 104/241/58 105/244/61 -f 105/441/61 106/245/60 107/247/63 -f 107/247/63 108/246/62 109/249/65 -f 111/442/82 112/250/66 113/252/68 -f 113/252/68 114/251/67 115/254/70 -f 117/443/83 115/254/70 118/255/71 -f 117/443/83 118/255/71 119/257/73 -f 119/257/73 120/256/72 121/259/75 -f 121/259/75 122/258/74 123/261/77 -f 125/265/81 123/261/77 126/262/78 -f 127/444/104 128/263/79 97/264/80 -f 127/444/104 125/265/81 128/263/79 -f 129/295/80 130/266/54 131/268/56 -f 133/445/154 134/269/57 135/271/59 -f 135/271/59 136/270/58 137/273/61 -f 137/446/61 138/274/60 139/276/63 -f 139/276/63 140/275/62 141/278/65 -f 145/447/68 143/279/82 146/281/67 -f 145/447/68 146/281/67 147/283/70 -f 147/283/70 148/282/69 149/285/83 -f 149/285/83 150/284/71 151/287/73 -f 151/287/73 152/286/72 153/289/75 -f 153/289/75 154/288/74 155/291/77 -f 155/291/77 156/290/76 157/293/81 -f 159/448/104 160/294/79 129/295/80 -f 159/448/104 157/293/81 160/294/79 -f 65/449/80 177/296/84 67/298/86 -f 67/450/86 178/299/85 69/301/88 -f 69/451/88 179/302/87 71/304/59 -f 71/452/59 180/305/89 73/307/61 -f 75/453/63 73/308/61 182/310/91 -f 75/454/63 182/311/91 77/313/93 -f 77/455/93 183/314/92 79/316/95 -f 79/456/95 184/317/94 81/319/68 -f 83/457/70 81/320/68 186/322/97 -f 85/458/83 83/323/70 187/325/98 -f 87/459/73 85/326/83 188/328/99 -f 87/460/73 188/329/99 89/331/75 -f 89/461/75 189/332/100 91/334/77 -f 91/462/77 190/335/101 93/337/81 -f 95/463/104 192/338/103 65/340/80 -f 93/464/81 191/341/102 95/343/104 -f 191/336/102 190/335/101 61/236/53 -f 57/230/50 59/232/51 189/332/100 -f 55/344/105 57/230/50 188/329/99 -f 187/327/98 53/227/49 188/328/99 -f 186/324/97 51/225/47 187/325/98 -f 185/321/96 49/223/46 186/322/97 -f 184/317/94 47/221/45 185/318/96 -f 183/314/92 45/219/43 184/315/94 -f 182/311/91 43/217/42 183/312/92 -f 41/439/106 43/217/42 181/309/90 -f 180/305/89 39/213/40 181/306/90 -f 37/211/39 39/213/40 179/302/87 -f 35/209/38 37/211/39 178/299/85 -f 33/346/107 35/209/38 177/296/84 -f 63/234/52 33/346/107 192/338/103 -f 61/236/53 63/234/52 191/341/102 -f 90/465/155 26/199/29 88/347/108 -f 90/466/155 92/348/109 26/199/29 -f 92/467/109 94/349/110 28/201/31 -f 94/468/110 96/350/111 30/203/33 -f 96/469/111 66/351/112 32/205/35 -f 66/470/112 68/352/113 2/178/11 -f 68/471/113 70/353/114 4/179/12 -f 70/472/114 72/354/115 6/180/13 -f 72/473/115 74/355/116 8/182/15 -f 76/474/117 12/188/18 74/356/116 -f 78/475/118 14/189/19 76/357/117 -f 80/476/119 16/191/21 78/358/118 -f 82/477/120 18/192/22 80/359/119 -f 84/478/121 20/194/24 82/360/120 -f 86/479/122 22/196/26 84/361/121 -f 88/480/108 24/197/27 86/362/122 -f 196/369/127 195/363/30 201/365/123 -f 194/371/129 193/366/124 199/368/126 -f 197/481/153 196/369/127 202/370/128 -f 195/363/30 194/371/129 200/364/36 -f 201/378/123 200/372/36 206/374/130 -f 199/380/126 198/375/125 204/377/132 -f 202/482/128 201/378/123 207/379/133 -f 200/372/36 199/380/126 205/373/10 -f 212/483/140 207/381/133 211/383/134 -f 205/387/10 204/384/132 210/386/14 -f 206/382/130 205/387/10 211/383/134 -f 209/385/135 204/384/132 208/389/136 -f 210/393/14 209/390/135 215/392/9 -f 211/398/134 210/393/14 216/394/138 -f 214/391/137 209/390/135 213/396/139 -f 217/484/144 212/397/140 216/394/138 -f 216/406/138 215/399/9 221/401/141 -f 214/407/137 213/402/139 219/404/143 -f 222/485/156 217/405/144 221/401/141 -f 220/400/20 215/399/9 219/404/143 -f 219/415/143 218/408/142 224/410/146 -f 222/486/156 221/411/141 227/413/148 -f 225/416/23 220/414/20 224/410/146 -f 221/411/141 220/414/20 226/412/147 -f 227/487/148 226/417/147 232/419/150 -f 230/423/48 225/420/23 229/422/151 -f 231/418/149 226/417/147 230/423/48 -f 224/421/146 223/424/145 229/422/151 -f 196/432/127 231/426/149 195/428/30 -f 229/434/151 228/429/152 194/431/129 -f 232/488/150 231/426/149 197/433/153 -f 230/427/48 229/434/151 195/428/30 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide.obj new file mode 100644 index 000000000..2bb100bbd --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide.obj @@ -0,0 +1,1366 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_curve_wide.blend' +# www.blender.org +o Plane.001 +v -1.312500 0.062500 0.500000 +v -1.312500 0.187500 0.500000 +v -1.250000 0.062500 0.500000 +v -1.250000 0.187500 0.500000 +v 0.250000 0.062500 0.500000 +v 0.312499 0.062500 0.500000 +v 0.312499 0.187500 0.500000 +v 0.250000 0.187500 0.500000 +v -1.502685 0.000000 0.251008 +v 0.489705 0.000000 0.076696 +v -1.535368 0.000000 -0.122565 +v 0.457022 0.000000 -0.296877 +v -1.535368 0.062500 -0.122565 +v -1.502685 0.062500 0.251008 +v 0.489705 0.062500 0.076696 +v 0.457022 0.062500 -0.296877 +v 0.405654 0.125000 -0.166905 +v 0.094343 0.125000 -0.139669 +v 0.416548 0.125000 -0.042381 +v 0.105237 0.125000 -0.015145 +v 0.405654 0.062500 -0.166905 +v 0.094343 0.062500 -0.139669 +v 0.416548 0.062500 -0.042381 +v 0.105237 0.062500 -0.015145 +v -1.451317 0.062500 0.121036 +v -1.140006 0.062500 0.093800 +v -1.462212 0.062500 -0.003488 +v -1.150901 0.062500 -0.030724 +v -1.451317 0.125000 0.121036 +v -1.140006 0.125000 0.093800 +v -1.462212 0.125000 -0.003488 +v -1.150901 0.125000 -0.030724 +v -6.500000 0.187500 -6.249998 +v -6.500000 0.187500 -6.312497 +v -6.500000 0.062500 -6.312497 +v -6.500000 0.062500 -6.249998 +v -6.500000 0.187500 -4.749999 +v -6.500000 0.062500 -4.749999 +v -6.500000 0.187500 -4.687499 +v -6.500000 0.062500 -4.687499 +v -5.599200 0.187500 -4.608689 +v -5.588348 0.187500 -4.670239 +v -5.588348 0.062500 -4.670239 +v -5.599200 0.062500 -4.608689 +v -5.327875 0.062500 -6.147450 +v -5.327875 0.187500 -6.147450 +v -5.317022 0.062500 -6.209000 +v -5.317022 0.187500 -6.209000 +v -4.191364 0.187500 -5.842923 +v -4.169989 0.187500 -5.901654 +v -4.169989 0.062500 -5.901654 +v -4.191364 0.062500 -5.842923 +v -4.704395 0.187500 -4.433385 +v -4.704395 0.062500 -4.433385 +v -4.725770 0.187500 -4.374655 +v -4.725770 0.062500 -4.374655 +v -3.906250 0.187500 -3.992507 +v -3.875001 0.187500 -4.046633 +v -3.875001 0.062500 -4.046633 +v -3.906250 0.062500 -3.992507 +v -3.125000 0.062500 -5.345670 +v -3.125000 0.187500 -5.345670 +v -3.093751 0.062500 -5.399796 +v -3.093751 0.187500 -5.399796 +v -2.161184 0.187500 -4.670798 +v -2.121011 0.187500 -4.718676 +v -2.121011 0.062500 -4.718676 +v -2.161184 0.062500 -4.670798 +v -3.125366 0.187500 -3.521733 +v -3.125366 0.062500 -3.521733 +v -3.165539 0.187500 -3.473855 +v -3.165539 0.062500 -3.473855 +v -2.526145 0.187500 -2.834461 +v -2.478267 0.187500 -2.874635 +v -2.478267 0.062500 -2.874635 +v -2.526145 0.062500 -2.834461 +v -1.329201 0.062500 -3.838815 +v -1.329201 0.187500 -3.838815 +v -1.281323 0.062500 -3.878989 +v -1.281323 0.187500 -3.878989 +v -0.654329 0.187500 -2.874999 +v -0.600204 0.187500 -2.906249 +v -0.600204 0.062500 -2.906249 +v -0.654329 0.062500 -2.874999 +v -1.953367 0.187500 -2.125000 +v -1.953367 0.062500 -2.125000 +v -2.007493 0.187500 -2.093750 +v -2.007493 0.062500 -2.093750 +v -1.625344 0.187500 -1.274230 +v -1.566614 0.187500 -1.295606 +v -1.566614 0.062500 -1.295606 +v -1.625344 0.062500 -1.274230 +v -0.157075 0.062500 -1.808635 +v -0.157075 0.187500 -1.808635 +v -0.098345 0.062500 -1.830012 +v -0.098345 0.187500 -1.830012 +v 0.147452 0.187500 -0.672125 +v 0.209002 0.187500 -0.682978 +v 0.209002 0.062500 -0.682978 +v 0.147452 0.062500 -0.672125 +v -1.329760 0.187500 -0.411653 +v -1.329760 0.062500 -0.411653 +v -1.391310 0.187500 -0.400800 +v -1.391310 0.062500 -0.400800 +v -1.621842 0.000000 -0.612984 +v 0.310009 0.000000 -1.130622 +v -1.718900 0.000000 -0.975206 +v 0.212953 0.000000 -1.492844 +v -1.718900 0.062500 -0.975206 +v -1.621842 0.062500 -0.612984 +v 0.310009 0.062500 -1.130622 +v 0.212953 0.062500 -1.492844 +v 0.184934 0.125000 -1.355928 +v -0.116918 0.125000 -1.275047 +v 0.217287 0.125000 -1.235187 +v -0.084565 0.125000 -1.154306 +v 0.184934 0.062500 -1.355928 +v -0.116918 0.062500 -1.275047 +v 0.217287 0.062500 -1.235187 +v -0.084565 0.062500 -1.154306 +v -1.593824 0.062500 -0.749901 +v -1.291972 0.062500 -0.830782 +v -1.626177 0.062500 -0.870642 +v -1.324325 0.062500 -0.951523 +v -1.593824 0.125000 -0.749901 +v -1.291972 0.125000 -0.830782 +v -1.626177 0.125000 -0.870642 +v -1.324325 0.125000 -0.951523 +v -1.889220 0.000000 -1.443159 +v -0.076604 0.000000 -2.288395 +v -2.047702 0.000000 -1.783024 +v -0.235086 0.000000 -2.628261 +v -2.047702 0.062500 -1.783024 +v -1.889220 0.062500 -1.443159 +v -0.076604 0.062500 -2.288395 +v -0.235086 0.062500 -2.628261 +v -0.238903 0.125000 -2.488559 +v -0.522124 0.125000 -2.356490 +v -0.186076 0.125000 -2.375270 +v -0.469297 0.125000 -2.243202 +v -0.238903 0.062500 -2.488559 +v -0.522124 0.062500 -2.356490 +v -0.186076 0.062500 -2.375270 +v -0.469297 0.062500 -2.243202 +v -1.885403 0.062500 -1.582861 +v -1.602182 0.062500 -1.714929 +v -1.938231 0.062500 -1.696149 +v -1.655010 0.062500 -1.828217 +v -1.885403 0.125000 -1.582861 +v -1.602182 0.125000 -1.714929 +v -1.938231 0.125000 -1.696149 +v -1.655010 0.125000 -1.828217 +v -2.296694 0.000000 -2.214291 +v -0.658390 0.000000 -3.361444 +v -2.511786 0.000000 -2.521473 +v -0.873481 0.000000 -3.668626 +v -2.511786 0.062500 -2.521473 +v -2.296694 0.062500 -2.214291 +v -0.658390 0.062500 -3.361444 +v -0.873481 0.062500 -3.668626 +v -0.852982 0.125000 -3.530384 +v -1.108966 0.125000 -3.351141 +v -0.781284 0.125000 -3.427989 +v -1.037269 0.125000 -3.248747 +v -0.852982 0.062500 -3.530384 +v -1.108966 0.062500 -3.351141 +v -0.781284 0.062500 -3.427989 +v -1.037269 0.062500 -3.248747 +v -2.317194 0.062500 -2.352534 +v -2.061209 0.062500 -2.531776 +v -2.388892 0.062500 -2.454927 +v -2.132906 0.062500 -2.634170 +v -2.317194 0.125000 -2.352534 +v -2.061209 0.125000 -2.531776 +v -2.388892 0.125000 -2.454927 +v -2.132906 0.125000 -2.634170 +v -2.831883 0.000000 -2.902951 +v -1.417670 0.000000 -4.317164 +v -3.097049 0.000000 -3.168117 +v -1.682835 0.000000 -4.582330 +v -3.097049 0.062500 -3.168117 +v -2.831883 0.062500 -2.902951 +v -1.417670 0.062500 -4.317164 +v -1.682835 0.062500 -4.582330 +v -1.638640 0.125000 -4.449748 +v -1.859611 0.125000 -4.228776 +v -1.550253 0.125000 -4.361359 +v -1.771223 0.125000 -4.140388 +v -1.638640 0.062500 -4.449748 +v -1.859611 0.062500 -4.228776 +v -1.550253 0.062500 -4.361359 +v -1.771223 0.062500 -4.140388 +v -2.876078 0.062500 -3.035534 +v -2.655107 0.062500 -3.256505 +v -2.964466 0.062500 -3.123922 +v -2.743495 0.062500 -3.344893 +v -2.876078 0.125000 -3.035534 +v -2.655107 0.125000 -3.256505 +v -2.964466 0.125000 -3.123922 +v -2.743495 0.125000 -3.344893 +v -3.478527 0.000000 -3.488214 +v -2.331373 0.000000 -5.126518 +v -3.785709 0.000000 -3.703305 +v -2.638556 0.000000 -5.341610 +v -3.785709 0.062500 -3.703305 +v -3.478527 0.062500 -3.488214 +v -2.331373 0.062500 -5.126518 +v -2.638556 0.062500 -5.341610 +v -2.572011 0.125000 -5.218716 +v -2.751253 0.125000 -4.962731 +v -2.469616 0.125000 -5.147019 +v -2.648859 0.125000 -4.891034 +v -2.572011 0.062500 -5.218716 +v -2.751253 0.062500 -4.962731 +v -2.469616 0.062500 -5.147019 +v -2.648859 0.062500 -4.891034 +v -3.545072 0.062500 -3.611109 +v -3.365830 0.062500 -3.867094 +v -3.647467 0.062500 -3.682805 +v -3.468224 0.062500 -3.938790 +v -3.545072 0.125000 -3.611109 +v -3.365830 0.125000 -3.867094 +v -3.647467 0.125000 -3.682805 +v -3.468224 0.125000 -3.938790 +v -4.216976 0.000000 -3.952298 +v -3.371739 0.000000 -5.764913 +v -4.556841 0.000000 -4.110780 +v -3.711604 0.000000 -5.923395 +v -4.556841 0.062500 -4.110780 +v -4.216976 0.062500 -3.952298 +v -3.371739 0.062500 -5.764913 +v -3.711604 0.062500 -5.923395 +v -3.624729 0.125000 -5.813924 +v -3.756797 0.125000 -5.530703 +v -3.511442 0.125000 -5.761096 +v -3.643509 0.125000 -5.477876 +v -3.624729 0.062500 -5.813924 +v -3.756797 0.062500 -5.530703 +v -3.511442 0.062500 -5.761096 +v -3.643509 0.062500 -5.477876 +v -4.303851 0.062500 -4.061769 +v -4.171782 0.062500 -4.344991 +v -4.417139 0.062500 -4.114597 +v -4.285071 0.062500 -4.397818 +v -4.303851 0.125000 -4.061769 +v -4.171782 0.125000 -4.344991 +v -4.417139 0.125000 -4.114597 +v -4.285071 0.125000 -4.397818 +v -5.024794 0.000000 -4.281100 +v -4.507154 0.000000 -6.212952 +v -5.387016 0.000000 -4.378157 +v -4.869377 0.000000 -6.310009 +v -5.387016 0.062500 -4.378157 +v -5.024794 0.062500 -4.281100 +v -4.507154 0.062500 -6.212952 +v -4.869377 0.062500 -6.310009 +v -4.764813 0.125000 -6.217286 +v -4.845694 0.125000 -5.915435 +v -4.644072 0.125000 -6.184934 +v -4.724953 0.125000 -5.883083 +v -4.764813 0.062500 -6.217286 +v -4.845694 0.062500 -5.915435 +v -4.644072 0.062500 -6.184934 +v -4.724953 0.062500 -5.883083 +v -5.129358 0.062500 -4.373823 +v -5.048478 0.062500 -4.675675 +v -5.250099 0.062500 -4.406175 +v -5.169218 0.062500 -4.708027 +v -5.129358 0.125000 -4.373823 +v -5.048478 0.125000 -4.675675 +v -5.250099 0.125000 -4.406175 +v -5.169218 0.125000 -4.708027 +v -5.877435 0.000000 -4.464632 +v -5.703122 0.000000 -6.457021 +v -6.251008 0.000000 -4.497314 +v -6.076696 0.000000 -6.489705 +v -6.251008 0.062500 -4.497314 +v -5.877435 0.062500 -4.464632 +v -5.703122 0.062500 -6.457021 +v -6.076696 0.062500 -6.489705 +v -5.957620 0.125000 -6.416547 +v -5.984855 0.125000 -6.105237 +v -5.833095 0.125000 -6.405653 +v -5.860331 0.125000 -6.094343 +v -5.957620 0.062500 -6.416547 +v -5.984855 0.062500 -6.105237 +v -5.833095 0.062500 -6.405653 +v -5.860331 0.062500 -6.094343 +v -5.996511 0.062500 -4.537788 +v -5.969276 0.062500 -4.849099 +v -6.121037 0.062500 -4.548682 +v -6.093800 0.062500 -4.859993 +v -5.996511 0.125000 -4.537788 +v -5.969276 0.125000 -4.849099 +v -6.121037 0.125000 -4.548682 +v -6.093800 0.125000 -4.859993 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.531250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.500000 0.718750 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.500000 0.718750 +vt 0.531250 0.656250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.000000 0.000000 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.000000 0.000000 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.000000 0.000000 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.000000 0.000000 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.9962 0.0000 0.0872 +vn 0.0872 0.0000 0.9962 +vn 0.9962 0.0000 -0.0872 +vn -0.0872 0.0000 -0.9962 +vn -0.0872 0.0000 0.9962 +vn 0.0872 0.0000 -0.9962 +vn -1.0000 0.0000 0.0000 +vn 0.2588 0.0000 -0.9659 +vn -0.2588 0.0000 0.9659 +vn 0.4226 0.0000 -0.9063 +vn -0.4226 0.0000 0.9063 +vn -0.5736 0.0000 0.8192 +vn 0.5736 0.0000 -0.8192 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.8192 0.0000 -0.5736 +vn -0.8192 0.0000 0.5736 +vn 0.9063 0.0000 -0.4226 +vn -0.9063 0.0000 0.4226 +vn -0.9659 0.0000 0.2588 +vn 0.9659 0.0000 -0.2588 +vn 0.2588 0.0000 0.9659 +vn -0.2588 0.0000 -0.9659 +vn 0.4226 0.0000 0.9063 +vn -0.4226 0.0000 -0.9063 +vn 0.5736 0.0000 0.8192 +vn -0.5736 0.0000 -0.8192 +vn -0.8191 0.0000 0.5736 +vn 0.8191 0.0000 -0.5736 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.8192 0.0000 0.5736 +vn -0.8192 0.0000 -0.5736 +vn 0.9063 0.0000 0.4226 +vn -0.9063 0.0000 -0.4226 +vn 0.9659 0.0000 0.2588 +vn -0.9659 0.0000 -0.2588 +vn 0.9962 0.0000 0.0872 +vn -0.9962 0.0000 -0.0872 +vn -0.0871 0.0000 0.9962 +s off +f 3/1/1 2/2/1 1/3/1 +f 8/4/1 6/5/1 7/6/1 +f 11/7/2 10/8/2 9/9/2 +f 15/10/3 13/11/3 14/12/3 +f 9/13/4 13/14/4 11/15/4 +f 10/16/5 14/17/5 9/18/5 +f 12/19/6 15/20/6 10/8/6 +f 11/7/7 16/21/7 12/22/7 +f 39/23/8 44/24/8 41/25/8 +f 42/26/3 39/23/3 41/25/3 +f 36/27/2 47/28/2 45/29/2 +f 33/30/8 45/31/8 46/32/8 +f 38/33/9 42/26/9 43/34/9 +f 40/35/2 43/34/2 44/36/2 +f 35/37/10 33/38/10 34/39/10 +f 39/40/10 38/41/10 40/42/10 +f 44/43/2 54/44/2 56/45/2 +f 43/46/11 53/47/11 54/44/11 +f 46/48/12 52/49/12 49/50/12 +f 45/51/2 51/52/2 52/53/2 +f 53/47/3 41/54/3 55/55/3 +f 41/54/12 56/56/12 55/55/12 +f 34/57/3 46/32/3 48/58/3 +f 35/59/9 48/58/9 47/28/9 +f 54/60/13 58/61/13 59/62/13 +f 56/63/2 59/62/2 60/64/2 +f 64/65/3 49/66/3 62/67/3 +f 51/68/13 64/65/13 63/69/13 +f 55/70/14 60/71/14 57/72/14 +f 58/61/3 55/70/3 57/72/3 +f 47/73/11 50/74/11 51/52/11 +f 50/74/3 46/48/3 49/50/3 +f 29/75/4 27/76/4 25/77/4 +f 20/78/3 17/79/3 18/80/3 +f 17/79/6 23/81/6 21/82/6 +f 19/83/5 24/84/5 23/85/5 +f 18/80/7 21/86/7 22/87/7 +f 20/78/4 22/88/4 24/89/4 +f 31/90/7 28/91/7 27/92/7 +f 30/93/5 25/94/5 26/95/5 +f 32/96/6 26/97/6 28/98/6 +f 29/75/3 32/96/3 31/90/3 +f 69/99/3 57/100/3 71/101/3 +f 57/100/15 72/102/15 71/101/15 +f 63/103/16 66/104/16 67/105/16 +f 66/104/3 62/106/3 65/107/3 +f 60/108/2 70/109/2 72/110/2 +f 59/111/16 69/99/16 70/109/16 +f 52/112/2 63/69/2 61/113/2 +f 49/66/14 61/114/14 62/67/14 +f 71/115/17 76/116/17 73/117/17 +f 69/118/3 73/117/3 74/119/3 +f 68/120/2 79/121/2 77/122/2 +f 65/123/17 77/124/17 78/125/17 +f 70/126/18 74/119/18 75/127/18 +f 72/128/2 75/127/2 76/129/2 +f 62/106/15 68/130/15 65/107/15 +f 61/131/2 67/105/2 68/132/2 +f 75/133/19 85/134/19 86/135/19 +f 78/136/20 84/137/20 81/138/20 +f 84/139/2 79/140/2 83/141/2 +f 85/134/3 73/142/3 87/143/3 +f 73/142/20 88/144/20 87/143/20 +f 79/140/19 82/145/19 83/141/19 +f 80/146/3 65/123/3 78/125/3 +f 67/147/18 80/146/18 79/121/18 +f 86/148/21 90/149/21 91/150/21 +f 88/151/2 91/150/2 92/152/2 +f 82/153/3 94/154/3 96/155/3 +f 83/156/21 96/155/21 95/157/21 +f 87/158/22 92/159/22 89/160/22 +f 90/149/3 87/158/3 89/160/3 +f 82/145/3 78/136/3 81/138/3 +f 76/161/2 86/135/2 88/162/2 +f 89/163/23 104/164/23 103/165/23 +f 95/166/24 98/167/24 99/168/24 +f 98/167/3 94/169/3 97/170/3 +f 92/171/2 102/172/2 104/173/2 +f 91/174/24 101/175/24 102/172/24 +f 94/169/23 100/176/23 97/170/23 +f 84/177/2 95/157/2 93/178/2 +f 81/179/22 93/180/22 94/154/22 +f 102/181/6 4/182/6 3/183/6 +f 99/184/6 7/185/6 6/186/6 +f 104/187/2 3/183/2 1/188/2 +f 100/189/2 6/186/2 5/190/2 +f 97/191/4 5/192/4 8/193/4 +f 101/194/3 2/195/3 4/182/3 +f 103/196/4 1/197/4 2/195/4 +f 7/185/3 97/191/3 8/193/3 +f 93/198/2 99/168/2 100/199/2 +f 101/175/3 89/163/3 103/165/3 +f 107/200/2 106/201/2 105/202/2 +f 111/203/3 109/204/3 110/205/3 +f 105/206/23 109/207/23 107/208/23 +f 106/209/25 110/210/25 105/211/25 +f 108/212/24 111/213/24 106/201/24 +f 107/200/26 112/214/26 108/215/26 +f 125/216/23 123/217/23 121/218/23 +f 116/219/3 113/220/3 114/221/3 +f 113/220/24 119/222/24 117/223/24 +f 115/224/25 120/225/25 119/226/25 +f 114/221/26 117/227/26 118/228/26 +f 116/219/23 118/229/23 120/230/23 +f 127/231/26 124/232/26 123/233/26 +f 126/234/25 121/235/25 122/236/25 +f 128/237/24 122/238/24 124/239/24 +f 125/216/3 128/237/3 127/231/3 +f 131/240/2 130/241/2 129/242/2 +f 135/243/3 133/244/3 134/245/3 +f 129/246/22 133/247/22 131/248/22 +f 130/249/27 134/250/27 129/251/27 +f 132/252/21 135/253/21 130/241/21 +f 131/240/28 136/254/28 132/255/28 +f 149/256/22 147/257/22 145/258/22 +f 138/259/3 139/260/3 137/261/3 +f 137/261/21 143/262/21 141/263/21 +f 139/260/27 144/264/27 143/265/27 +f 138/259/28 141/266/28 142/267/28 +f 140/268/22 142/269/22 144/270/22 +f 151/271/28 148/272/28 147/273/28 +f 150/274/27 145/275/27 146/276/27 +f 152/277/21 146/278/21 148/279/21 +f 149/256/3 152/277/3 151/271/3 +f 155/280/2 154/281/2 153/282/2 +f 158/283/3 160/284/3 157/285/3 +f 153/286/20 157/287/20 155/288/20 +f 154/289/29 158/290/29 153/291/29 +f 156/292/19 159/293/19 154/281/19 +f 155/280/30 160/284/30 156/294/30 +f 173/295/31 171/296/31 169/297/31 +f 164/298/3 161/299/3 162/300/3 +f 161/299/32 167/301/32 165/302/32 +f 163/303/29 168/304/29 167/305/29 +f 162/300/30 165/306/30 166/307/30 +f 164/298/20 166/308/20 168/309/20 +f 175/310/30 172/311/30 171/312/30 +f 174/313/29 169/314/29 170/315/29 +f 176/316/19 170/317/19 172/318/19 +f 173/295/3 176/316/3 175/310/3 +f 179/319/2 178/320/2 177/321/2 +f 183/322/3 181/323/3 182/324/3 +f 177/325/17 181/326/17 179/327/17 +f 178/328/33 182/329/33 177/330/33 +f 180/331/18 183/332/18 178/320/18 +f 179/319/34 184/333/34 180/334/34 +f 197/335/17 195/336/17 193/337/17 +f 186/338/3 187/339/3 185/340/3 +f 185/340/18 191/341/18 189/342/18 +f 187/339/33 192/343/33 191/344/33 +f 186/338/34 189/345/34 190/346/34 +f 188/347/17 190/348/17 192/349/17 +f 199/350/34 196/351/34 195/352/34 +f 198/353/33 193/354/33 194/355/33 +f 200/356/18 194/357/18 196/358/18 +f 197/335/3 200/356/3 199/350/3 +f 201/359/2 204/360/2 202/361/2 +f 206/362/3 208/363/3 205/364/3 +f 201/365/15 205/366/15 203/367/15 +f 202/368/35 206/369/35 201/370/35 +f 204/371/16 207/372/16 202/361/16 +f 203/373/36 208/363/36 204/360/36 +f 221/374/15 219/375/15 217/376/15 +f 212/377/3 209/378/3 210/379/3 +f 209/378/16 215/380/16 213/381/16 +f 211/382/35 216/383/35 215/384/35 +f 210/379/36 213/385/36 214/386/36 +f 212/377/15 214/387/15 216/388/15 +f 223/389/36 220/390/36 219/391/36 +f 222/392/35 217/393/35 218/394/35 +f 224/395/16 218/396/16 220/397/16 +f 221/374/3 224/395/3 223/389/3 +f 227/398/2 226/399/2 225/400/2 +f 231/401/3 229/402/3 230/403/3 +f 225/404/14 229/405/14 227/406/14 +f 226/407/37 230/408/37 225/409/37 +f 228/410/13 231/411/13 226/399/13 +f 227/398/38 232/412/38 228/413/38 +f 245/414/14 243/415/14 241/416/14 +f 234/417/3 235/418/3 233/419/3 +f 233/419/13 239/420/13 237/421/13 +f 235/418/37 240/422/37 239/423/37 +f 234/417/38 237/424/38 238/425/38 +f 236/426/14 238/427/14 240/428/14 +f 247/429/38 244/430/38 243/431/38 +f 246/432/37 241/433/37 242/434/37 +f 248/435/13 242/436/13 244/437/13 +f 245/414/3 248/435/3 247/429/3 +f 249/438/2 252/439/2 250/440/2 +f 254/441/3 256/442/3 253/443/3 +f 249/444/12 253/445/12 251/446/12 +f 250/447/39 254/448/39 249/449/39 +f 252/450/11 255/451/11 250/440/11 +f 251/452/40 256/442/40 252/439/40 +f 269/453/12 267/454/12 265/455/12 +f 260/456/3 257/457/3 258/458/3 +f 257/457/11 263/459/11 261/460/11 +f 259/461/39 264/462/39 263/463/39 +f 258/458/40 261/464/40 262/465/40 +f 260/456/12 262/466/12 264/467/12 +f 271/468/40 268/469/40 267/470/40 +f 270/471/39 265/472/39 266/473/39 +f 272/474/11 266/475/11 268/476/11 +f 269/453/3 272/474/3 271/468/3 +f 273/477/2 276/478/2 274/479/2 +f 278/480/3 280/481/3 277/482/3 +f 273/483/8 277/484/8 275/485/8 +f 274/486/41 278/487/41 273/488/41 +f 276/489/9 279/490/9 274/479/9 +f 275/491/42 280/481/42 276/478/42 +f 293/492/43 291/493/43 289/494/43 +f 284/495/3 281/496/3 282/497/3 +f 281/496/9 287/498/9 285/499/9 +f 283/500/41 288/501/41 287/502/41 +f 282/497/42 285/503/42 286/504/42 +f 284/495/8 286/505/8 288/506/8 +f 295/507/42 292/508/42 291/509/42 +f 294/510/41 289/511/41 290/512/41 +f 296/513/9 290/514/9 292/515/9 +f 293/492/3 296/513/3 295/507/3 +f 3/1/1 4/516/1 2/2/1 +f 8/4/1 5/517/1 6/5/1 +f 11/7/2 12/22/2 10/8/2 +f 15/10/3 16/21/3 13/11/3 +f 9/13/4 14/518/4 13/14/4 +f 10/16/5 15/519/5 14/17/5 +f 12/19/6 16/520/6 15/20/6 +f 11/7/7 13/11/7 16/21/7 +f 39/23/8 40/521/8 44/24/8 +f 42/26/3 37/522/3 39/23/3 +f 36/27/2 35/59/2 47/28/2 +f 33/30/8 36/523/8 45/31/8 +f 38/33/9 37/522/9 42/26/9 +f 40/35/2 38/33/2 43/34/2 +f 35/37/10 36/524/10 33/38/10 +f 39/40/10 37/525/10 38/41/10 +f 44/43/2 43/46/2 54/44/2 +f 43/46/11 42/526/11 53/47/11 +f 46/48/12 45/527/12 52/49/12 +f 45/51/2 47/73/2 51/52/2 +f 53/47/3 42/526/3 41/54/3 +f 41/54/12 44/528/12 56/56/12 +f 34/57/3 33/30/3 46/32/3 +f 35/59/9 34/57/9 48/58/9 +f 54/60/13 53/529/13 58/61/13 +f 56/63/2 54/60/2 59/62/2 +f 64/65/3 50/530/3 49/66/3 +f 51/68/13 50/530/13 64/65/13 +f 55/70/14 56/531/14 60/71/14 +f 58/61/3 53/529/3 55/70/3 +f 47/73/11 48/532/11 50/74/11 +f 50/74/3 48/532/3 46/48/3 +f 29/75/4 31/90/4 27/76/4 +f 20/78/3 19/83/3 17/79/3 +f 17/79/6 19/83/6 23/81/6 +f 19/83/5 20/78/5 24/84/5 +f 18/80/7 17/79/7 21/86/7 +f 20/78/4 18/80/4 22/88/4 +f 31/90/7 32/96/7 28/91/7 +f 30/93/5 29/75/5 25/94/5 +f 32/96/6 30/93/6 26/97/6 +f 29/75/3 30/93/3 32/96/3 +f 69/99/3 58/533/3 57/100/3 +f 57/100/15 60/534/15 72/102/15 +f 63/103/16 64/535/16 66/104/16 +f 66/104/3 64/535/3 62/106/3 +f 60/108/2 59/111/2 70/109/2 +f 59/111/16 58/533/16 69/99/16 +f 52/112/2 51/68/2 63/69/2 +f 49/66/14 52/536/14 61/114/14 +f 71/115/17 72/537/17 76/116/17 +f 69/118/3 71/115/3 73/117/3 +f 68/120/2 67/147/2 79/121/2 +f 65/123/17 68/538/17 77/124/17 +f 70/126/18 69/118/18 74/119/18 +f 72/128/2 70/126/2 75/127/2 +f 62/106/15 61/539/15 68/130/15 +f 61/131/2 63/103/2 67/105/2 +f 75/133/19 74/540/19 85/134/19 +f 78/136/20 77/541/20 84/137/20 +f 84/139/2 77/542/2 79/140/2 +f 85/134/3 74/540/3 73/142/3 +f 73/142/20 76/543/20 88/144/20 +f 79/140/19 80/544/19 82/145/19 +f 80/146/3 66/545/3 65/123/3 +f 67/147/18 66/545/18 80/146/18 +f 86/148/21 85/546/21 90/149/21 +f 88/151/2 86/148/2 91/150/2 +f 82/153/3 81/179/3 94/154/3 +f 83/156/21 82/153/21 96/155/21 +f 87/158/22 88/547/22 92/159/22 +f 90/149/3 85/546/3 87/158/3 +f 82/145/3 80/544/3 78/136/3 +f 76/161/2 75/133/2 86/135/2 +f 89/163/23 92/548/23 104/164/23 +f 95/166/24 96/549/24 98/167/24 +f 98/167/3 96/549/3 94/169/3 +f 92/171/2 91/174/2 102/172/2 +f 91/174/24 90/550/24 101/175/24 +f 94/169/23 93/551/23 100/176/23 +f 84/177/2 83/156/2 95/157/2 +f 81/179/22 84/552/22 93/180/22 +f 102/181/6 101/194/6 4/182/6 +f 99/184/6 98/553/6 7/185/6 +f 104/187/2 102/181/2 3/183/2 +f 100/189/2 99/184/2 6/186/2 +f 97/191/4 100/554/4 5/192/4 +f 101/194/3 103/196/3 2/195/3 +f 103/196/4 104/555/4 1/197/4 +f 7/185/3 98/553/3 97/191/3 +f 93/198/2 95/166/2 99/168/2 +f 101/175/3 90/550/3 89/163/3 +f 107/200/2 108/215/2 106/201/2 +f 111/203/3 112/214/3 109/204/3 +f 105/206/23 110/556/23 109/207/23 +f 106/209/25 111/557/25 110/210/25 +f 108/212/24 112/558/24 111/213/24 +f 107/200/26 109/204/26 112/214/26 +f 125/216/23 127/231/23 123/217/23 +f 116/219/3 115/224/3 113/220/3 +f 113/220/24 115/224/24 119/222/24 +f 115/224/25 116/219/25 120/225/25 +f 114/221/26 113/220/26 117/227/26 +f 116/219/23 114/221/23 118/229/23 +f 127/231/26 128/237/26 124/232/26 +f 126/234/25 125/216/25 121/235/25 +f 128/237/24 126/234/24 122/238/24 +f 125/216/3 126/234/3 128/237/3 +f 131/240/2 132/255/2 130/241/2 +f 135/243/3 136/254/3 133/244/3 +f 129/246/22 134/559/22 133/247/22 +f 130/249/27 135/560/27 134/250/27 +f 132/252/21 136/561/21 135/253/21 +f 131/240/28 133/244/28 136/254/28 +f 149/256/22 151/271/22 147/257/22 +f 138/259/3 140/268/3 139/260/3 +f 137/261/21 139/260/21 143/262/21 +f 139/260/27 140/268/27 144/264/27 +f 138/259/28 137/261/28 141/266/28 +f 140/268/22 138/259/22 142/269/22 +f 151/271/28 152/277/28 148/272/28 +f 150/274/27 149/256/27 145/275/27 +f 152/277/21 150/274/21 146/278/21 +f 149/256/3 150/274/3 152/277/3 +f 155/280/2 156/294/2 154/281/2 +f 158/283/3 159/562/3 160/284/3 +f 153/286/20 158/563/20 157/287/20 +f 154/289/29 159/564/29 158/290/29 +f 156/292/19 160/565/19 159/293/19 +f 155/280/30 157/285/30 160/284/30 +f 173/295/31 175/310/31 171/296/31 +f 164/298/3 163/303/3 161/299/3 +f 161/299/32 163/303/32 167/301/32 +f 163/303/29 164/298/29 168/304/29 +f 162/300/30 161/299/30 165/306/30 +f 164/298/20 162/300/20 166/308/20 +f 175/310/30 176/316/30 172/311/30 +f 174/313/29 173/295/29 169/314/29 +f 176/316/19 174/313/19 170/317/19 +f 173/295/3 174/313/3 176/316/3 +f 179/319/2 180/334/2 178/320/2 +f 183/322/3 184/333/3 181/323/3 +f 177/325/17 182/566/17 181/326/17 +f 178/328/33 183/567/33 182/329/33 +f 180/331/18 184/568/18 183/332/18 +f 179/319/34 181/323/34 184/333/34 +f 197/335/17 199/350/17 195/336/17 +f 186/338/3 188/347/3 187/339/3 +f 185/340/18 187/339/18 191/341/18 +f 187/339/33 188/347/33 192/343/33 +f 186/338/34 185/340/34 189/345/34 +f 188/347/17 186/338/17 190/348/17 +f 199/350/34 200/356/34 196/351/34 +f 198/353/33 197/335/33 193/354/33 +f 200/356/18 198/353/18 194/357/18 +f 197/335/3 198/353/3 200/356/3 +f 201/359/2 203/373/2 204/360/2 +f 206/362/3 207/569/3 208/363/3 +f 201/365/15 206/570/15 205/366/15 +f 202/368/35 207/571/35 206/369/35 +f 204/371/16 208/572/16 207/372/16 +f 203/373/36 205/364/36 208/363/36 +f 221/374/15 223/389/15 219/375/15 +f 212/377/3 211/382/3 209/378/3 +f 209/378/16 211/382/16 215/380/16 +f 211/382/35 212/377/35 216/383/35 +f 210/379/36 209/378/36 213/385/36 +f 212/377/15 210/379/15 214/387/15 +f 223/389/36 224/395/36 220/390/36 +f 222/392/35 221/374/35 217/393/35 +f 224/395/16 222/392/16 218/396/16 +f 221/374/3 222/392/3 224/395/3 +f 227/398/2 228/413/2 226/399/2 +f 231/401/3 232/412/3 229/402/3 +f 225/404/14 230/573/14 229/405/14 +f 226/407/37 231/574/37 230/408/37 +f 228/410/13 232/575/13 231/411/13 +f 227/398/38 229/402/38 232/412/38 +f 245/414/14 247/429/14 243/415/14 +f 234/417/3 236/426/3 235/418/3 +f 233/419/13 235/418/13 239/420/13 +f 235/418/37 236/426/37 240/422/37 +f 234/417/38 233/419/38 237/424/38 +f 236/426/14 234/417/14 238/427/14 +f 247/429/38 248/435/38 244/430/38 +f 246/432/37 245/414/37 241/433/37 +f 248/435/13 246/432/13 242/436/13 +f 245/414/3 246/432/3 248/435/3 +f 249/438/2 251/452/2 252/439/2 +f 254/441/3 255/576/3 256/442/3 +f 249/444/12 254/577/12 253/445/12 +f 250/447/39 255/578/39 254/448/39 +f 252/450/11 256/579/11 255/451/11 +f 251/452/40 253/443/40 256/442/40 +f 269/453/12 271/468/12 267/454/12 +f 260/456/3 259/461/3 257/457/3 +f 257/457/11 259/461/11 263/459/11 +f 259/461/39 260/456/39 264/462/39 +f 258/458/40 257/457/40 261/464/40 +f 260/456/12 258/458/12 262/466/12 +f 271/468/40 272/474/40 268/469/40 +f 270/471/39 269/453/39 265/472/39 +f 272/474/11 270/471/11 266/475/11 +f 269/453/3 270/471/3 272/474/3 +f 273/477/2 275/491/2 276/478/2 +f 278/480/3 279/580/3 280/481/3 +f 273/483/8 278/581/8 277/484/8 +f 274/486/41 279/582/41 278/487/41 +f 276/489/9 280/583/9 279/490/9 +f 275/491/42 277/482/42 280/481/42 +f 293/492/8 295/507/8 291/493/8 +f 284/495/3 283/500/3 281/496/3 +f 281/496/9 283/500/9 287/498/9 +f 283/500/41 284/495/41 288/501/41 +f 282/497/42 281/496/42 285/503/42 +f 284/495/8 282/497/8 286/505/8 +f 295/507/42 296/513/42 292/508/42 +f 294/510/41 293/492/41 289/511/41 +f 296/513/9 294/510/9 290/514/9 +f 293/492/3 294/510/3 296/513/3 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_short.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_short.obj new file mode 100644 index 000000000..4fb15ebb7 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_short.obj @@ -0,0 +1,185 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_straight_short.blend' +# www.blender.org +o Plane.001 +v -1.000000 0.000000 0.187500 +v 1.000000 0.000000 0.187500 +v -1.000000 0.000000 -0.187500 +v 1.000000 0.000000 -0.187500 +v -1.000000 0.062500 -0.187500 +v -1.000000 0.062500 0.187500 +v 1.000000 0.062500 0.187500 +v 1.000000 0.062500 -0.187500 +v -0.812500 0.062500 0.500000 +v 0.812500 0.062500 0.500000 +v -0.812500 0.187500 0.500000 +v 0.812500 0.187500 0.500000 +v 0.750000 0.062500 0.500000 +v 0.750000 0.187500 0.500000 +v -0.750000 0.062500 0.500000 +v -0.750000 0.187500 0.500000 +v 0.625000 0.062500 0.062500 +v 0.937500 0.062500 0.062500 +v 0.625000 0.062500 -0.062500 +v 0.937500 0.062500 -0.062500 +v 0.625000 0.125000 0.062500 +v 0.937500 0.125000 0.062500 +v 0.625000 0.125000 -0.062500 +v 0.937500 0.125000 -0.062500 +v -0.937500 0.062500 0.062500 +v -0.625000 0.062500 0.062500 +v -0.937500 0.062500 -0.062500 +v -0.625000 0.062500 -0.062500 +v -0.937500 0.125000 0.062500 +v -0.625000 0.125000 0.062500 +v -0.937500 0.125000 -0.062500 +v -0.625000 0.125000 -0.062500 +v -0.812500 0.062500 -0.500000 +v 0.812500 0.062500 -0.500000 +v -0.812500 0.187500 -0.500000 +v 0.812500 0.187500 -0.500000 +v 0.750000 0.062500 -0.500000 +v 0.750000 0.187500 -0.500000 +v -0.750000 0.062500 -0.500000 +v -0.750000 0.187500 -0.500000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 1/7/3 5/8/3 3/9/3 +f 2/10/4 6/11/4 1/12/4 +f 4/13/5 7/14/5 2/2/5 +f 3/1/6 8/15/6 4/16/6 +f 36/17/5 10/18/5 34/19/5 +f 13/20/3 38/21/3 37/22/3 +f 12/23/4 13/24/4 10/25/4 +f 10/18/1 37/26/1 34/19/1 +f 11/27/2 40/28/2 35/29/2 +f 9/30/4 16/31/4 11/32/4 +f 21/33/3 19/34/3 17/35/3 +f 23/36/6 20/37/6 19/38/6 +f 22/39/4 17/40/4 18/41/4 +f 24/42/5 18/43/5 20/44/5 +f 21/33/2 24/42/2 23/36/2 +f 29/45/3 27/46/3 25/47/3 +f 31/48/6 28/49/6 27/50/6 +f 30/51/4 25/52/4 26/53/4 +f 32/54/5 26/55/5 28/56/5 +f 29/45/2 32/54/2 31/48/2 +f 33/57/1 15/58/1 9/59/1 +f 39/60/5 16/61/5 15/58/5 +f 36/17/2 14/62/2 12/63/2 +f 11/27/3 33/64/3 9/65/3 +f 33/66/6 40/67/6 39/68/6 +f 38/69/6 34/70/6 37/71/6 +f 3/1/1 4/16/1 2/2/1 +f 7/4/2 8/15/2 5/5/2 +f 1/7/3 6/72/3 5/8/3 +f 2/10/4 7/73/4 6/11/4 +f 4/13/5 8/74/5 7/14/5 +f 3/1/6 5/5/6 8/15/6 +f 36/17/5 12/63/5 10/18/5 +f 13/20/3 14/62/3 38/21/3 +f 12/23/4 14/75/4 13/24/4 +f 10/18/1 13/76/1 37/26/1 +f 11/27/2 16/61/2 40/28/2 +f 9/30/4 15/77/4 16/31/4 +f 21/33/3 23/36/3 19/34/3 +f 23/36/6 24/42/6 20/37/6 +f 22/39/4 21/33/4 17/40/4 +f 24/42/5 22/39/5 18/43/5 +f 21/33/2 22/39/2 24/42/2 +f 29/45/3 31/48/3 27/46/3 +f 31/48/6 32/54/6 28/49/6 +f 30/51/4 29/45/4 25/52/4 +f 32/54/5 30/51/5 26/55/5 +f 29/45/2 30/51/2 32/54/2 +f 33/57/1 39/60/1 15/58/1 +f 39/60/5 40/28/5 16/61/5 +f 36/17/2 38/21/2 14/62/2 +f 11/27/3 35/29/3 33/64/3 +f 33/66/6 35/78/6 40/67/6 +f 38/69/6 36/79/6 34/70/6 diff --git a/src/main/resources/assets/hbm/models/bombs/gadget.obj b/src/main/resources/assets/hbm/models/bombs/gadget.obj new file mode 100644 index 000000000..e2e007e50 --- /dev/null +++ b/src/main/resources/assets/hbm/models/bombs/gadget.obj @@ -0,0 +1,10019 @@ +# Blender v2.79 (sub 0) OBJ File: 'gadget.blend' +# www.blender.org +o Wires +v -1.174005 1.942922 -0.549430 +v -1.183310 1.913090 -0.549430 +v -1.182231 1.912753 -0.518200 +v -1.172926 1.942586 -0.518200 +v -1.196076 1.821231 -0.548875 +v -1.202886 1.790732 -0.548875 +v -1.202886 1.790732 -0.517625 +v -1.196076 1.821231 -0.517625 +v -1.238634 1.797799 -0.528074 +v -1.233117 1.828558 -0.528074 +v -1.206878 1.823852 -0.511767 +v -1.212395 1.793093 -0.511767 +v -1.217782 1.698130 -0.548875 +v -1.224592 1.667631 -0.548875 +v -1.224592 1.667631 -0.517625 +v -1.217782 1.698130 -0.517625 +v -1.259217 1.671675 -0.533248 +v -1.257805 1.702893 -0.533248 +v -1.235729 1.701894 -0.511153 +v -1.237141 1.670676 -0.511153 +v -1.239488 1.575029 -0.548875 +v -1.246298 1.544530 -0.548875 +v -1.246298 1.544530 -0.517625 +v -1.239488 1.575029 -0.517625 +v -1.279112 1.546412 -0.529872 +v -1.280785 1.577617 -0.529872 +v -1.255606 1.578968 -0.511412 +v -1.253933 1.547762 -0.511412 +v -1.216391 1.945193 -0.663251 +v -1.188182 1.958640 -0.663251 +v -1.181072 1.943725 -0.636726 +v -1.209281 1.930278 -0.636726 +v -1.241104 1.815372 -0.659276 +v -1.217851 1.836249 -0.659276 +v -1.203790 1.820588 -0.636177 +v -1.227042 1.799710 -0.636177 +v -1.239636 1.660727 -0.666553 +v -1.261933 1.682622 -0.666553 +v -1.253403 1.691308 -0.637772 +v -1.231106 1.669413 -0.637772 +v -1.239488 1.575029 -0.673875 +v -1.246298 1.544530 -0.673875 +v -1.246298 1.544530 -0.642625 +v -1.239488 1.575029 -0.642625 +v -1.256174 1.540192 -0.672388 +v -1.280892 1.559312 -0.672388 +v -1.279152 1.561561 -0.641268 +v -1.254434 1.542440 -0.641268 +v -1.174370 1.944332 -0.798875 +v -1.181180 1.913833 -0.798875 +v -1.181180 1.913833 -0.767625 +v -1.174370 1.944332 -0.767625 +v -1.215594 1.947240 -0.785575 +v -1.186501 1.958649 -0.785575 +v -1.179327 1.940356 -0.761275 +v -1.208420 1.928947 -0.761275 +v -1.196076 1.821231 -0.798875 +v -1.202886 1.790732 -0.798875 +v -1.202886 1.790732 -0.767625 +v -1.196076 1.821231 -0.767625 +v -1.240732 1.814322 -0.788906 +v -1.217902 1.835661 -0.788906 +v -1.207178 1.824188 -0.761889 +v -1.230008 1.802849 -0.761889 +v -1.242324 1.660806 -0.790220 +v -1.262535 1.684641 -0.790220 +v -1.251858 1.693694 -0.762281 +v -1.231647 1.669860 -0.762281 +v -1.239488 1.575029 -0.798875 +v -1.246298 1.544530 -0.798875 +v -1.246298 1.544530 -0.767625 +v -1.239488 1.575029 -0.767625 +v -1.252976 1.544934 -0.802555 +v -1.277033 1.564880 -0.802555 +v -1.282493 1.558295 -0.772498 +v -1.258435 1.538350 -0.772498 +v -1.174370 1.944332 -0.923875 +v -1.181180 1.913833 -0.923875 +v -1.181180 1.913833 -0.892625 +v -1.174370 1.944332 -0.892625 +v -1.212353 1.945965 -0.921560 +v -1.181977 1.953300 -0.921560 +v -1.180960 1.949093 -0.890611 +v -1.211337 1.941757 -0.890611 +v -1.196076 1.821231 -0.923875 +v -1.202886 1.790732 -0.923875 +v -1.202886 1.790732 -0.892625 +v -1.196076 1.821231 -0.892625 +v -1.239209 1.806511 -0.919429 +v -1.222351 1.832825 -0.919429 +v -1.215715 1.828573 -0.889189 +v -1.232572 1.802260 -0.889189 +v -1.217782 1.698130 -0.923875 +v -1.224592 1.667631 -0.923875 +v -1.224592 1.667631 -0.892625 +v -1.217782 1.698130 -0.892625 +v -1.228890 1.670839 -0.929152 +v -1.253067 1.690639 -0.929152 +v -1.261768 1.680014 -0.901081 +v -1.237591 1.660214 -0.901081 +v -1.239488 1.575029 -0.923875 +v -1.246298 1.544530 -0.923875 +v -1.246298 1.544530 -0.892625 +v -1.239488 1.575029 -0.892625 +v -1.259141 1.538664 -0.919660 +v -1.282409 1.559525 -0.919660 +v -1.277393 1.565119 -0.889326 +v -1.254125 1.544258 -0.889326 +v -1.174370 1.944332 -1.048875 +v -1.181180 1.913833 -1.048875 +v -1.181180 1.913833 -1.017625 +v -1.174370 1.944332 -1.017625 +v -1.209377 1.949713 -1.046222 +v -1.178154 1.951008 -1.046222 +v -1.177951 1.946095 -1.015361 +v -1.209174 1.944801 -1.015361 +v -1.196076 1.821231 -1.048875 +v -1.202886 1.790732 -1.048875 +v -1.202886 1.790732 -1.017625 +v -1.196076 1.821231 -1.017625 +v -1.217782 1.698130 -1.048875 +v -1.224592 1.667631 -1.048875 +v -1.224592 1.667631 -1.017625 +v -1.217782 1.698130 -1.017625 +v -1.239488 1.575029 -1.048875 +v -1.246298 1.544530 -1.048875 +v -1.246298 1.544530 -1.017625 +v -1.239488 1.575029 -1.017625 +v -1.174370 1.944332 -1.173875 +v -1.181180 1.913833 -1.173875 +v -1.181180 1.913833 -1.142625 +v -1.174370 1.944332 -1.142625 +v -1.196076 1.821231 -1.173875 +v -1.202886 1.790732 -1.173875 +v -1.202886 1.790732 -1.142625 +v -1.196076 1.821231 -1.142625 +v -1.224011 1.796775 -1.180323 +v -1.203896 1.820690 -1.180323 +v -1.221566 1.835552 -1.159265 +v -1.241681 1.811637 -1.159265 +v -1.217782 1.698130 -1.173875 +v -1.224592 1.667631 -1.173875 +v -1.224592 1.667631 -1.142625 +v -1.217782 1.698130 -1.142625 +v -1.239488 1.575029 -1.173875 +v -1.246298 1.544530 -1.173875 +v -1.246298 1.544530 -1.142625 +v -1.239488 1.575029 -1.142625 +v -1.256882 1.542336 -1.175459 +v -1.278993 1.564419 -1.175459 +v -1.281359 1.562049 -1.144389 +v -1.259249 1.539966 -1.144389 +v 0.362842 2.375147 0.326274 +v 0.386903 2.373444 0.306407 +v 0.370036 2.388315 0.284706 +v 0.345975 2.390018 0.304574 +v 0.384077 2.432766 0.344619 +v 0.405915 2.423475 0.324288 +v 0.384420 2.422550 0.301623 +v 0.362582 2.431840 0.321954 +v -0.918945 1.110495 -0.342736 +v -0.931564 1.094373 -0.319127 +v -0.936371 1.121008 -0.303506 +v -0.923751 1.137131 -0.327115 +v -0.379805 2.444080 -0.309020 +v -0.367132 2.433805 -0.335673 +v -0.388692 2.411236 -0.337222 +v -0.401364 2.421511 -0.310569 +v 0.402196 2.434005 -0.311901 +v 0.396841 2.423141 -0.340708 +v 0.366301 2.421311 -0.334341 +v 0.371656 2.432175 -0.305534 +v -0.378623 0.564951 0.303071 +v -0.371040 0.557246 0.332392 +v -0.389874 0.579733 0.343171 +v -0.397457 0.587438 0.313851 +v 0.393651 0.572855 0.303131 +v 0.404220 0.573220 0.332537 +v 0.374846 0.571829 0.343111 +v 0.364277 0.571465 0.313705 +v 0.390783 0.579489 -0.342983 +v 0.405056 0.566658 -0.318321 +v 0.377714 0.565195 -0.303259 +v 0.363441 0.578026 -0.327921 +v 0.701539 1.282990 0.756744 +v 0.694797 1.253772 0.747945 +v 0.701307 1.261198 0.718296 +v 0.708049 1.290416 0.727095 +v -0.378277 2.436777 0.342343 +v -0.368708 2.439423 0.312712 +v -0.390220 2.418539 0.303900 +v -0.399789 2.415894 0.333531 +v 0.440212 2.090464 0.757640 +v 0.454304 2.095352 0.730180 +v 0.426795 2.102869 0.717400 +v 0.412703 2.097980 0.744860 +v 0.712255 1.254904 -0.728834 +v 0.684271 1.258951 -0.742139 +v 0.690591 1.289284 -0.746206 +v 0.718576 1.285237 -0.732900 +v 0.019550 0.757477 0.728517 +v 0.010032 0.767352 0.756596 +v -0.019550 0.767483 0.746523 +v -0.010032 0.757608 0.718444 +v 0.011101 0.775618 -0.751392 +v 0.014829 0.746439 -0.740846 +v -0.011101 0.749342 -0.723648 +v -0.014829 0.778521 -0.734194 +v -0.692788 1.289504 -0.748037 +v -0.694407 1.258821 -0.753733 +v -0.710059 1.254684 -0.727003 +v -0.708439 1.285368 -0.721307 +v -0.933840 1.870228 0.339042 +v -0.923487 1.899704 0.338352 +v -0.921475 1.898269 0.307200 +v -0.931829 1.868792 0.307890 +v 0.451844 2.105888 -0.729343 +v 0.445829 2.082972 -0.749720 +v 0.415163 2.087443 -0.745697 +v 0.421178 2.110360 -0.725320 +v -0.423559 2.116383 -0.738324 +v -0.421411 2.089866 -0.754719 +v -0.443448 2.076950 -0.736716 +v -0.445596 2.103467 -0.720321 +v -0.377169 0.573822 -0.344001 +v -0.369308 0.556547 -0.319174 +v -0.391328 0.570862 -0.302241 +v -0.399189 0.588137 -0.327067 +v 0.935823 1.863839 -0.325374 +v 0.912476 1.879881 -0.338572 +v 0.919493 1.904657 -0.320868 +v 0.942839 1.888617 -0.307670 +v 0.922768 1.100037 0.337866 +v 0.918963 1.103356 0.307026 +v 0.932547 1.131467 0.308377 +v 0.936352 1.128147 0.339216 +v -0.925593 1.094452 0.328629 +v -0.931403 1.120862 0.344290 +v -0.929723 1.137052 0.317614 +v -0.923912 1.110641 0.301952 +v 0.943630 1.125342 -0.311239 +v 0.933693 1.095992 -0.315285 +v 0.911686 1.106161 -0.335003 +v 0.921622 1.135511 -0.330957 +v -0.425439 2.093643 0.757870 +v -0.422154 2.115550 0.735828 +v -0.441567 2.099689 0.717170 +v -0.444853 2.077783 0.739212 +v 0.942297 1.870918 0.332933 +v 0.937698 1.880986 0.303709 +v 0.913019 1.897579 0.313309 +v 0.917617 1.887511 0.342533 +v -1.156318 1.937406 -0.550100 +v -1.165622 1.907573 -0.550100 +v -1.164544 1.907237 -0.518870 +v -1.155239 1.937070 -0.518870 +v -1.178721 1.817356 -0.548875 +v -1.185531 1.786857 -0.548875 +v -1.185531 1.786857 -0.517625 +v -1.178721 1.817356 -0.517625 +v -1.200428 1.694255 -0.548875 +v -1.207237 1.663756 -0.548875 +v -1.207237 1.663756 -0.517625 +v -1.200428 1.694255 -0.517625 +v -1.222133 1.571154 -0.548875 +v -1.228943 1.540655 -0.548875 +v -1.228943 1.540655 -0.517625 +v -1.222133 1.571154 -0.517625 +v -1.157016 1.940457 -0.673875 +v -1.163825 1.909958 -0.673875 +v -1.163825 1.909958 -0.642625 +v -1.157016 1.940457 -0.642625 +v -1.178721 1.817356 -0.673875 +v -1.185531 1.786857 -0.673875 +v -1.185531 1.786857 -0.642625 +v -1.178721 1.817356 -0.642625 +v -1.200428 1.694255 -0.673875 +v -1.207237 1.663756 -0.673875 +v -1.207237 1.663756 -0.642625 +v -1.200428 1.694255 -0.642625 +v -1.222133 1.571154 -0.673875 +v -1.228943 1.540655 -0.673875 +v -1.228943 1.540655 -0.642625 +v -1.222133 1.571154 -0.642625 +v -1.157016 1.940457 -0.798875 +v -1.163825 1.909958 -0.798875 +v -1.163825 1.909958 -0.767625 +v -1.157016 1.940457 -0.767625 +v -1.178721 1.817356 -0.798875 +v -1.185531 1.786857 -0.798875 +v -1.185531 1.786857 -0.767625 +v -1.178721 1.817356 -0.767625 +v -1.200428 1.694255 -0.798875 +v -1.207237 1.663756 -0.798875 +v -1.207237 1.663756 -0.767625 +v -1.200428 1.694255 -0.767625 +v -1.222133 1.571154 -0.798875 +v -1.228943 1.540655 -0.798875 +v -1.228943 1.540655 -0.767625 +v -1.222133 1.571154 -0.767625 +v -1.157016 1.940457 -0.923875 +v -1.163825 1.909958 -0.923875 +v -1.163825 1.909958 -0.892625 +v -1.157016 1.940457 -0.892625 +v -1.178721 1.817356 -0.923875 +v -1.185531 1.786857 -0.923875 +v -1.185531 1.786857 -0.892625 +v -1.178721 1.817356 -0.892625 +v -1.200428 1.694255 -0.923875 +v -1.207237 1.663756 -0.923875 +v -1.207237 1.663756 -0.892625 +v -1.200428 1.694255 -0.892625 +v -1.222133 1.571154 -0.923875 +v -1.228943 1.540655 -0.923875 +v -1.228943 1.540655 -0.892625 +v -1.222133 1.571154 -0.892625 +v -1.157016 1.940457 -1.048875 +v -1.163825 1.909958 -1.048875 +v -1.163825 1.909958 -1.017625 +v -1.157016 1.940457 -1.017625 +v -1.178721 1.817356 -1.048875 +v -1.185531 1.786857 -1.048875 +v -1.185531 1.786857 -1.017625 +v -1.178721 1.817356 -1.017625 +v -1.200428 1.694255 -1.048875 +v -1.207237 1.663756 -1.048875 +v -1.207237 1.663756 -1.017625 +v -1.200428 1.694255 -1.017625 +v -1.222133 1.571154 -1.048875 +v -1.228943 1.540655 -1.048875 +v -1.228943 1.540655 -1.017625 +v -1.222133 1.571154 -1.017625 +v -1.157016 1.940457 -1.173875 +v -1.163825 1.909958 -1.173875 +v -1.163825 1.909958 -1.142625 +v -1.157016 1.940457 -1.142625 +v -1.178721 1.817356 -1.173875 +v -1.185531 1.786857 -1.173875 +v -1.185531 1.786857 -1.142625 +v -1.178721 1.817356 -1.142625 +v -1.200428 1.694255 -1.173875 +v -1.207237 1.663756 -1.173875 +v -1.207237 1.663756 -1.142625 +v -1.200428 1.694255 -1.142625 +v -1.222133 1.571154 -1.173875 +v -1.228943 1.540655 -1.173875 +v -1.228943 1.540655 -1.142625 +v -1.222133 1.571154 -1.142625 +v 0.017136 0.743499 0.724780 +v 0.004522 0.734500 0.751918 +v -0.022795 0.747049 0.743382 +v -0.010181 0.756049 0.716244 +v -0.932735 1.892860 -0.303414 +v -0.921417 1.904215 -0.330238 +v -0.922581 1.875637 -0.342828 +v -0.933899 1.864282 -0.316004 +v -0.871601 1.130094 -0.328227 +v -0.874083 1.115559 -0.300674 +v -0.888143 1.140746 -0.288653 +v -0.885661 1.155281 -0.316206 +v -0.354684 2.391416 -0.290709 +v -0.345393 2.386196 -0.320086 +v -0.372583 2.372046 -0.326171 +v -0.381874 2.377266 -0.296794 +v 0.383366 2.379659 -0.294388 +v 0.378403 2.372027 -0.324283 +v 0.349512 2.383803 -0.322492 +v 0.354475 2.391435 -0.292597 +v -0.359405 0.609935 0.285871 +v -0.343644 0.613086 0.312670 +v -0.367861 0.628427 0.325109 +v -0.383623 0.625276 0.298310 +v 0.376633 0.615788 0.286180 +v 0.384590 0.629038 0.313341 +v 0.356245 0.622573 0.324799 +v 0.348287 0.609324 0.297639 +v 0.372838 0.627684 -0.327806 +v 0.386201 0.623987 -0.299800 +v 0.360040 0.610678 -0.289074 +v 0.346677 0.614375 -0.317080 +v 0.657378 1.298058 0.712639 +v 0.654377 1.267693 0.705891 +v 0.678131 1.269832 0.685699 +v 0.681132 1.300197 0.692447 +v -0.350919 2.380516 0.323522 +v -0.347705 2.392903 0.295013 +v -0.376347 2.382946 0.287458 +v -0.379561 2.370559 0.315968 +v 0.415770 2.049235 0.711656 +v 0.433448 2.064315 0.690760 +v 0.410693 2.085341 0.686682 +v 0.393014 2.070262 0.707578 +v 0.675740 1.267926 -0.689162 +v 0.653419 1.269644 -0.710965 +v 0.659769 1.299965 -0.715076 +v 0.682090 1.298246 -0.693273 +v 0.020709 0.791764 0.692041 +v 0.012137 0.813454 0.712841 +v -0.017903 0.807859 0.706297 +v -0.009332 0.786169 0.685497 +v 0.012411 0.812776 -0.716227 +v 0.020553 0.791856 -0.694488 +v -0.009605 0.786847 -0.688011 +v -0.017748 0.807768 -0.709750 +v -0.658659 1.301218 -0.714382 +v -0.650449 1.271109 -0.712762 +v -0.671239 1.266673 -0.689856 +v -0.679449 1.296781 -0.691476 +v -0.880574 1.849442 0.320662 +v -0.869416 1.878621 0.319862 +v -0.879170 1.881541 0.290318 +v -0.890328 1.852362 0.291118 +v 0.430095 2.071926 -0.688614 +v 0.424389 2.049967 -0.710104 +v 0.396367 2.062652 -0.715624 +v 0.402074 2.084610 -0.694134 +v -0.396101 2.083585 -0.697934 +v -0.396827 2.059312 -0.717603 +v -0.424750 2.050992 -0.706304 +v -0.424023 2.075265 -0.686635 +v -0.355627 0.622050 -0.328835 +v -0.344899 0.609076 -0.302507 +v -0.371639 0.616312 -0.288045 +v -0.382368 0.629286 -0.314372 +v 0.890566 1.844954 -0.310510 +v 0.875991 1.865047 -0.329496 +v 0.874790 1.886029 -0.306370 +v 0.889365 1.865937 -0.287384 +v 0.871530 1.122561 0.319584 +v 0.881710 1.119498 0.290198 +v 0.893825 1.148279 0.291396 +v 0.883646 1.151341 0.320782 +v -0.870180 1.116141 0.310253 +v -0.875363 1.142718 0.325854 +v -0.889564 1.154698 0.300727 +v -0.884381 1.128121 0.285126 +v 0.892881 1.146892 -0.292548 +v 0.879864 1.118546 -0.294453 +v 0.872474 1.123948 -0.324332 +v 0.885491 1.152294 -0.322427 +v -0.396307 2.059003 0.714012 +v -0.396346 2.083800 0.694994 +v -0.424543 2.075575 0.684326 +v -0.424505 2.050777 0.703344 +v 0.888492 1.845253 0.312187 +v 0.891987 1.861657 0.285820 +v 0.876863 1.885731 0.298793 +v 0.873368 1.869327 0.325160 +v -0.882969 1.873529 -0.288091 +v -0.870514 1.884555 -0.314546 +v -0.876775 1.857454 -0.328789 +v -0.889231 1.846428 -0.302334 +v -0.699444 1.251063 0.744007 +v -0.694129 1.278865 0.757249 +v -0.703402 1.293125 0.731034 +v -0.708717 1.265323 0.717791 +v -0.658734 1.263845 0.700877 +v -0.653428 1.291646 0.714126 +v -0.676775 1.304045 0.697461 +v -0.682081 1.276244 0.684212 +v -1.250682 1.800300 -0.504844 +v -1.244312 1.830791 -0.507355 +v -1.213916 1.824775 -0.503297 +v -1.220286 1.794284 -0.500787 +v -0.982266 1.884840 0.312786 +v -0.974819 1.915070 0.310093 +v -0.951790 1.907635 0.290320 +v -0.959237 1.877405 0.293013 +v -1.167644 1.905013 -0.411622 +v -1.147809 1.916676 -0.432767 +v -1.136946 1.887927 -0.438433 +v -1.156782 1.876265 -0.417288 +v -1.257349 1.835502 -0.632977 +v -1.231683 1.852062 -0.639583 +v -1.214005 1.829928 -0.626387 +v -1.239671 1.813368 -0.619780 +v -1.269599 1.671725 -0.522009 +v -1.273585 1.701356 -0.512916 +v -1.243640 1.702671 -0.504076 +v -1.239654 1.673040 -0.513170 +v -0.968102 1.101122 0.300168 +v -0.972912 1.126964 0.317068 +v -0.948098 1.140378 0.303620 +v -0.943288 1.114537 0.286720 +v -1.267418 1.634185 -0.650618 +v -1.296099 1.645030 -0.644588 +v -1.286089 1.656278 -0.617205 +v -1.257408 1.645433 -0.623235 +v -1.219398 1.450479 -0.568415 +v -1.246450 1.444145 -0.554110 +v -1.237709 1.461724 -0.529796 +v -1.210657 1.468058 -0.544101 +v -1.225639 1.945001 -0.500581 +v -1.202324 1.964765 -0.507089 +v -1.181590 1.941875 -0.502320 +v -1.204905 1.922112 -0.495812 +v -0.739907 2.136739 0.580774 +v -0.720859 2.154554 0.563559 +v -0.706554 2.128916 0.552854 +v -0.725602 2.111100 0.570069 +v -0.475138 2.112171 0.756943 +v -0.463366 2.130661 0.734670 +v -0.462442 2.106389 0.715009 +v -0.474215 2.087899 0.737281 +v -1.291063 1.545456 -0.511536 +v -1.294220 1.576348 -0.508029 +v -1.263562 1.578856 -0.502518 +v -1.260405 1.547964 -0.506026 +v -0.948442 1.317475 0.575246 +v -0.950512 1.347329 0.584250 +v -0.924351 1.353901 0.568470 +v -0.922282 1.324048 0.559466 +v -0.756633 1.265295 0.736868 +v -0.754544 1.293962 0.749129 +v -0.740023 1.303943 0.723320 +v -0.742113 1.275275 0.711059 +v -1.225876 1.970677 -0.643945 +v -1.196034 1.974689 -0.652306 +v -1.187520 1.951665 -0.632966 +v -1.217363 1.947655 -0.624605 +v -0.708222 2.312728 0.031637 +v -0.684215 2.309114 0.011961 +v -0.679826 2.280078 0.022649 +v -0.703834 2.283692 0.042325 +v -0.411357 2.455568 0.318103 +v -0.391060 2.450723 0.294841 +v -0.394931 2.419864 0.297890 +v -0.415228 2.424709 0.321152 +v -1.228111 1.987383 -0.749764 +v -1.198901 1.987463 -0.760869 +v -1.191670 1.963609 -0.742021 +v -1.220880 1.963529 -0.730916 +v -0.277296 2.456410 -0.010313 +v -0.260202 2.446807 -0.034647 +v -0.260223 2.417734 -0.023188 +v -0.277317 2.427338 0.001146 +v 0.382950 2.477947 0.302954 +v 0.401710 2.466248 0.280868 +v 0.384206 2.440387 0.279700 +v 0.365446 2.452085 0.301786 +v -1.273125 1.853628 -0.757993 +v -1.244658 1.862154 -0.767662 +v -1.231839 1.845921 -0.744237 +v -1.260306 1.837394 -0.734568 +v -1.160286 2.014342 -0.651530 +v -1.136128 2.009203 -0.670676 +v -1.128525 1.983731 -0.654246 +v -1.152682 1.988870 -0.635100 +v 0.080443 2.494827 0.551902 +v 0.096290 2.488848 0.525641 +v 0.084872 2.459760 0.525373 +v 0.069024 2.465739 0.551635 +v 0.430137 2.160579 0.735670 +v 0.443491 2.155233 0.707927 +v 0.418740 2.138223 0.699291 +v 0.405385 2.143569 0.727033 +v -0.689883 2.292951 -0.139719 +v -0.666622 2.287297 -0.159807 +v -0.663706 2.258391 -0.148296 +v -0.686967 2.264045 -0.128207 +v -0.300987 2.458956 0.229682 +v -0.279693 2.452532 0.207731 +v -0.279809 2.422510 0.216403 +v -0.301103 2.428934 0.238355 +v -1.277962 1.837572 -0.904344 +v -1.249453 1.847567 -0.912339 +v -1.238062 1.836657 -0.885362 +v -1.266571 1.826662 -0.877367 +v -1.141885 2.033298 -0.805968 +v -1.119419 2.022224 -0.824656 +v -1.112888 2.000027 -0.803651 +v -1.135353 2.011101 -0.784963 +v -0.418521 2.457716 -0.345257 +v -0.399861 2.444430 -0.366514 +v -0.405683 2.416358 -0.354078 +v -0.424342 2.429645 -0.332821 +v -1.270686 1.522317 -0.670676 +v -1.301203 1.527655 -0.666583 +v -1.295299 1.539801 -0.638402 +v -1.264781 1.534463 -0.642495 +v -0.780971 0.763280 -0.028970 +v -0.806318 0.752764 -0.014020 +v -0.804512 0.776759 0.005919 +v -0.779165 0.787275 -0.009031 +v -0.406400 0.557614 0.294573 +v -0.420413 0.542511 0.318069 +v -0.425938 0.569777 0.332302 +v -0.411926 0.584881 0.308805 +v -0.344519 2.443688 -0.494384 +v -0.331553 2.418868 -0.508254 +v -0.339349 2.401105 -0.483754 +v -0.352316 2.425925 -0.469884 +v 0.733007 2.298563 0.154754 +v 0.732383 2.276609 0.132523 +v 0.709714 2.261625 0.147956 +v 0.710338 2.283579 0.170187 +v 0.954970 1.941841 0.330687 +v 0.946309 1.933336 0.301891 +v 0.916809 1.930163 0.311700 +v 0.925469 1.938668 0.340496 +v -1.218629 1.988256 -0.914058 +v -1.189564 1.977734 -0.918651 +v -1.189073 1.966384 -0.889539 +v -1.218138 1.976906 -0.884946 +v 0.177467 2.442102 -0.227170 +v 0.184429 2.416794 -0.244128 +v 0.169763 2.398763 -0.223239 +v 0.162800 2.424071 -0.206282 +v -1.262764 1.537974 -0.805700 +v -1.293445 1.540689 -0.810977 +v -1.299228 1.533265 -0.781178 +v -1.268546 1.530550 -0.775901 +v -1.209338 1.460512 -0.817654 +v -1.227308 1.436931 -0.827533 +v -1.233191 1.428994 -0.797885 +v -1.215221 1.452575 -0.788007 +v -0.408007 0.558527 -0.352639 +v -0.414998 0.536402 -0.331706 +v -0.416323 0.558080 -0.309236 +v -0.409331 0.580204 -0.330169 +v -0.619798 0.742553 -0.370855 +v -0.640000 0.728000 -0.351969 +v -0.629834 0.745133 -0.327893 +v -0.609632 0.759685 -0.346778 +v -1.230728 1.458044 -0.706418 +v -1.257711 1.452871 -0.691528 +v -1.246891 1.468263 -0.666576 +v -1.219908 1.473435 -0.681466 +v -1.251448 1.654751 -0.784951 +v -1.278645 1.668818 -0.778707 +v -1.267097 1.679091 -0.751547 +v -1.239899 1.665023 -0.757791 +v -0.464045 2.119620 -0.761644 +v -0.457127 2.092153 -0.774844 +v -0.468140 2.077278 -0.749664 +v -0.475058 2.104745 -0.736464 +v -1.117438 2.044700 -0.999156 +v -1.103125 2.018915 -1.009494 +v -1.108725 2.004847 -0.982157 +v -1.123038 2.030631 -0.971820 +v -1.208328 1.975719 -1.041368 +v -1.179732 1.963533 -1.044577 +v -1.180409 1.954099 -1.014793 +v -1.209006 1.966285 -1.011583 +v 0.370087 2.477650 -0.329685 +v 0.371356 2.459130 -0.354824 +v 0.353789 2.437906 -0.340075 +v 0.352520 2.456427 -0.314936 +v -0.132913 2.490284 -0.521946 +v -0.120696 2.470372 -0.542701 +v -0.124076 2.446984 -0.522253 +v -0.136292 2.466897 -0.501497 +v -1.147826 2.037695 -0.938888 +v -1.124978 2.023528 -0.954821 +v -1.120232 2.004141 -0.930775 +v -1.143079 2.018309 -0.914842 +v -1.246547 1.833347 -1.032266 +v -1.216374 1.838247 -1.038758 +v -1.208372 1.824850 -1.011683 +v -1.238545 1.819950 -1.005191 +v 0.428442 2.141779 -0.767958 +v 0.426250 2.114627 -0.783271 +v 0.404111 2.105176 -0.763344 +v 0.406303 2.132328 -0.748031 +v 0.164884 2.170792 -0.897882 +v 0.168723 2.142047 -0.909527 +v 0.159689 2.129786 -0.882239 +v 0.155849 2.158530 -0.870595 +v -1.150275 2.044380 -1.142511 +v -1.135978 2.018185 -1.151785 +v -1.138413 2.006614 -1.122859 +v -1.152710 2.032808 -1.113584 +v -1.227184 1.966674 -1.172049 +v -1.196179 1.963353 -1.174106 +v -1.194762 1.957582 -1.143427 +v -1.225767 1.960901 -1.141370 +v -0.081033 0.550667 0.561118 +v -0.099551 0.530750 0.576511 +v -0.122591 0.551858 0.576106 +v -0.104073 0.571775 0.560713 +v -0.347769 0.595844 -0.578732 +v -0.369951 0.574112 -0.575229 +v -0.384405 0.592243 -0.554278 +v -0.362223 0.613974 -0.557781 +v -1.209457 1.466930 -0.928891 +v -1.232608 1.446149 -0.925946 +v -1.231919 1.449780 -0.894915 +v -1.208768 1.470561 -0.897860 +v -1.270576 1.532740 -0.915894 +v -1.301602 1.533237 -0.912197 +v -1.297879 1.535439 -0.881248 +v -1.266853 1.534943 -0.884945 +v 0.389232 0.555409 0.297459 +v 0.391752 0.529902 0.315335 +v 0.364631 0.536924 0.329180 +v 0.362111 0.562432 0.311304 +v -0.207880 0.569246 -0.561510 +v -0.220553 0.540752 -0.563527 +v -0.238641 0.547050 -0.538834 +v -0.225968 0.575543 -0.536817 +v -1.211726 1.465680 -0.963766 +v -1.237311 1.449687 -0.971904 +v -1.245983 1.448300 -0.941913 +v -1.220399 1.464293 -0.933775 +v -1.253845 1.642335 -0.948006 +v -1.283614 1.650151 -0.953414 +v -1.290991 1.642364 -0.924063 +v -1.261222 1.634548 -0.918655 +v 0.943516 1.871226 -0.359015 +v 0.914742 1.883286 -0.357229 +v 0.926923 1.911920 -0.354350 +v 0.955696 1.899860 -0.356136 +v 0.889329 1.870978 -0.569970 +v 0.863983 1.882787 -0.556015 +v 0.874178 1.911718 -0.561980 +v 0.899523 1.899910 -0.575935 +v 0.495434 1.861500 -0.981034 +v 0.480957 1.873584 -0.956116 +v 0.486243 1.902391 -0.967014 +v 0.500721 1.890307 -0.991932 +v -0.834393 1.814548 -1.283235 +v -0.836801 1.826961 -1.254658 +v -0.835730 1.855639 -1.267025 +v -0.833322 1.843226 -1.295602 +v -1.148200 1.825860 -1.266218 +v -1.138704 1.838350 -1.239193 +v -1.145305 1.866894 -1.250066 +v -1.154801 1.854404 -1.277091 +v -1.234792 1.805403 -1.194849 +v -1.212062 1.823185 -1.182861 +v -1.232931 1.845551 -1.176468 +v -1.255660 1.827768 -1.188457 +v 0.715545 1.248159 -0.776684 +v 0.686409 1.254946 -0.767652 +v 0.692966 1.285450 -0.769420 +v 0.722102 1.278663 -0.778453 +v 0.546517 1.291902 -0.987323 +v 0.530960 1.295632 -0.960479 +v 0.538480 1.325963 -0.960335 +v 0.554037 1.322233 -0.987180 +v -0.873200 1.639222 -1.281797 +v -0.876222 1.639836 -1.250700 +v -0.868384 1.670086 -1.250535 +v -0.865361 1.669473 -1.281632 +v -1.186465 1.724763 -1.278934 +v -1.168041 1.720581 -1.254042 +v -1.162655 1.751340 -1.252860 +v -1.181080 1.755523 -1.277752 +v -1.252684 1.708028 -1.067193 +v -1.221807 1.705025 -1.063432 +v -1.221114 1.731966 -1.047613 +v -1.251991 1.734969 -1.051374 +v -0.954687 1.560271 -1.298775 +v -0.985937 1.560271 -1.298775 +v -0.985937 1.591521 -1.298775 +v -0.954687 1.591521 -1.298775 +v -0.963335 1.590347 -1.336192 +v -0.970149 1.559849 -1.336192 +v -0.952451 1.555895 -1.310741 +v -0.945637 1.586393 -1.310741 +v -1.101448 1.611016 -1.336589 +v -1.086425 1.583614 -1.336589 +v -1.066532 1.594520 -1.315097 +v -1.081556 1.621922 -1.315097 +v -0.954687 1.560271 -1.251899 +v -0.985937 1.560271 -1.251899 +v -0.985937 1.591521 -1.251900 +v -0.954687 1.591521 -1.251900 +v -1.077788 1.581977 -1.252000 +v -1.109038 1.581977 -1.252000 +v -1.109038 1.613227 -1.252000 +v -1.077788 1.613227 -1.252000 +v 0.745194 1.273139 0.735025 +v 0.735015 1.244827 0.726576 +v 0.719654 1.257532 0.702510 +v 0.729833 1.285844 0.710959 +v 0.943610 1.259989 0.566791 +v 0.931926 1.231665 0.560645 +v 0.906328 1.244857 0.548509 +v 0.918013 1.273181 0.554655 +v 0.973016 1.351905 -0.575358 +v 0.960954 1.323080 -0.574949 +v 0.934052 1.334495 -0.563880 +v 0.946114 1.363320 -0.564288 +v 0.600109 1.441009 -1.009472 +v 0.592197 1.411235 -1.004230 +v 0.577894 1.419695 -0.977765 +v 0.585806 1.449470 -0.983007 +v -1.073487 1.623846 -1.364865 +v -1.067278 1.593794 -1.358955 +v -1.058762 1.601281 -1.329834 +v -1.064971 1.631332 -1.335745 +v 0.951122 1.085692 0.312932 +v 0.926018 1.099264 0.300198 +v 0.940128 1.127087 0.302037 +v 0.965232 1.113515 0.314771 +v 0.935073 1.197188 -0.576146 +v 0.909195 1.208910 -0.563128 +v 0.922666 1.237072 -0.561709 +v 0.948544 1.225349 -0.574726 +v 0.560659 1.358615 -0.982424 +v 0.547104 1.365096 -0.955023 +v 0.557465 1.394521 -0.956857 +v 0.571020 1.388041 -0.984259 +v -0.840678 1.692593 -1.288240 +v -0.843022 1.696158 -1.257282 +v -0.836343 1.726539 -1.260275 +v -0.833999 1.722973 -1.291232 +v -1.187308 1.756017 -1.283439 +v -1.176978 1.758718 -1.254070 +v -1.181892 1.789558 -1.255177 +v -1.192222 1.786859 -1.284546 +v -1.281084 1.697572 -1.201442 +v -1.256675 1.712997 -1.189491 +v -1.276172 1.731483 -1.173532 +v -1.300580 1.716059 -1.185483 +v 0.953203 1.134244 -0.358307 +v 0.944705 1.104700 -0.363921 +v 0.914640 1.113173 -0.362995 +v 0.923138 1.142717 -0.357381 +v 0.925834 1.168328 -0.575803 +v 0.918043 1.138104 -0.577344 +v 0.890808 1.144413 -0.563379 +v 0.898599 1.174636 -0.561838 +v 0.528609 1.250118 -0.993705 +v 0.521870 1.219603 -0.993587 +v 0.506780 1.223040 -0.966439 +v 0.513519 1.253554 -0.966556 +v -0.935810 1.584189 -1.354551 +v -0.942693 1.553706 -1.354520 +v -0.936888 1.552426 -1.323841 +v -0.930005 1.582909 -1.323871 +v -0.246489 0.832329 -0.855722 +v -0.258502 0.803503 -0.856856 +v -0.266625 0.805704 -0.826760 +v -0.254612 0.834530 -0.825626 +v -1.214327 1.469654 -1.049257 +v -1.236530 1.447909 -1.052539 +v -1.241021 1.447826 -1.021614 +v -1.218818 1.469571 -1.018332 +v -1.262501 1.543276 -1.052072 +v -1.293222 1.548172 -1.055042 +v -1.296599 1.545773 -1.024067 +v -1.265878 1.540877 -1.021098 +v 0.374585 0.560388 -0.353116 +v 0.377918 0.534075 -0.336591 +v 0.358668 0.545373 -0.314720 +v 0.355335 0.571686 -0.331244 +v -0.000276 0.530372 -0.584431 +v -0.012797 0.502610 -0.577427 +v -0.023881 0.514358 -0.550675 +v -0.011360 0.542120 -0.557679 +v -1.218359 1.455832 -1.164818 +v -1.241896 1.435340 -1.163192 +v -1.245818 1.442244 -1.132967 +v -1.222281 1.462735 -1.134594 +v -1.269335 1.533842 -1.177511 +v -1.300350 1.537532 -1.178506 +v -1.301281 1.538129 -1.147276 +v -1.270266 1.534439 -1.146281 +v -1.173318 1.944097 -0.673875 +v -1.180127 1.913598 -0.673875 +v -1.180127 1.913598 -0.642625 +v -1.173318 1.944097 -0.642625 +v -1.195024 1.820996 -0.673875 +v -1.201833 1.790497 -0.673875 +v -1.201833 1.790497 -0.642625 +v -1.195024 1.820996 -0.642625 +v -1.216730 1.697895 -0.673875 +v -1.223539 1.667396 -0.673875 +v -1.223539 1.667396 -0.642625 +v -1.216730 1.697895 -0.642625 +v -1.216730 1.697895 -0.798875 +v -1.223539 1.667396 -0.798875 +v -1.223539 1.667396 -0.767625 +v -1.216730 1.697895 -0.767625 +v -0.364991 2.414379 -0.298050 +v -0.355700 2.409160 -0.327426 +v -0.382890 2.395009 -0.333511 +v -0.392181 2.400229 -0.304135 +v 0.425906 2.063924 0.730832 +v 0.443584 2.079004 0.709936 +v 0.420829 2.100030 0.705858 +v 0.403150 2.084951 0.726754 +v -0.904467 1.858820 0.329478 +v -0.893309 1.888000 0.328678 +v -0.903063 1.890920 0.299133 +v -0.914221 1.861741 0.299933 +v -0.894073 1.106308 0.319069 +v -0.899256 1.132884 0.334669 +v -0.913457 1.144864 0.309542 +v -0.908274 1.118287 0.293942 +v -0.675568 1.257920 0.720053 +v -0.670262 1.285721 0.733302 +v -0.693610 1.298119 0.716636 +v -0.698915 1.270318 0.703387 +v -1.219347 1.937230 -0.524101 +v -1.196883 1.958954 -0.524101 +v -1.177292 1.938695 -0.510599 +v -1.199756 1.916971 -0.510599 +v -0.430747 0.577754 -0.354696 +v -0.447749 0.560204 -0.335216 +v -0.436113 0.575960 -0.310866 +v -0.419111 0.593510 -0.330346 +v -1.252167 1.693828 -1.058028 +v -1.220919 1.694257 -1.058028 +v -1.221169 1.712454 -1.032624 +v -1.252416 1.712025 -1.032624 +v -1.259744 1.683084 -1.186409 +v -1.242361 1.709054 -1.186409 +v -1.255320 1.717729 -1.159328 +v -1.272704 1.691760 -1.159328 +vt 0.017442 0.019417 +vt 0.011628 0.029126 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.011628 0.009709 +vt 0.017442 0.038835 +vt 0.011628 0.048544 +vt 0.011628 0.038835 +vt 0.005814 0.029126 +vt 0.005814 0.038835 +vt 0.011628 0.019417 +vt 0.017442 0.029126 +vt 0.011628 0.029126 +vt 0.011628 0.009709 +vt 0.017442 0.019417 +vt 0.011628 0.038835 +vt 0.017442 0.048544 +vt 0.011628 0.048544 +vt 0.017442 0.038835 +vt 0.011628 0.019417 +vt 0.017442 0.029126 +vt 0.011628 0.029126 +vt 0.011628 0.009709 +vt 0.017442 0.019417 +vt 0.011628 0.038835 +vt 0.017442 0.048544 +vt 0.011628 0.048544 +vt 0.017442 0.038835 +vt 0.011628 0.019417 +vt 0.017442 0.029126 +vt 0.011628 0.029126 +vt 0.011628 0.009709 +vt 0.017442 0.019417 +vt 0.011628 0.038835 +vt 0.017442 0.048544 +vt 0.011628 0.048544 +vt 0.017442 0.038835 +vt 0.011628 0.029126 +vt 0.017442 0.019417 +vt 0.017442 0.029126 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.011628 0.048544 +vt 0.017442 0.038835 +vt 0.017442 0.048544 +vt 0.023256 0.038835 +vt 0.023256 0.029126 +vt 0.011628 0.029126 +vt 0.017442 0.019417 +vt 0.017442 0.029126 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.011628 0.048544 +vt 0.017442 0.038835 +vt 0.017442 0.048544 +vt 0.122093 0.038835 +vt 0.110465 0.029126 +vt 0.122093 0.029126 +vt 0.168605 0.048544 +vt 0.162791 0.038835 +vt 0.168605 0.038835 +vt 0.168605 0.019417 +vt 0.162791 0.009709 +vt 0.168605 0.009709 +vt 0.168605 0.029126 +vt 0.162791 0.019417 +vt 0.005814 0.029126 +vt 0.017442 0.038835 +vt 0.005814 0.038835 +vt 0.348837 0.038835 +vt 0.343023 0.029126 +vt 0.348837 0.029126 +vt 0.348837 0.048544 +vt 0.343023 0.038835 +vt 0.348837 0.019417 +vt 0.343023 0.009709 +vt 0.348837 0.009709 +vt 0.343023 0.019417 +vt 0.011628 0.038835 +vt 0.017442 0.029126 +vt 0.017442 0.038835 +vt 0.011628 0.029126 +vt 0.017442 0.019417 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.011628 0.048544 +vt 0.017442 0.048544 +vt 0.011628 0.038835 +vt 0.017442 0.029126 +vt 0.017442 0.038835 +vt 0.011628 0.029126 +vt 0.017442 0.019417 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.011628 0.048544 +vt 0.017442 0.048544 +vt 0.308140 0.048544 +vt 0.302326 0.038835 +vt 0.308140 0.038835 +vt 0.308140 0.019417 +vt 0.302326 0.009709 +vt 0.308140 0.009709 +vt 0.308140 0.029126 +vt 0.302326 0.019417 +vt 0.005814 0.029126 +vt 0.017442 0.038835 +vt 0.005814 0.038835 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.017442 0.019417 +vt 0.011628 0.048544 +vt 0.017442 0.038835 +vt 0.017442 0.048544 +vt 0.011628 0.038835 +vt 0.017442 0.029126 +vt 0.011628 0.029126 +vt 0.011814 0.038878 +vt 0.017442 0.029126 +vt 0.017442 0.038835 +vt 0.011628 0.029126 +vt 0.017442 0.019417 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.011628 0.048544 +vt 0.017442 0.048544 +vt 0.011628 0.038835 +vt 0.017442 0.029126 +vt 0.017442 0.038835 +vt 0.011628 0.029126 +vt 0.017442 0.019417 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.011628 0.048544 +vt 0.017442 0.048544 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.017442 0.019417 +vt 0.011628 0.048544 +vt 0.017442 0.038835 +vt 0.017442 0.048544 +vt 0.011628 0.038835 +vt 0.017442 0.029126 +vt 0.011628 0.029126 +vt 0.011628 0.019417 +vt 0.017442 0.029126 +vt 0.011628 0.029126 +vt 0.011628 0.009709 +vt 0.017442 0.019417 +vt 0.011628 0.038835 +vt 0.017442 0.048544 +vt 0.011628 0.048544 +vt 0.017442 0.038835 +vt 0.011628 0.038835 +vt 0.017442 0.029126 +vt 0.017442 0.038835 +vt 0.011628 0.029126 +vt 0.017442 0.019417 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.011628 0.048544 +vt 0.017442 0.048544 +vt 0.017442 0.029126 +vt 0.011628 0.019417 +vt 0.017442 0.019417 +vt 0.017442 0.009709 +vt 0.011628 0.009709 +vt 0.017442 0.038835 +vt 0.011628 0.048544 +vt 0.011628 0.038835 +vt 0.005814 0.029126 +vt 0.005814 0.038835 +vt 0.017442 0.029126 +vt 0.011628 0.038835 +vt 0.011628 0.029126 +vt 0.011628 0.019417 +vt 0.017442 0.019417 +vt 0.011628 0.009709 +vt 0.017442 0.009709 +vt 0.005814 0.038835 +vt 0.011628 0.048544 +vt 0.005814 0.048544 +vt 0.017442 0.038835 +vt 0.011628 0.048544 +vt 0.011628 0.038835 +vt 0.011628 0.029126 +vt 0.017442 0.029126 +vt 0.011628 0.019417 +vt 0.017442 0.019417 +vt 0.005814 0.009709 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.011628 0.038835 +vt 0.005814 0.038835 +vt 0.011628 0.038835 +vt 0.017442 0.048544 +vt 0.011628 0.048544 +vt 0.011628 0.029126 +vt 0.017442 0.038835 +vt 0.011628 0.019417 +vt 0.017442 0.029126 +vt 0.011628 0.009709 +vt 0.017442 0.019417 +vt 0.023256 0.029126 +vt 0.011628 0.038835 +vt 0.011628 0.029126 +vt 0.011628 0.019417 +vt 0.023256 0.019417 +vt 0.011628 0.009709 +vt 0.023256 0.009709 +vt 0.005814 0.038835 +vt 0.011628 0.048544 +vt 0.005814 0.048544 +vt 0.011628 0.019417 +vt 0.017442 0.009709 +vt 0.017442 0.019417 +vt 0.011628 0.048544 +vt 0.017442 0.038835 +vt 0.017442 0.048544 +vt 0.011628 0.038835 +vt 0.017442 0.029126 +vt 0.011628 0.029126 +vt 0.017442 0.038835 +vt 0.023256 0.048544 +vt 0.017442 0.048544 +vt 0.017442 0.029126 +vt 0.023256 0.038835 +vt 0.017442 0.019417 +vt 0.023256 0.029126 +vt 0.017442 0.009709 +vt 0.023256 0.019417 +vt 0.424419 0.038835 +vt 0.412791 0.048544 +vt 0.412791 0.038835 +vt 0.424419 0.019417 +vt 0.412791 0.009709 +vt 0.424419 0.009709 +vt 0.424419 0.029126 +vt 0.412791 0.019417 +vt 0.005814 0.029126 +vt 0.005814 0.038835 +vt 0.005814 0.019417 +vt 0.005814 0.009709 +vt 0.005814 0.048544 +vt 0.319767 0.029126 +vt 0.308140 0.038835 +vt 0.308140 0.029126 +vt 0.005814 0.009709 +vt 0.005814 0.019417 +vt 0.005814 0.048544 +vt 0.005814 0.029126 +vt 0.005814 0.038835 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.005814 0.009709 +vt 0.005814 0.048544 +vt 0.005814 0.038835 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.005814 0.009709 +vt 0.005814 0.048544 +vt 0.005814 0.038835 +vt 0.017442 0.019417 +vt 0.005814 0.029126 +vt 0.005814 0.019417 +vt 0.005814 0.038835 +vt 0.011628 0.038835 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.005814 0.009709 +vt 0.005814 0.048544 +vt 0.005814 0.029126 +vt 0.011628 0.038835 +vt 0.005814 0.038835 +vt 0.005814 0.019417 +vt 0.011628 0.009709 +vt 0.005814 0.048544 +vt 0.174419 0.029126 +vt 0.174419 0.048544 +vt 0.174419 0.038835 +vt 0.174419 0.019417 +vt 0.174419 0.009709 +vt 0.005814 0.019417 +vt 0.011628 0.009709 +vt 0.005814 0.048544 +vt 0.406977 0.029126 +vt 0.412791 0.029126 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.011628 0.009709 +vt 0.005814 0.038835 +vt 0.005814 0.048544 +vt 0.313953 0.029126 +vt 0.313953 0.048544 +vt 0.313953 0.038835 +vt 0.313953 0.019417 +vt 0.313953 0.009709 +vt 0.005814 0.038835 +vt 0.005814 0.048544 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.151163 0.019417 +vt 0.139535 0.009709 +vt 0.151163 0.009709 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.011628 0.009709 +vt 0.005814 0.038835 +vt 0.005814 0.048544 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.011628 0.009709 +vt 0.005814 0.038835 +vt 0.005814 0.048544 +vt 0.005814 0.038835 +vt 0.005814 0.048544 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.005814 0.009709 +vt 0.005814 0.019417 +vt 0.005814 0.048544 +vt 0.005814 0.029126 +vt 0.005814 0.038835 +vt 0.581395 0.029126 +vt 0.569767 0.019417 +vt 0.581395 0.019417 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.011628 0.009709 +vt 0.005814 0.038835 +vt 0.005814 0.048544 +vt 0.180233 0.029126 +vt 0.168605 0.038835 +vt 0.168605 0.029126 +vt 0.005814 0.019417 +vt 0.011628 0.029126 +vt 0.005814 0.048544 +vt 0.383721 0.029126 +vt 0.372093 0.038835 +vt 0.372093 0.029126 +vt 0.005814 0.029126 +vt 0.005814 0.009709 +vt 0.005814 0.019417 +vt 0.005814 0.038835 +vt 0.005814 0.048544 +vt 0.005814 0.029126 +vt 0.005814 0.019417 +vt 0.011628 0.029126 +vt 0.011628 0.009709 +vt 0.011628 0.019417 +vt 0.011628 0.048544 +vt 0.005814 0.048544 +vt 0.343023 0.029126 +vt 0.331395 0.038835 +vt 0.331395 0.029126 +vt 0.005814 0.029126 +vt 0.005814 0.038835 +vt 0.005814 0.009709 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.005814 0.009709 +vt 0.005814 0.019417 +vt 0.005814 0.038835 +vt 0.005814 0.048544 +vt 0.005814 0.019417 +vt 0.005814 0.029126 +vt 0.563953 0.029126 +vt 0.563953 0.019417 +vt 0.569767 0.029126 +vt 0.563953 0.038835 +vt 0.569767 0.048544 +vt 0.569767 0.038835 +vt 0.569767 0.009709 +vt 0.563953 0.009709 +vt 0.017442 0.019417 +vt 0.017442 0.029126 +vt 0.005814 0.019417 +vt 0.017442 0.009709 +vt 0.017442 0.048544 +vt 0.005814 0.048544 +vt 0.116279 0.029126 +vt 0.116279 0.019417 +vt 0.279070 0.029126 +vt 0.273256 0.038835 +vt 0.273256 0.029126 +vt 0.279070 0.038835 +vt 0.273256 0.048544 +vt 0.279070 0.019417 +vt 0.273256 0.009709 +vt 0.279070 0.009709 +vt 0.273256 0.019417 +vt 0.284884 0.038835 +vt 0.284884 0.029126 +vt 0.279070 0.048544 +vt 0.284884 0.019417 +vt 0.284884 0.009709 +vt 0.383721 0.038835 +vt 0.372093 0.048544 +vt 0.383721 0.019417 +vt 0.372093 0.009709 +vt 0.383721 0.009709 +vt 0.372093 0.019417 +vt 0.360465 0.038835 +vt 0.360465 0.029126 +vt 0.017442 0.009709 +vt 0.005814 0.009709 +vt 0.017442 0.048544 +vt 0.005814 0.038835 +vt 0.017442 0.038835 +vt 0.540698 0.019417 +vt 0.529070 0.029126 +vt 0.529070 0.019417 +vt 0.540698 0.029126 +vt 0.529070 0.038835 +vt 0.540698 0.048544 +vt 0.540698 0.038835 +vt 0.424419 0.019417 +vt 0.412791 0.029126 +vt 0.412791 0.019417 +vt 0.424419 0.029126 +vt 0.412791 0.038835 +vt 0.424419 0.048544 +vt 0.424419 0.038835 +vt 0.715116 0.038835 +vt 0.703488 0.048544 +vt 0.703488 0.038835 +vt 0.715116 0.019417 +vt 0.703488 0.009709 +vt 0.715116 0.009709 +vt 0.715116 0.029126 +vt 0.703488 0.019417 +vt 0.697674 0.029126 +vt 0.703488 0.029126 +vt 0.290698 0.038835 +vt 0.279070 0.048544 +vt 0.279070 0.038835 +vt 0.290698 0.019417 +vt 0.279070 0.009709 +vt 0.290698 0.009709 +vt 0.290698 0.029126 +vt 0.279070 0.019417 +vt 0.476744 0.029126 +vt 0.470930 0.038835 +vt 0.470930 0.029126 +vt 0.476744 0.038835 +vt 0.470930 0.048544 +vt 0.476744 0.019417 +vt 0.470930 0.009709 +vt 0.476744 0.009709 +vt 0.470930 0.019417 +vt 0.482558 0.038835 +vt 0.482558 0.029126 +vt 0.482558 0.048544 +vt 0.482558 0.009709 +vt 0.482558 0.019417 +vt 0.453488 0.009709 +vt 0.441860 0.019417 +vt 0.441860 0.009709 +vt 0.453488 0.029126 +vt 0.453488 0.019417 +vt 0.453488 0.038835 +vt 0.441860 0.029126 +vt 0.441860 0.038835 +vt 0.436047 0.048544 +vt 0.436047 0.038835 +vt 0.581395 0.038835 +vt 0.581395 0.009709 +vt 0.308140 0.019417 +vt 0.296512 0.029126 +vt 0.296512 0.019417 +vt 0.308140 0.029126 +vt 0.296512 0.038835 +vt 0.308140 0.048544 +vt 0.308140 0.038835 +vt 0.139535 0.029126 +vt 0.151163 0.029126 +vt 0.139535 0.038835 +vt 0.151163 0.038835 +vt 0.151163 0.048544 +vt 0.040698 0.019417 +vt 0.040698 0.029126 +vt 0.197674 0.029126 +vt 0.191860 0.019417 +vt 0.197674 0.019417 +vt 0.191860 0.038835 +vt 0.191860 0.029126 +vt 0.197674 0.038835 +vt 0.191860 0.048544 +vt 0.191860 0.009709 +vt 0.197674 0.009709 +vt 0.209302 0.029126 +vt 0.209302 0.019417 +vt 0.209302 0.048544 +vt 0.209302 0.038835 +vt 0.209302 0.009709 +vt 0.343023 0.038835 +vt 0.331395 0.048544 +vt 0.343023 0.019417 +vt 0.331395 0.009709 +vt 0.343023 0.009709 +vt 0.331395 0.019417 +vt 0.325581 0.038835 +vt 0.325581 0.029126 +vt 0.180233 0.038835 +vt 0.168605 0.048544 +vt 0.180233 0.019417 +vt 0.168605 0.009709 +vt 0.180233 0.009709 +vt 0.168605 0.019417 +vt 0.162791 0.029126 +vt 0.017442 0.019417 +vt 0.017442 0.029126 +vt 0.005814 0.019417 +vt 0.017442 0.009709 +vt 0.017442 0.048544 +vt 0.005814 0.048544 +vt 0.023256 0.038835 +vt 0.488372 0.019417 +vt 0.476744 0.009709 +vt 0.488372 0.009709 +vt 0.488372 0.029126 +vt 0.476744 0.019417 +vt 0.476744 0.038835 +vt 0.476744 0.029126 +vt 0.476744 0.048544 +vt 0.470930 0.038835 +vt 0.680233 0.019417 +vt 0.668605 0.009709 +vt 0.680233 0.009709 +vt 0.680233 0.029126 +vt 0.668605 0.019417 +vt 0.668605 0.038835 +vt 0.668605 0.029126 +vt 0.232558 0.029126 +vt 0.226744 0.019417 +vt 0.232558 0.019417 +vt 0.226744 0.038835 +vt 0.226744 0.029126 +vt 0.232558 0.038835 +vt 0.226744 0.048544 +vt 0.226744 0.009709 +vt 0.232558 0.009709 +vt 0.238372 0.029126 +vt 0.238372 0.019417 +vt 0.238372 0.048544 +vt 0.238372 0.038835 +vt 0.238372 0.009709 +vt 0.482558 0.038835 +vt 0.470930 0.048544 +vt 0.470930 0.038835 +vt 0.482558 0.009709 +vt 0.470930 0.019417 +vt 0.470930 0.009709 +vt 0.482558 0.029126 +vt 0.482558 0.019417 +vt 0.319767 0.038835 +vt 0.308140 0.048544 +vt 0.319767 0.019417 +vt 0.308140 0.009709 +vt 0.319767 0.009709 +vt 0.308140 0.019417 +vt 0.302326 0.029126 +vt 0.552326 0.038835 +vt 0.540698 0.048544 +vt 0.540698 0.038835 +vt 0.552326 0.019417 +vt 0.540698 0.009709 +vt 0.552326 0.009709 +vt 0.552326 0.029126 +vt 0.540698 0.019417 +vt 0.529070 0.029126 +vt 0.540698 0.029126 +vt 0.110465 0.048544 +vt 0.110465 0.038835 +vt 0.122093 0.009709 +vt 0.110465 0.019417 +vt 0.110465 0.009709 +vt 0.122093 0.019417 +vt 0.063953 0.048544 +vt 0.290698 0.019417 +vt 0.284884 0.029126 +vt 0.284884 0.019417 +vt 0.290698 0.029126 +vt 0.284884 0.038835 +vt 0.290698 0.048544 +vt 0.290698 0.038835 +vt 0.284884 0.009709 +vt 0.290698 0.009709 +vt 0.296512 0.029126 +vt 0.296512 0.019417 +vt 0.296512 0.048544 +vt 0.296512 0.038835 +vt 0.296512 0.009709 +vt 0.063953 0.009709 +vt 0.063953 0.019417 +vt 0.063953 0.029126 +vt 0.023256 0.038835 +vt 0.023256 0.029126 +vt 0.186047 0.029126 +vt 0.186047 0.048544 +vt 0.186047 0.038835 +vt 0.186047 0.009709 +vt 0.023256 0.029126 +vt 0.023256 0.019417 +vt 0.116279 0.009709 +vt 0.116279 0.038835 +vt 0.156977 0.038835 +vt 0.162791 0.029126 +vt 0.220930 0.029126 +vt 0.220930 0.038835 +vt 0.220930 0.019417 +vt 0.220930 0.009709 +vt 0.023256 0.038835 +vt 0.023256 0.009709 +vt 0.017442 0.009709 +vt 0.186047 0.019417 +vt 0.023256 0.048544 +vt 0.063953 0.038835 +vt 0.023256 0.048544 +vt 0.023256 0.019417 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.023256 0.038835 +vt 0.023256 0.029126 +vt 0.023256 0.048544 +vt 0.023256 0.009709 +vt 0.017442 0.009709 +vt 0.220930 0.048544 +vt 0.156977 0.019417 +vt 0.156977 0.029126 +vt 0.156977 0.009709 +vt 0.156977 0.048544 +vt 0.162791 0.048544 +vt 0.116279 0.048544 +vt 0.302326 0.038835 +vt 0.302326 0.019417 +vt 0.302326 0.009709 +vt 0.023256 0.038835 +vt 0.017442 0.029126 +vt 0.023256 0.029126 +vt 0.023256 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.244186 0.029126 +vt 0.244186 0.038835 +vt 0.244186 0.048544 +vt 0.244186 0.019417 +vt 0.302326 0.048544 +vt 0.244186 0.009709 +vt 0.290698 0.038835 +vt 0.191860 0.029126 +vt 0.290698 0.029126 +vt 0.279070 0.029126 +vt 0.279070 0.048544 +vt 0.279070 0.038835 +vt 0.279070 0.019417 +vt 0.279070 0.009709 +vt 0.023256 0.038835 +vt 0.023256 0.029126 +vt 0.023256 0.048544 +vt 0.023256 0.009709 +vt 0.017442 0.009709 +vt 0.023256 0.019417 +vt 0.238372 0.029126 +vt 0.238372 0.038835 +vt 0.238372 0.048544 +vt 0.238372 0.019417 +vt 0.238372 0.009709 +vt 0.273256 0.029126 +vt 0.279070 0.029126 +vt 0.273256 0.038835 +vt 0.273256 0.019417 +vt 0.273256 0.009709 +vt 0.023256 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.197674 0.029126 +vt 0.197674 0.038835 +vt 0.197674 0.048544 +vt 0.197674 0.019417 +vt 0.273256 0.048544 +vt 0.406977 0.038835 +vt 0.406977 0.019417 +vt 0.406977 0.009709 +vt 0.023256 0.038835 +vt 0.023256 0.029126 +vt 0.023256 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.261628 0.029126 +vt 0.261628 0.038835 +vt 0.261628 0.048544 +vt 0.261628 0.019417 +vt 0.406977 0.048544 +vt 0.261628 0.009709 +vt 0.459302 0.038835 +vt 0.459302 0.019417 +vt 0.459302 0.009709 +vt 0.459302 0.029126 +vt 0.023256 0.048544 +vt 0.023256 0.038835 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.058140 0.029126 +vt 0.058140 0.038835 +vt 0.058140 0.048544 +vt 0.058140 0.019417 +vt 0.023256 0.029126 +vt 0.377907 0.038835 +vt 0.377907 0.048544 +vt 0.290698 0.048544 +vt 0.290698 0.019417 +vt 0.377907 0.009709 +vt 0.377907 0.019417 +vt 0.377907 0.029126 +vt 0.459302 0.048544 +vt 0.191860 0.038835 +vt 0.191860 0.048544 +vt 0.191860 0.009709 +vt 0.191860 0.019417 +vt 0.290698 0.009709 +vt 0.261628 0.038835 +vt 0.261628 0.019417 +vt 0.261628 0.009709 +vt 0.023256 0.038835 +vt 0.023256 0.029126 +vt 0.023256 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.069767 0.029126 +vt 0.069767 0.038835 +vt 0.069767 0.048544 +vt 0.069767 0.019417 +vt 0.261628 0.029126 +vt 0.261628 0.048544 +vt 0.069767 0.009709 +vt 0.023256 0.029126 +vt 0.017442 0.029126 +vt 0.023256 0.019417 +vt 0.023256 0.038835 +vt 0.023256 0.048544 +vt 0.337209 0.038835 +vt 0.354651 0.038835 +vt 0.354651 0.048544 +vt 0.354651 0.009709 +vt 0.354651 0.019417 +vt 0.354651 0.029126 +vt 0.023256 0.019417 +vt 0.040698 0.029126 +vt 0.023256 0.029126 +vt 0.337209 0.019417 +vt 0.337209 0.029126 +vt 0.337209 0.009709 +vt 0.337209 0.048544 +vt 0.343023 0.048544 +vt 0.127907 0.029126 +vt 0.127907 0.019417 +vt 0.127907 0.009709 +vt 0.127907 0.038835 +vt 0.023256 0.009709 +vt 0.529070 0.038835 +vt 0.529070 0.019417 +vt 0.529070 0.009709 +vt 0.023256 0.038835 +vt 0.215116 0.029126 +vt 0.215116 0.038835 +vt 0.023256 0.048544 +vt 0.215116 0.048544 +vt 0.023256 0.009709 +vt 0.215116 0.019417 +vt 0.023256 0.019417 +vt 0.023256 0.029126 +vt 0.325581 0.029126 +vt 0.447674 0.038835 +vt 0.325581 0.038835 +vt 0.447674 0.048544 +vt 0.325581 0.048544 +vt 0.325581 0.019417 +vt 0.447674 0.009709 +vt 0.447674 0.019417 +vt 0.447674 0.029126 +vt 0.529070 0.048544 +vt 0.215116 0.009709 +vt 0.040698 0.038835 +vt 0.040698 0.048544 +vt 0.139535 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.023256 0.038835 +vt 0.023256 0.029126 +vt 0.023256 0.048544 +vt 0.040698 0.009709 +vt 0.139535 0.019417 +vt 0.023256 0.019417 +vt 0.023256 0.029126 +vt 0.023256 0.009709 +vt 0.023256 0.048544 +vt 0.069767 0.038835 +vt 0.029070 0.029126 +vt 0.069767 0.029126 +vt 0.029070 0.019417 +vt 0.069767 0.019417 +vt 0.069767 0.009709 +vt 0.029070 0.009709 +vt 0.029070 0.048544 +vt 0.029070 0.038835 +vt 0.255814 0.038835 +vt 0.255814 0.029126 +vt 0.255814 0.019417 +vt 0.255814 0.009709 +vt 0.255814 0.048544 +vt 0.296512 0.038835 +vt 0.296512 0.029126 +vt 0.296512 0.019417 +vt 0.296512 0.009709 +vt 0.302326 0.029126 +vt 0.296512 0.048544 +vt 0.302326 0.048544 +vt 0.162791 0.038835 +vt 0.162791 0.019417 +vt 0.162791 0.009709 +vt 0.040698 0.038835 +vt 0.162791 0.048544 +vt 0.040698 0.048544 +vt 0.040698 0.009709 +vt 0.040698 0.019417 +vt 0.040698 0.029126 +vt 0.023256 0.038835 +vt 0.023256 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.023256 0.029126 +vt 0.360465 0.009709 +vt 0.360465 0.019417 +vt 0.273256 0.029126 +vt 0.273256 0.038835 +vt 0.360465 0.048544 +vt 0.273256 0.048544 +vt 0.273256 0.019417 +vt 0.058140 0.038835 +vt 0.058140 0.048544 +vt 0.058140 0.009709 +vt 0.058140 0.019417 +vt 0.058140 0.029126 +vt 0.017442 0.048544 +vt 0.017442 0.048544 +vt 0.017442 0.038835 +vt 0.325581 0.009709 +vt 0.325581 0.019417 +vt 0.273256 0.029126 +vt 0.273256 0.038835 +vt 0.325581 0.048544 +vt 0.273256 0.048544 +vt 0.273256 0.019417 +vt 0.034884 0.038835 +vt 0.034884 0.048544 +vt 0.034884 0.009709 +vt 0.034884 0.019417 +vt 0.034884 0.029126 +vt 0.017442 0.038835 +vt 0.017442 0.048544 +vt 0.017442 0.009709 +vt 0.017442 0.019417 +vt 0.017442 0.029126 +vt 0.517442 0.019417 +vt 0.517442 0.029126 +vt 0.517442 0.038835 +vt 0.517442 0.048544 +vt 0.563953 0.048544 +vt 0.517442 0.009709 +vt 0.284884 0.029126 +vt 0.284884 0.038835 +vt 0.284884 0.048544 +vt 0.284884 0.009709 +vt 0.284884 0.019417 +vt 0.040698 0.038835 +vt 0.040698 0.048544 +vt 0.040698 0.019417 +vt 0.023256 0.038835 +vt 0.023256 0.048544 +vt 0.040698 0.009709 +vt 0.023256 0.009709 +vt 0.005814 0.009709 +vt 0.017442 0.009709 +vt 0.005814 0.009709 +vt 0.523256 0.009709 +vt 0.529070 0.009709 +vt 0.523256 0.019417 +vt 0.523256 0.038835 +vt 0.523256 0.029126 +vt 0.523256 0.048544 +vt 0.331395 0.019417 +vt 0.331395 0.029126 +vt 0.331395 0.038835 +vt 0.331395 0.048544 +vt 0.063953 0.009709 +vt 0.063953 0.019417 +vt 0.063953 0.029126 +vt 0.063953 0.038835 +vt 0.063953 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.023256 0.029126 +vt 0.023256 0.038835 +vt 0.023256 0.048544 +vt 0.540698 0.009709 +vt 0.470930 0.019417 +vt 0.470930 0.009709 +vt 0.470930 0.029126 +vt 0.436047 0.048544 +vt 0.470930 0.048544 +vt 0.436047 0.019417 +vt 0.436047 0.029126 +vt 0.436047 0.038835 +vt 0.337209 0.048544 +vt 0.337209 0.009709 +vt 0.337209 0.019417 +vt 0.337209 0.029126 +vt 0.337209 0.038835 +vt 0.093023 0.038835 +vt 0.093023 0.048544 +vt 0.093023 0.019417 +vt 0.093023 0.029126 +vt 0.040698 0.048544 +vt 0.040698 0.009709 +vt 0.040698 0.019417 +vt 0.040698 0.029126 +vt 0.040698 0.038835 +vt 0.023256 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.023256 0.029126 +vt 0.023256 0.038835 +vt 0.017442 0.009709 +vt 0.488372 0.038835 +vt 0.436047 0.019417 +vt 0.436047 0.009709 +vt 0.436047 0.029126 +vt 0.389535 0.038835 +vt 0.389535 0.048544 +vt 0.389535 0.009709 +vt 0.389535 0.019417 +vt 0.389535 0.029126 +vt 0.116279 0.038835 +vt 0.116279 0.048544 +vt 0.116279 0.019417 +vt 0.116279 0.029126 +vt 0.058140 0.048544 +vt 0.058140 0.009709 +vt 0.058140 0.019417 +vt 0.058140 0.029126 +vt 0.058140 0.038835 +vt 0.023256 0.038835 +vt 0.023256 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.023256 0.029126 +vt 0.441860 0.048544 +vt 0.005814 0.048544 +vt 0.005814 0.038835 +vt 0.005814 0.029126 +vt 0.005814 0.019417 +vt 0.005814 0.009709 +vt 0.470930 0.029126 +vt 0.459302 0.038835 +vt 0.459302 0.029126 +vt 0.023256 0.048544 +vt 0.005814 0.038835 +vt 0.023256 0.038835 +vt 0.023256 0.029126 +vt 0.005814 0.029126 +vt 0.023256 0.019417 +vt 0.005814 0.019417 +vt 0.023256 0.009709 +vt 0.005814 0.009709 +vt 0.029070 0.038835 +vt 0.029070 0.029126 +vt 0.697674 0.038835 +vt 0.697674 0.019417 +vt 0.697674 0.009709 +vt 0.651163 0.038835 +vt 0.651163 0.048544 +vt 0.697674 0.048544 +vt 0.651163 0.009709 +vt 0.651163 0.019417 +vt 0.651163 0.029126 +vt 0.436047 0.029126 +vt 0.436047 0.038835 +vt 0.436047 0.048544 +vt 0.436047 0.019417 +vt 0.331395 0.038835 +vt 0.331395 0.048544 +vt 0.331395 0.009709 +vt 0.331395 0.019417 +vt 0.331395 0.029126 +vt 0.029070 0.048544 +vt 0.029070 0.009709 +vt 0.029070 0.019417 +vt 0.680233 0.038835 +vt 0.668605 0.048544 +vt 0.662791 0.038835 +vt 0.662791 0.019417 +vt 0.662791 0.009709 +vt 0.662791 0.029126 +vt 0.488372 0.038835 +vt 0.662791 0.048544 +vt 0.488372 0.048544 +vt 0.488372 0.009709 +vt 0.488372 0.019417 +vt 0.488372 0.029126 +vt 0.383721 0.038835 +vt 0.383721 0.048544 +vt 0.383721 0.009709 +vt 0.383721 0.019417 +vt 0.383721 0.029126 +vt 0.116279 0.038835 +vt 0.116279 0.048544 +vt 0.116279 0.019417 +vt 0.116279 0.029126 +vt 0.052326 0.009709 +vt 0.052326 0.019417 +vt 0.052326 0.029126 +vt 0.052326 0.038835 +vt 0.029070 0.048544 +vt 0.052326 0.048544 +vt 0.029070 0.009709 +vt 0.029070 0.019417 +vt 0.029070 0.029126 +vt 0.029070 0.038835 +vt 0.023256 0.038835 +vt 0.459302 0.009709 +vt 0.459302 0.019417 +vt 0.424419 0.038835 +vt 0.424419 0.048544 +vt 0.459302 0.048544 +vt 0.424419 0.009709 +vt 0.424419 0.019417 +vt 0.424419 0.029126 +vt 0.313953 0.029126 +vt 0.313953 0.038835 +vt 0.313953 0.048544 +vt 0.313953 0.019417 +vt 0.029070 0.038835 +vt 0.029070 0.048544 +vt 0.029070 0.009709 +vt 0.029070 0.019417 +vt 0.029070 0.029126 +vt 0.023256 0.009709 +vt 0.238372 0.019417 +vt 0.296512 0.009709 +vt 0.238372 0.029126 +vt 0.238372 0.048544 +vt 0.296512 0.048544 +vt 0.034884 0.009709 +vt 0.034884 0.019417 +vt 0.034884 0.029126 +vt 0.034884 0.038835 +vt 0.238372 0.038835 +vt 0.034884 0.048544 +vt 0.017442 0.009709 +vt 0.017442 0.048544 +vt 0.308140 0.009709 +vt 0.406977 0.009709 +vt 0.412791 0.009709 +vt 0.406977 0.019417 +vt 0.406977 0.029126 +vt 0.406977 0.048544 +vt 0.406977 0.038835 +vt 0.325581 0.019417 +vt 0.325581 0.029126 +vt 0.325581 0.038835 +vt 0.325581 0.048544 +vt 0.040698 0.019417 +vt 0.325581 0.009709 +vt 0.040698 0.029126 +vt 0.040698 0.038835 +vt 0.040698 0.048544 +vt 0.023256 0.009709 +vt 0.023256 0.019417 +vt 0.023256 0.029126 +vt 0.023256 0.038835 +vt 0.023256 0.048544 +vt 0.005814 0.009709 +vt 0.011628 0.009709 +vt 0.424419 0.009709 +vt 0.005814 0.048544 +vt 0.017442 0.048544 +vt 0.011628 0.009709 +vt 0.011628 0.009709 +vt 0.011628 0.009709 +vt 0.011628 0.009709 +vt 0.424419 0.048544 +vt 0.005814 0.009709 +vt 0.005814 0.009709 +vt 0.005814 0.009709 +vt 0.005814 0.009709 +vt 0.005814 0.009709 +vt 0.005814 0.009709 +vt 0.005814 0.009709 +vt 0.005814 0.009709 +vt 0.005814 0.009709 +vt 0.284884 0.048544 +vt 0.383721 0.048544 +vt 0.005814 0.048544 +vt 0.529070 0.048544 +vt 0.412791 0.048544 +vt 0.715116 0.048544 +vt 0.290698 0.048544 +vt 0.476744 0.048544 +vt 0.581395 0.048544 +vt 0.197674 0.048544 +vt 0.343023 0.048544 +vt 0.180233 0.048544 +vt 0.005814 0.009709 +vt 0.232558 0.048544 +vt 0.482558 0.048544 +vt 0.319767 0.048544 +vt 0.552326 0.048544 +vt 0.122093 0.048544 +vt 0.284884 0.048544 +vt 0.197674 0.009709 +vt 0.058140 0.009709 +vt 0.127907 0.048544 +vt 0.325581 0.009709 +vt 0.069767 0.048544 +vt 0.273256 0.009709 +vt 0.273256 0.009709 +vt 0.331395 0.009709 +vt 0.436047 0.009709 +vt 0.093023 0.009709 +vt 0.488372 0.048544 +vt 0.116279 0.009709 +vt 0.453488 0.048544 +vt 0.005814 0.048544 +vt 0.436047 0.009709 +vt 0.680233 0.048544 +vt 0.116279 0.009709 +vt 0.023256 0.048544 +vt 0.313953 0.009709 +vt 0.238372 0.009709 +vt 0.040698 0.009709 +vn -0.1987 -0.9327 0.3009 +vn -0.4297 -0.5556 -0.7118 +vn -0.0322 -0.8001 0.5990 +vn 0.8167 0.0672 0.5732 +vn 0.5228 0.6581 0.5419 +vn -0.0041 0.9160 -0.4012 +vn 0.0025 0.6642 -0.7475 +vn -0.2349 -0.6674 -0.7066 +vn 0.1861 0.6827 -0.7066 +vn -0.3240 -0.5971 -0.7338 +vn -0.4111 0.7374 -0.5360 +vn -0.0434 0.6814 -0.7306 +vn 0.0026 -0.7882 0.6154 +vn -0.6562 -0.5407 -0.5264 +vn 0.3294 0.7106 0.6217 +vn 0.2890 -0.8069 0.5151 +vn 0.5413 0.6728 0.5043 +vn -0.2631 -0.6162 -0.7423 +vn -0.4144 0.6926 -0.5904 +vn -0.0036 0.6890 -0.7247 +vn 0.0106 -0.7691 0.6390 +vn -0.4894 -0.6433 -0.5888 +vn 0.2780 0.7127 0.6441 +vn -0.1731 -0.5478 0.8185 +vn 0.4082 0.7238 0.5563 +vn -0.2815 -0.6019 -0.7473 +vn -0.5240 0.6396 -0.5624 +vn -0.0329 0.6894 -0.7237 +vn 0.0527 -0.7923 0.6079 +vn -0.5185 -0.6701 -0.5311 +vn 0.3061 0.7107 0.6334 +vn 0.3483 -0.6377 0.6870 +vn 0.3925 0.7915 0.4685 +vn -0.3480 -0.6379 -0.6871 +vn -0.5016 -0.7102 0.4940 +vn -0.7390 -0.1192 -0.6631 +vn -0.2105 -0.7437 0.6346 +vn 0.5180 0.2010 0.8315 +vn 0.4184 0.6429 0.6416 +vn 0.3503 0.7327 -0.5835 +vn 0.2726 0.7074 -0.6521 +vn -0.8686 0.4478 -0.2122 +vn -0.3249 -0.6289 -0.7064 +vn -0.2826 -0.8411 0.4611 +vn -0.7449 -0.2105 -0.6331 +vn -0.1211 -0.7602 0.6383 +vn 0.5858 0.2530 0.7700 +vn 0.4078 0.6594 0.6316 +vn 0.1204 0.8161 -0.5652 +vn 0.4208 0.8642 -0.2758 +vn -0.2328 0.4357 0.8695 +vn -0.1424 0.3654 0.9199 +vn 0.1164 -0.7448 0.6571 +vn 0.1257 -0.7617 -0.6356 +vn -0.0781 -0.6041 -0.7931 +vn 0.0683 0.7675 0.6374 +vn 0.4322 -0.3767 0.8194 +vn -0.0481 0.7362 -0.6750 +vn -0.2721 0.8014 0.5326 +vn 0.2499 -0.9033 0.3486 +vn 0.2764 -0.4564 -0.8457 +vn 0.3547 -0.2366 -0.9045 +vn 0.0214 -0.6144 -0.7887 +vn -0.5098 0.5459 -0.6649 +vn -0.0537 0.7549 -0.6536 +vn 0.1032 -0.6636 0.7409 +vn 0.3203 -0.6132 -0.7221 +vn -0.0290 0.7634 0.6453 +vn 0.2851 -0.5604 0.7776 +vn -0.4289 0.6390 0.6385 +vn 0.1055 0.5991 -0.7937 +vn -0.7651 -0.0157 -0.6437 +vn 0.3776 0.7691 -0.5156 +vn -0.3675 -0.6247 -0.6889 +vn -0.5403 -0.7272 0.4234 +vn -0.1941 -0.7585 0.6221 +vn 0.6650 -0.0222 0.7465 +vn 0.3773 0.6784 0.6304 +vn 0.1253 0.6280 -0.7681 +vn -0.6681 -0.3254 -0.6692 +vn 0.1932 0.7529 -0.6291 +vn -0.3097 -0.6454 -0.6982 +vn -0.3230 -0.7746 0.5437 +vn -0.1680 -0.7435 0.6473 +vn 0.5529 0.3586 0.7521 +vn 0.3940 0.6391 0.6605 +vn 0.1134 -0.7473 0.6548 +vn 0.0412 -0.7952 -0.6050 +vn -0.1031 -0.6071 -0.7879 +vn 0.0994 0.7632 0.6384 +vn 0.4049 -0.4241 0.8101 +vn -0.0390 0.7303 -0.6820 +vn -0.2053 0.8301 0.5185 +vn 0.8458 -0.4633 0.2644 +vn 0.3933 -0.0332 -0.9188 +vn 0.3572 0.1234 -0.9259 +vn 0.0197 0.7699 -0.6379 +vn 0.3813 -0.4495 -0.8078 +vn -0.3840 0.7257 -0.5708 +vn 0.1511 -0.7325 -0.6638 +vn 0.2022 -0.7544 0.6245 +vn -0.0330 -0.5991 0.8000 +vn -0.5785 0.4643 0.6706 +vn -0.0590 0.7452 0.6642 +vn 0.2660 0.5494 -0.7921 +vn -0.6977 -0.2607 -0.6672 +vn 0.5392 0.4678 -0.7003 +vn -0.3682 -0.6581 -0.6568 +vn -0.6589 -0.4275 0.6189 +vn -0.3391 -0.6858 0.6439 +vn 0.5198 0.3263 0.7895 +vn 0.4013 0.5646 0.7212 +vn 0.1574 0.6517 -0.7420 +vn -0.4791 -0.5461 -0.6872 +vn 0.1738 0.7123 -0.6800 +vn -0.2478 -0.6701 -0.6997 +vn -0.2610 -0.7103 0.6537 +vn -0.1769 -0.7169 0.6743 +vn 0.3358 0.6040 0.7228 +vn 0.2714 0.6559 0.7044 +vn 0.0637 0.7755 -0.6282 +vn 0.5355 -0.2746 -0.7987 +vn -0.3209 0.8036 -0.5013 +vn 0.0937 -0.7779 -0.6214 +vn 0.1674 -0.7911 0.5883 +vn -0.0858 -0.5874 0.8048 +vn -0.6290 0.3764 0.6802 +vn -0.0707 0.7365 0.6728 +vn -0.0274 -0.6061 -0.7949 +vn -0.5492 0.4956 -0.6729 +vn -0.0503 0.7458 -0.6643 +vn 0.1415 -0.7141 0.6856 +vn 0.1464 -0.7715 -0.6191 +vn 0.0185 0.7670 0.6414 +vn 0.3708 -0.4877 0.7903 +vn -0.3791 0.7174 0.5845 +vn 0.2682 0.5175 -0.8126 +vn -0.7339 -0.1388 -0.6649 +vn 0.6189 0.4247 -0.6608 +vn -0.4028 -0.6453 -0.6491 +vn -0.7259 -0.3441 0.5955 +vn -0.3715 -0.6781 0.6342 +vn 0.5317 0.2193 0.8181 +vn 0.4652 0.5966 0.6540 +vn -0.8947 0.0303 -0.4457 +vn -0.3087 -0.7240 0.6169 +vn -0.6429 -0.4665 0.6076 +vn 0.6424 -0.0806 0.7621 +vn 0.4092 0.6117 0.6770 +vn 0.2052 0.4256 -0.8813 +vn 0.0785 0.6076 -0.7903 +vn -0.1541 -0.6901 -0.7071 +vn 0.1541 0.6901 -0.7071 +vn -0.7380 0.1716 0.6526 +vn -0.3768 -0.7319 -0.5678 +vn -0.4807 -0.5952 0.6439 +vn 0.1003 0.5476 0.8307 +vn 0.6662 0.5656 0.4861 +vn 0.6275 0.5623 -0.5385 +vn 0.6760 -0.2402 -0.6966 +vn 0.1847 -0.1508 0.9712 +vn 0.0499 -0.6952 -0.7171 +vn -0.0981 -0.6249 0.7745 +vn -0.1198 0.7536 0.6463 +vn -0.8413 0.2036 0.5008 +vn -0.0738 0.7751 -0.6275 +vn -0.7186 0.2744 -0.6390 +vn 0.2823 0.5925 -0.7545 +vn -0.0766 -0.7686 -0.6351 +vn 0.4568 0.3596 -0.8137 +vn 0.4108 0.6761 -0.6117 +vn -0.3244 -0.6204 0.7140 +vn -0.1571 -0.8670 -0.4729 +vn 0.0430 0.6478 0.7606 +vn -0.7702 -0.2511 0.5863 +vn 0.0060 0.8495 0.5276 +vn -0.6346 -0.4263 0.6447 +vn -0.1690 -0.7494 -0.6402 +vn -0.3227 -0.6359 0.7011 +vn 0.0807 0.6449 0.7600 +vn 0.0732 0.7883 0.6109 +vn 0.3775 0.6348 -0.6742 +vn 0.4561 0.5005 -0.7358 +vn -0.0017 0.7596 -0.6504 +vn 0.3155 -0.5701 -0.7586 +vn -0.3876 0.6785 -0.6240 +vn 0.0782 -0.6688 -0.7393 +vn 0.1825 -0.7019 0.6885 +vn -0.0006 -0.6256 0.7801 +vn -0.4645 0.5846 0.6652 +vn -0.0316 0.7504 0.6602 +vn -0.7490 -0.6504 -0.1266 +vn 0.3403 -0.8625 0.3746 +vn 0.6673 -0.6999 0.2549 +vn -0.7240 0.6670 -0.1761 +vn -0.6766 -0.5182 -0.5231 +vn 0.6065 0.7850 0.1262 +vn -0.3891 0.7577 -0.5240 +vn 0.7104 0.5808 0.3976 +vn 0.9360 -0.3489 0.0475 +vn 0.1504 -0.2267 -0.9623 +vn 0.9639 -0.1225 0.2366 +vn -0.9097 0.4116 -0.0547 +vn 0.1790 0.3744 -0.9098 +vn -0.1465 -0.2820 0.9482 +vn -0.9324 0.3108 0.1844 +vn -0.1861 -0.6826 0.7066 +vn 0.2349 0.6674 0.7066 +vn 0.6368 -0.3605 0.6816 +vn 0.5636 0.8227 0.0748 +vn 0.3938 -0.0795 0.9158 +vn -0.1541 -0.6901 0.7071 +vn 0.1541 0.6901 0.7071 +vn -0.1341 0.1854 0.9735 +vn 0.8973 -0.2880 0.3345 +vn -0.2066 0.4012 0.8924 +vn 0.1397 0.5999 -0.7878 +vn 0.0783 0.6345 -0.7690 +vn 0.1359 0.8990 0.4163 +vn 0.0466 0.2350 0.9709 +vn 0.6456 -0.5877 -0.4877 +vn 0.3547 0.6721 -0.6500 +vn 0.2630 0.7857 -0.5599 +vn 0.4795 0.6087 0.6320 +vn 0.9667 -0.1673 -0.1936 +vn 0.8642 -0.3905 -0.3173 +vn 0.6464 0.7413 0.1806 +vn 0.6023 -0.1871 -0.7761 +vn 0.4726 0.8787 -0.0666 +vn -0.4138 -0.6167 -0.6697 +vn 0.7769 -0.0817 0.6243 +vn 0.6816 -0.1570 -0.7146 +vn 0.8539 0.2805 0.4385 +vn -0.3819 -0.6595 -0.6474 +vn 0.2402 0.6116 0.7538 +vn -0.3768 -0.6620 0.6479 +vn 0.7731 0.2130 0.5975 +vn 0.6519 -0.5646 -0.5062 +vn 0.8757 0.3674 0.3135 +vn 0.3347 -0.4721 0.8155 +vn 0.9334 -0.1140 -0.3404 +vn 0.4092 0.2351 0.8816 +vn -0.8497 0.0342 0.5261 +vn -0.6330 0.0984 -0.7678 +vn -0.7932 0.2621 0.5497 +vn -0.1729 0.7512 -0.6370 +vn -0.4712 0.0065 0.8820 +vn -0.2611 -0.9544 0.1444 +vn -0.3929 0.2436 0.8867 +vn 0.2852 0.9511 -0.1184 +vn -0.3122 0.8760 -0.3676 +vn -0.8135 -0.5406 -0.2144 +vn -0.4886 0.2032 0.8485 +vn 0.4018 0.4518 0.7965 +vn 0.7895 0.3989 -0.4665 +vn 0.2153 0.7629 0.6096 +vn 0.8207 0.2092 -0.5316 +vn -0.1640 -0.7047 -0.6903 +vn -0.8343 -0.1971 0.5149 +vn -0.4283 -0.3953 -0.8126 +vn -0.7326 -0.1263 0.6688 +vn 0.8255 0.2021 -0.5270 +vn 0.4050 0.4383 0.8024 +vn -0.8255 -0.2021 0.5270 +vn -0.4050 -0.4383 -0.8024 +vn 0.5512 -0.4219 -0.7198 +vn -0.7104 -0.3079 -0.6329 +vn -0.5454 0.4621 0.6993 +vn -0.7567 0.1368 -0.6393 +vn -0.3768 0.2713 0.8857 +vn 0.4880 0.2185 -0.8450 +vn 0.3818 0.9001 0.2100 +vn -0.6068 0.7171 -0.3429 +vn -0.9275 0.2130 -0.3071 +vn 0.1651 -0.4340 -0.8856 +vn 0.3850 -0.4908 -0.7816 +vn 0.8231 0.4343 0.3659 +vn -0.2725 -0.0363 0.9615 +vn 0.8754 0.0177 0.4831 +vn -0.4555 0.1385 0.8794 +vn -0.9397 -0.0794 -0.3326 +vn 0.4553 -0.1778 -0.8724 +vn -0.8018 -0.4861 -0.3475 +vn 0.9005 0.2043 0.3839 +vn -0.0753 -0.3799 0.9219 +vn 0.9465 -0.2556 0.1970 +vn -0.2968 -0.4084 0.8632 +vn -0.9147 0.3074 -0.2624 +vn 0.2880 0.3635 -0.8859 +vn -0.8699 -0.2801 -0.4061 +vn -0.5841 -0.7385 0.3368 +vn -0.1116 -0.7158 -0.6894 +vn -0.2993 -0.7263 0.6188 +vn 0.6527 0.7016 -0.2861 +vn 0.5372 -0.6386 -0.5511 +vn -0.4582 0.6183 0.6386 +vn 0.2784 0.9477 -0.1559 +vn 0.5644 0.3101 0.7650 +vn -0.0334 0.4046 0.9139 +vn 0.7022 0.5285 -0.4771 +vn -0.1951 -0.4628 -0.8647 +vn 0.7413 0.6178 -0.2622 +vn -0.7412 -0.4814 0.4679 +vn -0.6072 0.1258 -0.7846 +vn 0.5695 -0.0387 0.8211 +vn -0.6237 -0.4191 0.6598 +vn 0.1319 -0.7982 0.5877 +vn 0.9894 -0.1101 -0.0945 +vn 0.3317 -0.2589 0.9071 +vn 0.9229 -0.1076 -0.3696 +vn -0.1720 0.3889 -0.9051 +vn -0.9055 0.1755 0.3863 +vn -0.0534 0.9031 -0.4261 +vn -0.8136 -0.0107 0.5813 +vn 0.9149 -0.1346 -0.3806 +vn 0.1149 -0.8170 0.5651 +vn -0.1149 0.8170 -0.5651 +vn -0.9149 0.1346 0.3805 +vn -0.6417 -0.6459 -0.4136 +vn -0.3821 0.8420 -0.3808 +vn -0.7065 -0.6883 -0.1645 +vn 0.6580 0.6409 0.3953 +vn -0.3559 0.7176 -0.5986 +vn 0.3721 -0.7243 0.5804 +vn 0.8200 0.5213 0.2365 +vn 0.5610 -0.7234 0.4024 +vn -0.7080 -0.6741 0.2105 +vn 0.5748 -0.7962 -0.1886 +vn -0.8752 0.3490 0.3350 +vn -0.4792 -0.6581 -0.5807 +vn 0.8653 -0.3782 0.3289 +vn -0.2807 -0.7853 0.5519 +vn 0.6372 -0.7411 -0.2113 +vn -0.5180 -0.6049 0.6048 +vn -0.6122 0.7706 0.1772 +vn 0.4757 0.5678 -0.6718 +vn -0.8631 0.2704 -0.4266 +vn -0.2540 -0.8889 0.3812 +vn -0.2973 -0.7836 0.5455 +vn -0.3425 0.5823 0.7373 +vn -0.6858 0.5747 0.4465 +vn -0.3263 -0.4130 -0.8503 +vn -0.5737 -0.7394 0.3525 +vn 0.4609 0.5945 0.6589 +vn -0.2703 -0.5498 0.7903 +vn -0.0407 -0.7186 0.6942 +vn 0.2925 0.7527 -0.5898 +vn 0.1464 0.6427 0.7520 +vn 0.0092 0.7270 -0.6866 +vn -0.2542 -0.7843 -0.5658 +vn -0.4950 -0.5784 -0.6484 +vn 0.4732 0.5942 0.6504 +vn -0.0318 -0.7263 0.6866 +vn -0.4732 -0.5942 -0.6504 +vn 0.0318 0.7263 -0.6866 +vn 0.5156 -0.7732 -0.3691 +vn -0.7364 -0.4992 -0.4565 +vn -0.5054 0.7930 0.3402 +vn -0.7567 -0.1865 -0.6267 +vn -0.3983 0.6908 0.6034 +vn 0.5338 -0.2659 -0.8027 +vn 0.5662 0.8138 -0.1306 +vn 0.6100 -0.3559 -0.7079 +vn -0.4050 -0.9141 -0.0185 +vn -0.6263 0.3606 0.6911 +vn -0.6635 -0.7193 -0.2060 +vn -0.4668 0.4479 0.7625 +vn 0.1080 0.9510 -0.2897 +vn -0.2329 -0.1743 0.9567 +vn 0.6717 -0.7263 0.1462 +vn -0.3719 -0.1344 0.9185 +vn -0.7324 0.6351 -0.2456 +vn -0.8581 0.4350 -0.2728 +vn 0.1661 -0.2106 -0.9633 +vn -0.3430 0.9364 0.0747 +vn -0.6911 -0.2147 -0.6901 +vn -0.2434 0.0053 -0.9699 +vn 0.3164 0.0251 0.9483 +vn -0.2154 0.9453 0.2449 +vn 0.5033 -0.8631 0.0415 +vn 0.6902 0.1939 0.6971 +vn 0.4746 -0.8751 -0.0949 +vn 0.5283 0.5594 -0.6387 +vn -0.4281 -0.6918 -0.5815 +vn -0.0044 -0.7265 -0.6872 +vn 0.0569 0.7064 0.7055 +vn 0.3348 0.7987 -0.5000 +vn -0.1546 -0.6357 0.7563 +vn 0.3769 0.4792 0.7927 +vn 0.1890 0.3140 0.9304 +vn 0.0563 -0.9287 0.3666 +vn 0.4215 -0.8770 0.2306 +vn -0.1489 0.9889 -0.0026 +vn -0.1696 0.1151 0.9788 +vn -0.4754 0.8520 -0.2192 +vn 0.1701 -0.4667 -0.8679 +vn -0.2498 -0.3312 -0.9099 +vn 0.2041 0.3303 0.9216 +vn 0.4386 -0.8724 0.2156 +vn -0.2041 -0.3303 -0.9216 +vn -0.4386 0.8724 -0.2156 +vn -0.0958 -0.7667 0.6348 +vn -0.6132 -0.6768 -0.4072 +vn 0.3413 -0.8457 0.4102 +vn -0.4209 -0.5140 -0.7474 +vn -0.0863 0.9762 -0.1987 +vn 0.4885 0.5012 0.7142 +vn 0.1795 0.7247 -0.6653 +vn 0.6291 0.7573 -0.1751 +vn -0.2848 0.2525 -0.9247 +vn -0.6573 -0.7283 0.1935 +vn -0.6652 0.3941 -0.6342 +vn -0.4200 -0.8624 0.2825 +vn -0.2708 0.1673 0.9480 +vn 0.4379 -0.1541 -0.8857 +vn -0.6430 0.6024 -0.4730 +vn 0.5907 -0.2668 -0.7615 +vn -0.4049 0.1976 0.8927 +vn -0.1982 0.9410 -0.2743 +vn 0.2786 -0.9100 0.3070 +vn -0.2843 0.0119 0.9586 +vn 0.8624 0.2612 0.4336 +vn 0.6756 -0.5956 0.4346 +vn 0.2653 -0.3415 -0.9017 +vn 0.2986 0.9157 -0.2689 +vn 0.1365 -0.3645 -0.9212 +vn -0.3365 -0.8709 0.3583 +vn -0.4280 -0.8614 0.2735 +vn 0.6924 -0.3819 -0.6122 +vn 0.3992 -0.9112 0.1021 +vn 0.3246 0.1860 0.9274 +vn 0.1185 -0.9056 0.4073 +vn 0.6368 0.3335 0.6952 +vn -0.0183 0.9992 -0.0366 +vn -0.6853 -0.3414 -0.6433 +vn -0.4501 0.8913 -0.0558 +vn -0.3135 -0.5477 -0.7757 +vn 0.6484 0.3485 0.6769 +vn 0.4082 -0.9096 0.0773 +vn -0.6484 -0.3485 -0.6769 +vn -0.4082 0.9096 -0.0773 +vn -0.3210 -0.8300 0.4562 +vn -0.6943 0.3903 0.6046 +vn -0.0034 0.8914 -0.4532 +vn -0.9766 0.1648 -0.1381 +vn -0.4063 0.8092 0.4244 +vn 0.2642 -0.9099 -0.3197 +vn 0.6182 0.6582 -0.4296 +vn -0.6470 0.7509 -0.1324 +vn -0.8747 -0.4842 -0.0214 +vn 0.8025 0.5477 0.2367 +vn 0.3362 -0.3065 -0.8905 +vn 0.2268 -0.4975 -0.8373 +vn -0.5725 0.4524 -0.6838 +vn -0.7144 0.1696 0.6788 +vn 0.3935 0.9071 0.1492 +vn -0.4974 -0.8672 -0.0226 +vn 0.6116 -0.4102 -0.6765 +vn 0.7246 0.6868 0.0569 +vn 0.3657 -0.9172 0.1581 +vn -0.7300 -0.3981 0.5556 +vn 0.0714 0.9675 -0.2427 +vn 0.9870 -0.0412 0.1553 +vn -0.3877 -0.8217 0.4178 +vn -0.7500 -0.5546 -0.3604 +vn 0.3517 0.8382 0.4168 +vn -0.8003 0.5975 0.0502 +vn -0.1623 -0.7226 0.6719 +vn -0.5460 0.4845 0.6835 +vn -0.9104 0.0213 -0.4132 +vn 0.7965 0.0791 0.5995 +vn 0.2178 0.9745 0.0544 +vn -0.2725 -0.9457 0.1773 +vn 0.3271 -0.0944 -0.9402 +vn -0.0894 0.9675 -0.2364 +vn -0.8719 -0.0755 -0.4839 +vn -0.9938 0.0941 0.0589 +vn 0.9998 -0.0174 0.0077 +vn -0.2200 -0.9383 0.2667 +vn -0.7517 0.2021 0.6277 +vn 0.0117 0.9977 -0.0670 +vn 0.7580 -0.1398 -0.6371 +vn -0.2097 -0.9497 0.2325 +vn 0.4615 0.5732 -0.6771 +vn -0.5932 0.7810 0.1952 +vn -0.4711 0.8332 0.2896 +vn -0.2876 0.3872 0.8760 +vn 0.2811 -0.4577 -0.8435 +vn 0.3577 0.9110 -0.2051 +vn -0.3941 -0.8261 0.4027 +vn 0.4298 0.8782 0.2101 +vn -0.8149 0.5790 -0.0280 +vn 0.6148 -0.7839 0.0867 +vn -0.7295 -0.6585 -0.1848 +vn -0.6685 0.4797 0.5683 +vn 0.4678 0.8795 -0.0877 +vn 0.5949 -0.5882 -0.5479 +vn -0.6039 -0.7701 0.2056 +vn -0.3291 0.8416 0.4282 +vn 0.2781 0.4194 0.8642 +vn 0.5038 0.6762 -0.5376 +vn -0.5943 -0.4566 0.6621 +vn 0.5481 -0.7374 -0.3948 +vn 0.8556 -0.3745 0.3573 +vn -0.6550 -0.4905 0.5748 +vn -0.6499 0.7288 0.2155 +vn 0.4264 0.5950 -0.6813 +vn 0.6335 -0.7499 -0.1903 +vn -0.4599 -0.5565 0.6919 +vn 0.8109 0.3794 -0.4456 +vn -0.8100 -0.1752 0.5596 +vn 0.2914 -0.7470 -0.5976 +vn 0.2690 0.6740 -0.6880 +vn -0.8448 0.5217 -0.1193 +vn 0.7547 -0.5933 0.2801 +vn -0.6461 -0.4114 0.6429 +vn -0.3883 0.8721 0.2978 +vn 0.3508 0.5176 -0.7804 +vn 0.3826 -0.8795 -0.2829 +vn -0.4180 -0.3621 0.8332 +vn 0.8765 0.2784 -0.3927 +vn -0.8407 -0.2444 0.4833 +vn -0.1261 -0.5163 -0.8471 +vn 0.3504 0.5253 0.7754 +vn 0.8547 -0.2614 0.4485 +vn 0.0839 0.5954 -0.7990 +vn -0.5247 -0.5033 0.6866 +vn -0.6983 0.7157 0.0145 +vn 0.3298 0.5010 -0.8001 +vn 0.7411 -0.6602 -0.1225 +vn -0.4331 -0.4093 0.8031 +vn -0.9589 0.1474 -0.2423 +vn 0.5949 0.6374 -0.4898 +vn 0.1486 -0.7505 -0.6439 +vn 0.4890 -0.8146 -0.3119 +vn -0.5073 -0.4918 0.7076 +vn -0.6247 -0.3704 0.6874 +vn -0.0710 0.8171 0.5721 +vn 0.4464 0.5441 -0.7104 +vn 0.5914 -0.7831 -0.1927 +vn -0.4738 -0.5082 0.7192 +vn 0.5172 0.4376 -0.7356 +vn -0.5878 -0.1870 0.7871 +vn 0.3673 -0.8894 -0.2722 +vn 0.0349 0.4740 -0.8798 +vn -0.9371 0.0139 -0.3487 +vn 0.7538 -0.1086 0.6480 +vn -0.5897 -0.4279 0.6849 +vn -0.6510 0.7559 -0.0687 +vn 0.3060 0.3065 -0.9013 +vn 0.6576 -0.7530 0.0232 +vn -0.4199 -0.1893 0.8876 +vn -0.2473 0.9580 0.1455 +vn -0.2020 -0.9484 0.2444 +vn 0.5830 -0.6765 0.4500 +vn -0.4605 0.1303 0.8781 +vn 0.4085 -0.4306 -0.8048 +vn 0.2165 0.9668 -0.1358 +vn 0.3120 -0.4462 -0.8388 +vn 0.2631 -0.1403 -0.9545 +vn -0.5192 -0.5257 -0.6738 +vn -0.8836 -0.0571 -0.4648 +vn -0.7339 0.3227 0.5977 +vn -0.8435 -0.1810 -0.5057 +vn 0.7459 0.0919 0.6597 +vn -0.6172 -0.7793 -0.1086 +vn -0.5849 0.2350 0.7763 +vn 0.6106 0.7832 0.1175 +vn 0.4756 -0.3733 -0.7965 +vn 0.6124 -0.0786 -0.7866 +vn -0.3226 0.1594 0.9330 +vn -0.8634 -0.2877 -0.4145 +vn 0.4235 0.1895 -0.8858 +vn -0.1220 0.9649 -0.2326 +vn 0.4553 -0.0643 -0.8880 +vn 0.5315 -0.4396 0.7241 +vn 0.1099 -0.9620 0.2501 +vn -0.4799 0.2512 0.8406 +vn -0.7576 0.1088 0.6436 +vn -0.7008 0.5242 -0.4838 +vn 0.1837 0.9773 -0.1054 +vn 0.5751 -0.0263 -0.8176 +vn 0.4974 -0.1172 -0.8595 +vn -0.5375 -0.8324 -0.1348 +vn -0.1628 -0.9842 0.0700 +vn -0.4796 0.2149 0.8508 +vn -0.4151 0.2790 0.8659 +vn 0.5206 0.8375 0.1659 +vn 0.1999 0.2686 0.9423 +vn 0.4974 0.6591 -0.5640 +vn 0.5980 0.1225 -0.7921 +vn -0.6773 0.1812 -0.7131 +vn 0.2671 -0.2905 0.9188 +vn -0.8915 -0.1078 0.4400 +vn 0.3109 -0.6088 -0.7299 +vn -0.2057 -0.2590 0.9437 +vn -0.1071 -0.9928 -0.0531 +vn 0.1601 0.9863 -0.0400 +vn 0.2084 -0.0774 -0.9750 +vn -0.6295 -0.7689 -0.1116 +vn -0.7003 -0.7117 -0.0558 +vn -0.0933 -0.0398 0.9948 +vn -0.2426 0.0430 0.9692 +vn 0.6697 0.7197 0.1831 +vn 0.7238 0.6792 0.1215 +vn 0.1418 0.0367 -0.9892 +vn 0.2546 -0.2867 -0.9236 +vn -0.8678 -0.4559 -0.1977 +vn -0.4612 0.1783 0.8692 +vn 0.8370 0.4766 0.2687 +vn 0.1574 -0.5422 -0.8254 +vn -0.9128 0.1144 -0.3920 +vn -0.4638 0.5400 0.7024 +vn 0.7789 -0.0185 0.6269 +vn -0.5785 0.4621 -0.6722 +vn 0.4140 -0.2452 -0.8766 +vn -0.3969 0.3223 0.8594 +vn -0.0643 -0.9634 0.2601 +vn 0.4249 -0.1725 -0.8886 +vn 0.1659 -0.8895 0.4257 +vn -0.4703 0.3457 0.8120 +vn -0.2182 0.9112 -0.3495 +vn 0.5066 0.0654 -0.8597 +vn 0.5320 -0.3871 0.7531 +vn -0.7423 0.1524 0.6525 +vn -0.6625 0.5178 -0.5412 +vn -0.3562 -0.8956 -0.2664 +vn -0.3446 0.1057 0.9328 +vn -0.1992 0.9799 0.0053 +vn 0.3336 0.1680 -0.9276 +vn 0.2019 -0.9794 -0.0085 +vn -0.3694 0.0117 0.9292 +vn 0.3135 0.2266 -0.9222 +vn 0.6053 -0.7645 0.2216 +vn -0.4899 -0.0173 0.8716 +vn -0.6371 0.7546 -0.1572 +vn -0.7236 -0.5849 -0.3664 +vn -0.5327 -0.8438 0.0647 +vn -0.3446 0.5336 0.7724 +vn 0.1284 0.9133 -0.3865 +vn 0.2985 -0.3186 -0.8997 +vn -0.1022 -0.9435 0.3152 +vn -0.2823 0.4325 0.8563 +vn 0.3348 -0.2232 -0.9155 +vn 0.2145 -0.8276 0.5187 +vn -0.4124 0.4160 0.8104 +vn -0.3006 0.8738 -0.3824 +vn 0.3416 0.1692 -0.9245 +vn 0.4642 -0.1135 0.8784 +vn -0.8134 -0.1030 0.5724 +vn -0.8122 0.1267 -0.5695 +vn 0.9415 -0.2104 -0.2631 +vn 0.0633 -0.9271 0.3694 +vn -0.9104 -0.1301 0.3928 +vn -0.1711 0.9275 -0.3324 +vn -0.0690 -0.8846 -0.4613 +vn -0.8465 -0.2876 0.4481 +vn 0.3498 0.8982 0.2664 +vn 0.7957 -0.0475 -0.6039 +vn -0.5592 -0.4258 0.7113 +vn 0.5651 0.5927 0.5739 +vn 0.4646 0.3662 -0.8063 +vn -0.7067 0.0222 0.7072 +vn 0.4937 0.0294 0.8691 +vn 0.7111 0.1980 -0.6746 +vn 0.5981 0.0137 -0.8013 +vn 0.6127 -0.7754 0.1525 +vn -0.7857 0.6172 0.0416 +vn -0.4353 -0.5450 0.7166 +vn 0.1299 -0.7822 -0.6094 +vn -0.6591 -0.6440 0.3884 +vn -0.1085 0.7966 0.5946 +vn 0.7068 0.3494 -0.6151 +vn 0.7064 0.3379 -0.6220 +vn -0.4297 -0.3527 -0.8313 +vn -0.8181 -0.4300 0.3817 +vn 0.3101 0.2952 0.9037 +vn 0.7115 0.0658 -0.6996 +vn -0.5774 0.3389 -0.7428 +vn -0.9075 0.0416 0.4179 +vn 0.3667 -0.3583 0.8586 +vn -0.2755 0.9545 0.1143 +vn -0.9270 -0.3737 0.0329 +vn 0.9256 0.3770 0.0335 +vn -0.7865 -0.4321 0.4412 +vn -0.2490 0.9599 0.1285 +vn 0.8157 0.3547 -0.4569 +vn 0.4216 -0.8783 -0.2255 +vn -0.4351 -0.4289 0.7917 +vn -0.1481 0.9665 0.2094 +vn 0.4549 0.3426 -0.8220 +vn 0.2574 -0.8763 -0.4072 +vn 0.0335 -0.9107 -0.4116 +vn -0.0791 -0.4056 0.9106 +vn -0.0265 0.9485 0.3156 +vn 0.0798 0.3353 -0.9387 +vn 0.3401 -0.3729 0.8633 +vn 0.0044 0.9708 0.2399 +vn -0.3684 0.3597 -0.8573 +vn -0.1224 -0.8686 -0.4803 +vn 0.9876 0.1284 -0.0904 +vn -0.2107 0.9162 0.3407 +vn -0.9769 0.1397 -0.1614 +vn -0.3239 -0.8267 -0.4601 +vn 0.3711 -0.9220 -0.1109 +vn -0.3999 0.9080 0.1250 +vn 0.8647 0.4267 -0.2651 +vn 0.2298 -0.7115 -0.6640 +vn -0.4953 -0.6927 0.5242 +vn -0.1132 0.8403 0.5301 +vn 0.5370 0.5298 -0.6565 +vn -0.1055 -0.6795 -0.7261 +vn -0.2539 -0.6941 0.6737 +vn 0.1121 0.7165 0.6885 +vn 0.2393 0.6455 -0.7253 +vn 0.1504 -0.9154 0.3734 +vn 0.4241 0.8094 0.4062 +vn -0.3577 0.7131 -0.6029 +vn -0.5820 -0.4526 -0.6756 +vn -0.8391 -0.3764 -0.3927 +vn 0.7841 -0.5636 -0.2600 +vn 0.6074 0.6459 0.4624 +vn -0.6371 0.7212 0.2719 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.7071 0.7071 -0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7565 0.2801 0.5910 +vn 0.5443 -0.8297 -0.1235 +vn 0.8828 0.4547 0.1177 +vn 0.8838 -0.4285 0.1878 +vn -0.6795 -0.7130 -0.1730 +vn -0.2525 -0.9041 -0.3447 +vn -0.8862 0.2546 -0.3871 +vn -0.7540 0.6569 -0.0005 +vn 0.1598 0.9663 0.2016 +vn 0.6875 0.7038 0.1787 +vn 0.6206 -0.7828 -0.0449 +vn -0.1026 -0.7106 -0.6961 +vn -0.3012 0.4964 -0.8142 +vn 0.1147 -0.9166 0.3830 +vn -0.1488 0.9297 -0.3370 +vn -0.6268 -0.3634 -0.6893 +vn 0.4333 -0.8807 0.1914 +vn -0.7989 -0.4539 -0.3947 +vn -0.1489 0.9872 -0.0565 +vn 0.8655 0.2728 0.4202 +vn 0.9019 0.3333 -0.2748 +vn 0.4442 -0.8537 -0.2717 +vn -0.8436 -0.4830 0.2346 +vn -0.1912 0.9616 0.1970 +vn 0.2033 -0.8017 -0.5622 +vn -0.4912 -0.5450 0.6795 +vn -0.0721 0.9248 0.3736 +vn 0.5095 0.4379 -0.7407 +vn 0.3860 -0.5540 0.7376 +vn -0.0119 0.9527 0.3037 +vn -0.4849 -0.5845 0.6506 +vn 0.3445 -0.8966 0.2782 +vn -0.0772 0.9793 -0.1873 +vn -0.8300 -0.5010 -0.2453 +vn 0.9119 0.1938 0.3618 +vn 0.3814 -0.8538 -0.3543 +vn -0.8523 -0.4728 0.2238 +vn -0.1429 0.9481 0.2840 +vn 0.9097 0.3007 -0.2865 +vn 0.1304 -0.7520 -0.6461 +vn -0.5343 -0.5766 0.6181 +vn -0.0021 0.8722 0.4892 +vn 0.5445 0.4768 -0.6901 +vn -0.0902 -0.7405 -0.6660 +vn -0.2096 -0.6247 0.7522 +vn 0.1063 0.7960 0.5958 +vn 0.2020 0.5904 -0.7814 +vn 0.3252 -0.6269 0.7080 +vn 0.0485 0.8656 0.4984 +vn -0.3481 0.6422 -0.6829 +vn -0.1956 -0.6185 -0.7610 +vn 0.9736 -0.0040 -0.2282 +vn -0.2017 0.7745 0.5995 +vn -0.9944 0.0933 0.0504 +vn -0.4004 -0.6883 -0.6049 +vn -0.1248 -0.7838 -0.6083 +vn -0.8725 -0.4818 -0.0812 +vn -0.4472 0.8721 0.1986 +vn 0.5213 -0.7642 -0.3797 +vn -0.7499 -0.6135 0.2476 +vn -0.3307 0.8915 0.3096 +vn 0.8182 0.4883 -0.3035 +vn 0.5073 0.5487 -0.6645 +vn 0.2258 -0.7195 -0.6568 +vn -0.4715 -0.6893 0.5501 +vn -0.1392 0.8252 0.5474 +vn -0.2674 -0.5836 -0.7667 +vn -0.0568 -0.8294 0.5558 +vn 0.3050 0.7751 0.5533 +vn 0.0095 0.6415 -0.7671 +vn -0.0947 -0.7168 -0.6909 +vn 0.6058 0.3301 -0.7240 +vn -0.4589 -0.6586 0.5963 +vn 0.4527 0.5344 -0.7138 +vn 0.5595 0.4568 -0.6916 +vn -0.4402 -0.5088 -0.7398 +vn -0.6433 -0.5243 0.5579 +vn 0.3556 0.4699 0.8079 +vn 0.0817 0.6801 0.7285 +vn 0.3670 -0.0994 -0.9249 +vn 0.4477 0.2074 -0.8698 +vn 0.4768 0.2563 -0.8408 +vn 0.5041 -0.8597 -0.0821 +vn -0.2968 -0.4352 0.8500 +vn -0.4614 0.8538 0.2413 +vn -0.0479 -0.9042 -0.4244 +vn -0.5334 -0.4823 0.6949 +vn 0.0086 0.8769 0.4806 +vn 0.5231 0.2213 -0.8231 +vn -0.4604 -0.6189 -0.6364 +vn -0.6689 -0.3560 0.6525 +vn 0.4275 0.6255 0.6527 +vn 0.5744 0.2549 -0.7779 +vn 0.4376 -0.0943 -0.8942 +vn -0.7630 0.0448 -0.6449 +vn -0.8311 0.0761 0.5509 +vn 0.3769 -0.0973 0.9211 +s 1 +f 900/1/1 2/2/2 3/3/3 +f 899/4/4 3/3/3 4/5/5 +f 898/6/6 4/7/5 1/8/7 +f 254/9/8 1/8/7 253/10/9 +f 6/11/10 10/12/11 5/13/12 +f 7/14/13 9/15/14 6/11/10 +f 8/16/15 12/17/16 7/18/13 +f 5/13/12 11/19/17 8/16/15 +f 14/20/18 18/21/19 13/22/20 +f 15/23/21 17/24/22 14/20/18 +f 16/25/23 20/26/24 15/27/21 +f 13/22/20 19/28/25 16/25/23 +f 22/29/26 26/30/27 21/31/28 +f 23/32/29 25/33/30 22/29/26 +f 24/34/31 28/35/32 23/36/29 +f 21/31/28 27/37/33 24/34/31 +f 862/38/34 32/39/35 29/40/36 +f 863/41/37 31/42/38 32/39/35 +f 864/43/39 30/44/40 31/45/38 +f 518/46/41 29/40/36 517/47/42 +f 866/48/43 36/49/44 33/50/45 +f 867/51/46 35/52/47 36/49/44 +f 868/53/48 34/54/49 35/55/47 +f 450/56/50 353/57/51 449/58/52 +f 871/59/53 37/60/54 870/61/55 +f 872/62/56 40/63/57 871/64/53 +f 869/65/58 39/66/59 872/62/56 +f 358/67/60 161/68/61 357/69/62 +f 42/70/63 46/71/64 41/72/65 +f 43/73/66 45/74/67 42/70/63 +f 44/75/68 48/76/69 43/77/66 +f 41/72/65 47/78/70 44/75/68 +f 49/79/71 53/80/72 54/81/73 +f 50/82/74 56/83/75 53/80/72 +f 51/84/76 55/85/77 56/83/75 +f 52/86/78 54/81/73 55/87/77 +f 57/88/79 61/89/80 62/90/81 +f 58/91/82 64/92/83 61/89/80 +f 59/93/84 63/94/85 64/92/83 +f 60/95/86 62/90/81 63/96/85 +f 875/97/87 65/98/88 874/99/89 +f 876/100/90 68/101/91 875/102/87 +f 873/103/92 67/104/93 876/100/90 +f 422/105/94 225/106/95 421/107/96 +f 69/108/97 73/109/98 74/110/99 +f 70/111/100 76/112/101 73/113/98 +f 71/114/102 75/115/103 76/112/101 +f 72/116/104 74/110/99 75/115/103 +f 77/117/105 81/118/106 82/119/107 +f 78/120/108 84/121/109 81/118/106 +f 79/122/110 83/123/111 84/121/109 +f 80/124/112 82/119/107 83/125/111 +f 85/126/113 89/127/114 90/128/115 +f 86/129/116 92/130/117 89/127/114 +f 87/131/118 91/132/119 92/130/117 +f 88/133/120 90/128/115 91/134/119 +f 93/135/121 97/136/122 98/137/123 +f 94/138/124 100/139/125 97/140/122 +f 95/141/126 99/142/127 100/139/125 +f 96/143/128 98/137/123 99/142/127 +f 102/144/129 106/145/130 101/146/131 +f 103/147/132 105/148/133 102/144/129 +f 104/149/134 108/150/135 103/151/132 +f 101/146/131 107/152/136 104/149/134 +f 109/153/137 113/154/138 114/155/139 +f 110/156/140 116/157/141 113/154/138 +f 111/158/142 115/159/143 116/157/141 +f 112/160/144 114/155/139 115/161/143 +f 657/162/145 119/163/146 660/164/147 +f 659/165/148 119/163/146 120/166/149 +f 658/167/150 120/168/149 117/169/151 +f 322/170/152 117/169/151 321/171/153 +f 908/172/154 122/173/155 123/174/156 +f 908/172/154 124/175/157 907/176/158 +f 907/176/158 121/177/159 906/178/160 +f 326/179/152 121/180/159 325/181/153 +f 844/182/161 126/183/162 127/184/163 +f 844/182/161 128/185/164 843/186/165 +f 843/186/165 125/187/166 842/188/167 +f 330/189/152 125/187/166 329/190/153 +f 334/191/152 129/192/168 333/193/153 +f 134/194/169 138/195/170 133/196/171 +f 135/197/172 137/198/173 134/194/169 +f 136/199/174 140/200/175 135/197/172 +f 133/201/171 139/202/176 136/199/174 +f 912/203/177 142/204/178 143/205/179 +f 912/203/177 144/206/180 911/207/181 +f 911/207/181 141/208/182 910/209/183 +f 342/210/152 141/211/182 341/212/153 +f 145/213/184 149/214/185 150/215/186 +f 146/216/187 152/217/188 149/218/185 +f 147/219/189 151/220/190 152/217/188 +f 148/221/191 150/215/186 151/220/190 +f 754/222/192 759/223/193 753/224/194 +f 755/225/195 758/226/196 754/222/192 +f 756/227/197 757/228/198 755/225/195 +f 753/229/194 760/230/199 756/227/197 +f 154/231/200 159/232/201 158/233/202 +f 156/234/203 159/235/201 155/236/204 +f 153/237/205 160/238/206 156/234/203 +f 286/239/152 49/79/71 285/240/153 +f 3/3/3 254/9/8 255/241/207 +f 4/5/5 255/241/207 256/242/208 +f 1/8/7 256/243/208 253/10/9 +f 441/244/209 246/245/210 245/246/211 +f 259/247/212 6/11/10 258/248/152 +f 259/249/212 8/16/15 7/18/13 +f 257/250/153 8/16/15 260/251/213 +f 262/252/152 13/22/20 261/253/153 +f 263/254/212 14/20/18 262/252/152 +f 263/255/212 16/25/23 15/27/21 +f 261/253/153 16/25/23 264/256/213 +f 266/257/152 21/31/28 265/258/153 +f 267/259/212 22/29/26 266/257/152 +f 267/260/212 24/34/31 23/36/29 +f 265/258/153 24/34/31 268/261/213 +f 175/262/214 370/263/215 371/264/216 +f 269/265/153 862/38/34 861/266/217 +f 271/267/212 862/38/34 270/268/152 +f 272/269/213 863/41/37 271/267/212 +f 269/265/153 864/43/39 272/270/213 +f 274/271/152 865/272/218 273/273/153 +f 275/274/212 866/48/43 274/271/152 +f 275/274/212 868/275/48 867/51/46 +f 273/273/153 868/53/48 276/276/213 +f 277/277/153 870/61/55 869/65/58 +f 279/278/212 870/61/55 278/279/152 +f 280/280/213 871/64/53 279/281/212 +f 277/277/153 872/62/56 280/280/213 +f 287/282/212 50/82/74 286/239/152 +f 287/282/212 52/283/78 51/84/76 +f 285/240/153 52/86/78 288/284/213 +f 158/233/202 537/285/219 157/286/220 +f 291/287/212 58/91/82 290/288/152 +f 291/287/212 60/289/86 59/93/84 +f 289/290/153 60/95/86 292/291/213 +f 258/248/152 5/13/12 257/250/153 +f 293/292/153 874/99/89 873/103/92 +f 295/293/212 874/99/89 294/294/152 +f 296/295/213 875/102/87 295/296/212 +f 293/292/153 876/100/90 296/295/213 +f 299/297/212 70/111/100 298/298/152 +f 299/297/212 72/116/104 71/114/102 +f 297/299/153 72/116/104 300/300/213 +f 406/301/221 209/302/222 405/303/223 +f 303/304/212 78/120/108 302/305/152 +f 303/304/212 80/306/112 79/122/110 +f 301/307/153 80/124/112 304/308/213 +f 307/309/212 86/129/116 306/310/152 +f 307/309/212 88/311/120 87/131/118 +f 305/312/153 88/133/120 308/313/213 +f 290/288/152 57/88/79 289/290/153 +f 311/314/212 94/138/124 310/315/152 +f 311/314/212 96/143/128 95/141/126 +f 309/316/153 96/143/128 312/317/213 +f 315/318/212 102/144/129 314/319/152 +f 315/320/212 104/149/134 103/151/132 +f 313/321/153 104/149/134 316/322/213 +f 398/323/224 201/324/225 397/325/226 +f 319/326/212 110/156/140 318/327/152 +f 319/326/212 112/328/144 111/158/142 +f 317/329/153 112/160/144 320/330/213 +f 417/331/227 222/332/228 221/333/229 +f 323/334/212 118/335/230 322/170/152 +f 323/334/212 120/166/149 119/163/146 +f 321/171/153 120/168/149 324/336/213 +f 365/337/231 170/338/232 169/339/233 +f 327/340/212 122/173/155 326/179/152 +f 327/340/212 124/175/157 123/174/156 +f 325/341/153 124/175/157 328/342/213 +f 331/343/212 126/183/162 330/344/152 +f 331/343/212 128/185/164 127/184/163 +f 329/190/153 128/185/164 332/345/213 +f 335/346/212 130/347/234 334/191/152 +f 335/346/212 132/348/235 131/349/236 +f 333/193/153 132/350/235 336/351/213 +f 413/352/237 218/353/238 217/354/239 +f 339/355/212 134/194/169 338/356/152 +f 339/355/212 136/199/174 135/197/172 +f 337/357/153 136/199/174 340/358/213 +f 343/359/212 142/204/178 342/210/152 +f 343/359/212 144/206/180 143/205/179 +f 341/360/153 144/206/180 344/361/213 +f 347/362/212 146/216/187 346/363/152 +f 347/362/212 148/221/191 147/219/189 +f 345/364/153 148/221/191 348/365/213 +f 201/324/225 350/366/240 349/367/241 +f 202/368/242 351/369/243 350/366/240 +f 204/370/244 351/369/243 203/371/245 +f 204/372/244 349/367/241 352/373/246 +f 358/67/60 163/374/247 162/375/248 +f 359/376/249 164/377/250 163/374/247 +f 357/69/62 164/378/250 360/379/251 +f 490/380/252 163/374/247 491/381/253 +f 877/382/254 166/383/255 165/384/256 +f 878/385/257 167/386/258 166/383/255 +f 880/387/259 167/388/258 879/389/260 +f 877/382/254 168/390/261 880/387/259 +f 362/391/262 877/382/254 361/392/263 +f 362/391/262 879/393/260 878/385/257 +f 364/394/264 879/389/260 363/395/265 +f 364/394/264 877/382/254 880/387/259 +f 366/396/266 171/397/267 170/338/232 +f 368/398/268 171/399/267 367/400/269 +f 365/337/231 172/401/270 368/398/268 +f 169/339/233 646/402/271 645/403/272 +f 176/404/273 371/264/216 372/405/274 +f 176/406/273 369/407/275 173/408/276 +f 374/409/277 179/410/278 178/411/279 +f 375/412/280 180/413/281 179/410/278 +f 373/414/282 180/413/281 376/415/283 +f 378/416/284 183/417/285 182/418/286 +f 379/419/287 184/420/288 183/417/285 +f 377/421/289 184/420/288 380/422/290 +f 382/423/291 187/424/292 186/425/293 +f 384/426/294 187/427/292 383/428/295 +f 381/429/296 188/430/297 384/426/294 +f 186/425/293 773/431/298 185/432/299 +f 386/433/300 191/434/301 190/435/302 +f 388/436/303 191/437/301 387/438/304 +f 385/439/305 192/440/306 388/436/303 +f 881/441/307 194/442/308 193/443/309 +f 882/444/310 195/445/311 194/442/308 +f 884/446/312 195/447/311 883/448/313 +f 881/441/307 196/449/314 884/446/312 +f 390/450/315 881/441/307 389/451/316 +f 391/452/317 882/444/310 390/450/315 +f 391/453/317 884/446/312 883/448/313 +f 392/454/318 881/441/307 884/446/312 +f 394/455/319 199/456/320 198/457/321 +f 396/458/322 199/456/320 395/459/323 +f 393/460/324 200/461/325 396/458/322 +f 197/462/326 734/463/327 733/464/328 +f 398/323/224 203/371/245 202/368/242 +f 399/465/329 204/370/244 203/371/245 +f 397/325/226 204/372/244 400/466/330 +f 402/467/331 207/468/332 206/469/333 +f 403/470/334 208/471/335 207/468/332 +f 401/472/336 208/471/335 404/473/337 +f 211/474/338 406/301/221 407/475/339 +f 212/476/340 407/475/339 408/477/341 +f 405/478/223 212/476/340 408/477/341 +f 614/479/342 211/474/338 615/480/343 +f 886/481/344 213/482/345 885/483/346 +f 886/481/344 215/484/347 214/485/348 +f 887/486/349 216/487/350 215/484/347 +f 885/483/346 216/488/350 888/489/351 +f 410/490/352 885/483/346 409/491/353 +f 410/490/352 887/486/349 886/481/344 +f 412/492/354 887/486/349 411/493/355 +f 409/491/353 888/489/351 412/494/354 +f 414/495/356 219/496/357 218/353/238 +f 416/497/358 219/498/357 415/499/359 +f 413/352/237 220/500/360 416/497/358 +f 217/354/239 662/501/361 661/502/362 +f 418/503/363 223/504/364 222/332/228 +f 420/505/365 223/506/364 419/507/366 +f 417/331/227 224/508/367 420/505/365 +f 222/332/228 633/509/368 221/333/229 +f 422/105/94 227/510/369 226/511/370 +f 423/512/371 228/513/372 227/510/369 +f 421/107/96 228/514/372 424/515/373 +f 226/511/370 617/516/374 225/106/95 +f 427/517/375 230/518/376 426/519/377 +f 428/520/378 231/521/379 427/517/375 +f 428/520/378 229/522/380 232/523/381 +f 230/524/376 709/525/382 229/522/380 +f 431/526/383 234/527/384 430/528/385 +f 432/529/386 235/530/387 431/526/383 +f 432/529/386 233/531/388 236/532/389 +f 890/533/390 237/534/391 889/535/392 +f 890/533/390 239/536/393 238/537/394 +f 891/538/395 240/539/396 239/536/393 +f 889/535/392 240/540/396 892/541/397 +f 434/542/398 889/535/392 433/543/399 +f 434/542/398 891/538/395 890/533/390 +f 436/544/400 891/538/395 435/545/401 +f 436/546/400 889/535/392 892/541/397 +f 438/547/402 243/548/403 242/549/404 +f 439/550/405 244/551/406 243/552/403 +f 437/553/407 244/551/406 440/554/408 +f 442/555/409 247/556/410 246/245/210 +f 444/557/411 247/558/410 443/559/412 +f 441/244/209 248/560/413 444/557/411 +f 246/245/210 501/561/414 245/246/211 +f 446/562/415 251/563/416 250/564/417 +f 448/565/418 251/566/416 447/567/419 +f 445/568/420 252/569/421 448/565/418 +f 250/564/417 597/570/422 249/571/423 +f 450/56/50 355/572/424 354/573/425 +f 451/574/426 356/575/427 355/576/424 +f 449/58/52 356/575/427 452/577/428 +f 471/578/429 354/573/425 355/572/424 +f 893/579/430 454/580/431 453/581/432 +f 894/582/433 455/583/434 454/580/431 +f 896/584/435 455/583/434 895/585/436 +f 893/579/430 456/586/437 896/587/435 +f 458/588/438 893/579/430 457/589/439 +f 458/588/438 895/585/436 894/582/433 +f 460/590/440 895/585/436 459/591/441 +f 457/589/439 896/587/435 460/592/440 +f 471/593/429 356/575/427 472/594/442 +f 472/594/442 353/57/51 469/595/443 +f 474/596/444 33/50/45 473/597/445 +f 215/484/347 466/598/446 214/485/348 +f 215/484/347 468/599/447 467/600/448 +f 213/482/345 468/601/447 216/488/350 +f 462/602/449 9/15/14 461/603/450 +f 491/381/253 164/377/250 492/604/451 +f 489/605/452 164/378/250 161/68/61 +f 485/606/453 38/607/454 37/60/54 +f 239/536/393 482/608/455 238/537/394 +f 240/539/396 483/609/456 239/536/393 +f 240/540/396 481/610/457 484/611/458 +f 463/612/459 10/12/11 462/602/449 +f 463/612/459 12/17/16 11/19/17 +f 464/613/460 9/15/14 12/614/16 +f 462/602/449 465/615/461 466/598/446 +f 463/612/459 466/598/446 467/600/448 +f 463/612/459 468/599/447 464/616/460 +f 464/613/460 465/615/461 461/603/450 +f 473/597/445 470/617/462 474/596/444 +f 475/618/463 470/617/462 471/578/429 +f 476/619/464 471/593/429 472/594/442 +f 476/619/464 469/595/443 473/597/445 +f 470/617/462 353/57/51 354/573/425 +f 475/618/463 34/54/49 474/596/444 +f 475/620/463 36/49/44 35/52/47 +f 476/619/464 33/50/45 36/49/44 +f 477/621/465 18/21/19 17/24/22 +f 479/622/466 18/21/19 478/623/467 +f 480/624/468 19/28/25 479/622/466 +f 480/625/468 17/24/22 20/626/24 +f 477/621/465 482/608/455 478/623/467 +f 479/622/466 482/608/455 483/609/456 +f 480/624/468 483/609/456 484/627/458 +f 480/625/468 481/610/457 477/621/465 +f 214/485/348 465/615/461 213/482/345 +f 487/628/469 38/607/454 486/629/470 +f 488/630/471 39/66/59 487/628/469 +f 488/631/471 37/60/54 40/632/57 +f 485/606/453 490/380/252 486/629/470 +f 486/629/470 491/381/253 487/628/469 +f 488/630/471 491/381/253 492/604/451 +f 485/606/453 492/633/451 489/605/452 +f 490/380/252 161/68/61 162/375/248 +f 247/556/410 502/634/472 246/245/210 +f 247/558/410 504/635/473 503/636/474 +f 248/560/413 501/561/414 504/635/473 +f 494/637/475 897/638/476 493/639/477 +f 495/640/478 898/6/6 494/637/475 +f 495/641/478 900/1/1 899/4/4 +f 496/642/479 897/638/476 900/1/1 +f 494/637/475 497/643/480 498/644/481 +f 495/640/478 498/644/481 499/645/482 +f 495/641/478 500/646/483 496/642/479 +f 496/642/479 497/643/480 493/639/477 +f 498/644/481 501/561/414 502/634/472 +f 498/644/481 503/647/474 499/645/482 +f 499/648/482 504/635/473 500/646/483 +f 497/643/480 504/635/473 501/561/414 +f 562/649/484 557/650/485 561/651/486 +f 455/583/434 514/652/487 454/580/431 +f 455/583/434 516/653/488 515/654/489 +f 456/586/437 513/655/490 516/656/488 +f 507/657/491 26/30/27 506/658/492 +f 508/659/493 27/37/33 507/657/491 +f 508/660/493 25/33/30 28/661/32 +f 505/662/494 510/663/495 506/658/492 +f 507/657/491 510/663/495 511/664/496 +f 508/659/493 511/664/496 512/665/497 +f 508/660/493 509/666/498 505/662/494 +f 510/663/495 513/655/490 514/652/487 +f 511/664/496 514/652/487 515/654/489 +f 511/664/496 516/653/488 512/665/497 +f 512/667/497 513/655/490 509/666/498 +f 237/534/391 482/608/455 481/610/457 +f 190/435/302 525/668/499 189/669/500 +f 191/434/301 526/670/501 190/435/302 +f 191/437/301 528/671/502 527/672/503 +f 192/440/306 525/668/499 528/671/502 +f 519/673/504 30/44/40 518/46/41 +f 519/674/504 32/39/35 31/42/38 +f 520/675/505 29/40/36 32/39/35 +f 518/46/41 521/676/506 522/677/507 +f 519/673/504 522/677/507 523/678/508 +f 519/674/504 524/679/509 520/675/505 +f 520/675/505 521/676/506 517/47/42 +f 385/439/305 190/435/302 189/669/500 +f 521/676/506 526/670/501 522/677/507 +f 522/677/507 527/680/503 523/678/508 +f 524/679/509 527/672/503 528/671/502 +f 521/676/506 528/671/502 525/668/499 +f 159/232/201 538/681/510 158/233/202 +f 159/235/201 540/682/511 539/683/512 +f 157/286/220 540/682/511 160/238/206 +f 530/684/513 53/80/72 529/685/514 +f 531/686/515 54/81/73 530/684/513 +f 531/687/515 56/83/75 55/85/77 +f 532/688/516 53/80/72 56/83/75 +f 530/684/513 533/689/517 534/690/518 +f 531/686/515 534/690/518 535/691/519 +f 531/687/515 536/692/520 532/688/516 +f 532/688/516 533/689/517 529/685/514 +f 534/690/518 537/285/219 538/681/510 +f 534/690/518 539/693/512 535/691/519 +f 535/694/519 540/682/511 536/692/520 +f 533/689/517 540/682/511 537/285/219 +f 195/445/311 554/695/521 194/442/308 +f 195/447/311 556/696/522 555/697/523 +f 196/449/314 553/698/524 556/696/522 +f 543/699/525 62/90/81 542/700/526 +f 543/701/525 64/92/83 63/94/85 +f 544/702/527 61/89/80 64/92/83 +f 542/700/526 545/703/528 546/704/529 +f 542/700/526 547/705/530 543/699/525 +f 543/701/525 548/706/531 544/702/527 +f 541/707/532 548/706/531 545/703/528 +f 561/651/486 550/708/533 562/649/484 +f 562/649/484 551/709/534 563/710/535 +f 564/711/536 551/712/534 552/713/537 +f 561/651/486 552/713/537 549/714/538 +f 550/708/533 553/698/524 554/695/521 +f 551/709/534 554/695/521 555/715/523 +f 551/712/534 556/696/522 552/713/537 +f 552/713/537 553/698/524 549/714/538 +f 545/703/528 558/716/539 546/704/529 +f 547/705/530 558/716/539 559/717/540 +f 548/706/531 559/718/540 560/719/541 +f 548/706/531 557/650/485 545/703/528 +f 563/710/535 558/716/539 562/649/484 +f 563/720/535 560/719/541 559/718/540 +f 557/650/485 564/711/536 561/651/486 +f 505/662/494 26/30/27 25/33/30 +f 167/386/258 574/721/542 166/383/255 +f 167/388/258 576/722/543 575/723/544 +f 165/384/256 576/722/543 168/390/261 +f 566/724/545 89/127/114 565/725/546 +f 567/726/547 90/128/115 566/724/545 +f 567/727/547 92/130/117 91/132/119 +f 568/728/548 89/127/114 92/130/117 +f 566/724/545 569/729/549 570/730/550 +f 567/726/547 570/730/550 571/731/551 +f 567/727/547 572/732/552 568/728/548 +f 568/728/548 569/729/549 565/725/546 +f 570/730/550 573/733/553 574/721/542 +f 570/730/550 575/734/544 571/731/551 +f 571/735/551 576/722/543 572/732/552 +f 569/729/549 576/722/543 573/733/553 +f 542/700/526 61/89/80 541/707/532 +f 175/262/214 586/736/554 174/737/555 +f 176/404/273 587/738/556 175/262/214 +f 176/406/273 585/739/557 588/740/558 +f 577/741/559 46/71/64 45/74/67 +f 43/73/66 282/742/152 283/743/212 +f 44/75/68 283/744/212 284/745/213 +f 41/72/65 284/745/213 281/746/153 +f 689/747/560 686/748/561 690/749/562 +f 282/742/152 41/72/65 281/746/153 +f 173/408/276 370/263/215 174/737/555 +f 579/750/563 46/71/64 578/751/564 +f 580/752/565 47/78/70 579/750/563 +f 580/753/565 45/74/67 48/754/69 +f 577/741/559 582/755/566 578/751/564 +f 579/750/563 582/755/566 583/756/567 +f 580/752/565 583/756/567 584/757/568 +f 580/753/565 581/758/569 577/741/559 +f 582/755/566 585/739/557 586/736/554 +f 582/755/566 587/738/556 583/756/567 +f 583/756/567 588/759/558 584/757/568 +f 581/758/569 588/740/558 585/739/557 +f 251/563/416 598/760/570 250/564/417 +f 251/566/416 600/761/571 599/762/572 +f 252/569/421 597/570/422 600/761/571 +f 602/763/573 589/764/574 590/765/575 +f 603/766/576 590/765/575 591/767/577 +f 603/768/576 592/769/578 604/770/579 +f 604/770/579 589/764/574 601/771/580 +f 602/763/573 81/118/106 601/771/580 +f 605/772/581 594/773/582 606/774/583 +f 606/774/583 595/775/584 607/776/585 +f 608/777/586 595/778/584 596/779/587 +f 605/772/581 596/779/587 593/780/588 +f 593/780/588 598/760/570 594/773/582 +f 594/773/582 599/781/572 595/775/584 +f 596/779/587 599/762/572 600/761/571 +f 593/780/588 600/761/571 597/570/422 +f 603/766/576 82/119/107 602/763/573 +f 603/768/576 84/121/109 83/123/111 +f 604/770/579 81/118/106 84/121/109 +f 590/765/575 605/772/581 606/774/583 +f 591/767/577 606/774/583 607/776/585 +f 591/782/577 608/777/586 592/769/578 +f 592/769/578 605/772/581 589/764/574 +f 616/783/589 211/474/338 212/476/340 +f 613/784/590 212/476/340 209/785/222 +f 609/786/591 74/110/99 73/109/98 +f 610/787/592 75/115/103 74/110/99 +f 612/788/593 75/115/103 611/789/594 +f 609/790/591 76/112/101 612/788/593 +f 609/786/591 614/479/342 610/787/592 +f 610/787/592 615/480/343 611/789/594 +f 612/788/593 615/480/343 616/783/589 +f 609/790/591 616/783/589 613/784/590 +f 613/791/590 210/792/595 614/479/342 +f 226/511/370 619/793/596 618/794/597 +f 227/510/369 620/795/598 619/793/596 +f 225/106/95 620/796/598 228/514/372 +f 621/797/599 902/798/600 622/799/601 +f 622/799/601 903/800/602 623/801/603 +f 624/802/604 903/800/602 904/803/605 +f 621/797/599 904/804/605 901/805/606 +f 617/516/374 902/798/600 901/805/606 +f 619/793/596 902/798/600 618/794/597 +f 620/795/598 903/800/602 619/793/596 +f 620/796/598 901/805/606 904/804/605 +f 625/806/607 622/799/601 626/807/608 +f 627/808/609 622/799/601 623/801/603 +f 628/809/610 623/801/603 624/802/604 +f 628/810/610 621/797/599 625/806/607 +f 629/811/611 626/807/608 630/812/612 +f 630/812/612 627/808/609 631/813/613 +f 632/814/614 627/808/609 628/809/610 +f 629/811/611 628/810/610 625/806/607 +f 629/811/611 66/815/615 65/98/88 +f 631/813/613 66/815/615 630/812/612 +f 632/814/614 67/104/93 631/813/613 +f 632/816/614 65/98/88 68/817/91 +f 381/429/296 186/425/293 185/432/299 +f 223/504/364 634/818/616 222/332/228 +f 223/506/364 636/819/617 635/820/618 +f 224/508/367 633/509/368 636/819/617 +f 638/821/619 633/509/368 634/818/616 +f 638/821/619 635/822/618 639/823/620 +f 639/824/620 636/819/617 640/825/621 +f 637/826/622 636/819/617 633/509/368 +f 642/827/623 637/826/622 638/821/619 +f 643/828/624 638/821/619 639/823/620 +f 643/829/624 640/825/621 644/830/625 +f 644/830/625 637/826/622 641/831/626 +f 642/827/623 113/154/138 641/831/626 +f 643/828/624 114/155/139 642/827/623 +f 643/829/624 116/157/141 115/159/143 +f 644/830/625 113/154/138 116/157/141 +f 171/397/267 646/402/271 170/338/232 +f 172/401/270 647/832/627 171/399/267 +f 172/401/270 645/403/272 648/833/628 +f 649/834/629 646/402/271 650/835/630 +f 650/835/630 647/836/627 651/837/631 +f 652/838/632 647/832/627 648/833/628 +f 649/834/629 648/833/628 645/403/272 +f 654/839/633 649/834/629 650/835/630 +f 655/840/634 650/835/630 651/837/631 +f 655/841/634 652/838/632 656/842/635 +f 656/842/635 649/834/629 653/843/636 +f 658/167/150 653/843/636 654/839/633 +f 658/167/150 655/840/634 659/844/148 +f 659/165/148 656/842/635 660/164/147 +f 657/162/145 656/842/635 653/843/636 +f 906/845/160 122/173/155 905/846/637 +f 219/496/357 662/501/361 218/353/238 +f 220/500/360 663/847/638 219/498/357 +f 220/500/360 661/502/362 664/848/639 +f 665/849/640 662/501/361 666/850/641 +f 666/850/641 663/851/638 667/852/642 +f 668/853/643 663/847/638 664/848/639 +f 665/849/640 664/848/639 661/502/362 +f 670/854/644 665/849/640 666/850/641 +f 670/854/644 667/852/642 671/855/645 +f 671/856/645 668/853/643 672/857/646 +f 669/858/647 668/853/643 665/849/640 +f 674/859/648 669/858/647 670/854/644 +f 675/860/649 670/854/644 671/855/645 +f 675/861/649 672/857/646 676/862/650 +f 676/862/650 669/858/647 673/863/651 +f 130/347/234 674/859/648 129/192/168 +f 129/192/168 675/860/649 132/350/235 +f 131/349/236 675/861/649 676/862/650 +f 130/347/234 676/862/650 673/863/651 +f 677/864/652 350/366/240 678/865/653 +f 679/866/654 350/366/240 351/369/243 +f 680/867/655 351/369/243 352/868/246 +f 680/869/655 349/367/241 677/864/652 +f 682/870/656 677/864/652 678/865/653 +f 683/871/657 678/865/653 679/866/654 +f 683/871/657 680/867/655 684/872/658 +f 684/873/658 677/864/652 681/874/659 +f 686/748/561 681/874/659 682/870/656 +f 686/748/561 683/871/657 687/875/660 +f 687/875/660 684/872/658 688/876/661 +f 685/877/662 684/873/658 681/874/659 +f 690/749/562 687/875/660 691/878/663 +f 687/875/660 692/879/664 691/878/663 +f 688/880/661 689/747/560 692/881/664 +f 346/882/152 145/213/184 345/364/153 +f 689/747/560 106/145/130 105/148/133 +f 690/749/562 107/152/136 106/145/130 +f 692/879/664 107/152/136 691/878/663 +f 689/747/560 108/883/135 692/881/664 +f 310/884/152 93/135/121 309/316/153 +f 178/411/279 693/885/665 177/886/666 +f 179/410/278 694/887/667 178/411/279 +f 179/410/278 696/888/668 695/889/669 +f 180/413/281 693/890/665 696/888/668 +f 698/891/670 693/885/665 694/887/667 +f 699/892/671 694/887/667 695/889/669 +f 699/892/671 696/888/668 700/893/672 +f 700/893/672 693/890/665 697/894/673 +f 701/895/674 698/891/670 702/896/675 +f 702/896/675 699/892/671 703/897/676 +f 704/898/677 699/892/671 700/893/672 +f 701/899/674 700/893/672 697/894/673 +f 705/900/678 702/896/675 706/901/679 +f 706/901/679 703/897/676 707/902/680 +f 708/903/681 701/899/674 705/904/678 +f 708/903/681 703/897/676 704/898/677 +f 98/137/123 705/900/678 706/901/679 +f 98/137/123 707/902/680 99/142/127 +f 99/142/127 708/903/681 100/139/125 +f 97/140/122 708/903/681 705/904/678 +f 374/409/277 177/886/666 373/905/282 +f 230/518/376 711/906/682 710/907/683 +f 231/521/379 712/908/684 711/906/682 +f 229/522/380 712/908/684 232/523/381 +f 714/909/685 709/525/382 710/910/683 +f 715/911/686 710/907/683 711/906/682 +f 715/911/686 712/908/684 716/912/687 +f 716/912/687 709/525/382 713/913/688 +f 718/914/689 713/913/688 714/909/685 +f 718/915/689 715/911/686 719/916/690 +f 719/916/690 716/912/687 720/917/691 +f 717/918/692 716/912/687 713/913/688 +f 302/305/152 77/117/105 301/307/153 +f 721/919/693 718/914/689 722/920/694 +f 723/921/695 718/915/689 719/916/690 +f 724/922/696 719/916/690 720/917/691 +f 724/922/696 717/918/692 721/919/693 +f 726/923/697 721/919/693 722/920/694 +f 726/924/697 723/921/695 727/925/698 +f 727/925/698 724/922/696 728/926/699 +f 725/927/700 724/922/696 721/919/693 +f 730/928/701 725/927/700 726/923/697 +f 730/929/701 727/925/698 731/930/702 +f 731/930/702 728/926/699 732/931/703 +f 729/932/704 728/926/699 725/927/700 +f 730/928/701 137/198/173 729/932/704 +f 730/929/701 139/202/176 138/933/170 +f 731/930/702 140/200/175 139/202/176 +f 729/932/704 140/200/175 732/931/703 +f 425/934/705 230/524/376 229/522/380 +f 198/457/321 735/935/706 734/936/327 +f 200/461/325 735/935/706 199/456/320 +f 197/462/326 736/937/707 200/461/325 +f 737/938/708 734/463/327 738/939/709 +f 738/940/709 735/935/706 739/941/710 +f 740/942/711 735/935/706 736/937/707 +f 737/938/708 736/937/707 733/464/328 +f 741/943/712 738/939/709 742/944/713 +f 743/945/714 738/940/709 739/941/710 +f 744/946/715 739/941/710 740/942/711 +f 744/946/715 737/938/708 741/943/712 +f 746/947/716 741/943/712 742/944/713 +f 746/948/716 743/945/714 747/949/717 +f 747/949/717 744/946/715 748/950/718 +f 745/951/719 744/946/715 741/943/712 +f 749/952/720 746/947/716 750/953/721 +f 750/954/721 747/949/717 751/955/722 +f 752/956/723 747/949/717 748/950/718 +f 749/952/720 748/950/718 745/951/719 +f 393/460/324 198/957/321 197/462/326 +f 750/953/721 905/846/637 749/952/720 +f 750/954/721 907/176/158 906/178/160 +f 751/955/722 908/172/154 907/176/158 +f 749/952/720 908/172/154 752/956/723 +f 754/222/192 765/958/724 766/959/725 +f 754/222/192 767/960/726 755/225/195 +f 755/225/195 768/961/727 756/227/197 +f 753/229/194 768/961/727 765/962/724 +f 241/963/728 818/964/729 817/965/730 +f 763/966/731 770/967/732 762/968/733 +f 761/969/734 770/967/732 771/970/735 +f 764/971/736 771/970/735 772/972/737 +f 763/973/731 772/972/737 769/974/738 +f 790/975/739 761/969/734 789/976/740 +f 187/424/292 774/977/741 186/425/293 +f 187/427/292 776/978/742 775/979/743 +f 188/430/297 773/431/298 776/978/742 +f 778/980/744 773/431/298 774/977/741 +f 779/981/745 774/977/741 775/982/743 +f 779/983/745 776/978/742 780/984/746 +f 780/984/746 773/431/298 777/985/747 +f 781/986/748 778/980/744 782/987/749 +f 782/987/749 779/981/745 783/988/750 +f 784/989/751 779/983/745 780/984/746 +f 781/986/748 780/984/746 777/985/747 +f 786/990/752 781/986/748 782/987/749 +f 786/990/752 783/988/750 787/991/753 +f 787/992/753 784/989/751 788/993/754 +f 785/994/755 784/989/751 781/986/748 +f 786/990/752 791/995/756 790/975/739 +f 791/996/756 788/993/754 792/997/757 +f 792/997/757 785/994/755 789/976/740 +f 785/994/755 790/975/739 789/976/740 +f 791/995/756 762/968/733 790/975/739 +f 791/996/756 764/971/736 763/973/731 +f 792/997/757 761/969/734 764/971/736 +f 429/998/758 234/999/384 233/531/388 +f 234/999/384 793/1000/759 233/531/388 +f 234/527/384 795/1001/760 794/1002/761 +f 236/532/389 795/1001/760 235/530/387 +f 233/531/388 796/1003/762 236/532/389 +f 797/1004/763 794/1005/761 798/1006/764 +f 798/1007/764 795/1001/760 799/1008/765 +f 800/1009/766 795/1001/760 796/1003/762 +f 797/1004/763 796/1003/762 793/1000/759 +f 801/1010/767 798/1006/764 802/1011/768 +f 802/1012/768 799/1008/765 803/1013/769 +f 804/1014/770 799/1008/765 800/1009/766 +f 801/1010/767 800/1009/766 797/1004/763 +f 805/1015/771 802/1011/768 806/1016/772 +f 807/1017/773 802/1012/768 803/1013/769 +f 808/1018/774 803/1013/769 804/1014/770 +f 808/1018/774 801/1010/767 805/1015/771 +f 810/1019/775 807/1017/773 811/1020/776 +f 811/1020/776 808/1018/774 812/1021/777 +f 808/1018/774 809/1022/778 812/1021/777 +f 814/1023/779 809/1022/778 810/1024/775 +f 814/1025/779 811/1020/776 815/1026/780 +f 815/1026/780 812/1021/777 816/1027/781 +f 813/1028/782 812/1021/777 809/1022/778 +f 814/1023/779 909/1029/783 813/1028/782 +f 814/1025/779 911/207/181 910/209/183 +f 815/1026/780 912/203/177 911/207/181 +f 813/1028/782 912/203/177 816/1027/781 +f 243/548/403 818/964/729 242/549/404 +f 244/551/406 819/1030/784 243/552/403 +f 244/551/406 817/965/730 820/1031/785 +f 822/1032/786 817/965/730 818/964/729 +f 823/1033/787 818/964/729 819/1034/784 +f 823/1035/787 820/1031/785 824/1036/788 +f 824/1036/788 817/965/730 821/1037/789 +f 825/1038/790 822/1032/786 826/1039/791 +f 826/1039/791 823/1033/787 827/1040/792 +f 828/1041/793 823/1035/787 824/1036/788 +f 825/1038/790 824/1036/788 821/1037/789 +f 830/1042/794 825/1038/790 826/1039/791 +f 831/1043/795 826/1039/791 827/1040/792 +f 831/1044/795 828/1041/793 832/1045/796 +f 832/1045/796 825/1038/790 829/1046/797 +f 830/1042/794 757/228/198 829/1046/797 +f 831/1043/795 758/226/196 830/1042/794 +f 831/1044/795 760/230/199 759/1047/193 +f 832/1045/796 757/228/198 760/230/199 +f 834/1048/798 205/1049/799 206/469/333 +f 207/468/332 834/1048/798 206/469/333 +f 208/471/335 835/1050/800 207/468/332 +f 833/1051/801 208/471/335 205/1052/799 +f 837/1053/802 834/1048/798 838/1054/803 +f 838/1054/803 835/1050/800 839/1055/804 +f 840/1056/805 835/1050/800 836/1057/806 +f 837/1058/802 836/1057/806 833/1051/801 +f 841/1059/807 838/1054/803 842/188/167 +f 842/188/167 839/1055/804 843/186/165 +f 844/182/161 839/1055/804 840/1056/805 +f 841/1060/807 840/1056/805 837/1058/802 +f 402/467/331 205/1049/799 401/1061/336 +f 182/418/286 845/1062/808 181/1063/809 +f 183/417/285 846/1064/810 182/418/286 +f 184/420/288 847/1065/811 183/417/285 +f 184/420/288 845/1066/808 848/1067/812 +f 850/1068/813 845/1062/808 846/1064/810 +f 851/1069/814 846/1064/810 847/1065/811 +f 851/1069/814 848/1067/812 852/1070/815 +f 852/1070/815 845/1066/808 849/1071/816 +f 854/1072/817 849/1073/816 850/1068/813 +f 854/1072/817 851/1069/814 855/1074/818 +f 855/1074/818 852/1070/815 856/1075/819 +f 853/1076/820 852/1070/815 849/1071/816 +f 857/1077/821 854/1072/817 858/1078/822 +f 858/1078/822 855/1074/818 859/1079/823 +f 860/1080/824 855/1074/818 856/1075/819 +f 857/1081/821 856/1075/819 853/1076/820 +f 857/1077/821 150/215/186 149/214/185 +f 859/1079/823 150/215/186 858/1078/822 +f 860/1080/824 151/220/190 859/1079/823 +f 860/1080/824 149/218/185 152/217/188 +f 194/442/308 553/698/524 193/443/309 +f 454/580/431 513/655/490 453/581/432 +f 173/408/276 586/736/554 585/739/557 +f 166/383/255 573/733/553 165/384/256 +f 897/638/476 1/8/7 2/2/2 +f 870/61/55 38/607/454 869/65/58 +f 865/272/218 33/50/45 34/54/49 +f 861/266/217 29/40/36 30/44/40 +f 874/99/89 66/815/615 873/103/92 +f 805/1015/771 810/1024/775 809/1022/778 +f 909/1029/783 141/211/182 142/204/178 +f 298/1082/152 69/108/97 297/299/153 +f 314/319/152 101/146/131 313/321/153 +f 438/547/402 241/963/728 437/553/407 +f 841/1059/807 125/187/166 126/1083/162 +f 318/327/152 109/153/137 317/329/153 +f 658/167/150 118/335/230 657/162/145 +f 378/416/284 181/1063/809 377/1084/289 +f 338/356/152 133/196/171 337/1085/153 +f 445/568/420 250/564/417 249/571/423 +f 153/237/205 158/233/202 157/286/220 +f 306/310/152 85/126/113 305/312/153 +f 900/1/1 897/638/476 2/2/2 +f 899/4/4 900/1/1 3/3/3 +f 898/6/6 899/1086/4 4/7/5 +f 254/9/8 2/2/2 1/8/7 +f 6/11/10 9/15/14 10/12/11 +f 7/14/13 12/614/16 9/15/14 +f 8/16/15 11/19/17 12/17/16 +f 5/13/12 10/12/11 11/19/17 +f 14/20/18 17/24/22 18/21/19 +f 15/23/21 20/626/24 17/24/22 +f 16/25/23 19/28/25 20/26/24 +f 13/22/20 18/21/19 19/28/25 +f 22/29/26 25/33/30 26/30/27 +f 23/32/29 28/661/32 25/33/30 +f 24/34/31 27/37/33 28/35/32 +f 21/31/28 26/30/27 27/37/33 +f 862/38/34 863/41/37 32/39/35 +f 863/41/37 864/1087/39 31/42/38 +f 864/43/39 861/266/217 30/44/40 +f 518/46/41 30/44/40 29/40/36 +f 866/48/43 867/51/46 36/49/44 +f 867/51/46 868/275/48 35/52/47 +f 868/53/48 865/272/218 34/54/49 +f 450/56/50 354/573/425 353/57/51 +f 871/59/53 40/632/57 37/60/54 +f 872/62/56 39/66/59 40/63/57 +f 869/65/58 38/607/454 39/66/59 +f 358/67/60 162/375/248 161/68/61 +f 42/70/63 45/74/67 46/71/64 +f 43/73/66 48/754/69 45/74/67 +f 44/75/68 47/78/70 48/76/69 +f 41/72/65 46/71/64 47/78/70 +f 49/79/71 50/82/74 53/80/72 +f 50/82/74 51/84/76 56/83/75 +f 51/84/76 52/283/78 55/85/77 +f 52/86/78 49/79/71 54/81/73 +f 57/88/79 58/91/82 61/89/80 +f 58/91/82 59/93/84 64/92/83 +f 59/93/84 60/289/86 63/94/85 +f 60/95/86 57/88/79 62/90/81 +f 875/97/87 68/817/91 65/98/88 +f 876/100/90 67/104/93 68/101/91 +f 873/103/92 66/815/615 67/104/93 +f 422/105/94 226/511/370 225/106/95 +f 69/108/97 70/1088/100 73/109/98 +f 70/111/100 71/114/102 76/112/101 +f 71/114/102 72/116/104 75/115/103 +f 72/116/104 69/108/97 74/110/99 +f 77/117/105 78/120/108 81/118/106 +f 78/120/108 79/122/110 84/121/109 +f 79/122/110 80/306/112 83/123/111 +f 80/124/112 77/117/105 82/119/107 +f 85/126/113 86/129/116 89/127/114 +f 86/129/116 87/131/118 92/130/117 +f 87/131/118 88/311/120 91/132/119 +f 88/133/120 85/126/113 90/128/115 +f 93/135/121 94/1089/124 97/136/122 +f 94/138/124 95/141/126 100/139/125 +f 95/141/126 96/143/128 99/142/127 +f 96/143/128 93/135/121 98/137/123 +f 102/144/129 105/148/133 106/145/130 +f 103/147/132 108/883/135 105/148/133 +f 104/149/134 107/152/136 108/150/135 +f 101/146/131 106/145/130 107/152/136 +f 109/153/137 110/156/140 113/154/138 +f 110/156/140 111/158/142 116/157/141 +f 111/158/142 112/328/144 115/159/143 +f 112/160/144 109/153/137 114/155/139 +f 657/162/145 118/335/230 119/163/146 +f 659/165/148 660/164/147 119/163/146 +f 658/167/150 659/844/148 120/168/149 +f 322/170/152 118/335/230 117/169/151 +f 908/172/154 905/846/637 122/173/155 +f 908/172/154 123/174/156 124/175/157 +f 907/176/158 124/175/157 121/177/159 +f 326/179/152 122/173/155 121/180/159 +f 844/182/161 841/1060/807 126/183/162 +f 844/182/161 127/184/163 128/185/164 +f 843/186/165 128/185/164 125/187/166 +f 330/189/152 126/1083/162 125/187/166 +f 334/191/152 130/347/234 129/192/168 +f 134/194/169 137/198/173 138/195/170 +f 135/197/172 140/200/175 137/198/173 +f 136/199/174 139/202/176 140/200/175 +f 133/201/171 138/933/170 139/202/176 +f 912/203/177 909/1029/783 142/204/178 +f 912/203/177 143/205/179 144/206/180 +f 911/207/181 144/206/180 141/208/182 +f 342/210/152 142/204/178 141/211/182 +f 145/213/184 146/1090/187 149/214/185 +f 146/216/187 147/219/189 152/217/188 +f 147/219/189 148/221/191 151/220/190 +f 148/221/191 145/213/184 150/215/186 +f 754/222/192 758/226/196 759/223/193 +f 755/225/195 757/228/198 758/226/196 +f 756/227/197 760/230/199 757/228/198 +f 753/229/194 759/1047/193 760/230/199 +f 154/231/200 155/1091/204 159/232/201 +f 156/234/203 160/238/206 159/235/201 +f 153/237/205 157/286/220 160/238/206 +f 286/239/152 50/82/74 49/79/71 +f 3/3/3 2/2/2 254/9/8 +f 4/5/5 3/3/3 255/241/207 +f 1/8/7 4/7/5 256/243/208 +f 441/244/209 442/555/409 246/245/210 +f 259/247/212 7/14/13 6/11/10 +f 259/249/212 260/251/213 8/16/15 +f 257/250/153 5/13/12 8/16/15 +f 262/252/152 14/20/18 13/22/20 +f 263/254/212 15/23/21 14/20/18 +f 263/255/212 264/256/213 16/25/23 +f 261/253/153 13/22/20 16/25/23 +f 266/257/152 22/29/26 21/31/28 +f 267/259/212 23/32/29 22/29/26 +f 267/260/212 268/261/213 24/34/31 +f 265/258/153 21/31/28 24/34/31 +f 175/262/214 174/737/555 370/263/215 +f 269/265/153 270/268/152 862/38/34 +f 271/267/212 863/41/37 862/38/34 +f 272/269/213 864/1087/39 863/41/37 +f 269/265/153 861/266/217 864/43/39 +f 274/271/152 866/48/43 865/272/218 +f 275/274/212 867/51/46 866/48/43 +f 275/274/212 276/1092/213 868/275/48 +f 273/273/153 865/272/218 868/53/48 +f 277/277/153 278/279/152 870/61/55 +f 279/278/212 871/59/53 870/61/55 +f 280/280/213 872/62/56 871/64/53 +f 277/277/153 869/65/58 872/62/56 +f 287/282/212 51/84/76 50/82/74 +f 287/282/212 288/1093/213 52/283/78 +f 285/240/153 49/79/71 52/86/78 +f 158/233/202 538/681/510 537/285/219 +f 291/287/212 59/93/84 58/91/82 +f 291/287/212 292/1094/213 60/289/86 +f 289/290/153 57/88/79 60/95/86 +f 258/248/152 6/11/10 5/13/12 +f 293/292/153 294/294/152 874/99/89 +f 295/293/212 875/97/87 874/99/89 +f 296/295/213 876/100/90 875/102/87 +f 293/292/153 873/103/92 876/100/90 +f 299/297/212 71/114/102 70/111/100 +f 299/297/212 300/300/213 72/116/104 +f 297/299/153 69/108/97 72/116/104 +f 406/301/221 210/792/595 209/302/222 +f 303/304/212 79/122/110 78/120/108 +f 303/304/212 304/1095/213 80/306/112 +f 301/307/153 77/117/105 80/124/112 +f 307/309/212 87/131/118 86/129/116 +f 307/309/212 308/1096/213 88/311/120 +f 305/312/153 85/126/113 88/133/120 +f 290/288/152 58/91/82 57/88/79 +f 311/314/212 95/141/126 94/138/124 +f 311/314/212 312/317/213 96/143/128 +f 309/316/153 93/135/121 96/143/128 +f 315/318/212 103/147/132 102/144/129 +f 315/320/212 316/322/213 104/149/134 +f 313/321/153 101/146/131 104/149/134 +f 398/323/224 202/368/242 201/324/225 +f 319/326/212 111/158/142 110/156/140 +f 319/326/212 320/1097/213 112/328/144 +f 317/329/153 109/153/137 112/160/144 +f 417/331/227 418/503/363 222/332/228 +f 323/334/212 119/163/146 118/335/230 +f 323/334/212 324/1098/213 120/166/149 +f 321/171/153 117/169/151 120/168/149 +f 365/337/231 366/396/266 170/338/232 +f 327/340/212 123/174/156 122/173/155 +f 327/340/212 328/342/213 124/175/157 +f 325/341/153 121/177/159 124/175/157 +f 331/343/212 127/184/163 126/183/162 +f 331/343/212 332/345/213 128/185/164 +f 329/190/153 125/187/166 128/185/164 +f 335/346/212 131/349/236 130/347/234 +f 335/346/212 336/1099/213 132/348/235 +f 333/193/153 129/192/168 132/350/235 +f 413/352/237 414/495/356 218/353/238 +f 339/355/212 135/197/172 134/194/169 +f 339/355/212 340/358/213 136/199/174 +f 337/357/153 133/201/171 136/199/174 +f 343/359/212 143/205/179 142/204/178 +f 343/359/212 344/361/213 144/206/180 +f 341/360/153 141/208/182 144/206/180 +f 347/362/212 147/219/189 146/216/187 +f 347/362/212 348/365/213 148/221/191 +f 345/364/153 145/213/184 148/221/191 +f 201/324/225 202/368/242 350/366/240 +f 202/368/242 203/371/245 351/369/243 +f 204/370/244 352/868/246 351/369/243 +f 204/372/244 201/324/225 349/367/241 +f 358/67/60 359/376/249 163/374/247 +f 359/376/249 360/1100/251 164/377/250 +f 357/69/62 161/68/61 164/378/250 +f 490/380/252 162/375/248 163/374/247 +f 877/382/254 878/385/257 166/383/255 +f 878/385/257 879/393/260 167/386/258 +f 880/387/259 168/390/261 167/388/258 +f 877/382/254 165/384/256 168/390/261 +f 362/391/262 878/385/257 877/382/254 +f 362/391/262 363/1101/265 879/393/260 +f 364/394/264 880/387/259 879/389/260 +f 364/394/264 361/392/263 877/382/254 +f 366/396/266 367/1102/269 171/397/267 +f 368/398/268 172/401/270 171/399/267 +f 365/337/231 169/339/233 172/401/270 +f 169/339/233 170/338/232 646/402/271 +f 176/404/273 175/262/214 371/264/216 +f 176/406/273 372/1103/274 369/407/275 +f 374/409/277 375/412/280 179/410/278 +f 375/412/280 376/415/283 180/413/281 +f 373/414/282 177/1104/666 180/413/281 +f 378/416/284 379/419/287 183/417/285 +f 379/419/287 380/422/290 184/420/288 +f 377/421/289 181/1105/809 184/420/288 +f 382/423/291 383/1106/295 187/424/292 +f 384/426/294 188/430/297 187/427/292 +f 381/429/296 185/432/299 188/430/297 +f 186/425/293 774/977/741 773/431/298 +f 386/433/300 387/1107/304 191/434/301 +f 388/436/303 192/440/306 191/437/301 +f 385/439/305 189/669/500 192/440/306 +f 881/441/307 882/444/310 194/442/308 +f 882/444/310 883/1108/313 195/445/311 +f 884/446/312 196/449/314 195/447/311 +f 881/441/307 193/443/309 196/449/314 +f 390/450/315 882/444/310 881/441/307 +f 391/452/317 883/1108/313 882/444/310 +f 391/453/317 392/454/318 884/446/312 +f 392/454/318 389/451/316 881/441/307 +f 394/455/319 395/459/323 199/456/320 +f 396/458/322 200/461/325 199/456/320 +f 393/460/324 197/462/326 200/461/325 +f 197/462/326 198/957/321 734/463/327 +f 398/323/224 399/465/329 203/371/245 +f 399/465/329 400/1109/330 204/370/244 +f 397/325/226 201/324/225 204/372/244 +f 402/467/331 403/470/334 207/468/332 +f 403/470/334 404/473/337 208/471/335 +f 401/472/336 205/1052/799 208/471/335 +f 211/474/338 210/792/595 406/301/221 +f 212/476/340 211/474/338 407/475/339 +f 405/478/223 209/785/222 212/476/340 +f 614/479/342 210/792/595 211/474/338 +f 886/481/344 214/485/348 213/482/345 +f 886/481/344 887/486/349 215/484/347 +f 887/486/349 888/1110/351 216/487/350 +f 885/483/346 213/482/345 216/488/350 +f 410/490/352 886/481/344 885/483/346 +f 410/490/352 411/493/355 887/486/349 +f 412/492/354 888/1110/351 887/486/349 +f 409/491/353 885/483/346 888/489/351 +f 414/495/356 415/1111/359 219/496/357 +f 416/497/358 220/500/360 219/498/357 +f 413/352/237 217/354/239 220/500/360 +f 217/354/239 218/353/238 662/501/361 +f 418/503/363 419/1112/366 223/504/364 +f 420/505/365 224/508/367 223/506/364 +f 417/331/227 221/333/229 224/508/367 +f 222/332/228 634/818/616 633/509/368 +f 422/105/94 423/512/371 227/510/369 +f 423/512/371 424/1113/373 228/513/372 +f 421/107/96 225/106/95 228/514/372 +f 226/511/370 618/794/597 617/516/374 +f 427/517/375 231/521/379 230/518/376 +f 428/520/378 232/523/381 231/521/379 +f 428/520/378 425/934/705 229/522/380 +f 230/524/376 710/910/683 709/525/382 +f 431/526/383 235/530/387 234/527/384 +f 432/529/386 236/532/389 235/530/387 +f 432/529/386 429/998/758 233/531/388 +f 890/533/390 238/537/394 237/534/391 +f 890/533/390 891/538/395 239/536/393 +f 891/538/395 892/1114/397 240/539/396 +f 889/535/392 237/534/391 240/540/396 +f 434/542/398 890/533/390 889/535/392 +f 434/542/398 435/545/401 891/538/395 +f 436/544/400 892/1114/397 891/538/395 +f 436/546/400 433/543/399 889/535/392 +f 438/547/402 439/1115/405 243/548/403 +f 439/550/405 440/554/408 244/551/406 +f 437/553/407 241/963/728 244/551/406 +f 442/555/409 443/1116/412 247/556/410 +f 444/557/411 248/560/413 247/558/410 +f 441/244/209 245/246/211 248/560/413 +f 246/245/210 502/634/472 501/561/414 +f 446/562/415 447/1117/419 251/563/416 +f 448/565/418 252/569/421 251/566/416 +f 445/568/420 249/571/423 252/569/421 +f 250/564/417 598/760/570 597/570/422 +f 450/56/50 451/1118/426 355/572/424 +f 451/574/426 452/577/428 356/575/427 +f 449/58/52 353/57/51 356/575/427 +f 471/578/429 470/617/462 354/573/425 +f 893/579/430 894/582/433 454/580/431 +f 894/582/433 895/585/436 455/583/434 +f 896/584/435 456/1119/437 455/583/434 +f 893/579/430 453/581/432 456/586/437 +f 458/588/438 894/582/433 893/579/430 +f 458/588/438 459/591/441 895/585/436 +f 460/590/440 896/584/435 895/585/436 +f 457/589/439 893/579/430 896/587/435 +f 471/593/429 355/576/424 356/575/427 +f 472/594/442 356/575/427 353/57/51 +f 474/596/444 34/54/49 33/50/45 +f 215/484/347 467/600/448 466/598/446 +f 215/484/347 216/487/350 468/599/447 +f 213/482/345 465/615/461 468/601/447 +f 462/602/449 10/12/11 9/15/14 +f 491/381/253 163/374/247 164/377/250 +f 489/605/452 492/633/451 164/378/250 +f 485/606/453 486/629/470 38/607/454 +f 239/536/393 483/609/456 482/608/455 +f 240/539/396 484/627/458 483/609/456 +f 240/540/396 237/534/391 481/610/457 +f 463/612/459 11/19/17 10/12/11 +f 463/612/459 464/616/460 12/17/16 +f 464/613/460 461/603/450 9/15/14 +f 462/602/449 461/603/450 465/615/461 +f 463/612/459 462/602/449 466/598/446 +f 463/612/459 467/600/448 468/599/447 +f 464/613/460 468/601/447 465/615/461 +f 473/597/445 469/595/443 470/617/462 +f 475/618/463 474/596/444 470/617/462 +f 476/619/464 475/620/463 471/593/429 +f 476/619/464 472/594/442 469/595/443 +f 470/617/462 469/595/443 353/57/51 +f 475/618/463 35/55/47 34/54/49 +f 475/620/463 476/619/464 36/49/44 +f 476/619/464 473/597/445 33/50/45 +f 477/621/465 478/623/467 18/21/19 +f 479/622/466 19/28/25 18/21/19 +f 480/624/468 20/26/24 19/28/25 +f 480/625/468 477/621/465 17/24/22 +f 477/621/465 481/610/457 482/608/455 +f 479/622/466 478/623/467 482/608/455 +f 480/624/468 479/622/466 483/609/456 +f 480/625/468 484/611/458 481/610/457 +f 214/485/348 466/598/446 465/615/461 +f 487/628/469 39/66/59 38/607/454 +f 488/630/471 40/63/57 39/66/59 +f 488/631/471 485/606/453 37/60/54 +f 485/606/453 489/605/452 490/380/252 +f 486/629/470 490/380/252 491/381/253 +f 488/630/471 487/628/469 491/381/253 +f 485/606/453 488/631/471 492/633/451 +f 490/380/252 489/605/452 161/68/61 +f 247/556/410 503/647/474 502/634/472 +f 247/558/410 248/560/413 504/635/473 +f 248/560/413 245/246/211 501/561/414 +f 494/637/475 898/6/6 897/638/476 +f 495/640/478 899/1086/4 898/6/6 +f 495/641/478 496/642/479 900/1/1 +f 496/642/479 493/639/477 897/638/476 +f 494/637/475 493/639/477 497/643/480 +f 495/640/478 494/637/475 498/644/481 +f 495/641/478 499/648/482 500/646/483 +f 496/642/479 500/646/483 497/643/480 +f 498/644/481 497/643/480 501/561/414 +f 498/644/481 502/634/472 503/647/474 +f 499/648/482 503/636/474 504/635/473 +f 497/643/480 500/646/483 504/635/473 +f 562/649/484 558/716/539 557/650/485 +f 455/583/434 515/654/489 514/652/487 +f 455/583/434 456/1119/437 516/653/488 +f 456/586/437 453/581/432 513/655/490 +f 507/657/491 27/37/33 26/30/27 +f 508/659/493 28/35/32 27/37/33 +f 508/660/493 505/662/494 25/33/30 +f 505/662/494 509/666/498 510/663/495 +f 507/657/491 506/658/492 510/663/495 +f 508/659/493 507/657/491 511/664/496 +f 508/660/493 512/667/497 509/666/498 +f 510/663/495 509/666/498 513/655/490 +f 511/664/496 510/663/495 514/652/487 +f 511/664/496 515/654/489 516/653/488 +f 512/667/497 516/656/488 513/655/490 +f 237/534/391 238/537/394 482/608/455 +f 190/435/302 526/670/501 525/668/499 +f 191/434/301 527/680/503 526/670/501 +f 191/437/301 192/440/306 528/671/502 +f 192/440/306 189/669/500 525/668/499 +f 519/673/504 31/45/38 30/44/40 +f 519/674/504 520/675/505 32/39/35 +f 520/675/505 517/47/42 29/40/36 +f 518/46/41 517/47/42 521/676/506 +f 519/673/504 518/46/41 522/677/507 +f 519/674/504 523/1120/508 524/679/509 +f 520/675/505 524/679/509 521/676/506 +f 385/439/305 386/433/300 190/435/302 +f 521/676/506 525/668/499 526/670/501 +f 522/677/507 526/670/501 527/680/503 +f 524/679/509 523/1120/508 527/672/503 +f 521/676/506 524/679/509 528/671/502 +f 159/232/201 539/693/512 538/681/510 +f 159/235/201 160/238/206 540/682/511 +f 157/286/220 537/285/219 540/682/511 +f 530/684/513 54/81/73 53/80/72 +f 531/686/515 55/87/77 54/81/73 +f 531/687/515 532/688/516 56/83/75 +f 532/688/516 529/685/514 53/80/72 +f 530/684/513 529/685/514 533/689/517 +f 531/686/515 530/684/513 534/690/518 +f 531/687/515 535/694/519 536/692/520 +f 532/688/516 536/692/520 533/689/517 +f 534/690/518 533/689/517 537/285/219 +f 534/690/518 538/681/510 539/693/512 +f 535/694/519 539/683/512 540/682/511 +f 533/689/517 536/692/520 540/682/511 +f 195/445/311 555/715/523 554/695/521 +f 195/447/311 196/449/314 556/696/522 +f 196/449/314 193/443/309 553/698/524 +f 543/699/525 63/96/85 62/90/81 +f 543/701/525 544/702/527 64/92/83 +f 544/702/527 541/707/532 61/89/80 +f 542/700/526 541/707/532 545/703/528 +f 542/700/526 546/704/529 547/705/530 +f 543/701/525 547/1121/530 548/706/531 +f 541/707/532 544/702/527 548/706/531 +f 561/651/486 549/714/538 550/708/533 +f 562/649/484 550/708/533 551/709/534 +f 564/711/536 563/720/535 551/712/534 +f 561/651/486 564/711/536 552/713/537 +f 550/708/533 549/714/538 553/698/524 +f 551/709/534 550/708/533 554/695/521 +f 551/712/534 555/697/523 556/696/522 +f 552/713/537 556/696/522 553/698/524 +f 545/703/528 557/650/485 558/716/539 +f 547/705/530 546/704/529 558/716/539 +f 548/706/531 547/1121/530 559/718/540 +f 548/706/531 560/719/541 557/650/485 +f 563/710/535 559/717/540 558/716/539 +f 563/720/535 564/711/536 560/719/541 +f 557/650/485 560/719/541 564/711/536 +f 505/662/494 506/658/492 26/30/27 +f 167/386/258 575/734/544 574/721/542 +f 167/388/258 168/390/261 576/722/543 +f 165/384/256 573/733/553 576/722/543 +f 566/724/545 90/128/115 89/127/114 +f 567/726/547 91/134/119 90/128/115 +f 567/727/547 568/728/548 92/130/117 +f 568/728/548 565/725/546 89/127/114 +f 566/724/545 565/725/546 569/729/549 +f 567/726/547 566/724/545 570/730/550 +f 567/727/547 571/735/551 572/732/552 +f 568/728/548 572/732/552 569/729/549 +f 570/730/550 569/729/549 573/733/553 +f 570/730/550 574/721/542 575/734/544 +f 571/735/551 575/723/544 576/722/543 +f 569/729/549 572/732/552 576/722/543 +f 542/700/526 62/90/81 61/89/80 +f 175/262/214 587/738/556 586/736/554 +f 176/404/273 588/759/558 587/738/556 +f 176/406/273 173/408/276 585/739/557 +f 577/741/559 578/751/564 46/71/64 +f 43/73/66 42/70/63 282/742/152 +f 44/75/68 43/77/66 283/744/212 +f 41/72/65 44/75/68 284/745/213 +f 689/747/560 685/877/662 686/748/561 +f 282/742/152 42/70/63 41/72/65 +f 173/408/276 369/407/275 370/263/215 +f 579/750/563 47/78/70 46/71/64 +f 580/752/565 48/76/69 47/78/70 +f 580/753/565 577/741/559 45/74/67 +f 577/741/559 581/758/569 582/755/566 +f 579/750/563 578/751/564 582/755/566 +f 580/752/565 579/750/563 583/756/567 +f 580/753/565 584/1122/568 581/758/569 +f 582/755/566 581/758/569 585/739/557 +f 582/755/566 586/736/554 587/738/556 +f 583/756/567 587/738/556 588/759/558 +f 581/758/569 584/1122/568 588/740/558 +f 251/563/416 599/781/572 598/760/570 +f 251/566/416 252/569/421 600/761/571 +f 252/569/421 249/571/423 597/570/422 +f 602/763/573 601/771/580 589/764/574 +f 603/766/576 602/763/573 590/765/575 +f 603/768/576 591/782/577 592/769/578 +f 604/770/579 592/769/578 589/764/574 +f 602/763/573 82/119/107 81/118/106 +f 605/772/581 593/780/588 594/773/582 +f 606/774/583 594/773/582 595/775/584 +f 608/777/586 607/1123/585 595/778/584 +f 605/772/581 608/777/586 596/779/587 +f 593/780/588 597/570/422 598/760/570 +f 594/773/582 598/760/570 599/781/572 +f 596/779/587 595/778/584 599/762/572 +f 593/780/588 596/779/587 600/761/571 +f 603/766/576 83/125/111 82/119/107 +f 603/768/576 604/770/579 84/121/109 +f 604/770/579 601/771/580 81/118/106 +f 590/765/575 589/764/574 605/772/581 +f 591/767/577 590/765/575 606/774/583 +f 591/782/577 607/1123/585 608/777/586 +f 592/769/578 608/777/586 605/772/581 +f 616/783/589 615/480/343 211/474/338 +f 613/784/590 616/783/589 212/476/340 +f 609/786/591 610/787/592 74/110/99 +f 610/787/592 611/789/594 75/115/103 +f 612/788/593 76/112/101 75/115/103 +f 609/790/591 73/113/98 76/112/101 +f 609/786/591 613/791/590 614/479/342 +f 610/787/592 614/479/342 615/480/343 +f 612/788/593 611/789/594 615/480/343 +f 609/790/591 612/788/593 616/783/589 +f 613/791/590 209/302/222 210/792/595 +f 226/511/370 227/510/369 619/793/596 +f 227/510/369 228/513/372 620/795/598 +f 225/106/95 617/516/374 620/796/598 +f 621/797/599 901/805/606 902/798/600 +f 622/799/601 902/798/600 903/800/602 +f 624/802/604 623/801/603 903/800/602 +f 621/797/599 624/1124/604 904/804/605 +f 617/516/374 618/794/597 902/798/600 +f 619/793/596 903/800/602 902/798/600 +f 620/795/598 904/803/605 903/800/602 +f 620/796/598 617/516/374 901/805/606 +f 625/806/607 621/797/599 622/799/601 +f 627/808/609 626/807/608 622/799/601 +f 628/809/610 627/808/609 623/801/603 +f 628/810/610 624/1124/604 621/797/599 +f 629/811/611 625/806/607 626/807/608 +f 630/812/612 626/807/608 627/808/609 +f 632/814/614 631/813/613 627/808/609 +f 629/811/611 632/816/614 628/810/610 +f 629/811/611 630/812/612 66/815/615 +f 631/813/613 67/104/93 66/815/615 +f 632/814/614 68/101/91 67/104/93 +f 632/816/614 629/811/611 65/98/88 +f 381/429/296 382/423/291 186/425/293 +f 223/504/364 635/822/618 634/818/616 +f 223/506/364 224/508/367 636/819/617 +f 224/508/367 221/333/229 633/509/368 +f 638/821/619 637/826/622 633/509/368 +f 638/821/619 634/818/616 635/822/618 +f 639/824/620 635/820/618 636/819/617 +f 637/826/622 640/825/621 636/819/617 +f 642/827/623 641/831/626 637/826/622 +f 643/828/624 642/827/623 638/821/619 +f 643/829/624 639/824/620 640/825/621 +f 644/830/625 640/825/621 637/826/622 +f 642/827/623 114/155/139 113/154/138 +f 643/828/624 115/161/143 114/155/139 +f 643/829/624 644/830/625 116/157/141 +f 644/830/625 641/831/626 113/154/138 +f 171/397/267 647/836/627 646/402/271 +f 172/401/270 648/833/628 647/832/627 +f 172/401/270 169/339/233 645/403/272 +f 649/834/629 645/403/272 646/402/271 +f 650/835/630 646/402/271 647/836/627 +f 652/838/632 651/1125/631 647/832/627 +f 649/834/629 652/838/632 648/833/628 +f 654/839/633 653/843/636 649/834/629 +f 655/840/634 654/839/633 650/835/630 +f 655/841/634 651/1125/631 652/838/632 +f 656/842/635 652/838/632 649/834/629 +f 658/167/150 657/162/145 653/843/636 +f 658/167/150 654/839/633 655/840/634 +f 659/165/148 655/841/634 656/842/635 +f 657/162/145 660/164/147 656/842/635 +f 906/845/160 121/180/159 122/173/155 +f 219/496/357 663/851/638 662/501/361 +f 220/500/360 664/848/639 663/847/638 +f 220/500/360 217/354/239 661/502/362 +f 665/849/640 661/502/362 662/501/361 +f 666/850/641 662/501/361 663/851/638 +f 668/853/643 667/1126/642 663/847/638 +f 665/849/640 668/853/643 664/848/639 +f 670/854/644 669/858/647 665/849/640 +f 670/854/644 666/850/641 667/852/642 +f 671/856/645 667/1126/642 668/853/643 +f 669/858/647 672/857/646 668/853/643 +f 674/859/648 673/863/651 669/858/647 +f 675/860/649 674/859/648 670/854/644 +f 675/861/649 671/856/645 672/857/646 +f 676/862/650 672/857/646 669/858/647 +f 130/347/234 673/863/651 674/859/648 +f 129/192/168 674/859/648 675/860/649 +f 131/349/236 132/348/235 675/861/649 +f 130/347/234 131/349/236 676/862/650 +f 677/864/652 349/367/241 350/366/240 +f 679/866/654 678/865/653 350/366/240 +f 680/867/655 679/866/654 351/369/243 +f 680/869/655 352/373/246 349/367/241 +f 682/870/656 681/874/659 677/864/652 +f 683/871/657 682/870/656 678/865/653 +f 683/871/657 679/866/654 680/867/655 +f 684/873/658 680/869/655 677/864/652 +f 686/748/561 685/877/662 681/874/659 +f 686/748/561 682/870/656 683/871/657 +f 687/875/660 683/871/657 684/872/658 +f 685/877/662 688/880/661 684/873/658 +f 690/749/562 686/748/561 687/875/660 +f 687/875/660 688/876/661 692/879/664 +f 688/880/661 685/877/662 689/747/560 +f 346/882/152 146/1090/187 145/213/184 +f 689/747/560 690/749/562 106/145/130 +f 690/749/562 691/878/663 107/152/136 +f 692/879/664 108/150/135 107/152/136 +f 689/747/560 105/148/133 108/883/135 +f 310/884/152 94/1089/124 93/135/121 +f 178/411/279 694/887/667 693/885/665 +f 179/410/278 695/889/669 694/887/667 +f 179/410/278 180/413/281 696/888/668 +f 180/413/281 177/1104/666 693/890/665 +f 698/891/670 697/1127/673 693/885/665 +f 699/892/671 698/891/670 694/887/667 +f 699/892/671 695/889/669 696/888/668 +f 700/893/672 696/888/668 693/890/665 +f 701/895/674 697/1127/673 698/891/670 +f 702/896/675 698/891/670 699/892/671 +f 704/898/677 703/897/676 699/892/671 +f 701/899/674 704/898/677 700/893/672 +f 705/900/678 701/895/674 702/896/675 +f 706/901/679 702/896/675 703/897/676 +f 708/903/681 704/898/677 701/899/674 +f 708/903/681 707/902/680 703/897/676 +f 98/137/123 97/136/122 705/900/678 +f 98/137/123 706/901/679 707/902/680 +f 99/142/127 707/902/680 708/903/681 +f 97/140/122 100/139/125 708/903/681 +f 374/409/277 178/411/279 177/886/666 +f 230/518/376 231/521/379 711/906/682 +f 231/521/379 232/523/381 712/908/684 +f 229/522/380 709/525/382 712/908/684 +f 714/909/685 713/913/688 709/525/382 +f 715/911/686 714/1128/685 710/907/683 +f 715/911/686 711/906/682 712/908/684 +f 716/912/687 712/908/684 709/525/382 +f 718/914/689 717/918/692 713/913/688 +f 718/915/689 714/1128/685 715/911/686 +f 719/916/690 715/911/686 716/912/687 +f 717/918/692 720/917/691 716/912/687 +f 302/305/152 78/120/108 77/117/105 +f 721/919/693 717/918/692 718/914/689 +f 723/921/695 722/1129/694 718/915/689 +f 724/922/696 723/921/695 719/916/690 +f 724/922/696 720/917/691 717/918/692 +f 726/923/697 725/927/700 721/919/693 +f 726/924/697 722/1129/694 723/921/695 +f 727/925/698 723/921/695 724/922/696 +f 725/927/700 728/926/699 724/922/696 +f 730/928/701 729/932/704 725/927/700 +f 730/929/701 726/924/697 727/925/698 +f 731/930/702 727/925/698 728/926/699 +f 729/932/704 732/931/703 728/926/699 +f 730/928/701 138/195/170 137/198/173 +f 730/929/701 731/930/702 139/202/176 +f 731/930/702 732/931/703 140/200/175 +f 729/932/704 137/198/173 140/200/175 +f 425/934/705 426/1130/377 230/524/376 +f 198/457/321 199/456/320 735/935/706 +f 200/461/325 736/937/707 735/935/706 +f 197/462/326 733/464/328 736/937/707 +f 737/938/708 733/464/328 734/463/327 +f 738/940/709 734/936/327 735/935/706 +f 740/942/711 739/941/710 735/935/706 +f 737/938/708 740/942/711 736/937/707 +f 741/943/712 737/938/708 738/939/709 +f 743/945/714 742/1131/713 738/940/709 +f 744/946/715 743/945/714 739/941/710 +f 744/946/715 740/942/711 737/938/708 +f 746/947/716 745/951/719 741/943/712 +f 746/948/716 742/1131/713 743/945/714 +f 747/949/717 743/945/714 744/946/715 +f 745/951/719 748/950/718 744/946/715 +f 749/952/720 745/951/719 746/947/716 +f 750/954/721 746/948/716 747/949/717 +f 752/956/723 751/955/722 747/949/717 +f 749/952/720 752/956/723 748/950/718 +f 393/460/324 394/1132/319 198/957/321 +f 750/953/721 906/845/160 905/846/637 +f 750/954/721 751/955/722 907/176/158 +f 751/955/722 752/956/723 908/172/154 +f 749/952/720 905/846/637 908/172/154 +f 754/222/192 753/224/194 765/958/724 +f 754/222/192 766/959/725 767/960/726 +f 755/225/195 767/960/726 768/961/727 +f 753/229/194 756/227/197 768/961/727 +f 241/963/728 242/549/404 818/964/729 +f 763/966/731 769/1133/738 770/967/732 +f 761/969/734 762/968/733 770/967/732 +f 764/971/736 761/969/734 771/970/735 +f 763/973/731 764/971/736 772/972/737 +f 790/975/739 762/968/733 761/969/734 +f 187/424/292 775/982/743 774/977/741 +f 187/427/292 188/430/297 776/978/742 +f 188/430/297 185/432/299 773/431/298 +f 778/980/744 777/985/747 773/431/298 +f 779/981/745 778/980/744 774/977/741 +f 779/983/745 775/979/743 776/978/742 +f 780/984/746 776/978/742 773/431/298 +f 781/986/748 777/985/747 778/980/744 +f 782/987/749 778/980/744 779/981/745 +f 784/989/751 783/1134/750 779/983/745 +f 781/986/748 784/989/751 780/984/746 +f 786/990/752 785/994/755 781/986/748 +f 786/990/752 782/987/749 783/988/750 +f 787/992/753 783/1134/750 784/989/751 +f 785/994/755 788/993/754 784/989/751 +f 786/990/752 787/991/753 791/995/756 +f 791/996/756 787/992/753 788/993/754 +f 792/997/757 788/993/754 785/994/755 +f 785/994/755 786/990/752 790/975/739 +f 791/995/756 763/966/731 762/968/733 +f 791/996/756 792/997/757 764/971/736 +f 792/997/757 789/976/740 761/969/734 +f 429/998/758 430/1135/385 234/999/384 +f 234/999/384 794/1005/761 793/1000/759 +f 234/527/384 235/530/387 795/1001/760 +f 236/532/389 796/1003/762 795/1001/760 +f 233/531/388 793/1000/759 796/1003/762 +f 797/1004/763 793/1000/759 794/1005/761 +f 798/1007/764 794/1002/761 795/1001/760 +f 800/1009/766 799/1008/765 795/1001/760 +f 797/1004/763 800/1009/766 796/1003/762 +f 801/1010/767 797/1004/763 798/1006/764 +f 802/1012/768 798/1007/764 799/1008/765 +f 804/1014/770 803/1013/769 799/1008/765 +f 801/1010/767 804/1014/770 800/1009/766 +f 805/1015/771 801/1010/767 802/1011/768 +f 807/1017/773 806/1136/772 802/1012/768 +f 808/1018/774 807/1017/773 803/1013/769 +f 808/1018/774 804/1014/770 801/1010/767 +f 810/1019/775 806/1136/772 807/1017/773 +f 811/1020/776 807/1017/773 808/1018/774 +f 808/1018/774 805/1015/771 809/1022/778 +f 814/1023/779 813/1028/782 809/1022/778 +f 814/1025/779 810/1019/775 811/1020/776 +f 815/1026/780 811/1020/776 812/1021/777 +f 813/1028/782 816/1027/781 812/1021/777 +f 814/1023/779 910/1137/183 909/1029/783 +f 814/1025/779 815/1026/780 911/207/181 +f 815/1026/780 816/1027/781 912/203/177 +f 813/1028/782 909/1029/783 912/203/177 +f 243/548/403 819/1034/784 818/964/729 +f 244/551/406 820/1031/785 819/1030/784 +f 244/551/406 241/963/728 817/965/730 +f 822/1032/786 821/1037/789 817/965/730 +f 823/1033/787 822/1032/786 818/964/729 +f 823/1035/787 819/1030/784 820/1031/785 +f 824/1036/788 820/1031/785 817/965/730 +f 825/1038/790 821/1037/789 822/1032/786 +f 826/1039/791 822/1032/786 823/1033/787 +f 828/1041/793 827/1138/792 823/1035/787 +f 825/1038/790 828/1041/793 824/1036/788 +f 830/1042/794 829/1046/797 825/1038/790 +f 831/1043/795 830/1042/794 826/1039/791 +f 831/1044/795 827/1138/792 828/1041/793 +f 832/1045/796 828/1041/793 825/1038/790 +f 830/1042/794 758/226/196 757/228/198 +f 831/1043/795 759/223/193 758/226/196 +f 831/1044/795 832/1045/796 760/230/199 +f 832/1045/796 829/1046/797 757/228/198 +f 834/1048/798 833/1139/801 205/1049/799 +f 207/468/332 835/1050/800 834/1048/798 +f 208/471/335 836/1057/806 835/1050/800 +f 833/1051/801 836/1057/806 208/471/335 +f 837/1053/802 833/1139/801 834/1048/798 +f 838/1054/803 834/1048/798 835/1050/800 +f 840/1056/805 839/1055/804 835/1050/800 +f 837/1058/802 840/1056/805 836/1057/806 +f 841/1059/807 837/1053/802 838/1054/803 +f 842/188/167 838/1054/803 839/1055/804 +f 844/182/161 843/186/165 839/1055/804 +f 841/1060/807 844/182/161 840/1056/805 +f 402/467/331 206/469/333 205/1049/799 +f 182/418/286 846/1064/810 845/1062/808 +f 183/417/285 847/1065/811 846/1064/810 +f 184/420/288 848/1067/812 847/1065/811 +f 184/420/288 181/1105/809 845/1066/808 +f 850/1068/813 849/1073/816 845/1062/808 +f 851/1069/814 850/1068/813 846/1064/810 +f 851/1069/814 847/1065/811 848/1067/812 +f 852/1070/815 848/1067/812 845/1066/808 +f 854/1072/817 853/1140/820 849/1073/816 +f 854/1072/817 850/1068/813 851/1069/814 +f 855/1074/818 851/1069/814 852/1070/815 +f 853/1076/820 856/1075/819 852/1070/815 +f 857/1077/821 853/1140/820 854/1072/817 +f 858/1078/822 854/1072/817 855/1074/818 +f 860/1080/824 859/1079/823 855/1074/818 +f 857/1081/821 860/1080/824 856/1075/819 +f 857/1077/821 858/1078/822 150/215/186 +f 859/1079/823 151/220/190 150/215/186 +f 860/1080/824 152/217/188 151/220/190 +f 860/1080/824 857/1081/821 149/218/185 +f 194/442/308 554/695/521 553/698/524 +f 454/580/431 514/652/487 513/655/490 +f 173/408/276 174/737/555 586/736/554 +f 166/383/255 574/721/542 573/733/553 +f 897/638/476 898/6/6 1/8/7 +f 870/61/55 37/60/54 38/607/454 +f 865/272/218 866/48/43 33/50/45 +f 861/266/217 862/38/34 29/40/36 +f 874/99/89 65/98/88 66/815/615 +f 805/1015/771 806/1016/772 810/1024/775 +f 909/1029/783 910/1137/183 141/211/182 +f 298/1082/152 70/1088/100 69/108/97 +f 314/319/152 102/144/129 101/146/131 +f 438/547/402 242/549/404 241/963/728 +f 841/1059/807 842/188/167 125/187/166 +f 318/327/152 110/156/140 109/153/137 +f 658/167/150 117/169/151 118/335/230 +f 378/416/284 182/418/286 181/1063/809 +f 338/356/152 134/194/169 133/196/171 +f 445/568/420 446/562/415 250/564/417 +f 153/237/205 154/231/200 158/233/202 +f 306/310/152 86/129/116 85/126/113 +o Body +v -1.000000 0.062500 -0.500000 +v -1.000000 0.000000 -0.562500 +v -1.000000 0.000000 -0.500000 +v -1.000000 0.062500 -0.562500 +v 1.000000 0.000000 -0.562500 +v 1.000000 0.062500 -0.562500 +v 1.000000 0.000000 -0.500000 +v -1.000000 0.062500 -0.437500 +v -1.000000 0.125000 -0.500000 +v 1.000000 0.062500 -0.500000 +v 1.000000 0.062500 -0.437500 +v -1.000000 0.000000 -0.437500 +v 1.000000 0.000000 -0.437500 +v 1.000000 0.125000 -0.437500 +v -0.937500 0.187500 -0.500000 +v 0.937500 0.187500 -0.437500 +v 0.937500 0.187500 -0.500000 +v -0.937500 0.187500 -0.437500 +v -1.000000 0.125000 -0.437500 +v 1.000000 0.125000 -0.500000 +v -1.000000 -0.000000 0.562500 +v -1.000000 0.062500 0.500000 +v -1.000000 -0.000000 0.500000 +v 1.000000 -0.000000 0.562500 +v -1.000000 0.062500 0.562500 +v 1.000000 -0.000000 0.500000 +v 1.000000 0.062500 0.562500 +v -1.000000 0.125000 0.500000 +v -1.000000 0.062500 0.437500 +v 1.000000 0.062500 0.500000 +v -1.000000 -0.000000 0.437500 +v 1.000000 0.062500 0.437500 +v 1.000000 -0.000000 0.437500 +v 1.000000 0.125000 0.437500 +v 0.937500 0.187500 0.437500 +v -0.937500 0.187500 0.500000 +v 0.937500 0.187500 0.500000 +v -1.000000 0.125000 0.437500 +v 1.000000 0.125000 0.500000 +v -0.531250 0.187500 0.437500 +v -0.531250 0.000000 -0.437500 +v -0.531250 -0.000000 0.437500 +v -0.468750 0.187500 -0.437500 +v -0.468750 -0.000000 0.437500 +v -0.468750 0.000000 -0.437500 +v -0.531250 0.187500 -0.437500 +v -0.468750 0.187500 0.437500 +v 0.531250 0.000000 -0.437500 +v 0.531250 0.187500 0.437500 +v 0.531250 -0.000000 0.437500 +v 0.468750 -0.000000 0.437500 +v 0.468750 0.187500 -0.437500 +v 0.468750 0.000000 -0.437500 +v 0.468750 0.187500 0.437500 +v 0.531250 0.187500 -0.437500 +v -0.619649 0.820234 -0.375000 +v -0.749885 0.081628 -0.437500 +v -0.749885 0.081628 -0.375000 +v -0.619649 0.820234 -0.437500 +v -0.565233 0.049069 -0.437500 +v -0.434997 0.787675 -0.437500 +v -0.565233 0.049069 -0.375000 +v -0.434997 0.787675 -0.375000 +v -0.600024 0.335540 -0.421875 +v -0.379053 0.114569 -0.453125 +v -0.379053 0.114569 -0.421875 +v -0.600024 0.335540 -0.453125 +v -0.334858 0.158763 -0.453125 +v -0.555829 0.379734 -0.453125 +v -0.334858 0.158763 -0.421875 +v -0.555829 0.379734 -0.421875 +v 0.749885 0.081628 -0.437500 +v 0.619649 0.820234 -0.375000 +v 0.749885 0.081628 -0.375000 +v 0.565233 0.049069 -0.437500 +v 0.619649 0.820234 -0.437500 +v 0.565233 0.049069 -0.375000 +v 0.434997 0.787675 -0.437500 +v 0.434997 0.787675 -0.375000 +v 0.379053 0.114569 -0.453125 +v 0.600024 0.335540 -0.421875 +v 0.379053 0.114569 -0.421875 +v 0.334858 0.158763 -0.453125 +v 0.600024 0.335540 -0.453125 +v 0.334858 0.158763 -0.421875 +v 0.555829 0.379734 -0.453125 +v 0.555829 0.379734 -0.421875 +v -0.749885 0.081628 0.437500 +v -0.619649 0.820234 0.375000 +v -0.749885 0.081628 0.375000 +v -0.565233 0.049069 0.437500 +v -0.619649 0.820234 0.437500 +v -0.565233 0.049069 0.375000 +v -0.434997 0.787675 0.437500 +v -0.434997 0.787675 0.375000 +v -0.379053 0.114569 0.453125 +v -0.600024 0.335540 0.421875 +v -0.379053 0.114569 0.421875 +v -0.334858 0.158763 0.453125 +v -0.600024 0.335540 0.453125 +v -0.334858 0.158763 0.421875 +v -0.555829 0.379734 0.453125 +v -0.555829 0.379734 0.421875 +v 0.619649 0.820234 0.375000 +v 0.749885 0.081628 0.437500 +v 0.749885 0.081628 0.375000 +v 0.619649 0.820234 0.437500 +v 0.565233 0.049069 0.437500 +v 0.434997 0.787675 0.437500 +v 0.565233 0.049069 0.375000 +v 0.434997 0.787675 0.375000 +v 0.600024 0.335540 0.421875 +v 0.379053 0.114569 0.453125 +v 0.379053 0.114569 0.421875 +v 0.600024 0.335540 0.453125 +v 0.334858 0.158763 0.453125 +v 0.555829 0.379734 0.453125 +v 0.334858 0.158763 0.421875 +v 0.555829 0.379734 0.421875 +v 0.000000 1.980546 1.233917 +v 0.183897 1.943967 0.733917 +v 0.000000 1.980546 0.733917 +v 0.183897 1.943967 1.233917 +v 0.339797 1.839797 0.733917 +v 0.339797 1.839797 1.233917 +v 0.443967 1.683897 0.733917 +v 0.443967 1.683897 1.233917 +v 0.480546 1.500000 0.733917 +v 0.480546 1.500000 1.233917 +v 0.443967 1.316103 0.733917 +v 0.443967 1.316103 1.233917 +v 0.339797 1.160202 0.733917 +v 0.183897 1.056033 1.233917 +v 0.183897 1.056033 0.733917 +v 0.000000 1.019453 0.733917 +v 0.000000 1.019453 1.233917 +v -0.183897 1.056033 0.733917 +v -0.183897 1.056033 1.233917 +v -0.339798 1.160202 0.733917 +v -0.339798 1.160202 1.233917 +v -0.443967 1.316103 0.733917 +v -0.443967 1.316103 1.233917 +v -0.480547 1.500000 0.733917 +v -0.480547 1.500000 1.233917 +v -0.443967 1.683897 0.733917 +v -0.443967 1.683897 1.233917 +v -0.339798 1.839797 0.733917 +v 0.339797 1.160202 1.233917 +v -0.339798 1.839797 1.233917 +v -0.183897 1.943967 0.733917 +v -0.183897 1.943967 1.233917 +v 0.490881 1.143354 -0.961093 +v -0.187500 0.922934 -0.961093 +v -0.606763 1.500000 -0.961093 +v 0.187500 2.077066 -0.961093 +v 0.361622 2.222140 -0.627943 +v 0.312593 2.071245 -0.856743 +v 0.736322 2.034969 -0.523593 +v 0.281250 2.365599 -0.523593 +v 0.490881 1.856646 -0.961093 +v 0.575049 2.067076 -0.627943 +v 0.446690 1.973818 -0.856743 +v 0.717021 1.871668 -0.627943 +v 0.588663 1.778410 -0.856743 +v 0.910144 1.500000 -0.523593 +v 0.606763 1.500000 -0.961093 +v 0.798543 1.620769 -0.627943 +v 0.639883 1.620769 -0.856743 +v 0.798543 1.379231 -0.627943 +v 0.639883 1.379231 -0.856743 +v 0.736322 0.965031 -0.523593 +v 0.717021 1.128333 -0.627943 +v 0.588663 1.221590 -0.856743 +v 0.575048 0.932924 -0.627943 +v 0.446690 1.026182 -0.856743 +v 0.361622 0.777860 -0.627943 +v 0.187500 0.922934 -0.961093 +v 0.281250 0.634401 -0.523593 +v 0.312593 0.928755 -0.856743 +v 0.131905 0.703221 -0.627943 +v 0.082876 0.854115 -0.856743 +v -0.131905 0.703221 -0.627943 +v -0.281250 0.634401 -0.523593 +v -0.082877 0.854115 -0.856743 +v -0.361622 0.777860 -0.627943 +v -0.312593 0.928755 -0.856743 +v -0.736322 0.965031 -0.523593 +v -0.490881 1.143354 -0.961093 +v -0.575049 0.932924 -0.627943 +v -0.446690 1.026182 -0.856743 +v -0.717021 1.128332 -0.627943 +v -0.588663 1.221591 -0.856743 +v -0.910144 1.500000 -0.523593 +v -0.798543 1.379231 -0.627943 +v -0.639883 1.379231 -0.856743 +v -0.798543 1.620769 -0.627943 +v -0.639883 1.620769 -0.856743 +v -0.736322 2.034969 -0.523593 +v -0.490881 1.856646 -0.961093 +v -0.717021 1.871668 -0.627943 +v -0.588663 1.778410 -0.856743 +v -0.575048 2.067076 -0.627943 +v -0.446690 1.973818 -0.856743 +v -0.281250 2.365598 -0.523593 +v -0.187500 2.077066 -0.961093 +v -0.361621 2.222140 -0.627943 +v -0.312593 2.071246 -0.856743 +v -0.131905 2.296779 -0.627943 +v -0.082876 2.145885 -0.856743 +v 0.131905 2.296779 -0.627943 +v 0.082876 2.145885 -0.856743 +v -0.606763 1.500000 0.961093 +v 0.490881 1.143354 0.961093 +v 0.490881 1.856646 0.961093 +v 0.187500 2.077066 0.961093 +v 0.361622 2.222140 0.627943 +v 0.281250 2.365599 0.523593 +v 0.736322 2.034969 0.523593 +v 0.575049 2.067076 0.627943 +v 0.446690 1.973818 0.856743 +v 0.717021 1.871668 0.627943 +v 0.910144 1.500000 0.523593 +v 0.798543 1.620769 0.627943 +v 0.606763 1.500000 0.961093 +v 0.588663 1.778410 0.856743 +v 0.798543 1.379231 0.627943 +v 0.736322 0.965031 0.523593 +v 0.717021 1.128333 0.627943 +v 0.588663 1.221590 0.856743 +v 0.575048 0.932924 0.627943 +v 0.361622 0.777860 0.627943 +v 0.281250 0.634401 0.523593 +v 0.187500 0.922934 0.961093 +v 0.312593 0.928755 0.856743 +v 0.131905 0.703221 0.627943 +v -0.131905 0.703221 0.627943 +v -0.281250 0.634401 0.523593 +v -0.187500 0.922934 0.961093 +v -0.082877 0.854115 0.856743 +v -0.361622 0.777860 0.627943 +v -0.736322 0.965031 0.523593 +v -0.575049 0.932924 0.627943 +v -0.490881 1.143354 0.961093 +v -0.312593 0.928755 0.856743 +v -0.717021 1.128332 0.627943 +v -0.798543 1.379231 0.627943 +v -0.910144 1.500000 0.523593 +v -0.639883 1.379231 0.856743 +v -0.798543 1.620769 0.627943 +v -0.736322 2.034969 0.523593 +v -0.717021 1.871668 0.627943 +v -0.490881 1.856646 0.961093 +v -0.588663 1.778410 0.856743 +v -0.575048 2.067076 0.627943 +v -0.361621 2.222140 0.627943 +v -0.281250 2.365598 0.523593 +v -0.187500 2.077066 0.961093 +v -0.312593 2.071246 0.856743 +v -0.131905 2.296779 0.627943 +v 0.131905 2.296779 0.627943 +v 0.082876 2.145885 0.856743 +v 0.000000 2.461093 -0.437500 +v 0.367794 2.387934 -0.562500 +v 0.000000 2.461093 -0.562500 +v 0.367794 2.387934 -0.437500 +v 0.679595 2.179595 -0.562500 +v 0.679595 2.179595 -0.437500 +v 0.887934 1.867794 -0.562500 +v 0.887934 1.867794 -0.437500 +v 0.961093 1.500000 -0.562500 +v 0.961093 1.500000 -0.437500 +v 0.887934 1.132205 -0.562500 +v 0.887934 1.132205 -0.437500 +v 0.679595 0.820405 -0.562500 +v 0.367794 0.612066 -0.437500 +v 0.367794 0.612066 -0.562500 +v 0.000000 0.538907 -0.562500 +v 0.000000 0.538907 -0.437500 +v -0.367794 0.612066 -0.562500 +v -0.367794 0.612066 -0.437500 +v -0.679595 0.820404 -0.562500 +v -0.679595 0.820404 -0.437500 +v -0.887934 1.132205 -0.562500 +v -0.887934 1.132205 -0.437500 +v -0.961093 1.500000 -0.562500 +v -0.961093 1.500000 -0.437500 +v -0.887934 1.867795 -0.562500 +v -0.887934 1.867795 -0.437500 +v -0.679595 2.179596 -0.562500 +v -0.679595 2.179596 -0.437500 +v -0.367794 2.387935 -0.562500 +v -0.367794 2.387935 -0.437500 +v 0.294635 2.211313 -0.562500 +v 0.294635 2.211313 -0.437500 +v 0.000000 2.269920 -0.437500 +v 0.544415 2.044415 -0.562500 +v 0.711313 1.794636 -0.562500 +v 0.711313 1.794636 -0.437500 +v 0.544415 2.044415 -0.437500 +v 0.769920 1.500000 -0.562500 +v 0.711313 1.205364 -0.562500 +v 0.711313 1.205364 -0.437500 +v 0.769920 1.500000 -0.437500 +v 0.544415 0.955585 -0.562500 +v 0.679595 0.820405 -0.437500 +v 0.294635 0.788687 -0.562500 +v 0.294635 0.788687 -0.437500 +v 0.544415 0.955585 -0.437500 +v 0.000000 0.730080 -0.562500 +v -0.294635 0.788687 -0.562500 +v 0.000000 0.730080 -0.437500 +v -0.544415 0.955584 -0.562500 +v -0.544415 0.955584 -0.437500 +v -0.294635 0.788687 -0.437500 +v -0.711313 1.205364 -0.562500 +v -0.769920 1.500000 -0.562500 +v -0.769920 1.500000 -0.437500 +v -0.711313 1.205364 -0.437500 +v -0.711313 1.794636 -0.562500 +v -0.544415 2.044416 -0.562500 +v -0.711313 1.794636 -0.437500 +v -0.294635 2.211313 -0.562500 +v -0.294635 2.211313 -0.437500 +v -0.544415 2.044416 -0.437500 +v 0.000000 2.269920 -0.562500 +v 0.367794 2.387934 0.562500 +v 0.000000 2.461093 0.437500 +v 0.000000 2.461093 0.562500 +v 0.679595 2.179595 0.437500 +v 0.367794 2.387934 0.437500 +v 0.887934 1.867794 0.562500 +v 0.679595 2.179595 0.562500 +v 0.961093 1.500000 0.562500 +v 0.887934 1.867794 0.437500 +v 0.887934 1.132205 0.562500 +v 0.961093 1.500000 0.437500 +v 0.679595 0.820405 0.562500 +v 0.887934 1.132205 0.437500 +v 0.367794 0.612066 0.437500 +v 0.679595 0.820405 0.437500 +v 0.000000 0.538907 0.562500 +v 0.367794 0.612066 0.562500 +v -0.367794 0.612066 0.562500 +v 0.000000 0.538907 0.437500 +v -0.679595 0.820404 0.562500 +v -0.367794 0.612066 0.437500 +v -0.887934 1.132205 0.562500 +v -0.679595 0.820404 0.437500 +v -0.961093 1.500000 0.562500 +v -0.887934 1.132205 0.437500 +v -0.887934 1.867795 0.562500 +v -0.961093 1.500000 0.437500 +v -0.679595 2.179596 0.562500 +v -0.887934 1.867795 0.437500 +v -0.367794 2.387935 0.562500 +v -0.679595 2.179596 0.437500 +v -0.367794 2.387935 0.437500 +v 0.000000 2.269920 0.562500 +v 0.294635 2.211313 0.562500 +v 0.294635 2.211313 0.437500 +v 0.000000 2.269920 0.437500 +v 0.544415 2.044415 0.562500 +v 0.544415 2.044415 0.437500 +v 0.711313 1.794636 0.562500 +v 0.711313 1.794636 0.437500 +v 0.769920 1.500000 0.562500 +v 0.769920 1.500000 0.437500 +v 0.711313 1.205364 0.562500 +v 0.711313 1.205364 0.437500 +v 0.544415 0.955585 0.562500 +v 0.544415 0.955585 0.437500 +v 0.294635 0.788687 0.562500 +v 0.294635 0.788687 0.437500 +v 0.000000 0.730080 0.562500 +v 0.000000 0.730080 0.437500 +v -0.294635 0.788687 0.562500 +v -0.294635 0.788687 0.437500 +v -0.544415 0.955584 0.562500 +v -0.544415 0.955584 0.437500 +v -0.711313 1.205364 0.562500 +v -0.711313 1.205364 0.437500 +v -0.769920 1.500000 0.562500 +v -0.769920 1.500000 0.437500 +v -0.711313 1.794636 0.562500 +v -0.711313 1.794636 0.437500 +v -0.544415 2.044416 0.562500 +v -0.544415 2.044416 0.437500 +v -0.294635 2.211313 0.562500 +v -0.294635 2.211313 0.437500 +v 0.613304 2.201693 0.000000 +v 0.657498 2.245887 -0.312500 +v 0.569110 2.157499 -0.312500 +v 0.701693 2.113304 -0.437500 +v 0.613304 2.201693 -0.437500 +v 0.701693 2.113304 0.000000 +v 0.745887 2.157498 0.312500 +v 0.657498 2.069110 0.312500 +v 0.657498 2.245887 0.312500 +v 0.701693 2.113304 0.437500 +v 0.701693 2.290081 0.000000 +v 0.790081 2.201693 0.000000 +v 0.613304 2.024916 0.437500 +v 0.569110 2.157499 0.312500 +v 0.613304 2.201693 0.437500 +v 0.745887 2.157498 -0.312500 +v 0.657498 2.069110 -0.312500 +v 0.524916 2.113304 -0.437500 +v -0.613304 2.201693 0.000000 +v -0.657498 2.245887 -0.312500 +v -0.701693 2.290081 0.000000 +v -0.701693 2.113304 -0.437500 +v -0.745887 2.157498 -0.312500 +v -0.701693 2.113304 0.000000 +v -0.745887 2.157498 0.312500 +v -0.790081 2.201693 0.000000 +v -0.701693 2.113304 0.437500 +v -0.657498 2.245887 0.312500 +v -0.657498 2.069110 0.312500 +v -0.613304 2.201693 0.437500 +v -0.569110 2.157499 0.312500 +v -0.657498 2.069110 -0.312500 +v -0.569110 2.157499 -0.312500 +v -0.613304 2.201693 -0.437500 +v 0.613304 0.798307 0.000000 +v 0.657498 0.754113 -0.312500 +v 0.701693 0.709919 0.000000 +v 0.613304 0.798307 -0.437500 +v 0.745887 0.842502 -0.312500 +v 0.701693 0.886696 0.000000 +v 0.745887 0.842502 0.312500 +v 0.790081 0.798307 0.000000 +v 0.613304 0.798307 0.437500 +v 0.657498 0.754113 0.312500 +v 0.657498 0.930890 0.312500 +v 0.701693 0.886696 0.437500 +v 0.569110 0.842502 0.312500 +v 0.657498 0.930890 -0.312500 +v 0.569110 0.842502 -0.312500 +v 0.701693 0.886696 -0.437500 +v -0.613304 0.798307 0.000000 +v -0.657498 0.754113 -0.312500 +v -0.569110 0.842502 -0.312500 +v -0.745887 0.842502 -0.312500 +v -0.613304 0.798307 -0.437500 +v -0.701693 0.886696 0.000000 +v -0.745887 0.842502 0.312500 +v -0.657498 0.930890 0.312500 +v -0.613304 0.798307 0.437500 +v -0.701693 0.886696 0.437500 +v -0.701693 0.709919 0.000000 +v -0.790081 0.798307 0.000000 +v -0.613304 0.975084 0.437500 +v -0.569110 0.842502 0.312500 +v -0.657498 0.754113 0.312500 +v -0.657498 0.930890 -0.312500 +v -0.524916 0.886696 -0.437500 +v -0.701693 0.886696 -0.437500 +v 0.000000 2.064916 0.777541 +v 0.113655 1.774387 0.914054 +v 0.216184 2.021915 0.777541 +v 0.000000 1.796994 -0.914054 +v 0.216184 2.021915 -0.777540 +v 0.113655 1.774387 -0.914054 +v 0.000000 2.414054 -0.296994 +v 0.367794 2.387934 0.000000 +v 0.349793 2.344476 -0.296994 +v 0.297552 2.218354 0.564917 +v 0.000000 2.277541 0.564917 +v 0.000000 1.500000 -0.961093 +v 0.000000 2.277541 -0.564916 +v 0.297552 2.218354 -0.564916 +v 0.349793 2.344476 0.296994 +v 0.000000 2.414054 0.296994 +v 0.000000 1.796994 0.914054 +v 0.000000 1.500000 0.961093 +v 0.000000 2.064916 -0.777540 +v 0.000000 2.461093 0.000000 +v 0.210007 1.710007 0.914054 +v 0.399456 1.899456 0.777541 +v 0.210007 1.710006 -0.914054 +v 0.679596 2.179595 0.000000 +v 0.646334 2.146334 -0.296994 +v 0.549804 2.049804 0.564917 +v 0.549804 2.049804 -0.564916 +v 0.646334 2.146334 0.296994 +v 0.399456 1.899456 -0.777540 +v 0.844476 1.849793 0.296994 +v 0.887934 1.867794 0.000000 +v 0.521915 1.716184 0.777541 +v 0.274387 1.613655 -0.914054 +v 0.844476 1.849793 -0.296994 +v 0.718354 1.797552 0.564917 +v 0.718354 1.797552 -0.564916 +v 0.274387 1.613655 0.914054 +v 0.521915 1.716184 -0.777540 +v 0.296994 1.500000 0.914054 +v 0.564916 1.500000 -0.777540 +v 0.914054 1.500000 0.296994 +v 0.961093 1.500000 0.000000 +v 0.564916 1.500000 0.777541 +v 0.296994 1.500000 -0.914054 +v 0.914054 1.500000 -0.296994 +v 0.777541 1.500000 0.564917 +v 0.777541 1.500000 -0.564916 +v 0.718354 1.202448 -0.564916 +v 0.844476 1.150206 0.296994 +v 0.274387 1.386345 0.914054 +v 0.521915 1.283816 -0.777540 +v 0.887934 1.132205 0.000000 +v 0.521915 1.283816 0.777541 +v 0.274387 1.386345 -0.914054 +v 0.844476 1.150206 -0.296994 +v 0.718354 1.202448 0.564917 +v 0.549804 0.950195 0.564917 +v 0.210007 1.289993 -0.914054 +v 0.549804 0.950195 -0.564916 +v 0.646334 0.853666 0.296994 +v 0.210007 1.289993 0.914054 +v 0.399456 1.100543 -0.777540 +v 0.679595 0.820404 0.000000 +v 0.399456 1.100543 0.777541 +v 0.646334 0.853666 -0.296994 +v 0.349793 0.655524 -0.296994 +v 0.297552 0.781646 0.564916 +v 0.113655 1.225613 -0.914054 +v 0.297552 0.781646 -0.564916 +v 0.349793 0.655524 0.296994 +v 0.113655 1.225613 0.914054 +v 0.216184 0.978085 -0.777540 +v 0.367794 0.612066 0.000000 +v 0.216184 0.978085 0.777541 +v 0.000000 0.935084 0.777541 +v 0.000000 1.203006 -0.914054 +v 0.000000 0.585946 -0.296994 +v 0.000000 0.722459 0.564916 +v 0.000000 0.722459 -0.564916 +v 0.000000 0.585946 0.296994 +v 0.000000 1.203006 0.914054 +v 0.000000 0.935084 -0.777540 +v 0.000000 0.538907 0.000000 +v -0.297552 0.781646 -0.564916 +v -0.216184 0.978085 -0.777540 +v -0.367795 0.612066 0.000000 +v -0.113655 1.225613 0.914054 +v -0.216184 0.978085 0.777541 +v -0.113655 1.225613 -0.914054 +v -0.349794 0.655524 -0.296994 +v -0.297552 0.781646 0.564916 +v -0.349793 0.655524 0.296994 +v -0.646334 0.853666 0.296994 +v -0.210007 1.289993 0.914054 +v -0.549804 0.950196 -0.564916 +v -0.399456 1.100544 -0.777540 +v -0.679596 0.820405 0.000000 +v -0.399456 1.100544 0.777541 +v -0.210007 1.289994 -0.914054 +v -0.646334 0.853666 -0.296994 +v -0.549804 0.950196 0.564917 +v -0.718354 1.202448 -0.564916 +v -0.844476 1.150207 0.296994 +v -0.274387 1.386345 0.914054 +v -0.521915 1.283816 -0.777540 +v -0.887934 1.132206 0.000000 +v -0.521915 1.283816 0.777541 +v -0.274387 1.386345 -0.914054 +v -0.844476 1.150207 -0.296994 +v -0.718354 1.202448 0.564917 +v -0.777541 1.500000 0.564917 +v -0.296994 1.500000 -0.914054 +v -0.777541 1.500000 -0.564916 +v -0.914054 1.500000 0.296994 +v -0.296994 1.500000 0.914054 +v -0.564916 1.500000 -0.777540 +v -0.961093 1.500000 0.000000 +v -0.564916 1.500000 0.777541 +v -0.914054 1.500000 -0.296994 +v -0.521914 1.716184 -0.777540 +v -0.274387 1.613655 -0.914054 +v -0.844476 1.849794 -0.296994 +v -0.718354 1.797552 0.564917 +v -0.718354 1.797552 -0.564916 +v -0.844476 1.849793 0.296994 +v -0.274387 1.613655 0.914054 +v -0.887934 1.867795 0.000000 +v -0.521914 1.716184 0.777541 +v -0.679595 2.179596 0.000000 +v -0.210007 1.710007 0.914054 +v -0.399456 1.899456 0.777541 +v -0.210006 1.710007 -0.914054 +v -0.646333 2.146334 -0.296994 +v -0.549804 2.049804 0.564917 +v -0.549804 2.049804 -0.564916 +v -0.646333 2.146334 0.296994 +v -0.399456 1.899456 -0.777540 +v -0.113655 1.774387 0.914054 +v -0.297551 2.218354 -0.564916 +v -0.216184 2.021915 -0.777540 +v -0.367794 2.387934 0.000000 +v -0.216184 2.021915 0.777541 +v -0.113655 1.774387 -0.914054 +v -0.349793 2.344476 -0.296994 +v -0.297551 2.218354 0.564917 +v -0.349793 2.344476 0.296994 +v -0.937500 0.187500 0.437500 +v 0.312593 2.071245 0.856743 +v 0.639883 1.620769 0.856743 +v 0.639883 1.379231 0.856743 +v 0.446690 1.026182 0.856743 +v 0.082876 0.854115 0.856743 +v -0.446690 1.026182 0.856743 +v -0.588663 1.221591 0.856743 +v -0.639883 1.620769 0.856743 +v -0.446690 1.973818 0.856743 +v -0.082876 2.145885 0.856743 +v 0.524916 2.113304 0.437500 +v 0.613304 2.024916 -0.437500 +v -0.613304 2.024916 0.437500 +v -0.524916 2.113304 0.437500 +v -0.524916 2.113304 -0.437500 +v -0.613304 2.024916 -0.437500 +v 0.613304 0.975084 0.437500 +v 0.524916 0.886696 0.437500 +v 0.524916 0.886696 -0.437500 +v 0.613304 0.975084 -0.437500 +v -0.524916 0.886696 0.437500 +v -0.613304 0.975084 -0.437500 +v 0.284663 2.432218 -0.215667 +v 0.241696 2.328486 -0.378320 +v 0.261693 2.376764 -0.198249 +v 0.264666 2.383941 -0.395739 +v 0.414923 2.256733 -0.378320 +v 0.437894 2.312188 -0.395739 +v 0.434921 2.305010 -0.198249 +v 0.386817 2.352198 -0.335715 +v 0.416453 2.423745 -0.293109 +v 0.393482 2.368290 -0.275691 +v 0.335740 2.392208 -0.275691 +v 0.329074 2.376116 -0.335715 +v 0.457891 2.360465 -0.215667 +v 0.409787 2.407653 -0.353133 +v 0.358710 2.447663 -0.293109 +v 0.352044 2.431571 -0.353133 +v -0.261693 2.376764 -0.198249 +v -0.264666 2.383941 -0.395739 +v -0.284663 2.432218 -0.215667 +v -0.414923 2.256733 -0.378320 +v -0.241696 2.328486 -0.378320 +v -0.434921 2.305010 -0.198249 +v -0.437894 2.312188 -0.395739 +v -0.457891 2.360465 -0.215667 +v -0.416453 2.423745 -0.293109 +v -0.386817 2.352198 -0.335715 +v -0.393482 2.368290 -0.275691 +v -0.329074 2.376116 -0.335715 +v -0.335740 2.392208 -0.275691 +v -0.409787 2.407653 -0.353133 +v -0.358710 2.447663 -0.293109 +v -0.352044 2.431571 -0.353133 +v 0.261693 2.376764 0.198249 +v 0.264666 2.383941 0.395739 +v 0.284663 2.432218 0.215667 +v 0.414923 2.256733 0.378320 +v 0.241696 2.328486 0.378320 +v 0.434921 2.305010 0.198249 +v 0.437894 2.312188 0.395739 +v 0.457891 2.360465 0.215667 +v 0.416453 2.423745 0.293109 +v 0.386817 2.352198 0.335715 +v 0.393482 2.368290 0.275691 +v 0.329074 2.376116 0.335715 +v 0.335740 2.392208 0.275691 +v 0.409787 2.407653 0.353133 +v 0.358710 2.447663 0.293109 +v 0.352044 2.431571 0.353133 +v -0.284663 2.432218 0.215667 +v -0.241696 2.328486 0.378320 +v -0.261693 2.376764 0.198249 +v -0.264666 2.383941 0.395739 +v -0.414923 2.256733 0.378320 +v -0.437894 2.312188 0.395739 +v -0.434921 2.305010 0.198249 +v -0.386817 2.352198 0.335715 +v -0.416453 2.423745 0.293109 +v -0.393482 2.368290 0.275691 +v -0.335740 2.392208 0.275691 +v -0.329074 2.376116 0.335715 +v -0.457891 2.360465 0.215667 +v -0.409787 2.407653 0.353133 +v -0.358710 2.447663 0.293109 +v -0.352044 2.431571 0.353133 +v 0.261693 0.623236 -0.198249 +v 0.264666 0.616059 -0.395739 +v 0.284663 0.567782 -0.215667 +v 0.414923 0.743267 -0.378320 +v 0.241696 0.671514 -0.378320 +v 0.434921 0.694990 -0.198249 +v 0.437894 0.687812 -0.395739 +v 0.457891 0.639535 -0.215667 +v 0.416453 0.576255 -0.293109 +v 0.386817 0.647802 -0.335715 +v 0.393482 0.631710 -0.275691 +v 0.329074 0.623884 -0.335715 +v 0.335740 0.607792 -0.275691 +v 0.409787 0.592347 -0.353133 +v 0.358710 0.552337 -0.293109 +v 0.352044 0.568430 -0.353133 +v -0.284663 0.567782 -0.215667 +v -0.241696 0.671514 -0.378320 +v -0.261693 0.623236 -0.198249 +v -0.264666 0.616059 -0.395739 +v -0.414923 0.743267 -0.378320 +v -0.437894 0.687812 -0.395739 +v -0.434921 0.694990 -0.198249 +v -0.386817 0.647802 -0.335715 +v -0.416453 0.576255 -0.293109 +v -0.393482 0.631710 -0.275691 +v -0.335740 0.607792 -0.275691 +v -0.329074 0.623884 -0.335715 +v -0.457891 0.639535 -0.215667 +v -0.409787 0.592347 -0.353133 +v -0.358710 0.552337 -0.293109 +v -0.352044 0.568430 -0.353133 +v 0.284663 0.567782 0.215667 +v 0.241696 0.671514 0.378320 +v 0.261693 0.623236 0.198249 +v 0.264666 0.616059 0.395739 +v 0.414923 0.743267 0.378320 +v 0.437894 0.687812 0.395739 +v 0.434921 0.694990 0.198249 +v 0.386817 0.647802 0.335715 +v 0.416453 0.576255 0.293109 +v 0.393482 0.631710 0.275691 +v 0.335740 0.607792 0.275691 +v 0.329074 0.623884 0.335715 +v 0.457891 0.639535 0.215667 +v 0.409787 0.592347 0.353133 +v 0.358710 0.552337 0.293109 +v 0.352044 0.568430 0.353133 +v -0.261693 0.623236 0.198249 +v -0.264666 0.616059 0.395739 +v -0.284663 0.567782 0.215667 +v -0.414923 0.743267 0.378320 +v -0.241696 0.671514 0.378320 +v -0.434921 0.694990 0.198249 +v -0.437894 0.687812 0.395739 +v -0.457891 0.639535 0.215667 +v -0.416453 0.576255 0.293109 +v -0.386817 0.647802 0.335715 +v -0.393482 0.631710 0.275691 +v -0.329074 0.623884 0.335715 +v -0.335740 0.607792 0.275691 +v -0.409787 0.592347 0.353133 +v -0.358710 0.552337 0.293109 +v -0.352044 0.568430 0.353133 +v 0.292716 2.062386 0.759617 +v 0.344670 2.133894 0.582840 +v 0.266740 2.026632 0.715423 +v 0.370646 2.169648 0.627035 +v 0.496360 2.023684 0.582840 +v 0.522337 2.059438 0.627035 +v 0.418430 1.916423 0.715423 +v 0.444407 1.952176 0.759617 +v 0.419820 2.024667 0.715423 +v 0.395233 2.097157 0.759617 +v 0.369257 2.061403 0.715423 +v 0.395233 2.097157 0.671229 +v 0.445797 2.060421 0.671229 +v 0.421210 2.132911 0.715423 +v 0.445797 2.060421 0.759617 +v 0.471774 2.096174 0.715423 +v 0.625315 1.395397 0.759617 +v 0.709378 1.368084 0.582840 +v 0.583284 1.409054 0.715423 +v 0.751409 1.354427 0.627035 +v 0.651437 1.189760 0.582840 +v 0.567375 1.217074 0.759617 +v 0.525343 1.230731 0.715423 +v 0.628719 1.262858 0.715423 +v 0.690064 1.308643 0.759617 +v 0.648033 1.322299 0.715423 +v 0.690064 1.308643 0.671229 +v 0.670751 1.249202 0.671229 +v 0.693468 1.176104 0.627035 +v 0.732095 1.294986 0.715423 +v 0.670751 1.249202 0.759617 +v 0.712782 1.235545 0.715423 +v 0.093750 0.872966 0.759617 +v 0.093750 0.784577 0.582840 +v 0.093750 0.917160 0.715423 +v -0.093750 0.740383 0.627035 +v -0.093750 0.784577 0.582840 +v -0.093750 0.872966 0.759617 +v -0.093750 0.917160 0.715423 +v -0.031250 0.828771 0.715423 +v 0.031250 0.784577 0.759617 +v 0.031250 0.828771 0.715423 +v 0.031250 0.784577 0.671229 +v -0.031250 0.784577 0.671229 +v 0.093750 0.740383 0.627035 +v 0.031250 0.740383 0.715423 +v -0.031250 0.784577 0.759617 +v -0.031250 0.740383 0.715423 +v -0.567375 1.217074 0.759617 +v -0.651437 1.189761 0.582840 +v -0.525344 1.230731 0.715423 +v -0.751409 1.354427 0.627035 +v -0.709378 1.368084 0.582840 +v -0.625316 1.395398 0.759617 +v -0.583284 1.409054 0.715423 +v -0.648033 1.322300 0.715423 +v -0.670751 1.249202 0.759617 +v -0.628720 1.262859 0.715423 +v -0.670751 1.249202 0.671229 +v -0.690064 1.308643 0.671229 +v -0.693468 1.176104 0.627035 +v -0.712782 1.235545 0.715423 +v -0.690064 1.308643 0.759617 +v -0.732096 1.294986 0.715423 +v -0.444407 1.952177 0.759617 +v -0.496360 2.023685 0.582840 +v -0.418430 1.916423 0.715423 +v -0.370646 2.169648 0.627035 +v -0.344669 2.133894 0.582840 +v -0.266739 2.026633 0.715423 +v -0.292716 2.062387 0.759617 +v -0.369256 2.061404 0.715423 +v -0.445797 2.060421 0.759617 +v -0.419820 2.024667 0.715423 +v -0.445797 2.060421 0.671229 +v -0.395233 2.097158 0.671229 +v -0.522337 2.059438 0.627035 +v -0.471773 2.096175 0.715423 +v -0.395233 2.097158 0.759617 +v -0.421210 2.132912 0.715423 +v 0.344670 2.133894 -0.582840 +v 0.292716 2.062386 -0.759617 +v 0.266740 2.026632 -0.715423 +v 0.496360 2.023684 -0.582840 +v 0.370646 2.169648 -0.627035 +v 0.418430 1.916423 -0.715423 +v 0.522337 2.059438 -0.627035 +v 0.444407 1.952176 -0.759617 +v 0.395233 2.097157 -0.759617 +v 0.419820 2.024667 -0.715423 +v 0.369257 2.061403 -0.715423 +v 0.395233 2.097157 -0.671229 +v 0.445797 2.060421 -0.671229 +v 0.445797 2.060421 -0.759617 +v 0.421210 2.132911 -0.715423 +v 0.471774 2.096174 -0.715423 +v 0.709378 1.368084 -0.582840 +v 0.625315 1.395397 -0.759617 +v 0.583284 1.409054 -0.715423 +v 0.693468 1.176104 -0.627035 +v 0.751409 1.354427 -0.627035 +v 0.525343 1.230731 -0.715423 +v 0.651437 1.189760 -0.582840 +v 0.567375 1.217074 -0.759617 +v 0.690064 1.308643 -0.759617 +v 0.628719 1.262858 -0.715423 +v 0.648033 1.322299 -0.715423 +v 0.690064 1.308643 -0.671229 +v 0.670751 1.249202 -0.671229 +v 0.670751 1.249202 -0.759617 +v 0.732095 1.294986 -0.715423 +v 0.712782 1.235545 -0.715423 +v 0.093750 0.784577 -0.582840 +v 0.093750 0.872966 -0.759617 +v 0.093750 0.917160 -0.715423 +v -0.093750 0.740383 -0.627035 +v 0.093750 0.740383 -0.627035 +v -0.093750 0.784577 -0.582840 +v -0.093750 0.872966 -0.759617 +v -0.093750 0.917160 -0.715423 +v 0.031250 0.784577 -0.759617 +v -0.031250 0.828771 -0.715423 +v 0.031250 0.828771 -0.715423 +v 0.031250 0.784577 -0.671229 +v -0.031250 0.784577 -0.671229 +v -0.031250 0.784577 -0.759617 +v 0.031250 0.740383 -0.715423 +v -0.031250 0.740383 -0.715423 +v -0.651437 1.189761 -0.582840 +v -0.567375 1.217074 -0.759617 +v -0.525344 1.230731 -0.715423 +v -0.751409 1.354427 -0.627035 +v -0.693468 1.176104 -0.627035 +v -0.709378 1.368084 -0.582840 +v -0.625316 1.395398 -0.759617 +v -0.583284 1.409054 -0.715423 +v -0.670751 1.249202 -0.759617 +v -0.648033 1.322300 -0.715423 +v -0.628720 1.262859 -0.715423 +v -0.670751 1.249202 -0.671229 +v -0.690064 1.308643 -0.671229 +v -0.690064 1.308643 -0.759617 +v -0.712782 1.235545 -0.715423 +v -0.732096 1.294986 -0.715423 +v -0.496360 2.023685 -0.582840 +v -0.444407 1.952177 -0.759617 +v -0.418430 1.916423 -0.715423 +v -0.344669 2.133894 -0.582840 +v -0.522337 2.059438 -0.627035 +v -0.266739 2.026633 -0.715423 +v -0.370646 2.169648 -0.627035 +v -0.292716 2.062387 -0.759617 +v -0.445797 2.060421 -0.759617 +v -0.369256 2.061404 -0.715423 +v -0.419820 2.024667 -0.715423 +v -0.445797 2.060421 -0.671229 +v -0.395233 2.097158 -0.671229 +v -0.395233 2.097158 -0.759617 +v -0.471773 2.096175 -0.715423 +v -0.421210 2.132912 -0.715423 +v 0.932218 1.215337 -0.215667 +v 0.828486 1.258304 -0.378320 +v 0.876764 1.238307 -0.198249 +v 0.883941 1.235334 -0.395739 +v 0.756733 1.085077 -0.378320 +v 0.860465 1.042109 -0.215667 +v 0.805010 1.065079 -0.198249 +v 0.852198 1.113183 -0.335715 +v 0.923745 1.083547 -0.293109 +v 0.868290 1.106518 -0.275691 +v 0.876116 1.170926 -0.335715 +v 0.892208 1.164260 -0.275691 +v 0.812188 1.062106 -0.395739 +v 0.907653 1.090213 -0.353133 +v 0.947663 1.141290 -0.293109 +v 0.931570 1.147956 -0.353133 +v 0.828486 1.741696 -0.378320 +v 0.932218 1.784663 -0.215667 +v 0.876764 1.761693 -0.198249 +v 0.756733 1.914923 -0.378320 +v 0.883941 1.764666 -0.395739 +v 0.805010 1.934921 -0.198249 +v 0.812188 1.937894 -0.395739 +v 0.860465 1.957891 -0.215667 +v 0.923745 1.916453 -0.293109 +v 0.852198 1.886817 -0.335715 +v 0.868290 1.893483 -0.275691 +v 0.892208 1.835740 -0.275691 +v 0.876116 1.829074 -0.335715 +v 0.931570 1.852044 -0.353133 +v 0.907653 1.909787 -0.353133 +v 0.947663 1.858710 -0.293109 +v 0.828486 1.258304 0.378320 +v 0.932218 1.215337 0.215667 +v 0.876764 1.238307 0.198249 +v 0.756733 1.085077 0.378320 +v 0.883941 1.235334 0.395739 +v 0.860465 1.042109 0.215667 +v 0.812188 1.062106 0.395739 +v 0.805010 1.065079 0.198249 +v 0.868290 1.106518 0.275691 +v 0.907653 1.090213 0.353133 +v 0.852198 1.113183 0.335715 +v 0.892208 1.164260 0.275691 +v 0.876116 1.170926 0.335715 +v 0.947663 1.141290 0.293109 +v 0.931570 1.147956 0.353133 +v 0.932218 1.784663 0.215667 +v 0.828486 1.741696 0.378320 +v 0.876764 1.761693 0.198249 +v 0.883941 1.764666 0.395739 +v 0.756733 1.914923 0.378320 +v 0.812188 1.937894 0.395739 +v 0.805010 1.934921 0.198249 +v 0.860465 1.957891 0.215667 +v 0.852198 1.886817 0.335715 +v 0.923745 1.916453 0.293109 +v 0.868290 1.893483 0.275691 +v 0.876116 1.829074 0.335715 +v 0.892208 1.835740 0.275691 +v 0.931570 1.852044 0.353133 +v 0.907653 1.909787 0.353133 +v 0.947663 1.858710 0.293109 +v -0.828486 1.258304 -0.378320 +v -0.932218 1.215337 -0.215667 +v -0.876764 1.238307 -0.198249 +v -0.756733 1.085077 -0.378320 +v -0.883941 1.235334 -0.395739 +v -0.805010 1.065079 -0.198249 +v -0.812188 1.062106 -0.395739 +v -0.860465 1.042109 -0.215667 +v -0.923745 1.083547 -0.293109 +v -0.852198 1.113183 -0.335715 +v -0.868290 1.106517 -0.275691 +v -0.892208 1.164260 -0.275691 +v -0.876116 1.170926 -0.335715 +v -0.931570 1.147956 -0.353133 +v -0.907653 1.090213 -0.353133 +v -0.947663 1.141290 -0.293109 +v -0.932218 1.784663 -0.215667 +v -0.828486 1.741696 -0.378320 +v -0.876764 1.761693 -0.198249 +v -0.883941 1.764666 -0.395739 +v -0.756733 1.914923 -0.378320 +v -0.860465 1.957891 -0.215667 +v -0.805010 1.934921 -0.198249 +v -0.852198 1.886817 -0.335715 +v -0.923745 1.916453 -0.293109 +v -0.868290 1.893482 -0.275691 +v -0.876116 1.829074 -0.335715 +v -0.892208 1.835740 -0.275691 +v -0.812188 1.937894 -0.395739 +v -0.907653 1.909787 -0.353133 +v -0.947663 1.858710 -0.293109 +v -0.931570 1.852044 -0.353133 +v -0.932218 1.215337 0.215667 +v -0.828486 1.258304 0.378320 +v -0.876764 1.238307 0.198249 +v -0.883941 1.235334 0.395739 +v -0.756733 1.085077 0.378320 +v -0.812188 1.062106 0.395739 +v -0.805010 1.065079 0.198249 +v -0.860465 1.042109 0.215667 +v -0.852198 1.113183 0.335715 +v -0.923745 1.083547 0.293109 +v -0.868290 1.106517 0.275691 +v -0.876116 1.170926 0.335715 +v -0.892208 1.164260 0.275691 +v -0.931570 1.147956 0.353133 +v -0.907653 1.090213 0.353133 +v -0.947663 1.141290 0.293109 +v -0.828486 1.741696 0.378320 +v -0.932218 1.784663 0.215667 +v -0.876764 1.761693 0.198249 +v -0.756733 1.914923 0.378320 +v -0.883941 1.764666 0.395739 +v -0.860465 1.957891 0.215667 +v -0.812188 1.937894 0.395739 +v -0.805010 1.934921 0.198249 +v -0.868290 1.893482 0.275691 +v -0.907653 1.909787 0.353133 +v -0.852198 1.886817 0.335715 +v -0.892208 1.835740 0.275691 +v -0.876116 1.829074 0.335715 +v -0.947663 1.858710 0.293109 +v -0.931570 1.852044 0.353133 +v 0.923745 1.083547 0.293109 +v -0.923745 1.916453 0.293109 +v -0.807442 1.959695 -1.252000 +v -0.807442 1.959695 -0.439500 +v -1.212871 1.460005 -0.439500 +v -0.905119 1.405740 -0.439500 +v -0.905119 1.405740 -1.252000 +v -1.212871 1.460005 -1.252000 +v -1.115194 2.013960 -1.252000 +v -1.115194 2.013960 -0.439500 +v -1.126047 1.952409 -1.189500 +v -1.202018 1.521556 -1.189500 +v -1.191165 1.583106 -1.189500 +v -1.180312 1.644657 -1.189500 +v -1.169459 1.706207 -1.189500 +v -1.158606 1.767758 -1.189500 +v -1.136900 1.890859 -1.189500 +v -1.147753 1.829308 -1.189500 +v -1.136900 1.890859 -0.502000 +v -1.180312 1.644657 -0.939500 +v -1.231010 1.717060 -0.939500 +v -1.169459 1.706207 -0.939500 +v -1.126047 1.952409 -0.564500 +v -1.136900 1.890859 -0.627000 +v -1.136900 1.890859 -0.564500 +v -1.202018 1.521556 -1.064500 +v -1.252716 1.593959 -1.064500 +v -1.191165 1.583106 -1.064500 +v -1.126047 1.952409 -0.689500 +v -1.136900 1.890859 -0.752000 +v -1.136900 1.890859 -0.689500 +v -1.187598 1.963262 -0.627000 +v -1.198451 1.901712 -0.627000 +v -1.126047 1.952409 -0.814500 +v -1.136900 1.890859 -0.877000 +v -1.136900 1.890859 -0.814500 +v -1.147753 1.829308 -0.752000 +v -1.220157 1.778611 -0.752000 +v -1.158606 1.767758 -0.752000 +v -1.126047 1.952409 -0.939500 +v -1.136900 1.890859 -1.002000 +v -1.136900 1.890859 -0.939500 +v -1.191165 1.583106 -0.939500 +v -1.252716 1.593959 -0.877000 +v -1.191165 1.583106 -0.877000 +v -1.126047 1.952409 -1.064500 +v -1.136900 1.890859 -1.127000 +v -1.136900 1.890859 -1.064500 +v -1.180312 1.644657 -0.877000 +v -1.231010 1.717060 -0.877000 +v -1.241863 1.655510 -0.877000 +v -1.147753 1.829308 -0.502000 +v -1.147753 1.829308 -0.564500 +v -1.147753 1.829308 -0.627000 +v -1.147753 1.829308 -0.689500 +v -1.147753 1.829308 -0.814500 +v -1.147753 1.829308 -0.877000 +v -1.147753 1.829308 -0.939500 +v -1.147753 1.829308 -1.002000 +v -1.147753 1.829308 -1.064500 +v -1.147753 1.829308 -1.127000 +v -1.158606 1.767758 -0.502000 +v -1.169459 1.706207 -1.064500 +v -1.231010 1.717060 -1.002000 +v -1.169459 1.706207 -1.002000 +v -1.158606 1.767758 -0.627000 +v -1.158606 1.767758 -0.564500 +v -1.202018 1.521556 -1.002000 +v -1.252716 1.593959 -1.002000 +v -1.263569 1.532409 -1.002000 +v -1.158606 1.767758 -0.689500 +v -1.209304 1.840161 -1.189500 +v -1.209304 1.840161 -1.127000 +v -1.158606 1.767758 -0.877000 +v -1.158606 1.767758 -0.814500 +v -1.187598 1.963262 -0.564500 +v -1.158606 1.767758 -1.002000 +v -1.158606 1.767758 -0.939500 +v -1.220157 1.778611 -0.689500 +v -1.209304 1.840161 -0.689500 +v -1.158606 1.767758 -1.064500 +v -1.158606 1.767758 -1.127000 +v -1.180312 1.644657 -0.814500 +v -1.231010 1.717060 -0.814500 +v -1.169459 1.706207 -0.814500 +v -1.169459 1.706207 -0.502000 +v -1.169459 1.706207 -0.564500 +v -1.169459 1.706207 -0.627000 +v -1.169459 1.706207 -0.689500 +v -1.169459 1.706207 -0.752000 +v -1.169459 1.706207 -0.877000 +v -1.169459 1.706207 -1.127000 +v -1.180312 1.644657 -0.502000 +v -1.202018 1.521556 -0.939500 +v -1.252716 1.593959 -0.939500 +v -1.180312 1.644657 -0.627000 +v -1.180312 1.644657 -0.564500 +v -1.187598 1.963262 -0.502000 +v -1.198451 1.901712 -0.502000 +v -1.180312 1.644657 -0.752000 +v -1.180312 1.644657 -0.689500 +v -1.220157 1.778611 -0.627000 +v -1.191165 1.583106 -0.814500 +v -1.252716 1.593959 -0.752000 +v -1.191165 1.583106 -0.752000 +v -1.180312 1.644657 -1.002000 +v -1.231010 1.717060 -0.752000 +v -1.241863 1.655510 -0.752000 +v -1.180312 1.644657 -1.127000 +v -1.180312 1.644657 -1.064500 +v -1.191165 1.583106 -0.502000 +v -1.191165 1.583106 -0.564500 +v -1.191165 1.583106 -0.627000 +v -1.191165 1.583106 -0.689500 +v -1.191165 1.583106 -1.002000 +v -1.191165 1.583106 -1.127000 +v -1.202018 1.521556 -0.502000 +v -1.202018 1.521556 -0.877000 +v -1.263569 1.532409 -0.877000 +v -1.202018 1.521556 -0.627000 +v -1.202018 1.521556 -0.564500 +v -1.209304 1.840161 -1.002000 +v -1.202018 1.521556 -0.752000 +v -1.202018 1.521556 -0.689500 +v -1.187598 1.963262 -1.127000 +v -1.126047 1.952409 -1.127000 +v -1.202018 1.521556 -0.814500 +v -1.220157 1.778611 -0.564500 +v -1.209304 1.840161 -0.564500 +v -1.231010 1.717060 -0.689500 +v -1.202018 1.521556 -1.127000 +v -1.252716 1.593959 -0.814500 +v -1.126047 1.952409 -0.502000 +v -1.126047 1.952409 -0.627000 +v -1.126047 1.952409 -0.752000 +v -1.126047 1.952409 -0.877000 +v -1.126047 1.952409 -1.002000 +v -1.198451 1.901712 -0.564500 +v -1.198451 1.901712 -0.689500 +v -1.187598 1.963262 -0.752000 +v -1.198451 1.901712 -0.814500 +v -1.198451 1.901712 -0.752000 +v -1.187598 1.963262 -0.877000 +v -1.198451 1.901712 -0.939500 +v -1.198451 1.901712 -0.877000 +v -1.187598 1.963262 -1.002000 +v -1.198451 1.901712 -1.064500 +v -1.198451 1.901712 -1.002000 +v -1.198451 1.901712 -1.127000 +v -1.187598 1.963262 -1.189500 +v -1.198451 1.901712 -1.189500 +v -1.209304 1.840161 -0.502000 +v -1.220157 1.778611 -0.502000 +v -1.209304 1.840161 -0.627000 +v -1.209304 1.840161 -0.752000 +v -1.220157 1.778611 -0.814500 +v -1.209304 1.840161 -0.877000 +v -1.220157 1.778611 -0.939500 +v -1.220157 1.778611 -0.877000 +v -1.220157 1.778611 -1.064500 +v -1.220157 1.778611 -1.002000 +v -1.220157 1.778611 -1.189500 +v -1.220157 1.778611 -1.127000 +v -1.231010 1.717060 -0.502000 +v -1.241863 1.655510 -0.564500 +v -1.241863 1.655510 -0.502000 +v -1.231010 1.717060 -0.627000 +v -1.241863 1.655510 -0.689500 +v -1.241863 1.655510 -0.627000 +v -1.241863 1.655510 -0.814500 +v -1.241863 1.655510 -0.939500 +v -1.241863 1.655510 -1.064500 +v -1.241863 1.655510 -1.002000 +v -1.241863 1.655510 -1.127000 +v -1.231010 1.717060 -1.189500 +v -1.241863 1.655510 -1.189500 +v -1.252716 1.593959 -0.502000 +v -1.263569 1.532409 -0.564500 +v -1.263569 1.532409 -0.502000 +v -1.252716 1.593959 -0.627000 +v -1.263569 1.532409 -0.689500 +v -1.263569 1.532409 -0.627000 +v -1.263569 1.532409 -0.814500 +v -1.263569 1.532409 -0.752000 +v -1.263569 1.532409 -0.939500 +v -1.263569 1.532409 -1.064500 +v -1.263569 1.532409 -1.127000 +v -1.252716 1.593959 -1.189500 +v -1.263569 1.532409 -1.189500 +v -1.209304 1.840161 -0.814500 +v -1.187598 1.963262 -0.689500 +v -1.252716 1.593959 -1.127000 +v -1.231010 1.717060 -1.127000 +v -1.231010 1.717060 -1.064500 +v -1.209304 1.840161 -0.939500 +v -1.187598 1.963262 -0.814500 +v -1.209304 1.840161 -1.064500 +v -1.187598 1.963262 -0.939500 +v -1.187598 1.963262 -1.064500 +v -1.252716 1.593959 -0.564500 +v -1.252716 1.593959 -0.689500 +v -1.231010 1.717060 -0.564500 +v -0.934110 1.601245 -1.252000 +v -0.995661 1.612098 -1.252000 +v -0.944963 1.539694 -1.252000 +v -1.006514 1.550547 -1.252000 +v -0.934110 1.601245 -1.314400 +v -0.995661 1.612098 -1.314400 +v -0.944963 1.539694 -1.314400 +v -1.006514 1.550547 -1.314400 +v -1.057211 1.622951 -1.252000 +v -1.118762 1.633804 -1.252000 +v -1.068064 1.561400 -1.252000 +v -1.129615 1.572253 -1.252000 +v -1.057211 1.622951 -1.314500 +v -1.118762 1.633804 -1.314500 +v -1.068064 1.561400 -1.314500 +v -1.129615 1.572253 -1.314500 +vt 0.982558 0.504854 +vt 0.988372 0.495146 +vt 0.982558 0.495146 +vt 0.488372 0.834951 +vt 0.470930 0.699029 +vt 0.470930 0.834951 +vt 0.837209 0.242718 +vt 0.831395 0.252427 +vt 0.831395 0.242718 +vt 0.488372 0.699029 +vt 0.494186 0.834951 +vt 0.494186 0.699029 +vt 0.802326 0.233010 +vt 0.802326 0.242718 +vt 0.802326 0.582524 +vt 0.988372 0.572816 +vt 0.988372 0.582524 +vt 0.808140 0.495146 +vt 0.988372 0.475728 +vt 0.802326 0.475728 +vt 0.802326 0.252427 +vt 0.831395 0.262136 +vt 0.802326 0.262136 +vt 0.581395 0.582524 +vt 0.593023 0.563107 +vt 0.581395 0.563107 +vt 0.802326 0.252427 +vt 0.831395 0.262136 +vt 0.831395 0.252427 +vt 0.994186 0.572816 +vt 0.988372 0.563107 +vt 0.994186 0.563107 +vt 0.982558 0.504854 +vt 0.988372 0.495146 +vt 0.988372 0.504854 +vt 0.837209 0.242718 +vt 0.837209 0.252427 +vt 0.802326 0.572816 +vt 0.796512 0.563107 +vt 0.802326 0.563107 +vt 0.988372 0.543689 +vt 0.802326 0.553398 +vt 0.802326 0.543689 +vt 0.802326 0.233010 +vt 0.831395 0.242718 +vt 0.831395 0.233010 +vt 0.872093 0.349515 +vt 0.802326 0.339806 +vt 0.802326 0.349515 +vt 0.872093 0.310680 +vt 0.802326 0.300971 +vt 0.802326 0.310680 +vt 0.988372 0.485437 +vt 0.808140 0.504854 +vt 0.802326 0.514563 +vt 0.802326 0.524272 +vt 0.872093 0.310680 +vt 0.802326 0.300971 +vt 0.872093 0.300971 +vt 0.802326 0.572816 +vt 0.796512 0.563107 +vt 0.796512 0.572816 +vt 0.796512 0.339806 +vt 0.802326 0.310680 +vt 0.802326 0.339806 +vt 0.872093 0.349515 +vt 0.802326 0.339806 +vt 0.802326 0.349515 +vt 0.802326 0.582524 +vt 0.988372 0.572816 +vt 0.872093 0.300971 +vt 0.802326 0.271845 +vt 0.802326 0.300971 +vt 0.488372 0.834951 +vt 0.470930 0.699029 +vt 0.488372 0.699029 +vt 0.802326 0.233010 +vt 0.831395 0.223301 +vt 0.831395 0.233010 +vt 0.988372 0.553398 +vt 0.988372 0.504854 +vt 0.994186 0.495146 +vt 0.796512 0.252427 +vt 0.994186 0.553398 +vt 0.872093 0.300971 +vt 0.802326 0.271845 +vt 0.872093 0.271845 +vt 0.796512 0.339806 +vt 0.802326 0.310680 +vt 0.796512 0.310680 +vt 0.802326 0.533981 +vt 0.988372 0.543689 +vt 0.988372 0.533981 +vt 0.831395 0.223301 +vt 0.802326 0.242718 +vt 0.831395 0.242718 +vt 0.796512 0.339806 +vt 0.802326 0.310680 +vt 0.802326 0.339806 +vt 0.796512 0.252427 +vt 0.802326 0.242718 +vt 0.802326 0.252427 +vt 0.872093 0.310680 +vt 0.802326 0.271845 +vt 0.872093 0.271845 +vt 0.796512 0.339806 +vt 0.796512 0.310680 +vt 0.831395 0.252427 +vt 0.802326 0.495146 +vt 0.796512 0.504854 +vt 0.796512 0.495146 +vt 0.802326 0.242718 +vt 0.831395 0.252427 +vt 0.872093 0.310680 +vt 0.872093 0.349515 +vt 0.872093 0.339806 +vt 0.796512 0.553398 +vt 0.802326 0.563107 +vt 0.802326 0.553398 +vt 0.802326 0.495146 +vt 0.796512 0.504854 +vt 0.802326 0.504854 +vt 0.831395 0.223301 +vt 0.831395 0.233010 +vt 0.837209 0.242718 +vt 0.837209 0.252427 +vt 0.802326 0.300971 +vt 0.994186 0.572816 +vt 0.988372 0.563107 +vt 0.877907 0.310680 +vt 0.872093 0.339806 +vt 0.877907 0.339806 +vt 0.994186 0.563107 +vt 0.988372 0.553398 +vt 0.465116 0.699029 +vt 0.494186 0.834951 +vt 0.877907 0.310680 +vt 0.796512 0.252427 +vt 0.796512 0.242718 +vt 0.494186 0.699029 +vt 0.511628 0.834951 +vt 0.994186 0.495146 +vt 0.994186 0.504854 +vt 0.872093 0.349515 +vt 0.872093 0.339806 +vt 0.511628 0.834951 +vt 0.511628 0.699029 +vt 0.877907 0.310680 +vt 0.872093 0.339806 +vt 0.877907 0.339806 +vt 0.802326 0.252427 +vt 0.831395 0.262136 +vt 0.802326 0.533981 +vt 0.796512 0.252427 +vt 0.796512 0.242718 +vt 0.337209 0.640777 +vt 0.354651 0.689320 +vt 0.354651 0.650485 +vt 0.325581 0.582524 +vt 0.308140 0.533981 +vt 0.308140 0.572816 +vt 0.325581 0.466019 +vt 0.308140 0.514563 +vt 0.325581 0.524272 +vt 0.325581 0.640777 +vt 0.308140 0.592233 +vt 0.308140 0.631068 +vt 0.593023 0.514563 +vt 0.406977 0.689320 +vt 0.389535 0.640777 +vt 0.389535 0.699029 +vt 0.360465 0.747573 +vt 0.377907 0.699029 +vt 0.360465 0.708738 +vt 0.308140 0.922330 +vt 0.325581 0.873786 +vt 0.308140 0.883495 +vt 0.337209 0.932039 +vt 0.354651 0.980583 +vt 0.354651 0.941748 +vt 0.337209 0.815534 +vt 0.354651 0.766990 +vt 0.337209 0.757282 +vt 0.360465 0.223301 +vt 0.377907 0.174757 +vt 0.360465 0.184466 +vt 0.308140 0.825243 +vt 0.308140 0.864078 +vt 0.337209 0.873786 +vt 0.354651 0.922330 +vt 0.354651 0.883495 +vt 0.360465 0.592233 +vt 0.377907 0.640777 +vt 0.377907 0.582524 +vt 0.360465 0.980583 +vt 0.377907 0.932039 +vt 0.360465 0.941748 +vt 0.360465 0.067961 +vt 0.377907 0.116505 +vt 0.377907 0.058252 +vt 0.337209 0.466019 +vt 0.354651 0.417476 +vt 0.337209 0.407767 +vt 0.325581 0.116505 +vt 0.308140 0.067961 +vt 0.308140 0.106796 +vt 0.308140 0.165049 +vt 0.308140 0.126214 +vt 0.406977 0.165049 +vt 0.389535 0.116505 +vt 0.389535 0.174757 +vt 0.325581 0.407767 +vt 0.308140 0.359223 +vt 0.308140 0.398058 +vt 0.325581 0.174757 +vt 0.308140 0.223301 +vt 0.325581 0.233010 +vt 0.360465 0.339806 +vt 0.377907 0.291262 +vt 0.360465 0.300971 +vt 0.389535 0.233010 +vt 0.406977 0.281553 +vt 0.406977 0.242718 +vt 0.337209 0.291262 +vt 0.354651 0.242718 +vt 0.337209 0.233010 +vt 0.389535 0.291262 +vt 0.406977 0.339806 +vt 0.406977 0.300971 +vt 0.354651 0.359223 +vt 0.354651 0.398058 +vt 0.406977 0.922330 +vt 0.389535 0.873786 +vt 0.389535 0.932039 +vt 0.360465 0.533981 +vt 0.360465 0.572816 +vt 0.308140 0.417476 +vt 0.308140 0.456311 +vt 0.360465 0.825243 +vt 0.377907 0.873786 +vt 0.377907 0.815534 +vt 0.389535 0.466019 +vt 0.406977 0.514563 +vt 0.406977 0.475728 +vt 0.802326 0.233010 +vt 0.831395 0.233010 +vt 0.837209 0.242718 +vt 0.831395 0.242718 +vt 0.831395 0.262136 +vt 0.802326 0.262136 +vt 0.808140 0.495146 +vt 0.802326 0.504854 +vt 0.465116 0.699029 +vt 0.470930 0.834951 +vt 0.465116 0.834951 +vt 0.808140 0.504854 +vt 0.337209 0.582524 +vt 0.354651 0.533981 +vt 0.337209 0.524272 +vt 0.406977 0.533981 +vt 0.389535 0.582524 +vt 0.406977 0.572816 +vt 0.354651 0.592233 +vt 0.354651 0.631068 +vt 0.406977 0.592233 +vt 0.406977 0.631068 +vt 0.360465 0.689320 +vt 0.360465 0.650485 +vt 0.308140 0.689320 +vt 0.308140 0.650485 +vt 0.406977 0.747573 +vt 0.389535 0.757282 +vt 0.325581 0.699029 +vt 0.308140 0.747573 +vt 0.325581 0.757282 +vt 0.360465 0.766990 +vt 0.360465 0.805825 +vt 0.308140 0.281553 +vt 0.325581 0.291262 +vt 0.406977 0.825243 +vt 0.406977 0.864078 +vt 0.360465 0.359223 +vt 0.377907 0.407767 +vt 0.377907 0.349515 +vt 0.337209 0.116505 +vt 0.354651 0.165049 +vt 0.354651 0.126214 +vt 0.337209 0.174757 +vt 0.354651 0.223301 +vt 0.354651 0.184466 +vt 0.354651 0.067961 +vt 0.354651 0.106796 +vt 0.325581 0.932039 +vt 0.308140 0.980583 +vt 0.325581 0.990291 +vt 0.406977 0.067961 +vt 0.406977 0.106796 +vt 0.406977 0.980583 +vt 0.406977 0.941748 +vt 0.360465 0.922330 +vt 0.360465 0.883495 +vt 0.360465 0.165049 +vt 0.360465 0.126214 +vt 0.354651 0.825243 +vt 0.354651 0.864078 +vt 0.406977 0.223301 +vt 0.406977 0.184466 +vt 0.360465 0.242718 +vt 0.360465 0.281553 +vt 0.308140 0.339806 +vt 0.325581 0.349515 +vt 0.354651 0.339806 +vt 0.354651 0.300971 +vt 0.406977 0.766990 +vt 0.389535 0.815534 +vt 0.406977 0.805825 +vt 0.406977 0.359223 +vt 0.389535 0.407767 +vt 0.406977 0.398058 +vt 0.308140 0.805825 +vt 0.325581 0.815534 +vt 0.406977 0.417476 +vt 0.406977 0.456311 +vt 0.377907 0.466019 +vt 0.360465 0.417476 +vt 0.360465 0.456311 +vt 0.354651 0.514563 +vt 0.354651 0.475728 +vt 0.360465 0.514563 +vt 0.360465 0.475728 +vt 0.581395 0.466019 +vt 0.581395 0.514563 +vt 0.872093 0.300971 +vt 0.802326 0.271845 +vt 0.558140 0.466019 +vt 0.569767 0.446602 +vt 0.569767 0.466019 +vt 0.558140 0.563107 +vt 0.569767 0.582524 +vt 0.569767 0.563107 +vt 0.831395 0.223301 +vt 0.558140 0.514563 +vt 0.569767 0.466019 +vt 0.558140 0.466019 +vt 0.558140 0.514563 +vt 0.569767 0.563107 +vt 0.558140 0.563107 +vt 0.593023 0.466019 +vt 0.581395 0.446602 +vt 0.569767 0.446602 +vt 0.581395 0.563107 +vt 0.593023 0.514563 +vt 0.593023 0.563107 +vt 0.558140 0.514563 +vt 0.569767 0.563107 +vt 0.558140 0.563107 +vt 0.569767 0.582524 +vt 0.558140 0.582524 +vt 0.593023 0.466019 +vt 0.581395 0.446602 +vt 0.593023 0.446602 +vt 0.569767 0.563107 +vt 0.569767 0.514563 +vt 0.581395 0.466019 +vt 0.581395 0.582524 +vt 0.558140 0.563107 +vt 0.569767 0.582524 +vt 0.569767 0.466019 +vt 0.558140 0.466019 +vt 0.558140 0.514563 +vt 0.569767 0.466019 +vt 0.558140 0.466019 +vt 0.581395 0.582524 +vt 0.593023 0.563107 +vt 0.581395 0.563107 +vt 0.593023 0.466019 +vt 0.581395 0.446602 +vt 0.593023 0.446602 +vt 0.593023 0.514563 +vt 0.581395 0.466019 +vt 0.581395 0.514563 +vt 0.569767 0.514563 +vt 0.569767 0.582524 +vt 0.558140 0.582524 +vt 0.593023 0.563107 +vt 0.581395 0.582524 +vt 0.581395 0.563107 +vt 0.877907 0.310680 +vt 0.593023 0.514563 +vt 0.569767 0.446602 +vt 0.988372 0.475728 +vt 0.802326 0.475728 +vt 0.581395 0.466019 +vt 0.569767 0.446602 +vt 0.593023 0.466019 +vt 0.581395 0.446602 +vt 0.662281 0.950003 +vt 0.570315 0.837433 +vt 0.570033 0.949354 +vt 0.337209 0.699029 +vt 0.354651 0.747573 +vt 0.354651 0.708738 +vt 0.802326 0.485437 +vt 0.988372 0.485437 +vt 0.982558 0.495146 +vt 0.988372 0.514563 +vt 0.988372 0.524272 +vt 0.802326 0.524272 +vt 0.802326 0.514563 +vt 0.988372 0.524272 +vt 0.802326 0.485437 +vt 0.988372 0.514563 +vt 0.525581 0.851052 +vt 0.548382 0.944680 +vt 0.492314 0.982754 +vt 0.570027 0.744687 +vt 0.570320 0.632766 +vt 0.634153 0.598647 +vt 0.598452 0.984140 +vt 0.633688 0.984388 +vt 0.673311 0.894119 +vt 0.662564 0.838082 +vt 0.634144 0.803296 +vt 0.598908 0.803048 +vt 0.559286 0.893317 +vt 0.796512 0.553398 +vt 0.802326 0.951456 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.837209 0.970874 +vt 0.831395 0.961165 +vt 0.831395 0.970874 +vt 0.819767 0.951456 +vt 0.825581 0.980583 +vt 0.825581 0.951456 +vt 0.819767 0.951456 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.819767 0.708738 +vt 0.802326 0.718447 +vt 0.819767 0.718447 +vt 0.808140 0.961165 +vt 0.802326 0.980583 +vt 0.802326 0.951456 +vt 0.808140 0.970874 +vt 0.819767 0.980583 +vt 0.813953 0.970874 +vt 0.819767 0.951456 +vt 0.813953 0.961165 +vt 0.843023 0.961165 +vt 0.837209 0.951456 +vt 0.843023 0.951456 +vt 0.837209 0.970874 +vt 0.831395 0.961165 +vt 0.831395 0.970874 +vt 0.848837 0.970874 +vt 0.843023 0.961165 +vt 0.848837 0.961165 +vt 0.796512 0.980583 +vt 0.802326 0.951456 +vt 0.796512 0.951456 +vt 0.819767 0.990291 +vt 0.802326 0.980583 +vt 0.802326 0.990291 +vt 0.819767 0.951456 +vt 0.825581 0.980583 +vt 0.825581 0.951456 +vt 0.802326 0.941748 +vt 0.819767 0.951456 +vt 0.819767 0.941748 +vt 0.843023 0.951456 +vt 0.837209 0.961165 +vt 0.837209 0.951456 +vt 0.802326 0.951456 +vt 0.808140 0.970874 +vt 0.808140 0.961165 +vt 0.802326 0.980583 +vt 0.813953 0.970874 +vt 0.819767 0.951456 +vt 0.813953 0.961165 +vt 0.843023 0.728155 +vt 0.837209 0.718447 +vt 0.843023 0.718447 +vt 0.837209 0.980583 +vt 0.843023 0.970874 +vt 0.843023 0.980583 +vt 0.831395 0.961165 +vt 0.837209 0.970874 +vt 0.831395 0.970874 +vt 0.843023 0.961165 +vt 0.848837 0.970874 +vt 0.848837 0.961165 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.802326 0.980583 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.825581 0.980583 +vt 0.825581 0.951456 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.837209 0.961165 +vt 0.843023 0.951456 +vt 0.837209 0.951456 +vt 0.808140 0.970874 +vt 0.808140 0.961165 +vt 0.813953 0.970874 +vt 0.813953 0.961165 +vt 0.837209 0.980583 +vt 0.843023 0.970874 +vt 0.843023 0.980583 +vt 0.837209 0.970874 +vt 0.831395 0.961165 +vt 0.831395 0.970874 +vt 0.802326 0.747573 +vt 0.796512 0.718447 +vt 0.802326 0.718447 +vt 0.819767 0.990291 +vt 0.802326 0.980583 +vt 0.802326 0.990291 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.825581 0.980583 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.843023 0.951456 +vt 0.837209 0.961165 +vt 0.837209 0.951456 +vt 0.808140 0.961165 +vt 0.808140 0.970874 +vt 0.819767 0.980583 +vt 0.813953 0.970874 +vt 0.819767 0.951456 +vt 0.813953 0.961165 +vt 0.843023 0.970874 +vt 0.837209 0.980583 +vt 0.843023 0.980583 +vt 0.831395 0.961165 +vt 0.837209 0.970874 +vt 0.831395 0.970874 +vt 0.843023 0.961165 +vt 0.848837 0.970874 +vt 0.848837 0.961165 +vt 0.796512 0.980583 +vt 0.802326 0.951456 +vt 0.796512 0.951456 +vt 0.819767 0.990291 +vt 0.802326 0.980583 +vt 0.802326 0.990291 +vt 0.819767 0.951456 +vt 0.825581 0.980583 +vt 0.825581 0.951456 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.837209 0.961165 +vt 0.843023 0.951456 +vt 0.837209 0.951456 +vt 0.802326 0.951456 +vt 0.808140 0.970874 +vt 0.808140 0.961165 +vt 0.802326 0.980583 +vt 0.813953 0.970874 +vt 0.819767 0.951456 +vt 0.813953 0.961165 +vt 0.843023 0.970874 +vt 0.837209 0.980583 +vt 0.843023 0.980583 +vt 0.837209 0.970874 +vt 0.831395 0.961165 +vt 0.831395 0.970874 +vt 0.843023 0.970874 +vt 0.848837 0.961165 +vt 0.843023 0.961165 +vt 0.802326 0.951456 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.802326 0.980583 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.819767 0.951456 +vt 0.825581 0.980583 +vt 0.819767 0.980583 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.843023 0.951456 +vt 0.837209 0.961165 +vt 0.837209 0.951456 +vt 0.808140 0.961165 +vt 0.802326 0.980583 +vt 0.802326 0.951456 +vt 0.808140 0.970874 +vt 0.819767 0.980583 +vt 0.813953 0.970874 +vt 0.813953 0.961165 +vt 0.819767 0.708738 +vt 0.819767 0.718447 +vt 0.831395 0.961165 +vt 0.837209 0.970874 +vt 0.831395 0.970874 +vt 0.848837 0.961165 +vt 0.843023 0.961165 +vt 0.796512 0.980583 +vt 0.802326 0.951456 +vt 0.796512 0.951456 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.825581 0.980583 +vt 0.825581 0.951456 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.837209 0.961165 +vt 0.843023 0.951456 +vt 0.837209 0.951456 +vt 0.808140 0.961165 +vt 0.808140 0.970874 +vt 0.813953 0.970874 +vt 0.813953 0.961165 +vt 0.837209 0.980583 +vt 0.843023 0.970874 +vt 0.843023 0.980583 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.848837 0.961165 +vt 0.848837 0.970874 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.831395 0.737864 +vt 0.837209 0.728155 +vt 0.837209 0.737864 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.843023 0.951456 +vt 0.837209 0.961165 +vt 0.837209 0.951456 +vt 0.808140 0.970874 +vt 0.808140 0.961165 +vt 0.813953 0.970874 +vt 0.813953 0.961165 +vt 0.802326 0.747573 +vt 0.796512 0.718447 +vt 0.796512 0.747573 +vt 0.837209 0.980583 +vt 0.843023 0.970874 +vt 0.843023 0.980583 +vt 0.831395 0.961165 +vt 0.837209 0.970874 +vt 0.831395 0.970874 +vt 0.843023 0.970874 +vt 0.848837 0.961165 +vt 0.843023 0.961165 +vt 0.802326 0.747573 +vt 0.796512 0.718447 +vt 0.796512 0.747573 +vt 0.802326 0.718447 +vt 0.819767 0.708738 +vt 0.802326 0.708738 +vt 0.837209 0.728155 +vt 0.843023 0.718447 +vt 0.837209 0.718447 +vt 0.808140 0.737864 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.813953 0.728155 +vt 0.819767 0.747573 +vt 0.819767 0.718447 +vt 0.825581 0.747573 +vt 0.825581 0.718447 +vt 0.843023 0.728155 +vt 0.848837 0.737864 +vt 0.848837 0.728155 +vt 0.831395 0.737864 +vt 0.837209 0.728155 +vt 0.831395 0.728155 +vt 0.802326 0.747573 +vt 0.796512 0.718447 +vt 0.796512 0.747573 +vt 0.802326 0.757282 +vt 0.819767 0.747573 +vt 0.825581 0.718447 +vt 0.819767 0.747573 +vt 0.825581 0.747573 +vt 0.819767 0.747573 +vt 0.802326 0.757282 +vt 0.819767 0.757282 +vt 0.843023 0.728155 +vt 0.837209 0.718447 +vt 0.837209 0.728155 +vt 0.808140 0.737864 +vt 0.802326 0.718447 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.802326 0.747573 +vt 0.813953 0.728155 +vt 0.819767 0.747573 +vt 0.819767 0.718447 +vt 0.848837 0.961165 +vt 0.848837 0.970874 +vt 0.837209 0.737864 +vt 0.831395 0.728155 +vt 0.831395 0.737864 +vt 0.802326 0.747573 +vt 0.796512 0.718447 +vt 0.796512 0.747573 +vt 0.837209 0.737864 +vt 0.843023 0.747573 +vt 0.843023 0.737864 +vt 0.825581 0.718447 +vt 0.819767 0.747573 +vt 0.825581 0.747573 +vt 0.808140 0.737864 +vt 0.802326 0.718447 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.802326 0.747573 +vt 0.813953 0.728155 +vt 0.819767 0.747573 +vt 0.819767 0.718447 +vt 0.843023 0.970874 +vt 0.837209 0.980583 +vt 0.843023 0.980583 +vt 0.831395 0.728155 +vt 0.837209 0.737864 +vt 0.831395 0.737864 +vt 0.819767 0.708738 +vt 0.843023 0.728155 +vt 0.837209 0.718447 +vt 0.843023 0.718447 +vt 0.802326 0.747573 +vt 0.796512 0.718447 +vt 0.796512 0.747573 +vt 0.837209 0.961165 +vt 0.831395 0.970874 +vt 0.831395 0.961165 +vt 0.843023 0.728155 +vt 0.837209 0.718447 +vt 0.843023 0.718447 +vt 0.825581 0.980583 +vt 0.843023 0.728155 +vt 0.837209 0.718447 +vt 0.837209 0.728155 +vt 0.808140 0.737864 +vt 0.802326 0.718447 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.802326 0.747573 +vt 0.819767 0.718447 +vt 0.819767 0.747573 +vt 0.813953 0.728155 +vt 0.831395 0.728155 +vt 0.837209 0.737864 +vt 0.831395 0.737864 +vt 0.837209 0.737864 +vt 0.843023 0.747573 +vt 0.843023 0.737864 +vt 0.831395 0.737864 +vt 0.831395 0.728155 +vt 0.837209 0.961165 +vt 0.843023 0.951456 +vt 0.837209 0.951456 +vt 0.848837 0.970874 +vt 0.843023 0.961165 +vt 0.848837 0.961165 +vt 0.831395 0.737864 +vt 0.837209 0.728155 +vt 0.837209 0.737864 +vt 0.802326 0.708738 +vt 0.819767 0.718447 +vt 0.819767 0.708738 +vt 0.808140 0.737864 +vt 0.802326 0.718447 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.802326 0.747573 +vt 0.819767 0.718447 +vt 0.819767 0.747573 +vt 0.813953 0.728155 +vt 0.837209 0.737864 +vt 0.843023 0.747573 +vt 0.843023 0.737864 +vt 0.819767 0.747573 +vt 0.802326 0.757282 +vt 0.819767 0.757282 +vt 0.843023 0.728155 +vt 0.848837 0.737864 +vt 0.848837 0.728155 +vt 0.831395 0.737864 +vt 0.796512 0.718447 +vt 0.802326 0.757282 +vt 0.825581 0.718447 +vt 0.825581 0.747573 +vt 0.843023 0.737864 +vt 0.837209 0.747573 +vt 0.843023 0.747573 +vt 0.848837 0.737864 +vt 0.843023 0.728155 +vt 0.848837 0.728155 +vt 0.808140 0.737864 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.819767 0.718447 +vt 0.813953 0.728155 +vt 0.837209 0.737864 +vt 0.843023 0.747573 +vt 0.837209 0.747573 +vt 0.837209 0.980583 +vt 0.843023 0.980583 +vt 0.837209 0.728155 +vt 0.831395 0.737864 +vt 0.831395 0.728155 +vt 0.796512 0.718447 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.825581 0.718447 +vt 0.825581 0.747573 +vt 0.819767 0.708738 +vt 0.848837 0.737864 +vt 0.848837 0.728155 +vt 0.802326 0.718447 +vt 0.808140 0.737864 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.813953 0.728155 +vt 0.843023 0.747573 +vt 0.837209 0.747573 +vt 0.843023 0.747573 +vt 0.843023 0.737864 +vt 0.848837 0.737864 +vt 0.848837 0.728155 +vt 0.837209 0.961165 +vt 0.843023 0.951456 +vt 0.837209 0.951456 +vt 0.825581 0.718447 +vt 0.825581 0.747573 +vt 0.843023 0.747573 +vt 0.837209 0.747573 +vt 0.825581 0.718447 +vt 0.825581 0.747573 +vt 0.843023 0.728155 +vt 0.837209 0.718447 +vt 0.837209 0.728155 +vt 0.819767 0.757282 +vt 0.802326 0.757282 +vt 0.802326 0.718447 +vt 0.808140 0.737864 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.813953 0.728155 +vt 0.819767 0.718447 +vt 0.843023 0.737864 +vt 0.848837 0.728155 +vt 0.848837 0.737864 +vt 0.848837 0.728155 +vt 0.819767 0.757282 +vt 0.802326 0.757282 +vt 0.819767 0.708738 +vt 0.802326 0.708738 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.802326 0.757282 +vt 0.819767 0.757282 +vt 0.825581 0.718447 +vt 0.825581 0.747573 +vt 0.819767 0.708738 +vt 0.819767 0.708738 +vt 0.802326 0.708738 +vt 0.808140 0.737864 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.813953 0.728155 +vt 0.837209 0.747573 +vt 0.843023 0.737864 +vt 0.843023 0.747573 +vt 0.848837 0.737864 +vt 0.848837 0.728155 +vt 0.802326 0.757282 +vt 0.796512 0.718447 +vt 0.802326 0.757282 +vt 0.819767 0.757282 +vt 0.796512 0.718447 +vt 0.802326 0.708738 +vt 0.819767 0.708738 +vt 0.837209 0.718447 +vt 0.843023 0.718447 +vt 0.802326 0.718447 +vt 0.808140 0.737864 +vt 0.808140 0.728155 +vt 0.813953 0.737864 +vt 0.813953 0.728155 +vt 0.843023 0.747573 +vt 0.837209 0.747573 +vt 0.848837 0.737864 +vt 0.843023 0.728155 +vt 0.848837 0.728155 +vt 0.825581 0.980583 +vt 0.802326 0.951456 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.802326 0.980583 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.819767 0.951456 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.843023 0.951456 +vt 0.837209 0.961165 +vt 0.837209 0.951456 +vt 0.808140 0.970874 +vt 0.802326 0.951456 +vt 0.808140 0.961165 +vt 0.819767 0.980583 +vt 0.802326 0.980583 +vt 0.813953 0.961165 +vt 0.813953 0.970874 +vt 0.819767 0.951456 +vt 0.837209 0.980583 +vt 0.843023 0.970874 +vt 0.843023 0.980583 +vt 0.831395 0.961165 +vt 0.837209 0.970874 +vt 0.831395 0.970874 +vt 0.848837 0.961165 +vt 0.843023 0.961165 +vt 0.796512 0.980583 +vt 0.802326 0.951456 +vt 0.796512 0.951456 +vt 0.819767 0.990291 +vt 0.802326 0.980583 +vt 0.802326 0.990291 +vt 0.825581 0.980583 +vt 0.819767 0.980583 +vt 0.802326 0.951456 +vt 0.819767 0.941748 +vt 0.802326 0.941748 +vt 0.837209 0.718447 +vt 0.808140 0.961165 +vt 0.808140 0.970874 +vt 0.813953 0.970874 +vt 0.819767 0.980583 +vt 0.813953 0.961165 +vt 0.837209 0.980583 +vt 0.843023 0.980583 +vt 0.837209 0.961165 +vt 0.831395 0.970874 +vt 0.837209 0.970874 +vt 0.843023 0.970874 +vt 0.848837 0.961165 +vt 0.848837 0.970874 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.819767 0.990291 +vt 0.802326 0.980583 +vt 0.802326 0.990291 +vt 0.825581 0.980583 +vt 0.819767 0.951456 +vt 0.819767 0.980583 +vt 0.819767 0.941748 +vt 0.802326 0.951456 +vt 0.837209 0.961165 +vt 0.843023 0.951456 +vt 0.837209 0.951456 +vt 0.808140 0.961165 +vt 0.802326 0.980583 +vt 0.808140 0.970874 +vt 0.819767 0.980583 +vt 0.813953 0.970874 +vt 0.813953 0.961165 +vt 0.843023 0.970874 +vt 0.837209 0.980583 +vt 0.843023 0.980583 +vt 0.837209 0.970874 +vt 0.831395 0.961165 +vt 0.831395 0.970874 +vt 0.843023 0.970874 +vt 0.837209 0.980583 +vt 0.843023 0.980583 +vt 0.802326 0.951456 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.819767 0.951456 +vt 0.825581 0.980583 +vt 0.825581 0.951456 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.843023 0.961165 +vt 0.837209 0.951456 +vt 0.843023 0.951456 +vt 0.808140 0.970874 +vt 0.802326 0.951456 +vt 0.808140 0.961165 +vt 0.819767 0.980583 +vt 0.802326 0.980583 +vt 0.813953 0.961165 +vt 0.813953 0.970874 +vt 0.819767 0.951456 +vt 0.848837 0.737864 +vt 0.848837 0.728155 +vt 0.837209 0.980583 +vt 0.843023 0.980583 +vt 0.837209 0.961165 +vt 0.831395 0.970874 +vt 0.837209 0.970874 +vt 0.848837 0.961165 +vt 0.848837 0.970874 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.825581 0.980583 +vt 0.825581 0.718447 +vt 0.825581 0.747573 +vt 0.843023 0.961165 +vt 0.837209 0.951456 +vt 0.808140 0.961165 +vt 0.808140 0.970874 +vt 0.813953 0.970874 +vt 0.819767 0.980583 +vt 0.813953 0.961165 +vt 0.837209 0.980583 +vt 0.843023 0.970874 +vt 0.843023 0.980583 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.848837 0.961165 +vt 0.825581 0.718447 +vt 0.825581 0.747573 +vt 0.802326 0.980583 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.825581 0.980583 +vt 0.825581 0.951456 +vt 0.819767 0.941748 +vt 0.808140 0.970874 +vt 0.808140 0.961165 +vt 0.819767 0.980583 +vt 0.813953 0.961165 +vt 0.813953 0.970874 +vt 0.819767 0.951456 +vt 0.843023 0.718447 +vt 0.837209 0.718447 +vt 0.837209 0.970874 +vt 0.831395 0.961165 +vt 0.831395 0.970874 +vt 0.848837 0.961165 +vt 0.843023 0.970874 +vt 0.848837 0.970874 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.802326 0.757282 +vt 0.825581 0.980583 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.837209 0.951456 +vt 0.808140 0.970874 +vt 0.808140 0.961165 +vt 0.813953 0.961165 +vt 0.813953 0.970874 +vt 0.837209 0.980583 +vt 0.843023 0.970874 +vt 0.843023 0.980583 +vt 0.837209 0.961165 +vt 0.831395 0.970874 +vt 0.831395 0.961165 +vt 0.848837 0.961165 +vt 0.848837 0.970874 +vt 0.796512 0.980583 +vt 0.796512 0.951456 +vt 0.819767 0.990291 +vt 0.802326 0.990291 +vt 0.825581 0.980583 +vt 0.825581 0.951456 +vt 0.802326 0.941748 +vt 0.819767 0.941748 +vt 0.843023 0.951456 +vt 0.837209 0.961165 +vt 0.837209 0.951456 +vt 0.808140 0.961165 +vt 0.808140 0.970874 +vt 0.813953 0.970874 +vt 0.813953 0.961165 +vt 0.837209 0.980583 +vt 0.843023 0.980583 +vt 0.831395 0.961165 +vt 0.837209 0.970874 +vt 0.831395 0.970874 +vt 0.848837 0.961165 +vt 0.843023 0.961165 +vt 0.819767 0.980583 +vt 0.819767 0.980583 +vt 0.819767 0.980583 +vt 0.819767 0.980583 +vt 0.831395 0.728155 +vt 0.831395 0.737864 +vt 0.517442 0.291262 +vt 0.546512 0.378641 +vt 0.517442 0.378641 +vt 0.517442 0.427184 +vt 0.441860 0.514563 +vt 0.441860 0.427184 +vt 0.441860 0.242718 +vt 0.517442 0.242718 +vt 0.441860 0.378641 +vt 0.441860 0.291262 +vt 0.552326 0.203883 +vt 0.558140 0.213592 +vt 0.552326 0.213592 +vt 0.627907 0.126214 +vt 0.622093 0.116505 +vt 0.627907 0.116505 +vt 0.610465 0.155340 +vt 0.604651 0.145631 +vt 0.610465 0.145631 +vt 0.604651 0.213592 +vt 0.610465 0.203883 +vt 0.610465 0.213592 +vt 0.639535 0.252427 +vt 0.645349 0.242718 +vt 0.645349 0.252427 +vt 0.575581 0.116505 +vt 0.569767 0.126214 +vt 0.569767 0.116505 +vt 0.627907 0.165049 +vt 0.633721 0.155340 +vt 0.633721 0.165049 +vt 0.593023 0.242718 +vt 0.598837 0.233010 +vt 0.598837 0.242718 +vt 0.569767 0.223301 +vt 0.575581 0.233010 +vt 0.569767 0.233010 +vt 0.627907 0.223301 +vt 0.633721 0.213592 +vt 0.633721 0.223301 +vt 0.639535 0.233010 +vt 0.633721 0.242718 +vt 0.633721 0.233010 +vt 0.575581 0.242718 +vt 0.581395 0.233010 +vt 0.581395 0.242718 +vt 0.627907 0.194175 +vt 0.633721 0.203883 +vt 0.627907 0.203883 +vt 0.610465 0.252427 +vt 0.604651 0.262136 +vt 0.604651 0.252427 +vt 0.622093 0.174757 +vt 0.616279 0.165049 +vt 0.622093 0.165049 +vt 0.569767 0.174757 +vt 0.563953 0.184466 +vt 0.563953 0.174757 +vt 0.610465 0.184466 +vt 0.616279 0.174757 +vt 0.616279 0.184466 +vt 0.569767 0.194175 +vt 0.575581 0.184466 +vt 0.575581 0.194175 +vt 0.645349 0.184466 +vt 0.639535 0.174757 +vt 0.645349 0.174757 +vt 0.645349 0.126214 +vt 0.639535 0.116505 +vt 0.645349 0.116505 +vt 0.569767 0.165049 +vt 0.575581 0.174757 +vt 0.622093 0.242718 +vt 0.627907 0.233010 +vt 0.627907 0.242718 +vt 0.563953 0.126214 +vt 0.563953 0.116505 +vt 0.616279 0.203883 +vt 0.616279 0.213592 +vt 0.581395 0.126214 +vt 0.581395 0.116505 +vt 0.587209 0.262136 +vt 0.581395 0.252427 +vt 0.587209 0.252427 +vt 0.633721 0.126214 +vt 0.633721 0.116505 +vt 0.627907 0.145631 +vt 0.633721 0.145631 +vt 0.627907 0.135922 +vt 0.651163 0.116505 +vt 0.651163 0.126214 +vt 0.616279 0.233010 +vt 0.610465 0.242718 +vt 0.610465 0.233010 +vt 0.569767 0.203883 +vt 0.563953 0.213592 +vt 0.563953 0.203883 +vt 0.639535 0.203883 +vt 0.639535 0.213592 +vt 0.610465 0.271845 +vt 0.604651 0.271845 +vt 0.627907 0.184466 +vt 0.627907 0.174757 +vt 0.558140 0.135922 +vt 0.563953 0.145631 +vt 0.558140 0.145631 +vt 0.604651 0.194175 +vt 0.610465 0.194175 +vt 0.598837 0.252427 +vt 0.593023 0.252427 +vt 0.616279 0.106796 +vt 0.622093 0.106796 +vt 0.587209 0.233010 +vt 0.587209 0.242718 +vt 0.581395 0.165049 +vt 0.587209 0.155340 +vt 0.587209 0.165049 +vt 0.651163 0.233010 +vt 0.651163 0.242718 +vt 0.575581 0.262136 +vt 0.581395 0.271845 +vt 0.575581 0.271845 +vt 0.558140 0.194175 +vt 0.563953 0.194175 +vt 0.639535 0.165049 +vt 0.639535 0.106796 +vt 0.616279 0.135922 +vt 0.622093 0.126214 +vt 0.622093 0.135922 +vt 0.563953 0.155340 +vt 0.569767 0.145631 +vt 0.569767 0.155340 +vt 0.581395 0.223301 +vt 0.587209 0.213592 +vt 0.587209 0.223301 +vt 0.633721 0.271845 +vt 0.627907 0.262136 +vt 0.633721 0.262136 +vt 0.610465 0.126214 +vt 0.616279 0.116505 +vt 0.616279 0.126214 +vt 0.627907 0.252427 +vt 0.616279 0.262136 +vt 0.616279 0.271845 +vt 0.581395 0.135922 +vt 0.587209 0.145631 +vt 0.581395 0.145631 +vt 0.587209 0.126214 +vt 0.593023 0.116505 +vt 0.593023 0.126214 +vt 0.604651 0.135922 +vt 0.598837 0.126214 +vt 0.552326 0.155340 +vt 0.552326 0.145631 +vt 0.604651 0.165049 +vt 0.610465 0.165049 +vt 0.627907 0.281553 +vt 0.633721 0.281553 +vt 0.610465 0.281553 +vt 0.604651 0.281553 +vt 0.569767 0.135922 +vt 0.575581 0.126214 +vt 0.575581 0.135922 +vt 0.598837 0.184466 +vt 0.604651 0.174757 +vt 0.604651 0.184466 +vt 0.651163 0.174757 +vt 0.651163 0.184466 +vt 0.598837 0.106796 +vt 0.593023 0.106796 +vt 0.563953 0.223301 +vt 0.558140 0.223301 +vt 0.604651 0.126214 +vt 0.598837 0.116505 +vt 0.604651 0.116505 +vt 0.593023 0.165049 +vt 0.598837 0.174757 +vt 0.593023 0.174757 +vt 0.587209 0.271845 +vt 0.569767 0.252427 +vt 0.575581 0.252427 +vt 0.575581 0.106796 +vt 0.569767 0.106796 +vt 0.581395 0.194175 +vt 0.587209 0.203883 +vt 0.581395 0.203883 +vt 0.558140 0.165049 +vt 0.563953 0.165049 +vt 0.616279 0.223301 +vt 0.622093 0.233010 +vt 0.581395 0.213592 +vt 0.558140 0.271845 +vt 0.563953 0.281553 +vt 0.558140 0.281553 +vt 0.645349 0.233010 +vt 0.563953 0.271845 +vt 0.569767 0.262136 +vt 0.569767 0.271845 +vt 0.593023 0.145631 +vt 0.593023 0.155340 +vt 0.558140 0.262136 +vt 0.552326 0.271845 +vt 0.552326 0.262136 +vt 0.622093 0.194175 +vt 0.616279 0.194175 +vt 0.639535 0.262136 +vt 0.639535 0.271845 +vt 0.639535 0.145631 +vt 0.639535 0.155340 +vt 0.639535 0.135922 +vt 0.645349 0.135922 +vt 0.563953 0.242718 +vt 0.563953 0.233010 +vt 0.598837 0.155340 +vt 0.598837 0.145631 +vt 0.604651 0.233010 +vt 0.604651 0.242718 +vt 0.575581 0.155340 +vt 0.575581 0.145631 +vt 0.587209 0.184466 +vt 0.587209 0.174757 +vt 0.622093 0.155340 +vt 0.622093 0.145631 +vt 0.639535 0.223301 +vt 0.593023 0.203883 +vt 0.593023 0.213592 +vt 0.581395 0.174757 +vt 0.581395 0.184466 +vt 0.587209 0.281553 +vt 0.581395 0.281553 +vt 0.622093 0.271845 +vt 0.622093 0.262136 +vt 0.598837 0.135922 +vt 0.593023 0.135922 +vt 0.616279 0.145631 +vt 0.616279 0.155340 +vt 0.622093 0.213592 +vt 0.622093 0.203883 +vt 0.593023 0.194175 +vt 0.598837 0.194175 +vt 0.575581 0.213592 +vt 0.575581 0.203883 +vt 0.610465 0.223301 +vt 0.604651 0.223301 +vt 0.598837 0.271845 +vt 0.598837 0.262136 +vt 0.563953 0.252427 +vt 0.558140 0.252427 +vt 0.639535 0.194175 +vt 0.645349 0.194175 +vt 0.593023 0.262136 +vt 0.593023 0.271845 +vt 0.593023 0.223301 +vt 0.598837 0.223301 +vt 0.616279 0.252427 +vt 0.622093 0.252427 +vt 0.633721 0.184466 +vt 0.633721 0.174757 +vt 0.598837 0.203883 +vt 0.598837 0.213592 +vt 0.843023 0.961165 +vt 0.843023 0.737864 +vt 0.843023 0.737864 +vt 0.837209 0.737864 +vt 0.843023 0.961165 +vt 0.843023 0.961165 +vt 0.843023 0.961165 +vt 0.837209 0.970874 +vt 0.843023 0.737864 +vt 0.837209 0.970874 +vt 0.412791 0.378641 +vt 0.412791 0.291262 +vt 0.593023 0.135922 +vt 0.598837 0.126214 +vt 0.598837 0.135922 +vt 0.604651 0.126214 +vt 0.598837 0.116505 +vt 0.604651 0.116505 +vt 0.598837 0.106796 +vt 0.593023 0.116505 +vt 0.593023 0.106796 +vt 0.587209 0.116505 +vt 0.593023 0.126214 +vt 0.587209 0.126214 +vt 0.575581 0.106796 +vt 0.569767 0.116505 +vt 0.569767 0.106796 +vt 0.563953 0.116505 +vt 0.569767 0.126214 +vt 0.563953 0.126214 +vt 0.569767 0.135922 +vt 0.575581 0.126214 +vt 0.575581 0.135922 +vt 0.581395 0.126214 +vt 0.575581 0.116505 +vt 0.581395 0.116505 +vt 0.837209 0.252427 +vt 0.593023 0.582524 +vt 0.802326 0.262136 +vt 0.796512 0.572816 +vt 0.796512 0.310680 +vt 0.988372 0.582524 +vt 0.872093 0.271845 +vt 0.802326 0.223301 +vt 0.994186 0.504854 +vt 0.796512 0.242718 +vt 0.802326 0.543689 +vt 0.802326 0.223301 +vt 0.796512 0.310680 +vt 0.796512 0.242718 +vt 0.802326 0.349515 +vt 0.796512 0.495146 +vt 0.802326 0.223301 +vt 0.994186 0.553398 +vt 0.465116 0.834951 +vt 0.877907 0.339806 +vt 0.511628 0.699029 +vt 0.802326 0.349515 +vt 0.802326 0.262136 +vt 0.988372 0.533981 +vt 0.308140 0.475728 +vt 0.406977 0.650485 +vt 0.377907 0.757282 +vt 0.337209 0.990291 +vt 0.354651 0.805825 +vt 0.377907 0.233010 +vt 0.360465 0.631068 +vt 0.377907 0.990291 +vt 0.360465 0.106796 +vt 0.354651 0.456311 +vt 0.325581 0.058252 +vt 0.406977 0.126214 +vt 0.308140 0.184466 +vt 0.354651 0.281553 +vt 0.389535 0.349515 +vt 0.337209 0.349515 +vt 0.406977 0.883495 +vt 0.377907 0.524272 +vt 0.360465 0.864078 +vt 0.389535 0.524272 +vt 0.837209 0.252427 +vt 0.354651 0.572816 +vt 0.406977 0.708738 +vt 0.308140 0.708738 +vt 0.308140 0.242718 +vt 0.360465 0.398058 +vt 0.337209 0.058252 +vt 0.308140 0.941748 +vt 0.389535 0.058252 +vt 0.389535 0.990291 +vt 0.308140 0.300971 +vt 0.308140 0.766990 +vt 0.872093 0.271845 +vt 0.558140 0.446602 +vt 0.558140 0.582524 +vt 0.802326 0.223301 +vt 0.569767 0.514563 +vt 0.593023 0.446602 +vt 0.558140 0.446602 +vt 0.581395 0.514563 +vt 0.569767 0.514563 +vt 0.593023 0.582524 +vt 0.558140 0.582524 +vt 0.593023 0.582524 +vt 0.593023 0.582524 +vt 0.877907 0.339806 +vt 0.581395 0.514563 +vt 0.558140 0.446602 +vt 0.558140 0.446602 +vt 0.593023 0.446602 +vt 0.469513 0.889126 +vt 0.478881 0.866040 +vt 0.492825 0.850698 +vt 0.509224 0.845435 +vt 0.539406 0.866694 +vt 0.548594 0.889980 +vt 0.551745 0.917365 +vt 0.539014 0.967766 +vt 0.525070 0.983108 +vt 0.508671 0.988371 +vt 0.478489 0.967112 +vt 0.469302 0.943826 +vt 0.466150 0.916441 +vt 0.673311 0.689481 +vt 0.662275 0.745362 +vt 0.633678 0.779739 +vt 0.598443 0.779481 +vt 0.559285 0.688647 +vt 0.598917 0.598389 +vt 0.662569 0.633441 +vt 0.802326 0.708738 +vt 0.796512 0.747573 +vt 0.825581 0.951456 +vt 0.848837 0.970874 +vt 0.825581 0.951456 +vt 0.802326 0.708738 +vt 0.848837 0.970874 +vt 0.831395 0.728155 +vt 0.848837 0.970874 +vt 0.819767 0.757282 +vt 0.843023 0.718447 +vt 0.837209 0.747573 +vt 0.837209 0.728155 +vt 0.802326 0.708738 +vt 0.837209 0.728155 +vt 0.825581 0.951456 +vt 0.843023 0.718447 +vt 0.837209 0.747573 +vt 0.831395 0.728155 +vt 0.837209 0.747573 +vt 0.831395 0.728155 +vt 0.796512 0.747573 +vt 0.819767 0.757282 +vt 0.796512 0.747573 +vt 0.802326 0.708738 +vt 0.837209 0.747573 +vt 0.843023 0.718447 +vt 0.848837 0.737864 +vt 0.802326 0.708738 +vt 0.819767 0.757282 +vt 0.796512 0.747573 +vt 0.796512 0.747573 +vt 0.825581 0.951456 +vt 0.848837 0.970874 +vt 0.825581 0.951456 +vt 0.843023 0.718447 +vt 0.831395 0.961165 +vt 0.825581 0.951456 +vt 0.802326 0.941748 +vt 0.831395 0.961165 +vt 0.825581 0.951456 +vt 0.843023 0.951456 +vt 0.848837 0.970874 +vt 0.802326 0.941748 +vt 0.819767 0.757282 +vt 0.825581 0.951456 +vt 0.843023 0.951456 +vt 0.848837 0.970874 +vt 0.546512 0.291262 +vt 0.517442 0.514563 +vt 0.558140 0.203883 +vt 0.604651 0.155340 +vt 0.604651 0.203883 +vt 0.639535 0.242718 +vt 0.627907 0.155340 +vt 0.593023 0.233010 +vt 0.575581 0.223301 +vt 0.627907 0.213592 +vt 0.633721 0.194175 +vt 0.610465 0.262136 +vt 0.569767 0.184466 +vt 0.610465 0.174757 +vt 0.639535 0.184466 +vt 0.639535 0.126214 +vt 0.575581 0.165049 +vt 0.581395 0.262136 +vt 0.633721 0.135922 +vt 0.616279 0.242718 +vt 0.569767 0.213592 +vt 0.622093 0.184466 +vt 0.563953 0.135922 +vt 0.581395 0.155340 +vt 0.645349 0.165049 +vt 0.645349 0.106796 +vt 0.627907 0.271845 +vt 0.610465 0.116505 +vt 0.633721 0.252427 +vt 0.587209 0.135922 +vt 0.587209 0.116505 +vt 0.610465 0.135922 +vt 0.558140 0.155340 +vt 0.598837 0.165049 +vt 0.569767 0.242718 +vt 0.587209 0.194175 +vt 0.622093 0.223301 +vt 0.563953 0.262136 +vt 0.593023 0.184466 +vt 0.645349 0.223301 +vt 0.412791 0.961165 +vt 0.459302 0.990291 +vt 0.412791 0.990291 +vt 0.412791 0.844660 +vt 0.459302 0.873786 +vt 0.412791 0.873786 +vt 0.412791 0.728155 +vt 0.459302 0.757282 +vt 0.412791 0.757282 +vt 0.412791 0.932039 +vt 0.459302 0.961165 +vt 0.412791 0.582524 +vt 0.459302 0.611650 +vt 0.412791 0.611650 +vt 0.459302 0.786408 +vt 0.412791 0.786408 +vt 0.412791 0.902913 +vt 0.459302 0.932039 +vt 0.459302 0.902913 +vt 0.459302 0.815534 +vt 0.412791 0.815534 +vt 0.151163 0.174757 +vt 0.122093 0.233010 +vt 0.122093 0.174757 +vt 0.412791 0.640777 +vt 0.459302 0.669903 +vt 0.412791 0.669903 +vt 0.459302 0.640777 +vt 0.779070 0.485437 +vt 0.790698 0.553398 +vt 0.779070 0.533981 +vt 0.680233 0.815534 +vt 0.720930 0.834951 +vt 0.691860 0.834951 +vt 0.732558 0.902913 +vt 0.732558 0.815534 +vt 0.680233 0.902913 +vt 0.720930 0.883495 +vt 0.691860 0.660194 +vt 0.680233 0.728155 +vt 0.680233 0.640777 +vt 0.680233 0.728155 +vt 0.720930 0.747573 +vt 0.691860 0.747573 +vt 0.732558 0.815534 +vt 0.732558 0.728155 +vt 0.680233 0.815534 +vt 0.720930 0.796117 +vt 0.779070 0.660194 +vt 0.790698 0.728155 +vt 0.779070 0.708738 +vt 0.720930 0.660194 +vt 0.732558 0.728155 +vt 0.732558 0.640777 +vt 0.720930 0.708738 +vt 0.779070 0.796117 +vt 0.790698 0.728155 +vt 0.790698 0.815534 +vt 0.680233 0.553398 +vt 0.720930 0.572816 +vt 0.691860 0.572816 +vt 0.732558 0.553398 +vt 0.720930 0.621359 +vt 0.680233 0.640777 +vt 0.732349 0.640524 +vt 0.790698 0.466019 +vt 0.779070 0.398058 +vt 0.790698 0.378641 +vt 0.680233 0.466019 +vt 0.720930 0.485437 +vt 0.691860 0.485437 +vt 0.732558 0.466019 +vt 0.720930 0.533981 +vt 0.680233 0.553398 +vt 0.732558 0.553398 +vt 0.779070 0.135922 +vt 0.790698 0.203883 +vt 0.779070 0.184466 +vt 0.680233 0.378641 +vt 0.720930 0.398058 +vt 0.691860 0.398058 +vt 0.732558 0.466019 +vt 0.732558 0.378641 +vt 0.680233 0.466019 +vt 0.720930 0.446602 +vt 0.779070 0.621359 +vt 0.790698 0.553398 +vt 0.790698 0.640777 +vt 0.680233 0.291262 +vt 0.720376 0.311760 +vt 0.691860 0.310680 +vt 0.732558 0.378641 +vt 0.732558 0.291262 +vt 0.680233 0.378641 +vt 0.720930 0.359223 +vt 0.779070 0.310680 +vt 0.790698 0.378641 +vt 0.779070 0.359223 +vt 0.680233 0.203883 +vt 0.720930 0.223301 +vt 0.691860 0.223301 +vt 0.732558 0.291262 +vt 0.732558 0.203883 +vt 0.680233 0.291262 +vt 0.720930 0.271845 +vt 0.691860 0.796117 +vt 0.680233 0.116505 +vt 0.720930 0.135922 +vt 0.691860 0.135922 +vt 0.732558 0.203883 +vt 0.732558 0.116505 +vt 0.680233 0.203883 +vt 0.720930 0.184466 +vt 0.779070 0.922330 +vt 0.790698 0.990291 +vt 0.779070 0.970874 +vt 0.680233 0.902913 +vt 0.720930 0.922330 +vt 0.691860 0.922330 +vt 0.732558 0.902913 +vt 0.720930 0.970874 +vt 0.680233 0.990291 +vt 0.732558 0.990291 +vt 0.691860 0.621359 +vt 0.063954 0.281553 +vt 0.034884 0.252427 +vt 0.063954 0.242718 +vt 0.790698 0.815534 +vt 0.750000 0.834951 +vt 0.738372 0.815534 +vt 0.738372 0.902913 +vt 0.750000 0.883495 +vt 0.790698 0.902913 +vt 0.691860 0.883495 +vt 0.750000 0.747573 +vt 0.738372 0.728155 +vt 0.738372 0.815534 +vt 0.750000 0.796117 +vt 0.691860 0.271845 +vt 0.790698 0.640777 +vt 0.750000 0.660194 +vt 0.738372 0.640777 +vt 0.738372 0.728155 +vt 0.750000 0.708738 +vt 0.779070 0.223301 +vt 0.790698 0.291262 +vt 0.779070 0.271845 +vt 0.750000 0.572816 +vt 0.738372 0.553398 +vt 0.750000 0.621359 +vt 0.738581 0.640524 +vt 0.779070 0.834951 +vt 0.779070 0.883495 +vt 0.790698 0.466019 +vt 0.750000 0.485437 +vt 0.738372 0.466019 +vt 0.750000 0.533981 +vt 0.738372 0.553398 +vt 0.691860 0.533981 +vt 0.750000 0.398058 +vt 0.738372 0.378641 +vt 0.738372 0.466019 +vt 0.750000 0.446602 +vt 0.790698 0.291262 +vt 0.750554 0.311760 +vt 0.738372 0.291262 +vt 0.750000 0.359223 +vt 0.738372 0.378641 +vt 0.790698 0.203883 +vt 0.750000 0.223301 +vt 0.738372 0.203883 +vt 0.738372 0.291262 +vt 0.750000 0.271845 +vt 0.790698 0.116505 +vt 0.750000 0.135922 +vt 0.738372 0.116505 +vt 0.750000 0.184466 +vt 0.738372 0.203883 +vt 0.790698 0.902913 +vt 0.750000 0.922330 +vt 0.738372 0.902913 +vt 0.738372 0.990291 +vt 0.750000 0.970874 +vt 0.412791 0.524272 +vt 0.459302 0.553398 +vt 0.412791 0.553398 +vt 0.459302 0.844660 +vt 0.412791 0.699029 +vt 0.459302 0.728155 +vt 0.459302 0.699029 +vt 0.459302 0.582524 +vt 0.267442 0.951456 +vt 0.238372 0.980583 +vt 0.238372 0.941748 +vt 0.267442 0.485437 +vt 0.238372 0.514563 +vt 0.238372 0.475728 +vt 0.180233 0.524272 +vt 0.151163 0.582524 +vt 0.151163 0.524272 +vt 0.005814 0.553398 +vt 0.034884 0.543689 +vt 0.034884 0.563107 +vt 0.122093 0.116505 +vt 0.093023 0.169903 +vt 0.093023 0.121359 +vt 0.122093 0.699029 +vt 0.093023 0.752427 +vt 0.093023 0.703884 +vt 0.267442 0.543689 +vt 0.296512 0.553398 +vt 0.267442 0.563107 +vt 0.063954 0.708738 +vt 0.151163 0.466019 +vt 0.238372 0.417476 +vt 0.267442 0.446602 +vt 0.238372 0.456311 +vt 0.063954 0.165049 +vt 0.034884 0.135922 +vt 0.063954 0.126214 +vt 0.151163 0.932039 +vt 0.122093 0.990291 +vt 0.122093 0.932039 +vt 0.005814 0.611650 +vt 0.034884 0.601942 +vt 0.034884 0.621359 +vt 0.122093 0.640777 +vt 0.093023 0.694175 +vt 0.093023 0.645631 +vt 0.209302 0.228155 +vt 0.180233 0.174757 +vt 0.209302 0.179612 +vt 0.267442 0.601942 +vt 0.296512 0.611651 +vt 0.267442 0.621359 +vt 0.238372 0.592233 +vt 0.209302 0.635922 +vt 0.209302 0.587379 +vt 0.122093 0.582524 +vt 0.180233 0.407767 +vt 0.151163 0.349515 +vt 0.180233 0.349515 +vt 0.267442 0.213592 +vt 0.238372 0.184466 +vt 0.267442 0.194175 +vt 0.267442 0.155340 +vt 0.238372 0.126214 +vt 0.267442 0.135922 +vt 0.151163 0.640777 +vt 0.180233 0.699029 +vt 0.151163 0.699029 +vt 0.238372 0.223301 +vt 0.005814 0.669903 +vt 0.034884 0.660194 +vt 0.034884 0.679612 +vt 0.093023 0.228155 +vt 0.093023 0.179612 +vt 0.180233 0.640777 +vt 0.180233 0.582524 +vt 0.267442 0.660194 +vt 0.296512 0.669903 +vt 0.267442 0.679612 +vt 0.063954 0.223301 +vt 0.063954 0.184466 +vt 0.267442 0.718447 +vt 0.296512 0.728155 +vt 0.267442 0.737864 +vt 0.093023 0.762136 +vt 0.063954 0.805825 +vt 0.063954 0.766990 +vt 0.151163 0.116505 +vt 0.267442 0.252427 +vt 0.238372 0.281553 +vt 0.238372 0.242718 +vt 0.034884 0.796116 +vt 0.034884 0.776699 +vt 0.180233 0.233010 +vt 0.151163 0.291262 +vt 0.151163 0.233010 +vt 0.093023 0.529126 +vt 0.063954 0.572816 +vt 0.063954 0.533981 +vt 0.005814 0.728155 +vt 0.034884 0.718447 +vt 0.034884 0.737864 +vt 0.093023 0.286408 +vt 0.093023 0.237864 +vt 0.209302 0.286408 +vt 0.209302 0.237864 +vt 0.122093 0.058252 +vt 0.093023 0.111651 +vt 0.093023 0.063107 +vt 0.093023 0.878641 +vt 0.093023 0.927184 +vt 0.267442 0.776699 +vt 0.296512 0.786408 +vt 0.267442 0.796117 +vt 0.122093 0.291262 +vt 0.238372 0.747573 +vt 0.238372 0.708738 +vt 0.063954 0.980583 +vt 0.034884 0.951456 +vt 0.063954 0.941748 +vt 0.180233 0.757282 +vt 0.151163 0.815534 +vt 0.151163 0.757282 +vt 0.209302 0.752427 +vt 0.209302 0.703884 +vt 0.005814 0.786408 +vt 0.063954 0.883495 +vt 0.005814 0.844660 +vt 0.034884 0.834951 +vt 0.034884 0.854369 +vt 0.122093 0.407767 +vt 0.093023 0.461165 +vt 0.093023 0.412621 +vt 0.209302 0.461165 +vt 0.209302 0.412621 +vt 0.267442 0.834952 +vt 0.296512 0.844660 +vt 0.267442 0.854369 +vt 0.238372 0.864078 +vt 0.209302 0.820388 +vt 0.238372 0.825243 +vt 0.122093 0.466019 +vt 0.180233 0.873786 +vt 0.151163 0.873786 +vt 0.180233 0.932039 +vt 0.093023 0.470874 +vt 0.063954 0.514563 +vt 0.063954 0.475728 +vt 0.005814 0.902913 +vt 0.034884 0.893204 +vt 0.034884 0.912621 +vt 0.122093 0.524272 +vt 0.093023 0.519417 +vt 0.093023 0.820388 +vt 0.063954 0.864078 +vt 0.063954 0.825243 +vt 0.267442 0.893204 +vt 0.296512 0.902913 +vt 0.267442 0.912621 +vt 0.063954 0.689320 +vt 0.063954 0.650485 +vt 0.063954 0.631068 +vt 0.063954 0.592233 +vt 0.238372 0.883495 +vt 0.238372 0.922330 +vt 0.238372 0.067961 +vt 0.267442 0.097087 +vt 0.238372 0.106796 +vt 0.063954 0.067961 +vt 0.034884 0.097087 +vt 0.034884 0.077670 +vt 0.180233 0.990291 +vt 0.209302 0.063107 +vt 0.209302 0.111651 +vt 0.005814 0.961165 +vt 0.034884 0.970874 +vt 0.180233 0.116505 +vt 0.180233 0.058252 +vt 0.209302 0.121359 +vt 0.296512 0.961165 +vt 0.267442 0.970874 +vt 0.063953 0.106796 +vt 0.151163 0.058252 +vt 0.180233 0.815534 +vt 0.238372 0.766990 +vt 0.034884 0.485437 +vt 0.005814 0.087379 +vt 0.209302 0.694175 +vt 0.209302 0.645631 +vt 0.209302 0.985437 +vt 0.209302 0.936893 +vt 0.267442 0.077670 +vt 0.296512 0.087379 +vt 0.122093 0.349515 +vt 0.093023 0.402913 +vt 0.093023 0.354369 +vt 0.296512 0.145631 +vt 0.238372 0.300971 +vt 0.209302 0.344660 +vt 0.209302 0.296116 +vt 0.122093 0.757282 +vt 0.122093 0.815534 +vt 0.063954 0.417476 +vt 0.034884 0.446602 +vt 0.034884 0.427184 +vt 0.238372 0.359223 +vt 0.267442 0.388349 +vt 0.238372 0.398058 +vt 0.063954 0.359223 +vt 0.063954 0.398058 +vt 0.005814 0.145631 +vt 0.034884 0.155340 +vt 0.093023 0.985437 +vt 0.093023 0.936893 +vt 0.209302 0.927184 +vt 0.093023 0.587379 +vt 0.093023 0.635922 +vt 0.296512 0.203884 +vt 0.238372 0.689320 +vt 0.122093 0.873786 +vt 0.005814 0.203883 +vt 0.034884 0.194175 +vt 0.034884 0.213592 +vt 0.209302 0.762136 +vt 0.238372 0.805825 +vt 0.209302 0.810680 +vt 0.005814 0.262136 +vt 0.034884 0.271845 +vt 0.093023 0.577670 +vt 0.209302 0.529126 +vt 0.296512 0.262136 +vt 0.267442 0.271845 +vt 0.238372 0.572816 +vt 0.238372 0.533981 +vt 0.063954 0.747573 +vt 0.267442 0.330097 +vt 0.267442 0.310680 +vt 0.063954 0.300971 +vt 0.093023 0.344660 +vt 0.063954 0.339806 +vt 0.005814 0.320388 +vt 0.034884 0.310680 +vt 0.034884 0.330097 +vt 0.093023 0.810680 +vt 0.296512 0.320388 +vt 0.209302 0.878641 +vt 0.238372 0.631068 +vt 0.034884 0.368932 +vt 0.063954 0.456311 +vt 0.005814 0.378641 +vt 0.034884 0.388349 +vt 0.209302 0.354369 +vt 0.209302 0.470874 +vt 0.180233 0.466019 +vt 0.267442 0.368932 +vt 0.296512 0.378641 +vt 0.209302 0.402913 +vt 0.267442 0.427184 +vt 0.296512 0.436893 +vt 0.151163 0.407767 +vt 0.238372 0.650485 +vt 0.005814 0.436893 +vt 0.180233 0.291262 +vt 0.296512 0.495146 +vt 0.267442 0.504854 +vt 0.209302 0.169903 +vt 0.005814 0.495146 +vt 0.034884 0.504854 +vt 0.093023 0.296116 +vt 0.691860 0.708738 +vt 0.691860 0.446602 +vt 0.691860 0.359223 +vt 0.691860 0.184466 +vt 0.691860 0.970874 +vt 0.779070 0.747573 +vt 0.779070 0.572816 +vt 0.779070 0.446602 +vt 0.459302 0.524272 +vt 0.151163 0.990291 +vt 0.238372 0.165049 +vt 0.063954 0.922330 +vt 0.209302 0.868932 +vt 0.093023 0.868932 +vt 0.238372 0.339806 +vt 0.209302 0.577670 +vt 0.209302 0.519417 +vn 0.7071 0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.9848 -0.1736 -0.0000 +vn -0.9848 0.1736 0.0000 +vn 0.1736 -0.9848 -0.0000 +vn 0.9848 -0.1736 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.1736 -0.9848 0.0000 +vn 0.9848 0.1736 0.0000 +vn 0.1736 0.9848 0.0000 +vn -0.1736 0.9848 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.2575 -0.1067 -0.9604 +vn 0.9239 -0.3827 0.0000 +vn -0.1066 -0.2575 0.9604 +vn 0.6725 0.2185 -0.7071 +vn 0.3675 0.8873 -0.2787 +vn -0.3827 0.9239 0.0000 +vn 0.1067 -0.2575 0.9604 +vn 0.1066 -0.2575 0.9604 +vn -0.9239 0.3827 0.0000 +vn -0.1067 -0.2575 0.9604 +vn 0.2575 -0.1066 -0.9604 +vn -0.9239 -0.3827 -0.0000 +vn -0.3675 0.8873 -0.2787 +vn 0.6725 0.2185 0.7071 +vn -0.1067 0.2575 -0.9604 +vn -0.1066 0.2575 0.9604 +vn 0.3675 0.8873 0.2787 +vn -0.1067 0.2575 0.9604 +vn -0.8090 0.5878 -0.0000 +vn -0.2575 -0.1067 -0.9604 +vn -0.1067 -0.2575 -0.9604 +vn 0.1066 0.2575 0.9604 +vn -0.3675 0.8873 0.2787 +vn 0.1067 0.2575 0.9604 +vn 0.1066 -0.2575 -0.9604 +vn -0.1066 -0.2575 -0.9604 +vn 0.3675 -0.8873 -0.2787 +vn 0.2575 0.1066 -0.9604 +vn -0.3675 -0.8873 -0.2787 +vn -0.4156 -0.5721 0.7071 +vn 0.1067 -0.2575 -0.9604 +vn 0.3827 -0.9239 -0.0000 +vn 0.3675 -0.8873 0.2787 +vn 0.1067 0.2575 -0.9604 +vn -0.8090 -0.5878 0.0000 +vn 0.1066 0.2575 -0.9604 +vn -0.3675 -0.8873 0.2787 +vn -0.1066 0.2575 -0.9604 +vn -0.4156 -0.5721 -0.7071 +vn 0.4156 0.5721 0.7071 +vn -0.3090 -0.9511 -0.0000 +vn 0.8090 -0.5878 0.0000 +vn 0.3090 0.9511 -0.0000 +vn 0.6725 -0.2185 0.7071 +vn -0.3090 0.9511 -0.0000 +vn -0.6725 0.2185 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.3090 -0.9511 0.0000 +vn -0.2575 -0.1066 -0.9604 +vn -0.6725 0.2185 0.7071 +vn -0.6725 -0.2185 0.7071 +vn 0.4156 -0.5721 -0.7071 +vn -0.4156 0.5721 0.7071 +vn 0.8090 0.5878 0.0000 +vn 0.4156 0.5721 -0.7071 +vn 0.6725 -0.2185 -0.7071 +vn -0.3827 -0.9239 -0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.6725 -0.2185 -0.7071 +vn -0.4156 0.5721 -0.7071 +vn 0.4156 -0.5721 0.7071 +vn -0.4156 0.5720 -0.7071 +vn 0.3827 0.9239 0.0000 +vn 0.8873 -0.3675 -0.2787 +vn -0.2575 0.1067 0.9604 +vn 0.2575 0.1067 -0.9604 +vn -0.2575 -0.1067 0.9604 +vn 0.8873 0.3675 -0.2787 +vn -0.2575 -0.1066 0.9604 +vn 0.2575 0.1067 0.9604 +vn 0.2575 -0.1067 0.9604 +vn -0.2575 0.1066 -0.9604 +vn 0.8873 -0.3675 0.2787 +vn -0.2575 0.1067 -0.9604 +vn 0.2575 -0.1066 0.9604 +vn 0.8873 0.3675 0.2787 +vn 0.2575 0.1066 0.9604 +vn -0.8873 -0.3675 -0.2787 +vn -0.8873 0.3675 -0.2787 +vn -0.8873 -0.3675 0.2787 +vn -0.2575 0.1066 0.9604 +vn -0.8873 0.3675 0.2787 +vn -0.4156 0.5720 0.7071 +vn -0.9848 0.1737 0.0000 +vn -0.6688 -0.6688 0.3245 +vn -0.6325 -0.6325 0.4472 +vn 0.6325 -0.6325 0.4472 +vn 0.6688 -0.6688 0.3245 +vn -0.6688 -0.6688 -0.3245 +vn 0.6325 -0.6325 -0.4472 +vn 0.6688 -0.6688 -0.3245 +vn -0.8803 -0.3646 -0.3034 +vn -0.6738 -0.6738 -0.3034 +vn -0.6325 -0.6325 -0.4472 +vn 0.0000 -0.8348 0.5506 +vn -0.2539 -0.7815 0.5698 +vn 0.2539 0.7815 -0.5698 +vn 0.4907 0.6754 -0.5506 +vn 0.6648 0.4830 -0.5698 +vn 0.7939 -0.2580 -0.5506 +vn 0.6648 -0.4830 -0.5698 +vn 0.8218 -0.0000 -0.5698 +vn 0.7939 0.2580 -0.5506 +vn 0.7939 -0.2580 0.5506 +vn 0.6648 -0.4830 0.5698 +vn 0.7939 0.2580 0.5506 +vn 0.6648 0.4830 0.5698 +vn 0.8218 0.0000 0.5698 +vn 0.4907 -0.6754 -0.5506 +vn 0.2539 -0.7815 -0.5698 +vn -0.6648 -0.4830 0.5698 +vn -0.4907 -0.6754 0.5506 +vn -0.0000 -0.8348 -0.5506 +vn -0.2539 -0.7815 -0.5698 +vn -0.4907 0.6754 0.5506 +vn -0.2539 0.7815 0.5698 +vn -0.4907 -0.6754 -0.5506 +vn -0.6648 -0.4830 -0.5698 +vn 0.4907 -0.6754 0.5506 +vn 0.2539 -0.7815 0.5698 +vn -0.7939 -0.2580 -0.5506 +vn -0.8218 -0.0000 -0.5698 +vn -0.7939 -0.2580 0.5506 +vn -0.8218 0.0000 0.5698 +vn -0.7939 0.2580 -0.5506 +vn -0.6648 0.4830 -0.5698 +vn -0.4907 0.6754 -0.5506 +vn -0.2539 0.7815 -0.5698 +vn 0.0000 0.8348 0.5506 +vn 0.2539 0.7815 0.5698 +vn 0.0000 0.8348 -0.5506 +vn -0.6003 0.0000 -0.7998 +vn -0.3016 -0.1249 -0.9452 +vn -0.5546 -0.2297 -0.7998 +vn 0.4907 0.6754 0.5506 +vn -0.7939 0.2580 0.5506 +vn -0.6648 0.4830 0.5698 +vn 0.6325 0.6325 0.4472 +vn 0.6688 0.6688 0.3245 +vn -0.6325 0.6325 -0.4472 +vn -0.6688 0.6688 -0.3245 +vn -0.6325 0.6325 0.4472 +vn -0.6688 0.6688 0.3245 +vn 0.6688 0.6688 -0.3245 +vn 0.6325 0.6325 -0.4472 +vn 0.1249 -0.3016 0.9452 +vn -0.0000 -0.6003 0.7998 +vn 0.2297 -0.5546 0.7998 +vn -0.1249 0.3016 0.9452 +vn -0.0000 0.6003 0.7998 +vn -0.2297 0.5546 0.7998 +vn -0.0000 0.9528 0.3034 +vn 0.0000 0.3265 -0.9452 +vn 0.1249 0.3016 -0.9452 +vn -0.3646 -0.8803 -0.3034 +vn -0.5767 -0.5767 -0.5787 +vn -0.3121 -0.7535 -0.5787 +vn 0.8803 0.3646 -0.3034 +vn 0.8155 -0.0000 -0.5787 +vn 0.7535 0.3121 -0.5787 +vn -0.0000 0.3265 0.9452 +vn 0.1249 0.3016 0.9452 +vn 0.5546 0.2297 -0.7998 +vn -0.4245 0.4245 0.7998 +vn -0.4245 -0.4245 -0.7998 +vn -0.1249 -0.3016 -0.9452 +vn -0.2297 -0.5546 -0.7998 +vn 0.0000 -0.9528 -0.3034 +vn 0.3646 -0.8803 -0.3034 +vn 0.2309 0.2309 -0.9452 +vn 0.6738 0.6738 -0.3034 +vn 0.5767 0.5767 -0.5787 +vn -0.7535 -0.3121 0.5787 +vn -0.6738 -0.6738 0.3034 +vn -0.5767 -0.5767 0.5787 +vn 0.2309 0.2309 0.9452 +vn 0.2297 0.5546 0.7998 +vn 0.5767 0.5767 0.5787 +vn 0.3121 0.7535 0.5787 +vn 0.3646 0.8803 -0.3034 +vn -0.6738 0.6738 0.3034 +vn -0.8803 0.3646 0.3034 +vn -0.3016 -0.1249 0.9452 +vn -0.4245 -0.4245 0.7998 +vn -0.2309 -0.2309 0.9452 +vn -0.2297 -0.5546 0.7998 +vn -0.1249 -0.3016 0.9452 +vn 0.8803 0.3646 0.3034 +vn -0.5546 -0.2297 0.7998 +vn 0.3016 0.1249 -0.9452 +vn -0.7535 -0.3121 -0.5787 +vn 0.6738 0.6738 0.3034 +vn 0.3646 0.8803 0.3034 +vn 0.3016 0.1249 0.9452 +vn 0.3265 -0.0000 0.9452 +vn 0.5546 -0.2297 -0.7998 +vn 0.6003 -0.0000 -0.7998 +vn -0.6003 0.0000 0.7998 +vn 0.3016 -0.1249 -0.9452 +vn 0.3265 -0.0000 -0.9452 +vn -0.8803 -0.3646 0.3034 +vn -0.0000 0.8155 -0.5787 +vn 0.2297 0.5546 -0.7998 +vn -0.0000 0.6003 -0.7998 +vn -0.8155 0.0000 -0.5787 +vn -0.8155 0.0000 0.5787 +vn -0.0000 -0.8155 -0.5787 +vn 0.5767 -0.5767 -0.5787 +vn 0.3121 -0.7535 -0.5787 +vn 0.3016 -0.1249 0.9452 +vn -0.9528 -0.0000 -0.3034 +vn 0.6003 -0.0000 0.7998 +vn 0.5546 0.2297 0.7998 +vn -0.0000 -0.6003 -0.7998 +vn 0.1249 -0.3016 -0.9452 +vn 0.2297 -0.5546 -0.7998 +vn 0.9528 -0.0000 0.3034 +vn 0.8155 -0.0000 0.5787 +vn 0.7535 0.3121 0.5787 +vn 0.4245 -0.4245 -0.7998 +vn 0.2309 -0.2309 -0.9452 +vn -0.6738 0.6738 -0.3034 +vn -0.3121 0.7535 -0.5787 +vn -0.5767 0.5767 -0.5787 +vn -0.3121 0.7535 0.5787 +vn -0.5767 0.5767 0.5787 +vn 0.2309 -0.2309 0.9452 +vn 0.4245 -0.4245 0.7998 +vn 0.7535 -0.3121 0.5787 +vn 0.5546 -0.2297 0.7998 +vn -0.3646 0.8803 -0.3034 +vn 0.6738 -0.6738 0.3034 +vn 0.3646 -0.8803 0.3034 +vn -0.2297 0.5546 -0.7998 +vn -0.0000 0.9528 -0.3034 +vn 0.7535 -0.3121 -0.5787 +vn 0.4245 0.4245 -0.7998 +vn 0.0000 -0.3265 -0.9452 +vn 0.0000 -0.9528 0.3034 +vn -0.0000 -0.8155 0.5787 +vn -0.3121 -0.7535 0.5787 +vn -0.3646 -0.8803 0.3034 +vn 0.0000 -0.3265 0.9452 +vn 0.8803 -0.3646 0.3034 +vn -0.1249 0.3016 -0.9452 +vn 0.3121 -0.7535 0.5787 +vn -0.8803 0.3646 -0.3034 +vn -0.7535 0.3121 -0.5787 +vn -0.7535 0.3121 0.5787 +vn 0.9528 0.0000 -0.3034 +vn 0.8803 -0.3646 -0.3034 +vn -0.4245 0.4245 -0.7998 +vn -0.2309 0.2309 -0.9452 +vn -0.5546 0.2297 0.7998 +vn -0.2309 0.2309 0.9452 +vn -0.5546 0.2297 -0.7998 +vn -0.2309 -0.2309 -0.9452 +vn 0.3121 0.7535 -0.5787 +vn 0.6738 -0.6738 -0.3034 +vn -0.3265 -0.0000 -0.9452 +vn -0.0000 0.8155 0.5787 +vn -0.3265 -0.0000 0.9452 +vn -0.3016 0.1249 0.9452 +vn -0.3016 0.1249 -0.9452 +vn 0.5767 -0.5767 0.5787 +vn 0.4245 0.4245 0.7998 +vn -0.3646 0.8803 0.3034 +vn -0.9528 0.0000 0.3034 +s off +f 949/1141/825 946/1142/825 947/1143/825 +f 967/1144/826 962/1145/826 960/1146/826 +f 1030/1147/827 1025/1148/827 1028/1149/827 +f 961/1150/828 964/1151/828 966/1152/828 +f 1031/1153/829 1028/1149/829 1029/1154/829 +f 920/1155/830 925/1156/830 923/1157/830 +f 1516/1158/831 944/1159/831 941/1160/831 +f 1027/1161/832 1026/1162/832 1024/1163/832 +f 1331/1164/825 1332/1165/825 1329/1166/825 +f 1012/1167/827 1010/1168/827 1008/1169/827 +f 923/1170/826 919/1171/826 922/1172/826 +f 929/1173/825 926/1174/825 932/1175/825 +f 1013/1176/832 1008/1169/832 1010/1177/832 +f 924/1178/833 913/1179/833 915/1180/833 +f 918/1181/831 914/1182/831 916/1183/831 +f 999/1184/829 995/1185/829 997/1186/829 +f 991/1187/834 987/1188/834 989/1189/834 +f 1004/1190/835 1002/1191/835 1000/1192/835 +f 947/1143/831 946/1193/831 944/1159/831 +f 1516/1158/828 949/1141/828 947/1143/828 +f 948/1194/830 940/1195/830 934/1196/830 +f 971/1197/835 970/1198/835 968/1199/835 +f 943/1200/833 934/1201/833 941/1202/833 +f 1022/1203/836 1017/1204/836 1020/1205/836 +f 1007/1206/837 1003/1207/837 1005/1208/837 +f 1003/1207/830 1004/1190/830 1000/1192/830 +f 941/1209/831 945/1210/831 943/1200/831 +f 985/1211/830 989/1212/830 986/1213/830 +f 958/1214/833 954/1215/833 952/1216/833 +f 983/1217/830 978/1218/830 982/1219/830 +f 919/1171/838 914/1182/838 917/1220/838 +f 1029/1154/830 1025/1148/830 1027/1161/830 +f 951/1221/826 944/1222/826 946/1142/826 +f 1024/1223/825 1029/1154/825 1027/1161/825 +f 922/1172/826 917/1220/826 918/1224/826 +f 1016/1225/831 1022/1226/831 1023/1227/831 +f 989/1228/836 984/1229/836 986/1230/836 +f 934/1231/828 939/1232/828 942/1233/828 +f 994/1234/830 999/1184/830 997/1186/830 +f 1014/1235/830 1008/1169/830 1011/1236/830 +f 974/1237/839 969/1238/839 972/1239/839 +f 976/1240/829 981/1241/829 979/1242/829 +f 1019/1243/830 1020/1205/830 1017/1204/830 +f 968/1199/830 974/1244/830 975/1245/830 +f 1005/1246/839 1000/1192/839 1002/1247/839 +f 981/1241/831 977/1248/831 979/1242/831 +f 931/1249/833 913/1250/833 920/1251/833 +f 998/1252/831 992/1253/831 995/1185/831 +f 987/1188/831 988/1254/831 984/1229/831 +f 971/1197/831 972/1239/831 969/1238/831 +f 1023/1255/834 1020/1205/834 1021/1256/834 +f 937/1257/833 935/1258/833 933/1259/833 +f 950/1260/833 934/1261/833 940/1262/833 +f 1031/1153/831 1026/1263/831 1030/1264/831 +f 997/1265/827 992/1253/827 994/1266/827 +f 1019/1243/840 1018/1267/840 1016/1225/840 +f 944/1268/826 938/1269/826 945/1210/826 +f 1001/1270/841 1006/1271/841 1007/1272/841 +f 988/1254/840 986/1213/840 984/1229/840 +f 942/1273/826 936/1274/826 938/1269/826 +f 945/1210/838 935/1258/838 943/1200/838 +f 963/1275/838 960/1146/838 962/1145/838 +f 952/1216/828 955/1276/828 958/1214/828 +f 1016/1277/842 1021/1256/842 1019/1243/842 +f 993/1278/825 998/1252/825 999/1279/825 +f 1516/1158/829 940/1262/829 948/1194/829 +f 939/1232/830 933/1259/830 936/1274/830 +f 959/1280/826 957/1281/826 955/1276/826 +f 932/1175/826 923/1282/826 922/1283/826 +f 975/1284/837 972/1239/837 973/1285/837 +f 938/1269/838 933/1259/838 935/1258/838 +f 966/1152/833 965/1286/833 963/1287/833 +f 925/1156/838 915/1180/838 919/1171/838 +f 985/1288/842 990/1289/842 991/1290/842 +f 996/1291/832 994/1292/832 992/1253/832 +f 913/1293/828 918/1181/828 916/1183/828 +f 1009/1294/829 1014/1235/829 1015/1295/829 +f 1241/1296/831 1277/1297/831 1275/1298/831 +f 1238/1299/830 1270/1300/830 1271/1301/830 +f 1267/1302/830 1270/1303/830 1240/1304/830 +f 1244/1305/830 1271/1306/830 1274/1307/830 +f 1320/1308/825 1329/1166/825 1332/1165/825 +f 1209/1309/831 1178/1310/831 1180/1311/831 +f 1215/1312/830 1181/1313/830 1210/1314/830 +f 1284/1315/830 1249/1316/830 1282/1317/830 +f 1251/1318/831 1287/1319/831 1285/1320/831 +f 1250/1321/831 1279/1322/831 1248/1323/831 +f 1230/1324/830 1194/1325/830 1225/1326/830 +f 1249/1316/830 1280/1327/830 1282/1328/830 +f 1252/1329/831 1285/1330/831 1283/1331/831 +f 1206/1332/830 1179/1333/830 1177/1334/830 +f 1223/1335/830 1187/1336/830 1219/1337/830 +f 1223/1338/830 1192/1339/830 1190/1340/830 +f 1269/1341/831 1299/1342/831 1268/1343/831 +f 1255/1344/830 1286/1345/830 1288/1346/830 +f 1290/1347/830 1255/1344/830 1288/1348/830 +f 1224/1349/831 1191/1350/831 1193/1351/831 +f 1265/1352/830 1296/1353/830 1298/1354/830 +f 1257/1355/830 1292/1356/830 1259/1357/830 +f 1233/1358/830 1198/1359/830 1229/1360/830 +f 1195/1361/831 1228/1362/831 1227/1363/831 +f 1264/1364/831 1293/1365/831 1262/1366/831 +f 1197/1367/831 1231/1368/831 1228/1369/831 +f 1297/1370/831 1268/1343/831 1299/1371/831 +f 1218/1372/831 1186/1373/831 1188/1374/831 +f 1177/1334/830 1207/1375/830 1206/1376/830 +f 1267/1302/830 1298/1377/830 1300/1378/830 +f 1214/1379/830 1217/1380/830 1185/1381/830 +f 1203/1382/831 1237/1383/831 1234/1384/831 +f 1015/1385/825 1011/1236/825 1013/1386/825 +f 982/1387/832 977/1248/832 980/1388/832 +f 983/1217/825 980/1388/825 981/1241/825 +f 979/1242/827 978/1389/827 976/1390/827 +f 930/1391/829 921/1392/829 931/1249/829 +f 956/1393/838 953/1394/838 957/1395/838 +f 930/1391/828 929/1173/828 927/1396/828 +f 1242/1397/831 1273/1398/831 1239/1399/831 +f 1237/1400/831 1175/1401/831 1205/1402/831 +f 1272/1403/831 1241/1296/831 1275/1404/831 +f 1205/1405/831 1178/1310/831 1208/1406/831 +f 1210/1407/830 1179/1333/830 1211/1408/830 +f 1276/1409/830 1244/1305/830 1274/1410/830 +f 1212/1411/831 1180/1311/831 1182/1412/831 +f 1243/1413/830 1278/1414/830 1245/1415/830 +f 1185/1381/830 1215/1416/830 1214/1417/830 +f 1259/1357/830 1294/1418/830 1261/1419/830 +f 1213/1420/831 1186/1373/831 1216/1421/831 +f 1233/1422/830 1202/1423/830 1200/1424/830 +f 1258/1425/831 1291/1426/831 1289/1427/831 +f 1260/1428/831 1293/1429/831 1291/1430/831 +f 1287/1431/831 1258/1425/831 1289/1432/831 +f 1254/1433/830 1286/1434/830 1253/1435/830 +f 1221/1436/831 1191/1350/831 1222/1437/831 +f 1188/1374/831 1221/1438/831 1218/1439/831 +f 1219/1440/830 1217/1380/830 1220/1441/830 +f 1225/1442/830 1192/1339/830 1226/1443/830 +f 1281/1444/831 1252/1329/831 1283/1445/831 +f 1193/1351/831 1227/1446/831 1224/1447/831 +f 1198/1359/830 1230/1448/830 1229/1449/830 +f 1261/1419/830 1296/1450/830 1263/1451/830 +f 1264/1364/831 1297/1452/831 1295/1453/831 +f 1212/1454/831 1184/1455/831 1213/1456/831 +f 1231/1457/831 1201/1458/831 1232/1459/831 +f 1245/1415/830 1280/1460/830 1247/1461/830 +f 1232/1462/831 1203/1382/831 1234/1463/831 +f 1204/1464/830 1236/1465/830 1235/1466/830 +f 1269/1341/831 1273/1467/831 1301/1468/831 +f 1207/1469/830 1204/1464/830 1235/1470/830 +f 1320/1308/825 1321/1471/825 1322/1472/825 +f 1001/1473/831 1005/1474/831 1002/1191/831 +f 1367/1475/829 1369/1476/829 1355/1477/829 +f 1346/1478/825 1347/1479/825 1342/1480/825 +f 1010/1481/831 1015/1385/831 1013/1386/831 +f 1325/1482/827 1324/1483/827 1333/1484/827 +f 1357/1485/829 1358/1486/829 1359/1487/829 +f 1334/1488/825 1335/1489/825 1321/1471/825 +f 1323/1490/827 1333/1484/827 1324/1483/827 +f 1310/1491/829 1302/1492/829 1315/1493/829 +f 1307/1494/832 1308/1495/832 1309/1496/832 +f 1359/1487/829 1361/1497/829 1364/1498/829 +f 1304/1499/829 1306/1500/829 1319/1501/829 +f 1325/1482/827 1326/1502/827 1327/1503/827 +f 1302/1492/829 1303/1504/829 1304/1499/829 +f 1315/1493/829 1316/1505/829 1310/1491/829 +f 1330/1506/827 1328/1507/827 1326/1502/827 +f 1317/1508/832 1307/1494/832 1318/1509/832 +f 1341/1510/825 1340/1511/825 1349/1512/825 +f 1344/1513/827 1348/1514/827 1345/1515/827 +f 1354/1516/832 1356/1517/832 1368/1518/832 +f 1336/1519/827 1337/1520/827 1338/1521/827 +f 1341/1510/825 1342/1480/825 1343/1522/825 +f 1309/1496/832 1311/1523/832 1314/1524/832 +f 1365/1525/832 1360/1526/832 1366/1527/832 +f 1336/1519/827 1345/1515/827 1348/1514/827 +f 968/1528/841 973/1285/841 971/1197/841 +f 1366/1527/832 1352/1529/832 1365/1525/832 +f 1351/1530/825 1349/1512/825 1340/1511/825 +f 923/1531/830 930/1391/830 920/1532/830 +f 1352/1529/832 1353/1533/832 1354/1516/832 +f 1355/1477/829 1357/1485/829 1367/1475/829 +f 1318/1509/832 1305/1534/832 1317/1508/832 +f 1350/1535/827 1339/1536/827 1337/1520/827 +f 1164/1537/830 1125/1538/830 1126/1539/830 +f 1246/1540/831 1279/1541/831 1277/1542/831 +f 931/1543/830 920/1532/830 930/1391/830 +f 923/1531/830 926/1544/830 928/1545/830 +f 932/1546/831 922/1547/831 929/1173/831 +f 913/1548/831 921/1549/831 927/1396/831 +f 949/1141/830 934/1196/830 942/1550/830 +f 941/1160/831 950/1551/831 1516/1158/831 +f 913/1548/831 929/1173/831 922/1547/831 +f 942/1550/830 951/1552/830 949/1141/830 +f 1045/1553/830 1039/1554/830 1063/1555/830 +f 1072/1556/831 1064/1557/831 1065/1558/831 +f 1126/1539/830 1127/1559/830 1169/1560/830 +f 1169/1560/830 1164/1537/830 1126/1539/830 +f 1124/1561/830 1155/1562/830 1150/1563/830 +f 1150/1563/830 1145/1564/830 1125/1538/830 +f 1125/1538/830 1136/1565/830 1126/1539/830 +f 1124/1561/830 1150/1563/830 1125/1538/830 +f 916/1566/833 915/1180/833 913/1179/833 +f 1587/1567/843 1588/1568/843 1589/1569/843 +f 1872/1570/844 1867/1571/844 1870/1572/844 +f 1578/1573/845 1574/1574/845 1576/1575/845 +f 1631/1576/846 1621/1577/846 1625/1578/846 +f 1802/1579/847 1796/1580/847 1801/1581/847 +f 1549/1582/848 1542/1583/848 1539/1584/848 +f 1550/1585/848 1544/1586/848 1542/1583/848 +f 1546/1587/848 1551/1588/848 1544/1586/848 +f 1548/1589/848 1539/1584/848 1551/1588/848 +f 1888/1590/849 1884/1591/849 1882/1592/849 +f 1617/1593/850 1613/1594/850 1615/1595/850 +f 1598/1596/851 1600/1597/851 1594/1598/851 +f 1575/1599/852 1573/1600/852 1571/1601/852 +f 1574/1602/853 1572/1603/853 1575/1604/853 +f 1850/1605/849 1846/1606/849 1848/1607/849 +f 1861/1608/854 1864/1609/854 1866/1610/854 +f 1594/1611/855 1595/1612/855 1596/1613/855 +f 1557/1614/856 1566/1615/856 1567/1616/856 +f 1556/1617/856 1564/1618/856 1566/1615/856 +f 1564/1618/856 1562/1619/856 1565/1620/856 +f 1565/1620/856 1557/1614/856 1567/1616/856 +f 1729/1621/857 1724/1622/857 1722/1623/857 +f 1549/1624/852 1554/1625/852 1550/1626/852 +f 1596/1627/858 1601/1628/858 1597/1629/858 +f 1584/1630/846 1582/1631/846 1580/1632/846 +f 1539/1584/852 1540/1633/852 1541/1634/852 +f 1590/1635/850 1591/1636/850 1588/1637/850 +f 1562/1619/855 1558/1638/855 1560/1639/855 +f 1555/1640/859 1562/1619/859 1560/1641/859 +f 1563/1642/855 1564/1643/855 1565/1644/855 +f 1573/1600/860 1582/1645/860 1583/1646/860 +f 1572/1603/860 1580/1647/860 1582/1645/860 +f 1580/1647/860 1578/1573/860 1581/1648/860 +f 1581/1648/860 1573/1600/860 1583/1646/860 +f 1597/1649/843 1602/1650/843 1598/1651/843 +f 1569/1652/861 1565/1653/861 1567/1654/861 +f 1670/1655/862 1669/1656/862 1667/1657/862 +f 1846/1658/863 1847/1659/863 1843/1660/863 +f 1542/1583/864 1543/1661/864 1540/1662/864 +f 1551/1588/845 1543/1663/845 1544/1586/845 +f 1551/1588/865 1541/1664/865 1545/1665/865 +f 1546/1666/845 1547/1667/845 1548/1668/845 +f 1597/1669/866 1590/1635/866 1587/1567/866 +f 1598/1670/866 1592/1671/866 1590/1635/866 +f 1594/1672/866 1599/1673/866 1592/1671/866 +f 1596/1674/866 1587/1567/866 1599/1673/866 +f 1570/1675/843 1567/1676/843 1566/1677/843 +f 1548/1678/867 1553/1679/867 1549/1680/867 +f 1568/1681/868 1566/1682/868 1564/1683/868 +f 1655/1684/845 1653/1685/845 1651/1686/845 +f 1654/1687/867 1652/1688/867 1655/1689/867 +f 1658/1690/852 1654/1691/852 1656/1692/852 +f 1651/1693/869 1658/1690/869 1656/1694/869 +f 1659/1695/852 1660/1696/852 1661/1697/852 +f 1605/1698/870 1614/1699/870 1615/1700/870 +f 1604/1701/870 1612/1702/870 1614/1699/870 +f 1612/1702/870 1610/1703/870 1613/1704/870 +f 1613/1704/870 1605/1698/870 1615/1700/870 +f 1666/1705/845 1663/1706/845 1662/1707/845 +f 1665/1708/864 1661/1709/864 1663/1710/864 +f 1903/1711/871 1899/1712/871 1904/1713/871 +f 1635/1714/855 1636/1715/855 1637/1716/855 +f 1638/1717/861 1639/1718/861 1636/1719/861 +f 1647/1720/843 1639/1721/843 1640/1722/843 +f 1647/1720/868 1637/1723/868 1641/1724/868 +f 1642/1725/843 1643/1726/843 1644/1727/843 +f 1629/1728/872 1622/1729/872 1619/1730/872 +f 1630/1731/872 1624/1732/872 1622/1729/872 +f 1626/1733/872 1631/1576/872 1624/1732/872 +f 1628/1734/872 1619/1730/872 1631/1576/872 +f 1667/1657/873 1673/1735/873 1674/1736/873 +f 1644/1737/874 1649/1738/874 1645/1739/874 +f 1666/1705/865 1660/1740/865 1664/1741/865 +f 1843/1742/875 1844/1743/875 1845/1744/875 +f 1558/1745/874 1556/1617/874 1559/1746/874 +f 1610/1703/843 1606/1747/843 1608/1748/843 +f 1603/1749/851 1610/1703/851 1608/1750/851 +f 1579/1751/845 1580/1752/845 1581/1753/845 +f 1645/1754/876 1638/1717/876 1635/1714/876 +f 1646/1755/876 1640/1722/876 1638/1717/876 +f 1642/1756/876 1647/1720/876 1640/1722/876 +f 1644/1757/876 1635/1714/876 1647/1720/876 +f 1629/1758/845 1634/1759/845 1630/1760/845 +f 1559/1761/843 1557/1614/843 1555/1762/843 +f 1634/1759/877 1626/1763/877 1630/1764/877 +f 1619/1730/845 1620/1765/845 1621/1766/845 +f 1622/1729/877 1623/1767/877 1620/1768/877 +f 1741/1769/878 1739/1770/878 1744/1771/878 +f 1571/1772/879 1578/1573/879 1576/1773/879 +f 1626/1774/852 1627/1775/852 1628/1776/852 +f 1653/1685/880 1662/1777/880 1663/1778/880 +f 1652/1688/880 1660/1779/880 1662/1777/880 +f 1660/1779/880 1658/1690/880 1661/1780/880 +f 1661/1780/880 1653/1685/880 1663/1778/880 +f 1815/1781/878 1813/1782/878 1811/1783/878 +f 1645/1784/855 1650/1785/855 1646/1786/855 +f 1628/1787/853 1633/1788/853 1629/1789/853 +f 1618/1790/881 1612/1791/881 1616/1792/881 +f 1751/1793/862 1749/1794/862 1747/1795/862 +f 1748/1796/882 1752/1797/882 1749/1798/882 +f 1755/1799/882 1756/1800/882 1757/1801/882 +f 1678/1802/883 1667/1657/883 1677/1803/883 +f 1679/1804/883 1670/1655/883 1678/1802/883 +f 1675/1805/883 1672/1806/883 1679/1804/883 +f 1677/1803/883 1674/1736/883 1675/1805/883 +f 1770/1807/884 1769/1808/884 1768/1809/884 +f 1760/1810/885 1759/1811/885 1756/1812/885 +f 1822/1813/878 1819/1814/878 1821/1815/878 +f 1767/1816/886 1765/1817/886 1763/1818/886 +f 1763/1819/887 1766/1820/887 1767/1816/887 +f 1802/1821/888 1798/1822/888 1800/1823/888 +f 1753/1824/883 1747/1825/883 1750/1826/883 +f 1776/1827/889 1773/1828/889 1771/1829/889 +f 1693/1830/887 1683/1831/887 1692/1832/887 +f 1694/1833/887 1686/1834/887 1693/1830/887 +f 1690/1835/887 1695/1836/887 1694/1833/887 +f 1692/1832/887 1688/1837/887 1690/1835/887 +f 1650/1785/861 1642/1838/861 1646/1839/861 +f 1777/1840/886 1773/1841/886 1774/1842/886 +f 1783/1843/826 1781/1844/826 1779/1845/826 +f 1793/1846/890 1791/1847/890 1794/1848/890 +f 1786/1849/833 1782/1850/833 1784/1851/833 +f 1709/1852/890 1699/1853/890 1708/1854/890 +f 1710/1855/890 1711/1856/890 1709/1852/890 +f 1706/1857/890 1702/1858/890 1710/1855/890 +f 1708/1854/890 1704/1859/890 1706/1857/890 +f 1586/1860/852 1583/1861/852 1582/1862/852 +f 1708/1863/826 1712/1864/826 1709/1865/826 +f 1699/1853/891 1705/1866/891 1704/1859/891 +f 1713/1867/891 1708/1868/891 1706/1869/891 +f 1799/1870/892 1797/1871/892 1795/1872/892 +f 1931/1873/893 1934/1874/893 1932/1875/893 +f 1697/1876/894 1692/1877/894 1690/1878/894 +f 1631/1576/852 1623/1879/852 1624/1732/852 +f 1808/1880/847 1805/1881/847 1803/1882/847 +f 1725/1883/895 1715/1884/895 1724/1885/895 +f 1726/1886/895 1727/1887/895 1725/1883/895 +f 1726/1886/895 1720/1888/895 1718/1889/895 +f 1724/1885/895 1720/1888/895 1722/1890/895 +f 1692/1891/886 1696/1892/886 1693/1893/886 +f 1761/1894/883 1759/1895/883 1762/1896/883 +f 1806/1897/892 1803/1882/892 1805/1898/892 +f 1611/1899/843 1612/1900/843 1613/1901/843 +f 1550/1902/869 1552/1903/869 1546/1904/869 +f 1725/1905/892 1723/1906/892 1728/1907/892 +f 1813/1908/896 1818/1909/896 1816/1910/896 +f 1741/1911/897 1731/1912/897 1740/1913/897 +f 1742/1914/897 1743/1915/897 1741/1911/897 +f 1742/1914/897 1737/1916/897 1734/1917/897 +f 1740/1913/897 1737/1916/897 1738/1918/897 +f 1825/1919/897 1823/1920/897 1826/1921/897 +f 1817/1922/897 1811/1923/897 1814/1924/897 +f 1824/1925/898 1823/1926/898 1820/1927/898 +f 1755/1799/862 1758/1928/862 1761/1894/862 +f 1686/1834/886 1685/1929/886 1683/1831/886 +f 1672/1806/899 1668/1930/899 1670/1655/899 +f 1672/1806/885 1673/1931/885 1671/1932/885 +f 1810/1933/895 1806/1934/895 1807/1935/895 +f 1742/1936/898 1745/1937/898 1738/1938/898 +f 1748/1796/899 1758/1939/899 1757/1940/899 +f 1758/1939/899 1753/1824/899 1759/1941/899 +f 1759/1941/899 1754/1942/899 1756/1943/899 +f 1754/1942/899 1757/1940/899 1756/1943/899 +f 1680/1944/899 1679/1945/899 1678/1946/899 +f 1618/1790/855 1615/1947/855 1614/1948/855 +f 1676/1949/862 1678/1950/862 1677/1951/862 +f 1727/1887/892 1717/1952/892 1715/1884/892 +f 1607/1953/855 1605/1698/855 1603/1954/855 +f 1695/1836/884 1689/1955/884 1687/1956/884 +f 1683/1831/894 1689/1957/894 1688/1837/894 +f 1776/1827/884 1775/1958/884 1772/1959/884 +f 1764/1960/900 1774/1961/900 1773/1962/900 +f 1767/1816/900 1775/1963/900 1774/1961/900 +f 1766/1820/900 1772/1964/900 1775/1963/900 +f 1770/1807/900 1773/1962/900 1772/1964/900 +f 1775/1965/887 1777/1840/887 1774/1966/887 +f 1694/1967/900 1696/1892/900 1698/1968/900 +f 1694/1969/884 1697/1876/884 1690/1970/884 +f 1953/1971/901 1869/1972/901 1867/1973/901 +f 1702/1858/833 1705/1974/833 1703/1975/833 +f 1712/1864/902 1710/1976/902 1709/1977/902 +f 1734/1917/898 1736/1978/898 1735/1979/898 +f 1792/1980/903 1789/1981/903 1787/1982/903 +f 1711/1856/902 1703/1983/902 1700/1984/902 +f 1780/1985/902 1790/1986/902 1789/1987/902 +f 1783/1843/902 1791/1988/902 1790/1986/902 +f 1782/1850/902 1788/1989/902 1791/1988/902 +f 1785/1990/902 1789/1987/902 1788/1989/902 +f 1714/1991/833 1706/1992/833 1710/1993/833 +f 1794/1848/833 1788/1994/833 1792/1980/833 +f 1784/1995/890 1783/1843/890 1779/1996/890 +f 1780/1985/903 1786/1997/903 1781/1998/903 +f 1606/1999/858 1604/1701/858 1607/2000/858 +f 1716/2001/904 1718/1889/904 1719/2002/904 +f 1718/1889/888 1721/2003/888 1719/2004/888 +f 1715/1884/857 1721/2005/857 1720/1888/857 +f 1764/1960/889 1768/2006/889 1765/2007/889 +f 1796/1580/904 1806/2008/904 1805/2009/904 +f 1799/1870/904 1807/2010/904 1806/2008/904 +f 1807/2010/904 1801/1581/904 1804/2011/904 +f 1801/1581/904 1805/2009/904 1804/2011/904 +f 1725/2012/904 1730/2013/904 1726/2014/904 +f 1726/2015/888 1729/1621/888 1722/2016/888 +f 1795/2017/895 1798/1822/895 1799/1870/895 +f 1743/1915/878 1733/2018/878 1731/1912/878 +f 1732/2019/905 1734/1917/905 1735/2020/905 +f 1711/1856/826 1701/2021/826 1699/1853/826 +f 1737/1916/906 1733/2022/906 1736/2023/906 +f 1745/1937/906 1740/2024/906 1738/2025/906 +f 1812/2026/905 1822/2027/905 1821/2028/905 +f 1815/1781/905 1823/2029/905 1822/2027/905 +f 1823/2029/907 1818/1909/907 1820/2030/907 +f 1818/1909/905 1821/2028/905 1820/2030/905 +f 1744/1771/905 1742/2031/905 1741/2032/905 +f 1679/2033/885 1681/2034/885 1675/2035/885 +f 1599/1673/855 1591/2036/855 1592/1671/855 +f 1922/2037/849 1923/2038/849 1924/2039/849 +f 1909/2040/844 1910/2041/844 1907/2042/844 +f 1929/2043/893 1924/2044/893 1928/2045/893 +f 1913/2046/908 1914/2047/908 1915/2048/908 +f 1837/2049/909 1827/2050/909 1838/2051/909 +f 1837/2049/909 1839/2052/909 1830/2053/909 +f 1836/2054/909 1839/2052/909 1834/2055/909 +f 1836/2054/909 1827/2050/909 1832/2056/909 +f 1917/2057/901 1921/2058/901 1916/2059/901 +f 1915/2060/910 1920/2061/910 1917/2062/910 +f 1913/2063/854 1921/2058/854 1919/2064/854 +f 1859/2065/908 1860/2066/908 1861/2067/908 +f 1893/2068/911 1894/2069/911 1890/2070/911 +f 1929/2043/875 1926/2071/875 1927/2072/875 +f 1891/2073/912 1895/2074/912 1892/2075/912 +f 1824/1925/896 1821/2076/896 1819/1814/896 +f 1854/2077/913 1847/1659/913 1855/2078/913 +f 1847/1659/913 1852/2079/913 1855/2078/913 +f 1849/2080/913 1853/2081/913 1852/2079/913 +f 1850/1605/913 1854/2077/913 1853/2081/913 +f 1903/1711/849 1901/2082/849 1902/2083/849 +f 1898/2084/914 1901/2085/914 1905/2086/914 +f 1935/2087/915 1930/2088/915 1933/2089/915 +f 1890/2090/849 1891/2073/849 1892/2091/849 +f 1941/2092/916 1942/2093/916 1938/2094/916 +f 1941/2095/908 1943/2096/908 1944/2097/908 +f 1945/2098/917 1939/2099/917 1943/2096/917 +f 1954/2100/908 1948/2101/908 1946/2102/908 +f 1870/2103/918 1863/2104/918 1871/2105/918 +f 1871/2105/918 1865/2106/918 1869/2107/918 +f 1869/2107/918 1864/1609/918 1867/2108/918 +f 1867/2108/918 1860/2066/918 1870/2103/918 +f 1856/2109/875 1854/2110/875 1855/2111/875 +f 1951/2112/919 1946/2113/919 1949/2114/919 +f 1952/2115/901 1949/2116/901 1950/2117/901 +f 1906/2118/901 1907/2119/901 1908/2120/901 +f 1830/2053/919 1831/2121/919 1828/2122/919 +f 1897/2123/875 1893/2124/875 1895/2125/875 +f 1832/2056/920 1829/2126/920 1833/2127/920 +f 1936/2128/875 1932/2129/875 1930/2130/875 +f 1885/2131/921 1874/2132/921 1886/2133/921 +f 1885/2131/921 1879/2134/921 1877/2135/921 +f 1884/2136/921 1879/2134/921 1882/2137/921 +f 1884/2136/921 1874/2132/921 1881/2138/921 +f 1808/1880/888 1807/2139/888 1804/2140/888 +f 1934/2141/849 1935/2087/849 1933/2142/849 +f 1851/2143/922 1854/2144/922 1858/2145/922 +f 1948/2146/916 1952/2115/916 1950/2147/916 +f 1938/2148/901 1939/2099/901 1940/2149/901 +f 1862/2150/910 1863/2104/910 1859/2151/910 +f 1862/2152/901 1864/1609/901 1865/2106/901 +f 1816/2153/898 1817/1922/898 1814/2154/898 +f 1857/2155/849 1853/2156/849 1851/2143/849 +f 1901/2157/923 1894/2069/923 1902/2158/923 +f 1894/2069/923 1899/2159/923 1902/2158/923 +f 1896/2160/923 1900/2161/923 1899/2159/923 +f 1897/2123/923 1901/2157/923 1900/2161/923 +f 1886/2162/875 1887/2163/875 1885/2164/875 +f 1599/1673/881 1589/2165/881 1593/2166/881 +f 1856/2109/893 1852/2167/893 1857/2155/893 +f 1752/2168/885 1753/1824/885 1750/2169/885 +f 1925/2170/915 1926/2171/915 1923/2172/915 +f 1831/2173/901 1832/2056/901 1833/2174/901 +f 1874/2132/871 1880/2175/871 1881/2138/871 +f 1916/2176/924 1906/2118/924 1917/2177/924 +f 1916/2176/924 1918/2178/924 1909/2040/924 +f 1915/2179/924 1918/2178/924 1913/2180/924 +f 1915/2179/924 1906/2118/924 1911/2181/924 +f 1675/2182/873 1676/1949/873 1677/2183/873 +f 1585/2184/877 1581/2185/877 1583/2186/877 +f 1869/2187/910 1873/2188/910 1871/2189/910 +f 1874/2132/875 1875/2190/875 1876/2191/875 +f 1695/1836/900 1684/2192/900 1686/1834/900 +f 1881/2138/849 1878/2193/849 1879/2134/849 +f 1845/2194/922 1850/1605/922 1848/2195/922 +f 1904/1713/875 1900/2196/875 1898/2084/875 +f 1933/2197/925 1922/2037/925 1934/2198/925 +f 1933/2197/925 1927/2072/925 1925/2170/925 +f 1932/2199/925 1927/2072/925 1930/2200/925 +f 1932/2199/925 1922/2037/925 1929/2043/925 +f 1838/2201/908 1842/2202/908 1837/2203/908 +f 1883/2204/871 1886/2205/871 1884/2206/871 +f 1887/2163/912 1882/2207/912 1885/2208/912 +f 1827/2050/908 1828/2209/908 1829/2210/908 +f 1877/2135/912 1878/2211/912 1875/2212/912 +f 1910/2213/908 1911/2181/908 1912/2214/908 +f 1911/2181/926 1908/2215/926 1912/2216/926 +f 1834/2217/901 1835/2218/901 1836/2219/901 +f 1949/2220/927 1942/2093/927 1950/2221/927 +f 1950/2221/927 1944/2097/927 1948/2222/927 +f 1948/2222/927 1943/2096/927 1946/2223/927 +f 1946/2223/927 1939/2099/927 1949/2220/927 +f 1873/2188/908 1870/2224/908 1871/2225/908 +f 1836/2226/916 1841/2227/916 1838/2228/916 +f 1834/2229/917 1842/2202/917 1840/2230/917 +f 1549/1582/848 1550/1585/848 1542/1583/848 +f 1550/1585/848 1546/1587/848 1544/1586/848 +f 1546/1587/848 1548/1589/848 1551/1588/848 +f 1548/1589/848 1549/1582/848 1539/1584/848 +f 1557/1614/856 1556/1617/856 1566/1615/856 +f 1556/1617/856 1561/2231/856 1564/1618/856 +f 1564/1618/856 1561/2231/856 1562/1619/856 +f 1565/1620/856 1562/1619/856 1557/1614/856 +f 1573/1600/860 1572/1603/860 1582/1645/860 +f 1572/1603/860 1577/2232/860 1580/1647/860 +f 1580/1647/860 1577/2232/860 1578/1573/860 +f 1581/1648/860 1578/1573/860 1573/1600/860 +f 1597/1669/866 1598/1670/866 1590/1635/866 +f 1598/1670/866 1594/1672/866 1592/1671/866 +f 1594/1672/866 1596/1674/866 1599/1673/866 +f 1596/1674/866 1597/1669/866 1587/1567/866 +f 1605/1698/870 1604/1701/870 1614/1699/870 +f 1604/1701/870 1609/2233/870 1612/1702/870 +f 1612/1702/870 1609/2233/870 1610/1703/870 +f 1613/1704/870 1610/1703/870 1605/1698/870 +f 1629/1728/872 1630/1731/872 1622/1729/872 +f 1630/1731/872 1626/1733/872 1624/1732/872 +f 1626/1733/872 1628/1734/872 1631/1576/872 +f 1628/1734/872 1629/1728/872 1619/1730/872 +f 1645/1754/876 1646/1755/876 1638/1717/876 +f 1646/1755/876 1642/1756/876 1640/1722/876 +f 1642/1756/876 1644/1757/876 1647/1720/876 +f 1644/1757/876 1645/1754/876 1635/1714/876 +f 1653/1685/880 1652/1688/880 1662/1777/880 +f 1652/1688/880 1657/2234/880 1660/1779/880 +f 1660/1779/880 1657/2234/880 1658/1690/880 +f 1661/1780/880 1658/1690/880 1653/1685/880 +f 1678/1802/883 1670/1655/883 1667/1657/883 +f 1679/1804/883 1672/1806/883 1670/1655/883 +f 1675/1805/883 1674/1736/883 1672/1806/883 +f 1677/1803/883 1667/1657/883 1674/1736/883 +f 1693/1830/887 1686/1834/887 1683/1831/887 +f 1694/1833/887 1695/1836/887 1686/1834/887 +f 1690/1835/887 1688/1837/887 1695/1836/887 +f 1692/1832/887 1683/1831/887 1688/1837/887 +f 1709/1852/890 1711/1856/890 1699/1853/890 +f 1710/1855/890 1702/1858/890 1711/1856/890 +f 1706/1857/890 1704/1859/890 1702/1858/890 +f 1708/1854/890 1699/1853/890 1704/1859/890 +f 1725/1883/895 1727/1887/895 1715/1884/895 +f 1726/1886/895 1718/1889/895 1727/1887/895 +f 1726/1886/895 1722/1890/895 1720/1888/895 +f 1724/1885/895 1715/1884/895 1720/1888/895 +f 1741/1911/897 1743/1915/897 1731/1912/897 +f 1742/1914/897 1734/1917/897 1743/1915/897 +f 1742/1914/928 1738/1918/928 1737/1916/928 +f 1740/1913/897 1731/1912/897 1737/1916/897 +f 1748/1796/899 1751/1793/899 1758/1939/899 +f 1758/1939/899 1751/1793/899 1753/1824/899 +f 1759/1941/899 1753/1824/899 1754/1942/899 +f 1754/1942/899 1748/1796/899 1757/1940/899 +f 1764/1960/900 1767/1816/900 1774/1961/900 +f 1767/1816/900 1766/1820/900 1775/1963/900 +f 1766/1820/900 1770/1807/900 1772/1964/900 +f 1770/1807/900 1764/1960/900 1773/1962/900 +f 1780/1985/902 1783/1843/902 1790/1986/902 +f 1783/1843/902 1782/1850/902 1791/1988/902 +f 1782/1850/902 1785/1990/902 1788/1989/902 +f 1785/1990/902 1780/1985/902 1789/1987/902 +f 1796/1580/904 1799/1870/904 1806/2008/904 +f 1799/1870/904 1798/1822/904 1807/2010/904 +f 1807/2010/904 1798/1822/904 1801/1581/904 +f 1801/1581/904 1796/1580/904 1805/2009/904 +f 1812/2026/905 1815/1781/905 1822/2027/905 +f 1815/1781/905 1817/1922/905 1823/2029/905 +f 1823/2029/905 1817/1922/905 1818/1909/905 +f 1818/1909/905 1812/2026/905 1821/2028/905 +f 1837/2049/909 1830/2053/909 1827/2050/909 +f 1837/2049/909 1834/2055/909 1839/2052/909 +f 1836/2054/909 1832/2056/909 1839/2052/909 +f 1836/2054/909 1838/2051/909 1827/2050/909 +f 1854/2077/913 1844/1743/913 1847/1659/913 +f 1847/1659/913 1849/2080/913 1852/2079/913 +f 1849/2080/913 1850/1605/913 1853/2081/913 +f 1850/1605/913 1844/1743/913 1854/2077/913 +f 1870/2103/918 1860/2066/918 1863/2104/918 +f 1871/2105/918 1863/2104/918 1865/2106/918 +f 1869/2107/918 1865/2106/918 1864/1609/918 +f 1867/2108/918 1864/1609/918 1860/2066/918 +f 1885/2131/921 1877/2135/921 1874/2132/921 +f 1885/2131/921 1882/2137/921 1879/2134/921 +f 1884/2136/921 1881/2138/921 1879/2134/921 +f 1884/2136/921 1886/2133/921 1874/2132/921 +f 1901/2157/923 1891/2073/923 1894/2069/923 +f 1894/2069/923 1896/2160/923 1899/2159/923 +f 1896/2160/923 1897/2123/923 1900/2161/923 +f 1897/2123/923 1891/2073/923 1901/2157/923 +f 1916/2176/924 1909/2040/924 1906/2118/924 +f 1916/2176/924 1913/2180/924 1918/2178/924 +f 1915/2179/924 1911/2181/924 1918/2178/924 +f 1915/2179/924 1917/2177/924 1906/2118/924 +f 1933/2197/925 1925/2170/925 1922/2037/925 +f 1933/2197/925 1930/2200/925 1927/2072/925 +f 1932/2199/925 1929/2043/925 1927/2072/925 +f 1932/2199/925 1934/2198/925 1922/2037/925 +f 1949/2220/927 1939/2099/927 1942/2093/927 +f 1950/2221/927 1942/2093/927 1944/2097/927 +f 1948/2222/927 1944/2097/927 1943/2096/927 +f 1946/2223/927 1943/2096/927 1939/2099/927 +f 1793/1846/826 1789/2235/826 1790/2236/826 +f 1957/2237/830 1956/2238/830 1962/2239/830 +f 1956/2240/837 1959/2241/837 1955/2242/837 +f 1957/2237/839 1959/2243/839 1958/2244/839 +f 1956/2240/841 1961/2245/841 1962/2239/841 +f 1962/2239/835 1960/2246/835 1957/2237/835 +f 2062/2247/831 2146/2248/831 2015/2249/831 +f 1966/2250/831 2127/2251/831 1967/2252/831 +f 2047/2253/929 2071/2254/929 1996/2255/929 +f 2147/2256/929 2111/2257/929 2109/2258/929 +f 1978/2259/831 1979/2260/831 1980/2261/831 +f 2024/2262/835 2115/2263/835 2025/2264/835 +f 1988/2265/831 2148/2266/831 1986/2267/831 +f 2142/2268/929 1990/2269/929 2107/2270/929 +f 2045/2271/830 2116/2272/830 2118/2273/830 +f 1977/2274/831 2028/2275/831 1975/2276/831 +f 2022/2277/839 1978/2278/839 2020/2279/839 +f 2154/2280/841 2038/2281/841 2039/2282/841 +f 1971/2283/830 2050/2284/830 2051/2285/830 +f 2033/2286/831 2149/2287/831 2012/2288/831 +f 2036/2289/841 2042/2290/841 2037/2291/841 +f 2121/2292/839 2053/2293/839 2048/2294/839 +f 2052/2295/830 2059/2296/830 2060/2297/830 +f 2053/2298/831 2082/2299/831 2041/2300/831 +f 2152/2301/929 2131/2302/929 2129/2303/929 +f 2150/2304/929 2097/2305/929 2095/2306/929 +f 2048/2307/830 2119/2308/830 2121/2292/830 +f 2153/2309/841 2065/2310/841 2066/2311/841 +f 2025/2264/830 2034/2312/830 2013/2313/830 +f 2109/2258/830 2026/2314/830 2009/2315/830 +f 1968/2316/831 2024/2262/831 1970/2317/831 +f 2054/2318/839 2023/2319/839 2018/2320/839 +f 2097/2305/839 1994/2321/839 1987/2322/839 +f 2148/2266/929 2094/2323/929 2092/2324/929 +f 1982/2325/830 2092/2324/830 2094/2323/830 +f 2150/2304/841 2088/2326/841 1992/2327/841 +f 2134/2328/839 2076/2329/839 2072/2330/839 +f 2058/2331/830 2016/2332/830 2125/2333/830 +f 2028/2275/841 2085/2334/841 1975/2335/841 +f 2149/2287/835 2113/2336/835 2074/2337/835 +f 2035/2338/831 2036/2289/831 2037/2339/831 +f 1993/2340/830 2098/2341/830 2100/2342/830 +f 2111/2257/839 2030/2343/839 2026/2344/839 +f 2142/2268/841 1989/2345/841 2008/2346/841 +f 2127/2251/841 2044/2347/841 1967/2348/841 +f 2027/2349/831 2142/2268/831 2008/2350/831 +f 2079/2351/831 2084/2352/831 2055/2353/831 +f 1979/2260/841 2067/2354/841 1980/2355/841 +f 2023/2356/831 2032/2357/831 2007/2358/831 +f 2125/2333/839 2062/2359/839 2058/2360/839 +f 2069/2361/830 2129/2303/830 2131/2302/830 +f 1987/2362/830 2095/2306/830 2097/2305/830 +f 2061/2363/839 2128/2364/839 1966/2365/839 +f 2151/2366/841 2089/2367/841 1998/2368/841 +f 1969/2369/831 2102/2370/831 1963/2371/831 +f 2143/2372/929 1985/2373/929 1984/2374/929 +f 2061/2375/830 2145/2376/830 2126/2377/830 +f 1976/2378/830 1984/2374/830 1985/2373/830 +f 2113/2336/839 2033/2379/839 2029/2380/839 +f 2075/2381/830 2056/2382/830 2136/2383/830 +f 2083/2384/830 2144/2385/830 2139/2386/830 +f 2070/2387/830 1996/2255/830 2071/2254/830 +f 2144/2385/835 2141/2388/835 2139/2386/835 +f 2100/2342/839 2000/2389/839 1993/2390/839 +f 2046/2391/831 2047/2253/831 1995/2392/831 +f 1983/2393/831 2143/2372/831 1981/2394/831 +f 2074/2337/830 2029/2395/830 2011/2396/830 +f 2034/2397/839 2114/2398/839 1968/2399/839 +f 1973/2400/841 2043/2401/841 1974/2402/841 +f 2152/2301/841 2063/2403/841 2064/2404/841 +f 1965/2405/841 2144/2385/841 2068/2406/841 +f 2028/2275/929 2051/2285/929 2050/2284/929 +f 2146/2248/841 2017/2407/841 2015/2408/841 +f 2082/2299/929 2121/2292/929 2119/2308/929 +f 1964/2409/831 2140/2410/831 1965/2411/831 +f 2001/2412/830 2002/2413/830 2003/2414/830 +f 2032/2357/929 2054/2318/929 2106/2415/929 +f 2151/2366/835 2100/2342/835 2098/2341/835 +f 2049/2416/831 2154/2280/831 2039/2417/831 +f 1970/2418/841 2025/2264/841 2013/2419/841 +f 1999/2420/830 2077/2421/830 2101/2422/830 +f 2000/2423/831 2151/2366/831 1998/2424/831 +f 2072/2425/830 2132/2426/830 2134/2328/830 +f 2077/2421/835 2103/2427/835 2101/2422/835 +f 2104/2428/830 2014/2429/830 2004/2430/830 +f 1979/2260/835 2022/2277/835 2021/2431/835 +f 2105/2432/839 2019/2433/839 2014/2434/839 +f 2084/2352/841 2057/2435/841 2055/2436/841 +f 2081/2437/841 2004/2438/841 2005/2439/841 +f 2060/2297/839 2035/2440/839 2052/2441/839 +f 2143/2372/841 2086/2442/841 1981/2443/841 +f 2148/2266/841 2087/2444/841 1986/2445/841 +f 1994/2446/831 2150/2304/831 1992/2447/831 +f 2118/2273/839 2049/2448/839 2045/2449/839 +f 2071/2254/839 2046/2450/839 2070/2451/839 +f 2107/2270/830 1991/2452/830 1989/2453/830 +f 2136/2383/839 2079/2454/839 2075/2455/839 +f 2084/2352/929 2136/2383/929 2056/2382/929 +f 2003/2414/839 1972/2456/839 2001/2457/839 +f 2094/2323/839 1988/2458/839 1982/2459/839 +f 2154/2280/929 2118/2273/929 2116/2272/929 +f 2020/2460/830 2021/2431/830 2022/2277/830 +f 2102/2370/841 2078/2461/841 1963/2462/841 +f 1973/2400/929 2003/2414/929 2002/2413/929 +f 2082/2299/841 2040/2463/841 2041/2464/841 +f 2146/2248/835 2125/2333/835 2016/2332/835 +f 2032/2357/841 2006/2465/841 2007/2466/841 +f 1985/2373/839 1983/2467/839 1976/2468/839 +f 2139/2386/839 1964/2469/839 2083/2470/839 +f 2047/2253/841 1997/2471/841 1995/2472/841 +f 2145/2376/835 2128/2364/835 2126/2377/835 +f 2051/2285/839 1977/2473/839 1971/2474/839 +f 2036/2289/929 2060/2297/929 2059/2296/929 +f 1972/2475/831 1973/2400/831 1974/2476/831 +f 2101/2422/839 1969/2477/839 1999/2478/839 +f 2147/2256/841 2009/2479/841 2010/2480/841 +f 2149/2287/841 2011/2481/841 2012/2482/841 +f 2081/2437/929 2105/2432/929 2104/2428/929 +f 2153/2309/929 2134/2328/929 2132/2426/929 +f 2019/2483/831 2081/2437/831 2005/2484/831 +f 2073/2485/831 2152/2301/831 2064/2486/831 +f 2106/2415/830 2018/2487/830 2006/2488/830 +f 1990/2269/839 2027/2489/839 1991/2490/839 +f 2076/2491/831 2153/2309/831 2066/2492/831 +f 2131/2302/839 2073/2493/839 2069/2494/839 +f 2030/2495/831 2147/2256/831 2010/2496/831 +f 1904/1713/923 1905/2086/923 1903/1711/923 +f 1584/1630/860 1585/2184/860 1586/1860/860 +f 1568/1681/856 1569/1652/856 1570/1675/856 +f 1552/1903/848 1553/1679/848 1547/1667/848 +f 1664/1741/880 1665/1708/880 1666/1705/880 +f 1648/2497/876 1649/1738/876 1643/1726/876 +f 1616/1792/870 1617/1593/870 1618/1790/870 +f 1696/1892/887 1697/1876/887 1698/1968/887 +f 1600/1597/866 1601/1628/866 1595/1612/866 +f 1680/1944/883 1681/2034/883 1682/2498/883 +f 1776/1827/900 1777/1840/900 1778/2499/900 +f 1712/1864/890 1713/1867/890 1714/1991/890 +f 1792/1980/902 1793/1846/902 1794/1848/902 +f 1810/1933/904 1803/1882/904 1809/2500/904 +f 1947/2501/927 1951/2112/927 1952/2115/927 +f 1760/1810/899 1761/1894/899 1762/1896/899 +f 1730/2013/895 1723/1906/895 1729/1621/895 +f 1824/1925/905 1825/1919/905 1826/1921/905 +f 1632/2502/872 1633/1788/872 1627/1775/872 +f 1857/2155/913 1858/2145/913 1856/2109/913 +f 1868/2503/918 1872/1570/918 1873/2188/918 +f 1936/2128/925 1937/2504/925 1931/1873/925 +f 1840/2230/909 1841/2227/909 1835/2218/909 +f 1744/1771/897 1745/1937/897 1746/2505/897 +f 1888/1590/921 1889/2506/921 1883/2204/921 +f 1919/2064/924 1920/2061/924 1914/2047/924 +f 1960/2246/831 1955/2507/831 1959/2508/831 +f 2157/2509/837 2159/2510/837 2155/2511/837 +f 2155/2512/841 2160/2513/841 2156/2514/841 +f 2156/2515/835 2162/2516/835 2158/2517/835 +f 2158/2518/839 2161/2519/839 2157/2520/839 +f 2164/2521/835 2170/2522/835 2166/2523/835 +f 2166/2524/839 2169/2525/839 2165/2526/839 +f 2165/2527/837 2167/2528/837 2163/2529/837 +f 2163/2530/841 2168/2531/841 2164/2532/841 +f 2159/2510/831 2162/2516/831 2160/2513/831 +f 2168/2531/831 2169/2525/831 2170/2522/831 +f 949/1141/825 951/1221/825 946/1142/825 +f 967/1144/826 961/1150/826 962/1145/826 +f 1030/1147/827 1026/2533/827 1025/1148/827 +f 961/1150/828 967/1144/828 964/1151/828 +f 1031/1153/829 1030/1264/829 1028/1149/829 +f 920/1155/830 924/1178/830 925/1156/830 +f 1516/1158/831 947/1143/831 944/1159/831 +f 1027/1161/832 1025/1148/832 1026/1162/832 +f 1331/1164/825 1530/2534/825 1332/1165/825 +f 1012/1167/827 1009/2535/827 1010/1168/827 +f 923/1170/826 925/1156/826 919/1171/826 +f 929/1173/825 928/1545/825 926/1174/825 +f 1013/1176/832 1011/1236/832 1008/1169/832 +f 924/1178/833 920/2536/833 913/1179/833 +f 918/1181/831 917/1220/831 914/1182/831 +f 999/1184/829 998/1252/829 995/1185/829 +f 991/1187/834 990/1289/834 987/1188/834 +f 1004/1190/835 1001/1473/835 1002/1191/835 +f 1516/1158/828 948/1194/828 949/1141/828 +f 971/1197/835 969/1238/835 970/1198/835 +f 943/1200/833 935/1258/833 934/1201/833 +f 1022/1203/836 1018/2537/836 1017/1204/836 +f 1007/1206/837 1006/1271/837 1003/1207/837 +f 1003/1207/830 1006/1271/830 1004/1190/830 +f 941/1209/831 944/2538/831 945/1210/831 +f 985/1211/830 991/2539/830 989/1212/830 +f 958/1214/833 953/1394/833 954/1215/833 +f 983/1217/830 976/2540/830 978/1218/830 +f 919/1171/838 915/1180/838 914/1182/838 +f 1029/1154/830 1028/1149/830 1025/1148/830 +f 951/1221/826 942/2541/826 944/1222/826 +f 1024/1223/825 1031/2542/825 1029/1154/825 +f 922/1172/826 919/1171/826 917/1220/826 +f 1016/1225/831 1018/1267/831 1022/1226/831 +f 989/1228/836 987/1188/836 984/1229/836 +f 934/1231/828 937/2543/828 939/1232/828 +f 994/1234/830 993/2544/830 999/1184/830 +f 1014/1235/830 1012/1167/830 1008/1169/830 +f 974/1237/839 970/2545/839 969/1238/839 +f 976/1240/829 983/2546/829 981/1241/829 +f 1019/1243/830 1021/1256/830 1020/1205/830 +f 968/1199/830 970/1198/830 974/1244/830 +f 1005/1246/839 1003/1207/839 1000/1192/839 +f 981/1241/831 980/1388/831 977/1248/831 +f 931/1249/833 921/1392/833 913/1250/833 +f 998/1252/831 996/1291/831 992/1253/831 +f 987/1188/831 990/1289/831 988/1254/831 +f 971/1197/831 973/1285/831 972/1239/831 +f 1023/1255/834 1022/2547/834 1020/1205/834 +f 937/1257/833 934/1201/833 935/1258/833 +f 950/1260/833 941/2548/833 934/1261/833 +f 1031/1153/831 1024/2549/831 1026/1263/831 +f 997/1265/827 995/1185/827 992/1253/827 +f 1019/1243/840 1017/1204/840 1018/1267/840 +f 944/1268/826 942/1273/826 938/1269/826 +f 1001/1270/841 1004/1190/841 1006/1271/841 +f 988/1254/840 985/1211/840 986/1213/840 +f 942/1273/826 939/2550/826 936/1274/826 +f 945/1210/838 938/1269/838 935/1258/838 +f 963/1275/838 965/2551/838 960/1146/838 +f 952/1216/828 959/1280/828 955/1276/828 +f 1016/1277/842 1023/2552/842 1021/1256/842 +f 993/1278/825 996/1291/825 998/1252/825 +f 1516/1158/829 950/1260/829 940/1262/829 +f 939/1232/830 937/2543/830 933/1259/830 +f 959/1280/826 956/2553/826 957/1281/826 +f 932/1175/826 926/1174/826 923/1282/826 +f 975/1284/837 974/2554/837 972/1239/837 +f 938/1269/838 936/1274/838 933/1259/838 +f 966/1152/833 964/1151/833 965/1286/833 +f 925/1156/838 924/1178/838 915/1180/838 +f 985/1288/842 988/1254/842 990/1289/842 +f 996/1291/832 993/2555/832 994/1292/832 +f 913/1293/828 922/2556/828 918/1181/828 +f 1009/1294/829 1012/1167/829 1014/1235/829 +f 1241/1296/831 1246/1540/831 1277/1297/831 +f 1238/1299/830 1240/1304/830 1270/1300/830 +f 1267/1302/830 1300/2557/830 1270/1303/830 +f 1244/1305/830 1238/1299/830 1271/1306/830 +f 1320/1308/825 1322/1472/825 1329/1166/825 +f 1209/1309/831 1208/2558/831 1178/1310/831 +f 1215/1312/830 1183/2559/830 1181/1313/830 +f 1284/1315/830 1254/1433/830 1249/1316/830 +f 1251/1318/831 1256/2560/831 1287/1319/831 +f 1250/1321/831 1281/2561/831 1279/1322/831 +f 1230/1324/830 1196/2562/830 1194/1325/830 +f 1249/1316/830 1247/1461/830 1280/1327/830 +f 1252/1329/831 1251/1318/831 1285/1330/831 +f 1206/1332/830 1211/2563/830 1179/1333/830 +f 1223/1335/830 1190/2564/830 1187/1336/830 +f 1223/1338/830 1226/2565/830 1192/1339/830 +f 1269/1341/831 1301/2566/831 1299/1342/831 +f 1255/1344/830 1253/2567/830 1286/1345/830 +f 1290/1347/830 1257/1355/830 1255/1344/830 +f 1224/1349/831 1222/2568/831 1191/1350/831 +f 1265/1352/830 1263/1451/830 1296/1353/830 +f 1257/1355/830 1290/2569/830 1292/1356/830 +f 1233/1358/830 1200/1424/830 1198/1359/830 +f 1195/1361/831 1197/1367/831 1228/1362/831 +f 1264/1364/831 1295/2570/831 1293/1365/831 +f 1197/1367/831 1199/2571/831 1231/1368/831 +f 1297/1370/831 1266/2572/831 1268/1343/831 +f 1218/1372/831 1216/2573/831 1186/1373/831 +f 1177/1334/830 1174/2574/830 1207/1375/830 +f 1267/1302/830 1265/1352/830 1298/1377/830 +f 1214/1379/830 1220/2575/830 1217/1380/830 +f 1203/1382/831 1176/2576/831 1237/1383/831 +f 1015/1385/825 1014/1235/825 1011/1236/825 +f 982/1387/832 978/2577/832 977/1248/832 +f 983/1217/825 982/1219/825 980/1388/825 +f 979/1242/827 977/1248/827 978/1389/827 +f 930/1391/829 927/1396/829 921/1392/829 +f 956/1393/838 954/1215/838 953/1394/838 +f 930/1391/828 928/1545/828 929/1173/828 +f 1242/1397/831 1272/2578/831 1273/1398/831 +f 1237/1400/831 1176/2576/831 1175/1401/831 +f 1272/1403/831 1242/1397/831 1241/1296/831 +f 1205/1405/831 1175/1401/831 1178/1310/831 +f 1210/1407/830 1181/1313/830 1179/1333/830 +f 1276/1409/830 1243/1413/830 1244/1305/830 +f 1212/1411/831 1209/2579/831 1180/1311/831 +f 1243/1413/830 1276/2580/830 1278/1414/830 +f 1185/1381/830 1183/2559/830 1215/1416/830 +f 1259/1357/830 1292/2581/830 1294/1418/830 +f 1213/1420/831 1184/1455/831 1186/1373/831 +f 1233/1422/830 1236/2582/830 1202/1423/830 +f 1258/1425/831 1260/1428/831 1291/1426/831 +f 1260/1428/831 1262/1366/831 1293/1429/831 +f 1287/1431/831 1256/2583/831 1258/1425/831 +f 1254/1433/830 1284/2584/830 1286/1434/830 +f 1221/1436/831 1189/2585/831 1191/1350/831 +f 1188/1374/831 1189/2586/831 1221/1438/831 +f 1219/1440/830 1187/1336/830 1217/1380/830 +f 1225/1442/830 1194/1325/830 1192/1339/830 +f 1281/1444/831 1250/1321/831 1252/1329/831 +f 1193/1351/831 1195/1361/831 1227/1446/831 +f 1198/1359/830 1196/2562/830 1230/1448/830 +f 1261/1419/830 1294/2587/830 1296/1450/830 +f 1264/1364/831 1266/2572/831 1297/1452/831 +f 1212/1454/831 1182/1412/831 1184/1455/831 +f 1231/1457/831 1199/2571/831 1201/1458/831 +f 1245/1415/830 1278/2588/830 1280/1460/830 +f 1232/1462/831 1201/1458/831 1203/1382/831 +f 1204/1464/830 1202/1423/830 1236/1465/830 +f 1269/1341/831 1239/1399/831 1273/1467/831 +f 1207/1469/830 1174/2574/830 1204/1464/830 +f 1320/1308/825 1334/1488/825 1321/1471/825 +f 1001/1473/831 1007/2589/831 1005/1474/831 +f 1367/1475/829 1538/2590/829 1369/1476/829 +f 1346/1478/825 1533/2591/825 1347/1479/825 +f 1010/1481/831 1009/2592/831 1015/1385/831 +f 1325/1482/827 1327/1503/827 1324/1483/827 +f 1357/1485/829 1363/2593/829 1358/1486/829 +f 1334/1488/825 1531/2594/825 1335/1489/825 +f 1323/1490/827 1532/2595/827 1333/1484/827 +f 1310/1491/829 1312/2596/829 1302/1492/829 +f 1307/1494/832 1313/2597/832 1308/1495/832 +f 1359/1487/829 1358/1486/829 1361/1497/829 +f 1304/1499/829 1303/1504/829 1306/1500/829 +f 1325/1482/827 1330/1506/827 1326/1502/827 +f 1302/1492/829 1312/2596/829 1303/1504/829 +f 1315/1493/829 1527/2598/829 1316/1505/829 +f 1330/1506/827 1529/2599/827 1328/1507/827 +f 1317/1508/832 1313/2597/832 1307/1494/832 +f 1341/1510/825 1343/1522/825 1340/1511/825 +f 1344/1513/827 1534/2600/827 1348/1514/827 +f 1354/1516/832 1353/1533/832 1356/1517/832 +f 1336/1519/827 1350/1535/827 1337/1520/827 +f 1341/1510/825 1346/1478/825 1342/1480/825 +f 1309/1496/832 1308/1495/832 1311/1523/832 +f 1365/1525/832 1537/2601/832 1360/1526/832 +f 1336/1519/827 1338/1521/827 1345/1515/827 +f 968/1528/841 975/2602/841 973/1285/841 +f 1366/1527/832 1362/2603/832 1352/1529/832 +f 1351/1530/825 1536/2604/825 1349/1512/825 +f 923/1531/830 928/1545/830 930/1391/830 +f 1352/1529/832 1362/2603/832 1353/1533/832 +f 1355/1477/829 1363/2593/829 1357/1485/829 +f 1318/1509/832 1528/2605/832 1305/1534/832 +f 1350/1535/827 1535/2606/827 1339/1536/827 +f 1164/1537/830 1124/1561/830 1125/1538/830 +f 1246/1540/831 1248/1323/831 1279/1541/831 +f 949/1141/830 948/1194/830 934/1196/830 +f 913/1548/831 927/1396/831 929/1173/831 +f 1054/2607/830 1052/2608/830 1050/2609/830 +f 1050/2609/830 1048/2610/830 1045/1553/830 +f 1045/1553/830 1060/2611/830 1043/2612/830 +f 1043/2612/830 1041/2613/830 1045/1553/830 +f 1041/2613/830 1039/1554/830 1045/1553/830 +f 1039/1554/830 1037/2614/830 1063/1555/830 +f 1037/2614/830 1035/2615/830 1063/1555/830 +f 1035/2615/830 1032/2616/830 1063/1555/830 +f 1063/1555/830 1061/2617/830 1054/2607/830 +f 1061/2617/830 1058/2618/830 1054/2607/830 +f 1058/2618/830 1056/2619/830 1054/2607/830 +f 1054/2607/830 1050/2609/830 1045/1553/830 +f 1054/2607/830 1045/1553/830 1063/1555/830 +f 1066/2620/831 1111/2621/831 1072/1556/831 +f 1111/2621/831 1117/2622/831 1072/1556/831 +f 1117/2622/831 1067/2623/831 1072/1556/831 +f 1072/1556/831 1078/2624/831 1064/1557/831 +f 1064/1557/831 1089/2625/831 1065/1558/831 +f 1065/1558/831 1100/2626/831 1072/1556/831 +f 1100/2626/831 1066/2620/831 1072/1556/831 +f 916/1566/833 914/1182/833 915/1180/833 +f 1587/1567/843 1590/1635/843 1588/1568/843 +f 1872/1570/854 1953/1971/854 1867/1571/854 +f 1578/1573/845 1577/2232/845 1574/1574/845 +f 1631/1576/853 1619/1730/853 1621/1577/853 +f 1802/1579/847 1797/2627/847 1796/1580/847 +f 1888/1590/849 1883/2204/849 1884/1591/849 +f 1617/1593/851 1611/1899/851 1613/1594/851 +f 1598/1596/851 1602/1650/851 1600/1597/851 +f 1575/1599/852 1572/1603/852 1573/1600/852 +f 1574/1602/853 1577/2232/853 1572/1603/853 +f 1850/1605/849 1849/2080/849 1846/1606/849 +f 1861/1608/844 1860/2066/844 1864/1609/844 +f 1594/1611/855 1600/1597/855 1595/1612/855 +f 1729/1621/857 1723/1906/857 1724/1622/857 +f 1549/1624/852 1553/1679/852 1554/1625/852 +f 1596/1627/881 1595/1612/881 1601/1628/881 +f 1584/1630/846 1586/1860/846 1582/1631/846 +f 1539/1584/852 1542/1583/852 1540/1633/852 +f 1590/1635/850 1592/1671/850 1591/1636/850 +f 1562/1619/855 1561/2231/855 1558/1638/855 +f 1555/1640/861 1557/1614/861 1562/1619/861 +f 1563/1642/855 1568/1681/855 1564/1643/855 +f 1597/1649/843 1601/1628/843 1602/1650/843 +f 1569/1652/859 1563/1642/859 1565/1653/859 +f 1670/1655/862 1668/2628/862 1669/1656/862 +f 1846/1658/863 1849/2080/863 1847/1659/863 +f 1542/1583/864 1544/1586/864 1543/1661/864 +f 1551/1588/845 1545/2629/845 1543/1663/845 +f 1551/1588/867 1539/1584/867 1541/1664/867 +f 1546/1666/845 1552/1903/845 1547/1667/845 +f 1570/1675/843 1569/1652/843 1567/1676/843 +f 1548/1678/865 1547/1667/865 1553/1679/865 +f 1568/1681/868 1570/1675/868 1566/1682/868 +f 1655/1684/845 1652/1688/845 1653/1685/845 +f 1654/1687/867 1657/2234/867 1652/1688/867 +f 1658/1690/852 1657/2234/852 1654/1691/852 +f 1651/1693/864 1653/1685/864 1658/1690/864 +f 1659/1695/852 1664/1741/852 1660/1696/852 +f 1666/1705/845 1665/1708/845 1663/1706/845 +f 1665/1708/869 1659/1695/869 1661/1709/869 +f 1903/1711/911 1902/2630/911 1899/1712/911 +f 1635/1714/855 1638/1717/855 1636/1715/855 +f 1638/1717/861 1640/1722/861 1639/1718/861 +f 1647/1720/843 1641/2631/843 1639/1721/843 +f 1647/1720/874 1635/1714/874 1637/1723/874 +f 1642/1725/843 1648/2497/843 1643/1726/843 +f 1667/1657/873 1669/2632/873 1673/1735/873 +f 1644/1737/868 1643/1726/868 1649/1738/868 +f 1666/1705/867 1662/2633/867 1660/1740/867 +f 1843/1742/875 1847/1659/875 1844/1743/875 +f 1558/1745/874 1561/2231/874 1556/1617/874 +f 1610/1703/843 1609/2233/843 1606/1747/843 +f 1603/1749/850 1605/1698/850 1610/1703/850 +f 1579/1751/845 1584/1630/845 1580/1752/845 +f 1629/1758/845 1633/1788/845 1634/1759/845 +f 1559/1761/843 1556/1617/843 1557/1614/843 +f 1634/1759/879 1632/2502/879 1626/1763/879 +f 1619/1730/845 1622/1729/845 1620/1765/845 +f 1622/1729/877 1624/1732/877 1623/1767/877 +f 1741/1769/878 1740/2634/878 1739/1770/878 +f 1571/1772/877 1573/1600/877 1578/1573/877 +f 1626/1774/852 1632/2502/852 1627/1775/852 +f 1815/1781/878 1812/2026/878 1813/1782/878 +f 1645/1784/855 1649/1738/855 1650/1785/855 +f 1628/1787/846 1627/1775/846 1633/1788/846 +f 1618/1790/858 1614/2635/858 1612/1791/858 +f 1751/1793/862 1748/1796/862 1749/1794/862 +f 1748/1796/882 1754/1942/882 1752/1797/882 +f 1755/1799/882 1760/1810/882 1756/1800/882 +f 1770/1807/884 1766/1820/884 1769/1808/884 +f 1760/1810/885 1762/1896/885 1759/1811/885 +f 1822/1813/878 1825/1919/878 1819/1814/878 +f 1767/1816/886 1764/1960/886 1765/1817/886 +f 1763/1819/887 1769/2636/887 1766/1820/887 +f 1802/1821/888 1801/1581/888 1798/1822/888 +f 1753/1824/883 1751/1793/883 1747/1825/883 +f 1776/1827/889 1772/2637/889 1773/1828/889 +f 1650/1785/859 1648/2497/859 1642/1838/859 +f 1777/1840/886 1771/1829/886 1773/1841/886 +f 1783/1843/826 1780/1985/826 1781/1844/826 +f 1793/1846/890 1790/2638/890 1791/1847/890 +f 1786/1849/833 1785/1990/833 1782/1850/833 +f 1586/1860/852 1585/2184/852 1583/1861/852 +f 1708/1863/826 1707/2639/826 1712/1864/826 +f 1699/1853/891 1701/2640/891 1705/1866/891 +f 1713/1867/891 1707/2639/891 1708/1868/891 +f 1799/1870/892 1796/1580/892 1797/1871/892 +f 1931/1873/893 1937/2504/893 1934/1874/893 +f 1697/1876/894 1691/2641/894 1692/1877/894 +f 1631/1576/852 1625/2642/852 1623/1879/852 +f 1808/1880/847 1804/2643/847 1805/1881/847 +f 1692/1891/886 1691/2641/886 1696/1892/886 +f 1761/1894/883 1758/2644/883 1759/1895/883 +f 1806/1897/892 1809/2500/892 1803/1882/892 +f 1611/1899/843 1616/1792/843 1612/1900/843 +f 1550/1902/869 1554/1625/869 1552/1903/869 +f 1725/1905/892 1724/2645/892 1723/1906/892 +f 1813/1908/896 1812/2026/896 1818/1909/896 +f 1825/1919/897 1822/2646/897 1823/1920/897 +f 1817/1922/897 1815/1781/897 1811/1923/897 +f 1824/1925/898 1826/1921/898 1823/1926/898 +f 1755/1799/862 1757/2647/862 1758/1928/862 +f 1686/1834/886 1684/2648/886 1685/1929/886 +f 1672/1806/899 1671/2649/899 1668/1930/899 +f 1672/1806/885 1674/1736/885 1673/1931/885 +f 1810/1933/895 1809/2500/895 1806/1934/895 +f 1742/1936/898 1746/2505/898 1745/1937/898 +f 1680/1944/899 1682/2498/899 1679/1945/899 +f 1618/1790/855 1617/1593/855 1615/1947/855 +f 1676/1949/862 1680/1944/862 1678/1950/862 +f 1727/1887/892 1716/2650/892 1717/1952/892 +f 1607/1953/855 1604/1701/855 1605/1698/855 +f 1695/1836/884 1688/1837/884 1689/1955/884 +f 1683/1831/894 1685/2651/894 1689/1957/894 +f 1776/1827/884 1778/2499/884 1775/1958/884 +f 1775/1965/887 1778/2499/887 1777/1840/887 +f 1694/1967/900 1693/2652/900 1696/1892/900 +f 1694/1969/884 1698/1968/884 1697/1876/884 +f 1953/1971/901 1868/2503/901 1869/1972/901 +f 1702/1858/833 1704/1859/833 1705/1974/833 +f 1712/1864/902 1714/1991/902 1710/1976/902 +f 1734/1917/898 1737/1916/898 1736/1978/898 +f 1792/1980/903 1788/2653/903 1789/1981/903 +f 1711/1856/902 1702/1858/902 1703/1983/902 +f 1714/1991/833 1713/1867/833 1706/1992/833 +f 1794/1848/833 1791/2654/833 1788/1994/833 +f 1784/1995/890 1782/1850/890 1783/1843/890 +f 1780/1985/903 1785/1990/903 1786/1997/903 +f 1606/1999/858 1609/2233/858 1604/1701/858 +f 1716/2001/904 1727/1887/904 1718/1889/904 +f 1718/1889/888 1720/1888/888 1721/2003/888 +f 1715/1884/857 1717/2655/857 1721/2005/857 +f 1764/1960/889 1770/1807/889 1768/2006/889 +f 1725/2012/904 1728/1907/904 1730/2013/904 +f 1726/2015/888 1730/2013/888 1729/1621/888 +f 1795/2017/895 1800/2656/895 1798/1822/895 +f 1743/1915/878 1732/2657/878 1733/2018/878 +f 1732/2019/905 1743/1915/905 1734/1917/905 +f 1711/1856/826 1700/2658/826 1701/2021/826 +f 1737/1916/906 1731/1912/906 1733/2022/906 +f 1745/1937/906 1739/1770/906 1740/2024/906 +f 1744/1771/905 1746/2505/905 1742/2031/905 +f 1679/2033/885 1682/2498/885 1681/2034/885 +f 1599/1673/855 1593/2659/855 1591/2036/855 +f 1922/2037/849 1925/2170/849 1923/2038/849 +f 1909/2040/844 1918/2178/844 1910/2041/844 +f 1929/2043/863 1922/2037/863 1924/2044/863 +f 1913/2046/908 1919/2064/908 1914/2047/908 +f 1917/2057/901 1920/2061/901 1921/2058/901 +f 1915/2060/926 1914/2047/926 1920/2061/926 +f 1913/2063/844 1916/2660/844 1921/2058/844 +f 1859/2065/908 1863/2104/908 1860/2066/908 +f 1893/2068/911 1896/2160/911 1894/2069/911 +f 1929/2043/875 1928/2661/875 1926/2071/875 +f 1891/2073/914 1897/2123/914 1895/2074/914 +f 1824/1925/896 1820/2662/896 1821/2076/896 +f 1903/1711/849 1905/2086/849 1901/2082/849 +f 1898/2084/914 1900/2663/914 1901/2085/914 +f 1935/2087/922 1936/2128/922 1930/2088/922 +f 1890/2090/849 1894/2069/849 1891/2073/849 +f 1941/2092/916 1944/2097/916 1942/2093/916 +f 1941/2095/908 1945/2664/908 1943/2096/908 +f 1945/2098/919 1940/2665/919 1939/2099/919 +f 1954/2100/908 1947/2501/908 1948/2101/908 +f 1856/2109/875 1858/2145/875 1854/2110/875 +f 1951/2112/917 1954/2100/917 1946/2113/917 +f 1952/2115/901 1951/2112/901 1949/2116/901 +f 1906/2118/901 1909/2040/901 1907/2119/901 +f 1830/2053/919 1839/2052/919 1831/2121/919 +f 1897/2123/875 1896/2160/875 1893/2124/875 +f 1832/2056/916 1827/2050/916 1829/2126/916 +f 1936/2128/875 1931/1873/875 1932/2129/875 +f 1808/1880/888 1810/1933/888 1807/2139/888 +f 1934/2141/849 1937/2504/849 1935/2087/849 +f 1851/2143/922 1853/2666/922 1854/2144/922 +f 1948/2146/920 1947/2501/920 1952/2115/920 +f 1938/2148/901 1942/2093/901 1939/2099/901 +f 1862/2150/910 1865/2106/910 1863/2104/910 +f 1862/2152/901 1866/2667/901 1864/1609/901 +f 1816/2153/898 1818/1909/898 1817/1922/898 +f 1857/2155/849 1852/2668/849 1853/2156/849 +f 1886/2162/875 1889/2506/875 1887/2163/875 +f 1599/1673/858 1587/1567/858 1589/2165/858 +f 1856/2109/863 1855/2669/863 1852/2167/863 +f 1752/2168/885 1754/1942/885 1753/1824/885 +f 1925/2170/915 1927/2072/915 1926/2171/915 +f 1831/2173/901 1839/2052/901 1832/2056/901 +f 1874/2132/911 1876/2670/911 1880/2175/911 +f 1675/2182/873 1681/2034/873 1676/1949/873 +f 1585/2184/879 1579/1751/879 1581/2185/879 +f 1869/2187/926 1868/2503/926 1873/2188/926 +f 1874/2132/875 1877/2135/875 1875/2190/875 +f 1695/1836/900 1687/2671/900 1684/2192/900 +f 1881/2138/849 1880/2672/849 1878/2193/849 +f 1845/2194/922 1844/1743/922 1850/1605/922 +f 1904/1713/875 1899/2673/875 1900/2196/875 +f 1838/2201/908 1841/2227/908 1842/2202/908 +f 1883/2204/871 1889/2506/871 1886/2205/871 +f 1887/2163/914 1888/1590/914 1882/2207/914 +f 1827/2050/908 1830/2053/908 1828/2209/908 +f 1877/2135/912 1879/2134/912 1878/2211/912 +f 1910/2213/908 1918/2178/908 1911/2181/908 +f 1911/2181/910 1906/2118/910 1908/2215/910 +f 1834/2217/901 1840/2230/901 1835/2218/901 +f 1873/2188/908 1872/1570/908 1870/2224/908 +f 1836/2226/920 1835/2218/920 1841/2227/920 +f 1834/2229/919 1837/2674/919 1842/2202/919 +f 1793/1846/826 1787/1982/826 1789/2235/826 +f 1957/2237/830 1958/2675/830 1956/2238/830 +f 1956/2240/837 1958/2676/837 1959/2241/837 +f 1957/2237/839 1960/2246/839 1959/2243/839 +f 1956/2240/841 1955/2242/841 1961/2245/841 +f 1962/2239/835 1961/2245/835 1960/2246/835 +f 2062/2247/831 2124/2677/831 2146/2248/831 +f 1966/2250/831 2128/2364/831 2127/2251/831 +f 2047/2253/929 2137/2678/929 2071/2254/929 +f 2147/2256/929 2110/2679/929 2111/2257/929 +f 1978/2259/831 2138/2680/831 1979/2260/831 +f 2024/2262/929 2114/2398/929 2115/2263/929 +f 1988/2265/831 2093/2681/831 2148/2266/831 +f 2142/2268/929 2108/2682/929 1990/2269/929 +f 2045/2271/830 2038/2683/830 2116/2272/830 +f 1977/2274/831 2090/2684/831 2028/2275/831 +f 2022/2277/839 2138/2680/839 1978/2278/839 +f 2154/2280/841 2116/2272/841 2038/2281/841 +f 1971/2283/830 2085/2685/830 2050/2284/830 +f 2033/2286/831 2112/2686/831 2149/2287/831 +f 2036/2289/841 2059/2296/841 2042/2290/841 +f 2121/2292/839 2120/2687/839 2053/2293/839 +f 2052/2295/830 2042/2688/830 2059/2296/830 +f 2053/2298/831 2120/2687/831 2082/2299/831 +f 2152/2301/929 2130/2689/929 2131/2302/929 +f 2150/2304/929 2096/2690/929 2097/2305/929 +f 2048/2307/830 2040/2691/830 2119/2308/830 +f 2153/2309/841 2132/2426/841 2065/2310/841 +f 2025/2264/830 2115/2263/830 2034/2312/830 +f 2109/2258/830 2111/2257/830 2026/2314/830 +f 1968/2316/831 2114/2398/831 2024/2262/831 +f 2054/2318/839 2031/2692/839 2023/2319/839 +f 2097/2305/839 2096/2690/839 1994/2321/839 +f 2148/2266/929 2093/2681/929 2094/2323/929 +f 1982/2325/830 2087/2693/830 2092/2324/830 +f 2150/2304/841 2095/2306/841 2088/2326/841 +f 2134/2328/839 2133/2694/839 2076/2329/839 +f 2058/2331/830 2017/2695/830 2016/2332/830 +f 2028/2275/841 2050/2284/841 2085/2334/841 +f 2149/2287/929 2112/2686/929 2113/2336/929 +f 2035/2338/831 2122/2696/831 2036/2289/831 +f 1993/2340/830 2089/2697/830 2098/2341/830 +f 2111/2257/839 2110/2679/839 2030/2343/839 +f 2142/2268/841 2107/2270/841 1989/2345/841 +f 2127/2251/841 2145/2376/841 2044/2347/841 +f 2027/2349/831 2108/2682/831 2142/2268/831 +f 2079/2351/831 2135/2698/831 2084/2352/831 +f 1979/2260/841 2021/2431/841 2067/2354/841 +f 2023/2356/831 2031/2692/831 2032/2357/831 +f 2125/2333/839 2124/2677/839 2062/2359/839 +f 2069/2361/830 2063/2699/830 2129/2303/830 +f 1987/2362/830 2088/2700/830 2095/2306/830 +f 2061/2363/839 2126/2377/839 2128/2364/839 +f 2151/2366/841 2098/2341/841 2089/2367/841 +f 1969/2369/831 2103/2427/831 2102/2370/831 +f 2143/2372/929 2091/2701/929 1985/2373/929 +f 2061/2375/830 2044/2702/830 2145/2376/830 +f 1976/2378/830 2086/2703/830 1984/2374/830 +f 2113/2336/839 2112/2686/839 2033/2379/839 +f 2075/2381/830 2057/2704/830 2056/2382/830 +f 2083/2384/830 2068/2705/830 2144/2385/830 +f 2070/2387/830 1997/2706/830 1996/2255/830 +f 2144/2385/929 2140/2410/929 2141/2388/929 +f 2100/2342/839 2099/2707/839 2000/2389/839 +f 2046/2391/831 2137/2678/831 2047/2253/831 +f 1983/2393/831 2091/2701/831 2143/2372/831 +f 2074/2337/830 2113/2336/830 2029/2395/830 +f 2034/2397/839 2115/2263/839 2114/2398/839 +f 1973/2400/841 2002/2413/841 2043/2401/841 +f 2152/2301/841 2129/2303/841 2063/2403/841 +f 1965/2405/841 2140/2410/841 2144/2385/841 +f 2028/2275/929 2090/2684/929 2051/2285/929 +f 2146/2248/841 2016/2332/841 2017/2407/841 +f 2082/2299/929 2120/2687/929 2121/2292/929 +f 1964/2409/831 2141/2388/831 2140/2410/831 +f 2001/2412/830 2043/2708/830 2002/2413/830 +f 2032/2357/929 2031/2692/929 2054/2318/929 +f 2151/2366/929 2099/2707/929 2100/2342/929 +f 2049/2416/831 2117/2709/831 2154/2280/831 +f 1970/2418/841 2024/2262/841 2025/2264/841 +f 1999/2420/830 2078/2710/830 2077/2421/830 +f 2000/2423/831 2099/2707/831 2151/2366/831 +f 2072/2425/830 2065/2711/830 2132/2426/830 +f 2077/2421/929 2102/2370/929 2103/2427/929 +f 2104/2428/830 2105/2432/830 2014/2429/830 +f 1979/2260/929 2138/2680/929 2022/2277/929 +f 2105/2432/839 2080/2712/839 2019/2433/839 +f 2084/2352/841 2056/2382/841 2057/2435/841 +f 2081/2437/841 2104/2428/841 2004/2438/841 +f 2060/2297/839 2122/2696/839 2035/2440/839 +f 2143/2372/841 1984/2374/841 2086/2442/841 +f 2148/2266/841 2092/2324/841 2087/2444/841 +f 1994/2446/831 2096/2690/831 2150/2304/831 +f 2118/2273/839 2117/2709/839 2049/2448/839 +f 2071/2254/839 2137/2678/839 2046/2450/839 +f 2107/2270/830 1990/2269/830 1991/2452/830 +f 2136/2383/839 2135/2698/839 2079/2454/839 +f 2084/2352/929 2135/2698/929 2136/2383/929 +f 2003/2414/839 2123/2713/839 1972/2456/839 +f 2094/2323/839 2093/2681/839 1988/2458/839 +f 2154/2280/929 2117/2709/929 2118/2273/929 +f 2020/2460/830 2067/2714/830 2021/2431/830 +f 2102/2370/841 2077/2421/841 2078/2461/841 +f 1973/2400/929 2123/2713/929 2003/2414/929 +f 2082/2299/841 2119/2308/841 2040/2463/841 +f 2146/2248/929 2124/2677/929 2125/2333/929 +f 2032/2357/841 2106/2415/841 2006/2465/841 +f 1985/2373/839 2091/2701/839 1983/2467/839 +f 2139/2386/839 2141/2388/839 1964/2469/839 +f 2047/2253/841 1996/2255/841 1997/2471/841 +f 2145/2376/929 2127/2251/929 2128/2364/929 +f 2051/2285/839 2090/2684/839 1977/2473/839 +f 2036/2289/929 2122/2696/929 2060/2297/929 +f 1972/2475/831 2123/2713/831 1973/2400/831 +f 2101/2422/839 2103/2427/839 1969/2477/839 +f 2147/2256/841 2109/2258/841 2009/2479/841 +f 2149/2287/841 2074/2337/841 2011/2481/841 +f 2081/2437/929 2080/2712/929 2105/2432/929 +f 2153/2309/929 2133/2694/929 2134/2328/929 +f 2019/2483/831 2080/2712/831 2081/2437/831 +f 2073/2485/831 2130/2689/831 2152/2301/831 +f 2106/2415/830 2054/2318/830 2018/2487/830 +f 1990/2269/839 2108/2682/839 2027/2489/839 +f 2076/2491/831 2133/2694/831 2153/2309/831 +f 2131/2302/839 2130/2689/839 2073/2493/839 +f 2030/2495/831 2110/2679/831 2147/2256/831 +f 1904/1713/923 1898/2084/923 1905/2086/923 +f 1584/1630/860 1579/1751/860 1585/2184/860 +f 1568/1681/856 1563/1642/856 1569/1652/856 +f 1552/1903/848 1554/1625/848 1553/1679/848 +f 1664/1741/880 1659/1695/880 1665/1708/880 +f 1648/2497/876 1650/1785/876 1649/1738/876 +f 1616/1792/870 1611/1899/870 1617/1593/870 +f 1696/1892/887 1691/2641/887 1697/1876/887 +f 1600/1597/866 1602/1650/866 1601/1628/866 +f 1680/1944/883 1676/1949/883 1681/2034/883 +f 1776/1827/900 1771/1829/900 1777/1840/900 +f 1712/1864/890 1707/2639/890 1713/1867/890 +f 1792/1980/902 1787/1982/902 1793/1846/902 +f 1810/1933/904 1808/1880/904 1803/1882/904 +f 1947/2501/927 1954/2100/927 1951/2112/927 +f 1760/1810/899 1755/1799/899 1761/1894/899 +f 1730/2013/895 1728/1907/895 1723/1906/895 +f 1824/1925/905 1819/1814/905 1825/1919/905 +f 1632/2502/872 1634/1759/872 1633/1788/872 +f 1857/2155/913 1851/2143/913 1858/2145/913 +f 1868/2503/918 1953/1971/918 1872/1570/918 +f 1936/2128/925 1935/2087/925 1937/2504/925 +f 1840/2230/909 1842/2202/909 1841/2227/909 +f 1744/1771/897 1739/1770/897 1745/1937/897 +f 1888/1590/921 1887/2163/921 1889/2506/921 +f 1919/2064/924 1921/2058/924 1920/2061/924 +f 1960/2246/831 1961/2245/831 1955/2507/831 +f 2157/2509/837 2161/2519/837 2159/2510/837 +f 2155/2512/841 2159/2510/841 2160/2513/841 +f 2156/2515/835 2160/2513/835 2162/2516/835 +f 2158/2518/839 2162/2516/839 2161/2519/839 +f 2164/2521/835 2168/2531/835 2170/2522/835 +f 2166/2524/839 2170/2522/839 2169/2525/839 +f 2165/2527/837 2169/2525/837 2167/2528/837 +f 2163/2530/841 2167/2528/841 2168/2531/841 +f 2159/2510/831 2161/2519/831 2162/2516/831 +f 2168/2531/831 2167/2528/831 2169/2525/831 +s 1 +f 1252/1329/832 1247/1461/845 1249/1316/832 +f 1262/1366/855 1257/1355/827 1259/1357/855 +f 1050/2715/901 1047/2716/838 1048/2717/838 +f 1244/1305/825 1242/1397/908 1238/1299/908 +f 1058/2718/852 1055/2719/833 1056/2720/833 +f 1366/1527/930 1361/1497/931 1358/1486/930 +f 1202/1423/829 1199/2571/852 1200/1424/852 +f 1260/1428/827 1255/1344/901 1257/1355/827 +f 1266/2572/852 1261/1419/833 1263/1451/852 +f 1035/2721/908 1034/2722/828 1032/2723/828 +f 1256/2560/838 1254/1433/875 1253/1435/838 +f 1242/1397/908 1240/1304/828 1238/1299/908 +f 1250/1321/845 1245/1415/826 1247/1461/845 +f 1052/2724/827 1049/2725/901 1050/2715/901 +f 1060/2726/832 1042/2727/845 1043/2728/845 +f 1181/1313/843 1178/1310/825 1179/1333/825 +f 1174/2574/828 1203/1382/849 1204/1464/849 +f 1347/1479/932 1345/1515/933 1342/1480/933 +f 1032/2723/828 1062/2729/849 1063/2730/849 +f 1362/2603/827 1355/1477/934 1353/1533/934 +f 1269/1341/849 1265/1352/829 1267/1302/849 +f 1351/1530/935 1337/1520/936 1339/1536/935 +f 1239/1399/828 1267/1302/849 1240/1304/828 +f 1246/1540/843 1244/1305/825 1243/1413/843 +f 1190/2564/838 1188/1374/875 1187/1336/875 +f 1185/1381/845 1182/1412/826 1183/2559/826 +f 1054/2731/855 1051/2732/827 1052/2724/827 +f 1264/1364/833 1259/1357/855 1261/1419/833 +f 1056/2720/833 1053/2733/855 1054/2731/855 +f 1200/1424/852 1197/1367/833 1198/1359/833 +f 1063/2730/849 1059/2734/829 1061/2735/829 +f 1466/2736/827 1478/2737/937 1469/2738/938 +f 1041/2739/826 1038/2740/843 1039/2741/843 +f 1043/2728/845 1040/2742/826 1041/2739/826 +f 1248/1323/826 1243/1413/843 1245/1415/826 +f 1179/1333/825 1175/1401/908 1177/1334/908 +f 1217/1380/832 1184/1455/845 1185/1381/845 +f 1254/1433/875 1252/1329/832 1249/1316/832 +f 1369/1476/939 1353/1533/934 1355/1477/934 +f 1521/2743/940 1150/2744/941 1151/2745/940 +f 1067/2746/942 1068/2747/943 1069/2748/943 +f 1070/2749/944 1068/2747/943 1071/2750/942 +f 1072/2751/944 1073/2752/943 1070/2749/944 +f 1082/2753/945 1064/2754/946 1078/2755/947 +f 1072/2756/944 1075/2757/948 1076/2758/948 +f 1077/2759/947 1075/2757/948 1070/2760/944 +f 1078/2761/947 1079/2762/948 1077/2759/947 +f 1519/2763/949 1125/2764/950 1141/2765/949 +f 1078/2755/947 1081/2766/945 1082/2753/945 +f 1083/2767/946 1081/2766/945 1077/2768/947 +f 1064/2754/946 1084/2769/945 1083/2767/946 +f 1518/2770/951 1126/2771/952 1136/2772/953 +f 1064/2773/946 1086/2774/954 1087/2775/954 +f 1083/2776/946 1088/2777/954 1086/2774/954 +f 1089/2778/955 1088/2777/954 1090/2779/955 +f 1155/2780/956 1156/2781/957 1150/2782/941 +f 1089/2783/955 1092/2784/958 1093/2785/958 +f 1090/2786/955 1094/2787/958 1092/2784/958 +f 1065/2788/959 1094/2787/958 1095/2789/959 +f 1525/2790/960 1169/2791/961 1170/2792/960 +f 1065/2793/959 1097/2794/962 1098/2795/962 +f 1099/2796/963 1097/2794/962 1095/2797/959 +f 1100/2798/963 1101/2799/962 1099/2796/963 +f 1146/2800/964 1125/2801/950 1145/2802/965 +f 1100/2803/963 1103/2804/966 1104/2805/966 +f 1105/2806/967 1103/2804/966 1099/2807/963 +f 1066/2808/967 1106/2809/966 1105/2806/967 +f 1523/2810/968 1124/2811/969 1160/2812/968 +f 1066/2813/967 1108/2814/970 1109/2815/970 +f 1110/2816/971 1108/2814/970 1105/2817/967 +f 1111/2818/971 1112/2819/970 1110/2816/971 +f 1072/2756/944 1080/2820/948 1078/2761/947 +f 1111/2821/971 1114/2822/972 1115/2823/972 +f 1116/2824/973 1114/2822/972 1110/2825/971 +f 1117/2826/973 1118/2827/972 1116/2824/973 +f 1526/2828/974 1127/2829/975 1173/2830/974 +f 1117/2831/973 1120/2832/976 1121/2833/976 +f 1116/2834/973 1122/2835/976 1120/2832/976 +f 1067/2836/942 1122/2835/976 1071/2837/942 +f 1064/2773/946 1091/2838/954 1089/2778/955 +f 1485/2839/977 1477/2840/978 1474/2841/979 +f 1127/2842/975 1128/2843/980 1129/2844/975 +f 1128/2843/980 1130/2845/952 1129/2844/975 +f 1131/2846/980 1126/2847/952 1130/2845/952 +f 1072/2751/944 1069/2748/943 1074/2848/943 +f 1126/2771/952 1133/2849/951 1130/2850/952 +f 1133/2849/951 1134/2851/953 1130/2850/952 +f 1135/2852/951 1136/2772/953 1134/2851/953 +f 1111/2818/971 1109/2815/970 1113/2853/970 +f 1136/2854/953 1138/2855/949 1134/2856/953 +f 1138/2855/949 1139/2857/950 1134/2856/953 +f 1140/2858/949 1125/2764/950 1139/2857/950 +f 1524/2859/981 1164/2860/982 1165/2861/981 +f 1125/2801/950 1142/2862/964 1139/2863/950 +f 1139/2863/950 1143/2864/964 1144/2865/965 +f 1143/2864/964 1145/2802/965 1144/2865/965 +f 1517/2866/980 1126/2847/952 1132/2867/980 +f 1145/2868/965 1147/2869/940 1144/2870/965 +f 1144/2870/965 1148/2871/940 1149/2872/941 +f 1148/2871/940 1150/2744/941 1149/2872/941 +f 1065/2788/959 1093/2785/958 1096/2873/958 +f 1150/2782/941 1152/2874/957 1149/2875/941 +f 1152/2874/957 1153/2876/956 1149/2875/941 +f 1154/2877/957 1155/2780/956 1153/2876/956 +f 1098/2795/962 1100/2798/963 1065/2793/959 +f 1155/2878/956 1157/2879/968 1153/2880/956 +f 1153/2880/956 1158/2881/968 1159/2882/969 +f 1158/2881/968 1124/2811/969 1159/2882/969 +f 1124/2883/969 1161/2884/981 1159/2885/969 +f 1161/2884/981 1162/2886/982 1159/2885/969 +f 1163/2887/981 1164/2860/982 1162/2886/982 +f 1104/2805/966 1066/2808/967 1100/2803/963 +f 1164/2888/982 1166/2889/960 1162/2890/982 +f 1162/2890/982 1167/2891/960 1168/2892/961 +f 1167/2891/960 1169/2791/961 1168/2892/961 +f 1115/2823/972 1117/2826/973 1111/2821/971 +f 1169/2893/961 1171/2894/974 1168/2895/961 +f 1171/2894/974 1129/2896/975 1168/2895/961 +f 1172/2897/974 1127/2829/975 1129/2896/975 +f 1121/2833/976 1067/2836/942 1117/2831/973 +f 1048/2898/838 1046/2899/875 1045/2900/875 +f 1258/1425/901 1253/2567/838 1255/1344/901 +f 1316/1505/983 1308/1495/984 1310/1491/984 +f 1217/1380/832 1188/1374/875 1186/1373/832 +f 1061/2735/829 1057/2901/852 1058/2718/852 +f 1037/2902/825 1033/2903/908 1035/2721/908 +f 1183/2559/826 1180/1311/843 1181/1313/843 +f 1196/2562/855 1193/1351/827 1194/1325/827 +f 1194/1325/827 1191/1350/901 1192/1339/901 +f 1204/1464/849 1201/1458/829 1202/1423/829 +f 1198/1359/833 1195/1361/855 1196/2562/855 +f 1177/1334/908 1176/2576/828 1174/2574/828 +f 1192/1339/901 1189/2585/838 1190/1340/838 +f 1335/1489/985 1324/1483/986 1321/1471/986 +f 1327/1503/829 1321/1471/986 1324/1483/986 +f 1331/1164/987 1326/1502/988 1328/1507/987 +f 1317/1508/989 1306/1500/990 1303/1504/989 +f 1310/1491/984 1313/2597/825 1312/2596/825 +f 1303/1504/989 1313/2597/825 1317/1508/989 +f 1268/1343/829 1263/1451/852 1265/1352/829 +f 1039/2741/843 1036/2904/825 1037/2902/825 +f 1343/1522/832 1337/1520/936 1340/1511/936 +f 1366/1527/930 1363/2593/827 1362/2603/827 +f 1060/2726/832 1046/2899/875 1044/2905/832 +f 1329/1166/988 1327/1503/829 1326/1502/988 +f 1345/1515/933 1343/1522/832 1342/1480/933 +f 1440/2906/991 1444/2907/992 1443/2908/993 +f 1507/2909/994 1370/2910/995 1511/2911/996 +f 1385/2912/997 1377/2913/908 1389/2914/828 +f 1381/2915/831 1373/2916/998 1375/2917/999 +f 1459/2918/1000 1464/2919/1001 1453/2920/1002 +f 1403/2921/1003 1416/2922/1004 1405/2923/1005 +f 1386/2924/1006 1387/2925/830 1371/2926/1007 +f 1416/2922/1004 1407/2927/1008 1405/2923/1005 +f 1510/2928/849 1385/2912/997 1389/2914/828 +f 1500/2929/1009 1507/2930/994 1511/2931/996 +f 1465/2932/1010 1458/2933/1011 1454/2934/1012 +f 1442/2935/875 1446/2936/1013 1435/2937/1014 +f 1454/2934/1012 1464/2919/1001 1465/2932/1010 +f 1381/2938/831 1375/2939/999 1392/2940/1015 +f 1394/2941/1016 1405/2942/1005 1396/2943/1017 +f 1479/2944/1018 1462/2945/1019 1470/2946/1020 +f 1371/2947/1007 1387/2948/830 1390/2949/1021 +f 1372/2950/1022 1395/2951/1023 1379/2952/1024 +f 1377/2913/908 1394/2941/1016 1378/2953/1025 +f 1505/2954/1026 1496/2955/852 1494/2956/1027 +f 1473/2957/1028 1467/2958/1029 1463/2959/1030 +f 1463/2960/1030 1457/2961/1031 1456/2962/1032 +f 1393/2963/825 1399/2964/1033 1400/2965/843 +f 1476/2966/1034 1470/2946/1020 1467/2958/1029 +f 1381/2967/831 1392/2968/1015 1402/2969/1035 +f 1469/2738/938 1471/2970/1036 1464/2971/1001 +f 1379/2952/1024 1397/2972/1037 1384/2973/1038 +f 1390/2974/1021 1387/2975/830 1406/2976/1039 +f 1464/2971/1001 1474/2977/979 1465/2978/1010 +f 1406/2979/1039 1387/2980/830 1408/2981/1040 +f 1416/2982/1004 1420/2983/1041 1409/2984/1042 +f 1455/2985/901 1469/2738/938 1459/2918/1000 +f 1473/2986/1028 1487/2987/1043 1476/2988/1034 +f 1409/2984/1042 1423/2989/1044 1413/2990/1045 +f 1472/2991/1046 1486/2992/833 1475/2993/855 +f 1382/2994/1047 1374/2995/1048 1388/2996/1049 +f 1381/2997/831 1402/2998/1035 1413/2999/1045 +f 1478/2737/937 1482/3000/1050 1471/3001/1036 +f 1480/3002/1051 1472/2991/1046 1479/3003/1018 +f 1446/3004/1013 1453/3005/1002 1448/3006/1052 +f 1428/3007/1053 1435/2937/1014 1438/3008/1054 +f 1408/3009/1040 1387/3010/830 1419/3011/1055 +f 1474/2841/979 1482/3000/1050 1485/2839/977 +f 1496/2955/852 1488/3012/1056 1486/2992/833 +f 1406/2979/1039 1412/3013/1057 1401/3014/1058 +f 1451/3015/1059 1437/3016/1060 1441/3017/1061 +f 1410/3018/1062 1421/3019/845 1411/3020/826 +f 1401/3014/1058 1415/3021/1063 1404/3022/1064 +f 1381/3023/831 1413/2990/1045 1423/2989/1044 +f 1438/3008/1054 1431/3024/1065 1428/3007/1053 +f 1381/3025/831 1423/3026/1044 1427/3027/1066 +f 1502/3028/1067 1508/3029/1068 1504/3030/1069 +f 1514/3031/1070 1505/2954/1026 1503/3032/1071 +f 1419/3033/1055 1387/3034/830 1430/3035/1072 +f 1433/3036/1073 1425/3037/1074 1422/3038/1075 +f 1502/3028/1067 1510/2928/849 1513/3039/1076 +f 1422/3038/1075 1430/3035/1072 1433/3036/1073 +f 1421/3019/845 1429/3040/1077 1432/3041/832 +f 1432/3041/832 1439/3042/1078 1442/2935/875 +f 1508/3043/1068 1388/3044/1049 1509/3045/1079 +f 1381/3046/831 1427/3047/1066 1437/3048/1060 +f 1508/3043/1068 1376/3049/1080 1382/3050/1047 +f 1417/3051/1081 1431/3052/1065 1420/3053/1041 +f 1430/3054/1072 1387/3055/830 1440/3056/991 +f 1396/2943/1017 1407/3057/1008 1398/3058/1082 +f 1393/2963/825 1403/2921/1003 1394/2941/1016 +f 1398/3059/1082 1375/2939/999 1374/3060/1048 +f 1433/3061/1073 1440/3056/991 1443/3062/993 +f 1444/3063/992 1456/3064/1032 1457/3065/1031 +f 1451/3066/1059 1458/3067/1011 1445/3068/1083 +f 1449/3069/1084 1442/2935/875 1439/3042/1078 +f 1447/3070/1085 1457/3065/1031 1460/3071/1086 +f 1381/3072/831 1437/3016/1060 1445/3073/1083 +f 1447/3070/1085 1461/3074/1087 1449/3075/1084 +f 1460/3076/1086 1462/2945/1019 1461/3074/1087 +f 1440/2906/991 1387/3077/830 1450/3078/1088 +f 1448/3006/1052 1454/3079/1012 1451/3066/1059 +f 1452/3080/838 1459/2918/1000 1446/3004/1013 +f 1476/2988/1034 1480/3002/1051 1479/3003/1018 +f 1425/3037/1074 1429/3040/1077 1418/3081/1089 +f 1419/3011/1055 1412/3082/1057 1408/3009/1040 +f 1388/3044/1049 1512/3083/1090 1509/3045/1079 +f 1475/2993/855 1488/3012/1056 1478/2737/937 +f 1503/3032/1071 1511/2931/996 1514/3031/1070 +f 1381/3084/831 1445/3068/1083 1458/3067/1011 +f 1404/3085/1064 1397/2972/1037 1395/3086/1023 +f 1447/3087/1085 1439/3042/1078 1436/3088/1091 +f 1450/3089/1088 1387/3090/830 1456/3064/1032 +f 1491/3091/1092 1504/3092/1069 1493/3093/1093 +f 1456/2962/1032 1387/3094/830 1463/2960/1030 +f 1487/3095/1043 1492/3096/1094 1480/3097/1051 +f 1414/3098/1095 1421/3019/845 1424/3099/1096 +f 1506/3100/1097 1512/3101/1090 1501/3102/1098 +f 1497/3103/1099 1499/3104/1100 1500/3105/1009 +f 1510/2928/849 1376/3049/1080 1513/3039/1076 +f 1489/3106/1101 1504/3092/1069 1506/3107/1097 +f 1381/3108/831 1458/2933/1011 1468/3109/1102 +f 1435/2937/1014 1448/3110/1052 1438/3111/1054 +f 1429/3040/1077 1436/3112/1091 1439/3042/1078 +f 1383/3113/1103 1394/2941/1016 1396/3114/1017 +f 1463/2959/1030 1387/3115/830 1473/2957/1028 +f 1395/3086/1023 1401/3116/1058 1404/3085/1064 +f 1432/3041/832 1435/2937/1014 1434/3117/1104 +f 1420/3053/1041 1427/3027/1066 1423/3026/1044 +f 1398/3058/1082 1402/2969/1035 1392/2968/1015 +f 1466/2736/827 1472/2991/1046 1475/2993/855 +f 1396/3114/1017 1374/3060/1048 1383/3113/1103 +f 1381/3118/831 1468/3119/1102 1477/3120/978 +f 1415/3121/1063 1422/3122/1075 1425/3123/1074 +f 1381/3124/831 1477/2840/978 1481/3125/1105 +f 1382/2994/1047 1378/2953/1025 1383/3126/1103 +f 1380/3127/1106 1384/2973/1038 1385/2912/997 +f 1473/2986/1028 1387/3128/830 1484/3129/1107 +f 1372/3130/1022 1380/3127/1106 1370/3131/995 +f 1399/2964/1033 1411/3020/826 1400/2965/843 +f 1431/3024/1065 1437/3048/1060 1427/3047/1066 +f 1409/3132/1042 1402/2998/1035 1407/2927/1008 +f 1411/3020/826 1403/2921/1003 1400/2965/843 +f 1495/3133/1108 1487/3095/1043 1484/3134/1107 +f 1397/2972/1037 1377/2913/908 1384/2973/1038 +f 1485/3135/977 1493/3136/1093 1489/3137/1101 +f 1381/3138/831 1481/3139/1105 1490/3140/1109 +f 1414/3098/1095 1417/3141/1081 1416/2982/1004 +f 1415/3021/1063 1399/2964/1033 1404/3022/1064 +f 1484/3134/1107 1387/3142/830 1495/3133/1108 +f 1433/3061/1073 1436/3112/1091 1426/3143/1110 +f 1461/3074/1087 1452/3080/838 1449/3075/1084 +f 1371/2947/1007 1391/3144/1111 1372/2950/1022 +f 1462/2945/1019 1455/2985/901 1461/3074/1087 +f 1506/3107/1097 1490/3145/1109 1489/3106/1101 +f 1485/3135/977 1490/3140/1109 1481/3139/1105 +f 1486/2992/833 1494/2956/1027 1496/2955/852 +f 1504/3030/1069 1509/3146/1079 1506/3100/1097 +f 1381/3147/831 1490/3145/1109 1501/3148/1098 +f 1492/3149/1094 1505/2954/1026 1494/2956/1027 +f 1514/3150/1070 1385/2912/997 1515/3151/1112 +f 1495/3152/1108 1387/3153/830 1499/3104/1100 +f 1497/3103/1099 1503/3154/1071 1492/3149/1094 +f 1499/3155/1100 1387/3156/830 1507/2930/994 +f 1443/2908/993 1447/3087/1085 1436/3088/1091 +f 1491/3091/1092 1498/3157/829 1502/3028/1067 +f 1465/2978/1010 1477/3120/978 1468/3119/1102 +f 1406/2976/1039 1391/3158/1111 1390/2974/1021 +f 1505/2954/1026 1510/2928/849 1498/3157/829 +f 1441/3017/1061 1448/3110/1052 1451/3015/1059 +f 1381/3159/831 1501/3102/1098 1512/3101/1090 +f 1480/3097/1051 1494/2956/1027 1483/3160/1113 +f 1434/3117/1104 1417/3051/1081 1424/3099/1096 +f 1425/3123/1074 1410/3018/1062 1415/3121/1063 +f 1507/2909/994 1387/3161/830 1386/3162/1006 +f 1370/2910/995 1514/3150/1070 1511/2911/996 +f 1421/3019/845 1434/3117/1104 1424/3099/1096 +f 1370/3131/995 1371/2926/1007 1372/3130/1022 +f 1388/2996/1049 1375/2917/999 1373/2916/998 +f 1376/3049/1080 1377/2913/908 1378/2953/1025 +f 1457/2961/1031 1470/3163/1020 1460/3076/1086 +f 1381/3164/831 1512/3083/1090 1373/3165/998 +f 1488/3012/1056 1493/3136/1093 1482/3166/1050 +f 1067/2746/942 1071/2750/942 1068/2747/943 +f 1070/2749/944 1073/2752/943 1068/2747/943 +f 1072/2751/944 1074/2848/943 1073/2752/943 +f 1072/2756/944 1070/2760/944 1075/2757/948 +f 1077/2759/947 1079/2762/948 1075/2757/948 +f 1078/2761/947 1080/2820/948 1079/2762/948 +f 1078/2755/947 1077/2768/947 1081/2766/945 +f 1083/2767/946 1084/2769/945 1081/2766/945 +f 1064/2754/946 1085/3167/945 1084/2769/945 +f 1064/2773/946 1083/2776/946 1086/2774/954 +f 1083/2776/946 1090/2779/955 1088/2777/954 +f 1089/2778/955 1091/2838/954 1088/2777/954 +f 1089/2783/955 1090/2786/955 1092/2784/958 +f 1090/2786/955 1095/2789/959 1094/2787/958 +f 1065/2788/959 1096/2873/958 1094/2787/958 +f 1065/2793/959 1095/2797/959 1097/2794/962 +f 1099/2796/963 1101/2799/962 1097/2794/962 +f 1100/2798/963 1102/3168/962 1101/2799/962 +f 1100/2803/963 1099/2807/963 1103/2804/966 +f 1105/2806/967 1106/2809/966 1103/2804/966 +f 1066/2808/967 1107/3169/966 1106/2809/966 +f 1066/2813/967 1105/2817/967 1108/2814/970 +f 1110/2816/971 1112/2819/970 1108/2814/970 +f 1111/2818/971 1113/2853/970 1112/2819/970 +f 1111/2821/971 1110/2825/971 1114/2822/972 +f 1116/2824/973 1118/2827/972 1114/2822/972 +f 1117/2826/973 1119/3170/972 1118/2827/972 +f 1117/2831/973 1116/2834/973 1120/2832/976 +f 1116/2834/973 1071/2837/942 1122/2835/976 +f 1067/2836/942 1123/3171/976 1122/2835/976 +f 1127/2842/975 1517/2866/980 1128/2843/980 +f 1128/2843/980 1131/2846/980 1130/2845/952 +f 1131/2846/980 1132/2867/980 1126/2847/952 +f 1126/2771/952 1137/3172/951 1133/2849/951 +f 1133/2849/951 1135/2852/951 1134/2851/953 +f 1135/2852/951 1518/2770/951 1136/2772/953 +f 1136/2854/953 1519/2763/949 1138/2855/949 +f 1138/2855/949 1140/2858/949 1139/2857/950 +f 1140/2858/949 1141/2765/949 1125/2764/950 +f 1125/2801/950 1520/3173/964 1142/2862/964 +f 1139/2863/950 1142/2862/964 1143/2864/964 +f 1143/2864/964 1146/2800/964 1145/2802/965 +f 1145/2868/965 1521/2743/940 1147/2869/940 +f 1144/2870/965 1147/2869/940 1148/2871/940 +f 1148/2871/940 1151/2745/940 1150/2744/941 +f 1150/2782/941 1156/2781/957 1152/2874/957 +f 1152/2874/957 1154/2877/957 1153/2876/956 +f 1154/2877/957 1522/3174/957 1155/2780/956 +f 1155/2878/956 1523/2810/968 1157/2879/968 +f 1153/2880/956 1157/2879/968 1158/2881/968 +f 1158/2881/968 1160/2812/968 1124/2811/969 +f 1124/2883/969 1524/2859/981 1161/2884/981 +f 1161/2884/981 1163/2887/981 1162/2886/982 +f 1163/2887/981 1165/2861/981 1164/2860/982 +f 1164/2888/982 1525/2790/960 1166/2889/960 +f 1162/2890/982 1166/2889/960 1167/2891/960 +f 1167/2891/960 1170/2792/960 1169/2791/961 +f 1169/2893/961 1526/2828/974 1171/2894/974 +f 1171/2894/974 1172/2897/974 1129/2896/975 +f 1172/2897/974 1173/2830/974 1127/2829/975 +f 1252/1329/832 1250/1321/845 1247/1461/845 +f 1262/1366/855 1260/1428/827 1257/1355/827 +f 1050/2715/901 1049/2725/901 1047/2716/838 +f 1244/1305/825 1241/1296/825 1242/1397/908 +f 1058/2718/852 1057/2901/852 1055/2719/833 +f 1366/1527/930 1360/1526/931 1361/1497/931 +f 1202/1423/829 1201/1458/829 1199/2571/852 +f 1260/1428/827 1258/1425/901 1255/1344/901 +f 1266/2572/852 1264/1364/833 1261/1419/833 +f 1035/2721/908 1033/2903/908 1034/2722/828 +f 1256/2560/838 1251/1318/875 1254/1433/875 +f 1242/1397/908 1239/1399/828 1240/1304/828 +f 1250/1321/845 1248/1323/826 1245/1415/826 +f 1052/2724/827 1051/2732/827 1049/2725/901 +f 1060/2726/832 1044/2905/832 1042/2727/845 +f 1181/1313/843 1180/1311/843 1178/1310/825 +f 1174/2574/828 1176/2576/828 1203/1382/849 +f 1347/1479/932 1344/1513/932 1345/1515/933 +f 1032/2723/828 1034/2722/828 1062/2729/849 +f 1362/2603/827 1363/2593/827 1355/1477/934 +f 1269/1341/849 1268/1343/829 1265/1352/829 +f 1351/1530/935 1340/1511/936 1337/1520/936 +f 1239/1399/828 1269/1341/849 1267/1302/849 +f 1246/1540/843 1241/1296/825 1244/1305/825 +f 1190/2564/838 1189/2586/838 1188/1374/875 +f 1185/1381/845 1184/1455/845 1182/1412/826 +f 1054/2731/855 1053/2733/855 1051/2732/827 +f 1264/1364/833 1262/1366/855 1259/1357/855 +f 1056/2720/833 1055/2719/833 1053/2733/855 +f 1200/1424/852 1199/2571/852 1197/1367/833 +f 1063/2730/849 1062/2729/849 1059/2734/829 +f 1466/2736/827 1475/2993/855 1478/2737/937 +f 1041/2739/826 1040/2742/826 1038/2740/843 +f 1043/2728/845 1042/2727/845 1040/2742/826 +f 1248/1323/826 1246/1540/843 1243/1413/843 +f 1179/1333/825 1178/1310/825 1175/1401/908 +f 1217/1380/832 1186/1373/832 1184/1455/845 +f 1254/1433/875 1251/1318/875 1252/1329/832 +f 1369/1476/939 1356/1517/939 1353/1533/934 +f 1521/2743/940 1145/2868/965 1150/2744/941 +f 1082/2753/945 1085/3167/945 1064/2754/946 +f 1519/2763/949 1136/2854/953 1125/2764/950 +f 1518/2770/951 1137/3172/951 1126/2771/952 +f 1155/2780/956 1522/3174/957 1156/2781/957 +f 1525/2790/960 1164/2888/982 1169/2791/961 +f 1146/2800/964 1520/3173/964 1125/2801/950 +f 1523/2810/968 1155/2878/956 1124/2811/969 +f 1072/2756/944 1076/2758/948 1080/2820/948 +f 1526/2828/974 1169/2893/961 1127/2829/975 +f 1064/2773/946 1087/2775/954 1091/2838/954 +f 1485/2839/977 1481/3125/1105 1477/2840/978 +f 1072/2751/944 1067/2746/942 1069/2748/943 +f 1111/2818/971 1066/2813/967 1109/2815/970 +f 1524/2859/981 1124/2883/969 1164/2860/982 +f 1517/2866/980 1127/2842/975 1126/2847/952 +f 1065/2788/959 1089/2783/955 1093/2785/958 +f 1098/2795/962 1102/3168/962 1100/2798/963 +f 1104/2805/966 1107/3169/966 1066/2808/967 +f 1115/2823/972 1119/3170/972 1117/2826/973 +f 1121/2833/976 1123/3171/976 1067/2836/942 +f 1048/2898/838 1047/3175/838 1046/2899/875 +f 1258/1425/901 1256/2583/838 1253/2567/838 +f 1316/1505/983 1311/1523/983 1308/1495/984 +f 1217/1380/832 1187/1336/875 1188/1374/875 +f 1061/2735/829 1059/2734/829 1057/2901/852 +f 1037/2902/825 1036/2904/825 1033/2903/908 +f 1183/2559/826 1182/1412/826 1180/1311/843 +f 1196/2562/855 1195/1361/855 1193/1351/827 +f 1194/1325/827 1193/1351/827 1191/1350/901 +f 1204/1464/849 1203/1382/849 1201/1458/829 +f 1198/1359/833 1197/1367/833 1195/1361/855 +f 1177/1334/908 1175/1401/908 1176/2576/828 +f 1192/1339/901 1191/1350/901 1189/2585/838 +f 1335/1489/985 1323/1490/985 1324/1483/986 +f 1327/1503/829 1322/1472/829 1321/1471/986 +f 1331/1164/987 1329/1166/988 1326/1502/988 +f 1317/1508/989 1305/1534/990 1306/1500/990 +f 1310/1491/984 1308/1495/984 1313/2597/825 +f 1303/1504/989 1312/2596/825 1313/2597/825 +f 1268/1343/829 1266/2572/852 1263/1451/852 +f 1039/2741/843 1038/2740/843 1036/2904/825 +f 1343/1522/832 1338/1521/832 1337/1520/936 +f 1366/1527/930 1358/1486/930 1363/2593/827 +f 1060/2726/832 1045/2900/875 1046/2899/875 +f 1329/1166/988 1322/1472/829 1327/1503/829 +f 1345/1515/933 1338/1521/832 1343/1522/832 +f 1440/2906/991 1450/3078/1088 1444/2907/992 +f 1507/2909/994 1386/3162/1006 1370/2910/995 +f 1385/2912/997 1384/2973/1038 1377/2913/908 +f 1459/2918/1000 1469/2738/938 1464/2919/1001 +f 1403/2921/1003 1414/3098/1095 1416/2922/1004 +f 1416/2922/1004 1409/3132/1042 1407/2927/1008 +f 1510/2928/849 1515/3151/1112 1385/2912/997 +f 1500/2929/1009 1499/3155/1100 1507/2930/994 +f 1465/2932/1010 1468/3109/1102 1458/2933/1011 +f 1442/2935/875 1452/3176/838 1446/2936/1013 +f 1454/2934/1012 1453/2920/1002 1464/2919/1001 +f 1394/2941/1016 1403/2921/1003 1405/2942/1005 +f 1479/2944/1018 1472/2991/1046 1462/2945/1019 +f 1372/2950/1022 1391/3144/1111 1395/2951/1023 +f 1377/2913/908 1393/2963/825 1394/2941/1016 +f 1505/2954/1026 1498/3157/829 1496/2955/852 +f 1473/2957/1028 1476/2966/1034 1467/2958/1029 +f 1463/2960/1030 1467/3177/1029 1457/2961/1031 +f 1393/2963/825 1397/2972/1037 1399/2964/1033 +f 1476/2966/1034 1479/2944/1018 1470/2946/1020 +f 1469/2738/938 1478/2737/937 1471/2970/1036 +f 1379/2952/1024 1395/2951/1023 1397/2972/1037 +f 1464/2971/1001 1471/2970/1036 1474/2977/979 +f 1416/2982/1004 1417/3141/1081 1420/2983/1041 +f 1455/2985/901 1466/2736/827 1469/2738/938 +f 1473/2986/1028 1484/3129/1107 1487/2987/1043 +f 1409/2984/1042 1420/2983/1041 1423/2989/1044 +f 1472/2991/1046 1483/3160/1113 1486/2992/833 +f 1382/2994/1047 1383/3126/1103 1374/2995/1048 +f 1478/2737/937 1488/3012/1056 1482/3000/1050 +f 1480/3002/1051 1483/3160/1113 1472/2991/1046 +f 1446/3004/1013 1459/2918/1000 1453/3005/1002 +f 1428/3007/1053 1434/3117/1104 1435/2937/1014 +f 1474/2841/979 1471/3001/1036 1482/3000/1050 +f 1496/2955/852 1491/3091/1092 1488/3012/1056 +f 1406/2979/1039 1408/2981/1040 1412/3013/1057 +f 1451/3015/1059 1445/3073/1083 1437/3016/1060 +f 1410/3018/1062 1418/3081/1089 1421/3019/845 +f 1401/3014/1058 1412/3013/1057 1415/3021/1063 +f 1438/3008/1054 1441/3178/1061 1431/3024/1065 +f 1502/3028/1067 1513/3039/1076 1508/3029/1068 +f 1514/3031/1070 1515/3151/1112 1505/2954/1026 +f 1433/3036/1073 1426/3179/1110 1425/3037/1074 +f 1502/3028/1067 1498/3157/829 1510/2928/849 +f 1422/3038/1075 1419/3033/1055 1430/3035/1072 +f 1421/3019/845 1418/3081/1089 1429/3040/1077 +f 1432/3041/832 1429/3040/1077 1439/3042/1078 +f 1508/3043/1068 1382/3050/1047 1388/3044/1049 +f 1508/3043/1068 1513/3039/1076 1376/3049/1080 +f 1417/3051/1081 1428/3180/1053 1431/3052/1065 +f 1396/2943/1017 1405/2942/1005 1407/3057/1008 +f 1393/2963/825 1400/2965/843 1403/2921/1003 +f 1398/3059/1082 1392/2940/1015 1375/2939/999 +f 1433/3061/1073 1430/3054/1072 1440/3056/991 +f 1444/3063/992 1450/3089/1088 1456/3064/1032 +f 1451/3066/1059 1454/3079/1012 1458/3067/1011 +f 1449/3069/1084 1452/3176/838 1442/2935/875 +f 1447/3070/1085 1444/3063/992 1457/3065/1031 +f 1447/3070/1085 1460/3071/1086 1461/3074/1087 +f 1460/3076/1086 1470/3163/1020 1462/2945/1019 +f 1448/3006/1052 1453/3005/1002 1454/3079/1012 +f 1452/3080/838 1455/2985/901 1459/2918/1000 +f 1476/2988/1034 1487/2987/1043 1480/3002/1051 +f 1425/3037/1074 1426/3179/1110 1429/3040/1077 +f 1419/3011/1055 1422/3122/1075 1412/3082/1057 +f 1388/3044/1049 1373/3165/998 1512/3083/1090 +f 1475/2993/855 1486/2992/833 1488/3012/1056 +f 1503/3032/1071 1500/2929/1009 1511/2931/996 +f 1404/3085/1064 1399/2964/1033 1397/2972/1037 +f 1447/3087/1085 1449/3069/1084 1439/3042/1078 +f 1491/3091/1092 1502/3028/1067 1504/3092/1069 +f 1487/3095/1043 1497/3181/1099 1492/3096/1094 +f 1414/3098/1095 1411/3020/826 1421/3019/845 +f 1506/3100/1097 1509/3146/1079 1512/3101/1090 +f 1497/3103/1099 1495/3152/1108 1499/3104/1100 +f 1510/2928/849 1389/2914/828 1376/3049/1080 +f 1489/3106/1101 1493/3093/1093 1504/3092/1069 +f 1435/2937/1014 1446/2936/1013 1448/3110/1052 +f 1429/3040/1077 1426/3143/1110 1436/3112/1091 +f 1383/3113/1103 1378/2953/1025 1394/2941/1016 +f 1395/3086/1023 1391/3158/1111 1401/3116/1058 +f 1432/3041/832 1442/2935/875 1435/2937/1014 +f 1420/3053/1041 1431/3052/1065 1427/3027/1066 +f 1398/3058/1082 1407/3057/1008 1402/2969/1035 +f 1466/2736/827 1462/2945/1019 1472/2991/1046 +f 1396/3114/1017 1398/3059/1082 1374/3060/1048 +f 1415/3121/1063 1412/3082/1057 1422/3122/1075 +f 1382/2994/1047 1376/3049/1080 1378/2953/1025 +f 1380/3127/1106 1379/3182/1024 1384/2973/1038 +f 1372/3130/1022 1379/3182/1024 1380/3127/1106 +f 1399/2964/1033 1410/3018/1062 1411/3020/826 +f 1431/3024/1065 1441/3178/1061 1437/3048/1060 +f 1409/3132/1042 1413/2999/1045 1402/2998/1035 +f 1411/3020/826 1414/3098/1095 1403/2921/1003 +f 1495/3133/1108 1497/3181/1099 1487/3095/1043 +f 1397/2972/1037 1393/2963/825 1377/2913/908 +f 1485/3135/977 1482/3166/1050 1493/3136/1093 +f 1414/3098/1095 1424/3099/1096 1417/3141/1081 +f 1415/3021/1063 1410/3018/1062 1399/2964/1033 +f 1433/3061/1073 1443/3062/993 1436/3112/1091 +f 1461/3074/1087 1455/2985/901 1452/3080/838 +f 1371/2947/1007 1390/2949/1021 1391/3144/1111 +f 1462/2945/1019 1466/2736/827 1455/2985/901 +f 1506/3107/1097 1501/3148/1098 1490/3145/1109 +f 1485/3135/977 1489/3137/1101 1490/3140/1109 +f 1486/2992/833 1483/3160/1113 1494/2956/1027 +f 1504/3030/1069 1508/3029/1068 1509/3146/1079 +f 1492/3149/1094 1503/3154/1071 1505/2954/1026 +f 1514/3150/1070 1380/3183/1106 1385/2912/997 +f 1497/3103/1099 1500/3105/1009 1503/3154/1071 +f 1443/2908/993 1444/2907/992 1447/3087/1085 +f 1491/3091/1092 1496/2955/852 1498/3157/829 +f 1465/2978/1010 1474/2977/979 1477/3120/978 +f 1406/2976/1039 1401/3116/1058 1391/3158/1111 +f 1505/2954/1026 1515/3151/1112 1510/2928/849 +f 1441/3017/1061 1438/3111/1054 1448/3110/1052 +f 1480/3097/1051 1492/3096/1094 1494/2956/1027 +f 1434/3117/1104 1428/3180/1053 1417/3051/1081 +f 1425/3123/1074 1418/3081/1089 1410/3018/1062 +f 1370/2910/995 1380/3183/1106 1514/3150/1070 +f 1421/3019/845 1432/3041/832 1434/3117/1104 +f 1370/3131/995 1386/2924/1006 1371/2926/1007 +f 1388/2996/1049 1374/2995/1048 1375/2917/999 +f 1376/3049/1080 1389/2914/828 1377/2913/908 +f 1457/2961/1031 1467/3177/1029 1470/3163/1020 +f 1488/3012/1056 1491/3091/1092 1493/3136/1093 diff --git a/src/main/resources/assets/hbm/textures/gui/weapon/gadgetSchematic.png b/src/main/resources/assets/hbm/textures/gui/weapon/gadgetSchematic.png index d51aeb1a2228bb537bb8aeede2927022d0ccb7cc..3da9d72c8829988a758c146155aa6af85d378947 100644 GIT binary patch literal 9943 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ℑPs5=;RhCK{k)I9QRD0Yx=P3asvF53u|Wo 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%0DcFDi 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 HGzt74ARw2w diff --git a/src/main/resources/assets/hbm/textures/models/missileNuclear.png b/src/main/resources/assets/hbm/textures/models/missileNuclear.png deleted file mode 100644 index 3ff7998b2d9f35e0c74bd3ee2a71b673fba5ca2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10973 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 Date: Tue, 2 Jan 2024 23:43:28 +0100 Subject: [PATCH 198/207] getting railed --- src/main/java/com/hbm/blocks/ModBlocks.java | 7 +- .../blocks/machine/MachineAutocrafter.java | 40 +++-- .../com/hbm/blocks/machine/MachineFunnel.java | 138 ++++++++++++++++++ .../{IRenderRail.java => IRenderBlock.java} | 2 +- .../com/hbm/blocks/rail/RailNarrowCurve.java | 2 +- .../hbm/blocks/rail/RailNarrowStraight.java | 2 +- .../hbm/blocks/rail/RailStandardBuffer.java | 2 +- .../hbm/blocks/rail/RailStandardCurve.java | 2 +- .../blocks/rail/RailStandardCurveWide.java | 2 +- .../com/hbm/blocks/rail/RailStandardRamp.java | 2 +- .../hbm/blocks/rail/RailStandardStraight.java | 2 +- .../rail/RailStandardStraightShort.java | 2 +- .../hbm/blocks/rail/RailStandardSwitch.java | 2 +- .../rail/RailStandardSwitchFlipped.java | 2 +- .../com/hbm/inventory/OreDictManager.java | 2 +- .../inventory/container/ContainerFunnel.java | 64 ++++++++ .../java/com/hbm/inventory/gui/GUIFunnel.java | 42 ++++++ .../java/com/hbm/main/CraftingManager.java | 1 + .../java/com/hbm/main/ResourceManager.java | 1 + .../java/com/hbm/render/block/RenderRail.java | 6 +- .../java/com/hbm/tileentity/TileMappings.java | 3 +- .../machine/TileEntityMachineAutocrafter.java | 4 + .../machine/TileEntityMachineFunnel.java | 118 +++++++++++++++ src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 3 + .../assets/hbm/models/blocks/funnel.obj | 90 ++++++++++++ .../hbm/textures/blocks/machine_funnel.png | Bin 0 -> 263 bytes .../textures/blocks/machine_funnel_bottom.png | Bin 0 -> 304 bytes .../textures/blocks/machine_funnel_side.png | Bin 0 -> 305 bytes .../textures/blocks/machine_funnel_top.png | Bin 0 -> 316 bytes .../textures/gui/processing/gui_funnel.png | Bin 0 -> 1164 bytes 31 files changed, 505 insertions(+), 39 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineFunnel.java rename src/main/java/com/hbm/blocks/rail/{IRenderRail.java => IRenderBlock.java} (95%) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerFunnel.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIFunnel.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java create mode 100644 src/main/resources/assets/hbm/models/blocks/funnel.obj create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_funnel.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_funnel_bottom.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_funnel_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_funnel_top.png create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_funnel.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 26203971a..f67d7a6f0 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1105,8 +1105,9 @@ public class ModBlocks { public static Block machine_waste_drum; public static Block machine_storage_drum; - + public static Block machine_autocrafter; + public static Block machine_funnel; public static Block anvil_iron; public static Block anvil_lead; @@ -2344,6 +2345,7 @@ public class ModBlocks { machine_electrolyser = new MachineElectrolyser().setBlockName("machine_electrolyser").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); machine_autocrafter = new MachineAutocrafter().setBlockName("machine_autocrafter").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab); + machine_funnel = new MachineFunnel().setBlockName("machine_funnel").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab); anvil_iron = new NTMAnvil(Material.iron, 1).setBlockName("anvil_iron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_iron"); anvil_lead = new NTMAnvil(Material.iron, 1).setBlockName("anvil_lead").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_lead"); @@ -3122,7 +3124,8 @@ public class ModBlocks { GameRegistry.registerBlock(boat, boat.getUnlocalizedName()); //Machines - GameRegistry.registerBlock(machine_autocrafter, ItemBlockBase.class, machine_autocrafter.getUnlocalizedName()); + register(machine_autocrafter); + register(machine_funnel); GameRegistry.registerBlock(anvil_iron, ItemBlockBase.class, anvil_iron.getUnlocalizedName()); GameRegistry.registerBlock(anvil_lead, ItemBlockBase.class, anvil_lead.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java b/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java index f4fabf399..1c922fab5 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java @@ -24,10 +24,8 @@ import net.minecraft.world.World; public class MachineAutocrafter extends BlockContainer { - @SideOnly(Side.CLIENT) - private IIcon iconTop; - @SideOnly(Side.CLIENT) - private IIcon iconBottom; + @SideOnly(Side.CLIENT) private IIcon iconTop; + @SideOnly(Side.CLIENT) private IIcon iconBottom; public MachineAutocrafter() { super(Material.iron); @@ -67,48 +65,48 @@ public class MachineAutocrafter extends BlockContainer { } } - private final Random field_149933_a = new Random(); + private final Random rand = new Random(); @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { - ISidedInventory tileentityfurnace = (ISidedInventory) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + ISidedInventory tile = (ISidedInventory) world.getTileEntity(x, y, z); - if(tileentityfurnace != null) { + if(tile != null) { - for(int i1 = 10; i1 < tileentityfurnace.getSizeInventory(); ++i1) { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + for(int i1 = 10; i1 < tile.getSizeInventory(); ++i1) { + ItemStack itemstack = tile.getStackInSlot(i1); if(itemstack != null) { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; while(itemstack.stackSize > 0) { - int j1 = this.field_149933_a.nextInt(21) + 10; + int j1 = this.rand.nextInt(21) + 10; if(j1 > itemstack.stackSize) { j1 = itemstack.stackSize; } itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); if(itemstack.hasTagCompound()) { entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); } float f3 = 0.05F; - entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); + entityitem.motionX = (float) this.rand.nextGaussian() * f3; + entityitem.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) this.rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); } } } - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); + world.func_147453_f(x, y, z, block); } - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); + super.breakBlock(world, x, y, z, block, meta); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFunnel.java b/src/main/java/com/hbm/blocks/machine/MachineFunnel.java new file mode 100644 index 000000000..7506e2218 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineFunnel.java @@ -0,0 +1,138 @@ +package com.hbm.blocks.machine; + +import java.util.List; +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.rail.IRenderBlock; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; +import com.hbm.tileentity.machine.TileEntityMachineFunnel; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class MachineFunnel extends BlockContainer implements ITooltipProvider, IRenderBlock { + + @SideOnly(Side.CLIENT) private IIcon iconTop; + @SideOnly(Side.CLIENT) private IIcon iconBottom; + + public MachineFunnel() { + super(Material.iron); + } + + @Override public int getRenderType() { return renderID; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_funnel_top"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_funnel_side"); + this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":machine_funnel_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityMachineFunnel(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + TileEntity entity = world.getTileEntity(x, y, z); + if(entity instanceof TileEntityMachineFunnel) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + } + return true; + } else { + return false; + } + } + + private final Random rand = new Random(); + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + ISidedInventory tile = (ISidedInventory) world.getTileEntity(x, y, z); + if(tile != null) { + for(int i1 = 0; i1 < tile.getSizeInventory(); ++i1) { + ItemStack itemstack = tile.getStackInSlot(i1); + if(itemstack != null) { + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + while(itemstack.stackSize > 0) { + int j1 = this.rand.nextInt(21) + 10; + if(j1 > itemstack.stackSize) j1 = itemstack.stackSize; + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + if(itemstack.hasTagCompound()) entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + float f3 = 0.05F; + entityitem.motionX = (float) this.rand.nextGaussian() * f3; + entityitem.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) this.rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); + } + } + } + world.func_147453_f(x, y, z, block); + } + super.breakBlock(world, x, y, z, block, meta); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glTranslatef(0F, -0.5F, 0F); + tessellator.startDrawingQuads(); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.funnel, "Top", block.getIcon(1, 0), tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.funnel, "Bottom", block.getIcon(0, 0), tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.funnel, "Side", block.getIcon(2, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.funnel, "Top", block.getIcon(1, 0), tessellator, 0, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.funnel, "Bottom", block.getIcon(0, 0), tessellator, 0, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.funnel, "Side", block.getIcon(2, 0), tessellator, 0, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + } +} diff --git a/src/main/java/com/hbm/blocks/rail/IRenderRail.java b/src/main/java/com/hbm/blocks/rail/IRenderBlock.java similarity index 95% rename from src/main/java/com/hbm/blocks/rail/IRenderRail.java rename to src/main/java/com/hbm/blocks/rail/IRenderBlock.java index 4b3cf8346..7cf90e9fd 100644 --- a/src/main/java/com/hbm/blocks/rail/IRenderRail.java +++ b/src/main/java/com/hbm/blocks/rail/IRenderBlock.java @@ -7,7 +7,7 @@ import net.minecraft.block.Block; import net.minecraft.client.renderer.Tessellator; import net.minecraft.world.IBlockAccess; -public interface IRenderRail { +public interface IRenderBlock { public static int renderID = RenderingRegistry.getNextAvailableRenderId(); diff --git a/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java index ecf690121..861bda8c0 100644 --- a/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java @@ -22,7 +22,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailNarrowCurve extends BlockDummyable implements IRailNTM, IRenderRail { +public class RailNarrowCurve extends BlockDummyable implements IRailNTM, IRenderBlock { public RailNarrowCurve() { super(Material.iron); diff --git a/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java index 4b84f25c2..45bf500c8 100644 --- a/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java @@ -22,7 +22,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailNarrowStraight extends BlockDummyable implements IRailNTM, IRenderRail { +public class RailNarrowStraight extends BlockDummyable implements IRailNTM, IRenderBlock { public RailNarrowStraight() { super(Material.iron); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java index 20e345172..07e07c6b2 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java @@ -21,7 +21,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardBuffer extends BlockDummyable implements IRailNTM, IRenderRail { +public class RailStandardBuffer extends BlockDummyable implements IRailNTM, IRenderBlock { public RailStandardBuffer() { super(Material.iron); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java index a8e69b8a8..e4e394469 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -22,7 +22,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRenderRail { +public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRenderBlock { public RailStandardCurve() { super(Material.iron); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java index 3935cf5c6..221832df8 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java @@ -22,7 +22,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardCurveWide extends BlockDummyable implements IRailNTM, IRenderRail { +public class RailStandardCurveWide extends BlockDummyable implements IRailNTM, IRenderBlock { public RailStandardCurveWide() { super(Material.iron); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java index c9a1e6010..aab9ed31d 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java @@ -23,7 +23,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardRamp extends BlockDummyable implements IRailNTM, IRenderRail { +public class RailStandardRamp extends BlockDummyable implements IRailNTM, IRenderBlock { public RailStandardRamp() { super(Material.iron); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index f448d7881..3fc0ff745 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -22,7 +22,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardStraight extends BlockDummyable implements IRailNTM, IRenderRail { +public class RailStandardStraight extends BlockDummyable implements IRailNTM, IRenderBlock { public RailStandardStraight() { super(Material.iron); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraightShort.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraightShort.java index 02aca06f3..44ed16f6a 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraightShort.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraightShort.java @@ -22,7 +22,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardStraightShort extends BlockDummyable implements IRailNTM, IRenderRail { +public class RailStandardStraightShort extends BlockDummyable implements IRailNTM, IRenderBlock { public RailStandardStraightShort() { super(Material.iron); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java b/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java index f08785d44..d35adb57d 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardSwitch.java @@ -28,7 +28,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardSwitch extends BlockRailWaypointSystem implements IRenderRail { +public class RailStandardSwitch extends BlockRailWaypointSystem implements IRenderBlock { @SideOnly(Side.CLIENT) private IIcon iconSign; diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java b/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java index 58b280786..25cc227e1 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardSwitchFlipped.java @@ -25,7 +25,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardSwitchFlipped extends BlockRailWaypointSystem implements IRenderRail { +public class RailStandardSwitchFlipped extends BlockRailWaypointSystem implements IRenderBlock { @SideOnly(Side.CLIENT) private IIcon iconSign; diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 211c4cab1..8b7589e11 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -362,7 +362,7 @@ public class OreDictManager { TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy) .block(block_tcalloy); CDALLOY .ingot(ingot_cdalloy) .block(block_cdalloy); PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead, ore_meteor_lead); - BI .nugget(nugget_bismuth) .billet(billet_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth); + BI .nugget(nugget_bismuth) .billet(billet_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth) .block(block_bismuth); AS .nugget(nugget_arsenic) .ingot(ingot_arsenic); CA .ingot(ingot_calcium) .dust(powder_calcium); CD .ingot(ingot_cadmium) .dust(powder_cadmium) .block(block_cadmium); diff --git a/src/main/java/com/hbm/inventory/container/ContainerFunnel.java b/src/main/java/com/hbm/inventory/container/ContainerFunnel.java new file mode 100644 index 000000000..5cfb3bcfb --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerFunnel.java @@ -0,0 +1,64 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.tileentity.machine.TileEntityMachineFunnel; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerFunnel extends Container { + + private TileEntityMachineFunnel funnel; + + public ContainerFunnel(InventoryPlayer playerInv, TileEntityMachineFunnel tile) { + funnel = tile; + + for(int i = 0; i < 9; i++) this.addSlotToContainer(new Slot(tile, i, 8 + 18 * i, 18)); + for(int i = 0; i < 9; i++) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, i + 9, 8 + 18 * i, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 86 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 144)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return funnel.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(index); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(index <= 17) { + if(!this.mergeItemStack(var5, 18, this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(var5, 0, 9, false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIFunnel.java b/src/main/java/com/hbm/inventory/gui/GUIFunnel.java new file mode 100644 index 000000000..1ee5069b3 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIFunnel.java @@ -0,0 +1,42 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerFunnel; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineFunnel; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIFunnel extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_funnel.png"); + private TileEntityMachineFunnel funnel; + + public GUIFunnel(InventoryPlayer invPlayer, TileEntityMachineFunnel tedf) { + super(new ContainerFunnel(invPlayer, tedf)); + funnel = tedf; + + this.xSize = 176; + this.ySize = 168; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.funnel.hasCustomInventoryName() ? this.funnel.getInventoryName() : I18n.format(this.funnel.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 9203ee542..176368f1b 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -312,6 +312,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', ModItems.circuit_gold, 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', ModItems.circuit_copper, 'M', ModItems.motor, 'W', Blocks.crafting_table }); + addRecipeAuto(new ItemStack(ModBlocks.machine_funnel, 1), new Object[] { "S S", "SRS", " S ", 'S', STEEL.ingot(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); addRecipeAuto(new ItemStack(ModBlocks.machine_siren, 1), new Object[] { "SIS", "ICI", "SRS", 'S', STEEL.plate(), 'I', ANY_RUBBER.ingot(), 'C', ModItems.circuit_copper, 'R', REDSTONE.dust() }); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index d72e0509a..e25c691c7 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1472,6 +1472,7 @@ public class ResourceManager { public static final IModelCustom rail_standard_switch = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_switch.obj")); public static final IModelCustom rail_standard_switch_flipped = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_switch_flipped.obj")); public static final IModelCustom capacitor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/capacitor.obj")); + public static final IModelCustom funnel = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/funnel.obj")); public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj")); public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj")); diff --git a/src/main/java/com/hbm/render/block/RenderRail.java b/src/main/java/com/hbm/render/block/RenderRail.java index a9460d17a..ab366486b 100644 --- a/src/main/java/com/hbm/render/block/RenderRail.java +++ b/src/main/java/com/hbm/render/block/RenderRail.java @@ -2,7 +2,7 @@ package com.hbm.render.block; import org.lwjgl.opengl.GL11; -import com.hbm.blocks.rail.IRenderRail; +import com.hbm.blocks.rail.IRenderBlock; import com.hbm.blocks.rail.RailStandardStraight; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; @@ -17,7 +17,7 @@ public class RenderRail implements ISimpleBlockRenderingHandler { public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { GL11.glPushMatrix(); Tessellator tessellator = Tessellator.instance; - IRenderRail rail = (IRenderRail) block; + IRenderBlock rail = (IRenderBlock) block; rail.renderInventory(tessellator, block, metadata); GL11.glPopMatrix(); } @@ -28,7 +28,7 @@ public class RenderRail implements ISimpleBlockRenderingHandler { tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); tessellator.setColorOpaque_F(1, 1, 1); int meta = world.getBlockMetadata(x, y, z); - IRenderRail rail = (IRenderRail) block; + IRenderBlock rail = (IRenderBlock) block; rail.renderWorld(tessellator, block, meta, world, x, y, z); return true; } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index d51bdab4b..1eef03148 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -297,8 +297,9 @@ public class TileMappings { put(TileEntityFoundryOutlet.class, "tileentity_foundry_outlet"); put(TileEntityFoundrySlagtap.class, "tileentity_foundry_slagtap"); put(TileEntitySlag.class, "tileentity_foundry_slag"); - + put(TileEntityMachineAutocrafter.class, "tileentity_autocrafter"); + put(TileEntityMachineFunnel.class, "tileentity_funnel"); put(TileEntityDiFurnaceRTG.class, "tileentity_rtg_difurnace"); put(TileEntityMachineRadiolysis.class, "tileentity_radiolysis"); put(TileEntityUVLamp.class, "tileentity_uv_lamp"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java index 6b964c3a0..b93815fdb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java @@ -369,6 +369,10 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen } } + public void clear() { + for(int i = 0; i < this.getSizeInventory(); i++) this.setInventorySlotContents(i, null); + } + public static class ContainerBlank extends Container { @Override public void onCraftMatrixChanged(IInventory inventory) { } @Override public boolean canInteractWith(EntityPlayer player) { return false; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java new file mode 100644 index 000000000..ee40ccf8f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java @@ -0,0 +1,118 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.container.ContainerFunnel; +import com.hbm.inventory.gui.GUIFunnel; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.machine.TileEntityMachineAutocrafter.InventoryCraftingAuto; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.world.World; + +public class TileEntityMachineFunnel extends TileEntityMachineBase implements IGUIProvider { + + public TileEntityMachineFunnel() { + super(18); + } + + @Override + public String getName() { + return "container.machineFunnel"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + for(int i = 0; i < 9; i++) { + + if(slots[i] != null) { + int stacksize = 9; + ItemStack compressed = slots[i].stackSize < 9 ? null : this.getFrom9(slots[i]); + if(compressed == null) { + compressed = slots[i].stackSize < 4 ? null : this.getFrom4(slots[i]); + stacksize = 4; + } + + if(compressed != null && slots[i].stackSize >= stacksize) { + if(slots[i + 9] == null) { + slots[i + 9] = compressed.copy(); + this.decrStackSize(i, stacksize); + } else if(slots[i + 9].getItem() == compressed.getItem() && slots[i + 9].getItemDamage() == compressed.getItemDamage() && slots[i + 9].stackSize + compressed.stackSize <= compressed.getMaxStackSize()) { + slots[i + 9].stackSize += compressed.stackSize; + this.decrStackSize(i, stacksize); + } + } + } + } + } + } + + public int[] topAccess = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; + public int[] bottomAccess = new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 17 }; + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return side == 0 ? bottomAccess : topAccess; + } + + @Override + public boolean canExtractItem(int i, ItemStack stack, int j) { + if(j == 0) return i > 8; + return j != 1 && i < 9; + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + if(slot > 8) return false; + return this.getFrom9(stack) != null || this.getFrom4(stack) != null; + } + + protected InventoryCraftingAuto craftingInventory = new InventoryCraftingAuto(3, 3); + + public ItemStack getFrom4(ItemStack ingredient) { + this.craftingInventory.clear(); + this.craftingInventory.setInventorySlotContents(0, ingredient.copy()); + this.craftingInventory.setInventorySlotContents(1, ingredient.copy()); + this.craftingInventory.setInventorySlotContents(3, ingredient.copy()); + this.craftingInventory.setInventorySlotContents(4, ingredient.copy()); + return getMatch(this.craftingInventory); + } + + public ItemStack getFrom9(ItemStack ingredient) { + this.craftingInventory.clear(); + for(int i = 0; i < 9; i++) this.craftingInventory.setInventorySlotContents(i, ingredient.copy()); + return getMatch(this.craftingInventory); + } + + public ItemStack getMatch(InventoryCrafting grid) { + for(Object o : CraftingManager.getInstance().getRecipeList()) { + IRecipe recipe = (IRecipe) o; + + if(recipe.matches(grid, worldObj)) { + return recipe.getCraftingResult(grid); + } + } + return null; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerFunnel(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIFunnel(player.inventory, this); + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a07ccfd74..b5ce978b9 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -352,6 +352,7 @@ container.machineDiesel=Dieselgenerator container.machineElectricBoiler=Elektrischer Ölwärmer container.machineElectrolyser=Electrolysegerät container.machineFEL=FEL +container.machineFunnel=Kombinationstrichter container.machineITER=Kernfusionsreaktor container.machineLargeTurbine=Industrielle Dampfturbine container.machineLiquefactor=Verflüssiger @@ -4129,6 +4130,8 @@ tile.machine_fluidtank.name=Tank tile.machine_forcefield.name=Kraftfeldgenerator tile.machine_fracking_tower.name=Hydraulischer Frackingturm tile.machine_fraction_tower.name=Fraktionierungsturm +tile.machine_funnel.name=Kombinationstrichter +tile.machine_funnel.desc=Verbindet Items in einem 2x2 oder 3x3 Craftingfeld$Oben: Input$Unten: Output$Seite: Output für Item-Eingang tile.machine_gascent.name=Gaszentrifuge tile.machine_generator.name=Atomreaktor (Alt) tile.machine_geo.name=Geothermiegenerator diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f9681a2c0..845be3e2f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -711,6 +711,7 @@ container.machineDiesel=Diesel Generator container.machineElectricBoiler=Electric Oil Heater container.machineElectrolyser=Electrolysis Machine container.machineFEL=FEL +container.machineFunnel=Combinator Funnel container.machineITER=Fusion Reactor container.machineLargeTurbine=Industrial Steam Turbine container.machineLiquefactor=Liquefactor @@ -5125,6 +5126,8 @@ tile.machine_fluidtank.name=Tank tile.machine_forcefield.name=Forcefield Emitter tile.machine_fraction_tower.name=Fractioning Tower tile.machine_fracking_tower.name=Hydraulic Fracking Tower +tile.machine_funnel.name=Combinator Funnel +tile.machine_funnel.desc=Automatically compresses items in a 2x2 or 3x3 crafting grid$Top: Input$Bottom: Output$Side: Output for clearing incredients tile.machine_gascent.name=Gas Centrifuge tile.machine_generator.name=Nuclear Reactor (Old) tile.machine_geo.name=Geothermal Electric Generator diff --git a/src/main/resources/assets/hbm/models/blocks/funnel.obj b/src/main/resources/assets/hbm/models/blocks/funnel.obj new file mode 100644 index 000000000..c166fd7a3 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/funnel.obj @@ -0,0 +1,90 @@ +# Blender v2.79 (sub 0) OBJ File: 'funnel.blend' +# www.blender.org +o Bottom +v -0.250000 0.000000 0.250000 +v -0.250000 0.000000 -0.250000 +v 0.250000 0.000000 0.250000 +v 0.250000 0.000000 -0.250000 +vt 0.750000 0.750000 +vt 0.250000 0.250000 +vt 0.750000 0.250000 +vt 0.250000 0.750000 +vn 0.0000 -1.0000 0.0000 +s off +f 4/1/1 1/2/1 2/3/1 +f 4/1/1 3/4/1 1/2/1 +o Top +v -0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 1.000000 -0.500000 +vt 1.000000 1.000000 +vt -0.000000 0.000000 +vt 1.000000 0.000000 +vt -0.000000 1.000000 +vn 0.0000 1.0000 0.0000 +s off +f 6/5/2 7/6/2 8/7/2 +f 6/5/2 5/8/2 7/6/2 +o Side +v -0.250000 0.000000 0.250000 +v -0.500000 1.000000 0.500000 +v -0.250000 0.000000 -0.250000 +v -0.500000 1.000000 -0.500000 +v 0.250000 0.000000 0.250000 +v 0.500000 1.000000 0.500000 +v 0.250000 0.000000 -0.250000 +v 0.500000 1.000000 -0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v 0.500000 0.500000 0.500000 +vt 1.000000 1.000000 +vt 0.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 1.000000 +vt 0.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 1.000000 +vt -0.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 1.000000 +vt -0.000000 0.500000 +vt 1.000000 0.500000 +vt 0.250000 0.000000 +vt 0.750000 0.000000 +vt 0.250000 0.000000 +vt 0.750000 0.000000 +vt 0.250000 0.000000 +vt 0.750000 0.000000 +vt 0.250000 0.000000 +vt 0.750000 -0.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000097 0.999903 +vt 0.000097 0.999903 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.4472 0.8944 +vn 0.8944 -0.4472 0.0000 +vn 0.0000 -0.4472 -0.8944 +vn -0.8944 -0.4472 0.0000 +s off +f 10/9/3 18/10/3 17/11/3 +f 12/12/4 19/13/4 18/14/4 +f 16/15/5 20/16/5 19/17/5 +f 14/18/6 17/19/6 20/20/6 +f 20/20/7 9/21/7 13/22/7 +f 19/17/8 13/23/8 15/24/8 +f 18/14/9 15/25/9 11/26/9 +f 17/11/10 11/27/10 9/28/10 +f 10/9/3 12/29/3 18/10/3 +f 12/12/4 16/30/4 19/13/4 +f 16/15/5 14/31/5 20/16/5 +f 14/18/6 10/32/6 17/19/6 +f 20/20/7 17/19/7 9/21/7 +f 19/17/8 20/16/8 13/23/8 +f 18/14/9 19/13/9 15/25/9 +f 17/11/10 18/10/10 11/27/10 diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_funnel.png b/src/main/resources/assets/hbm/textures/blocks/machine_funnel.png new file mode 100644 index 0000000000000000000000000000000000000000..40cdfa516c7041a10647f36c393a1774c102d917 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfggteYXJKO^_G?^V^fPe7kAc)I$z JtaD0e0sxv4WDEcR literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_funnel_bottom.png b/src/main/resources/assets/hbm/textures/blocks/machine_funnel_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..0ffb54e3dff9f8811bfa67ddbb4b345a39ac4a72 GIT binary patch literal 304 zcmV-00nh%4P)z9wA7Nq-ks{CSP=z`n>Cl_N z_TBlM$23hZV+{X5MCgn$EXx9b_nvVavu|BX^%x`8TDEQDsT+DwlfCyha*Pq+BTzb* z8??v(U2;o9>$=jqiHI=IGa&@}zW)knM`H}faa0AIa~C;;@D(WY1DxlX{SU(ckddz& z=&Tyv`&&JcQ-th@HIWvw2>PlTWvp6+4!~MVDU>p|oHKz$w$>sdIOnQl5xH%VMTjw8 z@2m$kq52AXHQg+0CHWF4U216cI}u^u_a^ZdM1(iymAi|S+N@3h0000=4qxRibQjh@3bV;3|NGylxkjkxQs%RBvo- zKl=mAaU5UHIsRiJ!seXgx-N3g#25j{IrpX*<iuo zV7I6#Y+v8z)>(sXw0@Rb-@)%}8yiK0l+v_WL>{?sWUBm(e?Iu600000NkvXXu0mjf DE|`9> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_funnel_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_funnel_top.png new file mode 100644 index 0000000000000000000000000000000000000000..151899a23bf0a2f49c0f1006f5d33579af29003c GIT binary patch literal 316 zcmV-C0mJ@@P)J#NJy5QM*2uR};I2cdK83%K)L-TMsgeFZ>5)JYLR%nRh_ zO@(%MMl*Mq=6$b~dP)hcHOF!AxHtBF2VmqV=M2EQ zuB4OzJ_YV%?>*l8p>1m|`@XX*%a_32Hb4lWOBRuDk!l2`6yEzves*E4C4_*8pp+uU z2*A`E?nM~In(h()17pnC!C%lsC@Xmd6M)vbDfS|bV%9B`BM}io2wj4RG_zHpL@1|Q z277oGt`3}Yoac$P_SaK(&b0zDMvO5{;~B=7`tyy0oHN&T4T(P?=gbFr+kTy|9?jhV O0000M=zsob$X)!h=FfkltVQAuHU=e2EP-77AVNjUC z;9vlk*n948+V#@a`3rJyOC7)1H}|OZ^wX(d`R>o=b+~$*d4t>i@1}i=Wv#o*YrIPB z^%zk#<1`f_VOA~YaC_U;?|)xOZ%l4a&RUfecJ$UIU6wd-lOjf|7s3gv#BV1Q}M~Z|1*Py?0d$XEpzVeYZiTFZ*=Yzc5aw|lOd$mh9Ub)ZTw@4TN^i59AEmfE`|vy*a-L>7|=Q2 zY#O%Zu73afs(I3JzT;1P9Q=;YY`9&>iN|Ni5tZ}p@qyUuYxgxO*WKSUxA<+0-t?>1 zHTh-?p`|O{cW$4&^KtU4-$a`RiS`XQKQr`wv;A0RRDQ!hIP|iKZ)j+}?4AcM3fAs7 zepV@6FyILdE!`Wp+U_6U<_W@$Z)EC@cRKw3D2FTcU=M~l94XH~Sib>kE#uq&*k!?A z3&9iT9+uDH*dqU)k)%L812*DtU79~jlX8*Lg)&4Wq}^vJ(b_Oq`Avb%)rb~1MuPTU#2rDZ#?T3t=|AL-qY33 JWt~$(69D_sk5d2u literal 0 HcmV?d00001 From 59c5efd49b39ca7cf7613eb4d6b5943ace7b03aa Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 4 Jan 2024 14:24:03 +0100 Subject: [PATCH 199/207] .44 but better --- .../handler/guncfg/Gun44MagnumFactory.java | 4 +- src/main/java/com/hbm/items/ModItems.java | 2 +- .../com/hbm/items/weapon/ItemGunBase.java | 2 + .../java/com/hbm/items/weapon/ItemGunBio.java | 3 - .../java/com/hbm/items/weapon/ItemGunPip.java | 137 + src/main/java/com/hbm/main/ClientProxy.java | 2 +- .../java/com/hbm/main/ResourceManager.java | 3 + .../com/hbm/render/anim/HbmAnimations.java | 3 +- .../item/weapon/ItemRenderWeaponLilMac.java | 253 + .../assets/hbm/models/weapons/lilmac.obj | 8226 +++++++++++++++++ src/main/resources/assets/hbm/sounds.json | 1 + .../assets/hbm/sounds/weapon/44Shoot.ogg | Bin 0 -> 25552 bytes .../hbm/textures/models/weapons/lilmac.png | Bin 0 -> 2997 bytes .../textures/models/weapons/lilmac_plume.png | Bin 0 -> 1525 bytes .../textures/models/weapons/lilmac_scope.png | Bin 0 -> 934 bytes 15 files changed, 8628 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/hbm/items/weapon/ItemGunPip.java create mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java create mode 100644 src/main/resources/assets/hbm/models/weapons/lilmac.obj create mode 100644 src/main/resources/assets/hbm/sounds/weapon/44Shoot.ogg create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/lilmac.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/lilmac_plume.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/lilmac_scope.png diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index 515b1b8bf..d6baf146d 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -47,14 +47,14 @@ public class Gun44MagnumFactory { config.roundsPerCycle = 1; config.gunMode = GunConfiguration.MODE_NORMAL; config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; + config.reloadDuration = 50; config.firingDuration = 0; config.ammoCap = 6; config.reloadType = GunConfiguration.RELOAD_FULL; config.allowsInfinity = true; config.crosshair = Crosshair.L_CLASSIC; config.reloadSound = GunConfiguration.RSOUND_REVOLVER; - config.firingSound = "hbm:weapon.revolverShootAlt"; + config.firingSound = "hbm:weapon.44Shoot"; config.reloadSoundEnd = false; config.config.addAll(HbmCollection.m44Normal); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 30d2e7b34..5f5629bf3 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4161,7 +4161,7 @@ public class ModItems { gun_revolver_cursed = new ItemGunBase(Gun357MagnumFactory.getRevolverCursedConfig()).setUnlocalizedName("gun_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed"); gun_revolver_nightmare = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmareConfig()).setUnlocalizedName("gun_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare"); gun_revolver_nightmare2 = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmare2Config()).setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); - gun_revolver_pip = new ItemGunBase(Gun44MagnumFactory.getMacintoshConfig()).setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); + gun_revolver_pip = new ItemGunPip(Gun44MagnumFactory.getMacintoshConfig()).setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); gun_revolver_nopip = new ItemGunBase(Gun44MagnumFactory.getNovacConfig()).setUnlocalizedName("gun_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nopip"); gun_revolver_blackjack = new ItemGunBase(Gun44MagnumFactory.getBlackjackConfig()).setUnlocalizedName("gun_revolver_blackjack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_blackjack"); gun_revolver_silver = new ItemGunBase(Gun44MagnumFactory.getSilverConfig()).setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 6ec696cab..58671762f 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -790,6 +790,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(!mainConfig.equipSound.isEmpty() && !player.worldObj.isRemote) { player.worldObj.playSoundAtEntity(player, mainConfig.equipSound, 1, 1); } + + if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.EQUIP.ordinal()), (EntityPlayerMP) player); } protected static void queueCasing(Entity entity, CasingEjector ejector, BulletConfiguration bullet, ItemStack stack) { diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBio.java b/src/main/java/com/hbm/items/weapon/ItemGunBio.java index f2788d810..47f1abd58 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBio.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBio.java @@ -22,7 +22,6 @@ public class ItemGunBio extends ItemGunBase { super(config); } - /* just a test */ public static long lastShot; public static List smokeNodes = new ArrayList(); @@ -66,8 +65,6 @@ public class ItemGunBio extends ItemGunBase { @Override @SideOnly(Side.CLIENT) public BusAnimation getAnimation(ItemStack stack, AnimType type) { - //GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig; - //return config.animations.get(type); if(type == AnimType.CYCLE) { lastShot = System.currentTimeMillis(); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunPip.java b/src/main/java/com/hbm/items/weapon/ItemGunPip.java new file mode 100644 index 000000000..1a4179dd9 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemGunPip.java @@ -0,0 +1,137 @@ +package com.hbm.items.weapon; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.handler.GunConfiguration; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class ItemGunPip extends ItemGunBase { + + public static long lastShot; + public static List smokeNodes = new ArrayList(); + + public ItemGunPip(GunConfiguration config) { + super(config); + } + + @Override + @SideOnly(Side.CLIENT) + protected void updateClient(ItemStack stack, World world, EntityPlayer entity, int slot, boolean isCurrentItem) { + super.updateClient(stack, world, entity, slot, isCurrentItem); + + boolean smoking = lastShot + 2000 > System.currentTimeMillis(); + + if(!smoking && !smokeNodes.isEmpty()) { + smokeNodes.clear(); + } + + if(smoking) { + Vec3 prev = Vec3.createVectorHelper(-entity.motionX, -entity.motionY, -entity.motionZ); + prev.rotateAroundY((float) (entity.rotationYaw * Math.PI / 180D)); + double accel = 15D; + double side = (entity.rotationYaw - entity.prevRotationYawHead) * 0.1D; + double waggle = 0.025D; + + for(double[] node : smokeNodes) { + node[0] += -prev.zCoord * accel + world.rand.nextGaussian() * waggle; + node[1] += prev.yCoord + 1.5D; + node[2] += prev.xCoord * accel + world.rand.nextGaussian() * waggle + side; + } + + double alpha = (System.currentTimeMillis() - lastShot) / 2000D; + alpha = (1 - alpha) * 0.5D; + + if(this.getIsReloading(stack)) alpha = 0; + + smokeNodes.add(new double[] {0, 0, 0, alpha}); + } + } + + @Override + @SideOnly(Side.CLIENT) + public BusAnimation getAnimation(ItemStack stack, AnimType type) { + + if(type == AnimType.EQUIP) { + return new BusAnimation() + .addBus("ROTATE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(-360, 0, 0, 350)) + ); + } + + if(type == AnimType.CYCLE) { + lastShot = System.currentTimeMillis(); + return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 50)) + .addKeyframe(new BusAnimationKeyframe(0, 0, -3, 50)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) + ) + .addBus("HAMMER", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 50)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 300)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200)) + ) + .addBus("DRUM", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 50)) + ); + } + + if(type == AnimType.RELOAD) { + int s = 1; + return new BusAnimation() + .addBus("RELAOD_TILT", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(-15, 0, 0, 100 * s)) + .addKeyframe(new BusAnimationKeyframe(65, 0, 0, 100 * s)) //200 + .addKeyframe(new BusAnimationKeyframe(45, 0, 0, 50 * s)) //250 + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200 * s)) //450 + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 1450 * s)) //1900 + .addKeyframe(new BusAnimationKeyframe(-80, 0, 0, 100 * s)) //2000 + .addKeyframe(new BusAnimationKeyframe(-80, 0, 0, 100 * s)) //2100 + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200 * s)) //2300 + ) + .addBus("RELOAD_CYLINDER", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200 * s)) + .addKeyframe(new BusAnimationKeyframe(90, 0, 0, 100 * s)) //300 + .addKeyframe(new BusAnimationKeyframe(90, 0, 0, 1700 * s)) //2000 + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 70 * s)) //2100 + ) + .addBus("RELOAD_LIFT", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 350 * s)) + .addKeyframe(new BusAnimationKeyframe(-45, 0, 0, 250 * s)) //600 + .addKeyframe(new BusAnimationKeyframe(-45, 0, 0, 350 * s)) //950 + .addKeyframe(new BusAnimationKeyframe(-15, 0, 0, 200 * s)) //1150 + .addKeyframe(new BusAnimationKeyframe(-15, 0, 0, 1050 * s)) //2200 + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 100 * s)) //2300 + ) + .addBus("RELOAD_JOLT", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 600 * s)) + .addKeyframe(new BusAnimationKeyframe(2, 0, 0, 50 * s)) //650 + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 100 * s)) //750 + ) + .addBus("RELOAD_BULLETS", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 650 * s)) + .addKeyframe(new BusAnimationKeyframe(10, 0, 0, 300 * s)) //950 + .addKeyframe(new BusAnimationKeyframe(10, 0, 0, 200 * s)) //1150 + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 700 * s)) //1850 + ) + .addBus("RELOAD_BULLETS_CON", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 0 * s)) + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 950 * s)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 1 * s)) + ); + } + + return null; + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index ab715f454..c94f66408 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -536,7 +536,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderWeaponChemthrower()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_m2, new ItemRenderM2()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nopip, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_pip, new ItemRenderWeaponNovac()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_pip, new ItemRenderWeaponLilMac()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_blackjack, new ItemRenderWeaponNovac()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_silver, new ItemRenderWeaponNovac()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_red, new ItemRenderWeaponNovac()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index e25c691c7..89f81b449 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -828,6 +828,7 @@ public class ResourceManager { public static final IModelCustom cryocannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cryo_cannon.obj")).asDisplayList(); public static final IModelCustom uac_pistol = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/UAC pistol.obj")).asDisplayList(); public static final IModelCustom congolake = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/congolake.obj")).asDisplayList(); + public static final IModelCustom lilmac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lilmac.obj")).asDisplayList(); public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); @@ -925,6 +926,8 @@ public class ResourceManager { public static final ResourceLocation cryocannon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon.png"); public static final ResourceLocation uac_pistol_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/pistol_texture.png"); public static final ResourceLocation congolake_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/congolake.png"); + public static final ResourceLocation lilmac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac.png"); + public static final ResourceLocation lilmac_scope_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_scope.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); diff --git a/src/main/java/com/hbm/render/anim/HbmAnimations.java b/src/main/java/com/hbm/render/anim/HbmAnimations.java index ca9e9f986..239ca9bcc 100644 --- a/src/main/java/com/hbm/render/anim/HbmAnimations.java +++ b/src/main/java/com/hbm/render/anim/HbmAnimations.java @@ -20,7 +20,8 @@ public class HbmAnimations { CYCLE, //animation for every firing cycle ALT_CYCLE, //animation for alt fire cycles SPINUP, //animation for actionstart - SPINDOWN //animation for actionend + SPINDOWN, //animation for actionend + EQUIP //animation for drawing the weapon } public static class Animation { diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java new file mode 100644 index 000000000..7d79a4476 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java @@ -0,0 +1,253 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGunPip; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderWeaponLilMac implements IItemRenderer { + + public static final ResourceLocation lilmac_plume = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_plume.png"); + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + //prevent rendering when using scope + if(item.getItem() == ModItems.gun_revolver_pip && type == ItemRenderType.EQUIPPED_FIRST_PERSON && MainRegistry.proxy.me().isSneaking()) return; + + GL11.glPushMatrix(); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.1D; + GL11.glRotated(25, 0, 0, 1); + GL11.glTranslated(1.0, 0.25, -0.25); + GL11.glRotated(170, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + double width = 0.5D; + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] reloadLift = HbmAnimations.getRelevantTransformation("RELOAD_LIFT"); + double[] reloadJolt = HbmAnimations.getRelevantTransformation("RELOAD_JOLT"); + double[] equipSpin = HbmAnimations.getRelevantTransformation("ROTATE"); + GL11.glTranslated(2, 0, 0); + GL11.glRotated(equipSpin[0], 0, 0, 1); + GL11.glTranslated(-2, 0, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + Tessellator tess = Tessellator.instance; + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glTranslated(-10, 2.25, 0); + GL11.glTranslated(-recoil[2] * 3, -recoil[2] * 2, 0); + + if(ItemGunPip.smokeNodes.size() > 1 && equipSpin[0] == 0) { + + tess.startDrawingQuads(); + tess.setNormal(0F, 1F, 0F); + + for(int i = 0; i < ItemGunPip.smokeNodes.size() - 1; i++) { + double[] node = ItemGunPip.smokeNodes.get(i); + double[] past = ItemGunPip.smokeNodes.get(i + 1); + + tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); + tess.addVertex(node[0], node[1], node[2]); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertex(node[0], node[1], node[2] + width); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertex(past[0], past[1], past[2] + width); + tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); + tess.addVertex(past[0], past[1], past[2]); + + tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); + tess.addVertex(node[0], node[1], node[2]); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertex(node[0], node[1], node[2] - width); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertex(past[0], past[1], past[2] - width); + tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); + tess.addVertex(past[0], past[1], past[2]); + } + tess.draw(); + } + + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + + GL11.glTranslated(0, reloadLift[0] / -22D, 0); + + GL11.glTranslated(recoil[0], recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 10, 0, 0, 1); + GL11.glRotated(reloadLift[0], 0, 0, 1); + GL11.glTranslated(reloadJolt[0], 0, 0); + + double[] reloadTilt = HbmAnimations.getRelevantTransformation("RELAOD_TILT"); + GL11.glRotated(reloadTilt[0], 1, 0, 0); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); + ResourceManager.lilmac.renderPart("Scope"); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_tex); + ResourceManager.lilmac.renderPart("Gun"); + + double[] cylinderFlip = HbmAnimations.getRelevantTransformation("RELOAD_CYLINDER"); + GL11.glPushMatrix(); /// DRUM PUSH /// + GL11.glRotated(cylinderFlip[0], 1, 0, 0); + GL11.glTranslated(0, 1.75, 0); + GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0); + GL11.glTranslated(0, -1.75, 0); + ResourceManager.lilmac.renderPart("Cylinder"); + double[] reloadBullets = HbmAnimations.getRelevantTransformation("RELOAD_BULLETS"); + GL11.glTranslated(reloadBullets[0], reloadBullets[1], reloadBullets[2]); + if(HbmAnimations.getRelevantTransformation("RELOAD_BULLETS_CON")[0] != 1) + ResourceManager.lilmac.renderPart("Bullets"); + ResourceManager.lilmac.renderPart("Casings"); + GL11.glPopMatrix(); /// DRUM POP /// + + GL11.glPushMatrix(); /// HAMMER /// + GL11.glTranslated(4, 1.25, 0); + GL11.glRotated(-30 + 30 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 0, 0, 1); + GL11.glTranslated(-4, -1.25, 0); + ResourceManager.lilmac.renderPart("Hammer"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + int flash = 75; + if(System.currentTimeMillis() - ItemGunPip.lastShot < flash) { + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glPushMatrix(); + GL11.glTranslated(0.125, 2.25, 0); + + double fire = (System.currentTimeMillis() - ItemGunPip.lastShot) / (double) flash; + + double height = 4 * fire; + double length = 15 * fire; + double lift = 3 * fire; + double offset = 1 * fire; + double lengthOffset = 0.125; + Minecraft.getMinecraft().renderEngine.bindTexture(lilmac_plume); + tess.startDrawingQuads(); + tess.setNormal(0F, 1F, 0F); + tess.setColorRGBA_F(1F, 1F, 1F, 1F); + + tess.addVertexWithUV(0, -height, -offset, 1, 1); + tess.addVertexWithUV(0, height, -offset, 0, 1); + tess.addVertexWithUV(0, height + lift, length - offset, 0 ,0); + tess.addVertexWithUV(0, -height + lift, length - offset, 1, 0); + + tess.addVertexWithUV(0, height, offset, 0, 1); + tess.addVertexWithUV(0, -height, offset, 1, 1); + tess.addVertexWithUV(0, -height + lift, -length + offset, 1, 0); + tess.addVertexWithUV(0, height + lift, -length + offset, 0 ,0); + + tess.addVertexWithUV(0, -height, -offset, 1, 1); + tess.addVertexWithUV(0, height, -offset, 0, 1); + tess.addVertexWithUV(lengthOffset, height, length - offset, 0 ,0); + tess.addVertexWithUV(lengthOffset, -height, length - offset, 1, 0); + + tess.addVertexWithUV(0, height, offset, 0, 1); + tess.addVertexWithUV(0, -height, offset, 1, 1); + tess.addVertexWithUV(lengthOffset, -height, -length + offset, 1, 0); + tess.addVertexWithUV(lengthOffset, height, -length + offset, 0 ,0); + + GL11.glDepthMask(true); + tess.draw(); + GL11.glDepthMask(false); + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_BLEND); + } + + break; + + case EQUIPPED: + + double scale = 0.1D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(100, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(-3F, 1F, 4F); + + break; + + case ENTITY: + + double s1 = 0.075D; + GL11.glScaled(s1, s1, s1); + GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(0F, 1F, 0F); + + break; + + case INVENTORY: + + GL11.glEnable(GL11.GL_LIGHTING); + + double s = 0.8D; + GL11.glTranslated(8, 8, 0); + GL11.glRotated(180, 0, 1, 0); + GL11.glRotated(135, 0, 0, 1); + GL11.glScaled(s, s, -s); + + break; + + default: break; + } + + if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); + ResourceManager.lilmac.renderPart("Scope"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_tex); + ResourceManager.lilmac.renderPart("Gun"); + ResourceManager.lilmac.renderPart("Cylinder"); + ResourceManager.lilmac.renderPart("Bullets"); + ResourceManager.lilmac.renderPart("Casings"); + ResourceManager.lilmac.renderPart("Pivot"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + GL11.glPopMatrix(); + } +} diff --git a/src/main/resources/assets/hbm/models/weapons/lilmac.obj b/src/main/resources/assets/hbm/models/weapons/lilmac.obj new file mode 100644 index 000000000..1d7d326f6 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/lilmac.obj @@ -0,0 +1,8226 @@ +# Blender v2.79 (sub 0) OBJ File: 'lilmac.blend' +# www.blender.org +o Pivot +v 0.000000 0.000000 -0.187500 +v 0.000000 0.132583 -0.132583 +v 0.000000 0.187500 0.000000 +v 0.000000 0.132583 0.132582 +v 0.000000 0.000000 0.187500 +v 0.000000 -0.132583 0.132582 +v 0.000000 -0.187500 0.000000 +v 0.000000 -0.132583 -0.132582 +v -0.812500 0.000000 -0.187500 +v -0.812500 0.132583 -0.132583 +v -0.812500 0.187500 0.000000 +v -0.812500 0.132583 0.132582 +v -0.812500 0.000000 0.187500 +v -0.812500 -0.132583 0.132582 +v -0.812500 -0.187500 0.000000 +v -0.812500 -0.132583 -0.132582 +v 0.062500 1.750000 -0.187500 +v 0.062500 1.882583 -0.132582 +v 0.062500 1.937500 0.000000 +v 0.062500 1.882583 0.132583 +v 0.062500 1.750000 0.187500 +v 0.062500 1.617417 0.132583 +v 0.062500 1.562500 0.000000 +v 0.062500 1.617417 -0.132582 +v -1.001000 1.750000 -0.187500 +v -1.001000 1.882583 -0.132582 +v -1.001000 1.937500 0.000000 +v -1.001000 1.882583 0.132583 +v -1.001000 1.750000 0.187500 +v -1.001000 1.617417 0.132583 +v -1.001000 1.562500 0.000000 +v -1.001000 1.617417 -0.132582 +v -1.001000 1.750000 -0.125000 +v -1.001000 1.838388 -0.088388 +v -1.001000 1.875000 0.000000 +v -1.001000 1.838388 0.088389 +v -1.001000 1.750000 0.125000 +v -1.001000 1.661612 0.088389 +v -1.001000 1.625000 0.000000 +v -1.001000 1.661612 -0.088388 +v -2.937500 1.838388 -0.088388 +v -2.937500 1.750000 -0.125000 +v -2.937500 1.875000 0.000000 +v -2.937500 1.838388 0.088388 +v -2.937500 1.750000 0.125000 +v -2.937500 1.661612 0.088388 +v -2.937500 1.625000 0.000000 +v -2.937500 1.661612 -0.088388 +v 0.000000 -0.187500 0.000000 +v 0.000000 -0.187500 0.375000 +v 0.000000 1.937500 0.000000 +v 0.000000 1.937500 0.375000 +v -0.750000 -0.187500 0.000000 +v -0.750000 -0.187500 0.375000 +v -1.000000 1.937500 0.000000 +v -1.000000 1.937500 0.375000 +v 0.000000 1.437500 0.375000 +v -1.000000 1.437500 0.375000 +v 0.000000 0.312500 0.375000 +v -0.750000 0.312500 0.375000 +v 0.000000 0.687500 0.375000 +v -0.750000 0.687500 0.375000 +v 0.000000 1.062500 0.375000 +v -1.000000 1.062500 0.375000 +v -0.750000 0.500000 0.250000 +v 0.000000 0.500000 0.250000 +v 0.000000 1.250000 0.250000 +v -1.000000 1.250000 0.250000 +v -1.000000 1.062500 0.000000 +v -0.750000 0.687500 0.000000 +vt 0.244604 0.431737 +vt 0.248147 0.442105 +vt 0.244604 0.452473 +vt 0.241007 0.378947 +vt 0.244604 0.368421 +vt 0.244604 0.378947 +vt 0.241007 0.357895 +vt 0.244604 0.357895 +vt 0.244604 0.347368 +vt 0.241007 0.431579 +vt 0.244604 0.421053 +vt 0.244604 0.431579 +vt 0.241007 0.421053 +vt 0.244604 0.410526 +vt 0.241007 0.400000 +vt 0.244604 0.400000 +vt 0.241007 0.389474 +vt 0.244604 0.389474 +vt 0.179841 0.368286 +vt 0.176305 0.357849 +vt 0.179872 0.347504 +vt 0.420863 0.568421 +vt 0.399281 0.610526 +vt 0.399281 0.568421 +vt 0.392086 0.747368 +vt 0.420863 0.705263 +vt 0.420863 0.747368 +vt 0.352518 0.747368 +vt 0.381295 0.778947 +vt 0.352518 0.778947 +vt 0.420863 0.626316 +vt 0.399281 0.642105 +vt 0.399281 0.626316 +vt 0.352518 0.536842 +vt 0.374101 0.568421 +vt 0.352518 0.568421 +vt 0.392086 0.689474 +vt 0.420863 0.673684 +vt 0.420863 0.689474 +vt 0.420863 0.642105 +vt 0.392086 0.705263 +vt 0.420863 0.610526 +vt 0.345324 0.689474 +vt 0.345324 0.626316 +vt 0.388489 0.689474 +vt 0.381295 0.747368 +vt 0.388489 0.626316 +vt 0.381295 0.642105 +vt 0.381295 0.568421 +vt 0.392086 0.673684 +vt 0.392086 0.642105 +vt 0.381295 0.673684 +vt 0.242099 0.449437 +vt 0.241061 0.442105 +vt 0.242099 0.434774 +vt 0.247110 0.434774 +vt 0.247110 0.449437 +vt 0.241007 0.368421 +vt 0.241007 0.347368 +vt 0.241007 0.410526 +vt 0.177334 0.365210 +vt 0.177356 0.350515 +vt 0.182378 0.350579 +vt 0.183407 0.357940 +vt 0.182356 0.365274 +vt 0.374101 0.536842 +vt 0.341727 0.747368 +vt 0.341727 0.705263 +vt 0.341727 0.673684 +vt 0.341727 0.642105 +vt 0.341727 0.610526 +vt 0.341727 0.568421 +vt 0.392086 0.568421 +vt 0.392086 0.610526 +vt 0.374101 0.642105 +vt 0.248201 0.442105 +vt 0.273381 0.431579 +vt 0.273381 0.442105 +vt 0.248201 0.463158 +vt 0.273381 0.452632 +vt 0.273381 0.463158 +vt 0.248201 0.484211 +vt 0.273381 0.473684 +vt 0.273381 0.484211 +vt 0.248201 0.515789 +vt 0.273381 0.505263 +vt 0.273381 0.515789 +vt 0.248201 0.452632 +vt 0.248201 0.473684 +vt 0.248201 0.494737 +vt 0.273381 0.494737 +vt 0.248201 0.505263 +vt 0.273381 0.421053 +vt 0.273381 0.431579 +vt 0.273381 0.357895 +vt 0.273381 0.368421 +vt 0.273381 0.378947 +vt 0.273381 0.389474 +vt 0.273381 0.400000 +vt 0.273381 0.410526 +vt 0.273381 0.347368 +vt 0.183453 0.357895 +vt 0.183453 0.378947 +vt 0.183453 0.400000 +vt 0.183453 0.410526 +vt 0.183453 0.347368 +vt 0.183453 0.368421 +vt 0.183453 0.389474 +vt 0.183453 0.421053 +vt 0.248201 0.431579 +vt 0.183453 0.431579 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.5547 0.8321 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.5547 0.8321 +vn 1.0000 0.0000 0.0000 +vn -0.8321 -0.5547 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +s off +f 15/1/1 13/2/1 11/3/1 +f 36/4/1 29/5/1 28/6/1 +f 29/5/1 38/7/1 30/8/1 +f 38/7/1 31/9/1 30/8/1 +f 39/10/1 32/11/1 31/12/1 +f 40/13/1 25/14/1 32/11/1 +f 25/14/1 34/15/1 26/16/1 +f 26/16/1 35/17/1 27/18/1 +f 27/18/1 36/4/1 28/6/1 +f 43/19/1 42/20/1 47/21/1 +f 50/22/2 60/23/2 54/24/2 +f 56/25/2 57/26/2 52/27/2 +f 51/28/3 56/29/3 52/30/3 +f 66/31/4 62/32/4 65/33/4 +f 50/34/5 53/35/5 49/36/5 +f 68/37/6 63/38/6 67/39/6 +f 63/38/2 62/32/2 61/40/2 +f 58/41/4 67/39/4 57/26/4 +f 59/42/6 65/33/6 60/23/6 +f 49/36/7 67/43/7 66/44/7 +f 68/45/1 58/41/1 55/46/1 +f 65/47/1 70/48/1 53/49/1 +f 64/50/8 70/48/8 62/51/8 +f 69/52/9 55/46/9 51/28/9 +f 11/3/1 10/53/1 9/54/1 +f 9/54/1 16/55/1 15/1/1 +f 15/1/1 14/56/1 13/2/1 +f 13/2/1 12/57/1 11/3/1 +f 11/3/1 9/54/1 15/1/1 +f 36/4/1 37/58/1 29/5/1 +f 29/5/1 37/58/1 38/7/1 +f 38/7/1 39/59/1 31/9/1 +f 39/10/1 40/13/1 32/11/1 +f 40/13/1 33/60/1 25/14/1 +f 25/14/1 33/60/1 34/15/1 +f 26/16/1 34/15/1 35/17/1 +f 27/18/1 35/17/1 36/4/1 +f 43/19/1 41/61/1 42/20/1 +f 42/20/1 48/62/1 47/21/1 +f 47/21/1 46/63/1 45/64/1 +f 45/64/1 44/65/1 47/21/1 +f 44/65/1 43/19/1 47/21/1 +f 50/22/2 59/42/2 60/23/2 +f 56/25/2 58/41/2 57/26/2 +f 51/28/3 55/46/3 56/29/3 +f 66/31/4 61/40/4 62/32/4 +f 50/34/5 54/66/5 53/35/5 +f 68/37/6 64/50/6 63/38/6 +f 63/38/2 64/50/2 62/32/2 +f 58/41/4 68/37/4 67/39/4 +f 59/42/6 66/31/6 65/33/6 +f 51/28/7 52/67/7 57/68/7 +f 67/43/7 63/69/7 61/70/7 +f 51/28/7 57/68/7 67/43/7 +f 59/71/7 50/72/7 49/36/7 +f 67/43/7 61/70/7 66/44/7 +f 66/44/7 59/71/7 49/36/7 +f 49/36/7 51/28/7 67/43/7 +f 56/25/1 55/46/1 58/41/1 +f 55/46/1 69/52/1 68/45/1 +f 69/52/1 64/50/1 68/45/1 +f 53/49/1 54/73/1 60/74/1 +f 65/47/1 62/51/1 70/48/1 +f 53/49/1 60/74/1 65/47/1 +f 64/50/8 69/52/8 70/48/8 +f 51/28/9 49/36/9 70/75/9 +f 49/36/9 53/35/9 70/75/9 +f 70/75/9 69/52/9 51/28/9 +s 1 +f 14/76/10 7/77/5 6/78/10 +f 12/79/11 5/80/2 4/81/11 +f 10/82/12 3/83/3 2/84/12 +f 15/85/5 8/86/13 7/87/5 +f 13/88/2 6/78/10 5/80/2 +f 11/89/3 4/81/11 3/83/3 +f 9/90/9 2/84/12 1/91/9 +f 16/92/13 1/91/9 8/86/13 +f 31/12/5 24/93/13 23/94/5 +f 29/5/2 22/95/10 21/96/2 +f 27/18/3 20/97/11 19/98/3 +f 25/14/9 18/99/12 17/100/9 +f 32/11/13 17/100/9 24/93/13 +f 30/8/10 23/101/5 22/95/10 +f 28/6/11 21/96/2 20/97/11 +f 26/16/12 19/98/3 18/99/12 +f 37/58/2 46/102/10 38/7/10 +f 35/17/3 44/103/11 36/4/11 +f 33/60/9 41/104/12 34/15/12 +f 40/13/13 42/105/9 33/60/9 +f 38/7/10 47/106/5 39/59/5 +f 36/4/11 45/107/2 37/58/2 +f 34/15/12 43/108/3 35/17/3 +f 39/10/5 48/109/13 40/13/13 +f 14/76/10 15/110/5 7/77/5 +f 12/79/11 13/88/2 5/80/2 +f 10/82/12 11/89/3 3/83/3 +f 15/85/5 16/92/13 8/86/13 +f 13/88/2 14/76/10 6/78/10 +f 11/89/3 12/79/11 4/81/11 +f 9/90/9 10/82/12 2/84/12 +f 16/92/13 9/90/9 1/91/9 +f 31/12/5 32/11/13 24/93/13 +f 29/5/2 30/8/10 22/95/10 +f 27/18/3 28/6/11 20/97/11 +f 25/14/9 26/16/12 18/99/12 +f 32/11/13 25/14/9 17/100/9 +f 30/8/10 31/9/5 23/101/5 +f 28/6/11 29/5/2 21/96/2 +f 26/16/12 27/18/3 19/98/3 +f 37/58/2 45/107/2 46/102/10 +f 35/17/3 43/108/3 44/103/11 +f 33/60/9 42/105/9 41/104/12 +f 40/13/13 48/109/13 42/105/9 +f 38/7/10 46/102/10 47/106/5 +f 36/4/11 44/103/11 45/107/2 +f 34/15/12 41/104/12 43/108/3 +f 39/10/5 47/111/5 48/109/13 +o Casings +v 2.437500 2.500000 -0.328125 +v 2.437500 2.335938 -0.284164 +v 2.437500 2.215835 -0.164062 +v 2.437500 2.171875 0.000000 +v 2.437500 2.215835 0.164062 +v 2.437500 2.335938 0.284164 +v 2.437500 2.500000 0.328125 +v 2.437500 2.664062 0.284164 +v 2.437500 2.784164 0.164062 +v 2.437500 2.828125 0.000000 +v 2.437500 2.784165 -0.164062 +v 2.437500 2.664063 -0.284164 +v 0.500000 2.500000 -0.328125 +v 0.500000 2.335938 -0.284164 +v 0.500000 2.215835 -0.164062 +v 0.500000 2.171875 0.000000 +v 0.500000 2.215835 0.164062 +v 0.500000 2.335938 0.284164 +v 0.500000 2.500000 0.328125 +v 0.500000 2.664062 0.284164 +v 0.500000 2.784164 0.164062 +v 0.500000 2.828125 0.000000 +v 0.500000 2.784165 -0.164062 +v 0.500000 2.664063 -0.284164 +v 2.437500 2.500000 -0.375000 +v 2.437500 2.312500 -0.324759 +v 2.437500 2.175241 -0.187500 +v 2.437500 2.125000 0.000000 +v 2.437500 2.175241 0.187500 +v 2.437500 2.312500 0.324759 +v 2.437500 2.500000 0.375000 +v 2.437500 2.687500 0.324759 +v 2.437500 2.824759 0.187500 +v 2.437500 2.875000 0.000000 +v 2.437500 2.824759 -0.187500 +v 2.437500 2.687500 -0.324759 +v 2.500000 2.687500 -0.324759 +v 2.500000 2.824759 -0.187500 +v 2.500000 2.875000 0.000000 +v 2.500000 2.824759 0.187500 +v 2.500000 2.687500 0.324759 +v 2.500000 2.500000 0.375000 +v 2.500000 2.312500 0.324759 +v 2.500000 2.175241 0.187500 +v 2.500000 2.125000 0.000000 +v 2.500000 2.175241 -0.187500 +v 2.500000 2.312500 -0.324759 +v 2.500000 2.500000 -0.375000 +v 2.500000 2.593750 -0.162380 +v 2.500000 2.500000 -0.187500 +v 2.500000 2.662380 -0.093750 +v 2.500000 2.687500 0.000000 +v 2.500000 2.662380 0.093750 +v 2.500000 2.593750 0.162380 +v 2.500000 2.500000 0.187500 +v 2.500000 2.406250 0.162380 +v 2.500000 2.337620 0.093750 +v 2.500000 2.312500 0.000000 +v 2.500000 2.337620 -0.093750 +v 2.500000 2.406250 -0.162380 +v 2.437500 2.593750 -0.162380 +v 2.437500 2.500000 -0.187500 +v 2.437500 2.662380 -0.093750 +v 2.437500 2.687500 0.000000 +v 2.437500 2.662380 0.093750 +v 2.437500 2.593750 0.162380 +v 2.437500 2.500000 0.187500 +v 2.437500 2.406250 0.162380 +v 2.437500 2.337620 0.093750 +v 2.437500 2.312500 0.000000 +v 2.437500 2.337620 -0.093750 +v 2.437500 2.406250 -0.162380 +v 2.500000 2.582031 -0.142082 +v 2.500000 2.500000 -0.164062 +v 2.500000 2.642082 -0.082031 +v 2.500000 2.664062 0.000000 +v 2.500000 2.642082 0.082031 +v 2.500000 2.582031 0.142082 +v 2.500000 2.500000 0.164062 +v 2.500000 2.417969 0.142082 +v 2.500000 2.357918 0.082031 +v 2.500000 2.335938 0.000000 +v 2.500000 2.357918 -0.082031 +v 2.500000 2.417969 -0.142082 +v 2.500000 2.500000 0.000000 +v 2.437500 1.000000 0.328125 +v 2.437500 1.164062 0.284164 +v 2.437500 1.284165 0.164062 +v 2.437500 1.328125 0.000000 +v 2.437500 1.284165 -0.164062 +v 2.437500 1.164062 -0.284164 +v 2.437500 1.000000 -0.328125 +v 2.437500 0.835938 -0.284164 +v 2.437500 0.715836 -0.164062 +v 2.437500 0.671875 0.000000 +v 2.437500 0.715835 0.164062 +v 2.437500 0.835937 0.284164 +v 0.500000 1.000000 0.328125 +v 0.500000 1.164062 0.284164 +v 0.500000 1.284165 0.164062 +v 0.500000 1.328125 0.000000 +v 0.500000 1.284165 -0.164062 +v 0.500000 1.164062 -0.284164 +v 0.500000 1.000000 -0.328125 +v 0.500000 0.835938 -0.284164 +v 0.500000 0.715836 -0.164062 +v 0.500000 0.671875 0.000000 +v 0.500000 0.715835 0.164062 +v 0.500000 0.835937 0.284164 +v 2.437500 1.000000 0.375000 +v 2.437500 1.187500 0.324759 +v 2.437500 1.324759 0.187500 +v 2.437500 1.375000 0.000000 +v 2.437500 1.324759 -0.187500 +v 2.437500 1.187500 -0.324759 +v 2.437500 1.000000 -0.375000 +v 2.437500 0.812500 -0.324759 +v 2.437500 0.675241 -0.187500 +v 2.437500 0.625000 0.000000 +v 2.437500 0.675241 0.187500 +v 2.437500 0.812500 0.324759 +v 2.500000 0.812500 0.324759 +v 2.500000 0.675241 0.187500 +v 2.500000 0.625000 0.000000 +v 2.500000 0.675241 -0.187500 +v 2.500000 0.812500 -0.324759 +v 2.500000 1.000000 -0.375000 +v 2.500000 1.187500 -0.324759 +v 2.500000 1.324759 -0.187500 +v 2.500000 1.375000 0.000000 +v 2.500000 1.324759 0.187500 +v 2.500000 1.187500 0.324759 +v 2.500000 1.000000 0.375000 +v 2.500000 0.906250 0.162380 +v 2.500000 1.000000 0.187500 +v 2.500000 0.837620 0.093750 +v 2.500000 0.812500 0.000000 +v 2.500000 0.837620 -0.093750 +v 2.500000 0.906250 -0.162380 +v 2.500000 1.000000 -0.187500 +v 2.500000 1.093750 -0.162380 +v 2.500000 1.162380 -0.093750 +v 2.500000 1.187500 0.000000 +v 2.500000 1.162380 0.093750 +v 2.500000 1.093750 0.162380 +v 2.437500 0.906250 0.162380 +v 2.437500 1.000000 0.187500 +v 2.437500 0.837620 0.093750 +v 2.437500 0.812500 0.000000 +v 2.437500 0.837620 -0.093750 +v 2.437500 0.906250 -0.162380 +v 2.437500 1.000000 -0.187500 +v 2.437500 1.093750 -0.162380 +v 2.437500 1.162380 -0.093750 +v 2.437500 1.187500 0.000000 +v 2.437500 1.162380 0.093750 +v 2.437500 1.093750 0.162380 +v 2.500000 0.917969 0.142082 +v 2.500000 1.000000 0.164062 +v 2.500000 0.857918 0.082031 +v 2.500000 0.835938 0.000000 +v 2.500000 0.857918 -0.082031 +v 2.500000 0.917969 -0.142082 +v 2.500000 1.000000 -0.164062 +v 2.500000 1.082031 -0.142082 +v 2.500000 1.142082 -0.082031 +v 2.500000 1.164062 0.000000 +v 2.500000 1.142082 0.082031 +v 2.500000 1.082031 0.142082 +v 2.500000 1.000000 0.000000 +v 2.437500 2.409164 0.485456 +v 2.437500 2.289062 0.365355 +v 2.437500 2.125000 0.321394 +v 2.437500 1.960938 0.365355 +v 2.437500 1.840835 0.485456 +v 2.437500 1.796875 0.649519 +v 2.437500 1.840835 0.813581 +v 2.437500 1.960938 0.933684 +v 2.437500 2.125000 0.977644 +v 2.437500 2.289062 0.933684 +v 2.437500 2.409164 0.813582 +v 2.437500 2.453125 0.649519 +v 0.500000 2.409164 0.485456 +v 0.500000 2.289062 0.365355 +v 0.500000 2.125000 0.321394 +v 0.500000 1.960938 0.365355 +v 0.500000 1.840835 0.485456 +v 0.500000 1.796875 0.649519 +v 0.500000 1.840835 0.813581 +v 0.500000 1.960938 0.933684 +v 0.500000 2.125000 0.977644 +v 0.500000 2.289062 0.933684 +v 0.500000 2.409164 0.813582 +v 0.500000 2.453125 0.649519 +v 2.437500 2.449759 0.462019 +v 2.437500 2.312500 0.324759 +v 2.437500 2.125000 0.274519 +v 2.437500 1.937500 0.324759 +v 2.437500 1.800241 0.462019 +v 2.437500 1.750000 0.649519 +v 2.437500 1.800240 0.837019 +v 2.437500 1.937500 0.974278 +v 2.437500 2.125000 1.024519 +v 2.437500 2.312500 0.974279 +v 2.437500 2.449759 0.837019 +v 2.437500 2.500000 0.649519 +v 2.500000 2.500000 0.649519 +v 2.500000 2.449759 0.837019 +v 2.500000 2.312500 0.974279 +v 2.500000 2.125000 1.024519 +v 2.500000 1.937500 0.974278 +v 2.500000 1.800240 0.837019 +v 2.500000 1.750000 0.649519 +v 2.500000 1.800241 0.462019 +v 2.500000 1.937500 0.324759 +v 2.500000 2.125000 0.274519 +v 2.500000 2.312500 0.324759 +v 2.500000 2.449759 0.462019 +v 2.500000 2.312500 0.649519 +v 2.500000 2.287380 0.555769 +v 2.500000 2.287380 0.743269 +v 2.500000 2.218750 0.811899 +v 2.500000 2.125000 0.837019 +v 2.500000 2.031250 0.811899 +v 2.500000 1.962620 0.743269 +v 2.500000 1.937500 0.649519 +v 2.500000 1.962620 0.555769 +v 2.500000 2.031250 0.487139 +v 2.500000 2.125000 0.462019 +v 2.500000 2.218750 0.487139 +v 2.437500 2.312500 0.649519 +v 2.437500 2.287380 0.555769 +v 2.437500 2.287380 0.743269 +v 2.437500 2.218750 0.811899 +v 2.437500 2.125000 0.837019 +v 2.437500 2.031250 0.811899 +v 2.437500 1.962620 0.743269 +v 2.437500 1.937500 0.649519 +v 2.437500 1.962620 0.555769 +v 2.437500 2.031250 0.487139 +v 2.437500 2.125000 0.462019 +v 2.437500 2.218750 0.487139 +v 2.500000 2.289062 0.649519 +v 2.500000 2.267082 0.567488 +v 2.500000 2.267082 0.731550 +v 2.500000 2.207031 0.791601 +v 2.500000 2.125000 0.813581 +v 2.500000 2.042969 0.791601 +v 2.500000 1.982918 0.731550 +v 2.500000 1.960938 0.649519 +v 2.500000 1.982918 0.567488 +v 2.500000 2.042969 0.507437 +v 2.500000 2.125000 0.485457 +v 2.500000 2.207031 0.507437 +v 2.500000 2.125000 0.649519 +v 2.437500 1.090835 -0.485456 +v 2.437500 1.210938 -0.365355 +v 2.437500 1.375000 -0.321394 +v 2.437500 1.539062 -0.365355 +v 2.437500 1.659165 -0.485456 +v 2.437500 1.703125 -0.649519 +v 2.437500 1.659165 -0.813581 +v 2.437500 1.539062 -0.933684 +v 2.437500 1.375000 -0.977644 +v 2.437500 1.210938 -0.933684 +v 2.437500 1.090835 -0.813582 +v 2.437500 1.046875 -0.649519 +v 0.500000 1.090835 -0.485456 +v 0.500000 1.210938 -0.365355 +v 0.500000 1.375000 -0.321394 +v 0.500000 1.539062 -0.365355 +v 0.500000 1.659165 -0.485456 +v 0.500000 1.703125 -0.649519 +v 0.500000 1.659165 -0.813581 +v 0.500000 1.539062 -0.933684 +v 0.500000 1.375000 -0.977644 +v 0.500000 1.210938 -0.933684 +v 0.500000 1.090835 -0.813582 +v 0.500000 1.046875 -0.649519 +v 2.437500 1.050241 -0.462019 +v 2.437500 1.187500 -0.324759 +v 2.437500 1.375000 -0.274519 +v 2.437500 1.562500 -0.324759 +v 2.437500 1.699759 -0.462019 +v 2.437500 1.750000 -0.649519 +v 2.437500 1.699760 -0.837019 +v 2.437500 1.562500 -0.974278 +v 2.437500 1.375000 -1.024519 +v 2.437500 1.187500 -0.974279 +v 2.437500 1.050241 -0.837019 +v 2.437500 1.000000 -0.649519 +v 2.500000 1.000000 -0.649519 +v 2.500000 1.050241 -0.837019 +v 2.500000 1.187500 -0.974279 +v 2.500000 1.375000 -1.024519 +v 2.500000 1.562500 -0.974278 +v 2.500000 1.699760 -0.837019 +v 2.500000 1.750000 -0.649519 +v 2.500000 1.699759 -0.462019 +v 2.500000 1.562500 -0.324759 +v 2.500000 1.375000 -0.274519 +v 2.500000 1.187500 -0.324759 +v 2.500000 1.050241 -0.462019 +v 2.500000 1.187500 -0.649519 +v 2.500000 1.212620 -0.555769 +v 2.500000 1.212620 -0.743269 +v 2.500000 1.281250 -0.811899 +v 2.500000 1.375000 -0.837019 +v 2.500000 1.468750 -0.811899 +v 2.500000 1.537380 -0.743269 +v 2.500000 1.562500 -0.649519 +v 2.500000 1.537380 -0.555769 +v 2.500000 1.468750 -0.487139 +v 2.500000 1.375000 -0.462019 +v 2.500000 1.281250 -0.487139 +v 2.437500 1.187500 -0.649519 +v 2.437500 1.212620 -0.555769 +v 2.437500 1.212620 -0.743269 +v 2.437500 1.281250 -0.811899 +v 2.437500 1.375000 -0.837019 +v 2.437500 1.468750 -0.811899 +v 2.437500 1.537380 -0.743269 +v 2.437500 1.562500 -0.649519 +v 2.437500 1.537380 -0.555769 +v 2.437500 1.468750 -0.487139 +v 2.437500 1.375000 -0.462019 +v 2.437500 1.281250 -0.487139 +v 2.500000 1.210938 -0.649519 +v 2.500000 1.232918 -0.567488 +v 2.500000 1.232918 -0.731550 +v 2.500000 1.292969 -0.791601 +v 2.500000 1.375000 -0.813581 +v 2.500000 1.457031 -0.791601 +v 2.500000 1.517082 -0.731550 +v 2.500000 1.539062 -0.649519 +v 2.500000 1.517082 -0.567488 +v 2.500000 1.457031 -0.507437 +v 2.500000 1.375000 -0.485457 +v 2.500000 1.292969 -0.507437 +v 2.500000 1.375000 -0.649519 +v 2.437500 1.659165 0.813581 +v 2.437500 1.703125 0.649519 +v 2.437500 1.659165 0.485456 +v 2.437500 1.539062 0.365355 +v 2.437500 1.375000 0.321394 +v 2.437500 1.210938 0.365355 +v 2.437500 1.090835 0.485456 +v 2.437500 1.046875 0.649519 +v 2.437500 1.090835 0.813581 +v 2.437500 1.210937 0.933684 +v 2.437500 1.375000 0.977644 +v 2.437500 1.539062 0.933684 +v 0.500000 1.659165 0.813581 +v 0.500000 1.703125 0.649519 +v 0.500000 1.659165 0.485456 +v 0.500000 1.539062 0.365355 +v 0.500000 1.375000 0.321394 +v 0.500000 1.210938 0.365355 +v 0.500000 1.090835 0.485456 +v 0.500000 1.046875 0.649519 +v 0.500000 1.090835 0.813581 +v 0.500000 1.210937 0.933684 +v 0.500000 1.375000 0.977644 +v 0.500000 1.539062 0.933684 +v 2.437500 1.699759 0.837019 +v 2.437500 1.750000 0.649519 +v 2.437500 1.699759 0.462019 +v 2.437500 1.562500 0.324759 +v 2.437500 1.375000 0.274519 +v 2.437500 1.187500 0.324759 +v 2.437500 1.050241 0.462019 +v 2.437500 1.000000 0.649519 +v 2.437500 1.050241 0.837019 +v 2.437500 1.187500 0.974279 +v 2.437500 1.375000 1.024519 +v 2.437500 1.562500 0.974279 +v 2.500000 1.562500 0.974279 +v 2.500000 1.375000 1.024519 +v 2.500000 1.187500 0.974279 +v 2.500000 1.050241 0.837019 +v 2.500000 1.000000 0.649519 +v 2.500000 1.050241 0.462019 +v 2.500000 1.187500 0.324759 +v 2.500000 1.375000 0.274519 +v 2.500000 1.562500 0.324759 +v 2.500000 1.699759 0.462019 +v 2.500000 1.750000 0.649519 +v 2.500000 1.699759 0.837019 +v 2.500000 1.468750 0.811899 +v 2.500000 1.537380 0.743269 +v 2.500000 1.375000 0.837019 +v 2.500000 1.281250 0.811899 +v 2.500000 1.212620 0.743269 +v 2.500000 1.187500 0.649519 +v 2.500000 1.212620 0.555769 +v 2.500000 1.281250 0.487139 +v 2.500000 1.375000 0.462019 +v 2.500000 1.468750 0.487139 +v 2.500000 1.537380 0.555769 +v 2.500000 1.562500 0.649519 +v 2.437500 1.468750 0.811899 +v 2.437500 1.537380 0.743269 +v 2.437500 1.375000 0.837019 +v 2.437500 1.281250 0.811899 +v 2.437500 1.212620 0.743269 +v 2.437500 1.187500 0.649519 +v 2.437500 1.212620 0.555769 +v 2.437500 1.281250 0.487139 +v 2.437500 1.375000 0.462019 +v 2.437500 1.468750 0.487139 +v 2.437500 1.537380 0.555769 +v 2.437500 1.562500 0.649519 +v 2.500000 1.457031 0.791601 +v 2.500000 1.517082 0.731550 +v 2.500000 1.375000 0.813581 +v 2.500000 1.292969 0.791601 +v 2.500000 1.232918 0.731550 +v 2.500000 1.210937 0.649519 +v 2.500000 1.232918 0.567488 +v 2.500000 1.292969 0.507437 +v 2.500000 1.375000 0.485456 +v 2.500000 1.457031 0.507437 +v 2.500000 1.517082 0.567488 +v 2.500000 1.539062 0.649519 +v 2.500000 1.375000 0.649519 +v 2.437500 1.840835 -0.813581 +v 2.437500 1.796875 -0.649519 +v 2.437500 1.840835 -0.485456 +v 2.437500 1.960938 -0.365355 +v 2.437500 2.125000 -0.321394 +v 2.437500 2.289062 -0.365355 +v 2.437500 2.409165 -0.485456 +v 2.437500 2.453125 -0.649519 +v 2.437500 2.409165 -0.813581 +v 2.437500 2.289062 -0.933684 +v 2.437500 2.125000 -0.977644 +v 2.437500 1.960938 -0.933684 +v 0.500000 1.840835 -0.813581 +v 0.500000 1.796875 -0.649519 +v 0.500000 1.840835 -0.485456 +v 0.500000 1.960938 -0.365355 +v 0.500000 2.125000 -0.321394 +v 0.500000 2.289062 -0.365355 +v 0.500000 2.409165 -0.485456 +v 0.500000 2.453125 -0.649519 +v 0.500000 2.409165 -0.813581 +v 0.500000 2.289062 -0.933684 +v 0.500000 2.125000 -0.977644 +v 0.500000 1.960938 -0.933684 +v 2.437500 1.800241 -0.837019 +v 2.437500 1.750000 -0.649519 +v 2.437500 1.800241 -0.462019 +v 2.437500 1.937500 -0.324759 +v 2.437500 2.125000 -0.274519 +v 2.437500 2.312500 -0.324759 +v 2.437500 2.449759 -0.462019 +v 2.437500 2.500000 -0.649519 +v 2.437500 2.449760 -0.837019 +v 2.437500 2.312500 -0.974279 +v 2.437500 2.125000 -1.024519 +v 2.437500 1.937500 -0.974279 +v 2.500000 1.937500 -0.974279 +v 2.500000 2.125000 -1.024519 +v 2.500000 2.312500 -0.974279 +v 2.500000 2.449760 -0.837019 +v 2.500000 2.500000 -0.649519 +v 2.500000 2.449759 -0.462019 +v 2.500000 2.312500 -0.324759 +v 2.500000 2.125000 -0.274519 +v 2.500000 1.937500 -0.324759 +v 2.500000 1.800241 -0.462019 +v 2.500000 1.750000 -0.649519 +v 2.500000 1.800241 -0.837019 +v 2.500000 2.031250 -0.811899 +v 2.500000 1.962620 -0.743269 +v 2.500000 2.125000 -0.837019 +v 2.500000 2.218750 -0.811899 +v 2.500000 2.287380 -0.743269 +v 2.500000 2.312500 -0.649519 +v 2.500000 2.287380 -0.555769 +v 2.500000 2.218750 -0.487139 +v 2.500000 2.125000 -0.462019 +v 2.500000 2.031250 -0.487139 +v 2.500000 1.962620 -0.555769 +v 2.500000 1.937500 -0.649519 +v 2.437500 2.031250 -0.811899 +v 2.437500 1.962620 -0.743269 +v 2.437500 2.125000 -0.837019 +v 2.437500 2.218750 -0.811899 +v 2.437500 2.287380 -0.743269 +v 2.437500 2.312500 -0.649519 +v 2.437500 2.287380 -0.555769 +v 2.437500 2.218750 -0.487139 +v 2.437500 2.125000 -0.462019 +v 2.437500 2.031250 -0.487139 +v 2.437500 1.962620 -0.555769 +v 2.437500 1.937500 -0.649519 +v 2.500000 2.042969 -0.791601 +v 2.500000 1.982918 -0.731550 +v 2.500000 2.125000 -0.813581 +v 2.500000 2.207031 -0.791601 +v 2.500000 2.267082 -0.731550 +v 2.500000 2.289062 -0.649519 +v 2.500000 2.267082 -0.567488 +v 2.500000 2.207031 -0.507437 +v 2.500000 2.125000 -0.485456 +v 2.500000 2.042969 -0.507437 +v 2.500000 1.982918 -0.567488 +v 2.500000 1.960938 -0.649519 +v 2.500000 2.125000 -0.649519 +vt 0.043165 0.547368 +vt 0.053957 0.536842 +vt 0.053957 0.547368 +vt 0.064748 0.547368 +vt 0.064748 0.536842 +vt 0.075540 0.547368 +vt 0.075540 0.536842 +vt 0.086331 0.547368 +vt 0.086331 0.536842 +vt 0.097122 0.547368 +vt 0.097122 0.536842 +vt 0.107914 0.536842 +vt 0.107914 0.547368 +vt 0.118705 0.536842 +vt 0.118705 0.547368 +vt 0.129496 0.536842 +vt 0.129496 0.547368 +vt 0.010791 0.547368 +vt 0.000000 0.536842 +vt 0.010791 0.536842 +vt 0.021583 0.547368 +vt 0.021583 0.536842 +vt 0.032374 0.547368 +vt 0.032374 0.536842 +vt 0.043165 0.536842 +vt -0.000000 0.526316 +vt 0.007194 0.494737 +vt 0.010791 0.526316 +vt 0.032374 0.526316 +vt 0.039568 0.494737 +vt 0.043165 0.526316 +vt 0.064748 0.526316 +vt 0.071942 0.494737 +vt 0.075540 0.526316 +vt 0.118705 0.526316 +vt 0.125899 0.494737 +vt 0.129496 0.526316 +vt 0.021583 0.526316 +vt 0.028777 0.494737 +vt 0.053957 0.526316 +vt 0.061151 0.494737 +vt 0.107914 0.526316 +vt 0.115108 0.494737 +vt 0.097122 0.526316 +vt 0.086331 0.494737 +vt 0.093525 0.494737 +vt 0.017986 0.494737 +vt 0.050360 0.494737 +vt 0.104317 0.494737 +vt 0.086331 0.526316 +vt 0.075540 0.494737 +vt 0.082734 0.494737 +vt 0.082734 0.473684 +vt 0.079137 0.473684 +vt 0.082734 0.442105 +vt 0.071942 0.473684 +vt 0.068345 0.473684 +vt 0.071942 0.442105 +vt 0.061151 0.473684 +vt 0.057554 0.473684 +vt 0.061151 0.442105 +vt 0.050360 0.473684 +vt 0.046763 0.473684 +vt 0.050360 0.442105 +vt 0.039568 0.473684 +vt 0.035971 0.473684 +vt 0.039568 0.442105 +vt 0.028777 0.473684 +vt 0.025180 0.473684 +vt 0.028777 0.442105 +vt 0.017986 0.473684 +vt 0.014388 0.473684 +vt 0.017986 0.442105 +vt 0.007194 0.473684 +vt 0.003597 0.473684 +vt 0.007194 0.442105 +vt 0.125899 0.473684 +vt 0.122302 0.473684 +vt 0.125899 0.442105 +vt 0.115108 0.473684 +vt 0.111511 0.473684 +vt 0.115108 0.442105 +vt 0.104317 0.473684 +vt 0.100719 0.473684 +vt 0.104317 0.442105 +vt 0.093525 0.473684 +vt 0.089928 0.473684 +vt 0.093525 0.442105 +vt 0.043165 0.547368 +vt 0.053957 0.536842 +vt 0.053957 0.547368 +vt 0.064748 0.547368 +vt 0.064748 0.536842 +vt 0.075540 0.547368 +vt 0.075540 0.536842 +vt 0.086331 0.547368 +vt 0.086331 0.536842 +vt 0.097122 0.547368 +vt 0.097122 0.536842 +vt 0.107914 0.536842 +vt 0.107914 0.547368 +vt 0.118705 0.536842 +vt 0.118705 0.547368 +vt 0.129496 0.536842 +vt 0.129496 0.547368 +vt 0.010791 0.547368 +vt 0.000000 0.536842 +vt 0.010791 0.536842 +vt 0.021583 0.547368 +vt 0.021583 0.536842 +vt 0.032374 0.547368 +vt 0.032374 0.536842 +vt 0.043165 0.536842 +vt -0.000000 0.526316 +vt 0.007194 0.494737 +vt 0.010791 0.526316 +vt 0.032374 0.526316 +vt 0.039568 0.494737 +vt 0.043165 0.526316 +vt 0.064748 0.526316 +vt 0.071942 0.494737 +vt 0.075540 0.526316 +vt 0.118705 0.526316 +vt 0.125899 0.494737 +vt 0.129496 0.526316 +vt 0.021583 0.526316 +vt 0.028777 0.494737 +vt 0.053957 0.526316 +vt 0.061151 0.494737 +vt 0.107914 0.526316 +vt 0.115108 0.494737 +vt 0.097122 0.526316 +vt 0.086331 0.494737 +vt 0.093525 0.494737 +vt 0.017986 0.494737 +vt 0.050360 0.494737 +vt 0.104317 0.494737 +vt 0.086331 0.526316 +vt 0.075540 0.494737 +vt 0.082734 0.494737 +vt 0.082734 0.473684 +vt 0.079137 0.473684 +vt 0.082734 0.442105 +vt 0.071942 0.473684 +vt 0.068345 0.473684 +vt 0.071942 0.442105 +vt 0.061151 0.473684 +vt 0.057554 0.473684 +vt 0.061151 0.442105 +vt 0.050360 0.473684 +vt 0.046763 0.473684 +vt 0.050360 0.442105 +vt 0.039568 0.473684 +vt 0.035971 0.473684 +vt 0.039568 0.442105 +vt 0.028777 0.473684 +vt 0.025180 0.473684 +vt 0.028777 0.442105 +vt 0.017986 0.473684 +vt 0.014388 0.473684 +vt 0.017986 0.442105 +vt 0.007194 0.473684 +vt 0.003597 0.473684 +vt 0.007194 0.442105 +vt 0.125899 0.473684 +vt 0.122302 0.473684 +vt 0.125899 0.442105 +vt 0.115108 0.473684 +vt 0.111511 0.473684 +vt 0.115108 0.442105 +vt 0.104317 0.473684 +vt 0.100719 0.473684 +vt 0.104317 0.442105 +vt 0.093525 0.473684 +vt 0.089928 0.473684 +vt 0.093525 0.442105 +vt 0.053957 0.547368 +vt 0.043165 0.536842 +vt 0.053957 0.536842 +vt 0.064748 0.547368 +vt 0.064748 0.536842 +vt 0.075540 0.547368 +vt 0.075540 0.536842 +vt 0.086331 0.547368 +vt 0.086331 0.536842 +vt 0.097122 0.536842 +vt 0.097122 0.547368 +vt 0.107914 0.536842 +vt 0.107914 0.547368 +vt 0.118705 0.547368 +vt 0.118705 0.536842 +vt 0.129496 0.536842 +vt 0.129496 0.547368 +vt 0.010791 0.547368 +vt 0.000000 0.536842 +vt 0.010791 0.536842 +vt 0.021583 0.547368 +vt 0.021583 0.536842 +vt 0.032374 0.547368 +vt 0.032374 0.536842 +vt 0.043165 0.547368 +vt -0.000000 0.526316 +vt 0.007194 0.494737 +vt 0.010791 0.526316 +vt 0.043165 0.526316 +vt 0.032374 0.494737 +vt 0.039568 0.494737 +vt 0.075540 0.526316 +vt 0.064748 0.494737 +vt 0.071942 0.494737 +vt 0.129496 0.526316 +vt 0.118705 0.494737 +vt 0.125899 0.494737 +vt 0.021583 0.526316 +vt 0.028777 0.494737 +vt 0.032374 0.526316 +vt 0.053957 0.526316 +vt 0.061151 0.494737 +vt 0.064748 0.526316 +vt 0.118705 0.526316 +vt 0.107914 0.494737 +vt 0.115108 0.494737 +vt 0.097122 0.526316 +vt 0.086331 0.494737 +vt 0.093525 0.494737 +vt 0.017986 0.494737 +vt 0.050360 0.494737 +vt 0.104317 0.494737 +vt 0.107914 0.526316 +vt 0.086331 0.526316 +vt 0.075540 0.494737 +vt 0.082734 0.494737 +vt 0.082734 0.473684 +vt 0.079137 0.473684 +vt 0.082734 0.442105 +vt 0.071942 0.473684 +vt 0.068345 0.473684 +vt 0.071942 0.442105 +vt 0.061151 0.473684 +vt 0.057554 0.473684 +vt 0.061151 0.442105 +vt 0.050360 0.473684 +vt 0.046763 0.473684 +vt 0.050360 0.442105 +vt 0.039568 0.473684 +vt 0.035971 0.473684 +vt 0.039568 0.442105 +vt 0.028777 0.473684 +vt 0.025180 0.473684 +vt 0.028777 0.442105 +vt 0.017986 0.473684 +vt 0.014388 0.473684 +vt 0.017986 0.442105 +vt 0.007194 0.473684 +vt 0.003597 0.473684 +vt 0.007194 0.442105 +vt 0.125899 0.473684 +vt 0.122302 0.473684 +vt 0.125899 0.442105 +vt 0.115108 0.473684 +vt 0.111511 0.473684 +vt 0.115108 0.442105 +vt 0.104317 0.473684 +vt 0.100719 0.473684 +vt 0.104317 0.442105 +vt 0.093525 0.473684 +vt 0.089928 0.473684 +vt 0.093525 0.442105 +vt 0.043165 0.547368 +vt 0.053957 0.536842 +vt 0.053957 0.547368 +vt 0.064748 0.547368 +vt 0.064748 0.536842 +vt 0.075540 0.547368 +vt 0.075540 0.536842 +vt 0.086331 0.547368 +vt 0.086331 0.536842 +vt 0.097122 0.536842 +vt 0.097122 0.547368 +vt 0.107914 0.536842 +vt 0.107914 0.547368 +vt 0.118705 0.536842 +vt 0.118705 0.547368 +vt 0.129496 0.536842 +vt 0.129496 0.547368 +vt 0.010791 0.547368 +vt 0.000000 0.536842 +vt 0.010791 0.536842 +vt 0.021583 0.547368 +vt 0.021583 0.536842 +vt 0.032374 0.547368 +vt 0.032374 0.536842 +vt 0.043165 0.536842 +vt -0.000000 0.526316 +vt 0.007194 0.494737 +vt 0.010791 0.526316 +vt 0.043165 0.526316 +vt 0.032374 0.494737 +vt 0.039568 0.494737 +vt 0.075540 0.526316 +vt 0.064748 0.494737 +vt 0.071942 0.494737 +vt 0.118705 0.526316 +vt 0.125899 0.494737 +vt 0.129496 0.526316 +vt 0.021583 0.526316 +vt 0.028777 0.494737 +vt 0.032374 0.526316 +vt 0.064748 0.526316 +vt 0.053957 0.494737 +vt 0.061151 0.494737 +vt 0.107914 0.494737 +vt 0.115108 0.494737 +vt 0.097122 0.526316 +vt 0.086331 0.494737 +vt 0.093525 0.494737 +vt 0.017986 0.494737 +vt 0.050360 0.494737 +vt 0.053957 0.526316 +vt 0.104317 0.494737 +vt 0.107914 0.526316 +vt 0.086331 0.526316 +vt 0.075540 0.494737 +vt 0.082734 0.494737 +vt 0.082734 0.473684 +vt 0.079137 0.473684 +vt 0.082734 0.442105 +vt 0.071942 0.473684 +vt 0.068345 0.473684 +vt 0.071942 0.442105 +vt 0.061151 0.473684 +vt 0.057554 0.473684 +vt 0.061151 0.442105 +vt 0.050360 0.473684 +vt 0.046763 0.473684 +vt 0.050360 0.442105 +vt 0.039568 0.473684 +vt 0.035971 0.473684 +vt 0.039568 0.442105 +vt 0.028777 0.473684 +vt 0.025180 0.473684 +vt 0.028777 0.442105 +vt 0.017986 0.473684 +vt 0.014388 0.473684 +vt 0.017986 0.442105 +vt 0.007194 0.473684 +vt 0.003597 0.473684 +vt 0.007194 0.442105 +vt 0.125899 0.473684 +vt 0.122302 0.473684 +vt 0.125899 0.442105 +vt 0.115108 0.473684 +vt 0.111511 0.473684 +vt 0.115108 0.442105 +vt 0.104317 0.473684 +vt 0.100719 0.473684 +vt 0.104317 0.442105 +vt 0.093525 0.473684 +vt 0.089928 0.473684 +vt 0.093525 0.442105 +vt 0.043165 0.547368 +vt 0.053957 0.536842 +vt 0.053957 0.547368 +vt 0.064748 0.547368 +vt 0.064748 0.536842 +vt 0.075540 0.547368 +vt 0.075540 0.536842 +vt 0.086331 0.547368 +vt 0.086331 0.536842 +vt 0.097122 0.536842 +vt 0.097122 0.547368 +vt 0.107914 0.536842 +vt 0.107914 0.547368 +vt 0.118705 0.536842 +vt 0.118705 0.547368 +vt 0.129496 0.536842 +vt 0.129496 0.547368 +vt 0.010791 0.547368 +vt 0.000000 0.536842 +vt 0.010791 0.536842 +vt 0.021583 0.547368 +vt 0.021583 0.536842 +vt 0.032374 0.547368 +vt 0.032374 0.536842 +vt 0.043165 0.536842 +vt 0.010791 0.526316 +vt 0.000000 0.494737 +vt 0.007194 0.494737 +vt 0.032374 0.526316 +vt 0.039568 0.494737 +vt 0.043165 0.526316 +vt 0.075540 0.526316 +vt 0.064748 0.494737 +vt 0.071942 0.494737 +vt 0.118705 0.526316 +vt 0.125899 0.494737 +vt 0.129496 0.526316 +vt 0.021583 0.526316 +vt 0.028777 0.494737 +vt 0.053957 0.526316 +vt 0.061151 0.494737 +vt 0.064748 0.526316 +vt 0.107914 0.494737 +vt 0.115108 0.494737 +vt 0.097122 0.526316 +vt 0.086331 0.494737 +vt 0.093525 0.494737 +vt 0.017986 0.494737 +vt 0.050360 0.494737 +vt 0.104317 0.494737 +vt 0.107914 0.526316 +vt 0.086331 0.526316 +vt 0.075540 0.494737 +vt 0.082734 0.494737 +vt 0.082734 0.473684 +vt 0.079137 0.473684 +vt 0.082734 0.442105 +vt 0.071942 0.473684 +vt 0.068345 0.473684 +vt 0.071942 0.442105 +vt 0.061151 0.473684 +vt 0.057554 0.473684 +vt 0.061151 0.442105 +vt 0.050360 0.473684 +vt 0.046763 0.473684 +vt 0.050360 0.442105 +vt 0.039568 0.473684 +vt 0.035971 0.473684 +vt 0.039568 0.442105 +vt 0.028777 0.473684 +vt 0.025180 0.473684 +vt 0.028777 0.442105 +vt 0.017986 0.473684 +vt 0.014388 0.473684 +vt 0.017986 0.442105 +vt 0.007194 0.473684 +vt 0.003597 0.473684 +vt 0.007194 0.442105 +vt 0.125899 0.473684 +vt 0.122302 0.473684 +vt 0.125899 0.442105 +vt 0.115108 0.473684 +vt 0.111511 0.473684 +vt 0.115108 0.442105 +vt 0.104317 0.473684 +vt 0.100719 0.473684 +vt 0.104317 0.442105 +vt 0.093525 0.473684 +vt 0.089928 0.473684 +vt 0.093525 0.442105 +vt 0.043165 0.547368 +vt 0.053957 0.536842 +vt 0.053957 0.547368 +vt 0.064748 0.536842 +vt 0.064748 0.547368 +vt 0.075540 0.547368 +vt 0.075540 0.536842 +vt 0.086331 0.547368 +vt 0.086331 0.536842 +vt 0.097122 0.536842 +vt 0.097122 0.547368 +vt 0.107914 0.536842 +vt 0.107914 0.547368 +vt 0.118705 0.536842 +vt 0.118705 0.547368 +vt 0.129496 0.536842 +vt 0.129496 0.547368 +vt 0.000000 0.547368 +vt 0.010791 0.536842 +vt 0.010791 0.547368 +vt 0.021583 0.536842 +vt 0.021583 0.547368 +vt 0.032374 0.536842 +vt 0.032374 0.547368 +vt 0.043165 0.536842 +vt -0.000000 0.526316 +vt 0.007194 0.494737 +vt 0.010791 0.526316 +vt 0.032374 0.526316 +vt 0.039568 0.494737 +vt 0.043165 0.526316 +vt 0.064748 0.526316 +vt 0.071942 0.494737 +vt 0.075540 0.526316 +vt 0.118705 0.526316 +vt 0.125899 0.494737 +vt 0.129496 0.526316 +vt 0.021583 0.526316 +vt 0.028777 0.494737 +vt 0.053957 0.526316 +vt 0.061151 0.494737 +vt 0.107914 0.494737 +vt 0.115108 0.494737 +vt 0.097122 0.526316 +vt 0.086331 0.494737 +vt 0.093525 0.494737 +vt 0.017986 0.494737 +vt 0.050360 0.494737 +vt 0.104317 0.494737 +vt 0.107914 0.526316 +vt 0.086331 0.526316 +vt 0.075540 0.494737 +vt 0.082734 0.494737 +vt 0.082734 0.473684 +vt 0.079137 0.473684 +vt 0.082734 0.442105 +vt 0.071942 0.473684 +vt 0.068345 0.473684 +vt 0.071942 0.442105 +vt 0.061151 0.473684 +vt 0.057554 0.473684 +vt 0.061151 0.442105 +vt 0.050360 0.473684 +vt 0.046763 0.473684 +vt 0.050360 0.442105 +vt 0.039568 0.473684 +vt 0.035971 0.473684 +vt 0.039568 0.442105 +vt 0.028777 0.473684 +vt 0.025180 0.473684 +vt 0.028777 0.442105 +vt 0.017986 0.473684 +vt 0.014388 0.473684 +vt 0.017986 0.442105 +vt 0.007194 0.473684 +vt 0.003597 0.473684 +vt 0.007194 0.442105 +vt 0.125899 0.473684 +vt 0.122302 0.473684 +vt 0.125899 0.442105 +vt 0.115108 0.473684 +vt 0.111511 0.473684 +vt 0.115108 0.442105 +vt 0.104317 0.473684 +vt 0.100719 0.473684 +vt 0.104317 0.442105 +vt 0.093525 0.473684 +vt 0.089928 0.473684 +vt 0.093525 0.442105 +vt 0.000000 0.547368 +vt 0.000000 0.494737 +vt 0.032374 0.494737 +vt 0.064748 0.494737 +vt 0.118705 0.494737 +vt 0.021583 0.494737 +vt 0.053957 0.494737 +vt 0.107914 0.494737 +vt 0.010791 0.494737 +vt 0.043165 0.494737 +vt 0.097122 0.494737 +vt 0.000000 0.547368 +vt 0.000000 0.494737 +vt 0.032374 0.494737 +vt 0.064748 0.494737 +vt 0.118705 0.494737 +vt 0.021583 0.494737 +vt 0.053957 0.494737 +vt 0.107914 0.494737 +vt 0.010791 0.494737 +vt 0.043165 0.494737 +vt 0.097122 0.494737 +vt 0.000000 0.547368 +vt 0.000000 0.494737 +vt 0.021583 0.494737 +vt 0.053957 0.494737 +vt 0.010791 0.494737 +vt 0.043165 0.494737 +vt 0.097122 0.494737 +vt 0.000000 0.547368 +vt 0.000000 0.494737 +vt 0.118705 0.494737 +vt 0.021583 0.494737 +vt 0.010791 0.494737 +vt 0.043165 0.494737 +vt 0.097122 0.494737 +vt 0.000000 0.547368 +vt -0.000000 0.526316 +vt 0.032374 0.494737 +vt 0.118705 0.494737 +vt 0.021583 0.494737 +vt 0.053957 0.494737 +vt 0.010791 0.494737 +vt 0.043165 0.494737 +vt 0.097122 0.494737 +vt 0.000000 0.536842 +vt 0.000000 0.494737 +vt 0.032374 0.494737 +vt 0.064748 0.494737 +vt 0.118705 0.494737 +vt 0.021583 0.494737 +vt 0.053957 0.494737 +vt 0.010791 0.494737 +vt 0.043165 0.494737 +vt 0.097122 0.494737 +vt 0.043165 0.873684 +vt 0.010791 0.873684 +vt 0.086331 0.873684 +vt 0.107914 0.873684 +vt 0.053957 0.873684 +vt 0.021583 0.873684 +vt 0.118705 0.873684 +vt 0.064748 0.873684 +vt 0.032374 0.873684 +vt -0.000000 0.873684 +vt 0.075540 0.873684 +vt 0.097122 0.873684 +vt 0.082734 0.484211 +vt 0.097122 0.484211 +vt 0.104317 0.484211 +vt 0.007194 0.484211 +vt 0.039568 0.484211 +vt 0.071942 0.484211 +vt 0.125899 0.484211 +vt 0.028777 0.484211 +vt 0.061151 0.484211 +vt 0.115108 0.484211 +vt 0.093525 0.484211 +vt 0.017986 0.484211 +vt 0.050360 0.484211 +vt 0.075540 0.484211 +vt -0.000000 0.484211 +vt 0.032374 0.484211 +vt 0.064748 0.484211 +vt 0.010791 0.484211 +vt 0.149281 0.810651 +vt 0.166377 0.839536 +vt 0.166377 0.897306 +vt 0.043165 0.873684 +vt 0.010791 0.873684 +vt 0.086331 0.873684 +vt 0.107914 0.873684 +vt 0.053957 0.873684 +vt 0.021583 0.873684 +vt 0.118705 0.873684 +vt 0.064748 0.873684 +vt 0.032374 0.873684 +vt -0.000000 0.873684 +vt 0.075540 0.873684 +vt 0.097122 0.873684 +vt 0.082734 0.484211 +vt 0.104317 0.484211 +vt 0.007194 0.484211 +vt 0.039568 0.484211 +vt 0.071942 0.484211 +vt 0.125899 0.484211 +vt 0.028777 0.484211 +vt 0.061151 0.484211 +vt 0.115108 0.484211 +vt 0.093525 0.484211 +vt 0.017986 0.484211 +vt 0.050360 0.484211 +vt 0.075540 0.484211 +vt 0.064748 0.484211 +vt 0.118705 0.484211 +vt 0.021583 0.484211 +vt 0.086331 0.484211 +vt 0.010791 0.484211 +vt 0.149281 0.810651 +vt 0.166377 0.839536 +vt 0.166377 0.897306 +vt 0.043165 0.873684 +vt 0.010791 0.873684 +vt 0.086331 0.873684 +vt 0.107914 0.873684 +vt 0.053957 0.873684 +vt 0.021583 0.873684 +vt 0.118705 0.873684 +vt 0.064748 0.873684 +vt 0.032374 0.873684 +vt -0.000000 0.873684 +vt 0.075540 0.873684 +vt 0.097122 0.873684 +vt 0.082734 0.484211 +vt 0.097122 0.484211 +vt 0.104317 0.484211 +vt 0.007194 0.484211 +vt 0.039568 0.484211 +vt 0.071942 0.484211 +vt 0.125899 0.484211 +vt 0.028777 0.484211 +vt 0.061151 0.484211 +vt 0.115108 0.484211 +vt 0.093525 0.484211 +vt 0.017986 0.484211 +vt 0.050360 0.484211 +vt 0.075540 0.484211 +vt 0.064748 0.484211 +vt 0.021583 0.484211 +vt 0.053957 0.484211 +vt 0.107914 0.484211 +vt 0.086331 0.484211 +vt 0.149281 0.810651 +vt 0.166377 0.897306 +vt 0.132184 0.897306 +vt 0.043165 0.873684 +vt 0.010791 0.873684 +vt 0.086331 0.873684 +vt 0.107914 0.873684 +vt 0.053957 0.873684 +vt 0.021583 0.873684 +vt 0.118705 0.873684 +vt 0.064748 0.873684 +vt 0.032374 0.873684 +vt -0.000000 0.873684 +vt 0.075540 0.873684 +vt 0.097122 0.873684 +vt 0.082734 0.484211 +vt 0.097122 0.484211 +vt 0.104317 0.484211 +vt 0.007194 0.484211 +vt 0.039568 0.484211 +vt 0.071942 0.484211 +vt 0.125899 0.484211 +vt 0.028777 0.484211 +vt 0.061151 0.484211 +vt 0.115108 0.484211 +vt 0.093525 0.484211 +vt 0.017986 0.484211 +vt 0.050360 0.484211 +vt 0.075540 0.484211 +vt 0.064748 0.484211 +vt 0.053957 0.484211 +vt 0.107914 0.484211 +vt 0.086331 0.484211 +vt 0.149281 0.810651 +vt 0.166377 0.839536 +vt 0.166377 0.897306 +vt 0.043165 0.873684 +vt 0.010791 0.873684 +vt 0.086331 0.873684 +vt 0.107914 0.873684 +vt 0.053957 0.873684 +vt 0.021583 0.873684 +vt 0.118705 0.873684 +vt 0.064748 0.873684 +vt 0.032374 0.873684 +vt -0.000000 0.873684 +vt 0.075540 0.873684 +vt 0.097122 0.873684 +vt 0.082734 0.484211 +vt 0.097122 0.484211 +vt 0.104317 0.484211 +vt 0.007194 0.484211 +vt 0.039568 0.484211 +vt 0.071942 0.484211 +vt 0.125899 0.484211 +vt 0.028777 0.484211 +vt 0.061151 0.484211 +vt 0.115108 0.484211 +vt 0.093525 0.484211 +vt 0.017986 0.484211 +vt 0.050360 0.484211 +vt 0.075540 0.484211 +vt -0.000000 0.484211 +vt 0.032374 0.484211 +vt 0.118705 0.484211 +vt 0.053957 0.484211 +vt 0.086331 0.484211 +vt 0.149281 0.810651 +vt 0.166377 0.897306 +vt 0.132184 0.897306 +vt 0.043165 0.873684 +vt 0.010791 0.873684 +vt 0.086331 0.873684 +vt 0.107914 0.873684 +vt 0.053957 0.873684 +vt 0.021583 0.873684 +vt 0.118705 0.873684 +vt 0.064748 0.873684 +vt 0.032374 0.873684 +vt -0.000000 0.873684 +vt 0.075540 0.873684 +vt 0.097122 0.873684 +vt 0.082734 0.484211 +vt 0.097122 0.484211 +vt 0.104317 0.484211 +vt 0.007194 0.484211 +vt 0.039568 0.484211 +vt 0.071942 0.484211 +vt 0.125899 0.484211 +vt 0.028777 0.484211 +vt 0.061151 0.484211 +vt 0.115108 0.484211 +vt 0.093525 0.484211 +vt 0.017986 0.484211 +vt 0.050360 0.484211 +vt 0.075540 0.484211 +vt -0.000000 0.484211 +vt 0.032374 0.484211 +vt 0.118705 0.484211 +vt 0.107914 0.484211 +vt 0.149281 0.810651 +vt 0.166377 0.839536 +vt 0.166377 0.897306 +vt 0.129496 0.873684 +vt 0.118705 0.484211 +vt 0.021583 0.484211 +vt 0.053957 0.484211 +vt 0.107914 0.484211 +vt 0.086331 0.484211 +vt 0.043165 0.484211 +vt 0.132184 0.897306 +vt 0.129539 0.868421 +vt 0.132184 0.839536 +vt 0.139410 0.818390 +vt 0.159151 0.818390 +vt 0.169022 0.868421 +vt 0.159151 0.918452 +vt 0.149281 0.926192 +vt 0.139410 0.918452 +vt 0.129496 0.873684 +vt 0.097122 0.484211 +vt -0.000000 0.484211 +vt 0.032374 0.484211 +vt 0.053957 0.484211 +vt 0.107914 0.484211 +vt 0.043165 0.484211 +vt 0.132184 0.897306 +vt 0.129539 0.868421 +vt 0.132184 0.839536 +vt 0.139410 0.818390 +vt 0.159151 0.818390 +vt 0.169022 0.868421 +vt 0.159151 0.918452 +vt 0.149281 0.926192 +vt 0.139410 0.918452 +vt 0.129496 0.873684 +vt -0.000000 0.484211 +vt 0.032374 0.484211 +vt 0.118705 0.484211 +vt 0.010791 0.484211 +vt 0.043165 0.484211 +vt 0.129539 0.868421 +vt 0.132184 0.839536 +vt 0.139410 0.818390 +vt 0.159151 0.818390 +vt 0.166377 0.839536 +vt 0.169022 0.868421 +vt 0.159151 0.918452 +vt 0.149281 0.926192 +vt 0.139410 0.918452 +vt 0.129496 0.873684 +vt -0.000000 0.484211 +vt 0.032374 0.484211 +vt 0.118705 0.484211 +vt 0.021583 0.484211 +vt 0.010791 0.484211 +vt 0.043165 0.484211 +vt 0.132184 0.897306 +vt 0.129539 0.868421 +vt 0.132184 0.839536 +vt 0.139410 0.818390 +vt 0.159151 0.818390 +vt 0.169022 0.868421 +vt 0.159151 0.918452 +vt 0.149281 0.926192 +vt 0.139410 0.918452 +vt 0.129496 0.873684 +vt 0.064748 0.484211 +vt 0.021583 0.484211 +vt 0.107914 0.484211 +vt 0.010791 0.484211 +vt 0.043165 0.484211 +vt 0.129539 0.868421 +vt 0.132184 0.839536 +vt 0.139410 0.818390 +vt 0.159151 0.818390 +vt 0.166377 0.839536 +vt 0.169022 0.868421 +vt 0.159151 0.918452 +vt 0.149281 0.926192 +vt 0.139410 0.918452 +vt 0.129496 0.873684 +vt 0.064748 0.484211 +vt 0.021583 0.484211 +vt 0.053957 0.484211 +vt 0.086331 0.484211 +vt 0.010791 0.484211 +vt 0.043165 0.484211 +vt 0.132184 0.897306 +vt 0.129539 0.868421 +vt 0.132184 0.839536 +vt 0.139410 0.818390 +vt 0.159151 0.818390 +vt 0.169022 0.868421 +vt 0.159151 0.918452 +vt 0.149281 0.926192 +vt 0.139410 0.918452 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.8660 -0.5000 +vn 0.3511 0.0000 -0.9363 +vn 0.3511 -0.4682 -0.8109 +vn 0.3511 0.8109 -0.4682 +vn 0.3511 0.4682 -0.8109 +vn 0.3511 -0.9363 0.0000 +vn 0.3511 -0.8109 0.4682 +vn 0.3511 0.0000 0.9363 +vn 0.3511 0.4682 0.8109 +vn 0.3511 0.9363 0.0000 +vn 0.3511 -0.8109 -0.4682 +vn 0.3511 -0.4682 0.8109 +vn 0.3511 0.8109 0.4682 +s off +f 78/112/14 103/113/14 79/114/14 +f 80/115/14 103/113/14 104/116/14 +f 81/117/14 104/116/14 105/118/14 +f 82/119/14 105/118/14 106/120/14 +f 71/121/14 106/120/14 95/122/14 +f 71/121/14 96/123/14 72/124/14 +f 72/124/14 97/125/14 73/126/14 +f 73/126/14 98/127/14 74/128/14 +f 75/129/14 98/130/14 99/131/14 +f 76/132/14 99/131/14 100/133/14 +f 77/134/14 100/133/14 101/135/14 +f 77/134/14 102/136/14 78/112/14 +f 115/137/15 127/138/15 114/139/15 +f 112/140/15 124/141/15 111/142/15 +f 109/143/15 121/144/15 108/145/15 +f 116/146/15 128/147/15 115/148/15 +f 113/149/15 125/150/15 112/140/15 +f 110/151/15 122/152/15 109/143/15 +f 117/153/15 129/154/15 116/146/15 +f 118/155/15 119/156/15 120/157/15 +f 114/139/15 126/158/15 113/149/15 +f 111/142/15 123/159/15 110/151/15 +f 118/155/15 130/160/15 117/153/15 +f 107/161/15 121/162/15 119/163/15 +f 143/164/15 145/165/15 155/166/15 +f 145/167/15 146/168/15 155/169/15 +f 146/170/15 147/171/15 155/172/15 +f 147/173/15 148/174/15 155/175/15 +f 148/176/15 149/177/15 155/178/15 +f 149/179/15 150/180/15 155/181/15 +f 150/182/15 151/183/15 155/184/15 +f 151/185/15 152/186/15 155/187/15 +f 152/188/15 153/189/15 155/190/15 +f 153/191/15 154/192/15 155/193/15 +f 154/194/15 144/195/15 155/196/15 +f 144/197/15 143/198/15 155/199/15 +f 163/200/14 188/201/14 164/202/14 +f 165/203/14 188/201/14 189/204/14 +f 166/205/14 189/204/14 190/206/14 +f 167/207/14 190/206/14 191/208/14 +f 156/209/14 191/208/14 180/210/14 +f 156/209/14 181/211/14 157/212/14 +f 157/212/14 182/213/14 158/214/14 +f 158/214/14 183/215/14 159/216/14 +f 160/217/14 183/218/14 184/219/14 +f 161/220/14 184/219/14 185/221/14 +f 162/222/14 185/221/14 186/223/14 +f 162/222/14 187/224/14 163/200/14 +f 200/225/15 212/226/15 199/227/15 +f 197/228/15 209/229/15 196/230/15 +f 194/231/15 206/232/15 193/233/15 +f 201/234/15 213/235/15 200/236/15 +f 198/237/15 210/238/15 197/228/15 +f 195/239/15 207/240/15 194/231/15 +f 202/241/15 214/242/15 201/234/15 +f 203/243/15 204/244/15 205/245/15 +f 199/227/15 211/246/15 198/237/15 +f 196/230/15 208/247/15 195/239/15 +f 203/243/15 215/248/15 202/241/15 +f 192/249/15 206/250/15 204/251/15 +f 228/252/15 230/253/15 240/254/15 +f 230/255/15 231/256/15 240/257/15 +f 231/258/15 232/259/15 240/260/15 +f 232/261/15 233/262/15 240/263/15 +f 233/264/15 234/265/15 240/266/15 +f 234/267/15 235/268/15 240/269/15 +f 235/270/15 236/271/15 240/272/15 +f 236/273/15 237/274/15 240/275/15 +f 237/276/15 238/277/15 240/278/15 +f 238/279/15 239/280/15 240/281/15 +f 239/282/15 229/283/15 240/284/15 +f 229/285/15 228/286/15 240/287/15 +f 249/288/14 272/289/14 273/290/14 +f 250/291/14 273/290/14 274/292/14 +f 251/293/14 274/292/14 275/294/14 +f 252/295/14 275/294/14 276/296/14 +f 252/295/14 265/297/14 241/298/14 +f 241/298/14 266/299/14 242/300/14 +f 243/301/14 266/299/14 267/302/14 +f 243/301/14 268/303/14 244/304/14 +f 245/305/14 268/306/14 269/307/14 +f 246/308/14 269/307/14 270/309/14 +f 247/310/14 270/309/14 271/311/14 +f 247/310/14 272/289/14 248/312/14 +f 285/313/15 297/314/15 284/315/15 +f 281/316/15 295/317/15 294/318/15 +f 278/319/15 292/320/15 291/321/15 +f 285/322/15 299/323/15 298/324/15 +f 283/325/15 295/326/15 282/327/15 +f 280/328/15 292/329/15 279/330/15 +f 286/331/15 300/332/15 299/333/15 +f 288/334/15 289/335/15 290/336/15 +f 284/315/15 296/337/15 283/325/15 +f 281/316/15 293/338/15 280/328/15 +f 288/334/15 300/339/15 287/340/15 +f 277/341/15 291/342/15 289/343/15 +f 313/344/15 315/345/15 325/346/15 +f 315/347/15 316/348/15 325/349/15 +f 316/350/15 317/351/15 325/352/15 +f 317/353/15 318/354/15 325/355/15 +f 318/356/15 319/357/15 325/358/15 +f 319/359/15 320/360/15 325/361/15 +f 320/362/15 321/363/15 325/364/15 +f 321/365/15 322/366/15 325/367/15 +f 322/368/15 323/369/15 325/370/15 +f 323/371/15 324/372/15 325/373/15 +f 324/374/15 314/375/15 325/376/15 +f 314/377/15 313/378/15 325/379/15 +f 333/380/14 358/381/14 334/382/14 +f 335/383/14 358/381/14 359/384/14 +f 336/385/14 359/384/14 360/386/14 +f 337/387/14 360/386/14 361/388/14 +f 337/387/14 350/389/14 326/390/14 +f 326/390/14 351/391/14 327/392/14 +f 327/392/14 352/393/14 328/394/14 +f 328/394/14 353/395/14 329/396/14 +f 330/397/14 353/398/14 354/399/14 +f 331/400/14 354/399/14 355/401/14 +f 332/402/14 355/401/14 356/403/14 +f 332/402/14 357/404/14 333/380/14 +f 370/405/15 382/406/15 369/407/15 +f 366/408/15 380/409/15 379/410/15 +f 363/411/15 377/412/15 376/413/15 +f 371/414/15 383/415/15 370/416/15 +f 368/417/15 380/418/15 367/419/15 +f 364/420/15 378/421/15 377/422/15 +f 371/414/15 385/423/15 384/424/15 +f 373/425/15 374/426/15 375/427/15 +f 369/407/15 381/428/15 368/417/15 +f 366/408/15 378/429/15 365/430/15 +f 373/425/15 385/431/15 372/432/15 +f 362/433/15 376/434/15 374/435/15 +f 398/436/15 400/437/15 410/438/15 +f 400/439/15 401/440/15 410/441/15 +f 401/442/15 402/443/15 410/444/15 +f 402/445/15 403/446/15 410/447/15 +f 403/448/15 404/449/15 410/450/15 +f 404/451/15 405/452/15 410/453/15 +f 405/454/15 406/455/15 410/456/15 +f 406/457/15 407/458/15 410/459/15 +f 407/460/15 408/461/15 410/462/15 +f 408/463/15 409/464/15 410/465/15 +f 409/466/15 399/467/15 410/468/15 +f 399/469/15 398/470/15 410/471/15 +f 418/472/14 443/473/14 419/474/14 +f 420/475/14 443/473/14 444/476/14 +f 421/477/14 444/476/14 445/478/14 +f 422/479/14 445/478/14 446/480/14 +f 422/479/14 435/481/14 411/482/14 +f 411/482/14 436/483/14 412/484/14 +f 412/484/14 437/485/14 413/486/14 +f 413/486/14 438/487/14 414/488/14 +f 415/489/14 438/490/14 439/491/14 +f 416/492/14 439/491/14 440/493/14 +f 417/494/14 440/493/14 441/495/14 +f 417/494/14 442/496/14 418/472/14 +f 454/497/15 468/498/15 467/499/15 +f 452/500/15 464/501/15 451/502/15 +f 448/503/15 462/504/15 461/505/15 +f 456/506/15 468/507/15 455/508/15 +f 453/509/15 465/510/15 452/500/15 +f 450/511/15 462/512/15 449/513/15 +f 456/506/15 470/514/15 469/515/15 +f 458/516/15 459/517/15 460/518/15 +f 454/497/15 466/519/15 453/509/15 +f 451/502/15 463/520/15 450/511/15 +f 458/516/15 470/521/15 457/522/15 +f 447/523/15 461/524/15 459/525/15 +f 483/526/15 485/527/15 495/528/15 +f 485/529/15 486/530/15 495/531/15 +f 486/532/15 487/533/15 495/534/15 +f 487/535/15 488/536/15 495/537/15 +f 488/538/15 489/539/15 495/540/15 +f 489/541/15 490/542/15 495/543/15 +f 490/544/15 491/545/15 495/546/15 +f 491/547/15 492/548/15 495/549/15 +f 492/550/15 493/551/15 495/552/15 +f 493/553/15 494/554/15 495/555/15 +f 494/556/15 484/557/15 495/558/15 +f 484/559/15 483/560/15 495/561/15 +f 503/562/14 528/563/14 504/564/14 +f 504/564/14 529/565/14 505/566/14 +f 506/567/14 529/565/14 530/568/14 +f 507/569/14 530/568/14 531/570/14 +f 507/569/14 520/571/14 496/572/14 +f 496/572/14 521/573/14 497/574/14 +f 497/574/14 522/575/14 498/576/14 +f 498/576/14 523/577/14 499/578/14 +f 499/579/14 524/580/14 500/581/14 +f 500/581/14 525/582/14 501/583/14 +f 501/583/14 526/584/14 502/585/14 +f 502/585/14 527/586/14 503/562/14 +f 540/587/15 552/588/15 539/589/15 +f 537/590/15 549/591/15 536/592/15 +f 534/593/15 546/594/15 533/595/15 +f 541/596/15 553/597/15 540/598/15 +f 538/599/15 550/600/15 537/590/15 +f 535/601/15 547/602/15 534/593/15 +f 541/596/15 555/603/15 554/604/15 +f 543/605/15 544/606/15 545/607/15 +f 539/589/15 551/608/15 538/599/15 +f 536/592/15 548/609/15 535/601/15 +f 543/605/15 555/610/15 542/611/15 +f 532/612/15 546/613/15 544/614/15 +f 568/615/15 570/616/15 580/617/15 +f 570/618/15 571/619/15 580/620/15 +f 571/621/15 572/622/15 580/623/15 +f 572/624/15 573/625/15 580/626/15 +f 573/627/15 574/628/15 580/629/15 +f 574/630/15 575/631/15 580/632/15 +f 575/633/15 576/634/15 580/635/15 +f 576/636/15 577/637/15 580/638/15 +f 577/639/15 578/640/15 580/641/15 +f 578/642/15 579/643/15 580/644/15 +f 579/645/15 569/646/15 580/647/15 +f 569/648/15 568/649/15 580/650/15 +f 78/112/14 102/136/14 103/113/14 +f 80/115/14 79/114/14 103/113/14 +f 81/117/14 80/115/14 104/116/14 +f 82/119/14 81/117/14 105/118/14 +f 71/121/14 82/119/14 106/120/14 +f 71/121/14 95/122/14 96/123/14 +f 72/124/14 96/123/14 97/125/14 +f 73/126/14 97/125/14 98/127/14 +f 75/129/14 74/651/14 98/130/14 +f 76/132/14 75/129/14 99/131/14 +f 77/134/14 76/132/14 100/133/14 +f 77/134/14 101/135/14 102/136/14 +f 115/137/15 128/652/15 127/138/15 +f 112/140/15 125/653/15 124/141/15 +f 109/143/15 122/654/15 121/144/15 +f 116/146/15 129/655/15 128/147/15 +f 113/149/15 126/656/15 125/150/15 +f 110/151/15 123/657/15 122/152/15 +f 117/153/15 130/658/15 129/154/15 +f 118/155/15 107/161/15 119/156/15 +f 114/139/15 127/659/15 126/158/15 +f 111/142/15 124/660/15 123/159/15 +f 118/155/15 120/661/15 130/160/15 +f 107/161/15 108/145/15 121/162/15 +f 163/200/14 187/224/14 188/201/14 +f 165/203/14 164/202/14 188/201/14 +f 166/205/14 165/203/14 189/204/14 +f 167/207/14 166/205/14 190/206/14 +f 156/209/14 167/207/14 191/208/14 +f 156/209/14 180/210/14 181/211/14 +f 157/212/14 181/211/14 182/213/14 +f 158/214/14 182/213/14 183/215/14 +f 160/217/14 159/662/14 183/218/14 +f 161/220/14 160/217/14 184/219/14 +f 162/222/14 161/220/14 185/221/14 +f 162/222/14 186/223/14 187/224/14 +f 200/225/15 213/663/15 212/226/15 +f 197/228/15 210/664/15 209/229/15 +f 194/231/15 207/665/15 206/232/15 +f 201/234/15 214/666/15 213/235/15 +f 198/237/15 211/667/15 210/238/15 +f 195/239/15 208/668/15 207/240/15 +f 202/241/15 215/669/15 214/242/15 +f 203/243/15 192/249/15 204/244/15 +f 199/227/15 212/670/15 211/246/15 +f 196/230/15 209/671/15 208/247/15 +f 203/243/15 205/672/15 215/248/15 +f 192/249/15 193/233/15 206/250/15 +f 249/288/14 248/312/14 272/289/14 +f 250/291/14 249/288/14 273/290/14 +f 251/293/14 250/291/14 274/292/14 +f 252/295/14 251/293/14 275/294/14 +f 252/295/14 276/296/14 265/297/14 +f 241/298/14 265/297/14 266/299/14 +f 243/301/14 242/300/14 266/299/14 +f 243/301/14 267/302/14 268/303/14 +f 245/305/14 244/673/14 268/306/14 +f 246/308/14 245/305/14 269/307/14 +f 247/310/14 246/308/14 270/309/14 +f 247/310/14 271/311/14 272/289/14 +f 285/313/15 298/674/15 297/314/15 +f 281/316/15 282/327/15 295/317/15 +f 278/319/15 279/330/15 292/320/15 +f 285/322/15 286/331/15 299/323/15 +f 283/325/15 296/675/15 295/326/15 +f 280/328/15 293/676/15 292/329/15 +f 286/331/15 287/340/15 300/332/15 +f 288/334/15 277/341/15 289/335/15 +f 284/315/15 297/677/15 296/337/15 +f 281/316/15 294/678/15 293/338/15 +f 288/334/15 290/679/15 300/339/15 +f 277/341/15 278/319/15 291/342/15 +f 333/380/14 357/404/14 358/381/14 +f 335/383/14 334/382/14 358/381/14 +f 336/385/14 335/383/14 359/384/14 +f 337/387/14 336/385/14 360/386/14 +f 337/387/14 361/388/14 350/389/14 +f 326/390/14 350/389/14 351/391/14 +f 327/392/14 351/391/14 352/393/14 +f 328/394/14 352/393/14 353/395/14 +f 330/397/14 329/680/14 353/398/14 +f 331/400/14 330/397/14 354/399/14 +f 332/402/14 331/400/14 355/401/14 +f 332/402/14 356/403/14 357/404/14 +f 370/405/15 383/681/15 382/406/15 +f 366/408/15 367/419/15 380/409/15 +f 363/411/15 364/420/15 377/412/15 +f 371/414/15 384/682/15 383/415/15 +f 368/417/15 381/683/15 380/418/15 +f 364/420/15 365/430/15 378/421/15 +f 371/414/15 372/432/15 385/423/15 +f 373/425/15 362/433/15 374/426/15 +f 369/407/15 382/684/15 381/428/15 +f 366/408/15 379/685/15 378/429/15 +f 373/425/15 375/686/15 385/431/15 +f 362/433/15 363/411/15 376/434/15 +f 418/472/14 442/496/14 443/473/14 +f 420/475/14 419/474/14 443/473/14 +f 421/477/14 420/475/14 444/476/14 +f 422/479/14 421/477/14 445/478/14 +f 422/479/14 446/480/14 435/481/14 +f 411/482/14 435/481/14 436/483/14 +f 412/484/14 436/483/14 437/485/14 +f 413/486/14 437/485/14 438/487/14 +f 415/489/14 414/687/14 438/490/14 +f 416/492/14 415/489/14 439/491/14 +f 417/494/14 416/492/14 440/493/14 +f 417/494/14 441/495/14 442/496/14 +f 454/497/15 455/688/15 468/498/15 +f 452/500/15 465/689/15 464/501/15 +f 448/503/15 449/513/15 462/504/15 +f 456/506/15 469/690/15 468/507/15 +f 453/509/15 466/691/15 465/510/15 +f 450/511/15 463/692/15 462/512/15 +f 456/506/15 457/522/15 470/514/15 +f 458/516/15 447/523/15 459/517/15 +f 454/497/15 467/693/15 466/519/15 +f 451/502/15 464/694/15 463/520/15 +f 458/516/15 460/695/15 470/521/15 +f 447/523/15 448/503/15 461/524/15 +f 503/562/14 527/586/14 528/563/14 +f 504/564/14 528/563/14 529/565/14 +f 506/567/14 505/566/14 529/565/14 +f 507/569/14 506/567/14 530/568/14 +f 507/569/14 531/570/14 520/571/14 +f 496/572/14 520/571/14 521/573/14 +f 497/574/14 521/573/14 522/575/14 +f 498/576/14 522/575/14 523/577/14 +f 499/579/14 523/696/14 524/580/14 +f 500/581/14 524/580/14 525/582/14 +f 501/583/14 525/582/14 526/584/14 +f 502/585/14 526/584/14 527/586/14 +f 540/587/15 553/697/15 552/588/15 +f 537/590/15 550/698/15 549/591/15 +f 534/593/15 547/699/15 546/594/15 +f 541/596/15 554/700/15 553/597/15 +f 538/599/15 551/701/15 550/600/15 +f 535/601/15 548/702/15 547/602/15 +f 541/596/15 542/611/15 555/603/15 +f 543/605/15 532/612/15 544/606/15 +f 539/589/15 552/703/15 551/608/15 +f 536/592/15 549/704/15 548/609/15 +f 543/605/15 545/705/15 555/610/15 +f 532/612/15 533/595/15 546/613/15 +s 1 +f 101/135/16 113/149/17 112/140/16 +f 79/114/18 90/706/19 78/112/19 +f 76/132/17 87/707/20 75/129/20 +f 71/121/21 94/708/22 82/119/22 +f 73/126/23 84/709/24 72/124/24 +f 80/115/25 91/710/18 79/114/18 +f 77/134/16 88/711/17 76/132/17 +f 74/128/26 85/712/23 73/126/23 +f 81/117/27 92/713/25 80/115/25 +f 78/112/19 89/714/16 77/134/16 +f 75/129/20 86/715/26 74/651/26 +f 82/119/22 93/716/27 81/117/27 +f 72/124/24 83/717/21 71/121/21 +f 98/127/26 116/146/23 115/148/26 +f 105/118/27 109/143/25 108/145/27 +f 102/136/19 112/140/16 111/142/19 +f 99/131/20 115/137/26 114/139/20 +f 106/120/22 108/145/27 107/161/22 +f 96/123/24 118/155/21 117/153/24 +f 103/113/18 111/142/19 110/151/18 +f 100/133/17 114/139/20 113/149/17 +f 95/122/21 107/161/22 118/155/21 +f 97/125/23 117/153/24 116/146/23 +f 104/116/25 110/151/18 109/143/25 +f 121/162/20 131/718/17 119/163/17 +f 132/719/28 154/194/29 142/720/29 +f 128/652/25 139/721/27 127/138/27 +f 125/653/21 136/722/24 124/141/24 +f 122/654/26 133/723/20 121/144/20 +f 129/655/18 140/724/25 128/147/25 +f 126/656/22 137/725/21 125/150/21 +f 123/657/23 134/726/26 122/152/26 +f 130/658/19 141/727/18 129/154/18 +f 119/156/17 132/728/16 120/157/16 +f 127/659/27 138/729/22 126/158/22 +f 124/660/24 135/730/23 123/159/23 +f 120/661/16 142/720/19 130/160/19 +f 133/731/30 143/164/31 131/718/31 +f 140/732/32 151/185/33 139/721/33 +f 137/733/34 148/176/35 136/722/35 +f 134/734/36 145/167/30 133/723/30 +f 140/724/32 153/189/37 152/188/32 +f 137/725/34 150/180/38 149/179/34 +f 134/726/36 147/171/39 146/170/36 +f 141/727/37 154/192/29 153/191/37 +f 132/728/28 143/198/31 144/197/28 +f 139/735/33 150/182/38 138/729/38 +f 135/730/39 148/174/35 147/173/39 +f 86/736/14 88/737/14 90/738/14 +f 186/223/21 198/237/22 197/228/21 +f 164/202/23 175/739/24 163/200/24 +f 161/220/22 172/740/27 160/217/27 +f 156/209/16 179/741/17 167/207/17 +f 158/214/18 169/742/19 157/212/19 +f 165/203/26 176/743/23 164/202/23 +f 162/222/21 173/744/22 161/220/22 +f 159/216/25 170/745/18 158/214/18 +f 166/205/20 177/746/26 165/203/26 +f 163/200/24 174/747/21 162/222/21 +f 160/217/27 171/748/25 159/662/25 +f 167/207/17 178/749/20 166/205/20 +f 157/212/19 168/750/16 156/209/16 +f 183/215/25 201/234/18 200/236/25 +f 190/206/20 194/231/26 193/233/20 +f 187/224/24 197/228/21 196/230/24 +f 184/219/27 200/225/25 199/227/27 +f 191/208/17 193/233/20 192/249/17 +f 181/211/19 203/243/16 202/241/19 +f 188/201/23 196/230/24 195/239/23 +f 185/221/22 199/227/27 198/237/22 +f 180/210/16 192/249/17 203/243/16 +f 182/213/18 202/241/19 201/234/18 +f 189/204/26 195/239/23 194/231/26 +f 206/250/27 216/751/22 204/251/22 +f 227/752/35 229/283/34 239/282/35 +f 213/663/26 224/753/20 212/226/20 +f 210/664/16 221/754/19 209/229/19 +f 207/665/25 218/755/27 206/232/27 +f 214/666/23 225/756/26 213/235/26 +f 211/667/17 222/757/16 210/238/16 +f 208/668/18 219/758/25 207/240/25 +f 215/669/24 226/759/23 214/242/23 +f 204/244/22 217/760/21 205/245/21 +f 212/670/20 223/761/17 211/246/17 +f 209/671/19 220/762/18 208/247/18 +f 205/672/21 227/752/24 215/248/24 +f 218/763/33 228/252/38 216/751/38 +f 224/753/30 237/274/36 236/273/30 +f 221/754/29 234/265/28 233/264/29 +f 219/764/32 230/255/33 218/755/33 +f 226/765/39 237/276/36 225/756/36 +f 223/766/31 234/267/28 222/757/28 +f 219/758/32 232/259/37 231/258/32 +f 226/759/39 239/280/35 238/279/39 +f 216/767/38 229/285/34 217/760/34 +f 224/768/30 235/270/31 223/761/31 +f 220/762/37 233/262/29 232/261/37 +f 171/769/14 173/770/14 175/771/14 +f 271/311/20 283/325/26 282/327/20 +f 249/288/16 260/772/17 248/312/17 +f 246/308/26 257/773/23 245/305/23 +f 241/298/27 264/774/25 252/295/25 +f 243/301/21 254/775/22 242/300/22 +f 250/291/19 261/776/16 249/288/16 +f 247/310/20 258/777/26 246/308/26 +f 244/304/24 255/778/21 243/301/21 +f 251/293/18 262/779/19 250/291/19 +f 248/312/17 259/780/20 247/310/20 +f 245/305/23 256/781/24 244/673/24 +f 252/295/25 263/782/18 251/293/18 +f 242/300/22 253/783/27 241/298/27 +f 268/303/24 286/331/21 285/322/24 +f 275/294/18 279/330/19 278/319/18 +f 272/289/17 282/327/20 281/316/17 +f 269/307/23 285/313/24 284/315/23 +f 276/296/25 278/319/18 277/341/25 +f 266/299/22 288/334/27 287/340/22 +f 273/290/16 281/316/17 280/328/16 +f 270/309/26 284/315/23 283/325/26 +f 265/297/27 277/341/25 288/334/27 +f 267/302/21 287/340/22 286/331/21 +f 274/292/19 280/328/16 279/330/19 +f 291/342/23 301/784/26 289/343/26 +f 302/785/30 324/374/31 312/786/31 +f 298/674/19 309/787/18 297/314/18 +f 295/317/27 306/788/22 294/318/22 +f 292/320/24 303/789/23 291/321/23 +f 299/323/16 310/790/19 298/324/19 +f 296/675/25 307/791/27 295/326/27 +f 293/676/21 304/792/24 292/329/24 +f 300/332/17 311/793/16 299/333/16 +f 289/335/26 302/794/20 290/336/20 +f 297/677/18 308/795/25 296/337/25 +f 294/678/22 305/796/21 293/338/21 +f 290/679/20 312/786/17 300/339/17 +f 303/797/39 313/344/36 301/784/36 +f 309/787/37 322/366/29 321/365/37 +f 306/788/38 319/357/33 318/356/38 +f 304/798/35 315/347/39 303/789/39 +f 310/790/29 323/369/28 322/368/29 +f 308/799/32 319/359/33 307/791/33 +f 305/800/34 316/350/35 304/792/35 +f 312/801/31 323/371/28 311/793/28 +f 301/802/36 314/377/30 302/794/30 +f 308/795/32 321/363/37 320/362/32 +f 305/796/34 318/354/38 317/353/34 +f 256/803/14 260/804/14 264/805/14 +f 356/403/27 368/417/25 367/419/27 +f 334/382/21 345/806/22 333/380/22 +f 331/400/25 342/807/18 330/397/18 +f 326/390/20 349/808/26 337/387/26 +f 328/394/16 339/809/17 327/392/17 +f 335/383/24 346/810/21 334/382/21 +f 332/402/27 343/811/25 331/400/25 +f 329/396/19 340/812/16 328/394/16 +f 336/385/23 347/813/24 335/383/24 +f 333/380/22 344/814/27 332/402/27 +f 330/397/18 341/815/19 329/680/19 +f 337/387/26 348/816/23 336/385/23 +f 327/392/17 338/817/20 326/390/20 +f 353/395/19 371/414/16 370/416/19 +f 360/386/23 364/420/24 363/411/23 +f 357/404/22 367/419/27 366/408/22 +f 354/399/18 370/405/19 369/407/18 +f 361/388/26 363/411/23 362/433/26 +f 351/391/17 373/425/20 372/432/17 +f 358/381/21 366/408/22 365/430/21 +f 355/401/25 369/407/18 368/417/25 +f 350/389/20 362/433/26 373/425/20 +f 352/393/16 372/432/17 371/414/16 +f 359/384/24 365/430/21 364/420/24 +f 376/434/18 386/818/25 374/435/25 +f 387/819/33 409/466/38 397/820/38 +f 383/681/24 394/821/23 382/406/23 +f 380/409/20 391/822/17 379/410/17 +f 377/412/19 388/823/18 376/413/18 +f 384/682/21 395/824/24 383/415/24 +f 381/683/26 392/825/20 380/418/20 +f 378/421/16 389/826/19 377/422/19 +f 385/423/22 396/827/21 384/424/21 +f 374/426/25 387/828/27 375/427/27 +f 382/684/23 393/829/26 381/428/26 +f 379/685/17 390/830/16 378/429/16 +f 375/686/27 397/820/22 385/431/22 +f 388/831/37 398/436/32 386/818/32 +f 394/821/39 407/458/35 406/457/39 +f 391/822/31 404/449/30 403/448/31 +f 389/832/29 400/439/37 388/823/37 +f 395/824/35 408/461/34 407/460/35 +f 392/825/30 405/452/36 404/451/30 +f 390/833/28 401/442/29 389/826/29 +f 397/834/38 408/463/34 396/827/34 +f 386/835/32 399/469/33 387/828/33 +f 393/829/36 406/455/39 405/454/36 +f 390/830/28 403/446/31 402/445/28 +f 341/836/14 343/837/14 345/838/14 +f 441/495/23 453/509/24 452/500/23 +f 419/474/20 430/839/26 418/472/26 +f 416/492/24 427/840/21 415/489/21 +f 411/482/18 434/841/19 422/479/19 +f 413/486/27 424/842/25 412/484/25 +f 420/475/17 431/843/20 419/474/20 +f 417/494/23 428/844/24 416/492/24 +f 414/488/22 425/845/27 413/486/27 +f 421/477/16 432/846/17 420/475/17 +f 418/472/26 429/847/23 417/494/23 +f 415/489/21 426/848/22 414/687/22 +f 422/479/19 433/849/16 421/477/16 +f 412/484/25 423/850/18 411/482/18 +f 438/487/22 456/506/27 455/508/22 +f 445/478/16 449/513/17 448/503/16 +f 442/496/26 452/500/23 451/502/26 +f 439/491/21 455/688/22 454/497/21 +f 446/480/19 448/503/16 447/523/19 +f 436/483/25 458/516/18 457/522/25 +f 443/473/20 451/502/26 450/511/20 +f 440/493/24 454/497/21 453/509/24 +f 435/481/18 447/523/19 458/516/18 +f 437/485/27 457/522/25 456/506/27 +f 444/476/17 450/511/20 449/513/17 +f 461/524/21 471/851/24 459/525/24 +f 472/852/39 494/556/36 482/853/36 +f 468/498/17 479/854/16 467/499/16 +f 465/689/18 476/855/25 464/501/25 +f 462/504/22 473/856/21 461/505/21 +f 469/690/20 480/857/17 468/507/17 +f 466/691/19 477/858/18 465/510/18 +f 463/692/27 474/859/22 462/512/22 +f 470/514/26 481/860/20 469/515/20 +f 459/517/24 472/861/23 460/518/23 +f 467/693/16 478/862/19 466/519/19 +f 464/694/25 475/863/27 463/520/27 +f 460/695/23 482/853/26 470/521/26 +f 473/864/34 483/526/35 471/851/35 +f 480/865/31 491/547/28 479/854/28 +f 477/866/37 488/538/32 476/855/32 +f 473/856/34 486/530/38 485/529/34 +f 481/867/30 492/550/31 480/857/31 +f 477/858/37 490/542/29 489/541/37 +f 475/868/33 486/532/38 474/859/38 +f 481/860/30 494/554/36 493/553/30 +f 471/869/35 484/559/39 472/861/39 +f 478/862/29 491/545/28 490/544/29 +f 475/863/33 488/536/32 487/535/33 +f 426/870/14 430/871/14 434/872/14 +f 526/584/18 538/599/19 537/590/18 +f 504/564/27 515/873/25 503/562/25 +f 501/583/19 512/874/16 500/581/16 +f 496/572/23 519/875/24 507/569/24 +f 498/576/20 509/876/26 497/574/26 +f 505/566/22 516/877/27 504/564/27 +f 502/585/18 513/878/19 501/583/19 +f 499/578/17 510/879/20 498/576/20 +f 506/567/21 517/880/22 505/566/22 +f 503/562/25 514/881/18 502/585/18 +f 500/581/16 511/882/17 499/579/17 +f 507/569/24 518/883/21 506/567/21 +f 497/574/26 508/884/23 496/572/23 +f 523/577/17 541/596/20 540/598/17 +f 530/568/21 534/593/22 533/595/21 +f 527/586/25 537/590/18 536/592/25 +f 524/580/16 540/587/17 539/589/16 +f 531/570/24 533/595/21 532/612/24 +f 521/573/26 543/605/23 542/611/26 +f 528/563/27 536/592/25 535/601/27 +f 525/582/19 539/589/16 538/599/19 +f 520/571/23 532/612/24 543/605/23 +f 522/575/20 542/611/26 541/596/20 +f 529/565/22 535/601/27 534/593/22 +f 546/613/16 556/885/19 544/614/19 +f 557/886/37 579/645/32 567/887/32 +f 553/697/22 564/888/21 552/588/21 +f 550/698/23 561/889/26 549/591/26 +f 547/699/17 558/890/16 546/594/16 +f 554/700/27 565/891/22 553/597/22 +f 551/701/24 562/892/23 550/600/23 +f 548/702/20 559/893/17 547/602/17 +f 555/603/25 566/894/27 554/604/27 +f 544/606/19 557/895/18 545/607/18 +f 552/703/21 563/896/24 551/608/24 +f 549/704/26 560/897/20 548/609/20 +f 545/705/18 567/887/25 555/610/25 +f 558/898/28 568/615/29 556/885/29 +f 565/899/38 576/636/34 564/888/34 +f 562/900/39 573/627/36 561/889/36 +f 558/890/28 571/619/31 570/618/28 +f 566/901/33 577/639/38 565/891/38 +f 562/892/39 575/631/35 574/630/39 +f 559/893/31 572/622/30 571/621/31 +f 567/902/32 578/642/33 566/894/33 +f 557/895/37 568/649/29 569/648/37 +f 563/896/35 576/634/34 575/633/35 +f 560/897/30 573/625/36 572/624/30 +f 511/903/14 513/904/14 515/905/14 +f 101/135/16 100/133/17 113/149/17 +f 79/114/18 91/710/18 90/706/19 +f 76/132/17 88/711/17 87/707/20 +f 71/121/21 83/717/21 94/708/22 +f 73/126/23 85/712/23 84/709/24 +f 80/115/25 92/713/25 91/710/18 +f 77/134/16 89/714/16 88/711/17 +f 74/128/26 86/906/26 85/712/23 +f 81/117/27 93/716/27 92/713/25 +f 78/112/19 90/706/19 89/714/16 +f 75/129/20 87/707/20 86/715/26 +f 82/119/22 94/708/22 93/716/27 +f 72/124/24 84/709/24 83/717/21 +f 98/127/26 97/125/23 116/146/23 +f 105/118/27 104/116/25 109/143/25 +f 102/136/19 101/135/16 112/140/16 +f 99/131/20 98/130/26 115/137/26 +f 106/120/22 105/118/27 108/145/27 +f 96/123/24 95/122/21 118/155/21 +f 103/113/18 102/136/19 111/142/19 +f 100/133/17 99/131/20 114/139/20 +f 95/122/21 106/120/22 107/161/22 +f 97/125/23 96/123/24 117/153/24 +f 104/116/25 103/113/18 110/151/18 +f 121/162/20 133/731/20 131/718/17 +f 132/719/28 144/195/28 154/194/29 +f 128/652/25 140/732/25 139/721/27 +f 125/653/21 137/733/21 136/722/24 +f 122/654/26 134/734/26 133/723/20 +f 129/655/18 141/907/18 140/724/25 +f 126/656/22 138/908/22 137/725/21 +f 123/657/23 135/909/23 134/726/26 +f 130/658/19 142/910/19 141/727/18 +f 119/156/17 131/911/17 132/728/16 +f 127/659/27 139/735/27 138/729/22 +f 124/660/24 136/912/24 135/730/23 +f 120/661/16 132/719/16 142/720/19 +f 133/731/30 145/165/30 143/164/31 +f 140/732/32 152/186/32 151/185/33 +f 137/733/34 149/177/34 148/176/35 +f 134/734/36 146/168/36 145/167/30 +f 140/724/32 141/907/37 153/189/37 +f 137/725/34 138/908/38 150/180/38 +f 134/726/36 135/909/39 147/171/39 +f 141/727/37 142/910/29 154/192/29 +f 132/728/28 131/911/31 143/198/31 +f 139/735/33 151/183/33 150/182/38 +f 135/730/39 136/912/35 148/174/35 +f 94/913/14 83/914/14 84/915/14 +f 84/915/14 85/916/14 86/736/14 +f 86/736/14 87/917/14 88/737/14 +f 88/737/14 89/918/14 90/738/14 +f 90/738/14 91/919/14 94/913/14 +f 91/919/14 92/920/14 94/913/14 +f 92/920/14 93/921/14 94/913/14 +f 94/913/14 84/915/14 90/738/14 +f 84/915/14 86/736/14 90/738/14 +f 186/223/21 185/221/22 198/237/22 +f 164/202/23 176/743/23 175/739/24 +f 161/220/22 173/744/22 172/740/27 +f 156/209/16 168/750/16 179/741/17 +f 158/214/18 170/745/18 169/742/19 +f 165/203/26 177/746/26 176/743/23 +f 162/222/21 174/747/21 173/744/22 +f 159/216/25 171/922/25 170/745/18 +f 166/205/20 178/749/20 177/746/26 +f 163/200/24 175/739/24 174/747/21 +f 160/217/27 172/740/27 171/748/25 +f 167/207/17 179/741/17 178/749/20 +f 157/212/19 169/742/19 168/750/16 +f 183/215/25 182/213/18 201/234/18 +f 190/206/20 189/204/26 194/231/26 +f 187/224/24 186/223/21 197/228/21 +f 184/219/27 183/218/25 200/225/25 +f 191/208/17 190/206/20 193/233/20 +f 181/211/19 180/210/16 203/243/16 +f 188/201/23 187/224/24 196/230/24 +f 185/221/22 184/219/27 199/227/27 +f 180/210/16 191/208/17 192/249/17 +f 182/213/18 181/211/19 202/241/19 +f 189/204/26 188/201/23 195/239/23 +f 206/250/27 218/763/27 216/751/22 +f 227/752/35 217/923/34 229/283/34 +f 213/663/26 225/924/26 224/753/20 +f 210/664/16 222/925/16 221/754/19 +f 207/665/25 219/764/25 218/755/27 +f 214/666/23 226/765/23 225/756/26 +f 211/667/17 223/766/17 222/757/16 +f 208/668/18 220/926/18 219/758/25 +f 215/669/24 227/927/24 226/759/23 +f 204/244/22 216/767/22 217/760/21 +f 212/670/20 224/768/20 223/761/17 +f 209/671/19 221/928/19 220/762/18 +f 205/672/21 217/923/21 227/752/24 +f 218/763/33 230/253/33 228/252/38 +f 224/753/30 225/924/36 237/274/36 +f 221/754/29 222/925/28 234/265/28 +f 219/764/32 231/256/32 230/255/33 +f 226/765/39 238/277/39 237/276/36 +f 223/766/31 235/268/31 234/267/28 +f 219/758/32 220/926/37 232/259/37 +f 226/759/39 227/927/35 239/280/35 +f 216/767/38 228/286/38 229/285/34 +f 224/768/30 236/271/30 235/270/31 +f 220/762/37 221/928/29 233/262/29 +f 179/929/14 168/930/14 169/931/14 +f 169/931/14 170/932/14 171/769/14 +f 171/769/14 172/933/14 173/770/14 +f 173/770/14 174/934/14 175/771/14 +f 175/771/14 176/935/14 179/929/14 +f 176/935/14 177/936/14 179/929/14 +f 177/936/14 178/937/14 179/929/14 +f 179/929/14 169/931/14 175/771/14 +f 169/931/14 171/769/14 175/771/14 +f 271/311/20 270/309/26 283/325/26 +f 249/288/16 261/776/16 260/772/17 +f 246/308/26 258/777/26 257/773/23 +f 241/298/27 253/783/27 264/774/25 +f 243/301/21 255/778/21 254/775/22 +f 250/291/19 262/779/19 261/776/16 +f 247/310/20 259/780/20 258/777/26 +f 244/304/24 256/938/24 255/778/21 +f 251/293/18 263/782/18 262/779/19 +f 248/312/17 260/772/17 259/780/20 +f 245/305/23 257/773/23 256/781/24 +f 252/295/25 264/774/25 263/782/18 +f 242/300/22 254/775/22 253/783/27 +f 268/303/24 267/302/21 286/331/21 +f 275/294/18 274/292/19 279/330/19 +f 272/289/17 271/311/20 282/327/20 +f 269/307/23 268/306/24 285/313/24 +f 276/296/25 275/294/18 278/319/18 +f 266/299/22 265/297/27 288/334/27 +f 273/290/16 272/289/17 281/316/17 +f 270/309/26 269/307/23 284/315/23 +f 265/297/27 276/296/25 277/341/25 +f 267/302/21 266/299/22 287/340/22 +f 274/292/19 273/290/16 280/328/16 +f 291/342/23 303/797/23 301/784/26 +f 302/785/30 314/375/30 324/374/31 +f 298/674/19 310/939/19 309/787/18 +f 295/317/27 307/940/27 306/788/22 +f 292/320/24 304/798/24 303/789/23 +f 299/323/16 311/941/16 310/790/19 +f 296/675/25 308/799/25 307/791/27 +f 293/676/21 305/800/21 304/792/24 +f 300/332/17 312/801/17 311/793/16 +f 289/335/26 301/802/26 302/794/20 +f 297/677/18 309/942/18 308/795/25 +f 294/678/22 306/943/22 305/796/21 +f 290/679/20 302/785/20 312/786/17 +f 303/797/39 315/345/39 313/344/36 +f 309/787/37 310/939/29 322/366/29 +f 306/788/38 307/940/33 319/357/33 +f 304/798/35 316/348/35 315/347/39 +f 310/790/29 311/941/28 323/369/28 +f 308/799/32 320/360/32 319/359/33 +f 305/800/34 317/351/34 316/350/35 +f 312/801/31 324/372/31 323/371/28 +f 301/802/36 313/378/36 314/377/30 +f 308/795/32 309/942/37 321/363/37 +f 305/796/34 306/943/38 318/354/38 +f 264/805/14 253/944/14 256/803/14 +f 253/944/14 254/945/14 256/803/14 +f 254/945/14 255/946/14 256/803/14 +f 256/803/14 257/947/14 258/948/14 +f 258/948/14 259/949/14 260/804/14 +f 260/804/14 261/950/14 264/805/14 +f 261/950/14 262/951/14 264/805/14 +f 262/951/14 263/952/14 264/805/14 +f 256/803/14 258/948/14 260/804/14 +f 356/403/27 355/401/25 368/417/25 +f 334/382/21 346/810/21 345/806/22 +f 331/400/25 343/811/25 342/807/18 +f 326/390/20 338/817/20 349/808/26 +f 328/394/16 340/812/16 339/809/17 +f 335/383/24 347/813/24 346/810/21 +f 332/402/27 344/814/27 343/811/25 +f 329/396/19 341/953/19 340/812/16 +f 336/385/23 348/816/23 347/813/24 +f 333/380/22 345/806/22 344/814/27 +f 330/397/18 342/807/18 341/815/19 +f 337/387/26 349/808/26 348/816/23 +f 327/392/17 339/809/17 338/817/20 +f 353/395/19 352/393/16 371/414/16 +f 360/386/23 359/384/24 364/420/24 +f 357/404/22 356/403/27 367/419/27 +f 354/399/18 353/398/19 370/405/19 +f 361/388/26 360/386/23 363/411/23 +f 351/391/17 350/389/20 373/425/20 +f 358/381/21 357/404/22 366/408/22 +f 355/401/25 354/399/18 369/407/18 +f 350/389/20 361/388/26 362/433/26 +f 352/393/16 351/391/17 372/432/17 +f 359/384/24 358/381/21 365/430/21 +f 376/434/18 388/831/18 386/818/25 +f 387/819/33 399/467/33 409/466/38 +f 383/681/24 395/954/24 394/821/23 +f 380/409/20 392/955/20 391/822/17 +f 377/412/19 389/832/19 388/823/18 +f 384/682/21 396/956/21 395/824/24 +f 381/683/26 393/957/26 392/825/20 +f 378/421/16 390/833/16 389/826/19 +f 385/423/22 397/834/22 396/827/21 +f 374/426/25 386/835/25 387/828/27 +f 382/684/23 394/958/23 393/829/26 +f 379/685/17 391/959/17 390/830/16 +f 375/686/27 387/819/27 397/820/22 +f 388/831/37 400/437/37 398/436/32 +f 394/821/39 395/954/35 407/458/35 +f 391/822/31 392/955/30 404/449/30 +f 389/832/29 401/440/29 400/439/37 +f 395/824/35 396/956/34 408/461/34 +f 392/825/30 393/957/36 405/452/36 +f 390/833/28 402/443/28 401/442/29 +f 397/834/38 409/464/38 408/463/34 +f 386/835/32 398/470/32 399/469/33 +f 393/829/36 394/958/39 406/455/39 +f 390/830/28 391/959/31 403/446/31 +f 349/960/14 338/961/14 339/962/14 +f 339/962/14 340/963/14 341/836/14 +f 341/836/14 342/964/14 343/837/14 +f 343/837/14 344/965/14 345/838/14 +f 345/838/14 346/966/14 349/960/14 +f 346/966/14 347/967/14 349/960/14 +f 347/967/14 348/968/14 349/960/14 +f 349/960/14 339/962/14 345/838/14 +f 339/962/14 341/836/14 345/838/14 +f 441/495/23 440/493/24 453/509/24 +f 419/474/20 431/843/20 430/839/26 +f 416/492/24 428/844/24 427/840/21 +f 411/482/18 423/850/18 434/841/19 +f 413/486/27 425/845/27 424/842/25 +f 420/475/17 432/846/17 431/843/20 +f 417/494/23 429/847/23 428/844/24 +f 414/488/22 426/969/22 425/845/27 +f 421/477/16 433/849/16 432/846/17 +f 418/472/26 430/839/26 429/847/23 +f 415/489/21 427/840/21 426/848/22 +f 422/479/19 434/841/19 433/849/16 +f 412/484/25 424/842/25 423/850/18 +f 438/487/22 437/485/27 456/506/27 +f 445/478/16 444/476/17 449/513/17 +f 442/496/26 441/495/23 452/500/23 +f 439/491/21 438/490/22 455/688/22 +f 446/480/19 445/478/16 448/503/16 +f 436/483/25 435/481/18 458/516/18 +f 443/473/20 442/496/26 451/502/26 +f 440/493/24 439/491/21 454/497/21 +f 435/481/18 446/480/19 447/523/19 +f 437/485/27 436/483/25 457/522/25 +f 444/476/17 443/473/20 450/511/20 +f 461/524/21 473/864/21 471/851/24 +f 472/852/39 484/557/39 494/556/36 +f 468/498/17 480/865/17 479/854/16 +f 465/689/18 477/866/18 476/855/25 +f 462/504/22 474/970/22 473/856/21 +f 469/690/20 481/867/20 480/857/17 +f 466/691/19 478/971/19 477/858/18 +f 463/692/27 475/868/27 474/859/22 +f 470/514/26 482/972/26 481/860/20 +f 459/517/24 471/869/24 472/861/23 +f 467/693/16 479/973/16 478/862/19 +f 464/694/25 476/974/25 475/863/27 +f 460/695/23 472/852/23 482/853/26 +f 473/864/34 485/527/34 483/526/35 +f 480/865/31 492/548/31 491/547/28 +f 477/866/37 489/539/37 488/538/32 +f 473/856/34 474/970/38 486/530/38 +f 481/867/30 493/551/30 492/550/31 +f 477/858/37 478/971/29 490/542/29 +f 475/868/33 487/533/33 486/532/38 +f 481/860/30 482/972/36 494/554/36 +f 471/869/35 483/560/35 484/559/39 +f 478/862/29 479/973/28 491/545/28 +f 475/863/33 476/974/32 488/536/32 +f 434/872/14 423/975/14 424/976/14 +f 424/976/14 425/977/14 426/870/14 +f 426/870/14 427/978/14 428/979/14 +f 428/979/14 429/980/14 430/871/14 +f 430/871/14 431/981/14 432/982/14 +f 432/982/14 433/983/14 430/871/14 +f 433/983/14 434/872/14 430/871/14 +f 434/872/14 424/976/14 426/870/14 +f 426/870/14 428/979/14 430/871/14 +f 526/584/18 525/582/19 538/599/19 +f 504/564/27 516/877/27 515/873/25 +f 501/583/19 513/878/19 512/874/16 +f 496/572/23 508/884/23 519/875/24 +f 498/576/20 510/879/20 509/876/26 +f 505/566/22 517/880/22 516/877/27 +f 502/585/18 514/881/18 513/878/19 +f 499/578/17 511/984/17 510/879/20 +f 506/567/21 518/883/21 517/880/22 +f 503/562/25 515/873/25 514/881/18 +f 500/581/16 512/874/16 511/882/17 +f 507/569/24 519/875/24 518/883/21 +f 497/574/26 509/876/26 508/884/23 +f 523/577/17 522/575/20 541/596/20 +f 530/568/21 529/565/22 534/593/22 +f 527/586/25 526/584/18 537/590/18 +f 524/580/16 523/696/17 540/587/17 +f 531/570/24 530/568/21 533/595/21 +f 521/573/26 520/571/23 543/605/23 +f 528/563/27 527/586/25 536/592/25 +f 525/582/19 524/580/16 539/589/16 +f 520/571/23 531/570/24 532/612/24 +f 522/575/20 521/573/26 542/611/26 +f 529/565/22 528/563/27 535/601/27 +f 546/613/16 558/898/16 556/885/19 +f 557/886/37 569/646/37 579/645/32 +f 553/697/22 565/899/22 564/888/21 +f 550/698/23 562/900/23 561/889/26 +f 547/699/17 559/985/17 558/890/16 +f 554/700/27 566/901/27 565/891/22 +f 551/701/24 563/986/24 562/892/23 +f 548/702/20 560/987/20 559/893/17 +f 555/603/25 567/902/25 566/894/27 +f 544/606/19 556/988/19 557/895/18 +f 552/703/21 564/989/21 563/896/24 +f 549/704/26 561/990/26 560/897/20 +f 545/705/18 557/886/18 567/887/25 +f 558/898/28 570/616/28 568/615/29 +f 565/899/38 577/637/38 576/636/34 +f 562/900/39 574/628/39 573/627/36 +f 558/890/28 559/985/31 571/619/31 +f 566/901/33 578/640/33 577/639/38 +f 562/892/39 563/986/35 575/631/35 +f 559/893/31 560/987/30 572/622/30 +f 567/902/32 579/643/32 578/642/33 +f 557/895/37 556/988/29 568/649/29 +f 563/896/35 564/989/34 576/634/34 +f 560/897/30 561/990/36 573/625/36 +f 519/991/14 508/992/14 509/993/14 +f 509/993/14 510/994/14 511/903/14 +f 511/903/14 512/995/14 513/904/14 +f 513/904/14 514/996/14 515/905/14 +f 515/905/14 516/997/14 517/998/14 +f 517/998/14 518/999/14 515/905/14 +f 518/999/14 519/991/14 515/905/14 +f 519/991/14 509/993/14 515/905/14 +f 509/993/14 511/903/14 515/905/14 +o Bullets +v 0.250000 2.541016 -0.071041 +v 0.250000 2.571041 -0.041016 +v 0.250000 2.582031 0.000000 +v 0.250000 2.571041 0.041016 +v 0.250000 2.541016 0.071041 +v 0.250000 2.500000 0.082031 +v 0.250000 2.458984 0.071041 +v 0.250000 2.428959 0.041016 +v 0.250000 2.417969 0.000000 +v 0.250000 2.428959 -0.041016 +v 0.250000 2.458984 -0.071041 +v 0.250000 2.500000 -0.082031 +v 0.125000 2.541016 -0.071041 +v 0.125000 2.571041 -0.041016 +v 0.125000 2.582031 0.000000 +v 0.125000 2.571041 0.041016 +v 0.125000 2.541016 0.071041 +v 0.125000 2.500000 0.082031 +v 0.125000 2.458984 0.071041 +v 0.125000 2.428959 0.041016 +v 0.125000 2.417969 0.000000 +v 0.125000 2.428959 -0.041016 +v 0.125000 2.458984 -0.071041 +v 0.125000 2.500000 -0.082031 +v 0.125000 2.582031 -0.142082 +v 0.125000 2.642082 -0.082031 +v 0.125000 2.664062 0.000000 +v 0.125000 2.642082 0.082031 +v 0.125000 2.582031 0.142082 +v 0.125000 2.500000 0.164062 +v 0.125000 2.417969 0.142082 +v 0.125000 2.357918 0.082031 +v 0.125000 2.335938 0.000000 +v 0.125000 2.357918 -0.082031 +v 0.125000 2.417969 -0.142082 +v 0.125000 2.500000 -0.164062 +v 0.500000 2.664063 -0.284164 +v 0.500000 2.784165 -0.164062 +v 0.500000 2.828125 0.000000 +v 0.500000 2.784164 0.164062 +v 0.500000 2.664062 0.284164 +v 0.500000 2.500000 0.328125 +v 0.500000 2.335938 0.284164 +v 0.500000 2.215835 0.164062 +v 0.500000 2.171875 0.000000 +v 0.500000 2.215835 -0.164062 +v 0.500000 2.335938 -0.284164 +v 0.500000 2.500000 -0.328125 +v 0.250000 0.958984 0.071041 +v 0.250000 0.928959 0.041016 +v 0.250000 0.917969 0.000000 +v 0.250000 0.928959 -0.041016 +v 0.250000 0.958984 -0.071041 +v 0.250000 1.000000 -0.082031 +v 0.250000 1.041016 -0.071041 +v 0.250000 1.071041 -0.041016 +v 0.250000 1.082031 0.000000 +v 0.250000 1.071041 0.041016 +v 0.250000 1.041016 0.071041 +v 0.250000 1.000000 0.082031 +v 0.125000 0.958984 0.071041 +v 0.125000 0.928959 0.041016 +v 0.125000 0.917969 0.000000 +v 0.125000 0.928959 -0.041016 +v 0.125000 0.958984 -0.071041 +v 0.125000 1.000000 -0.082031 +v 0.125000 1.041016 -0.071041 +v 0.125000 1.071041 -0.041016 +v 0.125000 1.082031 0.000000 +v 0.125000 1.071041 0.041016 +v 0.125000 1.041016 0.071041 +v 0.125000 1.000000 0.082031 +v 0.125000 0.917969 0.142082 +v 0.125000 0.857918 0.082031 +v 0.125000 0.835938 0.000000 +v 0.125000 0.857918 -0.082031 +v 0.125000 0.917969 -0.142082 +v 0.125000 1.000000 -0.164062 +v 0.125000 1.082031 -0.142082 +v 0.125000 1.142082 -0.082031 +v 0.125000 1.164062 0.000000 +v 0.125000 1.142082 0.082031 +v 0.125000 1.082031 0.142082 +v 0.125000 1.000000 0.164062 +v 0.500000 0.835937 0.284164 +v 0.500000 0.715835 0.164062 +v 0.500000 0.671875 0.000000 +v 0.500000 0.715836 -0.164062 +v 0.500000 0.835938 -0.284164 +v 0.500000 1.000000 -0.328125 +v 0.500000 1.164062 -0.284164 +v 0.500000 1.284165 -0.164062 +v 0.500000 1.328125 0.000000 +v 0.500000 1.284165 0.164062 +v 0.500000 1.164062 0.284164 +v 0.500000 1.000000 0.328125 +v 0.250000 2.207031 0.649519 +v 0.250000 2.196041 0.690535 +v 0.250000 2.166016 0.720560 +v 0.250000 2.125000 0.731550 +v 0.250000 2.083984 0.720560 +v 0.250000 2.053959 0.690535 +v 0.250000 2.042969 0.649519 +v 0.250000 2.053959 0.608504 +v 0.250000 2.083984 0.578478 +v 0.250000 2.125000 0.567488 +v 0.250000 2.166016 0.578478 +v 0.250000 2.196041 0.608503 +v 0.125000 2.207031 0.649519 +v 0.125000 2.196041 0.690535 +v 0.125000 2.166016 0.720560 +v 0.125000 2.125000 0.731550 +v 0.125000 2.083984 0.720560 +v 0.125000 2.053959 0.690535 +v 0.125000 2.042969 0.649519 +v 0.125000 2.053959 0.608504 +v 0.125000 2.083984 0.578478 +v 0.125000 2.125000 0.567488 +v 0.125000 2.166016 0.578478 +v 0.125000 2.196041 0.608503 +v 0.125000 2.289062 0.649519 +v 0.125000 2.267082 0.731550 +v 0.125000 2.207031 0.791601 +v 0.125000 2.125000 0.813581 +v 0.125000 2.042969 0.791601 +v 0.125000 1.982918 0.731550 +v 0.125000 1.960938 0.649519 +v 0.125000 1.982918 0.567488 +v 0.125000 2.042969 0.507437 +v 0.125000 2.125000 0.485457 +v 0.125000 2.207031 0.507437 +v 0.125000 2.267082 0.567488 +v 0.500000 2.453125 0.649519 +v 0.500000 2.409164 0.813582 +v 0.500000 2.289062 0.933684 +v 0.500000 2.125000 0.977644 +v 0.500000 1.960938 0.933684 +v 0.500000 1.840835 0.813581 +v 0.500000 1.796875 0.649519 +v 0.500000 1.840835 0.485456 +v 0.500000 1.960938 0.365355 +v 0.500000 2.125000 0.321394 +v 0.500000 2.289062 0.365355 +v 0.500000 2.409164 0.485456 +v 0.250000 1.292969 -0.649519 +v 0.250000 1.303959 -0.690535 +v 0.250000 1.333984 -0.720560 +v 0.250000 1.375000 -0.731550 +v 0.250000 1.416016 -0.720560 +v 0.250000 1.446041 -0.690535 +v 0.250000 1.457031 -0.649519 +v 0.250000 1.446041 -0.608504 +v 0.250000 1.416016 -0.578478 +v 0.250000 1.375000 -0.567488 +v 0.250000 1.333984 -0.578478 +v 0.250000 1.303959 -0.608503 +v 0.125000 1.292969 -0.649519 +v 0.125000 1.303959 -0.690535 +v 0.125000 1.333984 -0.720560 +v 0.125000 1.375000 -0.731550 +v 0.125000 1.416016 -0.720560 +v 0.125000 1.446041 -0.690535 +v 0.125000 1.457031 -0.649519 +v 0.125000 1.446041 -0.608504 +v 0.125000 1.416016 -0.578478 +v 0.125000 1.375000 -0.567488 +v 0.125000 1.333984 -0.578478 +v 0.125000 1.303959 -0.608503 +v 0.125000 1.210938 -0.649519 +v 0.125000 1.232918 -0.731550 +v 0.125000 1.292969 -0.791601 +v 0.125000 1.375000 -0.813581 +v 0.125000 1.457031 -0.791601 +v 0.125000 1.517082 -0.731550 +v 0.125000 1.539062 -0.649519 +v 0.125000 1.517082 -0.567488 +v 0.125000 1.457031 -0.507437 +v 0.125000 1.375000 -0.485457 +v 0.125000 1.292969 -0.507437 +v 0.125000 1.232918 -0.567488 +v 0.500000 1.046875 -0.649519 +v 0.500000 1.090835 -0.813582 +v 0.500000 1.210938 -0.933684 +v 0.500000 1.375000 -0.977644 +v 0.500000 1.539062 -0.933684 +v 0.500000 1.659165 -0.813581 +v 0.500000 1.703125 -0.649519 +v 0.500000 1.659165 -0.485456 +v 0.500000 1.539062 -0.365355 +v 0.500000 1.375000 -0.321394 +v 0.500000 1.210938 -0.365355 +v 0.500000 1.090835 -0.485456 +v 0.250000 1.416016 0.720560 +v 0.250000 1.375000 0.731550 +v 0.250000 1.333984 0.720560 +v 0.250000 1.303959 0.690535 +v 0.250000 1.292969 0.649519 +v 0.250000 1.303959 0.608503 +v 0.250000 1.333984 0.578478 +v 0.250000 1.375000 0.567488 +v 0.250000 1.416016 0.578478 +v 0.250000 1.446041 0.608503 +v 0.250000 1.457031 0.649519 +v 0.250000 1.446041 0.690535 +v 0.125000 1.416016 0.720560 +v 0.125000 1.375000 0.731550 +v 0.125000 1.333984 0.720560 +v 0.125000 1.303959 0.690535 +v 0.125000 1.292969 0.649519 +v 0.125000 1.303959 0.608503 +v 0.125000 1.333984 0.578478 +v 0.125000 1.375000 0.567488 +v 0.125000 1.416016 0.578478 +v 0.125000 1.446041 0.608503 +v 0.125000 1.457031 0.649519 +v 0.125000 1.446041 0.690535 +v 0.125000 1.457031 0.791601 +v 0.125000 1.375000 0.813581 +v 0.125000 1.292969 0.791601 +v 0.125000 1.232918 0.731550 +v 0.125000 1.210937 0.649519 +v 0.125000 1.232918 0.567488 +v 0.125000 1.292969 0.507437 +v 0.125000 1.375000 0.485456 +v 0.125000 1.457031 0.507437 +v 0.125000 1.517082 0.567488 +v 0.125000 1.539062 0.649519 +v 0.125000 1.517082 0.731550 +v 0.500000 1.539062 0.933684 +v 0.500000 1.375000 0.977644 +v 0.500000 1.210937 0.933684 +v 0.500000 1.090835 0.813581 +v 0.500000 1.046875 0.649519 +v 0.500000 1.090835 0.485456 +v 0.500000 1.210938 0.365355 +v 0.500000 1.375000 0.321394 +v 0.500000 1.539062 0.365355 +v 0.500000 1.659165 0.485456 +v 0.500000 1.703125 0.649519 +v 0.500000 1.659165 0.813581 +v 0.250000 2.083984 -0.720560 +v 0.250000 2.125000 -0.731550 +v 0.250000 2.166016 -0.720560 +v 0.250000 2.196041 -0.690535 +v 0.250000 2.207031 -0.649519 +v 0.250000 2.196041 -0.608503 +v 0.250000 2.166016 -0.578478 +v 0.250000 2.125000 -0.567488 +v 0.250000 2.083984 -0.578478 +v 0.250000 2.053959 -0.608503 +v 0.250000 2.042969 -0.649519 +v 0.250000 2.053959 -0.690535 +v 0.125000 2.083984 -0.720560 +v 0.125000 2.125000 -0.731550 +v 0.125000 2.166016 -0.720560 +v 0.125000 2.196041 -0.690535 +v 0.125000 2.207031 -0.649519 +v 0.125000 2.196041 -0.608503 +v 0.125000 2.166016 -0.578478 +v 0.125000 2.125000 -0.567488 +v 0.125000 2.083984 -0.578478 +v 0.125000 2.053959 -0.608503 +v 0.125000 2.042969 -0.649519 +v 0.125000 2.053959 -0.690535 +v 0.125000 2.042969 -0.791601 +v 0.125000 2.125000 -0.813581 +v 0.125000 2.207031 -0.791601 +v 0.125000 2.267082 -0.731550 +v 0.125000 2.289062 -0.649519 +v 0.125000 2.267082 -0.567488 +v 0.125000 2.207031 -0.507437 +v 0.125000 2.125000 -0.485456 +v 0.125000 2.042969 -0.507437 +v 0.125000 1.982918 -0.567488 +v 0.125000 1.960938 -0.649519 +v 0.125000 1.982918 -0.731550 +v 0.500000 1.960938 -0.933684 +v 0.500000 2.125000 -0.977644 +v 0.500000 2.289062 -0.933684 +v 0.500000 2.409165 -0.813581 +v 0.500000 2.453125 -0.649519 +v 0.500000 2.409165 -0.485456 +v 0.500000 2.289062 -0.365355 +v 0.500000 2.125000 -0.321394 +v 0.500000 1.960938 -0.365355 +v 0.500000 1.840835 -0.485456 +v 0.500000 1.796875 -0.649519 +v 0.500000 1.840835 -0.813581 +vt 0.000769 0.976393 +vt 0.005396 0.968575 +vt 0.010023 0.992028 +vt 0.057554 0.936842 +vt 0.061151 0.947368 +vt 0.057554 0.947368 +vt 0.115108 0.936842 +vt 0.111511 0.947368 +vt 0.111511 0.936842 +vt 0.089928 0.936842 +vt 0.093525 0.947368 +vt 0.089928 0.947368 +vt 0.017986 0.936842 +vt 0.014388 0.947368 +vt 0.014388 0.936842 +vt 0.050360 0.936842 +vt 0.046763 0.947368 +vt 0.046763 0.936842 +vt 0.104317 0.936842 +vt 0.100719 0.947368 +vt 0.100719 0.936842 +vt 0.082734 0.936842 +vt 0.079137 0.947368 +vt 0.079137 0.936842 +vt 0.007194 0.936842 +vt 0.003597 0.947368 +vt 0.003597 0.936842 +vt 0.039568 0.936842 +vt 0.035971 0.947368 +vt 0.035971 0.936842 +vt 0.071942 0.936842 +vt 0.068345 0.947368 +vt 0.068345 0.936842 +vt 0.122302 0.936842 +vt 0.125899 0.947368 +vt 0.122302 0.947368 +vt 0.025180 0.936842 +vt 0.028777 0.947368 +vt 0.025180 0.947368 +vt 0.005396 0.968575 +vt 0.010023 0.992028 +vt 0.000769 0.992028 +vt 0.057554 0.936842 +vt 0.061151 0.947368 +vt 0.057554 0.947368 +vt 0.115108 0.936842 +vt 0.111511 0.947368 +vt 0.111511 0.936842 +vt 0.089928 0.936842 +vt 0.093525 0.947368 +vt 0.089928 0.947368 +vt 0.017986 0.936842 +vt 0.014388 0.947368 +vt 0.014388 0.936842 +vt 0.050360 0.936842 +vt 0.046763 0.947368 +vt 0.046763 0.936842 +vt 0.104317 0.936842 +vt 0.100719 0.947368 +vt 0.100719 0.936842 +vt 0.082734 0.936842 +vt 0.079137 0.947368 +vt 0.079137 0.936842 +vt 0.007194 0.936842 +vt 0.003597 0.947368 +vt 0.003597 0.936842 +vt 0.039568 0.936842 +vt 0.035971 0.947368 +vt 0.035971 0.936842 +vt 0.071942 0.936842 +vt 0.068345 0.947368 +vt 0.068345 0.936842 +vt 0.122302 0.936842 +vt 0.125899 0.947368 +vt 0.122302 0.947368 +vt 0.025180 0.936842 +vt 0.028777 0.947368 +vt 0.025180 0.947368 +vt 0.005396 0.968575 +vt 0.010023 0.992028 +vt 0.000769 0.992028 +vt 0.057554 0.936842 +vt 0.061151 0.947368 +vt 0.057554 0.947368 +vt 0.115108 0.936842 +vt 0.111511 0.947368 +vt 0.111511 0.936842 +vt 0.093525 0.936842 +vt 0.089928 0.947368 +vt 0.089928 0.936842 +vt 0.014388 0.936842 +vt 0.017986 0.947368 +vt 0.014388 0.947368 +vt 0.046763 0.936842 +vt 0.050360 0.947368 +vt 0.046763 0.947368 +vt 0.104317 0.936842 +vt 0.100719 0.947368 +vt 0.100719 0.936842 +vt 0.082734 0.936842 +vt 0.079137 0.947368 +vt 0.079137 0.936842 +vt 0.007194 0.936842 +vt 0.003597 0.947368 +vt 0.003597 0.936842 +vt 0.035971 0.936842 +vt 0.039568 0.947368 +vt 0.035971 0.947368 +vt 0.071942 0.936842 +vt 0.068345 0.947368 +vt 0.068345 0.936842 +vt 0.122302 0.936842 +vt 0.125899 0.947368 +vt 0.122302 0.947368 +vt 0.028777 0.936842 +vt 0.025180 0.947368 +vt 0.025180 0.936842 +vt 0.005396 0.968575 +vt 0.010023 0.992028 +vt 0.000769 0.992028 +vt 0.057554 0.936842 +vt 0.061151 0.947368 +vt 0.057554 0.947368 +vt 0.115108 0.936842 +vt 0.111511 0.947368 +vt 0.111511 0.936842 +vt 0.093525 0.936842 +vt 0.089928 0.947368 +vt 0.089928 0.936842 +vt 0.014388 0.936842 +vt 0.017986 0.947368 +vt 0.014388 0.947368 +vt 0.046763 0.936842 +vt 0.050360 0.947368 +vt 0.046763 0.947368 +vt 0.100719 0.936842 +vt 0.104317 0.947368 +vt 0.100719 0.947368 +vt 0.082734 0.936842 +vt 0.079137 0.947368 +vt 0.079137 0.936842 +vt 0.007194 0.936842 +vt 0.003597 0.947368 +vt 0.003597 0.936842 +vt 0.035971 0.936842 +vt 0.039568 0.947368 +vt 0.035971 0.947368 +vt 0.071942 0.936842 +vt 0.068345 0.947368 +vt 0.068345 0.936842 +vt 0.122302 0.936842 +vt 0.125899 0.947368 +vt 0.122302 0.947368 +vt 0.028777 0.936842 +vt 0.025180 0.947368 +vt 0.025180 0.936842 +vt 0.005396 0.968575 +vt 0.010023 0.992028 +vt 0.000769 0.992028 +vt 0.057554 0.936842 +vt 0.061151 0.947368 +vt 0.057554 0.947368 +vt 0.115108 0.936842 +vt 0.111511 0.947368 +vt 0.111511 0.936842 +vt 0.093525 0.936842 +vt 0.089928 0.947368 +vt 0.089928 0.936842 +vt 0.014388 0.936842 +vt 0.017986 0.947368 +vt 0.014388 0.947368 +vt 0.050360 0.936842 +vt 0.046763 0.947368 +vt 0.046763 0.936842 +vt 0.100719 0.936842 +vt 0.104317 0.947368 +vt 0.100719 0.947368 +vt 0.082734 0.936842 +vt 0.079137 0.947368 +vt 0.079137 0.936842 +vt 0.007194 0.936842 +vt 0.003597 0.947368 +vt 0.003597 0.936842 +vt 0.035971 0.936842 +vt 0.039568 0.947368 +vt 0.035971 0.947368 +vt 0.071942 0.936842 +vt 0.068345 0.947368 +vt 0.068345 0.936842 +vt 0.122302 0.936842 +vt 0.125899 0.947368 +vt 0.122302 0.947368 +vt 0.028777 0.936842 +vt 0.025180 0.947368 +vt 0.025180 0.936842 +vt 0.005396 0.968575 +vt 0.010023 0.992028 +vt 0.000769 0.992028 +vt 0.057554 0.936842 +vt 0.061151 0.947368 +vt 0.057554 0.947368 +vt 0.115108 0.936842 +vt 0.111511 0.947368 +vt 0.111511 0.936842 +vt 0.093525 0.936842 +vt 0.089928 0.947368 +vt 0.089928 0.936842 +vt 0.014388 0.936842 +vt 0.017986 0.947368 +vt 0.014388 0.947368 +vt 0.050360 0.936842 +vt 0.046763 0.947368 +vt 0.046763 0.936842 +vt 0.104317 0.936842 +vt 0.100719 0.947368 +vt 0.100719 0.936842 +vt 0.082734 0.936842 +vt 0.079137 0.947368 +vt 0.079137 0.936842 +vt 0.007194 0.936842 +vt 0.003597 0.947368 +vt 0.003597 0.936842 +vt 0.035971 0.936842 +vt 0.039568 0.947368 +vt 0.035971 0.947368 +vt 0.071942 0.936842 +vt 0.068345 0.947368 +vt 0.068345 0.936842 +vt 0.122302 0.936842 +vt 0.125899 0.947368 +vt 0.122302 0.947368 +vt 0.028777 0.936842 +vt 0.025180 0.947368 +vt 0.025180 0.936842 +vt 0.000769 0.992028 +vt 0.000053 0.984211 +vt 0.002724 0.970670 +vt 0.008067 0.970670 +vt 0.010023 0.976393 +vt 0.010739 0.984211 +vt 0.008067 0.997751 +vt 0.005396 0.999846 +vt 0.002724 0.997751 +vt 0.061151 0.936842 +vt 0.115108 0.947368 +vt 0.093525 0.936842 +vt 0.017986 0.947368 +vt 0.050360 0.947368 +vt 0.104317 0.947368 +vt 0.082734 0.947368 +vt 0.007194 0.947368 +vt 0.039568 0.947368 +vt 0.071942 0.947368 +vt 0.125899 0.936842 +vt 0.028777 0.936842 +vt 0.000053 0.984211 +vt 0.000769 0.976393 +vt 0.002724 0.970670 +vt 0.008067 0.970670 +vt 0.010023 0.976393 +vt 0.010739 0.984211 +vt 0.008067 0.997751 +vt 0.005396 0.999846 +vt 0.002724 0.997751 +vt 0.061151 0.936842 +vt 0.115108 0.947368 +vt 0.093525 0.936842 +vt 0.017986 0.947368 +vt 0.050360 0.947368 +vt 0.104317 0.947368 +vt 0.082734 0.947368 +vt 0.007194 0.947368 +vt 0.039568 0.947368 +vt 0.071942 0.947368 +vt 0.125899 0.936842 +vt 0.028777 0.936842 +vt 0.000053 0.984211 +vt 0.000769 0.976393 +vt 0.002724 0.970670 +vt 0.008067 0.970670 +vt 0.010023 0.976393 +vt 0.010739 0.984211 +vt 0.008067 0.997751 +vt 0.005396 0.999846 +vt 0.002724 0.997751 +vt 0.061151 0.936842 +vt 0.115108 0.947368 +vt 0.093525 0.947368 +vt 0.017986 0.936842 +vt 0.050360 0.936842 +vt 0.104317 0.947368 +vt 0.082734 0.947368 +vt 0.007194 0.947368 +vt 0.039568 0.936842 +vt 0.071942 0.947368 +vt 0.125899 0.936842 +vt 0.028777 0.947368 +vt 0.000053 0.984211 +vt 0.000769 0.976393 +vt 0.002724 0.970670 +vt 0.008067 0.970670 +vt 0.010023 0.976393 +vt 0.010739 0.984211 +vt 0.008067 0.997751 +vt 0.005396 0.999846 +vt 0.002724 0.997751 +vt 0.061151 0.936842 +vt 0.115108 0.947368 +vt 0.093525 0.947368 +vt 0.017986 0.936842 +vt 0.050360 0.936842 +vt 0.104317 0.936842 +vt 0.082734 0.947368 +vt 0.007194 0.947368 +vt 0.039568 0.936842 +vt 0.071942 0.947368 +vt 0.125899 0.936842 +vt 0.028777 0.947368 +vt 0.000053 0.984211 +vt 0.000769 0.976393 +vt 0.002724 0.970670 +vt 0.008067 0.970670 +vt 0.010023 0.976393 +vt 0.010739 0.984211 +vt 0.008067 0.997751 +vt 0.005396 0.999846 +vt 0.002724 0.997751 +vt 0.061151 0.936842 +vt 0.115108 0.947368 +vt 0.093525 0.947368 +vt 0.017986 0.936842 +vt 0.050360 0.947368 +vt 0.104317 0.936842 +vt 0.082734 0.947368 +vt 0.007194 0.947368 +vt 0.039568 0.936842 +vt 0.071942 0.947368 +vt 0.125899 0.936842 +vt 0.028777 0.947368 +vt 0.000053 0.984211 +vt 0.000769 0.976393 +vt 0.002724 0.970670 +vt 0.008067 0.970670 +vt 0.010023 0.976393 +vt 0.010739 0.984211 +vt 0.008067 0.997751 +vt 0.005396 0.999846 +vt 0.002724 0.997751 +vt 0.061151 0.936842 +vt 0.115108 0.947368 +vt 0.093525 0.947368 +vt 0.017986 0.936842 +vt 0.050360 0.947368 +vt 0.104317 0.947368 +vt 0.082734 0.947368 +vt 0.007194 0.947368 +vt 0.039568 0.936842 +vt 0.071942 0.947368 +vt 0.125899 0.936842 +vt 0.028777 0.947368 +vt 0.014388 0.968421 +vt 0.046763 0.968421 +vt 0.100719 0.968421 +vt 0.079137 0.968421 +vt 0.003597 0.968421 +vt 0.035971 0.968421 +vt 0.068345 0.968421 +vt 0.122302 0.968421 +vt 0.025180 0.968421 +vt 0.057554 0.968421 +vt 0.111511 0.968421 +vt 0.089928 0.968421 +vt 0.032374 0.873684 +vt 0.021583 0.873684 +vt 0.053957 0.873684 +vt 0.118705 0.873684 +vt 0.107914 0.873684 +vt 0.097122 0.873684 +vt 0.086331 0.873684 +vt 0.010791 0.873684 +vt 0.043165 0.873684 +vt 0.075540 0.873684 +vt -0.000000 0.873684 +vt 0.064748 0.873684 +vt 0.014388 0.968421 +vt 0.046763 0.968421 +vt 0.100719 0.968421 +vt 0.079137 0.968421 +vt 0.003597 0.968421 +vt 0.035971 0.968421 +vt 0.068345 0.968421 +vt 0.122302 0.968421 +vt 0.025180 0.968421 +vt 0.057554 0.968421 +vt 0.111511 0.968421 +vt 0.089928 0.968421 +vt 0.021583 0.873684 +vt 0.064748 0.873684 +vt 0.053957 0.873684 +vt 0.107914 0.873684 +vt 0.086331 0.873684 +vt 0.010791 0.873684 +vt 0.043165 0.873684 +vt 0.097122 0.873684 +vt 0.075540 0.873684 +vt -0.000000 0.873684 +vt 0.032374 0.873684 +vt 0.118705 0.873684 +vt 0.014388 0.968421 +vt 0.046763 0.968421 +vt 0.100719 0.968421 +vt 0.079137 0.968421 +vt 0.003597 0.968421 +vt 0.035971 0.968421 +vt 0.068345 0.968421 +vt 0.122302 0.968421 +vt 0.025180 0.968421 +vt 0.057554 0.968421 +vt 0.111511 0.968421 +vt 0.089928 0.968421 +vt 0.032374 0.873684 +vt 0.021583 0.873684 +vt 0.064748 0.873684 +vt 0.053957 0.873684 +vt 0.118705 0.873684 +vt 0.107914 0.873684 +vt 0.097122 0.873684 +vt 0.086331 0.873684 +vt 0.010791 0.873684 +vt 0.043165 0.873684 +vt 0.075540 0.873684 +vt -0.000000 0.873684 +vt 0.014388 0.968421 +vt 0.046763 0.968421 +vt 0.100719 0.968421 +vt 0.079137 0.968421 +vt 0.003597 0.968421 +vt 0.035971 0.968421 +vt 0.068345 0.968421 +vt 0.122302 0.968421 +vt 0.025180 0.968421 +vt 0.057554 0.968421 +vt 0.111511 0.968421 +vt 0.089928 0.968421 +vt 0.021583 0.873684 +vt 0.053957 0.873684 +vt 0.118705 0.873684 +vt 0.107914 0.873684 +vt 0.097122 0.873684 +vt 0.086331 0.873684 +vt 0.010791 0.873684 +vt 0.043165 0.873684 +vt 0.075540 0.873684 +vt -0.000000 0.873684 +vt 0.032374 0.873684 +vt 0.064748 0.873684 +vt 0.014388 0.968421 +vt 0.046763 0.968421 +vt 0.100719 0.968421 +vt 0.079137 0.968421 +vt 0.003597 0.968421 +vt 0.035971 0.968421 +vt 0.068345 0.968421 +vt 0.122302 0.968421 +vt 0.025180 0.968421 +vt 0.057554 0.968421 +vt 0.111511 0.968421 +vt 0.089928 0.968421 +vt 0.021583 0.873684 +vt 0.064748 0.873684 +vt 0.053957 0.873684 +vt 0.118705 0.873684 +vt 0.107914 0.873684 +vt 0.097122 0.873684 +vt 0.086331 0.873684 +vt 0.010791 0.873684 +vt 0.043165 0.873684 +vt 0.075540 0.873684 +vt -0.000000 0.873684 +vt 0.032374 0.873684 +vt 0.129496 0.873684 +vt 0.014388 0.968421 +vt 0.046763 0.968421 +vt 0.100719 0.968421 +vt 0.079137 0.968421 +vt 0.003597 0.968421 +vt 0.035971 0.968421 +vt 0.068345 0.968421 +vt 0.122302 0.968421 +vt 0.025180 0.968421 +vt 0.057554 0.968421 +vt 0.111511 0.968421 +vt 0.089928 0.968421 +vt 0.032374 0.873684 +vt 0.021583 0.873684 +vt 0.064748 0.873684 +vt 0.053957 0.873684 +vt 0.107914 0.873684 +vt 0.086331 0.873684 +vt 0.010791 0.873684 +vt 0.043165 0.873684 +vt 0.097122 0.873684 +vt 0.075540 0.873684 +vt -0.000000 0.873684 +vt 0.118705 0.873684 +vt 0.017986 0.968421 +vt 0.050360 0.968421 +vt 0.104317 0.968421 +vt 0.082734 0.968421 +vt 0.007194 0.968421 +vt 0.039568 0.968421 +vt 0.071942 0.968421 +vt 0.125899 0.968421 +vt 0.028777 0.968421 +vt 0.061151 0.968421 +vt 0.115108 0.968421 +vt 0.093525 0.968421 +vt 0.129496 0.873684 +vt 0.017986 0.968421 +vt 0.050360 0.968421 +vt 0.104317 0.968421 +vt 0.082734 0.968421 +vt 0.007194 0.968421 +vt 0.039568 0.968421 +vt 0.071942 0.968421 +vt 0.125899 0.968421 +vt 0.028777 0.968421 +vt 0.061151 0.968421 +vt 0.115108 0.968421 +vt 0.093525 0.968421 +vt 0.129496 0.873684 +vt 0.017986 0.968421 +vt 0.050360 0.968421 +vt 0.104317 0.968421 +vt 0.082734 0.968421 +vt 0.007194 0.968421 +vt 0.039568 0.968421 +vt 0.071942 0.968421 +vt 0.125899 0.968421 +vt 0.028777 0.968421 +vt 0.061151 0.968421 +vt 0.115108 0.968421 +vt 0.093525 0.968421 +vt 0.129496 0.873684 +vt 0.017986 0.968421 +vt 0.050360 0.968421 +vt 0.104317 0.968421 +vt 0.082734 0.968421 +vt 0.007194 0.968421 +vt 0.039568 0.968421 +vt 0.071942 0.968421 +vt 0.125899 0.968421 +vt 0.028777 0.968421 +vt 0.061151 0.968421 +vt 0.115108 0.968421 +vt 0.093525 0.968421 +vt 0.129496 0.873684 +vt 0.017986 0.968421 +vt 0.050360 0.968421 +vt 0.104317 0.968421 +vt 0.082734 0.968421 +vt 0.007194 0.968421 +vt 0.039568 0.968421 +vt 0.071942 0.968421 +vt 0.125899 0.968421 +vt 0.028777 0.968421 +vt 0.061151 0.968421 +vt 0.115108 0.968421 +vt 0.093525 0.968421 +vt 0.017986 0.968421 +vt 0.050360 0.968421 +vt 0.104317 0.968421 +vt 0.082734 0.968421 +vt 0.007194 0.968421 +vt 0.039568 0.968421 +vt 0.071942 0.968421 +vt 0.125899 0.968421 +vt 0.028777 0.968421 +vt 0.061151 0.968421 +vt 0.115108 0.968421 +vt 0.093525 0.968421 +vt 0.129496 0.873684 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 0.5000 0.8660 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 0.8660 0.5000 +vn -0.4008 0.0000 0.9162 +vn -0.4008 -0.4581 0.7934 +vn -0.4008 0.7934 0.4581 +vn -0.4008 0.9162 0.0000 +vn -0.4008 -0.7934 -0.4581 +vn -0.4008 -0.4581 -0.7934 +vn -0.4008 -0.0000 -0.9162 +vn -0.4008 0.4581 -0.7934 +vn -0.4008 -0.7934 0.4581 +vn -0.4008 0.4581 0.7934 +vn -0.4008 0.7934 -0.4581 +vn -0.4008 -0.9162 0.0000 +s off +f 591/1000/40 589/1001/40 585/1002/40 +f 608/1003/40 595/1004/40 596/1005/40 +f 614/1006/40 603/1007/40 615/1008/40 +f 605/1009/40 604/1010/40 593/1011/40 +f 611/1012/40 600/1013/40 612/1014/40 +f 608/1015/40 597/1016/40 609/1017/40 +f 615/1018/40 604/1019/40 616/1020/40 +f 605/1021/40 594/1022/40 606/1023/40 +f 612/1024/40 601/1025/40 613/1026/40 +f 609/1027/40 598/1028/40 610/1029/40 +f 606/1030/40 595/1031/40 607/1032/40 +f 614/1033/40 601/1034/40 602/1035/40 +f 611/1036/40 598/1037/40 599/1038/40 +f 637/1039/40 633/1040/40 629/1041/40 +f 656/1042/40 643/1043/40 644/1044/40 +f 662/1045/40 651/1046/40 663/1047/40 +f 653/1048/40 652/1049/40 641/1050/40 +f 659/1051/40 648/1052/40 660/1053/40 +f 656/1054/40 645/1055/40 657/1056/40 +f 663/1057/40 652/1058/40 664/1059/40 +f 653/1060/40 642/1061/40 654/1062/40 +f 660/1063/40 649/1064/40 661/1065/40 +f 657/1066/40 646/1067/40 658/1068/40 +f 654/1069/40 643/1070/40 655/1071/40 +f 662/1072/40 649/1073/40 650/1074/40 +f 659/1075/40 646/1076/40 647/1077/40 +f 685/1078/40 681/1079/40 677/1080/40 +f 704/1081/40 691/1082/40 692/1083/40 +f 710/1084/40 699/1085/40 711/1086/40 +f 712/1087/40 689/1088/40 701/1089/40 +f 708/1090/40 695/1091/40 696/1092/40 +f 705/1093/40 692/1094/40 693/1095/40 +f 711/1096/40 700/1097/40 712/1098/40 +f 701/1099/40 690/1100/40 702/1101/40 +f 708/1102/40 697/1103/40 709/1104/40 +f 706/1105/40 693/1106/40 694/1107/40 +f 702/1108/40 691/1109/40 703/1110/40 +f 710/1111/40 697/1112/40 698/1113/40 +f 706/1114/40 695/1115/40 707/1116/40 +f 733/1117/40 729/1118/40 725/1119/40 +f 752/1120/40 739/1121/40 740/1122/40 +f 758/1123/40 747/1124/40 759/1125/40 +f 760/1126/40 737/1127/40 749/1128/40 +f 756/1129/40 743/1130/40 744/1131/40 +f 753/1132/40 740/1133/40 741/1134/40 +f 760/1135/40 747/1136/40 748/1137/40 +f 749/1138/40 738/1139/40 750/1140/40 +f 756/1141/40 745/1142/40 757/1143/40 +f 754/1144/40 741/1145/40 742/1146/40 +f 750/1147/40 739/1148/40 751/1149/40 +f 758/1150/40 745/1151/40 746/1152/40 +f 754/1153/40 743/1154/40 755/1155/40 +f 781/1156/40 777/1157/40 773/1158/40 +f 800/1159/40 787/1160/40 788/1161/40 +f 806/1162/40 795/1163/40 807/1164/40 +f 808/1165/40 785/1166/40 797/1167/40 +f 804/1168/40 791/1169/40 792/1170/40 +f 800/1171/40 789/1172/40 801/1173/40 +f 808/1174/40 795/1175/40 796/1176/40 +f 797/1177/40 786/1178/40 798/1179/40 +f 804/1180/40 793/1181/40 805/1182/40 +f 802/1183/40 789/1184/40 790/1185/40 +f 798/1186/40 787/1187/40 799/1188/40 +f 806/1189/40 793/1190/40 794/1191/40 +f 802/1192/40 791/1193/40 803/1194/40 +f 829/1195/40 825/1196/40 821/1197/40 +f 848/1198/40 835/1199/40 836/1200/40 +f 854/1201/40 843/1202/40 855/1203/40 +f 856/1204/40 833/1205/40 845/1206/40 +f 852/1207/40 839/1208/40 840/1209/40 +f 848/1210/40 837/1211/40 849/1212/40 +f 855/1213/40 844/1214/40 856/1215/40 +f 845/1216/40 834/1217/40 846/1218/40 +f 852/1219/40 841/1220/40 853/1221/40 +f 850/1222/40 837/1223/40 838/1224/40 +f 846/1225/40 835/1226/40 847/1227/40 +f 854/1228/40 841/1229/40 842/1230/40 +f 850/1231/40 839/1232/40 851/1233/40 +f 581/1234/40 592/1235/40 591/1000/40 +f 591/1000/40 590/1236/40 589/1001/40 +f 589/1001/40 588/1237/40 585/1002/40 +f 588/1237/40 587/1238/40 585/1002/40 +f 587/1238/40 586/1239/40 585/1002/40 +f 585/1002/40 584/1240/40 581/1234/40 +f 584/1240/40 583/1241/40 581/1234/40 +f 583/1241/40 582/1242/40 581/1234/40 +f 581/1234/40 591/1000/40 585/1002/40 +f 608/1003/40 607/1243/40 595/1004/40 +f 614/1006/40 602/1244/40 603/1007/40 +f 605/1009/40 616/1245/40 604/1010/40 +f 611/1012/40 599/1246/40 600/1013/40 +f 608/1015/40 596/1247/40 597/1016/40 +f 615/1018/40 603/1248/40 604/1019/40 +f 605/1021/40 593/1249/40 594/1022/40 +f 612/1024/40 600/1250/40 601/1025/40 +f 609/1027/40 597/1251/40 598/1028/40 +f 606/1030/40 594/1252/40 595/1031/40 +f 614/1033/40 613/1253/40 601/1034/40 +f 611/1036/40 610/1254/40 598/1037/40 +f 629/1041/40 640/1255/40 639/1256/40 +f 639/1256/40 638/1257/40 629/1041/40 +f 638/1257/40 637/1039/40 629/1041/40 +f 637/1039/40 636/1258/40 633/1040/40 +f 636/1258/40 635/1259/40 633/1040/40 +f 635/1259/40 634/1260/40 633/1040/40 +f 633/1040/40 632/1261/40 631/1262/40 +f 631/1262/40 630/1263/40 633/1040/40 +f 630/1263/40 629/1041/40 633/1040/40 +f 656/1042/40 655/1264/40 643/1043/40 +f 662/1045/40 650/1265/40 651/1046/40 +f 653/1048/40 664/1266/40 652/1049/40 +f 659/1051/40 647/1267/40 648/1052/40 +f 656/1054/40 644/1268/40 645/1055/40 +f 663/1057/40 651/1269/40 652/1058/40 +f 653/1060/40 641/1270/40 642/1061/40 +f 660/1063/40 648/1271/40 649/1064/40 +f 657/1066/40 645/1272/40 646/1067/40 +f 654/1069/40 642/1273/40 643/1070/40 +f 662/1072/40 661/1274/40 649/1073/40 +f 659/1075/40 658/1275/40 646/1076/40 +f 677/1080/40 688/1276/40 687/1277/40 +f 687/1277/40 686/1278/40 677/1080/40 +f 686/1278/40 685/1078/40 677/1080/40 +f 685/1078/40 684/1279/40 681/1079/40 +f 684/1279/40 683/1280/40 681/1079/40 +f 683/1280/40 682/1281/40 681/1079/40 +f 681/1079/40 680/1282/40 679/1283/40 +f 679/1283/40 678/1284/40 681/1079/40 +f 678/1284/40 677/1080/40 681/1079/40 +f 704/1081/40 703/1285/40 691/1082/40 +f 710/1084/40 698/1286/40 699/1085/40 +f 712/1087/40 700/1287/40 689/1088/40 +f 708/1090/40 707/1288/40 695/1091/40 +f 705/1093/40 704/1289/40 692/1094/40 +f 711/1096/40 699/1290/40 700/1097/40 +f 701/1099/40 689/1291/40 690/1100/40 +f 708/1102/40 696/1292/40 697/1103/40 +f 706/1105/40 705/1293/40 693/1106/40 +f 702/1108/40 690/1294/40 691/1109/40 +f 710/1111/40 709/1295/40 697/1112/40 +f 706/1114/40 694/1296/40 695/1115/40 +f 725/1119/40 736/1297/40 735/1298/40 +f 735/1298/40 734/1299/40 725/1119/40 +f 734/1299/40 733/1117/40 725/1119/40 +f 733/1117/40 732/1300/40 729/1118/40 +f 732/1300/40 731/1301/40 729/1118/40 +f 731/1301/40 730/1302/40 729/1118/40 +f 729/1118/40 728/1303/40 727/1304/40 +f 727/1304/40 726/1305/40 729/1118/40 +f 726/1305/40 725/1119/40 729/1118/40 +f 752/1120/40 751/1306/40 739/1121/40 +f 758/1123/40 746/1307/40 747/1124/40 +f 760/1126/40 748/1308/40 737/1127/40 +f 756/1129/40 755/1309/40 743/1130/40 +f 753/1132/40 752/1310/40 740/1133/40 +f 760/1135/40 759/1311/40 747/1136/40 +f 749/1138/40 737/1312/40 738/1139/40 +f 756/1141/40 744/1313/40 745/1142/40 +f 754/1144/40 753/1314/40 741/1145/40 +f 750/1147/40 738/1315/40 739/1148/40 +f 758/1150/40 757/1316/40 745/1151/40 +f 754/1153/40 742/1317/40 743/1154/40 +f 773/1158/40 784/1318/40 783/1319/40 +f 783/1319/40 782/1320/40 773/1158/40 +f 782/1320/40 781/1156/40 773/1158/40 +f 781/1156/40 780/1321/40 777/1157/40 +f 780/1321/40 779/1322/40 777/1157/40 +f 779/1322/40 778/1323/40 777/1157/40 +f 777/1157/40 776/1324/40 773/1158/40 +f 776/1324/40 775/1325/40 773/1158/40 +f 775/1325/40 774/1326/40 773/1158/40 +f 800/1159/40 799/1327/40 787/1160/40 +f 806/1162/40 794/1328/40 795/1163/40 +f 808/1165/40 796/1329/40 785/1166/40 +f 804/1168/40 803/1330/40 791/1169/40 +f 800/1171/40 788/1331/40 789/1172/40 +f 808/1174/40 807/1332/40 795/1175/40 +f 797/1177/40 785/1333/40 786/1178/40 +f 804/1180/40 792/1334/40 793/1181/40 +f 802/1183/40 801/1335/40 789/1184/40 +f 798/1186/40 786/1336/40 787/1187/40 +f 806/1189/40 805/1337/40 793/1190/40 +f 802/1192/40 790/1338/40 791/1193/40 +f 821/1197/40 832/1339/40 831/1340/40 +f 831/1340/40 830/1341/40 821/1197/40 +f 830/1341/40 829/1195/40 821/1197/40 +f 829/1195/40 828/1342/40 825/1196/40 +f 828/1342/40 827/1343/40 825/1196/40 +f 827/1343/40 826/1344/40 825/1196/40 +f 825/1196/40 824/1345/40 821/1197/40 +f 824/1345/40 823/1346/40 821/1197/40 +f 823/1346/40 822/1347/40 821/1197/40 +f 848/1198/40 847/1348/40 835/1199/40 +f 854/1201/40 842/1349/40 843/1202/40 +f 856/1204/40 844/1350/40 833/1205/40 +f 852/1207/40 851/1351/40 839/1208/40 +f 848/1210/40 836/1352/40 837/1211/40 +f 855/1213/40 843/1353/40 844/1214/40 +f 845/1216/40 833/1354/40 834/1217/40 +f 852/1219/40 840/1355/40 841/1220/40 +f 850/1222/40 849/1356/40 837/1223/40 +f 846/1225/40 834/1357/40 835/1226/40 +f 854/1228/40 853/1358/40 841/1229/40 +f 850/1231/40 838/1359/40 839/1232/40 +s 1 +f 599/1246/41 588/1360/42 600/1013/42 +f 596/1247/43 585/1361/44 597/1016/44 +f 603/1248/45 592/1362/46 604/1019/46 +f 593/1249/47 582/1363/48 594/1022/48 +f 600/1250/42 589/1364/49 601/1025/49 +f 597/1251/44 586/1365/50 598/1028/50 +f 594/1252/48 583/1366/51 595/1031/51 +f 601/1034/49 590/1367/52 602/1035/52 +f 598/1037/50 587/1368/41 599/1038/41 +f 595/1004/51 584/1369/43 596/1005/43 +f 602/1244/52 591/1370/45 603/1007/45 +f 604/1010/46 581/1371/47 593/1011/47 +f 622/1372/53 611/1036/54 623/1373/54 +f 620/1374/55 607/1243/56 608/1003/55 +f 626/1375/57 615/1008/58 627/1376/58 +f 628/1377/59 605/1009/60 617/1378/60 +f 623/1373/54 612/1014/61 624/1379/61 +f 620/1374/55 609/1017/62 621/1380/62 +f 627/1376/58 616/1020/59 628/1377/59 +f 617/1378/60 606/1023/63 618/1381/63 +f 624/1379/61 613/1026/64 625/1382/64 +f 621/1380/62 610/1029/53 622/1372/53 +f 618/1381/63 607/1032/56 619/1383/56 +f 626/1375/57 613/1253/64 614/1033/57 +f 647/1267/47 636/1384/48 648/1052/48 +f 644/1268/52 633/1385/45 645/1055/45 +f 651/1269/44 640/1386/50 652/1058/50 +f 641/1270/41 630/1387/42 642/1061/42 +f 648/1271/48 637/1388/51 649/1064/51 +f 645/1272/45 634/1389/46 646/1067/46 +f 642/1273/42 631/1390/49 643/1070/49 +f 649/1073/51 638/1391/43 650/1074/43 +f 646/1076/46 635/1392/47 647/1077/47 +f 643/1043/49 632/1393/52 644/1044/52 +f 650/1265/43 639/1394/44 651/1046/44 +f 652/1049/50 629/1395/41 641/1050/41 +f 671/1396/60 658/1275/59 659/1075/60 +f 667/1397/64 656/1042/57 668/1398/57 +f 675/1399/62 662/1045/55 663/1047/62 +f 665/1400/54 664/1266/53 653/1048/54 +f 671/1396/60 660/1053/63 672/1401/63 +f 668/1398/57 657/1056/58 669/1402/58 +f 675/1399/62 664/1059/53 676/1403/53 +f 666/1404/61 653/1060/54 654/1062/61 +f 672/1401/63 661/1065/56 673/1405/56 +f 669/1402/58 658/1068/59 670/1406/59 +f 666/1404/61 655/1071/64 667/1397/64 +f 674/1407/55 661/1274/56 662/1072/55 +f 695/1091/49 684/1408/52 696/1092/52 +f 692/1094/50 681/1409/41 693/1095/41 +f 699/1290/47 688/1410/48 700/1097/48 +f 689/1291/51 678/1411/43 690/1100/43 +f 696/1292/52 685/1412/45 697/1103/45 +f 693/1106/41 682/1413/42 694/1107/42 +f 690/1294/43 679/1414/44 691/1109/44 +f 697/1112/45 686/1415/46 698/1113/46 +f 694/1296/42 683/1416/49 695/1115/49 +f 691/1082/44 680/1417/50 692/1083/50 +f 698/1286/46 687/1418/47 699/1085/47 +f 700/1287/48 677/1419/51 689/1088/51 +f 718/1420/61 707/1116/64 719/1421/64 +f 715/1422/62 704/1081/53 716/1423/53 +f 722/1424/59 711/1086/60 723/1425/60 +f 724/1426/63 701/1089/56 713/1427/56 +f 719/1421/64 708/1090/57 720/1428/57 +f 716/1423/53 705/1093/54 717/1429/54 +f 724/1426/63 711/1096/60 712/1098/63 +f 713/1427/56 702/1101/55 714/1430/55 +f 720/1428/57 709/1104/58 721/1431/58 +f 718/1420/61 705/1293/54 706/1105/61 +f 714/1430/55 703/1110/62 715/1422/62 +f 722/1424/59 709/1295/58 710/1111/59 +f 743/1130/51 732/1432/43 744/1131/43 +f 740/1133/46 729/1433/47 741/1134/47 +f 747/1136/41 736/1434/42 748/1137/42 +f 737/1312/49 726/1435/52 738/1139/52 +f 744/1313/43 733/1436/44 745/1142/44 +f 741/1145/47 730/1437/48 742/1146/48 +f 738/1315/52 727/1438/45 739/1148/45 +f 745/1151/44 734/1439/50 746/1152/50 +f 742/1317/48 731/1440/51 743/1154/51 +f 739/1121/45 728/1441/46 740/1122/46 +f 746/1307/50 735/1442/41 747/1124/41 +f 748/1308/42 725/1443/49 737/1127/49 +f 767/1444/56 754/1153/63 755/1155/56 +f 764/1445/59 751/1306/58 752/1120/59 +f 770/1446/53 759/1125/54 771/1447/54 +f 772/1448/61 749/1128/64 761/1449/64 +f 767/1444/56 756/1129/55 768/1450/55 +f 764/1445/59 753/1132/60 765/1451/60 +f 771/1447/54 760/1135/61 772/1448/61 +f 761/1449/64 750/1140/57 762/1452/57 +f 768/1450/55 757/1143/62 769/1453/62 +f 765/1451/60 754/1144/63 766/1454/63 +f 762/1452/57 751/1149/58 763/1455/58 +f 770/1446/53 757/1316/62 758/1150/53 +f 791/1169/45 780/1456/46 792/1170/46 +f 788/1331/42 777/1457/49 789/1172/49 +f 795/1175/51 784/1458/43 796/1176/43 +f 785/1333/44 774/1459/50 786/1178/50 +f 792/1334/46 781/1460/47 793/1181/47 +f 789/1184/49 778/1461/52 790/1185/52 +f 786/1336/50 775/1462/41 787/1187/41 +f 793/1190/47 782/1463/48 794/1191/48 +f 790/1338/52 779/1464/45 791/1193/45 +f 787/1160/41 776/1465/42 788/1161/42 +f 794/1328/48 783/1466/51 795/1163/51 +f 796/1329/43 773/1467/44 785/1166/44 +f 815/1468/58 802/1192/57 803/1194/58 +f 811/1469/54 800/1159/61 812/1470/61 +f 818/1471/63 807/1164/56 819/1472/56 +f 820/1473/55 797/1167/62 809/1474/62 +f 815/1468/58 804/1168/59 816/1475/59 +f 813/1476/64 800/1171/61 801/1173/64 +f 819/1472/56 808/1174/55 820/1473/55 +f 809/1474/62 798/1179/53 810/1477/53 +f 817/1478/60 804/1180/59 805/1182/60 +f 814/1479/57 801/1335/64 802/1183/57 +f 810/1477/53 799/1188/54 811/1469/54 +f 817/1480/60 806/1189/63 818/1471/63 +f 839/1208/44 828/1481/50 840/1209/50 +f 836/1352/48 825/1482/51 837/1211/51 +f 843/1353/49 832/1483/52 844/1214/52 +f 833/1354/45 822/1484/46 834/1217/46 +f 840/1355/50 829/1485/41 841/1220/41 +f 837/1223/51 826/1486/43 838/1224/43 +f 834/1357/46 823/1487/47 835/1226/47 +f 841/1229/41 830/1488/42 842/1230/42 +f 838/1359/43 827/1489/44 839/1232/44 +f 835/1199/47 824/1490/48 836/1200/48 +f 842/1349/42 831/1491/49 843/1202/49 +f 844/1350/52 821/1492/45 833/1205/45 +f 862/1493/55 851/1233/62 863/1494/62 +f 859/1495/60 848/1198/63 860/1496/63 +f 867/1497/64 854/1201/61 855/1203/64 +f 857/1498/58 856/1204/57 845/1206/58 +f 863/1494/62 852/1207/53 864/1499/53 +f 860/1496/63 849/1212/56 861/1500/56 +f 867/1497/64 856/1215/57 868/1501/57 +f 857/1498/58 846/1218/59 858/1502/59 +f 864/1499/53 853/1221/54 865/1503/54 +f 862/1493/55 849/1356/56 850/1222/55 +f 858/1502/59 847/1227/60 859/1495/60 +f 866/1504/61 853/1358/54 854/1228/61 +f 599/1246/41 587/1505/41 588/1360/42 +f 596/1247/43 584/1506/43 585/1361/44 +f 603/1248/45 591/1507/45 592/1362/46 +f 593/1249/47 581/1508/47 582/1363/48 +f 600/1250/42 588/1509/42 589/1364/49 +f 597/1251/44 585/1510/44 586/1365/50 +f 594/1252/48 582/1511/48 583/1366/51 +f 601/1034/49 589/1512/49 590/1367/52 +f 598/1037/50 586/1513/50 587/1368/41 +f 595/1004/51 583/1514/51 584/1369/43 +f 602/1244/52 590/1515/52 591/1370/45 +f 604/1010/46 592/1516/46 581/1371/47 +f 622/1372/53 610/1254/53 611/1036/54 +f 620/1374/55 619/1383/56 607/1243/56 +f 626/1375/57 614/1006/57 615/1008/58 +f 628/1377/59 616/1245/59 605/1009/60 +f 623/1373/54 611/1012/54 612/1014/61 +f 620/1374/55 608/1015/55 609/1017/62 +f 627/1376/58 615/1018/58 616/1020/59 +f 617/1378/60 605/1021/60 606/1023/63 +f 624/1379/61 612/1024/61 613/1026/64 +f 621/1380/62 609/1027/62 610/1029/53 +f 618/1381/63 606/1030/63 607/1032/56 +f 626/1375/57 625/1517/64 613/1253/64 +f 647/1267/47 635/1518/47 636/1384/48 +f 644/1268/52 632/1519/52 633/1385/45 +f 651/1269/44 639/1520/44 640/1386/50 +f 641/1270/41 629/1521/41 630/1387/42 +f 648/1271/48 636/1522/48 637/1388/51 +f 645/1272/45 633/1523/45 634/1389/46 +f 642/1273/42 630/1524/42 631/1390/49 +f 649/1073/51 637/1525/51 638/1391/43 +f 646/1076/46 634/1526/46 635/1392/47 +f 643/1043/49 631/1527/49 632/1393/52 +f 650/1265/43 638/1528/43 639/1394/44 +f 652/1049/50 640/1529/50 629/1395/41 +f 671/1396/60 670/1406/59 658/1275/59 +f 667/1397/64 655/1264/64 656/1042/57 +f 675/1399/62 674/1407/55 662/1045/55 +f 665/1400/54 676/1403/53 664/1266/53 +f 671/1396/60 659/1051/60 660/1053/63 +f 668/1398/57 656/1054/57 657/1056/58 +f 675/1399/62 663/1057/62 664/1059/53 +f 666/1404/61 665/1400/54 653/1060/54 +f 672/1401/63 660/1063/63 661/1065/56 +f 669/1402/58 657/1066/58 658/1068/59 +f 666/1404/61 654/1069/61 655/1071/64 +f 674/1407/55 673/1530/56 661/1274/56 +f 695/1091/49 683/1531/49 684/1408/52 +f 692/1094/50 680/1532/50 681/1409/41 +f 699/1290/47 687/1533/47 688/1410/48 +f 689/1291/51 677/1534/51 678/1411/43 +f 696/1292/52 684/1535/52 685/1412/45 +f 693/1106/41 681/1536/41 682/1413/42 +f 690/1294/43 678/1537/43 679/1414/44 +f 697/1112/45 685/1538/45 686/1415/46 +f 694/1296/42 682/1539/42 683/1416/49 +f 691/1082/44 679/1540/44 680/1417/50 +f 698/1286/46 686/1541/46 687/1418/47 +f 700/1287/48 688/1542/48 677/1419/51 +f 718/1420/61 706/1114/61 707/1116/64 +f 715/1422/62 703/1285/62 704/1081/53 +f 722/1424/59 710/1084/59 711/1086/60 +f 724/1426/63 712/1087/63 701/1089/56 +f 719/1421/64 707/1288/64 708/1090/57 +f 716/1423/53 704/1289/53 705/1093/54 +f 724/1426/63 723/1425/60 711/1096/60 +f 713/1427/56 701/1099/56 702/1101/55 +f 720/1428/57 708/1102/57 709/1104/58 +f 718/1420/61 717/1429/54 705/1293/54 +f 714/1430/55 702/1108/55 703/1110/62 +f 722/1424/59 721/1543/58 709/1295/58 +f 743/1130/51 731/1544/51 732/1432/43 +f 740/1133/46 728/1545/46 729/1433/47 +f 747/1136/41 735/1546/41 736/1434/42 +f 737/1312/49 725/1547/49 726/1435/52 +f 744/1313/43 732/1548/43 733/1436/44 +f 741/1145/47 729/1549/47 730/1437/48 +f 738/1315/52 726/1550/52 727/1438/45 +f 745/1151/44 733/1551/44 734/1439/50 +f 742/1317/48 730/1552/48 731/1440/51 +f 739/1121/45 727/1553/45 728/1441/46 +f 746/1307/50 734/1554/50 735/1442/41 +f 748/1308/42 736/1555/42 725/1443/49 +f 767/1444/56 766/1454/63 754/1153/63 +f 764/1445/59 763/1455/58 751/1306/58 +f 770/1446/53 758/1123/53 759/1125/54 +f 772/1448/61 760/1126/61 749/1128/64 +f 767/1444/56 755/1309/56 756/1129/55 +f 764/1445/59 752/1310/59 753/1132/60 +f 771/1447/54 759/1311/54 760/1135/61 +f 761/1449/64 749/1138/64 750/1140/57 +f 768/1450/55 756/1141/55 757/1143/62 +f 765/1451/60 753/1314/60 754/1144/63 +f 762/1452/57 750/1147/57 751/1149/58 +f 770/1446/53 769/1556/62 757/1316/62 +f 791/1169/45 779/1557/45 780/1456/46 +f 788/1331/42 776/1558/42 777/1457/49 +f 795/1175/51 783/1559/51 784/1458/43 +f 785/1333/44 773/1560/44 774/1459/50 +f 792/1334/46 780/1561/46 781/1460/47 +f 789/1184/49 777/1562/49 778/1461/52 +f 786/1336/50 774/1563/50 775/1462/41 +f 793/1190/47 781/1564/47 782/1463/48 +f 790/1338/52 778/1565/52 779/1464/45 +f 787/1160/41 775/1566/41 776/1465/42 +f 794/1328/48 782/1567/48 783/1466/51 +f 796/1329/43 784/1568/43 773/1467/44 +f 815/1468/58 814/1479/57 802/1192/57 +f 811/1469/54 799/1327/54 800/1159/61 +f 818/1471/63 806/1162/63 807/1164/56 +f 820/1473/55 808/1165/55 797/1167/62 +f 815/1468/58 803/1330/58 804/1168/59 +f 813/1476/64 812/1470/61 800/1171/61 +f 819/1472/56 807/1332/56 808/1174/55 +f 809/1474/62 797/1177/62 798/1179/53 +f 817/1478/60 816/1475/59 804/1180/59 +f 814/1479/57 813/1476/64 801/1335/64 +f 810/1477/53 798/1186/53 799/1188/54 +f 817/1480/60 805/1337/60 806/1189/63 +f 839/1208/44 827/1569/44 828/1481/50 +f 836/1352/48 824/1570/48 825/1482/51 +f 843/1353/49 831/1571/49 832/1483/52 +f 833/1354/45 821/1572/45 822/1484/46 +f 840/1355/50 828/1573/50 829/1485/41 +f 837/1223/51 825/1574/51 826/1486/43 +f 834/1357/46 822/1575/46 823/1487/47 +f 841/1229/41 829/1576/41 830/1488/42 +f 838/1359/43 826/1577/43 827/1489/44 +f 835/1199/47 823/1578/47 824/1490/48 +f 842/1349/42 830/1579/42 831/1491/49 +f 844/1350/52 832/1580/52 821/1492/45 +f 862/1493/55 850/1231/55 851/1233/62 +f 859/1495/60 847/1348/60 848/1198/63 +f 867/1497/64 866/1504/61 854/1201/61 +f 857/1498/58 868/1501/57 856/1204/57 +f 863/1494/62 851/1351/62 852/1207/53 +f 860/1496/63 848/1210/63 849/1212/56 +f 867/1497/64 855/1213/64 856/1215/57 +f 857/1498/58 845/1216/58 846/1218/59 +f 864/1499/53 852/1219/53 853/1221/54 +f 862/1493/55 861/1500/56 849/1356/56 +f 858/1502/59 846/1225/59 847/1227/60 +f 866/1504/61 865/1581/54 853/1358/54 +o Hammer +v 4.000000 2.687500 0.250000 +v 4.000000 2.687500 -0.250000 +v 3.250000 2.687500 0.250000 +v 3.250000 2.687500 -0.250000 +v 4.125000 2.187500 0.250000 +v 4.125000 2.187500 -0.250000 +v 4.562500 2.437500 0.250000 +v 4.562500 2.437500 -0.250000 +v 4.812500 2.437500 0.375000 +v 4.812500 2.437500 -0.375000 +v 5.062500 2.437500 0.375000 +v 5.062500 2.437500 -0.375000 +v 5.312500 2.437500 0.250000 +v 5.312500 2.437500 -0.250000 +v 4.562500 2.312500 0.250000 +v 4.562500 2.312500 -0.250000 +v 4.812500 2.312500 0.375000 +v 4.812500 2.312500 -0.375000 +v 5.062500 2.312500 0.375000 +v 5.062500 2.312500 -0.375000 +v 5.312500 2.312500 0.250000 +v 5.312500 2.312500 -0.250000 +v 4.312500 2.187500 0.250000 +v 4.312500 2.187500 -0.250000 +v 4.812500 1.812500 0.250000 +v 4.812500 1.812500 -0.250000 +v 4.812500 1.562500 0.250000 +v 4.812500 1.562500 -0.250000 +v 3.250000 2.437500 0.250000 +v 3.250000 2.437500 -0.250000 +v 3.750000 2.437500 0.250000 +v 3.750000 2.437500 -0.250000 +v 4.000000 1.687500 0.250000 +v 4.000000 1.687500 -0.250000 +vt 0.370504 0.905263 +vt 0.392086 0.863158 +vt 0.392086 0.905263 +vt 0.406475 0.863158 +vt 0.287770 0.484211 +vt 0.273381 0.526316 +vt 0.273381 0.484211 +vt 0.294964 0.473684 +vt 0.287770 0.526316 +vt 0.302158 0.473684 +vt 0.294964 0.536842 +vt 0.309353 0.484211 +vt 0.302158 0.536842 +vt 0.287770 0.463158 +vt 0.287770 0.473684 +vt 0.309353 0.547368 +vt 0.309353 0.536842 +vt 0.312950 0.484211 +vt 0.309353 0.526316 +vt 0.294964 0.463158 +vt 0.294964 0.547368 +vt 0.287770 0.536842 +vt 0.302158 0.463158 +vt 0.309353 0.473684 +vt 0.302158 0.547368 +vt 0.320144 0.536842 +vt 0.312950 0.526316 +vt 0.327338 0.473684 +vt 0.320144 0.473684 +vt 0.334532 0.484211 +vt 0.327338 0.536842 +vt 0.341727 0.526316 +vt 0.334532 0.526316 +vt 0.273381 0.547368 +vt 0.291367 0.589474 +vt 0.273381 0.589474 +vt 0.291367 0.547368 +vt 0.298561 0.589474 +vt 0.363309 0.863158 +vt 0.370504 0.863158 +vt 0.363309 0.905263 +vt 0.348921 0.863158 +vt 0.348921 0.905263 +vt 0.327338 0.863158 +vt 0.384892 0.926316 +vt 0.384892 0.842105 +vt 0.395683 0.947368 +vt 0.395683 0.821053 +vt 0.276978 0.463158 +vt 0.276978 0.473684 +vt 0.276978 0.547368 +vt 0.276978 0.536842 +vt 0.392086 0.989474 +vt 0.402878 0.947368 +vt 0.392086 0.778947 +vt 0.420863 0.768421 +vt 0.420863 0.789474 +vt 0.406475 0.905263 +vt 0.287770 0.547368 +vt 0.309353 0.463158 +vt 0.341727 0.484211 +vt 0.298561 0.547368 +vt 0.327338 0.905263 +vt 0.370504 0.926316 +vt 0.370504 0.842105 +vt 0.420863 0.978947 +vt 0.420863 1.000000 +vt 0.402878 0.821053 +vn 0.0000 1.0000 0.0000 +vn 0.9701 0.2425 0.0000 +vn -0.4961 0.8682 0.0000 +vn -0.4472 0.0000 0.8944 +vn 0.4472 0.0000 -0.8944 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.4472 0.0000 -0.8944 +vn 0.4472 0.0000 0.8944 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.4472 -0.8944 0.0000 +vn 0.6000 0.8000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.9487 -0.3162 0.0000 +s off +f 872/1582/65 869/1583/65 870/1584/65 +f 873/1585/66 870/1584/66 869/1583/66 +f 875/1586/67 874/1587/67 873/1588/67 +f 877/1589/65 876/1590/65 875/1586/65 +f 879/1591/65 878/1592/65 877/1589/65 +f 881/1593/65 880/1594/65 879/1591/65 +f 883/1595/68 877/1589/68 875/1596/68 +f 890/1597/69 880/1594/69 882/1598/69 +f 889/1599/70 882/1600/70 881/1593/70 +f 885/1601/71 879/1591/71 877/1589/71 +f 886/1602/72 876/1603/72 878/1592/72 +f 887/1604/73 881/1605/73 879/1591/73 +f 888/1606/74 878/1592/74 880/1594/74 +f 889/1599/75 888/1607/75 890/1608/75 +f 885/1609/75 888/1607/75 887/1610/75 +f 883/1611/75 886/1612/75 885/1609/75 +f 883/1611/76 892/1613/76 884/1614/76 +f 891/1615/77 894/1616/77 892/1617/77 +f 893/1618/70 896/1619/70 894/1616/70 +f 872/1582/78 897/1620/78 871/1621/78 +f 898/1622/75 899/1623/75 897/1620/75 +f 900/1624/79 901/1625/79 899/1623/79 +f 900/1626/74 872/1582/74 870/1584/74 +f 871/1621/71 899/1627/71 869/1583/71 +f 874/1628/74 900/1626/74 870/1584/74 +f 899/1627/71 873/1629/71 869/1583/71 +f 891/1630/71 875/1596/71 873/1631/71 +f 876/1603/74 892/1632/74 874/1633/74 +f 902/1634/74 874/1628/74 892/1635/74 +f 901/1636/71 895/1637/71 893/1638/71 +f 872/1582/65 871/1621/65 869/1583/65 +f 873/1585/66 874/1639/66 870/1584/66 +f 875/1586/67 876/1590/67 874/1587/67 +f 877/1589/65 878/1592/65 876/1590/65 +f 879/1591/65 880/1594/65 878/1592/65 +f 881/1593/65 882/1600/65 880/1594/65 +f 883/1595/68 885/1601/68 877/1589/68 +f 890/1597/69 888/1606/69 880/1594/69 +f 889/1599/70 890/1608/70 882/1600/70 +f 885/1601/71 887/1604/71 879/1591/71 +f 886/1602/72 884/1640/72 876/1603/72 +f 887/1604/73 889/1641/73 881/1605/73 +f 888/1606/74 886/1602/74 878/1592/74 +f 889/1599/75 887/1610/75 888/1607/75 +f 885/1609/75 886/1612/75 888/1607/75 +f 883/1611/75 884/1614/75 886/1612/75 +f 883/1611/76 891/1642/76 892/1613/76 +f 891/1615/77 893/1618/77 894/1616/77 +f 893/1618/70 895/1643/70 896/1619/70 +f 872/1582/78 898/1622/78 897/1620/78 +f 898/1622/75 900/1624/75 899/1623/75 +f 900/1624/79 902/1644/79 901/1625/79 +f 900/1626/74 898/1645/74 872/1582/74 +f 871/1621/71 897/1646/71 899/1627/71 +f 874/1628/74 902/1634/74 900/1626/74 +f 899/1627/71 901/1636/71 873/1629/71 +f 891/1630/71 883/1595/71 875/1596/71 +f 876/1603/74 884/1640/74 892/1632/74 +f 892/1635/74 894/1647/74 902/1634/74 +f 894/1647/74 896/1648/74 902/1634/74 +f 893/1638/71 891/1649/71 901/1636/71 +f 891/1649/71 873/1629/71 901/1636/71 +o Cylinder +v 2.437500 1.750000 -1.187500 +v 2.437500 2.343750 -1.028405 +v 2.437500 2.778405 -0.593750 +v 2.437500 2.937500 0.000000 +v 2.437500 2.778405 0.593750 +v 2.437500 2.343750 1.028405 +v 2.437500 1.750000 1.187500 +v 2.437500 1.156250 1.028405 +v 2.437500 0.721595 0.593750 +v 2.437500 0.562500 0.000001 +v 2.437500 0.721594 -0.593749 +v 2.437500 1.156249 -1.028404 +v 0.062500 1.750000 -1.187500 +v 0.062500 2.343750 -1.028405 +v 0.062500 2.778405 -0.593750 +v 0.062500 2.937500 0.000000 +v 0.062500 2.778405 0.593750 +v 0.062500 2.343750 1.028405 +v 0.062500 1.750000 1.187500 +v 0.062500 1.156250 1.028405 +v 0.062500 0.721595 0.593750 +v 0.062500 0.562500 0.000001 +v 0.062500 0.721594 -0.593749 +v 0.062500 1.156249 -1.028404 +v 0.062500 2.500000 -0.328125 +v 0.062500 2.335938 -0.284164 +v 0.062500 2.215835 -0.164062 +v 0.062500 2.171875 0.000000 +v 0.062500 2.215835 0.164062 +v 0.062500 2.335938 0.284164 +v 0.062500 2.500000 0.328125 +v 0.062500 2.664062 0.284164 +v 0.062500 2.784164 0.164062 +v 0.062500 2.828125 0.000000 +v 0.062500 2.784165 -0.164062 +v 0.062500 2.664063 -0.284164 +v 2.437500 2.500000 -0.328125 +v 2.437500 2.335938 -0.284164 +v 2.437500 2.215835 -0.164062 +v 2.437500 2.171875 0.000000 +v 2.437500 2.215835 0.164062 +v 2.437500 2.335938 0.284164 +v 2.437500 2.500000 0.328125 +v 2.437500 2.664062 0.284164 +v 2.437500 2.784164 0.164062 +v 2.437500 2.828125 0.000000 +v 2.437500 2.784165 -0.164062 +v 2.437500 2.664063 -0.284164 +v 0.062500 1.000000 0.328126 +v 0.062500 1.164062 0.284165 +v 0.062500 1.284165 0.164063 +v 0.062500 1.328125 0.000001 +v 0.062500 1.284165 -0.164062 +v 0.062500 1.164063 -0.284164 +v 0.062500 1.000000 -0.328124 +v 0.062500 0.835938 -0.284164 +v 0.062500 0.715836 -0.164062 +v 0.062500 0.671875 0.000000 +v 0.062500 0.715835 0.164063 +v 0.062500 0.835937 0.284165 +v 2.437500 1.000000 0.328126 +v 2.437500 1.164062 0.284165 +v 2.437500 1.284165 0.164063 +v 2.437500 1.328125 0.000001 +v 2.437500 1.284165 -0.164062 +v 2.437500 1.164063 -0.284164 +v 2.437500 1.000000 -0.328124 +v 2.437500 0.835938 -0.284164 +v 2.437500 0.715836 -0.164062 +v 2.437500 0.671875 0.000000 +v 2.437500 0.715835 0.164063 +v 2.437500 0.835937 0.284165 +v 0.062500 2.409165 0.485456 +v 0.062500 2.289063 0.365355 +v 0.062500 2.125000 0.321394 +v 0.062500 1.960938 0.365355 +v 0.062500 1.840836 0.485456 +v 0.062500 1.796875 0.649519 +v 0.062500 1.840836 0.813581 +v 0.062500 1.960938 0.933684 +v 0.062500 2.125000 0.977644 +v 0.062500 2.289063 0.933684 +v 0.062500 2.409165 0.813582 +v 0.062500 2.453125 0.649519 +v 2.437500 2.409165 0.485456 +v 2.437500 2.289063 0.365355 +v 2.437500 2.125000 0.321394 +v 2.437500 1.960938 0.365355 +v 2.437500 1.840836 0.485456 +v 2.437500 1.796875 0.649519 +v 2.437500 1.840836 0.813581 +v 2.437500 1.960938 0.933684 +v 2.437500 2.125000 0.977644 +v 2.437500 2.289063 0.933684 +v 2.437500 2.409165 0.813582 +v 2.437500 2.453125 0.649519 +v 0.062500 1.090835 -0.485456 +v 0.062500 1.210937 -0.365354 +v 0.062500 1.375000 -0.321393 +v 0.062500 1.539062 -0.365354 +v 0.062500 1.659164 -0.485456 +v 0.062500 1.703125 -0.649518 +v 0.062500 1.659164 -0.813581 +v 0.062500 1.539062 -0.933683 +v 0.062500 1.375000 -0.977643 +v 0.062500 1.210938 -0.933683 +v 0.062500 1.090835 -0.813581 +v 0.062500 1.046875 -0.649519 +v 2.437500 1.090835 -0.485456 +v 2.437500 1.210937 -0.365354 +v 2.437500 1.375000 -0.321393 +v 2.437500 1.539062 -0.365354 +v 2.437500 1.659164 -0.485456 +v 2.437500 1.703125 -0.649518 +v 2.437500 1.659164 -0.813581 +v 2.437500 1.539062 -0.933683 +v 2.437500 1.375000 -0.977643 +v 2.437500 1.210938 -0.933683 +v 2.437500 1.090835 -0.813581 +v 2.437500 1.046875 -0.649519 +v 0.062500 1.659165 0.813582 +v 0.062500 1.703125 0.649520 +v 0.062500 1.659165 0.485457 +v 0.062500 1.539063 0.365355 +v 0.062500 1.375000 0.321394 +v 0.062500 1.210938 0.365355 +v 0.062500 1.090836 0.485457 +v 0.062500 1.046875 0.649519 +v 0.062500 1.090836 0.813582 +v 0.062500 1.210938 0.933684 +v 0.062500 1.375000 0.977644 +v 0.062500 1.539062 0.933684 +v 2.437500 1.659165 0.813582 +v 2.437500 1.703125 0.649520 +v 2.437500 1.659165 0.485457 +v 2.437500 1.539063 0.365355 +v 2.437500 1.375000 0.321394 +v 2.437500 1.210938 0.365355 +v 2.437500 1.090836 0.485457 +v 2.437500 1.046875 0.649519 +v 2.437500 1.090836 0.813582 +v 2.437500 1.210938 0.933684 +v 2.437500 1.375000 0.977644 +v 2.437500 1.539062 0.933684 +v 0.062500 1.840835 -0.813581 +v 0.062500 1.796875 -0.649519 +v 0.062500 1.840835 -0.485456 +v 0.062500 1.960937 -0.365355 +v 0.062500 2.125000 -0.321394 +v 0.062500 2.289062 -0.365354 +v 0.062500 2.409164 -0.485456 +v 0.062500 2.453125 -0.649518 +v 0.062500 2.409164 -0.813581 +v 0.062500 2.289062 -0.933683 +v 0.062500 2.125000 -0.977644 +v 0.062500 1.960938 -0.933683 +v 2.437500 1.840835 -0.813581 +v 2.437500 1.796875 -0.649519 +v 2.437500 1.840835 -0.485456 +v 2.437500 1.960937 -0.365355 +v 2.437500 2.125000 -0.321394 +v 2.437500 2.289062 -0.365354 +v 2.437500 2.409164 -0.485456 +v 2.437500 2.453125 -0.649518 +v 2.437500 2.409164 -0.813581 +v 2.437500 2.289062 -0.933683 +v 2.437500 2.125000 -0.977644 +v 2.437500 1.960938 -0.933683 +vt 0.365512 0.481693 +vt 0.371235 0.475600 +vt 0.367820 0.485593 +vt 0.386287 0.481693 +vt 0.385229 0.499243 +vt 0.383979 0.485593 +vt 0.394366 0.432942 +vt 0.399031 0.444400 +vt 0.394366 0.440742 +vt 0.386287 0.391992 +vt 0.380564 0.398084 +vt 0.383979 0.388092 +vt 0.365512 0.391992 +vt 0.366570 0.374441 +vt 0.367820 0.388092 +vt 0.357432 0.440742 +vt 0.352768 0.429284 +vt 0.357432 0.432942 +vt 0.375899 0.401742 +vt 0.386287 0.419292 +vt 0.375899 0.471942 +vt 0.349353 0.419292 +vt 0.342136 0.436842 +vt 0.362097 0.381999 +vt 0.357432 0.378341 +vt 0.359018 0.351278 +vt 0.385229 0.374441 +vt 0.383979 0.360791 +vt 0.392781 0.351278 +vt 0.399031 0.429285 +vt 0.402446 0.419292 +vt 0.409662 0.436842 +vt 0.389702 0.491685 +vt 0.394366 0.495343 +vt 0.392781 0.522406 +vt 0.366570 0.499243 +vt 0.367820 0.512893 +vt 0.359018 0.522406 +vt 0.433857 0.481693 +vt 0.435107 0.468042 +vt 0.436165 0.485593 +vt 0.454632 0.481693 +vt 0.458047 0.491685 +vt 0.452324 0.485593 +vt 0.462712 0.440742 +vt 0.458047 0.444400 +vt 0.462712 0.432942 +vt 0.454632 0.391992 +vt 0.453383 0.405642 +vt 0.452324 0.388092 +vt 0.433857 0.391992 +vt 0.430442 0.381999 +vt 0.436165 0.388092 +vt 0.425778 0.432942 +vt 0.430442 0.429285 +vt 0.425778 0.440742 +vt 0.454632 0.419292 +vt 0.454632 0.454392 +vt 0.433857 0.419292 +vt 0.417698 0.419292 +vt 0.421113 0.429285 +vt 0.410482 0.436842 +vt 0.436165 0.360791 +vt 0.434915 0.374441 +vt 0.427363 0.351278 +vt 0.462712 0.378341 +vt 0.458047 0.381999 +vt 0.461126 0.351278 +vt 0.467376 0.429284 +vt 0.470791 0.419292 +vt 0.478008 0.436842 +vt 0.452324 0.512893 +vt 0.453574 0.499243 +vt 0.461126 0.522406 +vt 0.425778 0.495343 +vt 0.430442 0.491685 +vt 0.427363 0.522406 +vt 0.362097 0.491685 +vt 0.366761 0.468042 +vt 0.380564 0.475600 +vt 0.385037 0.468042 +vt 0.389702 0.444400 +vt 0.389702 0.429285 +vt 0.389702 0.381999 +vt 0.385037 0.405642 +vt 0.371235 0.398084 +vt 0.366761 0.405642 +vt 0.362097 0.429284 +vt 0.362097 0.444400 +vt 0.352768 0.444400 +vt 0.365512 0.454392 +vt 0.386287 0.454392 +vt 0.365512 0.419292 +vt 0.349353 0.481693 +vt 0.346660 0.486243 +vt 0.348103 0.468042 +vt 0.346660 0.387441 +vt 0.348103 0.405642 +vt 0.349353 0.391992 +vt 0.349353 0.454392 +vt 0.375899 0.338041 +vt 0.371235 0.350799 +vt 0.375899 0.347141 +vt 0.352768 0.381999 +vt 0.367820 0.360791 +vt 0.405139 0.387442 +vt 0.399031 0.381999 +vt 0.402446 0.391992 +vt 0.380564 0.350799 +vt 0.394366 0.378341 +vt 0.405139 0.486243 +vt 0.403696 0.468042 +vt 0.402446 0.481693 +vt 0.403696 0.405642 +vt 0.402446 0.454392 +vt 0.375899 0.535643 +vt 0.380564 0.522886 +vt 0.375899 0.526543 +vt 0.399031 0.491685 +vt 0.383979 0.512893 +vt 0.352768 0.491685 +vt 0.371235 0.522886 +vt 0.357432 0.495343 +vt 0.439580 0.475600 +vt 0.434915 0.499243 +vt 0.448909 0.475600 +vt 0.453383 0.468042 +vt 0.458047 0.429284 +vt 0.467376 0.444400 +vt 0.448909 0.398084 +vt 0.453574 0.374441 +vt 0.439580 0.398084 +vt 0.435107 0.405642 +vt 0.430442 0.444400 +vt 0.421113 0.444400 +vt 0.444245 0.471942 +vt 0.433857 0.454392 +vt 0.444245 0.401742 +vt 0.417698 0.481693 +vt 0.415005 0.486243 +vt 0.416448 0.468042 +vt 0.415005 0.387442 +vt 0.416448 0.405642 +vt 0.417698 0.391992 +vt 0.417698 0.454392 +vt 0.421113 0.381999 +vt 0.444245 0.338041 +vt 0.439580 0.350799 +vt 0.444245 0.347141 +vt 0.425778 0.378341 +vt 0.448909 0.350799 +vt 0.473484 0.387441 +vt 0.467376 0.381999 +vt 0.470791 0.391992 +vt 0.452324 0.360791 +vt 0.473484 0.486243 +vt 0.472041 0.468042 +vt 0.470791 0.481693 +vt 0.472041 0.405642 +vt 0.470791 0.454392 +vt 0.467376 0.491685 +vt 0.444245 0.535643 +vt 0.448909 0.522886 +vt 0.444245 0.526543 +vt 0.462712 0.495343 +vt 0.439580 0.522886 +vt 0.421113 0.491685 +vt 0.436165 0.512893 +vt 0.517986 0.157895 +vt 0.586331 0.105263 +vt 0.586331 0.157895 +vt 0.517986 0.315789 +vt 0.586331 0.263158 +vt 0.586331 0.315789 +vt 0.517986 0.578947 +vt 0.586331 0.526316 +vt 0.586331 0.578947 +vt 0.517986 0.473684 +vt 0.586331 0.421053 +vt 0.586331 0.473684 +vt 0.517986 0.105263 +vt 0.586331 0.052632 +vt 0.517986 0.263158 +vt 0.586331 0.210526 +vt 0.517986 0.526316 +vt 0.517986 0.421053 +vt 0.586331 0.368421 +vt 0.517986 0.052632 +vt 0.586331 0.000000 +vt 0.517986 0.210526 +vt 0.517986 0.368421 +vt 0.517986 0.631579 +vt 0.586331 0.631579 +vt 0.341727 0.442105 +vt 0.273381 0.452632 +vt 0.273381 0.442105 +vt 0.341727 0.368421 +vt 0.273381 0.378947 +vt 0.273381 0.368421 +vt 0.341727 0.347368 +vt 0.273381 0.357895 +vt 0.273381 0.347368 +vt 0.341727 0.400000 +vt 0.273381 0.410526 +vt 0.273381 0.400000 +vt 0.341727 0.431579 +vt 0.273381 0.431579 +vt 0.341727 0.336842 +vt 0.273381 0.336842 +vt 0.341727 0.389474 +vt 0.273381 0.389474 +vt 0.341727 0.421053 +vt 0.273381 0.421053 +vt 0.341727 0.452632 +vt 0.273381 0.463158 +vt 0.341727 0.378947 +vt 0.341727 0.357895 +vt 0.341727 0.410526 +vt 0.341727 0.442105 +vt 0.273381 0.452632 +vt 0.273381 0.442105 +vt 0.341727 0.368421 +vt 0.273381 0.378947 +vt 0.273381 0.368421 +vt 0.341727 0.347368 +vt 0.273381 0.357895 +vt 0.273381 0.347368 +vt 0.341727 0.400000 +vt 0.273381 0.410526 +vt 0.273381 0.400000 +vt 0.341727 0.431579 +vt 0.273381 0.431579 +vt 0.341727 0.336842 +vt 0.273381 0.336842 +vt 0.341727 0.389474 +vt 0.273381 0.389474 +vt 0.341727 0.421053 +vt 0.273381 0.421053 +vt 0.341727 0.452632 +vt 0.273381 0.463158 +vt 0.341727 0.378947 +vt 0.341727 0.357895 +vt 0.341727 0.410526 +vt 0.341727 0.442105 +vt 0.273381 0.452632 +vt 0.273381 0.442105 +vt 0.341727 0.368421 +vt 0.273381 0.378947 +vt 0.273381 0.368421 +vt 0.341727 0.347368 +vt 0.273381 0.357895 +vt 0.273381 0.347368 +vt 0.341727 0.400000 +vt 0.273381 0.410526 +vt 0.273381 0.400000 +vt 0.341727 0.431579 +vt 0.273381 0.431579 +vt 0.341727 0.336842 +vt 0.273381 0.336842 +vt 0.341727 0.389474 +vt 0.273381 0.389474 +vt 0.341727 0.421053 +vt 0.273381 0.421053 +vt 0.341727 0.452632 +vt 0.273381 0.463158 +vt 0.341727 0.378947 +vt 0.341727 0.357895 +vt 0.341727 0.410526 +vt 0.341727 0.442105 +vt 0.273381 0.452632 +vt 0.273381 0.442105 +vt 0.341727 0.368421 +vt 0.273381 0.378947 +vt 0.273381 0.368421 +vt 0.341727 0.347368 +vt 0.273381 0.357895 +vt 0.273381 0.347368 +vt 0.341727 0.400000 +vt 0.273381 0.410526 +vt 0.273381 0.400000 +vt 0.341727 0.431579 +vt 0.273381 0.431579 +vt 0.341727 0.336842 +vt 0.273381 0.336842 +vt 0.341727 0.389474 +vt 0.273381 0.389474 +vt 0.341727 0.421053 +vt 0.273381 0.421053 +vt 0.341727 0.452632 +vt 0.273381 0.463158 +vt 0.341727 0.378947 +vt 0.341727 0.357895 +vt 0.341727 0.410526 +vt 0.341727 0.442105 +vt 0.273381 0.452632 +vt 0.273381 0.442105 +vt 0.341727 0.368421 +vt 0.273381 0.378947 +vt 0.273381 0.368421 +vt 0.341727 0.347368 +vt 0.273381 0.357895 +vt 0.273381 0.347368 +vt 0.341727 0.400000 +vt 0.273381 0.410526 +vt 0.273381 0.400000 +vt 0.341727 0.431579 +vt 0.273381 0.431579 +vt 0.341727 0.336842 +vt 0.273381 0.336842 +vt 0.341727 0.389474 +vt 0.273381 0.389474 +vt 0.341727 0.421053 +vt 0.273381 0.421053 +vt 0.341727 0.452632 +vt 0.273381 0.463158 +vt 0.341727 0.378947 +vt 0.341727 0.357895 +vt 0.341727 0.410526 +vt 0.341727 0.442105 +vt 0.273381 0.452632 +vt 0.273381 0.442105 +vt 0.341727 0.368421 +vt 0.273381 0.378947 +vt 0.273381 0.368421 +vt 0.341727 0.347368 +vt 0.273381 0.357895 +vt 0.273381 0.347368 +vt 0.341727 0.400000 +vt 0.273381 0.410526 +vt 0.273381 0.400000 +vt 0.341727 0.431579 +vt 0.273381 0.431579 +vt 0.341727 0.336842 +vt 0.273381 0.336842 +vt 0.341727 0.389474 +vt 0.273381 0.389474 +vt 0.341727 0.421053 +vt 0.273381 0.421053 +vt 0.341727 0.452632 +vt 0.273381 0.463158 +vt 0.341727 0.378947 +vt 0.341727 0.357895 +vt 0.341727 0.410526 +vt 0.517986 0.000000 +vt 0.341727 0.463158 +vt 0.341727 0.463158 +vt 0.341727 0.463158 +vt 0.341727 0.463158 +vt 0.341727 0.463158 +vt 0.341727 0.463158 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.8660 0.5000 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 -1.0000 0.0000 +s off +f 1052/1650/80 929/1651/80 928/1652/80 +f 976/1653/80 933/1654/80 932/1655/80 +f 1024/1656/80 981/1657/80 980/1658/80 +f 1028/1659/80 953/1660/80 952/1661/80 +f 1000/1662/80 957/1663/80 956/1664/80 +f 1048/1665/80 1005/1666/80 1004/1667/80 +f 954/1668/80 1026/1669/80 930/1670/80 +f 1006/1671/80 1005/1666/80 915/1672/80 +f 999/1673/80 1010/1674/80 925/1675/80 +f 951/1676/80 962/1677/80 923/1678/80 +f 1023/1679/80 1034/1680/80 921/1681/80 +f 975/1682/80 986/1683/80 919/1684/80 +f 927/1685/80 938/1686/80 917/1687/80 +f 988/1688/81 989/1689/81 944/1690/81 +f 1064/1691/81 1065/1692/81 940/1693/81 +f 1060/1694/81 1061/1695/81 1016/1696/81 +f 1012/1697/81 1013/1698/81 968/1699/81 +f 1040/1700/81 1041/1701/81 964/1702/81 +f 1036/1703/81 1037/1704/81 992/1705/81 +f 1014/1706/81 1062/1707/81 1038/1708/81 +f 1046/1709/81 1035/1710/81 909/1711/81 +f 974/1712/81 963/1713/81 911/1714/81 +f 1022/1715/81 1011/1716/81 913/1717/81 +f 1017/1718/81 1018/1719/81 903/1720/81 +f 950/1721/81 939/1722/81 905/1723/81 +f 998/1724/81 987/1725/81 907/1726/81 +f 928/1652/80 927/1685/80 1053/1727/80 +f 1052/1650/80 1051/1728/80 929/1651/80 +f 928/1652/80 1053/1727/80 1052/1650/80 +f 932/1655/80 931/1729/80 977/1730/80 +f 976/1653/80 975/1682/80 933/1654/80 +f 932/1655/80 977/1730/80 976/1653/80 +f 980/1658/80 979/1731/80 1025/1732/80 +f 1024/1656/80 1023/1679/80 981/1657/80 +f 980/1658/80 1025/1732/80 1024/1656/80 +f 952/1661/80 951/1676/80 1029/1733/80 +f 1028/1659/80 1027/1734/80 953/1660/80 +f 952/1661/80 1029/1733/80 1028/1659/80 +f 956/1664/80 955/1735/80 1001/1736/80 +f 1000/1662/80 999/1673/80 957/1663/80 +f 956/1664/80 1001/1736/80 1000/1662/80 +f 1004/1667/80 1003/1737/80 1049/1738/80 +f 1048/1665/80 1047/1739/80 1005/1666/80 +f 1004/1667/80 1049/1738/80 1048/1665/80 +f 930/1670/80 929/1651/80 1051/1728/80 +f 1050/1740/80 1049/1738/80 1003/1737/80 +f 930/1670/80 1051/1728/80 1050/1740/80 +f 977/1730/80 931/1729/80 978/1741/80 +f 931/1729/80 930/1670/80 978/1741/80 +f 1025/1732/80 979/1731/80 978/1741/80 +f 930/1670/80 1050/1740/80 1002/1742/80 +f 1050/1740/80 1003/1737/80 1002/1742/80 +f 1002/1742/80 1001/1736/80 955/1735/80 +f 1025/1732/80 978/1741/80 1026/1669/80 +f 978/1741/80 930/1670/80 1026/1669/80 +f 953/1660/80 1027/1734/80 954/1668/80 +f 1027/1734/80 1026/1669/80 954/1668/80 +f 930/1670/80 1002/1742/80 954/1668/80 +f 1002/1742/80 955/1735/80 954/1668/80 +f 1056/1743/80 916/1744/80 1057/1745/80 +f 916/1744/80 915/1672/80 1057/1745/80 +f 915/1672/80 926/1746/80 1007/1747/80 +f 926/1746/80 1008/1748/80 1007/1747/80 +f 1005/1666/80 1047/1739/80 915/1672/80 +f 1047/1739/80 1058/1749/80 915/1672/80 +f 1058/1749/80 1057/1745/80 915/1672/80 +f 915/1672/80 1007/1747/80 1006/1671/80 +f 925/1675/80 924/1750/80 959/1751/80 +f 924/1750/80 960/1752/80 959/1751/80 +f 1008/1748/80 926/1746/80 1009/1753/80 +f 926/1746/80 925/1675/80 1009/1753/80 +f 925/1675/80 959/1751/80 958/1754/80 +f 958/1754/80 957/1663/80 925/1675/80 +f 957/1663/80 999/1673/80 925/1675/80 +f 1010/1674/80 1009/1753/80 925/1675/80 +f 923/1678/80 922/1755/80 1031/1756/80 +f 922/1755/80 1032/1757/80 1031/1756/80 +f 960/1752/80 924/1750/80 961/1758/80 +f 924/1750/80 923/1678/80 961/1758/80 +f 923/1678/80 1031/1756/80 1030/1759/80 +f 1030/1759/80 1029/1733/80 923/1678/80 +f 1029/1733/80 951/1676/80 923/1678/80 +f 962/1677/80 961/1758/80 923/1678/80 +f 921/1681/80 920/1760/80 983/1761/80 +f 920/1760/80 984/1762/80 983/1761/80 +f 1032/1757/80 922/1755/80 1033/1763/80 +f 922/1755/80 921/1681/80 1033/1763/80 +f 921/1681/80 983/1761/80 982/1764/80 +f 982/1764/80 981/1657/80 921/1681/80 +f 981/1657/80 1023/1679/80 921/1681/80 +f 1034/1680/80 1033/1763/80 921/1681/80 +f 919/1684/80 918/1765/80 935/1766/80 +f 918/1765/80 936/1767/80 935/1766/80 +f 984/1762/80 920/1760/80 985/1768/80 +f 920/1760/80 919/1684/80 985/1768/80 +f 919/1684/80 935/1766/80 934/1769/80 +f 934/1769/80 933/1654/80 919/1684/80 +f 933/1654/80 975/1682/80 919/1684/80 +f 986/1683/80 985/1768/80 919/1684/80 +f 917/1687/80 916/1744/80 1055/1770/80 +f 916/1744/80 1056/1743/80 1055/1770/80 +f 936/1767/80 918/1765/80 937/1771/80 +f 918/1765/80 917/1687/80 937/1771/80 +f 917/1687/80 1055/1770/80 1054/1772/80 +f 1054/1772/80 1053/1727/80 917/1687/80 +f 1053/1727/80 927/1685/80 917/1687/80 +f 938/1686/80 937/1771/80 917/1687/80 +f 989/1689/81 943/1773/81 944/1690/81 +f 944/1690/81 945/1774/81 988/1688/81 +f 945/1774/81 987/1725/81 988/1688/81 +f 1065/1692/81 939/1722/81 940/1693/81 +f 940/1693/81 941/1775/81 1064/1691/81 +f 941/1775/81 1063/1776/81 1064/1691/81 +f 1061/1695/81 1015/1777/81 1016/1696/81 +f 1016/1696/81 1017/1718/81 1060/1694/81 +f 1017/1718/81 1059/1778/81 1060/1694/81 +f 1013/1698/81 967/1779/81 968/1699/81 +f 968/1699/81 969/1780/81 1012/1697/81 +f 969/1780/81 1011/1716/81 1012/1697/81 +f 1041/1701/81 963/1713/81 964/1702/81 +f 964/1702/81 965/1781/81 1040/1700/81 +f 965/1781/81 1039/1782/81 1040/1700/81 +f 1037/1704/81 991/1783/81 992/1705/81 +f 992/1705/81 993/1784/81 1036/1703/81 +f 993/1784/81 1035/1710/81 1036/1703/81 +f 1063/1776/81 941/1775/81 942/1785/81 +f 942/1785/81 943/1773/81 990/1786/81 +f 943/1773/81 989/1689/81 990/1786/81 +f 990/1786/81 991/1783/81 1038/1708/81 +f 991/1783/81 1037/1704/81 1038/1708/81 +f 1062/1707/81 1063/1776/81 942/1785/81 +f 1015/1777/81 1061/1695/81 1062/1707/81 +f 967/1779/81 1013/1698/81 1014/1706/81 +f 1014/1706/81 1015/1777/81 1062/1707/81 +f 1062/1707/81 942/1785/81 990/1786/81 +f 1038/1708/81 1039/1782/81 966/1787/81 +f 1039/1782/81 965/1781/81 966/1787/81 +f 966/1787/81 967/1779/81 1014/1706/81 +f 1062/1707/81 990/1786/81 1038/1708/81 +f 966/1787/81 1014/1706/81 1038/1708/81 +f 996/1788/81 908/1789/81 995/1790/81 +f 908/1789/81 909/1711/81 995/1790/81 +f 909/1711/81 910/1791/81 1045/1792/81 +f 910/1791/81 1044/1793/81 1045/1792/81 +f 1035/1710/81 993/1784/81 909/1711/81 +f 993/1784/81 994/1794/81 909/1711/81 +f 994/1794/81 995/1790/81 909/1711/81 +f 909/1711/81 1045/1792/81 1046/1709/81 +f 1044/1793/81 910/1791/81 1043/1795/81 +f 910/1791/81 911/1714/81 1043/1795/81 +f 911/1714/81 912/1796/81 973/1797/81 +f 912/1796/81 972/1798/81 973/1797/81 +f 963/1713/81 1041/1701/81 911/1714/81 +f 1041/1701/81 1042/1799/81 911/1714/81 +f 1042/1799/81 1043/1795/81 911/1714/81 +f 911/1714/81 973/1797/81 974/1712/81 +f 972/1798/81 912/1796/81 971/1800/81 +f 912/1796/81 913/1717/81 971/1800/81 +f 913/1717/81 914/1801/81 1021/1802/81 +f 914/1801/81 1020/1803/81 1021/1802/81 +f 1011/1716/81 969/1780/81 913/1717/81 +f 969/1780/81 970/1804/81 913/1717/81 +f 970/1804/81 971/1800/81 913/1717/81 +f 913/1717/81 1021/1802/81 1022/1715/81 +f 903/1720/81 904/1805/81 1069/1806/81 +f 904/1805/81 1068/1807/81 1069/1806/81 +f 1020/1803/81 914/1801/81 1019/1808/81 +f 914/1801/81 903/1720/81 1019/1808/81 +f 903/1720/81 1069/1806/81 1070/1809/81 +f 1070/1809/81 1059/1778/81 903/1720/81 +f 1059/1778/81 1017/1718/81 903/1720/81 +f 1018/1719/81 1019/1808/81 903/1720/81 +f 1068/1807/81 904/1805/81 1067/1810/81 +f 904/1805/81 905/1723/81 1067/1810/81 +f 905/1723/81 906/1811/81 949/1812/81 +f 906/1811/81 948/1813/81 949/1812/81 +f 939/1722/81 1065/1692/81 905/1723/81 +f 1065/1692/81 1066/1814/81 905/1723/81 +f 1066/1814/81 1067/1810/81 905/1723/81 +f 905/1723/81 949/1812/81 950/1721/81 +f 948/1813/81 906/1811/81 947/1815/81 +f 906/1811/81 907/1726/81 947/1815/81 +f 907/1726/81 908/1789/81 997/1816/81 +f 908/1789/81 996/1788/81 997/1816/81 +f 987/1725/81 945/1774/81 907/1726/81 +f 945/1774/81 946/1817/81 907/1726/81 +f 946/1817/81 947/1815/81 907/1726/81 +f 907/1726/81 997/1816/81 998/1724/81 +s 1 +f 921/1818/82 910/1819/83 909/1820/82 +f 918/1821/84 907/1822/85 906/1823/84 +f 925/1824/86 914/1825/87 913/1826/86 +f 915/1827/88 904/1828/89 903/1829/88 +f 922/1830/83 911/1831/90 910/1819/83 +f 919/1832/85 908/1833/91 907/1822/85 +f 926/1834/87 903/1829/88 914/1825/87 +f 916/1835/89 905/1836/92 904/1828/89 +f 923/1837/90 912/1838/93 911/1831/90 +f 920/1839/91 909/1820/82 908/1833/91 +f 917/1840/92 906/1823/84 905/1836/92 +f 924/1841/93 913/1826/86 912/1842/93 +f 944/1843/89 931/1844/92 932/1845/89 +f 939/1846/82 938/1847/83 927/1848/82 +f 941/1849/85 928/1850/91 929/1851/85 +f 948/1852/93 935/1853/86 936/1854/93 +f 945/1855/88 932/1845/89 933/1856/88 +f 942/1857/84 929/1851/85 930/1858/84 +f 949/1859/90 936/1854/93 937/1860/90 +f 946/1861/87 933/1856/88 934/1862/87 +f 943/1863/92 930/1864/84 931/1844/92 +f 950/1865/83 937/1860/90 938/1847/83 +f 940/1866/91 927/1848/82 928/1850/91 +f 947/1867/86 934/1862/87 935/1853/86 +f 968/1868/83 955/1869/90 956/1870/83 +f 963/1871/88 962/1872/89 951/1873/88 +f 965/1874/86 952/1875/87 953/1876/86 +f 972/1877/84 959/1878/85 960/1879/84 +f 969/1880/82 956/1870/83 957/1881/82 +f 966/1882/93 953/1876/86 954/1883/93 +f 973/1884/92 960/1879/84 961/1885/92 +f 970/1886/91 957/1881/82 958/1887/91 +f 967/1888/90 954/1889/93 955/1869/90 +f 974/1890/89 961/1885/92 962/1872/89 +f 964/1891/87 951/1873/88 952/1875/87 +f 971/1892/85 958/1887/91 959/1878/85 +f 992/1893/84 979/1894/85 980/1895/84 +f 987/1896/90 986/1897/93 975/1898/90 +f 989/1899/82 976/1900/83 977/1901/82 +f 996/1902/87 983/1903/88 984/1904/87 +f 993/1905/92 980/1895/84 981/1906/92 +f 990/1907/91 977/1901/82 978/1908/91 +f 997/1909/86 984/1904/87 985/1910/86 +f 994/1911/89 981/1906/92 982/1912/89 +f 991/1913/85 978/1914/91 979/1894/85 +f 998/1915/93 985/1910/86 986/1897/93 +f 988/1916/83 975/1898/90 976/1900/83 +f 995/1917/88 982/1912/89 983/1903/88 +f 1016/1918/93 1003/1919/86 1004/1920/93 +f 1011/1921/92 1010/1922/84 999/1923/92 +f 1013/1924/88 1000/1925/89 1001/1926/88 +f 1020/1927/91 1007/1928/82 1008/1929/91 +f 1017/1930/90 1004/1920/93 1005/1931/90 +f 1014/1932/87 1001/1926/88 1002/1933/87 +f 1021/1934/85 1008/1929/91 1009/1935/85 +f 1018/1936/83 1005/1931/90 1006/1937/83 +f 1015/1938/86 1002/1939/87 1003/1919/86 +f 1022/1940/84 1009/1935/85 1010/1922/84 +f 1012/1941/89 999/1923/92 1000/1925/89 +f 1019/1942/82 1006/1937/83 1007/1928/82 +f 1040/1943/91 1027/1944/82 1028/1945/91 +f 1035/1946/86 1034/1947/87 1023/1948/86 +f 1037/1949/90 1024/1950/93 1025/1951/90 +f 1044/1952/89 1031/1953/92 1032/1954/89 +f 1041/1955/85 1028/1945/91 1029/1956/85 +f 1038/1957/83 1025/1951/90 1026/1958/83 +f 1045/1959/88 1032/1954/89 1033/1960/88 +f 1042/1961/84 1029/1956/85 1030/1962/84 +f 1039/1963/82 1026/1964/83 1027/1944/82 +f 1046/1965/87 1033/1960/88 1034/1947/87 +f 1036/1966/93 1023/1948/86 1024/1950/93 +f 1043/1967/92 1030/1962/84 1031/1953/92 +f 1064/1968/87 1051/1969/88 1052/1970/87 +f 1059/1971/85 1058/1972/91 1047/1973/85 +f 1061/1974/92 1048/1975/84 1049/1976/92 +f 1068/1977/83 1055/1978/90 1056/1979/83 +f 1065/1980/86 1052/1970/87 1053/1981/86 +f 1062/1982/89 1049/1976/92 1050/1983/89 +f 1069/1984/82 1056/1979/83 1057/1985/82 +f 1066/1986/93 1053/1981/86 1054/1987/93 +f 1063/1988/88 1050/1989/89 1051/1969/88 +f 1070/1990/91 1057/1985/82 1058/1972/91 +f 1060/1991/84 1047/1973/85 1048/1975/84 +f 1067/1992/90 1054/1987/93 1055/1978/90 +f 921/1818/82 922/1830/83 910/1819/83 +f 918/1821/84 919/1832/85 907/1822/85 +f 925/1824/86 926/1834/87 914/1825/87 +f 915/1827/88 916/1835/89 904/1828/89 +f 922/1830/83 923/1837/90 911/1831/90 +f 919/1832/85 920/1839/91 908/1833/91 +f 926/1834/87 915/1827/88 903/1829/88 +f 916/1835/89 917/1840/92 905/1836/92 +f 923/1837/90 924/1993/93 912/1838/93 +f 920/1839/91 921/1818/82 909/1820/82 +f 917/1840/92 918/1821/84 906/1823/84 +f 924/1841/93 925/1824/86 913/1826/86 +f 944/1843/89 943/1863/92 931/1844/92 +f 939/1846/82 950/1865/83 938/1847/83 +f 941/1849/85 940/1866/91 928/1850/91 +f 948/1852/93 947/1867/86 935/1853/86 +f 945/1855/88 944/1843/89 932/1845/89 +f 942/1857/84 941/1849/85 929/1851/85 +f 949/1859/90 948/1852/93 936/1854/93 +f 946/1861/87 945/1855/88 933/1856/88 +f 943/1863/92 942/1994/84 930/1864/84 +f 950/1865/83 949/1859/90 937/1860/90 +f 940/1866/91 939/1846/82 927/1848/82 +f 947/1867/86 946/1861/87 934/1862/87 +f 968/1868/83 967/1888/90 955/1869/90 +f 963/1871/88 974/1890/89 962/1872/89 +f 965/1874/86 964/1891/87 952/1875/87 +f 972/1877/84 971/1892/85 959/1878/85 +f 969/1880/82 968/1868/83 956/1870/83 +f 966/1882/93 965/1874/86 953/1876/86 +f 973/1884/92 972/1877/84 960/1879/84 +f 970/1886/91 969/1880/82 957/1881/82 +f 967/1888/90 966/1995/93 954/1889/93 +f 974/1890/89 973/1884/92 961/1885/92 +f 964/1891/87 963/1871/88 951/1873/88 +f 971/1892/85 970/1886/91 958/1887/91 +f 992/1893/84 991/1913/85 979/1894/85 +f 987/1896/90 998/1915/93 986/1897/93 +f 989/1899/82 988/1916/83 976/1900/83 +f 996/1902/87 995/1917/88 983/1903/88 +f 993/1905/92 992/1893/84 980/1895/84 +f 990/1907/91 989/1899/82 977/1901/82 +f 997/1909/86 996/1902/87 984/1904/87 +f 994/1911/89 993/1905/92 981/1906/92 +f 991/1913/85 990/1996/91 978/1914/91 +f 998/1915/93 997/1909/86 985/1910/86 +f 988/1916/83 987/1896/90 975/1898/90 +f 995/1917/88 994/1911/89 982/1912/89 +f 1016/1918/93 1015/1938/86 1003/1919/86 +f 1011/1921/92 1022/1940/84 1010/1922/84 +f 1013/1924/88 1012/1941/89 1000/1925/89 +f 1020/1927/91 1019/1942/82 1007/1928/82 +f 1017/1930/90 1016/1918/93 1004/1920/93 +f 1014/1932/87 1013/1924/88 1001/1926/88 +f 1021/1934/85 1020/1927/91 1008/1929/91 +f 1018/1936/83 1017/1930/90 1005/1931/90 +f 1015/1938/86 1014/1997/87 1002/1939/87 +f 1022/1940/84 1021/1934/85 1009/1935/85 +f 1012/1941/89 1011/1921/92 999/1923/92 +f 1019/1942/82 1018/1936/83 1006/1937/83 +f 1040/1943/91 1039/1963/82 1027/1944/82 +f 1035/1946/86 1046/1965/87 1034/1947/87 +f 1037/1949/90 1036/1966/93 1024/1950/93 +f 1044/1952/89 1043/1967/92 1031/1953/92 +f 1041/1955/85 1040/1943/91 1028/1945/91 +f 1038/1957/83 1037/1949/90 1025/1951/90 +f 1045/1959/88 1044/1952/89 1032/1954/89 +f 1042/1961/84 1041/1955/85 1029/1956/85 +f 1039/1963/82 1038/1998/83 1026/1964/83 +f 1046/1965/87 1045/1959/88 1033/1960/88 +f 1036/1966/93 1035/1946/86 1023/1948/86 +f 1043/1967/92 1042/1961/84 1030/1962/84 +f 1064/1968/87 1063/1988/88 1051/1969/88 +f 1059/1971/85 1070/1990/91 1058/1972/91 +f 1061/1974/92 1060/1991/84 1048/1975/84 +f 1068/1977/83 1067/1992/90 1055/1978/90 +f 1065/1980/86 1064/1968/87 1052/1970/87 +f 1062/1982/89 1061/1974/92 1049/1976/92 +f 1069/1984/82 1068/1977/83 1056/1979/83 +f 1066/1986/93 1065/1980/86 1053/1981/86 +f 1063/1988/88 1062/1999/89 1050/1989/89 +f 1070/1990/91 1069/1984/82 1057/1985/82 +f 1060/1991/84 1059/1971/85 1047/1973/85 +f 1067/1992/90 1066/1986/93 1054/1987/93 +o Scope +v -3.125000 3.437500 0.375000 +v 3.125000 3.437500 0.375000 +v -3.125000 3.437500 -0.375000 +v 3.125000 3.437500 -0.375000 +v -3.125000 3.812500 -0.375000 +v -3.125000 3.812500 0.375000 +v 3.125000 3.812500 0.375000 +v 3.125000 3.812500 -0.375000 +v 3.125000 3.437500 0.125000 +v 3.000000 3.187500 0.125000 +v 3.125000 3.437500 -0.125000 +v 3.000000 3.187500 -0.125000 +v -1.125000 3.437500 0.125000 +v -1.000000 3.187500 0.125000 +v -1.125000 3.437500 -0.125000 +v -1.000000 3.187500 -0.125000 +v 2.875000 4.875000 -0.625000 +v 2.875000 5.187500 -0.541266 +v 2.875000 5.416266 -0.312500 +v 2.875000 5.500000 0.000000 +v 2.875000 5.416266 0.312500 +v 2.875000 5.187500 0.541266 +v 2.875000 4.875000 0.625000 +v 2.875000 4.562500 0.541266 +v 2.875000 4.333735 0.312500 +v 2.875000 4.250000 0.000000 +v 2.875000 4.333734 -0.312500 +v 2.875000 4.562500 -0.541265 +v -2.625000 4.875000 -0.625000 +v -2.625000 5.187500 -0.541266 +v -2.625000 5.416266 -0.312500 +v -2.625000 5.500000 0.000000 +v -2.625000 5.416266 0.312500 +v -2.625000 5.187500 0.541266 +v -2.625000 4.875000 0.625000 +v -2.625000 4.562500 0.541266 +v -2.625000 4.333735 0.312500 +v -2.625000 4.250000 0.000000 +v -2.625000 4.333734 -0.312500 +v -2.625000 4.562500 -0.541265 +v 3.875000 4.875000 -0.750000 +v 3.875000 5.250000 -0.649519 +v 3.875000 5.524519 -0.375000 +v 3.875000 5.625000 0.000000 +v 3.875000 5.524519 0.375000 +v 3.875000 5.250000 0.649519 +v 3.875000 4.875000 0.750000 +v 3.875000 4.500000 0.649519 +v 3.875000 4.225481 0.375000 +v 3.875000 4.125000 0.000000 +v 3.875000 4.225481 -0.374999 +v 3.875000 4.500000 -0.649518 +v 5.125000 4.875000 -0.750000 +v 5.125000 5.250000 -0.649519 +v 5.125000 5.524519 -0.375000 +v 5.125000 5.625000 0.000000 +v 5.125000 5.524519 0.375000 +v 5.125000 5.250000 0.649519 +v 5.125000 4.875000 0.750000 +v 5.125000 4.500000 0.649519 +v 5.125000 4.225481 0.375000 +v 5.125000 4.125000 0.000000 +v 5.125000 4.225481 -0.374999 +v 5.125000 4.500000 -0.649518 +v 5.125000 4.875000 -0.625000 +v 5.125000 5.187500 -0.541266 +v 5.125000 5.416266 -0.312500 +v 5.125000 5.500000 0.000000 +v 5.125000 5.416266 0.312500 +v 5.125000 5.187500 0.541266 +v 5.125000 4.875000 0.625000 +v 5.125000 4.562500 0.541266 +v 5.125000 4.333735 0.312500 +v 5.125000 4.250000 0.000000 +v 5.125000 4.333734 -0.312500 +v 5.125000 4.562500 -0.541265 +v 4.875000 4.875000 -0.625000 +v 4.875000 5.187500 -0.541266 +v 4.875000 5.416266 -0.312500 +v 4.875000 5.500000 0.000000 +v 4.875000 5.416266 0.312500 +v 4.875000 5.187500 0.541266 +v 4.875000 4.875000 0.625000 +v 4.875000 4.562500 0.541266 +v 4.875000 4.333735 0.312500 +v 4.875000 4.250000 0.000000 +v 4.875000 4.333734 -0.312500 +v 4.875000 4.562500 -0.541265 +v -3.125000 4.875000 -0.750000 +v -3.125000 5.250000 -0.649519 +v -3.125000 5.524519 -0.375000 +v -3.125000 5.625000 0.000000 +v -3.125000 5.524519 0.375000 +v -3.125000 5.250000 0.649519 +v -3.125000 4.875000 0.750000 +v -3.125000 4.500000 0.649519 +v -3.125000 4.225481 0.375000 +v -3.125000 4.125000 0.000000 +v -3.125000 4.225481 -0.374999 +v -3.125000 4.500000 -0.649518 +v -3.625000 4.875000 -0.750000 +v -3.625000 5.250000 -0.649519 +v -3.625000 5.524519 -0.375000 +v -3.625000 5.625000 0.000000 +v -3.625000 5.524519 0.375000 +v -3.625000 5.250000 0.649519 +v -3.625000 4.875000 0.750000 +v -3.625000 4.500000 0.649519 +v -3.625000 4.225481 0.375000 +v -3.625000 4.125000 0.000000 +v -3.625000 4.225481 -0.374999 +v -3.625000 4.500000 -0.649518 +v -4.125001 4.875000 -0.937500 +v -4.125001 5.343750 -0.811898 +v -4.125001 5.686898 -0.468750 +v -4.125001 5.812499 0.000000 +v -4.125001 5.686898 0.468750 +v -4.125001 5.343750 0.811899 +v -4.125001 4.875000 0.937500 +v -4.125001 4.406250 0.811899 +v -4.125001 4.063101 0.468750 +v -4.125001 3.937500 0.000001 +v -4.125001 4.063101 -0.468749 +v -4.125001 4.406249 -0.811898 +v -5.375001 4.875000 -0.937500 +v -5.375001 5.343750 -0.811898 +v -5.375001 5.686898 -0.468750 +v -5.375001 5.812499 0.000000 +v -5.375001 5.686898 0.468750 +v -5.375001 5.343750 0.811899 +v -5.375001 4.875000 0.937500 +v -5.375001 4.406250 0.811899 +v -5.375001 4.063101 0.468750 +v -5.375001 3.937500 0.000001 +v -5.375001 4.063101 -0.468749 +v -5.375001 4.406249 -0.811898 +v -5.375001 4.875000 -0.812500 +v -5.375001 5.281250 -0.703645 +v -5.375001 5.578646 -0.406250 +v -5.375001 5.687500 0.000000 +v -5.375001 5.578646 0.406250 +v -5.375001 5.281250 0.703646 +v -5.375001 4.875000 0.812500 +v -5.375001 4.468750 0.703646 +v -5.375001 4.171354 0.406251 +v -5.375001 4.062500 0.000001 +v -5.375001 4.171353 -0.406249 +v -5.375001 4.468750 -0.703645 +v -5.125001 4.875000 -0.812500 +v -5.125001 5.281250 -0.703645 +v -5.125001 5.578646 -0.406250 +v -5.125001 5.687500 0.000000 +v -5.125001 5.578646 0.406250 +v -5.125001 5.281250 0.703646 +v -5.125001 4.875000 0.812500 +v -5.125001 4.468750 0.703646 +v -5.125001 4.171354 0.406251 +v -5.125001 4.062500 0.000001 +v -5.125001 4.171353 -0.406249 +v -5.125001 4.468750 -0.703645 +v 1.375000 5.625000 0.000000 +v 1.375000 5.558013 0.500000 +v 1.375000 5.125000 1.000000 +v 1.375000 4.191987 -0.500000 +v 1.375000 4.125000 0.000000 +v 1.375000 4.191988 0.500000 +v 1.375000 4.625000 1.000000 +v 1.375000 4.625000 -1.000000 +v 1.375000 5.558013 -0.500000 +v 1.375000 5.125000 -1.000000 +v 2.625000 4.625000 -1.000000 +v 2.625000 4.625000 1.000000 +v 2.625000 4.191988 0.500000 +v 2.625000 4.125000 0.000000 +v 2.625000 4.191987 -0.500000 +v 2.625000 5.125000 1.000000 +v 2.625000 5.558013 0.500000 +v 2.625000 5.625000 0.000000 +v 2.625000 5.558013 -0.500000 +v 2.625000 5.125000 -1.000000 +v 1.500000 4.191988 0.500000 +v 1.500000 4.191987 -0.500000 +v 2.500000 4.191988 0.500000 +v 2.500000 4.191987 -0.500000 +v 1.500000 3.566988 0.500000 +v 1.500000 3.566987 -0.500000 +v 2.500000 3.566988 0.500000 +v 2.500000 3.566987 -0.500000 +v -0.625000 4.187500 0.687500 +v -0.625000 5.562500 0.687500 +v -0.625000 4.187500 -0.687500 +v -0.625000 5.562500 -0.687500 +v 0.875000 4.187500 0.687500 +v 0.875000 5.562500 0.687500 +v 0.875000 4.187500 -0.687500 +v 0.875000 5.562500 -0.687500 +v -0.750000 4.312500 -0.562500 +v -0.750000 4.312500 0.562500 +v -0.750000 5.437500 0.562500 +v -0.750000 5.437500 -0.562500 +v 0.125000 5.562500 -0.562500 +v -0.156250 5.562500 -0.487139 +v -0.362139 5.562500 -0.281250 +v -0.437500 5.562500 0.000000 +v -0.362139 5.562500 0.281250 +v -0.156250 5.562500 0.487139 +v 0.125000 5.562500 0.562500 +v 0.406250 5.562500 0.487140 +v 0.612139 5.562500 0.281250 +v 0.687500 5.562500 0.000000 +v 0.612139 5.562500 -0.281250 +v 0.406250 5.562500 -0.487139 +v 0.125000 5.687500 -0.562500 +v -0.156250 5.687500 -0.487139 +v -0.362139 5.687500 -0.281250 +v -0.437500 5.687500 0.000000 +v -0.362139 5.687500 0.281250 +v -0.156250 5.687500 0.487139 +v 0.125000 5.687500 0.562500 +v 0.406250 5.687500 0.487140 +v 0.612139 5.687500 0.281250 +v 0.687500 5.687500 0.000000 +v 0.612139 5.687500 -0.281250 +v 0.406250 5.687500 -0.487139 +v 0.125000 5.687500 -0.656250 +v -0.203125 5.687500 -0.568329 +v -0.443329 5.687500 -0.328125 +v -0.531250 5.687500 0.000000 +v -0.443329 5.687500 0.328125 +v -0.203125 5.687500 0.568330 +v 0.125000 5.687500 0.656250 +v 0.453125 5.687500 0.568330 +v 0.693329 5.687500 0.328126 +v 0.781250 5.687500 0.000001 +v 0.693329 5.687500 -0.328124 +v 0.453125 5.687500 -0.568328 +v 0.125000 6.062500 -0.656250 +v -0.203125 6.062500 -0.568329 +v -0.443329 6.062500 -0.328125 +v -0.531250 6.062500 0.000000 +v -0.443329 6.062500 0.328125 +v -0.203125 6.062500 0.568330 +v 0.125000 6.062500 0.656250 +v 0.453125 6.062500 0.568330 +v 0.693329 6.062500 0.328126 +v 0.781250 6.062500 0.000001 +v 0.693329 6.062500 -0.328124 +v 0.453125 6.062500 -0.568328 +v -2.375000 5.625000 0.000000 +v -2.375000 5.558013 0.500000 +v -2.375000 5.125000 1.000000 +v -2.375000 4.191987 -0.500000 +v -2.375000 4.125000 0.000000 +v -2.375000 4.191988 0.500000 +v -2.375000 4.625000 1.000000 +v -2.375000 4.625000 -1.000000 +v -2.375000 5.558013 -0.500000 +v -2.375000 5.125000 -1.000000 +v -1.125000 4.625000 -1.000000 +v -1.125000 4.625000 1.000000 +v -1.125000 4.191988 0.500000 +v -1.125000 4.125000 0.000000 +v -1.125000 4.191987 -0.500000 +v -1.125000 5.125000 1.000000 +v -1.125000 5.558013 0.500000 +v -1.125000 5.625000 0.000000 +v -1.125000 5.558013 -0.500000 +v -1.125000 5.125000 -1.000000 +v 0.125000 5.437500 0.687500 +v -0.156250 5.362139 0.687500 +v -0.362139 5.156250 0.687500 +v -0.437500 4.875000 0.687500 +v -0.362139 4.593750 0.687500 +v -0.156250 4.387861 0.687500 +v 0.125000 4.312500 0.687500 +v 0.406250 4.387860 0.687500 +v 0.612139 4.593750 0.687500 +v 0.687500 4.875000 0.687500 +v 0.612139 5.156250 0.687500 +v 0.406250 5.362139 0.687500 +v 0.125000 5.437500 0.812500 +v -0.156250 5.362139 0.812500 +v -0.362139 5.156250 0.812500 +v -0.437500 4.875000 0.812500 +v -0.362139 4.593750 0.812500 +v -0.156250 4.387861 0.812500 +v 0.125000 4.312500 0.812500 +v 0.406250 4.387860 0.812500 +v 0.612139 4.593750 0.812500 +v 0.687500 4.875000 0.812500 +v 0.612139 5.156250 0.812500 +v 0.406250 5.362139 0.812500 +v 0.125000 5.531250 0.812500 +v -0.203125 5.443329 0.812500 +v -0.443329 5.203125 0.812500 +v -0.531250 4.875000 0.812500 +v -0.443329 4.546875 0.812500 +v -0.203125 4.306671 0.812500 +v 0.125000 4.218750 0.812500 +v 0.453125 4.306670 0.812500 +v 0.693329 4.546875 0.812500 +v 0.781250 4.875000 0.812500 +v 0.693329 5.203125 0.812500 +v 0.453125 5.443328 0.812500 +v 0.125000 5.531250 1.187500 +v -0.203125 5.443329 1.187500 +v -0.443329 5.203125 1.187500 +v -0.531250 4.875000 1.187500 +v -0.443329 4.546875 1.187500 +v -0.203125 4.306671 1.187500 +v 0.125000 4.218750 1.187500 +v 0.453125 4.306670 1.187500 +v 0.693329 4.546875 1.187500 +v 0.781250 4.875000 1.187500 +v 0.693329 5.203125 1.187500 +v 0.453125 5.443328 1.187500 +v -2.250000 4.191988 0.500000 +v -2.250000 4.191987 -0.500000 +v -1.250000 4.191988 0.500000 +v -1.250000 4.191987 -0.500000 +v -2.250000 3.566988 0.500000 +v -2.250000 3.566987 -0.500000 +v -1.250000 3.566988 0.500000 +v -1.250000 3.566987 -0.500000 +vt 0.436170 0.387097 +vt 0.968085 0.451613 +vt 0.436170 0.451613 +vt 0.968085 0.483871 +vt 0.436170 0.548387 +vt 0.436170 0.483871 +vt 1.000000 0.548387 +vt 1.000000 0.483871 +vt 0.404255 0.483871 +vt 0.404255 0.548387 +vt 0.436170 0.580645 +vt 0.968085 0.548387 +vt 0.968085 0.580645 +vt 0.978723 0.580645 +vt 1.000000 0.602151 +vt 0.978723 0.602151 +vt 0.968085 0.623656 +vt 0.617021 0.602151 +vt 0.978723 0.602151 +vt 0.627660 0.580645 +vt 0.968085 0.580645 +vt 0.595745 0.602151 +vt 0.617021 0.580645 +vt 0.617021 0.602151 +vt 0.968085 0.193548 +vt 0.978723 0.161290 +vt 0.978723 0.193548 +vt 0.968085 0.225806 +vt 0.978723 0.225806 +vt 0.968085 0.258065 +vt 0.978723 0.258065 +vt 0.968085 0.290323 +vt 0.978723 0.290323 +vt 0.978723 0.322581 +vt 0.968085 0.322581 +vt 0.978723 0.354839 +vt 0.968085 0.354839 +vt 0.978723 0.387097 +vt 0.968085 0.387097 +vt 0.968085 -0.000000 +vt 0.978723 0.032258 +vt 0.968085 0.032258 +vt 0.978723 0.064516 +vt 0.968085 0.064516 +vt 0.978723 0.096774 +vt 0.968085 0.096774 +vt 0.978723 0.129032 +vt 0.968085 0.129032 +vt 0.968085 0.161290 +vt 0.026755 0.616174 +vt 0.026755 0.523611 +vt 0.106064 0.569892 +vt 0.031915 0.258065 +vt 0.021277 0.215054 +vt 0.031915 0.215054 +vt 0.031915 0.172043 +vt 0.021277 0.172043 +vt 0.031915 0.129032 +vt 0.021277 0.129032 +vt 0.031915 0.086022 +vt 0.021277 0.043011 +vt 0.031915 0.043011 +vt 0.021277 0.000000 +vt 0.031915 0.000000 +vt 0.031915 0.516129 +vt 0.021277 0.473118 +vt 0.031915 0.473118 +vt 0.021277 0.430108 +vt 0.031915 0.430108 +vt 0.021277 0.387097 +vt 0.031915 0.387097 +vt 0.021277 0.344086 +vt 0.031915 0.344086 +vt 0.021277 0.301075 +vt 0.031915 0.301075 +vt 0.327040 0.396614 +vt 0.361527 0.456989 +vt 0.258066 0.517365 +vt 0.638298 0.677696 +vt 0.680669 0.683433 +vt 0.638298 0.806175 +vt 0.872523 0.800438 +vt 0.830152 0.763349 +vt 0.872523 0.683433 +vt 0.861702 1.000000 +vt 0.946809 0.946237 +vt 0.946809 1.000000 +vt 0.946809 0.860215 +vt 0.861702 0.806452 +vt 0.946809 0.806452 +vt 0.861702 0.946237 +vt 0.808511 0.860215 +vt 0.861702 0.860215 +vt 1.000000 0.860215 +vt 1.000000 0.946237 +vt 0.202128 0.881720 +vt 0.191489 0.774194 +vt 0.202128 0.763441 +vt 0.329787 0.881720 +vt 0.329787 0.763441 +vt 0.446809 0.645161 +vt 0.446809 0.763441 +vt 0.329787 0.645161 +vt 0.202128 0.526882 +vt 0.329787 0.526882 +vt 0.202128 1.000000 +vt 0.191489 0.655914 +vt 0.095745 0.752688 +vt 0.095745 0.655914 +vt 0.202128 0.645161 +vt 0.191489 0.537634 +vt 0.191489 0.892473 +vt 0.553191 0.870968 +vt 0.521277 0.881720 +vt 0.521277 0.870968 +vt 0.585106 0.870968 +vt 0.553191 0.881720 +vt 0.617021 0.870968 +vt 0.585106 0.881720 +vt 0.648936 0.870968 +vt 0.617021 0.881720 +vt 0.680851 0.881720 +vt 0.648936 0.881720 +vt 0.680851 0.870968 +vt 0.712766 0.881720 +vt 0.712766 0.870968 +vt 0.744681 0.881720 +vt 0.744681 0.870968 +vt 0.776596 0.881720 +vt 0.776596 0.870968 +vt 0.808511 0.881720 +vt 0.457447 0.870968 +vt 0.425532 0.881720 +vt 0.425532 0.870968 +vt 0.489362 0.870968 +vt 0.457447 0.881720 +vt 0.489362 0.881720 +vt 0.103745 0.863006 +vt 0.103745 0.760650 +vt 0.191446 0.811828 +vt 0.638298 0.677696 +vt 0.680669 0.683433 +vt 0.638298 0.806175 +vt 0.872523 0.800438 +vt 0.830152 0.763349 +vt 0.872523 0.683433 +vt 0.553191 0.870968 +vt 0.521277 0.881720 +vt 0.521277 0.870968 +vt 0.585106 0.870968 +vt 0.553191 0.881720 +vt 0.617021 0.870968 +vt 0.585106 0.881720 +vt 0.648936 0.870968 +vt 0.617021 0.881720 +vt 0.680851 0.881720 +vt 0.648936 0.881720 +vt 0.712766 0.870968 +vt 0.680851 0.870968 +vt 0.744681 0.870968 +vt 0.712766 0.881720 +vt 0.776596 0.881720 +vt 0.744681 0.881720 +vt 0.776596 0.870968 +vt 0.808511 0.881720 +vt 0.457447 0.870968 +vt 0.425532 0.881720 +vt 0.425532 0.870968 +vt 0.489362 0.870968 +vt 0.457447 0.881720 +vt 0.489362 0.881720 +vt 0.103745 0.863006 +vt 0.103745 0.760650 +vt 0.191446 0.811828 +vt 0.861702 1.000000 +vt 0.946809 0.946237 +vt 0.946809 1.000000 +vt 0.946809 0.860215 +vt 0.861702 0.806452 +vt 0.946809 0.806452 +vt 0.861702 0.946237 +vt 0.808511 0.860215 +vt 0.861702 0.860215 +vt 1.000000 0.860215 +vt 1.000000 0.946237 +vt 0.968085 0.387097 +vt 1.000000 0.580645 +vt 0.627660 0.623656 +vt 0.595745 0.580645 +vt 0.978723 0.000000 +vt 0.098980 0.596613 +vt 0.079628 0.616174 +vt 0.053191 0.623333 +vt 0.007403 0.596613 +vt 0.000319 0.569892 +vt 0.007403 0.543172 +vt 0.053191 0.516451 +vt 0.079628 0.523611 +vt 0.098980 0.543172 +vt 0.021277 0.258065 +vt 0.021277 0.086022 +vt 0.021277 0.516129 +vt 0.232820 0.491847 +vt 0.223579 0.456989 +vt 0.232820 0.422131 +vt 0.258066 0.396614 +vt 0.292553 0.387274 +vt 0.352286 0.422131 +vt 0.352286 0.491847 +vt 0.327040 0.517365 +vt 0.292553 0.526705 +vt 0.723040 0.720522 +vt 0.723040 0.763349 +vt 0.680669 0.800438 +vt 0.595927 0.800438 +vt 0.595927 0.683433 +vt 0.553556 0.763349 +vt 0.553556 0.720522 +vt 0.830152 0.720522 +vt 0.914894 0.677696 +vt 0.914894 0.806175 +vt 0.957264 0.683433 +vt 0.999636 0.720522 +vt 0.999636 0.763349 +vt 0.957264 0.800438 +vt 0.808511 0.946237 +vt 0.191489 0.870968 +vt 0.329787 1.000000 +vt 0.191489 0.752688 +vt 0.191489 0.634409 +vt 0.191489 0.989247 +vt 0.808511 0.870968 +vt 0.183613 0.841376 +vt 0.162212 0.863006 +vt 0.132979 0.870924 +vt 0.082345 0.841376 +vt 0.074512 0.811828 +vt 0.082345 0.782280 +vt 0.132979 0.752732 +vt 0.162212 0.760650 +vt 0.183613 0.782280 +vt 0.723040 0.720522 +vt 0.723040 0.763349 +vt 0.680669 0.800438 +vt 0.595927 0.800438 +vt 0.595927 0.683433 +vt 0.553556 0.763349 +vt 0.553556 0.720522 +vt 0.830152 0.720522 +vt 0.914894 0.677696 +vt 0.914894 0.806175 +vt 0.957264 0.683433 +vt 0.999636 0.720522 +vt 0.999636 0.763349 +vt 0.957264 0.800438 +vt 0.808511 0.870968 +vt 0.183613 0.841376 +vt 0.162212 0.863006 +vt 0.132979 0.870924 +vt 0.082345 0.841376 +vt 0.074512 0.811828 +vt 0.082345 0.782280 +vt 0.132979 0.752732 +vt 0.162212 0.760650 +vt 0.183613 0.782280 +vt 0.808511 0.946237 +vt 0.308511 0.258065 +vt 0.776596 0.225806 +vt 0.776596 0.258065 +vt 0.308511 0.032258 +vt 0.776596 -0.000000 +vt 0.776596 0.032258 +vt 0.308511 0.129032 +vt 0.776596 0.096774 +vt 0.776596 0.129032 +vt 0.308511 0.225806 +vt 0.776596 0.193548 +vt 0.308511 0.387097 +vt 0.776596 0.354839 +vt 0.776596 0.387097 +vt 0.308511 0.096774 +vt 0.776596 0.064516 +vt 0.308511 0.193548 +vt 0.776596 0.161290 +vt 0.308511 0.354839 +vt 0.776596 0.322581 +vt 0.308511 0.290323 +vt 0.776596 0.290323 +vt 0.308511 0.064516 +vt 0.308511 0.161290 +vt 0.308511 0.322581 +vt 0.861702 0.161290 +vt 0.861702 0.193548 +vt 0.861702 0.225806 +vt 0.861702 0.258065 +vt 0.861702 0.290323 +vt 0.861702 0.322581 +vt 0.861702 0.354839 +vt 0.861702 0.387097 +vt 0.861702 0.032258 +vt 0.861702 0.064516 +vt 0.861702 0.096774 +vt 0.861702 0.129032 +vt 0.861702 -0.000000 +vt 1.000000 0.225806 +vt 1.000000 0.387097 +vt 1.000000 0.096774 +vt 1.000000 0.193548 +vt 1.000000 0.354839 +vt 1.000000 0.290323 +vt 1.000000 0.064516 +vt 1.000000 0.161290 +vt 1.000000 0.322581 +vt 1.000000 0.258065 +vt 1.000000 0.032258 +vt 1.000000 0.129032 +vt 0.265957 0.129032 +vt 0.265957 0.193548 +vt 0.265957 0.225806 +vt 0.265957 0.258065 +vt 0.265957 0.290323 +vt 0.265957 0.322581 +vt 0.265957 0.354839 +vt 0.265957 0.000000 +vt 0.308511 -0.000000 +vt 0.265957 0.064516 +vt 0.265957 0.096774 +vt 0.223404 0.096774 +vt 0.223404 0.193548 +vt 0.265957 0.387097 +vt 0.223404 0.354839 +vt 0.223404 0.064516 +vt 0.223404 0.161290 +vt 0.265957 0.161290 +vt 0.223404 0.322581 +vt 0.223404 0.258065 +vt 0.223404 0.032258 +vt 0.265957 0.032258 +vt 0.223404 0.129032 +vt 0.223404 0.290323 +vt 0.223404 0.225806 +vt 0.223404 0.000000 +vt 0.138298 0.215054 +vt 0.223404 0.172043 +vt 0.223404 0.204301 +vt 0.138298 0.258065 +vt 0.223404 0.215054 +vt 0.223404 0.247312 +vt 0.223404 0.290323 +vt 0.223404 0.258065 +vt 0.223404 0.333333 +vt 0.138298 0.301075 +vt 0.223404 0.301075 +vt 0.138298 0.387097 +vt 0.223404 0.344086 +vt 0.223404 0.376344 +vt 0.223404 0.419355 +vt 0.223404 0.387097 +vt 0.138298 0.473118 +vt 0.223404 0.430108 +vt 0.223404 0.462366 +vt 0.138298 0.516129 +vt 0.223404 0.473118 +vt 0.223404 0.505376 +vt 0.138298 0.043011 +vt 0.138298 0.086022 +vt 0.223404 0.043011 +vt 0.223404 0.075269 +vt 0.223404 0.118280 +vt 0.223404 0.086022 +vt 0.138298 0.172043 +vt 0.223404 0.129032 +vt 0.223404 0.161290 +vt 0.138298 0.000000 +vt 0.138298 0.129032 +vt 0.138298 0.430108 +vt 0.138298 0.344086 +vt 0.000000 0.172043 +vt 0.000000 0.387097 +vt -0.000000 0.301075 +vt -0.000000 0.000000 +vt 0.000000 0.129032 +vt -0.000000 0.258065 +vt 0.000000 0.473118 +vt -0.000000 0.086022 +vt -0.000000 0.215054 +vt 0.000000 0.430108 +vt 0.000000 0.344086 +vt 0.000000 0.043011 +vt 0.446809 0.666667 +vt 0.553191 0.720430 +vt 0.446809 0.720430 +vt 0.829787 0.763441 +vt 0.723404 0.720430 +vt 0.829787 0.720430 +vt 0.829787 0.666667 +vt 0.723404 0.623656 +vt 0.829787 0.623656 +vt 0.829787 0.817204 +vt 0.723404 0.763441 +vt 0.553191 0.763441 +vt 0.723404 0.666667 +vt 0.446809 0.817204 +vt 0.553191 0.860215 +vt 0.446809 0.860215 +vt 0.446809 0.623656 +vt 0.553191 0.666667 +vt 0.829787 0.860215 +vt 0.723404 0.817204 +vt 0.446809 0.763441 +vt 0.553191 0.817204 +vt 0.617021 0.860215 +vt 0.585106 0.860215 +vt 0.521277 0.860215 +vt 0.489362 0.860215 +vt 0.744681 0.860215 +vt 0.712766 0.860215 +vt 0.648936 0.860215 +vt 0.553191 0.860215 +vt 0.776596 0.860215 +vt 0.457447 0.860215 +vt 0.425532 0.860215 +vt 0.680851 0.860215 +vt 0.808511 0.860215 +vt 0.521277 0.913979 +vt 0.744681 0.913979 +vt 0.425532 0.913979 +vt 0.648936 0.913979 +vt 0.553191 0.913979 +vt 0.776596 0.913979 +vt 0.457447 0.913979 +vt 0.680851 0.913979 +vt 0.585106 0.913979 +vt 0.489362 0.913979 +vt 0.712766 0.913979 +vt 0.617021 0.913979 +vt 0.446809 0.666667 +vt 0.553191 0.720430 +vt 0.446809 0.720430 +vt 0.829787 0.763441 +vt 0.723404 0.720430 +vt 0.829787 0.720430 +vt 0.829787 0.666667 +vt 0.723404 0.623656 +vt 0.829787 0.623656 +vt 0.829787 0.817204 +vt 0.723404 0.763441 +vt 0.553191 0.763441 +vt 0.723404 0.666667 +vt 0.446809 0.817204 +vt 0.553191 0.860215 +vt 0.446809 0.860215 +vt 0.446809 0.623656 +vt 0.553191 0.666667 +vt 0.829787 0.860215 +vt 0.723404 0.817204 +vt 0.446809 0.763441 +vt 0.553191 0.817204 +vt 0.617021 0.860215 +vt 0.585106 0.860215 +vt 0.521277 0.860215 +vt 0.489362 0.860215 +vt 0.744681 0.860215 +vt 0.712766 0.860215 +vt 0.648936 0.860215 +vt 0.553191 0.860215 +vt 0.776596 0.860215 +vt 0.457447 0.860215 +vt 0.425532 0.860215 +vt 0.680851 0.860215 +vt 0.808511 0.860215 +vt 0.521277 0.913979 +vt 0.744681 0.913979 +vt 0.425532 0.913979 +vt 0.648936 0.913979 +vt 0.553191 0.913979 +vt 0.776596 0.913979 +vt 0.457447 0.913979 +vt 0.680851 0.913979 +vt 0.585106 0.913979 +vt 0.489362 0.913979 +vt 0.712766 0.913979 +vt 0.617021 0.913979 +vt 1.000000 -0.000000 +vt 0.223404 0.387097 +vt -0.000000 0.516129 +vt 0.553191 0.623656 +vt 0.723404 0.860215 +vt 0.808511 0.913979 +vt 0.553191 0.623656 +vt 0.723404 0.860215 +vt 0.808511 0.913979 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.8944 -0.4472 0.0000 +vn -0.8944 -0.4472 0.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.8660 0.5000 +vn 0.0000 -0.5000 -0.8660 +vn -0.1240 0.4961 0.8593 +vn -0.1240 0.8593 0.4961 +vn -0.1240 0.9923 0.0000 +vn -0.1240 0.8593 -0.4961 +vn -0.1240 0.4961 -0.8593 +vn -0.1240 -0.0000 -0.9923 +vn -0.1240 -0.4961 -0.8593 +vn -0.1240 -0.8593 -0.4961 +vn -0.1240 -0.9923 0.0000 +vn -0.1240 -0.8593 0.4961 +vn -0.1240 -0.4961 0.8593 +vn -0.1240 0.0000 0.9923 +vn 0.2425 0.8402 0.4851 +vn 0.2425 0.4851 0.8402 +vn 0.2425 0.9701 0.0000 +vn 0.2425 0.8402 -0.4851 +vn 0.2425 0.4851 -0.8402 +vn 0.2425 -0.0000 -0.9701 +vn 0.2425 -0.4851 -0.8402 +vn 0.2425 -0.8402 -0.4851 +vn 0.2425 -0.9701 0.0000 +vn 0.2425 -0.8402 0.4851 +vn 0.2425 -0.4851 0.8402 +vn 0.2425 -0.0000 0.9701 +vn 0.3511 0.8109 0.4682 +vn 0.3511 0.4682 0.8109 +vn 0.3511 0.9363 -0.0000 +vn 0.3511 0.8109 -0.4682 +vn 0.3511 0.4682 -0.8109 +vn 0.3511 0.0000 -0.9363 +vn 0.3511 -0.4682 -0.8109 +vn 0.3511 -0.8109 -0.4682 +vn 0.3511 -0.9363 -0.0000 +vn 0.3511 -0.8109 0.4682 +vn 0.3511 -0.4682 0.8109 +vn 0.3511 0.0000 0.9363 +vn 0.0000 -0.9117 0.4109 +vn 0.0000 -0.4155 0.9096 +vn 0.0000 0.4155 -0.9096 +vn 0.0000 -0.4155 -0.9096 +vn 0.0000 -0.9117 -0.4109 +vn 0.0000 0.9117 -0.4109 +vn 0.0000 0.4155 0.9096 +vn 0.0000 0.9117 0.4109 +vn -0.5000 0.0000 0.8660 +vn -0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.5000 0.0000 0.8660 +vn -0.8660 0.0000 0.5000 +vn 0.5000 0.0000 -0.8660 +vn -0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +s off +f 1073/2000/94 1072/2001/94 1071/2002/94 +f 1077/2003/95 1075/2004/95 1076/2005/95 +f 1074/2006/96 1077/2003/96 1072/2007/96 +f 1071/2008/97 1075/2004/97 1073/2009/97 +f 1073/2010/98 1078/2011/98 1074/2012/98 +f 1072/2001/99 1076/2005/99 1071/2002/99 +f 1080/2013/100 1081/2014/100 1079/2015/100 +f 1082/2016/98 1085/2017/98 1081/2018/98 +f 1079/2015/99 1084/2019/99 1080/2020/99 +f 1085/2021/101 1084/2022/101 1083/2023/101 +f 1126/2024/96 1139/2025/96 1138/2026/96 +f 1125/2027/96 1138/2026/96 1137/2028/96 +f 1124/2029/96 1137/2028/96 1136/2030/96 +f 1123/2031/96 1136/2030/96 1135/2032/96 +f 1123/2031/96 1146/2033/96 1134/2034/96 +f 1134/2034/96 1145/2035/96 1133/2036/96 +f 1133/2036/96 1144/2037/96 1132/2038/96 +f 1132/2039/96 1143/2040/96 1131/2041/96 +f 1131/2041/96 1142/2042/96 1130/2043/96 +f 1130/2043/96 1141/2044/96 1129/2045/96 +f 1129/2045/96 1140/2046/96 1128/2047/96 +f 1127/2048/96 1140/2046/96 1139/2025/96 +f 1151/2049/96 1155/2050/96 1147/2051/96 +f 1198/2052/97 1211/2053/97 1199/2054/97 +f 1211/2053/97 1200/2055/97 1199/2054/97 +f 1212/2056/97 1201/2057/97 1200/2055/97 +f 1213/2058/97 1202/2059/97 1201/2057/97 +f 1202/2059/97 1215/2060/97 1203/2061/97 +f 1203/2061/97 1216/2062/97 1204/2063/97 +f 1204/2064/97 1217/2065/97 1205/2066/97 +f 1205/2066/97 1218/2067/97 1206/2068/97 +f 1206/2068/97 1207/2069/97 1195/2070/97 +f 1195/2070/97 1208/2071/97 1196/2072/97 +f 1196/2072/97 1209/2073/97 1197/2074/97 +f 1209/2073/97 1198/2052/97 1197/2074/97 +f 1227/2075/97 1225/2076/97 1221/2077/97 +f 1244/2078/96 1245/2079/96 1248/2080/96 +f 1239/2081/97 1240/2082/97 1234/2083/97 +f 1251/2084/99 1257/2085/99 1253/2086/99 +f 1258/2087/98 1252/2088/98 1254/2089/98 +f 1255/2090/97 1252/2091/97 1256/2092/97 +f 1257/2085/94 1256/2092/94 1258/2087/94 +f 1257/2085/96 1254/2093/96 1253/2094/96 +f 1261/2095/102 1270/2096/102 1262/2097/102 +f 1262/2097/98 1265/2098/98 1261/2095/98 +f 1266/2099/96 1263/2100/96 1265/2101/96 +f 1264/2102/99 1259/2103/99 1263/2104/99 +f 1265/2098/94 1259/2105/94 1261/2095/94 +f 1262/2097/95 1264/2102/95 1266/2099/95 +f 1269/2106/97 1267/2107/97 1268/2108/97 +f 1260/2109/103 1268/2110/103 1259/2103/103 +f 1262/2097/104 1269/2106/104 1260/2109/104 +f 1259/2105/105 1267/2111/105 1261/2095/105 +f 1287/2112/94 1298/2113/94 1286/2114/94 +f 1288/2115/94 1299/2116/94 1287/2112/94 +f 1289/2117/94 1300/2118/94 1288/2115/94 +f 1290/2119/94 1301/2120/94 1289/2117/94 +f 1290/2119/94 1303/2121/94 1302/2122/94 +f 1291/2123/94 1304/2124/94 1303/2121/94 +f 1292/2125/94 1305/2126/94 1304/2124/94 +f 1293/2127/94 1306/2128/94 1305/2126/94 +f 1294/2129/94 1295/2130/94 1306/2128/94 +f 1284/2131/94 1295/2132/94 1283/2133/94 +f 1285/2134/94 1296/2135/94 1284/2131/94 +f 1286/2114/94 1297/2136/94 1285/2134/94 +f 1311/2137/95 1315/2138/95 1307/2139/95 +f 1332/2140/96 1333/2141/96 1336/2142/96 +f 1327/2143/97 1328/2144/97 1322/2145/97 +f 1355/2146/98 1366/2147/98 1354/2148/98 +f 1356/2149/98 1367/2150/98 1355/2146/98 +f 1357/2151/98 1368/2152/98 1356/2149/98 +f 1358/2153/98 1369/2154/98 1357/2151/98 +f 1358/2153/98 1371/2155/98 1370/2156/98 +f 1360/2157/98 1371/2155/98 1359/2158/98 +f 1361/2159/98 1372/2160/98 1360/2157/98 +f 1361/2159/98 1374/2161/98 1373/2162/98 +f 1362/2163/98 1363/2164/98 1374/2161/98 +f 1352/2165/98 1363/2166/98 1351/2167/98 +f 1353/2168/98 1364/2169/98 1352/2165/98 +f 1354/2148/98 1365/2170/98 1353/2168/98 +f 1379/2171/99 1383/2172/99 1375/2173/99 +f 1387/2174/99 1393/2175/99 1389/2176/99 +f 1394/2177/98 1388/2178/98 1390/2179/98 +f 1391/2180/97 1388/2181/97 1392/2182/97 +f 1393/2175/94 1392/2182/94 1394/2177/94 +f 1393/2175/96 1390/2183/96 1389/2184/96 +f 1073/2000/94 1074/2185/94 1072/2001/94 +f 1077/2003/95 1078/2011/95 1075/2004/95 +f 1074/2006/96 1078/2011/96 1077/2003/96 +f 1071/2008/97 1076/2005/97 1075/2004/97 +f 1073/2010/98 1075/2004/98 1078/2011/98 +f 1072/2001/99 1077/2003/99 1076/2005/99 +f 1080/2013/100 1082/2186/100 1081/2014/100 +f 1082/2016/98 1086/2187/98 1085/2017/98 +f 1079/2015/99 1083/2023/99 1084/2019/99 +f 1085/2021/101 1086/2188/101 1084/2022/101 +f 1126/2024/96 1127/2048/96 1139/2025/96 +f 1125/2027/96 1126/2024/96 1138/2026/96 +f 1124/2029/96 1125/2027/96 1137/2028/96 +f 1123/2031/96 1124/2029/96 1136/2030/96 +f 1123/2031/96 1135/2032/96 1146/2033/96 +f 1134/2034/96 1146/2033/96 1145/2035/96 +f 1133/2036/96 1145/2035/96 1144/2037/96 +f 1132/2039/96 1144/2189/96 1143/2040/96 +f 1131/2041/96 1143/2040/96 1142/2042/96 +f 1130/2043/96 1142/2042/96 1141/2044/96 +f 1129/2045/96 1141/2044/96 1140/2046/96 +f 1127/2048/96 1128/2047/96 1140/2046/96 +f 1147/2051/96 1148/2190/96 1149/2191/96 +f 1149/2191/96 1150/2192/96 1147/2051/96 +f 1150/2192/96 1151/2049/96 1147/2051/96 +f 1151/2049/96 1152/2193/96 1153/2194/96 +f 1153/2194/96 1154/2195/96 1155/2050/96 +f 1155/2050/96 1156/2196/96 1157/2197/96 +f 1157/2197/96 1158/2198/96 1155/2050/96 +f 1158/2198/96 1147/2051/96 1155/2050/96 +f 1151/2049/96 1153/2194/96 1155/2050/96 +f 1198/2052/97 1210/2199/97 1211/2053/97 +f 1211/2053/97 1212/2056/97 1200/2055/97 +f 1212/2056/97 1213/2058/97 1201/2057/97 +f 1213/2058/97 1214/2200/97 1202/2059/97 +f 1202/2059/97 1214/2200/97 1215/2060/97 +f 1203/2061/97 1215/2060/97 1216/2062/97 +f 1204/2064/97 1216/2201/97 1217/2065/97 +f 1205/2066/97 1217/2065/97 1218/2067/97 +f 1206/2068/97 1218/2067/97 1207/2069/97 +f 1195/2070/97 1207/2069/97 1208/2071/97 +f 1196/2072/97 1208/2071/97 1209/2073/97 +f 1209/2073/97 1210/2199/97 1198/2052/97 +f 1221/2077/97 1220/2202/97 1219/2203/97 +f 1219/2203/97 1230/2204/97 1221/2077/97 +f 1230/2204/97 1229/2205/97 1221/2077/97 +f 1229/2205/97 1228/2206/97 1227/2075/97 +f 1227/2075/97 1226/2207/97 1225/2076/97 +f 1225/2076/97 1224/2208/97 1223/2209/97 +f 1223/2209/97 1222/2210/97 1225/2076/97 +f 1222/2210/97 1221/2077/97 1225/2076/97 +f 1229/2205/97 1227/2075/97 1221/2077/97 +f 1245/2079/96 1241/2211/96 1250/2212/96 +f 1250/2212/96 1249/2213/96 1245/2079/96 +f 1249/2213/96 1248/2080/96 1245/2079/96 +f 1248/2080/96 1247/2214/96 1243/2215/96 +f 1247/2214/96 1246/2216/96 1243/2215/96 +f 1246/2216/96 1242/2217/96 1243/2215/96 +f 1243/2215/96 1244/2078/96 1248/2080/96 +f 1240/2082/97 1238/2218/97 1234/2083/97 +f 1234/2083/97 1235/2219/97 1231/2220/97 +f 1235/2219/97 1236/2221/97 1231/2220/97 +f 1236/2221/97 1237/2222/97 1233/2223/97 +f 1233/2223/97 1232/2224/97 1236/2221/97 +f 1232/2224/97 1231/2220/97 1236/2221/97 +f 1231/2220/97 1239/2081/97 1234/2083/97 +f 1251/2084/99 1255/2090/99 1257/2085/99 +f 1258/2087/98 1256/2092/98 1252/2088/98 +f 1255/2090/97 1251/2225/97 1252/2091/97 +f 1257/2085/94 1255/2090/94 1256/2092/94 +f 1257/2085/96 1258/2087/96 1254/2093/96 +f 1261/2095/102 1267/2226/102 1270/2096/102 +f 1262/2097/98 1266/2099/98 1265/2098/98 +f 1266/2099/96 1264/2102/96 1263/2100/96 +f 1264/2102/99 1260/2109/99 1259/2103/99 +f 1265/2098/94 1263/2227/94 1259/2105/94 +f 1262/2097/95 1260/2109/95 1264/2102/95 +f 1269/2106/97 1270/2228/97 1267/2107/97 +f 1260/2109/103 1269/2229/103 1268/2110/103 +f 1262/2097/104 1270/2228/104 1269/2106/104 +f 1259/2105/105 1268/2230/105 1267/2111/105 +f 1287/2112/94 1299/2116/94 1298/2113/94 +f 1288/2115/94 1300/2118/94 1299/2116/94 +f 1289/2117/94 1301/2120/94 1300/2118/94 +f 1290/2119/94 1302/2122/94 1301/2120/94 +f 1290/2119/94 1291/2123/94 1303/2121/94 +f 1291/2123/94 1292/2125/94 1304/2124/94 +f 1292/2125/94 1293/2127/94 1305/2126/94 +f 1293/2127/94 1294/2129/94 1306/2128/94 +f 1294/2129/94 1283/2231/94 1295/2130/94 +f 1284/2131/94 1296/2135/94 1295/2132/94 +f 1285/2134/94 1297/2136/94 1296/2135/94 +f 1286/2114/94 1298/2113/94 1297/2136/94 +f 1307/2139/95 1308/2232/95 1311/2137/95 +f 1308/2232/95 1309/2233/95 1311/2137/95 +f 1309/2233/95 1310/2234/95 1311/2137/95 +f 1311/2137/95 1312/2235/95 1313/2236/95 +f 1313/2236/95 1314/2237/95 1315/2138/95 +f 1315/2138/95 1316/2238/95 1317/2239/95 +f 1317/2239/95 1318/2240/95 1315/2138/95 +f 1318/2240/95 1307/2139/95 1315/2138/95 +f 1311/2137/95 1313/2236/95 1315/2138/95 +f 1333/2141/96 1329/2241/96 1338/2242/96 +f 1338/2242/96 1337/2243/96 1333/2141/96 +f 1337/2243/96 1336/2142/96 1333/2141/96 +f 1336/2142/96 1335/2244/96 1331/2245/96 +f 1335/2244/96 1334/2246/96 1331/2245/96 +f 1334/2246/96 1330/2247/96 1331/2245/96 +f 1331/2245/96 1332/2140/96 1336/2142/96 +f 1328/2144/97 1326/2248/97 1322/2145/97 +f 1322/2145/97 1323/2249/97 1319/2250/97 +f 1323/2249/97 1324/2251/97 1319/2250/97 +f 1324/2251/97 1325/2252/97 1321/2253/97 +f 1321/2253/97 1320/2254/97 1324/2251/97 +f 1320/2254/97 1319/2250/97 1324/2251/97 +f 1319/2250/97 1327/2143/97 1322/2145/97 +f 1355/2146/98 1367/2150/98 1366/2147/98 +f 1356/2149/98 1368/2152/98 1367/2150/98 +f 1357/2151/98 1369/2154/98 1368/2152/98 +f 1358/2153/98 1370/2156/98 1369/2154/98 +f 1358/2153/98 1359/2158/98 1371/2155/98 +f 1360/2157/98 1372/2160/98 1371/2155/98 +f 1361/2159/98 1373/2162/98 1372/2160/98 +f 1361/2159/98 1362/2163/98 1374/2161/98 +f 1362/2163/98 1351/2255/98 1363/2164/98 +f 1352/2165/98 1364/2169/98 1363/2166/98 +f 1353/2168/98 1365/2170/98 1364/2169/98 +f 1354/2148/98 1366/2147/98 1365/2170/98 +f 1375/2173/99 1376/2256/99 1377/2257/99 +f 1377/2257/99 1378/2258/99 1379/2171/99 +f 1379/2171/99 1380/2259/99 1383/2172/99 +f 1380/2259/99 1381/2260/99 1383/2172/99 +f 1381/2260/99 1382/2261/99 1383/2172/99 +f 1383/2172/99 1384/2262/99 1385/2263/99 +f 1385/2263/99 1386/2264/99 1383/2172/99 +f 1386/2264/99 1375/2173/99 1383/2172/99 +f 1375/2173/99 1377/2257/99 1379/2171/99 +f 1387/2174/99 1391/2180/99 1393/2175/99 +f 1394/2177/98 1392/2182/98 1388/2178/98 +f 1391/2180/97 1387/2265/97 1388/2181/97 +f 1393/2175/94 1391/2180/94 1392/2182/94 +f 1393/2175/96 1394/2177/96 1390/2183/96 +s 1 +f 1100/2266/106 1089/2267/107 1088/2268/106 +f 1107/2269/108 1096/2270/94 1095/2271/108 +f 1104/2272/109 1093/2273/99 1092/2274/109 +f 1101/2275/107 1090/2276/95 1089/2267/107 +f 1108/2277/94 1097/2278/110 1096/2279/94 +f 1105/2280/99 1094/2281/111 1093/2273/99 +f 1102/2282/95 1091/2283/112 1090/2276/95 +f 1109/2284/110 1098/2285/113 1097/2278/110 +f 1099/2286/98 1088/2268/106 1087/2287/98 +f 1106/2288/111 1095/2271/108 1094/2281/111 +f 1103/2289/112 1092/2274/109 1091/2283/112 +f 1110/2290/113 1087/2287/98 1098/2285/113 +f 1092/2274/114 1115/2291/115 1091/2283/115 +f 1091/2283/115 1114/2292/116 1090/2276/116 +f 1090/2276/116 1113/2293/117 1089/2267/117 +f 1089/2267/117 1112/2294/118 1088/2268/118 +f 1088/2268/118 1111/2295/119 1087/2287/119 +f 1087/2287/119 1122/2296/120 1098/2285/120 +f 1097/2278/121 1122/2296/120 1121/2297/121 +f 1096/2279/122 1121/2297/121 1120/2298/122 +f 1096/2270/122 1119/2299/123 1095/2271/123 +f 1095/2271/123 1118/2300/124 1094/2281/124 +f 1094/2281/124 1117/2301/125 1093/2273/125 +f 1092/2274/114 1117/2301/125 1116/2302/114 +f 1118/2300/111 1129/2045/99 1117/2301/99 +f 1115/2291/112 1126/2024/95 1114/2292/95 +f 1122/2296/113 1133/2036/110 1121/2297/110 +f 1112/2294/106 1123/2031/98 1111/2295/98 +f 1119/2299/108 1130/2043/111 1118/2300/111 +f 1116/2302/109 1127/2048/112 1115/2291/112 +f 1111/2295/98 1134/2034/113 1122/2296/113 +f 1113/2293/107 1124/2029/106 1112/2294/106 +f 1120/2303/94 1131/2041/108 1119/2299/108 +f 1117/2301/99 1128/2047/109 1116/2302/109 +f 1114/2292/95 1125/2027/107 1113/2293/107 +f 1121/2297/110 1132/2038/94 1120/2298/94 +f 1138/2026/94 1149/2304/108 1137/2028/108 +f 1145/2035/112 1156/2305/95 1144/2037/95 +f 1142/2042/106 1153/2306/98 1141/2044/98 +f 1139/2025/110 1150/2307/94 1138/2026/94 +f 1146/2033/109 1157/2308/112 1145/2035/112 +f 1136/2030/111 1147/2309/99 1135/2032/99 +f 1143/2040/107 1154/2310/106 1142/2042/106 +f 1140/2046/113 1151/2311/110 1139/2025/110 +f 1135/2032/99 1158/2312/109 1146/2033/109 +f 1137/2028/108 1148/2313/111 1136/2030/111 +f 1144/2189/95 1155/2314/107 1143/2040/107 +f 1141/2044/98 1152/2315/113 1140/2046/113 +f 1103/2289/126 1164/2316/127 1104/2272/127 +f 1162/2317/128 1103/2289/126 1102/2282/128 +f 1161/2318/129 1102/2282/128 1101/2275/129 +f 1100/2266/130 1161/2318/129 1101/2275/129 +f 1099/2286/131 1160/2319/130 1100/2266/130 +f 1110/2290/132 1159/2320/131 1099/2286/131 +f 1109/2284/133 1170/2321/132 1110/2290/132 +f 1108/2277/134 1169/2322/133 1109/2284/133 +f 1107/2269/135 1168/2323/134 1108/2324/134 +f 1166/2325/136 1107/2269/135 1106/2288/136 +f 1165/2326/137 1106/2288/136 1105/2280/137 +f 1164/2316/127 1105/2280/137 1104/2272/127 +f 1164/2316/109 1177/2327/99 1165/2326/99 +f 1161/2318/107 1174/2328/95 1162/2317/95 +f 1168/2329/94 1181/2330/110 1169/2322/110 +f 1165/2326/99 1178/2331/111 1166/2325/111 +f 1162/2317/95 1175/2332/112 1163/2333/112 +f 1169/2322/110 1182/2334/113 1170/2321/113 +f 1159/2320/98 1172/2335/106 1160/2319/106 +f 1166/2325/111 1179/2336/108 1167/2337/108 +f 1163/2333/112 1176/2338/109 1164/2316/109 +f 1170/2321/113 1171/2339/98 1159/2320/98 +f 1160/2319/106 1173/2340/107 1161/2318/107 +f 1167/2337/108 1180/2341/94 1168/2323/94 +f 1187/2342/138 1176/2343/139 1175/2344/138 +f 1186/2345/140 1175/2346/138 1174/2347/140 +f 1173/2348/141 1186/2345/140 1174/2349/140 +f 1172/2350/142 1185/2351/141 1173/2352/141 +f 1183/2353/143 1172/2354/142 1171/2355/143 +f 1182/2356/144 1183/2353/143 1171/2357/143 +f 1193/2358/145 1182/2359/144 1181/2360/145 +f 1192/2361/146 1181/2362/145 1180/2363/146 +f 1191/2364/147 1180/2341/146 1179/2336/147 +f 1190/2365/148 1179/2366/147 1178/2367/148 +f 1177/2368/149 1190/2365/148 1178/2369/148 +f 1188/2370/139 1177/2371/149 1176/2372/139 +f 1191/2364/108 1204/2063/94 1192/2373/94 +f 1188/2370/109 1201/2057/99 1189/2374/99 +f 1185/2351/107 1198/2052/95 1186/2345/95 +f 1192/2361/94 1205/2066/110 1193/2358/110 +f 1189/2374/99 1202/2059/111 1190/2365/111 +f 1186/2345/95 1199/2054/112 1187/2342/112 +f 1193/2358/110 1206/2068/113 1194/2375/113 +f 1183/2353/98 1196/2072/106 1184/2376/106 +f 1190/2365/111 1203/2061/108 1191/2364/108 +f 1187/2342/112 1200/2055/109 1188/2370/109 +f 1194/2375/113 1195/2070/98 1183/2353/98 +f 1184/2376/106 1197/2074/107 1185/2351/107 +f 1211/2053/110 1224/2377/113 1212/2056/113 +f 1218/2067/109 1219/2378/99 1207/2069/99 +f 1208/2071/111 1221/2379/108 1209/2073/108 +f 1215/2060/107 1228/2380/95 1216/2062/95 +f 1212/2056/113 1225/2381/98 1213/2058/98 +f 1209/2073/108 1222/2382/94 1210/2199/94 +f 1216/2201/95 1229/2383/112 1217/2065/112 +f 1213/2058/98 1226/2384/106 1214/2200/106 +f 1210/2199/94 1223/2385/110 1211/2053/110 +f 1217/2065/112 1230/2386/109 1218/2067/109 +f 1207/2069/99 1220/2387/111 1208/2071/111 +f 1214/2200/106 1227/2388/107 1215/2060/107 +f 1236/2389/150 1242/2390/151 1237/2391/151 +f 1240/2392/152 1241/2393/153 1238/2394/153 +f 1234/2395/154 1244/2396/94 1235/2397/94 +f 1239/2398/155 1250/2399/152 1240/2392/152 +f 1246/2400/156 1237/2391/151 1242/2390/151 +f 1238/2394/153 1245/2401/154 1234/2395/154 +f 1232/2402/157 1248/2403/95 1231/2404/95 +f 1235/2405/94 1243/2406/150 1236/2389/150 +f 1231/2407/95 1249/2408/155 1239/2398/155 +f 1233/2409/156 1247/2410/157 1232/2402/157 +f 1277/2411/99 1288/2115/158 1276/2412/158 +f 1274/2413/97 1285/2134/159 1273/2414/159 +f 1281/2415/160 1292/2125/96 1280/2416/96 +f 1278/2417/161 1289/2117/99 1277/2411/99 +f 1275/2418/162 1286/2114/97 1274/2413/97 +f 1282/2419/163 1293/2127/160 1281/2415/160 +f 1272/2420/164 1283/2133/98 1271/2421/98 +f 1279/2422/165 1290/2119/161 1278/2417/161 +f 1276/2412/158 1287/2112/162 1275/2418/162 +f 1271/2423/98 1294/2129/163 1282/2419/163 +f 1273/2414/159 1284/2131/164 1272/2420/164 +f 1280/2416/96 1291/2123/165 1279/2422/165 +f 1299/2116/162 1310/2424/97 1298/2113/97 +f 1306/2128/163 1317/2425/160 1305/2126/160 +f 1296/2135/164 1307/2426/98 1295/2132/98 +f 1303/2121/165 1314/2427/161 1302/2122/161 +f 1300/2118/158 1311/2428/162 1299/2116/162 +f 1295/2130/98 1318/2429/163 1306/2128/163 +f 1297/2136/159 1308/2430/164 1296/2135/164 +f 1304/2124/96 1315/2431/165 1303/2121/165 +f 1301/2120/99 1312/2432/158 1300/2118/158 +f 1298/2113/97 1309/2433/159 1297/2136/159 +f 1305/2126/160 1316/2434/96 1304/2124/96 +f 1302/2122/161 1313/2435/99 1301/2120/99 +f 1324/2436/150 1330/2437/151 1325/2438/151 +f 1328/2439/152 1329/2440/153 1326/2441/153 +f 1322/2442/154 1332/2443/94 1323/2444/94 +f 1327/2445/155 1338/2446/152 1328/2439/152 +f 1334/2447/156 1325/2438/151 1330/2437/151 +f 1326/2441/153 1333/2448/154 1322/2442/154 +f 1320/2449/157 1336/2450/95 1319/2451/95 +f 1323/2452/94 1331/2453/150 1324/2436/150 +f 1319/2454/95 1337/2455/155 1327/2445/155 +f 1321/2456/156 1335/2457/157 1320/2449/157 +f 1345/2458/94 1356/2149/166 1344/2459/166 +f 1342/2460/97 1353/2168/167 1341/2461/167 +f 1349/2462/168 1360/2157/96 1348/2463/96 +f 1346/2464/169 1357/2151/94 1345/2458/94 +f 1343/2465/170 1354/2148/97 1342/2460/97 +f 1350/2466/171 1361/2159/168 1349/2462/168 +f 1340/2467/172 1351/2167/95 1339/2468/95 +f 1347/2469/173 1358/2153/169 1346/2464/169 +f 1344/2459/166 1355/2146/170 1343/2465/170 +f 1339/2470/95 1362/2163/171 1350/2466/171 +f 1341/2461/167 1352/2165/172 1340/2467/172 +f 1348/2463/96 1359/2158/173 1347/2469/173 +f 1367/2150/170 1378/2471/97 1366/2147/97 +f 1374/2161/171 1385/2472/168 1373/2162/168 +f 1364/2169/172 1375/2473/95 1363/2166/95 +f 1371/2155/173 1382/2474/169 1370/2156/169 +f 1368/2152/166 1379/2475/170 1367/2150/170 +f 1363/2164/95 1386/2476/171 1374/2161/171 +f 1365/2170/167 1376/2477/172 1364/2169/172 +f 1372/2160/96 1383/2478/173 1371/2155/173 +f 1369/2154/94 1380/2479/166 1368/2152/166 +f 1366/2147/97 1377/2480/167 1365/2170/167 +f 1373/2162/168 1384/2481/96 1372/2160/96 +f 1370/2156/169 1381/2482/94 1369/2154/94 +f 1100/2266/106 1101/2275/107 1089/2267/107 +f 1107/2269/108 1108/2324/94 1096/2270/94 +f 1104/2272/109 1105/2280/99 1093/2273/99 +f 1101/2275/107 1102/2282/95 1090/2276/95 +f 1108/2277/94 1109/2284/110 1097/2278/110 +f 1105/2280/99 1106/2288/111 1094/2281/111 +f 1102/2282/95 1103/2289/112 1091/2283/112 +f 1109/2284/110 1110/2290/113 1098/2285/113 +f 1099/2286/98 1100/2266/106 1088/2268/106 +f 1106/2288/111 1107/2269/108 1095/2271/108 +f 1103/2289/112 1104/2272/109 1092/2274/109 +f 1110/2290/113 1099/2286/98 1087/2287/98 +f 1092/2274/114 1116/2302/114 1115/2291/115 +f 1091/2283/115 1115/2291/115 1114/2292/116 +f 1090/2276/116 1114/2292/116 1113/2293/117 +f 1089/2267/117 1113/2293/117 1112/2294/118 +f 1088/2268/118 1112/2294/118 1111/2295/119 +f 1087/2287/119 1111/2295/119 1122/2296/120 +f 1097/2278/121 1098/2285/120 1122/2296/120 +f 1096/2279/122 1097/2278/121 1121/2297/121 +f 1096/2270/122 1120/2303/122 1119/2299/123 +f 1095/2271/123 1119/2299/123 1118/2300/124 +f 1094/2281/124 1118/2300/124 1117/2301/125 +f 1092/2274/114 1093/2273/125 1117/2301/125 +f 1118/2300/111 1130/2043/111 1129/2045/99 +f 1115/2291/112 1127/2048/112 1126/2024/95 +f 1122/2296/113 1134/2034/113 1133/2036/110 +f 1112/2294/106 1124/2029/106 1123/2031/98 +f 1119/2299/108 1131/2041/108 1130/2043/111 +f 1116/2302/109 1128/2047/109 1127/2048/112 +f 1111/2295/98 1123/2031/98 1134/2034/113 +f 1113/2293/107 1125/2027/107 1124/2029/106 +f 1120/2303/94 1132/2039/94 1131/2041/108 +f 1117/2301/99 1129/2045/99 1128/2047/109 +f 1114/2292/95 1126/2024/95 1125/2027/107 +f 1121/2297/110 1133/2036/110 1132/2038/94 +f 1138/2026/94 1150/2307/94 1149/2304/108 +f 1145/2035/112 1157/2308/112 1156/2305/95 +f 1142/2042/106 1154/2310/106 1153/2306/98 +f 1139/2025/110 1151/2311/110 1150/2307/94 +f 1146/2033/109 1158/2312/109 1157/2308/112 +f 1136/2030/111 1148/2313/111 1147/2309/99 +f 1143/2040/107 1155/2314/107 1154/2310/106 +f 1140/2046/113 1152/2315/113 1151/2311/110 +f 1135/2032/99 1147/2309/99 1158/2312/109 +f 1137/2028/108 1149/2304/108 1148/2313/111 +f 1144/2189/95 1156/2483/95 1155/2314/107 +f 1141/2044/98 1153/2306/98 1152/2315/113 +f 1103/2289/126 1163/2333/126 1164/2316/127 +f 1162/2317/128 1163/2333/126 1103/2289/126 +f 1161/2318/129 1162/2317/128 1102/2282/128 +f 1100/2266/130 1160/2319/130 1161/2318/129 +f 1099/2286/131 1159/2320/131 1160/2319/130 +f 1110/2290/132 1170/2321/132 1159/2320/131 +f 1109/2284/133 1169/2322/133 1170/2321/132 +f 1108/2277/134 1168/2329/134 1169/2322/133 +f 1107/2269/135 1167/2337/135 1168/2323/134 +f 1166/2325/136 1167/2337/135 1107/2269/135 +f 1165/2326/137 1166/2325/136 1106/2288/136 +f 1164/2316/127 1165/2326/137 1105/2280/137 +f 1164/2316/109 1176/2338/109 1177/2327/99 +f 1161/2318/107 1173/2340/107 1174/2328/95 +f 1168/2329/94 1180/2484/94 1181/2330/110 +f 1165/2326/99 1177/2327/99 1178/2331/111 +f 1162/2317/95 1174/2328/95 1175/2332/112 +f 1169/2322/110 1181/2330/110 1182/2334/113 +f 1159/2320/98 1171/2339/98 1172/2335/106 +f 1166/2325/111 1178/2331/111 1179/2336/108 +f 1163/2333/112 1175/2332/112 1176/2338/109 +f 1170/2321/113 1182/2334/113 1171/2339/98 +f 1160/2319/106 1172/2335/106 1173/2340/107 +f 1167/2337/108 1179/2336/108 1180/2341/94 +f 1187/2342/138 1188/2370/139 1176/2343/139 +f 1186/2345/140 1187/2342/138 1175/2346/138 +f 1173/2348/141 1185/2351/141 1186/2345/140 +f 1172/2350/142 1184/2376/142 1185/2351/141 +f 1183/2353/143 1184/2376/142 1172/2354/142 +f 1182/2356/144 1194/2375/144 1183/2353/143 +f 1193/2358/145 1194/2375/144 1182/2359/144 +f 1192/2361/146 1193/2358/145 1181/2362/145 +f 1191/2364/147 1192/2373/146 1180/2341/146 +f 1190/2365/148 1191/2364/147 1179/2366/147 +f 1177/2368/149 1189/2374/149 1190/2365/148 +f 1188/2370/139 1189/2374/149 1177/2371/149 +f 1191/2364/108 1203/2061/108 1204/2063/94 +f 1188/2370/109 1200/2055/109 1201/2057/99 +f 1185/2351/107 1197/2074/107 1198/2052/95 +f 1192/2361/94 1204/2064/94 1205/2066/110 +f 1189/2374/99 1201/2057/99 1202/2059/111 +f 1186/2345/95 1198/2052/95 1199/2054/112 +f 1193/2358/110 1205/2066/110 1206/2068/113 +f 1183/2353/98 1195/2070/98 1196/2072/106 +f 1190/2365/111 1202/2059/111 1203/2061/108 +f 1187/2342/112 1199/2054/112 1200/2055/109 +f 1194/2375/113 1206/2068/113 1195/2070/98 +f 1184/2376/106 1196/2072/106 1197/2074/107 +f 1211/2053/110 1223/2385/110 1224/2377/113 +f 1218/2067/109 1230/2386/109 1219/2378/99 +f 1208/2071/111 1220/2387/111 1221/2379/108 +f 1215/2060/107 1227/2388/107 1228/2380/95 +f 1212/2056/113 1224/2377/113 1225/2381/98 +f 1209/2073/108 1221/2379/108 1222/2382/94 +f 1216/2201/95 1228/2485/95 1229/2383/112 +f 1213/2058/98 1225/2381/98 1226/2384/106 +f 1210/2199/94 1222/2382/94 1223/2385/110 +f 1217/2065/112 1229/2383/112 1230/2386/109 +f 1207/2069/99 1219/2378/99 1220/2387/111 +f 1214/2200/106 1226/2384/106 1227/2388/107 +f 1236/2389/150 1243/2406/150 1242/2390/151 +f 1240/2392/152 1250/2399/152 1241/2393/153 +f 1234/2395/154 1245/2401/154 1244/2396/94 +f 1239/2398/155 1249/2408/155 1250/2399/152 +f 1246/2400/156 1233/2409/156 1237/2391/151 +f 1238/2394/153 1241/2393/153 1245/2401/154 +f 1232/2402/157 1247/2410/157 1248/2403/95 +f 1235/2405/94 1244/2486/94 1243/2406/150 +f 1231/2407/95 1248/2487/95 1249/2408/155 +f 1233/2409/156 1246/2400/156 1247/2410/157 +f 1277/2411/99 1289/2117/99 1288/2115/158 +f 1274/2413/97 1286/2114/97 1285/2134/159 +f 1281/2415/160 1293/2127/160 1292/2125/96 +f 1278/2417/161 1290/2119/161 1289/2117/99 +f 1275/2418/162 1287/2112/162 1286/2114/97 +f 1282/2419/163 1294/2129/163 1293/2127/160 +f 1272/2420/164 1284/2131/164 1283/2133/98 +f 1279/2422/165 1291/2123/165 1290/2119/161 +f 1276/2412/158 1288/2115/158 1287/2112/162 +f 1271/2423/98 1283/2231/98 1294/2129/163 +f 1273/2414/159 1285/2134/159 1284/2131/164 +f 1280/2416/96 1292/2125/96 1291/2123/165 +f 1299/2116/162 1311/2428/162 1310/2424/97 +f 1306/2128/163 1318/2429/163 1317/2425/160 +f 1296/2135/164 1308/2430/164 1307/2426/98 +f 1303/2121/165 1315/2431/165 1314/2427/161 +f 1300/2118/158 1312/2432/158 1311/2428/162 +f 1295/2130/98 1307/2488/98 1318/2429/163 +f 1297/2136/159 1309/2433/159 1308/2430/164 +f 1304/2124/96 1316/2434/96 1315/2431/165 +f 1301/2120/99 1313/2435/99 1312/2432/158 +f 1298/2113/97 1310/2424/97 1309/2433/159 +f 1305/2126/160 1317/2425/160 1316/2434/96 +f 1302/2122/161 1314/2427/161 1313/2435/99 +f 1324/2436/150 1331/2453/150 1330/2437/151 +f 1328/2439/152 1338/2446/152 1329/2440/153 +f 1322/2442/154 1333/2448/154 1332/2443/94 +f 1327/2445/155 1337/2455/155 1338/2446/152 +f 1334/2447/156 1321/2456/156 1325/2438/151 +f 1326/2441/153 1329/2440/153 1333/2448/154 +f 1320/2449/157 1335/2457/157 1336/2450/95 +f 1323/2452/94 1332/2489/94 1331/2453/150 +f 1319/2454/95 1336/2490/95 1337/2455/155 +f 1321/2456/156 1334/2447/156 1335/2457/157 +f 1345/2458/94 1357/2151/94 1356/2149/166 +f 1342/2460/97 1354/2148/97 1353/2168/167 +f 1349/2462/168 1361/2159/168 1360/2157/96 +f 1346/2464/169 1358/2153/169 1357/2151/94 +f 1343/2465/170 1355/2146/170 1354/2148/97 +f 1350/2466/171 1362/2163/171 1361/2159/168 +f 1340/2467/172 1352/2165/172 1351/2167/95 +f 1347/2469/173 1359/2158/173 1358/2153/169 +f 1344/2459/166 1356/2149/166 1355/2146/170 +f 1339/2470/95 1351/2255/95 1362/2163/171 +f 1341/2461/167 1353/2168/167 1352/2165/172 +f 1348/2463/96 1360/2157/96 1359/2158/173 +f 1367/2150/170 1379/2475/170 1378/2471/97 +f 1374/2161/171 1386/2476/171 1385/2472/168 +f 1364/2169/172 1376/2477/172 1375/2473/95 +f 1371/2155/173 1383/2478/173 1382/2474/169 +f 1368/2152/166 1380/2479/166 1379/2475/170 +f 1363/2164/95 1375/2491/95 1386/2476/171 +f 1365/2170/167 1377/2480/167 1376/2477/172 +f 1372/2160/96 1384/2481/96 1383/2478/173 +f 1369/2154/94 1381/2482/94 1380/2479/166 +f 1366/2147/97 1378/2471/97 1377/2480/167 +f 1373/2162/168 1385/2472/168 1384/2481/96 +f 1370/2156/169 1382/2474/169 1381/2482/94 +o Gun +v -8.750000 2.500000 -0.500000 +v -1.000000 2.500000 -0.500000 +v -8.750000 2.250000 -0.433013 +v -1.000000 2.250000 -0.433013 +v -8.750000 2.066987 -0.250000 +v -1.000000 2.066987 -0.250000 +v -8.750000 2.000000 0.000000 +v -1.000000 2.000000 0.000000 +v -8.750000 2.066987 0.250000 +v -1.000000 2.066987 0.250000 +v -8.750000 2.250000 0.433013 +v -1.000000 2.250000 0.433013 +v -8.750000 2.500000 0.500000 +v -1.000000 2.500000 0.500000 +v -8.750000 2.750000 0.433013 +v -1.000000 2.750000 0.433013 +v -8.750000 2.933012 0.250000 +v -1.000000 2.933012 0.250000 +v -8.750000 3.000000 0.000000 +v -1.000000 3.000000 0.000000 +v -8.750000 2.933013 -0.250000 +v -1.000000 2.933013 -0.250000 +v -8.750000 2.750000 -0.433012 +v -1.000000 2.750000 -0.433012 +v -8.750000 2.500000 -0.375000 +v -8.750000 2.312500 -0.324759 +v -8.750000 2.175241 -0.187500 +v -8.750000 2.125000 0.000000 +v -8.750000 2.175241 0.187500 +v -8.750000 2.312500 0.324759 +v -8.750000 2.500000 0.375000 +v -8.750000 2.687500 0.324759 +v -8.750000 2.824759 0.187500 +v -8.750000 2.875000 0.000000 +v -8.750000 2.824759 -0.187500 +v -8.750000 2.687500 -0.324759 +v 0.001000 2.500000 -0.375000 +v 0.001000 2.312500 -0.324759 +v 0.001000 2.175241 -0.187500 +v 0.001000 2.125000 0.000000 +v 0.001000 2.175241 0.187500 +v 0.001000 2.312500 0.324759 +v 0.001000 2.500000 0.375000 +v 0.001000 2.687500 0.324759 +v 0.001000 2.824759 0.187500 +v 0.001000 2.875000 0.000000 +v 0.001000 2.824759 -0.187500 +v 0.001000 2.687500 -0.324759 +v -1.000000 2.500000 -0.625000 +v -1.000000 2.187500 -0.541266 +v -1.000000 1.958734 -0.312500 +v -1.000000 1.875000 0.000000 +v -1.000000 1.958734 0.312500 +v -1.000000 2.187500 0.541265 +v -1.000000 2.500000 0.625000 +v -1.000000 2.812500 0.541266 +v -1.000000 3.041266 0.312500 +v -1.000000 3.125000 0.000000 +v -1.000000 3.041266 -0.312500 +v -1.000000 2.812500 -0.541265 +v 0.001000 2.500000 -0.625000 +v 0.001000 2.187500 -0.541266 +v 0.001000 1.958734 -0.312500 +v 0.001000 1.875000 0.000000 +v 0.001000 1.958734 0.312500 +v 0.001000 2.187500 0.541265 +v 0.001000 2.500000 0.625000 +v 0.001000 2.812500 0.541266 +v 0.001000 3.041266 0.312500 +v 0.001000 3.125000 0.000000 +v 0.001000 3.041266 -0.312500 +v 0.001000 2.812500 -0.541265 +v 0.000000 0.562500 0.500000 +v 2.500000 0.562500 0.500000 +v 0.000000 0.562500 -0.500000 +v 2.500000 0.562500 -0.500000 +v 2.500000 -0.187500 0.500000 +v 2.500000 -0.187500 -0.500000 +v 0.000000 -0.187500 -0.500000 +v 0.000000 -0.187500 0.500000 +v 2.500000 2.937500 0.500000 +v 2.500000 2.937500 -0.500000 +v -0.999000 3.187500 0.500000 +v -0.999000 3.187500 -0.500000 +v 0.625000 3.187500 0.500000 +v 0.625000 3.187500 -0.500000 +v 1.375000 3.437500 0.500000 +v 1.375000 3.437500 -0.500000 +v 2.750000 3.437500 0.500000 +v 2.750000 3.437500 -0.500000 +v 2.750000 3.187500 0.500000 +v 2.750000 3.187500 -0.500000 +v 3.000000 3.187500 0.500000 +v 3.000000 3.187500 -0.500000 +v 0.000000 2.937500 -0.500000 +v 0.000000 2.937500 0.500000 +v 0.000000 -0.187500 -0.500000 +v 0.000000 -0.187500 0.000000 +v -0.750000 -0.187500 -0.500000 +v 0.000000 2.187500 -0.500000 +v -3.750000 1.250000 0.250000 +v -1.000000 1.250000 0.250000 +v -3.750000 1.250000 -0.250000 +v -1.000000 1.250000 -0.250000 +v 0.000000 1.750000 -0.187500 +v 0.000000 1.882583 -0.132582 +v 0.000000 1.937500 0.000000 +v 0.000000 1.562500 0.000000 +v 0.000000 1.617417 -0.132582 +v -1.000000 1.750000 -0.187500 +v -1.000000 1.882583 -0.132582 +v -1.000000 1.937500 0.000000 +v -1.000000 1.562500 0.000000 +v -1.000000 1.617417 -0.132582 +v -0.750000 -0.187500 0.000000 +v -1.000000 2.187500 -0.500000 +v -0.750000 0.687500 -0.500000 +v -0.750000 0.687500 0.000000 +v -1.000000 1.062500 -0.500000 +v -1.000000 1.062500 0.000000 +v -4.250000 2.125000 -0.250000 +v -4.250000 2.125000 0.250000 +v -1.000000 2.125000 0.250000 +v -1.000000 2.125000 -0.250000 +v -1.000000 1.625000 0.250000 +v -3.000000 1.625000 0.250000 +v -3.000000 1.875000 0.250000 +v -1.000000 1.875000 0.250000 +v -1.000000 1.625000 -0.125000 +v -3.000000 1.625000 -0.125000 +v -3.000000 1.875000 -0.125000 +v -1.000000 1.875000 -0.125000 +v 3.625000 2.437500 0.500000 +v 3.625000 2.437500 -0.500000 +v 4.875000 1.687500 0.500000 +v 4.875000 1.687500 -0.500000 +v 5.875000 1.312500 0.500000 +v 5.875000 1.312500 -0.500000 +v 5.875000 0.687500 0.500000 +v 5.875000 0.687500 -0.500000 +v 7.875000 -3.687500 -0.500000 +v 7.875000 -3.687500 0.500000 +v 6.875000 -0.937500 0.500000 +v 6.875000 -0.937500 -0.500000 +v 4.750000 -3.687500 -0.500000 +v 4.750000 -3.687500 0.500000 +v 4.750000 -2.937500 -0.500000 +v 4.750000 -2.937500 0.500000 +v 4.500000 -1.937500 -0.500000 +v 4.500000 -1.937500 0.500000 +v 3.875000 -1.062500 -0.500000 +v 3.875000 -1.062500 0.500000 +v 3.125000 -0.937500 -0.500000 +v 3.125000 -0.937500 0.500000 +v 2.875000 -0.437500 -0.500000 +v 2.875000 -0.437500 0.500000 +v 4.750000 -4.312500 -0.500000 +v 7.875000 -4.312500 0.500000 +v 7.875000 -4.312500 -0.500000 +v 4.750000 -4.312500 0.500000 +v 5.500000 1.312500 0.500000 +v 5.750000 0.687500 0.500000 +v 7.750000 -3.687500 0.500000 +v 6.750000 -0.937500 0.500000 +v 4.750000 1.062500 0.500000 +v 3.500000 -0.187500 0.500000 +v 4.875000 -3.687500 0.500000 +v 4.875000 -2.937500 0.500000 +v 4.625000 -1.937500 0.500000 +v 4.000000 -0.937500 0.500000 +v 3.250000 -0.812500 0.500000 +v 7.625000 -4.062500 1.000000 +v 5.000000 -4.062500 1.000000 +v 5.250000 0.687500 0.750000 +v 7.500000 -3.687500 1.000000 +v 6.500000 -0.937500 1.000000 +v 5.125000 -3.687500 1.000000 +v 5.125000 -2.937500 1.000000 +v 4.875000 -1.937500 1.000000 +v 4.250000 -0.812500 1.000000 +v 3.750000 -0.562500 0.750000 +v 5.500000 1.312500 -0.500000 +v 5.750000 0.687500 -0.500000 +v 7.750000 -3.687500 -0.500000 +v 6.750000 -0.937500 -0.500000 +v 4.750000 1.062500 -0.500000 +v 3.500000 -0.187500 -0.500000 +v 4.875000 -3.687500 -0.500000 +v 4.875000 -2.937500 -0.500000 +v 4.625000 -1.937500 -0.500000 +v 4.000000 -0.937500 -0.500000 +v 3.250000 -0.812500 -0.500000 +v 7.625000 -4.062500 -1.000000 +v 5.000000 -4.062500 -1.000000 +v 5.250000 0.625000 -0.750000 +v 7.500000 -3.687500 -1.000000 +v 6.500000 -0.937500 -1.000000 +v 5.125000 -3.687500 -1.000000 +v 5.125000 -2.937500 -1.000000 +v 4.875000 -1.937500 -1.000000 +v 4.250000 -0.687500 -1.000000 +v 3.750000 -0.562500 -0.750000 +v 3.625000 2.437500 0.250000 +v 3.187500 2.812500 0.250000 +v 3.625000 2.437500 -0.250000 +v 4.875000 1.687500 0.250000 +v 3.500000 2.312500 -0.250000 +v 4.875000 1.687500 -0.250000 +v 3.312500 2.812500 -0.250000 +v 3.500000 2.312500 0.250000 +v 4.875000 1.562500 -0.250000 +v 3.187500 2.812500 -0.250000 +v 3.312500 2.812500 0.250000 +v 4.875000 1.562500 0.250000 +v 2.853553 2.169845 -0.729640 +v 2.500000 2.778405 -0.687500 +v 2.853553 2.477192 -0.632583 +v 2.853553 0.910311 0.500000 +v 2.500000 0.562500 0.500000 +v 2.500000 2.937500 -0.500000 +v 2.853553 1.022808 0.632583 +v 2.500000 0.721595 0.687500 +v 2.853553 2.589689 -0.500000 +v 2.853553 1.330155 0.729640 +v 2.500000 1.156250 0.824759 +v 3.000000 1.750000 -0.500000 +v 2.853553 1.750000 0.765165 +v 2.500000 1.750000 0.875000 +v 2.500000 0.562500 -0.500000 +v 2.853553 2.169845 0.729640 +v 2.500000 2.343750 0.824759 +v 2.853553 0.910311 -0.500000 +v 3.000000 1.750000 0.500000 +v 2.853553 2.477192 0.632583 +v 2.500000 2.778405 0.687500 +v 2.500000 0.721595 -0.687500 +v 2.853553 2.589689 0.500000 +v 2.500000 2.937500 0.500000 +v 2.853553 1.022808 -0.632583 +v 2.500000 1.156250 -0.824759 +v 2.853553 1.330155 -0.729640 +v 2.500000 1.750000 -0.875000 +v 2.500000 2.343750 -0.824759 +v 2.853553 1.750000 -0.765165 +v -8.749000 3.125000 -0.250000 +v -1.000000 3.125000 -0.250000 +v -8.749000 3.125000 0.250000 +v -1.000000 3.125000 0.250000 +v -8.749000 2.875000 -0.250000 +v -1.000000 2.875000 -0.250000 +v -8.749000 2.875000 0.250000 +v -1.000000 2.875000 0.250000 +v -8.500000 3.125000 -0.187500 +v -8.500000 3.125000 0.187500 +v -6.250000 3.125000 -0.187500 +v -6.250000 3.125000 0.187500 +v -8.500000 3.437500 0.187500 +v -8.500000 3.437500 -0.187500 +v -7.125000 3.437500 0.187500 +v -7.125000 3.437500 -0.187500 +v -8.437500 3.437500 -0.125000 +v -8.437500 3.437500 0.125000 +v -7.312500 3.437500 -0.125000 +v -7.312500 3.437500 0.125000 +v -8.312500 3.812500 0.062500 +v -8.312500 3.812500 -0.062500 +v -8.187500 3.812500 0.062500 +v -8.187500 3.812500 -0.062500 +v 0.500000 -0.187500 0.375000 +v 0.875000 -0.187500 0.375000 +v 0.500000 -0.187500 -0.375000 +v 0.875000 -0.187500 -0.375000 +v 0.750000 -0.937500 0.375000 +v 0.750000 -0.937500 -0.375000 +v 1.500000 -1.562500 0.375000 +v 1.500000 -1.562500 -0.375000 +v 2.500000 -1.562500 0.375000 +v 2.500000 -1.562500 -0.375000 +v 2.884670 -1.312500 0.375000 +v 2.884670 -1.312500 -0.375000 +v 3.125000 -0.925000 0.375000 +v 3.125000 -0.925000 -0.375000 +v 1.000000 -0.937500 0.375000 +v 1.000000 -0.937500 -0.375000 +v 1.500000 -1.312500 0.375000 +v 1.500000 -1.312500 -0.375000 +v 2.500000 -1.312500 0.375000 +v 2.500000 -1.312500 -0.375000 +v 2.750000 -1.187500 0.375000 +v 2.750000 -1.187500 -0.375000 +v 2.875000 -0.437500 0.375000 +v 2.875000 -0.437500 -0.375000 +v 1.875000 -0.187500 0.250000 +v 1.875000 -0.187500 -0.250000 +v 2.062500 -0.562500 0.250000 +v 2.062500 -0.562500 -0.250000 +v 2.062500 -0.937500 0.250000 +v 2.062500 -0.937500 -0.250000 +v 1.812500 -1.187500 0.250000 +v 1.812500 -1.187500 -0.250000 +v 2.000000 -1.187500 0.250000 +v 2.000000 -1.187500 -0.250000 +v 2.250000 -0.937500 0.250000 +v 2.250000 -0.937500 -0.250000 +v 2.250000 -0.437500 0.250000 +v 2.250000 -0.437500 -0.250000 +v 2.500000 -0.187500 0.250000 +v 2.500000 -0.187500 -0.250000 +v 0.000000 2.812500 0.500000 +v -0.999000 2.812500 0.500000 +v 0.000000 2.812500 -0.500000 +v -0.999000 2.812500 -0.500000 +v 0.000000 2.937500 0.000000 +v -0.999000 2.937500 0.000000 +v 0.000000 2.812500 0.250000 +v 0.000000 2.812500 -0.250000 +v -0.999000 2.812500 0.250000 +v -0.999000 2.812500 -0.250000 +v 5.187500 -3.312500 1.010000 +v 6.687500 -3.312500 1.010000 +v 5.187500 -1.812500 1.010000 +v 6.687500 -1.812500 1.010000 +vt 0.255396 0.168421 +vt 0.251799 0.147368 +vt 0.255396 0.147368 +vt 0.255396 0.252632 +vt 0.251799 0.231579 +vt 0.255396 0.231579 +vt 0.251799 0.210526 +vt 0.255396 0.210526 +vt 0.251799 0.126316 +vt 0.255396 0.126316 +vt 0.251799 0.105263 +vt 0.255396 0.105263 +vt 0.251799 0.084211 +vt 0.255396 0.084211 +vt 0.251799 0.063158 +vt 0.255396 0.063158 +vt 0.255396 0.042105 +vt 0.251799 0.042105 +vt 0.255396 0.021053 +vt 0.251799 0.021053 +vt 0.251799 0.000000 +vt 0.255396 -0.000000 +vt 0.255396 0.189474 +vt 0.251799 0.168421 +vt 0.251799 0.189474 +vt 0.478417 0.031579 +vt 0.482014 0.063158 +vt 0.478417 0.052632 +vt 0.478417 -0.000000 +vt 0.482014 0.031579 +vt 0.478417 0.021053 +vt 0.478417 0.273684 +vt 0.482014 0.252632 +vt 0.482014 0.284211 +vt 0.478417 0.305263 +vt 0.482014 0.315789 +vt 0.478417 0.347368 +vt 0.482014 0.378947 +vt 0.478417 0.368421 +vt 0.478417 0.221053 +vt 0.478417 0.242105 +vt 0.478417 0.315789 +vt 0.482014 0.347368 +vt 0.478417 0.336842 +vt 0.478417 0.210526 +vt 0.482014 0.189474 +vt 0.482014 0.221053 +vt 0.478417 0.178947 +vt 0.482014 0.157895 +vt 0.478417 0.126316 +vt 0.478417 0.147368 +vt 0.478417 0.115789 +vt 0.482014 0.094737 +vt 0.482014 0.126316 +vt 0.478417 0.063158 +vt 0.478417 0.084211 +vt 0.517986 0.178947 +vt 0.510791 0.157895 +vt 0.517986 0.157895 +vt 0.517986 0.210526 +vt 0.510791 0.189474 +vt 0.517986 0.189474 +vt 0.517986 0.221053 +vt 0.510791 0.252632 +vt 0.510791 0.221053 +vt 0.517986 0.273684 +vt 0.517986 0.252632 +vt 0.517986 0.305263 +vt 0.510791 0.284211 +vt 0.517986 0.284211 +vt 0.517986 0.336842 +vt 0.510791 0.315789 +vt 0.517986 0.315789 +vt 0.517986 0.368421 +vt 0.510791 0.347368 +vt 0.517986 0.347368 +vt 0.517986 0.000000 +vt 0.510791 0.031579 +vt 0.510791 -0.000000 +vt 0.517986 0.031579 +vt 0.510791 0.063158 +vt 0.517986 0.084211 +vt 0.517986 0.063158 +vt 0.517986 0.094737 +vt 0.510791 0.126316 +vt 0.510791 0.094737 +vt 0.517986 0.126316 +vt 0.687050 0.442105 +vt 0.615108 0.526316 +vt 0.615108 0.442105 +vt 0.586331 0.442105 +vt 0.615108 0.378947 +vt 0.812950 0.452632 +vt 0.784173 0.652632 +vt 0.784173 0.452632 +vt 0.586331 0.684211 +vt 0.633094 0.768421 +vt 0.586331 0.768421 +vt 0.633094 0.684211 +vt 0.654676 0.768421 +vt 0.654676 0.684211 +vt 0.694245 0.768421 +vt 0.694245 0.684211 +vt 0.701439 0.768421 +vt 0.701439 0.684211 +vt 0.708633 0.768421 +vt 0.687050 0.642105 +vt 0.615108 0.642105 +vt 0.615108 0.600000 +vt 0.507194 0.578947 +vt 0.507194 0.778947 +vt 0.496648 0.730873 +vt 0.025180 0.326316 +vt 0.104317 0.368421 +vt 0.025180 0.368421 +vt 0.687050 0.378947 +vt 0.615108 0.442105 +vt 0.687050 0.442105 +vt 0.492806 0.578947 +vt 0.471223 0.536842 +vt 0.492806 0.536842 +vt 0.464029 0.652632 +vt 0.449640 0.684211 +vt 0.449640 0.652632 +vt 0.464029 0.578947 +vt 0.449640 0.578947 +vt 0.449640 0.778947 +vt 0.420863 0.778947 +vt 0.458633 0.742105 +vt 0.460214 0.753268 +vt 0.471223 0.652632 +vt 0.471223 0.578947 +vt 0.000000 0.326316 +vt 0.104317 0.252632 +vt 0.104317 0.326316 +vt 0.046763 0.421053 +vt 0.010791 0.442105 +vt 0.046763 0.400000 +vt 0.104317 0.400000 +vt 0.104317 0.442105 +vt 0.118705 0.410526 +vt 0.176259 0.378947 +vt 0.176259 0.410526 +vt 0.107914 0.357895 +vt 0.118705 0.378947 +vt 0.107914 0.378947 +vt 0.176259 0.326316 +vt 0.118705 0.357895 +vt 0.118705 0.326316 +vt 0.176259 0.357895 +vt 0.715827 0.778947 +vt 0.719424 0.821053 +vt 0.715827 0.821053 +vt 0.730216 0.684211 +vt 0.766187 0.705263 +vt 0.730216 0.705263 +vt 0.794964 0.684211 +vt 0.794964 0.768421 +vt 0.841727 0.084211 +vt 0.751799 0.000000 +vt 0.841727 0.000000 +vt 0.615108 0.642105 +vt 0.586331 0.631579 +vt 0.586331 0.663158 +vt 0.751799 0.147368 +vt 0.751799 0.084211 +vt 0.812950 0.315789 +vt 0.751799 0.147368 +vt 0.744604 0.231579 +vt 0.726619 0.305263 +vt 0.784173 0.452632 +vt 0.755396 0.536842 +vt 0.726619 0.305263 +vt 0.697842 0.357895 +vt 0.755396 0.536842 +vt 0.701439 0.663158 +vt 0.694245 0.663158 +vt 0.730216 0.747368 +vt 0.766187 0.768421 +vt 0.730216 0.768421 +vt 0.719424 0.705263 +vt 0.708633 0.684211 +vt 0.719424 0.747368 +vt 0.769784 0.821053 +vt 0.766187 0.778947 +vt 0.769784 0.778947 +vt 0.730216 0.821053 +vt 0.723022 0.831579 +vt 0.762590 0.831579 +vt 0.730216 0.831579 +vt 0.723022 0.768421 +vt 0.730216 0.778947 +vt 0.719424 0.778947 +vt 0.762590 0.768421 +vt 0.766187 0.821053 +vt 0.161880 0.631283 +vt 0.161880 0.431875 +vt 0.172639 0.531579 +vt 0.152543 0.581431 +vt 0.151102 0.531579 +vt 0.161861 0.631283 +vt 0.255396 0.273684 +vt 0.478417 0.315789 +vt 0.255396 0.315789 +vt 0.255396 0.252632 +vt 0.478417 0.273684 +vt 0.478417 0.336842 +vt 0.248201 0.315789 +vt 0.183453 0.284211 +vt 0.223022 0.315789 +vt 0.183453 0.315789 +vt 0.183453 0.257895 +vt 0.223022 0.284211 +vt 0.248201 0.315789 +vt 0.248201 0.284211 +vt 0.183453 0.342105 +vt 0.248201 0.342105 +vt 0.174460 0.284211 +vt 0.174460 0.315789 +vt 0.143885 0.284211 +vt 0.147482 0.294737 +vt 0.143885 0.294737 +vt 0.140288 0.326316 +vt 0.172662 0.326316 +vt 0.133094 0.284211 +vt 0.133094 0.294737 +vt 0.140288 0.252632 +vt 0.147482 0.284211 +vt 0.172662 0.294737 +vt 0.172662 0.284211 +vt 0.262590 0.821053 +vt 0.269784 0.757895 +vt 0.273381 0.821053 +vt 0.262590 0.757895 +vt 0.269784 0.694737 +vt 0.262590 0.694737 +vt 0.269784 0.610526 +vt 0.262590 0.610526 +vt 0.269784 0.578947 +vt 0.262590 0.578947 +vt 0.273381 0.547368 +vt 0.233813 0.757895 +vt 0.241007 0.821053 +vt 0.230216 0.821053 +vt 0.233813 0.694737 +vt 0.241007 0.757895 +vt 0.241007 0.610526 +vt 0.233813 0.610526 +vt 0.233813 0.578947 +vt 0.230216 0.547368 +vt 0.241007 0.578947 +vt 0.302158 0.673684 +vt 0.312950 0.705263 +vt 0.305755 0.705263 +vt 0.312950 0.736842 +vt 0.305755 0.736842 +vt 0.312950 0.768421 +vt 0.305755 0.768421 +vt 0.305755 0.842105 +vt 0.312950 0.810526 +vt 0.312950 0.842105 +vt 0.305755 0.873684 +vt 0.312950 0.873684 +vt 0.302158 0.905263 +vt 0.320144 0.905263 +vt 0.575540 0.768421 +vt 0.546763 0.747368 +vt 0.575540 0.747368 +vt 0.586331 0.631579 +vt 0.586331 0.663158 +vt 0.687050 0.642105 +vt 0.633094 0.663158 +vt 0.633094 0.663158 +vt 0.543165 0.684211 +vt 0.546763 0.705263 +vt 0.543165 0.726316 +vt 0.579137 0.726316 +vt 0.543165 0.768421 +vt 0.546763 0.768421 +vt 0.575540 0.705263 +vt 0.546763 0.684211 +vt 0.575540 0.684211 +vt 0.575540 0.726316 +vt 0.546763 0.726316 +vt 0.187050 0.642105 +vt 0.129496 0.810526 +vt 0.129496 0.642105 +vt 0.115108 0.284211 +vt 0.104317 0.252632 +vt 0.118705 0.252632 +vt 0.118705 0.326316 +vt 0.115108 0.305263 +vt 0.104317 0.326316 +vt 0.104317 0.305263 +vt 0.251799 0.252632 +vt 0.482014 -0.000000 +vt 0.478417 0.252632 +vt 0.478417 0.284211 +vt 0.478417 0.189474 +vt 0.478417 0.157895 +vt 0.478417 0.094737 +vt 0.517986 0.242105 +vt 0.510791 0.378947 +vt 0.517986 0.021053 +vt 0.517986 0.052632 +vt 0.517986 0.115789 +vt 0.517986 0.147368 +vt 0.687050 0.526316 +vt 0.586331 0.378947 +vt 0.812950 0.652632 +vt 0.615108 0.557895 +vt 0.687050 0.557895 +vt 0.492806 0.726316 +vt 0.492806 0.757895 +vt 0.496648 0.753357 +vt 0.498202 0.742118 +vt 0.687050 0.378947 +vt 0.615108 0.378947 +vt 0.464029 0.684211 +vt 0.420863 0.578947 +vt 0.442446 0.652632 +vt 0.442446 0.578947 +vt 0.464029 0.757895 +vt 0.460214 0.730942 +vt 0.464029 0.726316 +vt 0.000000 0.368421 +vt 0.010791 0.252632 +vt 0.104317 0.421053 +vt 0.766187 0.684211 +vt 0.766187 0.747368 +vt 0.615108 0.631579 +vt 0.812950 0.315789 +vt 0.744604 0.231579 +vt 0.841727 0.084211 +vt 0.751799 0.084211 +vt 0.784173 0.452632 +vt 0.784173 0.505263 +vt 0.697842 0.357895 +vt 0.705036 0.315789 +vt 0.784173 0.505263 +vt 0.705036 0.315789 +vt 0.719424 0.600000 +vt 0.719424 0.600000 +vt 0.694245 0.663158 +vt 0.701439 0.663158 +vt 0.730216 0.768421 +vt 0.167259 0.445233 +vt 0.171198 0.481727 +vt 0.171198 0.581431 +vt 0.167259 0.617925 +vt 0.152543 0.481727 +vt 0.161861 0.431875 +vt 0.156482 0.445233 +vt 0.156482 0.617925 +vt 0.478417 0.252632 +vt 0.255396 0.336842 +vt 0.248201 0.273684 +vt 0.248201 0.257895 +vt 0.172662 0.252632 +vt 0.262590 0.515789 +vt 0.241007 0.694737 +vt 0.241007 0.515789 +vt 0.320144 0.673684 +vt 0.305755 0.810526 +vt 0.615108 0.631579 +vt 0.654676 0.684211 +vt 0.694245 0.684211 +vt 0.187050 0.810526 +vt 0.104317 0.284211 +vt 0.478417 0.189474 +vt 0.478417 0.210526 +vt 0.478417 0.231579 +vt 0.478417 0.042105 +vt 0.478417 0.063158 +vt 0.478417 0.084211 +vt 0.478417 0.105263 +vt 0.478417 0.126316 +vt 0.478417 0.147368 +vt 0.478417 0.168421 +vt 0.000000 0.042105 +vt -0.000000 0.231579 +vt -0.000000 0.126316 +vt 0.000000 0.063158 +vt 0.000000 0.000000 +vt 0.000000 0.147368 +vt -0.000000 0.189474 +vt -0.000000 0.084211 +vt 0.000000 0.021053 +vt 0.000000 0.168421 +vt 0.000000 0.210526 +vt 0.000000 0.105263 +vt 0.615108 0.168421 +vt 0.492806 0.750000 +vt 0.464029 0.742105 +vt 0.492806 0.742105 +vt 0.464029 0.734210 +vt 0.492806 0.734210 +vt 0.464029 0.750000 +vt 0.812950 0.768421 +vt 0.859712 0.684211 +vt 0.938849 0.768421 +vt 0.859712 0.768421 +vt 0.812950 0.684211 +vt 0.730216 -0.000000 +vt 0.730216 0.084211 +vt 0.701439 0.000000 +vt 0.701439 0.084211 +vt 0.676259 0.000000 +vt 0.676259 0.084211 +vt 0.654676 0.000000 +vt 0.615108 0.094737 +vt 0.586331 0.136842 +vt 0.586331 0.094737 +vt 0.586331 0.168421 +vt 0.870504 0.105263 +vt 0.946043 0.084211 +vt 0.859712 0.084211 +vt 0.946043 0.084211 +vt 0.870504 0.105263 +vt 0.859712 0.084211 +vt 0.859712 0.200000 +vt 0.863309 0.284211 +vt 0.852518 0.284211 +vt 0.845324 0.378947 +vt 0.834532 0.368421 +vt 0.881295 0.557895 +vt 0.859712 0.536842 +vt 0.874101 0.505263 +vt 0.917266 0.368421 +vt 0.935252 0.136842 +vt 0.946043 0.136842 +vt 0.834532 0.368421 +vt 0.812950 0.378947 +vt 0.830935 0.400000 +vt 0.859712 0.136842 +vt 0.870504 0.200000 +vt 0.888489 0.505263 +vt 0.906475 0.357895 +vt 0.935252 0.105263 +vt 0.812950 0.378947 +vt 0.830935 0.400000 +vt 0.823741 0.431579 +vt 0.863309 0.284211 +vt 0.859712 0.200000 +vt 0.852518 0.284211 +vt 0.845324 0.378947 +vt 0.881295 0.557895 +vt 0.874101 0.505263 +vt 0.859712 0.536842 +vt 0.935252 0.136842 +vt 0.917266 0.368421 +vt 0.946043 0.136842 +vt 0.870504 0.200000 +vt 0.859712 0.136842 +vt 0.906475 0.357895 +vt 0.888489 0.505263 +vt 0.870504 0.136842 +vt 0.935252 0.105263 +vt 0.823741 0.431579 +vt 0.964029 0.000000 +vt 0.964029 0.084211 +vt 0.946043 0.000000 +vt 0.859712 0.000000 +vt 0.841727 0.000000 +vt 0.841727 0.084211 +vt 0.183453 0.431579 +vt 0.194245 0.442105 +vt 0.183453 0.452632 +vt 0.172662 0.452632 +vt 0.172662 0.431579 +vt 0.172662 0.494737 +vt 0.194245 0.473684 +vt 0.183453 0.494737 +vt 0.172662 0.536842 +vt 0.194245 0.515789 +vt 0.183453 0.536842 +vt 0.140288 0.578947 +vt 0.151079 0.536842 +vt 0.151079 0.578947 +vt 0.183453 0.578947 +vt 0.172662 0.578947 +vt 0.129496 0.557895 +vt 0.140288 0.536842 +vt 0.194245 0.557895 +vt 0.140288 0.621053 +vt 0.151079 0.621053 +vt 0.183453 0.621053 +vt 0.172662 0.621053 +vt 0.129496 0.600000 +vt 0.194245 0.600000 +vt 0.140288 0.642105 +vt 0.151079 0.642105 +vt 0.183453 0.642105 +vt 0.172662 0.642105 +vt 0.129496 0.631579 +vt 0.194245 0.631579 +vt 0.151079 0.452632 +vt 0.140288 0.431579 +vt 0.151079 0.431579 +vt 0.140288 0.452632 +vt 0.129496 0.442105 +vt 0.151079 0.494737 +vt 0.140288 0.494737 +vt 0.129496 0.473684 +vt 0.129496 0.515789 +vt 0.208633 0.821053 +vt 0.230216 0.757895 +vt 0.208633 0.757895 +vt 0.230216 0.694737 +vt 0.208633 0.694737 +vt 0.230216 0.610526 +vt 0.208633 0.610526 +vt 0.230216 0.578947 +vt 0.208633 0.578947 +vt 0.230216 0.515789 +vt 0.284173 0.768421 +vt 0.273381 0.810526 +vt 0.273381 0.768421 +vt 0.294964 0.768421 +vt 0.284173 0.810526 +vt 0.294964 0.810526 +vt 0.323741 0.768421 +vt 0.334532 0.768421 +vt 0.323741 0.810526 +vt 0.345324 0.768421 +vt 0.334532 0.810526 +vt 0.870504 0.136842 +vt 0.478417 0.252632 +vt 0.000000 0.252632 +vt 0.938849 0.684211 +vt 0.654676 0.084211 +vt 0.615108 0.136842 +vt 0.208633 0.515789 +vt 0.345324 0.810526 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.3162 0.9487 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.8321 -0.5547 0.0000 +vn -0.8682 -0.4961 0.0000 +vn 0.5145 0.8575 0.0000 +vn 0.3511 0.9363 0.0000 +vn 0.7682 0.6402 0.0000 +vn 0.8480 0.5300 0.0000 +vn 0.4789 0.8779 0.0000 +vn 0.3363 0.9417 0.0000 +vn 0.0000 0.1644 -0.9864 +vn -0.9487 0.3162 0.0000 +vn 0.0000 0.1644 0.9864 +vn 0.3939 0.9191 0.0000 +vn 0.0000 -0.8944 -0.4472 +vn 0.0000 -0.8944 0.4472 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.5000 -0.8660 +vn -0.2898 -0.9571 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 0.9239 0.3827 +vn 0.9622 0.2723 0.0000 +vn 0.9004 0.4352 0.0000 +vn 0.9398 0.3417 0.0000 +vn -0.9925 -0.1222 0.0000 +vn -0.9079 -0.4192 0.0000 +vn -0.5294 -0.8484 0.0000 +vn -0.1644 -0.9864 0.0000 +vn -0.8944 -0.4472 0.0000 +vn -0.7497 -0.6618 0.0000 +vn -0.5007 -0.3427 -0.7949 +vn 0.7406 -0.6169 -0.2663 +vn -0.7406 -0.6169 -0.2663 +vn 0.7406 -0.6169 0.2663 +vn -0.5007 -0.3427 0.7949 +vn -0.7406 -0.6169 0.2663 +vn -0.8887 -0.1134 0.4443 +vn -0.4707 -0.1788 0.8640 +vn -0.8315 -0.3492 0.4322 +vn -0.4194 -0.1220 0.8996 +vn -0.5483 -0.5987 0.5839 +vn 0.1422 0.3181 0.9373 +vn -0.2154 0.3448 0.9136 +vn 0.0554 0.3108 0.9489 +vn 0.8250 0.3864 0.4125 +vn 0.5084 0.1779 0.8426 +vn 0.9294 0.2459 0.2753 +vn -0.4982 -0.5710 -0.6525 +vn -0.3586 -0.1955 -0.9128 +vn -0.3854 -0.0823 -0.9191 +vn -0.9463 0.1453 0.2889 +vn -0.4925 -0.0586 0.8683 +vn 0.4609 0.3511 0.8150 +vn 0.4887 0.2771 0.8273 +vn 0.5007 -0.3427 0.7949 +vn -0.3586 -0.1955 0.9128 +vn -0.3986 -0.0784 0.9137 +vn -0.4147 0.2969 0.8601 +vn -0.4784 -0.1713 -0.8613 +vn -0.8887 -0.1134 -0.4443 +vn -0.8319 -0.3300 -0.4461 +vn -0.3833 -0.0513 -0.9222 +vn 0.1298 0.2968 -0.9461 +vn 0.0450 0.3020 -0.9522 +vn -0.2014 0.3023 -0.9317 +vn 0.5084 0.1779 -0.8426 +vn 0.8250 0.3864 -0.4125 +vn 0.9294 0.2459 -0.2753 +vn -0.4925 -0.0586 -0.8683 +vn -0.9463 0.1453 -0.2889 +vn 0.4890 0.2775 -0.8270 +vn 0.4349 0.3349 -0.8359 +vn -0.4808 0.0746 -0.8736 +vn 0.5007 -0.3427 -0.7949 +vn -0.3802 0.3015 -0.8744 +vn 0.7513 -0.5032 0.4270 +vn 0.9061 0.0000 0.4231 +vn 0.7541 -0.3297 0.5681 +vn 0.5431 -0.5168 0.6618 +vn 0.6001 -0.6100 0.5176 +vn 0.3474 -0.2058 0.9149 +vn 0.6619 -0.1418 0.7361 +vn 0.2967 -0.0000 0.9550 +vn 0.6220 -0.0000 0.7830 +vn 0.6619 0.1418 -0.7361 +vn 0.2967 -0.0000 -0.9550 +vn 0.3474 0.2058 -0.9149 +vn 0.6619 0.1418 0.7361 +vn 0.3474 0.2058 0.9149 +vn 0.9061 0.0000 -0.4231 +vn 0.6220 -0.0000 -0.7830 +vn 0.7541 0.3297 -0.5681 +vn 0.5431 0.5168 -0.6618 +vn 0.7541 0.3297 0.5681 +vn 0.5431 0.5168 0.6618 +vn 0.7513 0.5032 -0.4270 +vn 0.6001 0.6100 -0.5176 +vn 0.7513 0.5032 0.4270 +vn 0.6001 0.6100 0.5176 +vn 0.5431 -0.5168 -0.6618 +vn 0.7513 -0.5032 -0.4270 +vn 0.6001 -0.6100 -0.5176 +vn 0.7541 -0.3297 -0.5681 +vn 0.3474 -0.2058 -0.9149 +vn 0.6619 -0.1418 -0.7361 +vn -0.9487 -0.3162 0.0000 +vn -0.8260 -0.5637 0.0000 +vn -0.3404 -0.9403 0.0000 +vn 0.2842 -0.9588 0.0000 +vn 0.7146 -0.6996 0.0000 +vn 0.7145 -0.6996 0.0000 +vn 0.8498 -0.5271 0.0000 +vn 0.9864 0.1644 0.0000 +vn 0.8545 0.5195 0.0000 +vn 0.3162 0.9487 0.0000 +vn -0.2298 0.9732 0.0000 +vn -0.8044 0.5941 0.0000 +vn -0.9864 0.1644 0.0000 +vn -0.9732 -0.2298 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.4808 0.0746 0.8736 +s off +f 1417/2492/174 1429/2493/174 1415/2494/174 +f 1401/2495/174 1421/2496/174 1399/2497/174 +f 1399/2497/174 1420/2498/174 1397/2499/174 +f 1415/2494/174 1428/2500/174 1413/2501/174 +f 1413/2501/174 1427/2502/174 1411/2503/174 +f 1411/2503/174 1426/2504/174 1409/2505/174 +f 1409/2505/174 1425/2506/174 1407/2507/174 +f 1405/2508/174 1425/2506/174 1424/2509/174 +f 1403/2510/174 1424/2509/174 1423/2511/174 +f 1403/2510/174 1422/2512/174 1401/2513/174 +f 1395/2514/174 1430/2515/174 1417/2492/174 +f 1397/2499/174 1419/2516/174 1395/2514/174 +f 1404/2517/174 1448/2518/174 1406/2519/174 +f 1402/2520/174 1447/2521/174 1404/2522/174 +f 1396/2523/174 1454/2524/174 1443/2525/174 +f 1398/2526/174 1443/2525/174 1444/2527/174 +f 1400/2528/174 1446/2529/174 1402/2530/174 +f 1416/2531/174 1454/2524/174 1418/2532/174 +f 1398/2533/174 1445/2534/174 1400/2535/174 +f 1416/2536/174 1452/2537/174 1453/2538/174 +f 1414/2539/174 1451/2540/174 1452/2537/174 +f 1410/2541/174 1451/2540/174 1412/2542/174 +f 1410/2543/174 1449/2544/174 1450/2545/174 +f 1406/2546/174 1449/2544/174 1408/2547/174 +f 1440/2548/175 1463/2549/175 1439/2550/175 +f 1441/2551/175 1464/2552/175 1440/2553/175 +f 1441/2554/175 1466/2555/175 1465/2556/175 +f 1431/2557/175 1466/2555/175 1442/2558/175 +f 1432/2559/175 1455/2560/175 1431/2561/175 +f 1433/2562/175 1456/2563/175 1432/2564/175 +f 1434/2565/175 1457/2566/175 1433/2567/175 +f 1434/2568/175 1459/2569/175 1458/2570/175 +f 1435/2571/175 1460/2572/175 1459/2569/175 +f 1437/2573/175 1460/2572/175 1436/2574/175 +f 1437/2575/175 1462/2576/175 1461/2577/175 +f 1438/2578/175 1463/2549/175 1462/2576/175 +f 1468/2579/176 1469/2580/176 1467/2581/176 +f 1469/2582/174 1474/2583/174 1467/2581/174 +f 1468/2584/174 1476/2585/174 1470/2586/174 +f 1477/2587/176 1480/2588/176 1478/2589/176 +f 1479/2590/177 1482/2591/177 1480/2588/177 +f 1481/2592/176 1484/2593/176 1482/2591/176 +f 1483/2594/175 1486/2595/175 1484/2593/175 +f 1485/2596/176 1488/2597/176 1486/2595/176 +f 1475/2598/178 1490/2599/178 1707/2600/178 +f 1491/2601/175 1494/2602/175 1503/2603/175 +f 1497/2604/178 1496/2605/178 1495/2606/178 +f 1474/2583/179 1468/2579/179 1467/2581/179 +f 1472/2607/180 1469/2608/180 1470/2609/180 +f 1492/2610/178 1493/2611/178 1491/2612/178 +f 1512/2613/181 1513/2614/181 1511/2615/181 +f 1509/2616/174 1511/2615/174 1493/2617/174 +f 1513/2614/180 1510/2618/180 1494/2619/180 +f 1504/2620/174 1505/2621/174 1510/2618/174 +f 1512/2622/179 1509/2623/179 1492/2610/179 +f 1495/2606/182 1515/2624/182 1497/2604/182 +f 1497/2604/180 1518/2625/180 1498/2626/180 +f 1495/2606/179 1521/2627/179 1516/2628/179 +f 1520/2629/179 1496/2605/179 1519/2630/179 +f 1521/2627/179 1517/2631/179 1516/2628/179 +f 1521/2632/178 1526/2633/178 1522/2634/178 +f 1520/2635/175 1525/2636/175 1521/2637/175 +f 1519/2638/176 1524/2639/176 1520/2640/176 +f 1526/2633/179 1524/2639/179 1523/2641/179 +f 1607/2642/178 1606/2643/178 1603/2644/178 +f 1527/2645/183 1600/2646/183 1597/2647/183 +f 1600/2646/184 1531/2648/184 1532/2649/184 +f 1536/2650/178 1539/2651/178 1535/2652/178 +f 1489/2653/180 1706/2654/180 1478/2655/180 +f 1542/2656/179 1540/2657/179 1536/2650/179 +f 1538/2658/180 1541/2659/180 1543/2660/180 +f 1546/2661/179 1533/2662/179 1529/2663/179 +f 1545/2664/180 1549/2665/180 1530/2666/180 +f 1487/2667/179 1485/2668/179 1475/2598/179 +f 1530/2666/180 1472/2607/180 1470/2609/180 +f 1599/2669/183 1530/2670/183 1528/2671/183 +f 1607/2672/185 1527/2645/185 1597/2647/185 +f 1487/2673/185 1603/2674/185 1488/2597/185 +f 1602/2675/174 1608/2676/174 1600/2677/174 +f 1603/2674/185 1528/2671/185 1488/2597/185 +f 1601/2678/179 1603/2679/179 1606/2643/179 +f 1601/2678/179 1602/2680/179 1599/2681/179 +f 1607/2682/180 1604/2683/180 1598/2684/180 +f 1604/2683/180 1600/2685/180 1608/2676/180 +f 1601/2678/186 1598/2684/186 1604/2683/186 +f 1604/2683/187 1605/2686/187 1601/2678/187 +f 1632/2687/174 1613/2688/174 1622/2689/174 +f 1637/2690/174 1636/2691/174 1614/2692/174 +f 1641/2693/176 1640/2694/176 1639/2695/176 +f 1645/2696/179 1642/2697/179 1641/2693/179 +f 1644/2698/180 1639/2695/180 1640/2694/180 +f 1643/2699/174 1641/2693/174 1639/2695/174 +f 1651/2700/176 1654/2701/176 1652/2702/176 +f 1648/2703/179 1653/2704/179 1651/2700/179 +f 1649/2705/188 1653/2704/188 1650/2706/188 +f 1647/2707/180 1654/2701/180 1649/2708/180 +f 1648/2709/174 1652/2702/174 1647/2710/174 +f 1659/2711/176 1662/2712/176 1660/2713/176 +f 1655/2714/189 1662/2712/189 1657/2715/189 +f 1656/2716/190 1660/2713/190 1655/2717/190 +f 1656/2718/191 1661/2719/191 1659/2711/191 +f 1657/2720/192 1661/2719/192 1658/2721/192 +f 1666/2722/180 1668/2723/180 1665/2724/180 +f 1678/2725/180 1670/2726/180 1668/2723/180 +f 1680/2727/180 1672/2728/180 1670/2726/180 +f 1682/2729/180 1674/2730/180 1672/2728/180 +f 1684/2731/180 1676/2732/180 1674/2730/180 +f 1667/2733/179 1664/2734/179 1663/2735/179 +f 1669/2736/179 1677/2737/179 1667/2733/179 +f 1681/2738/179 1669/2736/179 1671/2739/179 +f 1673/2740/179 1681/2738/179 1671/2739/179 +f 1675/2741/179 1683/2742/179 1673/2740/179 +f 1688/2743/180 1700/2744/180 1690/2745/180 +f 1690/2745/180 1698/2746/180 1692/2747/180 +f 1692/2747/180 1696/2748/180 1694/2749/180 +f 1691/2750/179 1695/2751/179 1697/2752/179 +f 1689/2753/179 1697/2752/179 1699/2754/179 +f 1687/2755/179 1699/2754/179 1701/2756/179 +f 1706/2757/178 1710/2758/178 1712/2759/178 +f 1704/2760/179 1490/2599/179 1477/2761/179 +f 1476/2762/180 1489/2653/180 1480/2763/180 +f 1481/2592/179 1479/2764/179 1475/2598/179 +f 1490/2765/175 1709/2766/175 1707/2767/175 +f 1478/2589/174 1712/2759/174 1708/2768/174 +f 1489/2769/175 1710/2758/175 1705/2770/175 +f 1711/2771/178 1703/2772/178 1704/2773/178 +f 1709/2766/193 1708/2774/193 1707/2775/193 +f 1708/2774/194 1710/2758/194 1707/2775/194 +f 1714/2776/179 1715/2777/179 1713/2778/179 +f 1523/2779/175 1496/2780/175 1498/2781/175 +f 1518/2782/175 1523/2779/175 1498/2781/175 +f 1526/2783/175 1517/2784/175 1522/2785/175 +f 1417/2492/174 1430/2515/174 1429/2493/174 +f 1401/2495/174 1422/2786/174 1421/2496/174 +f 1399/2497/174 1421/2496/174 1420/2498/174 +f 1415/2494/174 1429/2493/174 1428/2500/174 +f 1413/2501/174 1428/2500/174 1427/2502/174 +f 1411/2503/174 1427/2502/174 1426/2504/174 +f 1409/2505/174 1426/2504/174 1425/2506/174 +f 1405/2508/174 1407/2507/174 1425/2506/174 +f 1403/2510/174 1405/2508/174 1424/2509/174 +f 1403/2510/174 1423/2511/174 1422/2512/174 +f 1395/2514/174 1419/2516/174 1430/2515/174 +f 1397/2499/174 1420/2498/174 1419/2516/174 +f 1404/2517/174 1447/2521/174 1448/2518/174 +f 1402/2520/174 1446/2787/174 1447/2521/174 +f 1396/2523/174 1418/2788/174 1454/2524/174 +f 1398/2526/174 1396/2789/174 1443/2525/174 +f 1400/2528/174 1445/2534/174 1446/2529/174 +f 1416/2531/174 1453/2538/174 1454/2524/174 +f 1398/2533/174 1444/2527/174 1445/2534/174 +f 1416/2536/174 1414/2790/174 1452/2537/174 +f 1414/2539/174 1412/2791/174 1451/2540/174 +f 1410/2541/174 1450/2545/174 1451/2540/174 +f 1410/2543/174 1408/2792/174 1449/2544/174 +f 1406/2546/174 1448/2518/174 1449/2544/174 +f 1440/2548/175 1464/2552/175 1463/2549/175 +f 1441/2551/175 1465/2556/175 1464/2552/175 +f 1441/2554/175 1442/2793/175 1466/2555/175 +f 1431/2557/175 1455/2560/175 1466/2555/175 +f 1432/2559/175 1456/2563/175 1455/2560/175 +f 1433/2562/175 1457/2566/175 1456/2563/175 +f 1434/2565/175 1458/2794/175 1457/2566/175 +f 1434/2568/175 1435/2795/175 1459/2569/175 +f 1435/2571/175 1436/2796/175 1460/2572/175 +f 1437/2573/175 1461/2577/175 1460/2572/175 +f 1437/2575/175 1438/2797/175 1462/2576/175 +f 1438/2578/175 1439/2798/175 1463/2549/175 +f 1468/2579/176 1470/2799/176 1469/2580/176 +f 1469/2582/174 1473/2800/174 1474/2583/174 +f 1468/2584/174 1475/2801/174 1476/2585/174 +f 1477/2587/176 1479/2590/176 1480/2588/176 +f 1479/2590/177 1481/2592/177 1482/2591/177 +f 1481/2592/176 1483/2594/176 1484/2593/176 +f 1483/2594/175 1485/2596/175 1486/2595/175 +f 1485/2596/176 1487/2673/176 1488/2597/176 +f 1489/2802/178 1476/2803/178 1707/2600/178 +f 1476/2803/178 1475/2598/178 1707/2600/178 +f 1502/2804/175 1492/2610/175 1491/2601/175 +f 1494/2602/175 1501/2805/175 1500/2806/175 +f 1494/2602/175 1500/2806/175 1499/2807/175 +f 1503/2603/175 1502/2804/175 1491/2601/175 +f 1494/2602/175 1499/2807/175 1503/2603/175 +f 1497/2604/178 1498/2626/178 1496/2605/178 +f 1474/2583/179 1471/2808/179 1468/2579/179 +f 1472/2607/180 1473/2809/180 1469/2608/180 +f 1492/2610/178 1509/2623/178 1493/2611/178 +f 1512/2613/181 1514/2810/181 1513/2614/181 +f 1509/2616/174 1512/2613/174 1511/2615/174 +f 1494/2619/180 1491/2811/180 1511/2812/180 +f 1491/2811/180 1493/2813/180 1511/2812/180 +f 1511/2812/180 1513/2614/180 1494/2619/180 +f 1505/2621/174 1506/2814/174 1510/2618/174 +f 1510/2618/174 1513/2614/174 1504/2620/174 +f 1513/2614/174 1514/2810/174 1508/2815/174 +f 1504/2620/174 1513/2614/174 1508/2815/174 +f 1514/2810/174 1507/2816/174 1508/2815/174 +f 1492/2610/179 1502/2804/179 1512/2622/179 +f 1502/2804/179 1507/2816/179 1514/2810/179 +f 1512/2622/179 1502/2804/179 1514/2810/179 +f 1495/2606/182 1516/2817/182 1515/2624/182 +f 1497/2604/180 1515/2818/180 1518/2625/180 +f 1495/2606/179 1520/2629/179 1521/2627/179 +f 1520/2629/179 1495/2606/179 1496/2605/179 +f 1521/2627/179 1522/2819/179 1517/2631/179 +f 1521/2632/178 1525/2636/178 1526/2633/178 +f 1520/2635/175 1524/2639/175 1525/2636/175 +f 1519/2638/176 1523/2641/176 1524/2639/176 +f 1526/2633/179 1525/2636/179 1524/2639/179 +f 1607/2642/178 1598/2684/178 1606/2643/178 +f 1527/2645/183 1529/2820/183 1600/2646/183 +f 1532/2649/184 1530/2670/184 1602/2821/184 +f 1600/2646/184 1529/2820/184 1531/2648/184 +f 1532/2649/184 1602/2821/184 1600/2646/184 +f 1536/2650/178 1540/2657/178 1539/2651/178 +f 1489/2653/180 1705/2822/180 1706/2654/180 +f 1536/2650/179 1537/2823/179 1542/2656/179 +f 1537/2823/179 1533/2662/179 1544/2824/179 +f 1542/2656/179 1537/2823/179 1544/2824/179 +f 1533/2662/179 1546/2661/179 1544/2824/179 +f 1538/2658/180 1535/2825/180 1541/2659/180 +f 1535/2825/180 1539/2826/180 1541/2659/180 +f 1545/2664/180 1534/2827/180 1543/2660/180 +f 1534/2827/180 1538/2658/180 1543/2660/180 +f 1531/2828/179 1529/2663/179 1533/2662/179 +f 1529/2663/179 1471/2808/179 1550/2829/179 +f 1550/2829/179 1548/2830/179 1546/2661/179 +f 1529/2663/179 1550/2829/179 1546/2661/179 +f 1530/2666/180 1532/2831/180 1534/2827/180 +f 1534/2827/180 1545/2664/180 1530/2666/180 +f 1545/2664/180 1547/2832/180 1549/2665/180 +f 1549/2665/180 1472/2607/180 1530/2666/180 +f 1475/2598/179 1468/2579/179 1527/2833/179 +f 1468/2579/179 1471/2808/179 1529/2663/179 +f 1475/2598/179 1527/2833/179 1487/2667/179 +f 1529/2663/179 1527/2833/179 1468/2579/179 +f 1470/2609/180 1476/2762/180 1528/2834/180 +f 1476/2762/180 1486/2835/180 1488/2836/180 +f 1528/2834/180 1476/2762/180 1488/2836/180 +f 1528/2834/180 1530/2666/180 1470/2609/180 +f 1599/2669/183 1602/2821/183 1530/2670/183 +f 1607/2672/185 1487/2673/185 1527/2645/185 +f 1487/2673/185 1607/2672/185 1603/2674/185 +f 1602/2675/174 1605/2686/174 1608/2676/174 +f 1603/2674/185 1599/2669/185 1528/2671/185 +f 1601/2678/179 1599/2681/179 1603/2679/179 +f 1601/2678/179 1605/2686/179 1602/2680/179 +f 1607/2682/180 1597/2837/180 1604/2683/180 +f 1604/2683/180 1597/2837/180 1600/2685/180 +f 1601/2678/186 1606/2643/186 1598/2684/186 +f 1604/2683/187 1608/2676/187 1605/2686/187 +f 1613/2688/174 1616/2838/174 1619/2839/174 +f 1619/2839/174 1622/2689/174 1613/2688/174 +f 1622/2689/174 1625/2840/174 1632/2687/174 +f 1625/2840/174 1629/2841/174 1632/2687/174 +f 1636/2691/174 1634/2842/174 1623/2843/174 +f 1634/2842/174 1630/2844/174 1623/2843/174 +f 1623/2843/174 1614/2692/174 1636/2691/174 +f 1614/2692/174 1610/2845/174 1637/2690/174 +f 1641/2693/176 1642/2697/176 1640/2694/176 +f 1645/2696/179 1646/2846/179 1642/2697/179 +f 1644/2698/180 1643/2847/180 1639/2695/180 +f 1643/2699/174 1645/2848/174 1641/2693/174 +f 1651/2700/176 1653/2704/176 1654/2701/176 +f 1648/2703/179 1650/2849/179 1653/2704/179 +f 1649/2705/188 1654/2701/188 1653/2704/188 +f 1647/2707/180 1652/2702/180 1654/2701/180 +f 1648/2709/174 1651/2700/174 1652/2702/174 +f 1659/2711/176 1661/2719/176 1662/2712/176 +f 1655/2714/189 1660/2713/189 1662/2712/189 +f 1656/2716/190 1659/2711/190 1660/2713/190 +f 1656/2718/191 1658/2850/191 1661/2719/191 +f 1657/2720/192 1662/2712/192 1661/2719/192 +f 1666/2722/180 1678/2725/180 1668/2723/180 +f 1678/2725/180 1680/2727/180 1670/2726/180 +f 1680/2727/180 1682/2729/180 1672/2728/180 +f 1682/2729/180 1684/2731/180 1674/2730/180 +f 1684/2731/180 1686/2851/180 1676/2732/180 +f 1667/2733/179 1677/2737/179 1664/2734/179 +f 1669/2736/179 1679/2852/179 1677/2737/179 +f 1681/2738/179 1679/2852/179 1669/2736/179 +f 1673/2740/179 1683/2742/179 1681/2738/179 +f 1675/2741/179 1685/2853/179 1683/2742/179 +f 1688/2743/180 1702/2854/180 1700/2744/180 +f 1690/2745/180 1700/2744/180 1698/2746/180 +f 1692/2747/180 1698/2746/180 1696/2748/180 +f 1691/2750/179 1693/2855/179 1695/2751/179 +f 1689/2753/179 1691/2750/179 1697/2752/179 +f 1687/2755/179 1689/2753/179 1699/2754/179 +f 1706/2757/178 1705/2770/178 1710/2758/178 +f 1704/2760/179 1703/2856/179 1490/2599/179 +f 1489/2653/180 1478/2655/180 1480/2763/180 +f 1480/2763/180 1482/2857/180 1476/2762/180 +f 1482/2857/180 1484/2858/180 1476/2762/180 +f 1484/2858/180 1486/2835/180 1476/2762/180 +f 1477/2761/179 1490/2599/179 1479/2764/179 +f 1490/2599/179 1475/2598/179 1479/2764/179 +f 1475/2598/179 1485/2668/179 1483/2594/179 +f 1483/2594/179 1481/2592/179 1475/2598/179 +f 1490/2765/175 1703/2772/175 1709/2766/175 +f 1704/2773/174 1477/2587/174 1711/2771/174 +f 1477/2587/174 1478/2589/174 1708/2768/174 +f 1478/2589/174 1706/2757/174 1712/2759/174 +f 1708/2768/174 1711/2771/174 1477/2587/174 +f 1489/2769/175 1707/2767/175 1710/2758/175 +f 1711/2771/178 1709/2766/178 1703/2772/178 +f 1709/2766/193 1711/2771/193 1708/2774/193 +f 1708/2774/194 1712/2759/194 1710/2758/194 +f 1714/2776/179 1716/2859/179 1715/2777/179 +f 1523/2779/175 1519/2860/175 1496/2780/175 +f 1518/2782/175 1526/2783/175 1523/2779/175 +f 1526/2783/175 1518/2782/175 1517/2784/175 +s 1 +f 1396/2861/180 1397/2499/195 1395/2514/180 +f 1398/2862/195 1399/2497/196 1397/2499/195 +f 1400/2863/196 1401/2495/178 1399/2497/196 +f 1402/2520/178 1403/2510/197 1401/2513/178 +f 1404/2522/197 1405/2508/198 1403/2510/197 +f 1406/2864/198 1407/2507/179 1405/2508/198 +f 1408/2865/179 1409/2505/199 1407/2507/179 +f 1410/2866/199 1411/2503/200 1409/2505/199 +f 1412/2867/200 1413/2501/176 1411/2503/200 +f 1414/2868/176 1415/2494/201 1413/2501/176 +f 1416/2869/201 1417/2492/202 1415/2494/201 +f 1418/2870/202 1395/2514/180 1417/2492/202 +f 1425/2506/180 1436/2871/202 1424/2509/202 +f 1422/2786/176 1433/2872/200 1421/2496/200 +f 1429/2493/197 1440/2873/178 1428/2500/178 +f 1426/2504/195 1437/2874/180 1425/2506/180 +f 1423/2511/201 1434/2875/176 1422/2512/176 +f 1430/2515/198 1441/2876/197 1429/2493/197 +f 1420/2498/199 1431/2877/179 1419/2516/179 +f 1427/2502/196 1438/2878/195 1426/2504/195 +f 1424/2509/202 1435/2879/201 1423/2511/201 +f 1419/2516/179 1442/2880/198 1430/2515/198 +f 1421/2496/200 1432/2881/199 1420/2498/199 +f 1428/2500/178 1439/2882/196 1427/2502/196 +f 1451/2540/200 1464/2552/176 1452/2537/176 +f 1448/2518/198 1461/2577/179 1449/2544/179 +f 1445/2534/196 1458/2794/178 1446/2529/178 +f 1452/2537/176 1465/2556/201 1453/2538/201 +f 1449/2544/179 1462/2576/199 1450/2545/199 +f 1446/2787/178 1459/2569/197 1447/2521/197 +f 1453/2538/201 1466/2555/202 1454/2524/202 +f 1443/2525/180 1456/2563/195 1444/2527/195 +f 1450/2545/199 1463/2549/200 1451/2540/200 +f 1447/2521/197 1460/2572/198 1448/2518/198 +f 1443/2525/180 1466/2555/202 1455/2560/180 +f 1444/2527/195 1457/2566/196 1445/2534/196 +f 1473/2800/178 1471/2883/203 1474/2583/178 +f 1500/2884/204 1504/2885/179 1499/2886/179 +f 1499/2886/179 1508/2887/205 1503/2888/205 +f 1501/2805/206 1505/2889/204 1500/2884/204 +f 1503/2888/205 1507/2816/207 1502/2804/207 +f 1531/2648/175 1534/2890/208 1532/2649/175 +f 1537/2891/209 1535/2892/210 1538/2893/209 +f 1537/2891/209 1534/2890/208 1533/2894/208 +f 1540/2657/174 1541/2895/211 1539/2651/174 +f 1542/2896/211 1543/2897/212 1541/2895/211 +f 1544/2898/212 1545/2899/213 1543/2897/212 +f 1546/2900/213 1547/2901/214 1545/2899/213 +f 1548/2902/215 1549/2903/216 1547/2904/215 +f 1549/2903/216 1471/2883/203 1472/2905/203 +f 1588/2906/217 1553/2907/218 1551/2908/219 +f 1552/2909/220 1567/2910/221 1554/2911/222 +f 1562/2912/223 1573/2913/224 1563/2914/225 +f 1563/2914/225 1574/2915/226 1564/2916/227 +f 1555/2917/228 1559/2918/229 1568/2919/230 +f 1558/2920/231 1569/2921/232 1557/2922/233 +f 1585/2923/234 1586/2924/235 1596/2925/236 +f 1561/2926/237 1572/2927/238 1562/2912/223 +f 1558/2920/231 1556/2928/239 1570/2929/240 +f 1556/2928/239 1555/2917/228 1568/2919/230 +f 1567/2910/221 1561/2926/237 1554/2911/222 +f 1552/2909/220 1557/2922/233 1566/2930/241 +f 1565/2931/242 1575/2932/243 1560/2933/244 +f 1575/2932/243 1559/2918/229 1560/2933/244 +f 1569/2921/232 1567/2910/221 1566/2930/241 +f 1594/2934/245 1583/2935/246 1584/2936/247 +f 1574/2915/226 1570/2929/240 1568/2919/230 +f 1568/2919/230 1575/2932/243 1574/2915/226 +f 1595/2937/248 1584/2936/247 1585/2923/234 +f 1576/2938/249 1589/2939/250 1580/2940/251 +f 1590/2941/252 1579/2942/253 1578/2943/254 +f 1596/2925/236 1595/2937/248 1585/2923/234 +f 1593/2944/255 1582/2945/256 1583/2935/246 +f 1579/2942/253 1591/2946/257 1577/2947/258 +f 1577/2947/258 1589/2939/250 1576/2938/249 +f 1588/2906/217 1582/2945/256 1592/2948/259 +f 1553/2907/218 1587/2949/260 1578/2943/254 +f 1586/2924/235 1581/2950/261 1596/2925/236 +f 1581/2950/261 1589/2939/250 1596/2925/236 +f 1588/2906/217 1590/2941/252 1587/2949/260 +f 1595/2937/248 1589/2939/250 1591/2946/257 +f 1589/2939/250 1595/2937/248 1596/2925/236 +f 1552/2909/220 1578/2951/254 1557/2952/233 +f 1553/2953/218 1554/2911/222 1551/2954/219 +f 1582/2955/256 1554/2911/222 1561/2956/237 +f 1612/2957/262 1627/2958/263 1615/2959/264 +f 1612/2957/262 1616/2960/265 1613/2961/266 +f 1615/2959/264 1619/2962/267 1616/2960/265 +f 1615/2959/264 1627/2963/263 1618/2964/268 +f 1618/2964/268 1622/2965/269 1619/2962/267 +f 1618/2964/268 1627/2966/263 1621/2967/270 +f 1609/2968/271 1636/2969/272 1637/2970/273 +f 1622/2965/269 1624/2971/274 1625/2972/275 +f 1609/2968/271 1620/2973/276 1638/2974/277 +f 1621/2967/270 1627/2975/263 1624/2971/274 +f 1611/2976/278 1637/2970/273 1610/2977/279 +f 1625/2972/275 1628/2978/280 1629/2979/281 +f 1611/2976/278 1620/2980/276 1609/2968/271 +f 1624/2971/274 1627/2981/263 1628/2978/280 +f 1617/2982/282 1610/2977/279 1614/2983/283 +f 1629/2979/281 1631/2984/284 1632/2985/285 +f 1617/2982/282 1620/2986/276 1611/2976/278 +f 1628/2978/280 1627/2987/263 1631/2984/284 +f 1630/2988/286 1626/2989/287 1623/2990/288 +f 1633/2991/289 1620/2992/276 1626/2989/287 +f 1634/2993/290 1633/2991/289 1630/2988/286 +f 1635/2994/291 1620/2995/276 1633/2991/289 +f 1636/2969/272 1635/2994/291 1634/2993/290 +f 1638/2974/277 1620/2996/276 1635/2994/291 +f 1572/2927/238 1570/2929/240 1573/2913/224 +f 1573/2913/224 1570/2929/240 1574/2915/226 +f 1591/2946/257 1594/2934/245 1595/2937/248 +f 1593/2944/255 1591/2946/257 1590/2941/252 +f 1575/2932/243 1564/2916/227 1574/2915/226 +f 1565/2931/242 1564/2916/227 1575/2932/243 +f 1665/2997/292 1667/2998/293 1663/2735/292 +f 1668/2999/293 1669/3000/294 1667/2998/293 +f 1670/3001/294 1671/3002/295 1669/3000/294 +f 1672/3003/295 1673/3004/296 1671/3002/295 +f 1674/3005/297 1675/3006/298 1673/3004/296 +f 1664/2734/299 1678/2725/300 1666/2722/299 +f 1677/2737/300 1680/2727/301 1678/2725/300 +f 1679/2852/301 1682/2729/302 1680/2727/301 +f 1681/2738/302 1684/2731/303 1682/2729/302 +f 1683/2742/303 1686/2851/304 1684/2731/303 +f 1690/3007/305 1687/3008/215 1688/3009/215 +f 1692/3010/306 1689/3011/305 1690/3007/305 +f 1694/2749/307 1691/3012/306 1692/3010/306 +f 1696/2748/308 1693/2855/307 1694/2749/307 +f 1698/3013/309 1695/2751/308 1696/2748/308 +f 1700/3014/309 1697/3015/309 1698/3013/309 +f 1702/3016/310 1699/3017/309 1700/3014/309 +f 1570/2929/240 1556/2928/239 1568/2919/230 +f 1577/2947/258 1591/2946/257 1589/2939/250 +f 1571/3018/311 1569/2921/232 1572/2927/238 +f 1590/2941/252 1592/2948/259 1593/2944/255 +f 1566/2930/241 1557/2922/233 1569/2921/232 +f 1578/2943/254 1587/2949/260 1590/2941/252 +f 1396/2861/180 1398/2862/195 1397/2499/195 +f 1398/2862/195 1400/2863/196 1399/2497/196 +f 1400/2863/196 1402/3019/178 1401/2495/178 +f 1402/2520/178 1404/2522/197 1403/2510/197 +f 1404/2522/197 1406/2864/198 1405/2508/198 +f 1406/2864/198 1408/2865/179 1407/2507/179 +f 1408/2865/179 1410/2866/199 1409/2505/199 +f 1410/2866/199 1412/2867/200 1411/2503/200 +f 1412/2867/200 1414/2868/176 1413/2501/176 +f 1414/2868/176 1416/2869/201 1415/2494/201 +f 1416/2869/201 1418/2870/202 1417/2492/202 +f 1418/2870/202 1396/2861/180 1395/2514/180 +f 1425/2506/180 1437/2874/180 1436/2871/202 +f 1422/2786/176 1434/3020/176 1433/2872/200 +f 1429/2493/197 1441/2876/197 1440/2873/178 +f 1426/2504/195 1438/2878/195 1437/2874/180 +f 1423/2511/201 1435/2879/201 1434/2875/176 +f 1430/2515/198 1442/2880/198 1441/2876/197 +f 1420/2498/199 1432/2881/199 1431/2877/179 +f 1427/2502/196 1439/2882/196 1438/2878/195 +f 1424/2509/202 1436/2871/202 1435/2879/201 +f 1419/2516/179 1431/2877/179 1442/2880/198 +f 1421/2496/200 1433/2872/200 1432/2881/199 +f 1428/2500/178 1440/2873/178 1439/2882/196 +f 1451/2540/200 1463/2549/200 1464/2552/176 +f 1448/2518/198 1460/2572/198 1461/2577/179 +f 1445/2534/196 1457/2566/196 1458/2794/178 +f 1452/2537/176 1464/2552/176 1465/2556/201 +f 1449/2544/179 1461/2577/179 1462/2576/199 +f 1446/2787/178 1458/2570/178 1459/2569/197 +f 1453/2538/201 1465/2556/201 1466/2555/202 +f 1443/2525/180 1455/2560/180 1456/2563/195 +f 1450/2545/199 1462/2576/199 1463/2549/200 +f 1447/2521/197 1459/2569/197 1460/2572/198 +f 1443/2525/180 1454/2524/202 1466/2555/202 +f 1444/2527/195 1456/2563/195 1457/2566/196 +f 1473/2800/178 1472/2905/203 1471/2883/203 +f 1500/2884/204 1505/2889/204 1504/2885/179 +f 1499/2886/179 1504/2885/179 1508/2887/205 +f 1501/2805/206 1506/2814/206 1505/2889/204 +f 1503/2888/205 1508/2887/205 1507/2816/207 +f 1531/2648/175 1533/2894/208 1534/2890/208 +f 1537/2891/209 1536/3021/210 1535/2892/210 +f 1537/2891/209 1538/2893/209 1534/2890/208 +f 1540/2657/174 1542/2896/211 1541/2895/211 +f 1542/2896/211 1544/2898/212 1543/2897/212 +f 1544/2898/212 1546/2900/213 1545/2899/213 +f 1546/2900/213 1548/3022/214 1547/2901/214 +f 1548/2902/215 1550/3023/216 1549/2903/216 +f 1549/2903/216 1550/3023/216 1471/2883/203 +f 1588/2906/217 1587/2949/260 1553/2907/218 +f 1552/2909/220 1566/2930/241 1567/2910/221 +f 1562/2912/223 1572/2927/238 1573/2913/224 +f 1563/2914/225 1573/2913/224 1574/2915/226 +f 1558/2920/231 1570/2929/240 1569/2921/232 +f 1561/2926/237 1571/3018/311 1572/2927/238 +f 1567/2910/221 1571/3018/311 1561/2926/237 +f 1575/2932/243 1568/2919/230 1559/2918/229 +f 1569/2921/232 1571/3018/311 1567/2910/221 +f 1594/2934/245 1593/2944/255 1583/2935/246 +f 1595/2937/248 1594/2934/245 1584/2936/247 +f 1590/2941/252 1591/2946/257 1579/2942/253 +f 1593/2944/255 1592/2948/259 1582/2945/256 +f 1588/2906/217 1551/2908/219 1582/2945/256 +f 1581/2950/261 1580/2940/251 1589/2939/250 +f 1588/2906/217 1592/2948/259 1590/2941/252 +f 1552/2909/220 1553/2953/218 1578/2951/254 +f 1553/2953/218 1552/2909/220 1554/2911/222 +f 1582/2955/256 1551/2954/219 1554/2911/222 +f 1612/2957/262 1615/2959/264 1616/2960/265 +f 1615/2959/264 1618/2964/268 1619/2962/267 +f 1618/2964/268 1621/2967/270 1622/2965/269 +f 1609/2968/271 1638/2974/277 1636/2969/272 +f 1622/2965/269 1621/2967/270 1624/2971/274 +f 1611/2976/278 1609/2968/271 1637/2970/273 +f 1625/2972/275 1624/2971/274 1628/2978/280 +f 1617/2982/282 1611/2976/278 1610/2977/279 +f 1629/2979/281 1628/2978/280 1631/2984/284 +f 1630/2988/286 1633/2991/289 1626/2989/287 +f 1634/2993/290 1635/2994/291 1633/2991/289 +f 1636/2969/272 1638/2974/277 1635/2994/291 +f 1572/2927/238 1569/2921/232 1570/2929/240 +f 1593/2944/255 1594/2934/245 1591/2946/257 +f 1665/2997/292 1668/2999/293 1667/2998/293 +f 1668/2999/293 1670/3001/294 1669/3000/294 +f 1670/3001/294 1672/3003/295 1671/3002/295 +f 1672/3003/295 1674/3005/297 1673/3004/296 +f 1674/3005/297 1676/3024/298 1675/3006/298 +f 1664/2734/299 1677/2737/300 1678/2725/300 +f 1677/2737/300 1679/2852/301 1680/2727/301 +f 1679/2852/301 1681/2738/302 1682/2729/302 +f 1681/2738/302 1683/2742/303 1684/2731/303 +f 1683/2742/303 1685/2853/304 1686/2851/304 +f 1690/3007/305 1689/3011/305 1687/3008/215 +f 1692/3010/306 1691/3012/306 1689/3011/305 +f 1694/2749/307 1693/2855/307 1691/3012/306 +f 1696/2748/308 1695/2751/308 1693/2855/307 +f 1698/3013/309 1697/3015/309 1695/2751/308 +f 1700/3014/309 1699/3017/309 1697/3015/309 +f 1702/3016/310 1701/3025/310 1699/3017/309 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index c071a37b1..adc21ea33 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -201,6 +201,7 @@ "weapon.coilgunShoot": {"category": "player", "sounds": [{"name": "weapon/coilgunShoot", "stream": false}]}, "weapon.glReload": {"category": "player", "sounds": [{"name": "weapon/glReload", "stream": false}]}, "weapon.glShoot": {"category": "player", "sounds": [{"name": "weapon/glShoot", "stream": false}]}, + "weapon.44Shoot": {"category": "player", "sounds": [{"name": "weapon/44Shoot", "stream": false}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/44Shoot.ogg b/src/main/resources/assets/hbm/sounds/weapon/44Shoot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b76f3c389cc748a62e4b530c718e859d5236d31e GIT binary patch literal 25552 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%0D@^RL5=XpN^Z`?z?^Y9AJB)Q?0F(x2h!Wxl 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lilmac_plume.png b/src/main/resources/assets/hbm/textures/models/weapons/lilmac_plume.png new file mode 100644 index 0000000000000000000000000000000000000000..5df1f5069773c35d21837bb945ce84fb6421cf98 GIT binary patch literal 1525 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 literal 0 HcmV?d00001 From b6ff9627af83d2920567811dae416435597b29b3 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 4 Jan 2024 19:43:58 +0100 Subject: [PATCH 200/207] and now for some textures --- .../java/com/hbm/items/weapon/ItemGunPip.java | 29 +++++++++--------- .../com/hbm/main/ModEventHandlerClient.java | 4 +-- .../item/weapon/ItemRenderWeaponLilMac.java | 9 ++++-- .../hbm/textures/models/weapons/lilmac.png | Bin 2997 -> 4529 bytes .../textures/models/weapons/lilmac_scope.png | Bin 934 -> 849 bytes 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/hbm/items/weapon/ItemGunPip.java b/src/main/java/com/hbm/items/weapon/ItemGunPip.java index 1a4179dd9..04af2530d 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunPip.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunPip.java @@ -62,33 +62,34 @@ public class ItemGunPip extends ItemGunBase { @SideOnly(Side.CLIENT) public BusAnimation getAnimation(ItemStack stack, AnimType type) { - if(type == AnimType.EQUIP) { + if(type == AnimType.EQUIP) { return new BusAnimation() .addBus("ROTATE", new BusAnimationSequence() .addKeyframe(new BusAnimationKeyframe(-360, 0, 0, 350)) ); - } + } - if(type == AnimType.CYCLE) { + if(type == AnimType.CYCLE) { lastShot = System.currentTimeMillis(); + int s = 1; return new BusAnimation() .addBus("RECOIL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 50)) - .addKeyframe(new BusAnimationKeyframe(0, 0, -3, 50)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 50 * s)) + .addKeyframe(new BusAnimationKeyframe(0, 0, -3, 50 * s)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250 * s)) ) .addBus("HAMMER", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 50)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 300)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 50 * s)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 300 * s)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200 * s)) ) .addBus("DRUM", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 50)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 50 * s)) ); } - if(type == AnimType.RELOAD) { - int s = 1; + if(type == AnimType.RELOAD) { + int s = 1; return new BusAnimation() .addBus("RELAOD_TILT", new BusAnimationSequence() .addKeyframe(new BusAnimationKeyframe(-15, 0, 0, 100 * s)) @@ -130,8 +131,8 @@ public class ItemGunPip extends ItemGunBase { .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 950 * s)) .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 1 * s)) ); - } + } - return null; + return null; } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 16be815d9..72e07c9b8 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -241,7 +241,7 @@ public class ModEventHandlerClient { Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); }*/ - List text = new ArrayList(); + /*List text = new ArrayList(); MovingObjectPosition pos = Library.rayTrace(player, 500, 1, false, true, false); for(int i = 0; i < 2; i++) if(pos != null && pos.typeOfHit == pos.typeOfHit.BLOCK) { @@ -309,7 +309,7 @@ public class ModEventHandlerClient { } while(distanceToCover != 0); ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); - } + }*/ } /// HANLDE ANIMATION BUSES /// diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java index 7d79a4476..7ab0e8af3 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java @@ -74,7 +74,7 @@ public class ItemRenderWeaponLilMac implements IItemRenderer { GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glAlphaFunc(GL11.GL_GREATER, 0F); GL11.glTranslated(-10, 2.25, 0); - GL11.glTranslated(-recoil[2] * 3, -recoil[2] * 2, 0); + GL11.glTranslated(-recoil[2] * 3.5, -recoil[2] * 1.375, 0); if(ItemGunPip.smokeNodes.size() > 1 && equipSpin[0] == 0) { @@ -103,7 +103,9 @@ public class ItemRenderWeaponLilMac implements IItemRenderer { tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); tess.addVertex(past[0], past[1], past[2]); } + GL11.glDepthMask(false); tess.draw(); + GL11.glDepthMask(true); } GL11.glEnable(GL11.GL_TEXTURE_2D); @@ -132,6 +134,7 @@ public class ItemRenderWeaponLilMac implements IItemRenderer { double[] cylinderFlip = HbmAnimations.getRelevantTransformation("RELOAD_CYLINDER"); GL11.glPushMatrix(); /// DRUM PUSH /// GL11.glRotated(cylinderFlip[0], 1, 0, 0); + ResourceManager.lilmac.renderPart("Pivot"); GL11.glTranslated(0, 1.75, 0); GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0); GL11.glTranslated(0, -1.75, 0); @@ -191,9 +194,7 @@ public class ItemRenderWeaponLilMac implements IItemRenderer { tess.addVertexWithUV(lengthOffset, -height, -length + offset, 1, 0); tess.addVertexWithUV(lengthOffset, height, -length + offset, 0 ,0); - GL11.glDepthMask(true); tess.draw(); - GL11.glDepthMask(false); GL11.glPopMatrix(); GL11.glDisable(GL11.GL_BLEND); } @@ -223,6 +224,8 @@ public class ItemRenderWeaponLilMac implements IItemRenderer { case INVENTORY: GL11.glEnable(GL11.GL_LIGHTING); + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); double s = 0.8D; GL11.glTranslated(8, 8, 0); diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lilmac.png b/src/main/resources/assets/hbm/textures/models/weapons/lilmac.png index 4002d578752dd2b363d90763c0698cdfc88e782c..8490d4f2a4968d5c6d1398aa4ad62c77c54f776b 100644 GIT binary patch delta 4520 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 delta 2976 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 S{+V9H00f?{elF{r5}E+3QM5V$ From f254756c3d1787827c0cd4f0aed546506ad6059a Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 5 Jan 2024 23:33:11 +0100 Subject: [PATCH 201/207] bolts, now with revolutionary gregtech compat --- changelog | 47 ++++++++++------ src/main/java/api/hbm/energy/PowerNet.java | 11 +++- .../com/hbm/blocks/generic/BlockKeyhole.java | 1 + .../blocks/generic/BlockToolConversion.java | 3 +- .../java/com/hbm/blocks/machine/Watz.java | 3 +- .../java/com/hbm/crafting/ArmorRecipes.java | 2 +- .../com/hbm/crafting/ConsumableRecipes.java | 8 +-- .../java/com/hbm/crafting/ToolRecipes.java | 18 +++--- .../java/com/hbm/crafting/WeaponRecipes.java | 24 ++++---- .../hbm/handler/nei/ConstructionHandler.java | 6 +- .../com/hbm/inventory/OreDictManager.java | 3 + src/main/java/com/hbm/inventory/OreNames.java | 3 +- .../hbm/inventory/gui/GUIMachineRadGen.java | 2 +- .../inventory/material/MaterialShapes.java | 1 + .../java/com/hbm/inventory/material/Mats.java | 6 +- .../inventory/recipes/AssemblerRecipes.java | 50 ++++++++--------- .../inventory/recipes/ChemplantRecipes.java | 4 +- .../inventory/recipes/anvil/AnvilRecipes.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 9 +-- .../com/hbm/items/special/ItemAutogen.java | 2 +- .../java/com/hbm/items/tool/ItemBoltgun.java | 8 +-- .../java/com/hbm/lib/HbmChestContents.java | 4 +- .../java/com/hbm/main/CraftingManager.java | 53 ++++++++++-------- src/main/java/com/hbm/main/MainRegistry.java | 6 ++ .../com/hbm/main/ModEventHandlerClient.java | 6 -- .../item/weapon/ItemRenderWeaponLilMac.java | 2 +- .../machine/TileEntityMachineRadGen.java | 10 ++-- src/main/resources/assets/hbm/lang/de_DE.lang | 3 +- src/main/resources/assets/hbm/lang/en_US.lang | 3 +- .../textures/blocks/block_advanced_alloy.png | Bin 358 -> 374 bytes .../hbm/textures/blocks/block_red_copper.png | Bin 429 -> 393 bytes .../assets/hbm/textures/items/bolt.png | Bin 0 -> 219 bytes 32 files changed, 168 insertions(+), 132 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/bolt.png diff --git a/changelog b/changelog index b35e9997a..76672bd58 100644 --- a/changelog +++ b/changelog @@ -1,21 +1,36 @@ ## Added -* ??? +* Satellite radar relay + * Can be linked to a death ray + * Allows the death ray to be used with the radar's targeting system +* Combinator funnel + * Has 9 input and 9 output slots + * Will automatically do single ingredient 2x2 or 3x3 recipes like compressing ingots into blocks at up to 9 operations per tick + * Input is strictly on the top and output on the bottom + * The side acts as an output for the ingredients as a way to de-clog the funnel from leftover materials ## Changed -* Adjusted the model for the mining helmet -* The ladders on the acidizer and fluid tanks are now climbable -* Removed those unused blue dungeon bricks -* Red phosphorus is no longer pyrophoric, meaning that multi purpose bomb kits no longer instantly explode -* Adjusted M2's rotations +* Updated russian localization +* Nerfed scrap and dust even further +* Tiny dusts now shred into the generic tiny dust instead of scrap +* Tiny dust now shreds into more tiny dust, just like dust shreds into dust +* Updated the strange stone's texture to be more blatant about what it is +* Added more OC compat for the RBMK console +* Inverted large door's redstone behavior to be in line with vanilla iron doors +* The FEL now has a humming sound when it is active +* Updated the gadget's model + * The wires will not render on the fast graphic setting for performance reasons +* Remade Lil'Pipsqueak + * Now features proper animations for drawing the weapon, firing and reloading, as well as new sounds + * Comes with a new and improved 3D model as well as a cylinder gap flash when firing + * Is now part of the red room loot pool +* Powder box recipes now produce 8 boxes from the same amount of ingredients, making cyclotron recipes more affordable +* Buffed the radiation-powered engine, all valid fuels now produce 10x more energy per tick +* Removed tungsten and HSS bolts as dedicated items, they are now a single bolt item that uses the autogen system + * Regular steel is now also a valid bolt material which will replace tungsten in many recipes where tungsten just doesn't make sense + * Bolts Are now 1/8 of an ingot instead of 1/2 which makes some recipes marginally cheaper, as well as making them equal to GregTech bolts + * Bolts are oredicted and interchangeable, as well as recycleable in the crucible ## Fixed -* Fixed recipe conflict in the arc welder with the medium and large missile fuel tanks -* Fixed doomsday missile not being launchable -* Fixed rocket artillery turret power connectors not working with cables -* Fixed arc welder energy consumption check not taking upgrades into account -* Fixed glyphid gland and 16k item barrels not having a proper container item set, effectively voiding the emtpy container when used in crafting -* Fixed confusing item quantity display in the exposure chamber's NEI handler -* Fixed pheromone being tagged as viscous and therefore not being dispersable, making modified pheromone useless -* Fixed mobs not being able to pathfind through open doors -* Fixed the benelli ejecting the casings wrong -* Fixed casing ejection in general being inconsistent, sometimes flying off into the wrong direction \ No newline at end of file +* Fixed afterburn upgrades not being craftable with bakelite +* Fixed bismuth block not being properly oredicted +* Powder detectors that are used in the same network as diodes should now be somewhat less wrong \ No newline at end of file diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index 83c84d33a..6d55c2f0c 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -138,10 +138,17 @@ public class PowerNet implements IPowerNet { cleanup(this.subscribers); lastCleanup = System.currentTimeMillis(); }*/ + + List cache = new ArrayList(); + if(trackingInstances != null && !trackingInstances.isEmpty()) { + cache.addAll(trackingInstances); + } trackingInstances = new ArrayList(); trackingInstances.add(this); - return fairTransfer(this.subscribers, power); + long result = fairTransfer(this.subscribers, power); + trackingInstances.addAll(cache); + return result; } public static void cleanup(List subscribers) { @@ -215,6 +222,8 @@ public class PowerNet implements IPowerNet { PowerNet net = trackingInstances.get(i); net.totalTransfer = net.totalTransfer.add(BigInteger.valueOf(totalTransfer)); } + + trackingInstances.clear(); } return power; diff --git a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java index 14dee9d9d..f1c96e0b7 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java +++ b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java @@ -240,5 +240,6 @@ public class BlockKeyhole extends BlockStone { pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.flask_infusion), 5)); pedestalItems.add(new WeightedRandomObject(new ItemStack(ModBlocks.boxcar), 5)); pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.book_of_), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.gun_revolver_pip), 5)); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java index a4c146f6a..5eecc281b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java +++ b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java @@ -13,7 +13,6 @@ import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.MetaBlock; import com.hbm.inventory.RecipesCommon.OreDictStack; -import com.hbm.items.ModItems; import com.hbm.util.I18nUtil; import com.hbm.util.InventoryUtil; import com.hbm.util.Tuple.Pair; @@ -151,7 +150,7 @@ public class BlockToolConversion extends BlockMulti implements IToolable, ILookO public static HashMap, Pair> conversions = new HashMap(); public static void registerRecipes() { - conversions.put(new Pair(ToolType.BOLT, new MetaBlock(ModBlocks.watz_end, 0)), new Pair(new AStack[] {new ComparableStack(ModItems.bolt_dura_steel, 4)}, new MetaBlock(ModBlocks.watz_end, 1))); + conversions.put(new Pair(ToolType.BOLT, new MetaBlock(ModBlocks.watz_end, 0)), new Pair(new AStack[] {new OreDictStack(OreDictManager.DURA.bolt(), 4)}, new MetaBlock(ModBlocks.watz_end, 1))); conversions.put(new Pair(ToolType.TORCH, new MetaBlock(ModBlocks.fusion_conductor, 0)), new Pair(new AStack[] {new OreDictStack(OreDictManager.STEEL.plateCast())}, new MetaBlock(ModBlocks.fusion_conductor, 1))); } diff --git a/src/main/java/com/hbm/blocks/machine/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 4f195b722..48dfd23e2 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -5,6 +5,7 @@ import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityWatz; @@ -93,7 +94,7 @@ public class Watz extends BlockDummyable { if(i >= 12 && drop) { world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_end, 48))); - for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.bolt_dura_steel, 64))); + for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, Mats.MAT_DURA.make(ModItems.bolt))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_element, 36))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_cooler, 26))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_watz_core, 1))); diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index 33d455ca6..0ffd281b3 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -124,7 +124,7 @@ public class ArmorRecipes { //Jetpacks CraftingManager.addRecipeAuto(new ItemStack(ModItems.jetpack_fly, 1), new Object[] { "ACA", "TLT", "D D", 'A', AL.plate(), 'C', ModItems.circuit_targeting_tier1, 'T', ModItems.tank_steel, 'L', Items.leather, 'D', ModItems.thruster_small }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.jetpack_break, 1), new Object[] { "ICI", "TJT", "I I", 'C', ModItems.circuit_targeting_tier2, 'T', ModItems.ingot_dura_steel, 'J', ModItems.jetpack_fly, 'I', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.jetpack_vector, 1), new Object[] { "TCT", "MJM", "B B", 'C', ModItems.circuit_targeting_tier3, 'T', ModItems.tank_steel, 'J', ModItems.jetpack_break, 'M', ModItems.motor, 'B', ModItems.bolt_dura_steel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.jetpack_vector, 1), new Object[] { "TCT", "MJM", "B B", 'C', ModItems.circuit_targeting_tier3, 'T', ModItems.tank_steel, 'J', ModItems.jetpack_break, 'M', ModItems.motor, 'B', DURA.bolt() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.jetpack_boost, 1), new Object[] { "PCP", "DJD", "PAP", 'C', ModItems.circuit_targeting_tier4, 'P', BIGMT.plate(), 'D', DESH.ingot(), 'J', ModItems.jetpack_vector, 'A', ModItems.board_copper }); //Hazmat diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index caac98962..e7be64e7e 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -50,8 +50,8 @@ public class ConsumableRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.balefire_and_ham, 1), new Object[] { ModItems.balefire_scrambled, Items.cooked_beef }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.med_ipecac, 1), new Object[] { Items.glass_bottle, Items.nether_wart }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.med_ptsd, 1), new Object[] { ModItems.med_ipecac }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), DIAMOND.dust(), Items.wheat, ModItems.bolt_tungsten, ModItems.wire_copper, STEEL.plate() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), EMERALD.dust(), Items.wheat, ModItems.bolt_tungsten, ModItems.wire_copper, STEEL.plate() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), DIAMOND.dust(), Items.wheat, STEEL.bolt(), ModItems.wire_copper, STEEL.plate() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), EMERALD.dust(), Items.wheat, STEEL.bolt(), ModItems.wire_copper, STEEL.plate() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.chocolate_milk, 1), new Object[] { KEY_ANYPANE, new ItemStack(Items.dye, 1, 3), Items.milk_bucket, Fluids.NITROGLYCERIN.getDict(1_000) }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.loops), new Object[] { ModItems.flame_pony, Items.wheat, Items.sugar }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.loop_stew), new Object[] { ModItems.loops, ModItems.can_smart, Items.bowl }); @@ -170,8 +170,8 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_yharonite, 1), new Object[] { "YIY", "IYI", "YIY", 'Y', ModItems.billet_yharonite, 'I', ModItems.insert_du }); //Servos - CraftingManager.addRecipeAuto(new ItemStack(ModItems.servo_set, 1), new Object[] { "MBM", "PBP", "MBM", 'M', ModItems.motor, 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.servo_set_desh, 1), new Object[] { "MBM", "PSP", "MBM", 'M', ModItems.motor_desh, 'B', ModItems.bolt_dura_steel, 'P', ALLOY.plate(), 'S', ModItems.servo_set }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.servo_set, 1), new Object[] { "MBM", "PBP", "MBM", 'M', ModItems.motor, 'B', STEEL.bolt(), 'P', IRON.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.servo_set_desh, 1), new Object[] { "MBM", "PSP", "MBM", 'M', ModItems.motor_desh, 'B', DURA.bolt(), 'P', ALLOY.plate(), 'S', ModItems.servo_set }); //Helmet Mods CraftingManager.addRecipeAuto(new ItemStack(ModItems.attachment_mask, 1), new Object[] { "DID", "IGI", " F ", 'D', ModItems.ducttape, 'I', ANY_RUBBER.ingot(), 'G', KEY_ANYPANE, 'F', IRON.plate() }); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 598c9fd41..8b8f2c27c 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -62,10 +62,10 @@ public class ToolRecipes { addShovel( DESH.ingot(), ModItems.desh_shovel); addHoe( DESH.ingot(), ModItems.desh_hoe); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_sword, 1), new Object[] { "RPR", "RPR", " B ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_pickaxe, 1), new Object[] { "RDM", " PB", " P ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_axe, 1), new Object[] { " DP", "RRM", " PB", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_shovel, 1), new Object[] { " P", "RRM", " B", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', ModItems.bolt_dura_steel, 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_sword, 1), new Object[] { "RPR", "RPR", " B ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_pickaxe, 1), new Object[] { "RDM", " PB", " P ", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_axe, 1), new Object[] { " DP", "RRM", " PB", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', ModItems.battery_lithium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.elec_shovel, 1), new Object[] { " P", "RRM", " B", 'P', ANY_PLASTIC.ingot(), 'D', DURA.ingot(), 'R', DURA.bolt(), 'M', ModItems.motor, 'B', ModItems.battery_lithium }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.centri_stick, 1), new Object[] { ModItems.centrifuge_element, ModItems.energy_core, KEY_STICK }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.smashing_hammer, 1), new Object[] { "STS", "SPS", " P ", 'S', STEEL.block(), 'T', W.block(), 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.meteorite_sword, 1), new Object[] { " B", "GB ", "SG ", 'B', ModItems.blade_meteorite, 'G', GOLD.plate(), 'S', KEY_STICK }); @@ -76,10 +76,10 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.drax_mk3, 1), new Object[] { "ECE", "CDC", "SBS", 'E', ModBlocks.block_euphemium_cluster, 'C', ModItems.crystal_schrabidium, 'D', ModItems.drax_mk2, 'S', ModItems.circuit_targeting_tier6, 'B', ItemBattery.getFullBattery(ModItems.battery_spark) }); //Super pickaxes - CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_pickaxe, 1), new Object[] { " BM", "BPB", "TB ", 'B', ModItems.ingot_bismuth, 'M', ModItems.ingot_meteorite, 'P', ModItems.starmetal_pickaxe, 'T', ModItems.bolt_tungsten }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.volcanic_pickaxe, 1), new Object[] { " BM", "BPB", "TB ", 'B', ModItems.gem_volcanic, 'M', ModItems.ingot_meteorite, 'P', ModItems.starmetal_pickaxe, 'T', ModItems.bolt_tungsten }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.chlorophyte_pickaxe, 1), new Object[] { " SD", "APS", "FA ", 'S', ModItems.blades_steel, 'D', ModItems.powder_chlorophyte, 'A', FIBER.ingot(), 'P', ModItems.bismuth_pickaxe, 'F', ModItems.bolt_dura_steel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.chlorophyte_pickaxe, 1), new Object[] { " SD", "APS", "FA ", 'S', ModItems.blades_steel, 'D', ModItems.powder_chlorophyte, 'A', FIBER.ingot(), 'P', ModItems.volcanic_pickaxe, 'F', ModItems.bolt_dura_steel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_pickaxe, 1), new Object[] { " BM", "BPB", "TB ", 'B', ModItems.ingot_bismuth, 'M', ModItems.ingot_meteorite, 'P', ModItems.starmetal_pickaxe, 'T', W.bolt() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.volcanic_pickaxe, 1), new Object[] { " BM", "BPB", "TB ", 'B', ModItems.gem_volcanic, 'M', ModItems.ingot_meteorite, 'P', ModItems.starmetal_pickaxe, 'T', W.bolt() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.chlorophyte_pickaxe, 1), new Object[] { " SD", "APS", "FA ", 'S', ModItems.blades_steel, 'D', ModItems.powder_chlorophyte, 'A', FIBER.ingot(), 'P', ModItems.bismuth_pickaxe, 'F', DURA.bolt() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.chlorophyte_pickaxe, 1), new Object[] { " SD", "APS", "FA ", 'S', ModItems.blades_steel, 'D', ModItems.powder_chlorophyte, 'A', FIBER.ingot(), 'P', ModItems.volcanic_pickaxe, 'F', DURA.bolt() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mese_pickaxe, 1), new Object[] { " SD", "APS", "FA ", 'S', ModItems.blades_desh, 'D', ModItems.powder_dineutronium, 'A', ModItems.plate_paa, 'P', ModItems.chlorophyte_pickaxe, 'F', ModItems.shimmer_handle }); //Chainsaws @@ -124,7 +124,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.pollution_detector, 1), new Object[] { "SFS", "SCS", " S ", 'S', STEEL.plate(), 'F', ModItems.filter_coal, 'C', ModItems.circuit_copper }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', ModItems.bolt_tungsten, 'I', W.ingot(), 'P', ANY_RUBBER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', W.bolt(), 'I', W.ingot(), 'P', ANY_RUBBER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', ANY_RESISTANTALLOY.ingot(), 'R', ModItems.reacher, 'C', ModItems.circuit_aluminium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.sat_designator, 1), new Object[] { "RRD", "PIC", " P", 'P', GOLD.plate(), 'R', Items.redstone, 'C', ModItems.circuit_gold, 'D', ModItems.sat_chip, 'I', GOLD.ingot() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.sat_relay), new Object[] { ModItems.sat_chip, ModItems.ducttape, ModItems.radar_linker }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 111c9a169..e671dc1ca 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -75,7 +75,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_panzerschreck, 1), new Object[] { "SSS", " MW", 'S', ModItems.hull_small_steel, 'W', CU.plate(), 'M', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_karl, 1), new Object[] { "SSW", " MW", 'S', ModItems.hull_small_steel, 'W', ALLOY.plate(), 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "SSS", "SSS", "CM ", 'S', ModItems.hull_small_steel, 'C', ModItems.circuit_targeting_tier3, 'M', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', ModItems.hull_small_steel, 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', ModItems.bolt_tungsten }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', ModItems.hull_small_steel, 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', STEEL.bolt() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "HHR", "WLW", 'H', ModItems.hull_small_aluminium, 'R', ModItems.mechanism_rifle_1, 'W', KEY_LOG, 'L', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "SSW", "CMW", 'S', STEEL.plate(), 'W', TI.plate(), 'C', ModItems.circuit_red_copper, 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 4), new Object[] { "SS ", "STI", " IR", 'S', STEEL.plate(), 'T', Item.getItemFromBlock(Blocks.tnt), 'I', AL.plate(), 'R', REDSTONE.dust() }); @@ -88,12 +88,12 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_blackjack, 1), new Object[] { "SSP", " TI", 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', ModItems.wire_tungsten, 'I', KEY_PLANKS }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_silver, 1), new Object[] { "SSP", " TI", 'S', AL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', ModItems.wire_tungsten, 'I', KEY_PLANKS }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_red, 1), new Object[] { "R ", " B", 'R', ModItems.key_red, 'B', ModItems.gun_revolver_blackjack }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_deagle, 1), new Object[] { "PPM", " BI", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uac_pistol, 1), new Object[] { "IIM", " BI", 'B', ModItems.bolt_dura_steel, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_deagle, 1), new Object[] { "PPM", " BI", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uac_pistol, 1), new Object[] { "IIM", " BI", 'B', DURA.bolt(), 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_cursed, 1), new Object[] { "TTM", "SRI", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'R', ModItems.wire_red_copper, 'T', TI.plate(), 'M', ModItems.mechanism_revolver_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare, 1), new Object[] { "SEM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', ModItems.wire_aluminium, 'E', ModItems.powder_power, 'M', ModItems.mechanism_revolver_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare2, 1), new Object[] { "SSM", "RRW", 'S', OreDictManager.getReflector(), 'W', W.ingot(), 'R', ModItems.wire_gold, 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bio_revolver, 1), new Object[] { "SSM", "BTW", 'S', STEEL.plate(), 'M', ModItems.mechanism_revolver_2, 'B', B.ingot(), 'T', ModItems.bolt_tungsten, 'W', KEY_LOG }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bio_revolver, 1), new Object[] { "SSM", "BTW", 'S', STEEL.plate(), 'M', ModItems.mechanism_revolver_2, 'B', B.ingot(), 'T', W.bolt(), 'W', KEY_LOG }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "RWC", "HHT", "RLC", 'R', RUBBER.ingot(), 'W', ModItems.wrench, 'C', CU.plate(), 'H', ModItems.hull_small_steel, 'T', ModItems.tank_steel, 'L', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "SSI", "IIM", "WPH", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', ModItems.wire_aluminium, 'H', ModItems.hull_small_steel, 'P', Item.getItemFromBlock(Blocks.piston), 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', ModItems.wire_gold, 'F', ModItems.gun_fatman }); @@ -144,9 +144,9 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b93), new Object[] { "PCE", "SEB", "PCE", 'P', ModItems.plate_dineutronium, 'C', ModItems.weaponized_starblaster_cell, 'E', ModItems.component_emitter, 'B', ModItems.gun_b92, 'S', ModItems.singularity_spark }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92_ammo, 1), new Object[] { "PSP", "ESE", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'E', ModItems.powder_spark_mix }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.ACID.getID()), GunB92Cell.getFullCell(), ModItems.wire_copper }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "SMS", " PB", " P ", 'S', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', STEEL.plate(), 'B', ModItems.bolt_dura_steel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "SMS", " PB", " P ", 'S', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', STEEL.plate(), 'B', DURA.bolt() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite, 1), new Object[] { "SMS", " PB", " P ", 'S', BIGMT.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', BIGMT.plate(), 'B', ModItems.bolt_tungsten }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite, 1), new Object[] { "SMS", " PB", " P ", 'S', BIGMT.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', BIGMT.plate(), 'B', W.bolt() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi_saturnite }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolter, 1), new Object[] { "SSM", "PIP", " I ", 'S', BIGMT.plate(), 'I', BIGMT.ingot(), 'M', ModItems.mechanism_special, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_calamity, 1), new Object[] { " PI", "BBM", " PI", 'P', IRON.plate(), 'B', ModItems.pipes_steel, 'M', ModItems.mechanism_rifle_1, 'I', STEEL.ingot() }); @@ -156,8 +156,8 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lacunae, 1), new Object[] { "TIT", "ILI", "PRP", 'T', ModItems.syringe_taint, 'I', STAR.ingot(), 'L', ModItems.gun_minigun, 'P', ModItems.pellet_rtg, 'R', ModBlocks.machine_rtg_grey }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mymy, 1), new Object[] { "PP ", " WP", 'P', ANY_RUBBER.ingot(), 'W', ModItems.wire_aluminium }); //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_darter, 1), new Object[] { "SST", " P", 'S', STEEL.plate(), 'T', ModItems.gas_empty, 'P', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fireext, 1), new Object[] { "HB", " T", 'H', ModItems.hull_small_steel, 'B', ModItems.bolt_tungsten, 'T', ModItems.tank_steel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', ModItems.bolt_tungsten, 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', ModItems.hull_small_steel, 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fireext, 1), new Object[] { "HB", " T", 'H', ModItems.hull_small_steel, 'B', STEEL.bolt(), 'T', ModItems.tank_steel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', STEEL.bolt(), 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', ModItems.hull_small_steel, 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_glass_cannon, 1), new Object[] { "GGC", "GTM", 'G', Item.getItemFromBlock(ModBlocks.glass_quartz), 'C', ModItems.battery_lithium_cell, 'T', ModItems.crt_display, 'M', ModItems.mechanism_special }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_remington, 1), new Object[] { "PPM", "S L", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_SLAB, 'L', KEY_LOG }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', ModItems.hull_small_steel, 'A', ModItems.hull_small_aluminium, 'P', ModItems.ingot_polymer, 'M', ModItems.mechanism_rifle_2 }); @@ -329,14 +329,14 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SPECIAL), new Object[] { "CBC", "MCM", "CBC", 'C', ModItems.canned_conserve.stackFromEnum(EnumFoodType.JIZZ), 'B', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.BALEFIRE), 'M', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV) }); //Flamer fuel - CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.DIESEL), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', Fluids.DIESEL.getDict(1000) }); - CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.NAPALM), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', ModItems.canister_napalm }); + CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.DIESEL), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'D', Fluids.DIESEL.getDict(1000) }); + CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.NAPALM), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'D', ModItems.canister_napalm }); CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.PHOSPHORUS), new Object[] { "CPC", "CDC", "CPC", 'C', COAL.dust(), 'P', P_WHITE.ingot(), 'D', ModItems.ammo_fuel }); - CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.CHLORINE), new Object[] { "PDP", "BDB", "PDP", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', ModItems.pellet_gas }); + CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.CHLORINE), new Object[] { "PDP", "BDB", "PDP", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'D', ModItems.pellet_gas }); CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.VAPORIZER), new Object[] { "PSP", "SNS", "PSP", 'P', P_WHITE.ingot(), 'S', ModItems.crystal_sulfur, 'N', ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.NAPALM) }); //Fire Extingusisher Tanks - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fireext, 1), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.WATER.getID()) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fireext, 1), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'D', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.WATER.getID()) }); CraftingManager.addRecipeAuto(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.FOAM), new Object[] { " N ", "NFN", " N ", 'N', KNO.dust(), 'F', ModItems.ammo_fireext }); CraftingManager.addRecipeAuto(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.SAND), new Object[] { "NNN", "NFN", "NNN", 'N', ModBlocks.sand_boron, 'F', ModItems.ammo_fireext }); diff --git a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java index c845f1601..e2e95fa22 100644 --- a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java +++ b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java @@ -33,9 +33,9 @@ public class ConstructionHandler extends NEIUniversalHandler { /* WATZ */ ItemStack[] watz = new ItemStack[] { new ItemStack(ModBlocks.watz_end, 48), - new ItemStack(ModItems.bolt_dura_steel, 64), - new ItemStack(ModItems.bolt_dura_steel, 64), - new ItemStack(ModItems.bolt_dura_steel, 64), + Mats.MAT_DURA.make(ModItems.bolt, 64), + Mats.MAT_DURA.make(ModItems.bolt, 64), + Mats.MAT_DURA.make(ModItems.bolt, 64), new ItemStack(ModBlocks.watz_element, 36), new ItemStack(ModBlocks.watz_cooler, 26), new ItemStack(ModItems.boltgun)}; diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 8b7589e11..e6ca773e5 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -516,6 +516,7 @@ public class OreDictManager { for(NTMMaterial mat : Mats.orderedList) { if(mat.smeltable == SmeltingBehavior.SMELTABLE) { + if(mat.shapes.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); if(mat.shapes.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); if(mat.shapes.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); if(mat.shapes.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); @@ -661,6 +662,7 @@ public class OreDictManager { public String any() { return ANY + mats[0]; } public String nugget() { return NUGGET + mats[0]; } public String tiny() { return TINY + mats[0]; } + public String bolt() { return BOLT + mats[0]; } public String ingot() { return INGOT + mats[0]; } public String dustTiny() { return DUSTTINY + mats[0]; } public String dust() { return DUST + mats[0]; } @@ -914,6 +916,7 @@ public class OreDictManager { public String any() { return ANY + groupName; } public String nugget() { return NUGGET + groupName; } public String tiny() { return TINY + groupName; } + public String bolt() { return BOLT + groupName; } public String ingot() { return INGOT + groupName; } public String dustTiny() { return DUSTTINY + groupName; } public String dust() { return DUST + groupName; } diff --git a/src/main/java/com/hbm/inventory/OreNames.java b/src/main/java/com/hbm/inventory/OreNames.java index 4f1584d60..8c487a0e6 100644 --- a/src/main/java/com/hbm/inventory/OreNames.java +++ b/src/main/java/com/hbm/inventory/OreNames.java @@ -8,6 +8,7 @@ public class OreNames { public static final String ANY = "any"; public static final String NUGGET = "nugget"; public static final String TINY = "tiny"; + public static final String BOLT = "bolt"; public static final String INGOT = "ingot"; public static final String DUSTTINY = "dustTiny"; public static final String DUST = "dust"; @@ -24,6 +25,6 @@ public class OreNames { public static final String HEAVY_COMPONENT = "componentHeavy"; public static final String[] prefixes = new String[] { - ANY, NUGGET, TINY, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER, HEAVY_COMPONENT, WIREDENSE + ANY, NUGGET, TINY, BOLT, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER, HEAVY_COMPONENT, WIREDENSE }; } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadGen.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadGen.java index 527de1e9f..a3361e662 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadGen.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadGen.java @@ -36,7 +36,7 @@ public class GUIMachineRadGen extends GuiInfoContainer { this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 65, guiTop + 18 + i * 5, 46, 5, new String[] { "Slot " + (i + 1) + ":", radgen.production[i] + "HE/t for", - (radgen.maxProgress[i] - radgen.progress[i]) + " ticks. (" + ((radgen.maxProgress[i] - radgen.progress[i]) * 100 / radgen.maxProgress[i]) + "%)" + (radgen.maxProgress[i] - radgen.progress[i]) + " ticks (" + ((radgen.maxProgress[i] - radgen.progress[i]) * 100 / radgen.maxProgress[i]) + "%)" }); } } diff --git a/src/main/java/com/hbm/inventory/material/MaterialShapes.java b/src/main/java/com/hbm/inventory/material/MaterialShapes.java index df72f9da9..ebb34cfcb 100644 --- a/src/main/java/com/hbm/inventory/material/MaterialShapes.java +++ b/src/main/java/com/hbm/inventory/material/MaterialShapes.java @@ -13,6 +13,7 @@ public class MaterialShapes { public static final MaterialShapes NUGGET = new MaterialShapes(8, "nugget"); public static final MaterialShapes DUSTTINY = new MaterialShapes(NUGGET.quantity, "dustTiny"); public static final MaterialShapes WIRE = new MaterialShapes(9); + public static final MaterialShapes BOLT = new MaterialShapes(9, "bolt"); public static final MaterialShapes BILLET = new MaterialShapes(NUGGET.quantity * 6, "billet"); public static final MaterialShapes INGOT = new MaterialShapes(NUGGET.quantity * 9, "ingot"); public static final MaterialShapes GEM = new MaterialShapes(INGOT.quantity, "gem"); diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 9526c475f..969e6eb4e 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -96,7 +96,7 @@ public class Mats { //Base metals public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, BOLT, INGOT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); @@ -113,10 +113,10 @@ public class Mats { public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE, WELDEDPLATE); //Alloys - public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); + public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, BOLT, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT); - public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(BOLT, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, DENSEWIRE, BLOCK); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index bb377f685..315ac6eef 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -175,7 +175,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.reactor_core, 1), new AStack[] {new OreDictStack(PB.ingot(), 8), new OreDictStack(BE.ingot(), 6), new OreDictStack(STEEL.plate(), 16), new OreDictStack(OreDictManager.getReflector(), 8), new OreDictStack(FIBER.ingot(), 2) },100); makeRecipe(new ComparableStack(ModItems.rtg_unit, 1), new AStack[] {new ComparableStack(ModItems.thermo_element, 2), new ComparableStack(ModItems.board_copper, 1), new OreDictStack(PB.ingot(), 2), new OreDictStack(STEEL.plate(), 2), new ComparableStack(ModItems.circuit_copper, 1), },100); makeRecipe(new ComparableStack(ModItems.levitation_unit, 1), new AStack[] {new ComparableStack(ModItems.coil_copper, 4), new ComparableStack(ModItems.coil_tungsten, 2), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.nugget_schrabidium, 2), },100); - makeRecipe(new ComparableStack(ModItems.drill_titanium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(DURA.ingot(), 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack(TI.plate(), 6), },100); + makeRecipe(new ComparableStack(ModItems.drill_titanium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(DURA.ingot(), 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack(TI.plate(), 6), },100); makeRecipe(new ComparableStack(ModItems.entanglement_kit, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(DURA.ingot(), 4), new OreDictStack(CU.plate(), 24), new ComparableStack(ModBlocks.hadron_coil_gold, 4), new OreDictStack(Fluids.XENON.getDict(1_000))},200); makeRecipe(new ComparableStack(ModItems.dysfunctional_reactor, 1), new AStack[] {new OreDictStack(STEEL.plate(), 15), new OreDictStack(PB.ingot(), 5), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack("dyeBrown", 3), },200); makeRecipe(new ComparableStack(ModItems.missile_assembly, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.hull_small_aluminium, 4), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.wire_aluminium, 6), new ComparableStack(ModItems.canister_full, 3, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); @@ -253,11 +253,11 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_3, 1), new AStack[] {new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_afterburn_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new ComparableStack(ModItems.crystal_lithium, 16), new OreDictStack(KEY_CIRCUIT_BISMUTH), }, 500); makeRecipe(new ComparableStack(ModItems.redcoil_capacitor, 1), new AStack[] {new OreDictStack(GOLD.plate(), 3), new ComparableStack(ModItems.fuse, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), new ComparableStack(ModItems.coil_advanced_alloy, 6), new ComparableStack(Blocks.redstone_block, 2), },200); makeRecipe(new ComparableStack(ModItems.titanium_filter, 1), new AStack[] {new OreDictStack(PB.plate(), 3), new ComparableStack(ModItems.fuse, 1), new ComparableStack(ModItems.wire_tungsten, 4), new OreDictStack(TI.plate(), 6), new OreDictStack(U238.ingot(), 2), },200); - makeRecipe(new ComparableStack(ModItems.part_lithium, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(LI.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_beryllium, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(BE.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_carbon, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(COAL.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_copper, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(CU.dust(), 1), },50); - makeRecipe(new ComparableStack(ModItems.part_plutonium, 1), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new ComparableStack(ModItems.powder_plutonium, 1), },50); + makeRecipe(new ComparableStack(ModItems.part_lithium, 8), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(LI.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_beryllium, 8), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(BE.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_carbon, 8), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(COAL.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_copper, 8), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(CU.dust(), 1), },50); + makeRecipe(new ComparableStack(ModItems.part_plutonium, 8), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new ComparableStack(ModItems.powder_plutonium, 1), },50); makeRecipe(new ComparableStack(ModItems.thermo_element, 1), new AStack[] {new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.wire_red_copper, 2), new OreDictStack(NETHERQUARTZ.dust(), 2), }, 60); makeRecipe(new ComparableStack(ModItems.plate_dalekanium, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), },50); makeRecipe(new ComparableStack(ModBlocks.block_meteor, 1), new AStack[] {new ComparableStack(ModItems.fragment_meteorite, 100), },500); @@ -287,7 +287,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.hull_big_steel, 4), new OreDictStack(ANY_TAR.any(), 4), },150); makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); - makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), !exp ? new OreDictStack(STEEL.plate528(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), !exp ? new OreDictStack(DURA.ingot(), 4) : new OreDictStack(DESH.heavyComp(), 1), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); + makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), !exp ? new OreDictStack(STEEL.plate528(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), !exp ? new OreDictStack(DURA.ingot(), 4) : new OreDictStack(DESH.heavyComp(), 1), new OreDictStack(DURA.bolt(), 8), new ComparableStack(ModBlocks.machine_battery, 3), },400); makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {!exp ? new ComparableStack(ModItems.hull_big_steel, 1) : new OreDictStack(STEEL.heavyComp(), 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack(MINGRADE.ingot(), 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {!exp ? new ComparableStack(ModItems.hull_big_steel, 4) : new OreDictStack(STEEL.heavyComp(), 2), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600); makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate528(), 12), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300); @@ -441,7 +441,7 @@ public class AssemblerRecipes { new OreDictStack(CU.ingot(), 8), new ComparableStack(ModItems.generator_steel, 1), new ComparableStack(ModItems.tank_steel, 2), - new ComparableStack(ModItems.bolt_tungsten, 8), + new OreDictStack(W.bolt(), 16), new ComparableStack(ModItems.wire_red_copper, 24), new ComparableStack(ModItems.circuit_copper, 1) }, 300); @@ -449,13 +449,13 @@ public class AssemblerRecipes { new OreDictStack(STEEL.plate(), 16), new OreDictStack(CU.plate(), 4), new OreDictStack(W.ingot(), 8), - new ComparableStack(ModItems.bolt_tungsten, 16) + new OreDictStack(W.bolt(), 16) }, 200); makeRecipe(new ComparableStack(ModItems.piston_set, 1, EnumPistonType.DURA.ordinal()), new AStack[] { new OreDictStack(DURA.ingot(), 24), new OreDictStack(TI.plate(), 8), new OreDictStack(W.ingot(), 8), - new ComparableStack(ModItems.bolt_dura_steel, 16) + new OreDictStack(DURA.bolt(), 16) }, 200); makeRecipe(new ComparableStack(ModItems.piston_set, 1, EnumPistonType.DESH.ordinal()), new AStack[] { new OreDictStack(DESH.ingot(), 24), @@ -672,8 +672,8 @@ public class AssemblerRecipes { new OreDictStack(PB.plate(), 16), new OreDictStack(ALLOY.plate(), 4), new OreDictStack(ANY_RUBBER.ingot(), 4), - new ComparableStack(ModItems.bolt_tungsten, 8), - new ComparableStack(ModItems.bolt_dura_steel, 8), + new OreDictStack(W.bolt(), 16), + new OreDictStack(DURA.bolt(), 16), new ComparableStack(ModItems.motor, 3), }, 200); @@ -683,8 +683,8 @@ public class AssemblerRecipes { new OreDictStack(PB.plate(), 6), new OreDictStack(ALLOY.plate(), 3), new OreDictStack(ANY_RUBBER.ingot(), 3), - new ComparableStack(ModItems.bolt_tungsten, 3), - new ComparableStack(ModItems.bolt_dura_steel, 3), + new OreDictStack(W.bolt(), 4), + new OreDictStack(DURA.bolt(), 4), new ComparableStack(ModItems.motor, 1), }, 300); @@ -692,7 +692,7 @@ public class AssemblerRecipes { new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 8), new OreDictStack(ALLOY.plate(), 4), - new ComparableStack(ModItems.bolt_tungsten, 4), + new OreDictStack(W.bolt(), 8), new ComparableStack(ModItems.motor, 2), }, 200); @@ -922,7 +922,7 @@ public class AssemblerRecipes { new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(KEY_ANYPANE, 64), new ComparableStack(ModItems.motor, 18), - new ComparableStack(ModItems.bolt_tungsten, 12), + new OreDictStack(W.bolt(), 16), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.circuit_gold, 3) }, 400); @@ -1189,7 +1189,7 @@ public class AssemblerRecipes { new OreDictStack(ANY_RUBBER.ingot(), 36), new OreDictStack(STEEL.block(), 24), new ComparableStack(ModItems.motor_desh, 16), - new ComparableStack(ModItems.bolt_dura_steel, 12), + new OreDictStack(DURA.bolt(), 16), new OreDictStack(KEY_YELLOW, 4) }, 1200); @@ -1198,16 +1198,16 @@ public class AssemblerRecipes { new OreDictStack(W.ingot(), 8), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ANY_RUBBER.ingot(), 4), - new ComparableStack(ModItems.bolt_dura_steel, 8), + new OreDictStack(DURA.bolt(), 16), new ComparableStack(ModItems.motor, 2) }, 200); - makeRecipe(new ComparableStack(ModBlocks.large_vehicle_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 36), new OreDictStack("plateAdvancedAlloy", 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 4), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack("dyeGreen", 4)}, 500); - makeRecipe(new ComparableStack(ModBlocks.water_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new OreDictStack("plateAdvancedAlloy", 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack("dyeRed", 1)}, 500); - makeRecipe(new ComparableStack(ModBlocks.qe_containment, 1), new AStack[]{new OreDictStack(STEEL.plate(), 24), new OreDictStack("plateAdvancedAlloy", 8), new ComparableStack(ModItems.plate_polymer, 8), new OreDictStack("blockSteel", 2), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.bolt_dura_steel, 16), new OreDictStack("dyeBlack", 4)}, 500); - makeRecipe(new ComparableStack(ModBlocks.qe_sliding_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack("dyeWhite", 4), new ComparableStack(Blocks.glass, 4)}, 200); - makeRecipe(new ComparableStack(ModBlocks.round_airlock_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 32), new OreDictStack("plateAdvancedAlloy", 12), new ComparableStack(ModItems.plate_polymer, 12), new OreDictStack("blockSteel", 6), new ComparableStack(ModItems.motor, 6), new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack("dyeGreen", 4)}, 500); - makeRecipe(new ComparableStack(ModBlocks.secure_access_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 48), new OreDictStack("plateAdvancedAlloy", 16), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 6), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.bolt_dura_steel, 24), new OreDictStack("dyeRed", 8)}, 1000); - makeRecipe(new ComparableStack(ModBlocks.sliding_seal_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new OreDictStack("plateAdvancedAlloy", 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new OreDictStack("dyeWhite", 2)}, 500); + makeRecipe(new ComparableStack(ModBlocks.large_vehicle_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 36), new OreDictStack("plateAdvancedAlloy", 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 4), new ComparableStack(ModItems.motor, 4), new OreDictStack(DURA.bolt(), 16), new OreDictStack("dyeGreen", 4)}, 500); + makeRecipe(new ComparableStack(ModBlocks.water_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new OreDictStack("plateAdvancedAlloy", 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack("dyeRed", 1)}, 500); + makeRecipe(new ComparableStack(ModBlocks.qe_containment, 1), new AStack[]{new OreDictStack(STEEL.plate(), 24), new OreDictStack("plateAdvancedAlloy", 8), new ComparableStack(ModItems.plate_polymer, 8), new OreDictStack("blockSteel", 2), new ComparableStack(ModItems.motor, 4), new OreDictStack(DURA.bolt(), 32), new OreDictStack("dyeBlack", 4)}, 500); + makeRecipe(new ComparableStack(ModBlocks.qe_sliding_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 1), new ComparableStack(ModItems.motor, 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack("dyeWhite", 4), new ComparableStack(Blocks.glass, 4)}, 200); + makeRecipe(new ComparableStack(ModBlocks.round_airlock_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 32), new OreDictStack("plateAdvancedAlloy", 12), new ComparableStack(ModItems.plate_polymer, 12), new OreDictStack("blockSteel", 6), new ComparableStack(ModItems.motor, 6), new OreDictStack(DURA.bolt(), 16), new OreDictStack("dyeGreen", 4)}, 500); + makeRecipe(new ComparableStack(ModBlocks.secure_access_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 48), new OreDictStack("plateAdvancedAlloy", 16), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 6), new ComparableStack(ModItems.motor, 4), new OreDictStack(DURA.bolt(), 32), new OreDictStack("dyeRed", 8)}, 1000); + makeRecipe(new ComparableStack(ModBlocks.sliding_seal_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new OreDictStack("plateAdvancedAlloy", 4), new ComparableStack(ModItems.plate_polymer, 2), new OreDictStack("blockSteel", 1), new ComparableStack(ModItems.motor, 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack("dyeWhite", 2)}, 500); if(Loader.isModLoaded("Mekanism")) { diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 5e7cdbbfa..b581d0ee8 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -121,8 +121,8 @@ public class ChemplantRecipes extends SerializableRecipe { new FluidStack(Fluids.XYLENE, 250), new FluidStack(Fluids.PHOSGENE, 250)) .inputItems( - new ComparableStack(com.hbm.blocks.ModBlocks.reinforced_glass), - new ComparableStack(com.hbm.items.ModItems.bolt_tungsten, 4)) + new ComparableStack(ModBlocks.reinforced_glass), + new OreDictStack(STEEL.bolt(), 4)) .outputItems(new ItemStack(com.hbm.blocks.ModBlocks.reinforced_laminate))); recipes.add(new ChemRecipe(94, "PC", 100) .inputFluids( diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 18e76b6a0..86921434e 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -518,7 +518,7 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.plate_dineutronium, 4))).setTier(7)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack(TI.plate(), 2), new OreDictStack(STEEL.ingot(), 1), new ComparableStack(ModItems.bolt_tungsten, 2)}, + new AStack[] {new OreDictStack(TI.plate(), 2), new OreDictStack(STEEL.ingot(), 1), new OreDictStack(STEEL.bolt(), 4)}, new AnvilOutput(new ItemStack(ModItems.plate_armor_titanium))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] {new OreDictStack(IRON.plate(), 4), new OreDictStack(BIGMT.plate(), 2), new ComparableStack(ModItems.plate_armor_titanium, 1)}, diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 5f5629bf3..4e0445c06 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -324,12 +324,11 @@ public class ModItems { public static Item plate_mixed; public static Item plate_paa; public static Item board_copper; - public static Item bolt_dura_steel; public static Item pipes_steel; public static Item drill_titanium; public static Item plate_dalekanium; public static Item plate_euphemium; - public static Item bolt_tungsten; + public static Item bolt; public static Item bolt_compound; public static Item plate_polymer; public static Item plate_kevlar; @@ -2593,12 +2592,11 @@ public class ModItems { plate_mixed = new Item().setUnlocalizedName("plate_mixed").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_mixed"); plate_paa = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("plate_paa").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_paa"); board_copper = new Item().setUnlocalizedName("board_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":board_copper"); - bolt_dura_steel = new Item().setUnlocalizedName("bolt_dura_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bolt_dura_steel"); pipes_steel = new Item().setUnlocalizedName("pipes_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pipes_steel"); drill_titanium = new Item().setUnlocalizedName("drill_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":drill_titanium"); plate_dalekanium = new Item().setUnlocalizedName("plate_dalekanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_dalekanium"); plate_euphemium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("plate_euphemium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_euphemium"); - bolt_tungsten = new Item().setUnlocalizedName("bolt_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bolt_tungsten"); + bolt = new ItemAutogen(MaterialShapes.BOLT).setUnlocalizedName("bolt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bolt"); bolt_compound = new Item().setUnlocalizedName("bolt_compound").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bolt_compound"); plate_polymer = new Item().setUnlocalizedName("plate_polymer").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_polymer"); plate_kevlar = new Item().setUnlocalizedName("plate_kevlar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_kevlar"); @@ -6045,8 +6043,7 @@ public class ModItems { GameRegistry.registerItem(board_copper, board_copper.getUnlocalizedName()); //Bolts - GameRegistry.registerItem(bolt_dura_steel, bolt_dura_steel.getUnlocalizedName()); - GameRegistry.registerItem(bolt_tungsten, bolt_tungsten.getUnlocalizedName()); + GameRegistry.registerItem(bolt, bolt.getUnlocalizedName()); GameRegistry.registerItem(bolt_compound, bolt_compound.getUnlocalizedName()); //Cloth diff --git a/src/main/java/com/hbm/items/special/ItemAutogen.java b/src/main/java/com/hbm/items/special/ItemAutogen.java index 1e1f1d075..7e91dd37f 100644 --- a/src/main/java/com/hbm/items/special/ItemAutogen.java +++ b/src/main/java/com/hbm/items/special/ItemAutogen.java @@ -64,7 +64,7 @@ public class ItemAutogen extends Item { @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { - + for(NTMMaterial mat : Mats.orderedList) { if(mat.shapes.contains(this.shape)) { list.add(new ItemStack(item, 1, mat.id)); diff --git a/src/main/java/com/hbm/items/tool/ItemBoltgun.java b/src/main/java/com/hbm/items/tool/ItemBoltgun.java index 34440b70a..437aa97e2 100644 --- a/src/main/java/com/hbm/items/tool/ItemBoltgun.java +++ b/src/main/java/com/hbm/items/tool/ItemBoltgun.java @@ -1,6 +1,6 @@ package com.hbm.items.tool; -import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.material.Mats; import com.hbm.items.IAnimatedItem; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; @@ -50,14 +50,14 @@ public class ItemBoltgun extends Item implements IAnimatedItem { World world = player.worldObj; if(!entity.isEntityAlive()) return false; - Item[] bolts = new Item[] { ModItems.bolt_dura_steel, ModItems.bolt_tungsten, Item.getItemFromBlock(ModBlocks.steel_beam) }; + ItemStack[] bolts = new ItemStack[] { Mats.MAT_STEEL.make(ModItems.bolt), Mats.MAT_TUNGSTEN.make(ModItems.bolt), Mats.MAT_DURA.make(ModItems.bolt)}; - for(Item item : bolts) { + for(ItemStack bolt : bolts) { for(int i = 0; i < player.inventory.getSizeInventory(); i++) { ItemStack slot = player.inventory.getStackInSlot(i); if(slot != null) { - if(slot.getItem() == item) { + if(slot.getItem() == bolt.getItem() && slot.getItemDamage() == bolt.getItemDamage()) { if(!world.isRemote) { world.playSoundAtEntity(entity, "hbm:item.boltgun", 1.0F, 1.0F); player.inventory.decrStackSize(i, 1); diff --git a/src/main/java/com/hbm/lib/HbmChestContents.java b/src/main/java/com/hbm/lib/HbmChestContents.java index 812a66848..59e7bf136 100644 --- a/src/main/java/com/hbm/lib/HbmChestContents.java +++ b/src/main/java/com/hbm/lib/HbmChestContents.java @@ -4,6 +4,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.Mats; import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.ModItems; @@ -54,7 +55,8 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.hull_big_steel, 0, 1, 2, 2), new WeightedRandomChestContent(ModItems.hull_small_steel, 0, 1, 3, 3), new WeightedRandomChestContent(ModItems.plate_polymer, 0, 1, 6, 5), - new WeightedRandomChestContent(ModItems.bolt_tungsten, 0, 1, 4, 3), + new WeightedRandomChestContent(ModItems.bolt, Mats.MAT_STEEL.id, 4, 16, 3), + new WeightedRandomChestContent(ModItems.bolt, Mats.MAT_TUNGSTEN.id, 4, 16, 3), new WeightedRandomChestContent(ModItems.board_copper, 0, 1, 2, 4), new WeightedRandomChestContent(ModItems.coil_tungsten, 0, 1, 2, 5), new WeightedRandomChestContent(ModItems.motor, 0, 1, 2, 4), diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 176368f1b..d3887d25e 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -89,14 +89,15 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.big_sword, 1), new Object[] { "QIQ", "QIQ", "GSG", 'G', Items.gold_ingot, 'S', KEY_STICK, 'I', Items.iron_ingot, 'Q', Items.quartz}); addRecipeAuto(new ItemStack(ModItems.board_copper, 1), new Object[] { "TTT", "TTT", 'T', CU.plate() }); - addRecipeAuto(Mats.MAT_IRON.make(ModItems.plate_cast), new Object[] { "BPB", "BPB", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); + addRecipeAuto(Mats.MAT_IRON.make(ModItems.plate_cast), new Object[] { "BPB", "BPB", "BPB", 'B', STEEL.bolt(), 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_red, 1), new Object[] { "C", "R", "C", 'C', ModItems.hazmat_cloth, 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_grey, 1), new Object[] { " P ", "ICI", " L ", 'C', ModItems.hazmat_cloth_red, 'P', IRON.plate(), 'L', PB.plate(), 'I', ANY_RUBBER.ingot() }); addRecipeAuto(new ItemStack(ModItems.asbestos_cloth, 8), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', BR.dust(), 'C', Blocks.wool }); - addRecipeAuto(new ItemStack(ModItems.bolt_dura_steel, 4), new Object[] { "D", "D", 'D', DURA.ingot()}); + addRecipeAuto(Mats.MAT_TUNGSTEN.make(ModItems.bolt, 16), new Object[] { "D", "D", 'D', W.ingot()}); + addRecipeAuto(Mats.MAT_STEEL.make(ModItems.bolt, 16), new Object[] { "D", "D", 'D', STEEL.ingot()}); + addRecipeAuto(Mats.MAT_DURA.make(ModItems.bolt, 16), new Object[] { "D", "D", 'D', DURA.ingot()}); addRecipeAuto(new ItemStack(ModItems.pipes_steel, 1), new Object[] { "B", "B", "B", 'B', STEEL.block() }); - addRecipeAuto(new ItemStack(ModItems.bolt_tungsten, 4), new Object[] { "D", "D", 'D', W.ingot() }); - addRecipeAuto(new ItemStack(ModItems.bolt_compound, 1), new Object[] { "PDP", "PTP", "PDP", 'D', ModItems.bolt_dura_steel, 'T', ModItems.bolt_tungsten, 'P', TI.plate() }); + addRecipeAuto(new ItemStack(ModItems.bolt_compound, 1), new Object[] { "PDP", "PTP", "PDP", 'D', DURA.bolt(), 'T', W.bolt(), 'P', TI.plate() }); addRecipeAuto(new ItemStack(ModItems.pellet_coal, 1), new Object[] { "PFP", "FOF", "PFP", 'P', COAL.dust(), 'F', Items.flint, 'O', ModBlocks.gravel_obsidian }); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 8), new Object[] { "DD", 'D', ANY_PLASTIC.ingot() }); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 8), new Object[] { "DD", 'D', ANY_RUBBER.ingot() }); @@ -249,7 +250,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.wrench, 1), new Object[] { " S ", " IS", "I ", 'S', STEEL.ingot(), 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.wrench_flipped, 1), new Object[] { "S", "D", "W", 'S', Items.iron_sword, 'D', ModItems.ducttape, 'W', ModItems.wrench }); addRecipeAuto(new ItemStack(ModItems.memespoon, 1), new Object[] { "CGC", "PSP", "IAI", 'C', ModItems.powder_cloud, 'G', TH232.block(), 'P', ModItems.photo_panel, 'S', ModItems.steel_shovel, 'I', ModItems.plate_polymer, 'A', "ingotAustralium" }); - addShapelessAuto(new ItemStack(ModItems.cbt_device, 1), new Object[] { ModItems.bolt_tungsten, ModItems.wrench }); + addShapelessAuto(new ItemStack(ModItems.cbt_device, 1), new Object[] { STEEL.bolt(), ModItems.wrench }); addShapelessAuto(new ItemStack(ModItems.toothpicks, 3), new Object[] { KEY_STICK, KEY_STICK, KEY_STICK }); addRecipeAuto(new ItemStack(ModItems.ducttape, 6), new Object[] { "FSF", "SPS", "FSF", 'F', Items.string, 'S', KEY_SLIME, 'P', Items.paper }); @@ -326,15 +327,15 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.fraction_spacer), new Object[] { "BHB", 'H', ModItems.hull_big_steel, 'B', Blocks.iron_bars }); addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', ModItems.circuit_copper, 'M', ModItems.motor }); - addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate(), 'R', REDSTONE.dust() }); - addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', ModItems.bolt_tungsten }); + addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', STEEL.bolt(), 'P', IRON.plate(), 'R', REDSTONE.dust() }); + addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', STEEL.bolt() }); addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_advanced_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', ALLOY.plate(), 'I', ALLOY.ingot() }); - addRecipeAuto(new ItemStack(ModItems.arc_electrode, 1), new Object[] { "C", "T", "C", 'C', GRAPHITE.ingot(), 'T', ModItems.bolt_tungsten }); + addRecipeAuto(new ItemStack(ModItems.arc_electrode, 1), new Object[] { "C", "T", "C", 'C', GRAPHITE.ingot(), 'T', W.bolt() }); addRecipeAuto(new ItemStack(ModItems.arc_electrode_desh, 1), new Object[] { "C", "T", "C", 'C', DESH.dust(), 'T', ModItems.arc_electrode }); addRecipeAuto(new ItemStack(ModItems.detonator, 1), new Object[] { " W", "SC", "CE", 'S', STEEL.plate(), 'W', ModItems.wire_red_copper, 'C', ModItems.circuit_red_copper, 'E', STEEL.ingot() }); addShapelessAuto(new ItemStack(ModItems.detonator_multi, 1), new Object[] { ModItems.detonator, ModItems.circuit_targeting_tier3 }); @@ -350,8 +351,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.crystal_xen, 1), new Object[] { "EEE", "EIE", "EEE", 'E', ModItems.powder_power, 'I', EUPH.ingot() }); addShapelessAuto(new ItemStack(ModItems.fuse, 1), new Object[] { STEEL.plate(), ModItems.plate_polymer, ModItems.wire_tungsten }); - addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { ModItems.bolt_tungsten, NP237.dust(), I.dust(), TH232.dust(), AT.dust(), ND.dust(), ModItems.board_copper, ModItems.black_hole, CS.dust() }); - addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { ModItems.bolt_tungsten, ST.dust(), BR.dust(), CO.dust(), TS.dust(), NB.dust(), ModItems.board_copper, ModItems.black_hole, CE.dust() }); + addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { STEEL.bolt(), NP237.dust(), I.dust(), TH232.dust(), AT.dust(), ND.dust(), ModItems.board_copper, ModItems.black_hole, CS.dust() }); + addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { STEEL.bolt(), ST.dust(), BR.dust(), CO.dust(), TS.dust(), NB.dust(), ModItems.board_copper, ModItems.black_hole, CE.dust() }); addRecipeAuto(new ItemStack(ModItems.blades_steel, 1), new Object[] { " P ", "PIP", " P ", 'P', STEEL.plate(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.blades_titanium, 1), new Object[] { " P ", "PIP", " P ", 'P', TI.plate(), 'I', TI.ingot() }); @@ -383,8 +384,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mechanism_revolver_2, 1), new Object[] { "ATA", "TDT", "ATA", 'A', ALLOY.plate(), 'T', W.ingot(), 'D', DURA.ingot() }); addRecipeAuto(new ItemStack(ModItems.mechanism_rifle_1, 1), new Object[] { "ICI", "MAM", "ICI", 'I', IRON.plate(), 'C', CU.ingot(), 'A', AL.ingot(), 'M', ModItems.mechanism_revolver_1 }); addRecipeAuto(new ItemStack(ModItems.mechanism_rifle_2, 1), new Object[] { "ATA", "MDM", "ATA", 'A', ALLOY.plate(), 'T', W.ingot(), 'D', DURA.ingot(), 'M', ModItems.mechanism_revolver_2 }); - addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_1, 1), new Object[] { "TTT", "SSS", "BBI", 'T', TI.plate(), 'S', STEEL.ingot(), 'B', ModItems.bolt_tungsten, 'I', MINGRADE.ingot() }); - addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_2, 1), new Object[] { "TTT", "SSS", "BBI", 'T', ALLOY.plate(), 'S', ANY_PLASTIC.ingot(), 'B', ModItems.bolt_dura_steel, 'I', DESH.ingot() }); + addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_1, 1), new Object[] { "TTT", "SSS", "BBI", 'T', TI.plate(), 'S', STEEL.ingot(), 'B', W.bolt(), 'I', MINGRADE.ingot() }); + addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_2, 1), new Object[] { "TTT", "SSS", "BBI", 'T', ALLOY.plate(), 'S', ANY_PLASTIC.ingot(), 'B', W.bolt(), 'I', DESH.ingot() }); addRecipeAuto(new ItemStack(ModItems.mechanism_special, 1), new Object[] { "PCI", "ISS", "PCI", 'P', ModItems.plate_desh, 'C', ModItems.coil_advanced_alloy, 'I', STAR.ingot(), 'S', ModItems.circuit_targeting_tier3 }); addRecipeAuto(new ItemStack(ModBlocks.watz_pump, 1), new Object[] { "MPM", "PCP", "PSP", 'M', ModItems.motor_desh, 'P', ANY_RESISTANTALLOY.plateCast(), 'C', KEY_CIRCUIT_BISMUTH, 'S', ModItems.pipes_steel }); @@ -449,7 +450,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_brick), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', ModBlocks.brick_concrete }); - addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_compound), 4), new Object[] { "FBF", "BTB", "FBF", 'F', ModItems.bolt_tungsten, 'B', ModBlocks.reinforced_brick, 'T', ANY_TAR.any() }); + addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_compound), 4), new Object[] { "FBF", "BTB", "FBF", 'F', STEEL.bolt(), 'B', ModBlocks.reinforced_brick, 'T', ANY_TAR.any() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.glass }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass_pane), 16), new Object[] { " ", "GGG", "GGG", 'G', ModBlocks.reinforced_glass}); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_laminate_pane), 16), new Object[] { " ", "LLL", "LLL", 'L', ModBlocks.reinforced_laminate}); @@ -512,6 +513,14 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.rail_highspeed, 16), new Object[] { "S S", "SIS", "S S", 'S', STEEL.ingot(), 'I', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.rail_booster, 6), new Object[] { "S S", "CIC", "SRS", 'S', STEEL.ingot(), 'I', IRON.plate(), 'R', MINGRADE.ingot(), 'C', ModItems.coil_copper }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_straight, 4), new Object[] { "B B", "SSS", "W W", 'B', STEEL.bolt(), 'S', ModBlocks.steel_beam, 'W', KEY_SLAB }); + addShapelessAuto(new ItemStack(ModBlocks.rail_large_straight, 1), new Object[] { ModBlocks.rail_large_straight_short, ModBlocks.rail_large_straight_short, ModBlocks.rail_large_straight_short, ModBlocks.rail_large_straight_short, ModBlocks.rail_large_straight_short }); + addShapelessAuto(new ItemStack(ModBlocks.rail_large_straight_short, 5), new Object[] { ModBlocks.rail_large_straight }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_buffer, 1), new Object[] { " S", "RS", 'R', ModBlocks.rail_large_straight, 'S', STEEL.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve, 1), new Object[] { "R ", " R", 'R', ModBlocks.rail_large_straight }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_wide, 1), new Object[] { "RR", " R", 'R', ModBlocks.rail_large_straight }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_ramp, 1), new Object[] { " R ", "SSS", 'R', ModBlocks.rail_large_straight, 'S', KEY_SLAB }); + addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.bomb_multi), 1), new Object[] { "AAD", "CHF", "AAD", 'A', ModItems.wire_aluminium, 'C', ModItems.circuit_aluminium, 'H', ModItems.hull_small_aluminium, 'F', ModItems.fins_quad_titanium, 'D', KEY_WHITE }); addShapelessAuto(new ItemStack(ModItems.powder_ice, 4), new Object[] { Items.snowball, KNO.dust(), REDSTONE.dust() }); addShapelessAuto(new ItemStack(ModItems.powder_poison, 4), new Object[] { Items.spider_eye, REDSTONE.dust(), NETHERQUARTZ.gem() }); @@ -599,21 +608,21 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.wiring_red_copper, 1), new Object[] { "PPP", "PIP", "PPP", 'P', STEEL.plate(), 'I', STEEL.ingot() }); - addRecipeAuto(new ItemStack(ModItems.jetpack_tank, 1), new Object[] { " S ", "BKB", " S ", 'S', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'K', Fluids.KEROSENE.getDict(1000) }); - addRecipeAuto(new ItemStack(ModItems.gun_kit_1, 4), new Object[] { "I ", "LB", "P ", 'I', ANY_RUBBER.ingot(), 'L', Fluids.LUBRICANT.getDict(1000), 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); + addRecipeAuto(new ItemStack(ModItems.jetpack_tank, 1), new Object[] { " S ", "BKB", " S ", 'S', STEEL.plate(), 'B', STEEL.bolt(), 'K', Fluids.KEROSENE.getDict(1000) }); + addRecipeAuto(new ItemStack(ModItems.gun_kit_1, 4), new Object[] { "I ", "LB", "P ", 'I', ANY_RUBBER.ingot(), 'L', Fluids.LUBRICANT.getDict(1000), 'B', STEEL.bolt(), 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModItems.gun_kit_2, 1), new Object[] { "III", "GLG", "PPP", 'I', ANY_RUBBER.ingot(), 'L', ModItems.ducttape, 'G', ModItems.gun_kit_1, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModItems.igniter, 1), new Object[] { " W", "SC", "CE", 'S', STEEL.plate(), 'W', ModItems.wire_schrabidium, 'C', ModItems.circuit_schrabidium, 'E', EUPH.ingot() }); addRecipeAuto(new ItemStack(ModItems.watch, 1), new Object[] { "LYL", "EWE", "LYL", 'E', EUPH.ingot(), 'L', KEY_BLUE, 'W', Items.clock, 'Y', ModItems.billet_yharonite }); - addRecipeAuto(new ItemStack(ModItems.key, 1), new Object[] { " B", " B ", "P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten }); + addRecipeAuto(new ItemStack(ModItems.key, 1), new Object[] { " B", " B ", "P ", 'P', STEEL.plate(), 'B', STEEL.bolt() }); addRecipeAuto(new ItemStack(ModItems.key_kit, 1), new Object[] { "PKP", "DTD", "PKP", 'P', GOLD.plate(), 'K', ModItems.key, 'D', DESH.dust(), 'T', KEY_TOOL_SCREWDRIVER }); addRecipeAuto(new ItemStack(ModItems.key_red, 1), new Object[] { "RCA", "CIC", "KCR", 'R', KEY_RED, 'C', STAR.wireDense(), 'A', ModItems.gem_alexandrite, 'I', ModItems.ingot_chainsteel, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.pin, 1), new Object[] { "W ", " W", " W", 'W', ModItems.wire_copper }); - addRecipeAuto(new ItemStack(ModItems.padlock_rusty, 1), new Object[] { "I", "B", "I", 'I', IRON.ingot(), 'B', ModItems.bolt_tungsten }); - addRecipeAuto(new ItemStack(ModItems.padlock, 1), new Object[] { " P ", "PBP", "PPP", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten }); - addRecipeAuto(new ItemStack(ModItems.padlock_reinforced, 1), new Object[] { " P ", "PBP", "PDP", 'P', ALLOY.plate(), 'D', ModItems.plate_desh, 'B', ModItems.bolt_dura_steel }); - addRecipeAuto(new ItemStack(ModItems.padlock_unbreakable, 1), new Object[] { " P ", "PBP", "PDP", 'P', BIGMT.plate(), 'D', DIAMOND.gem(), 'B', ModItems.bolt_dura_steel }); + addRecipeAuto(new ItemStack(ModItems.padlock_rusty, 1), new Object[] { "I", "B", "I", 'I', IRON.ingot(), 'B', STEEL.bolt() }); + addRecipeAuto(new ItemStack(ModItems.padlock, 1), new Object[] { " P ", "PBP", "PPP", 'P', STEEL.plate(), 'B', STEEL.bolt() }); + addRecipeAuto(new ItemStack(ModItems.padlock_reinforced, 1), new Object[] { " P ", "PBP", "PDP", 'P', ALLOY.plate(), 'D', ModItems.plate_desh, 'B', DURA.bolt() }); + addRecipeAuto(new ItemStack(ModItems.padlock_unbreakable, 1), new Object[] { " P ", "PBP", "PDP", 'P', BIGMT.plate(), 'D', DIAMOND.gem(), 'B', DURA.bolt() }); addRecipeAuto(new ItemStack(ModItems.record_lc, 1), new Object[] { " S ", "SDS", " S ", 'S', ANY_PLASTIC.ingot(), 'D', LAPIS.dust() }); addRecipeAuto(new ItemStack(ModItems.record_ss, 1), new Object[] { " S ", "SDS", " S ", 'S', ANY_PLASTIC.ingot(), 'D', ALLOY.dust() }); @@ -648,7 +657,7 @@ public class CraftingManager { } //not so Temporary Crappy Recipes - addRecipeAuto(new ItemStack(ModItems.piston_selenium, 1), new Object[] { "SSS", "STS", " D ", 'S', STEEL.plate(), 'T', W.ingot(), 'D', ModItems.bolt_dura_steel }); + addRecipeAuto(new ItemStack(ModItems.piston_selenium, 1), new Object[] { "SSS", "STS", " D ", 'S', STEEL.plate(), 'T', W.ingot(), 'D', DURA.bolt() }); addShapelessAuto(new ItemStack(ModItems.catalyst_clay), new Object[] { IRON.dust(), Items.clay_ball }); addRecipeAuto(new ItemStack(ModItems.singularity_spark, 1), new Object[] { "XAX", "BCB", "XAX", 'X', ModItems.plate_dineutronium, 'A', ModItems.singularity_counter_resonant, 'B', ModItems.singularity_super_heated, 'C', ModItems.black_hole }); addRecipeAuto(new ItemStack(ModItems.singularity_spark, 1), new Object[] { "XBX", "ACA", "XBX", 'X', ModItems.plate_dineutronium, 'A', ModItems.singularity_counter_resonant, 'B', ModItems.singularity_super_heated, 'C', ModItems.black_hole }); @@ -696,7 +705,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.vent_chlorine_seal), new Object[] { "ISI", "SCS", "ISI", 'I', BIGMT.ingot(), 'S', STAR.ingot(), 'C', ModItems.chlorine_pinwheel }); addRecipeAuto(new ItemStack(ModBlocks.vent_cloud), new Object[] { "IGI", "ICI", "IDI", 'I', IRON.plate(), 'G', Blocks.iron_bars, 'C', ModItems.grenade_cloud, 'D', Blocks.dispenser }); addRecipeAuto(new ItemStack(ModBlocks.vent_pink_cloud), new Object[] { "IGI", "ICI", "IDI", 'I', IRON.plate(), 'G', Blocks.iron_bars, 'C', ModItems.grenade_pink_cloud, 'D', Blocks.dispenser }); - addRecipeAuto(new ItemStack(ModBlocks.spikes, 4), new Object[] { "FFF", "BBB", "TTT", 'F', Items.flint, 'B', ModItems.bolt_tungsten, 'T', W.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.spikes, 4), new Object[] { "BBB", "BBB", "TTT", 'B', STEEL.bolt(), 'T', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.custom_fall, 1), new Object[] { "IIP", "CHW", "IIP", 'I', ANY_RUBBER.ingot(), 'P', BIGMT.plate(), 'C', ModItems.circuit_red_copper, 'H', ModItems.hull_small_steel, 'W', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.machine_controller, 1), new Object[] { "TDT", "DCD", "TDT", 'T', ANY_RESISTANTALLOY.ingot(), 'D', ModItems.crt_display, 'C', ModItems.circuit_targeting_tier3 }); addRecipeAuto(new ItemStack(ModItems.containment_box, 1), new Object[] { "LUL", "UCU", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'C', ModBlocks.crate_steel }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index ec9ace167..b30c1b05b 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -25,6 +25,7 @@ import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.OreDictManager; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.Mats; import com.hbm.inventory.recipes.*; import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.loader.SerializableRecipe; @@ -270,6 +271,9 @@ public class MainRegistry { loadConfig(PreEvent); HbmPotion.init(); + /* For whichever fucking reason, replacing the bolt items with a bolt autogen broke all autogen items, most likely due to the load order. + * This "fix" just makes sure that the material system is loaded first no matter what. */ + Mats.MAT_STONE.getUnlocalizedName(); Fluids.init(); ModBlocks.mainRegistry(); ModItems.mainRegistry(); @@ -1183,6 +1187,8 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.brick_dungeon_tile"); ignoreMappings.add("hbm:tile.brick_dungeon_circle"); ignoreMappings.add("hbm:tile.bomber"); + ignoreMappings.add("hbm:item.bolt_tungsten"); + ignoreMappings.add("hbm:item.bolt_dura_steel"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 72e07c9b8..ea2a605c9 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1,7 +1,6 @@ package com.hbm.main; import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Random; @@ -13,10 +12,6 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; -import com.hbm.blocks.rail.IRailNTM; -import com.hbm.blocks.rail.IRailNTM.MoveContext; -import com.hbm.blocks.rail.IRailNTM.RailCheckType; -import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.config.GeneralConfig; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; @@ -69,7 +64,6 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.LoggingUtil; -import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.Jars; diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java index 7ab0e8af3..9417e7d8a 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java @@ -216,7 +216,6 @@ public class ItemRenderWeaponLilMac implements IItemRenderer { double s1 = 0.075D; GL11.glScaled(s1, s1, s1); - GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(0F, 1F, 0F); break; @@ -248,6 +247,7 @@ public class ItemRenderWeaponLilMac implements IItemRenderer { ResourceManager.lilmac.renderPart("Bullets"); ResourceManager.lilmac.renderPart("Casings"); ResourceManager.lilmac.renderPart("Pivot"); + ResourceManager.lilmac.renderPart("Hammer"); GL11.glShadeModel(GL11.GL_FLAT); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java index 6549a7e90..c9a3fe5b5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java @@ -212,15 +212,15 @@ public class TileEntityMachineRadGen extends TileEntityMachineBase implements IE static { for(int i = 0; i < ItemWasteShort.WasteClass.values().length; i++) { - fuels.put( new ComparableStack(ModItems.nuclear_waste_short, 1, i), new Triplet(150, 30 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted, 1, i))); - fuels.put( new ComparableStack(ModItems.nuclear_waste_short_tiny, 1, i), new Triplet(15, 3 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_short, 1, i), new Triplet(1500, 30 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_short_tiny, 1, i), new Triplet(150, 3 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, i))); } for(int i = 0; i < ItemWasteLong.WasteClass.values().length; i++) { - fuels.put( new ComparableStack(ModItems.nuclear_waste_long, 1, i), new Triplet(50, 2 * 60 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted, 1, i))); - fuels.put( new ComparableStack(ModItems.nuclear_waste_long_tiny, 1, i), new Triplet(5, 12 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted_tiny, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_long, 1, i), new Triplet(500, 2 * 60 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_long_tiny, 1, i), new Triplet(50, 12 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted_tiny, 1, i))); } - fuels.put( new ComparableStack(ModItems.scrap_nuclear), new Triplet(5, 5 * 60 * 20, null)); + fuels.put( new ComparableStack(ModItems.scrap_nuclear), new Triplet(50, 5 * 60 * 20, null)); } private Triplet grabResult(ItemStack stack) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index b5ce978b9..6921bf4f1 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1294,8 +1294,7 @@ item.bobmazon_tools.name=Bobmazon: Werkzeuge item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe item.bolt_compound.name=Verstärkte Turbinenwelle item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen -item.bolt_tungsten.name=Wolframbolzen -item.boltgun.name=Pneumatische Nietenpistole +item.bolt.name=%sbolzen item.bomb_caller.name=Luftschlag Zielmarker item.bomb_waffle.name=Massenvernichtungswaffel item.guide_book.name=Handbuch diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 845be3e2f..b95a4f36b 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1955,8 +1955,7 @@ item.bobmazon_materials.name=Bobmazon: Materials item.bobmazon_tools.name=Bobmazon: Tools item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives item.bolt_compound.name=Reinforced Turbine Shaft -item.bolt_dura_steel.name=High-Speed Steel Bolt -item.bolt_tungsten.name=Tungsten Bolt +item.bolt.name=%s Bolt item.boltgun.name=Pneumatic Rivet Gun item.bomb_caller.name=Airstrike Designator item.bomb_waffle.name=Waffle of Mass Destruction diff --git a/src/main/resources/assets/hbm/textures/blocks/block_advanced_alloy.png b/src/main/resources/assets/hbm/textures/blocks/block_advanced_alloy.png index 95ddf654fe6482557994ad29b2c392e7be0ad7f3..55e55b543a6b77fb53adec9f26735d09c8a91a76 100644 GIT binary patch delta 358 zcmV-s0h#{h0`>xs8Gi-<001BJ|6u?C00eVFNmK|32nc)#WQYI&0WC>HK~y-6rITBZ z!Y~X)kDE}5X$ukpq}c*HpZy@Q4(Nk6YU2553n`C}VJt<7<2bq3*O8xZv}r&D7K>q6 zJNT;HOa!WGnBzU0=WsYA03=C*F$NJq$Ly}_cxR^*Smz*w0DlZ~-}i45UYRXRXj>TX zmB z!jI!3P?lh`40gK=?>(yeR7CInOZWhJ4ps!}y8fKP0_Fmc8Gix*005AYXf^-<00d`2O+f$vv5yPiLEe_5;Bkj7fO`8r4b%bhEP?) or%_Ae9*`ae@WlHB?tj8o9}3KF$6||kBLDyZ07*qoM6N<$f)|{OH2?qr diff --git a/src/main/resources/assets/hbm/textures/blocks/block_red_copper.png b/src/main/resources/assets/hbm/textures/blocks/block_red_copper.png index 69c2027cb86c5248673957310ffaac3943c41fed..1a8d8d45090bf4e72c039d800b95d308e2c33b27 100644 GIT binary patch delta 377 zcmV-<0fzpq1BnBW8Gi-<001BJ|6u?C00eVFNmK|32nc)#WQYI&0YFJaK~y-6rIX!~ zf-nq)zd-A#fX=w;Gwk>@`|!^297?Ic2-%AYfXS7a1pwnVjpoMpcKq&N)n$Wz095(7lHqMRy7SmkR*1*=$lU%Q8X>@BajQg0d`2 z{6hg%#ajCWf1DQ)ilV?INy2isgSHK@ABWhsFX02EX^IgMD9g_&oX_Wp3ggMQx9)Kq z4;0!FBIg`twQ^c9-)@5ff#AJ-(+ut`O($o7BuQ=*ocjpAs$x#3(~}CophCY7RaFhS zuIq^781Fr1yPzfv%`>p|lo zA0UcR%tbV~`wPBG4b9MkFbI#L7`nS&)s&o$$ZkeTfgBFV*{Gb4$;G%vgM7bF4*Ekl zBbB^7Ep*!jBJ{kE1O!sBB5Z%&3q-|)WvfnM0_mHW9wb*4GW!+fjbW=gIn<*K0U zq#6}IHqw~9uYdOt$w>_Fd7$BVN_v6bqcXSCO`eZ|6){x$+|1Z;o|lsj?`=byE>HYp zO3vhNwgsG$jfexPM1`-d;Cnj@B*x21mm^x?cu3?j7enc2u%To=j@m*Sm>a_}Pzt9+ z1sv>uIVGE$_dMwG#hMa7O;?(G;C7gO#*_XSA`#esqZbs&4+sSxvLD9GH2?qr07*qo IM6N<$g1kVnhX4Qo diff --git a/src/main/resources/assets/hbm/textures/items/bolt.png b/src/main/resources/assets/hbm/textures/items/bolt.png new file mode 100644 index 0000000000000000000000000000000000000000..32c36b42eff3297d311994d4c2f42f8dbef9d8b5 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf Date: Sat, 6 Jan 2024 22:59:40 +0100 Subject: [PATCH 202/207] getting railed again --- changelog | 11 +- src/main/java/com/hbm/blocks/ModBlocks.java | 26 +- .../java/com/hbm/blocks/bomb/NukeN45.java | 137 -- .../blocks/rail/BlockRailWaypointSystem.java | 2 - ...dCurve.java => RailStandardCurveBase.java} | 21 +- .../blocks/rail/RailStandardCurveWide.java | 239 -- .../blocks/rail/RailStandardCurveWide7.java | 113 + .../blocks/rail/RailStandardCurveWide9.java | 148 ++ .../java/com/hbm/entity/EntityMappings.java | 1 + .../missile/EntityMissileAntiBallistic.java | 3 +- .../entity/missile/EntityMissileBaseNT.java | 3 +- .../entity/missile/EntityMissileDoomsday.java | 5 - .../entity/missile/EntityMissileShuttle.java | 5 - .../entity/missile/EntityMissileStealth.java | 33 + .../entity/missile/EntityMissileTier0.java | 5 - .../entity/missile/EntityMissileTier1.java | 5 - .../entity/missile/EntityMissileTier2.java | 5 - .../entity/missile/EntityMissileTier3.java | 5 - .../entity/missile/EntityMissileTier4.java | 5 - .../hbm/entity/train/EntityRailCarBase.java | 4 +- .../hbm/entity/train/EntityRailCarCargo.java | 16 +- .../entity/train/EntityRailCarRidable.java | 2 +- .../handler/guncfg/Gun44MagnumFactory.java | 2 +- .../inventory/container/ContainerNukeN45.java | 82 - .../com/hbm/inventory/gui/GUINukeN45.java | 73 - .../inventory/recipes/AssemblerRecipes.java | 1 + src/main/java/com/hbm/items/ModItems.java | 3 + .../java/com/hbm/items/special/ItemTrain.java | 28 +- src/main/java/com/hbm/main/ClientProxy.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 6 +- .../com/hbm/main/ModEventHandlerClient.java | 6 + .../java/com/hbm/main/ResourceManager.java | 5 +- .../java/com/hbm/packet/AuxGaugePacket.java | 6 - .../entity/rocket/RenderMissileGeneric.java | 4 + .../tileentity/RenderLaunchPadTier1.java | 6 +- .../hbm/render/tileentity/RenderNukeN45.java | 113 - .../render/tileentity/RenderSolarBoiler.java | 2 +- .../java/com/hbm/tileentity/TileMappings.java | 1 - .../tileentity/bomb/TileEntityLaunchPad.java | 4 +- .../tileentity/bomb/TileEntityNukeN45.java | 326 --- .../machine/TileEntityMachineArcWelder.java | 2 +- .../machine/TileEntityMachineRadarNT.java | 1 - .../machine/TileEntitySolarBoiler.java | 8 +- .../turret/TileEntityTurretBaseNT.java | 6 +- src/main/resources/assets/hbm/lang/de_DE.lang | 23 +- src/main/resources/assets/hbm/lang/en_US.lang | 30 +- .../blocks/rail_standard_bend_wide9.obj | 1966 +++++++++++++++++ .../assets/hbm/models/missile_stealth.obj | 384 ++++ .../hbm/textures/items/missile_stealth.png | Bin 0 -> 253 bytes .../hbm/textures/models/missile_stealth.png | Bin 0 -> 1126 bytes 50 files changed, 2772 insertions(+), 1112 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/bomb/NukeN45.java rename src/main/java/com/hbm/blocks/rail/{RailStandardCurve.java => RailStandardCurveBase.java} (94%) delete mode 100644 src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java create mode 100644 src/main/java/com/hbm/blocks/rail/RailStandardCurveWide7.java create mode 100644 src/main/java/com/hbm/blocks/rail/RailStandardCurveWide9.java create mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileStealth.java delete mode 100644 src/main/java/com/hbm/inventory/container/ContainerNukeN45.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUINukeN45.java delete mode 100644 src/main/java/com/hbm/render/tileentity/RenderNukeN45.java delete mode 100644 src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java create mode 100644 src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide9.obj create mode 100644 src/main/resources/assets/hbm/models/missile_stealth.obj create mode 100644 src/main/resources/assets/hbm/textures/items/missile_stealth.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_stealth.png diff --git a/changelog b/changelog index 76672bd58..8aa4089d6 100644 --- a/changelog +++ b/changelog @@ -7,6 +7,10 @@ * Will automatically do single ingredient 2x2 or 3x3 recipes like compressing ingots into blocks at up to 9 operations per tick * Input is strictly on the top and output on the bottom * The side acts as an output for the ingredients as a way to de-clog the funnel from leftover materials +* Stealth missile + * A missile that is not picked up by radars, turrets or ABMs + * Marginally more powerful than a tier 1 HE missile + * Somewhat expensive, takes a full minute to make in the assembler ## Changed * Updated russian localization @@ -23,14 +27,19 @@ * Now features proper animations for drawing the weapon, firing and reloading, as well as new sounds * Comes with a new and improved 3D model as well as a cylinder gap flash when firing * Is now part of the red room loot pool + * Durability has been drastically increased * Powder box recipes now produce 8 boxes from the same amount of ingredients, making cyclotron recipes more affordable * Buffed the radiation-powered engine, all valid fuels now produce 10x more energy per tick * Removed tungsten and HSS bolts as dedicated items, they are now a single bolt item that uses the autogen system * Regular steel is now also a valid bolt material which will replace tungsten in many recipes where tungsten just doesn't make sense * Bolts Are now 1/8 of an ingot instead of 1/2 which makes some recipes marginally cheaper, as well as making them equal to GregTech bolts * Bolts are oredicted and interchangeable, as well as recycleable in the crucible +* The N45 naval mine has been obliterated +* The solar boiler's ray rendering is no longer bound by particle settings, instead it will be disabled when fast graphics are enabaled +* The solar boiler's internal buffer has been reduced, its steam output is now capped at 10,000mB/t (which should be 20kHE/t or 0.8MHE/s) ## Fixed * Fixed afterburn upgrades not being craftable with bakelite * Fixed bismuth block not being properly oredicted -* Powder detectors that are used in the same network as diodes should now be somewhat less wrong \ No newline at end of file +* Powder detectors that are used in the same network as diodes should now be somewhat less wrong +* Fixed horrifying gamebreaking issue that would frequently cause crashes, corrupt worlds and bluescreen PCs where the red copper block and the advanced alloy block had inconsistent colors diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index f67d7a6f0..3b7a3fd1c 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -664,7 +664,6 @@ public class ModBlocks { public static Block nuke_custom; public static Block nuke_solinium; public static Block nuke_n2; - public static Block nuke_n45; public static Block nuke_fstbmb; public static Block bomb_multi; @@ -1174,7 +1173,8 @@ public class ModBlocks { public static Block rail_large_straight; public static Block rail_large_straight_short; public static Block rail_large_curve; - public static Block rail_large_curve_wide; + public static Block rail_large_curve_7; + public static Block rail_large_curve_9; public static Block rail_large_ramp; public static Block rail_large_buffer; public static Block rail_large_switch; @@ -1803,7 +1803,6 @@ public class ModBlocks { nuke_custom = new NukeCustom(Material.iron).setBlockName("nuke_custom").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":custom"); nuke_solinium = new NukeSolinium(Material.iron).setBlockName("nuke_solinium").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_solinium"); nuke_n2 = new NukeN2(Material.iron).setBlockName("nuke_n2").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_n2"); - nuke_n45 = new NukeN45(Material.iron).setBlockName("nuke_n45").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":code"); nuke_fstbmb = new NukeBalefire(Material.iron).setBlockName("nuke_fstbmb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_fstbmb"); bomb_multi = new BombMulti(Material.iron).setBlockName("bomb_multi").setCreativeTab(MainRegistry.nukeTab).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":bomb_multi1"); @@ -2252,14 +2251,15 @@ public class ModBlocks { rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster"); rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); - rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_curve_wide = new RailStandardCurveWide().setBlockName("rail_large_curve_wide").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); - rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve = new RailStandardCurveBase().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve_7 = new RailStandardCurveWide7().setBlockName("rail_large_curve_7").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve_9 = new RailStandardCurveWide9().setBlockName("rail_large_curve_9").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); + rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); @@ -2994,7 +2994,6 @@ public class ModBlocks { GameRegistry.registerBlock(nuke_fleija, nuke_fleija.getUnlocalizedName()); GameRegistry.registerBlock(nuke_solinium, nuke_solinium.getUnlocalizedName()); GameRegistry.registerBlock(nuke_n2, nuke_n2.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_n45, nuke_n45.getUnlocalizedName()); GameRegistry.registerBlock(nuke_fstbmb, nuke_fstbmb.getUnlocalizedName()); GameRegistry.registerBlock(nuke_custom, nuke_custom.getUnlocalizedName()); @@ -3561,7 +3560,8 @@ public class ModBlocks { register(rail_large_straight); register(rail_large_straight_short); register(rail_large_curve); - register(rail_large_curve_wide); + register(rail_large_curve_7); + register(rail_large_curve_9); register(rail_large_ramp); register(rail_large_buffer); register(rail_large_switch); diff --git a/src/main/java/com/hbm/blocks/bomb/NukeN45.java b/src/main/java/com/hbm/blocks/bomb/NukeN45.java deleted file mode 100644 index df47fae70..000000000 --- a/src/main/java/com/hbm/blocks/bomb/NukeN45.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.hbm.blocks.bomb; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.IBomb; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.bomb.TileEntityNukeN45; - -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class NukeN45 extends BlockContainer implements IBomb { - - private final Random field_149933_a = new Random(); - private static boolean keepInventory = false; - - public NukeN45(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityNukeN45(); - } - - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { - if(!keepInventory) { - ISidedInventory tileentityfurnace = (ISidedInventory) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - - if(tileentityfurnace != null) { - for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if(itemstack != null) { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while(itemstack.stackSize > 0) { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if(j1 > itemstack.stackSize) { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if(itemstack.hasTagCompound()) { - entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) { - return true; - } else if(!player.isSneaking()) { - TileEntityNukeN45 entity = (TileEntityNukeN45) world.getTileEntity(x, y, z); - if(entity != null) { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } - } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.nuke_n45); - } - - @Override - public int getRenderType() { - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - @Override - public BombReturnCode explode(World world, int x, int y, int z) { - - if(!world.isRemote) { - TileEntityNukeN45 entity = (TileEntityNukeN45) world.getTileEntity(x, y, z); - - if(entity.getType() == 100) { - entity.primed = true; - return BombReturnCode.TRIGGERED; - } else if(!entity.primed && entity.getType() > 0) { - int t = entity.getType(); - entity.clearSlots(); - entity.explode(world, x, y, z, t); - return BombReturnCode.DETONATED; - } - - return BombReturnCode.ERROR_MISSING_COMPONENT; - } - - return BombReturnCode.UNDEFINED; - } -} diff --git a/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java b/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java index 7ef5f4fb0..9cf026cd1 100644 --- a/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java +++ b/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java @@ -158,8 +158,6 @@ public abstract class BlockRailWaypointSystem extends BlockDummyable implements currentPos = nextNode; } - if(!world.isRemote) PacketDispatcher.wrapper.sendToAllAround(new PlayerInformPacket(ChatBuilder.start("" + distRemaining).color(EnumChatFormatting.RED).flush(), 1), new TargetPoint(world.provider.dimensionId, x, y, z, 50)); - info.overshoot = distRemaining; info.pos = new BlockPos(currentPos.xCoord, currentPos.yCoord, currentPos.zCoord); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveBase.java similarity index 94% rename from src/main/java/com/hbm/blocks/rail/RailStandardCurve.java rename to src/main/java/com/hbm/blocks/rail/RailStandardCurveBase.java index e4e394469..101c7801f 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurveBase.java @@ -22,9 +22,11 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRenderBlock { +public class RailStandardCurveBase extends BlockDummyable implements IRailNTM, IRenderBlock { + + protected int width = 4; - public RailStandardCurve() { + public RailStandardCurveBase() { super(Material.iron); } @@ -59,8 +61,8 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend ForgeDirection dir = ForgeDirection.getOrientation(meta); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - double turnRadius = 4D; - double axisDist = 4.5D; + double turnRadius = width; + double axisDist = width + 0.5D; Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist; @@ -105,7 +107,7 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend double angleOvershoot = effAngle - 90D; moveAngle -= angleOvershoot; double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)).yaw((float) moveAngle); + info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * width + rot.offsetX * (width + 1), y, cZ - dir.offsetZ * width + rot.offsetZ * (width + 1))).yaw((float) moveAngle); return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y + 0.1875, axisZ - dir.offsetZ * turnRadius); } @@ -130,7 +132,7 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend @Override public int[] getDimensions() { - return new int[] {0, 0, 4, 0, 4, 0}; + return new int[] {0, 0, width, 0, width, 0}; } @Override @@ -208,9 +210,10 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend @Override @SideOnly(Side.CLIENT) public void renderInventory(Tessellator tessellator, Block block, int metadata) { - GL11.glScaled(0.2, 0.2, 0.2); - GL11.glTranslated(2.5, -0.0625, -1.5); - GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + GL11.glRotated(45, 0, 1, 0); + GL11.glRotated(60, 1, 0, 0); + GL11.glTranslated(2, 0, 2); tessellator.startDrawingQuads(); ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, 0, false); tessellator.draw(); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java deleted file mode 100644 index 221832df8..000000000 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.hbm.blocks.rail; - -import org.lwjgl.opengl.GL11; - -import com.hbm.blocks.BlockDummyable; -import com.hbm.lib.Library; -import com.hbm.main.ResourceManager; -import com.hbm.render.util.ObjUtil; -import com.hbm.util.fauxpointtwelve.BlockPos; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; -import net.minecraft.util.Vec3; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.client.model.obj.WavefrontObject; -import net.minecraftforge.common.util.ForgeDirection; - -public class RailStandardCurveWide extends BlockDummyable implements IRailNTM, IRenderBlock { - - public RailStandardCurveWide() { - super(Material.iron); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return null; - } - - @Override - public int getRenderType() { - return renderID; - } - - @Override - public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { - return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); - } - - @Override - public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { - return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); - } - - /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ - public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { - int[] pos = this.findCore(world, x, y, z); - if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); - int cX = pos[0]; - int cY = pos[1]; - int cZ = pos[2]; - int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; - ForgeDirection dir = ForgeDirection.getOrientation(meta); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - double turnRadius = 6D; - double axisDist = 6.5D; - - Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); - double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist; - double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * axisDist; - - Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ); - dist = dist.normalize(); - dist.xCoord *= turnRadius; - dist.zCoord *= turnRadius; - - double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90; - - if(speed == 0) { - info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle); - return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); - } - - double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90; - if(dir == Library.NEG_X) angleDeg -= 90; - if(dir == Library.POS_X) angleDeg += 90; - if(dir == Library.POS_Z) angleDeg += 180; - angleDeg = MathHelper.wrapAngleTo180_double(angleDeg); - double length90Deg = turnRadius * Math.PI / 2D; - double angularChange = speed / length90Deg * 90D; - - ForgeDirection moveDir = ForgeDirection.UNKNOWN; - - if(Math.abs(motionX) > Math.abs(motionZ)) { - moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X; - } else { - moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; - } - - if(moveDir == dir || moveDir == rot.getOpposite()) { - angularChange *= -1; - } - - double effAngle = angleDeg + angularChange; - moveAngle += angularChange; - - if(effAngle > 90) { - double angleOvershoot = effAngle - 90D; - moveAngle -= angleOvershoot; - double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 6 + rot.offsetX * 7, y, cZ - dir.offsetZ * 6 + rot.offsetZ * 7)).yaw((float) moveAngle); - return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y + 0.1875, axisZ - dir.offsetZ * turnRadius); - } - - if(effAngle < 0) { - double angleOvershoot = -effAngle; - moveAngle -= angleOvershoot; - double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle); - return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y + 0.1875, axisZ -rot.offsetZ * turnRadius); - } - - double radianChange = angularChange * Math.PI / 180D; - dist.rotateAroundY((float) radianChange); - - return Vec3.createVectorHelper(axisX + dist.xCoord, y + 0.1875, axisZ + dist.zCoord); - } - - @Override - public TrackGauge getGauge(World world, int x, int y, int z) { - return TrackGauge.STANDARD; - } - - @Override - public int[] getDimensions() { - return new int[] {0, 0, 6, 0, 6, 0}; - } - - @Override - public int getOffset() { - return 0; - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); - return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); - } - - @Override - protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { - - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - dir = dir.getOpposite(); - - int dX = dir.offsetX; - int dZ = dir.offsetZ; - int rX = rot.offsetX; - int rZ = rot.offsetZ; - - return world.getBlock(x + dX, y, z + dZ).isReplaceable(world, x + dX, y, z + dZ) && - world.getBlock(x + rX, y, z + rZ).isReplaceable(world, x + rX, y, z + rZ) && - world.getBlock(x + dX + rX, y, z + dZ + rZ).isReplaceable(world, x + dX + rX, y, z + dZ + rZ) && - world.getBlock(x + dX + rX * 2, y, z + dZ + rZ * 2).isReplaceable(world, x + dX + rX * 2, y, z + dZ + rZ * 2) && - world.getBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ).isReplaceable(world, x + dX * 2 + rX, y, z + dZ * 2 + rZ) && - world.getBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2).isReplaceable(world, x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2) && - world.getBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ).isReplaceable(world, x + dX * 3 + rX, y, z + dZ * 3 + rZ) && - world.getBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2).isReplaceable(world, x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2) && - world.getBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3).isReplaceable(world, x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3) && - world.getBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3).isReplaceable(world, x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3) && - world.getBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3).isReplaceable(world, x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3) && - world.getBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4).isReplaceable(world, x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4) && - world.getBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4).isReplaceable(world, x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4); - } - - @Override - protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { - - BlockDummyable.safeRem = true; - - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - dir = dir.getOpposite(); - - int dX = dir.offsetX; - int dZ = dir.offsetZ; - int rX = rot.offsetX; - int rZ = rot.offsetZ; - - world.setBlock(x + dX, y, z + dZ, this, dir.ordinal(), 3); - world.setBlock(x + dX * 2, y, z + dZ * 2, this, dir.ordinal(), 3); - world.setBlock(x + rX, y, z + rZ, this, rot.ordinal(), 3); - world.setBlock(x + dX + rX, y, z + dZ + rZ, this, rot.ordinal(), 3); - world.setBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ, this, rot.ordinal(), 3); - world.setBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ, this, dir.ordinal(), 3); - world.setBlock(x + dX * 4 + rX, y, z + dZ * 4 + rZ, this, dir.ordinal(), 3); - world.setBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2, this, rot.ordinal(), 3); - world.setBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2, this, dir.ordinal(), 3); - world.setBlock(x + dX * 4 + rX * 2, y, z + dZ * 4 + rZ * 2, this, dir.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 2, y, z + dZ * 5 + rZ * 2, this, dir.ordinal(), 3); - world.setBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3, this, rot.ordinal(), 3); - world.setBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3, this, dir.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 3, y, z + dZ * 5 + rZ * 3, this, dir.ordinal(), 3); - world.setBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4, this, rot.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4, this, dir.ordinal(), 3); - world.setBlock(x + dX * 6 + rX * 4, y, z + dZ * 6 + rZ * 4, this, dir.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 5, y, z + dZ * 5 + rZ * 5, this, rot.ordinal(), 3); - world.setBlock(x + dX * 5 + rX * 6, y, z + dZ * 5 + rZ * 6, this, rot.ordinal(), 3); - world.setBlock(x + dX * 6 + rX * 5, y, z + dZ * 6 + rZ * 5, this, rot.ordinal(), 3); - world.setBlock(x + dX * 6 + rX * 6, y, z + dZ * 6 + rZ * 6, this, rot.ordinal(), 3); - - BlockDummyable.safeRem = false; - } - - @Override - @SideOnly(Side.CLIENT) - public void renderInventory(Tessellator tessellator, Block block, int metadata) { - GL11.glScaled(0.12, 0.12, 0.12); - GL11.glTranslated(2.5, -0.0625, -3); - GL11.glRotated(90, 0, 1, 0); - tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide, block.getIcon(1, 0), tessellator, 0, false); - tessellator.draw(); - } - - @Override - @SideOnly(Side.CLIENT) - public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { - if(meta < 12) return; - float rotation = 0; - if(meta == 15) rotation = 90F / 180F * (float) Math.PI; - if(meta == 12) rotation = 180F / 180F * (float) Math.PI; - if(meta == 14) rotation = 270F / 180F * (float) Math.PI; - tessellator.addTranslation(x + 0.5F, y, z + 0.5F); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide, block.getIcon(1, 0), tessellator, rotation, true); - tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); - } -} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide7.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide7.java new file mode 100644 index 000000000..99c370760 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide7.java @@ -0,0 +1,113 @@ +package com.hbm.blocks.rail; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardCurveWide7 extends RailStandardCurveBase { + + public RailStandardCurveWide7() { + super(); + this.width = 6; + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + return world.getBlock(x + dX, y, z + dZ).isReplaceable(world, x + dX, y, z + dZ) && + world.getBlock(x + rX, y, z + rZ).isReplaceable(world, x + rX, y, z + rZ) && + world.getBlock(x + dX + rX, y, z + dZ + rZ).isReplaceable(world, x + dX + rX, y, z + dZ + rZ) && + world.getBlock(x + dX + rX * 2, y, z + dZ + rZ * 2).isReplaceable(world, x + dX + rX * 2, y, z + dZ + rZ * 2) && + world.getBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ).isReplaceable(world, x + dX * 2 + rX, y, z + dZ * 2 + rZ) && + world.getBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2).isReplaceable(world, x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2) && + world.getBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ).isReplaceable(world, x + dX * 3 + rX, y, z + dZ * 3 + rZ) && + world.getBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2).isReplaceable(world, x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2) && + world.getBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3).isReplaceable(world, x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3).isReplaceable(world, x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3) && + world.getBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3).isReplaceable(world, x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4).isReplaceable(world, x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4) && + world.getBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4).isReplaceable(world, x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4); + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + BlockDummyable.safeRem = true; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + world.setBlock(x + dX, y, z + dZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2, y, z + dZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + rX, y, z + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX + rX, y, z + dZ + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 4 + rX, y, z + dZ * 4 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2, this, rot.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 2, y, z + dZ * 4 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 2, y, z + dZ * 5 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3, this, rot.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3, this, dir.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 3, y, z + dZ * 5 + rZ * 3, this, dir.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4, this, rot.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4, this, dir.ordinal(), 3); + world.setBlock(x + dX * 6 + rX * 4, y, z + dZ * 6 + rZ * 4, this, dir.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 5, y, z + dZ * 5 + rZ * 5, this, rot.ordinal(), 3); + world.setBlock(x + dX * 5 + rX * 6, y, z + dZ * 5 + rZ * 6, this, rot.ordinal(), 3); + world.setBlock(x + dX * 6 + rX * 5, y, z + dZ * 6 + rZ * 5, this, rot.ordinal(), 3); + world.setBlock(x + dX * 6 + rX * 6, y, z + dZ * 6 + rZ * 6, this, rot.ordinal(), 3); + + BlockDummyable.safeRem = false; + } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glScaled(0.225, 0.225, 0.225); + GL11.glRotated(45, 0, 1, 0); + GL11.glRotated(60, 1, 0, 0); + GL11.glTranslated(3, 0, 3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide7, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide7, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide9.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide9.java new file mode 100644 index 000000000..bb48b111b --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurveWide9.java @@ -0,0 +1,148 @@ +package com.hbm.blocks.rail; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.model.obj.WavefrontObject; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardCurveWide9 extends RailStandardCurveBase { + + public RailStandardCurveWide9() { + super(); + this.width = 8; + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + int[][] dim = new int[][] { + {1, 0}, + {2, 0}, + {0, 1}, + {1, 1}, + {2, 1}, + {3, 1}, + {4, 1}, + {2, 2}, + {3, 2}, + {4, 2}, + {5, 2}, + {4, 3}, + {5, 3}, + {5, 4}, + {6, 3}, + {6, 4}, + {7, 4}, + {6, 5}, + {7, 5}, + {6, 6}, + {7, 6}, + {7, 7}, + {7, 8}, + {8, 6}, + {8, 7}, + {8, 8}, + }; + + for(int[] array : dim) { + if(!world.getBlock(x + dX * array[0] + rX * array[1], y, z + dZ * array[0] + rZ * array[1]).isReplaceable(world, x + dX * array[0] + rX * array[1], y, z + dZ * array[0] + rZ * array[1])) return false; + } + + return true; + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + BlockDummyable.safeRem = true; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + int d = dir.ordinal(); + int r = rot.ordinal(); + + int[][] dim = new int[][] { + {1, 0, d}, + {2, 0, d}, + {0, 1, r}, + {1, 1, d}, + {2, 1, d}, + {3, 1, d}, + {4, 1, d}, + {2, 2, r}, + {3, 2, r}, + {4, 2, r}, + {5, 2, d}, + {4, 3, r}, + {5, 3, r}, + {5, 4, r}, + {6, 3, d}, + {6, 4, d}, + {7, 4, d}, + {6, 5, r}, + {7, 5, r}, + {6, 6, r}, + {7, 6, r}, + {7, 7, r}, + {7, 8, r}, + {8, 6, d}, + {8, 7, d}, + {8, 8, d}, + }; + + for(int[] array : dim) { + world.setBlock(x + dX * array[0] + rX * array[1], y, z + dZ * array[0] + rZ * array[1], this, array[2], 3); + } + + BlockDummyable.safeRem = false; + } + + @Override + @SideOnly(Side.CLIENT) + public void renderInventory(Tessellator tessellator, Block block, int metadata) { + GL11.glScaled(0.175, 0.175, 0.175); + GL11.glRotated(45, 0, 1, 0); + GL11.glRotated(60, 1, 0, 0); + GL11.glTranslated(4, 0, 4); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide9, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) { + if(meta < 12) return; + float rotation = 0; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide9, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + } +} diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 904f4920c..36892a6b0 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -223,6 +223,7 @@ public class EntityMappings { addEntity(EntityAcidBomb.class, "entity_acid_bomb", 1000); addEntity(EntityFallingBlockNT.class, "entity_falling_block_nt", 1000); addEntity(EntityBoatRubber.class, "entity_rubber_boat", 250, false); + addEntity(EntityMissileStealth.class, "entity_missile_stealth", 1000); addEntity(EntityItemWaste.class, "entity_item_waste", 100); addEntity(EntityItemBuoyant.class, "entity_item_buoyant", 100); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index b0f2ef6be..3dbb048d8 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -108,7 +108,8 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements for(Entity e : TileEntityMachineRadarNT.matchingEntities) { if(e.dimension != this.dimension) continue; - if(!(e instanceof EntityMissileBaseNT)) continue; + if(!(e instanceof EntityMissileBaseNT)) continue; //can only lock onto missiles + if(e instanceof EntityMissileStealth) continue; //cannot lack onto missiles with stealth coating Vec3 vec = Vec3.createVectorHelper(e.posX - posX, e.posY - posY, e.posZ - posZ); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java index 631f75cb0..70ac4e39c 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseNT.java @@ -15,7 +15,6 @@ import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.main.MainRegistry; -import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,7 +30,7 @@ import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.common.ForgeChunkManager.Type; -public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable, IRadarDetectableNT { +public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectableNT { public int startX; public int startZ; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java index 63e14e7f3..552f88379 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java @@ -105,11 +105,6 @@ public class EntityMissileDoomsday extends EntityMissileBaseNT { return null; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } - @Override public String getUnlocalizedName() { return "radar.target.doomsday"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java index 356588f64..7a0b89ef8 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java @@ -61,11 +61,6 @@ public class EntityMissileShuttle extends EntityMissileBaseNT { return new ItemStack(ModItems.missile_generic); } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } - @Override public String getUnlocalizedName() { return "radar.target.shuttle"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileStealth.java b/src/main/java/com/hbm/entity/missile/EntityMissileStealth.java new file mode 100644 index 000000000..a04805c51 --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileStealth.java @@ -0,0 +1,33 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.material.Mats; +import com.hbm.items.ItemEnums.EnumAshType; +import com.hbm.items.ModItems; + +import api.hbm.entity.IRadarDetectableNT; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityMissileStealth extends EntityMissileBaseNT { + + public EntityMissileStealth(World world) { super(world); } + public EntityMissileStealth(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + + @Override + public List getDebris() { + List list = new ArrayList(); + list.add(new ItemStack(ModItems.bolt, 4, Mats.MAT_STEEL.id)); + return list; + } + + @Override public String getUnlocalizedName() { return "radar.target.tier1"; } + @Override public int getBlipLevel() { return IRadarDetectableNT.TIER1; } + @Override public boolean canBeSeenBy(Object radar) { return false; } + + @Override public void onImpact() { this.explodeStandard(20F, 24, false, true); } + @Override public ItemStack getDebrisRareDrop() { return DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC); } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java index d1d6ecba9..f0239aa53 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -37,11 +37,6 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER0; - } - @Override public String getUnlocalizedName() { return "radar.target.tier0"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java index 6fb39039e..99de6e68e 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java @@ -25,11 +25,6 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER1; - } - @Override public String getUnlocalizedName() { return "radar.target.tier1"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java index a0b71922f..421e5ba35 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier2.java @@ -29,11 +29,6 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER2; - } - @Override public String getUnlocalizedName() { return "radar.target.tier2"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java index e046a2f6c..0c7342cc2 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier3.java @@ -31,11 +31,6 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER3; - } - @Override public String getUnlocalizedName() { return "radar.target.tier3"; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java index 826f4143f..fb56144ad 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier4.java @@ -30,11 +30,6 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT { return list; } - @Override - public RadarTargetType getTargetType() { - return RadarTargetType.MISSILE_TIER4; - } - @Override public String getUnlocalizedName() { return "radar.target.tier4"; diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index a913f1c64..ef6b7f526 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -131,7 +131,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { data.setInteger("color", 0x0000ff); data.setFloat("scale", 1.5F); data.setString("text", id + " (#" + train.ltuIndex + ")"); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, train.posX, train.posY + 1, train.posZ), new TargetPoint(this.dimension, train.posX, train.posY + 1, train.posZ, 50)); + //PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, train.posX, train.posY + 1, train.posZ), new TargetPoint(this.dimension, train.posX, train.posY + 1, train.posZ, 50)); } } @@ -891,6 +891,6 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { @SideOnly(Side.CLIENT) public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { List text = new ArrayList(); - ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); //none of this shit is going to work anyway + //ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java index 4bf5f2ee2..65deb95b5 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java @@ -22,7 +22,7 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II this.dataWatcher.addObject(10, new Integer(0)); } - public int countVacantSlots() { + public int countOccupiedSlots() { int slots = 0; for(int i = 0; i < this.getSizeInventory(); i++) { @@ -53,11 +53,9 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II this.slots[slot] = null; } - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); return itemstack; } } else { - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); return null; } } @@ -67,10 +65,8 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II if(this.slots[slot] != null) { ItemStack itemstack = this.slots[slot]; this.slots[slot] = null; - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); return itemstack; } else { - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); return null; } } @@ -82,8 +78,12 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II if(stack != null && stack.stackSize > this.getInventoryStackLimit()) { stack.stackSize = this.getInventoryStackLimit(); } - - if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + } + + @Override + public void onUpdate() { + super.onUpdate(); + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countOccupiedSlots()); } @Override @@ -142,7 +142,7 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II } } - this.dataWatcher.updateObject(10, this.countVacantSlots()); + this.dataWatcher.updateObject(10, this.countOccupiedSlots()); } @Override diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java index da9a66f4e..8ac621cf2 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -291,6 +291,6 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo { text.add("Front: " + this.coupledFront); text.add("Back: " + this.coupledBack);*/ text.add("Nearest seat: " + this.getNearestSeat(MainRegistry.proxy.me())); - ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); + //ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index d6baf146d..5beeccad4 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -83,7 +83,7 @@ public class Gun44MagnumFactory { GunConfiguration config = getBaseConfig(); - config.durability = 4000; + config.durability = 31_000; config.name = "ifScope"; config.manufacturer = EnumGunManufacturer.IF; diff --git a/src/main/java/com/hbm/inventory/container/ContainerNukeN45.java b/src/main/java/com/hbm/inventory/container/ContainerNukeN45.java deleted file mode 100644 index 9829f3210..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerNukeN45.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.tileentity.bomb.TileEntityNukeN45; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerNukeN45 extends Container { - - private TileEntityNukeN45 diFurnace; - - public ContainerNukeN45(InventoryPlayer invPlayer, TileEntityNukeN45 tedf) { - - diFurnace = tedf; - - //Payload - this.addSlotToContainer(new Slot(tedf, 0, 44, 35)); - //Range up - this.addSlotToContainer(new Slot(tedf, 1, 116, 35)); - - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); - } - } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); - } - } - - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if (par2 <= 1) { - if (!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true)) - { - return null; - } - } - else if (!this.mergeItemStack(var5, 0, 2, false)) - { - return null; - } - - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUINukeN45.java b/src/main/java/com/hbm/inventory/gui/GUINukeN45.java deleted file mode 100644 index 055cc2a30..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUINukeN45.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.hbm.inventory.gui; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerNukeN45; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.bomb.TileEntityNukeN45; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; - -public class GUINukeN45 extends GuiInfoContainer { - - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_n45.png"); - private TileEntityNukeN45 diFurnace; - - public GUINukeN45(InventoryPlayer invPlayer, TileEntityNukeN45 tedf) { - super(new ContainerNukeN45(invPlayer, tedf)); - diFurnace = tedf; - - this.xSize = 176; - this.ySize = 168; - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - String[] text = new String[] { "The first slot holds the payload.", - "Acceptable payloads:", - " -Det Cord", - " -TNT", - " -Explosive Charge", - " -Nuclear Charge", - "Using detonator while in mine mode will", - "arm the mine, set to explode when", - "it detects a large entity nearby."}; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); - - String[] text1 = new String[] { "The second slot is for green machine", - "upgrades. Entity detection range increases", - "by 5 blocks for every level.", - "When left empty, the mine can not be armed", - "an will behave like a regular bomb." }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1); - - if(diFurnace.primed) - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 121, guiTop + 22, 6, 8, mouseX, mouseY, new String[]{ "Mine armed!" } ); - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(diFurnace.primed) { - drawTexturedModalRect(guiLeft + 121, guiTop + 22, 176, 0, 6, 8); - } - - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); - } -} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 315ac6eef..a8c0b40ae 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -197,6 +197,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit_tantalium, 5) }, 600); makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); + makeRecipe(new ComparableStack(ModItems.missile_stealth, 1), new AStack[] { new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(CU.plate(), 10), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit_gold), new OreDictStack(STEEL.bolt(), 32) },1200); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel), new ComparableStack(ModItems.circuit_gold, 1) },600); makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new ComparableStack(ModItems.board_copper, 12), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.hull_small_steel, 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit_gold, 2), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 4e0445c06..12dafee58 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1321,6 +1321,7 @@ public class ModItems { public static Item missile_schrabidium; public static Item missile_emp; public static Item missile_shuttle; + public static Item missile_stealth; public static Item mp_thruster_10_kerosene; public static Item mp_thruster_10_kerosene_tec; @@ -3940,6 +3941,7 @@ public class ModItems { missile_schrabidium = new Item().setUnlocalizedName("missile_schrabidium").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_schrabidium"); missile_emp = new Item().setUnlocalizedName("missile_emp").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_emp"); missile_shuttle = new ItemMissileShuttle().setUnlocalizedName("missile_shuttle").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_shuttle"); + missile_stealth = new Item().setUnlocalizedName("missile_stealth").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_stealth"); missile_carrier = new Item().setUnlocalizedName("missile_carrier").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_carrier"); missile_soyuz = new ItemSoyuz().setUnlocalizedName("missile_soyuz").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz"); missile_soyuz_lander = new ItemCustomLore().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander"); @@ -6862,6 +6864,7 @@ public class ModItems { GameRegistry.registerItem(missile_schrabidium, missile_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(missile_emp, missile_emp.getUnlocalizedName()); GameRegistry.registerItem(missile_shuttle, missile_shuttle.getUnlocalizedName()); + GameRegistry.registerItem(missile_stealth, missile_stealth.getUnlocalizedName()); GameRegistry.registerItem(missile_carrier, missile_carrier.getUnlocalizedName()); GameRegistry.registerItem(missile_soyuz, missile_soyuz.getUnlocalizedName()); GameRegistry.registerItem(missile_soyuz_lander, missile_soyuz_lander.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/ItemTrain.java b/src/main/java/com/hbm/items/special/ItemTrain.java index 007d31a91..6ecadd476 100644 --- a/src/main/java/com/hbm/items/special/ItemTrain.java +++ b/src/main/java/com/hbm/items/special/ItemTrain.java @@ -44,9 +44,9 @@ public class ItemTrain extends ItemEnumMulti { public static enum EnumTrainType { // Engine Gauge Max Speed Accel. Eng. Brake Parking Brake - CARGO_TRAM(TrainCargoTram.class, "Electric", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes"), + CARGO_TRAM(TrainCargoTram.class, "Electric", "Standard Gauge", "10m/s", "0.2m/s²", "<1m/s", "Yes"), CARGO_TRAM_TRAILER(TrainCargoTramTrailer.class, null, "Standard Gauge", "Yes", null, null, "No"), - TUNNEL_BORE(TrainTunnelBore.class, "NONE", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes"); + TUNNEL_BORE(TrainTunnelBore.class, "NONE", "Standard Gauge", "10m/s", "0.2m/s²", "<1m/s", "Yes"); public Class train; public String engine; @@ -78,20 +78,24 @@ public class ItemTrain extends ItemEnumMulti { try { train = type.train.getConstructor(World.class).newInstance(world); } catch(Exception e) { } if(train != null && train.getGauge() == ((IRailNTM) b).getGauge(world, x, y, z)) { - if(!world.isRemote) { - train.setPosition(x + fx, y + fy, z + fz); - BlockPos anchor = train.getCurrentAnchorPos(); - train.rotationYaw = entity.rotationYaw; - Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE, 0)); + + train.setPosition(x + fx, y + fy, z + fz); + BlockPos anchor = train.getCurrentAnchorPos(); + train.rotationYaw = entity.rotationYaw; + Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE, 0)); + if(corePos != null) { train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, train.getCollisionSpan() - train.getLengthSpan())); Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, train.getCollisionSpan() - train.getLengthSpan())); - train.rotationYaw = train.generateYaw(frontPos, backPos); - world.spawnEntityInWorld(train); + if(frontPos != null && backPos != null) { + if(!world.isRemote) { + train.rotationYaw = train.generateYaw(frontPos, backPos); + world.spawnEntityInWorld(train); + } + stack.stackSize--; + return true; + } } - - stack.stackSize--; - return true; } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c94f66408..c86d957a1 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -185,7 +185,6 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeSolinium.class, new RenderNukeSolinium()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeN2.class, new RenderNukeN2()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMan.class, new RenderNukeMan()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeN45.class, new RenderNukeN45()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBalefire.class, new RenderNukeFstbmb()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBombMulti.class, new RenderBombMulti()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMike.class, new RenderNukeMike()); @@ -668,6 +667,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileDecoy.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileStealth.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCluster.class, new RenderMissileGeneric()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index d3887d25e..8e9cce423 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -518,8 +518,12 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.rail_large_straight_short, 5), new Object[] { ModBlocks.rail_large_straight }); addRecipeAuto(new ItemStack(ModBlocks.rail_large_buffer, 1), new Object[] { " S", "RS", 'R', ModBlocks.rail_large_straight, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve, 1), new Object[] { "R ", " R", 'R', ModBlocks.rail_large_straight }); - addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_wide, 1), new Object[] { "RR", " R", 'R', ModBlocks.rail_large_straight }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_7, 1), new Object[] { "RR", " R", 'R', ModBlocks.rail_large_straight }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_9, 1), new Object[] { "RR ", " R", " R", 'R', ModBlocks.rail_large_straight }); addRecipeAuto(new ItemStack(ModBlocks.rail_large_ramp, 1), new Object[] { " R ", "SSS", 'R', ModBlocks.rail_large_straight, 'S', KEY_SLAB }); + addRecipeAuto(new ItemStack(ModBlocks.rail_large_switch, 1), new Object[] { "R R", " RR", " R", 'R', ModBlocks.rail_large_straight }); + addShapelessAuto(new ItemStack(ModBlocks.rail_large_switch), new Object[] { ModBlocks.rail_large_switch_flipped }); + addShapelessAuto(new ItemStack(ModBlocks.rail_large_switch_flipped), new Object[] { ModBlocks.rail_large_switch }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.bomb_multi), 1), new Object[] { "AAD", "CHF", "AAD", 'A', ModItems.wire_aluminium, 'C', ModItems.circuit_aluminium, 'H', ModItems.hull_small_aluminium, 'F', ModItems.fins_quad_titanium, 'D', KEY_WHITE }); addShapelessAuto(new ItemStack(ModItems.powder_ice, 4), new Object[] { Items.snowball, KNO.dust(), REDSTONE.dust() }); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index ea2a605c9..72e07c9b8 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1,6 +1,7 @@ package com.hbm.main; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Random; @@ -12,6 +13,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.MoveContext; +import com.hbm.blocks.rail.IRailNTM.RailCheckType; +import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.config.GeneralConfig; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; @@ -64,6 +69,7 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.LoggingUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.Jars; diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 89f81b449..b27890ada 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1047,6 +1047,7 @@ public class ResourceManager { //Missiles public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asDisplayList(); public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asDisplayList(); + public static final IModelCustom missileStealth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_stealth.obj"), false).asDisplayList(); public static final IModelCustom missileStrong = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_strong.obj")); public static final IModelCustom missileHuge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_huge.obj")); public static final IModelCustom missileNuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileNeon.obj")); @@ -1191,6 +1192,7 @@ public class ResourceManager { public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_bu.png"); public static final ResourceLocation missileV2_decoy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_decoy.png"); public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_abm.png"); + public static final ResourceLocation missileStealth_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_stealth.png"); public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong.png"); public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_emp.png"); public static final ResourceLocation missileStrong_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_inc.png"); @@ -1469,7 +1471,8 @@ public class ResourceManager { public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj")); public static final IModelCustom rail_standard_straight_short = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_short.obj")); public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj")); - public static final IModelCustom rail_standard_curve_wide = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide.obj")); + public static final IModelCustom rail_standard_curve_wide7 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide.obj")); + public static final IModelCustom rail_standard_curve_wide9 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide9.obj")); public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj")); public static final IModelCustom rail_standard_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_buffer.obj")); public static final IModelCustom rail_standard_switch = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_switch.obj")); diff --git a/src/main/java/com/hbm/packet/AuxGaugePacket.java b/src/main/java/com/hbm/packet/AuxGaugePacket.java index 09b5139c8..e97a68ce1 100644 --- a/src/main/java/com/hbm/packet/AuxGaugePacket.java +++ b/src/main/java/com/hbm/packet/AuxGaugePacket.java @@ -5,7 +5,6 @@ import com.hbm.items.weapon.ItemMissile.PartSize; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.bomb.TileEntityCompactLauncher; import com.hbm.tileentity.bomb.TileEntityLaunchTable; -import com.hbm.tileentity.bomb.TileEntityNukeN45; import com.hbm.tileentity.machine.TileEntityAMSBase; import com.hbm.tileentity.machine.TileEntityAMSEmitter; import com.hbm.tileentity.machine.TileEntityAMSLimiter; @@ -127,11 +126,6 @@ public class AuxGaugePacket implements IMessage { if(m.id == 0) boiler.heat = m.value; } - if (te instanceof TileEntityNukeN45) { - TileEntityNukeN45 nuke = (TileEntityNukeN45)te; - - nuke.primed = m.value == 1; - } if (te instanceof TileEntityCompactLauncher) { TileEntityCompactLauncher launcher = (TileEntityCompactLauncher)te; diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java index 1dff79e27..5e017039c 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java @@ -3,6 +3,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; import com.hbm.entity.missile.EntityMissileAntiBallistic; +import com.hbm.entity.missile.EntityMissileStealth; import com.hbm.entity.missile.EntityMissileTier1.*; import com.hbm.main.ResourceManager; @@ -28,6 +29,9 @@ public class RenderMissileGeneric extends Render { GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileABM.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); + } else if(entity instanceof EntityMissileStealth) { + bindTexture(ResourceManager.missileStealth_tex); + ResourceManager.missileStealth.renderAll(); } else { if(entity instanceof EntityMissileGeneric) diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index 8b6e245aa..f2b5f3cb8 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -32,19 +32,21 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { //TODO: add a registry for missile rendering to be reused here and for the entity renderer if(toRender.getItem() == ModItems.missile_generic) { - GL11.glScalef(1.0F, 1.0F, 1.0F); bindTexture(ResourceManager.missileV2_HE_tex); GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } if(toRender.getItem() == ModItems.missile_decoy) { - GL11.glScalef(1.0F, 1.0F, 1.0F); bindTexture(ResourceManager.missileV2_decoy_tex); GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } + if(toRender.getItem() == ModItems.missile_stealth) { + bindTexture(ResourceManager.missileStealth_tex); + ResourceManager.missileStealth.renderAll(); + } if(toRender.getItem() == ModItems.missile_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); bindTexture(ResourceManager.missileStrong_HE_tex); diff --git a/src/main/java/com/hbm/render/tileentity/RenderNukeN45.java b/src/main/java/com/hbm/render/tileentity/RenderNukeN45.java deleted file mode 100644 index 415d2c26f..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderNukeN45.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.tileentity.bomb.TileEntityNukeN45; - -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; - -public class RenderNukeN45 extends TileEntitySpecialRenderer { - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - boolean standing = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord - 1, tileEntity.zCoord).isNormalCube(); - - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.universal); - - GL11.glPushMatrix(); - - //GL11.glScaled(2.0D, 2.0D, 2.0D); - - if(standing) { - ResourceManager.n45_stand.renderAll(); - } - - double d = 0.25; - - if(((TileEntityNukeN45)tileEntity).primed) - d /= 4D; - - GL11.glTranslated(0, standing ? 1D : 0.5D, 0); - - ResourceManager.n45_globe.renderAll(); - - GL11.glRotated(90, 1, 0, 0); - - for(int i = 0; i < 8; i++) { - ResourceManager.n45_knob.renderAll(); - GL11.glTranslated(0, -d, 0); - ResourceManager.n45_rod.renderAll(); - GL11.glTranslated(0, d, 0); - GL11.glRotated(45, 0, 0, 1); - } - - GL11.glRotated(45, 0, 0, 1); - - for(int i = 0; i < 4; i++) { - GL11.glRotated(-45, 1, 0, 0); - ResourceManager.n45_knob.renderAll(); - GL11.glTranslated(0, -d, 0); - ResourceManager.n45_rod.renderAll(); - GL11.glTranslated(0, d, 0); - GL11.glRotated(45, 1, 0, 0); - GL11.glRotated(90, 0, 0, 1); - } - - GL11.glRotated(-90, 0, 0, 1); - - for(int i = 0; i < 4; i++) { - GL11.glRotated(45, 1, 0, 0); - ResourceManager.n45_knob.renderAll(); - GL11.glTranslated(0, -d, 0); - ResourceManager.n45_rod.renderAll(); - GL11.glTranslated(0, d, 0); - GL11.glRotated(-45, 1, 0, 0); - GL11.glRotated(90, 0, 0, 1); - } - - GL11.glRotated(45, 0, 0, 1); - GL11.glRotated(-90, 1, 0, 0); - - ResourceManager.n45_knob.renderAll(); - GL11.glTranslated(0, -d, 0); - ResourceManager.n45_rod.renderAll(); - GL11.glTranslated(0, d, 0); - - if(!standing) { - int depth = 0; - - for(int i = 0; i < 51; i++) { - - if(!tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord - i - 1, tileEntity.zCoord).isNormalCube()) { - depth++; - } else { - break; - } - } - - if(depth != 0 && depth < 51) { - - GL11.glTranslated(0, -1D, 0); - - for(int i = 0; i < depth + 1; i++) { - - ResourceManager.n45_chain.renderAll(); - GL11.glTranslated(0, -1, 0); - } - } - } - - GL11.glPopMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java b/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java index 0dad6fd63..54c3c1ad1 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java @@ -38,7 +38,7 @@ public class RenderSolarBoiler extends TileEntitySpecialRenderer { GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); - if(te instanceof TileEntitySolarBoiler && Minecraft.getMinecraft().gameSettings.particleSetting < 2) { + if(te instanceof TileEntitySolarBoiler && !Minecraft.getMinecraft().gameSettings.fancyGraphics) { TileEntitySolarBoiler boiler = (TileEntitySolarBoiler) te; Tessellator tess = Tessellator.instance; diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 1eef03148..ea45e6402 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -128,7 +128,6 @@ public class TileMappings { put(TileEntityLandmine.class, "tileentity_landmine"); put(TileEntityMachineKeyForge.class, "tileentity_key_forge"); put(TileEntitySellafield.class, "tileentity_sellafield_core"); - put(TileEntityNukeN45.class, "tileentity_n45"); put(TileEntityBlastDoor.class, "tileentity_blast_door"); put(TileEntitySafe.class, "tileentity_safe"); put(TileEntityMachineGasCent.class, "tileentity_gas_centrifuge"); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index aa3ae9816..6451f6f02 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -12,6 +12,7 @@ import com.hbm.entity.missile.EntityMissileAntiBallistic; import com.hbm.entity.missile.EntityMissileBaseNT; import com.hbm.entity.missile.EntityMissileDoomsday; import com.hbm.entity.missile.EntityMissileShuttle; +import com.hbm.entity.missile.EntityMissileStealth; import com.hbm.entity.missile.EntityMissileTier0.*; import com.hbm.entity.missile.EntityMissileTier1.*; import com.hbm.entity.missile.EntityMissileTier2.*; @@ -88,8 +89,9 @@ public class TileEntityLaunchPad extends TileEntityMachineBase implements IEnerg missiles.put(new ComparableStack(ModItems.missile_nuclear), EntityMissileNuclear.class); missiles.put(new ComparableStack(ModItems.missile_nuclear_cluster), EntityMissileMirv.class); missiles.put(new ComparableStack(ModItems.missile_volcano), EntityMissileVolcano.class); - + missiles.put(new ComparableStack(ModItems.missile_doomsday), EntityMissileDoomsday.class); + missiles.put(new ComparableStack(ModItems.missile_stealth), EntityMissileStealth.class); } public ItemStack toRender; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java deleted file mode 100644 index 07cd73d6a..000000000 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN45.java +++ /dev/null @@ -1,326 +0,0 @@ -package com.hbm.tileentity.bomb; - -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityNukeTorex; -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.inventory.container.ContainerNukeN45; -import com.hbm.inventory.gui.GUINukeN45; -import com.hbm.items.ModItems; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.potion.Potion; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; - -public class TileEntityNukeN45 extends TileEntity implements ISidedInventory, IGUIProvider { - - public ItemStack slots[]; - private String customName; - - public boolean primed = false; - - public TileEntityNukeN45() { - slots = new ItemStack[2]; - } - - @Override - public int getSizeInventory() { - return slots.length; - } - - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.nukeN45"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; - } - } - - @Override - public void openInventory() { - - } - - @Override - public void closeInventory() { - - } - - @Override - public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) { - return false; - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return new int[0]; - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return true; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - primed = nbt.getBoolean("primed"); - - slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - NBTTagList list = new NBTTagList(); - - nbt.setBoolean("primed", primed); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - public void updateEntity() { - - if(!worldObj.isRemote) { - - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, primed ? 1 : 0, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); - - if(primed) { - - if(getType() == 0) { - return; - } - - int rad = 0; - - if(slots[1] != null) { - - if(slots[1].getItem() == ModItems.upgrade_effect_1) - rad = 5; - if(slots[1].getItem() == ModItems.upgrade_effect_2) - rad = 10; - if(slots[1].getItem() == ModItems.upgrade_effect_3) - rad = 15; - } - - if(rad == 0) { - primed = false; - return; - } - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - rad, yCoord + 0.5 - rad, zCoord + 0.5 - rad, xCoord + 0.5 + rad, yCoord + 0.5 + rad, zCoord + 0.5 + rad)); - - for(Object o : list) { - - Entity e = (Entity)o; - - if(e instanceof EntityLivingBase && e.width * e.width * e.height >= 0.5 && !((EntityLivingBase)e).isPotionActive(Potion.invisibility.id)) { - int t = getType(); - this.clearSlots(); - explode(worldObj, xCoord, yCoord, zCoord, t); - break; - } - } - } - } - - } - - public static void explode(World world, int x, int y, int z, int type) { - - if(!world.isRemote) { - world.setBlockToAir(x, y, z); - - //System.out.println(type); - - switch(type) { - case 1: - world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 1.5F, true); - break; - case 2: - world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 4.0F, true); - break; - case 3: - ExplosionLarge.explode(world, x, y, z, 15, true, false, false); - break; - case 4: - world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, (int)(BombConfig.missileRadius * 0.75F), x + 0.5, y + 0.5, z + 0.5)); - EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius * 0.75F); - break; - } - } - } - - public int getType() { - - if(!primed && slots[1] != null) { - - if(slots[1].getItem() == ModItems.upgrade_effect_1 || - slots[1].getItem() == ModItems.upgrade_effect_2 || - slots[1].getItem() == ModItems.upgrade_effect_3) - return 100; - } - - if(slots[0] != null) { - - if(slots[0].getItem() == Item.getItemFromBlock(ModBlocks.det_cord)) - return 1; - if(slots[0].getItem() == Item.getItemFromBlock(Blocks.tnt)) - return 2; - if(slots[0].getItem() == Item.getItemFromBlock(ModBlocks.det_charge)) - return 3; - if(slots[0].getItem() == Item.getItemFromBlock(ModBlocks.det_nuke)) - return 4; - } - - return 0; - } - - public void clearSlots() { - for(int i = 0; i < slots.length; i++) - { - slots[i] = null; - } - } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerNukeN45(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUINukeN45(player.inventory, this); - } - -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 8bcfe28db..6a4d19226 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -354,7 +354,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements @Override public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electric_furnace_off)); + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_arc_welder)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 100 / 6) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 93d4a8218..d3bdc3ff1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -21,7 +21,6 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; -import com.hbm.saveddata.satellites.Satellite.Interfaces; import com.hbm.saveddata.satellites.SatelliteLaser; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java index ab91d87c3..0a41526db 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java @@ -30,18 +30,14 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui public HashSet secondary = new HashSet(); public TileEntitySolarBoiler() { - water = new FluidTank(Fluids.WATER, 16000, 0); - steam = new FluidTank(Fluids.STEAM, 1600000, 1); + water = new FluidTank(Fluids.WATER, 100, 0); + steam = new FluidTank(Fluids.STEAM, 10_000, 1); } @Override public void updateEntity() { if(!worldObj.isRemote) { - - //if(worldObj.getTotalWorldTime() % 5 == 0) { - fillFluidInit(Fluids.STEAM); - //} this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index fa55c200b..53496d00a 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -29,6 +29,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatExternal; import api.hbm.energy.IEnergyUser; +import api.hbm.entity.IRadarDetectableNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -642,6 +643,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(targetMachines) { + if(e instanceof IRadarDetectableNT && !((IRadarDetectableNT)e).canBeSeenBy(this)) return false; if(e instanceof EntityMissileBaseNT) return true; if(e instanceof EntityMissileCustom) return true; if(e instanceof EntityMinecart) return true; @@ -653,9 +655,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(targetPlayers ) { - if(e instanceof FakePlayer) - return false; - + if(e instanceof FakePlayer) return false; if(e instanceof EntityPlayer) return true; for(Class c : CompatExternal.turretTargetPlayer) if(c.isAssignableFrom(e.getClass())) return true; } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 6921bf4f1..3ab0b70e1 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1292,9 +1292,9 @@ item.bobmazon_machines.name=Bobmazon: Blöcke und Maschinen item.bobmazon_materials.name=Bobmazon: Ressourcen item.bobmazon_tools.name=Bobmazon: Werkzeuge item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe -item.bolt_compound.name=Verstärkte Turbinenwelle -item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen item.bolt.name=%sbolzen +item.bolt_compound.name=Verstärkte Turbinenwelle +item.boltgun.name=Pneumatische Nietenpistole item.bomb_caller.name=Luftschlag Zielmarker item.bomb_waffle.name=Massenvernichtungswaffel item.guide_book.name=Handbuch @@ -2316,18 +2316,10 @@ item.missile_nuclear_cluster.name=H-Rakete item.missile_rain.name=Schüttbombenregen item.missile_schrabidium.name=Schrabidiumrakete item.missile_shuttle.name=Reliant Robin Space Shuttle -item.missile_skin_camo.name=Raketenskin: Camouflage -item.missile_skin_desert.name=Raketenskin: Wüstencamouflage -item.missile_skin_flames.name=Raketenskin: Krasse Flammen -item.missile_skin_manly_pink.name=Raketenskin: Männliches Pink -item.missile_skin_metal.name=Raketenskin: Metall -item.missile_skin_orange_insulation.name=Raketenskin: Oranger Isolator -item.missile_skin_sleek.name=Raketenskin: IF-R&D -item.missile_skin_soviet_glory.name=Raketenskin: Sowjetischer Ruhm -item.missile_skin_soviet_stank.name=Raketenskin: Sowjetischer Mief item.missile_soyuz.name=Soyuz-FG item.missile_soyuz_lander.name=Orbitalmodul item.missile_strong.name=Starke HE Rakete +item.missile_stealth.name=Stealth-Rakete item.missile_taint.name=Verdorbene Rakete item.missile_volcano.name=Tectonic Missile item.missile_volcano.desc=Mit der Kraft von Kernwaffen können wir einen Vulkan beschwören! @@ -4383,6 +4375,15 @@ tile.radiorec.name=UKW Radio tile.rail_booster.name=Hochgeschwindigkeits-Boosterschienen tile.rail_highspeed.name=Hochgeschwindigkeitsschienen tile.rail_narrow.name=Schmalspurschienen +tile.rail_large_buffer.name=Normalspur-Prellbock (5m) +tile.rail_large_curve.name=Normalspur-Kurve (5m) +tile.rail_large_curve_7.name=Normalspur-Kurve (7m) +tile.rail_large_curve_9.name=Normalspur-Kurve (9m) +tile.rail_large_ramp.name=Normalspur-Rampe (5m) +tile.rail_large_straight.name=Normalspur-Schiene (5m) +tile.rail_large_straight_short.name=Normalspur-Schiene (1m) +tile.rail_large_switch.name=Normalspur-Weiche (15m, Links) +tile.rail_large_switch_flipped.name=Normalspur-Weiche (15m, Rechts) tile.rail_wood.name=Holzschienen tile.rbmk_absorber.name=RBMK Bor-Neutronenabsorber tile.rbmk_blank.name=RBMK Strukturteil diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b95a4f36b..33604be1b 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1954,8 +1954,8 @@ item.bobmazon_machines.name=Bobmazon: Blocks and Machines item.bobmazon_materials.name=Bobmazon: Materials item.bobmazon_tools.name=Bobmazon: Tools item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives -item.bolt_compound.name=Reinforced Turbine Shaft item.bolt.name=%s Bolt +item.bolt_compound.name=Reinforced Turbine Shaft item.boltgun.name=Pneumatic Rivet Gun item.bomb_caller.name=Airstrike Designator item.bomb_waffle.name=Waffle of Mass Destruction @@ -3058,27 +3058,10 @@ item.missile_nuclear_cluster.name=Thermonuclear Missile item.missile_rain.name=Bomblet Rain item.missile_schrabidium.name=Schrabidium Missile item.missile_shuttle.name=Reliant Robin Space Shuttle -item.missile_skin_camo.name=Missile Skin: Camo -item.missile_skin_color.desc=I can't find my missile anymore! -item.missile_skin_desert.name=Missile Skin: Desert Camo -item.missile_skin_desert.desc=Looks like sand, tastes like metal. -item.missile_skin_flames.name=Missile Skin: Sick Flames -item.missile_skin_flames.desc=Radical! -item.missile_skin_manly_pink.name=Missile Skin: Manly Pink -item.missile_skin_manly_pink.desc=Pink, the manliest color of them all. -item.missile_skin_metal.name=Missile Skin: Metal -item.missile_skin_metal.desc=Metal sheets and metal bolts, reinforced with metal. -item.missile_skin_orange_insulation.name=Missile Skin: Orange Insulation -item.missile_skin_orange_insulation.desc=Not an orange juice bottle;$do not attempt to drink contents. -item.missile_skin_sleek.name=Missile Skin: IF-R&D -item.missile_skin_sleek.desc=Chevrons are cool! -item.missile_skin_soviet_glory.name=Missile Skin: Soviet Glory -item.missile_skin_soviet_glory.desc=уÑлуга перевода недоÑтупна -item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank -item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it. item.missile_soyuz.name=Soyuz-FG item.missile_soyuz_lander.name=Orbital Module item.missile_soyuz_lander.desc=Doubles as a crappy lander! +item.missile_stealth.name=Stealth Missile item.missile_strong.name=Strong HE Missile item.missile_taint.name=Taint-Tipped Missile item.missile_volcano.name=Tectonic Missile @@ -5382,6 +5365,15 @@ tile.radiobox.name=Rosenberg Pest Control Box tile.radiorec.name=FM Radio tile.rail_booster.name=High Speed Booster Rail tile.rail_highspeed.name=High Speed Rail +tile.rail_large_buffer.name=Standard Gauge Buffer Stop Rail (5m) +tile.rail_large_curve.name=Standard Gauge Curve Rail (5m) +tile.rail_large_curve_7.name=Standard Gauge Curve Rail (7m) +tile.rail_large_curve_9.name=Standard Gauge Curve Rail (9m) +tile.rail_large_ramp.name=Standard Gauge Ramp Rail (5m) +tile.rail_large_straight.name=Standard Gauge Rail (5m) +tile.rail_large_straight_short.name=Standard Gauge Rail (1m) +tile.rail_large_switch.name=Standard Gauge Switch Rail (15m, Left) +tile.rail_large_switch_flipped.name=Standard Gauge Switch Rail (15m, Right) tile.rail_narrow.name=Narrow Gauge Cart Rail tile.rail_wood.name=Wooden Tracks tile.rbmk_absorber.name=RBMK Boron Neutron Absorber diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide9.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide9.obj new file mode 100644 index 000000000..d03d672a0 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend_wide9.obj @@ -0,0 +1,1966 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_curve_wide9.blend' +# www.blender.org +o Plane.001 +v -1.312500 0.062500 0.500000 +v -1.312500 0.187500 0.500000 +v -1.250000 0.062500 0.500000 +v -1.250000 0.187500 0.500000 +v 0.250000 0.062500 0.500000 +v 0.312499 0.062500 0.500000 +v 0.312499 0.187500 0.500000 +v 0.250000 0.187500 0.500000 +v -1.502724 0.000000 0.229277 +v 0.492993 0.000000 0.098470 +v -1.527250 0.000000 -0.144921 +v 0.468467 0.000000 -0.275727 +v -1.527250 0.062500 -0.144921 +v -1.502724 0.062500 0.229277 +v 0.492993 0.062500 0.098470 +v 0.468467 0.062500 -0.275727 +v 0.414277 0.125000 -0.146907 +v 0.102446 0.125000 -0.126468 +v 0.422452 0.125000 -0.022174 +v 0.110621 0.125000 -0.001736 +v 0.414277 0.062500 -0.146907 +v 0.102446 0.062500 -0.126468 +v 0.422452 0.062500 -0.022174 +v 0.110621 0.062500 -0.001736 +v -1.448533 0.062500 0.100457 +v -1.136702 0.062500 0.080018 +v -1.456709 0.062500 -0.024276 +v -1.144878 0.062500 -0.044714 +v -1.448533 0.125000 0.100457 +v -1.136702 0.125000 0.080018 +v -1.456709 0.125000 -0.024276 +v -1.144878 0.125000 -0.044714 +v 0.202066 0.187500 -0.414624 +v 0.264223 0.187500 -0.421157 +v 0.264223 0.062500 -0.421157 +v 0.202066 0.062500 -0.414624 +v -1.289716 0.187500 -0.257831 +v -1.289716 0.062500 -0.257831 +v -1.351874 0.187500 -0.251298 +v -1.351874 0.062500 -0.251298 +v 0.119925 0.187500 -1.332222 +v 0.119925 0.062500 -1.332222 +v 0.058792 0.187500 -1.319227 +v 0.058792 0.062500 -1.319227 +v -1.469564 0.062500 -0.994365 +v -1.408430 0.062500 -1.007360 +v -1.408430 0.187500 -1.007360 +v -1.469564 0.187500 -0.994365 +v -0.118814 0.187500 -2.223212 +v -0.118814 0.062500 -2.223212 +v -0.178254 0.187500 -2.203898 +v -0.178254 0.062500 -2.203898 +v -1.664281 0.062500 -1.721060 +v -1.604840 0.062500 -1.740373 +v -1.604840 0.187500 -1.740373 +v -1.664281 0.187500 -1.721060 +v -0.449381 0.187500 -3.084367 +v -0.449381 0.062500 -3.084367 +v -0.506476 0.187500 -3.058946 +v -0.506476 0.062500 -3.058946 +v -1.933891 0.062500 -2.423420 +v -1.876795 0.062500 -2.448841 +v -1.876795 0.187500 -2.448841 +v -1.933891 0.187500 -2.423420 +v -0.868151 0.187500 -3.906250 +v -0.868151 0.062500 -3.906250 +v -0.922276 0.187500 -3.875000 +v -0.922276 0.062500 -3.875000 +v -2.275442 0.062500 -3.093750 +v -2.221315 0.062500 -3.125000 +v -2.221315 0.187500 -3.125000 +v -2.275442 0.187500 -3.093750 +v -1.370537 0.187500 -4.679857 +v -1.370537 0.062500 -4.679857 +v -1.421100 0.187500 -4.643121 +v -1.421100 0.062500 -4.643121 +v -2.685189 0.062500 -3.724707 +v -2.634626 0.062500 -3.761444 +v -2.634626 0.187500 -3.761444 +v -2.685189 0.187500 -3.724707 +v -1.951035 0.187500 -5.396713 +v -1.951035 0.062500 -5.396713 +v -1.997481 0.187500 -5.354893 +v -1.997481 0.062500 -5.354893 +v -3.158646 0.062500 -4.309377 +v -3.112200 0.062500 -4.351198 +v -3.112200 0.187500 -4.351198 +v -3.158646 0.187500 -4.309377 +v -2.603286 0.187500 -6.048964 +v -2.603286 0.062500 -6.048964 +v -2.645105 0.187500 -6.002518 +v -2.645105 0.062500 -6.002518 +v -3.690623 0.062500 -4.841354 +v -3.648803 0.062500 -4.887801 +v -3.648803 0.187500 -4.887801 +v -3.690623 0.187500 -4.841354 +v -3.320142 0.187500 -6.629462 +v -3.320142 0.062500 -6.629462 +v -3.356877 0.187500 -6.578900 +v -3.356877 0.062500 -6.578900 +v -4.275292 0.062500 -5.314811 +v -4.238556 0.062500 -5.365375 +v -4.238556 0.187500 -5.365375 +v -4.275292 0.187500 -5.314811 +v -4.093749 0.187500 -7.131849 +v -4.093749 0.062500 -7.131849 +v -4.124998 0.187500 -7.077724 +v -4.124998 0.062500 -7.077724 +v -4.906249 0.062500 -5.724559 +v -4.875000 0.062500 -5.778686 +v -4.875000 0.187500 -5.778686 +v -4.906249 0.187500 -5.724559 +v -4.915632 0.187500 -7.550620 +v -4.915632 0.062500 -7.550620 +v -4.941052 0.187500 -7.493525 +v -4.941052 0.062500 -7.493525 +v -5.576580 0.062500 -6.066110 +v -5.551159 0.062500 -6.123206 +v -5.551159 0.187500 -6.123206 +v -5.576580 0.187500 -6.066110 +v -5.776787 0.187500 -7.881186 +v -5.776787 0.062500 -7.881186 +v -5.796100 0.187500 -7.821747 +v -5.796100 0.062500 -7.821747 +v -6.278940 0.062500 -6.335721 +v -6.259626 0.062500 -6.395162 +v -6.259626 0.187500 -6.395162 +v -6.278940 0.187500 -6.335721 +v -6.667778 0.187500 -8.119927 +v -6.667778 0.062500 -8.119927 +v -6.680771 0.187500 -8.058794 +v -6.680771 0.062500 -8.058794 +v -7.005634 0.062500 -6.530438 +v -6.992640 0.062500 -6.591572 +v -6.992640 0.187500 -6.591572 +v -7.005634 0.187500 -6.530438 +v -7.578842 0.187500 -8.264227 +v -7.578842 0.062500 -8.264227 +v -7.585375 0.187500 -8.202069 +v -7.585375 0.062500 -8.202069 +v -7.748702 0.062500 -6.648129 +v -7.742168 0.062500 -6.710286 +v -7.742168 0.187500 -6.710286 +v -7.748702 0.187500 -6.648129 +v -8.500000 0.187500 -8.312503 +v -8.500000 0.062500 -8.312503 +v -8.499999 0.187500 -8.250003 +v -8.499999 0.062500 -8.250003 +v -8.500000 0.062500 -6.687503 +v -8.500000 0.062500 -6.750003 +v -8.500000 0.187500 -6.750003 +v -8.500000 0.187500 -6.687503 +v -1.593841 0.000000 -0.657635 +v 0.369080 0.000000 -1.040966 +v -1.665715 0.000000 -1.025683 +v 0.297205 0.000000 -1.409014 +v -1.665715 0.062500 -1.025683 +v -1.593841 0.062500 -0.657635 +v 0.369080 0.062500 -1.040966 +v 0.297205 0.062500 -1.409014 +v 0.259823 0.125000 -1.274352 +v -0.046885 0.125000 -1.214457 +v 0.283780 0.125000 -1.151670 +v -0.022925 0.125000 -1.091774 +v 0.259823 0.062500 -1.274352 +v -0.046885 0.062500 -1.214457 +v 0.283780 0.062500 -1.151670 +v -0.022925 0.062500 -1.091774 +v -1.556457 0.062500 -0.792297 +v -1.249751 0.062500 -0.852192 +v -1.580416 0.062500 -0.914979 +v -1.273710 0.062500 -0.974875 +v -1.556457 0.125000 -0.792297 +v -1.249751 0.125000 -0.852192 +v -1.580416 0.125000 -0.914979 +v -1.273710 0.125000 -0.974875 +v -1.804025 0.000000 -1.549166 +v 0.092067 0.000000 -2.185431 +v -1.923324 0.000000 -1.904684 +v -0.027232 0.000000 -2.540948 +v -1.923324 0.062500 -1.904684 +v -1.804025 0.062500 -1.549166 +v 0.092067 0.062500 -2.185431 +v -0.027232 0.062500 -2.540948 +v -0.046719 0.125000 -2.402559 +v -0.342983 0.125000 -2.303143 +v -0.006952 0.125000 -2.284053 +v -0.303216 0.125000 -2.184637 +v -0.046719 0.062500 -2.402559 +v -0.342983 0.062500 -2.303143 +v -0.006952 0.062500 -2.284053 +v -0.303216 0.062500 -2.184637 +v -1.784539 0.062500 -1.687555 +v -1.488274 0.062500 -1.786972 +v -1.824306 0.062500 -1.806061 +v -1.528041 0.062500 -1.905477 +v -1.784539 0.125000 -1.687555 +v -1.488274 0.125000 -1.786972 +v -1.824306 0.125000 -1.806061 +v -1.528041 0.125000 -1.905477 +v -2.128780 0.000000 -2.405635 +v -0.331959 0.000000 -3.283946 +v -2.293463 0.000000 -2.742540 +v -0.496641 0.000000 -3.620850 +v -2.293463 0.062500 -2.742540 +v -2.128780 0.062500 -2.405635 +v -0.331959 0.062500 -3.283946 +v -0.496641 0.062500 -3.620850 +v -0.497897 0.125000 -3.481102 +v -0.778651 0.125000 -3.343866 +v -0.443003 0.125000 -3.368800 +v -0.723756 0.125000 -3.231565 +v -0.497897 0.062500 -3.481102 +v -0.778651 0.062500 -3.343866 +v -0.443003 0.062500 -3.368800 +v -0.723756 0.062500 -3.231565 +v -2.127524 0.062500 -2.545384 +v -1.846769 0.062500 -2.682620 +v -2.182419 0.062500 -2.657685 +v -1.901665 0.062500 -2.794921 +v -2.127524 0.125000 -2.545384 +v -1.846769 0.125000 -2.682620 +v -2.182419 0.125000 -2.657685 +v -1.901665 0.125000 -2.794921 +v -2.562548 0.000000 -3.212389 +v -0.895741 0.000000 -4.317718 +v -2.769797 0.000000 -3.524915 +v -1.102990 0.000000 -4.630244 +v -2.769797 0.062500 -3.524915 +v -2.562548 0.062500 -3.212389 +v -0.895741 0.062500 -4.317718 +v -1.102990 0.062500 -4.630244 +v -1.085994 0.125000 -4.491527 +v -1.346433 0.125000 -4.318820 +v -1.016911 0.125000 -4.387352 +v -1.277349 0.125000 -4.214644 +v -1.085994 0.062500 -4.491527 +v -1.346433 0.062500 -4.318820 +v -1.016911 0.062500 -4.387352 +v -1.277349 0.062500 -4.214644 +v -2.579544 0.062500 -3.351105 +v -2.319104 0.062500 -3.523814 +v -2.648627 0.062500 -3.455281 +v -2.388188 0.062500 -3.627988 +v -2.579544 0.125000 -3.351105 +v -2.319104 0.125000 -3.523814 +v -2.648627 0.125000 -3.455281 +v -2.388188 0.125000 -3.627988 +v -3.097907 0.000000 -3.955622 +v -1.589635 0.000000 -5.269057 +v -3.344176 0.000000 -4.238423 +v -1.835903 0.000000 -5.551857 +v -3.344176 0.062500 -4.238423 +v -3.097907 0.062500 -3.955622 +v -1.589635 0.062500 -5.269057 +v -1.835903 0.062500 -5.551857 +v -1.800947 0.125000 -5.416546 +v -2.036615 0.125000 -5.211322 +v -1.718857 0.125000 -5.322279 +v -1.954525 0.125000 -5.117055 +v -1.800947 0.062500 -5.416546 +v -2.036615 0.062500 -5.211322 +v -1.718857 0.062500 -5.322279 +v -1.954525 0.062500 -5.117055 +v -3.132864 0.062500 -4.090933 +v -2.897195 0.062500 -4.296158 +v -3.214954 0.062500 -4.185201 +v -2.979286 0.062500 -4.390424 +v -3.132864 0.125000 -4.090933 +v -2.897195 0.125000 -4.296158 +v -3.214954 0.125000 -4.185201 +v -2.979286 0.125000 -4.390424 +v -3.725698 0.000000 -4.622618 +v -2.401767 0.000000 -6.121686 +v -4.006773 0.000000 -4.870855 +v -2.682841 0.000000 -6.369922 +v -4.006773 0.062500 -4.870855 +v -3.725698 0.062500 -4.622618 +v -2.401767 0.062500 -6.121686 +v -2.682841 0.062500 -6.369922 +v -2.630522 0.125000 -6.240331 +v -2.837387 0.125000 -6.006102 +v -2.536831 0.125000 -6.157585 +v -2.743695 0.125000 -5.923357 +v -2.630522 0.062500 -6.240331 +v -2.837387 0.062500 -6.006102 +v -2.536831 0.062500 -6.157585 +v -2.743695 0.062500 -5.923357 +v -3.778018 0.062500 -4.752209 +v -3.571152 0.062500 -4.986439 +v -3.871710 0.062500 -4.834955 +v -3.664845 0.062500 -5.069184 +v -3.778018 0.125000 -4.752209 +v -3.571152 0.125000 -4.986439 +v -3.871710 0.125000 -4.834955 +v -3.664845 0.125000 -5.069184 +v -4.435179 0.000000 -5.201965 +v -3.318242 0.000000 -6.861015 +v -4.746251 0.000000 -5.411391 +v -3.629313 0.000000 -7.070441 +v -4.746251 0.062500 -5.411391 +v -4.435179 0.062500 -5.201965 +v -3.318242 0.062500 -6.861015 +v -3.629313 0.062500 -7.070441 +v -3.560526 0.125000 -6.948788 +v -3.735048 0.125000 -6.689561 +v -3.456836 0.125000 -6.878979 +v -3.631357 0.125000 -6.619753 +v -3.560526 0.062500 -6.948788 +v -3.735048 0.062500 -6.689561 +v -3.456836 0.062500 -6.878979 +v -3.631357 0.062500 -6.619753 +v -4.503965 0.062500 -5.323618 +v -4.329443 0.062500 -5.582846 +v -4.607657 0.062500 -5.393427 +v -4.433135 0.062500 -5.652653 +v -4.503965 0.125000 -5.323618 +v -4.329443 0.125000 -5.582846 +v -4.607657 0.125000 -5.393427 +v -4.433135 0.125000 -5.652653 +v -5.214210 0.000000 -5.683750 +v -4.323378 0.000000 -7.474396 +v -5.549956 0.000000 -5.850781 +v -4.659122 0.000000 -7.641427 +v -5.549956 0.062500 -5.850781 +v -5.214210 0.062500 -5.683750 +v -4.323378 0.062500 -7.474396 +v -4.659122 0.062500 -7.641427 +v -4.575046 0.125000 -7.529794 +v -4.714239 0.125000 -7.250005 +v -4.463130 0.125000 -7.474116 +v -4.602324 0.125000 -7.194328 +v -4.575046 0.062500 -7.529794 +v -4.714239 0.062500 -7.250005 +v -4.463130 0.062500 -7.474116 +v -4.602324 0.062500 -7.194328 +v -5.298286 0.062500 -5.795384 +v -5.159094 0.062500 -6.075173 +v -5.410203 0.062500 -5.851061 +v -5.271009 0.062500 -6.130849 +v -5.298286 0.125000 -5.795384 +v -5.159094 0.125000 -6.075173 +v -5.410203 0.125000 -5.851061 +v -5.271009 0.125000 -6.130849 +v -6.049461 0.000000 -6.059729 +v -5.399977 0.000000 -7.951333 +v -6.404138 0.000000 -6.181507 +v -5.754651 0.000000 -8.073112 +v -6.404138 0.062500 -6.181507 +v -6.049461 0.062500 -6.059729 +v -5.399977 0.062500 -7.951333 +v -5.754651 0.062500 -8.073112 +v -5.656723 0.125000 -7.973407 +v -5.758205 0.125000 -7.677843 +v -5.538497 0.125000 -7.932814 +v -5.639980 0.125000 -7.637251 +v -5.656723 0.062500 -7.973407 +v -5.758205 0.062500 -7.677843 +v -5.538497 0.062500 -7.932814 +v -5.639980 0.062500 -7.637251 +v -6.147390 0.062500 -6.159434 +v -6.045908 0.062500 -6.454998 +v -6.265616 0.062500 -6.200027 +v -6.164133 0.062500 -6.495589 +v -6.147390 0.125000 -6.159434 +v -6.045908 0.125000 -6.454998 +v -6.265616 0.125000 -6.200027 +v -6.164133 0.125000 -6.495589 +v -6.926642 0.000000 -6.323469 +v -6.529619 0.000000 -8.283666 +v -7.294180 0.000000 -6.397911 +v -6.897154 0.000000 -8.358108 +v -7.294180 0.062500 -6.397911 +v -6.926642 0.062500 -6.323469 +v -6.529619 0.062500 -8.283666 +v -6.897154 0.062500 -8.358108 +v -6.787049 0.125000 -8.272038 +v -6.849084 0.125000 -7.965756 +v -6.664536 0.125000 -8.247224 +v -6.726572 0.125000 -7.940943 +v -6.787049 0.062500 -8.272038 +v -6.849084 0.062500 -7.965756 +v -6.664536 0.062500 -8.247224 +v -6.726572 0.062500 -7.940943 +v -7.036747 0.062500 -6.409539 +v -6.974712 0.062500 -6.715820 +v -7.159261 0.062500 -6.434352 +v -7.097224 0.062500 -6.740633 +v -7.036747 0.125000 -6.409539 +v -6.974712 0.125000 -6.715820 +v -7.159261 0.125000 -6.434352 +v -7.097224 0.125000 -6.740633 +v -7.830744 0.000000 -6.470458 +v -7.692974 0.000000 -8.465706 +v -8.204854 0.000000 -6.496290 +v -8.067081 0.000000 -8.491539 +v -8.204854 0.062500 -6.496290 +v -7.830744 0.062500 -6.470458 +v -7.692974 0.062500 -8.465706 +v -8.067081 0.062500 -8.491539 +v -7.946684 0.125000 -8.420578 +v -7.968211 0.125000 -8.108818 +v -7.821981 0.125000 -8.411966 +v -7.843508 0.125000 -8.100208 +v -7.946684 0.062500 -8.420578 +v -7.968211 0.062500 -8.108818 +v -7.821981 0.062500 -8.411966 +v -7.843508 0.062500 -8.100208 +v -7.951141 0.062500 -6.541420 +v -7.929615 0.062500 -6.853178 +v -8.075846 0.062500 -6.550030 +v -8.054317 0.062500 -6.861787 +v -7.951141 0.125000 -6.541420 +v -7.929615 0.125000 -6.853178 +v -8.075846 0.125000 -6.550030 +v -8.054317 0.125000 -6.861787 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.531250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.500000 0.718750 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt 0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.593750 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.000000 0.000000 +vt 0.187500 1.000000 +vt 0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.500000 0.718750 +vt 0.531250 0.656250 +vt 0.000000 0.000000 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.406250 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.406250 0.156250 +vt 0.500000 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.593750 0.156250 +vt 0.500000 0.156250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.9979 0.0000 0.0654 +vn 0.0654 0.0000 0.9979 +vn 0.9979 0.0000 -0.0654 +vn -0.0654 0.0000 -0.9979 +vn 0.9986 0.0000 -0.0523 +vn -0.9986 0.0000 0.0523 +vn -0.9659 0.0000 0.2588 +vn 0.9877 0.0000 -0.1564 +vn -0.9877 0.0000 0.1564 +vn -0.9336 0.0000 0.3584 +vn 0.9659 0.0000 -0.2588 +vn 0.9336 0.0000 -0.3584 +vn 0.8387 0.0000 -0.5446 +vn 0.8910 0.0000 -0.4540 +vn -0.8910 0.0000 0.4540 +vn -0.8387 0.0000 0.5446 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7771 0.0000 0.6293 +vn 0.7771 0.0000 -0.6293 +vn 0.6293 0.0000 -0.7771 +vn 0.5446 0.0000 -0.8387 +vn -0.5446 0.0000 0.8387 +vn -0.6293 0.0000 0.7771 +vn -0.4540 0.0000 0.8910 +vn 0.3584 0.0000 -0.9336 +vn 0.4540 0.0000 -0.8910 +vn 0.2588 0.0000 -0.9659 +vn -0.3584 0.0000 0.9336 +vn -0.1564 0.0000 0.9877 +vn -0.2588 0.0000 0.9659 +vn -0.0523 0.0000 0.9986 +vn 0.1564 0.0000 -0.9877 +vn -1.0000 0.0000 0.0000 +vn 0.0523 0.0000 -0.9986 +vn -0.9815 0.0000 0.1917 +vn 0.1917 0.0000 0.9815 +vn 0.9815 0.0000 -0.1917 +vn -0.1917 0.0000 -0.9815 +vn -0.9480 0.0000 0.3181 +vn 0.3181 0.0000 0.9480 +vn 0.9480 0.0000 -0.3181 +vn -0.3181 0.0000 -0.9480 +vn -0.8984 0.0000 0.4392 +vn 0.4392 0.0000 0.8984 +vn 0.8984 0.0000 -0.4392 +vn -0.4392 0.0000 -0.8984 +vn -0.8334 0.0000 0.5527 +vn 0.5527 0.0000 0.8334 +vn 0.8334 0.0000 -0.5527 +vn -0.5527 0.0000 -0.8334 +vn -0.7541 0.0000 0.6567 +vn 0.6567 0.0000 0.7541 +vn 0.7541 0.0000 -0.6567 +vn -0.6567 0.0000 -0.7541 +vn -0.6620 0.0000 0.7495 +vn 0.7495 0.0000 0.6620 +vn 0.6620 0.0000 -0.7495 +vn -0.7495 0.0000 -0.6620 +vn -0.5585 0.0000 0.8295 +vn 0.8295 0.0000 0.5585 +vn 0.5585 0.0000 -0.8295 +vn -0.8295 0.0000 -0.5585 +vn -0.4454 0.0000 0.8953 +vn 0.8953 0.0000 0.4454 +vn 0.4454 0.0000 -0.8953 +vn -0.8953 0.0000 -0.4454 +vn -0.3247 0.0000 0.9458 +vn 0.9458 0.0000 0.3247 +vn 0.3247 0.0000 -0.9458 +vn -0.9458 0.0000 -0.3247 +vn -0.1985 0.0000 0.9801 +vn 0.9801 0.0000 0.1985 +vn 0.1985 0.0000 -0.9801 +vn -0.9801 0.0000 -0.1985 +vn -0.0689 0.0000 0.9976 +vn 0.9976 0.0000 0.0689 +vn 0.0689 0.0000 -0.9976 +vn -0.9976 0.0000 -0.0689 +s off +f 3/1/1 2/2/1 1/3/1 +f 8/4/1 6/5/1 7/6/1 +f 9/7/2 12/8/2 10/9/2 +f 14/10/3 16/11/3 13/12/3 +f 9/13/4 13/14/4 11/15/4 +f 10/16/5 14/17/5 9/18/5 +f 12/19/6 15/20/6 10/9/6 +f 11/21/7 16/11/7 12/8/7 +f 29/22/4 27/23/4 25/24/4 +f 20/25/3 17/26/3 18/27/3 +f 17/26/6 23/28/6 21/29/6 +f 19/30/5 24/31/5 23/32/5 +f 18/27/7 21/33/7 22/34/7 +f 20/25/4 22/35/4 24/36/4 +f 31/37/7 28/38/7 27/39/7 +f 30/40/5 25/41/5 26/42/5 +f 32/43/6 26/44/6 28/45/6 +f 29/22/3 32/43/3 31/37/3 +f 40/46/2 3/47/2 1/48/2 +f 7/49/3 33/50/3 8/51/3 +f 35/52/8 7/49/8 6/53/8 +f 39/54/9 1/55/9 2/56/9 +f 37/57/3 2/56/3 4/58/3 +f 36/59/2 6/53/2 5/60/2 +f 33/50/9 5/61/9 8/51/9 +f 38/62/8 4/58/8 3/47/8 +f 34/63/3 43/64/3 33/65/3 +f 45/66/2 38/67/2 40/68/2 +f 51/69/10 44/70/10 43/71/10 +f 52/72/2 42/73/2 44/74/2 +f 42/75/11 34/63/11 35/76/11 +f 48/77/12 40/78/12 39/79/12 +f 47/80/3 39/79/3 37/81/3 +f 44/82/2 35/76/2 36/83/2 +f 43/64/12 36/84/12 33/65/12 +f 46/85/11 37/81/11 38/67/11 +f 55/86/3 64/87/3 56/88/3 +f 64/87/13 53/89/13 56/88/13 +f 54/90/14 47/91/14 46/92/14 +f 45/93/2 54/90/2 46/92/2 +f 41/94/3 51/69/3 43/71/3 +f 50/95/14 41/94/14 42/73/14 +f 56/96/10 45/97/10 48/98/10 +f 55/99/3 48/98/3 47/91/3 +f 57/100/3 67/101/3 59/102/3 +f 69/103/2 62/104/2 61/105/2 +f 60/106/2 50/107/2 52/108/2 +f 59/109/13 52/110/13 51/111/13 +f 62/112/15 55/86/15 54/113/15 +f 61/114/2 54/113/2 53/115/2 +f 49/116/3 59/109/3 51/111/3 +f 58/117/15 49/116/15 50/107/15 +f 77/118/2 70/119/2 69/120/2 +f 78/121/16 71/122/16 70/119/16 +f 66/123/17 57/100/17 58/124/17 +f 72/125/18 61/126/18 64/127/18 +f 63/128/3 72/125/3 64/127/3 +f 68/129/2 58/124/2 60/130/2 +f 67/101/18 60/131/18 59/102/18 +f 70/132/17 63/128/17 62/104/17 +f 84/133/2 74/134/2 76/135/2 +f 79/136/3 88/137/3 80/138/3 +f 65/139/3 75/140/3 67/141/3 +f 74/142/16 65/139/16 66/143/16 +f 80/144/19 69/145/19 72/146/19 +f 71/122/3 80/144/3 72/146/3 +f 76/147/2 66/143/2 68/148/2 +f 75/140/19 68/149/19 67/141/19 +f 96/150/20 85/151/20 88/152/20 +f 90/153/21 81/154/21 82/155/21 +f 83/156/22 76/157/22 75/158/22 +f 86/159/23 79/136/23 78/160/23 +f 85/161/2 78/160/2 77/162/2 +f 73/163/3 83/156/3 75/158/3 +f 82/164/23 73/163/23 74/134/23 +f 88/137/22 77/165/22 80/138/22 +f 101/166/2 94/167/2 93/168/2 +f 102/169/24 95/170/24 94/167/24 +f 87/171/3 96/150/3 88/152/3 +f 92/172/2 82/155/2 84/173/2 +f 91/174/20 84/175/20 83/176/20 +f 94/177/21 87/171/21 86/178/21 +f 93/179/2 86/178/2 85/180/2 +f 81/154/3 91/174/3 83/176/3 +f 110/181/25 103/182/25 102/183/25 +f 107/184/26 100/185/26 99/186/26 +f 89/187/3 99/188/3 91/189/3 +f 98/190/24 89/187/24 90/191/24 +f 104/192/27 93/193/27 96/194/27 +f 95/170/3 104/192/3 96/194/3 +f 100/195/2 90/191/2 92/196/2 +f 99/188/27 92/197/27 91/189/27 +f 111/198/3 120/199/3 112/200/3 +f 120/199/28 109/201/28 112/200/28 +f 109/202/2 102/183/2 101/203/2 +f 97/204/3 107/184/3 99/186/3 +f 106/205/25 97/204/25 98/206/25 +f 112/207/26 101/208/26 104/209/26 +f 103/182/3 112/207/3 104/209/3 +f 108/210/2 98/206/2 100/211/2 +f 122/212/29 113/213/29 114/214/29 +f 113/213/3 123/215/3 115/216/3 +f 116/217/2 106/218/2 108/219/2 +f 115/220/28 108/221/28 107/222/28 +f 118/223/30 111/198/30 110/224/30 +f 117/225/2 110/224/2 109/226/2 +f 105/227/3 115/220/3 107/222/3 +f 114/228/30 105/227/30 106/218/30 +f 133/229/2 126/230/2 125/231/2 +f 134/232/31 127/233/31 126/230/31 +f 128/234/32 117/235/32 120/236/32 +f 119/237/3 128/234/3 120/236/3 +f 124/238/2 114/214/2 116/239/2 +f 123/215/32 116/240/32 115/216/32 +f 126/241/29 119/237/29 118/242/29 +f 125/243/2 118/242/2 117/244/2 +f 139/245/33 132/246/33 131/247/33 +f 140/248/2 130/249/2 132/250/2 +f 121/251/3 131/252/3 123/253/3 +f 130/254/31 121/251/31 122/255/31 +f 136/256/34 125/257/34 128/258/34 +f 127/233/3 136/256/3 128/258/3 +f 132/259/2 122/255/2 124/260/2 +f 131/252/34 124/261/34 123/253/34 +f 151/262/3 144/263/3 143/264/3 +f 152/265/35 141/266/35 144/263/35 +f 142/267/36 135/268/36 134/269/36 +f 133/270/2 142/267/2 134/269/2 +f 129/271/3 139/245/3 131/247/3 +f 138/272/36 129/271/36 130/249/36 +f 144/273/33 133/274/33 136/275/33 +f 143/276/3 136/275/3 135/268/3 +f 146/277/37 147/278/37 145/279/37 +f 152/280/37 150/281/37 149/282/37 +f 148/283/2 138/284/2 140/285/2 +f 147/286/35 140/287/35 139/288/35 +f 150/289/38 143/264/38 142/290/38 +f 149/291/2 142/290/2 141/292/2 +f 137/293/3 147/286/3 139/288/3 +f 146/294/38 137/293/38 138/284/38 +f 155/295/2 154/296/2 153/297/2 +f 159/298/3 157/299/3 158/300/3 +f 153/301/39 157/302/39 155/303/39 +f 154/304/40 158/305/40 153/306/40 +f 156/307/41 159/308/41 154/296/41 +f 155/295/42 160/309/42 156/310/42 +f 173/311/39 171/312/39 169/313/39 +f 164/314/3 161/315/3 162/316/3 +f 161/315/41 167/317/41 165/318/41 +f 163/319/40 168/320/40 167/321/40 +f 162/316/42 165/322/42 166/323/42 +f 164/314/39 166/324/39 168/325/39 +f 175/326/42 172/327/42 171/328/42 +f 174/329/40 169/330/40 170/331/40 +f 176/332/41 170/333/41 172/334/41 +f 173/311/3 176/332/3 175/326/3 +f 179/335/2 178/336/2 177/337/2 +f 183/338/3 181/339/3 182/340/3 +f 177/341/43 181/342/43 179/343/43 +f 178/344/44 182/345/44 177/346/44 +f 180/347/45 183/348/45 178/336/45 +f 179/335/46 184/349/46 180/350/46 +f 197/351/43 195/352/43 193/353/43 +f 188/354/3 185/355/3 186/356/3 +f 185/355/45 191/357/45 189/358/45 +f 187/359/44 192/360/44 191/361/44 +f 186/356/46 189/362/46 190/363/46 +f 188/354/43 190/364/43 192/365/43 +f 199/366/46 196/367/46 195/368/46 +f 198/369/44 193/370/44 194/371/44 +f 200/372/45 194/373/45 196/374/45 +f 197/351/3 200/372/3 199/366/3 +f 203/375/2 202/376/2 201/377/2 +f 207/378/3 205/379/3 206/380/3 +f 201/381/47 205/382/47 203/383/47 +f 202/384/48 206/385/48 201/386/48 +f 204/387/49 207/388/49 202/376/49 +f 203/375/50 208/389/50 204/390/50 +f 221/391/47 219/392/47 217/393/47 +f 212/394/3 209/395/3 210/396/3 +f 209/395/49 215/397/49 213/398/49 +f 211/399/48 216/400/48 215/401/48 +f 210/396/50 213/402/50 214/403/50 +f 212/394/47 214/404/47 216/405/47 +f 223/406/50 220/407/50 219/408/50 +f 222/409/48 217/410/48 218/411/48 +f 224/412/49 218/413/49 220/414/49 +f 221/391/3 224/412/3 223/406/3 +f 227/415/2 226/416/2 225/417/2 +f 231/418/3 229/419/3 230/420/3 +f 225/421/51 229/422/51 227/423/51 +f 226/424/52 230/425/52 225/426/52 +f 228/427/53 231/428/53 226/416/53 +f 227/415/54 232/429/54 228/430/54 +f 245/431/51 243/432/51 241/433/51 +f 236/434/3 233/435/3 234/436/3 +f 233/435/53 239/437/53 237/438/53 +f 235/439/52 240/440/52 239/441/52 +f 234/436/54 237/442/54 238/443/54 +f 236/434/51 238/444/51 240/445/51 +f 247/446/54 244/447/54 243/448/54 +f 246/449/52 241/450/52 242/451/52 +f 248/452/53 242/453/53 244/454/53 +f 245/431/3 248/452/3 247/446/3 +f 251/455/2 250/456/2 249/457/2 +f 255/458/3 253/459/3 254/460/3 +f 249/461/55 253/462/55 251/463/55 +f 250/464/56 254/465/56 249/466/56 +f 252/467/57 255/468/57 250/456/57 +f 251/455/58 256/469/58 252/470/58 +f 269/471/55 267/472/55 265/473/55 +f 260/474/3 257/475/3 258/476/3 +f 257/475/57 263/477/57 261/478/57 +f 259/479/56 264/480/56 263/481/56 +f 258/476/58 261/482/58 262/483/58 +f 260/474/55 262/484/55 264/485/55 +f 271/486/58 268/487/58 267/488/58 +f 270/489/56 265/490/56 266/491/56 +f 272/492/57 266/493/57 268/494/57 +f 269/471/3 272/492/3 271/486/3 +f 275/495/2 274/496/2 273/497/2 +f 279/498/3 277/499/3 278/500/3 +f 273/501/59 277/502/59 275/503/59 +f 274/504/60 278/505/60 273/506/60 +f 276/507/61 279/508/61 274/496/61 +f 275/495/62 280/509/62 276/510/62 +f 293/511/59 291/512/59 289/513/59 +f 284/514/3 281/515/3 282/516/3 +f 281/515/61 287/517/61 285/518/61 +f 283/519/60 288/520/60 287/521/60 +f 282/516/62 285/522/62 286/523/62 +f 284/514/59 286/524/59 288/525/59 +f 295/526/62 292/527/62 291/528/62 +f 294/529/60 289/530/60 290/531/60 +f 296/532/61 290/533/61 292/534/61 +f 293/511/3 296/532/3 295/526/3 +f 299/535/2 298/536/2 297/537/2 +f 303/538/3 301/539/3 302/540/3 +f 297/541/63 301/542/63 299/543/63 +f 298/544/64 302/545/64 297/546/64 +f 300/547/65 303/548/65 298/536/65 +f 299/535/66 304/549/66 300/550/66 +f 317/551/63 315/552/63 313/553/63 +f 308/554/3 305/555/3 306/556/3 +f 305/555/65 311/557/65 309/558/65 +f 307/559/64 312/560/64 311/561/64 +f 306/556/66 309/562/66 310/563/66 +f 308/554/63 310/564/63 312/565/63 +f 319/566/66 316/567/66 315/568/66 +f 318/569/64 313/570/64 314/571/64 +f 320/572/65 314/573/65 316/574/65 +f 317/551/3 320/572/3 319/566/3 +f 323/575/2 322/576/2 321/577/2 +f 327/578/3 325/579/3 326/580/3 +f 321/581/67 325/582/67 323/583/67 +f 322/584/68 326/585/68 321/586/68 +f 324/587/69 327/588/69 322/576/69 +f 323/575/70 328/589/70 324/590/70 +f 341/591/67 339/592/67 337/593/67 +f 332/594/3 329/595/3 330/596/3 +f 329/595/69 335/597/69 333/598/69 +f 331/599/68 336/600/68 335/601/68 +f 330/596/70 333/602/70 334/603/70 +f 332/594/67 334/604/67 336/605/67 +f 343/606/70 340/607/70 339/608/70 +f 342/609/68 337/610/68 338/611/68 +f 344/612/69 338/613/69 340/614/69 +f 341/591/3 344/612/3 343/606/3 +f 347/615/2 346/616/2 345/617/2 +f 351/618/3 349/619/3 350/620/3 +f 345/621/71 349/622/71 347/623/71 +f 346/624/72 350/625/72 345/626/72 +f 348/627/73 351/628/73 346/616/73 +f 347/615/74 352/629/74 348/630/74 +f 365/631/71 363/632/71 361/633/71 +f 356/634/3 353/635/3 354/636/3 +f 353/635/73 359/637/73 357/638/73 +f 355/639/72 360/640/72 359/641/72 +f 354/636/74 357/642/74 358/643/74 +f 356/634/71 358/644/71 360/645/71 +f 367/646/74 364/647/74 363/648/74 +f 366/649/72 361/650/72 362/651/72 +f 368/652/73 362/653/73 364/654/73 +f 365/631/3 368/652/3 367/646/3 +f 371/655/2 370/656/2 369/657/2 +f 375/658/3 373/659/3 374/660/3 +f 369/661/75 373/662/75 371/663/75 +f 370/664/76 374/665/76 369/666/76 +f 372/667/77 375/668/77 370/656/77 +f 371/655/78 376/669/78 372/670/78 +f 389/671/75 387/672/75 385/673/75 +f 380/674/3 377/675/3 378/676/3 +f 377/675/77 383/677/77 381/678/77 +f 379/679/76 384/680/76 383/681/76 +f 378/676/78 381/682/78 382/683/78 +f 380/674/75 382/684/75 384/685/75 +f 391/686/78 388/687/78 387/688/78 +f 390/689/76 385/690/76 386/691/76 +f 392/692/77 386/693/77 388/694/77 +f 389/671/3 392/692/3 391/686/3 +f 395/695/2 394/696/2 393/697/2 +f 399/698/3 397/699/3 398/700/3 +f 393/701/79 397/702/79 395/703/79 +f 394/704/80 398/705/80 393/706/80 +f 396/707/81 399/708/81 394/696/81 +f 395/695/82 400/709/82 396/710/82 +f 413/711/79 411/712/79 409/713/79 +f 404/714/3 401/715/3 402/716/3 +f 401/715/81 407/717/81 405/718/81 +f 403/719/80 408/720/80 407/721/80 +f 402/716/82 405/722/82 406/723/82 +f 404/714/79 406/724/79 408/725/79 +f 415/726/82 412/727/82 411/728/82 +f 414/729/80 409/730/80 410/731/80 +f 416/732/81 410/733/81 412/734/81 +f 413/711/3 416/732/3 415/726/3 +f 3/1/1 4/735/1 2/2/1 +f 8/4/1 5/736/1 6/5/1 +f 9/7/2 11/21/2 12/8/2 +f 14/10/3 15/737/3 16/11/3 +f 9/13/4 14/738/4 13/14/4 +f 10/16/5 15/739/5 14/17/5 +f 12/19/6 16/740/6 15/20/6 +f 11/21/7 13/12/7 16/11/7 +f 29/22/4 31/37/4 27/23/4 +f 20/25/3 19/30/3 17/26/3 +f 17/26/6 19/30/6 23/28/6 +f 19/30/5 20/25/5 24/31/5 +f 18/27/7 17/26/7 21/33/7 +f 20/25/4 18/27/4 22/35/4 +f 31/37/7 32/43/7 28/38/7 +f 30/40/5 29/22/5 25/41/5 +f 32/43/6 30/40/6 26/44/6 +f 29/22/3 30/40/3 32/43/3 +f 40/46/2 38/62/2 3/47/2 +f 7/49/3 34/741/3 33/50/3 +f 35/52/8 34/741/8 7/49/8 +f 39/54/9 40/742/9 1/55/9 +f 37/57/3 39/54/3 2/56/3 +f 36/59/2 35/52/2 6/53/2 +f 33/50/9 36/743/9 5/61/9 +f 38/62/8 37/57/8 4/58/8 +f 34/63/3 41/744/3 43/64/3 +f 45/66/2 46/85/2 38/67/2 +f 51/69/10 52/745/10 44/70/10 +f 52/72/2 50/95/2 42/73/2 +f 42/75/11 41/744/11 34/63/11 +f 48/77/12 45/746/12 40/78/12 +f 47/80/3 48/77/3 39/79/3 +f 44/82/2 42/75/2 35/76/2 +f 43/64/12 44/747/12 36/84/12 +f 46/85/11 47/80/11 37/81/11 +f 55/86/3 63/748/3 64/87/3 +f 64/87/13 61/749/13 53/89/13 +f 54/90/14 55/99/14 47/91/14 +f 45/93/2 53/750/2 54/90/2 +f 41/94/3 49/751/3 51/69/3 +f 50/95/14 49/751/14 41/94/14 +f 56/96/10 53/752/10 45/97/10 +f 55/99/3 56/96/3 48/98/3 +f 57/100/3 65/753/3 67/101/3 +f 69/103/2 70/132/2 62/104/2 +f 60/106/2 58/117/2 50/107/2 +f 59/109/13 60/754/13 52/110/13 +f 62/112/15 63/748/15 55/86/15 +f 61/114/2 62/112/2 54/113/2 +f 49/116/3 57/755/3 59/109/3 +f 58/117/15 57/755/15 49/116/15 +f 77/118/2 78/121/2 70/119/2 +f 78/121/16 79/756/16 71/122/16 +f 66/123/17 65/753/17 57/100/17 +f 72/125/18 69/757/18 61/126/18 +f 63/128/3 71/758/3 72/125/3 +f 68/129/2 66/123/2 58/124/2 +f 67/101/18 68/759/18 60/131/18 +f 70/132/17 71/758/17 63/128/17 +f 84/133/2 82/164/2 74/134/2 +f 79/136/3 87/760/3 88/137/3 +f 65/139/3 73/761/3 75/140/3 +f 74/142/16 73/761/16 65/139/16 +f 80/144/19 77/762/19 69/145/19 +f 71/122/3 79/756/3 80/144/3 +f 76/147/2 74/142/2 66/143/2 +f 75/140/19 76/763/19 68/149/19 +f 96/150/20 93/764/20 85/151/20 +f 90/153/21 89/765/21 81/154/21 +f 83/156/22 84/766/22 76/157/22 +f 86/159/23 87/760/23 79/136/23 +f 85/161/2 86/159/2 78/160/2 +f 73/163/3 81/767/3 83/156/3 +f 82/164/23 81/767/23 73/163/23 +f 88/137/22 85/768/22 77/165/22 +f 101/166/2 102/169/2 94/167/2 +f 102/169/24 103/769/24 95/170/24 +f 87/171/3 95/770/3 96/150/3 +f 92/172/2 90/153/2 82/155/2 +f 91/174/20 92/771/20 84/175/20 +f 94/177/21 95/770/21 87/171/21 +f 93/179/2 94/177/2 86/178/2 +f 81/154/3 89/765/3 91/174/3 +f 110/181/25 111/772/25 103/182/25 +f 107/184/26 108/773/26 100/185/26 +f 89/187/3 97/774/3 99/188/3 +f 98/190/24 97/774/24 89/187/24 +f 104/192/27 101/775/27 93/193/27 +f 95/170/3 103/769/3 104/192/3 +f 100/195/2 98/190/2 90/191/2 +f 99/188/27 100/776/27 92/197/27 +f 111/198/3 119/777/3 120/199/3 +f 120/199/28 117/778/28 109/201/28 +f 109/202/2 110/181/2 102/183/2 +f 97/204/3 105/779/3 107/184/3 +f 106/205/25 105/779/25 97/204/25 +f 112/207/26 109/780/26 101/208/26 +f 103/182/3 111/772/3 112/207/3 +f 108/210/2 106/205/2 98/206/2 +f 122/212/29 121/781/29 113/213/29 +f 113/213/3 121/781/3 123/215/3 +f 116/217/2 114/228/2 106/218/2 +f 115/220/28 116/782/28 108/221/28 +f 118/223/30 119/777/30 111/198/30 +f 117/225/2 118/223/2 110/224/2 +f 105/227/3 113/783/3 115/220/3 +f 114/228/30 113/783/30 105/227/30 +f 133/229/2 134/232/2 126/230/2 +f 134/232/31 135/784/31 127/233/31 +f 128/234/32 125/785/32 117/235/32 +f 119/237/3 127/786/3 128/234/3 +f 124/238/2 122/212/2 114/214/2 +f 123/215/32 124/787/32 116/240/32 +f 126/241/29 127/786/29 119/237/29 +f 125/243/2 126/241/2 118/242/2 +f 139/245/33 140/788/33 132/246/33 +f 140/248/2 138/272/2 130/249/2 +f 121/251/3 129/789/3 131/252/3 +f 130/254/31 129/789/31 121/251/31 +f 136/256/34 133/790/34 125/257/34 +f 127/233/3 135/784/3 136/256/3 +f 132/259/2 130/254/2 122/255/2 +f 131/252/34 132/791/34 124/261/34 +f 151/262/3 152/265/3 144/263/3 +f 152/265/35 149/792/35 141/266/35 +f 142/267/36 143/276/36 135/268/36 +f 133/270/2 141/793/2 142/267/2 +f 129/271/3 137/794/3 139/245/3 +f 138/272/36 137/794/36 129/271/36 +f 144/273/33 141/795/33 133/274/33 +f 143/276/3 144/273/3 136/275/3 +f 146/277/37 148/796/37 147/278/37 +f 152/280/37 151/797/37 150/281/37 +f 148/283/2 146/294/2 138/284/2 +f 147/286/35 148/798/35 140/287/35 +f 150/289/38 151/262/38 143/264/38 +f 149/291/2 150/289/2 142/290/2 +f 137/293/3 145/799/3 147/286/3 +f 146/294/38 145/799/38 137/293/38 +f 155/295/2 156/310/2 154/296/2 +f 159/298/3 160/309/3 157/299/3 +f 153/301/39 158/800/39 157/302/39 +f 154/304/40 159/801/40 158/305/40 +f 156/307/41 160/802/41 159/308/41 +f 155/295/42 157/299/42 160/309/42 +f 173/311/39 175/326/39 171/312/39 +f 164/314/3 163/319/3 161/315/3 +f 161/315/41 163/319/41 167/317/41 +f 163/319/40 164/314/40 168/320/40 +f 162/316/42 161/315/42 165/322/42 +f 164/314/39 162/316/39 166/324/39 +f 175/326/42 176/332/42 172/327/42 +f 174/329/40 173/311/40 169/330/40 +f 176/332/41 174/329/41 170/333/41 +f 173/311/3 174/329/3 176/332/3 +f 179/335/2 180/350/2 178/336/2 +f 183/338/3 184/349/3 181/339/3 +f 177/341/43 182/803/43 181/342/43 +f 178/344/44 183/804/44 182/345/44 +f 180/347/45 184/805/45 183/348/45 +f 179/335/46 181/339/46 184/349/46 +f 197/351/43 199/366/43 195/352/43 +f 188/354/3 187/359/3 185/355/3 +f 185/355/45 187/359/45 191/357/45 +f 187/359/44 188/354/44 192/360/44 +f 186/356/46 185/355/46 189/362/46 +f 188/354/43 186/356/43 190/364/43 +f 199/366/46 200/372/46 196/367/46 +f 198/369/44 197/351/44 193/370/44 +f 200/372/45 198/369/45 194/373/45 +f 197/351/3 198/369/3 200/372/3 +f 203/375/2 204/390/2 202/376/2 +f 207/378/3 208/389/3 205/379/3 +f 201/381/47 206/806/47 205/382/47 +f 202/384/48 207/807/48 206/385/48 +f 204/387/49 208/808/49 207/388/49 +f 203/375/50 205/379/50 208/389/50 +f 221/391/47 223/406/47 219/392/47 +f 212/394/3 211/399/3 209/395/3 +f 209/395/49 211/399/49 215/397/49 +f 211/399/48 212/394/48 216/400/48 +f 210/396/50 209/395/50 213/402/50 +f 212/394/47 210/396/47 214/404/47 +f 223/406/50 224/412/50 220/407/50 +f 222/409/48 221/391/48 217/410/48 +f 224/412/49 222/409/49 218/413/49 +f 221/391/3 222/409/3 224/412/3 +f 227/415/2 228/430/2 226/416/2 +f 231/418/3 232/429/3 229/419/3 +f 225/421/51 230/809/51 229/422/51 +f 226/424/52 231/810/52 230/425/52 +f 228/427/53 232/811/53 231/428/53 +f 227/415/54 229/419/54 232/429/54 +f 245/431/51 247/446/51 243/432/51 +f 236/434/3 235/439/3 233/435/3 +f 233/435/53 235/439/53 239/437/53 +f 235/439/52 236/434/52 240/440/52 +f 234/436/54 233/435/54 237/442/54 +f 236/434/51 234/436/51 238/444/51 +f 247/446/54 248/452/54 244/447/54 +f 246/449/52 245/431/52 241/450/52 +f 248/452/53 246/449/53 242/453/53 +f 245/431/3 246/449/3 248/452/3 +f 251/455/2 252/470/2 250/456/2 +f 255/458/3 256/469/3 253/459/3 +f 249/461/55 254/812/55 253/462/55 +f 250/464/56 255/813/56 254/465/56 +f 252/467/57 256/814/57 255/468/57 +f 251/455/58 253/459/58 256/469/58 +f 269/471/55 271/486/55 267/472/55 +f 260/474/3 259/479/3 257/475/3 +f 257/475/57 259/479/57 263/477/57 +f 259/479/56 260/474/56 264/480/56 +f 258/476/58 257/475/58 261/482/58 +f 260/474/55 258/476/55 262/484/55 +f 271/486/58 272/492/58 268/487/58 +f 270/489/56 269/471/56 265/490/56 +f 272/492/57 270/489/57 266/493/57 +f 269/471/3 270/489/3 272/492/3 +f 275/495/2 276/510/2 274/496/2 +f 279/498/3 280/509/3 277/499/3 +f 273/501/59 278/815/59 277/502/59 +f 274/504/60 279/816/60 278/505/60 +f 276/507/61 280/817/61 279/508/61 +f 275/495/62 277/499/62 280/509/62 +f 293/511/59 295/526/59 291/512/59 +f 284/514/3 283/519/3 281/515/3 +f 281/515/61 283/519/61 287/517/61 +f 283/519/60 284/514/60 288/520/60 +f 282/516/62 281/515/62 285/522/62 +f 284/514/59 282/516/59 286/524/59 +f 295/526/62 296/532/62 292/527/62 +f 294/529/60 293/511/60 289/530/60 +f 296/532/61 294/529/61 290/533/61 +f 293/511/3 294/529/3 296/532/3 +f 299/535/2 300/550/2 298/536/2 +f 303/538/3 304/549/3 301/539/3 +f 297/541/63 302/818/63 301/542/63 +f 298/544/64 303/819/64 302/545/64 +f 300/547/65 304/820/65 303/548/65 +f 299/535/66 301/539/66 304/549/66 +f 317/551/63 319/566/63 315/552/63 +f 308/554/3 307/559/3 305/555/3 +f 305/555/65 307/559/65 311/557/65 +f 307/559/64 308/554/64 312/560/64 +f 306/556/66 305/555/66 309/562/66 +f 308/554/63 306/556/63 310/564/63 +f 319/566/66 320/572/66 316/567/66 +f 318/569/64 317/551/64 313/570/64 +f 320/572/65 318/569/65 314/573/65 +f 317/551/3 318/569/3 320/572/3 +f 323/575/2 324/590/2 322/576/2 +f 327/578/3 328/589/3 325/579/3 +f 321/581/67 326/821/67 325/582/67 +f 322/584/68 327/822/68 326/585/68 +f 324/587/69 328/823/69 327/588/69 +f 323/575/70 325/579/70 328/589/70 +f 341/591/67 343/606/67 339/592/67 +f 332/594/3 331/599/3 329/595/3 +f 329/595/69 331/599/69 335/597/69 +f 331/599/68 332/594/68 336/600/68 +f 330/596/70 329/595/70 333/602/70 +f 332/594/67 330/596/67 334/604/67 +f 343/606/70 344/612/70 340/607/70 +f 342/609/68 341/591/68 337/610/68 +f 344/612/69 342/609/69 338/613/69 +f 341/591/3 342/609/3 344/612/3 +f 347/615/2 348/630/2 346/616/2 +f 351/618/3 352/629/3 349/619/3 +f 345/621/71 350/824/71 349/622/71 +f 346/624/72 351/825/72 350/625/72 +f 348/627/73 352/826/73 351/628/73 +f 347/615/74 349/619/74 352/629/74 +f 365/631/71 367/646/71 363/632/71 +f 356/634/3 355/639/3 353/635/3 +f 353/635/73 355/639/73 359/637/73 +f 355/639/72 356/634/72 360/640/72 +f 354/636/74 353/635/74 357/642/74 +f 356/634/71 354/636/71 358/644/71 +f 367/646/74 368/652/74 364/647/74 +f 366/649/72 365/631/72 361/650/72 +f 368/652/73 366/649/73 362/653/73 +f 365/631/3 366/649/3 368/652/3 +f 371/655/2 372/670/2 370/656/2 +f 375/658/3 376/669/3 373/659/3 +f 369/661/75 374/827/75 373/662/75 +f 370/664/76 375/828/76 374/665/76 +f 372/667/77 376/829/77 375/668/77 +f 371/655/78 373/659/78 376/669/78 +f 389/671/75 391/686/75 387/672/75 +f 380/674/3 379/679/3 377/675/3 +f 377/675/77 379/679/77 383/677/77 +f 379/679/76 380/674/76 384/680/76 +f 378/676/78 377/675/78 381/682/78 +f 380/674/75 378/676/75 382/684/75 +f 391/686/78 392/692/78 388/687/78 +f 390/689/76 389/671/76 385/690/76 +f 392/692/77 390/689/77 386/693/77 +f 389/671/3 390/689/3 392/692/3 +f 395/695/2 396/710/2 394/696/2 +f 399/698/3 400/709/3 397/699/3 +f 393/701/79 398/830/79 397/702/79 +f 394/704/80 399/831/80 398/705/80 +f 396/707/81 400/832/81 399/708/81 +f 395/695/82 397/699/82 400/709/82 +f 413/711/79 415/726/79 411/712/79 +f 404/714/3 403/719/3 401/715/3 +f 401/715/81 403/719/81 407/717/81 +f 403/719/80 404/714/80 408/720/80 +f 402/716/82 401/715/82 405/722/82 +f 404/714/79 402/716/79 406/724/79 +f 415/726/82 416/732/82 412/727/82 +f 414/729/80 413/711/80 409/730/80 +f 416/732/81 414/729/81 410/733/81 +f 413/711/3 414/729/3 416/732/3 diff --git a/src/main/resources/assets/hbm/models/missile_stealth.obj b/src/main/resources/assets/hbm/models/missile_stealth.obj new file mode 100644 index 000000000..f723b225a --- /dev/null +++ b/src/main/resources/assets/hbm/models/missile_stealth.obj @@ -0,0 +1,384 @@ +# Blender v2.79 (sub 0) OBJ File: 'MissileStealth.blend' +# www.blender.org +o Cylinder +v 0.487139 0.500000 -0.281250 +v 0.487139 0.500000 0.281250 +v 0.000000 0.500000 0.562500 +v -0.487139 0.500000 0.281250 +v 0.000000 0.500000 -0.562500 +v -0.487139 0.500000 -0.281250 +v 0.000000 1.000000 -0.750000 +v -0.649519 1.000000 -0.375000 +v -0.649519 1.000000 0.375000 +v 0.000000 1.000000 0.750000 +v 0.649519 1.000000 0.375000 +v 0.649519 1.000000 -0.375000 +v 0.000000 7.000000 -0.750000 +v -0.649519 7.000000 -0.375000 +v -0.649519 7.000000 0.375000 +v 0.000000 7.000000 0.750000 +v 0.649519 7.000000 0.375000 +v 0.649519 7.000000 -0.375000 +v 0.000000 11.000000 0.000000 +v 0.755918 -0.020288 -1.295622 +v 0.255918 0.979712 -0.429596 +v 0.505918 -0.020288 -0.862609 +v 0.755918 1.479711 -1.295621 +v 0.255918 3.479711 -0.429596 +v 0.310045 0.979712 -0.398346 +v 0.310045 3.479711 -0.398346 +v 0.810045 -0.020288 -1.264372 +v 0.560045 -0.020288 -0.831359 +v 0.810045 1.479711 -1.264371 +v 0.689955 1.479712 1.333705 +v 0.439955 -0.020288 0.900692 +v 0.689955 -0.020288 1.333705 +v 0.189955 3.479711 0.467680 +v 0.189955 0.979712 0.467680 +v 0.244082 3.479711 0.436430 +v 0.744082 1.479712 1.302455 +v 0.494082 -0.020288 0.869442 +v 0.244082 0.979712 0.436430 +v 0.744082 -0.020288 1.302455 +v -1.500000 -0.020288 -0.006834 +v -0.500000 0.979712 -0.006834 +v -1.000000 -0.020288 -0.006834 +v -1.500000 1.479712 -0.006834 +v -0.500000 3.479712 -0.006834 +v -0.500000 0.979712 -0.069334 +v -0.500000 3.479712 -0.069334 +v -1.500000 -0.020288 -0.069334 +v -1.000000 -0.020288 -0.069334 +v -1.500000 1.479712 -0.069334 +v -0.744082 -0.020288 -1.302455 +v -0.244082 0.979712 -0.436430 +v -0.494082 -0.020288 -0.869442 +v -0.744082 1.479711 -1.302455 +v -0.244082 3.479711 -0.436430 +v -0.189955 0.979712 -0.467680 +v -0.189955 3.479711 -0.467680 +v -0.689956 -0.020288 -1.333705 +v -0.439955 -0.020288 -0.900692 +v -0.689956 1.479711 -1.333705 +v 1.500000 1.479712 0.069333 +v 1.000000 -0.020288 0.069334 +v 1.500000 -0.020288 0.069333 +v 0.500000 3.479711 0.069334 +v 0.500000 0.979712 0.069334 +v 0.500000 3.479711 0.006834 +v 1.500000 1.479712 0.006834 +v 1.000000 -0.020288 0.006834 +v 0.500000 0.979712 0.006834 +v 1.500000 -0.020288 0.006833 +v -0.755918 -0.020288 1.295621 +v -0.255918 0.979712 0.429596 +v -0.505918 -0.020288 0.862609 +v -0.755918 1.479712 1.295621 +v -0.255918 3.479712 0.429596 +v -0.310045 0.979712 0.398346 +v -0.310045 3.479712 0.398346 +v -0.810045 -0.020288 1.264371 +v -0.560045 -0.020288 0.831359 +v -0.810045 1.479712 1.264371 +vt 0.400000 0.047619 +vt 0.511111 0.000000 +vt 0.533333 0.047619 +vt 0.666667 0.047619 +vt 0.777778 -0.000000 +vt 0.800000 0.047619 +vt 0.133333 0.047619 +vt 0.244444 0.000000 +vt 0.266667 0.047619 +vt 0.644444 0.000000 +vt 0.022222 0.000000 +vt 0.111111 0.000000 +vt 0.850033 0.099935 +vt 0.800066 0.053571 +vt 0.850033 0.007208 +vt 0.266667 0.619048 +vt 0.000000 0.619048 +vt 0.000000 0.047619 +vt 0.533333 0.619048 +vt 0.133333 0.619048 +vt 0.666667 0.619048 +vt 0.400000 0.619048 +vt 0.377778 0.000000 +vt 0.600000 1.000000 +vt 0.800000 0.619048 +vt 0.733333 1.000000 +vt 0.066667 1.000000 +vt 0.200000 1.000000 +vt 0.333333 1.000000 +vt 0.466667 1.000000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.250000 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.988889 0.250000 +vt 0.977778 0.202381 +vt 0.988889 0.202381 +vt 0.988889 0.583333 +vt 0.988889 0.107143 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.977778 0.202381 +vt 0.977778 0.107143 +vt 0.988889 0.392857 +vt 0.977778 0.583333 +vt 0.977778 0.392857 +vt 0.988889 0.250000 +vt 0.988889 0.202381 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.250000 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.988889 0.250000 +vt 0.977778 0.202381 +vt 0.988889 0.202381 +vt 0.988889 0.583333 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.250000 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.988889 0.250000 +vt 0.988889 0.202381 +vt 0.977778 0.202381 +vt 0.988889 0.583333 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.988889 0.202381 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.988889 0.583333 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.977778 0.250000 +vt 0.977778 0.202381 +vt 0.988889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.392857 +vt 0.977778 0.250000 +vt 0.888889 0.250000 +vt 0.888889 0.250000 +vt 0.977778 0.250000 +vt 0.977778 0.392857 +vt 0.988889 0.392857 +vt 0.988889 0.250000 +vt 0.988889 0.202381 +vt 0.977778 0.202381 +vt 0.988889 0.583333 +vt 0.977778 0.107143 +vt 0.988889 0.107143 +vt 0.422222 0.000000 +vt 0.688889 0.000000 +vt 0.155556 0.000000 +vt 0.555556 -0.000000 +vt 0.949967 0.007208 +vt 0.999934 0.053571 +vt 0.949967 0.099935 +vt 0.288889 0.000000 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.977778 0.583333 +vt 0.988889 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.977778 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.977778 0.583333 +vt 0.977778 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.800000 0.583333 +vt 0.800000 0.583333 +vt 0.800000 0.345238 +vt 0.977778 0.583333 +vn -0.4756 -0.3089 -0.8237 +vn -0.4756 -0.3089 0.8237 +vn 0.9511 -0.3089 0.0000 +vn -0.9511 -0.3089 0.0000 +vn 0.4756 -0.3089 0.8237 +vn -0.0000 -1.0000 0.0000 +vn 0.5000 0.0000 -0.8660 +vn 0.5000 0.0000 0.8660 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.5000 0.0000 0.8660 +vn -0.5000 0.0000 -0.8660 +vn 0.4756 -0.3089 -0.8237 +vn -0.9871 0.1603 0.0000 +vn -0.4935 0.1603 0.8548 +vn 0.4935 0.1603 0.8548 +vn 0.9871 0.1603 0.0000 +vn 0.4935 0.1603 -0.8548 +vn -0.4935 0.1603 -0.8548 +vn -0.8660 0.0000 -0.5000 +vn 0.8660 -0.0000 0.5000 +vn 0.4472 0.4472 -0.7746 +vn -0.4472 -0.4472 0.7746 +vn -0.4472 -0.4472 -0.7746 +vn 0.4472 0.4472 0.7746 +vn -0.8660 -0.0000 0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.0000 0.0000 1.0000 +vn -0.0000 0.0000 -1.0000 +vn -0.8944 0.4472 0.0000 +vn 0.8944 -0.4472 0.0000 +vn -0.4472 0.4472 -0.7746 +vn 0.4472 -0.4472 0.7746 +vn -0.8944 -0.4472 0.0000 +vn 0.8944 0.4472 -0.0000 +vn -0.4472 0.4472 0.7746 +vn 0.4472 -0.4472 -0.7746 +s off +f 7/1/1 6/2/1 8/3/1 +f 9/4/2 3/5/2 10/6/2 +f 11/7/3 1/8/3 12/9/3 +f 8/3/4 4/10/4 9/4/4 +f 11/7/5 3/11/5 2/12/5 +f 2/13/6 3/14/6 4/15/6 +f 7/1/7 18/16/7 12/9/7 +f 11/7/8 16/17/8 10/18/8 +f 9/4/9 14/19/9 8/3/9 +f 12/9/10 17/20/10 11/7/10 +f 10/6/11 15/21/11 9/4/11 +f 8/3/12 13/22/12 7/1/12 +f 12/9/13 5/23/13 7/1/13 +f 14/19/14 15/21/14 19/24/14 +f 15/21/15 16/25/15 19/26/15 +f 16/17/16 17/20/16 19/27/16 +f 17/20/17 18/16/17 19/28/17 +f 18/16/18 13/22/18 19/29/18 +f 13/22/19 14/19/19 19/30/19 +f 23/31/20 20/32/20 22/33/20 +f 28/34/21 27/35/21 29/36/21 +f 23/37/7 27/35/7 20/38/7 +f 20/38/6 28/39/6 22/40/6 +f 24/41/22 29/36/22 23/37/22 +f 21/42/23 28/39/23 25/43/23 +f 38/44/24 31/45/24 34/46/24 +f 36/47/25 33/48/25 30/49/25 +f 39/50/6 31/45/6 37/51/6 +f 36/47/8 32/52/8 39/50/8 +f 31/53/26 32/52/26 30/49/26 +f 36/54/27 39/55/27 37/56/27 +f 43/57/28 40/58/28 42/59/28 +f 48/60/29 47/61/29 49/62/29 +f 43/63/9 47/61/9 40/64/9 +f 40/64/6 48/65/6 42/66/6 +f 44/67/30 49/62/30 43/63/30 +f 42/66/31 45/68/31 41/69/31 +f 53/70/26 50/71/26 52/72/26 +f 58/73/27 57/74/27 59/75/27 +f 53/76/12 57/74/12 50/77/12 +f 52/78/6 57/74/6 58/79/6 +f 54/80/32 59/75/32 53/76/32 +f 52/78/33 55/81/33 51/82/33 +f 67/83/34 64/84/34 68/85/34 +f 65/86/35 60/87/35 66/88/35 +f 67/83/6 62/89/6 61/90/6 +f 66/88/10 62/89/10 69/91/10 +f 61/92/28 62/89/28 60/87/28 +f 66/93/29 69/94/29 67/95/29 +f 73/96/21 70/97/21 72/98/21 +f 78/99/20 77/100/20 79/101/20 +f 73/102/11 77/100/11 70/103/11 +f 72/104/6 77/100/6 78/105/6 +f 74/106/36 79/101/36 73/102/36 +f 72/104/37 75/107/37 71/108/37 +f 7/1/1 5/109/1 6/2/1 +f 9/4/2 4/110/2 3/5/2 +f 11/7/3 2/111/3 1/8/3 +f 8/3/4 6/112/4 4/10/4 +f 11/7/5 10/18/5 3/11/5 +f 4/15/6 6/113/6 5/114/6 +f 5/114/6 1/115/6 4/15/6 +f 1/115/6 2/13/6 4/15/6 +f 7/1/7 13/22/7 18/16/7 +f 11/7/8 17/20/8 16/17/8 +f 9/4/9 15/21/9 14/19/9 +f 12/9/10 18/16/10 17/20/10 +f 10/6/11 16/25/11 15/21/11 +f 8/3/12 14/19/12 13/22/12 +f 12/9/13 1/116/13 5/23/13 +f 22/33/20 21/117/20 23/31/20 +f 21/117/20 24/118/20 23/31/20 +f 26/119/21 25/120/21 29/36/21 +f 25/120/21 28/34/21 29/36/21 +f 23/37/7 29/36/7 27/35/7 +f 20/38/6 27/35/6 28/39/6 +f 24/41/22 26/121/22 29/36/22 +f 21/42/23 22/40/23 28/39/23 +f 38/44/24 37/51/24 31/45/24 +f 36/47/25 35/122/25 33/48/25 +f 39/50/6 32/52/6 31/45/6 +f 36/47/8 30/49/8 32/52/8 +f 33/123/26 34/124/26 30/49/26 +f 34/124/26 31/53/26 30/49/26 +f 37/56/27 38/125/27 36/54/27 +f 38/125/27 35/126/27 36/54/27 +f 42/59/28 41/127/28 43/57/28 +f 41/127/28 44/128/28 43/57/28 +f 46/129/29 45/130/29 49/62/29 +f 45/130/29 48/60/29 49/62/29 +f 43/63/9 49/62/9 47/61/9 +f 40/64/6 47/61/6 48/65/6 +f 44/67/30 46/131/30 49/62/30 +f 42/66/31 48/65/31 45/68/31 +f 52/72/26 51/132/26 53/70/26 +f 51/132/26 54/133/26 53/70/26 +f 56/134/27 55/135/27 59/75/27 +f 55/135/27 58/73/27 59/75/27 +f 53/76/12 59/75/12 57/74/12 +f 52/78/6 50/77/6 57/74/6 +f 54/80/32 56/136/32 59/75/32 +f 52/78/33 58/79/33 55/81/33 +f 67/83/34 61/90/34 64/84/34 +f 65/86/35 63/137/35 60/87/35 +f 67/83/6 69/91/6 62/89/6 +f 66/88/10 60/87/10 62/89/10 +f 63/138/28 64/139/28 60/87/28 +f 64/139/28 61/92/28 60/87/28 +f 67/95/29 68/140/29 66/93/29 +f 68/140/29 65/141/29 66/93/29 +f 72/98/21 71/142/21 73/96/21 +f 71/142/21 74/143/21 73/96/21 +f 76/144/20 75/145/20 79/101/20 +f 75/145/20 78/99/20 79/101/20 +f 73/102/11 79/101/11 77/100/11 +f 72/104/6 70/103/6 77/100/6 +f 74/106/36 76/146/36 79/101/36 +f 72/104/37 78/105/37 75/107/37 diff --git a/src/main/resources/assets/hbm/textures/items/missile_stealth.png b/src/main/resources/assets/hbm/textures/items/missile_stealth.png new file mode 100644 index 0000000000000000000000000000000000000000..f7a8d3af2ed767ef632b764e199ac151ee024c5a GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfr0pziwvvzhc+AGLE~Omb$oToSwAr{pLx>e<`#u9I!b*eczVK zgVpkkbBY;ms_Yiu@4aOj0=7>TjQSRqzkXn@3TT`!@;92D+cY)78&qol`;+0NNH~ AKL7v# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/missile_stealth.png b/src/main/resources/assets/hbm/textures/models/missile_stealth.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebb99bfe5137a9f95d91ed69473544007f4c932 GIT binary patch literal 1126 zcmeAS@N?(olHy`uVBq!ia0vp^Q9!(cgAGU~eEKN>q*#ibJVQ8upoSx*1IU&2ba4!+ znDch7VbLQ80ax}@f|{J-7yt4faP^onY16@L4;-aD_b-3SR()@E(S~o$ceA4SIg|6f zMB5T8cn*J9QOmo(_p$#y%bLRrniDQK8oW@DC=uYX;$V|yY36HkWG|dimsHhSvNtZ> z?|hwh4nl5`)r&%z%NBi~=6-p${eT<$K_vb9&FgBLi{8$jw)dyp4HOfT%wBw&6~FV} z`?L9}g^SNW-~6(#>hoG1zFWUue0vtX@S@{{KDYa)iZ5LDKL05oNH6sNuJ^4aERI%E zwc2w^O@4)WxC`hv>&aiO(O7GH323^9`{I0{0z>JNpKn&%2!DUJ{m|<2iRfeBk`|RJY|51Hl^1>I@ z4^IYs*?ZxIf=By{YDHP;ec!*B-=7EaDNB8Sx78)ZUvVDC*(zV$TdO9!2p9w$|Ky^5 zLC#q8{%#gnww>{O*krzoKucZff0@1xo7@L7Yx8g?GnZhR?>ptL_H-9m;`~K-&iT*tRn=t| zEa2w=}$l!CiJn{|4*7S?S0Sm2_V-! zh~7S{#G;0K$zezD)!snYMk~nj*{jyB_B<}FD7$EWAkdj0>16e&a}Gf1{Ec5PX}uKq zt9f~?UViZIzt^AH9#T6c_(7)R?Ou-T_}6FGFZ^@r@y+*pe{XUAdbvh_PASX5NU--n zK?d^heQt1ID04u93>4Ik6Cj}il;UVA>DVU@mIC{5FGLC)%B^52L6-NgZ+!UvWBz?$ zb^*yAiayk{g8$GL&Z(REF3vC7e}A>Sw~hI)%Y0Y;Kc7B-|NZxp-FH`=ds^hV{IX{6 z;~$?I3a^2KHg$He*UPfqw!%Sjl5v88Q{HQj%zyo_Po59& z0_u&`n|^lfxpcXwe}N$KQFKJ?c!}` zH9sy2GOk>p#dFK!^~#5*x&Pb$6#rLt|Fr$@E^&_yKCS Date: Sun, 7 Jan 2024 20:58:31 +0100 Subject: [PATCH 203/207] mostly fixes, supply crate changes --- changelog | 14 +- gradle.properties | 2 +- .../hbm/blocks/generic/BlockAmmoCrate.java | 25 +++- .../com/hbm/blocks/generic/BlockCanCrate.java | 120 +++++++++--------- .../com/hbm/blocks/generic/BlockCrate.java | 21 +-- .../blocks/generic/BlockDecoContainer.java | 16 +-- .../com/hbm/blocks/generic/BlockPedestal.java | 7 + .../com/hbm/entity/mob/EntityGlyphid.java | 4 +- .../hbm/entity/projectile/EntityBoxcar.java | 63 ++++----- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/resources/assets/hbm/sounds.json | 1 + .../assets/hbm/sounds/weapon/trainImpact.ogg | Bin 0 -> 30762 bytes .../assets/hbm/textures/items/book_of_2.png | Bin 0 -> 1088 bytes 13 files changed, 144 insertions(+), 131 deletions(-) create mode 100644 src/main/resources/assets/hbm/sounds/weapon/trainImpact.ogg create mode 100644 src/main/resources/assets/hbm/textures/items/book_of_2.png diff --git a/changelog b/changelog index 8aa4089d6..169a6f798 100644 --- a/changelog +++ b/changelog @@ -27,7 +27,8 @@ * Now features proper animations for drawing the weapon, firing and reloading, as well as new sounds * Comes with a new and improved 3D model as well as a cylinder gap flash when firing * Is now part of the red room loot pool - * Durability has been drastically increased + * Durability has been drastically increased (31k instead of 4k) + * The boxcar now has new impact sounds and spawns fewer particles * Powder box recipes now produce 8 boxes from the same amount of ingredients, making cyclotron recipes more affordable * Buffed the radiation-powered engine, all valid fuels now produce 10x more energy per tick * Removed tungsten and HSS bolts as dedicated items, they are now a single bolt item that uses the autogen system @@ -35,11 +36,20 @@ * Bolts Are now 1/8 of an ingot instead of 1/2 which makes some recipes marginally cheaper, as well as making them equal to GregTech bolts * Bolts are oredicted and interchangeable, as well as recycleable in the crucible * The N45 naval mine has been obliterated -* The solar boiler's ray rendering is no longer bound by particle settings, instead it will be disabled when fast graphics are enabaled +* The solar boiler's ray rendering is no longer bound by particle settings, instead it will be disabled when fast graphics are enabled * The solar boiler's internal buffer has been reduced, its steam output is now capped at 10,000mB/t (which should be 20kHE/t or 0.8MHE/s) +* All crates except the jungle dungeon one now drop themselves when mined + * Supply and conserve crates do not need a tool because they are made of wood, the ammo crate requires a pickaxe + * All of those crates are now opened with the crowbar instead in order to be consistent with each other +* Standard gauge rails are now craftable and visible in the transportation tab + * You can now play around with the new rail types in creative mode, as none of the train cars are currently craftable + * Coupling should work, but coupling info is not saved to NBT so links will be lost when leaving the world + * Trains might randomly derail on 5m curves, idk why ## Fixed * Fixed afterburn upgrades not being craftable with bakelite * Fixed bismuth block not being properly oredicted * Powder detectors that are used in the same network as diodes should now be somewhat less wrong * Fixed horrifying gamebreaking issue that would frequently cause crashes, corrupt worlds and bluescreen PCs where the red copper block and the advanced alloy block had inconsistent colors +* Fixed file cabinets not dropping their contents +* Fixed some sides of the pedestal not rendering diff --git a/gradle.properties b/gradle.properties index 5c90623a5..e134592d6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4824 +mod_build_number=4837 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java b/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java index f7612ee69..a2925f119 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java @@ -12,6 +12,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -38,11 +39,31 @@ public class BlockAmmoCrate extends Block { public IIcon getIcon(int side, int metadata) { return side == 0 ? this.iconBottom : (side == 1 ? this.iconTop : this.blockIcon); } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { + if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { + if(!world.isRemote) { + dropContents(world, x, y, z); + world.setBlockToAir(x, y, z); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); + } + return true; + } + return false; + } Random rand = new Random(); - @Override - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + public void dropContents(World world, int x, int y, int z) { + ArrayList items = getContents(world, x, y, z); + + for(ItemStack item : items) { + this.dropBlockAsItem(world, x, y, z, item); + } + } + + public ArrayList getContents(World world, int x, int y, int z) { ArrayList ret = new ArrayList(); diff --git a/src/main/java/com/hbm/blocks/generic/BlockCanCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCanCrate.java index f9b27c5a8..67e8c5e9b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCanCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCanCrate.java @@ -11,9 +11,7 @@ import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; public class BlockCanCrate extends Block { @@ -21,79 +19,77 @@ public class BlockCanCrate extends Block { public BlockCanCrate(Material p_i45394_1_) { super(p_i45394_1_); } - - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + @Override - public int getRenderType(){ + public int getRenderType() { return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - @Override + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { - - if(world.isRemote) - { - player.addChatMessage(new ChatComponentText("The one crate you are allowed to smash!")); + if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { + if(!world.isRemote) { + dropContents(world, x, y, z); + world.setBlockToAir(x, y, z); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); + } + return true; } - - return true; - } - - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { - ArrayList ret = new ArrayList(); - - int count = quantityDropped(metadata, fortune, world.rand); - for(int i = 0; i < count; i++) { - Item item = getItemDropped(metadata, world.rand, fortune); - if(item != null) - ret.add(new ItemStack(item, 1, damageDropped(metadata, world.rand, item))); - } - - return ret; - } - - //pain - public int damageDropped(int meta, Random rand, Item item) { - if(item != ModItems.canned_conserve) - return damageDropped(meta); - else - return Math.abs(rand.nextInt() % EnumFoodType.values().length); - } - - @Override - public Item getItemDropped(int i, Random rand, int j) { - - List items = new ArrayList(); - for(int a = 0; a < EnumFoodType.values().length; a++) - items.add(ModItems.canned_conserve); - items.add(ModItems.can_smart); - items.add(ModItems.can_creature); - items.add(ModItems.can_redbomb); - items.add(ModItems.can_mrsugar); - items.add(ModItems.can_overcharge); - items.add(ModItems.can_luna); - items.add(ModItems.can_breen); - items.add(ModItems.can_bepis); - items.add(ModItems.pudding); - - return items.get(rand.nextInt(items.size())); - } - - @Override - public int quantityDropped(Random rand) { - - return 5 + rand.nextInt(4); - } + return false; + } + Random rand = new Random(); + + public void dropContents(World world, int x, int y, int z) { + ArrayList items = getContents(world, x, y, z); + + for(ItemStack item : items) { + this.dropBlockAsItem(world, x, y, z, item); + } + } + + public ArrayList getContents(World world, int x, int y, int z) { + ArrayList ret = new ArrayList(); + + int count = getContentAmount(world.rand); + for(int i = 0; i < count; i++) { + ret.add(getRandomItem(world.rand)); + } + + return ret; + } + + public ItemStack getRandomItem(Random rand) { + + List items = new ArrayList(); + for(int a = 0; a < EnumFoodType.values().length; a++) + items.add(new ItemStack(ModItems.canned_conserve, 1, a)); + items.add(new ItemStack(ModItems.can_smart)); + items.add(new ItemStack(ModItems.can_creature)); + items.add(new ItemStack(ModItems.can_redbomb)); + items.add(new ItemStack(ModItems.can_mrsugar)); + items.add(new ItemStack(ModItems.can_overcharge)); + items.add(new ItemStack(ModItems.can_luna)); + items.add(new ItemStack(ModItems.can_breen)); + items.add(new ItemStack(ModItems.can_bepis)); + items.add(new ItemStack(ModItems.pudding)); + + return items.get(rand.nextInt(items.size())); + } + + public int getContentAmount(Random rand) { + return 5 + rand.nextInt(4); + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCrate.java index 7921a0e71..412b7ed2d 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCrate.java @@ -14,7 +14,6 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; public class BlockCrate extends BlockFalling { @@ -29,25 +28,17 @@ public class BlockCrate extends BlockFalling { super(p_i45394_1_); } - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return null; - } - @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { - dropItems(world, x, y, z); - world.setBlockToAir(x, y, z); - world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); - return true; - } else { - if(world.isRemote) { - player.addChatMessage(new ChatComponentText("I'll need a crate opening device to get the loot, smashing the whole thing won't work...")); + if(!world.isRemote) { + dropItems(world, x, y, z); + world.setBlockToAir(x, y, z); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); } + return true; } - - return true; + return false; } public void setDrops() { diff --git a/src/main/java/com/hbm/blocks/generic/BlockDecoContainer.java b/src/main/java/com/hbm/blocks/generic/BlockDecoContainer.java index d98221129..ac7a1cdb5 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDecoContainer.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDecoContainer.java @@ -58,9 +58,9 @@ public class BlockDecoContainer extends BlockDecoModel implements ITileEntityPro } else { TileEntity entity = world.getTileEntity(x, y, z); if(entity instanceof TileEntityLockableBase) { //annoying accommodations for the filing cabinet, but whatever, could potentially be useful - if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof ItemLock || player.getHeldItem().getItem() == ModItems.key_kit)) + if(player.getHeldItem() != null && (player.getHeldItem().getItem() instanceof ItemLock || player.getHeldItem().getItem() == ModItems.key_kit)) { return false; - else if(!player.isSneaking() && ((TileEntityLockableBase) entity).canAccess(player)) { + } else if(!player.isSneaking() && ((TileEntityLockableBase) entity).canAccess(player)) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; } @@ -99,13 +99,13 @@ public class BlockDecoContainer extends BlockDecoModel implements ITileEntityPro if(itemstack.hasTagCompound()) { entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); - - float f3 = 0.05F; - entityitem.motionX = (float) rand.nextGaussian() * f3; - entityitem.motionY = (float) rand.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float) rand.nextGaussian() * f3; - world.spawnEntityInWorld(entityitem); } + + float f3 = 0.05F; + entityitem.motionX = (float) rand.nextGaussian() * f3; + entityitem.motionY = (float) rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java index 2930323f7..9f4ace30b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java @@ -18,6 +18,7 @@ import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockPedestal extends BlockContainer { @@ -62,6 +63,12 @@ public class BlockPedestal extends BlockContainer { public boolean renderAsNormalBlock() { return false; } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + return true; + } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index ba5d41f5e..dfe3c6376 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -107,9 +107,9 @@ public class EntityGlyphid extends EntityMob { @Override protected void entityInit() { super.entityInit(); - this.dataWatcher.addObject(DW_WALL, new Byte((byte) 0)); //wall climbing + this.dataWatcher.addObject(DW_WALL, new Byte((byte) 0)); //wall climbing this.dataWatcher.addObject(DW_ARMOR, new Byte((byte) 0b11111)); //armor - this.dataWatcher.addObject(DW_SUBTYPE, new Byte((byte) 0)); //subtype (i.e. normal, infected, etc) + this.dataWatcher.addObject(DW_SUBTYPE, new Byte((byte) 0)); //subtype (i.e. normal, infected, etc) } @Override diff --git a/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java b/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java index 74a4f9a47..8871bd430 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java @@ -32,49 +32,36 @@ public class EntityBoxcar extends EntityThrowable { this.lastTickPosZ = this.prevPosZ = posZ; this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); - /*this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ;*/ - this.motionY -= 0.03; if(motionY < -1.5) motionY = -1.5; - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air) - { - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:entity.oldExplosion", 10000.0F, 0.5F + this.rand.nextFloat() * 0.1F); - this.setDead(); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2.5); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1.5); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1); - - List list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 2, posY - 2, posZ - 2, posX + 2, posY + 2, posZ + 2)); - - for(Entity e : list) { - e.attackEntityFrom(ModDamageSource.boxcar, 1000); - } - - if(!worldObj.isRemote) - worldObj.setBlock((int)(this.posX - 0.5), (int)(this.posY + 0.5), (int)(this.posZ - 0.5), ModBlocks.boxcar); - } - } + + if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) { + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:weapon.trainImpact", 100.0F, 1.0F); + this.setDead(); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2.5); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2); + //ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1.5); + //ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1); + + List list = (List) worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 2, posY - 2, posZ - 2, posX + 2, posY + 2, posZ + 2)); + + for(Entity e : list) { + e.attackEntityFrom(ModDamageSource.boxcar, 1000); + } + + if(!worldObj.isRemote) + worldObj.setBlock((int) (this.posX - 0.5), (int) (this.posY + 0.5), (int) (this.posZ - 0.5), ModBlocks.boxcar); + } + } @Override - protected void onImpact(MovingObjectPosition p_70184_1_) { - - } + protected void onImpact(MovingObjectPosition p_70184_1_) { } - @Override + @Override @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 25000; - } + public boolean isInRangeToRenderDist(double distance) { + return distance < 25000; + } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 12297eb61..a5cbbc5ea 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4824)"; + public static final String VERSION = "1.0.27 BETA (4837)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index adc21ea33..b7038f609 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -202,6 +202,7 @@ "weapon.glReload": {"category": "player", "sounds": [{"name": "weapon/glReload", "stream": false}]}, "weapon.glShoot": {"category": "player", "sounds": [{"name": "weapon/glShoot", "stream": false}]}, "weapon.44Shoot": {"category": "player", "sounds": [{"name": "weapon/44Shoot", "stream": false}]}, + "weapon.trainImpact": {"category": "player", "sounds": [{"name": "weapon/trainImpact", "stream": false}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/trainImpact.ogg b/src/main/resources/assets/hbm/sounds/weapon/trainImpact.ogg new file mode 100644 index 0000000000000000000000000000000000000000..22b179fda9ec4755c62a0c699903cf88535516ce GIT binary patch literal 30762 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 Date: Sun, 7 Jan 2024 21:11:56 +0100 Subject: [PATCH 204/207] yeah whatever --- changelog | 1 + src/main/java/com/hbm/blocks/ModBlocks.java | 4 ++-- src/main/java/com/hbm/config/MobConfig.java | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/changelog b/changelog index 169a6f798..a8d2087f6 100644 --- a/changelog +++ b/changelog @@ -53,3 +53,4 @@ * Fixed horrifying gamebreaking issue that would frequently cause crashes, corrupt worlds and bluescreen PCs where the red copper block and the advanced alloy block had inconsistent colors * Fixed file cabinets not dropping their contents * Fixed some sides of the pedestal not rendering +* Fixed particle accelerator window blocks not dropping when mined diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 3b7a3fd1c..24fef696d 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1904,7 +1904,7 @@ public class ModBlocks { hadron_plating_yellow = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_yellow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_yellow"); hadron_plating_striped = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_striped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_striped"); hadron_plating_voltz = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_voltz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_voltz"); - hadron_plating_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_plating_glass", Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_glass"); + hadron_plating_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_plating_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_glass"); hadron_coil_alloy = new BlockHadronCoil(Material.iron, 10).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_alloy").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_alloy"); hadron_coil_gold = new BlockHadronCoil(Material.iron, 25).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_gold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_gold"); hadron_coil_neodymium = new BlockHadronCoil(Material.iron, 50).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_neodymium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_neodymium"); @@ -1921,7 +1921,7 @@ public class ModBlocks { hadron_power_10g = new BlockHadronPower(Material.iron, 10000000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_10g").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); hadron_diode = new BlockHadronDiode(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); hadron_analysis = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis"); - hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass"); + hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass"); hadron_access = new BlockHadronAccess(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_access").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_access"); hadron_core = new BlockHadronCore(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_core"); hadron_cooler = new BlockHadronCooler(Material.iron).setBlockName("hadron_cooler").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index 7f9d45c9d..1d57e39c8 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -59,7 +59,7 @@ public class MobConfig { public static boolean rampantMode = false; public static boolean rampantNaturalScoutSpawn = false; public static double rampantScoutSpawnThresh = 20; - public static int rampantScoutSpawnChance = 1000; + public static int rampantScoutSpawnChance = 600; public static boolean scoutInitialSpawn = false; public static boolean rampantExtendedTargetting = false; public static boolean rampantDig = false; @@ -154,8 +154,8 @@ public class MobConfig { config.addCustomCategoryComment(CATEGORY, "The individual features of rampant can be used regardless of whether the main rampant toggle is enabled or not"); rampantNaturalScoutSpawn = CommonConfig.createConfigBool(config, CATEGORY,"12.R02_rampantScoutSpawn", "Whether scouts should spawn natually in highly polluted chunks", false); - rampantScoutSpawnChance = CommonConfig.createConfigInt(config, CATEGORY, "12.R02.1_rampantScoutSpawnChance", "How much soot is needed for scouts to naturally spawn", 20); - rampantScoutSpawnThresh = CommonConfig.createConfigDouble(config, CATEGORY, "12.R02.2_rampantScoutSpawnThresh", "How often scouts naturally spawn per mob population, 1/x format, the bigger the number, the more uncommon the scouts", 600); + rampantScoutSpawnThresh = CommonConfig.createConfigDouble(config, CATEGORY, "12.R02.1_rampantScoutSpawnThresh", "How much soot is needed for scouts to naturally spawn", 20); + rampantScoutSpawnChance = CommonConfig.createConfigInt(config, CATEGORY, "12.R02.2_rampantScoutSpawnChance", "How often scouts naturally spawn per mob population, 1/x format, the bigger the number, the more uncommon the scouts", 600); rampantExtendedTargetting = CommonConfig.createConfigBool(config, CATEGORY,"12.R03_rampantExtendedTargeting", "Whether Glyphids should have the extended targetting always enabled", false); rampantDig = CommonConfig.createConfigBool(config, CATEGORY,"12.R04_rampantDig", "Whether Glyphids should be able to dig to waypoints", false); rampantGlyphidGuidance = CommonConfig.createConfigBool(config, CATEGORY,"12.R05_rampantGlyphidGuidance", "Whether Glyphids should always expand toward a player's spawnpoint", false); From bc879f1bec399768907f6a65b25607884a4eb2ee Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 7 Jan 2024 21:59:28 +0100 Subject: [PATCH 205/207] can you like fuck off --- src/main/java/com/hbm/main/MainRegistry.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index b30c1b05b..c9b458f71 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1189,6 +1189,8 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.bomber"); ignoreMappings.add("hbm:item.bolt_tungsten"); ignoreMappings.add("hbm:item.bolt_dura_steel"); + ignoreMappings.add("hbm:tile.rail_large_curve_wide"); + ignoreMappings.add("hbm:tile.nuke_n45"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); From 8dde233a5b87a18cd19a2b664211fb238e1a7fa9 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 8 Jan 2024 16:46:39 +0100 Subject: [PATCH 206/207] i should kill myself --- changelog | 59 ++----------------- .../com/hbm/items/machine/ItemWatzPellet.java | 4 +- .../tileentity/machine/TileEntityWatz.java | 2 +- 3 files changed, 7 insertions(+), 58 deletions(-) diff --git a/changelog b/changelog index a8d2087f6..8bf2eb32a 100644 --- a/changelog +++ b/changelog @@ -1,56 +1,5 @@ -## Added -* Satellite radar relay - * Can be linked to a death ray - * Allows the death ray to be used with the radar's targeting system -* Combinator funnel - * Has 9 input and 9 output slots - * Will automatically do single ingredient 2x2 or 3x3 recipes like compressing ingots into blocks at up to 9 operations per tick - * Input is strictly on the top and output on the bottom - * The side acts as an output for the ingredients as a way to de-clog the funnel from leftover materials -* Stealth missile - * A missile that is not picked up by radars, turrets or ABMs - * Marginally more powerful than a tier 1 HE missile - * Somewhat expensive, takes a full minute to make in the assembler - ## Changed -* Updated russian localization -* Nerfed scrap and dust even further -* Tiny dusts now shred into the generic tiny dust instead of scrap -* Tiny dust now shreds into more tiny dust, just like dust shreds into dust -* Updated the strange stone's texture to be more blatant about what it is -* Added more OC compat for the RBMK console -* Inverted large door's redstone behavior to be in line with vanilla iron doors -* The FEL now has a humming sound when it is active -* Updated the gadget's model - * The wires will not render on the fast graphic setting for performance reasons -* Remade Lil'Pipsqueak - * Now features proper animations for drawing the weapon, firing and reloading, as well as new sounds - * Comes with a new and improved 3D model as well as a cylinder gap flash when firing - * Is now part of the red room loot pool - * Durability has been drastically increased (31k instead of 4k) - * The boxcar now has new impact sounds and spawns fewer particles -* Powder box recipes now produce 8 boxes from the same amount of ingredients, making cyclotron recipes more affordable -* Buffed the radiation-powered engine, all valid fuels now produce 10x more energy per tick -* Removed tungsten and HSS bolts as dedicated items, they are now a single bolt item that uses the autogen system - * Regular steel is now also a valid bolt material which will replace tungsten in many recipes where tungsten just doesn't make sense - * Bolts Are now 1/8 of an ingot instead of 1/2 which makes some recipes marginally cheaper, as well as making them equal to GregTech bolts - * Bolts are oredicted and interchangeable, as well as recycleable in the crucible -* The N45 naval mine has been obliterated -* The solar boiler's ray rendering is no longer bound by particle settings, instead it will be disabled when fast graphics are enabled -* The solar boiler's internal buffer has been reduced, its steam output is now capped at 10,000mB/t (which should be 20kHE/t or 0.8MHE/s) -* All crates except the jungle dungeon one now drop themselves when mined - * Supply and conserve crates do not need a tool because they are made of wood, the ammo crate requires a pickaxe - * All of those crates are now opened with the crowbar instead in order to be consistent with each other -* Standard gauge rails are now craftable and visible in the transportation tab - * You can now play around with the new rail types in creative mode, as none of the train cars are currently craftable - * Coupling should work, but coupling info is not saved to NBT so links will be lost when leaving the world - * Trains might randomly derail on 5m curves, idk why - -## Fixed -* Fixed afterburn upgrades not being craftable with bakelite -* Fixed bismuth block not being properly oredicted -* Powder detectors that are used in the same network as diodes should now be somewhat less wrong -* Fixed horrifying gamebreaking issue that would frequently cause crashes, corrupt worlds and bluescreen PCs where the red copper block and the advanced alloy block had inconsistent colors -* Fixed file cabinets not dropping their contents -* Fixed some sides of the pedestal not rendering -* Fixed particle accelerator window blocks not dropping when mined +* The watz now cools up to 20% of its current heat level instead of 10%, making reactors a lot cooler and therefore react faster, which means more energy and faster depletion rates + * Mud production rates have been halved, to prevent currently working setups from exploding instantly + * This is your reminder that you can achieve more power, mud and depletion by building larger watz powerplants, i.e. stacking more watz segments on top of each other. Your tiny poo reactors make me sick. +* Watz pellets now have a 50% smaller yield, halving the expected time until depletion diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index be5e0ad7f..f4dfbeae7 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -49,7 +49,7 @@ public class ItemWatzPellet extends ItemEnumMulti { NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.01D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null), NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.01D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null); - public double yield = 1_000_000_000; + public double yield = 500_000_000; public int colorLight; public int colorDark; public double mudContent; //how much mud per reaction flux should be produced @@ -64,7 +64,7 @@ public class ItemWatzPellet extends ItemEnumMulti { this.colorDark = colorDark; this.passive = passive; this.heatEmission = heatEmission; - this.mudContent = mudContent; + this.mudContent = mudContent / 2D; this.burnFunc = burnFunction; this.heatDiv = heatDivisor; this.absorbFunc = absorbFunction; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index a1f6d8b65..32ec41b3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -169,7 +169,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand public void updateCoolant(FluidTank[] tanks) { - double coolingFactor = 0.1D; //10% per tick, TEMP + double coolingFactor = 0.2D; //20% per tick double heatToUse = this.heat * coolingFactor; FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); From 7e665932d1e00a7d37fa220ceefddca1cadf3aa4 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 8 Jan 2024 21:51:56 +0100 Subject: [PATCH 207/207] crater biome test --- .../hbm/entity/effect/EntityFalloutRain.java | 10 ++++++ .../java/com/hbm/items/tool/ItemWandD.java | 14 ++++++-- .../java/com/hbm/packet/BiomeSyncPacket.java | 8 +++-- src/main/java/com/hbm/world/WorldUtil.java | 18 ++++++---- .../com/hbm/world/biome/BiomeGenCrater.java | 36 +++++++++++++++++++ 5 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/hbm/world/biome/BiomeGenCrater.java diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index 4eae334d6..35b0c595a 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -6,6 +6,8 @@ import com.hbm.config.FalloutConfigJSON; import com.hbm.config.FalloutConfigJSON.FalloutEntry; import com.hbm.entity.item.EntityFallingBlockNT; import com.hbm.saveddata.AuxSavedData; +import com.hbm.world.WorldUtil; +import com.hbm.world.biome.BiomeGenCrater; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -58,8 +60,10 @@ public class EntityFalloutRain extends Entity { for(int x = chunkPosX << 4; x <= (chunkPosX << 4) + 16; x++) { for(int z = chunkPosZ << 4; z <= (chunkPosZ << 4) + 16; z++) { stomp(x, z, Math.hypot(x - posX, z - posZ) * 100 / getScale()); + //WorldUtil.setBiome(worldObj, x, z, BiomeGenCrater.craterBiome); } } + //WorldUtil.syncBiomeChange(worldObj, chunkPosX, chunkPosZ); } else if (!outerChunksToProcess.isEmpty()) { long chunkPos = outerChunksToProcess.remove(outerChunksToProcess.size() - 1); @@ -70,9 +74,11 @@ public class EntityFalloutRain extends Entity { double distance = Math.hypot(x - posX, z - posZ); if(distance <= getScale()) { stomp(x, z, distance * 100 / getScale()); + //WorldUtil.setBiome(worldObj, x, z, BiomeGenCrater.craterBiome); } } } + //WorldUtil.syncBiomeChange(worldObj, chunkPosX, chunkPosZ); } else { setDead(); @@ -161,6 +167,10 @@ public class EntityFalloutRain extends Entity { for(FalloutEntry entry : FalloutConfigJSON.entries) { + if(b == Blocks.grass) { + break; + } + if(entry.eval(worldObj, x, y, z, b, meta, dist)) { if(entry.isSolid()) { depth++; diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 3c1a0da33..64d5158ce 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -4,8 +4,11 @@ import java.util.List; import com.hbm.lib.Library; import com.hbm.saveddata.TomSaveData; +import com.hbm.world.WorldUtil; +import com.hbm.world.biome.BiomeGenCrater; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.MovingObjectPosition; @@ -40,11 +43,18 @@ public class ItemWandD extends Item { TimeAnalyzer.endCount(); TimeAnalyzer.dump();*/ - TomSaveData data = TomSaveData.forWorld(world); + /*TomSaveData data = TomSaveData.forWorld(world); data.impact = true; data.fire = 0F; data.dust = 0F; - data.markDirty(); + data.markDirty();*/ + + /*for(int i = -5; i <= 5; i++) { + for(int j = -5; j <= 5; j++) { + WorldUtil.setBiome(world, pos.blockX + i, pos.blockZ + j, BiomeGenCrater.craterBiome); + WorldUtil.syncBiomeChangeBlock(world, pos.blockX + i, pos.blockZ + j); + } + }*/ /*EntityTomBlast tom = new EntityTomBlast(world); tom.posX = pos.blockX; diff --git a/src/main/java/com/hbm/packet/BiomeSyncPacket.java b/src/main/java/com/hbm/packet/BiomeSyncPacket.java index aa8f992ea..203ddc281 100644 --- a/src/main/java/com/hbm/packet/BiomeSyncPacket.java +++ b/src/main/java/com/hbm/packet/BiomeSyncPacket.java @@ -28,8 +28,8 @@ public class BiomeSyncPacket implements IMessage { } public BiomeSyncPacket(int blockX, int blockZ, byte biome) { - this.chunkX = blockX << 4; - this.chunkZ = blockZ << 4; + this.chunkX = blockX >> 4; + this.chunkZ = blockZ >> 4; this.blockX = (byte) (blockX & 15); this.blockZ = (byte) (blockZ & 15); this.biome = biome; @@ -63,7 +63,6 @@ public class BiomeSyncPacket implements IMessage { this.blockX = buf.readByte(); this.blockZ = buf.readByte(); } else { - buf.writeBoolean(true); this.biomeArray = new byte[256]; for(int i = 0; i < 256; i++) { this.biomeArray[i] = buf.readByte(); @@ -80,12 +79,15 @@ public class BiomeSyncPacket implements IMessage { World world = Minecraft.getMinecraft().theWorld; if(!world.getChunkProvider().chunkExists(m.chunkX, m.chunkZ)) return null; Chunk chunk = world.getChunkFromChunkCoords(m.chunkX, m.chunkZ); + chunk.isModified = true; if(m.biomeArray == null) { chunk.getBiomeArray()[(m.blockZ & 15) << 4 | (m.blockX & 15)] = m.biome; + world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, m.chunkX << 4, 255, m.chunkZ << 4); } else { for(int i = 0; i < 256; i++) { chunk.getBiomeArray()[i] = m.biomeArray[i]; + world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, (m.chunkX << 4) + 15, 255, (m.chunkZ << 4) + 15); } } diff --git a/src/main/java/com/hbm/world/WorldUtil.java b/src/main/java/com/hbm/world/WorldUtil.java index f8667dad7..ef9c0f361 100644 --- a/src/main/java/com/hbm/world/WorldUtil.java +++ b/src/main/java/com/hbm/world/WorldUtil.java @@ -21,6 +21,18 @@ public class WorldUtil { public static void setBiome(World world, int x, int z, BiomeGenBase biome) { Chunk chunk = world.getChunkFromBlockCoords(x, z); chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)] = (byte)(biome.biomeID & 255); + chunk.isModified = true; + } + + public static void syncBiomeChange(World world, int x, int z) { + Chunk chunk = world.getChunkFromBlockCoords(x, z); + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); + } + + public static void syncBiomeChangeBlock(World world, int x, int z) { + Chunk chunk = world.getChunkFromBlockCoords(x, z); + byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, biome), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); } public static void syncBiomeChange(World world, Chunk chunk) { @@ -69,12 +81,6 @@ public class WorldUtil { } } } - - public static void syncBiomeChange(World world, int x, int z) { - Chunk chunk = world.getChunkFromBlockCoords(x, z); - //byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; - PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); - } public static Chunk provideChunk(WorldServer world, int chunkX, int chunkZ) { ChunkProviderServer provider = world.theChunkProviderServer; diff --git a/src/main/java/com/hbm/world/biome/BiomeGenCrater.java b/src/main/java/com/hbm/world/biome/BiomeGenCrater.java new file mode 100644 index 000000000..e3d5e7876 --- /dev/null +++ b/src/main/java/com/hbm/world/biome/BiomeGenCrater.java @@ -0,0 +1,36 @@ +package com.hbm.world.biome; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.world.biome.BiomeGenBase; + +public class BiomeGenCrater extends BiomeGenBase { + + //public static final BiomeGenBase craterBiome = new BiomeGenCrater(50 /* TEMP */).setDisableRain(); + + public BiomeGenCrater(int id) { + super(id); + this.waterColorMultiplier = 0xE0FFAE; //swamp color + this.setBiomeName("Crater"); + } + + @Override + @SideOnly(Side.CLIENT) + public int getBiomeGrassColor(int x, int y, int z) { + double noise = plantNoise.func_151601_a((double) x * 0.225D, (double) z * 0.225D); + return noise < -0.1D ? 0x606060 : 0x505050; + } + + @Override + @SideOnly(Side.CLIENT) + public int getBiomeFoliageColor(int x, int y, int z) { + return 0x6A7039; + } + + @Override + @SideOnly(Side.CLIENT) + public int getSkyColorByTemp(float temp) { + //return 0x66BBA9; + return 0x6B9189; + } +}

    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%0A4q+TS_4?I6 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 z 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%0A@xI<(0vU>`qyJiUZgy^PXb{_F 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/doors/qe_containment_decal.png b/src/main/resources/assets/hbm/textures/models/doors/qe_containment_decal.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8bccfa01d02b330451aafe6a402513f6ae3836 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCils0(?ST|K9+z7=Ea!%?46TB|(0{{~4ZcH}C@TI14-?iy0WWg+Z8+Vb&Z8 zpx}B>7sn6}@3(yi`3@`a9DVS=zKXL#r_ufDDqG*LtObu&EscA^d+tNKW2BwI>_0ke z;SoMnKSNk5+b?Gx&fKFR$kKX)g(p-%bos$E4jjVFZhUSl)0tWt4FnVu9(-9op^szV z`m0t}GxYqTjgF~KEEl@9t?Bg8b50m`}BX0H){f&&fw|l=d#Wzp$Pz% C_HN(+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/doors/qe_sliding_door.png b/src/main/resources/assets/hbm/textures/models/doors/qe_sliding_door.png new file mode 100644 index 0000000000000000000000000000000000000000..f46977bcb6863a369de42f50b6bd3738d15e986a GIT binary patch literal 18673 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 Ui^xacg#Z8m07*qoM6N<$f~;`RoB#j- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/doors/round_airlock_door.png b/src/main/resources/assets/hbm/textures/models/doors/round_airlock_door.png new file mode 100644 index 0000000000000000000000000000000000000000..c5bafb7628b05b7bf467b71a0d11303fa78ee660 GIT binary patch literal 136009 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